public static final java.lang.String |
omsdkjs |
"OyhmdW5jdGlvbihvbWlkR2xvYmFsKSB7CiAgJ3VzZSBzdHJpY3QnO3ZhciBuO2Z1bmN0aW9uIGFhKGEpe3ZhciBiPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGI8YS5sZW5ndGg/e2RvbmU6ITEsdmFsdWU6YVtiKytdfTp7ZG9uZTohMH19fWZ1bmN0aW9uIHAoYSl7dmFyIGI9J3VuZGVmaW5lZCchPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmYVtTeW1ib2wuaXRlcmF0b3JdO3JldHVybiBiP2IuY2FsbChhKTp7bmV4dDphYShhKX19ZnVuY3Rpb24gcShhKXtpZighKGEgaW5zdGFuY2VvZiBBcnJheSkpe2E9cChhKTtmb3IodmFyIGIsYz1bXTshKGI9YS5uZXh0KCkpLmRvbmU7KWMucHVzaChiLnZhbHVlKTthPWN9cmV0dXJuIGF9dmFyIGJhPSdmdW5jdGlvbic9PXR5cGVvZiBPYmplY3QuY3JlYXRlP09iamVjdC5jcmVhdGU6ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe31iLnByb3RvdHlwZT1hO3JldHVybiBuZXcgYn0sY2E7CmlmKCdmdW5jdGlvbic9PXR5cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2YpY2E9T2JqZWN0LnNldFByb3RvdHlwZU9mO2Vsc2V7dmFyIGRhO2E6e3ZhciBlYT17UzohMH0sZmE9e307dHJ5e2ZhLl9fcHJvdG9fXz1lYTtkYT1mYS5TO2JyZWFrIGF9Y2F0Y2goYSl7fWRhPSExfWNhPWRhP2Z1bmN0aW9uKGEsYil7YS5fX3Byb3RvX189YjtpZihhLl9fcHJvdG9fXyE9PWIpdGhyb3cgbmV3IFR5cGVFcnJvcihhKycgaXMgbm90IGV4dGVuc2libGUnKTtyZXR1cm4gYX06bnVsbH12YXIgaGE9Y2E7CmZ1bmN0aW9uIHIoYSxiKXthLnByb3RvdHlwZT1iYShiLnByb3RvdHlwZSk7YS5wcm90b3R5cGUuY29uc3RydWN0b3I9YTtpZihoYSloYShhLGIpO2Vsc2UgZm9yKHZhciBjIGluIGIpaWYoJ3Byb3RvdHlwZSchPWMpaWYoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMpe3ZhciBkPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYixjKTtkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxjLGQpfWVsc2UgYVtjXT1iW2NdO2EuQ2E9Yi5wcm90b3R5cGV9dmFyIHQ9J3VuZGVmaW5lZCchPXR5cGVvZiB3aW5kb3cmJndpbmRvdz09PXRoaXM/dGhpczondW5kZWZpbmVkJyE9dHlwZW9mIGdsb2JhbCYmbnVsbCE9Z2xvYmFsP2dsb2JhbDp0aGlzO2Z1bmN0aW9uIHUoYSxiKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsYil9CnZhciBpYT0nZnVuY3Rpb24nPT10eXBlb2YgT2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7dmFyIGQ9YXJndW1lbnRzW2NdO2lmKGQpZm9yKHZhciBlIGluIGQpdShkLGUpJiYoYVtlXT1kW2VdKX1yZXR1cm4gYX0seD0nZnVuY3Rpb24nPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGEsYixjKXthIT1BcnJheS5wcm90b3R5cGUmJmEhPU9iamVjdC5wcm90b3R5cGUmJihhW2JdPWMudmFsdWUpfTsKZnVuY3Rpb24geShhLGIpe2lmKGIpe3ZhciBjPXQ7YT1hLnNwbGl0KCcuJyk7Zm9yKHZhciBkPTA7ZDxhLmxlbmd0aC0xO2QrKyl7dmFyIGU9YVtkXTtlIGluIGN8fChjW2VdPXt9KTtjPWNbZV19YT1hW2EubGVuZ3RoLTFdO2Q9Y1thXTtiPWIoZCk7YiE9ZCYmbnVsbCE9YiYmeChjLGEse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSl9fXkoJ09iamVjdC5hc3NpZ24nLGZ1bmN0aW9uKGEpe3JldHVybiBhfHxpYX0pO2Z1bmN0aW9uIGphKCl7amE9ZnVuY3Rpb24oKXt9O3QuU3ltYm9sfHwodC5TeW1ib2w9a2EpfWZ1bmN0aW9uIGxhKGEsYil7dGhpcy5hPWE7eCh0aGlzLCdkZXNjcmlwdGlvbicse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSl9bGEucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYX07CnZhciBrYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYyl7aWYodGhpcyBpbnN0YW5jZW9mIGEpdGhyb3cgbmV3IFR5cGVFcnJvcignU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yJyk7cmV0dXJuIG5ldyBsYSgnanNjb21wX3N5bWJvbF8nKyhjfHwnJykrJ18nK2IrKyxjKX12YXIgYj0wO3JldHVybiBhfSgpO2Z1bmN0aW9uIHooKXtqYSgpO3ZhciBhPXQuU3ltYm9sLml0ZXJhdG9yO2F8fChhPXQuU3ltYm9sLml0ZXJhdG9yPXQuU3ltYm9sKCdTeW1ib2wuaXRlcmF0b3InKSk7J2Z1bmN0aW9uJyE9dHlwZW9mIEFycmF5LnByb3RvdHlwZVthXSYmeChBcnJheS5wcm90b3R5cGUsYSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG1hKGFhKHRoaXMpKX19KTt6PWZ1bmN0aW9uKCl7fX1mdW5jdGlvbiBtYShhKXt6KCk7YT17bmV4dDphfTthW3QuU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTtyZXR1cm4gYX0KeSgnV2Vha01hcCcsZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihnKXt0aGlzLmE9KGwrPU1hdGgucmFuZG9tKCkrMSkudG9TdHJpbmcoKTtpZihnKXtnPXAoZyk7Zm9yKHZhciBoOyEoaD1nLm5leHQoKSkuZG9uZTspaD1oLnZhbHVlLHRoaXMuc2V0KGhbMF0saFsxXSl9fWZ1bmN0aW9uIGMoKXt9ZnVuY3Rpb24gZChnKXtpZighdShnLGYpKXt2YXIgaD1uZXcgYzt4KGcsZix7dmFsdWU6aH0pfX1mdW5jdGlvbiBlKGcpe3ZhciBoPU9iamVjdFtnXTtoJiYoT2JqZWN0W2ddPWZ1bmN0aW9uKGspe2lmKGsgaW5zdGFuY2VvZiBjKXJldHVybiBrO2Qoayk7cmV0dXJuIGgoayl9KX1pZihmdW5jdGlvbigpe2lmKCFhfHwhT2JqZWN0LnNlYWwpcmV0dXJuITE7dHJ5e3ZhciBnPU9iamVjdC5zZWFsKHt9KSxoPU9iamVjdC5zZWFsKHt9KSxrPW5ldyBhKFtbZywyXSxbaCwzXV0pO2lmKDIhPWsuZ2V0KGcpfHwzIT1rLmdldChoKSlyZXR1cm4hMTtrLmRlbGV0ZShnKTtrLnNldChoLDQpO3JldHVybiFrLmhhcyhnKSYmCjQ9PWsuZ2V0KGgpfWNhdGNoKG0pe3JldHVybiExfX0oKSlyZXR1cm4gYTt2YXIgZj0nJGpzY29tcF9oaWRkZW5fJytNYXRoLnJhbmRvbSgpO2UoJ2ZyZWV6ZScpO2UoJ3ByZXZlbnRFeHRlbnNpb25zJyk7ZSgnc2VhbCcpO3ZhciBsPTA7Yi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGcsaCl7ZChnKTtpZighdShnLGYpKXRocm93IEVycm9yKCdXZWFrTWFwIGtleSBmYWlsOiAnK2cpO2dbZl1bdGhpcy5hXT1oO3JldHVybiB0aGlzfTtiLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZyl7cmV0dXJuIHUoZyxmKT9nW2ZdW3RoaXMuYV06dm9pZCAwfTtiLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZyl7cmV0dXJuIHUoZyxmKSYmdShnW2ZdLHRoaXMuYSl9O2IucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihnKXtyZXR1cm4gdShnLGYpJiZ1KGdbZl0sdGhpcy5hKT9kZWxldGUgZ1tmXVt0aGlzLmFdOiExfTtyZXR1cm4gYn0pOwp5KCdNYXAnLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoKXt2YXIgZz17fTtyZXR1cm4gZy5BPWcubmV4dD1nLmhlYWQ9Z31mdW5jdGlvbiBjKGcsaCl7dmFyIGs9Zy5hO3JldHVybiBtYShmdW5jdGlvbigpe2lmKGspe2Zvcig7ay5oZWFkIT1nLmE7KWs9ay5BO2Zvcig7ay5uZXh0IT1rLmhlYWQ7KXJldHVybiBrPWsubmV4dCx7ZG9uZTohMSx2YWx1ZTpoKGspfTtrPW51bGx9cmV0dXJue2RvbmU6ITAsdmFsdWU6dm9pZCAwfX0pfWZ1bmN0aW9uIGQoZyxoKXt2YXIgaz1oJiZ0eXBlb2YgaDsnb2JqZWN0Jz09a3x8J2Z1bmN0aW9uJz09az9mLmhhcyhoKT9rPWYuZ2V0KGgpOihrPScnKyArK2wsZi5zZXQoaCxrKSk6az0ncF8nK2g7dmFyIG09Zy5iW2tdO2lmKG0mJnUoZy5iLGspKWZvcihnPTA7ZzxtLmxlbmd0aDtnKyspe3ZhciB2PW1bZ107aWYoaCE9PWgmJnYua2V5IT09di5rZXl8fGg9PT12LmtleSlyZXR1cm57aWQ6ayxsaXN0Om0saW5kZXg6ZyxzOnZ9fXJldHVybntpZDprLGxpc3Q6bSwKaW5kZXg6LTEsczp2b2lkIDB9fWZ1bmN0aW9uIGUoZyl7dGhpcy5iPXt9O3RoaXMuYT1iKCk7dGhpcy5zaXplPTA7aWYoZyl7Zz1wKGcpO2Zvcih2YXIgaDshKGg9Zy5uZXh0KCkpLmRvbmU7KWg9aC52YWx1ZSx0aGlzLnNldChoWzBdLGhbMV0pfX1pZihmdW5jdGlvbigpe2lmKCFhfHwnZnVuY3Rpb24nIT10eXBlb2YgYXx8IWEucHJvdG90eXBlLmVudHJpZXN8fCdmdW5jdGlvbichPXR5cGVvZiBPYmplY3Quc2VhbClyZXR1cm4hMTt0cnl7dmFyIGc9T2JqZWN0LnNlYWwoe3g6NH0pLGg9bmV3IGEocChbW2csJ3MnXV0pKTtpZigncychPWguZ2V0KGcpfHwxIT1oLnNpemV8fGguZ2V0KHt4OjR9KXx8aC5zZXQoe3g6NH0sJ3QnKSE9aHx8MiE9aC5zaXplKXJldHVybiExO3ZhciBrPWguZW50cmllcygpLG09ay5uZXh0KCk7aWYobS5kb25lfHxtLnZhbHVlWzBdIT1nfHwncychPW0udmFsdWVbMV0pcmV0dXJuITE7bT1rLm5leHQoKTtyZXR1cm4gbS5kb25lfHw0IT1tLnZhbHVlWzBdLnh8fAondCchPW0udmFsdWVbMV18fCFrLm5leHQoKS5kb25lPyExOiEwfWNhdGNoKHYpe3JldHVybiExfX0oKSlyZXR1cm4gYTt6KCk7dmFyIGY9bmV3IFdlYWtNYXA7ZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGcsaCl7Zz0wPT09Zz8wOmc7dmFyIGs9ZCh0aGlzLGcpO2subGlzdHx8KGsubGlzdD10aGlzLmJbay5pZF09W10pO2sucz9rLnMudmFsdWU9aDooay5zPXtuZXh0OnRoaXMuYSxBOnRoaXMuYS5BLGhlYWQ6dGhpcy5hLGtleTpnLHZhbHVlOmh9LGsubGlzdC5wdXNoKGsucyksdGhpcy5hLkEubmV4dD1rLnMsdGhpcy5hLkE9ay5zLHRoaXMuc2l6ZSsrKTtyZXR1cm4gdGhpc307ZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGcpe2c9ZCh0aGlzLGcpO3JldHVybiBnLnMmJmcubGlzdD8oZy5saXN0LnNwbGljZShnLmluZGV4LDEpLGcubGlzdC5sZW5ndGh8fGRlbGV0ZSB0aGlzLmJbZy5pZF0sZy5zLkEubmV4dD1nLnMubmV4dCxnLnMubmV4dC5BPWcucy5BLGcucy5oZWFkPW51bGwsCnRoaXMuc2l6ZS0tLCEwKTohMX07ZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmI9e307dGhpcy5hPXRoaXMuYS5BPWIoKTt0aGlzLnNpemU9MH07ZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGcpe3JldHVybiEhZCh0aGlzLGcpLnN9O2UucHJvdG90eXBlLmdldD1mdW5jdGlvbihnKXtyZXR1cm4oZz1kKHRoaXMsZykucykmJmcudmFsdWV9O2UucHJvdG90eXBlLmVudHJpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gYyh0aGlzLGZ1bmN0aW9uKGcpe3JldHVybltnLmtleSxnLnZhbHVlXX0pfTtlLnByb3RvdHlwZS5rZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIGModGhpcyxmdW5jdGlvbihnKXtyZXR1cm4gZy5rZXl9KX07ZS5wcm90b3R5cGUudmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIGModGhpcyxmdW5jdGlvbihnKXtyZXR1cm4gZy52YWx1ZX0pfTtlLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGcsaCl7Zm9yKHZhciBrPXRoaXMuZW50cmllcygpLG07IShtPWsubmV4dCgpKS5kb25lOyltPQptLnZhbHVlLGcuY2FsbChoLG1bMV0sbVswXSx0aGlzKX07ZS5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXT1lLnByb3RvdHlwZS5lbnRyaWVzO3ZhciBsPTA7cmV0dXJuIGV9KTt5KCdPYmplY3QudmFsdWVzJyxmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIpe3ZhciBjPVtdLGQ7Zm9yKGQgaW4gYil1KGIsZCkmJmMucHVzaChiW2RdKTtyZXR1cm4gY319KTsKeSgnU2V0JyxmdW5jdGlvbihhKXtmdW5jdGlvbiBiKGMpe3RoaXMuYT1uZXcgTWFwO2lmKGMpe2M9cChjKTtmb3IodmFyIGQ7IShkPWMubmV4dCgpKS5kb25lOyl0aGlzLmFkZChkLnZhbHVlKX10aGlzLnNpemU9dGhpcy5hLnNpemV9aWYoZnVuY3Rpb24oKXtpZighYXx8J2Z1bmN0aW9uJyE9dHlwZW9mIGF8fCFhLnByb3RvdHlwZS5lbnRyaWVzfHwnZnVuY3Rpb24nIT10eXBlb2YgT2JqZWN0LnNlYWwpcmV0dXJuITE7dHJ5e3ZhciBjPU9iamVjdC5zZWFsKHt4OjR9KSxkPW5ldyBhKHAoW2NdKSk7aWYoIWQuaGFzKGMpfHwxIT1kLnNpemV8fGQuYWRkKGMpIT1kfHwxIT1kLnNpemV8fGQuYWRkKHt4OjR9KSE9ZHx8MiE9ZC5zaXplKXJldHVybiExO3ZhciBlPWQuZW50cmllcygpLGY9ZS5uZXh0KCk7aWYoZi5kb25lfHxmLnZhbHVlWzBdIT1jfHxmLnZhbHVlWzFdIT1jKXJldHVybiExO2Y9ZS5uZXh0KCk7cmV0dXJuIGYuZG9uZXx8Zi52YWx1ZVswXT09Y3x8NCE9Zi52YWx1ZVswXS54fHwKZi52YWx1ZVsxXSE9Zi52YWx1ZVswXT8hMTplLm5leHQoKS5kb25lfWNhdGNoKGwpe3JldHVybiExfX0oKSlyZXR1cm4gYTt6KCk7Yi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGMpe2M9MD09PWM/MDpjO3RoaXMuYS5zZXQoYyxjKTt0aGlzLnNpemU9dGhpcy5hLnNpemU7cmV0dXJuIHRoaXN9O2IucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihjKXtjPXRoaXMuYS5kZWxldGUoYyk7dGhpcy5zaXplPXRoaXMuYS5zaXplO3JldHVybiBjfTtiLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuYS5jbGVhcigpO3RoaXMuc2l6ZT0wfTtiLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuYS5oYXMoYyl9O2IucHJvdG90eXBlLmVudHJpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLmVudHJpZXMoKX07Yi5wcm90b3R5cGUudmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS52YWx1ZXMoKX07Yi5wcm90b3R5cGUua2V5cz1iLnByb3RvdHlwZS52YWx1ZXM7CmIucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl09Yi5wcm90b3R5cGUudmFsdWVzO2IucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24oYyxkKXt2YXIgZT10aGlzO3RoaXMuYS5mb3JFYWNoKGZ1bmN0aW9uKGYpe3JldHVybiBjLmNhbGwoZCxmLGYsZSl9KX07cmV0dXJuIGJ9KTt5KCdPYmplY3QuaXMnLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXtyZXR1cm4gYj09PWM/MCE9PWJ8fDEvYj09PTEvYzpiIT09YiYmYyE9PWN9fSk7eSgnQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzJyxmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcztkIGluc3RhbmNlb2YgU3RyaW5nJiYoZD1TdHJpbmcoZCkpO3ZhciBlPWQubGVuZ3RoO2M9Y3x8MDtmb3IoMD5jJiYoYz1NYXRoLm1heChjK2UsMCkpO2M8ZTtjKyspe3ZhciBmPWRbY107aWYoZj09PWJ8fE9iamVjdC5pcyhmLGIpKXJldHVybiEwfXJldHVybiExfX0pOwp5KCdPYmplY3QuZW50cmllcycsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXt2YXIgYz1bXSxkO2ZvcihkIGluIGIpdShiLGQpJiZjLnB1c2goW2QsYltkXV0pO3JldHVybiBjfX0pOwp2YXIgQT17cWE6J2xvYWRlZCcseGE6J3N0YXJ0JyxrYTonZmlyc3RRdWFydGlsZScsc2E6J21pZHBvaW50Jyx5YTondGhpcmRRdWFydGlsZScsaWE6J2NvbXBsZXRlJyx0YToncGF1c2UnLHZhOidyZXN1bWUnLGhhOididWZmZXJTdGFydCcsZ2E6J2J1ZmZlckZpbmlzaCcsd2E6J3NraXBwZWQnLEFhOid2b2x1bWVDaGFuZ2UnLHVhOidwbGF5ZXJTdGF0ZUNoYW5nZScsZGE6J2FkVXNlckludGVyYWN0aW9uJ30sbmE9e25hOidnZW5lcmljJyx6YTondmlkZW8nLHJhOidtZWRpYSd9LG9hPXtSOiduYXRpdmUnLG9hOidodG1sJyxQOidqYXZhc2NyaXB0J30scGE9e1I6J25hdGl2ZScsUDonamF2YXNjcmlwdCcsTk9ORTonbm9uZSd9LHJhPXttYTonZnVsbCcsamE6J2RvbWFpbicscGE6J2xpbWl0ZWQnfSxzYT17ZmE6J2JhY2tncm91bmRlZCcsbGE6J2ZvcmVncm91bmRlZCd9LHRhPXtlYTonYXBwJyxCYTond2ViJ307ZnVuY3Rpb24gQihhLGIpe3RoaXMueD1udWxsIT1hLng/YS54OmEubGVmdDt0aGlzLnk9bnVsbCE9YS55P2EueTphLnRvcDt0aGlzLndpZHRoPWEud2lkdGg7dGhpcy5oZWlnaHQ9YS5oZWlnaHQ7dGhpcy5lbmRYPXRoaXMueCt0aGlzLndpZHRoO3RoaXMuZW5kWT10aGlzLnkrdGhpcy5oZWlnaHQ7dGhpcy5hZFNlc3Npb25JZD1hLmFkU2Vzc2lvbklkfHx2b2lkIDA7dGhpcy5pc0ZyaWVuZGx5T2JzdHJ1Y3Rpb25Gb3I9YS5pc0ZyaWVuZGx5T2JzdHJ1Y3Rpb25Gb3J8fFtdO3RoaXMuYj1hLmZyaWVuZGx5T2JzdHJ1Y3Rpb25DbGFzc3x8dm9pZCAwO3RoaXMuYz1hLmZyaWVuZGx5T2JzdHJ1Y3Rpb25QdXJwb3NlfHx2b2lkIDA7dGhpcy5mPWEuZnJpZW5kbHlPYnN0cnVjdGlvblJlYXNvbnx8dm9pZCAwO3RoaXMuY2xpcHNUb0JvdW5kcz12b2lkIDAhPT1hLmNsaXBzVG9Cb3VuZHM/ITA9PT1hLmNsaXBzVG9Cb3VuZHM6ITA7dGhpcy5nPXZvaWQgMCE9PWEuaGFzV2luZG93Rm9jdXM/ITA9PT0KYS5oYXNXaW5kb3dGb2N1czohMDt0aGlzLm5vdFZpc2libGVSZWFzb249YS5ub3RWaXNpYmxlUmVhc29ufHx2b2lkIDA7dGhpcy5jaGlsZFZpZXdzPWEuY2hpbGRWaWV3c3x8W107dGhpcy5pc0NyZWF0aXZlPWEuaXNDcmVhdGl2ZXx8ITE7dGhpcy5hPWJ9ZnVuY3Rpb24gdWEoYSl7dmFyIGI9e307cmV0dXJuIGIud2lkdGg9YS53aWR0aCxiLmhlaWdodD1hLmhlaWdodCxifWZ1bmN0aW9uIEMoYSl7dmFyIGI9e307cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sdWEoYSksKGIueD1hLngsYi55PWEueSxiKSl9ZnVuY3Rpb24gdmEoYSl7dmFyIGI9QyhhKSxjPXt9O3JldHVybiBPYmplY3QuYXNzaWduKHt9LGIsKGMuZW5kWD1hLmVuZFgsYy5lbmRZPWEuZW5kWSxjKSl9ZnVuY3Rpb24gd2EoYSxiLGMpe2EueCs9YjthLnkrPWM7YS5lbmRYKz1iO2EuZW5kWSs9Y30KQi5wcm90b3R5cGUuSj1mdW5jdGlvbihhKXtpZihudWxsPT1hKXJldHVybiExO2E9QyhhKTt2YXIgYj1hLnksYz1hLndpZHRoLGQ9YS5oZWlnaHQ7cmV0dXJuIHRoaXMueD09PWEueCYmdGhpcy55PT09YiYmdGhpcy53aWR0aD09PWMmJnRoaXMuaGVpZ2h0PT09ZH07ZnVuY3Rpb24geGEoYSl7cmV0dXJuIGEud2lkdGgqYS5oZWlnaHR9ZnVuY3Rpb24geWEoYSl7cmV0dXJuIDA9PT1hLndpZHRofHwwPT09YS5oZWlnaHR9O2Z1bmN0aW9uIHphKGEsYil7dmFyIGM9MDtpZigwPGIubGVuZ3RoKXt2YXIgZD1BYShhLGIpO2E9ZC5iYTtkPWQuY2E7Zm9yKHZhciBlPTA7ZTxhLmxlbmd0aC0xO2UrKylmb3IodmFyIGY9KGFbZV0rKGFbZV0rMSkpLzIsbD1hW2UrMV0tYVtlXSxnPTA7ZzxkLmxlbmd0aC0xO2crKyl7Zm9yKHZhciBoPShkW2ddKyhkW2ddKzEpKS8yLGs9ZFtnKzFdLWRbZ10sbT0hMSx2PTA7djxiLmxlbmd0aDt2Kyspe3ZhciB3PUMoYlt2XSk7aWYody54PGYmJncueCt3LndpZHRoPmYmJncueTxoJiZ3Lnkrdy5oZWlnaHQ+aCl7bT0hMDticmVha319bSYmKGMrPU1hdGgucm91bmQobCkqTWF0aC5yb3VuZChrKSl9fXJldHVybiBjfQpmdW5jdGlvbiBBYShhLGIpe2E9QyhhKTtmb3IodmFyIGM9W10sZD1bXSxlPTA7ZTxiLmxlbmd0aDtlKyspe3ZhciBmPUMoYltlXSk7Zj1CYShhLGYpO0NhKGMsZi54KTtDYShjLGYuZW5kWCk7Q2EoZCxmLnkpO0NhKGQsZi5lbmRZKX1jPWMuc29ydChmdW5jdGlvbihsLGcpe3JldHVybiBsLWd9KTtkPWQuc29ydChmdW5jdGlvbihsLGcpe3JldHVybiBsLWd9KTtyZXR1cm57YmE6YyxjYTpkfX1mdW5jdGlvbiBCYShhLGIpe3JldHVybnt4Ok1hdGgubWF4KGEueCxiLngpLHk6TWF0aC5tYXgoYS55LGIueSksZW5kWDpNYXRoLm1pbihhLngrYS53aWR0aCxiLngrYi53aWR0aCksZW5kWTpNYXRoLm1pbihhLnkrYS5oZWlnaHQsYi55K2IuaGVpZ2h0KX19ZnVuY3Rpb24gQ2EoYSxiKXstMT09PWEuaW5kZXhPZihiKSYmYS5wdXNoKGIpfTtmdW5jdGlvbiBEYSgpe3RoaXMuYj10aGlzLmE9dGhpcy52PXRoaXMubD10aGlzLmc9dGhpcy5qPXZvaWQgMDt0aGlzLm09MDt0aGlzLmg9W107dGhpcy5vPVtdO3RoaXMudT0wO3RoaXMuaT1bXTt0aGlzLmM9W107dGhpcy5mPVtdfURhLnByb3RvdHlwZS5KPWZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hPyExOkpTT04uc3RyaW5naWZ5KEVhKHRoaXMpKT09PUpTT04uc3RyaW5naWZ5KEVhKGEpKX07CmZ1bmN0aW9uIEVhKGEpe3ZhciBiPVtdLGM9W10sZD17dmlld3BvcnQ6YS5qLGFkVmlldzp7cGVyY2VudGFnZUluVmlldzphLm0scGl4ZWxzSW5WaWV3OmEudSxyZWFzb25zOmEuZn0sZGVjbGFyZWRGcmllbmRseU9ic3RydWN0aW9uczphLmgubGVuZ3RofTtpZih2b2lkIDAhPT1hLmEpe2QuYWRWaWV3Lmdlb21ldHJ5PUMoYS5hKTtkLmFkVmlldy5nZW9tZXRyeS5waXhlbHM9eGEoYS5hKTtkLmFkVmlldy5vblNjcmVlbkdlb21ldHJ5PUMoYS5iKTtkLmFkVmlldy5vblNjcmVlbkdlb21ldHJ5LnBpeGVscz1NYXRoLm1heCgwLHhhKGEuYiktemEoYS5iLGEuYykpO2Zvcih2YXIgZT0wO2U8YS5jLmxlbmd0aDtlKyspYi5wdXNoKEMoYS5jW2VdKSk7Zm9yKGU9MDtlPGEuby5sZW5ndGg7ZSsrKXt2YXIgZj1hLm9bZV0sbD1mLGc9e307bC5iJiYoZy5vYnN0cnVjdGlvbkNsYXNzPWwuYik7bC5jJiYoZy5vYnN0cnVjdGlvblB1cnBvc2U9bC5jKTtsLmYmJihnLm9ic3RydWN0aW9uUmVhc29uPQpsLmYpO2Y9QmEoYS5hLGYpO2MucHVzaChPYmplY3QuYXNzaWduKHt9LHt4OmYueCx5OmYueSx3aWR0aDpmLmVuZFgtZi54LGhlaWdodDpmLmVuZFktZi55fSxnKSl9ZC5hZFZpZXcub25TY3JlZW5HZW9tZXRyeS5vYnN0cnVjdGlvbnM9YjtkLmFkVmlldy5vblNjcmVlbkdlb21ldHJ5LmZyaWVuZGx5T2JzdHJ1Y3Rpb25zPWM7dm9pZCAwIT09YS5sJiZ2b2lkIDAhPT1hLnYmJihkLmFkVmlldy5jb250YWluZXJHZW9tZXRyeT1DKGEubCksZC5hZFZpZXcub25TY3JlZW5Db250YWluZXJHZW9tZXRyeT1DKGEudiksZC5hZFZpZXcubWVhc3VyaW5nRWxlbWVudD0hMCl9cmV0dXJuIGR9ZnVuY3Rpb24gRmEoYSxiKXtiPXVhKGIpO2Euaj17fTthLmoud2lkdGg9Yi53aWR0aDthLmouaGVpZ2h0PWIuaGVpZ2h0O2EuZz17fTthLmcueD0wO2EuZy55PTA7YS5nLndpZHRoPWIud2lkdGg7YS5nLmhlaWdodD1iLmhlaWdodDthLmcuZW5kWD1iLndpZHRoO2EuZy5lbmRZPWIuaGVpZ2h0fQpmdW5jdGlvbiBHYSgpe3JldHVybnt4OjAseTowLGVuZFg6MCxlbmRZOjAsd2lkdGg6MCxoZWlnaHQ6MH19ZnVuY3Rpb24gSGEoYSxiKXt2YXIgYz17fTtjLng9TWF0aC5tYXgoYS54LGIueCk7Yy55PU1hdGgubWF4KGEueSxiLnkpO2MuZW5kWD1NYXRoLm1pbihhLmVuZFgsYi5lbmRYKTtjLmVuZFk9TWF0aC5taW4oYS5lbmRZLGIuZW5kWSk7Yy53aWR0aD1NYXRoLm1heCgwLGMuZW5kWC1jLngpO2MuaGVpZ2h0PU1hdGgubWF4KDAsYy5lbmRZLWMueSk7cmV0dXJuIGN9ZnVuY3Rpb24gSWEoYSxiKXtyZXR1cm4uMDE8Yi53aWR0aC1hLndpZHRofHwuMDE8Yi5oZWlnaHQtYS5oZWlnaHR9ZnVuY3Rpb24gSmEoYSl7aWYoLTEhPT1hLmYuaW5kZXhPZignYmFja2dyb3VuZGVkJykpYS5tPTAsYS51PTA7ZWxzZXt2YXIgYj14YShhLmEpO2lmKDAhPT1iKXt2YXIgYz1NYXRoLm1heCgwLHhhKGEuYiktemEoYS5iLGEuYykpO2EubT1NYXRoLnJvdW5kKGMvYioxMDApO2EudT1jfX19CmZ1bmN0aW9uIEthKGEsYil7aWYoeWEoYil8fCFhLmIpYj0hMTtlbHNle3ZhciBjPXZhKGEuYiksZD1jLnksZT1jLmVuZFg7YT1jLmVuZFk7dmFyIGY9Yi5lbmRYO2M9Yy54OyhmPWY8Y3x8LjAxPk1hdGguYWJzKGYtYykpfHwoZj1iLngsZj1mPmV8fC4wMT5NYXRoLmFicyhmLWUpKTsoZT1mKXx8KGU9Yi5lbmRZLGU9ZTxkfHwuMDE+TWF0aC5hYnMoZS1kKSk7KGQ9ZSl8fChiPWIueSxkPWI+YXx8LjAxPk1hdGguYWJzKGItYSkpO2I9IWR9cmV0dXJuIGJ9ZnVuY3Rpb24gRChhLGIpe2Zvcih2YXIgYz0hMSxkPTA7ZDxhLmYubGVuZ3RoO2QrKylhLmZbZF09PT1iJiYoYz0hMCk7Y3x8YS5mLnB1c2goYil9O2Z1bmN0aW9uIExhKGEsYixjLGQsZSl7dmFyIGY9bmV3IERhO2I9bmV3IEIoYiwhMSk7RmEoZixiKTtNYShhLGIsZixkKTtpZighZSlyZXR1cm4gZi5mPVsndW5tZWFzdXJhYmxlJ10sZi5qPXZvaWQgMCxmLm09MCxmLmM9W10sZi5hJiYoYT1mLmEsYz17fSxhPW5ldyBCKChjLng9MCxjLnk9MCxjLndpZHRoPWEud2lkdGgsYy5oZWlnaHQ9YS5oZWlnaHQsYyksYS5hKSxmLmE9YSksZi5iPUdhKCksZjtpZignYmFja2dyb3VuZGVkJz09PWMpRChmLCdiYWNrZ3JvdW5kZWQnKTtlbHNlIGlmKHZvaWQgMCE9PWYuYSl7Zm9yKGE9MDthPGYuaC5sZW5ndGg7YSsrKUthKGYsZi5oW2FdKSYmZi5vLnB1c2goZi5oW2FdKTtmb3IoYT0wO2E8Zi5pLmxlbmd0aDthKyspe2lmKGM9S2EoZixmLmlbYV0pKXthOntjPWYuaVthXTtmb3IoZD0wO2Q8Zi5jLmxlbmd0aDtkKyspaWYoZi5jW2RdLkooYykpe2M9ITA7YnJlYWsgYX1jPSExfWM9IWN9YyYmKEQoZiwnb2JzdHJ1Y3RlZCcpLGYuYy5wdXNoKGYuaVthXSkpfUphKGYpfWVsc2UgRChmLAonbm90Rm91bmQnKTtyZXR1cm4gZn0KZnVuY3Rpb24gTWEoYSxiLGMsZCl7dmFyIGU9Yi5pc0NyZWF0aXZlPyEwOmIuYWRTZXNzaW9uSWQ9PT1kO2lmKGUpe2MuYT1iO3ZhciBmPXZhKGMuYSk7YT1IYShjLmcsZik7dmFyIGw9Yy5hOydub3RBdHRhY2hlZCc9PT1sLm5vdFZpc2libGVSZWFzb258fCdub1dpbmRvd0ZvY3VzJz09PWwubm90VmlzaWJsZVJlYXNvbnx8J25vQWRWaWV3Jz09PWwubm90VmlzaWJsZVJlYXNvbj8oRChjLCdub3RGb3VuZCcpLGMuYj1uZXcgQihHYSgpLCExKSk6KGw9Yy5hLCd2aWV3SW52aXNpYmxlJz09PWwubm90VmlzaWJsZVJlYXNvbnx8J3ZpZXdHb25lJz09PWwubm90VmlzaWJsZVJlYXNvbnx8J3ZpZXdOb3RWaXNpYmxlJz09PWwubm90VmlzaWJsZVJlYXNvbnx8J3ZpZXdBbHBoYVplcm8nPT09bC5ub3RWaXNpYmxlUmVhc29ufHwndmlld0hpZGRlbic9PT1sLm5vdFZpc2libGVSZWFzb258fHZvaWQgMCE9PWMuYS5ub3RWaXNpYmxlUmVhc29ufHx5YShjLmEpPyhEKGMsJ2hpZGRlbicpLGMuYj1uZXcgQihHYSgpLAohMSkpOihjLmEuZ3x8KEQoYywnYmFja2dyb3VuZGVkJyksRChjLCdub1dpbmRvd0ZvY3VzJykpLElhKGEsZikmJkQoYywnY2xpcHBlZCcpLGMuYj1uZXcgQihhLCExKSkpfWVsc2UgaWYoZj0hMCxiLmEmJihmPS0xIT09Yi5pc0ZyaWVuZGx5T2JzdHJ1Y3Rpb25Gb3IuaW5kZXhPZihkKT8hMTohMT09PWIuY2xpcHNUb0JvdW5kcyksZil7bD1iLmNoaWxkVmlld3M7Zm9yKHZhciBnPTA7ZzxsLmxlbmd0aDtnKyspZj12b2lkIDAhPT1jLmEsTWEoYSxuZXcgQihsW2ddLGYpLGMsZCl9ZXx8dm9pZCAwPT09Yy5hfHwoYi5hPy0xIT09Yi5pc0ZyaWVuZGx5T2JzdHJ1Y3Rpb25Gb3IuaW5kZXhPZihkKT9jLmgucHVzaChiKTpjLmkucHVzaChiKTooZT12YShiKSxkPXZhKGMuYiksQyhjLmIpLCF5YShjLmIpJiZiLmNsaXBzVG9Cb3VuZHMmJihiPUhhKGQsZSksSWEoYixkKSYmKEQoYywnY2xpcHBlZCcpLGMuYj1uZXcgQihiLCExKSkpKSl9O2Z1bmN0aW9uIE5hKGEsYil7dGhpcy55PXRoaXMueD0wO3RoaXMud2lkdGg9YTt0aGlzLmhlaWdodD1ifTtmdW5jdGlvbiBPYSgpe3JldHVybnthcGlWZXJzaW9uOicxLjAnLGFjY2Vzc01vZGU6J2xpbWl0ZWQnLGVudmlyb25tZW50OidhcHAnLG9taWRKc0luZm86e29taWRJbXBsZW1lbnRlcjonb21zZGsnLHNlcnZpY2VWZXJzaW9uOicxLjMuMjUtaWFiMzE2Nyd9fX1mdW5jdGlvbiBQYSgpe3RoaXMuYWRTZXNzaW9uSWQ9bnVsbDt0aGlzLmM9T2EoKTt0aGlzLm89bnVsbDt0aGlzLm09J2ZvcmVncm91bmRlZCc7dGhpcy5sPXRoaXMuaT0nbm9uZSc7dGhpcy5qPXRoaXMuZz10aGlzLmY9dGhpcy5oPXRoaXMuYT10aGlzLmI9dGhpcy5CPXRoaXMudT1udWxsO3RoaXMuQz0hMDt0aGlzLnY9bmV3IE1hcH12YXIgRztmdW5jdGlvbiBIKCl7R3x8KEc9bmV3IFBhKTtyZXR1cm4gR307dmFyIEk9ZnVuY3Rpb24oKXtpZigndW5kZWZpbmVkJyE9PXR5cGVvZiBvbWlkR2xvYmFsJiZvbWlkR2xvYmFsKXJldHVybiBvbWlkR2xvYmFsO2lmKCd1bmRlZmluZWQnIT09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsKXJldHVybiBnbG9iYWw7aWYoJ3VuZGVmaW5lZCchPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cpcmV0dXJuIHdpbmRvdztpZigndW5kZWZpbmVkJyE9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzKXJldHVybiBnbG9iYWxUaGlzO3ZhciBhPUZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7aWYoYSlyZXR1cm4gYTt0aHJvdyBFcnJvcignQ291bGQgbm90IGRldGVybWluZSBnbG9iYWwgb2JqZWN0IGNvbnRleHQuJyk7fSgpO2Z1bmN0aW9uIFFhKGEsYil7dGhpcy5hPWE7dGhpcy5iPWJ9dC5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhRYS5wcm90b3R5cGUse2V2ZW50Ontjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hfX0sb3JpZ2luOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ifX19KTtmdW5jdGlvbiBKKGEpe2Zvcih2YXIgYj1bXSxjPTA7Yzxhcmd1bWVudHMubGVuZ3RoOysrYyliW2NdPWFyZ3VtZW50c1tjXTtSYShmdW5jdGlvbigpe3Rocm93IG5ldyAoRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQuYXBwbHkoRXJyb3IsW251bGwsJ0NvdWxkIG5vdCBjb21wbGV0ZSB0aGUgdGVzdCBzdWNjZXNzZnVsbHkgLSAnXS5jb25jYXQocShiKSkpKTt9LGZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUuZXJyb3IuYXBwbHkoY29uc29sZSxxKGIpKX0pfWZ1bmN0aW9uIFNhKGEpe2Zvcih2YXIgYj1bXSxjPTA7Yzxhcmd1bWVudHMubGVuZ3RoOysrYyliW2NdPWFyZ3VtZW50c1tjXTtSYShmdW5jdGlvbigpe30sZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS5lcnJvci5hcHBseShjb25zb2xlLHEoYikpfSl9CmZ1bmN0aW9uIFJhKGEsYil7J3VuZGVmaW5lZCchPT10eXBlb2YgamFzbWluZSYmamFzbWluZT9hKCk6J3VuZGVmaW5lZCchPT10eXBlb2YgY29uc29sZSYmY29uc29sZSYmY29uc29sZS5lcnJvciYmYigpfTtmdW5jdGlvbiBUYSgpe3RoaXMuZj1bXTt0aGlzLmI9W107dGhpcy5jPVtdO3RoaXMuZz1bXTt0aGlzLmk9e307dGhpcy5hPUgoKX1mdW5jdGlvbiBVYShhKXthLmY9W107YS5iPVtdO2EuYz1bXTthLmc9W107YS5pPXt9O0cuYWRTZXNzaW9uSWQ9bnVsbDtHLmM9T2EoKTtHLm89bnVsbDtHLkc9dm9pZCAwO0cuSz12b2lkIDA7Ry5IPW51bGw7Ry5JPW51bGw7Ry5EPW51bGw7Ry5tPSdmb3JlZ3JvdW5kZWQnO0cuaT0nbm9uZSc7Ry5sPSdub25lJztHLnU9bnVsbDtHLkI9bnVsbDtHLmI9bnVsbDtHLmE9bnVsbDtHLmg9bnVsbDtHLmY9bnVsbDtHLmc9bnVsbDtHLmo9bnVsbDtHLkM9ITA7Ry52PW5ldyBNYXB9CmZ1bmN0aW9uIFZhKGEsYil7dm9pZCAwIT09YS5hJiZhLmEuYWRTZXNzaW9uSWQmJiExIT09V2EoYSxiKSYmYS5jLmZpbHRlcihmdW5jdGlvbihjKXtyZXR1cm4gYy50eXBlPT09Yi5ldmVudC50eXBlfSkuZm9yRWFjaChmdW5jdGlvbihjKXtyZXR1cm4gYS5oKGMuRixiLmV2ZW50KX0pfWZ1bmN0aW9uIFhhKGEsYil7YS5mLnB1c2goYik7VmEoYSxiKX1mdW5jdGlvbiBZYShhLGIsYyl7dm9pZCAwIT09YS5hJiZhLmEuYWRTZXNzaW9uSWQmJmEuZi5maWx0ZXIoZnVuY3Rpb24oZCl7cmV0dXJuIGQuZXZlbnQudHlwZT09PWImJldhKGEsZCl9KS5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuIGQuZXZlbnR9KS5mb3JFYWNoKGMpfQpmdW5jdGlvbiBXYShhLGIpe3ZhciBjPWIuZXZlbnQudHlwZSxkPS0xIT09T2JqZWN0LnZhbHVlcyhBKS5pbmRleE9mKGMpJiYndm9sdW1lQ2hhbmdlJyE9PWM7cmV0dXJuJ2ltcHJlc3Npb24nPT09Y3x8J2xvYWRlZCc9PT1jJiZhLmEuYT9iLm9yaWdpbj09PUgoKS5sOmQ/Yi5vcmlnaW49PT1IKCkuaTohMH1mdW5jdGlvbiBaYShhLGIsYyl7J21lZGlhJz09PWJ8fCd2aWRlbyc9PT1iPyRhKGEsYyk6KGEuYy5wdXNoKHt0eXBlOmIsRjpjfSksWWEoYSxiLGMpKX1mdW5jdGlvbiAkYShhLGIpe09iamVjdC5rZXlzKEEpLmZvckVhY2goZnVuY3Rpb24oYyl7Yz1BW2NdO2EuYy5wdXNoKHt0eXBlOmMsRjpifSk7WWEoYSxjLGIpfSl9ZnVuY3Rpb24gYWIoYSxiLGMsZCl7dmFyIGU9e086YyxMOmQsRjpifTthLmcucHVzaChlKTthLmIuZm9yRWFjaChmdW5jdGlvbihmKXt2YXIgbD1iYihmKTsnc2Vzc2lvblN0YXJ0Jz09PWYuZXZlbnQudHlwZSYmY2IoYSxsLGUpO2EuaChiLGwpfSl9CmZ1bmN0aW9uIGRiKGEsYixjKXt2YXIgZD1LKGEsJ3Nlc3Npb25FcnJvcicsJ25hdGl2ZScse2Vycm9yVHlwZTpiLG1lc3NhZ2U6Y30pO2EuYi5wdXNoKGQpO2EuZy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2EuaChlLkYsZC5ldmVudCl9KX1mdW5jdGlvbiBlYihhLGIpe2EuaT1PYmplY3QuYXNzaWduKGEuaSxiKTtiPWEuYS5jO2lmKHZvaWQgMCE9PWIpe2I9T2JqZWN0LmFzc2lnbih7fSxmYihhLGdiKGEse2NvbnRleHQ6Yn0pLCEwKSx7c3VwcG9ydHNMb2FkZWRFdmVudDohIWEuYS5hfHwndmlkZW8nPT1hLmEuYn0pO09iamVjdC5hc3NpZ24oYix7cGFnZVVybDpudWxsLGNvbnRlbnRVcmw6YS5hLm99KTt2YXIgYz1LKGEsJ3Nlc3Npb25TdGFydCcsJ25hdGl2ZScsYik7YS5iLnB1c2goYyk7YS5nLmZvckVhY2goZnVuY3Rpb24oZCl7dmFyIGU9ZC5GLGY9YmIoYyk7Y2IoYSxmLGQpO2EuaChlLGYpfSxhKTtoYihhKX19CmZ1bmN0aW9uIGNiKGEsYixjKXtjLk8mJihiLmRhdGEudmVyaWZpY2F0aW9uUGFyYW1ldGVycz1hLmlbYy5PXSk7Yy5MJiYoYz1hLmEudi5nZXQoYy5MKSkmJihiLmRhdGEudmVyaWZpY2F0aW9uUGFyYW1ldGVycz1jLnZlcmlmaWNhdGlvblBhcmFtZXRlcnMsYi5kYXRhLmNvbnRleHQuYWNjZXNzTW9kZT1jLmFjY2Vzc01vZGUsJ2Z1bGwnPT09Yy5hY2Nlc3NNb2RlJiYoYS5hLmcmJihiLmRhdGEuY29udGV4dC52aWRlb0VsZW1lbnQ9YS5hLmcpLGEuYS5mJiYoYi5kYXRhLmNvbnRleHQuc2xvdEVsZW1lbnQ9YS5hLmYpKSl9ZnVuY3Rpb24gaWIoYSl7dmFyIGI9YS5nLGM9SyhhLCdzZXNzaW9uRmluaXNoJywnbmF0aXZlJyk7YS5iLnB1c2goYyk7dmFyIGQ9YS5hLmM7ZCYmJ25hdGl2ZSc9PWQuYWRTZXNzaW9uVHlwZXx8VWEoYSk7Yi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBhLmgoZS5GLGMuZXZlbnQpfSl9ClRhLnByb3RvdHlwZS5oPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtdLGQ9MTtkPGFyZ3VtZW50cy5sZW5ndGg7KytkKWNbZC0xXT1hcmd1bWVudHNbZF07dHJ5e2EuYXBwbHkobnVsbCxxKGMpKX1jYXRjaChlKXtTYShlKX19O2Z1bmN0aW9uIGpiKGEsYil7dmFyIGM9KGM9SCgpLkQpP0VhKGMpOnZvaWQgMDtjPWZiKGEsZ2IoYSxjKSk7WGEoYSxLKGEsJ2ltcHJlc3Npb24nLGIsYykpfWZ1bmN0aW9uIGtiKGEsYixjKXtpZihhLmEuYXx8J2Rpc3BsYXknIT1hLmEuYiliPUsoYSwnbG9hZGVkJyxiLGZiKGEsZ2IoYSx2b2lkIDA9PT1jP251bGw6YykpKSxYYShhLGIpfQpmdW5jdGlvbiBsYihhLGIsYyxkKXsnc3RhcnQnIT09YiYmJ3ZvbHVtZUNoYW5nZSchPT1ifHxudWxsIT0oZCYmZC5kZXZpY2VWb2x1bWUpfHwoZC5kZXZpY2VWb2x1bWU9YS5hLnUpO2lmKGQmJignc3RhcnQnPT09Ynx8J3ZvbHVtZUNoYW5nZSc9PT1iKSl7dmFyIGU9ZC52aWRlb1BsYXllclZvbHVtZSxmPWQubWVkaWFQbGF5ZXJWb2x1bWU7bnVsbCE9ZT8oT2JqZWN0LmFzc2lnbihkLHttZWRpYVBsYXllclZvbHVtZTplfSksYS5hLkI9ZSk6bnVsbCE9ZiYmKE9iamVjdC5hc3NpZ24oZCx7dmlkZW9QbGF5ZXJWb2x1bWU6Zn0pLGEuYS5CPWYpfVhhKGEsSyhhLGIsYyxkKSl9CmZ1bmN0aW9uIGhiKGEpe3ZhciBiPWEuZi5maWx0ZXIoZnVuY3Rpb24oZil7cmV0dXJuIE9iamVjdC52YWx1ZXMoQSkuaW5jbHVkZXMoZi5ldmVudC50eXBlKSYmJ3ZpZGVvJz09YS5hLmImJmYub3JpZ2luPT09YS5hLml8fCdsb2FkZWQnPT1mLmV2ZW50LnR5cGUmJidkaXNwbGF5Jz09YS5hLmImJmYub3JpZ2luPT09YS5hLmw/ITA6ITF9KS5tYXAoZnVuY3Rpb24oZil7cmV0dXJuIGYuZXZlbnR9KSxjPWEuYS5hZFNlc3Npb25JZHx8JycsZD17fTtiPXAoYik7Zm9yKHZhciBlPWIubmV4dCgpOyFlLmRvbmU7ZD17dzpkLnd9LGU9Yi5uZXh0KCkpe2Qudz1lLnZhbHVlO2Qudy5hZFNlc3Npb25JZHx8KGQudy5hZFNlc3Npb25JZD1jKTtpZignbG9hZGVkJz09ZC53LnR5cGUpe2lmKCFhLmEuYSYmJ2Rpc3BsYXknPT1hLmEuYiljb250aW51ZTtkLncuZGF0YT1mYihhLGdiKGEsZC53LmRhdGEpKX1hLmMuZmlsdGVyKGZ1bmN0aW9uKGYpe3JldHVybiBmdW5jdGlvbihsKXtyZXR1cm4gbC50eXBlPT09CmYudy50eXBlfX0oZCkpLmZvckVhY2goZnVuY3Rpb24oZil7cmV0dXJuIGZ1bmN0aW9uKGwpe3JldHVybiBsLkYoZi53KX19KGQpKX19ZnVuY3Rpb24gbWIoYSxiLGMpe2E6e2M9bmV3IFNldChjKTthPXAoYS5mLmNvbmNhdChhLmIpKTtmb3IodmFyIGQ9YS5uZXh0KCk7IWQuZG9uZTtkPWEubmV4dCgpKWlmKGQ9ZC52YWx1ZSxjLmhhcyhkLmV2ZW50LnR5cGUpJiZkLm9yaWdpbiE9Yil7Yj0hMDticmVhayBhfWI9ITF9cmV0dXJuIGI/KEooJ0V2ZW50IG93bmVyIGNhbm5vdCBiZSByZWdpc3RlcmVkIGFmdGVyIGl0cyBldmVudHMgaGF2ZSBhbHJlYWR5IGJlZW4gcHVibGlzaGVkLicpLCExKTohMH1mdW5jdGlvbiBuYihhLGIpe21iKGEsYixPYmplY3QudmFsdWVzKEEpKSYmTChhLGIpJiYoYS5hLmk9Yil9ZnVuY3Rpb24gb2IoYSxiKXttYihhLGIsWydpbXByZXNzaW9uJ10pJiZwYihhLGIpJiYoYS5hLmw9Yil9CmZ1bmN0aW9uIHBiKGEsYil7dmFyIGM9YS5hLmw7cmV0dXJuJ25vbmUnIT1jJiZjIT1iPyhKKCdJbXByZXNzaW9uIGV2ZW50IGlzIG93bmVkIGJ5ICcrKGEuYS5sKycsIG5vdCAnKSsoYisnLicpKSwhMSk6ITB9ZnVuY3Rpb24gTChhLGIpe3ZhciBjPWEuYS5pO3JldHVybidub25lJyE9YyYmYyE9Yj8oSignTWVkaWEgZXZlbnRzIGFyZSBvd25lZCBieSAnKyhhLmEuaSsnLCBub3QgJytiKycuJykpLCExKTohMH1mdW5jdGlvbiBmYihhLGIsYyl7Yz12b2lkIDA9PT1jPyExOmM7Yj1PYmplY3QuYXNzaWduKHt9LGIpO2EuYS5iJiZPYmplY3QuYXNzaWduKGIse21lZGlhVHlwZTphLmEuYn0pO2EuYS5hJiYoY3x8J2RlZmluZWRCeUphdmFTY3JpcHQnIT09YS5hLmEpJiZPYmplY3QuYXNzaWduKGIse2NyZWF0aXZlVHlwZTphLmEuYX0pO3JldHVybiBifWZ1bmN0aW9uIGdiKGEsYil7cmV0dXJuIGEuYS5oP09iamVjdC5hc3NpZ24oe30sYix7aW1wcmVzc2lvblR5cGU6YS5hLmh9KTpifQpmdW5jdGlvbiBLKGEsYixjLGQpe3JldHVybiBuZXcgUWEoe2FkU2Vzc2lvbklkOmEuYS5hZFNlc3Npb25JZHx8JycsdGltZXN0YW1wOihuZXcgRGF0ZSkuZ2V0VGltZSgpLHR5cGU6YixkYXRhOmR9LGMpfWZ1bmN0aW9uIGJiKGEpe2E9YS5ldmVudDtyZXR1cm57YWRTZXNzaW9uSWQ6YS5hZFNlc3Npb25JZCx0aW1lc3RhbXA6YS50aW1lc3RhbXAsdHlwZTphLnR5cGUsZGF0YTphLmRhdGF9fTtmdW5jdGlvbiBxYihhLGIsYyl7J2NvbnRhaW5lcic9PT1iJiZ2b2lkIDAhPT1hLmEuRyYmdm9pZCAwIT09YS5hJiZudWxsIT1hLmEuYWRTZXNzaW9uSWQmJihhLmEuSD1MYShhLmMsYS5hLkcsYS5hLm0sYS5hLmFkU2Vzc2lvbklkLCEwKSk7Yj1hLmE7dmFyIGQ9Yi5ILGU9Yi5JO2lmKGQpaWYoZSl7Yj1uZXcgRGE7dmFyIGY9ZC5qLGw9ZC5hLGc9ZC5iLGg9ZS5hLGs9ZS5iO2YmJmwmJmcmJmgmJmsmJihGYShiLGYpLGIubD1uZXcgQihsLCExKSxiLnY9bmV3IEIoZywhMSksYi5pPU9iamVjdC5hc3NpZ24oW10sZC5pKSxiLmM9T2JqZWN0LmFzc2lnbihbXSxkLmMpLGIuaD1PYmplY3QuYXNzaWduKFtdLGQuaCksYi5vPU9iamVjdC5hc3NpZ24oW10sZC5vKSxiLmY9T2JqZWN0LmFzc2lnbihbXSxlLmYsZC5mKSxkPWIubC54LGU9Yi5sLnksaD1uZXcgQihoLCExKSxrPW5ldyBCKGssITEpLHdhKGgsZCxlKSx3YShrLGQsZSksYi5hPWgsYi5iPUhhKGssZyksSmEoYikpfWVsc2UgYj1kO2Vsc2UgYj0KbnVsbDtnPWEuYS5EO2lmKGImJiFiLkooZyl8fGMpZz1FYShiKSxjJiYoZy5hZFZpZXcucmVhc29ucz1nLmFkVmlldy5yZWFzb25zfHxbY10pLGM9YS5iLCdhdWRpbychPWMuYS5hJiZYYShjLEsoYywnZ2VvbWV0cnlDaGFuZ2UnLCduYXRpdmUnLGcpKSxhLmEuRD1ifTtmdW5jdGlvbiBNKGEpe3JldHVybidvYmplY3QnPT09dHlwZW9mIGF9ZnVuY3Rpb24gcmIoYSl7cmV0dXJuJ251bWJlcic9PT10eXBlb2YgYSYmIWlzTmFOKGEpJiYwPD1hfWZ1bmN0aW9uIE4oYSl7cmV0dXJuJ3N0cmluZyc9PT10eXBlb2YgYX1mdW5jdGlvbiBPKGEsYil7cmV0dXJuIE4oYSkmJi0xIT09T2JqZWN0LnZhbHVlcyhiKS5pbmRleE9mKGEpfWZ1bmN0aW9uIHNiKGEpe3ZhciBiPWEmJmEudGFnTmFtZSYmJ2lmcmFtZSc9PT1hLnRhZ05hbWUudG9Mb3dlckNhc2UoKTt0cnl7Yj1iJiZhIGluc3RhbmNlb2YgSFRNTElGcmFtZUVsZW1lbnR9Y2F0Y2goYyl7fXJldHVybiBifWZ1bmN0aW9uIHRiKGEpe3ZhciBiPWEmJmEudGFnTmFtZTt0cnl7Yj1iJiZhIGluc3RhbmNlb2YgYS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LkhUTUxFbGVtZW50fWNhdGNoKGMpe31yZXR1cm4gYn0KZnVuY3Rpb24gdWIoYSl7dmFyIGI9YSYmYS50YWdOYW1lJiYndmlkZW8nPT09YS50YWdOYW1lLnRvTG93ZXJDYXNlKCk7dHJ5e2I9YiYmYSBpbnN0YW5jZW9mIGEub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5IVE1MVmlkZW9FbGVtZW50fWNhdGNoKGMpe31yZXR1cm4gYn07ZnVuY3Rpb24gUChhLGIsYyl7dGhpcy5mPWE7dGhpcy5LPWI7dGhpcy5HPWM7dGhpcy5jPUgoKTt0aGlzLmI9bnVsbDt0aGlzLmE9dGhpcy5nPXRoaXMudT12b2lkIDA7dGhpcy5JPSEwO3RoaXMuQj12b2lkIDA7USh0aGlzKX1mdW5jdGlvbiBRKGEpe2lmKCFhLmIpe3ZhciBiO2E6e2lmKChiPWEuZi5kb2N1bWVudCkmJmIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmKGI9Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdvbWlkLWVsZW1lbnQnKSkpe2lmKDE9PWIubGVuZ3RoKXtiPWJbMF07YnJlYWsgYX0xPGIubGVuZ3RoJiZhLkkmJihkYihhLkcsJ2dlbmVyaWMnLCJNb3JlIHRoYW4gb25lIGVsZW1lbnQgd2l0aCAnb21pZC1lbGVtZW50JyBjbGFzcyBuYW1lLiIpLGEuST0hMSl9Yj1udWxsfWlmKHViKGIpKWEuYy5nPWI7ZWxzZSBpZih0YihiKSlhLmMuZj1iO2Vsc2UgcmV0dXJuO3ZiKGEpfX0KZnVuY3Rpb24gdmIoYSl7YS5jLmc/KGEuYj1hLmMuZyxhLmkoKSk6YS5jLmYmJihhLmI9YS5jLmYsc2IoYS5iKT9hLmMuaiYmYS5pKCk6YS5pKCkpfWZ1bmN0aW9uIHdiKGEpe2EuYSYmKHNiKGEuYik/YS5jLmomJihhLkQoKSx4YihhKSk6KGEuRCgpLHhiKGEpKSl9UC5wcm90b3R5cGUubT1mdW5jdGlvbigpe3RoaXMuQiYmKHRoaXMuZi5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJyx0aGlzLkIpLHRoaXMuQj12b2lkIDApfTtQLnByb3RvdHlwZS5pPWZ1bmN0aW9uKCl7fTtmdW5jdGlvbiB4YihhKXthLnUmJihhLmMuST1hLnUscWIoYS5LLCdjcmVhdGl2ZScpKX1mdW5jdGlvbiB5YihhKXtpZihhLmEmJmEuYy5qKXt2YXIgYj1uZXcgQihhLmMuaiwhMSk7d2EoYixhLmEueCxhLmEueSk7Yi5jbGlwc1RvQm91bmRzPSEwO3JldHVybiBifX07ZnVuY3Rpb24gemIoYSxiLGMpe3JldHVybiBBYihhLCdzZXRJbnRlcnZhbCcpKGIsYyl9ZnVuY3Rpb24gQmIoYSxiKXtBYihhLCdjbGVhckludGVydmFsJykoYil9ZnVuY3Rpb24gQ2IoYSxiKXtBYihhLCdjbGVhclRpbWVvdXQnKShiKX1mdW5jdGlvbiBBYihhLGIpe3JldHVybiBhLmEmJmEuYVtiXT9hLmFbYl06RGIoYSxiKX0KZnVuY3Rpb24gRWIoYSxiLGMsZCl7aWYoYS5hLmRvY3VtZW50JiZhLmEuZG9jdW1lbnQuYm9keSl7dmFyIGU9YS5hLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO2Uud2lkdGg9MTtlLmhlaWdodD0xO2Uuc3R5bGUuZGlzcGxheT0nbm9uZSc7ZS5zcmM9YjtjJiZlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLGZ1bmN0aW9uKCl7cmV0dXJuIGMoKX0pO2QmJmUuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLGZ1bmN0aW9uKCl7cmV0dXJuIGQoKX0pO2EuYS5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGUpfWVsc2UgRGIoYSwnc2VuZFVybCcpKGIsYyxkKX1mdW5jdGlvbiBEYihhLGIpe2lmKGEuYSYmYS5hLm9taWROYXRpdmUmJmEuYS5vbWlkTmF0aXZlW2JdKXJldHVybiBhLmEub21pZE5hdGl2ZVtiXS5iaW5kKGEuYS5vbWlkTmF0aXZlKTt0aHJvdyBFcnJvcignTmF0aXZlIGludGVyZmFjZSBtZXRob2QgIicrYisnIiBub3QgZm91bmQuJyk7fTtmdW5jdGlvbiBSKGEsYixjLGQsZSl7UC5jYWxsKHRoaXMsYSxjLGUpO3RoaXMubD1iO3RoaXMuaD12b2lkIDA7dGhpcy5qPWR9cihSLFApO1IucHJvdG90eXBlLm09ZnVuY3Rpb24oKXt2b2lkIDAhPT10aGlzLmgmJihCYih0aGlzLmosdGhpcy5oKSx0aGlzLmg9dm9pZCAwKTtQLnByb3RvdHlwZS5tLmNhbGwodGhpcyl9O1IucHJvdG90eXBlLmk9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO1AucHJvdG90eXBlLmkuY2FsbCh0aGlzKTtudWxsPT10aGlzLmI/dGhpcy5oPXZvaWQgMDp2b2lkIDA9PT10aGlzLmgmJih0aGlzLmg9emIodGhpcy5qLGZ1bmN0aW9uKCl7cmV0dXJuIEZiKGEpfSwyMDApLEZiKHRoaXMpKX07ClIucHJvdG90eXBlLkQ9ZnVuY3Rpb24oKXtpZih0aGlzLmcpe3ZhciBhPXliKHRoaXMpO2lmKGEpe3RoaXMuYS5pc0NyZWF0aXZlPSExO2EuaXNDcmVhdGl2ZT0hMDtmb3IodmFyIGI9ITEsYz0wO2M8dGhpcy5hLmNoaWxkVmlld3MubGVuZ3RoO2MrKylpZih0aGlzLmEuY2hpbGRWaWV3c1tjXS5pc0NyZWF0aXZlKXt0aGlzLmEuY2hpbGRWaWV3c1tjXT1hO2I9ITA7YnJlYWt9Ynx8dGhpcy5hLmNoaWxkVmlld3MucHVzaChhKX1lbHNlIHRoaXMuYS5pc0NyZWF0aXZlPSEwO3RoaXMudT1MYSh0aGlzLmwsdGhpcy5nLHRoaXMuYy5tLHRoaXMuYy5hZFNlc3Npb25JZCx0aGlzLkMoKSl9fTtSLnByb3RvdHlwZS5DPWZ1bmN0aW9uKCl7cmV0dXJuITB9OwpmdW5jdGlvbiBGYihhKXtpZih2b2lkIDAhPT1hLmgpe2I6e3RyeXt2YXIgYj1hLmYudG9wO3ZhciBjPTA8PWIuaW5uZXJIZWlnaHQmJjA8PWIuaW5uZXJXaWR0aDticmVhayBifWNhdGNoKGQpe31jPSExfWM/KGM9YS5mLnRvcCxjPW5ldyBCKG5ldyBOYShjLmlubmVyV2lkdGgsYy5pbm5lckhlaWdodCksITEpKTpjPW5ldyBCKG5ldyBOYSgwLDApLCExKTtiPWEuYi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZihudWxsPT1iLnh8fGlzTmFOKGIueCkpYi54PWIubGVmdDtpZihudWxsPT1iLnl8fGlzTmFOKGIueSkpYi55PWIudG9wO2I9bmV3IEIoYiwhMSk7Yy5KKGEuZykmJmIuSihhLmEpfHwoYS5hPWIsYS5hLmNsaXBzVG9Cb3VuZHM9ITAsYS5nPWMsYS5nLmNoaWxkVmlld3MucHVzaChhLmEpLHdiKGEpKX19O2Z1bmN0aW9uIFMoYSxiLGMsZCl7UC5jYWxsKHRoaXMsYSxjLGQpO3RoaXMubz10aGlzLmo9dGhpcy5sPXRoaXMuaD12b2lkIDA7dGhpcy5IPSExO3RoaXMudj12b2lkIDB9cihTLFApO1MucHJvdG90eXBlLm09ZnVuY3Rpb24oKXt0aGlzLmgmJnRoaXMuaC5kaXNjb25uZWN0KCk7R2IodGhpcyk7UC5wcm90b3R5cGUubS5jYWxsKHRoaXMpfTtTLnByb3RvdHlwZS5pPWZ1bmN0aW9uKCl7UC5wcm90b3R5cGUuaS5jYWxsKHRoaXMpO3RoaXMuYiYmKHRoaXMuaHx8KHRoaXMuaD1IYih0aGlzKSksSWIodGhpcyksSmIodGhpcy5iKSYmS2IodGhpcykpfTsKUy5wcm90b3R5cGUuRD1mdW5jdGlvbigpe2lmKHRoaXMuYSYmdGhpcy52KXt2YXIgYT15Yih0aGlzKTtpZihhKXt2YXIgYj1hO3ZhciBjPXRoaXMudjt2YXIgZD1NYXRoLm1heChhLngsYy54KTt2YXIgZT1NYXRoLm1heChhLnksYy55KSxmPU1hdGgubWluKGEuZW5kWCxjLmVuZFgpO2E9TWF0aC5taW4oYS5lbmRZLGMuZW5kWSk7Zjw9ZHx8YTw9ZT9kPW51bGw6KGM9e30sZD1uZXcgQigoYy54PWQsYy55PWUsYy53aWR0aD1NYXRoLmFicyhmLWQpLGMuaGVpZ2h0PU1hdGguYWJzKGEtZSksYyksITEpKTtkfHwoZD1uZXcgQih7eDowLHk6MCx3aWR0aDowLGhlaWdodDowfSwhMSkpfWVsc2UgYj10aGlzLmEsZD10aGlzLnY7ZT1uZXcgRGE7dGhpcy5nJiZGYShlLHRoaXMuZyk7ZS5hPWI7ZS5iPWQ7SmEoZSk7dGhpcy5IP3lhKGUuYSk/RChlLCdoaWRkZW4nKToxMDA9PT1lLm18fEQoZSwnY2xpcHBlZCcpOkQoZSwndmlld3BvcnQnKTt0aGlzLnU9ZX19O1MucHJvdG90eXBlLkM9ZnVuY3Rpb24oKXtyZXR1cm4hMH07CmZ1bmN0aW9uIEdiKGEpe2EubCYmKGEubC5kaXNjb25uZWN0KCksYS5sPXZvaWQgMCk7YS5qJiYoYS5qLmRpc2Nvbm5lY3QoKSxhLmo9dm9pZCAwKTthLm8mJigoMCxhLmYucmVtb3ZlRXZlbnRMaXN0ZW5lcikoJ3Jlc2l6ZScsYS5vKSxhLm89dm9pZCAwKX1mdW5jdGlvbiBJYihhKXthLmgmJmEuYiYmKGEuaC51bm9ic2VydmUoYS5iKSxhLmgub2JzZXJ2ZShhLmIpKX1mdW5jdGlvbiBKYihhKXthPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuIDA9PWEud2lkdGh8fDA9PWEuaGVpZ2h0fQpmdW5jdGlvbiBIYihhKXtyZXR1cm4gbmV3IGEuZi5JbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5jdGlvbihiKXt0cnl7aWYoYi5sZW5ndGgpe2Zvcih2YXIgYyxkPWJbMF0sZT0xO2U8Yi5sZW5ndGg7ZSsrKWJbZV0udGltZT5kLnRpbWUmJihkPWJbZV0pO2M9ZDthLmc9TGIoYy5yb290Qm91bmRzKTthLmE9TGIoYy5ib3VuZGluZ0NsaWVudFJlY3QpO2Eudj1MYihjLmludGVyc2VjdGlvblJlY3QpO2EuSD0hIWMuaXNJbnRlcnNlY3Rpbmc7d2IoYSl9fWNhdGNoKGYpe2EubSgpLGRiKGEuRywnZ2VuZXJpYycsJ1Byb2JsZW0gaGFuZGxpbmcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgY2FsbGJhY2s6ICcrZi5tZXNzYWdlKX19LHtyb290Om51bGwscm9vdE1hcmdpbjonMHB4Jyx0aHJlc2hvbGQ6WzAsLjEsLjIsLjMsLjQsLjUsLjYsLjcsLjgsLjksMV19KX0KZnVuY3Rpb24gS2IoYSl7YS5mLlJlc2l6ZU9ic2VydmVyP2EubHx8KGEubD1NYihhLGZ1bmN0aW9uKCl7cmV0dXJuIE9iKGEpfSksYS5sLm9ic2VydmUoYS5iKSk6KGEub3x8KGEubz1mdW5jdGlvbigpe3JldHVybiBPYihhKX0sKDAsYS5mLmFkZEV2ZW50TGlzdGVuZXIpKCdyZXNpemUnLGEubykpLGEuanx8KGEuaj1uZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigpe3JldHVybiBPYihhKX0pLGEuai5vYnNlcnZlKGEuYix7Y2hpbGRMaXN0OiExLGF0dHJpYnV0ZXM6ITAsc3VidHJlZTohMX0pKSl9ZnVuY3Rpb24gT2IoYSl7YS5iJiYhSmIoYS5iKSYmKEliKGEpLEdiKGEpKX1mdW5jdGlvbiBNYihhLGIpe3JldHVybiBuZXcgYS5mLlJlc2l6ZU9ic2VydmVyKGIpfWZ1bmN0aW9uIExiKGEpe2lmKGEmJm51bGwhPT1hLngmJm51bGwhPT1hLnkmJm51bGwhPT1hLndpZHRoJiZudWxsIT09YS5oZWlnaHQpcmV0dXJuIG5ldyBCKGEsITEpfTtmdW5jdGlvbiBQYihhKXtyZXR1cm4gYSYmTShhKT9PYmplY3QuZW50cmllcyhhKS5yZWR1Y2UoZnVuY3Rpb24oYixjKXt2YXIgZD1wKGMpO2M9ZC5uZXh0KCkudmFsdWU7ZD1kLm5leHQoKS52YWx1ZTtyZXR1cm4gYiYmTihjKSYmbnVsbCE9ZCYmTShkKSYmTihkLnJlc291cmNlVXJsKX0sITApOiExfTtmdW5jdGlvbiBUKGEsYixjLGQpe3RoaXMuYj1hO3RoaXMubWV0aG9kPWI7dGhpcy52ZXJzaW9uPWM7dGhpcy5hPWR9ZnVuY3Rpb24gUWIoYSl7cmV0dXJuISFhJiZ2b2lkIDAhPT1hLm9taWRfbWVzc2FnZV9ndWlkJiZ2b2lkIDAhPT1hLm9taWRfbWVzc2FnZV9tZXRob2QmJnZvaWQgMCE9PWEub21pZF9tZXNzYWdlX3ZlcnNpb24mJidzdHJpbmcnPT09dHlwZW9mIGEub21pZF9tZXNzYWdlX2d1aWQmJidzdHJpbmcnPT09dHlwZW9mIGEub21pZF9tZXNzYWdlX21ldGhvZCYmJ3N0cmluZyc9PT10eXBlb2YgYS5vbWlkX21lc3NhZ2VfdmVyc2lvbiYmKHZvaWQgMD09PWEub21pZF9tZXNzYWdlX2FyZ3N8fHZvaWQgMCE9PWEub21pZF9tZXNzYWdlX2FyZ3MpfWZ1bmN0aW9uIFJiKGEpe3JldHVybiBuZXcgVChhLm9taWRfbWVzc2FnZV9ndWlkLGEub21pZF9tZXNzYWdlX21ldGhvZCxhLm9taWRfbWVzc2FnZV92ZXJzaW9uLGEub21pZF9tZXNzYWdlX2FyZ3MpfQpmdW5jdGlvbiBTYihhKXt2YXIgYj17fTtiPShiLm9taWRfbWVzc2FnZV9ndWlkPWEuYixiLm9taWRfbWVzc2FnZV9tZXRob2Q9YS5tZXRob2QsYi5vbWlkX21lc3NhZ2VfdmVyc2lvbj1hLnZlcnNpb24sYik7dm9pZCAwIT09YS5hJiYoYi5vbWlkX21lc3NhZ2VfYXJncz1hLmEpO3JldHVybiBifTtmdW5jdGlvbiBUYihhKXt0aGlzLmM9YX07ZnVuY3Rpb24gVShhKXt0aGlzLmM9YTt0aGlzLmhhbmRsZUV4cG9ydGVkTWVzc2FnZT1VLnByb3RvdHlwZS5mLmJpbmQodGhpcyl9cihVLFRiKTtVLnByb3RvdHlwZS5iPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iP3RoaXMuYzpiO2lmKCFiKXRocm93IEVycm9yKCdNZXNzYWdlIGRlc3RpbmF0aW9uIG11c3QgYmUgZGVmaW5lZCBhdCBjb25zdHJ1Y3Rpb24gdGltZSBvciB3aGVuIHNlbmRpbmcgdGhlIG1lc3NhZ2UuJyk7Yi5oYW5kbGVFeHBvcnRlZE1lc3NhZ2UoU2IoYSksdGhpcyl9O1UucHJvdG90eXBlLmY9ZnVuY3Rpb24oYSxiKXtRYihhKSYmdGhpcy5hJiZ0aGlzLmEoUmIoYSksYil9O2Z1bmN0aW9uIFViKGEsYil7dGhpcy5jPWI9dm9pZCAwPT09Yj9JOmI7dmFyIGM9dGhpczthLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLGZ1bmN0aW9uKGQpe2lmKCdvYmplY3QnPT09dHlwZW9mIGQuZGF0YSl7dmFyIGU9ZC5kYXRhO1FiKGUpJiZkLnNvdXJjZSYmYy5hJiZjLmEoUmIoZSksZC5zb3VyY2UpfX0pfXIoVWIsVGIpO1ViLnByb3RvdHlwZS5iPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iP3RoaXMuYzpiO2lmKCFiKXRocm93IEVycm9yKCdNZXNzYWdlIGRlc3RpbmF0aW9uIG11c3QgYmUgZGVmaW5lZCBhdCBjb25zdHJ1Y3Rpb24gdGltZSBvciB3aGVuIHNlbmRpbmcgdGhlIG1lc3NhZ2UuJyk7Yi5wb3N0TWVzc2FnZShTYihhKSwnKicpfTtmdW5jdGlvbiBWYigpe3JldHVybid4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4eV0vZyxmdW5jdGlvbihhKXt2YXIgYj0xNipNYXRoLnJhbmRvbSgpfDA7cmV0dXJuJ3knPT09YT8oYiYzfDgpLnRvU3RyaW5nKDE2KTpiLnRvU3RyaW5nKDE2KX0pfTtmdW5jdGlvbiBXYihhKXtpZighYS5hfHwhYS5hLmRvY3VtZW50KXRocm93IEVycm9yKCdPTUlEIFNlcnZpY2UgU2NyaXB0IGlzIG5vdCBydW5uaW5nIHdpdGhpbiBhIHdpbmRvdy4nKTt2YXIgYj1hLmI7YS5iPVtdO2IuZm9yRWFjaChmdW5jdGlvbihjKXt0cnl7dmFyIGQ9YS5jLkM/J2xpbWl0ZWQnOidmdWxsJyxlPU8oYy5hY2Nlc3NNb2RlLHJhKT9jLmFjY2Vzc01vZGU6bnVsbDt2YXIgZj1lPydmdWxsJz09ZSYmJ2xpbWl0ZWQnPT1kP2Q6J2RvbWFpbic9PWU/J2xpbWl0ZWQnOmU6ZDtjLmFjY2Vzc01vZGU9ZjthOnt2YXIgbD1jLnJlc291cmNlVXJsLGc9YS5hLmxvY2F0aW9uLm9yaWdpbjt0cnl7dmFyIGg9bmV3IFVSTChsLGcpO2JyZWFrIGF9Y2F0Y2goVil7fXRyeXtoPW5ldyBVUkwobCk7YnJlYWsgYX1jYXRjaChWKXt9aD1udWxsfWlmKGQ9aCl7dmFyIGs9VmIoKSxtPWEuYS5kb2N1bWVudCx2PW0uY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7di5pZD0nb21pZC12ZXJpZmljYXRpb24tc2NyaXB0LWZyYW1lLScrCms7di5zdHlsZS5kaXNwbGF5PSdub25lJztbJ2Z1bGwnLCdsaW1pdGVkJ10uaW5jbHVkZXMoZik/di5zcmNkb2M9IjxodG1sPjxoZWFkPlxuPHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCI+d2luZG93WydvbWlkVmVyaWZpY2F0aW9uUHJvcGVydGllcyddID0ge1xuJ3NlcnZpY2VXaW5kb3cnOiB3aW5kb3cucGFyZW50LFxuJ2luamVjdGlvblNvdXJjZSc6ICdhcHAnLFxuJ2luamVjdGlvbklkJzogJyIrKGsrJ1wnLFxufTtceDNjL3NjcmlwdD5cbjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IicpK2QuaHJlZisnIj5ceDNjL3NjcmlwdD5cbjwvaGVhZD48Ym9keT48L2JvZHk+PC9odG1sPic6J2RvbWFpbic9PWYmJih2LnNyYz1YYihhLGssZCkuaHJlZik7Wydkb21haW4nLCdsaW1pdGVkJ10uaW5jbHVkZXMoZikmJih2LnNhbmRib3g9J2FsbG93LXNjcmlwdHMnKTttLmJvZHkuYXBwZW5kQ2hpbGQodik7dmFyIHc9Yy52ZW5kb3JLZXksRT1jLnZlcmlmaWNhdGlvblBhcmFtZXRlcnM7Cnc9dm9pZCAwPT09dz8nJzp3O0U9dm9pZCAwPT09RT8nJzpFO3cmJidzdHJpbmcnPT09dHlwZW9mIHcmJicnIT09dyYmRSYmJ3N0cmluZyc9PT10eXBlb2YgRSYmJychPT1FJiYoYS5mLmlbd109RSk7YS5jLnYuc2V0KGssYyl9fWNhdGNoKFYpe1NhKCdPTUlEIHZlcmlmaWNhdGlvbiBzY3JpcHQgJytjLnJlc291cmNlVXJsKycgZmFpbGVkIHRvIGxvYWQ6ICcrVil9fSl9CmZ1bmN0aW9uIFhiKGEsYixjKXt2YXIgZD0nLy53ZWxsLWtub3duL29taWQvb21sb2FkZXItdjEuaHRtbCMnOyhuZXcgTWFwKFtbJ3ZlcmlmaWNhdGlvblNjcmlwdFVybCcsYy5ocmVmXSxbJ2luamVjdGlvbklkJyxiXV0pKS5mb3JFYWNoKGZ1bmN0aW9uKGUsZil7ZCs9ZW5jb2RlVVJJQ29tcG9uZW50KGYpKyc9JytlbmNvZGVVUklDb21wb25lbnQoZSkrJyYnfSk7Yj1udWxsO3RyeXtiPW5ldyBVUkwoZCxhLmEucGFyZW50LmxvY2F0aW9uLm9yaWdpbil9Y2F0Y2goZSl7dGhyb3cgRXJyb3IoJ09NSUQgU2VydmljZSBTY3JpcHQgY2Fubm90IGFjY2VzcyB0aGUgcGFyZW50IHdpbmRvdy4nKTt9cmV0dXJuIGJ9O2Z1bmN0aW9uIFliKCl7dmFyIGE9WmIsYj0kYixjPXRoaXM7dGhpcy5jPVg7dGhpcy5iPWE7dGhpcy5hPUgoKTt0aGlzLmc9Yjt0aGlzLmY9ITE7dGhpcy5yZWdpc3RlclNlc3Npb25PYnNlcnZlcihmdW5jdGlvbihkKXtyZXR1cm4gYWMoYyxkKX0pfW49WWIucHJvdG90eXBlO24ucmVnaXN0ZXJTZXNzaW9uT2JzZXJ2ZXI9ZnVuY3Rpb24oYSl7YWIodGhpcy5jLGEpfTtuLnNldFNsb3RFbGVtZW50PWZ1bmN0aW9uKGEpe3RiKGEpPyh0aGlzLmEuZj1hLHRoaXMuYiYmdmIodGhpcy5iKSk6Signc2V0U2xvdEVsZW1lbnQgY2FsbGVkIHdpdGggYSBub24tSFRNTEVsZW1lbnQuICBJdCB3aWxsIGJlIGlnbm9yZWQuJyl9O24uc2V0RWxlbWVudEJvdW5kcz1mdW5jdGlvbihhKXt0aGlzLmEuaj1hO3RoaXMuYiYmdmIodGhpcy5iKTt0aGlzLmImJndiKHRoaXMuYil9O24uZXJyb3I9ZnVuY3Rpb24oYSxiKXtkYih0aGlzLmMsYSxiKX07Cm4ucmVnaXN0ZXJBZEV2ZW50cz1mdW5jdGlvbigpe29iKHRoaXMuYywnamF2YXNjcmlwdCcpfTtuLnJlZ2lzdGVyTWVkaWFFdmVudHM9ZnVuY3Rpb24oKXtuYih0aGlzLmMsJ2phdmFzY3JpcHQnKX07ZnVuY3Rpb24gWShhLGIsYyl7J2ltcHJlc3Npb24nPT1iP3BiKGEuYywnamF2YXNjcmlwdCcpJiYoamIoYS5jLCdqYXZhc2NyaXB0JyksYS5iJiZRKGEuYikpOignbG9hZGVkJz09Yj8oYz12b2lkIDA9PT1jP251bGw6YyxMKGEuYywnamF2YXNjcmlwdCcpJiZrYihhLmMsJ2phdmFzY3JpcHQnLGMpKTpMKGEuYywnamF2YXNjcmlwdCcpJiZsYihhLmMsYiwnamF2YXNjcmlwdCcsYyksWydsb2FkZWQnLCdzdGFydCddLmluY2x1ZGVzKGIpJiZhLmImJlEoYS5iKSl9bi5pbmplY3RWZXJpZmljYXRpb25TY3JpcHRSZXNvdXJjZXM9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5nO2IuYi5wdXNoLmFwcGx5KGIuYixxKGEpKTtpZih0aGlzLmYpdHJ5e1diKHRoaXMuZyl9Y2F0Y2goYyl7SihjLm1lc3NhZ2UpfX07Cm4uc2V0Q3JlYXRpdmVUeXBlPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iP251bGw6YjtpZighdGhpcy5hLmJ8fHRoaXMuYS5hKXRoaXMuYS5hPWEsJ3ZpZGVvJz09YXx8J2F1ZGlvJz09YT90aGlzLmEuYj0ndmlkZW8nOidodG1sRGlzcGxheSc9PWF8fCduYXRpdmVEaXNwbGF5Jz09YT90aGlzLmEuYj0nZGlzcGxheSc6J2RlZmluZWRCeUphdmFTY3JpcHQnPT1hJiZiJiYodGhpcy5hLmI9J25vbmUnPT1iPydkaXNwbGF5JzondmlkZW8nKX07bi5zZXRJbXByZXNzaW9uVHlwZT1mdW5jdGlvbihhKXtpZighdGhpcy5hLmJ8fHRoaXMuYS5hKXRoaXMuYS5oPWF9OwpmdW5jdGlvbiBhYyhhLGIpe2lmKCdzZXNzaW9uU3RhcnQnPT09Yi50eXBlKXthLmY9ITA7dHJ5e1diKGEuZyl9Y2F0Y2goYyl7SihjLm1lc3NhZ2UpfX0nc2Vzc2lvbkZpbmlzaCc9PT1iLnR5cGUmJihhLmY9ITEsKGI9SCgpLmMpJiYnbmF0aXZlJz09Yi5hZFNlc3Npb25UeXBlfHxhLnJlZ2lzdGVyU2Vzc2lvbk9ic2VydmVyKGZ1bmN0aW9uKGMpe3JldHVybiBhYyhhLGMpfSkpfW4uc2V0Q2xpZW50SW5mbz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5hLmN8fHt9O2Qub21pZEpzSW5mbz1PYmplY3QuYXNzaWduKHt9LGQub21pZEpzSW5mbyx7c2Vzc2lvbkNsaWVudFZlcnNpb246YSxwYXJ0bmVyTmFtZTpiLHBhcnRuZXJWZXJzaW9uOmN9KTt0aGlzLmEuYz1kO3JldHVybiB0aGlzLmEuYy5vbWlkSnNJbmZvLnNlcnZpY2VWZXJzaW9ufTtmdW5jdGlvbiBiYyhhKXtyZXR1cm4vXGQrXC5cZCtcLlxkKygtLiopPy8udGVzdChhKX1mdW5jdGlvbiBjYyhhKXthPWEuc3BsaXQoJy0nKVswXS5zcGxpdCgnLicpO2Zvcih2YXIgYj1bJzEnLCcwJywnMyddLGM9MDszPmM7YysrKXt2YXIgZD1wYXJzZUludChhW2NdLDEwKSxlPXBhcnNlSW50KGJbY10sMTApO2lmKGQ+ZSlicmVhaztlbHNlIGlmKGQ8ZSlyZXR1cm4hMX1yZXR1cm4hMH07ZnVuY3Rpb24gZGMoYSxiKXtyZXR1cm4gYmMoYSkmJmNjKGEpP2I/YjpbXTpiJiYnc3RyaW5nJz09PXR5cGVvZiBiP0pTT04ucGFyc2UoYik6W119O2Z1bmN0aW9uIGVjKCl7dmFyIGE9ZmM7dmFyIGI9dm9pZCAwPT09Yj9vbWlkR2xvYmFsOmI7dGhpcy5hPWE7dGhpcy5mPWI7dGhpcy5iPW5ldyBVO3RoaXMuZi5vbWlkPXRoaXMuZi5vbWlkfHx7fTt0aGlzLmYub21pZC52MV9TZXNzaW9uU2VydmljZUNvbW11bmljYXRpb249dGhpcy5iO3RoaXMuYz1iJiZiLmFkZEV2ZW50TGlzdGVuZXImJmIucG9zdE1lc3NhZ2U/bmV3IFViKGIpOm51bGw7dGhpcy5nPW51bGw7dGhpcy5iLmE9dGhpcy5oLmJpbmQodGhpcyk7dGhpcy5jJiYodGhpcy5jLmE9dGhpcy5pLmJpbmQodGhpcykpfWVjLnByb3RvdHlwZS5oPWZ1bmN0aW9uKGEsYil7Z2ModGhpcyxhLGIsdGhpcy5iKX07CmVjLnByb3RvdHlwZS5pPWZ1bmN0aW9uKGEsYil7dGhpcy5nfHwodGhpcy5nPWIpO3RoaXMuZyE9Yj9KKCdUaGUgc291cmNlIHdpbmRvdyBvZiBzZXNzaW9uIGNsaWVudCBwb3N0IG1lc3NhZ2VzIGNhbm5vdCBiZSBjaGFuZ2VkIGZyb20gdGhlIHNvdXJjZSBvZiB0aGUgZmlyc3QgbWVzc2FnZS4nKTpnYyh0aGlzLGEsYix0aGlzLmMpfTsKZnVuY3Rpb24gZ2MoYSxiLGMsZCl7ZnVuY3Rpb24gZShoKXtmb3IodmFyIGs9W10sbT0wO208YXJndW1lbnRzLmxlbmd0aDsrK20pa1ttXT1hcmd1bWVudHNbbV07az1uZXcgVChmLCdyZXNwb25zZScsZyxiYyhnKSYmY2MoZyk/azpKU09OLnN0cmluZ2lmeShrKSk7ZC5iKGssYyl9dmFyIGY9Yi5iLGw9Yi5tZXRob2QsZz1iLnZlcnNpb247Yj1kYyhnLGIuYSk7dHJ5e2hjKGEsbCxlLGIpfWNhdGNoKGgpe2QuYihuZXcgVChmLCdlcnJvcicsZywnXG4gICAgICAgIG5hbWU6ICcraC5uYW1lKydcbiAgICAgICAgbWVzc2FnZTogJytoLm1lc3NhZ2UrJ1xuICAgICAgICBmaWxlbmFtZTogJytoLmZpbGVuYW1lKydcbiAgICAgICAgbGluZU51bWJlcjogJytoLmxpbmVOdW1iZXIrJ1xuICAgICAgICBjb2x1bW5OdW1iZXI6ICcraC5jb2x1bW5OdW1iZXIrJ1xuICAgICAgICBzdGFjazogJytoLnN0YWNrKydcbiAgICAgICAgdG9TdHJpbmcoKTogJytoLnRvU3RyaW5nKCkpLGMpfX0KZnVuY3Rpb24gaGMoYSxiLGMsZCl7c3dpdGNoKGIpe2Nhc2UgJ1Nlc3Npb25TZXJ2aWNlLnJlZ2lzdGVyQWRFdmVudHMnOmEuYS5yZWdpc3RlckFkRXZlbnRzKCk7YnJlYWs7Y2FzZSAnU2Vzc2lvblNlcnZpY2UucmVnaXN0ZXJNZWRpYUV2ZW50cyc6YS5hLnJlZ2lzdGVyTWVkaWFFdmVudHMoKTticmVhaztjYXNlICdTZXNzaW9uU2VydmljZS5yZWdpc3RlclNlc3Npb25PYnNlcnZlcic6YS5hLnJlZ2lzdGVyU2Vzc2lvbk9ic2VydmVyKGMpO2JyZWFrO2Nhc2UgJ1Nlc3Npb25TZXJ2aWNlLnNldFNsb3RFbGVtZW50JzpjPXAoZCkubmV4dCgpLnZhbHVlO2EuYS5zZXRTbG90RWxlbWVudChjKTticmVhaztjYXNlICdTZXNzaW9uU2VydmljZS5zZXRWaWRlb0VsZW1lbnQnOmM9cChkKS5uZXh0KCkudmFsdWU7YT1hLmE7dWIoYyk/KGEuYS5nPWMsYS5iJiZ2YihhLmIpKTpKKCdzZXRWaWRlb0VsZW1lbnQgY2FsbGVkIHdpdGggYSBub24tSFRNTFZpZGVvRWxlbWVudC4gSXQgd2lsbCBiZSBpZ25vcmVkLicpOwpicmVhaztjYXNlICdTZXNzaW9uU2VydmljZS5zZXRFbGVtZW50Qm91bmRzJzpjPXAoZCkubmV4dCgpLnZhbHVlO2EuYS5zZXRFbGVtZW50Qm91bmRzKGMpO2JyZWFrO2Nhc2UgJ1Nlc3Npb25TZXJ2aWNlLnN0YXJ0U2Vzc2lvbic6SignU2Vzc2lvbiBzdGFydCBmcm9tIEpTIGlzIG5vdCBzdXBwb3J0ZWQgaW4gbW9iaWxlIGFwcC4nKTticmVhaztjYXNlICdTZXNzaW9uU2VydmljZS5maW5pc2hTZXNzaW9uJzpKKCdTZXNzaW9uIGZpbmlzaCBmcm9tIEpTIGlzIG5vdCBzdXBwb3J0ZWQgaW4gbW9iaWxlIGFwcC4nKTticmVhaztjYXNlICdTZXNzaW9uU2VydmljZS5pbXByZXNzaW9uT2NjdXJyZWQnOlkoYS5hLCdpbXByZXNzaW9uJyk7YnJlYWs7Y2FzZSAnU2Vzc2lvblNlcnZpY2UubG9hZGVkJzooYz1wKGQpLm5leHQoKS52YWx1ZSk/KGI9e3NraXBwYWJsZTpjLmlzU2tpcHBhYmxlLGF1dG9QbGF5OmMuaXNBdXRvUGxheSxwb3NpdGlvbjpjLnBvc2l0aW9ufSxjLmlzU2tpcHBhYmxlJiYKKGIuc2tpcE9mZnNldD1jLnNraXBPZmZzZXQpLFkoYS5hLCdsb2FkZWQnLGIpKTpZKGEuYSwnbG9hZGVkJyk7YnJlYWs7Y2FzZSAnU2Vzc2lvblNlcnZpY2Uuc3RhcnQnOmI9cChkKTtjPWIubmV4dCgpLnZhbHVlO2I9Yi5uZXh0KCkudmFsdWU7WShhLmEsJ3N0YXJ0Jyx7ZHVyYXRpb246YyxtZWRpYVBsYXllclZvbHVtZTpifSk7YnJlYWs7Y2FzZSAnU2Vzc2lvblNlcnZpY2UuZmlyc3RRdWFydGlsZSc6WShhLmEsJ2ZpcnN0UXVhcnRpbGUnKTticmVhaztjYXNlICdTZXNzaW9uU2VydmljZS5taWRwb2ludCc6WShhLmEsJ21pZHBvaW50Jyk7YnJlYWs7Y2FzZSAnU2Vzc2lvblNlcnZpY2UudGhpcmRRdWFydGlsZSc6WShhLmEsJ3RoaXJkUXVhcnRpbGUnKTticmVhaztjYXNlICdTZXNzaW9uU2VydmljZS5jb21wbGV0ZSc6WShhLmEsJ2NvbXBsZXRlJyk7YnJlYWs7Y2FzZSAnU2Vzc2lvblNlcnZpY2UucGF1c2UnOlkoYS5hLCdwYXVzZScpO2JyZWFrO2Nhc2UgJ1Nlc3Npb25TZXJ2aWNlLnJlc3VtZSc6WShhLmEsCidyZXN1bWUnKTticmVhaztjYXNlICdTZXNzaW9uU2VydmljZS5idWZmZXJTdGFydCc6WShhLmEsJ2J1ZmZlclN0YXJ0Jyk7YnJlYWs7Y2FzZSAnU2Vzc2lvblNlcnZpY2UuYnVmZmVyRmluaXNoJzpZKGEuYSwnYnVmZmVyRmluaXNoJyk7YnJlYWs7Y2FzZSAnU2Vzc2lvblNlcnZpY2Uuc2tpcHBlZCc6WShhLmEsJ3NraXBwZWQnKTticmVhaztjYXNlICdTZXNzaW9uU2VydmljZS52b2x1bWVDaGFuZ2UnOmM9e21lZGlhUGxheWVyVm9sdW1lOnAoZCkubmV4dCgpLnZhbHVlfTtZKGEuYSwndm9sdW1lQ2hhbmdlJyxjKTticmVhaztjYXNlICdTZXNzaW9uU2VydmljZS5wbGF5ZXJTdGF0ZUNoYW5nZSc6Yz17c3RhdGU6cChkKS5uZXh0KCkudmFsdWV9O1koYS5hLCdwbGF5ZXJTdGF0ZUNoYW5nZScsYyk7YnJlYWs7Y2FzZSAnU2Vzc2lvblNlcnZpY2UuYWRVc2VySW50ZXJhY3Rpb24nOmM9e2ludGVyYWN0aW9uVHlwZTpwKGQpLm5leHQoKS52YWx1ZX07WShhLmEsJ2FkVXNlckludGVyYWN0aW9uJywKYyk7YnJlYWs7Y2FzZSAnU2Vzc2lvblNlcnZpY2Uuc2V0Q2xpZW50SW5mbyc6dmFyIGU9cChkKTtiPWUubmV4dCgpLnZhbHVlO2Q9ZS5uZXh0KCkudmFsdWU7ZT1lLm5leHQoKS52YWx1ZTthPWEuYS5zZXRDbGllbnRJbmZvKGIsZCxlKTtjKGEpO2JyZWFrO2Nhc2UgJ1Nlc3Npb25TZXJ2aWNlLmluamVjdFZlcmlmaWNhdGlvblNjcmlwdFJlc291cmNlcyc6Yz1wKGQpLm5leHQoKS52YWx1ZTthLmEuaW5qZWN0VmVyaWZpY2F0aW9uU2NyaXB0UmVzb3VyY2VzKGMpO2JyZWFrO2Nhc2UgJ1Nlc3Npb25TZXJ2aWNlLnNldENyZWF0aXZlVHlwZSc6Yz1wKGQpLm5leHQoKS52YWx1ZTthLmEuc2V0Q3JlYXRpdmVUeXBlKGMpO2JyZWFrO2Nhc2UgJ1Nlc3Npb25TZXJ2aWNlLnNldEltcHJlc3Npb25UeXBlJzpjPXAoZCkubmV4dCgpLnZhbHVlO2EuYS5zZXRJbXByZXNzaW9uVHlwZShjKTticmVhaztjYXNlICdTZXNzaW9uU2VydmljZS5zZXRDb250ZW50VXJsJzpjPXAoZCkubmV4dCgpLnZhbHVlOwphLmEuYS5vPWM7YnJlYWs7Y2FzZSAnU2Vzc2lvblNlcnZpY2Uuc2Vzc2lvbkVycm9yJzpiPXAoZCksYz1iLm5leHQoKS52YWx1ZSxiPWIubmV4dCgpLnZhbHVlLGEuYS5lcnJvcihjLGIpfX07ZnVuY3Rpb24gWigpe3ZhciBhPVgsYj1pYyxjPWpjLGQ9WmI7dGhpcy5mPWZjO3RoaXMuYT1hO3RoaXMuYz1iO3RoaXMuaD1jO3RoaXMuZz1kO3RoaXMuYj1IKCl9bj1aLnByb3RvdHlwZTsKbi5UPWZ1bmN0aW9uKGEpe2lmKCEoIShhJiZNKGEpJiZPKGEuaW1wcmVzc2lvbk93bmVyLHBhKSl8fCd2aWRlb0V2ZW50c093bmVyJ2luIGEmJm51bGwhPWEudmlkZW9FdmVudHNPd25lciYmIU8oYS52aWRlb0V2ZW50c093bmVyLHBhKXx8J21lZGlhRXZlbnRzT3duZXInaW4gYSYmbnVsbCE9YS5tZWRpYUV2ZW50c093bmVyJiYhTyhhLm1lZGlhRXZlbnRzT3duZXIscGEpKSl7aWYoYS5jcmVhdGl2ZVR5cGUmJmEuaW1wcmVzc2lvblR5cGUpe3ZhciBiPWEubWVkaWFFdmVudHNPd25lcjtudWxsPT10aGlzLmIuYSYmdGhpcy5mLnNldENyZWF0aXZlVHlwZShhLmNyZWF0aXZlVHlwZSxiKTtudWxsPT10aGlzLmIuaCYmKHRoaXMuYi5oPWEuaW1wcmVzc2lvblR5cGUpO25iKHRoaXMuYSxiKX1lbHNlIGI9YS52aWRlb0V2ZW50c093bmVyLHRoaXMuYi5iPW51bGw9PWJ8fCdub25lJz09PWI/J2Rpc3BsYXknOid2aWRlbycsdGhpcy5iLmE9bnVsbCx0aGlzLmIuaD1udWxsLG5iKHRoaXMuYSxiKTsKb2IodGhpcy5hLGEuaW1wcmVzc2lvbk93bmVyKTthJiZudWxsIT1hLmlzb2xhdGVWZXJpZmljYXRpb25TY3JpcHRzJiYnYm9vbGVhbic9PT10eXBlb2YgYS5pc29sYXRlVmVyaWZpY2F0aW9uU2NyaXB0cyYmKHRoaXMuYi5DPWEuaXNvbGF0ZVZlcmlmaWNhdGlvblNjcmlwdHMpfX07Cm4uVz1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZTtpZihNKGIpKXtpZihlPU8oYi5lbnZpcm9ubWVudCx0YSkmJk8oYi5hZFNlc3Npb25UeXBlLG9hKSllPWIub21pZE5hdGl2ZUluZm8sZT1NKGUpP04oZS5wYXJ0bmVyTmFtZSkmJk4oZS5wYXJ0bmVyVmVyc2lvbik6ITE7ZSYmKGU9Yi5hcHAsZT1NKGUpP04oZS5saWJyYXJ5VmVyc2lvbikmJk4oZS5hcHBJZCk6ITEpfWVsc2UgZT0hMTtlJiYoUGIoZCkmJih0aGlzLmIudj1uZXcgTWFwKE9iamVjdC5lbnRyaWVzKGQpKSksZD10aGlzLmYsYz12b2lkIDA9PT1jP251bGw6YyxudWxsPT1hJiYoYT1WYigpKSxiLmNhbk1lYXN1cmVWaXNpYmlsaXR5PWQuYi5DKCksZC5hLmFkU2Vzc2lvbklkPWEsYT1kLmEsZT1iLHZvaWQgMCE9PWUuY29udGVudFVybCYmKGEubz1lLmNvbnRlbnRVcmwsZS5jb250ZW50VXJsPXZvaWQgMCksZT1hLmN8fHt9LGIub21pZEpzSW5mbz1PYmplY3QuYXNzaWduKHt9LGUub21pZEpzSW5mb3x8e30sYi5vbWlkSnNJbmZvfHwKe30pLGU9Yj1PYmplY3QuYXNzaWduKHt9LGUsYiksYS5DfHwobnVsbCE9YS5nPyhlLnZpZGVvRWxlbWVudD1hLmcsZS5hY2Nlc3NNb2RlPSdmdWxsJyk6bnVsbCE9YS5mJiYoZS5zbG90RWxlbWVudD1hLmYsZS5hY2Nlc3NNb2RlPSdmdWxsJykpLGEuYz1iLGViKGQuYyxjKSxkLmImJlEoZC5iKSl9O24uVT1mdW5jdGlvbigpe3ZhciBhPXRoaXMuZjtpYihhLmMpO2EuYi5tKCl9O24uJD1mdW5jdGlvbihhKXtNKGEpJiZyYihhLngpJiZyYihhLnkpJiZyYihhLndpZHRoKSYmcmIoYS5oZWlnaHQpJiYodGhpcy5iLkc9YSxxYih0aGlzLmMsJ2NvbnRhaW5lcicpKX07bi5hYT1mdW5jdGlvbihhKXtPKGEsc2EpJiYodGhpcy5iLm09YSwnYmFja2dyb3VuZGVkJz09PWE/cWIodGhpcy5jLCdjb250YWluZXInLCdiYWNrZ3JvdW5kZWQnKTpxYih0aGlzLmMsJ2NvbnRhaW5lcicpKX07bi5YPWZ1bmN0aW9uKGEpeydpbXByZXNzaW9uJz09PWEmJih0aGlzLk0oKSx0aGlzLmcmJlEodGhpcy5nKSl9OwpuLk09ZnVuY3Rpb24oKXtwYih0aGlzLmEsJ25hdGl2ZScpJiZqYih0aGlzLmEsJ25hdGl2ZScpfTtuLlY9ZnVuY3Rpb24oYSl7YT12b2lkIDA9PT1hP251bGw6YTtMKHRoaXMuYSwnbmF0aXZlJykmJmtiKHRoaXMuYSwnbmF0aXZlJyxhKX07bi5lcnJvcj1mdW5jdGlvbihhLGIpe08oYSxuYSkmJmRiKHRoaXMuYSxhLGIpfTtuLlk9ZnVuY3Rpb24oYSxiKXt0aGlzLk4oYSxiKX07bi5OPWZ1bmN0aW9uKGEsYil7TCh0aGlzLmEsJ25hdGl2ZScpJiZPKGEsQSkmJih2b2lkIDA9PT1ifHxNKGIpKSYmKCdsb2FkZWQnPT1hP2tiKHRoaXMuYSwnbmF0aXZlJyxiKTpsYih0aGlzLmEsYSwnbmF0aXZlJyxiKSl9OwpuLlo9ZnVuY3Rpb24oYSl7aWYoJ25vbmUnIT09dGhpcy5hLmEuaSYmJ251bWJlcic9PT10eXBlb2YgYSYmIWlzTmFOKGEpKXt0aGlzLmIudT1hO2E9dGhpcy5oO3ZhciBiPWEuYS5CO251bGwhPWImJmxiKGEuYiwndm9sdW1lQ2hhbmdlJywnbmF0aXZlJyx7bWVkaWFQbGF5ZXJWb2x1bWU6YixkZXZpY2VWb2x1bWU6YS5hLnV9KX19O1oucHJvdG90eXBlLnN0YXJ0U2Vzc2lvbj1aLnByb3RvdHlwZS5XO1oucHJvdG90eXBlLmVycm9yPVoucHJvdG90eXBlLmVycm9yO1oucHJvdG90eXBlLmZpbmlzaFNlc3Npb249Wi5wcm90b3R5cGUuVTtaLnByb3RvdHlwZS5wdWJsaXNoQWRFdmVudD1aLnByb3RvdHlwZS5YO1oucHJvdG90eXBlLnB1Ymxpc2hJbXByZXNzaW9uRXZlbnQ9Wi5wcm90b3R5cGUuTTtaLnByb3RvdHlwZS5wdWJsaXNoVmlkZW9FdmVudD1aLnByb3RvdHlwZS5ZO1oucHJvdG90eXBlLnB1Ymxpc2hNZWRpYUV2ZW50PVoucHJvdG90eXBlLk47CloucHJvdG90eXBlLnB1Ymxpc2hMb2FkZWRFdmVudD1aLnByb3RvdHlwZS5WO1oucHJvdG90eXBlLnNldE5hdGl2ZVZpZXdIaWVyYXJjaHk9Wi5wcm90b3R5cGUuJDtaLnByb3RvdHlwZS5zZXRTdGF0ZT1aLnByb3RvdHlwZS5hYTtaLnByb3RvdHlwZS5zZXREZXZpY2VWb2x1bWU9Wi5wcm90b3R5cGUuWjtaLnByb3RvdHlwZS5pbml0PVoucHJvdG90eXBlLlQ7ZnVuY3Rpb24ga2MoKXt2YXIgYT1YLGI9bGM7dmFyIGM9dm9pZCAwPT09Yz9JOmM7dGhpcy5nPWE7dGhpcy5hPWI7dGhpcy5oPXt9O3RoaXMuZj17fTt0aGlzLmM9bmV3IFU7Yy5vbWlkPWMub21pZHx8e307Yy5vbWlkLnYxX1ZlcmlmaWNhdGlvblNlcnZpY2VDb21tdW5pY2F0aW9uPXRoaXMuYzt0aGlzLmI9bnVsbDtjJiZjLmFkZEV2ZW50TGlzdGVuZXImJmMucG9zdE1lc3NhZ2UmJih0aGlzLmI9bmV3IFViKGMpKTt0aGlzLmMuYT10aGlzLmkuYmluZCh0aGlzKTt0aGlzLmImJih0aGlzLmIuYT10aGlzLmouYmluZCh0aGlzKSl9ZnVuY3Rpb24gbWMoYSxiLGMsZCl7RWIoYS5hLGIsYyxkKX1mdW5jdGlvbiBuYyhhLGIsYyxkKXtEYihhLmEsJ2Rvd25sb2FkSmF2YVNjcmlwdFJlc291cmNlJykoYixjLGQpfWtjLnByb3RvdHlwZS5qPWZ1bmN0aW9uKGEsYil7dGhpcy5iJiZvYyh0aGlzLGEsYix0aGlzLmIpfTtrYy5wcm90b3R5cGUuaT1mdW5jdGlvbihhLGIpe29jKHRoaXMsYSxiLHRoaXMuYyl9OwpmdW5jdGlvbiBvYyhhLGIsYyxkKXtmdW5jdGlvbiBlKEYpe2Zvcih2YXIgVz1bXSxxYT0wO3FhPGFyZ3VtZW50cy5sZW5ndGg7KytxYSlXW3FhXT1hcmd1bWVudHNbcWFdO1c9bmV3IFQoZiwncmVzcG9uc2UnLGcsYmMoZykmJmNjKGcpP1c6SlNPTi5zdHJpbmdpZnkoVykpO2QuYihXLGMpfXZhciBmPWIuYixsPWIubWV0aG9kLGc9Yi52ZXJzaW9uO2I9ZGMoZyxiLmEpO3RyeXtzd2l0Y2gobCl7Y2FzZSAnVmVyaWZpY2F0aW9uU2VydmljZS5hZGRFdmVudExpc3RlbmVyJzp2YXIgaD1wKGIpLm5leHQoKS52YWx1ZTtaYShhLmcsaCxlKTticmVhaztjYXNlICdWZXJpZmljYXRpb25TZXJ2aWNlLmFkZFNlc3Npb25MaXN0ZW5lcic6dmFyIGs9cChiKSxtPWsubmV4dCgpLnZhbHVlLHY9ay5uZXh0KCkudmFsdWU7YWIoYS5nLGUsbSx2KTticmVhaztjYXNlICdWZXJpZmljYXRpb25TZXJ2aWNlLnNlbmRVcmwnOnZhciB3PXAoYikubmV4dCgpLnZhbHVlO21jKGEsdyxmdW5jdGlvbigpe3JldHVybiBlKCEwKX0sCmZ1bmN0aW9uKCl7cmV0dXJuIGUoITEpfSk7YnJlYWs7Y2FzZSAnVmVyaWZpY2F0aW9uU2VydmljZS5zZXRUaW1lb3V0Jzp2YXIgRT1wKGIpLFY9RS5uZXh0KCkudmFsdWUsdGM9RS5uZXh0KCkudmFsdWU7YS5oW1ZdPUFiKGEuYSwnc2V0VGltZW91dCcpKGUsdGMpO2JyZWFrO2Nhc2UgJ1ZlcmlmaWNhdGlvblNlcnZpY2UuY2xlYXJUaW1lb3V0Jzp2YXIgdWM9cChiKS5uZXh0KCkudmFsdWU7Q2IoYS5hLGEuaFt1Y10pO2JyZWFrO2Nhc2UgJ1ZlcmlmaWNhdGlvblNlcnZpY2Uuc2V0SW50ZXJ2YWwnOnZhciBOYj1wKGIpLHZjPU5iLm5leHQoKS52YWx1ZSx3Yz1OYi5uZXh0KCkudmFsdWU7YS5mW3ZjXT16YihhLmEsZSx3Yyk7YnJlYWs7Y2FzZSAnVmVyaWZpY2F0aW9uU2VydmljZS5jbGVhckludGVydmFsJzp2YXIgeGM9cChiKS5uZXh0KCkudmFsdWU7QmIoYS5hLGEuZlt4Y10pO2JyZWFrO2Nhc2UgJ1ZlcmlmaWNhdGlvblNlcnZpY2UuaW5qZWN0SmF2YVNjcmlwdFJlc291cmNlJzp2YXIgeWM9CnAoYikubmV4dCgpLnZhbHVlO25jKGEseWMsZnVuY3Rpb24oRil7cmV0dXJuIGUoITAsRil9LGZ1bmN0aW9uKCl7cmV0dXJuIGUoITEpfSk7YnJlYWs7Y2FzZSAnVmVyaWZpY2F0aW9uU2VydmljZS5nZXRWZXJzaW9uJzpwKGIpLm5leHQoKTt2YXIgemM9SCgpLmMub21pZEpzSW5mbztlKHpjLnNlcnZpY2VWZXJzaW9uKX19Y2F0Y2goRil7ZC5iKG5ldyBUKGYsJ2Vycm9yJyxnLCdcbiAgICAgICAgICAgICAgbmFtZTogJytGLm5hbWUrJ1xuICAgICAgICAgICAgICBtZXNzYWdlOiAnK0YubWVzc2FnZSsnXG4gICAgICAgICAgICAgIGZpbGVuYW1lOiAnK0YuZmlsZW5hbWUrJ1xuICAgICAgICAgICAgICBsaW5lTnVtYmVyOiAnK0YubGluZU51bWJlcisnXG4gICAgICAgICAgICAgIGNvbHVtbk51bWJlcjogJytGLmNvbHVtbk51bWJlcisnXG4gICAgICAgICAgICAgIHN0YWNrOiAnK0Yuc3RhY2srJ1xuICAgICAgICAgICAgICB0b1N0cmluZygpOiAnK0YudG9TdHJpbmcoKSsnXG4gICAgICAgICAgJyksCmMpfX07ZnVuY3Rpb24gcGMoKXt2YXIgYT1JLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO2EuaWQ9J29taWRfdjFfcHJlc2VudCc7YS5uYW1lPSdvbWlkX3YxX3ByZXNlbnQnO2Euc3R5bGUuZGlzcGxheT0nbm9uZSc7SS5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpfWZ1bmN0aW9uIHFjKCl7dmFyIGE9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oYil7Yi5mb3JFYWNoKGZ1bmN0aW9uKGMpeydCT0RZJz09PWMuYWRkZWROb2Rlc1swXS5ub2RlTmFtZSYmKHBjKCksYS5kaXNjb25uZWN0KCkpfSl9KTthLm9ic2VydmUoSS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQse2NoaWxkTGlzdDohMH0pfTt2YXIgWD1uZXcgVGEsbGM9bmV3IGZ1bmN0aW9uKCl7dmFyIGE7dGhpcy5hPWE9dm9pZCAwPT09YT9vbWlkR2xvYmFsOmF9O25ldyBrYzt2YXIgcmM9bmV3IGZ1bmN0aW9uKCl7fSxzYz1uZXcgZnVuY3Rpb24oKXt9LGljPW5ldyBmdW5jdGlvbigpe3RoaXMuYj1YO3RoaXMuYz1zYzt0aGlzLmE9SCgpfSxBYztJP0FjPUkuSW50ZXJzZWN0aW9uT2JzZXJ2ZXImJihJLk11dGF0aW9uT2JzZXJ2ZXJ8fEkuUmVzaXplT2JzZXJ2ZXIpP25ldyBTKEkscmMsaWMsWCk6bmV3IFIoSSxzYyxpYyxsYyxYKTpBYz1udWxsO3ZhciBaYj1BYywkYj1uZXcgZnVuY3Rpb24oKXt2YXIgYT1YO3ZhciBiPXZvaWQgMD09PWI/STpiO3RoaXMuZj1hO3RoaXMuYT1iO3RoaXMuYz1IKCk7dGhpcy5iPVtdfSxmYz1uZXcgWWIsamM9bmV3IGZ1bmN0aW9uKCl7dmFyIGE9WCxiPUgoKTt0aGlzLmI9YTt0aGlzLmE9Yn07SS5vbWlkQnJpZGdlPW5ldyBaO25ldyBlYzsKaWYoSS5mcmFtZXMmJkkuZG9jdW1lbnQmJiEoJ29taWRfdjFfcHJlc2VudCdpbiBJLmZyYW1lcykpe3ZhciBCYztpZihCYz1udWxsPT1JLmRvY3VtZW50LmJvZHkpQmM9J011dGF0aW9uT2JzZXJ2ZXInaW4gSTtCYz9xYygpOkkuZG9jdW1lbnQuYm9keT9wYygpOkkuZG9jdW1lbnQud3JpdGUoJzxpZnJhbWUgc3R5bGU9ImRpc3BsYXk6bm9uZSIgaWQ9Im9taWRfdjFfcHJlc2VudCIgbmFtZT0ib21pZF92MV9wcmVzZW50Ij48L2lmcmFtZT4nKX07Cn0pLmNhbGwodGhpcywgdGhpcyk7Cg==" |