DIR : /home/kozerus/public_html/jkwii/js/jsdoit/preload/b64_assets_libs_tweenjs-NEXT.min_js.txt /home/kozerus/public_html/jkwii/js/jsdoit/preload LyohCiogQGxpY2Vuc2UgVHdlZW5KUwoqIFZpc2l0IGh0dHA6Ly9jcmVhdGVqcy5jb20vIGZvciBkb2N1bWVudGF0aW9uLCB1cGRhdGVzIGFuZCBleGFtcGxlcy4KKgoqIENvcHlyaWdodCAoYykgMjAxMS0yMDEzIGdza2lubmVyLmNvbSwgaW5jLgoqCiogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBNSVQgbGljZW5zZS4KKiBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLmh0bWwKKgoqIFRoaXMgbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgoqLwp0aGlzLmNyZWF0ZWpzPXRoaXMuY3JlYXRlanN8fHt9LGNyZWF0ZWpzLmV4dGVuZD1mdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBjKCl7dGhpcy5jb25zdHJ1Y3Rvcj1hfXJldHVybiBjLnByb3RvdHlwZT1iLnByb3RvdHlwZSxhLnByb3RvdHlwZT1uZXcgY30sdGhpcy5jcmVhdGVqcz10aGlzLmNyZWF0ZWpzfHx7fSxjcmVhdGVqcy5wcm9tb3RlPWZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO3ZhciBjPWEucHJvdG90eXBlLGQ9T2JqZWN0LmdldFByb3RvdHlwZU9mJiZPYmplY3QuZ2V0UHJvdG90eXBlT2YoYyl8fGMuX19wcm90b19fO2lmKGQpe2NbKGIrPSJfIikrImNvbnN0cnVjdG9yIl09ZC5jb25zdHJ1Y3Rvcjtmb3IodmFyIGUgaW4gZCljLmhhc093blByb3BlcnR5KGUpJiYiZnVuY3Rpb24iPT10eXBlb2YgZFtlXSYmKGNbYitlXT1kW2VdKX1yZXR1cm4gYX0sdGhpcy5jcmVhdGVqcz10aGlzLmNyZWF0ZWpzfHx7fSxmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKGEsYixjKXt0aGlzLnR5cGU9YSx0aGlzLnRhcmdldD1udWxsLHRoaXMuY3VycmVudFRhcmdldD1udWxsLHRoaXMuZXZlbnRQaGFzZT0wLHRoaXMuYnViYmxlcz0hIWIsdGhpcy5jYW5jZWxhYmxlPSEhYyx0aGlzLnRpbWVTdGFtcD0obmV3IERhdGUpLmdldFRpbWUoKSx0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITEsdGhpcy5wcm9wYWdhdGlvblN0b3BwZWQ9ITEsdGhpcy5pbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9ITEsdGhpcy5yZW1vdmVkPSExfXZhciBiPWEucHJvdG90eXBlO2IucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24oKXt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9dGhpcy5jYW5jZWxhYmxlJiYhMH0sYi5zdG9wUHJvcGFnYXRpb249ZnVuY3Rpb24oKXt0aGlzLnByb3BhZ2F0aW9uU3RvcHBlZD0hMH0sYi5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb249ZnVuY3Rpb24oKXt0aGlzLmltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD10aGlzLnByb3BhZ2F0aW9uU3RvcHBlZD0hMH0sYi5yZW1vdmU9ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZWQ9ITB9LGIuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGEodGhpcy50eXBlLHRoaXMuYnViYmxlcyx0aGlzLmNhbmNlbGFibGUpfSxiLnNldD1mdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gYSl0aGlzW2JdPWFbYl07cmV0dXJuIHRoaXN9LGIudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iW0V2ZW50ICh0eXBlPSIrdGhpcy50eXBlKyIpXSJ9LGNyZWF0ZWpzLkV2ZW50PWF9KCksdGhpcy5jcmVhdGVqcz10aGlzLmNyZWF0ZWpzfHx7fSxmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKCl7dGhpcy5fbGlzdGVuZXJzPW51bGwsdGhpcy5fY2FwdHVyZUxpc3RlbmVycz1udWxsfXZhciBiPWEucHJvdG90eXBlO2EuaW5pdGlhbGl6ZT1mdW5jdGlvbihhKXthLmFkZEV2ZW50TGlzdGVuZXI9Yi5hZGRFdmVudExpc3RlbmVyLGEub249Yi5vbixhLnJlbW92ZUV2ZW50TGlzdGVuZXI9YS5vZmY9Yi5yZW1vdmVFdmVudExpc3RlbmVyLGEucmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnM9Yi5yZW1vdmVBbGxFdmVudExpc3RlbmVycyxhLmhhc0V2ZW50TGlzdGVuZXI9Yi5oYXNFdmVudExpc3RlbmVyLGEuZGlzcGF0Y2hFdmVudD1iLmRpc3BhdGNoRXZlbnQsYS5fZGlzcGF0Y2hFdmVudD1iLl9kaXNwYXRjaEV2ZW50LGEud2lsbFRyaWdnZXI9Yi53aWxsVHJpZ2dlcn0sYi5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEsYixjKXt2YXIgZDtkPWM/dGhpcy5fY2FwdHVyZUxpc3RlbmVycz10aGlzLl9jYXB0dXJlTGlzdGVuZXJzfHx7fTp0aGlzLl9saXN0ZW5lcnM9dGhpcy5fbGlzdGVuZXJzfHx7fTt2YXIgZT1kW2FdO3JldHVybiBlJiZ0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxiLGMpLGU9ZFthXSxlP2UucHVzaChiKTpkW2FdPVtiXSxifSxiLm9uPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtyZXR1cm4gYi5oYW5kbGVFdmVudCYmKGM9Y3x8YixiPWIuaGFuZGxlRXZlbnQpLGM9Y3x8dGhpcyx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoYSxmdW5jdGlvbihhKXtiLmNhbGwoYyxhLGUpLGQmJmEucmVtb3ZlKCl9LGYpfSxiLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWM/dGhpcy5fY2FwdHVyZUxpc3RlbmVyczp0aGlzLl9saXN0ZW5lcnM7aWYoZCl7dmFyIGU9ZFthXTtpZihlKWZvcih2YXIgZj0wLGc9ZS5sZW5ndGg7Zz5mO2YrKylpZihlW2ZdPT1iKXsxPT1nP2RlbGV0ZSBkW2FdOmUuc3BsaWNlKGYsMSk7YnJlYWt9fX0sYi5vZmY9Yi5yZW1vdmVFdmVudExpc3RlbmVyLGIucmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnM9ZnVuY3Rpb24oYSl7YT8odGhpcy5fbGlzdGVuZXJzJiZkZWxldGUgdGhpcy5fbGlzdGVuZXJzW2FdLHRoaXMuX2NhcHR1cmVMaXN0ZW5lcnMmJmRlbGV0ZSB0aGlzLl9jYXB0dXJlTGlzdGVuZXJzW2FdKTp0aGlzLl9saXN0ZW5lcnM9dGhpcy5fY2FwdHVyZUxpc3RlbmVycz1udWxsfSxiLmRpc3BhdGNoRXZlbnQ9ZnVuY3Rpb24oYSl7aWYoInN0cmluZyI9PXR5cGVvZiBhKXt2YXIgYj10aGlzLl9saXN0ZW5lcnM7aWYoIWJ8fCFiW2FdKXJldHVybiExO2E9bmV3IGNyZWF0ZWpzLkV2ZW50KGEpfWVsc2UgYS50YXJnZXQmJmEuY2xvbmUmJihhPWEuY2xvbmUoKSk7dHJ5e2EudGFyZ2V0PXRoaXN9Y2F0Y2goYyl7fWlmKGEuYnViYmxlcyYmdGhpcy5wYXJlbnQpe2Zvcih2YXIgZD10aGlzLGU9W2RdO2QucGFyZW50OyllLnB1c2goZD1kLnBhcmVudCk7dmFyIGYsZz1lLmxlbmd0aDtmb3IoZj1nLTE7Zj49MCYmIWEucHJvcGFnYXRpb25TdG9wcGVkO2YtLSllW2ZdLl9kaXNwYXRjaEV2ZW50KGEsMSsoMD09ZikpO2ZvcihmPTE7Zz5mJiYhYS5wcm9wYWdhdGlvblN0b3BwZWQ7ZisrKWVbZl0uX2Rpc3BhdGNoRXZlbnQoYSwzKX1lbHNlIHRoaXMuX2Rpc3BhdGNoRXZlbnQoYSwyKTtyZXR1cm4gYS5kZWZhdWx0UHJldmVudGVkfSxiLmhhc0V2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5fbGlzdGVuZXJzLGM9dGhpcy5fY2FwdHVyZUxpc3RlbmVycztyZXR1cm4hIShiJiZiW2FdfHxjJiZjW2FdKX0sYi53aWxsVHJpZ2dlcj1mdW5jdGlvbihhKXtmb3IodmFyIGI9dGhpcztiOyl7aWYoYi5oYXNFdmVudExpc3RlbmVyKGEpKXJldHVybiEwO2I9Yi5wYXJlbnR9cmV0dXJuITF9LGIudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iW0V2ZW50RGlzcGF0Y2hlcl0ifSxiLl9kaXNwYXRjaEV2ZW50PWZ1bmN0aW9uKGEsYil7dmFyIGMsZD0xPT1iP3RoaXMuX2NhcHR1cmVMaXN0ZW5lcnM6dGhpcy5fbGlzdGVuZXJzO2lmKGEmJmQpe3ZhciBlPWRbYS50eXBlXTtpZighZXx8IShjPWUubGVuZ3RoKSlyZXR1cm47dHJ5e2EuY3VycmVudFRhcmdldD10aGlzfWNhdGNoKGYpe310cnl7YS5ldmVudFBoYXNlPWJ9Y2F0Y2goZil7fWEucmVtb3ZlZD0hMSxlPWUuc2xpY2UoKTtmb3IodmFyIGc9MDtjPmcmJiFhLmltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDtnKyspe3ZhciBoPWVbZ107aC5oYW5kbGVFdmVudD9oLmhhbmRsZUV2ZW50KGEpOmgoYSksYS5yZW1vdmVkJiYodGhpcy5vZmYoYS50eXBlLGgsMT09YiksYS5yZW1vdmVkPSExKX19fSxjcmVhdGVqcy5FdmVudERpc3BhdGNoZXI9YX0oKSx0aGlzLmNyZWF0ZWpzPXRoaXMuY3JlYXRlanN8fHt9LGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGEoKXt0aHJvdyJUaWNrZXIgY2Fubm90IGJlIGluc3RhbnRpYXRlZC4ifWEuUkFGX1NZTkNIRUQ9InN5bmNoZWQiLGEuUkFGPSJyYWYiLGEuVElNRU9VVD0idGltZW91dCIsYS51c2VSQUY9ITEsYS50aW1pbmdNb2RlPW51bGwsYS5tYXhEZWx0YT0wLGEucGF1c2VkPSExLGEucmVtb3ZlRXZlbnRMaXN0ZW5lcj1udWxsLGEucmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnM9bnVsbCxhLmRpc3BhdGNoRXZlbnQ9bnVsbCxhLmhhc0V2ZW50TGlzdGVuZXI9bnVsbCxhLl9saXN0ZW5lcnM9bnVsbCxjcmVhdGVqcy5FdmVudERpc3BhdGNoZXIuaW5pdGlhbGl6ZShhKSxhLl9hZGRFdmVudExpc3RlbmVyPWEuYWRkRXZlbnRMaXN0ZW5lcixhLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oKXtyZXR1cm4hYS5faW5pdGVkJiZhLmluaXQoKSxhLl9hZGRFdmVudExpc3RlbmVyLmFwcGx5KGEsYXJndW1lbnRzKX0sYS5faW5pdGVkPSExLGEuX3N0YXJ0VGltZT0wLGEuX3BhdXNlZFRpbWU9MCxhLl90aWNrcz0wLGEuX3BhdXNlZFRpY2tzPTAsYS5faW50ZXJ2YWw9NTAsYS5fbGFzdFRpbWU9MCxhLl90aW1lcz1udWxsLGEuX3RpY2tUaW1lcz1udWxsLGEuX3RpbWVySWQ9bnVsbCxhLl9yYWY9ITAsYS5zZXRJbnRlcnZhbD1mdW5jdGlvbihiKXthLl9pbnRlcnZhbD1iLGEuX2luaXRlZCYmYS5fc2V0dXBUaWNrKCl9LGEuZ2V0SW50ZXJ2YWw9ZnVuY3Rpb24oKXtyZXR1cm4gYS5faW50ZXJ2YWx9LGEuc2V0RlBTPWZ1bmN0aW9uKGIpe2Euc2V0SW50ZXJ2YWwoMWUzL2IpfSxhLmdldEZQUz1mdW5jdGlvbigpe3JldHVybiAxZTMvYS5faW50ZXJ2YWx9O3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhhLHtpbnRlcnZhbDp7Z2V0OmEuZ2V0SW50ZXJ2YWwsc2V0OmEuc2V0SW50ZXJ2YWx9LGZyYW1lcmF0ZTp7Z2V0OmEuZ2V0RlBTLHNldDphLnNldEZQU319KX1jYXRjaChiKXtjb25zb2xlLmxvZyhiKX1hLmluaXQ9ZnVuY3Rpb24oKXthLl9pbml0ZWR8fChhLl9pbml0ZWQ9ITAsYS5fdGltZXM9W10sYS5fdGlja1RpbWVzPVtdLGEuX3N0YXJ0VGltZT1hLl9nZXRUaW1lKCksYS5fdGltZXMucHVzaChhLl9sYXN0VGltZT0wKSxhLmludGVydmFsPWEuX2ludGVydmFsKX0sYS5yZXNldD1mdW5jdGlvbigpe2lmKGEuX3JhZil7dmFyIGI9d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lfHx3aW5kb3cud2Via2l0Q2FuY2VsQW5pbWF0aW9uRnJhbWV8fHdpbmRvdy5tb3pDYW5jZWxBbmltYXRpb25GcmFtZXx8d2luZG93Lm9DYW5jZWxBbmltYXRpb25GcmFtZXx8d2luZG93Lm1zQ2FuY2VsQW5pbWF0aW9uRnJhbWU7YiYmYihhLl90aW1lcklkKX1lbHNlIGNsZWFyVGltZW91dChhLl90aW1lcklkKTthLnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCJ0aWNrIiksYS5fdGltZXJJZD1hLl90aW1lcz1hLl90aWNrVGltZXM9bnVsbCxhLl9zdGFydFRpbWU9YS5fbGFzdFRpbWU9YS5fdGlja3M9MCxhLl9pbml0ZWQ9ITF9LGEuZ2V0TWVhc3VyZWRUaWNrVGltZT1mdW5jdGlvbihiKXt2YXIgYz0wLGQ9YS5fdGlja1RpbWVzO2lmKCFkfHxkLmxlbmd0aDwxKXJldHVybi0xO2I9TWF0aC5taW4oZC5sZW5ndGgsYnx8MHxhLmdldEZQUygpKTtmb3IodmFyIGU9MDtiPmU7ZSsrKWMrPWRbZV07cmV0dXJuIGMvYn0sYS5nZXRNZWFzdXJlZEZQUz1mdW5jdGlvbihiKXt2YXIgYz1hLl90aW1lcztyZXR1cm4hY3x8Yy5sZW5ndGg8Mj8tMTooYj1NYXRoLm1pbihjLmxlbmd0aC0xLGJ8fDB8YS5nZXRGUFMoKSksMWUzLygoY1swXS1jW2JdKS9iKSl9LGEuc2V0UGF1c2VkPWZ1bmN0aW9uKGIpe2EucGF1c2VkPWJ9LGEuZ2V0UGF1c2VkPWZ1bmN0aW9uKCl7cmV0dXJuIGEucGF1c2VkfSxhLmdldFRpbWU9ZnVuY3Rpb24oYil7cmV0dXJuIGEuX3N0YXJ0VGltZT9hLl9nZXRUaW1lKCktKGI/YS5fcGF1c2VkVGltZTowKTotMX0sYS5nZXRFdmVudFRpbWU9ZnVuY3Rpb24oYil7cmV0dXJuIGEuX3N0YXJ0VGltZT8oYS5fbGFzdFRpbWV8fGEuX3N0YXJ0VGltZSktKGI/YS5fcGF1c2VkVGltZTowKTotMX0sYS5nZXRUaWNrcz1mdW5jdGlvbihiKXtyZXR1cm4gYS5fdGlja3MtKGI/YS5fcGF1c2VkVGlja3M6MCl9LGEuX2hhbmRsZVN5bmNoPWZ1bmN0aW9uKCl7YS5fdGltZXJJZD1udWxsLGEuX3NldHVwVGljaygpLGEuX2dldFRpbWUoKS1hLl9sYXN0VGltZT49Ljk3KihhLl9pbnRlcnZhbC0xKSYmYS5fdGljaygpfSxhLl9oYW5kbGVSQUY9ZnVuY3Rpb24oKXthLl90aW1lcklkPW51bGwsYS5fc2V0dXBUaWNrKCksYS5fdGljaygpfSxhLl9oYW5kbGVUaW1lb3V0PWZ1bmN0aW9uKCl7YS5fdGltZXJJZD1udWxsLGEuX3NldHVwVGljaygpLGEuX3RpY2soKX0sYS5fc2V0dXBUaWNrPWZ1bmN0aW9uKCl7aWYobnVsbD09YS5fdGltZXJJZCl7dmFyIGI9YS50aW1pbmdNb2RlfHxhLnVzZVJBRiYmYS5SQUZfU1lOQ0hFRDtpZihiPT1hLlJBRl9TWU5DSEVEfHxiPT1hLlJBRil7dmFyIGM9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZXx8d2luZG93LndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZXx8d2luZG93Lm1velJlcXVlc3RBbmltYXRpb25GcmFtZXx8d2luZG93Lm9SZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHdpbmRvdy5tc1JlcXVlc3RBbmltYXRpb25GcmFtZTtpZihjKXJldHVybiBhLl90aW1lcklkPWMoYj09YS5SQUY/YS5faGFuZGxlUkFGOmEuX2hhbmRsZVN5bmNoKSx2b2lkKGEuX3JhZj0hMCl9YS5fcmFmPSExLGEuX3RpbWVySWQ9c2V0VGltZW91dChhLl9oYW5kbGVUaW1lb3V0LGEuX2ludGVydmFsKX19LGEuX3RpY2s9ZnVuY3Rpb24oKXt2YXIgYj1hLnBhdXNlZCxjPWEuX2dldFRpbWUoKSxkPWMtYS5fbGFzdFRpbWU7aWYoYS5fbGFzdFRpbWU9YyxhLl90aWNrcysrLGImJihhLl9wYXVzZWRUaWNrcysrLGEuX3BhdXNlZFRpbWUrPWQpLGEuaGFzRXZlbnRMaXN0ZW5lcigidGljayIpKXt2YXIgZT1uZXcgY3JlYXRlanMuRXZlbnQoInRpY2siKSxmPWEubWF4RGVsdGE7ZS5kZWx0YT1mJiZkPmY/ZjpkLGUucGF1c2VkPWIsZS50aW1lPWMsZS5ydW5UaW1lPWMtYS5fcGF1c2VkVGltZSxhLmRpc3BhdGNoRXZlbnQoZSl9Zm9yKGEuX3RpY2tUaW1lcy51bnNoaWZ0KGEuX2dldFRpbWUoKS1jKTthLl90aWNrVGltZXMubGVuZ3RoPjEwMDspYS5fdGlja1RpbWVzLnBvcCgpO2ZvcihhLl90aW1lcy51bnNoaWZ0KGMpO2EuX3RpbWVzLmxlbmd0aD4xMDA7KWEuX3RpbWVzLnBvcCgpfTt2YXIgYz13aW5kb3cucGVyZm9ybWFuY2UmJihwZXJmb3JtYW5jZS5ub3d8fHBlcmZvcm1hbmNlLm1vek5vd3x8cGVyZm9ybWFuY2UubXNOb3d8fHBlcmZvcm1hbmNlLm9Ob3d8fHBlcmZvcm1hbmNlLndlYmtpdE5vdyk7YS5fZ2V0VGltZT1mdW5jdGlvbigpe3JldHVybihjJiZjLmNhbGwocGVyZm9ybWFuY2UpfHwobmV3IERhdGUpLmdldFRpbWUoKSktYS5fc3RhcnRUaW1lfSxjcmVhdGVqcy5UaWNrZXI9YX0oKSx0aGlzLmNyZWF0ZWpzPXRoaXMuY3JlYXRlanN8fHt9LGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGEoYixjLGQpe3RoaXMuaWdub3JlR2xvYmFsUGF1c2U9ITEsdGhpcy5sb29wPSExLHRoaXMuZHVyYXRpb249MCx0aGlzLnBsdWdpbkRhdGE9ZHx8e30sdGhpcy50YXJnZXQ9Yix0aGlzLnBvc2l0aW9uPW51bGwsdGhpcy5wYXNzaXZlPSExLHRoaXMuX3BhdXNlZD0hMSx0aGlzLl9jdXJRdWV1ZVByb3BzPXt9LHRoaXMuX2luaXRRdWV1ZVByb3BzPXt9LHRoaXMuX3N0ZXBzPVtdLHRoaXMuX2FjdGlvbnM9W10sdGhpcy5fcHJldlBvc2l0aW9uPTAsdGhpcy5fc3RlcFBvc2l0aW9uPTAsdGhpcy5fcHJldlBvcz0tMSx0aGlzLl90YXJnZXQ9Yix0aGlzLl91c2VUaWNrcz0hMSx0aGlzLl9pbml0ZWQ9ITEsYyYmKHRoaXMuX3VzZVRpY2tzPWMudXNlVGlja3MsdGhpcy5pZ25vcmVHbG9iYWxQYXVzZT1jLmlnbm9yZUdsb2JhbFBhdXNlLHRoaXMubG9vcD1jLmxvb3AsYy5vbkNoYW5nZSYmdGhpcy5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLGMub25DaGFuZ2UpLGMub3ZlcnJpZGUmJmEucmVtb3ZlVHdlZW5zKGIpKSxjJiZjLnBhdXNlZD90aGlzLl9wYXVzZWQ9ITA6Y3JlYXRlanMuVHdlZW4uX3JlZ2lzdGVyKHRoaXMsITApLGMmJm51bGwhPWMucG9zaXRpb24mJnRoaXMuc2V0UG9zaXRpb24oYy5wb3NpdGlvbixhLk5PTkUpfXZhciBiPWNyZWF0ZWpzLmV4dGVuZChhLGNyZWF0ZWpzLkV2ZW50RGlzcGF0Y2hlcik7YS5OT05FPTAsYS5MT09QPTEsYS5SRVZFUlNFPTIsYS5JR05PUkU9e30sYS5fdHdlZW5zPVtdLGEuX3BsdWdpbnM9e30sYS5nZXQ9ZnVuY3Rpb24oYixjLGQsZSl7cmV0dXJuIGUmJmEucmVtb3ZlVHdlZW5zKGIpLG5ldyBhKGIsYyxkKX0sYS50aWNrPWZ1bmN0aW9uKGIsYyl7Zm9yKHZhciBkPWEuX3R3ZWVucy5zbGljZSgpLGU9ZC5sZW5ndGgtMTtlPj0wO2UtLSl7dmFyIGY9ZFtlXTtjJiYhZi5pZ25vcmVHbG9iYWxQYXVzZXx8Zi5fcGF1c2VkfHxmLnRpY2soZi5fdXNlVGlja3M/MTpiKX19LGEuaGFuZGxlRXZlbnQ9ZnVuY3Rpb24oYSl7InRpY2siPT1hLnR5cGUmJnRoaXMudGljayhhLmRlbHRhLGEucGF1c2VkKX0sYS5yZW1vdmVUd2VlbnM9ZnVuY3Rpb24oYil7aWYoYi50d2VlbmpzX2NvdW50KXtmb3IodmFyIGM9YS5fdHdlZW5zLGQ9Yy5sZW5ndGgtMTtkPj0wO2QtLSl7dmFyIGU9Y1tkXTtlLl90YXJnZXQ9PWImJihlLl9wYXVzZWQ9ITAsYy5zcGxpY2UoZCwxKSl9Yi50d2VlbmpzX2NvdW50PTB9fSxhLnJlbW92ZUFsbFR3ZWVucz1mdW5jdGlvbigpe2Zvcih2YXIgYj1hLl90d2VlbnMsYz0wLGQ9Yi5sZW5ndGg7ZD5jO2MrKyl7dmFyIGU9YltjXTtlLl9wYXVzZWQ9ITAsZS50YXJnZXQudHdlZW5qc19jb3VudD0wfWIubGVuZ3RoPTB9LGEuaGFzQWN0aXZlVHdlZW5zPWZ1bmN0aW9uKGIpe3JldHVybiBiP2IudHdlZW5qc19jb3VudDphLl90d2VlbnMmJiEhYS5fdHdlZW5zLmxlbmd0aH0sYS5pbnN0YWxsUGx1Z2luPWZ1bmN0aW9uKGIsYyl7dmFyIGQ9Yi5wcmlvcml0eTtudWxsPT1kJiYoYi5wcmlvcml0eT1kPTApO2Zvcih2YXIgZT0wLGY9Yy5sZW5ndGgsZz1hLl9wbHVnaW5zO2Y+ZTtlKyspe3ZhciBoPWNbZV07aWYoZ1toXSl7Zm9yKHZhciBpPWdbaF0saj0wLGs9aS5sZW5ndGg7az5qJiYhKGQ8aVtqXS5wcmlvcml0eSk7aisrKTtnW2hdLnNwbGljZShqLDAsYil9ZWxzZSBnW2hdPVtiXX19LGEuX3JlZ2lzdGVyPWZ1bmN0aW9uKGIsYyl7dmFyIGQ9Yi5fdGFyZ2V0LGU9YS5fdHdlZW5zO2lmKGMpZCYmKGQudHdlZW5qc19jb3VudD1kLnR3ZWVuanNfY291bnQ/ZC50d2VlbmpzX2NvdW50KzE6MSksZS5wdXNoKGIpLCFhLl9pbml0ZWQmJmNyZWF0ZWpzLlRpY2tlciYmKGNyZWF0ZWpzLlRpY2tlci5hZGRFdmVudExpc3RlbmVyKCJ0aWNrIixhKSxhLl9pbml0ZWQ9ITApO2Vsc2V7ZCYmZC50d2VlbmpzX2NvdW50LS07Zm9yKHZhciBmPWUubGVuZ3RoO2YtLTspaWYoZVtmXT09YilyZXR1cm4gdm9pZCBlLnNwbGljZShmLDEpfX0sYi53YWl0PWZ1bmN0aW9uKGEsYil7aWYobnVsbD09YXx8MD49YSlyZXR1cm4gdGhpczt2YXIgYz10aGlzLl9jbG9uZVByb3BzKHRoaXMuX2N1clF1ZXVlUHJvcHMpO3JldHVybiB0aGlzLl9hZGRTdGVwKHtkOmEscDA6YyxlOnRoaXMuX2xpbmVhckVhc2UscDE6Yyx2OmJ9KX0sYi50bz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuKGlzTmFOKGIpfHwwPmIpJiYoYj0wKSx0aGlzLl9hZGRTdGVwKHtkOmJ8fDAscDA6dGhpcy5fY2xvbmVQcm9wcyh0aGlzLl9jdXJRdWV1ZVByb3BzKSxlOmMscDE6dGhpcy5fY2xvbmVQcm9wcyh0aGlzLl9hcHBlbmRRdWV1ZVByb3BzKGEpKX0pfSxiLmNhbGw9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLl9hZGRBY3Rpb24oe2Y6YSxwOmI/YjpbdGhpc10sbzpjP2M6dGhpcy5fdGFyZ2V0fSl9LGIuc2V0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuX2FkZEFjdGlvbih7Zjp0aGlzLl9zZXQsbzp0aGlzLHA6W2EsYj9iOnRoaXMuX3RhcmdldF19KX0sYi5wbGF5PWZ1bmN0aW9uKGEpe3JldHVybiBhfHwoYT10aGlzKSx0aGlzLmNhbGwoYS5zZXRQYXVzZWQsWyExXSxhKX0sYi5wYXVzZT1mdW5jdGlvbihhKXtyZXR1cm4gYXx8KGE9dGhpcyksdGhpcy5jYWxsKGEuc2V0UGF1c2VkLFshMF0sYSl9LGIuc2V0UG9zaXRpb249ZnVuY3Rpb24oYSxiKXswPmEmJihhPTApLG51bGw9PWImJihiPTEpO3ZhciBjPWEsZD0hMTtpZihjPj10aGlzLmR1cmF0aW9uJiYodGhpcy5sb29wP2MlPXRoaXMuZHVyYXRpb246KGM9dGhpcy5kdXJhdGlvbixkPSEwKSksYz09dGhpcy5fcHJldlBvcylyZXR1cm4gZDt2YXIgZT10aGlzLl9wcmV2UG9zO2lmKHRoaXMucG9zaXRpb249dGhpcy5fcHJldlBvcz1jLHRoaXMuX3ByZXZQb3NpdGlvbj1hLHRoaXMuX3RhcmdldClpZihkKXRoaXMuX3VwZGF0ZVRhcmdldFByb3BzKG51bGwsMSk7ZWxzZSBpZih0aGlzLl9zdGVwcy5sZW5ndGg+MCl7Zm9yKHZhciBmPTAsZz10aGlzLl9zdGVwcy5sZW5ndGg7Zz5mJiYhKHRoaXMuX3N0ZXBzW2ZdLnQ+Yyk7ZisrKTt2YXIgaD10aGlzLl9zdGVwc1tmLTFdO3RoaXMuX3VwZGF0ZVRhcmdldFByb3BzKGgsKHRoaXMuX3N0ZXBQb3NpdGlvbj1jLWgudCkvaC5kKX1yZXR1cm4gMCE9YiYmdGhpcy5fYWN0aW9ucy5sZW5ndGg+MCYmKHRoaXMuX3VzZVRpY2tzP3RoaXMuX3J1bkFjdGlvbnMoYyxjKToxPT1iJiZlPmM/KGUhPXRoaXMuZHVyYXRpb24mJnRoaXMuX3J1bkFjdGlvbnMoZSx0aGlzLmR1cmF0aW9uKSx0aGlzLl9ydW5BY3Rpb25zKDAsYywhMCkpOnRoaXMuX3J1bkFjdGlvbnMoZSxjKSksZCYmdGhpcy5zZXRQYXVzZWQoITApLHRoaXMuZGlzcGF0Y2hFdmVudCgiY2hhbmdlIiksZH0sYi50aWNrPWZ1bmN0aW9uKGEpe3RoaXMuX3BhdXNlZHx8dGhpcy5zZXRQb3NpdGlvbih0aGlzLl9wcmV2UG9zaXRpb24rYSl9LGIuc2V0UGF1c2VkPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLl9wYXVzZWQ9PT0hIWI/dGhpczoodGhpcy5fcGF1c2VkPSEhYixhLl9yZWdpc3Rlcih0aGlzLCFiKSx0aGlzKX0sYi53PWIud2FpdCxiLnQ9Yi50byxiLmM9Yi5jYWxsLGIucz1iLnNldCxiLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIltUd2Vlbl0ifSxiLmNsb25lPWZ1bmN0aW9uKCl7dGhyb3ciVHdlZW4gY2FuIG5vdCBiZSBjbG9uZWQuIn0sYi5fdXBkYXRlVGFyZ2V0UHJvcHM9ZnVuY3Rpb24oYixjKXt2YXIgZCxlLGYsZyxoLGk7aWYoYnx8MSE9Yyl7aWYodGhpcy5wYXNzaXZlPSEhYi52LHRoaXMucGFzc2l2ZSlyZXR1cm47Yi5lJiYoYz1iLmUoYywwLDEsMSkpLGQ9Yi5wMCxlPWIucDF9ZWxzZSB0aGlzLnBhc3NpdmU9ITEsZD1lPXRoaXMuX2N1clF1ZXVlUHJvcHM7Zm9yKHZhciBqIGluIHRoaXMuX2luaXRRdWV1ZVByb3BzKXtudWxsPT0oZz1kW2pdKSYmKGRbal09Zz10aGlzLl9pbml0UXVldWVQcm9wc1tqXSksbnVsbD09KGg9ZVtqXSkmJihlW2pdPWg9ZyksZj1nPT1ofHwwPT1jfHwxPT1jfHwibnVtYmVyIiE9dHlwZW9mIGc/MT09Yz9oOmc6ZysoaC1nKSpjO3ZhciBrPSExO2lmKGk9YS5fcGx1Z2luc1tqXSlmb3IodmFyIGw9MCxtPWkubGVuZ3RoO20+bDtsKyspe3ZhciBuPWlbbF0udHdlZW4odGhpcyxqLGYsZCxlLGMsISFiJiZkPT1lLCFiKTtuPT1hLklHTk9SRT9rPSEwOmY9bn1rfHwodGhpcy5fdGFyZ2V0W2pdPWYpfX0sYi5fcnVuQWN0aW9ucz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSxlPWIsZj0tMSxnPXRoaXMuX2FjdGlvbnMubGVuZ3RoLGg9MTtmb3IoYT5iJiYoZD1iLGU9YSxmPWcsZz1oPS0xKTsoZis9aCkhPWc7KXt2YXIgaT10aGlzLl9hY3Rpb25zW2ZdLGo9aS50OyhqPT1lfHxqPmQmJmU+anx8YyYmaj09YSkmJmkuZi5hcHBseShpLm8saS5wKX19LGIuX2FwcGVuZFF1ZXVlUHJvcHM9ZnVuY3Rpb24oYil7dmFyIGMsZCxlLGYsZztmb3IodmFyIGggaW4gYilpZih2b2lkIDA9PT10aGlzLl9pbml0UXVldWVQcm9wc1toXSl7aWYoZD10aGlzLl90YXJnZXRbaF0sYz1hLl9wbHVnaW5zW2hdKWZvcihlPTAsZj1jLmxlbmd0aDtmPmU7ZSsrKWQ9Y1tlXS5pbml0KHRoaXMsaCxkKTt0aGlzLl9pbml0UXVldWVQcm9wc1toXT10aGlzLl9jdXJRdWV1ZVByb3BzW2hdPXZvaWQgMD09PWQ/bnVsbDpkfWVsc2UgZD10aGlzLl9jdXJRdWV1ZVByb3BzW2hdO2Zvcih2YXIgaCBpbiBiKXtpZihkPXRoaXMuX2N1clF1ZXVlUHJvcHNbaF0sYz1hLl9wbHVnaW5zW2hdKWZvcihnPWd8fHt9LGU9MCxmPWMubGVuZ3RoO2Y+ZTtlKyspY1tlXS5zdGVwJiZjW2VdLnN0ZXAodGhpcyxoLGQsYltoXSxnKTt0aGlzLl9jdXJRdWV1ZVByb3BzW2hdPWJbaF19cmV0dXJuIGcmJnRoaXMuX2FwcGVuZFF1ZXVlUHJvcHMoZyksdGhpcy5fY3VyUXVldWVQcm9wc30sYi5fY2xvbmVQcm9wcz1mdW5jdGlvbihhKXt2YXIgYj17fTtmb3IodmFyIGMgaW4gYSliW2NdPWFbY107cmV0dXJuIGJ9LGIuX2FkZFN0ZXA9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZD4wJiYodGhpcy5fc3RlcHMucHVzaChhKSxhLnQ9dGhpcy5kdXJhdGlvbix0aGlzLmR1cmF0aW9uKz1hLmQpLHRoaXN9LGIuX2FkZEFjdGlvbj1mdW5jdGlvbihhKXtyZXR1cm4gYS50PXRoaXMuZHVyYXRpb24sdGhpcy5fYWN0aW9ucy5wdXNoKGEpLHRoaXN9LGIuX3NldD1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYyBpbiBhKWJbY109YVtjXX0sY3JlYXRlanMuVHdlZW49Y3JlYXRlanMucHJvbW90ZShhLCJFdmVudERpc3BhdGNoZXIiKX0oKSx0aGlzLmNyZWF0ZWpzPXRoaXMuY3JlYXRlanN8fHt9LGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGEoYSxiLGMpe3RoaXMuRXZlbnREaXNwYXRjaGVyX2NvbnN0cnVjdG9yKCksdGhpcy5pZ25vcmVHbG9iYWxQYXVzZT0hMSx0aGlzLmR1cmF0aW9uPTAsdGhpcy5sb29wPSExLHRoaXMucG9zaXRpb249bnVsbCx0aGlzLl9wYXVzZWQ9ITEsdGhpcy5fdHdlZW5zPVtdLHRoaXMuX2xhYmVscz1udWxsLHRoaXMuX2xhYmVsTGlzdD1udWxsLHRoaXMuX3ByZXZQb3NpdGlvbj0wLHRoaXMuX3ByZXZQb3M9LTEsdGhpcy5fdXNlVGlja3M9ITEsYyYmKHRoaXMuX3VzZVRpY2tzPWMudXNlVGlja3MsdGhpcy5sb29wPWMubG9vcCx0aGlzLmlnbm9yZUdsb2JhbFBhdXNlPWMuaWdub3JlR2xvYmFsUGF1c2UsYy5vbkNoYW5nZSYmdGhpcy5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLGMub25DaGFuZ2UpKSxhJiZ0aGlzLmFkZFR3ZWVuLmFwcGx5KHRoaXMsYSksdGhpcy5zZXRMYWJlbHMoYiksYyYmYy5wYXVzZWQ/dGhpcy5fcGF1c2VkPSEwOmNyZWF0ZWpzLlR3ZWVuLl9yZWdpc3Rlcih0aGlzLCEwKSxjJiZudWxsIT1jLnBvc2l0aW9uJiZ0aGlzLnNldFBvc2l0aW9uKGMucG9zaXRpb24sY3JlYXRlanMuVHdlZW4uTk9ORSl9dmFyIGI9Y3JlYXRlanMuZXh0ZW5kKGEsY3JlYXRlanMuRXZlbnREaXNwYXRjaGVyKTtiLmFkZFR3ZWVuPWZ1bmN0aW9uKGEpe3ZhciBiPWFyZ3VtZW50cy5sZW5ndGg7aWYoYj4xKXtmb3IodmFyIGM9MDtiPmM7YysrKXRoaXMuYWRkVHdlZW4oYXJndW1lbnRzW2NdKTtyZXR1cm4gYXJndW1lbnRzWzBdfXJldHVybiAwPT1iP251bGw6KHRoaXMucmVtb3ZlVHdlZW4oYSksdGhpcy5fdHdlZW5zLnB1c2goYSksYS5zZXRQYXVzZWQoITApLGEuX3BhdXNlZD0hMSxhLl91c2VUaWNrcz10aGlzLl91c2VUaWNrcyxhLmR1cmF0aW9uPnRoaXMuZHVyYXRpb24mJih0aGlzLmR1cmF0aW9uPWEuZHVyYXRpb24pLHRoaXMuX3ByZXZQb3M+PTAmJmEuc2V0UG9zaXRpb24odGhpcy5fcHJldlBvcyxjcmVhdGVqcy5Ud2Vlbi5OT05FKSxhKX0sYi5yZW1vdmVUd2Vlbj1mdW5jdGlvbihhKXt2YXIgYj1hcmd1bWVudHMubGVuZ3RoO2lmKGI+MSl7Zm9yKHZhciBjPSEwLGQ9MDtiPmQ7ZCsrKWM9YyYmdGhpcy5yZW1vdmVUd2Vlbihhcmd1bWVudHNbZF0pO3JldHVybiBjfWlmKDA9PWIpcmV0dXJuITE7Zm9yKHZhciBlPXRoaXMuX3R3ZWVucyxkPWUubGVuZ3RoO2QtLTspaWYoZVtkXT09YSlyZXR1cm4gZS5zcGxpY2UoZCwxKSxhLmR1cmF0aW9uPj10aGlzLmR1cmF0aW9uJiZ0aGlzLnVwZGF0ZUR1cmF0aW9uKCksITA7cmV0dXJuITF9LGIuYWRkTGFiZWw9ZnVuY3Rpb24oYSxiKXt0aGlzLl9sYWJlbHNbYV09Yjt2YXIgYz10aGlzLl9sYWJlbExpc3Q7aWYoYyl7Zm9yKHZhciBkPTAsZT1jLmxlbmd0aDtlPmQmJiEoYjxjW2RdLnBvc2l0aW9uKTtkKyspO2Muc3BsaWNlKGQsMCx7bGFiZWw6YSxwb3NpdGlvbjpifSl9fSxiLnNldExhYmVscz1mdW5jdGlvbihhKXt0aGlzLl9sYWJlbHM9YT9hOnt9fSxiLmdldExhYmVscz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuX2xhYmVsTGlzdDtpZighYSl7YT10aGlzLl9sYWJlbExpc3Q9W107dmFyIGI9dGhpcy5fbGFiZWxzO2Zvcih2YXIgYyBpbiBiKWEucHVzaCh7bGFiZWw6Yyxwb3NpdGlvbjpiW2NdfSk7YS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEucG9zaXRpb24tYi5wb3NpdGlvbn0pfXJldHVybiBhfSxiLmdldEN1cnJlbnRMYWJlbD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0TGFiZWxzKCksYj10aGlzLnBvc2l0aW9uLGM9YS5sZW5ndGg7aWYoYyl7Zm9yKHZhciBkPTA7Yz5kJiYhKGI8YVtkXS5wb3NpdGlvbik7ZCsrKTtyZXR1cm4gMD09ZD9udWxsOmFbZC0xXS5sYWJlbH1yZXR1cm4gbnVsbH0sYi5nb3RvQW5kUGxheT1mdW5jdGlvbihhKXt0aGlzLnNldFBhdXNlZCghMSksdGhpcy5fZ290byhhKX0sYi5nb3RvQW5kU3RvcD1mdW5jdGlvbihhKXt0aGlzLnNldFBhdXNlZCghMCksdGhpcy5fZ290byhhKX0sYi5zZXRQb3NpdGlvbj1mdW5jdGlvbihhLGIpezA+YSYmKGE9MCk7dmFyIGM9dGhpcy5sb29wP2EldGhpcy5kdXJhdGlvbjphLGQ9IXRoaXMubG9vcCYmYT49dGhpcy5kdXJhdGlvbjtpZihjPT10aGlzLl9wcmV2UG9zKXJldHVybiBkO3RoaXMuX3ByZXZQb3NpdGlvbj1hLHRoaXMucG9zaXRpb249dGhpcy5fcHJldlBvcz1jO2Zvcih2YXIgZT0wLGY9dGhpcy5fdHdlZW5zLmxlbmd0aDtmPmU7ZSsrKWlmKHRoaXMuX3R3ZWVuc1tlXS5zZXRQb3NpdGlvbihjLGIpLGMhPXRoaXMuX3ByZXZQb3MpcmV0dXJuITE7cmV0dXJuIGQmJnRoaXMuc2V0UGF1c2VkKCEwKSx0aGlzLmRpc3BhdGNoRXZlbnQoImNoYW5nZSIpLGR9LGIuc2V0UGF1c2VkPWZ1bmN0aW9uKGEpe3RoaXMuX3BhdXNlZD0hIWEsY3JlYXRlanMuVHdlZW4uX3JlZ2lzdGVyKHRoaXMsIWEpfSxiLnVwZGF0ZUR1cmF0aW9uPWZ1bmN0aW9uKCl7dGhpcy5kdXJhdGlvbj0wO2Zvcih2YXIgYT0wLGI9dGhpcy5fdHdlZW5zLmxlbmd0aDtiPmE7YSsrKXt2YXIgYz10aGlzLl90d2VlbnNbYV07Yy5kdXJhdGlvbj50aGlzLmR1cmF0aW9uJiYodGhpcy5kdXJhdGlvbj1jLmR1cmF0aW9uKX19LGIudGljaz1mdW5jdGlvbihhKXt0aGlzLnNldFBvc2l0aW9uKHRoaXMuX3ByZXZQb3NpdGlvbithKX0sYi5yZXNvbHZlPWZ1bmN0aW9uKGEpe3ZhciBiPU51bWJlcihhKTtyZXR1cm4gaXNOYU4oYikmJihiPXRoaXMuX2xhYmVsc1thXSksYn0sYi50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJbVGltZWxpbmVdIn0sYi5jbG9uZT1mdW5jdGlvbigpe3Rocm93IlRpbWVsaW5lIGNhbiBub3QgYmUgY2xvbmVkLiJ9LGIuX2dvdG89ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5yZXNvbHZlKGEpO251bGwhPWImJnRoaXMuc2V0UG9zaXRpb24oYil9LGNyZWF0ZWpzLlRpbWVsaW5lPWNyZWF0ZWpzLnByb21vdGUoYSwiRXZlbnREaXNwYXRjaGVyIil9KCksdGhpcy5jcmVhdGVqcz10aGlzLmNyZWF0ZWpzfHx7fSxmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKCl7dGhyb3ciRWFzZSBjYW5ub3QgYmUgaW5zdGFudGlhdGVkLiJ9YS5saW5lYXI9ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LGEubm9uZT1hLmxpbmVhcixhLmdldD1mdW5jdGlvbihhKXtyZXR1cm4tMT5hJiYoYT0tMSksYT4xJiYoYT0xKSxmdW5jdGlvbihiKXtyZXR1cm4gMD09YT9iOjA+YT9iKihiKi1hKzErYSk6YiooKDItYikqYSsoMS1hKSl9fSxhLmdldFBvd0luPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gTWF0aC5wb3coYixhKX19LGEuZ2V0UG93T3V0PWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gMS1NYXRoLnBvdygxLWIsYSl9fSxhLmdldFBvd0luT3V0PWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4oYio9Mik8MT8uNSpNYXRoLnBvdyhiLGEpOjEtLjUqTWF0aC5hYnMoTWF0aC5wb3coMi1iLGEpKX19LGEucXVhZEluPWEuZ2V0UG93SW4oMiksYS5xdWFkT3V0PWEuZ2V0UG93T3V0KDIpLGEucXVhZEluT3V0PWEuZ2V0UG93SW5PdXQoMiksYS5jdWJpY0luPWEuZ2V0UG93SW4oMyksYS5jdWJpY091dD1hLmdldFBvd091dCgzKSxhLmN1YmljSW5PdXQ9YS5nZXRQb3dJbk91dCgzKSxhLnF1YXJ0SW49YS5nZXRQb3dJbig0KSxhLnF1YXJ0T3V0PWEuZ2V0UG93T3V0KDQpLGEucXVhcnRJbk91dD1hLmdldFBvd0luT3V0KDQpLGEucXVpbnRJbj1hLmdldFBvd0luKDUpLGEucXVpbnRPdXQ9YS5nZXRQb3dPdXQoNSksYS5xdWludEluT3V0PWEuZ2V0UG93SW5PdXQoNSksYS5zaW5lSW49ZnVuY3Rpb24oYSl7cmV0dXJuIDEtTWF0aC5jb3MoYSpNYXRoLlBJLzIpfSxhLnNpbmVPdXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIE1hdGguc2luKGEqTWF0aC5QSS8yKX0sYS5zaW5lSW5PdXQ9ZnVuY3Rpb24oYSl7cmV0dXJuLS41KihNYXRoLmNvcyhNYXRoLlBJKmEpLTEpfSxhLmdldEJhY2tJbj1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuIGIqYiooKGErMSkqYi1hKX19LGEuYmFja0luPWEuZ2V0QmFja0luKDEuNyksYS5nZXRCYWNrT3V0PWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4tLWIqYiooKGErMSkqYithKSsxfX0sYS5iYWNrT3V0PWEuZ2V0QmFja091dCgxLjcpLGEuZ2V0QmFja0luT3V0PWZ1bmN0aW9uKGEpe3JldHVybiBhKj0xLjUyNSxmdW5jdGlvbihiKXtyZXR1cm4oYio9Mik8MT8uNSpiKmIqKChhKzEpKmItYSk6LjUqKChiLT0yKSpiKigoYSsxKSpiK2EpKzIpfX0sYS5iYWNrSW5PdXQ9YS5nZXRCYWNrSW5PdXQoMS43KSxhLmNpcmNJbj1mdW5jdGlvbihhKXtyZXR1cm4tKE1hdGguc3FydCgxLWEqYSktMSl9LGEuY2lyY091dD1mdW5jdGlvbihhKXtyZXR1cm4gTWF0aC5zcXJ0KDEtIC0tYSphKX0sYS5jaXJjSW5PdXQ9ZnVuY3Rpb24oYSl7cmV0dXJuKGEqPTIpPDE/LS41KihNYXRoLnNxcnQoMS1hKmEpLTEpOi41KihNYXRoLnNxcnQoMS0oYS09MikqYSkrMSl9LGEuYm91bmNlSW49ZnVuY3Rpb24oYil7cmV0dXJuIDEtYS5ib3VuY2VPdXQoMS1iKX0sYS5ib3VuY2VPdXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIDEvMi43NT5hPzcuNTYyNSphKmE6Mi8yLjc1PmE/Ny41NjI1KihhLT0xLjUvMi43NSkqYSsuNzU6Mi41LzIuNzU+YT83LjU2MjUqKGEtPTIuMjUvMi43NSkqYSsuOTM3NTo3LjU2MjUqKGEtPTIuNjI1LzIuNzUpKmErLjk4NDM3NX0sYS5ib3VuY2VJbk91dD1mdW5jdGlvbihiKXtyZXR1cm4uNT5iPy41KmEuYm91bmNlSW4oMipiKTouNSphLmJvdW5jZU91dCgyKmItMSkrLjV9LGEuZ2V0RWxhc3RpY0luPWZ1bmN0aW9uKGEsYil7dmFyIGM9MipNYXRoLlBJO3JldHVybiBmdW5jdGlvbihkKXtpZigwPT1kfHwxPT1kKXJldHVybiBkO3ZhciBlPWIvYypNYXRoLmFzaW4oMS9hKTtyZXR1cm4tKGEqTWF0aC5wb3coMiwxMCooZC09MSkpKk1hdGguc2luKChkLWUpKmMvYikpfX0sYS5lbGFzdGljSW49YS5nZXRFbGFzdGljSW4oMSwuMyksYS5nZXRFbGFzdGljT3V0PWZ1bmN0aW9uKGEsYil7dmFyIGM9MipNYXRoLlBJO3JldHVybiBmdW5jdGlvbihkKXtpZigwPT1kfHwxPT1kKXJldHVybiBkO3ZhciBlPWIvYypNYXRoLmFzaW4oMS9hKTtyZXR1cm4gYSpNYXRoLnBvdygyLC0xMCpkKSpNYXRoLnNpbigoZC1lKSpjL2IpKzF9fSxhLmVsYXN0aWNPdXQ9YS5nZXRFbGFzdGljT3V0KDEsLjMpLGEuZ2V0RWxhc3RpY0luT3V0PWZ1bmN0aW9uKGEsYil7dmFyIGM9MipNYXRoLlBJO3JldHVybiBmdW5jdGlvbihkKXt2YXIgZT1iL2MqTWF0aC5hc2luKDEvYSk7cmV0dXJuKGQqPTIpPDE/LS41KmEqTWF0aC5wb3coMiwxMCooZC09MSkpKk1hdGguc2luKChkLWUpKmMvYik6YSpNYXRoLnBvdygyLC0xMCooZC09MSkpKk1hdGguc2luKChkLWUpKmMvYikqLjUrMX19LGEuZWxhc3RpY0luT3V0PWEuZ2V0RWxhc3RpY0luT3V0KDEsLjMqMS41KSxjcmVhdGVqcy5FYXNlPWF9KCksdGhpcy5jcmVhdGVqcz10aGlzLmNyZWF0ZWpzfHx7fSxmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKCl7dGhyb3ciTW90aW9uR3VpZGVQbHVnaW4gY2Fubm90IGJlIGluc3RhbnRpYXRlZC4ifWEucHJpb3JpdHk9MCxhLl9yb3RPZmZTLGEuX3JvdE9mZkUsYS5fcm90Tm9ybVMsYS5fcm90Tm9ybUUsYS5pbnN0YWxsPWZ1bmN0aW9uKCl7cmV0dXJuIGNyZWF0ZWpzLlR3ZWVuLmluc3RhbGxQbHVnaW4oYSxbImd1aWRlIiwieCIsInkiLCJyb3RhdGlvbiJdKSxjcmVhdGVqcy5Ud2Vlbi5JR05PUkV9LGEuaW5pdD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS50YXJnZXQ7cmV0dXJuIGQuaGFzT3duUHJvcGVydHkoIngiKXx8KGQueD0wKSxkLmhhc093blByb3BlcnR5KCJ5Iil8fChkLnk9MCksZC5oYXNPd25Qcm9wZXJ0eSgicm90YXRpb24iKXx8KGQucm90YXRpb249MCksInJvdGF0aW9uIj09YiYmKGEuX19uZWVkc1JvdD0hMCksImd1aWRlIj09Yj9udWxsOmN9LGEuc3RlcD1mdW5jdGlvbihiLGMsZCxlLGYpe2lmKCJyb3RhdGlvbiI9PWMmJihiLl9fcm90R2xvYmFsUz1kLGIuX19yb3RHbG9iYWxFPWUsYS50ZXN0Um90RGF0YShiLGYpKSwiZ3VpZGUiIT1jKXJldHVybiBlO3ZhciBnLGg9ZTtoLmhhc093blByb3BlcnR5KCJwYXRoIil8fChoLnBhdGg9W10pO3ZhciBpPWgucGF0aDtpZihoLmhhc093blByb3BlcnR5KCJlbmQiKXx8KGguZW5kPTEpLGguaGFzT3duUHJvcGVydHkoInN0YXJ0Iil8fChoLnN0YXJ0PWQmJmQuaGFzT3duUHJvcGVydHkoImVuZCIpJiZkLnBhdGg9PT1pP2QuZW5kOjApLGguaGFzT3duUHJvcGVydHkoIl9zZWdtZW50cyIpJiZoLl9sZW5ndGgpcmV0dXJuIGU7dmFyIGo9aS5sZW5ndGgsaz0xMDtpZighKGo+PTYmJihqLTIpJTQ9PTApKXRocm93ImludmFsaWQgJ3BhdGgnIGRhdGEsIHBsZWFzZSBzZWUgZG9jdW1lbnRhdGlvbiBmb3IgdmFsaWQgcGF0aHMiO2guX3NlZ21lbnRzPVtdLGguX2xlbmd0aD0wO2Zvcih2YXIgbD0yO2o+bDtsKz00KXtmb3IodmFyIG0sbixvPWlbbC0yXSxwPWlbbC0xXSxxPWlbbCswXSxyPWlbbCsxXSxzPWlbbCsyXSx0PWlbbCszXSx1PW8sdj1wLHc9MCx4PVtdLHk9MTtrPj15O3krKyl7dmFyIHo9eS9rLEE9MS16O209QSpBKm8rMipBKnoqcSt6KnoqcyxuPUEqQSpwKzIqQSp6KnIreip6KnQsdys9eFt4LnB1c2goTWF0aC5zcXJ0KChnPW0tdSkqZysoZz1uLXYpKmcpKS0xXSx1PW0sdj1ufWguX3NlZ21lbnRzLnB1c2godyksaC5fc2VnbWVudHMucHVzaCh4KSxoLl9sZW5ndGgrPXd9Zz1oLm9yaWVudCxoLm9yaWVudD0hMDt2YXIgQj17fTtyZXR1cm4gYS5jYWxjKGgsaC5zdGFydCxCKSxiLl9fcm90UGF0aFM9TnVtYmVyKEIucm90YXRpb24udG9GaXhlZCg1KSksYS5jYWxjKGgsaC5lbmQsQiksYi5fX3JvdFBhdGhFPU51bWJlcihCLnJvdGF0aW9uLnRvRml4ZWQoNSkpLGgub3JpZW50PSExLGEuY2FsYyhoLGguZW5kLGYpLGgub3JpZW50PWcsaC5vcmllbnQ/KGIuX19ndWlkZURhdGE9aCxhLnRlc3RSb3REYXRhKGIsZiksZSk6ZX0sYS50ZXN0Um90RGF0YT1mdW5jdGlvbihhLGIpe2lmKHZvaWQgMD09PWEuX19yb3RHbG9iYWxTfHx2b2lkIDA9PT1hLl9fcm90R2xvYmFsRSl7aWYoYS5fX25lZWRzUm90KXJldHVybjthLl9fcm90R2xvYmFsUz1hLl9fcm90R2xvYmFsRT12b2lkIDAhPT1hLl9jdXJRdWV1ZVByb3BzLnJvdGF0aW9uP2EuX2N1clF1ZXVlUHJvcHMucm90YXRpb246Yi5yb3RhdGlvbj1hLnRhcmdldC5yb3RhdGlvbnx8MH1pZih2b2lkIDAhPT1hLl9fZ3VpZGVEYXRhKXt2YXIgYz1hLl9fZ3VpZGVEYXRhLGQ9YS5fX3JvdEdsb2JhbEUtYS5fX3JvdEdsb2JhbFMsZT1hLl9fcm90UGF0aEUtYS5fX3JvdFBhdGhTLGY9ZC1lO2lmKCJhdXRvIj09Yy5vcmllbnQpZj4xODA/Zi09MzYwOi0xODA+ZiYmKGYrPTM2MCk7ZWxzZSBpZigiY3ciPT1jLm9yaWVudCl7Zm9yKDswPmY7KWYrPTM2MDswPT1mJiZkPjAmJjE4MCE9ZCYmKGYrPTM2MCl9ZWxzZSBpZigiY2N3Ij09Yy5vcmllbnQpe2ZvcihmPWQtKGU+MTgwPzM2MC1lOmUpO2Y+MDspZi09MzYwOzA9PWYmJjA+ZCYmLTE4MCE9ZCYmKGYtPTM2MCl9Yy5yb3REZWx0YT1mLGMucm90T2ZmUz1hLl9fcm90R2xvYmFsUy1hLl9fcm90UGF0aFMsYS5fX3JvdEdsb2JhbFM9YS5fX3JvdEdsb2JhbEU9YS5fX2d1aWRlRGF0YT1hLl9fbmVlZHNSb3Q9dm9pZCAwfX0sYS50d2Vlbj1mdW5jdGlvbihiLGMsZCxlLGYsZyxoKXt2YXIgaT1mLmd1aWRlO2lmKHZvaWQgMD09aXx8aT09PWUuZ3VpZGUpcmV0dXJuIGQ7aWYoaS5sYXN0UmF0aW8hPWcpe3ZhciBqPShpLmVuZC1pLnN0YXJ0KSooaD9pLmVuZDpnKStpLnN0YXJ0O3N3aXRjaChhLmNhbGMoaSxqLGIudGFyZ2V0KSxpLm9yaWVudCl7Y2FzZSJjdyI6Y2FzZSJjY3ciOmNhc2UiYXV0byI6Yi50YXJnZXQucm90YXRpb24rPWkucm90T2ZmUytpLnJvdERlbHRhKmc7YnJlYWs7Y2FzZSJmaXhlZCI6ZGVmYXVsdDpiLnRhcmdldC5yb3RhdGlvbis9aS5yb3RPZmZTfWkubGFzdFJhdGlvPWd9cmV0dXJuInJvdGF0aW9uIiE9Y3x8aS5vcmllbnQmJiJmYWxzZSIhPWkub3JpZW50P2IudGFyZ2V0W2NdOmR9LGEuY2FsYz1mdW5jdGlvbihiLGMsZCl7dm9pZCAwPT1iLl9zZWdtZW50cyYmYS52YWxpZGF0ZShiKSx2b2lkIDA9PWQmJihkPXt4OjAseTowLHJvdGF0aW9uOjB9KTtmb3IodmFyIGU9Yi5fc2VnbWVudHMsZj1iLnBhdGgsZz1iLl9sZW5ndGgqYyxoPWUubGVuZ3RoLTIsaT0wO2c+ZVtpXSYmaD5pOylnLT1lW2ldLGkrPTI7dmFyIGo9ZVtpKzFdLGs9MDtmb3IoaD1qLmxlbmd0aC0xO2c+altrXSYmaD5rOylnLT1qW2tdLGsrKzt2YXIgbD1rLysraCtnLyhoKmpba10pO2k9MippKzI7dmFyIG09MS1sO3JldHVybiBkLng9bSptKmZbaS0yXSsyKm0qbCpmW2krMF0rbCpsKmZbaSsyXSxkLnk9bSptKmZbaS0xXSsyKm0qbCpmW2krMV0rbCpsKmZbaSszXSxiLm9yaWVudCYmKGQucm90YXRpb249NTcuMjk1Nzc5NSpNYXRoLmF0YW4yKChmW2krMV0tZltpLTFdKSptKyhmW2krM10tZltpKzFdKSpsLChmW2krMF0tZltpLTJdKSptKyhmW2krMl0tZltpKzBdKSpsKSksZH0sY3JlYXRlanMuTW90aW9uR3VpZGVQbHVnaW49YX0oKSx0aGlzLmNyZWF0ZWpzPXRoaXMuY3JlYXRlanN8fHt9LGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBhPWNyZWF0ZWpzLlR3ZWVuSlM9Y3JlYXRlanMuVHdlZW5KU3x8e307YS52ZXJzaW9uPSJORVhUIixhLmJ1aWxkRGF0ZT0iVGh1LCAxMSBEZWMgMjAxNCAyMzoxNjoxNSBHTVQifSgpOw==//