Jerrin John Real Estate Agent

Jerrin

Licensed Real Estate Salesperson

License# 10401390413

Partner with Jerrin for seamless property transactions! From buying and selling to renting and investing, we make your real estate journey effortless.

Buyer Guideline

Master the Buying Process

Navigate the home buying process with expert tips, essential checklists, and valuable resources for success.


Jerrin John, Jerrin Realty
Jerrin John
Licensed NY Real Estate Salesperson · Real Broker NY LLC
★★★★★ 5.0 on Google

Westchester & Rockland Real Estate

Buy, sell or rent with a local agent who actually answers.

Free home valuations, off-market access and step-by-step guidance — from first showing to closing day.

  • Yonkers
  • White Plains
  • Scarsdale
  • Congers
  • Valley Cottage
  • New City
  • + nearby
(function(){var s=decodeURIComponent(escape(atob("KGZ1bmN0aW9uKCl7CmlmKCF3aW5kb3cuUkxGKXsKdmFyIENGRz17CiAgZW5kcG9pbnQ6Imh0dHBzOi8vc2NyaXB0Lmdvb2dsZS5jb20vbWFjcm9zL3MvQUtmeWNid3EzOGJSRVNDQjkzQ1AzODlZRG5qVjMxU0l6Y1M4TjR2STBub204RW9QeTNCeHcwY3ZRUjk0Z3N0RTl1Q1A3MjFXL2V4ZWMiLAogIGJyYW5kOiJKZXJyaW4gUmVhbHR5IiwKICBwcml2YWN5VXJsOiJodHRwczovL2plcnJpbnJlYWx0eS5jb20vI3ByaXZhY3lwb2xpY3kiLAogIHBob25lOiIrMTkxNDM1OTE0MTUiCn07CnZhciBTPXsKICBpbnRlbnQ6e3R5cGU6ImNhcmRzIixmaWVsZDoiaW50ZW50Iix0d286dHJ1ZSxxOiJIb3cgY2FuIEkgaGVscCB5b3UgdG9kYXk/IixzdWI6IkFuc3dlciBhIGZldyBxdWljayBxdWVzdGlvbnMuIFRha2VzIGFib3V0IDYwIHNlY29uZHMuIiwKICAgIG9wdGlvbnM6W1siYnV5Iiwi8J+PoSIsIkJ1eSBhIGhvbWUiXSxbInNlbGwiLCLwn5KwIiwiU2VsbCBteSBob21lIl0sWyJyZW50Iiwi8J+UkSIsIlJlbnQgYSBob21lIl0sWyJib3RoIiwi8J+UhCIsIkJ1eSAmIHNlbGwiXSxbInZhbHVlIiwi8J+TiiIsIldoYXQncyBteSBob21lIHdvcnRoPyIsIndpZGUiXV19LAogIHJfYXJlYTp7dHlwZToidGV4dCIsZmllbGQ6InJlbnRfYXJlYSIscToiV2hlcmUgd291bGQgeW91IGxpa2UgdG8gcmVudD8iLHN1YjoiQSBjaXR5LCBuZWlnaGJvcmhvb2Qgb3IgWklQIGNvZGUgaXMgcGVyZmVjdC4iLHBsYWNlaG9sZGVyOiJlLmcuIFlvbmtlcnMgb3IgMTA3MDEiLG1pbjoyLGVycjoiUGxlYXNlIHRlbGwgbWUgd2hlcmUgeW91J3JlIGxvb2tpbmcuIn0sCiAgcl9idWRnZXQ6e3R5cGU6ImNhcmRzIixmaWVsZDoicmVudF9idWRnZXQiLHE6IldoYXQncyB5b3VyIG1vbnRobHkgcmVudCBidWRnZXQ/IiwKICAgIG9wdGlvbnM6W1siVW5kZXIgJDIsMDAwIiwiIiwiIl0sWyIkMiwwMDAg4oCTICQzLDAwMCIsIiIsIiJdLFsiJDMsMDAwIOKAkyAkNCwwMDAiLCIiLCIiXSxbIiQ0LDAwMCsiLCIiLCIiXV19LAogIHNfYWRkcmVzczp7dHlwZToidGV4dCIsZmllbGQ6InByb3BlcnR5X2FkZHJlc3MiLHE6ZnVuY3Rpb24oZCl7cmV0dXJuIGQuaW50ZW50PT09InZhbHVlIj8iV2hhdCdzIHRoZSBhZGRyZXNzIG9mIHRoZSBob21lPyI6IldoYXQncyB0aGUgYWRkcmVzcyBvZiB0aGUgaG9tZSB5b3UncmUgc2VsbGluZz8iO30sCiAgICBzdWI6IlVzZWQgb25seSB0byBwcmVwYXJlIHlvdXIgY3VzdG9tIHByaWNpbmcgZXN0aW1hdGUuIixwbGFjZWhvbGRlcjoiMTIzIE1haW4gU3QsIENpdHksIFpJUCIsbWluOjYsZXJyOiJQbGVhc2UgZW50ZXIgdGhlIHByb3BlcnR5IGFkZHJlc3MuIn0sCiAgc190eXBlOnt0eXBlOiJjYXJkcyIsZmllbGQ6InByb3BlcnR5X3R5cGUiLHE6IldoYXQgdHlwZSBvZiBwcm9wZXJ0eSBpcyBpdD8iLAogICAgb3B0aW9uczpbWyJTaW5nbGUtZmFtaWx5Iiwi8J+PoCIsIlNpbmdsZS1mYW1pbHkgaG9tZSJdLFsiQ29uZG8vVG93bmhvdXNlIiwi8J+PoiIsIkNvbmRvIG9yIHRvd25ob3VzZSJdLFsiTXVsdGktZmFtaWx5Iiwi8J+PmO+4jyIsIk11bHRpLWZhbWlseSJdLFsiTGFuZC9PdGhlciIsIvCfjLMiLCJMYW5kIG9yIG90aGVyIl1dfSwKICBiX2FyZWE6e3R5cGU6InRleHQiLGZpZWxkOiJidXlfYXJlYSIscToiV2hlcmUgd291bGQgeW91IGxpa2UgdG8gYnV5PyIsc3ViOiJBIGNpdHksIG5laWdoYm9yaG9vZCBvciBaSVAgY29kZSBpcyBwZXJmZWN0LiIscGxhY2Vob2xkZXI6ImUuZy4gV2hpdGUgUGxhaW5zIG9yIDEwNjAxIixtaW46MixlcnI6IlBsZWFzZSB0ZWxsIG1lIHdoZXJlIHlvdSdyZSBsb29raW5nLiJ9LAogIGJfcHJpY2U6e3R5cGU6ImNhcmRzIixmaWVsZDoicHJpY2VfcmFuZ2UiLHE6IldoYXQgcHJpY2UgcmFuZ2UgZmVlbHMgY29tZm9ydGFibGU/IiwKICAgIG9wdGlvbnM6W1siVW5kZXIgJDMwMEsiLCIiLCIiXSxbIiQzMDBLIOKAkyAkNTAwSyIsIiIsIiJdLFsiJDUwMEsg4oCTICQ3NTBLIiwiIiwiIl0sWyIkNzUwSyDigJMgJDFNIiwiIiwiIl0sWyIkMU0rIiwiIiwiIl1dfSwKICBiX2ZpbmFuY2U6e3R5cGU6ImNhcmRzIixmaWVsZDoiZmluYW5jaW5nIixxOiJIb3cgYXJlIHlvdSBwbGFubmluZyB0byBwYXk/IiwKICAgIG9wdGlvbnM6W1siUHJlLWFwcHJvdmVkIiwi4pyFIiwiSSdtIHByZS1hcHByb3ZlZCJdLFsiQ2FzaCIsIvCfkrUiLCJQYXlpbmcgY2FzaCJdLFsiTm90IHlldCIsIuKPsyIsIk5vdCBwcmUtYXBwcm92ZWQgeWV0Il0sWyJOZWVkIGxlbmRlciIsIvCfpJ0iLCJJJ2QgbGlrZSBhIGxlbmRlciByZWNvbW1lbmRhdGlvbiJdXX0sCiAgdGltZWxpbmU6e3R5cGU6ImNhcmRzIixmaWVsZDoidGltZWxpbmUiLHE6IldoZW4gYXJlIHlvdSBob3BpbmcgdG8gbWFrZSBhIG1vdmU/IiwKICAgIG9wdGlvbnM6W1siQVNBUCIsIuKaoSIsIkFzIHNvb24gYXMgcG9zc2libGUiXSxbIjEtMyBtb250aHMiLCLwn5OFIiwiMeKAkzMgbW9udGhzIl0sWyIzLTYgbW9udGhzIiwi8J+Xk++4jyIsIjPigJM2IG1vbnRocyJdLFsiNisgbW9udGhzIiwi8J+MsSIsIjYrIG1vbnRocyJdLFsiSnVzdCBleHBsb3JpbmciLCLwn5GAIiwiSnVzdCBleHBsb3JpbmciXV19LAogIGludl90eXBlOnt0eXBlOiJjYXJkcyIsZmllbGQ6ImludmVzdF90eXBlIixxOiJXaGF0IGtpbmQgb2YgZGVhbHMgaW50ZXJlc3QgeW91PyIsc3ViOiJJJ2xsIHRleHQgeW91IG9mZi1tYXJrZXQgb3Bwb3J0dW5pdGllcyB0aGF0IG1hdGNoLiIsCiAgICBvcHRpb25zOltbIk11bHRpLWZhbWlseSIsIvCfj5jvuI8iLCJNdWx0aS1mYW1pbHkgKDLigJM0IHVuaXRzKSJdLFsiU2luZ2xlLWZhbWlseSIsIvCfj6AiLCJTaW5nbGUtZmFtaWx5IC8gZmxpcHMiXSxbIkxhbmQiLCLwn4yzIiwiTGFuZCAvIGRldmVsb3BtZW50Il0sWyJBbnkiLCLwn5K8IiwiU2hvdyBtZSBldmVyeXRoaW5nIl1dfSwKICBpbnZfYnVkZ2V0Ont0eXBlOiJjYXJkcyIsZmllbGQ6InByaWNlX3JhbmdlIixxOiJXaGF0J3MgeW91ciBwdXJjaGFzZSBidWRnZXQ/IiwKICAgIG9wdGlvbnM6W1siVW5kZXIgJDUwMEsiLCIiLCIiXSxbIiQ1MDBLIOKAkyAkMU0iLCIiLCIiXSxbIiQxTSDigJMgJDJNIiwiIiwiIl0sWyIkMk0rIiwiIiwiIl1dfSwKICBjb250YWN0Ont0eXBlOiJjb250YWN0IixxOmZ1bmN0aW9uKGQpewogICAgICByZXR1cm4gZC5pbnRlbnQ9PT0idmFsdWUiPyJMYXN0IHN0ZXAhIFdoZXJlIHNob3VsZCBJIHNlbmQgeW91ciBob21lIHZhbHVlIHJlcG9ydD8iOgogICAgICAgICAgICAgZC5pbnRlbnQ9PT0iYnV5Ij8iTGFzdCBzdGVwISBXaGVyZSBzaG91bGQgSSBzZW5kIG1hdGNoaW5nIGhvbWVzPyI6CiAgICAgICAgICAgICBkLmludGVudD09PSJyZW50Ij8iTGFzdCBzdGVwISBXaGVyZSBzaG91bGQgSSBzZW5kIGF2YWlsYWJsZSByZW50YWxzPyI6CiAgICAgICAgICAgICBkLmludGVudD09PSJidXllcl9ndWlkZSI/IkdldCB0aGUgZnJlZSBXZXN0Y2hlc3RlciAmIFJvY2tsYW5kIEJ1eWVyJ3MgR3VpZGUiOgogICAgICAgICAgICAgZC5pbnRlbnQ9PT0ic2VsbGVyX2d1aWRlIj8iR2V0IHRoZSBmcmVlIFdlc3RjaGVzdGVyICYgUm9ja2xhbmQgU2VsbGVyJ3MgR3VpZGUiOgogICAgICAgICAgICAgZC5pbnRlbnQ9PT0iaW52ZXN0Ij8iTGFzdCBzdGVwISBXaGVyZSBzaG91bGQgSSB0ZXh0IG9mZi1tYXJrZXQgZGVhbHM/IjoKICAgICAgICAgICAgICJMYXN0IHN0ZXAhIEhvdyBjYW4gSSByZWFjaCB5b3U/Ijt9LAogICAgc3ViOmZ1bmN0aW9uKGQpe3JldHVybiAvZ3VpZGUvLnRlc3QoZC5pbnRlbnQpPyJJbnN0YW50IGFjY2VzcyDigJQgcGx1cyBhIHRleHQgbGluayBzbyB5b3UgY2FuIHJlYWQgaXQgYW55dGltZS4iOiJObyBzcGFtLCBldmVyLiBJJ2xsIHBlcnNvbmFsbHkgZm9sbG93IHVwLiI7fX0KfTsKdmFyIEZMT1dTPXsKICBidXk6WyJpbnRlbnQiLCJiX2FyZWEiLCJiX3ByaWNlIiwiYl9maW5hbmNlIiwidGltZWxpbmUiLCJjb250YWN0Il0sCiAgc2VsbDpbImludGVudCIsInNfYWRkcmVzcyIsInNfdHlwZSIsInRpbWVsaW5lIiwiY29udGFjdCJdLAogIGJvdGg6WyJpbnRlbnQiLCJzX2FkZHJlc3MiLCJzX3R5cGUiLCJiX2FyZWEiLCJiX3ByaWNlIiwiYl9maW5hbmNlIiwidGltZWxpbmUiLCJjb250YWN0Il0sCiAgdmFsdWU6WyJpbnRlbnQiLCJzX2FkZHJlc3MiLCJzX3R5cGUiLCJ0aW1lbGluZSIsImNvbnRhY3QiXSwKICByZW50OlsiaW50ZW50Iiwicl9hcmVhIiwicl9idWRnZXQiLCJ0aW1lbGluZSIsImNvbnRhY3QiXSwKICBidXllcl9ndWlkZTpbImNvbnRhY3QiXSwgc2VsbGVyX2d1aWRlOlsiY29udGFjdCJdLAogIGludmVzdDpbImludl90eXBlIiwiaW52X2J1ZGdldCIsImNvbnRhY3QiXQp9Owp2YXIgbj0wOwpmdW5jdGlvbiBlc2Mocyl7cmV0dXJuIFN0cmluZyhzPT1udWxsPyIiOnMpLnJlcGxhY2UoL1smPD4iJ10vZyxmdW5jdGlvbihjKXtyZXR1cm57IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCJcIiI6IiZxdW90OyIsIiciOiImIzM5OyJ9W2NdO30pO30KZnVuY3Rpb24gZm10UGhvbmUodil7dmFyIGQ9di5yZXBsYWNlKC9cRC9nLCIiKS5yZXBsYWNlKC9eMSg/PVxkezEwfSkvLCIiKS5zbGljZSgwLDEwKTsKICBpZihkLmxlbmd0aDw0KXJldHVybiBkOyBpZihkLmxlbmd0aDw3KXJldHVybiIoIitkLnNsaWNlKDAsMykrIikgIitkLnNsaWNlKDMpOyByZXR1cm4iKCIrZC5zbGljZSgwLDMpKyIpICIrZC5zbGljZSgzLDYpKyItIitkLnNsaWNlKDYpO30KZnVuY3Rpb24gc3RvcmUoayx2KXt0cnl7aWYodj09PXVuZGVmaW5lZClyZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oayk7bG9jYWxTdG9yYWdlLnNldEl0ZW0oayx2KTt9Y2F0Y2goZSl7cmV0dXJuIG51bGw7fX0KCmZ1bmN0aW9uIG1vdW50KHJvb3Qsb3B0cyl7CiAgb3B0cz1vcHRzfHx7fTsgdmFyIHVpZD0iciIrKCsrbiksIGRhdGE9e30sIGk9MCwgc2VuZGluZz1mYWxzZSwgZml4ZWQ9b3B0cy5pbnRlbnR8fG51bGw7CiAgaWYoZml4ZWQpZGF0YS5pbnRlbnQ9Zml4ZWQ7CiAgZnVuY3Rpb24gZmxvdygpe3JldHVybiBGTE9XU1tkYXRhLmludGVudF18fEZMT1dTLmJ1eTt9CiAgZnVuY3Rpb24gdmFsKHgpe3JldHVybiB0eXBlb2YgeD09PSJmdW5jdGlvbiI/eChkYXRhKTp4O30KICBmdW5jdGlvbiAkKGlkKXtyZXR1cm4gcm9vdC5xdWVyeVNlbGVjdG9yKCIjIit1aWQrIi0iK2lkKTt9CiAgZnVuY3Rpb24gcmVuZGVyKCl7CiAgICB2YXIgZj1mbG93KCksIHM9U1tmW2ldXSwgcGN0PU1hdGgucm91bmQoKGkvZi5sZW5ndGgpKjEwMCksIHNob3dCYWNrPWZpeGVkP2k+MDppPjA7CiAgICB2YXIgaD0nPGRpdiBjbGFzcz0icmxmLWNhcmQiPicrKGYubGVuZ3RoPjE/JzxkaXYgY2xhc3M9InJsZi1wcm9ncmVzcyI+PGRpdiBjbGFzcz0icmxmLWJhciIgc3R5bGU9IndpZHRoOicrcGN0KyclIj48L2Rpdj48L2Rpdj4nOicnKSsnPGRpdiBjbGFzcz0icmxmLWZhZGUiPic7CiAgICBoKz0nPGgyIGNsYXNzPSJybGYtcSI+Jytlc2ModmFsKHMucSkpKyc8L2gyPicrKHMuc3ViPyc8cCBjbGFzcz0icmxmLXN1YiI+Jytlc2ModmFsKHMuc3ViKSkrJzwvcD4nOicnKTsKICAgIGlmKHMudHlwZT09PSJjYXJkcyIpewogICAgICBoKz0nPGRpdiBjbGFzcz0icmxmLW9wdGlvbnMnKyhzLnR3bz8nIHR3byc6JycpKyciPic7CiAgICAgIHMub3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG8pewogICAgICAgIGgrPSc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJsZi1vcHQnKyhkYXRhW3MuZmllbGRdPT09b1swXT8nIHNlbCc6JycpKyhvWzNdPycgJytvWzNdOicnKSsnIiBkYXRhLXY9IicrZXNjKG9bMF0pKyciPicrKG9bMV0/JzxzcGFuIGNsYXNzPSJybGYtaWNvIj4nK29bMV0rJzwvc3Bhbj4nOicnKSsnPHNwYW4+Jytlc2Mob1syXXx8b1swXSkrJzwvc3Bhbj48L2J1dHRvbj4nOwogICAgICB9KTsKICAgICAgaCs9JzwvZGl2Pic7CiAgICB9IGVsc2UgaWYocy50eXBlPT09InRleHQiKXsKICAgICAgaCs9JzxpbnB1dCBjbGFzcz0icmxmLWluIiBpZD0iJyt1aWQrJy10IiB0eXBlPSJ0ZXh0IiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IicrZXNjKHMucGxhY2Vob2xkZXIpKyciIHZhbHVlPSInK2VzYyhkYXRhW3MuZmllbGRdfHwiIikrJyI+PGRpdiBjbGFzcz0icmxmLWVyciIgaWQ9IicrdWlkKyctZSI+PC9kaXY+JzsKICAgICAgaCs9JzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icmxmLWJ0biIgaWQ9IicrdWlkKyctbmV4dCI+Q29udGludWUg4oaSPC9idXR0b24+JzsKICAgIH0gZWxzZSB7CiAgICAgIGgrPSc8bGFiZWwgY2xhc3M9InJsZi1sYmwiIGZvcj0iJyt1aWQrJy1uIj5GdWxsIG5hbWU8L2xhYmVsPjxpbnB1dCBjbGFzcz0icmxmLWluIiBpZD0iJyt1aWQrJy1uIiB0eXBlPSJ0ZXh0IiBhdXRvY29tcGxldGU9Im5hbWUiIHZhbHVlPSInK2VzYyhkYXRhLm5hbWV8fCIiKSsnIj4nOwogICAgICBoKz0nPGxhYmVsIGNsYXNzPSJybGYtbGJsIiBmb3I9IicrdWlkKyctcCI+TW9iaWxlIHBob25lPC9sYWJlbD48aW5wdXQgY2xhc3M9InJsZi1pbiIgaWQ9IicrdWlkKyctcCIgdHlwZT0idGVsIiBpbnB1dG1vZGU9InRlbCIgYXV0b2NvbXBsZXRlPSJ0ZWwiIHBsYWNlaG9sZGVyPSIoNTU1KSA1NTUtNTU1NSIgdmFsdWU9IicrZXNjKGRhdGEucGhvbmV8fCIiKSsnIj4nOwogICAgICBoKz0nPGxhYmVsIGNsYXNzPSJybGYtbGJsIiBmb3I9IicrdWlkKyctbSI+RW1haWw8L2xhYmVsPjxpbnB1dCBjbGFzcz0icmxmLWluIiBpZD0iJyt1aWQrJy1tIiB0eXBlPSJlbWFpbCIgaW5wdXRtb2RlPSJlbWFpbCIgYXV0b2NvbXBsZXRlPSJlbWFpbCIgdmFsdWU9IicrZXNjKGRhdGEuZW1haWx8fCIiKSsnIj4nOwogICAgICBoKz0nPGRpdiBjbGFzcz0icmxmLWhwIj48bGFiZWw+V2Vic2l0ZTxpbnB1dCBpZD0iJyt1aWQrJy1ocCIgdHlwZT0idGV4dCIgdGFiaW5kZXg9Ii0xIiBhdXRvY29tcGxldGU9Im9mZiI+PC9sYWJlbD48L2Rpdj4nOwogICAgICBoKz0nPGxhYmVsIGNsYXNzPSJybGYtY29uc2VudCI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iJyt1aWQrJy1jIicrKGRhdGEuc21zX2NvbnNlbnQ/JyBjaGVja2VkJzonJykrJz48c3Bhbj5CeSBjaGVja2luZyB0aGlzIGJveCwgSSBhZ3JlZSB0byByZWNlaXZlIHRleHQgbWVzc2FnZXMgZnJvbSAnK2VzYyhDRkcuYnJhbmQpKycgYWJvdXQgbXkgcmVhbCBlc3RhdGUgaW5xdWlyeSBhdCB0aGUgbnVtYmVyIHByb3ZpZGVkLiBNc2cgJmFtcDsgZGF0YSByYXRlcyBtYXkgYXBwbHkuIE1zZyBmcmVxdWVuY3kgdmFyaWVzLiBSZXBseSBTVE9QIHRvIG9wdCBvdXQsIEhFTFAgZm9yIGhlbHAuIENvbnNlbnQgaXMgbm90IGEgY29uZGl0aW9uIG9mIHB1cmNoYXNlLiA8YSBocmVmPSInK2VzYyhDRkcucHJpdmFjeVVybCkrJyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPlByaXZhY3kgUG9saWN5PC9hPi48L3NwYW4+PC9sYWJlbD4nOwogICAgICB2YXIgY3RhPWRhdGEuaW50ZW50PT09InZhbHVlIj8iR2V0IG15IGhvbWUgdmFsdWUg4oaSIjovZ3VpZGUvLnRlc3QoZGF0YS5pbnRlbnQpPyJHZXQgbXkgZnJlZSBndWlkZSDihpIiOmRhdGEuaW50ZW50PT09ImludmVzdCI/IlNlbmQgbWUgZGVhbHMg4oaSIjoiQ29ubmVjdCB3aXRoIG1lIOKGkiI7CiAgICAgIGgrPSc8ZGl2IGNsYXNzPSJybGYtZXJyIiBpZD0iJyt1aWQrJy1lIj48L2Rpdj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJsZi1idG4iIGlkPSInK3VpZCsnLW5leHQiPicrY3RhKyc8L2J1dHRvbj4nOwogICAgICBoKz0nPGRpdiBjbGFzcz0icmxmLXRydXN0Ij48c3Bhbj7wn5SSIFlvdXIgaW5mbyBzdGF5cyBwcml2YXRlPC9zcGFuPjxzcGFuPuKtkCA1LjAgb24gR29vZ2xlPC9zcGFuPjwvZGl2Pic7CiAgICB9CiAgICBoKz0nPC9kaXY+JysoZi5sZW5ndGg+MT8nPGRpdiBjbGFzcz0icmxmLW5hdiI+Jysoc2hvd0JhY2s/JzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icmxmLWJhY2siIGlkPSInK3VpZCsnLWJhY2siPuKGkCBCYWNrPC9idXR0b24+JzonPHNwYW4+PC9zcGFuPicpKyc8c3BhbiBjbGFzcz0icmxmLXN0ZXAtY291bnQiPlN0ZXAgJysoaSsxKSsnIG9mICcrZi5sZW5ndGgrJzwvc3Bhbj48L2Rpdj4nOicnKSsnPC9kaXY+JzsKICAgIHJvb3QuaW5uZXJIVE1MPWg7IGJpbmQocyk7CiAgfQogIGZ1bmN0aW9uIGJpbmQocyl7CiAgICB2YXIgYmFjaz0kKCJiYWNrIik7IGlmKGJhY2spYmFjay5vbmNsaWNrPWZ1bmN0aW9uKCl7aS0tO3JlbmRlcigpO307CiAgICBpZihzLnR5cGU9PT0iY2FyZHMiKXsKICAgICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChyb290LnF1ZXJ5U2VsZWN0b3JBbGwoIi5ybGYtb3B0IiksZnVuY3Rpb24oYil7CiAgICAgICAgYi5vbmNsaWNrPWZ1bmN0aW9uKCl7ZGF0YVtzLmZpZWxkXT1iLmdldEF0dHJpYnV0ZSgiZGF0YS12Iik7Yi5jbGFzc0xpc3QuYWRkKCJzZWwiKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aSsrO3JlbmRlcigpO30sMTgwKTt9OwogICAgICB9KTsKICAgIH0gZWxzZSBpZihzLnR5cGU9PT0idGV4dCIpewogICAgICB2YXIgdD0kKCJ0IiksZ289ZnVuY3Rpb24oKXt2YXIgdj10LnZhbHVlLnRyaW0oKTsKICAgICAgICBpZih2Lmxlbmd0aDwocy5taW58fDEpKXt0LmNsYXNzTGlzdC5hZGQoImJhZCIpOyQoImUiKS50ZXh0Q29udGVudD1zLmVycjtyZXR1cm47fQogICAgICAgIGRhdGFbcy5maWVsZF09djtpKys7cmVuZGVyKCk7fTsKICAgICAgJCgibmV4dCIpLm9uY2xpY2s9Z287CiAgICAgIHQub25rZXlkb3duPWZ1bmN0aW9uKGUpe2lmKGUua2V5PT09IkVudGVyIil7ZS5wcmV2ZW50RGVmYXVsdCgpO2dvKCk7fX07CiAgICB9IGVsc2UgewogICAgICB2YXIgcD0kKCJwIik7IHAub25pbnB1dD1mdW5jdGlvbigpe3AudmFsdWU9Zm10UGhvbmUocC52YWx1ZSk7fTsKICAgICAgJCgibmV4dCIpLm9uY2xpY2s9c3VibWl0OwogICAgfQogIH0KICBmdW5jdGlvbiBzdWJtaXQoKXsKICAgIGlmKHNlbmRpbmcpcmV0dXJuOwogICAgdmFyIG5tPSQoIm4iKSxwPSQoInAiKSxtPSQoIm0iKSxlPSQoImUiKTsKICAgIFtubSxwLG1dLmZvckVhY2goZnVuY3Rpb24oeCl7eC5jbGFzc0xpc3QucmVtb3ZlKCJiYWQiKTt9KTsKICAgIGRhdGEubmFtZT1ubS52YWx1ZS50cmltKCk7IGRhdGEucGhvbmU9cC52YWx1ZS50cmltKCk7IGRhdGEuZW1haWw9bS52YWx1ZS50cmltKCk7CiAgICBkYXRhLnNtc19jb25zZW50PSQoImMiKS5jaGVja2VkOwogICAgdmFyIGVycnM9W107CiAgICBpZihkYXRhLm5hbWUubGVuZ3RoPDIpe25tLmNsYXNzTGlzdC5hZGQoImJhZCIpO2VycnMucHVzaCgieW91ciBuYW1lIik7fQogICAgaWYoZGF0YS5waG9uZS5yZXBsYWNlKC9cRC9nLCIiKS5yZXBsYWNlKC9eMSg/PVxkezEwfSkvLCIiKS5sZW5ndGghPT0xMCl7cC5jbGFzc0xpc3QuYWRkKCJiYWQiKTtlcnJzLnB1c2goImEgMTAtZGlnaXQgbW9iaWxlIG51bWJlciIpO30KICAgIGlmKCEvXlteXHNAXStAW15cc0BdK1wuW15cc0BdezIsfSQvLnRlc3QoZGF0YS5lbWFpbCkpe20uY2xhc3NMaXN0LmFkZCgiYmFkIik7ZXJycy5wdXNoKCJhIHZhbGlkIGVtYWlsIik7fQogICAgaWYoZXJycy5sZW5ndGgpe2UudGV4dENvbnRlbnQ9IlBsZWFzZSBlbnRlciAiK2VycnMuam9pbigiLCAiKSsiLiI7cmV0dXJuO30KICAgIGUudGV4dENvbnRlbnQ9IiI7CiAgICB2YXIgcT1uZXcgVVJMU2VhcmNoUGFyYW1zKGxvY2F0aW9uLnNlYXJjaCk7CiAgICB2YXIgcGF5bG9hZD1PYmplY3QuYXNzaWduKHt9LGRhdGEsewogICAgICB3ZWJzaXRlOiQoImhwIikudmFsdWUsIGZvcm06b3B0cy5uYW1lfHwibWFpbiIsCiAgICAgIHBhZ2VfdXJsOmxvY2F0aW9uLmhyZWYsIHJlZmVycmVyOmRvY3VtZW50LnJlZmVycmVyLAogICAgICB1dG1fc291cmNlOnEuZ2V0KCJ1dG1fc291cmNlIil8fCIiLCB1dG1fbWVkaXVtOnEuZ2V0KCJ1dG1fbWVkaXVtIil8fCIiLCB1dG1fY2FtcGFpZ246cS5nZXQoInV0bV9jYW1wYWlnbiIpfHwiIiwKICAgICAgc3VibWl0dGVkX2F0Om5ldyBEYXRlKCkudG9JU09TdHJpbmcoKQogICAgfSk7CiAgICB2YXIgYnRuPSQoIm5leHQiKTsgc2VuZGluZz10cnVlOyBidG4uZGlzYWJsZWQ9dHJ1ZTsgYnRuLnRleHRDb250ZW50PSJTZW5kaW5n4oCmIjsKICAgIGZldGNoKENGRy5lbmRwb2ludCx7bWV0aG9kOiJQT1NUIixtb2RlOiJuby1jb3JzIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04In0sYm9keTpKU09OLnN0cmluZ2lmeShwYXlsb2FkKX0pCiAgICAgIC50aGVuKGRvbmUpCiAgICAgIC5jYXRjaChmdW5jdGlvbigpe3NlbmRpbmc9ZmFsc2U7YnRuLmRpc2FibGVkPWZhbHNlO2J0bi50ZXh0Q29udGVudD0iVHJ5IGFnYWluIOKGkiI7ZS50ZXh0Q29udGVudD0iQ29ubmVjdGlvbiBwcm9ibGVtLiBQbGVhc2UgY2hlY2sgeW91ciBpbnRlcm5ldCBhbmQgdHJ5IGFnYWluLiI7fSk7CiAgfQogIGZ1bmN0aW9uIGRvbmUoKXsKICAgIHZhciBmaXJzdD1lc2MoKGRhdGEubmFtZXx8IiIpLnNwbGl0KCIgIilbMF0pOwogICAgaWYob3B0cy51bmxvY2spe3N0b3JlKCJybGZfIitvcHRzLnVubG9jaywiMSIpOyB1bmxvY2sodHJ1ZSk7IHJldHVybjt9CiAgICB2YXIgbXNnPWRhdGEuaW50ZW50PT09InZhbHVlIj8iSSdtIHByZXBhcmluZyB5b3VyIGN1c3RvbSBob21lIHZhbHVlIHJlcG9ydCBhbmQgd2lsbCB0ZXh0IHlvdSBzaG9ydGx5LiI6CiAgICAgICAgICAgIGRhdGEuaW50ZW50PT09ImJ1eSI/IkknbGwgdGV4dCB5b3Ugc2hvcnRseSB0byBsZWFybiB3aGF0IHlvdSdyZSBsb29raW5nIGZvciBhbmQgc3RhcnQgc2VuZGluZyBtYXRjaGluZyBob21lcy4iOgogICAgICAgICAgICBkYXRhLmludGVudD09PSJyZW50Ij8iSSdsbCB0ZXh0IHlvdSBzaG9ydGx5IHdpdGggcmVudGFscyB0aGF0IGZpdCB3aGF0IHlvdSdyZSBsb29raW5nIGZvci4iOgogICAgICAgICAgICBkYXRhLmludGVudD09PSJpbnZlc3QiPyJZb3UncmUgb24gdGhlIGxpc3QuIEknbGwgdGV4dCB5b3Ugb2ZmLW1hcmtldCBkZWFscyBhcyBzb29uIGFzIHRoZXkgY29tZSB1cC4iOgogICAgICAgICAgICAiSSdsbCB0ZXh0IHlvdSBzaG9ydGx5IHRvIHRhbGsgdGhyb3VnaCB5b3VyIHBsYW5zLiI7CiAgICBpZighZGF0YS5zbXNfY29uc2VudCltc2c9bXNnLnJlcGxhY2UoInRleHQiLCJyZWFjaCBvdXQgdG8iKTsKICAgIHJvb3QuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJybGYtY2FyZCI+PGRpdiBjbGFzcz0icmxmLWRvbmUgcmxmLWZhZGUiPjxkaXYgY2xhc3M9InJsZi1jaGVjayI+4pyTPC9kaXY+PGgyIGNsYXNzPSJybGYtcSI+WW91XCdyZSBhbGwgc2V0LCAnK2ZpcnN0KychPC9oMj48cCBjbGFzcz0icmxmLXN1YiI+Jyttc2crJzwvcD4nKwogICAgICAnPGEgY2xhc3M9InJsZi1idG4gcmxmLWJ0bjIiIGhyZWY9InRlbDonK0NGRy5waG9uZSsnIj5QcmVmZXIgdG8gdGFsayBub3c/IENhbGwgKDkxNCkgMzU5LTE0MTU8L2E+PC9kaXY+PC9kaXY+JzsKICAgIGlmKHdpbmRvdy5ndGFnKXRyeXtndGFnKCJldmVudCIsImdlbmVyYXRlX2xlYWQiLHtsZWFkX3R5cGU6ZGF0YS5pbnRlbnR9KTt9Y2F0Y2goXyl7fQogICAgaWYod2luZG93LmZicSl0cnl7ZmJxKCJ0cmFjayIsIkxlYWQiLHtjb250ZW50X2NhdGVnb3J5OmRhdGEuaW50ZW50fSk7fWNhdGNoKF8pe30KICB9CiAgZnVuY3Rpb24gdW5sb2NrKGp1c3ROb3cpewogICAgdmFyIGc9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3B0cy5ndWlkZUlkKTsgaWYoIWcpcmV0dXJuOwogICAgZy5oaWRkZW49ZmFsc2U7CiAgICByb290LmlubmVySFRNTD0nPGRpdiBjbGFzcz0icmxmLWNhcmQgcmxmLWRvbmUiPjxkaXYgY2xhc3M9InJsZi1jaGVjayI+4pyTPC9kaXY+PGgyIGNsYXNzPSJybGYtcSI+JysoanVzdE5vdz8iWW91ciBndWlkZSBpcyB1bmxvY2tlZCEiOiJXZWxjb21lIGJhY2shIikrJzwvaDI+PHAgY2xhc3M9InJsZi1zdWIiPicrKGp1c3ROb3c/IlNjcm9sbCBkb3duIHRvIHJlYWQgaXQuIEkndmUgYWxzbyB0ZXh0ZWQgeW91IGEgbGluay4iOiJZb3VyIGd1aWRlIGlzIGJlbG93LiIpKyc8L3A+PC9kaXY+JzsKICAgIGlmKGp1c3ROb3cpc2V0VGltZW91dChmdW5jdGlvbigpe2cuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJzdGFydCJ9KTt9LDQwMCk7CiAgfQogIGlmKG9wdHMudW5sb2NrJiZzdG9yZSgicmxmXyIrb3B0cy51bmxvY2spPT09IjEiKXt1bmxvY2soZmFsc2UpO31lbHNle3JlbmRlcigpO30KICByZXR1cm4ge3NldEludGVudDpmdW5jdGlvbih2KXtkYXRhPXtpbnRlbnQ6dn07aT0xO3JlbmRlcigpO3Jvb3Quc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJzdGFydCJ9KTt9fTsKfQoKZnVuY3Rpb24gc3RpY2t5QmFyKCl7CiAgaWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImpyLWJhciIpKXJldHVybjsKICB2YXIgY3NzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CiAgY3NzLnRleHRDb250ZW50PSIjanItYmFye3Bvc2l0aW9uOmZpeGVkO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3otaW5kZXg6OTk5OTtkaXNwbGF5Om5vbmU7Z2FwOjhweDtwYWRkaW5nOjEwcHggMTJweCBjYWxjKDEwcHggKyBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkpO2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuOTYpO2JveC1zaGFkb3c6MCAtNHB4IDIwcHggcmdiYSgwLDAsMCwuMTIpO2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmfSIrCiAgICAiI2pyLWJhciBhe2ZsZXg6MTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjZweDt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjE1cHg7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTJweCA2cHg7Ym9yZGVyOjJweCBzb2xpZCAjMDA3MWUzO2NvbG9yOiMwMDcxZTM7YmFja2dyb3VuZDojZmZmfSIrCiAgICAiI2pyLWJhciBhLmpyLW1haW57ZmxleDoxLjY7YmFja2dyb3VuZDojMDA3MWUzO2NvbG9yOiNmZmZ9IisKICAgICJAbWVkaWEgKG1heC13aWR0aDo3MzZweCl7I2pyLWJhcntkaXNwbGF5OmZsZXh9Ym9keXtwYWRkaW5nLWJvdHRvbTo3NnB4IWltcG9ydGFudH19IjsKICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGNzcyk7CiAgdmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7IGIuaWQ9ImpyLWJhciI7CiAgYi5pbm5lckhUTUw9JzxhIGhyZWY9InRlbDonK0NGRy5waG9uZSsnIiBhcmlhLWxhYmVsPSJDYWxsIEplcnJpbiI+8J+TniBDYWxsPC9hPjxhIGhyZWY9InNtczonK0NGRy5waG9uZSsnIiBhcmlhLWxhYmVsPSJUZXh0IEplcnJpbiI+8J+SrCBUZXh0PC9hPjxhIGNsYXNzPSJqci1tYWluIiBocmVmPSIjaG9tZSIgaWQ9ImpyLWJhci1nbyI+R2V0IFN0YXJ0ZWQg4oaSPC9hPic7CiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChiKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgianItYmFyLWdvIikub25jbGljaz1mdW5jdGlvbihldil7CiAgICB2YXIgaD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmxmLWhlcm8iKTsKICAgIGlmKGgmJmgub2Zmc2V0UGFyZW50KXtldi5wcmV2ZW50RGVmYXVsdCgpO2guc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJzdGFydCJ9KTt9CiAgICBlbHNle3NldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgeD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmxmLWhlcm8iKTtpZih4KXguc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJzdGFydCJ9KTt9LDcwMCk7fQogIH07Cn0KCmlmKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmxmLWNzcycpKXt2YXIgc3Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtzdC5pZD0ncmxmLWNzcyc7c3QudGV4dENvbnRlbnQ9Ii5ybGYtbW91bnR7LS1ybGYtYnJhbmQ6IzAwNzFlMzstLXJsZi1icmFuZC1kYXJrOiMwMDViYjg7LS1ybGYtYWNjZW50OiNlZWY1ZmQ7LS1ybGYtdGV4dDojMWQxZDFmOy0tcmxmLW11dGVkOiM2ZTZlNzM7LS1ybGYtYm9yZGVyOiNlM2UzZTg7LS1ybGYtYmc6I2ZmZmZmZjstLXJsZi1lcnJvcjojYzAzOTJiOyBmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCxcIlNlZ29lIFVJXCIsUm9ib3RvLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2NvbG9yOnZhcigtLXJsZi10ZXh0KTttYXgtd2lkdGg6NTYwcHg7bWFyZ2luOjAgYXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3h9IC5ybGYtbW91bnQgKntib3gtc2l6aW5nOmJvcmRlci1ib3h9IC5ybGYtbW91bnQgLnJsZi1jYXJke2JhY2tncm91bmQ6dmFyKC0tcmxmLWJnKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLXJsZi1ib3JkZXIpO2JvcmRlci1yYWRpdXM6MThweDtwYWRkaW5nOjI4cHggMjJweCAyMnB4O2JveC1zaGFkb3c6MCA4cHggMzBweCByZ2JhKDAsMCwwLC4wOCl9IC5ybGYtbW91bnQgLnJsZi1wcm9ncmVzc3toZWlnaHQ6NnB4O2JhY2tncm91bmQ6dmFyKC0tcmxmLWFjY2VudCk7Ym9yZGVyLXJhZGl1czo5OXB4O292ZXJmbG93OmhpZGRlbjttYXJnaW4tYm90dG9tOjIycHh9IC5ybGYtbW91bnQgLnJsZi1iYXJ7aGVpZ2h0OjEwMCU7d2lkdGg6MDtiYWNrZ3JvdW5kOnZhcigtLXJsZi1icmFuZCk7Ym9yZGVyLXJhZGl1czo5OXB4O3RyYW5zaXRpb246d2lkdGggLjM1cyBlYXNlfSAucmxmLW1vdW50IC5ybGYtcXtmb250LXNpemU6MjNweDtsaW5lLWhlaWdodDoxLjI1O2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW46MCAwIDZweH0gLnJsZi1tb3VudCAucmxmLXN1Yntmb250LXNpemU6MTVweDtjb2xvcjp2YXIoLS1ybGYtbXV0ZWQpO21hcmdpbjowIDAgMjBweH0gLnJsZi1tb3VudCAucmxmLW9wdGlvbnN7ZGlzcGxheTpncmlkO2dhcDoxMHB4fSAucmxmLW1vdW50IC5ybGYtb3B0aW9ucy50d297Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnJ9IC5ybGYtbW91bnQgLnJsZi1vcHR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTJweDt3aWR0aDoxMDAlO3RleHQtYWxpZ246bGVmdDtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLXJsZi10ZXh0KTtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ybGYtYm9yZGVyKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoxNXB4IDE2cHg7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1cyxiYWNrZ3JvdW5kIC4xNXMsdHJhbnNmb3JtIC4xc30gLnJsZi1tb3VudCAucmxmLW9wdGlvbnMudHdvIC5ybGYtb3B0LndpZGV7Z3JpZC1jb2x1bW46MSAvIC0xfSAucmxmLW1vdW50IC5ybGYtb3B0aW9ucy50d28gLnJsZi1vcHR7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2p1c3RpZnktY29udGVudDpjZW50ZXI7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzoxOHB4IDEwcHg7Z2FwOjZweH0gLnJsZi1tb3VudCAucmxmLW9wdDpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tcmxmLWJyYW5kKX0gLnJsZi1tb3VudCAucmxmLW9wdDphY3RpdmV7dHJhbnNmb3JtOnNjYWxlKC45OCl9IC5ybGYtbW91bnQgLnJsZi1vcHQuc2Vse2JvcmRlci1jb2xvcjp2YXIoLS1ybGYtYnJhbmQpO2JhY2tncm91bmQ6dmFyKC0tcmxmLWFjY2VudCl9IC5ybGYtbW91bnQgLnJsZi1pY297Zm9udC1zaXplOjI2cHg7bGluZS1oZWlnaHQ6MX0gLnJsZi1tb3VudCBsYWJlbC5ybGYtbGJse2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NjAwO21hcmdpbjoxNHB4IDAgNnB4fSAucmxmLW1vdW50IGlucHV0LnJsZi1pbnt3aWR0aDoxMDAlO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTZweDtwYWRkaW5nOjE0cHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ybGYtYm9yZGVyKTtib3JkZXItcmFkaXVzOjEycHg7YmFja2dyb3VuZDojZmZmO2NvbG9yOnZhcigtLXJsZi10ZXh0KTtvdXRsaW5lOm5vbmU7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1c30gLnJsZi1tb3VudCBpbnB1dC5ybGYtaW46Zm9jdXN7Ym9yZGVyLWNvbG9yOnZhcigtLXJsZi1icmFuZCl9IC5ybGYtbW91bnQgaW5wdXQucmxmLWluLmJhZHtib3JkZXItY29sb3I6dmFyKC0tcmxmLWVycm9yKX0gLnJsZi1tb3VudCAucmxmLWVycntjb2xvcjp2YXIoLS1ybGYtZXJyb3IpO2ZvbnQtc2l6ZToxM3B4O21hcmdpbi10b3A6NnB4O21pbi1oZWlnaHQ6MTZweH0gLnJsZi1tb3VudCAucmxmLWJ0bntkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7bWFyZ2luLXRvcDoxOHB4O2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTdweDtmb250LXdlaWdodDo3MDA7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLXJsZi1icmFuZCk7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MTZweDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjE1c30gLnJsZi1tb3VudCAucmxmLWJ0bjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLXJsZi1icmFuZC1kYXJrKX0gLnJsZi1tb3VudCAucmxmLWJ0bltkaXNhYmxlZF17b3BhY2l0eTouNjtjdXJzb3I6d2FpdH0gLnJsZi1tb3VudCAucmxmLW5hdntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi10b3A6MTZweDttaW4taGVpZ2h0OjIycHh9IC5ybGYtbW91bnQgLnJsZi1iYWNre2JhY2tncm91bmQ6bm9uZTtib3JkZXI6MDtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE0cHg7Y29sb3I6dmFyKC0tcmxmLW11dGVkKTtjdXJzb3I6cG9pbnRlcjtwYWRkaW5nOjRweCAwfSAucmxmLW1vdW50IC5ybGYtYmFjazpob3Zlcntjb2xvcjp2YXIoLS1ybGYtdGV4dCl9IC5ybGYtbW91bnQgLnJsZi1zdGVwLWNvdW50e2ZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXJsZi1tdXRlZCl9IC5ybGYtbW91bnQgLnJsZi1jb25zZW50e2Rpc3BsYXk6ZmxleDtnYXA6MTBweDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O21hcmdpbi10b3A6MTZweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjQ1O2NvbG9yOnZhcigtLXJsZi1tdXRlZCl9IC5ybGYtbW91bnQgLnJsZi1jb25zZW50IGlucHV0e21hcmdpbi10b3A6MnB4O3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7ZmxleDowIDAgMThweDthY2NlbnQtY29sb3I6dmFyKC0tcmxmLWJyYW5kKX0gLnJsZi1tb3VudCAucmxmLWNvbnNlbnQgYXtjb2xvcjp2YXIoLS1ybGYtbXV0ZWQpfSAucmxmLW1vdW50IC5ybGYtdHJ1c3R7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjE2cHg7ZmxleC13cmFwOndyYXA7bWFyZ2luLXRvcDoxNHB4O2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXJsZi1tdXRlZCl9IC5ybGYtbW91bnQgLnJsZi1ocHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi05OTk5cHg7d2lkdGg6MXB4O2hlaWdodDoxcHg7b3ZlcmZsb3c6aGlkZGVufSAucmxmLW1vdW50IC5ybGYtZG9uZXt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjEwcHggMH0gLnJsZi1tb3VudCAucmxmLWNoZWNre3dpZHRoOjY0cHg7aGVpZ2h0OjY0cHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDp2YXIoLS1ybGYtYWNjZW50KTtjb2xvcjp2YXIoLS1ybGYtYnJhbmQpO2ZvbnQtc2l6ZTozNHB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW46MCBhdXRvIDE2cHh9IC5ybGYtbW91bnQgLnJsZi1mYWRle2FuaW1hdGlvbjpybGZJbiAuM3MgZWFzZX0gQGtleWZyYW1lcyBybGZJbntmcm9te29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSg4cHgpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZX19IEBtZWRpYSAobWF4LXdpZHRoOjQyMHB4KXsucmxmLW1vdW50IC5ybGYtY2FyZHtwYWRkaW5nOjIycHggMTZweCAxOHB4fS5ybGYtbW91bnQgLnJsZi1xe2ZvbnQtc2l6ZToyMXB4fX0gLnJsZi1tb3VudCAucmxmLWJ0bjJ7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMwMDcxZTM7Ym9yZGVyOjJweCBzb2xpZCAjMDA3MWUzO3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtc2l6ZToxNXB4fSAucmxmLW1vdW50IC5ybGYtYnRuMjpob3ZlcntiYWNrZ3JvdW5kOiNlZWY1ZmR9IC5ybGYtbW91bnR7c2Nyb2xsLW1hcmdpbi10b3A6MTZweH0iO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3QpO30KZnVuY3Rpb24gbGF5b3V0KCl7CiAgdmFyIGhvbWU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvbWUtc2VjdGlvbiIpOwogIHZhciBoZXJvPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJqci1oZXJvIik7IAogIGlmKGhvbWUmJmhlcm8pe3ZhciBjPWhlcm8uY2xvc2VzdCgiLmVtYmVkLWNvbXBvbmVudCIpfHxoZXJvOyBpZihob21lLmZpcnN0RWxlbWVudENoaWxkIT09Yylob21lLmluc2VydEJlZm9yZShjLGhvbWUuZmlyc3RFbGVtZW50Q2hpbGQpO30KICB2YXIgcmV2PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJqci1yZXZpZXdzIiksIGNvbnRhY3Q9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5lcjAxIik7CiAgaWYocmV2JiZjb250YWN0JiZjb250YWN0LnBhcmVudE5vZGUpe3ZhciByPXJldi5jbG9zZXN0KCIuZW1iZWQtY29tcG9uZW50Iil8fHJldjsgaWYoci5uZXh0RWxlbWVudFNpYmxpbmchPT1jb250YWN0KWNvbnRhY3QucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocixjb250YWN0KTt9CiAgW1siY29udGFpbmVyMDMiLCIjYnV5ZXJzZ3VpZGUiXSxbImNvbnRhaW5lcjA1IiwiI3NlbGxlcnNndWlkZSJdLFsiY29udGFpbmVyMDYiLCIjaW52ZXN0bWVudHMiXV0uZm9yRWFjaChmdW5jdGlvbihwKXsKICAgIHZhciBib3g9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocFswXSk7IGlmKCFib3gpcmV0dXJuOwogICAgYm94LnF1ZXJ5U2VsZWN0b3JBbGwoJ2FbaHJlZj0iI2Zvcm0iXScpLmZvckVhY2goZnVuY3Rpb24oYSl7YS5zZXRBdHRyaWJ1dGUoImhyZWYiLHBbMV0pO30pOwogIH0pOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiNob21lLXNlY3Rpb24gLnRleHQtY29tcG9uZW50IikuZm9yRWFjaChmdW5jdGlvbih0KXsKICAgIGlmKC9TQUxFU01BTi9pLnRlc3QodC50ZXh0Q29udGVudCkmJnQuY2hpbGRyZW4ubGVuZ3RoPT09MCl0LnRleHRDb250ZW50PXQudGV4dENvbnRlbnQucmVwbGFjZSgvU0FMRVNNQU4vaSxmdW5jdGlvbihtKXtyZXR1cm4gbT09PW0udG9VcHBlckNhc2UoKT8iU0FMRVNQRVJTT04iOiJTYWxlc3BlcnNvbiI7fSk7CiAgfSk7Cn0KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKGV2KXsKICB2YXIgYT1ldi50YXJnZXQuY2xvc2VzdCYmZXYudGFyZ2V0LmNsb3Nlc3QoIltkYXRhLXJsZi1wcmVdIik7IGlmKCFhKXJldHVybjsKICB0cnl7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgicmxmX3ByZSIsYS5nZXRBdHRyaWJ1dGUoImRhdGEtcmxmLXByZSIpKTt9Y2F0Y2goXyl7fQogIHZhciBoPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJybGYtaGVybyIpOwogIGlmKGgmJmgub2Zmc2V0UGFyZW50JiZ3aW5kb3cuUkxGLmhlcm8pe2V2LnByZXZlbnREZWZhdWx0KCk7d2luZG93LlJMRi5oZXJvLnNldEludGVudChhLmdldEF0dHJpYnV0ZSgiZGF0YS1ybGYtcHJlIikpO3RyeXtzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCJybGZfcHJlIik7fWNhdGNoKF8pe319Cn0sdHJ1ZSk7CndpbmRvdy5STEY9e21vdW50Om1vdW50LHN0aWNreUJhcjpzdGlja3lCYXIsbGF5b3V0OmxheW91dH07Cn0KZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnJsZi1tb3VudDpub3QoW2RhdGEtcmVhZHldKSIpLmZvckVhY2goZnVuY3Rpb24oZWwpewogIGVsLnNldEF0dHJpYnV0ZSgiZGF0YS1yZWFkeSIsIjEiKTsKICB2YXIgaW5zdD13aW5kb3cuUkxGLm1vdW50KGVsLHtpbnRlbnQ6ZWwuZ2V0QXR0cmlidXRlKCJkYXRhLWludGVudCIpfHxudWxsLG5hbWU6ZWwuZ2V0QXR0cmlidXRlKCJkYXRhLW5hbWUiKXx8Im1haW4iLHVubG9jazplbC5nZXRBdHRyaWJ1dGUoImRhdGEtdW5sb2NrIil8fG51bGwsZ3VpZGVJZDplbC5nZXRBdHRyaWJ1dGUoImRhdGEtZ3VpZGUiKXx8bnVsbH0pOwogIGlmKGVsLmlkPT09InJsZi1oZXJvIil7d2luZG93LlJMRi5oZXJvPWluc3Q7CiAgICB2YXIgcHJlPW51bGw7dHJ5e3ByZT1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCJybGZfcHJlIik7c2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgicmxmX3ByZSIpO31jYXRjaChfKXt9CiAgICBpZihwcmUpc2V0VGltZW91dChmdW5jdGlvbigpe2luc3Quc2V0SW50ZW50KHByZSk7fSwzMDApO30KfSk7CndpbmRvdy5STEYuc3RpY2t5QmFyKCk7CndpbmRvdy5STEYubGF5b3V0KCk7c2V0VGltZW91dCh3aW5kb3cuUkxGLmxheW91dCw4MDApOwp9KSgpOwo=")));(new Function(s))();})();(function(){if(window.__jrLeo)return;window.__jrLeo=1;var L="https://heyleo.com/jerrinrealty";function add(){document.querySelectorAll(".rlf-mount .rlf-done").forEach(function(d){if(d.querySelector(".jr-leo"))return;var p=document.createElement("p");p.className="rlf-sub jr-leo";p.style.margin="18px 0 0";p.textContent="While you wait, try my AI home search. Just describe your dream home:";var a=document.createElement("a");a.className="rlf-btn rlf-btn2";a.href=L;a.target="_blank";a.rel="noopener";a.textContent="Search homes with AI →";a.style.marginTop="8px";p.appendChild(a);d.appendChild(p);});}new MutationObserver(add).observe(document.body,{childList:true,subtree:true});add();})();(function(){var H=decodeURIComponent(escape(atob("PGZvb3RlciBjbGFzcz0ianItZm9vdCIgaWQ9ImpyLWZvb3QiPgo8c3R5bGU+CiN0ZXh0MzcsI2xpbmtzMDMsI2xpbmtzMDQsI3RleHQwMiwjbGlua3MwMiwjbGlua3MwMSwjaWNvbnMwMXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fQouanItZm9vdHtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwiU2Vnb2UgVUkiLFJvYm90byxJbnRlcixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjttYXgtd2lkdGg6NzIwcHg7bWFyZ2luOjMycHggYXV0byAwO3BhZGRpbmc6MjJweCAxNnB4IDI2cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2UzZTNlODt0ZXh0LWFsaWduOmxlZnQ7Y29sb3I6IzZlNmU3Mztmb250LXNpemU6MTIuNXB4O2xpbmUtaGVpZ2h0OjEuNn0KLmpyLWZvb3QgYntjb2xvcjojMWQxZDFmfQouanItZm9vdCBwe21hcmdpbjowIDAgMTBweH0KLmpyLWZvb3QgYXtjb2xvcjojNDg0ODRmO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9Ci5qci1mb290IC5qci1saW5rc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjZweCAxNHB4O21hcmdpbjowIDAgMTJweH0KLmpyLWZvb3QgLmpyLWVob3tkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMWQxZDFmfQo8L3N0eWxlPgo8cD48Yj5KZXJyaW4gSm9objwvYj4sIExpY2Vuc2VkIFJlYWwgRXN0YXRlIFNhbGVzcGVyc29uLCBOWSBMaWMuICMxMDQwMTM5MDQxMyAmbWlkZG90OyBKZXJyaW4gUmVhbHR5LCBhZmZpbGlhdGVkIHdpdGggPGI+UmVhbCBCcm9rZXIgTlkgTExDPC9iPiwgTGljZW5zZWQgUmVhbCBFc3RhdGUgQnJva2VyICZtaWRkb3Q7IDQ3NyBNYWRpc29uIEF2ZS4sIFN0ZS4gNjQ4LCBOZXcgWW9yaywgTlkgMTAwMjIgJm1pZGRvdDsgQnJva2VyIG9mZmljZSA8YSBocmVmPSJ0ZWw6KzE4NTU0NTAwNDQyIj4oODU1KSA0NTAtMDQ0MjwvYT4gJm1pZGRvdDsgQWdlbnQgPGEgaHJlZj0idGVsOisxOTE0MzU5MTQxNSI+KDkxNCkgMzU5LTE0MTU8L2E+ICZtaWRkb3Q7IDxhIGhyZWY9Im1haWx0bzpqb2huQGplcnJpbnJlYWx0eS5jb20iPmpvaG5AamVycmlucmVhbHR5LmNvbTwvYT48L3A+CjxwIGNsYXNzPSJqci1laG8iPiYjODk2MjsgRXF1YWwgSG91c2luZyBPcHBvcnR1bml0eTwvcD4KPHA+V2Ugc3VwcG9ydCB0aGUgRmFpciBIb3VzaW5nIEFjdCBhbmQgdGhlIE5ldyBZb3JrIFN0YXRlIEh1bWFuIFJpZ2h0cyBMYXcgYW5kIGRvIG5vdCBkaXNjcmltaW5hdGUgb24gYW55IHByb3RlY3RlZCBiYXNpcy4gQWxsIGxhd2Z1bCBzb3VyY2VzIG9mIGluY29tZSwgaW5jbHVkaW5nIGhvdXNpbmcgdm91Y2hlcnMsIGFyZSBhY2NlcHRlZC48L3A+CjxkaXYgY2xhc3M9ImpyLWxpbmtzIj4KPGEgaHJlZj0iaHR0cHM6Ly9vbmVyZWFsLmNvbS8iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj5SZWFsIEJyb2tlciBOWSBMTEM8L2E+CjxhIGhyZWY9Imh0dHBzOi8vYm9sdC1jdXN0b20tYXNzZXRzLnRoZXJlYWxicm9rZXJhZ2UuY29tL25ldy15b3JrLWNvbXBsaWFuY2Uvc3RhbmRhcmRpemVkLW9wZXJhdGluZy1wcm9jZWR1cmUtbm90YXJpemVkLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPk5ZIFN0YW5kYXJkIE9wZXJhdGluZyBQcm9jZWR1cmVzPC9hPgo8YSBocmVmPSJodHRwczovL2Rvcy5ueS5nb3Yvc3lzdGVtL2ZpbGVzL2RvY3VtZW50cy8yMDIxLzA4L2ZhaXJob3VzaW5nbm90aWNlLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPk5ZIEZhaXIgSG91c2luZyBOb3RpY2U8L2E+CjxhIGhyZWY9Imh0dHBzOi8vbnlzYXIuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIyLzA1L1JNQV9Vbmtub3duLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPlJlYXNvbmFibGUgQWNjb21tb2RhdGlvbnMgTm90aWNlPC9hPgo8YSBocmVmPSIjcHJpdmFjeXBvbGljeSI+UHJpdmFjeSBQb2xpY3k8L2E+CjxhIGhyZWY9IiN0ZXJtIj5UZXJtcyAmYW1wOyBDb25kaXRpb25zPC9hPgo8YSBocmVmPSIjdGVybSI+QWNjZXNzaWJpbGl0eTwvYT4KPGEgaHJlZj0iaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9qZXJyaW5yZWFsdHkiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj5JbnN0YWdyYW08L2E+CjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9zaGFyZS8xSmdTTlFTNE5KLyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPkZhY2Vib29rPC9hPgo8L2Rpdj4KPHA+TGlzdGluZyBpbmZvcm1hdGlvbiBpcyBkZWVtZWQgcmVsaWFibGUgYnV0IG5vdCBndWFyYW50ZWVkLiBSZXZpZXdzIGFyZSBmcm9tIEdvb2dsZSBhbmQgWmlsbG93OyBzb21lIGFyZSBzaG9ydGVuZWQuIFNhbGVzIGRhdGEgZnJvbSBIb21lcy5jb20uIE5vdGhpbmcgb24gdGhpcyBzaXRlIGlzIGxlZ2FsLCB0YXggb3IgZmluYW5jaWFsIGFkdmljZS4gJmNvcHk7IDIwMjYgSmVycmluIFJlYWx0eS48L3A+CjwvZm9vdGVyPgo=")));function f(){document.querySelectorAll("section[id$='-section']").forEach(function(s){if(s.querySelector(".jr-foot"))return;var d=document.createElement("div");d.innerHTML=H;s.appendChild(d);});}f();setTimeout(f,1200);})();

Seller Guideline

Valuable Tips and Strategies

Maximize your property's value with expert tips and insights.


Track record

Recent sales

6Closed sales
$4.4MTotal sales volume
$728.5KAverage sale price
$530K–$820KPrice range
  • Ossining, NYSold · Represented the buyer$665,000
  • Valley Cottage, NYSold · Represented the buyer$810,000
  • Congers, NYSold · Represented the buyer$820,000
  • Elmsford, NYSold · Represented the buyer$530,000
  • New City, NYSold · Represented the buyer$786,000
  • Valley Cottage, NYSold · Represented the buyer$760,000

Source: Homes.com agent profile. View on Homes.com →

Client reviews

Real clients. Real results.

5.0
★★★★★
5-star rated on Google & Zillow
“We found our dream home within just two months” — after a 10-year search and 10+ other realtors.Varghese G., buyer
★★★★★
“From our first meeting, it was clear that Jerrin is deeply knowledgeable about the real estate market… Jerrin was incredibly responsive, always answering my questions promptly… from finding listings to negotiating the best deal.”
Anto K. · Bought in Valley Cottage · Zillow review
★★★★★
“After appointing Jerrin as our realtor, we found our dream home within just two months… we had been searching for 10 years and had worked with more than 10 different realtors. Jerrin did what the others couldn’t—he listened, understood our needs, and truly tailored the listings to what we were looking for.”
Varghese G. · Bought in Ossining · Google review
★★★★★
“He truly went above and beyond to help us secure the best possible offer and made sure we felt confident every step of the way. His responsiveness really stood out—he was always quick to answer questions, provide updates, and guide us through the process.”
Alena S. · Buyer · Google review
★★★★★
“He guided us through our first house purchase, ensuring we had all the necessary knowledge… I will highly recommend Jerrin John if you’re a first-time buyer. His ability to simplify the real estate process and provide constant support made all the difference.”
Noria D. · First-time buyer, New City · Google review
★★★★★
“Jerrin was professional and very helpful. Working with him was a great experience… Highly recommend.”
Rami B. · Client · Google review
★★★★★
“Jerrin is a great guy, understanding and helpful. Found us a good deal in the area.”
Sam B. · Client · Google review
Read all reviews on Google → See reviews on Zillow → Start my home search →
(function(){function f(){if(innerWidth>736)return;document.querySelectorAll("body *").forEach(function(e){var s=getComputedStyle(e);if(s.position==="fixed"&&e.id!=="jr-bar"&&!e.closest("#jr-bar")&&80>parseInt(s.bottom)&&e.getBoundingClientRect().height>0){e.style.setProperty("bottom","92px","important");}});}[1500,4000,8000].forEach(function(t){setTimeout(f,t);});})();

Free tools

What's your home worth, and what would you pay each month?

Quick estimates from local sales data. For an exact number, I'll prepare a free comparative market analysis.

Home value estimator

A rough range from recent sales in your town.

Estimated value

—

Get my exact home value

This is an automated estimate, not an appraisal or a comparative market analysis. It doesn't account for your home's specific features or condition and shouldn't be used for lending, tax or legal purposes.

Mortgage calculator

Your full monthly payment, including NY taxes.

$
%
%
$
$
$

Estimated monthly payment

—

  • Principal & interest$0
  • Property taxes$0
  • Home insurance$0
  • Mortgage insurance (PMI)$0
  • HOA / common charges$0
Get pre-approved

Default rate is the Freddie Mac 30-year average for Oct 15, 2026. Taxes start at an estimated 2.3% of price; enter the listing's actual tax bill. PMI is estimated at 0.5% a year under 20% down. Estimates only, not a loan offer.

Invest Like a Pro

Investment Opportunities

Discover high-performing investment properties with personalized guidance and insights into New York’s real estate market.

Real estate market is one of the most complex in the world, driven by diverse neighborhoods, varying price points, and a unique mix of residential and commercial opportunities.

Let’s get started

Vision into Reality!

Whether you’re buying your dream home, selling a property, or making an investment, I’m here to guide you through every step of the process with professionalism and care.

All listing information is deemed reliable but is not guaranteed and is subject to errors, omissions, changes in price, prior sale, or withdrawal without notice. No representation is made as to the accuracy of any description. All measurements and square footages are approximate, and all descriptive information should be independently verified. No financial or legal advice is provided. Jerrin John, New York Real Estate Licensed #10401390413, DBA Jerrin Realty under Real Broker NY LLC. Jerrin and its affiliates support the Fair Housing Act and Equal Opportunity Act. Jerrin and its affiliates do not discriminate against voucher holders pursuant to applicable law, and all lawful sources of income are accepted.

Access Exclusive Featured Listings

Get early access to exclusive, pre-market, and off-market homes.

🏡 Case Study: How I Helped Two Families Find Their Dream HomesAs a Realtor, my job is more than just showing homes — it’s about solving problems, negotiating hard, and guiding clients to the right decision. Here’s how I helped two different families find success in a tough market.🔑 Client 1: From Frustrated Search to Brand-New 2025 HomeChallenge:
This client had been searching for months, but every home they saw was either outdated or needed too many repairs. They were ready to give up on their homeownership dream.
Solution:
I dug deep into the market and builder inventory and secured a brand-new construction home (2025 build) that met every requirement — 4 bedrooms, 3 full bathrooms, in a great location. I worked closely with the builder to secure it at asking price and made sure my client could qualify with just 5% down.
Result:
✅ Brand-new construction
✅ Closed at $760,000
✅ Only 5% down — no issues with financing
✅ No repairs, no delays — move-in ready
Now, they get to move into a home that’s truly move-in ready and built for the future.

Client Review

Jerrin John Zillow Real Estate Review

Get in Touch

🔑 Client 2: Searching for 3 Years — Closed in 3 WeeksChallenge:
This client had been looking on their own and working with other agents for years — with no luck. They needed a home that fit their needs and a way to buy with a low down payment.
My Strategy:
After our strategy session, I found them a fully renovated home that matched everything they wanted. I negotiated back and forth with the seller to get favorable terms, and coordinated with the lender to make it work with just 5% down.
Result:
✅ Dream home secured in less than 3 weeks
✅ Seller agreed to terms that worked for buyer
✅ Closed smoothly with only 5% down
💡 The Takeaway:You don’t need 20% down to buy a great home. What you need is the right agent who understands how to negotiate, work with lenders, and get the deal closed.

Jerrin John Real Estate Client holding house Key after closing

Tired of losing homes to other buyers?I give my clients first access to homes not listed online. Join my Buyer List — it’s free.

After completing the form, you will be redirected to Jerrin’s featured listings for further browsing. Please note that submitting this form does not create any contractual or fiduciary relationship between you and Jerrin Realty or Real Broker NY LLC.Acknowledge and agree that Jerrin John DBA Jerrin Realty, operating under Real Broker NY LLC, will use your contact details to respond to your inquiry and provide you with relevant real estate information. Your information will be handled in accordance with applicable privacy laws and policies.

(function(){var H=decodeURIComponent(escape(atob("PGZvb3RlciBjbGFzcz0ianItZm9vdCIgaWQ9ImpyLWZvb3QiPgo8c3R5bGU+CiN0ZXh0MzcsI2xpbmtzMDMsI2xpbmtzMDQsI3RleHQwMiwjbGlua3MwMiwjbGlua3MwMSwjaWNvbnMwMXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fQouanItZm9vdHtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwiU2Vnb2UgVUkiLFJvYm90byxJbnRlcixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjttYXgtd2lkdGg6NzIwcHg7bWFyZ2luOjMycHggYXV0byAwO3BhZGRpbmc6MjJweCAxNnB4IDI2cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2UzZTNlODt0ZXh0LWFsaWduOmxlZnQ7Y29sb3I6IzZlNmU3Mztmb250LXNpemU6MTIuNXB4O2xpbmUtaGVpZ2h0OjEuNn0KLmpyLWZvb3QgYntjb2xvcjojMWQxZDFmfQouanItZm9vdCBwe21hcmdpbjowIDAgMTBweH0KLmpyLWZvb3QgYXtjb2xvcjojNDg0ODRmO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9Ci5qci1mb290IC5qci1saW5rc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjZweCAxNHB4O21hcmdpbjowIDAgMTJweH0KLmpyLWZvb3QgLmpyLWVob3tkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMWQxZDFmfQo8L3N0eWxlPgo8cD48Yj5KZXJyaW4gSm9objwvYj4sIExpY2Vuc2VkIFJlYWwgRXN0YXRlIFNhbGVzcGVyc29uLCBOWSBMaWMuICMxMDQwMTM5MDQxMyAmbWlkZG90OyBKZXJyaW4gUmVhbHR5LCBhZmZpbGlhdGVkIHdpdGggPGI+UmVhbCBCcm9rZXIgTlkgTExDPC9iPiwgTGljZW5zZWQgUmVhbCBFc3RhdGUgQnJva2VyICZtaWRkb3Q7IDQ3NyBNYWRpc29uIEF2ZS4sIFN0ZS4gNjQ4LCBOZXcgWW9yaywgTlkgMTAwMjIgJm1pZGRvdDsgQnJva2VyIG9mZmljZSA8YSBocmVmPSJ0ZWw6KzE4NTU0NTAwNDQyIj4oODU1KSA0NTAtMDQ0MjwvYT4gJm1pZGRvdDsgQWdlbnQgPGEgaHJlZj0idGVsOisxOTE0MzU5MTQxNSI+KDkxNCkgMzU5LTE0MTU8L2E+ICZtaWRkb3Q7IDxhIGhyZWY9Im1haWx0bzpqb2huQGplcnJpbnJlYWx0eS5jb20iPmpvaG5AamVycmlucmVhbHR5LmNvbTwvYT48L3A+CjxwIGNsYXNzPSJqci1laG8iPiYjODk2MjsgRXF1YWwgSG91c2luZyBPcHBvcnR1bml0eTwvcD4KPHA+V2Ugc3VwcG9ydCB0aGUgRmFpciBIb3VzaW5nIEFjdCBhbmQgdGhlIE5ldyBZb3JrIFN0YXRlIEh1bWFuIFJpZ2h0cyBMYXcgYW5kIGRvIG5vdCBkaXNjcmltaW5hdGUgb24gYW55IHByb3RlY3RlZCBiYXNpcy4gQWxsIGxhd2Z1bCBzb3VyY2VzIG9mIGluY29tZSwgaW5jbHVkaW5nIGhvdXNpbmcgdm91Y2hlcnMsIGFyZSBhY2NlcHRlZC48L3A+CjxkaXYgY2xhc3M9ImpyLWxpbmtzIj4KPGEgaHJlZj0iaHR0cHM6Ly9vbmVyZWFsLmNvbS8iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj5SZWFsIEJyb2tlciBOWSBMTEM8L2E+CjxhIGhyZWY9Imh0dHBzOi8vYm9sdC1jdXN0b20tYXNzZXRzLnRoZXJlYWxicm9rZXJhZ2UuY29tL25ldy15b3JrLWNvbXBsaWFuY2Uvc3RhbmRhcmRpemVkLW9wZXJhdGluZy1wcm9jZWR1cmUtbm90YXJpemVkLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPk5ZIFN0YW5kYXJkIE9wZXJhdGluZyBQcm9jZWR1cmVzPC9hPgo8YSBocmVmPSJodHRwczovL2Rvcy5ueS5nb3Yvc3lzdGVtL2ZpbGVzL2RvY3VtZW50cy8yMDIxLzA4L2ZhaXJob3VzaW5nbm90aWNlLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPk5ZIEZhaXIgSG91c2luZyBOb3RpY2U8L2E+CjxhIGhyZWY9Imh0dHBzOi8vbnlzYXIuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIyLzA1L1JNQV9Vbmtub3duLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPlJlYXNvbmFibGUgQWNjb21tb2RhdGlvbnMgTm90aWNlPC9hPgo8YSBocmVmPSIjcHJpdmFjeXBvbGljeSI+UHJpdmFjeSBQb2xpY3k8L2E+CjxhIGhyZWY9IiN0ZXJtIj5UZXJtcyAmYW1wOyBDb25kaXRpb25zPC9hPgo8YSBocmVmPSIjdGVybSI+QWNjZXNzaWJpbGl0eTwvYT4KPGEgaHJlZj0iaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9qZXJyaW5yZWFsdHkiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj5JbnN0YWdyYW08L2E+CjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9zaGFyZS8xSmdTTlFTNE5KLyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPkZhY2Vib29rPC9hPgo8L2Rpdj4KPHA+TGlzdGluZyBpbmZvcm1hdGlvbiBpcyBkZWVtZWQgcmVsaWFibGUgYnV0IG5vdCBndWFyYW50ZWVkLiBSZXZpZXdzIGFyZSBmcm9tIEdvb2dsZSBhbmQgWmlsbG93OyBzb21lIGFyZSBzaG9ydGVuZWQuIFNhbGVzIGRhdGEgZnJvbSBIb21lcy5jb20uIE5vdGhpbmcgb24gdGhpcyBzaXRlIGlzIGxlZ2FsLCB0YXggb3IgZmluYW5jaWFsIGFkdmljZS4gJmNvcHk7IDIwMjYgSmVycmluIFJlYWx0eS48L3A+CjwvZm9vdGVyPgo=")));function f(){document.querySelectorAll("section[id$='-section']").forEach(function(s){if(s.querySelector(".jr-foot"))return;var d=document.createElement("div");d.innerHTML=H;s.appendChild(d);});}f();setTimeout(f,1200);})();

Get Buyers Guide

By submitting your information through this form, you consent to receive the requested real estate PDF guide via email from Jerrin John DBA Jerrin Realty, operating under Real Broker NY LLC. Your contact information will be used solely for the purpose of delivering the guide and may also be used to provide additional real estate information or updates.Your information will be handled in accordance with applicable privacy laws and policies. Submitting your information does not create any contractual or fiduciary relationship with Jerrin Realty or Real Broker NY LLC.

Free guide

The Westchester & Rockland Home Buyer’s Guide

Everything I walk my buyers through — the steps, the real costs, and the New York-specific surprises — in one 5-minute read.

  • ✓ The 10 steps from pre-approval to keys
  • ✓ What you’ll really pay at closing in New York
  • ✓ How to win in a competitive market without overpaying
(function(){var s=decodeURIComponent(escape(atob("KGZ1bmN0aW9uKCl7CmlmKCF3aW5kb3cuUkxGKXsKdmFyIENGRz17CiAgZW5kcG9pbnQ6Imh0dHBzOi8vc2NyaXB0Lmdvb2dsZS5jb20vbWFjcm9zL3MvQUtmeWNid3EzOGJSRVNDQjkzQ1AzODlZRG5qVjMxU0l6Y1M4TjR2STBub204RW9QeTNCeHcwY3ZRUjk0Z3N0RTl1Q1A3MjFXL2V4ZWMiLAogIGJyYW5kOiJKZXJyaW4gUmVhbHR5IiwKICBwcml2YWN5VXJsOiJodHRwczovL2plcnJpbnJlYWx0eS5jb20vI3ByaXZhY3lwb2xpY3kiLAogIHBob25lOiIrMTkxNDM1OTE0MTUiCn07CnZhciBTPXsKICBpbnRlbnQ6e3R5cGU6ImNhcmRzIixmaWVsZDoiaW50ZW50Iix0d286dHJ1ZSxxOiJIb3cgY2FuIEkgaGVscCB5b3UgdG9kYXk/IixzdWI6IkFuc3dlciBhIGZldyBxdWljayBxdWVzdGlvbnMuIFRha2VzIGFib3V0IDYwIHNlY29uZHMuIiwKICAgIG9wdGlvbnM6W1siYnV5Iiwi8J+PoSIsIkJ1eSBhIGhvbWUiXSxbInNlbGwiLCLwn5KwIiwiU2VsbCBteSBob21lIl0sWyJyZW50Iiwi8J+UkSIsIlJlbnQgYSBob21lIl0sWyJib3RoIiwi8J+UhCIsIkJ1eSAmIHNlbGwiXSxbInZhbHVlIiwi8J+TiiIsIldoYXQncyBteSBob21lIHdvcnRoPyIsIndpZGUiXV19LAogIHJfYXJlYTp7dHlwZToidGV4dCIsZmllbGQ6InJlbnRfYXJlYSIscToiV2hlcmUgd291bGQgeW91IGxpa2UgdG8gcmVudD8iLHN1YjoiQSBjaXR5LCBuZWlnaGJvcmhvb2Qgb3IgWklQIGNvZGUgaXMgcGVyZmVjdC4iLHBsYWNlaG9sZGVyOiJlLmcuIFlvbmtlcnMgb3IgMTA3MDEiLG1pbjoyLGVycjoiUGxlYXNlIHRlbGwgbWUgd2hlcmUgeW91J3JlIGxvb2tpbmcuIn0sCiAgcl9idWRnZXQ6e3R5cGU6ImNhcmRzIixmaWVsZDoicmVudF9idWRnZXQiLHE6IldoYXQncyB5b3VyIG1vbnRobHkgcmVudCBidWRnZXQ/IiwKICAgIG9wdGlvbnM6W1siVW5kZXIgJDIsMDAwIiwiIiwiIl0sWyIkMiwwMDAg4oCTICQzLDAwMCIsIiIsIiJdLFsiJDMsMDAwIOKAkyAkNCwwMDAiLCIiLCIiXSxbIiQ0LDAwMCsiLCIiLCIiXV19LAogIHNfYWRkcmVzczp7dHlwZToidGV4dCIsZmllbGQ6InByb3BlcnR5X2FkZHJlc3MiLHE6ZnVuY3Rpb24oZCl7cmV0dXJuIGQuaW50ZW50PT09InZhbHVlIj8iV2hhdCdzIHRoZSBhZGRyZXNzIG9mIHRoZSBob21lPyI6IldoYXQncyB0aGUgYWRkcmVzcyBvZiB0aGUgaG9tZSB5b3UncmUgc2VsbGluZz8iO30sCiAgICBzdWI6IlVzZWQgb25seSB0byBwcmVwYXJlIHlvdXIgY3VzdG9tIHByaWNpbmcgZXN0aW1hdGUuIixwbGFjZWhvbGRlcjoiMTIzIE1haW4gU3QsIENpdHksIFpJUCIsbWluOjYsZXJyOiJQbGVhc2UgZW50ZXIgdGhlIHByb3BlcnR5IGFkZHJlc3MuIn0sCiAgc190eXBlOnt0eXBlOiJjYXJkcyIsZmllbGQ6InByb3BlcnR5X3R5cGUiLHE6IldoYXQgdHlwZSBvZiBwcm9wZXJ0eSBpcyBpdD8iLAogICAgb3B0aW9uczpbWyJTaW5nbGUtZmFtaWx5Iiwi8J+PoCIsIlNpbmdsZS1mYW1pbHkgaG9tZSJdLFsiQ29uZG8vVG93bmhvdXNlIiwi8J+PoiIsIkNvbmRvIG9yIHRvd25ob3VzZSJdLFsiTXVsdGktZmFtaWx5Iiwi8J+PmO+4jyIsIk11bHRpLWZhbWlseSJdLFsiTGFuZC9PdGhlciIsIvCfjLMiLCJMYW5kIG9yIG90aGVyIl1dfSwKICBiX2FyZWE6e3R5cGU6InRleHQiLGZpZWxkOiJidXlfYXJlYSIscToiV2hlcmUgd291bGQgeW91IGxpa2UgdG8gYnV5PyIsc3ViOiJBIGNpdHksIG5laWdoYm9yaG9vZCBvciBaSVAgY29kZSBpcyBwZXJmZWN0LiIscGxhY2Vob2xkZXI6ImUuZy4gV2hpdGUgUGxhaW5zIG9yIDEwNjAxIixtaW46MixlcnI6IlBsZWFzZSB0ZWxsIG1lIHdoZXJlIHlvdSdyZSBsb29raW5nLiJ9LAogIGJfcHJpY2U6e3R5cGU6ImNhcmRzIixmaWVsZDoicHJpY2VfcmFuZ2UiLHE6IldoYXQgcHJpY2UgcmFuZ2UgZmVlbHMgY29tZm9ydGFibGU/IiwKICAgIG9wdGlvbnM6W1siVW5kZXIgJDMwMEsiLCIiLCIiXSxbIiQzMDBLIOKAkyAkNTAwSyIsIiIsIiJdLFsiJDUwMEsg4oCTICQ3NTBLIiwiIiwiIl0sWyIkNzUwSyDigJMgJDFNIiwiIiwiIl0sWyIkMU0rIiwiIiwiIl1dfSwKICBiX2ZpbmFuY2U6e3R5cGU6ImNhcmRzIixmaWVsZDoiZmluYW5jaW5nIixxOiJIb3cgYXJlIHlvdSBwbGFubmluZyB0byBwYXk/IiwKICAgIG9wdGlvbnM6W1siUHJlLWFwcHJvdmVkIiwi4pyFIiwiSSdtIHByZS1hcHByb3ZlZCJdLFsiQ2FzaCIsIvCfkrUiLCJQYXlpbmcgY2FzaCJdLFsiTm90IHlldCIsIuKPsyIsIk5vdCBwcmUtYXBwcm92ZWQgeWV0Il0sWyJOZWVkIGxlbmRlciIsIvCfpJ0iLCJJJ2QgbGlrZSBhIGxlbmRlciByZWNvbW1lbmRhdGlvbiJdXX0sCiAgdGltZWxpbmU6e3R5cGU6ImNhcmRzIixmaWVsZDoidGltZWxpbmUiLHE6IldoZW4gYXJlIHlvdSBob3BpbmcgdG8gbWFrZSBhIG1vdmU/IiwKICAgIG9wdGlvbnM6W1siQVNBUCIsIuKaoSIsIkFzIHNvb24gYXMgcG9zc2libGUiXSxbIjEtMyBtb250aHMiLCLwn5OFIiwiMeKAkzMgbW9udGhzIl0sWyIzLTYgbW9udGhzIiwi8J+Xk++4jyIsIjPigJM2IG1vbnRocyJdLFsiNisgbW9udGhzIiwi8J+MsSIsIjYrIG1vbnRocyJdLFsiSnVzdCBleHBsb3JpbmciLCLwn5GAIiwiSnVzdCBleHBsb3JpbmciXV19LAogIGludl90eXBlOnt0eXBlOiJjYXJkcyIsZmllbGQ6ImludmVzdF90eXBlIixxOiJXaGF0IGtpbmQgb2YgZGVhbHMgaW50ZXJlc3QgeW91PyIsc3ViOiJJJ2xsIHRleHQgeW91IG9mZi1tYXJrZXQgb3Bwb3J0dW5pdGllcyB0aGF0IG1hdGNoLiIsCiAgICBvcHRpb25zOltbIk11bHRpLWZhbWlseSIsIvCfj5jvuI8iLCJNdWx0aS1mYW1pbHkgKDLigJM0IHVuaXRzKSJdLFsiU2luZ2xlLWZhbWlseSIsIvCfj6AiLCJTaW5nbGUtZmFtaWx5IC8gZmxpcHMiXSxbIkxhbmQiLCLwn4yzIiwiTGFuZCAvIGRldmVsb3BtZW50Il0sWyJBbnkiLCLwn5K8IiwiU2hvdyBtZSBldmVyeXRoaW5nIl1dfSwKICBpbnZfYnVkZ2V0Ont0eXBlOiJjYXJkcyIsZmllbGQ6InByaWNlX3JhbmdlIixxOiJXaGF0J3MgeW91ciBwdXJjaGFzZSBidWRnZXQ/IiwKICAgIG9wdGlvbnM6W1siVW5kZXIgJDUwMEsiLCIiLCIiXSxbIiQ1MDBLIOKAkyAkMU0iLCIiLCIiXSxbIiQxTSDigJMgJDJNIiwiIiwiIl0sWyIkMk0rIiwiIiwiIl1dfSwKICBjb250YWN0Ont0eXBlOiJjb250YWN0IixxOmZ1bmN0aW9uKGQpewogICAgICByZXR1cm4gZC5pbnRlbnQ9PT0idmFsdWUiPyJMYXN0IHN0ZXAhIFdoZXJlIHNob3VsZCBJIHNlbmQgeW91ciBob21lIHZhbHVlIHJlcG9ydD8iOgogICAgICAgICAgICAgZC5pbnRlbnQ9PT0iYnV5Ij8iTGFzdCBzdGVwISBXaGVyZSBzaG91bGQgSSBzZW5kIG1hdGNoaW5nIGhvbWVzPyI6CiAgICAgICAgICAgICBkLmludGVudD09PSJyZW50Ij8iTGFzdCBzdGVwISBXaGVyZSBzaG91bGQgSSBzZW5kIGF2YWlsYWJsZSByZW50YWxzPyI6CiAgICAgICAgICAgICBkLmludGVudD09PSJidXllcl9ndWlkZSI/IkdldCB0aGUgZnJlZSBXZXN0Y2hlc3RlciAmIFJvY2tsYW5kIEJ1eWVyJ3MgR3VpZGUiOgogICAgICAgICAgICAgZC5pbnRlbnQ9PT0ic2VsbGVyX2d1aWRlIj8iR2V0IHRoZSBmcmVlIFdlc3RjaGVzdGVyICYgUm9ja2xhbmQgU2VsbGVyJ3MgR3VpZGUiOgogICAgICAgICAgICAgZC5pbnRlbnQ9PT0iaW52ZXN0Ij8iTGFzdCBzdGVwISBXaGVyZSBzaG91bGQgSSB0ZXh0IG9mZi1tYXJrZXQgZGVhbHM/IjoKICAgICAgICAgICAgICJMYXN0IHN0ZXAhIEhvdyBjYW4gSSByZWFjaCB5b3U/Ijt9LAogICAgc3ViOmZ1bmN0aW9uKGQpe3JldHVybiAvZ3VpZGUvLnRlc3QoZC5pbnRlbnQpPyJJbnN0YW50IGFjY2VzcyDigJQgcGx1cyBhIHRleHQgbGluayBzbyB5b3UgY2FuIHJlYWQgaXQgYW55dGltZS4iOiJObyBzcGFtLCBldmVyLiBJJ2xsIHBlcnNvbmFsbHkgZm9sbG93IHVwLiI7fX0KfTsKdmFyIEZMT1dTPXsKICBidXk6WyJpbnRlbnQiLCJiX2FyZWEiLCJiX3ByaWNlIiwiYl9maW5hbmNlIiwidGltZWxpbmUiLCJjb250YWN0Il0sCiAgc2VsbDpbImludGVudCIsInNfYWRkcmVzcyIsInNfdHlwZSIsInRpbWVsaW5lIiwiY29udGFjdCJdLAogIGJvdGg6WyJpbnRlbnQiLCJzX2FkZHJlc3MiLCJzX3R5cGUiLCJiX2FyZWEiLCJiX3ByaWNlIiwiYl9maW5hbmNlIiwidGltZWxpbmUiLCJjb250YWN0Il0sCiAgdmFsdWU6WyJpbnRlbnQiLCJzX2FkZHJlc3MiLCJzX3R5cGUiLCJ0aW1lbGluZSIsImNvbnRhY3QiXSwKICByZW50OlsiaW50ZW50Iiwicl9hcmVhIiwicl9idWRnZXQiLCJ0aW1lbGluZSIsImNvbnRhY3QiXSwKICBidXllcl9ndWlkZTpbImNvbnRhY3QiXSwgc2VsbGVyX2d1aWRlOlsiY29udGFjdCJdLAogIGludmVzdDpbImludl90eXBlIiwiaW52X2J1ZGdldCIsImNvbnRhY3QiXQp9Owp2YXIgbj0wOwpmdW5jdGlvbiBlc2Mocyl7cmV0dXJuIFN0cmluZyhzPT1udWxsPyIiOnMpLnJlcGxhY2UoL1smPD4iJ10vZyxmdW5jdGlvbihjKXtyZXR1cm57IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCJcIiI6IiZxdW90OyIsIiciOiImIzM5OyJ9W2NdO30pO30KZnVuY3Rpb24gZm10UGhvbmUodil7dmFyIGQ9di5yZXBsYWNlKC9cRC9nLCIiKS5yZXBsYWNlKC9eMSg/PVxkezEwfSkvLCIiKS5zbGljZSgwLDEwKTsKICBpZihkLmxlbmd0aDw0KXJldHVybiBkOyBpZihkLmxlbmd0aDw3KXJldHVybiIoIitkLnNsaWNlKDAsMykrIikgIitkLnNsaWNlKDMpOyByZXR1cm4iKCIrZC5zbGljZSgwLDMpKyIpICIrZC5zbGljZSgzLDYpKyItIitkLnNsaWNlKDYpO30KZnVuY3Rpb24gc3RvcmUoayx2KXt0cnl7aWYodj09PXVuZGVmaW5lZClyZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oayk7bG9jYWxTdG9yYWdlLnNldEl0ZW0oayx2KTt9Y2F0Y2goZSl7cmV0dXJuIG51bGw7fX0KCmZ1bmN0aW9uIG1vdW50KHJvb3Qsb3B0cyl7CiAgb3B0cz1vcHRzfHx7fTsgdmFyIHVpZD0iciIrKCsrbiksIGRhdGE9e30sIGk9MCwgc2VuZGluZz1mYWxzZSwgZml4ZWQ9b3B0cy5pbnRlbnR8fG51bGw7CiAgaWYoZml4ZWQpZGF0YS5pbnRlbnQ9Zml4ZWQ7CiAgZnVuY3Rpb24gZmxvdygpe3JldHVybiBGTE9XU1tkYXRhLmludGVudF18fEZMT1dTLmJ1eTt9CiAgZnVuY3Rpb24gdmFsKHgpe3JldHVybiB0eXBlb2YgeD09PSJmdW5jdGlvbiI/eChkYXRhKTp4O30KICBmdW5jdGlvbiAkKGlkKXtyZXR1cm4gcm9vdC5xdWVyeVNlbGVjdG9yKCIjIit1aWQrIi0iK2lkKTt9CiAgZnVuY3Rpb24gcmVuZGVyKCl7CiAgICB2YXIgZj1mbG93KCksIHM9U1tmW2ldXSwgcGN0PU1hdGgucm91bmQoKGkvZi5sZW5ndGgpKjEwMCksIHNob3dCYWNrPWZpeGVkP2k+MDppPjA7CiAgICB2YXIgaD0nPGRpdiBjbGFzcz0icmxmLWNhcmQiPicrKGYubGVuZ3RoPjE/JzxkaXYgY2xhc3M9InJsZi1wcm9ncmVzcyI+PGRpdiBjbGFzcz0icmxmLWJhciIgc3R5bGU9IndpZHRoOicrcGN0KyclIj48L2Rpdj48L2Rpdj4nOicnKSsnPGRpdiBjbGFzcz0icmxmLWZhZGUiPic7CiAgICBoKz0nPGgyIGNsYXNzPSJybGYtcSI+Jytlc2ModmFsKHMucSkpKyc8L2gyPicrKHMuc3ViPyc8cCBjbGFzcz0icmxmLXN1YiI+Jytlc2ModmFsKHMuc3ViKSkrJzwvcD4nOicnKTsKICAgIGlmKHMudHlwZT09PSJjYXJkcyIpewogICAgICBoKz0nPGRpdiBjbGFzcz0icmxmLW9wdGlvbnMnKyhzLnR3bz8nIHR3byc6JycpKyciPic7CiAgICAgIHMub3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG8pewogICAgICAgIGgrPSc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJsZi1vcHQnKyhkYXRhW3MuZmllbGRdPT09b1swXT8nIHNlbCc6JycpKyhvWzNdPycgJytvWzNdOicnKSsnIiBkYXRhLXY9IicrZXNjKG9bMF0pKyciPicrKG9bMV0/JzxzcGFuIGNsYXNzPSJybGYtaWNvIj4nK29bMV0rJzwvc3Bhbj4nOicnKSsnPHNwYW4+Jytlc2Mob1syXXx8b1swXSkrJzwvc3Bhbj48L2J1dHRvbj4nOwogICAgICB9KTsKICAgICAgaCs9JzwvZGl2Pic7CiAgICB9IGVsc2UgaWYocy50eXBlPT09InRleHQiKXsKICAgICAgaCs9JzxpbnB1dCBjbGFzcz0icmxmLWluIiBpZD0iJyt1aWQrJy10IiB0eXBlPSJ0ZXh0IiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IicrZXNjKHMucGxhY2Vob2xkZXIpKyciIHZhbHVlPSInK2VzYyhkYXRhW3MuZmllbGRdfHwiIikrJyI+PGRpdiBjbGFzcz0icmxmLWVyciIgaWQ9IicrdWlkKyctZSI+PC9kaXY+JzsKICAgICAgaCs9JzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icmxmLWJ0biIgaWQ9IicrdWlkKyctbmV4dCI+Q29udGludWUg4oaSPC9idXR0b24+JzsKICAgIH0gZWxzZSB7CiAgICAgIGgrPSc8bGFiZWwgY2xhc3M9InJsZi1sYmwiIGZvcj0iJyt1aWQrJy1uIj5GdWxsIG5hbWU8L2xhYmVsPjxpbnB1dCBjbGFzcz0icmxmLWluIiBpZD0iJyt1aWQrJy1uIiB0eXBlPSJ0ZXh0IiBhdXRvY29tcGxldGU9Im5hbWUiIHZhbHVlPSInK2VzYyhkYXRhLm5hbWV8fCIiKSsnIj4nOwogICAgICBoKz0nPGxhYmVsIGNsYXNzPSJybGYtbGJsIiBmb3I9IicrdWlkKyctcCI+TW9iaWxlIHBob25lPC9sYWJlbD48aW5wdXQgY2xhc3M9InJsZi1pbiIgaWQ9IicrdWlkKyctcCIgdHlwZT0idGVsIiBpbnB1dG1vZGU9InRlbCIgYXV0b2NvbXBsZXRlPSJ0ZWwiIHBsYWNlaG9sZGVyPSIoNTU1KSA1NTUtNTU1NSIgdmFsdWU9IicrZXNjKGRhdGEucGhvbmV8fCIiKSsnIj4nOwogICAgICBoKz0nPGxhYmVsIGNsYXNzPSJybGYtbGJsIiBmb3I9IicrdWlkKyctbSI+RW1haWw8L2xhYmVsPjxpbnB1dCBjbGFzcz0icmxmLWluIiBpZD0iJyt1aWQrJy1tIiB0eXBlPSJlbWFpbCIgaW5wdXRtb2RlPSJlbWFpbCIgYXV0b2NvbXBsZXRlPSJlbWFpbCIgdmFsdWU9IicrZXNjKGRhdGEuZW1haWx8fCIiKSsnIj4nOwogICAgICBoKz0nPGRpdiBjbGFzcz0icmxmLWhwIj48bGFiZWw+V2Vic2l0ZTxpbnB1dCBpZD0iJyt1aWQrJy1ocCIgdHlwZT0idGV4dCIgdGFiaW5kZXg9Ii0xIiBhdXRvY29tcGxldGU9Im9mZiI+PC9sYWJlbD48L2Rpdj4nOwogICAgICBoKz0nPGxhYmVsIGNsYXNzPSJybGYtY29uc2VudCI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iJyt1aWQrJy1jIicrKGRhdGEuc21zX2NvbnNlbnQ/JyBjaGVja2VkJzonJykrJz48c3Bhbj5CeSBjaGVja2luZyB0aGlzIGJveCwgSSBhZ3JlZSB0byByZWNlaXZlIHRleHQgbWVzc2FnZXMgZnJvbSAnK2VzYyhDRkcuYnJhbmQpKycgYWJvdXQgbXkgcmVhbCBlc3RhdGUgaW5xdWlyeSBhdCB0aGUgbnVtYmVyIHByb3ZpZGVkLiBNc2cgJmFtcDsgZGF0YSByYXRlcyBtYXkgYXBwbHkuIE1zZyBmcmVxdWVuY3kgdmFyaWVzLiBSZXBseSBTVE9QIHRvIG9wdCBvdXQsIEhFTFAgZm9yIGhlbHAuIENvbnNlbnQgaXMgbm90IGEgY29uZGl0aW9uIG9mIHB1cmNoYXNlLiA8YSBocmVmPSInK2VzYyhDRkcucHJpdmFjeVVybCkrJyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPlByaXZhY3kgUG9saWN5PC9hPi48L3NwYW4+PC9sYWJlbD4nOwogICAgICB2YXIgY3RhPWRhdGEuaW50ZW50PT09InZhbHVlIj8iR2V0IG15IGhvbWUgdmFsdWUg4oaSIjovZ3VpZGUvLnRlc3QoZGF0YS5pbnRlbnQpPyJHZXQgbXkgZnJlZSBndWlkZSDihpIiOmRhdGEuaW50ZW50PT09ImludmVzdCI/IlNlbmQgbWUgZGVhbHMg4oaSIjoiQ29ubmVjdCB3aXRoIG1lIOKGkiI7CiAgICAgIGgrPSc8ZGl2IGNsYXNzPSJybGYtZXJyIiBpZD0iJyt1aWQrJy1lIj48L2Rpdj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJsZi1idG4iIGlkPSInK3VpZCsnLW5leHQiPicrY3RhKyc8L2J1dHRvbj4nOwogICAgICBoKz0nPGRpdiBjbGFzcz0icmxmLXRydXN0Ij48c3Bhbj7wn5SSIFlvdXIgaW5mbyBzdGF5cyBwcml2YXRlPC9zcGFuPjxzcGFuPuKtkCA1LjAgb24gR29vZ2xlPC9zcGFuPjwvZGl2Pic7CiAgICB9CiAgICBoKz0nPC9kaXY+JysoZi5sZW5ndGg+MT8nPGRpdiBjbGFzcz0icmxmLW5hdiI+Jysoc2hvd0JhY2s/JzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icmxmLWJhY2siIGlkPSInK3VpZCsnLWJhY2siPuKGkCBCYWNrPC9idXR0b24+JzonPHNwYW4+PC9zcGFuPicpKyc8c3BhbiBjbGFzcz0icmxmLXN0ZXAtY291bnQiPlN0ZXAgJysoaSsxKSsnIG9mICcrZi5sZW5ndGgrJzwvc3Bhbj48L2Rpdj4nOicnKSsnPC9kaXY+JzsKICAgIHJvb3QuaW5uZXJIVE1MPWg7IGJpbmQocyk7CiAgfQogIGZ1bmN0aW9uIGJpbmQocyl7CiAgICB2YXIgYmFjaz0kKCJiYWNrIik7IGlmKGJhY2spYmFjay5vbmNsaWNrPWZ1bmN0aW9uKCl7aS0tO3JlbmRlcigpO307CiAgICBpZihzLnR5cGU9PT0iY2FyZHMiKXsKICAgICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChyb290LnF1ZXJ5U2VsZWN0b3JBbGwoIi5ybGYtb3B0IiksZnVuY3Rpb24oYil7CiAgICAgICAgYi5vbmNsaWNrPWZ1bmN0aW9uKCl7ZGF0YVtzLmZpZWxkXT1iLmdldEF0dHJpYnV0ZSgiZGF0YS12Iik7Yi5jbGFzc0xpc3QuYWRkKCJzZWwiKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aSsrO3JlbmRlcigpO30sMTgwKTt9OwogICAgICB9KTsKICAgIH0gZWxzZSBpZihzLnR5cGU9PT0idGV4dCIpewogICAgICB2YXIgdD0kKCJ0IiksZ289ZnVuY3Rpb24oKXt2YXIgdj10LnZhbHVlLnRyaW0oKTsKICAgICAgICBpZih2Lmxlbmd0aDwocy5taW58fDEpKXt0LmNsYXNzTGlzdC5hZGQoImJhZCIpOyQoImUiKS50ZXh0Q29udGVudD1zLmVycjtyZXR1cm47fQogICAgICAgIGRhdGFbcy5maWVsZF09djtpKys7cmVuZGVyKCk7fTsKICAgICAgJCgibmV4dCIpLm9uY2xpY2s9Z287CiAgICAgIHQub25rZXlkb3duPWZ1bmN0aW9uKGUpe2lmKGUua2V5PT09IkVudGVyIil7ZS5wcmV2ZW50RGVmYXVsdCgpO2dvKCk7fX07CiAgICB9IGVsc2UgewogICAgICB2YXIgcD0kKCJwIik7IHAub25pbnB1dD1mdW5jdGlvbigpe3AudmFsdWU9Zm10UGhvbmUocC52YWx1ZSk7fTsKICAgICAgJCgibmV4dCIpLm9uY2xpY2s9c3VibWl0OwogICAgfQogIH0KICBmdW5jdGlvbiBzdWJtaXQoKXsKICAgIGlmKHNlbmRpbmcpcmV0dXJuOwogICAgdmFyIG5tPSQoIm4iKSxwPSQoInAiKSxtPSQoIm0iKSxlPSQoImUiKTsKICAgIFtubSxwLG1dLmZvckVhY2goZnVuY3Rpb24oeCl7eC5jbGFzc0xpc3QucmVtb3ZlKCJiYWQiKTt9KTsKICAgIGRhdGEubmFtZT1ubS52YWx1ZS50cmltKCk7IGRhdGEucGhvbmU9cC52YWx1ZS50cmltKCk7IGRhdGEuZW1haWw9bS52YWx1ZS50cmltKCk7CiAgICBkYXRhLnNtc19jb25zZW50PSQoImMiKS5jaGVja2VkOwogICAgdmFyIGVycnM9W107CiAgICBpZihkYXRhLm5hbWUubGVuZ3RoPDIpe25tLmNsYXNzTGlzdC5hZGQoImJhZCIpO2VycnMucHVzaCgieW91ciBuYW1lIik7fQogICAgaWYoZGF0YS5waG9uZS5yZXBsYWNlKC9cRC9nLCIiKS5yZXBsYWNlKC9eMSg/PVxkezEwfSkvLCIiKS5sZW5ndGghPT0xMCl7cC5jbGFzc0xpc3QuYWRkKCJiYWQiKTtlcnJzLnB1c2goImEgMTAtZGlnaXQgbW9iaWxlIG51bWJlciIpO30KICAgIGlmKCEvXlteXHNAXStAW15cc0BdK1wuW15cc0BdezIsfSQvLnRlc3QoZGF0YS5lbWFpbCkpe20uY2xhc3NMaXN0LmFkZCgiYmFkIik7ZXJycy5wdXNoKCJhIHZhbGlkIGVtYWlsIik7fQogICAgaWYoZXJycy5sZW5ndGgpe2UudGV4dENvbnRlbnQ9IlBsZWFzZSBlbnRlciAiK2VycnMuam9pbigiLCAiKSsiLiI7cmV0dXJuO30KICAgIGUudGV4dENvbnRlbnQ9IiI7CiAgICB2YXIgcT1uZXcgVVJMU2VhcmNoUGFyYW1zKGxvY2F0aW9uLnNlYXJjaCk7CiAgICB2YXIgcGF5bG9hZD1PYmplY3QuYXNzaWduKHt9LGRhdGEsewogICAgICB3ZWJzaXRlOiQoImhwIikudmFsdWUsIGZvcm06b3B0cy5uYW1lfHwibWFpbiIsCiAgICAgIHBhZ2VfdXJsOmxvY2F0aW9uLmhyZWYsIHJlZmVycmVyOmRvY3VtZW50LnJlZmVycmVyLAogICAgICB1dG1fc291cmNlOnEuZ2V0KCJ1dG1fc291cmNlIil8fCIiLCB1dG1fbWVkaXVtOnEuZ2V0KCJ1dG1fbWVkaXVtIil8fCIiLCB1dG1fY2FtcGFpZ246cS5nZXQoInV0bV9jYW1wYWlnbiIpfHwiIiwKICAgICAgc3VibWl0dGVkX2F0Om5ldyBEYXRlKCkudG9JU09TdHJpbmcoKQogICAgfSk7CiAgICB2YXIgYnRuPSQoIm5leHQiKTsgc2VuZGluZz10cnVlOyBidG4uZGlzYWJsZWQ9dHJ1ZTsgYnRuLnRleHRDb250ZW50PSJTZW5kaW5n4oCmIjsKICAgIGZldGNoKENGRy5lbmRwb2ludCx7bWV0aG9kOiJQT1NUIixtb2RlOiJuby1jb3JzIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04In0sYm9keTpKU09OLnN0cmluZ2lmeShwYXlsb2FkKX0pCiAgICAgIC50aGVuKGRvbmUpCiAgICAgIC5jYXRjaChmdW5jdGlvbigpe3NlbmRpbmc9ZmFsc2U7YnRuLmRpc2FibGVkPWZhbHNlO2J0bi50ZXh0Q29udGVudD0iVHJ5IGFnYWluIOKGkiI7ZS50ZXh0Q29udGVudD0iQ29ubmVjdGlvbiBwcm9ibGVtLiBQbGVhc2UgY2hlY2sgeW91ciBpbnRlcm5ldCBhbmQgdHJ5IGFnYWluLiI7fSk7CiAgfQogIGZ1bmN0aW9uIGRvbmUoKXsKICAgIHZhciBmaXJzdD1lc2MoKGRhdGEubmFtZXx8IiIpLnNwbGl0KCIgIilbMF0pOwogICAgaWYob3B0cy51bmxvY2spe3N0b3JlKCJybGZfIitvcHRzLnVubG9jaywiMSIpOyB1bmxvY2sodHJ1ZSk7IHJldHVybjt9CiAgICB2YXIgbXNnPWRhdGEuaW50ZW50PT09InZhbHVlIj8iSSdtIHByZXBhcmluZyB5b3VyIGN1c3RvbSBob21lIHZhbHVlIHJlcG9ydCBhbmQgd2lsbCB0ZXh0IHlvdSBzaG9ydGx5LiI6CiAgICAgICAgICAgIGRhdGEuaW50ZW50PT09ImJ1eSI/IkknbGwgdGV4dCB5b3Ugc2hvcnRseSB0byBsZWFybiB3aGF0IHlvdSdyZSBsb29raW5nIGZvciBhbmQgc3RhcnQgc2VuZGluZyBtYXRjaGluZyBob21lcy4iOgogICAgICAgICAgICBkYXRhLmludGVudD09PSJyZW50Ij8iSSdsbCB0ZXh0IHlvdSBzaG9ydGx5IHdpdGggcmVudGFscyB0aGF0IGZpdCB3aGF0IHlvdSdyZSBsb29raW5nIGZvci4iOgogICAgICAgICAgICBkYXRhLmludGVudD09PSJpbnZlc3QiPyJZb3UncmUgb24gdGhlIGxpc3QuIEknbGwgdGV4dCB5b3Ugb2ZmLW1hcmtldCBkZWFscyBhcyBzb29uIGFzIHRoZXkgY29tZSB1cC4iOgogICAgICAgICAgICAiSSdsbCB0ZXh0IHlvdSBzaG9ydGx5IHRvIHRhbGsgdGhyb3VnaCB5b3VyIHBsYW5zLiI7CiAgICBpZighZGF0YS5zbXNfY29uc2VudCltc2c9bXNnLnJlcGxhY2UoInRleHQiLCJyZWFjaCBvdXQgdG8iKTsKICAgIHJvb3QuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJybGYtY2FyZCI+PGRpdiBjbGFzcz0icmxmLWRvbmUgcmxmLWZhZGUiPjxkaXYgY2xhc3M9InJsZi1jaGVjayI+4pyTPC9kaXY+PGgyIGNsYXNzPSJybGYtcSI+WW91XCdyZSBhbGwgc2V0LCAnK2ZpcnN0KychPC9oMj48cCBjbGFzcz0icmxmLXN1YiI+Jyttc2crJzwvcD4nKwogICAgICAnPGEgY2xhc3M9InJsZi1idG4gcmxmLWJ0bjIiIGhyZWY9InRlbDonK0NGRy5waG9uZSsnIj5QcmVmZXIgdG8gdGFsayBub3c/IENhbGwgKDkxNCkgMzU5LTE0MTU8L2E+PC9kaXY+PC9kaXY+JzsKICAgIGlmKHdpbmRvdy5ndGFnKXRyeXtndGFnKCJldmVudCIsImdlbmVyYXRlX2xlYWQiLHtsZWFkX3R5cGU6ZGF0YS5pbnRlbnR9KTt9Y2F0Y2goXyl7fQogICAgaWYod2luZG93LmZicSl0cnl7ZmJxKCJ0cmFjayIsIkxlYWQiLHtjb250ZW50X2NhdGVnb3J5OmRhdGEuaW50ZW50fSk7fWNhdGNoKF8pe30KICB9CiAgZnVuY3Rpb24gdW5sb2NrKGp1c3ROb3cpewogICAgdmFyIGc9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3B0cy5ndWlkZUlkKTsgaWYoIWcpcmV0dXJuOwogICAgZy5oaWRkZW49ZmFsc2U7CiAgICByb290LmlubmVySFRNTD0nPGRpdiBjbGFzcz0icmxmLWNhcmQgcmxmLWRvbmUiPjxkaXYgY2xhc3M9InJsZi1jaGVjayI+4pyTPC9kaXY+PGgyIGNsYXNzPSJybGYtcSI+JysoanVzdE5vdz8iWW91ciBndWlkZSBpcyB1bmxvY2tlZCEiOiJXZWxjb21lIGJhY2shIikrJzwvaDI+PHAgY2xhc3M9InJsZi1zdWIiPicrKGp1c3ROb3c/IlNjcm9sbCBkb3duIHRvIHJlYWQgaXQuIEkndmUgYWxzbyB0ZXh0ZWQgeW91IGEgbGluay4iOiJZb3VyIGd1aWRlIGlzIGJlbG93LiIpKyc8L3A+PC9kaXY+JzsKICAgIGlmKGp1c3ROb3cpc2V0VGltZW91dChmdW5jdGlvbigpe2cuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJzdGFydCJ9KTt9LDQwMCk7CiAgfQogIGlmKG9wdHMudW5sb2NrJiZzdG9yZSgicmxmXyIrb3B0cy51bmxvY2spPT09IjEiKXt1bmxvY2soZmFsc2UpO31lbHNle3JlbmRlcigpO30KICByZXR1cm4ge3NldEludGVudDpmdW5jdGlvbih2KXtkYXRhPXtpbnRlbnQ6dn07aT0xO3JlbmRlcigpO3Jvb3Quc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJzdGFydCJ9KTt9fTsKfQoKZnVuY3Rpb24gc3RpY2t5QmFyKCl7CiAgaWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImpyLWJhciIpKXJldHVybjsKICB2YXIgY3NzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CiAgY3NzLnRleHRDb250ZW50PSIjanItYmFye3Bvc2l0aW9uOmZpeGVkO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3otaW5kZXg6OTk5OTtkaXNwbGF5Om5vbmU7Z2FwOjhweDtwYWRkaW5nOjEwcHggMTJweCBjYWxjKDEwcHggKyBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkpO2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuOTYpO2JveC1zaGFkb3c6MCAtNHB4IDIwcHggcmdiYSgwLDAsMCwuMTIpO2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmfSIrCiAgICAiI2pyLWJhciBhe2ZsZXg6MTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjZweDt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjE1cHg7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTJweCA2cHg7Ym9yZGVyOjJweCBzb2xpZCAjMDA3MWUzO2NvbG9yOiMwMDcxZTM7YmFja2dyb3VuZDojZmZmfSIrCiAgICAiI2pyLWJhciBhLmpyLW1haW57ZmxleDoxLjY7YmFja2dyb3VuZDojMDA3MWUzO2NvbG9yOiNmZmZ9IisKICAgICJAbWVkaWEgKG1heC13aWR0aDo3MzZweCl7I2pyLWJhcntkaXNwbGF5OmZsZXh9Ym9keXtwYWRkaW5nLWJvdHRvbTo3NnB4IWltcG9ydGFudH19IjsKICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGNzcyk7CiAgdmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7IGIuaWQ9ImpyLWJhciI7CiAgYi5pbm5lckhUTUw9JzxhIGhyZWY9InRlbDonK0NGRy5waG9uZSsnIiBhcmlhLWxhYmVsPSJDYWxsIEplcnJpbiI+8J+TniBDYWxsPC9hPjxhIGhyZWY9InNtczonK0NGRy5waG9uZSsnIiBhcmlhLWxhYmVsPSJUZXh0IEplcnJpbiI+8J+SrCBUZXh0PC9hPjxhIGNsYXNzPSJqci1tYWluIiBocmVmPSIjaG9tZSIgaWQ9ImpyLWJhci1nbyI+R2V0IFN0YXJ0ZWQg4oaSPC9hPic7CiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChiKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgianItYmFyLWdvIikub25jbGljaz1mdW5jdGlvbihldil7CiAgICB2YXIgaD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmxmLWhlcm8iKTsKICAgIGlmKGgmJmgub2Zmc2V0UGFyZW50KXtldi5wcmV2ZW50RGVmYXVsdCgpO2guc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJzdGFydCJ9KTt9CiAgICBlbHNle3NldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgeD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmxmLWhlcm8iKTtpZih4KXguc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJzdGFydCJ9KTt9LDcwMCk7fQogIH07Cn0KCmlmKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmxmLWNzcycpKXt2YXIgc3Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtzdC5pZD0ncmxmLWNzcyc7c3QudGV4dENvbnRlbnQ9Ii5ybGYtbW91bnR7LS1ybGYtYnJhbmQ6IzAwNzFlMzstLXJsZi1icmFuZC1kYXJrOiMwMDViYjg7LS1ybGYtYWNjZW50OiNlZWY1ZmQ7LS1ybGYtdGV4dDojMWQxZDFmOy0tcmxmLW11dGVkOiM2ZTZlNzM7LS1ybGYtYm9yZGVyOiNlM2UzZTg7LS1ybGYtYmc6I2ZmZmZmZjstLXJsZi1lcnJvcjojYzAzOTJiOyBmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCxcIlNlZ29lIFVJXCIsUm9ib3RvLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2NvbG9yOnZhcigtLXJsZi10ZXh0KTttYXgtd2lkdGg6NTYwcHg7bWFyZ2luOjAgYXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3h9IC5ybGYtbW91bnQgKntib3gtc2l6aW5nOmJvcmRlci1ib3h9IC5ybGYtbW91bnQgLnJsZi1jYXJke2JhY2tncm91bmQ6dmFyKC0tcmxmLWJnKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLXJsZi1ib3JkZXIpO2JvcmRlci1yYWRpdXM6MThweDtwYWRkaW5nOjI4cHggMjJweCAyMnB4O2JveC1zaGFkb3c6MCA4cHggMzBweCByZ2JhKDAsMCwwLC4wOCl9IC5ybGYtbW91bnQgLnJsZi1wcm9ncmVzc3toZWlnaHQ6NnB4O2JhY2tncm91bmQ6dmFyKC0tcmxmLWFjY2VudCk7Ym9yZGVyLXJhZGl1czo5OXB4O292ZXJmbG93OmhpZGRlbjttYXJnaW4tYm90dG9tOjIycHh9IC5ybGYtbW91bnQgLnJsZi1iYXJ7aGVpZ2h0OjEwMCU7d2lkdGg6MDtiYWNrZ3JvdW5kOnZhcigtLXJsZi1icmFuZCk7Ym9yZGVyLXJhZGl1czo5OXB4O3RyYW5zaXRpb246d2lkdGggLjM1cyBlYXNlfSAucmxmLW1vdW50IC5ybGYtcXtmb250LXNpemU6MjNweDtsaW5lLWhlaWdodDoxLjI1O2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW46MCAwIDZweH0gLnJsZi1tb3VudCAucmxmLXN1Yntmb250LXNpemU6MTVweDtjb2xvcjp2YXIoLS1ybGYtbXV0ZWQpO21hcmdpbjowIDAgMjBweH0gLnJsZi1tb3VudCAucmxmLW9wdGlvbnN7ZGlzcGxheTpncmlkO2dhcDoxMHB4fSAucmxmLW1vdW50IC5ybGYtb3B0aW9ucy50d297Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnJ9IC5ybGYtbW91bnQgLnJsZi1vcHR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTJweDt3aWR0aDoxMDAlO3RleHQtYWxpZ246bGVmdDtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLXJsZi10ZXh0KTtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ybGYtYm9yZGVyKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoxNXB4IDE2cHg7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1cyxiYWNrZ3JvdW5kIC4xNXMsdHJhbnNmb3JtIC4xc30gLnJsZi1tb3VudCAucmxmLW9wdGlvbnMudHdvIC5ybGYtb3B0LndpZGV7Z3JpZC1jb2x1bW46MSAvIC0xfSAucmxmLW1vdW50IC5ybGYtb3B0aW9ucy50d28gLnJsZi1vcHR7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2p1c3RpZnktY29udGVudDpjZW50ZXI7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzoxOHB4IDEwcHg7Z2FwOjZweH0gLnJsZi1tb3VudCAucmxmLW9wdDpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tcmxmLWJyYW5kKX0gLnJsZi1tb3VudCAucmxmLW9wdDphY3RpdmV7dHJhbnNmb3JtOnNjYWxlKC45OCl9IC5ybGYtbW91bnQgLnJsZi1vcHQuc2Vse2JvcmRlci1jb2xvcjp2YXIoLS1ybGYtYnJhbmQpO2JhY2tncm91bmQ6dmFyKC0tcmxmLWFjY2VudCl9IC5ybGYtbW91bnQgLnJsZi1pY297Zm9udC1zaXplOjI2cHg7bGluZS1oZWlnaHQ6MX0gLnJsZi1tb3VudCBsYWJlbC5ybGYtbGJse2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NjAwO21hcmdpbjoxNHB4IDAgNnB4fSAucmxmLW1vdW50IGlucHV0LnJsZi1pbnt3aWR0aDoxMDAlO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTZweDtwYWRkaW5nOjE0cHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ybGYtYm9yZGVyKTtib3JkZXItcmFkaXVzOjEycHg7YmFja2dyb3VuZDojZmZmO2NvbG9yOnZhcigtLXJsZi10ZXh0KTtvdXRsaW5lOm5vbmU7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1c30gLnJsZi1tb3VudCBpbnB1dC5ybGYtaW46Zm9jdXN7Ym9yZGVyLWNvbG9yOnZhcigtLXJsZi1icmFuZCl9IC5ybGYtbW91bnQgaW5wdXQucmxmLWluLmJhZHtib3JkZXItY29sb3I6dmFyKC0tcmxmLWVycm9yKX0gLnJsZi1tb3VudCAucmxmLWVycntjb2xvcjp2YXIoLS1ybGYtZXJyb3IpO2ZvbnQtc2l6ZToxM3B4O21hcmdpbi10b3A6NnB4O21pbi1oZWlnaHQ6MTZweH0gLnJsZi1tb3VudCAucmxmLWJ0bntkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7bWFyZ2luLXRvcDoxOHB4O2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTdweDtmb250LXdlaWdodDo3MDA7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLXJsZi1icmFuZCk7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MTZweDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjE1c30gLnJsZi1tb3VudCAucmxmLWJ0bjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLXJsZi1icmFuZC1kYXJrKX0gLnJsZi1tb3VudCAucmxmLWJ0bltkaXNhYmxlZF17b3BhY2l0eTouNjtjdXJzb3I6d2FpdH0gLnJsZi1tb3VudCAucmxmLW5hdntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi10b3A6MTZweDttaW4taGVpZ2h0OjIycHh9IC5ybGYtbW91bnQgLnJsZi1iYWNre2JhY2tncm91bmQ6bm9uZTtib3JkZXI6MDtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE0cHg7Y29sb3I6dmFyKC0tcmxmLW11dGVkKTtjdXJzb3I6cG9pbnRlcjtwYWRkaW5nOjRweCAwfSAucmxmLW1vdW50IC5ybGYtYmFjazpob3Zlcntjb2xvcjp2YXIoLS1ybGYtdGV4dCl9IC5ybGYtbW91bnQgLnJsZi1zdGVwLWNvdW50e2ZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXJsZi1tdXRlZCl9IC5ybGYtbW91bnQgLnJsZi1jb25zZW50e2Rpc3BsYXk6ZmxleDtnYXA6MTBweDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O21hcmdpbi10b3A6MTZweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjQ1O2NvbG9yOnZhcigtLXJsZi1tdXRlZCl9IC5ybGYtbW91bnQgLnJsZi1jb25zZW50IGlucHV0e21hcmdpbi10b3A6MnB4O3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7ZmxleDowIDAgMThweDthY2NlbnQtY29sb3I6dmFyKC0tcmxmLWJyYW5kKX0gLnJsZi1tb3VudCAucmxmLWNvbnNlbnQgYXtjb2xvcjp2YXIoLS1ybGYtbXV0ZWQpfSAucmxmLW1vdW50IC5ybGYtdHJ1c3R7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjE2cHg7ZmxleC13cmFwOndyYXA7bWFyZ2luLXRvcDoxNHB4O2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXJsZi1tdXRlZCl9IC5ybGYtbW91bnQgLnJsZi1ocHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi05OTk5cHg7d2lkdGg6MXB4O2hlaWdodDoxcHg7b3ZlcmZsb3c6aGlkZGVufSAucmxmLW1vdW50IC5ybGYtZG9uZXt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjEwcHggMH0gLnJsZi1tb3VudCAucmxmLWNoZWNre3dpZHRoOjY0cHg7aGVpZ2h0OjY0cHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDp2YXIoLS1ybGYtYWNjZW50KTtjb2xvcjp2YXIoLS1ybGYtYnJhbmQpO2ZvbnQtc2l6ZTozNHB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW46MCBhdXRvIDE2cHh9IC5ybGYtbW91bnQgLnJsZi1mYWRle2FuaW1hdGlvbjpybGZJbiAuM3MgZWFzZX0gQGtleWZyYW1lcyBybGZJbntmcm9te29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSg4cHgpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZX19IEBtZWRpYSAobWF4LXdpZHRoOjQyMHB4KXsucmxmLW1vdW50IC5ybGYtY2FyZHtwYWRkaW5nOjIycHggMTZweCAxOHB4fS5ybGYtbW91bnQgLnJsZi1xe2ZvbnQtc2l6ZToyMXB4fX0gLnJsZi1tb3VudCAucmxmLWJ0bjJ7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMwMDcxZTM7Ym9yZGVyOjJweCBzb2xpZCAjMDA3MWUzO3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtc2l6ZToxNXB4fSAucmxmLW1vdW50IC5ybGYtYnRuMjpob3ZlcntiYWNrZ3JvdW5kOiNlZWY1ZmR9IC5ybGYtbW91bnR7c2Nyb2xsLW1hcmdpbi10b3A6MTZweH0iO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3QpO30KZnVuY3Rpb24gbGF5b3V0KCl7CiAgdmFyIGhvbWU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvbWUtc2VjdGlvbiIpOwogIHZhciBoZXJvPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJqci1oZXJvIik7IAogIGlmKGhvbWUmJmhlcm8pe3ZhciBjPWhlcm8uY2xvc2VzdCgiLmVtYmVkLWNvbXBvbmVudCIpfHxoZXJvOyBpZihob21lLmZpcnN0RWxlbWVudENoaWxkIT09Yylob21lLmluc2VydEJlZm9yZShjLGhvbWUuZmlyc3RFbGVtZW50Q2hpbGQpO30KICB2YXIgcmV2PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJqci1yZXZpZXdzIiksIGNvbnRhY3Q9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5lcjAxIik7CiAgaWYocmV2JiZjb250YWN0JiZjb250YWN0LnBhcmVudE5vZGUpe3ZhciByPXJldi5jbG9zZXN0KCIuZW1iZWQtY29tcG9uZW50Iil8fHJldjsgaWYoci5uZXh0RWxlbWVudFNpYmxpbmchPT1jb250YWN0KWNvbnRhY3QucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocixjb250YWN0KTt9CiAgW1siY29udGFpbmVyMDMiLCIjYnV5ZXJzZ3VpZGUiXSxbImNvbnRhaW5lcjA1IiwiI3NlbGxlcnNndWlkZSJdLFsiY29udGFpbmVyMDYiLCIjaW52ZXN0bWVudHMiXV0uZm9yRWFjaChmdW5jdGlvbihwKXsKICAgIHZhciBib3g9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocFswXSk7IGlmKCFib3gpcmV0dXJuOwogICAgYm94LnF1ZXJ5U2VsZWN0b3JBbGwoJ2FbaHJlZj0iI2Zvcm0iXScpLmZvckVhY2goZnVuY3Rpb24oYSl7YS5zZXRBdHRyaWJ1dGUoImhyZWYiLHBbMV0pO30pOwogIH0pOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiNob21lLXNlY3Rpb24gLnRleHQtY29tcG9uZW50IikuZm9yRWFjaChmdW5jdGlvbih0KXsKICAgIGlmKC9TQUxFU01BTi9pLnRlc3QodC50ZXh0Q29udGVudCkmJnQuY2hpbGRyZW4ubGVuZ3RoPT09MCl0LnRleHRDb250ZW50PXQudGV4dENvbnRlbnQucmVwbGFjZSgvU0FMRVNNQU4vaSxmdW5jdGlvbihtKXtyZXR1cm4gbT09PW0udG9VcHBlckNhc2UoKT8iU0FMRVNQRVJTT04iOiJTYWxlc3BlcnNvbiI7fSk7CiAgfSk7Cn0KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKGV2KXsKICB2YXIgYT1ldi50YXJnZXQuY2xvc2VzdCYmZXYudGFyZ2V0LmNsb3Nlc3QoIltkYXRhLXJsZi1wcmVdIik7IGlmKCFhKXJldHVybjsKICB0cnl7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgicmxmX3ByZSIsYS5nZXRBdHRyaWJ1dGUoImRhdGEtcmxmLXByZSIpKTt9Y2F0Y2goXyl7fQogIHZhciBoPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJybGYtaGVybyIpOwogIGlmKGgmJmgub2Zmc2V0UGFyZW50JiZ3aW5kb3cuUkxGLmhlcm8pe2V2LnByZXZlbnREZWZhdWx0KCk7d2luZG93LlJMRi5oZXJvLnNldEludGVudChhLmdldEF0dHJpYnV0ZSgiZGF0YS1ybGYtcHJlIikpO3RyeXtzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCJybGZfcHJlIik7fWNhdGNoKF8pe319Cn0sdHJ1ZSk7CndpbmRvdy5STEY9e21vdW50Om1vdW50LHN0aWNreUJhcjpzdGlja3lCYXIsbGF5b3V0OmxheW91dH07Cn0KZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnJsZi1tb3VudDpub3QoW2RhdGEtcmVhZHldKSIpLmZvckVhY2goZnVuY3Rpb24oZWwpewogIGVsLnNldEF0dHJpYnV0ZSgiZGF0YS1yZWFkeSIsIjEiKTsKICB2YXIgaW5zdD13aW5kb3cuUkxGLm1vdW50KGVsLHtpbnRlbnQ6ZWwuZ2V0QXR0cmlidXRlKCJkYXRhLWludGVudCIpfHxudWxsLG5hbWU6ZWwuZ2V0QXR0cmlidXRlKCJkYXRhLW5hbWUiKXx8Im1haW4iLHVubG9jazplbC5nZXRBdHRyaWJ1dGUoImRhdGEtdW5sb2NrIil8fG51bGwsZ3VpZGVJZDplbC5nZXRBdHRyaWJ1dGUoImRhdGEtZ3VpZGUiKXx8bnVsbH0pOwogIGlmKGVsLmlkPT09InJsZi1oZXJvIil7d2luZG93LlJMRi5oZXJvPWluc3Q7CiAgICB2YXIgcHJlPW51bGw7dHJ5e3ByZT1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCJybGZfcHJlIik7c2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgicmxmX3ByZSIpO31jYXRjaChfKXt9CiAgICBpZihwcmUpc2V0VGltZW91dChmdW5jdGlvbigpe2luc3Quc2V0SW50ZW50KHByZSk7fSwzMDApO30KfSk7CndpbmRvdy5STEYuc3RpY2t5QmFyKCk7CndpbmRvdy5STEYubGF5b3V0KCk7c2V0VGltZW91dCh3aW5kb3cuUkxGLmxheW91dCw4MDApOwp9KSgpOwo=")));(new Function(s))();})();(function(){if(window.__jrLeo)return;window.__jrLeo=1;var L="https://heyleo.com/jerrinrealty";function add(){document.querySelectorAll(".rlf-mount .rlf-done").forEach(function(d){if(d.querySelector(".jr-leo"))return;var p=document.createElement("p");p.className="rlf-sub jr-leo";p.style.margin="18px 0 0";p.textContent="While you wait, try my AI home search. Just describe your dream home:";var a=document.createElement("a");a.className="rlf-btn rlf-btn2";a.href=L;a.target="_blank";a.rel="noopener";a.textContent="Search homes with AI →";a.style.marginTop="8px";p.appendChild(a);d.appendChild(p);});}new MutationObserver(add).observe(document.body,{childList:true,subtree:true});add();})();(function(){var H=decodeURIComponent(escape(atob("PGZvb3RlciBjbGFzcz0ianItZm9vdCIgaWQ9ImpyLWZvb3QiPgo8c3R5bGU+CiN0ZXh0MzcsI2xpbmtzMDMsI2xpbmtzMDQsI3RleHQwMiwjbGlua3MwMiwjbGlua3MwMSwjaWNvbnMwMXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fQouanItZm9vdHtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwiU2Vnb2UgVUkiLFJvYm90byxJbnRlcixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjttYXgtd2lkdGg6NzIwcHg7bWFyZ2luOjMycHggYXV0byAwO3BhZGRpbmc6MjJweCAxNnB4IDI2cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2UzZTNlODt0ZXh0LWFsaWduOmxlZnQ7Y29sb3I6IzZlNmU3Mztmb250LXNpemU6MTIuNXB4O2xpbmUtaGVpZ2h0OjEuNn0KLmpyLWZvb3QgYntjb2xvcjojMWQxZDFmfQouanItZm9vdCBwe21hcmdpbjowIDAgMTBweH0KLmpyLWZvb3QgYXtjb2xvcjojNDg0ODRmO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9Ci5qci1mb290IC5qci1saW5rc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjZweCAxNHB4O21hcmdpbjowIDAgMTJweH0KLmpyLWZvb3QgLmpyLWVob3tkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMWQxZDFmfQo8L3N0eWxlPgo8cD48Yj5KZXJyaW4gSm9objwvYj4sIExpY2Vuc2VkIFJlYWwgRXN0YXRlIFNhbGVzcGVyc29uLCBOWSBMaWMuICMxMDQwMTM5MDQxMyAmbWlkZG90OyBKZXJyaW4gUmVhbHR5LCBhZmZpbGlhdGVkIHdpdGggPGI+UmVhbCBCcm9rZXIgTlkgTExDPC9iPiwgTGljZW5zZWQgUmVhbCBFc3RhdGUgQnJva2VyICZtaWRkb3Q7IDQ3NyBNYWRpc29uIEF2ZS4sIFN0ZS4gNjQ4LCBOZXcgWW9yaywgTlkgMTAwMjIgJm1pZGRvdDsgQnJva2VyIG9mZmljZSA8YSBocmVmPSJ0ZWw6KzE4NTU0NTAwNDQyIj4oODU1KSA0NTAtMDQ0MjwvYT4gJm1pZGRvdDsgQWdlbnQgPGEgaHJlZj0idGVsOisxOTE0MzU5MTQxNSI+KDkxNCkgMzU5LTE0MTU8L2E+ICZtaWRkb3Q7IDxhIGhyZWY9Im1haWx0bzpqb2huQGplcnJpbnJlYWx0eS5jb20iPmpvaG5AamVycmlucmVhbHR5LmNvbTwvYT48L3A+CjxwIGNsYXNzPSJqci1laG8iPiYjODk2MjsgRXF1YWwgSG91c2luZyBPcHBvcnR1bml0eTwvcD4KPHA+V2Ugc3VwcG9ydCB0aGUgRmFpciBIb3VzaW5nIEFjdCBhbmQgdGhlIE5ldyBZb3JrIFN0YXRlIEh1bWFuIFJpZ2h0cyBMYXcgYW5kIGRvIG5vdCBkaXNjcmltaW5hdGUgb24gYW55IHByb3RlY3RlZCBiYXNpcy4gQWxsIGxhd2Z1bCBzb3VyY2VzIG9mIGluY29tZSwgaW5jbHVkaW5nIGhvdXNpbmcgdm91Y2hlcnMsIGFyZSBhY2NlcHRlZC48L3A+CjxkaXYgY2xhc3M9ImpyLWxpbmtzIj4KPGEgaHJlZj0iaHR0cHM6Ly9vbmVyZWFsLmNvbS8iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj5SZWFsIEJyb2tlciBOWSBMTEM8L2E+CjxhIGhyZWY9Imh0dHBzOi8vYm9sdC1jdXN0b20tYXNzZXRzLnRoZXJlYWxicm9rZXJhZ2UuY29tL25ldy15b3JrLWNvbXBsaWFuY2Uvc3RhbmRhcmRpemVkLW9wZXJhdGluZy1wcm9jZWR1cmUtbm90YXJpemVkLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPk5ZIFN0YW5kYXJkIE9wZXJhdGluZyBQcm9jZWR1cmVzPC9hPgo8YSBocmVmPSJodHRwczovL2Rvcy5ueS5nb3Yvc3lzdGVtL2ZpbGVzL2RvY3VtZW50cy8yMDIxLzA4L2ZhaXJob3VzaW5nbm90aWNlLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPk5ZIEZhaXIgSG91c2luZyBOb3RpY2U8L2E+CjxhIGhyZWY9Imh0dHBzOi8vbnlzYXIuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIyLzA1L1JNQV9Vbmtub3duLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPlJlYXNvbmFibGUgQWNjb21tb2RhdGlvbnMgTm90aWNlPC9hPgo8YSBocmVmPSIjcHJpdmFjeXBvbGljeSI+UHJpdmFjeSBQb2xpY3k8L2E+CjxhIGhyZWY9IiN0ZXJtIj5UZXJtcyAmYW1wOyBDb25kaXRpb25zPC9hPgo8YSBocmVmPSIjdGVybSI+QWNjZXNzaWJpbGl0eTwvYT4KPGEgaHJlZj0iaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9qZXJyaW5yZWFsdHkiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj5JbnN0YWdyYW08L2E+CjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9zaGFyZS8xSmdTTlFTNE5KLyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPkZhY2Vib29rPC9hPgo8L2Rpdj4KPHA+TGlzdGluZyBpbmZvcm1hdGlvbiBpcyBkZWVtZWQgcmVsaWFibGUgYnV0IG5vdCBndWFyYW50ZWVkLiBSZXZpZXdzIGFyZSBmcm9tIEdvb2dsZSBhbmQgWmlsbG93OyBzb21lIGFyZSBzaG9ydGVuZWQuIFNhbGVzIGRhdGEgZnJvbSBIb21lcy5jb20uIE5vdGhpbmcgb24gdGhpcyBzaXRlIGlzIGxlZ2FsLCB0YXggb3IgZmluYW5jaWFsIGFkdmljZS4gJmNvcHk7IDIwMjYgSmVycmluIFJlYWx0eS48L3A+CjwvZm9vdGVyPgo=")));function f(){document.querySelectorAll("section[id$='-section']").forEach(function(s){if(s.querySelector(".jr-foot"))return;var d=document.createElement("div");d.innerHTML=H;s.appendChild(d);});}f();setTimeout(f,1200);})();

Get Sellers Guide

By submitting your information through this form, you consent to receive the requested real estate PDF guide via email from Jerrin John DBA Jerrin Realty, operating under Real Broker NY LLC. Your contact information will be used solely for the purpose of delivering the guide and may also be used to provide additional real estate information or updates.Your information will be handled in accordance with applicable privacy laws and policies. Submitting your information does not create any contractual or fiduciary relationship with Jerrin Realty or Real Broker NY LLC.

Free guide

The Westchester & Rockland Home Seller’s Guide

How to price, prepare and sell your home for top dollar — plus what it really costs to sell in New York.

  • ✓ The pricing mistake that costs sellers the most
  • ✓ Low-cost prep that buyers actually pay for
  • ✓ Every New York seller cost, explained
(function(){var s=decodeURIComponent(escape(atob("KGZ1bmN0aW9uKCl7CmlmKCF3aW5kb3cuUkxGKXsKdmFyIENGRz17CiAgZW5kcG9pbnQ6Imh0dHBzOi8vc2NyaXB0Lmdvb2dsZS5jb20vbWFjcm9zL3MvQUtmeWNid3EzOGJSRVNDQjkzQ1AzODlZRG5qVjMxU0l6Y1M4TjR2STBub204RW9QeTNCeHcwY3ZRUjk0Z3N0RTl1Q1A3MjFXL2V4ZWMiLAogIGJyYW5kOiJKZXJyaW4gUmVhbHR5IiwKICBwcml2YWN5VXJsOiJodHRwczovL2plcnJpbnJlYWx0eS5jb20vI3ByaXZhY3lwb2xpY3kiLAogIHBob25lOiIrMTkxNDM1OTE0MTUiCn07CnZhciBTPXsKICBpbnRlbnQ6e3R5cGU6ImNhcmRzIixmaWVsZDoiaW50ZW50Iix0d286dHJ1ZSxxOiJIb3cgY2FuIEkgaGVscCB5b3UgdG9kYXk/IixzdWI6IkFuc3dlciBhIGZldyBxdWljayBxdWVzdGlvbnMuIFRha2VzIGFib3V0IDYwIHNlY29uZHMuIiwKICAgIG9wdGlvbnM6W1siYnV5Iiwi8J+PoSIsIkJ1eSBhIGhvbWUiXSxbInNlbGwiLCLwn5KwIiwiU2VsbCBteSBob21lIl0sWyJyZW50Iiwi8J+UkSIsIlJlbnQgYSBob21lIl0sWyJib3RoIiwi8J+UhCIsIkJ1eSAmIHNlbGwiXSxbInZhbHVlIiwi8J+TiiIsIldoYXQncyBteSBob21lIHdvcnRoPyIsIndpZGUiXV19LAogIHJfYXJlYTp7dHlwZToidGV4dCIsZmllbGQ6InJlbnRfYXJlYSIscToiV2hlcmUgd291bGQgeW91IGxpa2UgdG8gcmVudD8iLHN1YjoiQSBjaXR5LCBuZWlnaGJvcmhvb2Qgb3IgWklQIGNvZGUgaXMgcGVyZmVjdC4iLHBsYWNlaG9sZGVyOiJlLmcuIFlvbmtlcnMgb3IgMTA3MDEiLG1pbjoyLGVycjoiUGxlYXNlIHRlbGwgbWUgd2hlcmUgeW91J3JlIGxvb2tpbmcuIn0sCiAgcl9idWRnZXQ6e3R5cGU6ImNhcmRzIixmaWVsZDoicmVudF9idWRnZXQiLHE6IldoYXQncyB5b3VyIG1vbnRobHkgcmVudCBidWRnZXQ/IiwKICAgIG9wdGlvbnM6W1siVW5kZXIgJDIsMDAwIiwiIiwiIl0sWyIkMiwwMDAg4oCTICQzLDAwMCIsIiIsIiJdLFsiJDMsMDAwIOKAkyAkNCwwMDAiLCIiLCIiXSxbIiQ0LDAwMCsiLCIiLCIiXV19LAogIHNfYWRkcmVzczp7dHlwZToidGV4dCIsZmllbGQ6InByb3BlcnR5X2FkZHJlc3MiLHE6ZnVuY3Rpb24oZCl7cmV0dXJuIGQuaW50ZW50PT09InZhbHVlIj8iV2hhdCdzIHRoZSBhZGRyZXNzIG9mIHRoZSBob21lPyI6IldoYXQncyB0aGUgYWRkcmVzcyBvZiB0aGUgaG9tZSB5b3UncmUgc2VsbGluZz8iO30sCiAgICBzdWI6IlVzZWQgb25seSB0byBwcmVwYXJlIHlvdXIgY3VzdG9tIHByaWNpbmcgZXN0aW1hdGUuIixwbGFjZWhvbGRlcjoiMTIzIE1haW4gU3QsIENpdHksIFpJUCIsbWluOjYsZXJyOiJQbGVhc2UgZW50ZXIgdGhlIHByb3BlcnR5IGFkZHJlc3MuIn0sCiAgc190eXBlOnt0eXBlOiJjYXJkcyIsZmllbGQ6InByb3BlcnR5X3R5cGUiLHE6IldoYXQgdHlwZSBvZiBwcm9wZXJ0eSBpcyBpdD8iLAogICAgb3B0aW9uczpbWyJTaW5nbGUtZmFtaWx5Iiwi8J+PoCIsIlNpbmdsZS1mYW1pbHkgaG9tZSJdLFsiQ29uZG8vVG93bmhvdXNlIiwi8J+PoiIsIkNvbmRvIG9yIHRvd25ob3VzZSJdLFsiTXVsdGktZmFtaWx5Iiwi8J+PmO+4jyIsIk11bHRpLWZhbWlseSJdLFsiTGFuZC9PdGhlciIsIvCfjLMiLCJMYW5kIG9yIG90aGVyIl1dfSwKICBiX2FyZWE6e3R5cGU6InRleHQiLGZpZWxkOiJidXlfYXJlYSIscToiV2hlcmUgd291bGQgeW91IGxpa2UgdG8gYnV5PyIsc3ViOiJBIGNpdHksIG5laWdoYm9yaG9vZCBvciBaSVAgY29kZSBpcyBwZXJmZWN0LiIscGxhY2Vob2xkZXI6ImUuZy4gV2hpdGUgUGxhaW5zIG9yIDEwNjAxIixtaW46MixlcnI6IlBsZWFzZSB0ZWxsIG1lIHdoZXJlIHlvdSdyZSBsb29raW5nLiJ9LAogIGJfcHJpY2U6e3R5cGU6ImNhcmRzIixmaWVsZDoicHJpY2VfcmFuZ2UiLHE6IldoYXQgcHJpY2UgcmFuZ2UgZmVlbHMgY29tZm9ydGFibGU/IiwKICAgIG9wdGlvbnM6W1siVW5kZXIgJDMwMEsiLCIiLCIiXSxbIiQzMDBLIOKAkyAkNTAwSyIsIiIsIiJdLFsiJDUwMEsg4oCTICQ3NTBLIiwiIiwiIl0sWyIkNzUwSyDigJMgJDFNIiwiIiwiIl0sWyIkMU0rIiwiIiwiIl1dfSwKICBiX2ZpbmFuY2U6e3R5cGU6ImNhcmRzIixmaWVsZDoiZmluYW5jaW5nIixxOiJIb3cgYXJlIHlvdSBwbGFubmluZyB0byBwYXk/IiwKICAgIG9wdGlvbnM6W1siUHJlLWFwcHJvdmVkIiwi4pyFIiwiSSdtIHByZS1hcHByb3ZlZCJdLFsiQ2FzaCIsIvCfkrUiLCJQYXlpbmcgY2FzaCJdLFsiTm90IHlldCIsIuKPsyIsIk5vdCBwcmUtYXBwcm92ZWQgeWV0Il0sWyJOZWVkIGxlbmRlciIsIvCfpJ0iLCJJJ2QgbGlrZSBhIGxlbmRlciByZWNvbW1lbmRhdGlvbiJdXX0sCiAgdGltZWxpbmU6e3R5cGU6ImNhcmRzIixmaWVsZDoidGltZWxpbmUiLHE6IldoZW4gYXJlIHlvdSBob3BpbmcgdG8gbWFrZSBhIG1vdmU/IiwKICAgIG9wdGlvbnM6W1siQVNBUCIsIuKaoSIsIkFzIHNvb24gYXMgcG9zc2libGUiXSxbIjEtMyBtb250aHMiLCLwn5OFIiwiMeKAkzMgbW9udGhzIl0sWyIzLTYgbW9udGhzIiwi8J+Xk++4jyIsIjPigJM2IG1vbnRocyJdLFsiNisgbW9udGhzIiwi8J+MsSIsIjYrIG1vbnRocyJdLFsiSnVzdCBleHBsb3JpbmciLCLwn5GAIiwiSnVzdCBleHBsb3JpbmciXV19LAogIGludl90eXBlOnt0eXBlOiJjYXJkcyIsZmllbGQ6ImludmVzdF90eXBlIixxOiJXaGF0IGtpbmQgb2YgZGVhbHMgaW50ZXJlc3QgeW91PyIsc3ViOiJJJ2xsIHRleHQgeW91IG9mZi1tYXJrZXQgb3Bwb3J0dW5pdGllcyB0aGF0IG1hdGNoLiIsCiAgICBvcHRpb25zOltbIk11bHRpLWZhbWlseSIsIvCfj5jvuI8iLCJNdWx0aS1mYW1pbHkgKDLigJM0IHVuaXRzKSJdLFsiU2luZ2xlLWZhbWlseSIsIvCfj6AiLCJTaW5nbGUtZmFtaWx5IC8gZmxpcHMiXSxbIkxhbmQiLCLwn4yzIiwiTGFuZCAvIGRldmVsb3BtZW50Il0sWyJBbnkiLCLwn5K8IiwiU2hvdyBtZSBldmVyeXRoaW5nIl1dfSwKICBpbnZfYnVkZ2V0Ont0eXBlOiJjYXJkcyIsZmllbGQ6InByaWNlX3JhbmdlIixxOiJXaGF0J3MgeW91ciBwdXJjaGFzZSBidWRnZXQ/IiwKICAgIG9wdGlvbnM6W1siVW5kZXIgJDUwMEsiLCIiLCIiXSxbIiQ1MDBLIOKAkyAkMU0iLCIiLCIiXSxbIiQxTSDigJMgJDJNIiwiIiwiIl0sWyIkMk0rIiwiIiwiIl1dfSwKICBjb250YWN0Ont0eXBlOiJjb250YWN0IixxOmZ1bmN0aW9uKGQpewogICAgICByZXR1cm4gZC5pbnRlbnQ9PT0idmFsdWUiPyJMYXN0IHN0ZXAhIFdoZXJlIHNob3VsZCBJIHNlbmQgeW91ciBob21lIHZhbHVlIHJlcG9ydD8iOgogICAgICAgICAgICAgZC5pbnRlbnQ9PT0iYnV5Ij8iTGFzdCBzdGVwISBXaGVyZSBzaG91bGQgSSBzZW5kIG1hdGNoaW5nIGhvbWVzPyI6CiAgICAgICAgICAgICBkLmludGVudD09PSJyZW50Ij8iTGFzdCBzdGVwISBXaGVyZSBzaG91bGQgSSBzZW5kIGF2YWlsYWJsZSByZW50YWxzPyI6CiAgICAgICAgICAgICBkLmludGVudD09PSJidXllcl9ndWlkZSI/IkdldCB0aGUgZnJlZSBXZXN0Y2hlc3RlciAmIFJvY2tsYW5kIEJ1eWVyJ3MgR3VpZGUiOgogICAgICAgICAgICAgZC5pbnRlbnQ9PT0ic2VsbGVyX2d1aWRlIj8iR2V0IHRoZSBmcmVlIFdlc3RjaGVzdGVyICYgUm9ja2xhbmQgU2VsbGVyJ3MgR3VpZGUiOgogICAgICAgICAgICAgZC5pbnRlbnQ9PT0iaW52ZXN0Ij8iTGFzdCBzdGVwISBXaGVyZSBzaG91bGQgSSB0ZXh0IG9mZi1tYXJrZXQgZGVhbHM/IjoKICAgICAgICAgICAgICJMYXN0IHN0ZXAhIEhvdyBjYW4gSSByZWFjaCB5b3U/Ijt9LAogICAgc3ViOmZ1bmN0aW9uKGQpe3JldHVybiAvZ3VpZGUvLnRlc3QoZC5pbnRlbnQpPyJJbnN0YW50IGFjY2VzcyDigJQgcGx1cyBhIHRleHQgbGluayBzbyB5b3UgY2FuIHJlYWQgaXQgYW55dGltZS4iOiJObyBzcGFtLCBldmVyLiBJJ2xsIHBlcnNvbmFsbHkgZm9sbG93IHVwLiI7fX0KfTsKdmFyIEZMT1dTPXsKICBidXk6WyJpbnRlbnQiLCJiX2FyZWEiLCJiX3ByaWNlIiwiYl9maW5hbmNlIiwidGltZWxpbmUiLCJjb250YWN0Il0sCiAgc2VsbDpbImludGVudCIsInNfYWRkcmVzcyIsInNfdHlwZSIsInRpbWVsaW5lIiwiY29udGFjdCJdLAogIGJvdGg6WyJpbnRlbnQiLCJzX2FkZHJlc3MiLCJzX3R5cGUiLCJiX2FyZWEiLCJiX3ByaWNlIiwiYl9maW5hbmNlIiwidGltZWxpbmUiLCJjb250YWN0Il0sCiAgdmFsdWU6WyJpbnRlbnQiLCJzX2FkZHJlc3MiLCJzX3R5cGUiLCJ0aW1lbGluZSIsImNvbnRhY3QiXSwKICByZW50OlsiaW50ZW50Iiwicl9hcmVhIiwicl9idWRnZXQiLCJ0aW1lbGluZSIsImNvbnRhY3QiXSwKICBidXllcl9ndWlkZTpbImNvbnRhY3QiXSwgc2VsbGVyX2d1aWRlOlsiY29udGFjdCJdLAogIGludmVzdDpbImludl90eXBlIiwiaW52X2J1ZGdldCIsImNvbnRhY3QiXQp9Owp2YXIgbj0wOwpmdW5jdGlvbiBlc2Mocyl7cmV0dXJuIFN0cmluZyhzPT1udWxsPyIiOnMpLnJlcGxhY2UoL1smPD4iJ10vZyxmdW5jdGlvbihjKXtyZXR1cm57IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCJcIiI6IiZxdW90OyIsIiciOiImIzM5OyJ9W2NdO30pO30KZnVuY3Rpb24gZm10UGhvbmUodil7dmFyIGQ9di5yZXBsYWNlKC9cRC9nLCIiKS5yZXBsYWNlKC9eMSg/PVxkezEwfSkvLCIiKS5zbGljZSgwLDEwKTsKICBpZihkLmxlbmd0aDw0KXJldHVybiBkOyBpZihkLmxlbmd0aDw3KXJldHVybiIoIitkLnNsaWNlKDAsMykrIikgIitkLnNsaWNlKDMpOyByZXR1cm4iKCIrZC5zbGljZSgwLDMpKyIpICIrZC5zbGljZSgzLDYpKyItIitkLnNsaWNlKDYpO30KZnVuY3Rpb24gc3RvcmUoayx2KXt0cnl7aWYodj09PXVuZGVmaW5lZClyZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oayk7bG9jYWxTdG9yYWdlLnNldEl0ZW0oayx2KTt9Y2F0Y2goZSl7cmV0dXJuIG51bGw7fX0KCmZ1bmN0aW9uIG1vdW50KHJvb3Qsb3B0cyl7CiAgb3B0cz1vcHRzfHx7fTsgdmFyIHVpZD0iciIrKCsrbiksIGRhdGE9e30sIGk9MCwgc2VuZGluZz1mYWxzZSwgZml4ZWQ9b3B0cy5pbnRlbnR8fG51bGw7CiAgaWYoZml4ZWQpZGF0YS5pbnRlbnQ9Zml4ZWQ7CiAgZnVuY3Rpb24gZmxvdygpe3JldHVybiBGTE9XU1tkYXRhLmludGVudF18fEZMT1dTLmJ1eTt9CiAgZnVuY3Rpb24gdmFsKHgpe3JldHVybiB0eXBlb2YgeD09PSJmdW5jdGlvbiI/eChkYXRhKTp4O30KICBmdW5jdGlvbiAkKGlkKXtyZXR1cm4gcm9vdC5xdWVyeVNlbGVjdG9yKCIjIit1aWQrIi0iK2lkKTt9CiAgZnVuY3Rpb24gcmVuZGVyKCl7CiAgICB2YXIgZj1mbG93KCksIHM9U1tmW2ldXSwgcGN0PU1hdGgucm91bmQoKGkvZi5sZW5ndGgpKjEwMCksIHNob3dCYWNrPWZpeGVkP2k+MDppPjA7CiAgICB2YXIgaD0nPGRpdiBjbGFzcz0icmxmLWNhcmQiPicrKGYubGVuZ3RoPjE/JzxkaXYgY2xhc3M9InJsZi1wcm9ncmVzcyI+PGRpdiBjbGFzcz0icmxmLWJhciIgc3R5bGU9IndpZHRoOicrcGN0KyclIj48L2Rpdj48L2Rpdj4nOicnKSsnPGRpdiBjbGFzcz0icmxmLWZhZGUiPic7CiAgICBoKz0nPGgyIGNsYXNzPSJybGYtcSI+Jytlc2ModmFsKHMucSkpKyc8L2gyPicrKHMuc3ViPyc8cCBjbGFzcz0icmxmLXN1YiI+Jytlc2ModmFsKHMuc3ViKSkrJzwvcD4nOicnKTsKICAgIGlmKHMudHlwZT09PSJjYXJkcyIpewogICAgICBoKz0nPGRpdiBjbGFzcz0icmxmLW9wdGlvbnMnKyhzLnR3bz8nIHR3byc6JycpKyciPic7CiAgICAgIHMub3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG8pewogICAgICAgIGgrPSc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJsZi1vcHQnKyhkYXRhW3MuZmllbGRdPT09b1swXT8nIHNlbCc6JycpKyhvWzNdPycgJytvWzNdOicnKSsnIiBkYXRhLXY9IicrZXNjKG9bMF0pKyciPicrKG9bMV0/JzxzcGFuIGNsYXNzPSJybGYtaWNvIj4nK29bMV0rJzwvc3Bhbj4nOicnKSsnPHNwYW4+Jytlc2Mob1syXXx8b1swXSkrJzwvc3Bhbj48L2J1dHRvbj4nOwogICAgICB9KTsKICAgICAgaCs9JzwvZGl2Pic7CiAgICB9IGVsc2UgaWYocy50eXBlPT09InRleHQiKXsKICAgICAgaCs9JzxpbnB1dCBjbGFzcz0icmxmLWluIiBpZD0iJyt1aWQrJy10IiB0eXBlPSJ0ZXh0IiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IicrZXNjKHMucGxhY2Vob2xkZXIpKyciIHZhbHVlPSInK2VzYyhkYXRhW3MuZmllbGRdfHwiIikrJyI+PGRpdiBjbGFzcz0icmxmLWVyciIgaWQ9IicrdWlkKyctZSI+PC9kaXY+JzsKICAgICAgaCs9JzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icmxmLWJ0biIgaWQ9IicrdWlkKyctbmV4dCI+Q29udGludWUg4oaSPC9idXR0b24+JzsKICAgIH0gZWxzZSB7CiAgICAgIGgrPSc8bGFiZWwgY2xhc3M9InJsZi1sYmwiIGZvcj0iJyt1aWQrJy1uIj5GdWxsIG5hbWU8L2xhYmVsPjxpbnB1dCBjbGFzcz0icmxmLWluIiBpZD0iJyt1aWQrJy1uIiB0eXBlPSJ0ZXh0IiBhdXRvY29tcGxldGU9Im5hbWUiIHZhbHVlPSInK2VzYyhkYXRhLm5hbWV8fCIiKSsnIj4nOwogICAgICBoKz0nPGxhYmVsIGNsYXNzPSJybGYtbGJsIiBmb3I9IicrdWlkKyctcCI+TW9iaWxlIHBob25lPC9sYWJlbD48aW5wdXQgY2xhc3M9InJsZi1pbiIgaWQ9IicrdWlkKyctcCIgdHlwZT0idGVsIiBpbnB1dG1vZGU9InRlbCIgYXV0b2NvbXBsZXRlPSJ0ZWwiIHBsYWNlaG9sZGVyPSIoNTU1KSA1NTUtNTU1NSIgdmFsdWU9IicrZXNjKGRhdGEucGhvbmV8fCIiKSsnIj4nOwogICAgICBoKz0nPGxhYmVsIGNsYXNzPSJybGYtbGJsIiBmb3I9IicrdWlkKyctbSI+RW1haWw8L2xhYmVsPjxpbnB1dCBjbGFzcz0icmxmLWluIiBpZD0iJyt1aWQrJy1tIiB0eXBlPSJlbWFpbCIgaW5wdXRtb2RlPSJlbWFpbCIgYXV0b2NvbXBsZXRlPSJlbWFpbCIgdmFsdWU9IicrZXNjKGRhdGEuZW1haWx8fCIiKSsnIj4nOwogICAgICBoKz0nPGRpdiBjbGFzcz0icmxmLWhwIj48bGFiZWw+V2Vic2l0ZTxpbnB1dCBpZD0iJyt1aWQrJy1ocCIgdHlwZT0idGV4dCIgdGFiaW5kZXg9Ii0xIiBhdXRvY29tcGxldGU9Im9mZiI+PC9sYWJlbD48L2Rpdj4nOwogICAgICBoKz0nPGxhYmVsIGNsYXNzPSJybGYtY29uc2VudCI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iJyt1aWQrJy1jIicrKGRhdGEuc21zX2NvbnNlbnQ/JyBjaGVja2VkJzonJykrJz48c3Bhbj5CeSBjaGVja2luZyB0aGlzIGJveCwgSSBhZ3JlZSB0byByZWNlaXZlIHRleHQgbWVzc2FnZXMgZnJvbSAnK2VzYyhDRkcuYnJhbmQpKycgYWJvdXQgbXkgcmVhbCBlc3RhdGUgaW5xdWlyeSBhdCB0aGUgbnVtYmVyIHByb3ZpZGVkLiBNc2cgJmFtcDsgZGF0YSByYXRlcyBtYXkgYXBwbHkuIE1zZyBmcmVxdWVuY3kgdmFyaWVzLiBSZXBseSBTVE9QIHRvIG9wdCBvdXQsIEhFTFAgZm9yIGhlbHAuIENvbnNlbnQgaXMgbm90IGEgY29uZGl0aW9uIG9mIHB1cmNoYXNlLiA8YSBocmVmPSInK2VzYyhDRkcucHJpdmFjeVVybCkrJyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPlByaXZhY3kgUG9saWN5PC9hPi48L3NwYW4+PC9sYWJlbD4nOwogICAgICB2YXIgY3RhPWRhdGEuaW50ZW50PT09InZhbHVlIj8iR2V0IG15IGhvbWUgdmFsdWUg4oaSIjovZ3VpZGUvLnRlc3QoZGF0YS5pbnRlbnQpPyJHZXQgbXkgZnJlZSBndWlkZSDihpIiOmRhdGEuaW50ZW50PT09ImludmVzdCI/IlNlbmQgbWUgZGVhbHMg4oaSIjoiQ29ubmVjdCB3aXRoIG1lIOKGkiI7CiAgICAgIGgrPSc8ZGl2IGNsYXNzPSJybGYtZXJyIiBpZD0iJyt1aWQrJy1lIj48L2Rpdj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJsZi1idG4iIGlkPSInK3VpZCsnLW5leHQiPicrY3RhKyc8L2J1dHRvbj4nOwogICAgICBoKz0nPGRpdiBjbGFzcz0icmxmLXRydXN0Ij48c3Bhbj7wn5SSIFlvdXIgaW5mbyBzdGF5cyBwcml2YXRlPC9zcGFuPjxzcGFuPuKtkCA1LjAgb24gR29vZ2xlPC9zcGFuPjwvZGl2Pic7CiAgICB9CiAgICBoKz0nPC9kaXY+JysoZi5sZW5ndGg+MT8nPGRpdiBjbGFzcz0icmxmLW5hdiI+Jysoc2hvd0JhY2s/JzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icmxmLWJhY2siIGlkPSInK3VpZCsnLWJhY2siPuKGkCBCYWNrPC9idXR0b24+JzonPHNwYW4+PC9zcGFuPicpKyc8c3BhbiBjbGFzcz0icmxmLXN0ZXAtY291bnQiPlN0ZXAgJysoaSsxKSsnIG9mICcrZi5sZW5ndGgrJzwvc3Bhbj48L2Rpdj4nOicnKSsnPC9kaXY+JzsKICAgIHJvb3QuaW5uZXJIVE1MPWg7IGJpbmQocyk7CiAgfQogIGZ1bmN0aW9uIGJpbmQocyl7CiAgICB2YXIgYmFjaz0kKCJiYWNrIik7IGlmKGJhY2spYmFjay5vbmNsaWNrPWZ1bmN0aW9uKCl7aS0tO3JlbmRlcigpO307CiAgICBpZihzLnR5cGU9PT0iY2FyZHMiKXsKICAgICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChyb290LnF1ZXJ5U2VsZWN0b3JBbGwoIi5ybGYtb3B0IiksZnVuY3Rpb24oYil7CiAgICAgICAgYi5vbmNsaWNrPWZ1bmN0aW9uKCl7ZGF0YVtzLmZpZWxkXT1iLmdldEF0dHJpYnV0ZSgiZGF0YS12Iik7Yi5jbGFzc0xpc3QuYWRkKCJzZWwiKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aSsrO3JlbmRlcigpO30sMTgwKTt9OwogICAgICB9KTsKICAgIH0gZWxzZSBpZihzLnR5cGU9PT0idGV4dCIpewogICAgICB2YXIgdD0kKCJ0IiksZ289ZnVuY3Rpb24oKXt2YXIgdj10LnZhbHVlLnRyaW0oKTsKICAgICAgICBpZih2Lmxlbmd0aDwocy5taW58fDEpKXt0LmNsYXNzTGlzdC5hZGQoImJhZCIpOyQoImUiKS50ZXh0Q29udGVudD1zLmVycjtyZXR1cm47fQogICAgICAgIGRhdGFbcy5maWVsZF09djtpKys7cmVuZGVyKCk7fTsKICAgICAgJCgibmV4dCIpLm9uY2xpY2s9Z287CiAgICAgIHQub25rZXlkb3duPWZ1bmN0aW9uKGUpe2lmKGUua2V5PT09IkVudGVyIil7ZS5wcmV2ZW50RGVmYXVsdCgpO2dvKCk7fX07CiAgICB9IGVsc2UgewogICAgICB2YXIgcD0kKCJwIik7IHAub25pbnB1dD1mdW5jdGlvbigpe3AudmFsdWU9Zm10UGhvbmUocC52YWx1ZSk7fTsKICAgICAgJCgibmV4dCIpLm9uY2xpY2s9c3VibWl0OwogICAgfQogIH0KICBmdW5jdGlvbiBzdWJtaXQoKXsKICAgIGlmKHNlbmRpbmcpcmV0dXJuOwogICAgdmFyIG5tPSQoIm4iKSxwPSQoInAiKSxtPSQoIm0iKSxlPSQoImUiKTsKICAgIFtubSxwLG1dLmZvckVhY2goZnVuY3Rpb24oeCl7eC5jbGFzc0xpc3QucmVtb3ZlKCJiYWQiKTt9KTsKICAgIGRhdGEubmFtZT1ubS52YWx1ZS50cmltKCk7IGRhdGEucGhvbmU9cC52YWx1ZS50cmltKCk7IGRhdGEuZW1haWw9bS52YWx1ZS50cmltKCk7CiAgICBkYXRhLnNtc19jb25zZW50PSQoImMiKS5jaGVja2VkOwogICAgdmFyIGVycnM9W107CiAgICBpZihkYXRhLm5hbWUubGVuZ3RoPDIpe25tLmNsYXNzTGlzdC5hZGQoImJhZCIpO2VycnMucHVzaCgieW91ciBuYW1lIik7fQogICAgaWYoZGF0YS5waG9uZS5yZXBsYWNlKC9cRC9nLCIiKS5yZXBsYWNlKC9eMSg/PVxkezEwfSkvLCIiKS5sZW5ndGghPT0xMCl7cC5jbGFzc0xpc3QuYWRkKCJiYWQiKTtlcnJzLnB1c2goImEgMTAtZGlnaXQgbW9iaWxlIG51bWJlciIpO30KICAgIGlmKCEvXlteXHNAXStAW15cc0BdK1wuW15cc0BdezIsfSQvLnRlc3QoZGF0YS5lbWFpbCkpe20uY2xhc3NMaXN0LmFkZCgiYmFkIik7ZXJycy5wdXNoKCJhIHZhbGlkIGVtYWlsIik7fQogICAgaWYoZXJycy5sZW5ndGgpe2UudGV4dENvbnRlbnQ9IlBsZWFzZSBlbnRlciAiK2VycnMuam9pbigiLCAiKSsiLiI7cmV0dXJuO30KICAgIGUudGV4dENvbnRlbnQ9IiI7CiAgICB2YXIgcT1uZXcgVVJMU2VhcmNoUGFyYW1zKGxvY2F0aW9uLnNlYXJjaCk7CiAgICB2YXIgcGF5bG9hZD1PYmplY3QuYXNzaWduKHt9LGRhdGEsewogICAgICB3ZWJzaXRlOiQoImhwIikudmFsdWUsIGZvcm06b3B0cy5uYW1lfHwibWFpbiIsCiAgICAgIHBhZ2VfdXJsOmxvY2F0aW9uLmhyZWYsIHJlZmVycmVyOmRvY3VtZW50LnJlZmVycmVyLAogICAgICB1dG1fc291cmNlOnEuZ2V0KCJ1dG1fc291cmNlIil8fCIiLCB1dG1fbWVkaXVtOnEuZ2V0KCJ1dG1fbWVkaXVtIil8fCIiLCB1dG1fY2FtcGFpZ246cS5nZXQoInV0bV9jYW1wYWlnbiIpfHwiIiwKICAgICAgc3VibWl0dGVkX2F0Om5ldyBEYXRlKCkudG9JU09TdHJpbmcoKQogICAgfSk7CiAgICB2YXIgYnRuPSQoIm5leHQiKTsgc2VuZGluZz10cnVlOyBidG4uZGlzYWJsZWQ9dHJ1ZTsgYnRuLnRleHRDb250ZW50PSJTZW5kaW5n4oCmIjsKICAgIGZldGNoKENGRy5lbmRwb2ludCx7bWV0aG9kOiJQT1NUIixtb2RlOiJuby1jb3JzIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04In0sYm9keTpKU09OLnN0cmluZ2lmeShwYXlsb2FkKX0pCiAgICAgIC50aGVuKGRvbmUpCiAgICAgIC5jYXRjaChmdW5jdGlvbigpe3NlbmRpbmc9ZmFsc2U7YnRuLmRpc2FibGVkPWZhbHNlO2J0bi50ZXh0Q29udGVudD0iVHJ5IGFnYWluIOKGkiI7ZS50ZXh0Q29udGVudD0iQ29ubmVjdGlvbiBwcm9ibGVtLiBQbGVhc2UgY2hlY2sgeW91ciBpbnRlcm5ldCBhbmQgdHJ5IGFnYWluLiI7fSk7CiAgfQogIGZ1bmN0aW9uIGRvbmUoKXsKICAgIHZhciBmaXJzdD1lc2MoKGRhdGEubmFtZXx8IiIpLnNwbGl0KCIgIilbMF0pOwogICAgaWYob3B0cy51bmxvY2spe3N0b3JlKCJybGZfIitvcHRzLnVubG9jaywiMSIpOyB1bmxvY2sodHJ1ZSk7IHJldHVybjt9CiAgICB2YXIgbXNnPWRhdGEuaW50ZW50PT09InZhbHVlIj8iSSdtIHByZXBhcmluZyB5b3VyIGN1c3RvbSBob21lIHZhbHVlIHJlcG9ydCBhbmQgd2lsbCB0ZXh0IHlvdSBzaG9ydGx5LiI6CiAgICAgICAgICAgIGRhdGEuaW50ZW50PT09ImJ1eSI/IkknbGwgdGV4dCB5b3Ugc2hvcnRseSB0byBsZWFybiB3aGF0IHlvdSdyZSBsb29raW5nIGZvciBhbmQgc3RhcnQgc2VuZGluZyBtYXRjaGluZyBob21lcy4iOgogICAgICAgICAgICBkYXRhLmludGVudD09PSJyZW50Ij8iSSdsbCB0ZXh0IHlvdSBzaG9ydGx5IHdpdGggcmVudGFscyB0aGF0IGZpdCB3aGF0IHlvdSdyZSBsb29raW5nIGZvci4iOgogICAgICAgICAgICBkYXRhLmludGVudD09PSJpbnZlc3QiPyJZb3UncmUgb24gdGhlIGxpc3QuIEknbGwgdGV4dCB5b3Ugb2ZmLW1hcmtldCBkZWFscyBhcyBzb29uIGFzIHRoZXkgY29tZSB1cC4iOgogICAgICAgICAgICAiSSdsbCB0ZXh0IHlvdSBzaG9ydGx5IHRvIHRhbGsgdGhyb3VnaCB5b3VyIHBsYW5zLiI7CiAgICBpZighZGF0YS5zbXNfY29uc2VudCltc2c9bXNnLnJlcGxhY2UoInRleHQiLCJyZWFjaCBvdXQgdG8iKTsKICAgIHJvb3QuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJybGYtY2FyZCI+PGRpdiBjbGFzcz0icmxmLWRvbmUgcmxmLWZhZGUiPjxkaXYgY2xhc3M9InJsZi1jaGVjayI+4pyTPC9kaXY+PGgyIGNsYXNzPSJybGYtcSI+WW91XCdyZSBhbGwgc2V0LCAnK2ZpcnN0KychPC9oMj48cCBjbGFzcz0icmxmLXN1YiI+Jyttc2crJzwvcD4nKwogICAgICAnPGEgY2xhc3M9InJsZi1idG4gcmxmLWJ0bjIiIGhyZWY9InRlbDonK0NGRy5waG9uZSsnIj5QcmVmZXIgdG8gdGFsayBub3c/IENhbGwgKDkxNCkgMzU5LTE0MTU8L2E+PC9kaXY+PC9kaXY+JzsKICAgIGlmKHdpbmRvdy5ndGFnKXRyeXtndGFnKCJldmVudCIsImdlbmVyYXRlX2xlYWQiLHtsZWFkX3R5cGU6ZGF0YS5pbnRlbnR9KTt9Y2F0Y2goXyl7fQogICAgaWYod2luZG93LmZicSl0cnl7ZmJxKCJ0cmFjayIsIkxlYWQiLHtjb250ZW50X2NhdGVnb3J5OmRhdGEuaW50ZW50fSk7fWNhdGNoKF8pe30KICB9CiAgZnVuY3Rpb24gdW5sb2NrKGp1c3ROb3cpewogICAgdmFyIGc9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3B0cy5ndWlkZUlkKTsgaWYoIWcpcmV0dXJuOwogICAgZy5oaWRkZW49ZmFsc2U7CiAgICByb290LmlubmVySFRNTD0nPGRpdiBjbGFzcz0icmxmLWNhcmQgcmxmLWRvbmUiPjxkaXYgY2xhc3M9InJsZi1jaGVjayI+4pyTPC9kaXY+PGgyIGNsYXNzPSJybGYtcSI+JysoanVzdE5vdz8iWW91ciBndWlkZSBpcyB1bmxvY2tlZCEiOiJXZWxjb21lIGJhY2shIikrJzwvaDI+PHAgY2xhc3M9InJsZi1zdWIiPicrKGp1c3ROb3c/IlNjcm9sbCBkb3duIHRvIHJlYWQgaXQuIEkndmUgYWxzbyB0ZXh0ZWQgeW91IGEgbGluay4iOiJZb3VyIGd1aWRlIGlzIGJlbG93LiIpKyc8L3A+PC9kaXY+JzsKICAgIGlmKGp1c3ROb3cpc2V0VGltZW91dChmdW5jdGlvbigpe2cuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJzdGFydCJ9KTt9LDQwMCk7CiAgfQogIGlmKG9wdHMudW5sb2NrJiZzdG9yZSgicmxmXyIrb3B0cy51bmxvY2spPT09IjEiKXt1bmxvY2soZmFsc2UpO31lbHNle3JlbmRlcigpO30KICByZXR1cm4ge3NldEludGVudDpmdW5jdGlvbih2KXtkYXRhPXtpbnRlbnQ6dn07aT0xO3JlbmRlcigpO3Jvb3Quc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJzdGFydCJ9KTt9fTsKfQoKZnVuY3Rpb24gc3RpY2t5QmFyKCl7CiAgaWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImpyLWJhciIpKXJldHVybjsKICB2YXIgY3NzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CiAgY3NzLnRleHRDb250ZW50PSIjanItYmFye3Bvc2l0aW9uOmZpeGVkO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3otaW5kZXg6OTk5OTtkaXNwbGF5Om5vbmU7Z2FwOjhweDtwYWRkaW5nOjEwcHggMTJweCBjYWxjKDEwcHggKyBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkpO2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuOTYpO2JveC1zaGFkb3c6MCAtNHB4IDIwcHggcmdiYSgwLDAsMCwuMTIpO2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmfSIrCiAgICAiI2pyLWJhciBhe2ZsZXg6MTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjZweDt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjE1cHg7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTJweCA2cHg7Ym9yZGVyOjJweCBzb2xpZCAjMDA3MWUzO2NvbG9yOiMwMDcxZTM7YmFja2dyb3VuZDojZmZmfSIrCiAgICAiI2pyLWJhciBhLmpyLW1haW57ZmxleDoxLjY7YmFja2dyb3VuZDojMDA3MWUzO2NvbG9yOiNmZmZ9IisKICAgICJAbWVkaWEgKG1heC13aWR0aDo3MzZweCl7I2pyLWJhcntkaXNwbGF5OmZsZXh9Ym9keXtwYWRkaW5nLWJvdHRvbTo3NnB4IWltcG9ydGFudH19IjsKICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGNzcyk7CiAgdmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7IGIuaWQ9ImpyLWJhciI7CiAgYi5pbm5lckhUTUw9JzxhIGhyZWY9InRlbDonK0NGRy5waG9uZSsnIiBhcmlhLWxhYmVsPSJDYWxsIEplcnJpbiI+8J+TniBDYWxsPC9hPjxhIGhyZWY9InNtczonK0NGRy5waG9uZSsnIiBhcmlhLWxhYmVsPSJUZXh0IEplcnJpbiI+8J+SrCBUZXh0PC9hPjxhIGNsYXNzPSJqci1tYWluIiBocmVmPSIjaG9tZSIgaWQ9ImpyLWJhci1nbyI+R2V0IFN0YXJ0ZWQg4oaSPC9hPic7CiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChiKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgianItYmFyLWdvIikub25jbGljaz1mdW5jdGlvbihldil7CiAgICB2YXIgaD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmxmLWhlcm8iKTsKICAgIGlmKGgmJmgub2Zmc2V0UGFyZW50KXtldi5wcmV2ZW50RGVmYXVsdCgpO2guc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJzdGFydCJ9KTt9CiAgICBlbHNle3NldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgeD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmxmLWhlcm8iKTtpZih4KXguc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJzdGFydCJ9KTt9LDcwMCk7fQogIH07Cn0KCmlmKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmxmLWNzcycpKXt2YXIgc3Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtzdC5pZD0ncmxmLWNzcyc7c3QudGV4dENvbnRlbnQ9Ii5ybGYtbW91bnR7LS1ybGYtYnJhbmQ6IzAwNzFlMzstLXJsZi1icmFuZC1kYXJrOiMwMDViYjg7LS1ybGYtYWNjZW50OiNlZWY1ZmQ7LS1ybGYtdGV4dDojMWQxZDFmOy0tcmxmLW11dGVkOiM2ZTZlNzM7LS1ybGYtYm9yZGVyOiNlM2UzZTg7LS1ybGYtYmc6I2ZmZmZmZjstLXJsZi1lcnJvcjojYzAzOTJiOyBmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCxcIlNlZ29lIFVJXCIsUm9ib3RvLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2NvbG9yOnZhcigtLXJsZi10ZXh0KTttYXgtd2lkdGg6NTYwcHg7bWFyZ2luOjAgYXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3h9IC5ybGYtbW91bnQgKntib3gtc2l6aW5nOmJvcmRlci1ib3h9IC5ybGYtbW91bnQgLnJsZi1jYXJke2JhY2tncm91bmQ6dmFyKC0tcmxmLWJnKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLXJsZi1ib3JkZXIpO2JvcmRlci1yYWRpdXM6MThweDtwYWRkaW5nOjI4cHggMjJweCAyMnB4O2JveC1zaGFkb3c6MCA4cHggMzBweCByZ2JhKDAsMCwwLC4wOCl9IC5ybGYtbW91bnQgLnJsZi1wcm9ncmVzc3toZWlnaHQ6NnB4O2JhY2tncm91bmQ6dmFyKC0tcmxmLWFjY2VudCk7Ym9yZGVyLXJhZGl1czo5OXB4O292ZXJmbG93OmhpZGRlbjttYXJnaW4tYm90dG9tOjIycHh9IC5ybGYtbW91bnQgLnJsZi1iYXJ7aGVpZ2h0OjEwMCU7d2lkdGg6MDtiYWNrZ3JvdW5kOnZhcigtLXJsZi1icmFuZCk7Ym9yZGVyLXJhZGl1czo5OXB4O3RyYW5zaXRpb246d2lkdGggLjM1cyBlYXNlfSAucmxmLW1vdW50IC5ybGYtcXtmb250LXNpemU6MjNweDtsaW5lLWhlaWdodDoxLjI1O2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW46MCAwIDZweH0gLnJsZi1tb3VudCAucmxmLXN1Yntmb250LXNpemU6MTVweDtjb2xvcjp2YXIoLS1ybGYtbXV0ZWQpO21hcmdpbjowIDAgMjBweH0gLnJsZi1tb3VudCAucmxmLW9wdGlvbnN7ZGlzcGxheTpncmlkO2dhcDoxMHB4fSAucmxmLW1vdW50IC5ybGYtb3B0aW9ucy50d297Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnJ9IC5ybGYtbW91bnQgLnJsZi1vcHR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTJweDt3aWR0aDoxMDAlO3RleHQtYWxpZ246bGVmdDtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLXJsZi10ZXh0KTtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ybGYtYm9yZGVyKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoxNXB4IDE2cHg7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1cyxiYWNrZ3JvdW5kIC4xNXMsdHJhbnNmb3JtIC4xc30gLnJsZi1tb3VudCAucmxmLW9wdGlvbnMudHdvIC5ybGYtb3B0LndpZGV7Z3JpZC1jb2x1bW46MSAvIC0xfSAucmxmLW1vdW50IC5ybGYtb3B0aW9ucy50d28gLnJsZi1vcHR7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2p1c3RpZnktY29udGVudDpjZW50ZXI7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzoxOHB4IDEwcHg7Z2FwOjZweH0gLnJsZi1tb3VudCAucmxmLW9wdDpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tcmxmLWJyYW5kKX0gLnJsZi1tb3VudCAucmxmLW9wdDphY3RpdmV7dHJhbnNmb3JtOnNjYWxlKC45OCl9IC5ybGYtbW91bnQgLnJsZi1vcHQuc2Vse2JvcmRlci1jb2xvcjp2YXIoLS1ybGYtYnJhbmQpO2JhY2tncm91bmQ6dmFyKC0tcmxmLWFjY2VudCl9IC5ybGYtbW91bnQgLnJsZi1pY297Zm9udC1zaXplOjI2cHg7bGluZS1oZWlnaHQ6MX0gLnJsZi1tb3VudCBsYWJlbC5ybGYtbGJse2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NjAwO21hcmdpbjoxNHB4IDAgNnB4fSAucmxmLW1vdW50IGlucHV0LnJsZi1pbnt3aWR0aDoxMDAlO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTZweDtwYWRkaW5nOjE0cHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ybGYtYm9yZGVyKTtib3JkZXItcmFkaXVzOjEycHg7YmFja2dyb3VuZDojZmZmO2NvbG9yOnZhcigtLXJsZi10ZXh0KTtvdXRsaW5lOm5vbmU7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1c30gLnJsZi1tb3VudCBpbnB1dC5ybGYtaW46Zm9jdXN7Ym9yZGVyLWNvbG9yOnZhcigtLXJsZi1icmFuZCl9IC5ybGYtbW91bnQgaW5wdXQucmxmLWluLmJhZHtib3JkZXItY29sb3I6dmFyKC0tcmxmLWVycm9yKX0gLnJsZi1tb3VudCAucmxmLWVycntjb2xvcjp2YXIoLS1ybGYtZXJyb3IpO2ZvbnQtc2l6ZToxM3B4O21hcmdpbi10b3A6NnB4O21pbi1oZWlnaHQ6MTZweH0gLnJsZi1tb3VudCAucmxmLWJ0bntkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7bWFyZ2luLXRvcDoxOHB4O2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTdweDtmb250LXdlaWdodDo3MDA7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLXJsZi1icmFuZCk7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MTZweDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjE1c30gLnJsZi1tb3VudCAucmxmLWJ0bjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLXJsZi1icmFuZC1kYXJrKX0gLnJsZi1tb3VudCAucmxmLWJ0bltkaXNhYmxlZF17b3BhY2l0eTouNjtjdXJzb3I6d2FpdH0gLnJsZi1tb3VudCAucmxmLW5hdntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi10b3A6MTZweDttaW4taGVpZ2h0OjIycHh9IC5ybGYtbW91bnQgLnJsZi1iYWNre2JhY2tncm91bmQ6bm9uZTtib3JkZXI6MDtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE0cHg7Y29sb3I6dmFyKC0tcmxmLW11dGVkKTtjdXJzb3I6cG9pbnRlcjtwYWRkaW5nOjRweCAwfSAucmxmLW1vdW50IC5ybGYtYmFjazpob3Zlcntjb2xvcjp2YXIoLS1ybGYtdGV4dCl9IC5ybGYtbW91bnQgLnJsZi1zdGVwLWNvdW50e2ZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXJsZi1tdXRlZCl9IC5ybGYtbW91bnQgLnJsZi1jb25zZW50e2Rpc3BsYXk6ZmxleDtnYXA6MTBweDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O21hcmdpbi10b3A6MTZweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjQ1O2NvbG9yOnZhcigtLXJsZi1tdXRlZCl9IC5ybGYtbW91bnQgLnJsZi1jb25zZW50IGlucHV0e21hcmdpbi10b3A6MnB4O3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7ZmxleDowIDAgMThweDthY2NlbnQtY29sb3I6dmFyKC0tcmxmLWJyYW5kKX0gLnJsZi1tb3VudCAucmxmLWNvbnNlbnQgYXtjb2xvcjp2YXIoLS1ybGYtbXV0ZWQpfSAucmxmLW1vdW50IC5ybGYtdHJ1c3R7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjE2cHg7ZmxleC13cmFwOndyYXA7bWFyZ2luLXRvcDoxNHB4O2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXJsZi1tdXRlZCl9IC5ybGYtbW91bnQgLnJsZi1ocHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi05OTk5cHg7d2lkdGg6MXB4O2hlaWdodDoxcHg7b3ZlcmZsb3c6aGlkZGVufSAucmxmLW1vdW50IC5ybGYtZG9uZXt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjEwcHggMH0gLnJsZi1tb3VudCAucmxmLWNoZWNre3dpZHRoOjY0cHg7aGVpZ2h0OjY0cHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDp2YXIoLS1ybGYtYWNjZW50KTtjb2xvcjp2YXIoLS1ybGYtYnJhbmQpO2ZvbnQtc2l6ZTozNHB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW46MCBhdXRvIDE2cHh9IC5ybGYtbW91bnQgLnJsZi1mYWRle2FuaW1hdGlvbjpybGZJbiAuM3MgZWFzZX0gQGtleWZyYW1lcyBybGZJbntmcm9te29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSg4cHgpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZX19IEBtZWRpYSAobWF4LXdpZHRoOjQyMHB4KXsucmxmLW1vdW50IC5ybGYtY2FyZHtwYWRkaW5nOjIycHggMTZweCAxOHB4fS5ybGYtbW91bnQgLnJsZi1xe2ZvbnQtc2l6ZToyMXB4fX0gLnJsZi1tb3VudCAucmxmLWJ0bjJ7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMwMDcxZTM7Ym9yZGVyOjJweCBzb2xpZCAjMDA3MWUzO3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtc2l6ZToxNXB4fSAucmxmLW1vdW50IC5ybGYtYnRuMjpob3ZlcntiYWNrZ3JvdW5kOiNlZWY1ZmR9IC5ybGYtbW91bnR7c2Nyb2xsLW1hcmdpbi10b3A6MTZweH0iO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3QpO30KZnVuY3Rpb24gbGF5b3V0KCl7CiAgdmFyIGhvbWU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvbWUtc2VjdGlvbiIpOwogIHZhciBoZXJvPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJqci1oZXJvIik7IAogIGlmKGhvbWUmJmhlcm8pe3ZhciBjPWhlcm8uY2xvc2VzdCgiLmVtYmVkLWNvbXBvbmVudCIpfHxoZXJvOyBpZihob21lLmZpcnN0RWxlbWVudENoaWxkIT09Yylob21lLmluc2VydEJlZm9yZShjLGhvbWUuZmlyc3RFbGVtZW50Q2hpbGQpO30KICB2YXIgcmV2PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJqci1yZXZpZXdzIiksIGNvbnRhY3Q9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5lcjAxIik7CiAgaWYocmV2JiZjb250YWN0JiZjb250YWN0LnBhcmVudE5vZGUpe3ZhciByPXJldi5jbG9zZXN0KCIuZW1iZWQtY29tcG9uZW50Iil8fHJldjsgaWYoci5uZXh0RWxlbWVudFNpYmxpbmchPT1jb250YWN0KWNvbnRhY3QucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocixjb250YWN0KTt9CiAgW1siY29udGFpbmVyMDMiLCIjYnV5ZXJzZ3VpZGUiXSxbImNvbnRhaW5lcjA1IiwiI3NlbGxlcnNndWlkZSJdLFsiY29udGFpbmVyMDYiLCIjaW52ZXN0bWVudHMiXV0uZm9yRWFjaChmdW5jdGlvbihwKXsKICAgIHZhciBib3g9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocFswXSk7IGlmKCFib3gpcmV0dXJuOwogICAgYm94LnF1ZXJ5U2VsZWN0b3JBbGwoJ2FbaHJlZj0iI2Zvcm0iXScpLmZvckVhY2goZnVuY3Rpb24oYSl7YS5zZXRBdHRyaWJ1dGUoImhyZWYiLHBbMV0pO30pOwogIH0pOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiNob21lLXNlY3Rpb24gLnRleHQtY29tcG9uZW50IikuZm9yRWFjaChmdW5jdGlvbih0KXsKICAgIGlmKC9TQUxFU01BTi9pLnRlc3QodC50ZXh0Q29udGVudCkmJnQuY2hpbGRyZW4ubGVuZ3RoPT09MCl0LnRleHRDb250ZW50PXQudGV4dENvbnRlbnQucmVwbGFjZSgvU0FMRVNNQU4vaSxmdW5jdGlvbihtKXtyZXR1cm4gbT09PW0udG9VcHBlckNhc2UoKT8iU0FMRVNQRVJTT04iOiJTYWxlc3BlcnNvbiI7fSk7CiAgfSk7Cn0KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKGV2KXsKICB2YXIgYT1ldi50YXJnZXQuY2xvc2VzdCYmZXYudGFyZ2V0LmNsb3Nlc3QoIltkYXRhLXJsZi1wcmVdIik7IGlmKCFhKXJldHVybjsKICB0cnl7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgicmxmX3ByZSIsYS5nZXRBdHRyaWJ1dGUoImRhdGEtcmxmLXByZSIpKTt9Y2F0Y2goXyl7fQogIHZhciBoPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJybGYtaGVybyIpOwogIGlmKGgmJmgub2Zmc2V0UGFyZW50JiZ3aW5kb3cuUkxGLmhlcm8pe2V2LnByZXZlbnREZWZhdWx0KCk7d2luZG93LlJMRi5oZXJvLnNldEludGVudChhLmdldEF0dHJpYnV0ZSgiZGF0YS1ybGYtcHJlIikpO3RyeXtzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCJybGZfcHJlIik7fWNhdGNoKF8pe319Cn0sdHJ1ZSk7CndpbmRvdy5STEY9e21vdW50Om1vdW50LHN0aWNreUJhcjpzdGlja3lCYXIsbGF5b3V0OmxheW91dH07Cn0KZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnJsZi1tb3VudDpub3QoW2RhdGEtcmVhZHldKSIpLmZvckVhY2goZnVuY3Rpb24oZWwpewogIGVsLnNldEF0dHJpYnV0ZSgiZGF0YS1yZWFkeSIsIjEiKTsKICB2YXIgaW5zdD13aW5kb3cuUkxGLm1vdW50KGVsLHtpbnRlbnQ6ZWwuZ2V0QXR0cmlidXRlKCJkYXRhLWludGVudCIpfHxudWxsLG5hbWU6ZWwuZ2V0QXR0cmlidXRlKCJkYXRhLW5hbWUiKXx8Im1haW4iLHVubG9jazplbC5nZXRBdHRyaWJ1dGUoImRhdGEtdW5sb2NrIil8fG51bGwsZ3VpZGVJZDplbC5nZXRBdHRyaWJ1dGUoImRhdGEtZ3VpZGUiKXx8bnVsbH0pOwogIGlmKGVsLmlkPT09InJsZi1oZXJvIil7d2luZG93LlJMRi5oZXJvPWluc3Q7CiAgICB2YXIgcHJlPW51bGw7dHJ5e3ByZT1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCJybGZfcHJlIik7c2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgicmxmX3ByZSIpO31jYXRjaChfKXt9CiAgICBpZihwcmUpc2V0VGltZW91dChmdW5jdGlvbigpe2luc3Quc2V0SW50ZW50KHByZSk7fSwzMDApO30KfSk7CndpbmRvdy5STEYuc3RpY2t5QmFyKCk7CndpbmRvdy5STEYubGF5b3V0KCk7c2V0VGltZW91dCh3aW5kb3cuUkxGLmxheW91dCw4MDApOwp9KSgpOwo=")));(new Function(s))();})();(function(){if(window.__jrLeo)return;window.__jrLeo=1;var L="https://heyleo.com/jerrinrealty";function add(){document.querySelectorAll(".rlf-mount .rlf-done").forEach(function(d){if(d.querySelector(".jr-leo"))return;var p=document.createElement("p");p.className="rlf-sub jr-leo";p.style.margin="18px 0 0";p.textContent="While you wait, try my AI home search. Just describe your dream home:";var a=document.createElement("a");a.className="rlf-btn rlf-btn2";a.href=L;a.target="_blank";a.rel="noopener";a.textContent="Search homes with AI →";a.style.marginTop="8px";p.appendChild(a);d.appendChild(p);});}new MutationObserver(add).observe(document.body,{childList:true,subtree:true});add();})();(function(){var H=decodeURIComponent(escape(atob("PGZvb3RlciBjbGFzcz0ianItZm9vdCIgaWQ9ImpyLWZvb3QiPgo8c3R5bGU+CiN0ZXh0MzcsI2xpbmtzMDMsI2xpbmtzMDQsI3RleHQwMiwjbGlua3MwMiwjbGlua3MwMSwjaWNvbnMwMXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fQouanItZm9vdHtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwiU2Vnb2UgVUkiLFJvYm90byxJbnRlcixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjttYXgtd2lkdGg6NzIwcHg7bWFyZ2luOjMycHggYXV0byAwO3BhZGRpbmc6MjJweCAxNnB4IDI2cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2UzZTNlODt0ZXh0LWFsaWduOmxlZnQ7Y29sb3I6IzZlNmU3Mztmb250LXNpemU6MTIuNXB4O2xpbmUtaGVpZ2h0OjEuNn0KLmpyLWZvb3QgYntjb2xvcjojMWQxZDFmfQouanItZm9vdCBwe21hcmdpbjowIDAgMTBweH0KLmpyLWZvb3QgYXtjb2xvcjojNDg0ODRmO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9Ci5qci1mb290IC5qci1saW5rc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjZweCAxNHB4O21hcmdpbjowIDAgMTJweH0KLmpyLWZvb3QgLmpyLWVob3tkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMWQxZDFmfQo8L3N0eWxlPgo8cD48Yj5KZXJyaW4gSm9objwvYj4sIExpY2Vuc2VkIFJlYWwgRXN0YXRlIFNhbGVzcGVyc29uLCBOWSBMaWMuICMxMDQwMTM5MDQxMyAmbWlkZG90OyBKZXJyaW4gUmVhbHR5LCBhZmZpbGlhdGVkIHdpdGggPGI+UmVhbCBCcm9rZXIgTlkgTExDPC9iPiwgTGljZW5zZWQgUmVhbCBFc3RhdGUgQnJva2VyICZtaWRkb3Q7IDQ3NyBNYWRpc29uIEF2ZS4sIFN0ZS4gNjQ4LCBOZXcgWW9yaywgTlkgMTAwMjIgJm1pZGRvdDsgQnJva2VyIG9mZmljZSA8YSBocmVmPSJ0ZWw6KzE4NTU0NTAwNDQyIj4oODU1KSA0NTAtMDQ0MjwvYT4gJm1pZGRvdDsgQWdlbnQgPGEgaHJlZj0idGVsOisxOTE0MzU5MTQxNSI+KDkxNCkgMzU5LTE0MTU8L2E+ICZtaWRkb3Q7IDxhIGhyZWY9Im1haWx0bzpqb2huQGplcnJpbnJlYWx0eS5jb20iPmpvaG5AamVycmlucmVhbHR5LmNvbTwvYT48L3A+CjxwIGNsYXNzPSJqci1laG8iPiYjODk2MjsgRXF1YWwgSG91c2luZyBPcHBvcnR1bml0eTwvcD4KPHA+V2Ugc3VwcG9ydCB0aGUgRmFpciBIb3VzaW5nIEFjdCBhbmQgdGhlIE5ldyBZb3JrIFN0YXRlIEh1bWFuIFJpZ2h0cyBMYXcgYW5kIGRvIG5vdCBkaXNjcmltaW5hdGUgb24gYW55IHByb3RlY3RlZCBiYXNpcy4gQWxsIGxhd2Z1bCBzb3VyY2VzIG9mIGluY29tZSwgaW5jbHVkaW5nIGhvdXNpbmcgdm91Y2hlcnMsIGFyZSBhY2NlcHRlZC48L3A+CjxkaXYgY2xhc3M9ImpyLWxpbmtzIj4KPGEgaHJlZj0iaHR0cHM6Ly9vbmVyZWFsLmNvbS8iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj5SZWFsIEJyb2tlciBOWSBMTEM8L2E+CjxhIGhyZWY9Imh0dHBzOi8vYm9sdC1jdXN0b20tYXNzZXRzLnRoZXJlYWxicm9rZXJhZ2UuY29tL25ldy15b3JrLWNvbXBsaWFuY2Uvc3RhbmRhcmRpemVkLW9wZXJhdGluZy1wcm9jZWR1cmUtbm90YXJpemVkLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPk5ZIFN0YW5kYXJkIE9wZXJhdGluZyBQcm9jZWR1cmVzPC9hPgo8YSBocmVmPSJodHRwczovL2Rvcy5ueS5nb3Yvc3lzdGVtL2ZpbGVzL2RvY3VtZW50cy8yMDIxLzA4L2ZhaXJob3VzaW5nbm90aWNlLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPk5ZIEZhaXIgSG91c2luZyBOb3RpY2U8L2E+CjxhIGhyZWY9Imh0dHBzOi8vbnlzYXIuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIyLzA1L1JNQV9Vbmtub3duLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPlJlYXNvbmFibGUgQWNjb21tb2RhdGlvbnMgTm90aWNlPC9hPgo8YSBocmVmPSIjcHJpdmFjeXBvbGljeSI+UHJpdmFjeSBQb2xpY3k8L2E+CjxhIGhyZWY9IiN0ZXJtIj5UZXJtcyAmYW1wOyBDb25kaXRpb25zPC9hPgo8YSBocmVmPSIjdGVybSI+QWNjZXNzaWJpbGl0eTwvYT4KPGEgaHJlZj0iaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9qZXJyaW5yZWFsdHkiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj5JbnN0YWdyYW08L2E+CjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9zaGFyZS8xSmdTTlFTNE5KLyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPkZhY2Vib29rPC9hPgo8L2Rpdj4KPHA+TGlzdGluZyBpbmZvcm1hdGlvbiBpcyBkZWVtZWQgcmVsaWFibGUgYnV0IG5vdCBndWFyYW50ZWVkLiBSZXZpZXdzIGFyZSBmcm9tIEdvb2dsZSBhbmQgWmlsbG93OyBzb21lIGFyZSBzaG9ydGVuZWQuIFNhbGVzIGRhdGEgZnJvbSBIb21lcy5jb20uIE5vdGhpbmcgb24gdGhpcyBzaXRlIGlzIGxlZ2FsLCB0YXggb3IgZmluYW5jaWFsIGFkdmljZS4gJmNvcHk7IDIwMjYgSmVycmluIFJlYWx0eS48L3A+CjwvZm9vdGVyPgo=")));function f(){document.querySelectorAll("section[id$='-section']").forEach(function(s){if(s.querySelector(".jr-foot"))return;var d=document.createElement("div");d.innerHTML=H;s.appendChild(d);});}f();setTimeout(f,1200);})();

Get Off-Market Deals

By submitting your information through this form, you consent to receive the requested real estate PDF guide via email from Jerrin John DBA Jerrin Realty, operating under Real Broker NY LLC. Your contact information will be used solely for the purpose of delivering the guide and may also be used to provide additional real estate information or updates.Your information will be handled in accordance with applicable privacy laws and policies. Submitting your information does not create any contractual or fiduciary relationship with Jerrin Realty or Real Broker NY LLC.

Investors

Get off-market deals texted to you first.

Multi-family, fixer-uppers and pre-market listings in Westchester & Rockland — before they hit Zillow.

  • ✓ Only deals that match your criteria
  • ✓ Quick numbers: price, rents, taxes
  • ✓ Unsubscribe anytime — reply STOP
(function(){var s=decodeURIComponent(escape(atob("KGZ1bmN0aW9uKCl7CmlmKCF3aW5kb3cuUkxGKXsKdmFyIENGRz17CiAgZW5kcG9pbnQ6Imh0dHBzOi8vc2NyaXB0Lmdvb2dsZS5jb20vbWFjcm9zL3MvQUtmeWNid3EzOGJSRVNDQjkzQ1AzODlZRG5qVjMxU0l6Y1M4TjR2STBub204RW9QeTNCeHcwY3ZRUjk0Z3N0RTl1Q1A3MjFXL2V4ZWMiLAogIGJyYW5kOiJKZXJyaW4gUmVhbHR5IiwKICBwcml2YWN5VXJsOiJodHRwczovL2plcnJpbnJlYWx0eS5jb20vI3ByaXZhY3lwb2xpY3kiLAogIHBob25lOiIrMTkxNDM1OTE0MTUiCn07CnZhciBTPXsKICBpbnRlbnQ6e3R5cGU6ImNhcmRzIixmaWVsZDoiaW50ZW50Iix0d286dHJ1ZSxxOiJIb3cgY2FuIEkgaGVscCB5b3UgdG9kYXk/IixzdWI6IkFuc3dlciBhIGZldyBxdWljayBxdWVzdGlvbnMuIFRha2VzIGFib3V0IDYwIHNlY29uZHMuIiwKICAgIG9wdGlvbnM6W1siYnV5Iiwi8J+PoSIsIkJ1eSBhIGhvbWUiXSxbInNlbGwiLCLwn5KwIiwiU2VsbCBteSBob21lIl0sWyJyZW50Iiwi8J+UkSIsIlJlbnQgYSBob21lIl0sWyJib3RoIiwi8J+UhCIsIkJ1eSAmIHNlbGwiXSxbInZhbHVlIiwi8J+TiiIsIldoYXQncyBteSBob21lIHdvcnRoPyIsIndpZGUiXV19LAogIHJfYXJlYTp7dHlwZToidGV4dCIsZmllbGQ6InJlbnRfYXJlYSIscToiV2hlcmUgd291bGQgeW91IGxpa2UgdG8gcmVudD8iLHN1YjoiQSBjaXR5LCBuZWlnaGJvcmhvb2Qgb3IgWklQIGNvZGUgaXMgcGVyZmVjdC4iLHBsYWNlaG9sZGVyOiJlLmcuIFlvbmtlcnMgb3IgMTA3MDEiLG1pbjoyLGVycjoiUGxlYXNlIHRlbGwgbWUgd2hlcmUgeW91J3JlIGxvb2tpbmcuIn0sCiAgcl9idWRnZXQ6e3R5cGU6ImNhcmRzIixmaWVsZDoicmVudF9idWRnZXQiLHE6IldoYXQncyB5b3VyIG1vbnRobHkgcmVudCBidWRnZXQ/IiwKICAgIG9wdGlvbnM6W1siVW5kZXIgJDIsMDAwIiwiIiwiIl0sWyIkMiwwMDAg4oCTICQzLDAwMCIsIiIsIiJdLFsiJDMsMDAwIOKAkyAkNCwwMDAiLCIiLCIiXSxbIiQ0LDAwMCsiLCIiLCIiXV19LAogIHNfYWRkcmVzczp7dHlwZToidGV4dCIsZmllbGQ6InByb3BlcnR5X2FkZHJlc3MiLHE6ZnVuY3Rpb24oZCl7cmV0dXJuIGQuaW50ZW50PT09InZhbHVlIj8iV2hhdCdzIHRoZSBhZGRyZXNzIG9mIHRoZSBob21lPyI6IldoYXQncyB0aGUgYWRkcmVzcyBvZiB0aGUgaG9tZSB5b3UncmUgc2VsbGluZz8iO30sCiAgICBzdWI6IlVzZWQgb25seSB0byBwcmVwYXJlIHlvdXIgY3VzdG9tIHByaWNpbmcgZXN0aW1hdGUuIixwbGFjZWhvbGRlcjoiMTIzIE1haW4gU3QsIENpdHksIFpJUCIsbWluOjYsZXJyOiJQbGVhc2UgZW50ZXIgdGhlIHByb3BlcnR5IGFkZHJlc3MuIn0sCiAgc190eXBlOnt0eXBlOiJjYXJkcyIsZmllbGQ6InByb3BlcnR5X3R5cGUiLHE6IldoYXQgdHlwZSBvZiBwcm9wZXJ0eSBpcyBpdD8iLAogICAgb3B0aW9uczpbWyJTaW5nbGUtZmFtaWx5Iiwi8J+PoCIsIlNpbmdsZS1mYW1pbHkgaG9tZSJdLFsiQ29uZG8vVG93bmhvdXNlIiwi8J+PoiIsIkNvbmRvIG9yIHRvd25ob3VzZSJdLFsiTXVsdGktZmFtaWx5Iiwi8J+PmO+4jyIsIk11bHRpLWZhbWlseSJdLFsiTGFuZC9PdGhlciIsIvCfjLMiLCJMYW5kIG9yIG90aGVyIl1dfSwKICBiX2FyZWE6e3R5cGU6InRleHQiLGZpZWxkOiJidXlfYXJlYSIscToiV2hlcmUgd291bGQgeW91IGxpa2UgdG8gYnV5PyIsc3ViOiJBIGNpdHksIG5laWdoYm9yaG9vZCBvciBaSVAgY29kZSBpcyBwZXJmZWN0LiIscGxhY2Vob2xkZXI6ImUuZy4gV2hpdGUgUGxhaW5zIG9yIDEwNjAxIixtaW46MixlcnI6IlBsZWFzZSB0ZWxsIG1lIHdoZXJlIHlvdSdyZSBsb29raW5nLiJ9LAogIGJfcHJpY2U6e3R5cGU6ImNhcmRzIixmaWVsZDoicHJpY2VfcmFuZ2UiLHE6IldoYXQgcHJpY2UgcmFuZ2UgZmVlbHMgY29tZm9ydGFibGU/IiwKICAgIG9wdGlvbnM6W1siVW5kZXIgJDMwMEsiLCIiLCIiXSxbIiQzMDBLIOKAkyAkNTAwSyIsIiIsIiJdLFsiJDUwMEsg4oCTICQ3NTBLIiwiIiwiIl0sWyIkNzUwSyDigJMgJDFNIiwiIiwiIl0sWyIkMU0rIiwiIiwiIl1dfSwKICBiX2ZpbmFuY2U6e3R5cGU6ImNhcmRzIixmaWVsZDoiZmluYW5jaW5nIixxOiJIb3cgYXJlIHlvdSBwbGFubmluZyB0byBwYXk/IiwKICAgIG9wdGlvbnM6W1siUHJlLWFwcHJvdmVkIiwi4pyFIiwiSSdtIHByZS1hcHByb3ZlZCJdLFsiQ2FzaCIsIvCfkrUiLCJQYXlpbmcgY2FzaCJdLFsiTm90IHlldCIsIuKPsyIsIk5vdCBwcmUtYXBwcm92ZWQgeWV0Il0sWyJOZWVkIGxlbmRlciIsIvCfpJ0iLCJJJ2QgbGlrZSBhIGxlbmRlciByZWNvbW1lbmRhdGlvbiJdXX0sCiAgdGltZWxpbmU6e3R5cGU6ImNhcmRzIixmaWVsZDoidGltZWxpbmUiLHE6IldoZW4gYXJlIHlvdSBob3BpbmcgdG8gbWFrZSBhIG1vdmU/IiwKICAgIG9wdGlvbnM6W1siQVNBUCIsIuKaoSIsIkFzIHNvb24gYXMgcG9zc2libGUiXSxbIjEtMyBtb250aHMiLCLwn5OFIiwiMeKAkzMgbW9udGhzIl0sWyIzLTYgbW9udGhzIiwi8J+Xk++4jyIsIjPigJM2IG1vbnRocyJdLFsiNisgbW9udGhzIiwi8J+MsSIsIjYrIG1vbnRocyJdLFsiSnVzdCBleHBsb3JpbmciLCLwn5GAIiwiSnVzdCBleHBsb3JpbmciXV19LAogIGludl90eXBlOnt0eXBlOiJjYXJkcyIsZmllbGQ6ImludmVzdF90eXBlIixxOiJXaGF0IGtpbmQgb2YgZGVhbHMgaW50ZXJlc3QgeW91PyIsc3ViOiJJJ2xsIHRleHQgeW91IG9mZi1tYXJrZXQgb3Bwb3J0dW5pdGllcyB0aGF0IG1hdGNoLiIsCiAgICBvcHRpb25zOltbIk11bHRpLWZhbWlseSIsIvCfj5jvuI8iLCJNdWx0aS1mYW1pbHkgKDLigJM0IHVuaXRzKSJdLFsiU2luZ2xlLWZhbWlseSIsIvCfj6AiLCJTaW5nbGUtZmFtaWx5IC8gZmxpcHMiXSxbIkxhbmQiLCLwn4yzIiwiTGFuZCAvIGRldmVsb3BtZW50Il0sWyJBbnkiLCLwn5K8IiwiU2hvdyBtZSBldmVyeXRoaW5nIl1dfSwKICBpbnZfYnVkZ2V0Ont0eXBlOiJjYXJkcyIsZmllbGQ6InByaWNlX3JhbmdlIixxOiJXaGF0J3MgeW91ciBwdXJjaGFzZSBidWRnZXQ/IiwKICAgIG9wdGlvbnM6W1siVW5kZXIgJDUwMEsiLCIiLCIiXSxbIiQ1MDBLIOKAkyAkMU0iLCIiLCIiXSxbIiQxTSDigJMgJDJNIiwiIiwiIl0sWyIkMk0rIiwiIiwiIl1dfSwKICBjb250YWN0Ont0eXBlOiJjb250YWN0IixxOmZ1bmN0aW9uKGQpewogICAgICByZXR1cm4gZC5pbnRlbnQ9PT0idmFsdWUiPyJMYXN0IHN0ZXAhIFdoZXJlIHNob3VsZCBJIHNlbmQgeW91ciBob21lIHZhbHVlIHJlcG9ydD8iOgogICAgICAgICAgICAgZC5pbnRlbnQ9PT0iYnV5Ij8iTGFzdCBzdGVwISBXaGVyZSBzaG91bGQgSSBzZW5kIG1hdGNoaW5nIGhvbWVzPyI6CiAgICAgICAgICAgICBkLmludGVudD09PSJyZW50Ij8iTGFzdCBzdGVwISBXaGVyZSBzaG91bGQgSSBzZW5kIGF2YWlsYWJsZSByZW50YWxzPyI6CiAgICAgICAgICAgICBkLmludGVudD09PSJidXllcl9ndWlkZSI/IkdldCB0aGUgZnJlZSBXZXN0Y2hlc3RlciAmIFJvY2tsYW5kIEJ1eWVyJ3MgR3VpZGUiOgogICAgICAgICAgICAgZC5pbnRlbnQ9PT0ic2VsbGVyX2d1aWRlIj8iR2V0IHRoZSBmcmVlIFdlc3RjaGVzdGVyICYgUm9ja2xhbmQgU2VsbGVyJ3MgR3VpZGUiOgogICAgICAgICAgICAgZC5pbnRlbnQ9PT0iaW52ZXN0Ij8iTGFzdCBzdGVwISBXaGVyZSBzaG91bGQgSSB0ZXh0IG9mZi1tYXJrZXQgZGVhbHM/IjoKICAgICAgICAgICAgICJMYXN0IHN0ZXAhIEhvdyBjYW4gSSByZWFjaCB5b3U/Ijt9LAogICAgc3ViOmZ1bmN0aW9uKGQpe3JldHVybiAvZ3VpZGUvLnRlc3QoZC5pbnRlbnQpPyJJbnN0YW50IGFjY2VzcyDigJQgcGx1cyBhIHRleHQgbGluayBzbyB5b3UgY2FuIHJlYWQgaXQgYW55dGltZS4iOiJObyBzcGFtLCBldmVyLiBJJ2xsIHBlcnNvbmFsbHkgZm9sbG93IHVwLiI7fX0KfTsKdmFyIEZMT1dTPXsKICBidXk6WyJpbnRlbnQiLCJiX2FyZWEiLCJiX3ByaWNlIiwiYl9maW5hbmNlIiwidGltZWxpbmUiLCJjb250YWN0Il0sCiAgc2VsbDpbImludGVudCIsInNfYWRkcmVzcyIsInNfdHlwZSIsInRpbWVsaW5lIiwiY29udGFjdCJdLAogIGJvdGg6WyJpbnRlbnQiLCJzX2FkZHJlc3MiLCJzX3R5cGUiLCJiX2FyZWEiLCJiX3ByaWNlIiwiYl9maW5hbmNlIiwidGltZWxpbmUiLCJjb250YWN0Il0sCiAgdmFsdWU6WyJpbnRlbnQiLCJzX2FkZHJlc3MiLCJzX3R5cGUiLCJ0aW1lbGluZSIsImNvbnRhY3QiXSwKICByZW50OlsiaW50ZW50Iiwicl9hcmVhIiwicl9idWRnZXQiLCJ0aW1lbGluZSIsImNvbnRhY3QiXSwKICBidXllcl9ndWlkZTpbImNvbnRhY3QiXSwgc2VsbGVyX2d1aWRlOlsiY29udGFjdCJdLAogIGludmVzdDpbImludl90eXBlIiwiaW52X2J1ZGdldCIsImNvbnRhY3QiXQp9Owp2YXIgbj0wOwpmdW5jdGlvbiBlc2Mocyl7cmV0dXJuIFN0cmluZyhzPT1udWxsPyIiOnMpLnJlcGxhY2UoL1smPD4iJ10vZyxmdW5jdGlvbihjKXtyZXR1cm57IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCJcIiI6IiZxdW90OyIsIiciOiImIzM5OyJ9W2NdO30pO30KZnVuY3Rpb24gZm10UGhvbmUodil7dmFyIGQ9di5yZXBsYWNlKC9cRC9nLCIiKS5yZXBsYWNlKC9eMSg/PVxkezEwfSkvLCIiKS5zbGljZSgwLDEwKTsKICBpZihkLmxlbmd0aDw0KXJldHVybiBkOyBpZihkLmxlbmd0aDw3KXJldHVybiIoIitkLnNsaWNlKDAsMykrIikgIitkLnNsaWNlKDMpOyByZXR1cm4iKCIrZC5zbGljZSgwLDMpKyIpICIrZC5zbGljZSgzLDYpKyItIitkLnNsaWNlKDYpO30KZnVuY3Rpb24gc3RvcmUoayx2KXt0cnl7aWYodj09PXVuZGVmaW5lZClyZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oayk7bG9jYWxTdG9yYWdlLnNldEl0ZW0oayx2KTt9Y2F0Y2goZSl7cmV0dXJuIG51bGw7fX0KCmZ1bmN0aW9uIG1vdW50KHJvb3Qsb3B0cyl7CiAgb3B0cz1vcHRzfHx7fTsgdmFyIHVpZD0iciIrKCsrbiksIGRhdGE9e30sIGk9MCwgc2VuZGluZz1mYWxzZSwgZml4ZWQ9b3B0cy5pbnRlbnR8fG51bGw7CiAgaWYoZml4ZWQpZGF0YS5pbnRlbnQ9Zml4ZWQ7CiAgZnVuY3Rpb24gZmxvdygpe3JldHVybiBGTE9XU1tkYXRhLmludGVudF18fEZMT1dTLmJ1eTt9CiAgZnVuY3Rpb24gdmFsKHgpe3JldHVybiB0eXBlb2YgeD09PSJmdW5jdGlvbiI/eChkYXRhKTp4O30KICBmdW5jdGlvbiAkKGlkKXtyZXR1cm4gcm9vdC5xdWVyeVNlbGVjdG9yKCIjIit1aWQrIi0iK2lkKTt9CiAgZnVuY3Rpb24gcmVuZGVyKCl7CiAgICB2YXIgZj1mbG93KCksIHM9U1tmW2ldXSwgcGN0PU1hdGgucm91bmQoKGkvZi5sZW5ndGgpKjEwMCksIHNob3dCYWNrPWZpeGVkP2k+MDppPjA7CiAgICB2YXIgaD0nPGRpdiBjbGFzcz0icmxmLWNhcmQiPicrKGYubGVuZ3RoPjE/JzxkaXYgY2xhc3M9InJsZi1wcm9ncmVzcyI+PGRpdiBjbGFzcz0icmxmLWJhciIgc3R5bGU9IndpZHRoOicrcGN0KyclIj48L2Rpdj48L2Rpdj4nOicnKSsnPGRpdiBjbGFzcz0icmxmLWZhZGUiPic7CiAgICBoKz0nPGgyIGNsYXNzPSJybGYtcSI+Jytlc2ModmFsKHMucSkpKyc8L2gyPicrKHMuc3ViPyc8cCBjbGFzcz0icmxmLXN1YiI+Jytlc2ModmFsKHMuc3ViKSkrJzwvcD4nOicnKTsKICAgIGlmKHMudHlwZT09PSJjYXJkcyIpewogICAgICBoKz0nPGRpdiBjbGFzcz0icmxmLW9wdGlvbnMnKyhzLnR3bz8nIHR3byc6JycpKyciPic7CiAgICAgIHMub3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG8pewogICAgICAgIGgrPSc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJsZi1vcHQnKyhkYXRhW3MuZmllbGRdPT09b1swXT8nIHNlbCc6JycpKyhvWzNdPycgJytvWzNdOicnKSsnIiBkYXRhLXY9IicrZXNjKG9bMF0pKyciPicrKG9bMV0/JzxzcGFuIGNsYXNzPSJybGYtaWNvIj4nK29bMV0rJzwvc3Bhbj4nOicnKSsnPHNwYW4+Jytlc2Mob1syXXx8b1swXSkrJzwvc3Bhbj48L2J1dHRvbj4nOwogICAgICB9KTsKICAgICAgaCs9JzwvZGl2Pic7CiAgICB9IGVsc2UgaWYocy50eXBlPT09InRleHQiKXsKICAgICAgaCs9JzxpbnB1dCBjbGFzcz0icmxmLWluIiBpZD0iJyt1aWQrJy10IiB0eXBlPSJ0ZXh0IiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IicrZXNjKHMucGxhY2Vob2xkZXIpKyciIHZhbHVlPSInK2VzYyhkYXRhW3MuZmllbGRdfHwiIikrJyI+PGRpdiBjbGFzcz0icmxmLWVyciIgaWQ9IicrdWlkKyctZSI+PC9kaXY+JzsKICAgICAgaCs9JzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icmxmLWJ0biIgaWQ9IicrdWlkKyctbmV4dCI+Q29udGludWUg4oaSPC9idXR0b24+JzsKICAgIH0gZWxzZSB7CiAgICAgIGgrPSc8bGFiZWwgY2xhc3M9InJsZi1sYmwiIGZvcj0iJyt1aWQrJy1uIj5GdWxsIG5hbWU8L2xhYmVsPjxpbnB1dCBjbGFzcz0icmxmLWluIiBpZD0iJyt1aWQrJy1uIiB0eXBlPSJ0ZXh0IiBhdXRvY29tcGxldGU9Im5hbWUiIHZhbHVlPSInK2VzYyhkYXRhLm5hbWV8fCIiKSsnIj4nOwogICAgICBoKz0nPGxhYmVsIGNsYXNzPSJybGYtbGJsIiBmb3I9IicrdWlkKyctcCI+TW9iaWxlIHBob25lPC9sYWJlbD48aW5wdXQgY2xhc3M9InJsZi1pbiIgaWQ9IicrdWlkKyctcCIgdHlwZT0idGVsIiBpbnB1dG1vZGU9InRlbCIgYXV0b2NvbXBsZXRlPSJ0ZWwiIHBsYWNlaG9sZGVyPSIoNTU1KSA1NTUtNTU1NSIgdmFsdWU9IicrZXNjKGRhdGEucGhvbmV8fCIiKSsnIj4nOwogICAgICBoKz0nPGxhYmVsIGNsYXNzPSJybGYtbGJsIiBmb3I9IicrdWlkKyctbSI+RW1haWw8L2xhYmVsPjxpbnB1dCBjbGFzcz0icmxmLWluIiBpZD0iJyt1aWQrJy1tIiB0eXBlPSJlbWFpbCIgaW5wdXRtb2RlPSJlbWFpbCIgYXV0b2NvbXBsZXRlPSJlbWFpbCIgdmFsdWU9IicrZXNjKGRhdGEuZW1haWx8fCIiKSsnIj4nOwogICAgICBoKz0nPGRpdiBjbGFzcz0icmxmLWhwIj48bGFiZWw+V2Vic2l0ZTxpbnB1dCBpZD0iJyt1aWQrJy1ocCIgdHlwZT0idGV4dCIgdGFiaW5kZXg9Ii0xIiBhdXRvY29tcGxldGU9Im9mZiI+PC9sYWJlbD48L2Rpdj4nOwogICAgICBoKz0nPGxhYmVsIGNsYXNzPSJybGYtY29uc2VudCI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iJyt1aWQrJy1jIicrKGRhdGEuc21zX2NvbnNlbnQ/JyBjaGVja2VkJzonJykrJz48c3Bhbj5CeSBjaGVja2luZyB0aGlzIGJveCwgSSBhZ3JlZSB0byByZWNlaXZlIHRleHQgbWVzc2FnZXMgZnJvbSAnK2VzYyhDRkcuYnJhbmQpKycgYWJvdXQgbXkgcmVhbCBlc3RhdGUgaW5xdWlyeSBhdCB0aGUgbnVtYmVyIHByb3ZpZGVkLiBNc2cgJmFtcDsgZGF0YSByYXRlcyBtYXkgYXBwbHkuIE1zZyBmcmVxdWVuY3kgdmFyaWVzLiBSZXBseSBTVE9QIHRvIG9wdCBvdXQsIEhFTFAgZm9yIGhlbHAuIENvbnNlbnQgaXMgbm90IGEgY29uZGl0aW9uIG9mIHB1cmNoYXNlLiA8YSBocmVmPSInK2VzYyhDRkcucHJpdmFjeVVybCkrJyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPlByaXZhY3kgUG9saWN5PC9hPi48L3NwYW4+PC9sYWJlbD4nOwogICAgICB2YXIgY3RhPWRhdGEuaW50ZW50PT09InZhbHVlIj8iR2V0IG15IGhvbWUgdmFsdWUg4oaSIjovZ3VpZGUvLnRlc3QoZGF0YS5pbnRlbnQpPyJHZXQgbXkgZnJlZSBndWlkZSDihpIiOmRhdGEuaW50ZW50PT09ImludmVzdCI/IlNlbmQgbWUgZGVhbHMg4oaSIjoiQ29ubmVjdCB3aXRoIG1lIOKGkiI7CiAgICAgIGgrPSc8ZGl2IGNsYXNzPSJybGYtZXJyIiBpZD0iJyt1aWQrJy1lIj48L2Rpdj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJsZi1idG4iIGlkPSInK3VpZCsnLW5leHQiPicrY3RhKyc8L2J1dHRvbj4nOwogICAgICBoKz0nPGRpdiBjbGFzcz0icmxmLXRydXN0Ij48c3Bhbj7wn5SSIFlvdXIgaW5mbyBzdGF5cyBwcml2YXRlPC9zcGFuPjxzcGFuPuKtkCA1LjAgb24gR29vZ2xlPC9zcGFuPjwvZGl2Pic7CiAgICB9CiAgICBoKz0nPC9kaXY+JysoZi5sZW5ndGg+MT8nPGRpdiBjbGFzcz0icmxmLW5hdiI+Jysoc2hvd0JhY2s/JzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icmxmLWJhY2siIGlkPSInK3VpZCsnLWJhY2siPuKGkCBCYWNrPC9idXR0b24+JzonPHNwYW4+PC9zcGFuPicpKyc8c3BhbiBjbGFzcz0icmxmLXN0ZXAtY291bnQiPlN0ZXAgJysoaSsxKSsnIG9mICcrZi5sZW5ndGgrJzwvc3Bhbj48L2Rpdj4nOicnKSsnPC9kaXY+JzsKICAgIHJvb3QuaW5uZXJIVE1MPWg7IGJpbmQocyk7CiAgfQogIGZ1bmN0aW9uIGJpbmQocyl7CiAgICB2YXIgYmFjaz0kKCJiYWNrIik7IGlmKGJhY2spYmFjay5vbmNsaWNrPWZ1bmN0aW9uKCl7aS0tO3JlbmRlcigpO307CiAgICBpZihzLnR5cGU9PT0iY2FyZHMiKXsKICAgICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChyb290LnF1ZXJ5U2VsZWN0b3JBbGwoIi5ybGYtb3B0IiksZnVuY3Rpb24oYil7CiAgICAgICAgYi5vbmNsaWNrPWZ1bmN0aW9uKCl7ZGF0YVtzLmZpZWxkXT1iLmdldEF0dHJpYnV0ZSgiZGF0YS12Iik7Yi5jbGFzc0xpc3QuYWRkKCJzZWwiKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aSsrO3JlbmRlcigpO30sMTgwKTt9OwogICAgICB9KTsKICAgIH0gZWxzZSBpZihzLnR5cGU9PT0idGV4dCIpewogICAgICB2YXIgdD0kKCJ0IiksZ289ZnVuY3Rpb24oKXt2YXIgdj10LnZhbHVlLnRyaW0oKTsKICAgICAgICBpZih2Lmxlbmd0aDwocy5taW58fDEpKXt0LmNsYXNzTGlzdC5hZGQoImJhZCIpOyQoImUiKS50ZXh0Q29udGVudD1zLmVycjtyZXR1cm47fQogICAgICAgIGRhdGFbcy5maWVsZF09djtpKys7cmVuZGVyKCk7fTsKICAgICAgJCgibmV4dCIpLm9uY2xpY2s9Z287CiAgICAgIHQub25rZXlkb3duPWZ1bmN0aW9uKGUpe2lmKGUua2V5PT09IkVudGVyIil7ZS5wcmV2ZW50RGVmYXVsdCgpO2dvKCk7fX07CiAgICB9IGVsc2UgewogICAgICB2YXIgcD0kKCJwIik7IHAub25pbnB1dD1mdW5jdGlvbigpe3AudmFsdWU9Zm10UGhvbmUocC52YWx1ZSk7fTsKICAgICAgJCgibmV4dCIpLm9uY2xpY2s9c3VibWl0OwogICAgfQogIH0KICBmdW5jdGlvbiBzdWJtaXQoKXsKICAgIGlmKHNlbmRpbmcpcmV0dXJuOwogICAgdmFyIG5tPSQoIm4iKSxwPSQoInAiKSxtPSQoIm0iKSxlPSQoImUiKTsKICAgIFtubSxwLG1dLmZvckVhY2goZnVuY3Rpb24oeCl7eC5jbGFzc0xpc3QucmVtb3ZlKCJiYWQiKTt9KTsKICAgIGRhdGEubmFtZT1ubS52YWx1ZS50cmltKCk7IGRhdGEucGhvbmU9cC52YWx1ZS50cmltKCk7IGRhdGEuZW1haWw9bS52YWx1ZS50cmltKCk7CiAgICBkYXRhLnNtc19jb25zZW50PSQoImMiKS5jaGVja2VkOwogICAgdmFyIGVycnM9W107CiAgICBpZihkYXRhLm5hbWUubGVuZ3RoPDIpe25tLmNsYXNzTGlzdC5hZGQoImJhZCIpO2VycnMucHVzaCgieW91ciBuYW1lIik7fQogICAgaWYoZGF0YS5waG9uZS5yZXBsYWNlKC9cRC9nLCIiKS5yZXBsYWNlKC9eMSg/PVxkezEwfSkvLCIiKS5sZW5ndGghPT0xMCl7cC5jbGFzc0xpc3QuYWRkKCJiYWQiKTtlcnJzLnB1c2goImEgMTAtZGlnaXQgbW9iaWxlIG51bWJlciIpO30KICAgIGlmKCEvXlteXHNAXStAW15cc0BdK1wuW15cc0BdezIsfSQvLnRlc3QoZGF0YS5lbWFpbCkpe20uY2xhc3NMaXN0LmFkZCgiYmFkIik7ZXJycy5wdXNoKCJhIHZhbGlkIGVtYWlsIik7fQogICAgaWYoZXJycy5sZW5ndGgpe2UudGV4dENvbnRlbnQ9IlBsZWFzZSBlbnRlciAiK2VycnMuam9pbigiLCAiKSsiLiI7cmV0dXJuO30KICAgIGUudGV4dENvbnRlbnQ9IiI7CiAgICB2YXIgcT1uZXcgVVJMU2VhcmNoUGFyYW1zKGxvY2F0aW9uLnNlYXJjaCk7CiAgICB2YXIgcGF5bG9hZD1PYmplY3QuYXNzaWduKHt9LGRhdGEsewogICAgICB3ZWJzaXRlOiQoImhwIikudmFsdWUsIGZvcm06b3B0cy5uYW1lfHwibWFpbiIsCiAgICAgIHBhZ2VfdXJsOmxvY2F0aW9uLmhyZWYsIHJlZmVycmVyOmRvY3VtZW50LnJlZmVycmVyLAogICAgICB1dG1fc291cmNlOnEuZ2V0KCJ1dG1fc291cmNlIil8fCIiLCB1dG1fbWVkaXVtOnEuZ2V0KCJ1dG1fbWVkaXVtIil8fCIiLCB1dG1fY2FtcGFpZ246cS5nZXQoInV0bV9jYW1wYWlnbiIpfHwiIiwKICAgICAgc3VibWl0dGVkX2F0Om5ldyBEYXRlKCkudG9JU09TdHJpbmcoKQogICAgfSk7CiAgICB2YXIgYnRuPSQoIm5leHQiKTsgc2VuZGluZz10cnVlOyBidG4uZGlzYWJsZWQ9dHJ1ZTsgYnRuLnRleHRDb250ZW50PSJTZW5kaW5n4oCmIjsKICAgIGZldGNoKENGRy5lbmRwb2ludCx7bWV0aG9kOiJQT1NUIixtb2RlOiJuby1jb3JzIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04In0sYm9keTpKU09OLnN0cmluZ2lmeShwYXlsb2FkKX0pCiAgICAgIC50aGVuKGRvbmUpCiAgICAgIC5jYXRjaChmdW5jdGlvbigpe3NlbmRpbmc9ZmFsc2U7YnRuLmRpc2FibGVkPWZhbHNlO2J0bi50ZXh0Q29udGVudD0iVHJ5IGFnYWluIOKGkiI7ZS50ZXh0Q29udGVudD0iQ29ubmVjdGlvbiBwcm9ibGVtLiBQbGVhc2UgY2hlY2sgeW91ciBpbnRlcm5ldCBhbmQgdHJ5IGFnYWluLiI7fSk7CiAgfQogIGZ1bmN0aW9uIGRvbmUoKXsKICAgIHZhciBmaXJzdD1lc2MoKGRhdGEubmFtZXx8IiIpLnNwbGl0KCIgIilbMF0pOwogICAgaWYob3B0cy51bmxvY2spe3N0b3JlKCJybGZfIitvcHRzLnVubG9jaywiMSIpOyB1bmxvY2sodHJ1ZSk7IHJldHVybjt9CiAgICB2YXIgbXNnPWRhdGEuaW50ZW50PT09InZhbHVlIj8iSSdtIHByZXBhcmluZyB5b3VyIGN1c3RvbSBob21lIHZhbHVlIHJlcG9ydCBhbmQgd2lsbCB0ZXh0IHlvdSBzaG9ydGx5LiI6CiAgICAgICAgICAgIGRhdGEuaW50ZW50PT09ImJ1eSI/IkknbGwgdGV4dCB5b3Ugc2hvcnRseSB0byBsZWFybiB3aGF0IHlvdSdyZSBsb29raW5nIGZvciBhbmQgc3RhcnQgc2VuZGluZyBtYXRjaGluZyBob21lcy4iOgogICAgICAgICAgICBkYXRhLmludGVudD09PSJyZW50Ij8iSSdsbCB0ZXh0IHlvdSBzaG9ydGx5IHdpdGggcmVudGFscyB0aGF0IGZpdCB3aGF0IHlvdSdyZSBsb29raW5nIGZvci4iOgogICAgICAgICAgICBkYXRhLmludGVudD09PSJpbnZlc3QiPyJZb3UncmUgb24gdGhlIGxpc3QuIEknbGwgdGV4dCB5b3Ugb2ZmLW1hcmtldCBkZWFscyBhcyBzb29uIGFzIHRoZXkgY29tZSB1cC4iOgogICAgICAgICAgICAiSSdsbCB0ZXh0IHlvdSBzaG9ydGx5IHRvIHRhbGsgdGhyb3VnaCB5b3VyIHBsYW5zLiI7CiAgICBpZighZGF0YS5zbXNfY29uc2VudCltc2c9bXNnLnJlcGxhY2UoInRleHQiLCJyZWFjaCBvdXQgdG8iKTsKICAgIHJvb3QuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJybGYtY2FyZCI+PGRpdiBjbGFzcz0icmxmLWRvbmUgcmxmLWZhZGUiPjxkaXYgY2xhc3M9InJsZi1jaGVjayI+4pyTPC9kaXY+PGgyIGNsYXNzPSJybGYtcSI+WW91XCdyZSBhbGwgc2V0LCAnK2ZpcnN0KychPC9oMj48cCBjbGFzcz0icmxmLXN1YiI+Jyttc2crJzwvcD4nKwogICAgICAnPGEgY2xhc3M9InJsZi1idG4gcmxmLWJ0bjIiIGhyZWY9InRlbDonK0NGRy5waG9uZSsnIj5QcmVmZXIgdG8gdGFsayBub3c/IENhbGwgKDkxNCkgMzU5LTE0MTU8L2E+PC9kaXY+PC9kaXY+JzsKICAgIGlmKHdpbmRvdy5ndGFnKXRyeXtndGFnKCJldmVudCIsImdlbmVyYXRlX2xlYWQiLHtsZWFkX3R5cGU6ZGF0YS5pbnRlbnR9KTt9Y2F0Y2goXyl7fQogICAgaWYod2luZG93LmZicSl0cnl7ZmJxKCJ0cmFjayIsIkxlYWQiLHtjb250ZW50X2NhdGVnb3J5OmRhdGEuaW50ZW50fSk7fWNhdGNoKF8pe30KICB9CiAgZnVuY3Rpb24gdW5sb2NrKGp1c3ROb3cpewogICAgdmFyIGc9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3B0cy5ndWlkZUlkKTsgaWYoIWcpcmV0dXJuOwogICAgZy5oaWRkZW49ZmFsc2U7CiAgICByb290LmlubmVySFRNTD0nPGRpdiBjbGFzcz0icmxmLWNhcmQgcmxmLWRvbmUiPjxkaXYgY2xhc3M9InJsZi1jaGVjayI+4pyTPC9kaXY+PGgyIGNsYXNzPSJybGYtcSI+JysoanVzdE5vdz8iWW91ciBndWlkZSBpcyB1bmxvY2tlZCEiOiJXZWxjb21lIGJhY2shIikrJzwvaDI+PHAgY2xhc3M9InJsZi1zdWIiPicrKGp1c3ROb3c/IlNjcm9sbCBkb3duIHRvIHJlYWQgaXQuIEkndmUgYWxzbyB0ZXh0ZWQgeW91IGEgbGluay4iOiJZb3VyIGd1aWRlIGlzIGJlbG93LiIpKyc8L3A+PC9kaXY+JzsKICAgIGlmKGp1c3ROb3cpc2V0VGltZW91dChmdW5jdGlvbigpe2cuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJzdGFydCJ9KTt9LDQwMCk7CiAgfQogIGlmKG9wdHMudW5sb2NrJiZzdG9yZSgicmxmXyIrb3B0cy51bmxvY2spPT09IjEiKXt1bmxvY2soZmFsc2UpO31lbHNle3JlbmRlcigpO30KICByZXR1cm4ge3NldEludGVudDpmdW5jdGlvbih2KXtkYXRhPXtpbnRlbnQ6dn07aT0xO3JlbmRlcigpO3Jvb3Quc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJzdGFydCJ9KTt9fTsKfQoKZnVuY3Rpb24gc3RpY2t5QmFyKCl7CiAgaWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImpyLWJhciIpKXJldHVybjsKICB2YXIgY3NzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CiAgY3NzLnRleHRDb250ZW50PSIjanItYmFye3Bvc2l0aW9uOmZpeGVkO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3otaW5kZXg6OTk5OTtkaXNwbGF5Om5vbmU7Z2FwOjhweDtwYWRkaW5nOjEwcHggMTJweCBjYWxjKDEwcHggKyBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkpO2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuOTYpO2JveC1zaGFkb3c6MCAtNHB4IDIwcHggcmdiYSgwLDAsMCwuMTIpO2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmfSIrCiAgICAiI2pyLWJhciBhe2ZsZXg6MTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjZweDt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjE1cHg7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTJweCA2cHg7Ym9yZGVyOjJweCBzb2xpZCAjMDA3MWUzO2NvbG9yOiMwMDcxZTM7YmFja2dyb3VuZDojZmZmfSIrCiAgICAiI2pyLWJhciBhLmpyLW1haW57ZmxleDoxLjY7YmFja2dyb3VuZDojMDA3MWUzO2NvbG9yOiNmZmZ9IisKICAgICJAbWVkaWEgKG1heC13aWR0aDo3MzZweCl7I2pyLWJhcntkaXNwbGF5OmZsZXh9Ym9keXtwYWRkaW5nLWJvdHRvbTo3NnB4IWltcG9ydGFudH19IjsKICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGNzcyk7CiAgdmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7IGIuaWQ9ImpyLWJhciI7CiAgYi5pbm5lckhUTUw9JzxhIGhyZWY9InRlbDonK0NGRy5waG9uZSsnIiBhcmlhLWxhYmVsPSJDYWxsIEplcnJpbiI+8J+TniBDYWxsPC9hPjxhIGhyZWY9InNtczonK0NGRy5waG9uZSsnIiBhcmlhLWxhYmVsPSJUZXh0IEplcnJpbiI+8J+SrCBUZXh0PC9hPjxhIGNsYXNzPSJqci1tYWluIiBocmVmPSIjaG9tZSIgaWQ9ImpyLWJhci1nbyI+R2V0IFN0YXJ0ZWQg4oaSPC9hPic7CiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChiKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgianItYmFyLWdvIikub25jbGljaz1mdW5jdGlvbihldil7CiAgICB2YXIgaD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmxmLWhlcm8iKTsKICAgIGlmKGgmJmgub2Zmc2V0UGFyZW50KXtldi5wcmV2ZW50RGVmYXVsdCgpO2guc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJzdGFydCJ9KTt9CiAgICBlbHNle3NldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgeD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmxmLWhlcm8iKTtpZih4KXguc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJzdGFydCJ9KTt9LDcwMCk7fQogIH07Cn0KCmlmKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmxmLWNzcycpKXt2YXIgc3Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtzdC5pZD0ncmxmLWNzcyc7c3QudGV4dENvbnRlbnQ9Ii5ybGYtbW91bnR7LS1ybGYtYnJhbmQ6IzAwNzFlMzstLXJsZi1icmFuZC1kYXJrOiMwMDViYjg7LS1ybGYtYWNjZW50OiNlZWY1ZmQ7LS1ybGYtdGV4dDojMWQxZDFmOy0tcmxmLW11dGVkOiM2ZTZlNzM7LS1ybGYtYm9yZGVyOiNlM2UzZTg7LS1ybGYtYmc6I2ZmZmZmZjstLXJsZi1lcnJvcjojYzAzOTJiOyBmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCxcIlNlZ29lIFVJXCIsUm9ib3RvLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2NvbG9yOnZhcigtLXJsZi10ZXh0KTttYXgtd2lkdGg6NTYwcHg7bWFyZ2luOjAgYXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3h9IC5ybGYtbW91bnQgKntib3gtc2l6aW5nOmJvcmRlci1ib3h9IC5ybGYtbW91bnQgLnJsZi1jYXJke2JhY2tncm91bmQ6dmFyKC0tcmxmLWJnKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLXJsZi1ib3JkZXIpO2JvcmRlci1yYWRpdXM6MThweDtwYWRkaW5nOjI4cHggMjJweCAyMnB4O2JveC1zaGFkb3c6MCA4cHggMzBweCByZ2JhKDAsMCwwLC4wOCl9IC5ybGYtbW91bnQgLnJsZi1wcm9ncmVzc3toZWlnaHQ6NnB4O2JhY2tncm91bmQ6dmFyKC0tcmxmLWFjY2VudCk7Ym9yZGVyLXJhZGl1czo5OXB4O292ZXJmbG93OmhpZGRlbjttYXJnaW4tYm90dG9tOjIycHh9IC5ybGYtbW91bnQgLnJsZi1iYXJ7aGVpZ2h0OjEwMCU7d2lkdGg6MDtiYWNrZ3JvdW5kOnZhcigtLXJsZi1icmFuZCk7Ym9yZGVyLXJhZGl1czo5OXB4O3RyYW5zaXRpb246d2lkdGggLjM1cyBlYXNlfSAucmxmLW1vdW50IC5ybGYtcXtmb250LXNpemU6MjNweDtsaW5lLWhlaWdodDoxLjI1O2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW46MCAwIDZweH0gLnJsZi1tb3VudCAucmxmLXN1Yntmb250LXNpemU6MTVweDtjb2xvcjp2YXIoLS1ybGYtbXV0ZWQpO21hcmdpbjowIDAgMjBweH0gLnJsZi1tb3VudCAucmxmLW9wdGlvbnN7ZGlzcGxheTpncmlkO2dhcDoxMHB4fSAucmxmLW1vdW50IC5ybGYtb3B0aW9ucy50d297Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnJ9IC5ybGYtbW91bnQgLnJsZi1vcHR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTJweDt3aWR0aDoxMDAlO3RleHQtYWxpZ246bGVmdDtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLXJsZi10ZXh0KTtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ybGYtYm9yZGVyKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoxNXB4IDE2cHg7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1cyxiYWNrZ3JvdW5kIC4xNXMsdHJhbnNmb3JtIC4xc30gLnJsZi1tb3VudCAucmxmLW9wdGlvbnMudHdvIC5ybGYtb3B0LndpZGV7Z3JpZC1jb2x1bW46MSAvIC0xfSAucmxmLW1vdW50IC5ybGYtb3B0aW9ucy50d28gLnJsZi1vcHR7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2p1c3RpZnktY29udGVudDpjZW50ZXI7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzoxOHB4IDEwcHg7Z2FwOjZweH0gLnJsZi1tb3VudCAucmxmLW9wdDpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tcmxmLWJyYW5kKX0gLnJsZi1tb3VudCAucmxmLW9wdDphY3RpdmV7dHJhbnNmb3JtOnNjYWxlKC45OCl9IC5ybGYtbW91bnQgLnJsZi1vcHQuc2Vse2JvcmRlci1jb2xvcjp2YXIoLS1ybGYtYnJhbmQpO2JhY2tncm91bmQ6dmFyKC0tcmxmLWFjY2VudCl9IC5ybGYtbW91bnQgLnJsZi1pY297Zm9udC1zaXplOjI2cHg7bGluZS1oZWlnaHQ6MX0gLnJsZi1tb3VudCBsYWJlbC5ybGYtbGJse2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NjAwO21hcmdpbjoxNHB4IDAgNnB4fSAucmxmLW1vdW50IGlucHV0LnJsZi1pbnt3aWR0aDoxMDAlO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTZweDtwYWRkaW5nOjE0cHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ybGYtYm9yZGVyKTtib3JkZXItcmFkaXVzOjEycHg7YmFja2dyb3VuZDojZmZmO2NvbG9yOnZhcigtLXJsZi10ZXh0KTtvdXRsaW5lOm5vbmU7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1c30gLnJsZi1tb3VudCBpbnB1dC5ybGYtaW46Zm9jdXN7Ym9yZGVyLWNvbG9yOnZhcigtLXJsZi1icmFuZCl9IC5ybGYtbW91bnQgaW5wdXQucmxmLWluLmJhZHtib3JkZXItY29sb3I6dmFyKC0tcmxmLWVycm9yKX0gLnJsZi1tb3VudCAucmxmLWVycntjb2xvcjp2YXIoLS1ybGYtZXJyb3IpO2ZvbnQtc2l6ZToxM3B4O21hcmdpbi10b3A6NnB4O21pbi1oZWlnaHQ6MTZweH0gLnJsZi1tb3VudCAucmxmLWJ0bntkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7bWFyZ2luLXRvcDoxOHB4O2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTdweDtmb250LXdlaWdodDo3MDA7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLXJsZi1icmFuZCk7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MTZweDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjE1c30gLnJsZi1tb3VudCAucmxmLWJ0bjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLXJsZi1icmFuZC1kYXJrKX0gLnJsZi1tb3VudCAucmxmLWJ0bltkaXNhYmxlZF17b3BhY2l0eTouNjtjdXJzb3I6d2FpdH0gLnJsZi1tb3VudCAucmxmLW5hdntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi10b3A6MTZweDttaW4taGVpZ2h0OjIycHh9IC5ybGYtbW91bnQgLnJsZi1iYWNre2JhY2tncm91bmQ6bm9uZTtib3JkZXI6MDtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE0cHg7Y29sb3I6dmFyKC0tcmxmLW11dGVkKTtjdXJzb3I6cG9pbnRlcjtwYWRkaW5nOjRweCAwfSAucmxmLW1vdW50IC5ybGYtYmFjazpob3Zlcntjb2xvcjp2YXIoLS1ybGYtdGV4dCl9IC5ybGYtbW91bnQgLnJsZi1zdGVwLWNvdW50e2ZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXJsZi1tdXRlZCl9IC5ybGYtbW91bnQgLnJsZi1jb25zZW50e2Rpc3BsYXk6ZmxleDtnYXA6MTBweDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O21hcmdpbi10b3A6MTZweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjQ1O2NvbG9yOnZhcigtLXJsZi1tdXRlZCl9IC5ybGYtbW91bnQgLnJsZi1jb25zZW50IGlucHV0e21hcmdpbi10b3A6MnB4O3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7ZmxleDowIDAgMThweDthY2NlbnQtY29sb3I6dmFyKC0tcmxmLWJyYW5kKX0gLnJsZi1tb3VudCAucmxmLWNvbnNlbnQgYXtjb2xvcjp2YXIoLS1ybGYtbXV0ZWQpfSAucmxmLW1vdW50IC5ybGYtdHJ1c3R7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjE2cHg7ZmxleC13cmFwOndyYXA7bWFyZ2luLXRvcDoxNHB4O2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXJsZi1tdXRlZCl9IC5ybGYtbW91bnQgLnJsZi1ocHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi05OTk5cHg7d2lkdGg6MXB4O2hlaWdodDoxcHg7b3ZlcmZsb3c6aGlkZGVufSAucmxmLW1vdW50IC5ybGYtZG9uZXt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjEwcHggMH0gLnJsZi1tb3VudCAucmxmLWNoZWNre3dpZHRoOjY0cHg7aGVpZ2h0OjY0cHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDp2YXIoLS1ybGYtYWNjZW50KTtjb2xvcjp2YXIoLS1ybGYtYnJhbmQpO2ZvbnQtc2l6ZTozNHB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW46MCBhdXRvIDE2cHh9IC5ybGYtbW91bnQgLnJsZi1mYWRle2FuaW1hdGlvbjpybGZJbiAuM3MgZWFzZX0gQGtleWZyYW1lcyBybGZJbntmcm9te29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSg4cHgpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZX19IEBtZWRpYSAobWF4LXdpZHRoOjQyMHB4KXsucmxmLW1vdW50IC5ybGYtY2FyZHtwYWRkaW5nOjIycHggMTZweCAxOHB4fS5ybGYtbW91bnQgLnJsZi1xe2ZvbnQtc2l6ZToyMXB4fX0gLnJsZi1tb3VudCAucmxmLWJ0bjJ7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMwMDcxZTM7Ym9yZGVyOjJweCBzb2xpZCAjMDA3MWUzO3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtc2l6ZToxNXB4fSAucmxmLW1vdW50IC5ybGYtYnRuMjpob3ZlcntiYWNrZ3JvdW5kOiNlZWY1ZmR9IC5ybGYtbW91bnR7c2Nyb2xsLW1hcmdpbi10b3A6MTZweH0iO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3QpO30KZnVuY3Rpb24gbGF5b3V0KCl7CiAgdmFyIGhvbWU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvbWUtc2VjdGlvbiIpOwogIHZhciBoZXJvPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJqci1oZXJvIik7IAogIGlmKGhvbWUmJmhlcm8pe3ZhciBjPWhlcm8uY2xvc2VzdCgiLmVtYmVkLWNvbXBvbmVudCIpfHxoZXJvOyBpZihob21lLmZpcnN0RWxlbWVudENoaWxkIT09Yylob21lLmluc2VydEJlZm9yZShjLGhvbWUuZmlyc3RFbGVtZW50Q2hpbGQpO30KICB2YXIgcmV2PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJqci1yZXZpZXdzIiksIGNvbnRhY3Q9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5lcjAxIik7CiAgaWYocmV2JiZjb250YWN0JiZjb250YWN0LnBhcmVudE5vZGUpe3ZhciByPXJldi5jbG9zZXN0KCIuZW1iZWQtY29tcG9uZW50Iil8fHJldjsgaWYoci5uZXh0RWxlbWVudFNpYmxpbmchPT1jb250YWN0KWNvbnRhY3QucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocixjb250YWN0KTt9CiAgW1siY29udGFpbmVyMDMiLCIjYnV5ZXJzZ3VpZGUiXSxbImNvbnRhaW5lcjA1IiwiI3NlbGxlcnNndWlkZSJdLFsiY29udGFpbmVyMDYiLCIjaW52ZXN0bWVudHMiXV0uZm9yRWFjaChmdW5jdGlvbihwKXsKICAgIHZhciBib3g9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocFswXSk7IGlmKCFib3gpcmV0dXJuOwogICAgYm94LnF1ZXJ5U2VsZWN0b3JBbGwoJ2FbaHJlZj0iI2Zvcm0iXScpLmZvckVhY2goZnVuY3Rpb24oYSl7YS5zZXRBdHRyaWJ1dGUoImhyZWYiLHBbMV0pO30pOwogIH0pOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiNob21lLXNlY3Rpb24gLnRleHQtY29tcG9uZW50IikuZm9yRWFjaChmdW5jdGlvbih0KXsKICAgIGlmKC9TQUxFU01BTi9pLnRlc3QodC50ZXh0Q29udGVudCkmJnQuY2hpbGRyZW4ubGVuZ3RoPT09MCl0LnRleHRDb250ZW50PXQudGV4dENvbnRlbnQucmVwbGFjZSgvU0FMRVNNQU4vaSxmdW5jdGlvbihtKXtyZXR1cm4gbT09PW0udG9VcHBlckNhc2UoKT8iU0FMRVNQRVJTT04iOiJTYWxlc3BlcnNvbiI7fSk7CiAgfSk7Cn0KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKGV2KXsKICB2YXIgYT1ldi50YXJnZXQuY2xvc2VzdCYmZXYudGFyZ2V0LmNsb3Nlc3QoIltkYXRhLXJsZi1wcmVdIik7IGlmKCFhKXJldHVybjsKICB0cnl7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgicmxmX3ByZSIsYS5nZXRBdHRyaWJ1dGUoImRhdGEtcmxmLXByZSIpKTt9Y2F0Y2goXyl7fQogIHZhciBoPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJybGYtaGVybyIpOwogIGlmKGgmJmgub2Zmc2V0UGFyZW50JiZ3aW5kb3cuUkxGLmhlcm8pe2V2LnByZXZlbnREZWZhdWx0KCk7d2luZG93LlJMRi5oZXJvLnNldEludGVudChhLmdldEF0dHJpYnV0ZSgiZGF0YS1ybGYtcHJlIikpO3RyeXtzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCJybGZfcHJlIik7fWNhdGNoKF8pe319Cn0sdHJ1ZSk7CndpbmRvdy5STEY9e21vdW50Om1vdW50LHN0aWNreUJhcjpzdGlja3lCYXIsbGF5b3V0OmxheW91dH07Cn0KZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnJsZi1tb3VudDpub3QoW2RhdGEtcmVhZHldKSIpLmZvckVhY2goZnVuY3Rpb24oZWwpewogIGVsLnNldEF0dHJpYnV0ZSgiZGF0YS1yZWFkeSIsIjEiKTsKICB2YXIgaW5zdD13aW5kb3cuUkxGLm1vdW50KGVsLHtpbnRlbnQ6ZWwuZ2V0QXR0cmlidXRlKCJkYXRhLWludGVudCIpfHxudWxsLG5hbWU6ZWwuZ2V0QXR0cmlidXRlKCJkYXRhLW5hbWUiKXx8Im1haW4iLHVubG9jazplbC5nZXRBdHRyaWJ1dGUoImRhdGEtdW5sb2NrIil8fG51bGwsZ3VpZGVJZDplbC5nZXRBdHRyaWJ1dGUoImRhdGEtZ3VpZGUiKXx8bnVsbH0pOwogIGlmKGVsLmlkPT09InJsZi1oZXJvIil7d2luZG93LlJMRi5oZXJvPWluc3Q7CiAgICB2YXIgcHJlPW51bGw7dHJ5e3ByZT1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCJybGZfcHJlIik7c2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgicmxmX3ByZSIpO31jYXRjaChfKXt9CiAgICBpZihwcmUpc2V0VGltZW91dChmdW5jdGlvbigpe2luc3Quc2V0SW50ZW50KHByZSk7fSwzMDApO30KfSk7CndpbmRvdy5STEYuc3RpY2t5QmFyKCk7CndpbmRvdy5STEYubGF5b3V0KCk7c2V0VGltZW91dCh3aW5kb3cuUkxGLmxheW91dCw4MDApOwp9KSgpOwo=")));(new Function(s))();})();(function(){if(window.__jrLeo)return;window.__jrLeo=1;var L="https://heyleo.com/jerrinrealty";function add(){document.querySelectorAll(".rlf-mount .rlf-done").forEach(function(d){if(d.querySelector(".jr-leo"))return;var p=document.createElement("p");p.className="rlf-sub jr-leo";p.style.margin="18px 0 0";p.textContent="While you wait, try my AI home search. Just describe your dream home:";var a=document.createElement("a");a.className="rlf-btn rlf-btn2";a.href=L;a.target="_blank";a.rel="noopener";a.textContent="Search homes with AI →";a.style.marginTop="8px";p.appendChild(a);d.appendChild(p);});}new MutationObserver(add).observe(document.body,{childList:true,subtree:true});add();})();(function(){var H=decodeURIComponent(escape(atob("PGZvb3RlciBjbGFzcz0ianItZm9vdCIgaWQ9ImpyLWZvb3QiPgo8c3R5bGU+CiN0ZXh0MzcsI2xpbmtzMDMsI2xpbmtzMDQsI3RleHQwMiwjbGlua3MwMiwjbGlua3MwMSwjaWNvbnMwMXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fQouanItZm9vdHtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwiU2Vnb2UgVUkiLFJvYm90byxJbnRlcixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjttYXgtd2lkdGg6NzIwcHg7bWFyZ2luOjMycHggYXV0byAwO3BhZGRpbmc6MjJweCAxNnB4IDI2cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2UzZTNlODt0ZXh0LWFsaWduOmxlZnQ7Y29sb3I6IzZlNmU3Mztmb250LXNpemU6MTIuNXB4O2xpbmUtaGVpZ2h0OjEuNn0KLmpyLWZvb3QgYntjb2xvcjojMWQxZDFmfQouanItZm9vdCBwe21hcmdpbjowIDAgMTBweH0KLmpyLWZvb3QgYXtjb2xvcjojNDg0ODRmO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9Ci5qci1mb290IC5qci1saW5rc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjZweCAxNHB4O21hcmdpbjowIDAgMTJweH0KLmpyLWZvb3QgLmpyLWVob3tkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMWQxZDFmfQo8L3N0eWxlPgo8cD48Yj5KZXJyaW4gSm9objwvYj4sIExpY2Vuc2VkIFJlYWwgRXN0YXRlIFNhbGVzcGVyc29uLCBOWSBMaWMuICMxMDQwMTM5MDQxMyAmbWlkZG90OyBKZXJyaW4gUmVhbHR5LCBhZmZpbGlhdGVkIHdpdGggPGI+UmVhbCBCcm9rZXIgTlkgTExDPC9iPiwgTGljZW5zZWQgUmVhbCBFc3RhdGUgQnJva2VyICZtaWRkb3Q7IDQ3NyBNYWRpc29uIEF2ZS4sIFN0ZS4gNjQ4LCBOZXcgWW9yaywgTlkgMTAwMjIgJm1pZGRvdDsgQnJva2VyIG9mZmljZSA8YSBocmVmPSJ0ZWw6KzE4NTU0NTAwNDQyIj4oODU1KSA0NTAtMDQ0MjwvYT4gJm1pZGRvdDsgQWdlbnQgPGEgaHJlZj0idGVsOisxOTE0MzU5MTQxNSI+KDkxNCkgMzU5LTE0MTU8L2E+ICZtaWRkb3Q7IDxhIGhyZWY9Im1haWx0bzpqb2huQGplcnJpbnJlYWx0eS5jb20iPmpvaG5AamVycmlucmVhbHR5LmNvbTwvYT48L3A+CjxwIGNsYXNzPSJqci1laG8iPiYjODk2MjsgRXF1YWwgSG91c2luZyBPcHBvcnR1bml0eTwvcD4KPHA+V2Ugc3VwcG9ydCB0aGUgRmFpciBIb3VzaW5nIEFjdCBhbmQgdGhlIE5ldyBZb3JrIFN0YXRlIEh1bWFuIFJpZ2h0cyBMYXcgYW5kIGRvIG5vdCBkaXNjcmltaW5hdGUgb24gYW55IHByb3RlY3RlZCBiYXNpcy4gQWxsIGxhd2Z1bCBzb3VyY2VzIG9mIGluY29tZSwgaW5jbHVkaW5nIGhvdXNpbmcgdm91Y2hlcnMsIGFyZSBhY2NlcHRlZC48L3A+CjxkaXYgY2xhc3M9ImpyLWxpbmtzIj4KPGEgaHJlZj0iaHR0cHM6Ly9vbmVyZWFsLmNvbS8iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj5SZWFsIEJyb2tlciBOWSBMTEM8L2E+CjxhIGhyZWY9Imh0dHBzOi8vYm9sdC1jdXN0b20tYXNzZXRzLnRoZXJlYWxicm9rZXJhZ2UuY29tL25ldy15b3JrLWNvbXBsaWFuY2Uvc3RhbmRhcmRpemVkLW9wZXJhdGluZy1wcm9jZWR1cmUtbm90YXJpemVkLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPk5ZIFN0YW5kYXJkIE9wZXJhdGluZyBQcm9jZWR1cmVzPC9hPgo8YSBocmVmPSJodHRwczovL2Rvcy5ueS5nb3Yvc3lzdGVtL2ZpbGVzL2RvY3VtZW50cy8yMDIxLzA4L2ZhaXJob3VzaW5nbm90aWNlLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPk5ZIEZhaXIgSG91c2luZyBOb3RpY2U8L2E+CjxhIGhyZWY9Imh0dHBzOi8vbnlzYXIuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIyLzA1L1JNQV9Vbmtub3duLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPlJlYXNvbmFibGUgQWNjb21tb2RhdGlvbnMgTm90aWNlPC9hPgo8YSBocmVmPSIjcHJpdmFjeXBvbGljeSI+UHJpdmFjeSBQb2xpY3k8L2E+CjxhIGhyZWY9IiN0ZXJtIj5UZXJtcyAmYW1wOyBDb25kaXRpb25zPC9hPgo8YSBocmVmPSIjdGVybSI+QWNjZXNzaWJpbGl0eTwvYT4KPGEgaHJlZj0iaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9qZXJyaW5yZWFsdHkiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj5JbnN0YWdyYW08L2E+CjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9zaGFyZS8xSmdTTlFTNE5KLyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPkZhY2Vib29rPC9hPgo8L2Rpdj4KPHA+TGlzdGluZyBpbmZvcm1hdGlvbiBpcyBkZWVtZWQgcmVsaWFibGUgYnV0IG5vdCBndWFyYW50ZWVkLiBSZXZpZXdzIGFyZSBmcm9tIEdvb2dsZSBhbmQgWmlsbG93OyBzb21lIGFyZSBzaG9ydGVuZWQuIFNhbGVzIGRhdGEgZnJvbSBIb21lcy5jb20uIE5vdGhpbmcgb24gdGhpcyBzaXRlIGlzIGxlZ2FsLCB0YXggb3IgZmluYW5jaWFsIGFkdmljZS4gJmNvcHk7IDIwMjYgSmVycmluIFJlYWx0eS48L3A+CjwvZm9vdGVyPgo=")));function f(){document.querySelectorAll("section[id$='-section']").forEach(function(s){if(s.querySelector(".jr-foot"))return;var d=document.createElement("div");d.innerHTML=H;s.appendChild(d);});}f();setTimeout(f,1200);})();

Find Your Dream Home Without the Hassle

Whether you’re buying, selling, or renting, Jerrin Realty brings local expertise, no-pressure guidance, and fast results to every transaction.

Let’s get started

(function(){var s=decodeURIComponent(escape(atob("KGZ1bmN0aW9uKCl7CmlmKCF3aW5kb3cuUkxGKXsKdmFyIENGRz17CiAgZW5kcG9pbnQ6Imh0dHBzOi8vc2NyaXB0Lmdvb2dsZS5jb20vbWFjcm9zL3MvQUtmeWNid3EzOGJSRVNDQjkzQ1AzODlZRG5qVjMxU0l6Y1M4TjR2STBub204RW9QeTNCeHcwY3ZRUjk0Z3N0RTl1Q1A3MjFXL2V4ZWMiLAogIGJyYW5kOiJKZXJyaW4gUmVhbHR5IiwKICBwcml2YWN5VXJsOiJodHRwczovL2plcnJpbnJlYWx0eS5jb20vI3ByaXZhY3lwb2xpY3kiLAogIHBob25lOiIrMTkxNDM1OTE0MTUiCn07CnZhciBTPXsKICBpbnRlbnQ6e3R5cGU6ImNhcmRzIixmaWVsZDoiaW50ZW50Iix0d286dHJ1ZSxxOiJIb3cgY2FuIEkgaGVscCB5b3UgdG9kYXk/IixzdWI6IkFuc3dlciBhIGZldyBxdWljayBxdWVzdGlvbnMuIFRha2VzIGFib3V0IDYwIHNlY29uZHMuIiwKICAgIG9wdGlvbnM6W1siYnV5Iiwi8J+PoSIsIkJ1eSBhIGhvbWUiXSxbInNlbGwiLCLwn5KwIiwiU2VsbCBteSBob21lIl0sWyJyZW50Iiwi8J+UkSIsIlJlbnQgYSBob21lIl0sWyJib3RoIiwi8J+UhCIsIkJ1eSAmIHNlbGwiXSxbInZhbHVlIiwi8J+TiiIsIldoYXQncyBteSBob21lIHdvcnRoPyIsIndpZGUiXV19LAogIHJfYXJlYTp7dHlwZToidGV4dCIsZmllbGQ6InJlbnRfYXJlYSIscToiV2hlcmUgd291bGQgeW91IGxpa2UgdG8gcmVudD8iLHN1YjoiQSBjaXR5LCBuZWlnaGJvcmhvb2Qgb3IgWklQIGNvZGUgaXMgcGVyZmVjdC4iLHBsYWNlaG9sZGVyOiJlLmcuIFlvbmtlcnMgb3IgMTA3MDEiLG1pbjoyLGVycjoiUGxlYXNlIHRlbGwgbWUgd2hlcmUgeW91J3JlIGxvb2tpbmcuIn0sCiAgcl9idWRnZXQ6e3R5cGU6ImNhcmRzIixmaWVsZDoicmVudF9idWRnZXQiLHE6IldoYXQncyB5b3VyIG1vbnRobHkgcmVudCBidWRnZXQ/IiwKICAgIG9wdGlvbnM6W1siVW5kZXIgJDIsMDAwIiwiIiwiIl0sWyIkMiwwMDAg4oCTICQzLDAwMCIsIiIsIiJdLFsiJDMsMDAwIOKAkyAkNCwwMDAiLCIiLCIiXSxbIiQ0LDAwMCsiLCIiLCIiXV19LAogIHNfYWRkcmVzczp7dHlwZToidGV4dCIsZmllbGQ6InByb3BlcnR5X2FkZHJlc3MiLHE6ZnVuY3Rpb24oZCl7cmV0dXJuIGQuaW50ZW50PT09InZhbHVlIj8iV2hhdCdzIHRoZSBhZGRyZXNzIG9mIHRoZSBob21lPyI6IldoYXQncyB0aGUgYWRkcmVzcyBvZiB0aGUgaG9tZSB5b3UncmUgc2VsbGluZz8iO30sCiAgICBzdWI6IlVzZWQgb25seSB0byBwcmVwYXJlIHlvdXIgY3VzdG9tIHByaWNpbmcgZXN0aW1hdGUuIixwbGFjZWhvbGRlcjoiMTIzIE1haW4gU3QsIENpdHksIFpJUCIsbWluOjYsZXJyOiJQbGVhc2UgZW50ZXIgdGhlIHByb3BlcnR5IGFkZHJlc3MuIn0sCiAgc190eXBlOnt0eXBlOiJjYXJkcyIsZmllbGQ6InByb3BlcnR5X3R5cGUiLHE6IldoYXQgdHlwZSBvZiBwcm9wZXJ0eSBpcyBpdD8iLAogICAgb3B0aW9uczpbWyJTaW5nbGUtZmFtaWx5Iiwi8J+PoCIsIlNpbmdsZS1mYW1pbHkgaG9tZSJdLFsiQ29uZG8vVG93bmhvdXNlIiwi8J+PoiIsIkNvbmRvIG9yIHRvd25ob3VzZSJdLFsiTXVsdGktZmFtaWx5Iiwi8J+PmO+4jyIsIk11bHRpLWZhbWlseSJdLFsiTGFuZC9PdGhlciIsIvCfjLMiLCJMYW5kIG9yIG90aGVyIl1dfSwKICBiX2FyZWE6e3R5cGU6InRleHQiLGZpZWxkOiJidXlfYXJlYSIscToiV2hlcmUgd291bGQgeW91IGxpa2UgdG8gYnV5PyIsc3ViOiJBIGNpdHksIG5laWdoYm9yaG9vZCBvciBaSVAgY29kZSBpcyBwZXJmZWN0LiIscGxhY2Vob2xkZXI6ImUuZy4gV2hpdGUgUGxhaW5zIG9yIDEwNjAxIixtaW46MixlcnI6IlBsZWFzZSB0ZWxsIG1lIHdoZXJlIHlvdSdyZSBsb29raW5nLiJ9LAogIGJfcHJpY2U6e3R5cGU6ImNhcmRzIixmaWVsZDoicHJpY2VfcmFuZ2UiLHE6IldoYXQgcHJpY2UgcmFuZ2UgZmVlbHMgY29tZm9ydGFibGU/IiwKICAgIG9wdGlvbnM6W1siVW5kZXIgJDMwMEsiLCIiLCIiXSxbIiQzMDBLIOKAkyAkNTAwSyIsIiIsIiJdLFsiJDUwMEsg4oCTICQ3NTBLIiwiIiwiIl0sWyIkNzUwSyDigJMgJDFNIiwiIiwiIl0sWyIkMU0rIiwiIiwiIl1dfSwKICBiX2ZpbmFuY2U6e3R5cGU6ImNhcmRzIixmaWVsZDoiZmluYW5jaW5nIixxOiJIb3cgYXJlIHlvdSBwbGFubmluZyB0byBwYXk/IiwKICAgIG9wdGlvbnM6W1siUHJlLWFwcHJvdmVkIiwi4pyFIiwiSSdtIHByZS1hcHByb3ZlZCJdLFsiQ2FzaCIsIvCfkrUiLCJQYXlpbmcgY2FzaCJdLFsiTm90IHlldCIsIuKPsyIsIk5vdCBwcmUtYXBwcm92ZWQgeWV0Il0sWyJOZWVkIGxlbmRlciIsIvCfpJ0iLCJJJ2QgbGlrZSBhIGxlbmRlciByZWNvbW1lbmRhdGlvbiJdXX0sCiAgdGltZWxpbmU6e3R5cGU6ImNhcmRzIixmaWVsZDoidGltZWxpbmUiLHE6IldoZW4gYXJlIHlvdSBob3BpbmcgdG8gbWFrZSBhIG1vdmU/IiwKICAgIG9wdGlvbnM6W1siQVNBUCIsIuKaoSIsIkFzIHNvb24gYXMgcG9zc2libGUiXSxbIjEtMyBtb250aHMiLCLwn5OFIiwiMeKAkzMgbW9udGhzIl0sWyIzLTYgbW9udGhzIiwi8J+Xk++4jyIsIjPigJM2IG1vbnRocyJdLFsiNisgbW9udGhzIiwi8J+MsSIsIjYrIG1vbnRocyJdLFsiSnVzdCBleHBsb3JpbmciLCLwn5GAIiwiSnVzdCBleHBsb3JpbmciXV19LAogIGludl90eXBlOnt0eXBlOiJjYXJkcyIsZmllbGQ6ImludmVzdF90eXBlIixxOiJXaGF0IGtpbmQgb2YgZGVhbHMgaW50ZXJlc3QgeW91PyIsc3ViOiJJJ2xsIHRleHQgeW91IG9mZi1tYXJrZXQgb3Bwb3J0dW5pdGllcyB0aGF0IG1hdGNoLiIsCiAgICBvcHRpb25zOltbIk11bHRpLWZhbWlseSIsIvCfj5jvuI8iLCJNdWx0aS1mYW1pbHkgKDLigJM0IHVuaXRzKSJdLFsiU2luZ2xlLWZhbWlseSIsIvCfj6AiLCJTaW5nbGUtZmFtaWx5IC8gZmxpcHMiXSxbIkxhbmQiLCLwn4yzIiwiTGFuZCAvIGRldmVsb3BtZW50Il0sWyJBbnkiLCLwn5K8IiwiU2hvdyBtZSBldmVyeXRoaW5nIl1dfSwKICBpbnZfYnVkZ2V0Ont0eXBlOiJjYXJkcyIsZmllbGQ6InByaWNlX3JhbmdlIixxOiJXaGF0J3MgeW91ciBwdXJjaGFzZSBidWRnZXQ/IiwKICAgIG9wdGlvbnM6W1siVW5kZXIgJDUwMEsiLCIiLCIiXSxbIiQ1MDBLIOKAkyAkMU0iLCIiLCIiXSxbIiQxTSDigJMgJDJNIiwiIiwiIl0sWyIkMk0rIiwiIiwiIl1dfSwKICBjb250YWN0Ont0eXBlOiJjb250YWN0IixxOmZ1bmN0aW9uKGQpewogICAgICByZXR1cm4gZC5pbnRlbnQ9PT0idmFsdWUiPyJMYXN0IHN0ZXAhIFdoZXJlIHNob3VsZCBJIHNlbmQgeW91ciBob21lIHZhbHVlIHJlcG9ydD8iOgogICAgICAgICAgICAgZC5pbnRlbnQ9PT0iYnV5Ij8iTGFzdCBzdGVwISBXaGVyZSBzaG91bGQgSSBzZW5kIG1hdGNoaW5nIGhvbWVzPyI6CiAgICAgICAgICAgICBkLmludGVudD09PSJyZW50Ij8iTGFzdCBzdGVwISBXaGVyZSBzaG91bGQgSSBzZW5kIGF2YWlsYWJsZSByZW50YWxzPyI6CiAgICAgICAgICAgICBkLmludGVudD09PSJidXllcl9ndWlkZSI/IkdldCB0aGUgZnJlZSBXZXN0Y2hlc3RlciAmIFJvY2tsYW5kIEJ1eWVyJ3MgR3VpZGUiOgogICAgICAgICAgICAgZC5pbnRlbnQ9PT0ic2VsbGVyX2d1aWRlIj8iR2V0IHRoZSBmcmVlIFdlc3RjaGVzdGVyICYgUm9ja2xhbmQgU2VsbGVyJ3MgR3VpZGUiOgogICAgICAgICAgICAgZC5pbnRlbnQ9PT0iaW52ZXN0Ij8iTGFzdCBzdGVwISBXaGVyZSBzaG91bGQgSSB0ZXh0IG9mZi1tYXJrZXQgZGVhbHM/IjoKICAgICAgICAgICAgICJMYXN0IHN0ZXAhIEhvdyBjYW4gSSByZWFjaCB5b3U/Ijt9LAogICAgc3ViOmZ1bmN0aW9uKGQpe3JldHVybiAvZ3VpZGUvLnRlc3QoZC5pbnRlbnQpPyJJbnN0YW50IGFjY2VzcyDigJQgcGx1cyBhIHRleHQgbGluayBzbyB5b3UgY2FuIHJlYWQgaXQgYW55dGltZS4iOiJObyBzcGFtLCBldmVyLiBJJ2xsIHBlcnNvbmFsbHkgZm9sbG93IHVwLiI7fX0KfTsKdmFyIEZMT1dTPXsKICBidXk6WyJpbnRlbnQiLCJiX2FyZWEiLCJiX3ByaWNlIiwiYl9maW5hbmNlIiwidGltZWxpbmUiLCJjb250YWN0Il0sCiAgc2VsbDpbImludGVudCIsInNfYWRkcmVzcyIsInNfdHlwZSIsInRpbWVsaW5lIiwiY29udGFjdCJdLAogIGJvdGg6WyJpbnRlbnQiLCJzX2FkZHJlc3MiLCJzX3R5cGUiLCJiX2FyZWEiLCJiX3ByaWNlIiwiYl9maW5hbmNlIiwidGltZWxpbmUiLCJjb250YWN0Il0sCiAgdmFsdWU6WyJpbnRlbnQiLCJzX2FkZHJlc3MiLCJzX3R5cGUiLCJ0aW1lbGluZSIsImNvbnRhY3QiXSwKICByZW50OlsiaW50ZW50Iiwicl9hcmVhIiwicl9idWRnZXQiLCJ0aW1lbGluZSIsImNvbnRhY3QiXSwKICBidXllcl9ndWlkZTpbImNvbnRhY3QiXSwgc2VsbGVyX2d1aWRlOlsiY29udGFjdCJdLAogIGludmVzdDpbImludl90eXBlIiwiaW52X2J1ZGdldCIsImNvbnRhY3QiXQp9Owp2YXIgbj0wOwpmdW5jdGlvbiBlc2Mocyl7cmV0dXJuIFN0cmluZyhzPT1udWxsPyIiOnMpLnJlcGxhY2UoL1smPD4iJ10vZyxmdW5jdGlvbihjKXtyZXR1cm57IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCJcIiI6IiZxdW90OyIsIiciOiImIzM5OyJ9W2NdO30pO30KZnVuY3Rpb24gZm10UGhvbmUodil7dmFyIGQ9di5yZXBsYWNlKC9cRC9nLCIiKS5yZXBsYWNlKC9eMSg/PVxkezEwfSkvLCIiKS5zbGljZSgwLDEwKTsKICBpZihkLmxlbmd0aDw0KXJldHVybiBkOyBpZihkLmxlbmd0aDw3KXJldHVybiIoIitkLnNsaWNlKDAsMykrIikgIitkLnNsaWNlKDMpOyByZXR1cm4iKCIrZC5zbGljZSgwLDMpKyIpICIrZC5zbGljZSgzLDYpKyItIitkLnNsaWNlKDYpO30KZnVuY3Rpb24gc3RvcmUoayx2KXt0cnl7aWYodj09PXVuZGVmaW5lZClyZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oayk7bG9jYWxTdG9yYWdlLnNldEl0ZW0oayx2KTt9Y2F0Y2goZSl7cmV0dXJuIG51bGw7fX0KCmZ1bmN0aW9uIG1vdW50KHJvb3Qsb3B0cyl7CiAgb3B0cz1vcHRzfHx7fTsgdmFyIHVpZD0iciIrKCsrbiksIGRhdGE9e30sIGk9MCwgc2VuZGluZz1mYWxzZSwgZml4ZWQ9b3B0cy5pbnRlbnR8fG51bGw7CiAgaWYoZml4ZWQpZGF0YS5pbnRlbnQ9Zml4ZWQ7CiAgZnVuY3Rpb24gZmxvdygpe3JldHVybiBGTE9XU1tkYXRhLmludGVudF18fEZMT1dTLmJ1eTt9CiAgZnVuY3Rpb24gdmFsKHgpe3JldHVybiB0eXBlb2YgeD09PSJmdW5jdGlvbiI/eChkYXRhKTp4O30KICBmdW5jdGlvbiAkKGlkKXtyZXR1cm4gcm9vdC5xdWVyeVNlbGVjdG9yKCIjIit1aWQrIi0iK2lkKTt9CiAgZnVuY3Rpb24gcmVuZGVyKCl7CiAgICB2YXIgZj1mbG93KCksIHM9U1tmW2ldXSwgcGN0PU1hdGgucm91bmQoKGkvZi5sZW5ndGgpKjEwMCksIHNob3dCYWNrPWZpeGVkP2k+MDppPjA7CiAgICB2YXIgaD0nPGRpdiBjbGFzcz0icmxmLWNhcmQiPicrKGYubGVuZ3RoPjE/JzxkaXYgY2xhc3M9InJsZi1wcm9ncmVzcyI+PGRpdiBjbGFzcz0icmxmLWJhciIgc3R5bGU9IndpZHRoOicrcGN0KyclIj48L2Rpdj48L2Rpdj4nOicnKSsnPGRpdiBjbGFzcz0icmxmLWZhZGUiPic7CiAgICBoKz0nPGgyIGNsYXNzPSJybGYtcSI+Jytlc2ModmFsKHMucSkpKyc8L2gyPicrKHMuc3ViPyc8cCBjbGFzcz0icmxmLXN1YiI+Jytlc2ModmFsKHMuc3ViKSkrJzwvcD4nOicnKTsKICAgIGlmKHMudHlwZT09PSJjYXJkcyIpewogICAgICBoKz0nPGRpdiBjbGFzcz0icmxmLW9wdGlvbnMnKyhzLnR3bz8nIHR3byc6JycpKyciPic7CiAgICAgIHMub3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG8pewogICAgICAgIGgrPSc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJsZi1vcHQnKyhkYXRhW3MuZmllbGRdPT09b1swXT8nIHNlbCc6JycpKyhvWzNdPycgJytvWzNdOicnKSsnIiBkYXRhLXY9IicrZXNjKG9bMF0pKyciPicrKG9bMV0/JzxzcGFuIGNsYXNzPSJybGYtaWNvIj4nK29bMV0rJzwvc3Bhbj4nOicnKSsnPHNwYW4+Jytlc2Mob1syXXx8b1swXSkrJzwvc3Bhbj48L2J1dHRvbj4nOwogICAgICB9KTsKICAgICAgaCs9JzwvZGl2Pic7CiAgICB9IGVsc2UgaWYocy50eXBlPT09InRleHQiKXsKICAgICAgaCs9JzxpbnB1dCBjbGFzcz0icmxmLWluIiBpZD0iJyt1aWQrJy10IiB0eXBlPSJ0ZXh0IiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IicrZXNjKHMucGxhY2Vob2xkZXIpKyciIHZhbHVlPSInK2VzYyhkYXRhW3MuZmllbGRdfHwiIikrJyI+PGRpdiBjbGFzcz0icmxmLWVyciIgaWQ9IicrdWlkKyctZSI+PC9kaXY+JzsKICAgICAgaCs9JzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icmxmLWJ0biIgaWQ9IicrdWlkKyctbmV4dCI+Q29udGludWUg4oaSPC9idXR0b24+JzsKICAgIH0gZWxzZSB7CiAgICAgIGgrPSc8bGFiZWwgY2xhc3M9InJsZi1sYmwiIGZvcj0iJyt1aWQrJy1uIj5GdWxsIG5hbWU8L2xhYmVsPjxpbnB1dCBjbGFzcz0icmxmLWluIiBpZD0iJyt1aWQrJy1uIiB0eXBlPSJ0ZXh0IiBhdXRvY29tcGxldGU9Im5hbWUiIHZhbHVlPSInK2VzYyhkYXRhLm5hbWV8fCIiKSsnIj4nOwogICAgICBoKz0nPGxhYmVsIGNsYXNzPSJybGYtbGJsIiBmb3I9IicrdWlkKyctcCI+TW9iaWxlIHBob25lPC9sYWJlbD48aW5wdXQgY2xhc3M9InJsZi1pbiIgaWQ9IicrdWlkKyctcCIgdHlwZT0idGVsIiBpbnB1dG1vZGU9InRlbCIgYXV0b2NvbXBsZXRlPSJ0ZWwiIHBsYWNlaG9sZGVyPSIoNTU1KSA1NTUtNTU1NSIgdmFsdWU9IicrZXNjKGRhdGEucGhvbmV8fCIiKSsnIj4nOwogICAgICBoKz0nPGxhYmVsIGNsYXNzPSJybGYtbGJsIiBmb3I9IicrdWlkKyctbSI+RW1haWw8L2xhYmVsPjxpbnB1dCBjbGFzcz0icmxmLWluIiBpZD0iJyt1aWQrJy1tIiB0eXBlPSJlbWFpbCIgaW5wdXRtb2RlPSJlbWFpbCIgYXV0b2NvbXBsZXRlPSJlbWFpbCIgdmFsdWU9IicrZXNjKGRhdGEuZW1haWx8fCIiKSsnIj4nOwogICAgICBoKz0nPGRpdiBjbGFzcz0icmxmLWhwIj48bGFiZWw+V2Vic2l0ZTxpbnB1dCBpZD0iJyt1aWQrJy1ocCIgdHlwZT0idGV4dCIgdGFiaW5kZXg9Ii0xIiBhdXRvY29tcGxldGU9Im9mZiI+PC9sYWJlbD48L2Rpdj4nOwogICAgICBoKz0nPGxhYmVsIGNsYXNzPSJybGYtY29uc2VudCI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iJyt1aWQrJy1jIicrKGRhdGEuc21zX2NvbnNlbnQ/JyBjaGVja2VkJzonJykrJz48c3Bhbj5CeSBjaGVja2luZyB0aGlzIGJveCwgSSBhZ3JlZSB0byByZWNlaXZlIHRleHQgbWVzc2FnZXMgZnJvbSAnK2VzYyhDRkcuYnJhbmQpKycgYWJvdXQgbXkgcmVhbCBlc3RhdGUgaW5xdWlyeSBhdCB0aGUgbnVtYmVyIHByb3ZpZGVkLiBNc2cgJmFtcDsgZGF0YSByYXRlcyBtYXkgYXBwbHkuIE1zZyBmcmVxdWVuY3kgdmFyaWVzLiBSZXBseSBTVE9QIHRvIG9wdCBvdXQsIEhFTFAgZm9yIGhlbHAuIENvbnNlbnQgaXMgbm90IGEgY29uZGl0aW9uIG9mIHB1cmNoYXNlLiA8YSBocmVmPSInK2VzYyhDRkcucHJpdmFjeVVybCkrJyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPlByaXZhY3kgUG9saWN5PC9hPi48L3NwYW4+PC9sYWJlbD4nOwogICAgICB2YXIgY3RhPWRhdGEuaW50ZW50PT09InZhbHVlIj8iR2V0IG15IGhvbWUgdmFsdWUg4oaSIjovZ3VpZGUvLnRlc3QoZGF0YS5pbnRlbnQpPyJHZXQgbXkgZnJlZSBndWlkZSDihpIiOmRhdGEuaW50ZW50PT09ImludmVzdCI/IlNlbmQgbWUgZGVhbHMg4oaSIjoiQ29ubmVjdCB3aXRoIG1lIOKGkiI7CiAgICAgIGgrPSc8ZGl2IGNsYXNzPSJybGYtZXJyIiBpZD0iJyt1aWQrJy1lIj48L2Rpdj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJsZi1idG4iIGlkPSInK3VpZCsnLW5leHQiPicrY3RhKyc8L2J1dHRvbj4nOwogICAgICBoKz0nPGRpdiBjbGFzcz0icmxmLXRydXN0Ij48c3Bhbj7wn5SSIFlvdXIgaW5mbyBzdGF5cyBwcml2YXRlPC9zcGFuPjxzcGFuPuKtkCA1LjAgb24gR29vZ2xlPC9zcGFuPjwvZGl2Pic7CiAgICB9CiAgICBoKz0nPC9kaXY+JysoZi5sZW5ndGg+MT8nPGRpdiBjbGFzcz0icmxmLW5hdiI+Jysoc2hvd0JhY2s/JzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icmxmLWJhY2siIGlkPSInK3VpZCsnLWJhY2siPuKGkCBCYWNrPC9idXR0b24+JzonPHNwYW4+PC9zcGFuPicpKyc8c3BhbiBjbGFzcz0icmxmLXN0ZXAtY291bnQiPlN0ZXAgJysoaSsxKSsnIG9mICcrZi5sZW5ndGgrJzwvc3Bhbj48L2Rpdj4nOicnKSsnPC9kaXY+JzsKICAgIHJvb3QuaW5uZXJIVE1MPWg7IGJpbmQocyk7CiAgfQogIGZ1bmN0aW9uIGJpbmQocyl7CiAgICB2YXIgYmFjaz0kKCJiYWNrIik7IGlmKGJhY2spYmFjay5vbmNsaWNrPWZ1bmN0aW9uKCl7aS0tO3JlbmRlcigpO307CiAgICBpZihzLnR5cGU9PT0iY2FyZHMiKXsKICAgICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChyb290LnF1ZXJ5U2VsZWN0b3JBbGwoIi5ybGYtb3B0IiksZnVuY3Rpb24oYil7CiAgICAgICAgYi5vbmNsaWNrPWZ1bmN0aW9uKCl7ZGF0YVtzLmZpZWxkXT1iLmdldEF0dHJpYnV0ZSgiZGF0YS12Iik7Yi5jbGFzc0xpc3QuYWRkKCJzZWwiKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aSsrO3JlbmRlcigpO30sMTgwKTt9OwogICAgICB9KTsKICAgIH0gZWxzZSBpZihzLnR5cGU9PT0idGV4dCIpewogICAgICB2YXIgdD0kKCJ0IiksZ289ZnVuY3Rpb24oKXt2YXIgdj10LnZhbHVlLnRyaW0oKTsKICAgICAgICBpZih2Lmxlbmd0aDwocy5taW58fDEpKXt0LmNsYXNzTGlzdC5hZGQoImJhZCIpOyQoImUiKS50ZXh0Q29udGVudD1zLmVycjtyZXR1cm47fQogICAgICAgIGRhdGFbcy5maWVsZF09djtpKys7cmVuZGVyKCk7fTsKICAgICAgJCgibmV4dCIpLm9uY2xpY2s9Z287CiAgICAgIHQub25rZXlkb3duPWZ1bmN0aW9uKGUpe2lmKGUua2V5PT09IkVudGVyIil7ZS5wcmV2ZW50RGVmYXVsdCgpO2dvKCk7fX07CiAgICB9IGVsc2UgewogICAgICB2YXIgcD0kKCJwIik7IHAub25pbnB1dD1mdW5jdGlvbigpe3AudmFsdWU9Zm10UGhvbmUocC52YWx1ZSk7fTsKICAgICAgJCgibmV4dCIpLm9uY2xpY2s9c3VibWl0OwogICAgfQogIH0KICBmdW5jdGlvbiBzdWJtaXQoKXsKICAgIGlmKHNlbmRpbmcpcmV0dXJuOwogICAgdmFyIG5tPSQoIm4iKSxwPSQoInAiKSxtPSQoIm0iKSxlPSQoImUiKTsKICAgIFtubSxwLG1dLmZvckVhY2goZnVuY3Rpb24oeCl7eC5jbGFzc0xpc3QucmVtb3ZlKCJiYWQiKTt9KTsKICAgIGRhdGEubmFtZT1ubS52YWx1ZS50cmltKCk7IGRhdGEucGhvbmU9cC52YWx1ZS50cmltKCk7IGRhdGEuZW1haWw9bS52YWx1ZS50cmltKCk7CiAgICBkYXRhLnNtc19jb25zZW50PSQoImMiKS5jaGVja2VkOwogICAgdmFyIGVycnM9W107CiAgICBpZihkYXRhLm5hbWUubGVuZ3RoPDIpe25tLmNsYXNzTGlzdC5hZGQoImJhZCIpO2VycnMucHVzaCgieW91ciBuYW1lIik7fQogICAgaWYoZGF0YS5waG9uZS5yZXBsYWNlKC9cRC9nLCIiKS5yZXBsYWNlKC9eMSg/PVxkezEwfSkvLCIiKS5sZW5ndGghPT0xMCl7cC5jbGFzc0xpc3QuYWRkKCJiYWQiKTtlcnJzLnB1c2goImEgMTAtZGlnaXQgbW9iaWxlIG51bWJlciIpO30KICAgIGlmKCEvXlteXHNAXStAW15cc0BdK1wuW15cc0BdezIsfSQvLnRlc3QoZGF0YS5lbWFpbCkpe20uY2xhc3NMaXN0LmFkZCgiYmFkIik7ZXJycy5wdXNoKCJhIHZhbGlkIGVtYWlsIik7fQogICAgaWYoZXJycy5sZW5ndGgpe2UudGV4dENvbnRlbnQ9IlBsZWFzZSBlbnRlciAiK2VycnMuam9pbigiLCAiKSsiLiI7cmV0dXJuO30KICAgIGUudGV4dENvbnRlbnQ9IiI7CiAgICB2YXIgcT1uZXcgVVJMU2VhcmNoUGFyYW1zKGxvY2F0aW9uLnNlYXJjaCk7CiAgICB2YXIgcGF5bG9hZD1PYmplY3QuYXNzaWduKHt9LGRhdGEsewogICAgICB3ZWJzaXRlOiQoImhwIikudmFsdWUsIGZvcm06b3B0cy5uYW1lfHwibWFpbiIsCiAgICAgIHBhZ2VfdXJsOmxvY2F0aW9uLmhyZWYsIHJlZmVycmVyOmRvY3VtZW50LnJlZmVycmVyLAogICAgICB1dG1fc291cmNlOnEuZ2V0KCJ1dG1fc291cmNlIil8fCIiLCB1dG1fbWVkaXVtOnEuZ2V0KCJ1dG1fbWVkaXVtIil8fCIiLCB1dG1fY2FtcGFpZ246cS5nZXQoInV0bV9jYW1wYWlnbiIpfHwiIiwKICAgICAgc3VibWl0dGVkX2F0Om5ldyBEYXRlKCkudG9JU09TdHJpbmcoKQogICAgfSk7CiAgICB2YXIgYnRuPSQoIm5leHQiKTsgc2VuZGluZz10cnVlOyBidG4uZGlzYWJsZWQ9dHJ1ZTsgYnRuLnRleHRDb250ZW50PSJTZW5kaW5n4oCmIjsKICAgIGZldGNoKENGRy5lbmRwb2ludCx7bWV0aG9kOiJQT1NUIixtb2RlOiJuby1jb3JzIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04In0sYm9keTpKU09OLnN0cmluZ2lmeShwYXlsb2FkKX0pCiAgICAgIC50aGVuKGRvbmUpCiAgICAgIC5jYXRjaChmdW5jdGlvbigpe3NlbmRpbmc9ZmFsc2U7YnRuLmRpc2FibGVkPWZhbHNlO2J0bi50ZXh0Q29udGVudD0iVHJ5IGFnYWluIOKGkiI7ZS50ZXh0Q29udGVudD0iQ29ubmVjdGlvbiBwcm9ibGVtLiBQbGVhc2UgY2hlY2sgeW91ciBpbnRlcm5ldCBhbmQgdHJ5IGFnYWluLiI7fSk7CiAgfQogIGZ1bmN0aW9uIGRvbmUoKXsKICAgIHZhciBmaXJzdD1lc2MoKGRhdGEubmFtZXx8IiIpLnNwbGl0KCIgIilbMF0pOwogICAgaWYob3B0cy51bmxvY2spe3N0b3JlKCJybGZfIitvcHRzLnVubG9jaywiMSIpOyB1bmxvY2sodHJ1ZSk7IHJldHVybjt9CiAgICB2YXIgbXNnPWRhdGEuaW50ZW50PT09InZhbHVlIj8iSSdtIHByZXBhcmluZyB5b3VyIGN1c3RvbSBob21lIHZhbHVlIHJlcG9ydCBhbmQgd2lsbCB0ZXh0IHlvdSBzaG9ydGx5LiI6CiAgICAgICAgICAgIGRhdGEuaW50ZW50PT09ImJ1eSI/IkknbGwgdGV4dCB5b3Ugc2hvcnRseSB0byBsZWFybiB3aGF0IHlvdSdyZSBsb29raW5nIGZvciBhbmQgc3RhcnQgc2VuZGluZyBtYXRjaGluZyBob21lcy4iOgogICAgICAgICAgICBkYXRhLmludGVudD09PSJyZW50Ij8iSSdsbCB0ZXh0IHlvdSBzaG9ydGx5IHdpdGggcmVudGFscyB0aGF0IGZpdCB3aGF0IHlvdSdyZSBsb29raW5nIGZvci4iOgogICAgICAgICAgICBkYXRhLmludGVudD09PSJpbnZlc3QiPyJZb3UncmUgb24gdGhlIGxpc3QuIEknbGwgdGV4dCB5b3Ugb2ZmLW1hcmtldCBkZWFscyBhcyBzb29uIGFzIHRoZXkgY29tZSB1cC4iOgogICAgICAgICAgICAiSSdsbCB0ZXh0IHlvdSBzaG9ydGx5IHRvIHRhbGsgdGhyb3VnaCB5b3VyIHBsYW5zLiI7CiAgICBpZighZGF0YS5zbXNfY29uc2VudCltc2c9bXNnLnJlcGxhY2UoInRleHQiLCJyZWFjaCBvdXQgdG8iKTsKICAgIHJvb3QuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJybGYtY2FyZCI+PGRpdiBjbGFzcz0icmxmLWRvbmUgcmxmLWZhZGUiPjxkaXYgY2xhc3M9InJsZi1jaGVjayI+4pyTPC9kaXY+PGgyIGNsYXNzPSJybGYtcSI+WW91XCdyZSBhbGwgc2V0LCAnK2ZpcnN0KychPC9oMj48cCBjbGFzcz0icmxmLXN1YiI+Jyttc2crJzwvcD4nKwogICAgICAnPGEgY2xhc3M9InJsZi1idG4gcmxmLWJ0bjIiIGhyZWY9InRlbDonK0NGRy5waG9uZSsnIj5QcmVmZXIgdG8gdGFsayBub3c/IENhbGwgKDkxNCkgMzU5LTE0MTU8L2E+PC9kaXY+PC9kaXY+JzsKICAgIGlmKHdpbmRvdy5ndGFnKXRyeXtndGFnKCJldmVudCIsImdlbmVyYXRlX2xlYWQiLHtsZWFkX3R5cGU6ZGF0YS5pbnRlbnR9KTt9Y2F0Y2goXyl7fQogICAgaWYod2luZG93LmZicSl0cnl7ZmJxKCJ0cmFjayIsIkxlYWQiLHtjb250ZW50X2NhdGVnb3J5OmRhdGEuaW50ZW50fSk7fWNhdGNoKF8pe30KICB9CiAgZnVuY3Rpb24gdW5sb2NrKGp1c3ROb3cpewogICAgdmFyIGc9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3B0cy5ndWlkZUlkKTsgaWYoIWcpcmV0dXJuOwogICAgZy5oaWRkZW49ZmFsc2U7CiAgICByb290LmlubmVySFRNTD0nPGRpdiBjbGFzcz0icmxmLWNhcmQgcmxmLWRvbmUiPjxkaXYgY2xhc3M9InJsZi1jaGVjayI+4pyTPC9kaXY+PGgyIGNsYXNzPSJybGYtcSI+JysoanVzdE5vdz8iWW91ciBndWlkZSBpcyB1bmxvY2tlZCEiOiJXZWxjb21lIGJhY2shIikrJzwvaDI+PHAgY2xhc3M9InJsZi1zdWIiPicrKGp1c3ROb3c/IlNjcm9sbCBkb3duIHRvIHJlYWQgaXQuIEkndmUgYWxzbyB0ZXh0ZWQgeW91IGEgbGluay4iOiJZb3VyIGd1aWRlIGlzIGJlbG93LiIpKyc8L3A+PC9kaXY+JzsKICAgIGlmKGp1c3ROb3cpc2V0VGltZW91dChmdW5jdGlvbigpe2cuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJzdGFydCJ9KTt9LDQwMCk7CiAgfQogIGlmKG9wdHMudW5sb2NrJiZzdG9yZSgicmxmXyIrb3B0cy51bmxvY2spPT09IjEiKXt1bmxvY2soZmFsc2UpO31lbHNle3JlbmRlcigpO30KICByZXR1cm4ge3NldEludGVudDpmdW5jdGlvbih2KXtkYXRhPXtpbnRlbnQ6dn07aT0xO3JlbmRlcigpO3Jvb3Quc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJzdGFydCJ9KTt9fTsKfQoKZnVuY3Rpb24gc3RpY2t5QmFyKCl7CiAgaWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImpyLWJhciIpKXJldHVybjsKICB2YXIgY3NzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CiAgY3NzLnRleHRDb250ZW50PSIjanItYmFye3Bvc2l0aW9uOmZpeGVkO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3otaW5kZXg6OTk5OTtkaXNwbGF5Om5vbmU7Z2FwOjhweDtwYWRkaW5nOjEwcHggMTJweCBjYWxjKDEwcHggKyBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkpO2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuOTYpO2JveC1zaGFkb3c6MCAtNHB4IDIwcHggcmdiYSgwLDAsMCwuMTIpO2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmfSIrCiAgICAiI2pyLWJhciBhe2ZsZXg6MTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjZweDt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjE1cHg7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTJweCA2cHg7Ym9yZGVyOjJweCBzb2xpZCAjMDA3MWUzO2NvbG9yOiMwMDcxZTM7YmFja2dyb3VuZDojZmZmfSIrCiAgICAiI2pyLWJhciBhLmpyLW1haW57ZmxleDoxLjY7YmFja2dyb3VuZDojMDA3MWUzO2NvbG9yOiNmZmZ9IisKICAgICJAbWVkaWEgKG1heC13aWR0aDo3MzZweCl7I2pyLWJhcntkaXNwbGF5OmZsZXh9Ym9keXtwYWRkaW5nLWJvdHRvbTo3NnB4IWltcG9ydGFudH19IjsKICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGNzcyk7CiAgdmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7IGIuaWQ9ImpyLWJhciI7CiAgYi5pbm5lckhUTUw9JzxhIGhyZWY9InRlbDonK0NGRy5waG9uZSsnIiBhcmlhLWxhYmVsPSJDYWxsIEplcnJpbiI+8J+TniBDYWxsPC9hPjxhIGhyZWY9InNtczonK0NGRy5waG9uZSsnIiBhcmlhLWxhYmVsPSJUZXh0IEplcnJpbiI+8J+SrCBUZXh0PC9hPjxhIGNsYXNzPSJqci1tYWluIiBocmVmPSIjaG9tZSIgaWQ9ImpyLWJhci1nbyI+R2V0IFN0YXJ0ZWQg4oaSPC9hPic7CiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChiKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgianItYmFyLWdvIikub25jbGljaz1mdW5jdGlvbihldil7CiAgICB2YXIgaD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmxmLWhlcm8iKTsKICAgIGlmKGgmJmgub2Zmc2V0UGFyZW50KXtldi5wcmV2ZW50RGVmYXVsdCgpO2guc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJzdGFydCJ9KTt9CiAgICBlbHNle3NldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgeD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmxmLWhlcm8iKTtpZih4KXguc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJzdGFydCJ9KTt9LDcwMCk7fQogIH07Cn0KCmlmKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmxmLWNzcycpKXt2YXIgc3Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtzdC5pZD0ncmxmLWNzcyc7c3QudGV4dENvbnRlbnQ9Ii5ybGYtbW91bnR7LS1ybGYtYnJhbmQ6IzAwNzFlMzstLXJsZi1icmFuZC1kYXJrOiMwMDViYjg7LS1ybGYtYWNjZW50OiNlZWY1ZmQ7LS1ybGYtdGV4dDojMWQxZDFmOy0tcmxmLW11dGVkOiM2ZTZlNzM7LS1ybGYtYm9yZGVyOiNlM2UzZTg7LS1ybGYtYmc6I2ZmZmZmZjstLXJsZi1lcnJvcjojYzAzOTJiOyBmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCxcIlNlZ29lIFVJXCIsUm9ib3RvLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2NvbG9yOnZhcigtLXJsZi10ZXh0KTttYXgtd2lkdGg6NTYwcHg7bWFyZ2luOjAgYXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3h9IC5ybGYtbW91bnQgKntib3gtc2l6aW5nOmJvcmRlci1ib3h9IC5ybGYtbW91bnQgLnJsZi1jYXJke2JhY2tncm91bmQ6dmFyKC0tcmxmLWJnKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLXJsZi1ib3JkZXIpO2JvcmRlci1yYWRpdXM6MThweDtwYWRkaW5nOjI4cHggMjJweCAyMnB4O2JveC1zaGFkb3c6MCA4cHggMzBweCByZ2JhKDAsMCwwLC4wOCl9IC5ybGYtbW91bnQgLnJsZi1wcm9ncmVzc3toZWlnaHQ6NnB4O2JhY2tncm91bmQ6dmFyKC0tcmxmLWFjY2VudCk7Ym9yZGVyLXJhZGl1czo5OXB4O292ZXJmbG93OmhpZGRlbjttYXJnaW4tYm90dG9tOjIycHh9IC5ybGYtbW91bnQgLnJsZi1iYXJ7aGVpZ2h0OjEwMCU7d2lkdGg6MDtiYWNrZ3JvdW5kOnZhcigtLXJsZi1icmFuZCk7Ym9yZGVyLXJhZGl1czo5OXB4O3RyYW5zaXRpb246d2lkdGggLjM1cyBlYXNlfSAucmxmLW1vdW50IC5ybGYtcXtmb250LXNpemU6MjNweDtsaW5lLWhlaWdodDoxLjI1O2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW46MCAwIDZweH0gLnJsZi1tb3VudCAucmxmLXN1Yntmb250LXNpemU6MTVweDtjb2xvcjp2YXIoLS1ybGYtbXV0ZWQpO21hcmdpbjowIDAgMjBweH0gLnJsZi1tb3VudCAucmxmLW9wdGlvbnN7ZGlzcGxheTpncmlkO2dhcDoxMHB4fSAucmxmLW1vdW50IC5ybGYtb3B0aW9ucy50d297Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnJ9IC5ybGYtbW91bnQgLnJsZi1vcHR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTJweDt3aWR0aDoxMDAlO3RleHQtYWxpZ246bGVmdDtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLXJsZi10ZXh0KTtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ybGYtYm9yZGVyKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoxNXB4IDE2cHg7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1cyxiYWNrZ3JvdW5kIC4xNXMsdHJhbnNmb3JtIC4xc30gLnJsZi1tb3VudCAucmxmLW9wdGlvbnMudHdvIC5ybGYtb3B0LndpZGV7Z3JpZC1jb2x1bW46MSAvIC0xfSAucmxmLW1vdW50IC5ybGYtb3B0aW9ucy50d28gLnJsZi1vcHR7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2p1c3RpZnktY29udGVudDpjZW50ZXI7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzoxOHB4IDEwcHg7Z2FwOjZweH0gLnJsZi1tb3VudCAucmxmLW9wdDpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tcmxmLWJyYW5kKX0gLnJsZi1tb3VudCAucmxmLW9wdDphY3RpdmV7dHJhbnNmb3JtOnNjYWxlKC45OCl9IC5ybGYtbW91bnQgLnJsZi1vcHQuc2Vse2JvcmRlci1jb2xvcjp2YXIoLS1ybGYtYnJhbmQpO2JhY2tncm91bmQ6dmFyKC0tcmxmLWFjY2VudCl9IC5ybGYtbW91bnQgLnJsZi1pY297Zm9udC1zaXplOjI2cHg7bGluZS1oZWlnaHQ6MX0gLnJsZi1tb3VudCBsYWJlbC5ybGYtbGJse2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NjAwO21hcmdpbjoxNHB4IDAgNnB4fSAucmxmLW1vdW50IGlucHV0LnJsZi1pbnt3aWR0aDoxMDAlO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTZweDtwYWRkaW5nOjE0cHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ybGYtYm9yZGVyKTtib3JkZXItcmFkaXVzOjEycHg7YmFja2dyb3VuZDojZmZmO2NvbG9yOnZhcigtLXJsZi10ZXh0KTtvdXRsaW5lOm5vbmU7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1c30gLnJsZi1tb3VudCBpbnB1dC5ybGYtaW46Zm9jdXN7Ym9yZGVyLWNvbG9yOnZhcigtLXJsZi1icmFuZCl9IC5ybGYtbW91bnQgaW5wdXQucmxmLWluLmJhZHtib3JkZXItY29sb3I6dmFyKC0tcmxmLWVycm9yKX0gLnJsZi1tb3VudCAucmxmLWVycntjb2xvcjp2YXIoLS1ybGYtZXJyb3IpO2ZvbnQtc2l6ZToxM3B4O21hcmdpbi10b3A6NnB4O21pbi1oZWlnaHQ6MTZweH0gLnJsZi1tb3VudCAucmxmLWJ0bntkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7bWFyZ2luLXRvcDoxOHB4O2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTdweDtmb250LXdlaWdodDo3MDA7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLXJsZi1icmFuZCk7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MTZweDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjE1c30gLnJsZi1tb3VudCAucmxmLWJ0bjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLXJsZi1icmFuZC1kYXJrKX0gLnJsZi1tb3VudCAucmxmLWJ0bltkaXNhYmxlZF17b3BhY2l0eTouNjtjdXJzb3I6d2FpdH0gLnJsZi1tb3VudCAucmxmLW5hdntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi10b3A6MTZweDttaW4taGVpZ2h0OjIycHh9IC5ybGYtbW91bnQgLnJsZi1iYWNre2JhY2tncm91bmQ6bm9uZTtib3JkZXI6MDtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE0cHg7Y29sb3I6dmFyKC0tcmxmLW11dGVkKTtjdXJzb3I6cG9pbnRlcjtwYWRkaW5nOjRweCAwfSAucmxmLW1vdW50IC5ybGYtYmFjazpob3Zlcntjb2xvcjp2YXIoLS1ybGYtdGV4dCl9IC5ybGYtbW91bnQgLnJsZi1zdGVwLWNvdW50e2ZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXJsZi1tdXRlZCl9IC5ybGYtbW91bnQgLnJsZi1jb25zZW50e2Rpc3BsYXk6ZmxleDtnYXA6MTBweDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O21hcmdpbi10b3A6MTZweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjQ1O2NvbG9yOnZhcigtLXJsZi1tdXRlZCl9IC5ybGYtbW91bnQgLnJsZi1jb25zZW50IGlucHV0e21hcmdpbi10b3A6MnB4O3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7ZmxleDowIDAgMThweDthY2NlbnQtY29sb3I6dmFyKC0tcmxmLWJyYW5kKX0gLnJsZi1tb3VudCAucmxmLWNvbnNlbnQgYXtjb2xvcjp2YXIoLS1ybGYtbXV0ZWQpfSAucmxmLW1vdW50IC5ybGYtdHJ1c3R7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjE2cHg7ZmxleC13cmFwOndyYXA7bWFyZ2luLXRvcDoxNHB4O2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXJsZi1tdXRlZCl9IC5ybGYtbW91bnQgLnJsZi1ocHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi05OTk5cHg7d2lkdGg6MXB4O2hlaWdodDoxcHg7b3ZlcmZsb3c6aGlkZGVufSAucmxmLW1vdW50IC5ybGYtZG9uZXt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjEwcHggMH0gLnJsZi1tb3VudCAucmxmLWNoZWNre3dpZHRoOjY0cHg7aGVpZ2h0OjY0cHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDp2YXIoLS1ybGYtYWNjZW50KTtjb2xvcjp2YXIoLS1ybGYtYnJhbmQpO2ZvbnQtc2l6ZTozNHB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW46MCBhdXRvIDE2cHh9IC5ybGYtbW91bnQgLnJsZi1mYWRle2FuaW1hdGlvbjpybGZJbiAuM3MgZWFzZX0gQGtleWZyYW1lcyBybGZJbntmcm9te29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSg4cHgpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZX19IEBtZWRpYSAobWF4LXdpZHRoOjQyMHB4KXsucmxmLW1vdW50IC5ybGYtY2FyZHtwYWRkaW5nOjIycHggMTZweCAxOHB4fS5ybGYtbW91bnQgLnJsZi1xe2ZvbnQtc2l6ZToyMXB4fX0gLnJsZi1tb3VudCAucmxmLWJ0bjJ7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMwMDcxZTM7Ym9yZGVyOjJweCBzb2xpZCAjMDA3MWUzO3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtc2l6ZToxNXB4fSAucmxmLW1vdW50IC5ybGYtYnRuMjpob3ZlcntiYWNrZ3JvdW5kOiNlZWY1ZmR9IC5ybGYtbW91bnR7c2Nyb2xsLW1hcmdpbi10b3A6MTZweH0iO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3QpO30KZnVuY3Rpb24gbGF5b3V0KCl7CiAgdmFyIGhvbWU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvbWUtc2VjdGlvbiIpOwogIHZhciBoZXJvPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJqci1oZXJvIik7IAogIGlmKGhvbWUmJmhlcm8pe3ZhciBjPWhlcm8uY2xvc2VzdCgiLmVtYmVkLWNvbXBvbmVudCIpfHxoZXJvOyBpZihob21lLmZpcnN0RWxlbWVudENoaWxkIT09Yylob21lLmluc2VydEJlZm9yZShjLGhvbWUuZmlyc3RFbGVtZW50Q2hpbGQpO30KICB2YXIgcmV2PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJqci1yZXZpZXdzIiksIGNvbnRhY3Q9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5lcjAxIik7CiAgaWYocmV2JiZjb250YWN0JiZjb250YWN0LnBhcmVudE5vZGUpe3ZhciByPXJldi5jbG9zZXN0KCIuZW1iZWQtY29tcG9uZW50Iil8fHJldjsgaWYoci5uZXh0RWxlbWVudFNpYmxpbmchPT1jb250YWN0KWNvbnRhY3QucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocixjb250YWN0KTt9CiAgW1siY29udGFpbmVyMDMiLCIjYnV5ZXJzZ3VpZGUiXSxbImNvbnRhaW5lcjA1IiwiI3NlbGxlcnNndWlkZSJdLFsiY29udGFpbmVyMDYiLCIjaW52ZXN0bWVudHMiXV0uZm9yRWFjaChmdW5jdGlvbihwKXsKICAgIHZhciBib3g9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocFswXSk7IGlmKCFib3gpcmV0dXJuOwogICAgYm94LnF1ZXJ5U2VsZWN0b3JBbGwoJ2FbaHJlZj0iI2Zvcm0iXScpLmZvckVhY2goZnVuY3Rpb24oYSl7YS5zZXRBdHRyaWJ1dGUoImhyZWYiLHBbMV0pO30pOwogIH0pOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiNob21lLXNlY3Rpb24gLnRleHQtY29tcG9uZW50IikuZm9yRWFjaChmdW5jdGlvbih0KXsKICAgIGlmKC9TQUxFU01BTi9pLnRlc3QodC50ZXh0Q29udGVudCkmJnQuY2hpbGRyZW4ubGVuZ3RoPT09MCl0LnRleHRDb250ZW50PXQudGV4dENvbnRlbnQucmVwbGFjZSgvU0FMRVNNQU4vaSxmdW5jdGlvbihtKXtyZXR1cm4gbT09PW0udG9VcHBlckNhc2UoKT8iU0FMRVNQRVJTT04iOiJTYWxlc3BlcnNvbiI7fSk7CiAgfSk7Cn0KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKGV2KXsKICB2YXIgYT1ldi50YXJnZXQuY2xvc2VzdCYmZXYudGFyZ2V0LmNsb3Nlc3QoIltkYXRhLXJsZi1wcmVdIik7IGlmKCFhKXJldHVybjsKICB0cnl7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgicmxmX3ByZSIsYS5nZXRBdHRyaWJ1dGUoImRhdGEtcmxmLXByZSIpKTt9Y2F0Y2goXyl7fQogIHZhciBoPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJybGYtaGVybyIpOwogIGlmKGgmJmgub2Zmc2V0UGFyZW50JiZ3aW5kb3cuUkxGLmhlcm8pe2V2LnByZXZlbnREZWZhdWx0KCk7d2luZG93LlJMRi5oZXJvLnNldEludGVudChhLmdldEF0dHJpYnV0ZSgiZGF0YS1ybGYtcHJlIikpO3RyeXtzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCJybGZfcHJlIik7fWNhdGNoKF8pe319Cn0sdHJ1ZSk7CndpbmRvdy5STEY9e21vdW50Om1vdW50LHN0aWNreUJhcjpzdGlja3lCYXIsbGF5b3V0OmxheW91dH07Cn0KZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnJsZi1tb3VudDpub3QoW2RhdGEtcmVhZHldKSIpLmZvckVhY2goZnVuY3Rpb24oZWwpewogIGVsLnNldEF0dHJpYnV0ZSgiZGF0YS1yZWFkeSIsIjEiKTsKICB2YXIgaW5zdD13aW5kb3cuUkxGLm1vdW50KGVsLHtpbnRlbnQ6ZWwuZ2V0QXR0cmlidXRlKCJkYXRhLWludGVudCIpfHxudWxsLG5hbWU6ZWwuZ2V0QXR0cmlidXRlKCJkYXRhLW5hbWUiKXx8Im1haW4iLHVubG9jazplbC5nZXRBdHRyaWJ1dGUoImRhdGEtdW5sb2NrIil8fG51bGwsZ3VpZGVJZDplbC5nZXRBdHRyaWJ1dGUoImRhdGEtZ3VpZGUiKXx8bnVsbH0pOwogIGlmKGVsLmlkPT09InJsZi1oZXJvIil7d2luZG93LlJMRi5oZXJvPWluc3Q7CiAgICB2YXIgcHJlPW51bGw7dHJ5e3ByZT1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCJybGZfcHJlIik7c2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgicmxmX3ByZSIpO31jYXRjaChfKXt9CiAgICBpZihwcmUpc2V0VGltZW91dChmdW5jdGlvbigpe2luc3Quc2V0SW50ZW50KHByZSk7fSwzMDApO30KfSk7CndpbmRvdy5STEYuc3RpY2t5QmFyKCk7CndpbmRvdy5STEYubGF5b3V0KCk7c2V0VGltZW91dCh3aW5kb3cuUkxGLmxheW91dCw4MDApOwp9KSgpOwo=")));(new Function(s))();})();(function(){if(window.__jrLeo)return;window.__jrLeo=1;var L="https://heyleo.com/jerrinrealty";function add(){document.querySelectorAll(".rlf-mount .rlf-done").forEach(function(d){if(d.querySelector(".jr-leo"))return;var p=document.createElement("p");p.className="rlf-sub jr-leo";p.style.margin="18px 0 0";p.textContent="While you wait, try my AI home search. Just describe your dream home:";var a=document.createElement("a");a.className="rlf-btn rlf-btn2";a.href=L;a.target="_blank";a.rel="noopener";a.textContent="Search homes with AI →";a.style.marginTop="8px";p.appendChild(a);d.appendChild(p);});}new MutationObserver(add).observe(document.body,{childList:true,subtree:true});add();})();(function(){var H=decodeURIComponent(escape(atob("PGZvb3RlciBjbGFzcz0ianItZm9vdCIgaWQ9ImpyLWZvb3QiPgo8c3R5bGU+CiN0ZXh0MzcsI2xpbmtzMDMsI2xpbmtzMDQsI3RleHQwMiwjbGlua3MwMiwjbGlua3MwMSwjaWNvbnMwMXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fQouanItZm9vdHtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwiU2Vnb2UgVUkiLFJvYm90byxJbnRlcixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjttYXgtd2lkdGg6NzIwcHg7bWFyZ2luOjMycHggYXV0byAwO3BhZGRpbmc6MjJweCAxNnB4IDI2cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2UzZTNlODt0ZXh0LWFsaWduOmxlZnQ7Y29sb3I6IzZlNmU3Mztmb250LXNpemU6MTIuNXB4O2xpbmUtaGVpZ2h0OjEuNn0KLmpyLWZvb3QgYntjb2xvcjojMWQxZDFmfQouanItZm9vdCBwe21hcmdpbjowIDAgMTBweH0KLmpyLWZvb3QgYXtjb2xvcjojNDg0ODRmO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9Ci5qci1mb290IC5qci1saW5rc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjZweCAxNHB4O21hcmdpbjowIDAgMTJweH0KLmpyLWZvb3QgLmpyLWVob3tkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMWQxZDFmfQo8L3N0eWxlPgo8cD48Yj5KZXJyaW4gSm9objwvYj4sIExpY2Vuc2VkIFJlYWwgRXN0YXRlIFNhbGVzcGVyc29uLCBOWSBMaWMuICMxMDQwMTM5MDQxMyAmbWlkZG90OyBKZXJyaW4gUmVhbHR5LCBhZmZpbGlhdGVkIHdpdGggPGI+UmVhbCBCcm9rZXIgTlkgTExDPC9iPiwgTGljZW5zZWQgUmVhbCBFc3RhdGUgQnJva2VyICZtaWRkb3Q7IDQ3NyBNYWRpc29uIEF2ZS4sIFN0ZS4gNjQ4LCBOZXcgWW9yaywgTlkgMTAwMjIgJm1pZGRvdDsgQnJva2VyIG9mZmljZSA8YSBocmVmPSJ0ZWw6KzE4NTU0NTAwNDQyIj4oODU1KSA0NTAtMDQ0MjwvYT4gJm1pZGRvdDsgQWdlbnQgPGEgaHJlZj0idGVsOisxOTE0MzU5MTQxNSI+KDkxNCkgMzU5LTE0MTU8L2E+ICZtaWRkb3Q7IDxhIGhyZWY9Im1haWx0bzpqb2huQGplcnJpbnJlYWx0eS5jb20iPmpvaG5AamVycmlucmVhbHR5LmNvbTwvYT48L3A+CjxwIGNsYXNzPSJqci1laG8iPiYjODk2MjsgRXF1YWwgSG91c2luZyBPcHBvcnR1bml0eTwvcD4KPHA+V2Ugc3VwcG9ydCB0aGUgRmFpciBIb3VzaW5nIEFjdCBhbmQgdGhlIE5ldyBZb3JrIFN0YXRlIEh1bWFuIFJpZ2h0cyBMYXcgYW5kIGRvIG5vdCBkaXNjcmltaW5hdGUgb24gYW55IHByb3RlY3RlZCBiYXNpcy4gQWxsIGxhd2Z1bCBzb3VyY2VzIG9mIGluY29tZSwgaW5jbHVkaW5nIGhvdXNpbmcgdm91Y2hlcnMsIGFyZSBhY2NlcHRlZC48L3A+CjxkaXYgY2xhc3M9ImpyLWxpbmtzIj4KPGEgaHJlZj0iaHR0cHM6Ly9vbmVyZWFsLmNvbS8iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj5SZWFsIEJyb2tlciBOWSBMTEM8L2E+CjxhIGhyZWY9Imh0dHBzOi8vYm9sdC1jdXN0b20tYXNzZXRzLnRoZXJlYWxicm9rZXJhZ2UuY29tL25ldy15b3JrLWNvbXBsaWFuY2Uvc3RhbmRhcmRpemVkLW9wZXJhdGluZy1wcm9jZWR1cmUtbm90YXJpemVkLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPk5ZIFN0YW5kYXJkIE9wZXJhdGluZyBQcm9jZWR1cmVzPC9hPgo8YSBocmVmPSJodHRwczovL2Rvcy5ueS5nb3Yvc3lzdGVtL2ZpbGVzL2RvY3VtZW50cy8yMDIxLzA4L2ZhaXJob3VzaW5nbm90aWNlLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPk5ZIEZhaXIgSG91c2luZyBOb3RpY2U8L2E+CjxhIGhyZWY9Imh0dHBzOi8vbnlzYXIuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIyLzA1L1JNQV9Vbmtub3duLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPlJlYXNvbmFibGUgQWNjb21tb2RhdGlvbnMgTm90aWNlPC9hPgo8YSBocmVmPSIjcHJpdmFjeXBvbGljeSI+UHJpdmFjeSBQb2xpY3k8L2E+CjxhIGhyZWY9IiN0ZXJtIj5UZXJtcyAmYW1wOyBDb25kaXRpb25zPC9hPgo8YSBocmVmPSIjdGVybSI+QWNjZXNzaWJpbGl0eTwvYT4KPGEgaHJlZj0iaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9qZXJyaW5yZWFsdHkiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj5JbnN0YWdyYW08L2E+CjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9zaGFyZS8xSmdTTlFTNE5KLyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPkZhY2Vib29rPC9hPgo8L2Rpdj4KPHA+TGlzdGluZyBpbmZvcm1hdGlvbiBpcyBkZWVtZWQgcmVsaWFibGUgYnV0IG5vdCBndWFyYW50ZWVkLiBSZXZpZXdzIGFyZSBmcm9tIEdvb2dsZSBhbmQgWmlsbG93OyBzb21lIGFyZSBzaG9ydGVuZWQuIFNhbGVzIGRhdGEgZnJvbSBIb21lcy5jb20uIE5vdGhpbmcgb24gdGhpcyBzaXRlIGlzIGxlZ2FsLCB0YXggb3IgZmluYW5jaWFsIGFkdmljZS4gJmNvcHk7IDIwMjYgSmVycmluIFJlYWx0eS48L3A+CjwvZm9vdGVyPgo=")));function f(){document.querySelectorAll("section[id$='-section']").forEach(function(s){if(s.querySelector(".jr-foot"))return;var d=document.createElement("div");d.innerHTML=H;s.appendChild(d);});}f();setTimeout(f,1200);})();

Jerrin John

Licensed Real Estate Salesperson

License# 10401390413 | Real Broker NY LLC

All listing information is deemed reliable but is not guaranteed and is subject to errors, omissions, changes in price, prior sale, or withdrawal without notice. No representation is made as to the accuracy of any description. All measurements and square footages are approximate, and all descriptive information should be independently verified. No financial or legal advice is provided. Jerrin John, New York Real Estate Licensed #10401390413, DBA Jerrin Realty under Real Broker NY LLC. Jerrin and its affiliates support the Fair Housing Act and Equal Opportunity Act. Jerrin and its affiliates do not discriminate against voucher holders pursuant to applicable law, and all lawful sources of income are accepted.

Privacy PolicyEffective Date: 03/06/2026This Privacy Policy explains how [Your Name or Company Name] ("we", "our", or "us") collects, uses, and protects the personal information you provide through our lead forms, website, or social media advertisements, in compliance with applicable privacy laws.1. Information We Collect
We may collect the following personal information when you engage with our real estate advertisements or submit a lead form:
Full nameEmail addressPhone numberAny message or inquiry details you submit2. How We Use Your Information
We collect your information for the following purposes:
To contact you regarding properties, listings, or related real estate servicesTo respond to your inquiriesTo send updates, promotions, or newsletters (only with your consent)3. How We Share Information
We do not sell your personal information. We may share your information with:
Our licensed real estate broker or affiliated agents, for service purposesThird-party service providers (e.g., CRM or marketing platforms) under confidentiality obligations4. Data Security
We use commercially reasonable safeguards to protect your personal information from unauthorized access, use, or disclosure.
5. Your Rights
You have the right to request access to your personal information, or request that we delete or correct it. To make a request, contact us at the email below.
SMS Privacy PolicyJerrin Realty respects your privacy and is committed to protecting your personal information.Information We CollectWhen you opt in to receive SMS communications, we may collect:* Your name
* Phone number
* Real estate inquiry details
How We Use Your InformationYour information is used solely to communicate with you regarding:* Property inquiries
* Appointment confirmations
* Listing updates
* Real estate transaction updates
* Customer support
Information SharingJerrin Realty does not sell, rent, or share your phone number or personal information with third parties for marketing purposes.Your information may only be shared with service providers that help deliver SMS messages and manage customer communications.Data SecurityWe implement reasonable security measures to protect your personal information.Opt-OutYou may opt out of SMS communications at any time by replying STOP to any message.Contact InformationIf you have questions about this privacy policy, contact:Jerrin John
Licensed Real Estate Salesperson in New York
License# 10401390413
Email: [email protected]
Phone: +1 (914) 359-1415
Broker Name: Real Broker NY LLC

(function(){var H=decodeURIComponent(escape(atob("PGZvb3RlciBjbGFzcz0ianItZm9vdCIgaWQ9ImpyLWZvb3QiPgo8c3R5bGU+CiN0ZXh0MzcsI2xpbmtzMDMsI2xpbmtzMDQsI3RleHQwMiwjbGlua3MwMiwjbGlua3MwMSwjaWNvbnMwMXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fQouanItZm9vdHtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwiU2Vnb2UgVUkiLFJvYm90byxJbnRlcixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjttYXgtd2lkdGg6NzIwcHg7bWFyZ2luOjMycHggYXV0byAwO3BhZGRpbmc6MjJweCAxNnB4IDI2cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2UzZTNlODt0ZXh0LWFsaWduOmxlZnQ7Y29sb3I6IzZlNmU3Mztmb250LXNpemU6MTIuNXB4O2xpbmUtaGVpZ2h0OjEuNn0KLmpyLWZvb3QgYntjb2xvcjojMWQxZDFmfQouanItZm9vdCBwe21hcmdpbjowIDAgMTBweH0KLmpyLWZvb3QgYXtjb2xvcjojNDg0ODRmO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9Ci5qci1mb290IC5qci1saW5rc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjZweCAxNHB4O21hcmdpbjowIDAgMTJweH0KLmpyLWZvb3QgLmpyLWVob3tkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMWQxZDFmfQo8L3N0eWxlPgo8cD48Yj5KZXJyaW4gSm9objwvYj4sIExpY2Vuc2VkIFJlYWwgRXN0YXRlIFNhbGVzcGVyc29uLCBOWSBMaWMuICMxMDQwMTM5MDQxMyAmbWlkZG90OyBKZXJyaW4gUmVhbHR5LCBhZmZpbGlhdGVkIHdpdGggPGI+UmVhbCBCcm9rZXIgTlkgTExDPC9iPiwgTGljZW5zZWQgUmVhbCBFc3RhdGUgQnJva2VyICZtaWRkb3Q7IDQ3NyBNYWRpc29uIEF2ZS4sIFN0ZS4gNjQ4LCBOZXcgWW9yaywgTlkgMTAwMjIgJm1pZGRvdDsgQnJva2VyIG9mZmljZSA8YSBocmVmPSJ0ZWw6KzE4NTU0NTAwNDQyIj4oODU1KSA0NTAtMDQ0MjwvYT4gJm1pZGRvdDsgQWdlbnQgPGEgaHJlZj0idGVsOisxOTE0MzU5MTQxNSI+KDkxNCkgMzU5LTE0MTU8L2E+ICZtaWRkb3Q7IDxhIGhyZWY9Im1haWx0bzpqb2huQGplcnJpbnJlYWx0eS5jb20iPmpvaG5AamVycmlucmVhbHR5LmNvbTwvYT48L3A+CjxwIGNsYXNzPSJqci1laG8iPiYjODk2MjsgRXF1YWwgSG91c2luZyBPcHBvcnR1bml0eTwvcD4KPHA+V2Ugc3VwcG9ydCB0aGUgRmFpciBIb3VzaW5nIEFjdCBhbmQgdGhlIE5ldyBZb3JrIFN0YXRlIEh1bWFuIFJpZ2h0cyBMYXcgYW5kIGRvIG5vdCBkaXNjcmltaW5hdGUgb24gYW55IHByb3RlY3RlZCBiYXNpcy4gQWxsIGxhd2Z1bCBzb3VyY2VzIG9mIGluY29tZSwgaW5jbHVkaW5nIGhvdXNpbmcgdm91Y2hlcnMsIGFyZSBhY2NlcHRlZC48L3A+CjxkaXYgY2xhc3M9ImpyLWxpbmtzIj4KPGEgaHJlZj0iaHR0cHM6Ly9vbmVyZWFsLmNvbS8iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj5SZWFsIEJyb2tlciBOWSBMTEM8L2E+CjxhIGhyZWY9Imh0dHBzOi8vYm9sdC1jdXN0b20tYXNzZXRzLnRoZXJlYWxicm9rZXJhZ2UuY29tL25ldy15b3JrLWNvbXBsaWFuY2Uvc3RhbmRhcmRpemVkLW9wZXJhdGluZy1wcm9jZWR1cmUtbm90YXJpemVkLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPk5ZIFN0YW5kYXJkIE9wZXJhdGluZyBQcm9jZWR1cmVzPC9hPgo8YSBocmVmPSJodHRwczovL2Rvcy5ueS5nb3Yvc3lzdGVtL2ZpbGVzL2RvY3VtZW50cy8yMDIxLzA4L2ZhaXJob3VzaW5nbm90aWNlLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPk5ZIEZhaXIgSG91c2luZyBOb3RpY2U8L2E+CjxhIGhyZWY9Imh0dHBzOi8vbnlzYXIuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIyLzA1L1JNQV9Vbmtub3duLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPlJlYXNvbmFibGUgQWNjb21tb2RhdGlvbnMgTm90aWNlPC9hPgo8YSBocmVmPSIjcHJpdmFjeXBvbGljeSI+UHJpdmFjeSBQb2xpY3k8L2E+CjxhIGhyZWY9IiN0ZXJtIj5UZXJtcyAmYW1wOyBDb25kaXRpb25zPC9hPgo8YSBocmVmPSIjdGVybSI+QWNjZXNzaWJpbGl0eTwvYT4KPGEgaHJlZj0iaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9qZXJyaW5yZWFsdHkiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj5JbnN0YWdyYW08L2E+CjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9zaGFyZS8xSmdTTlFTNE5KLyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPkZhY2Vib29rPC9hPgo8L2Rpdj4KPHA+TGlzdGluZyBpbmZvcm1hdGlvbiBpcyBkZWVtZWQgcmVsaWFibGUgYnV0IG5vdCBndWFyYW50ZWVkLiBSZXZpZXdzIGFyZSBmcm9tIEdvb2dsZSBhbmQgWmlsbG93OyBzb21lIGFyZSBzaG9ydGVuZWQuIFNhbGVzIGRhdGEgZnJvbSBIb21lcy5jb20uIE5vdGhpbmcgb24gdGhpcyBzaXRlIGlzIGxlZ2FsLCB0YXggb3IgZmluYW5jaWFsIGFkdmljZS4gJmNvcHk7IDIwMjYgSmVycmluIFJlYWx0eS48L3A+CjwvZm9vdGVyPgo=")));function f(){document.querySelectorAll("section[id$='-section']").forEach(function(s){if(s.querySelector(".jr-foot"))return;var d=document.createElement("div");d.innerHTML=H;s.appendChild(d);});}f();setTimeout(f,1200);})();

Terms & ConditionsEffective Date: 3/6/2026Welcome to Jerrin Realty. By accessing or using our website, services, or communication channels, you agree to comply with and be bound by the following Terms & Conditions.Use of WebsiteThe information provided on this website is for general informational purposes related to real estate services including buying, selling, and renting properties. While we strive to keep the information accurate and up to date, Jerrin Realty makes no guarantees regarding the completeness, accuracy, or reliability of any information on this website.Users agree to use this website only for lawful purposes and in a way that does not infringe upon the rights of others or restrict their use of the website.Real Estate ServicesJerrin Realty provides real estate brokerage and related services. Property listings, pricing, and availability are subject to change without notice. All real estate transactions are subject to applicable state laws and brokerage agreements.Intellectual PropertyAll content on this website including text, images, logos, and branding are the property of Jerrin Realty unless otherwise stated. Unauthorized use, reproduction, or distribution of any content without written permission is prohibited.SMS CommunicationBy providing your phone number through our website forms, advertising forms, or direct communication with Jerrin Realty, you consent to receive SMS messages related to your real estate inquiries.Types of MessagesMessages may include:* Property listing information
* Showing confirmations and appointment reminders
* Updates regarding buying or selling transactions
* Follow-ups regarding real estate inquiries
* Customer service communications
Message FrequencyMessage frequency may vary depending on your interaction with Jerrin Realty.Message & Data RatesStandard message and data rates may apply according to your mobile carrier plan.Opt-OutYou may opt out of SMS communications at any time by replying STOP to any message. After opting out, you will no longer receive SMS messages from us.HelpFor assistance, reply HELP to any SMS message or contact us at:Phone: 914-359-1415
Email: [email protected]
Carrier DisclaimerMobile carriers are not responsible for delayed or undelivered messages.PrivacyYour privacy is important to us. Please review our Privacy Policy to understand how we collect, use, and protect your information.Limitation of LiabilityJerrin Realty shall not be liable for any direct, indirect, incidental, or consequential damages arising from the use of this website or reliance on the information provided.Changes to TermsJerrin Realty reserves the right to update or modify these Terms & Conditions at any time without prior notice. Continued use of the website after changes constitutes acceptance of the updated terms.Contact InformationIf you have any questions regarding these Terms & Conditions, please contact:Jerrin John
Licensed Real Estate Salesperson in New York
License# 10401390413
Email: [email protected]
Phone: +1 (914) 359-1415
Broker Name: Real Broker NY LLC

(function(){var H=decodeURIComponent(escape(atob("PGZvb3RlciBjbGFzcz0ianItZm9vdCIgaWQ9ImpyLWZvb3QiPgo8c3R5bGU+CiN0ZXh0MzcsI2xpbmtzMDMsI2xpbmtzMDQsI3RleHQwMiwjbGlua3MwMiwjbGlua3MwMSwjaWNvbnMwMXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fQouanItZm9vdHtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwiU2Vnb2UgVUkiLFJvYm90byxJbnRlcixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjttYXgtd2lkdGg6NzIwcHg7bWFyZ2luOjMycHggYXV0byAwO3BhZGRpbmc6MjJweCAxNnB4IDI2cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2UzZTNlODt0ZXh0LWFsaWduOmxlZnQ7Y29sb3I6IzZlNmU3Mztmb250LXNpemU6MTIuNXB4O2xpbmUtaGVpZ2h0OjEuNn0KLmpyLWZvb3QgYntjb2xvcjojMWQxZDFmfQouanItZm9vdCBwe21hcmdpbjowIDAgMTBweH0KLmpyLWZvb3QgYXtjb2xvcjojNDg0ODRmO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9Ci5qci1mb290IC5qci1saW5rc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjZweCAxNHB4O21hcmdpbjowIDAgMTJweH0KLmpyLWZvb3QgLmpyLWVob3tkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMWQxZDFmfQo8L3N0eWxlPgo8cD48Yj5KZXJyaW4gSm9objwvYj4sIExpY2Vuc2VkIFJlYWwgRXN0YXRlIFNhbGVzcGVyc29uLCBOWSBMaWMuICMxMDQwMTM5MDQxMyAmbWlkZG90OyBKZXJyaW4gUmVhbHR5LCBhZmZpbGlhdGVkIHdpdGggPGI+UmVhbCBCcm9rZXIgTlkgTExDPC9iPiwgTGljZW5zZWQgUmVhbCBFc3RhdGUgQnJva2VyICZtaWRkb3Q7IDQ3NyBNYWRpc29uIEF2ZS4sIFN0ZS4gNjQ4LCBOZXcgWW9yaywgTlkgMTAwMjIgJm1pZGRvdDsgQnJva2VyIG9mZmljZSA8YSBocmVmPSJ0ZWw6KzE4NTU0NTAwNDQyIj4oODU1KSA0NTAtMDQ0MjwvYT4gJm1pZGRvdDsgQWdlbnQgPGEgaHJlZj0idGVsOisxOTE0MzU5MTQxNSI+KDkxNCkgMzU5LTE0MTU8L2E+ICZtaWRkb3Q7IDxhIGhyZWY9Im1haWx0bzpqb2huQGplcnJpbnJlYWx0eS5jb20iPmpvaG5AamVycmlucmVhbHR5LmNvbTwvYT48L3A+CjxwIGNsYXNzPSJqci1laG8iPiYjODk2MjsgRXF1YWwgSG91c2luZyBPcHBvcnR1bml0eTwvcD4KPHA+V2Ugc3VwcG9ydCB0aGUgRmFpciBIb3VzaW5nIEFjdCBhbmQgdGhlIE5ldyBZb3JrIFN0YXRlIEh1bWFuIFJpZ2h0cyBMYXcgYW5kIGRvIG5vdCBkaXNjcmltaW5hdGUgb24gYW55IHByb3RlY3RlZCBiYXNpcy4gQWxsIGxhd2Z1bCBzb3VyY2VzIG9mIGluY29tZSwgaW5jbHVkaW5nIGhvdXNpbmcgdm91Y2hlcnMsIGFyZSBhY2NlcHRlZC48L3A+CjxkaXYgY2xhc3M9ImpyLWxpbmtzIj4KPGEgaHJlZj0iaHR0cHM6Ly9vbmVyZWFsLmNvbS8iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj5SZWFsIEJyb2tlciBOWSBMTEM8L2E+CjxhIGhyZWY9Imh0dHBzOi8vYm9sdC1jdXN0b20tYXNzZXRzLnRoZXJlYWxicm9rZXJhZ2UuY29tL25ldy15b3JrLWNvbXBsaWFuY2Uvc3RhbmRhcmRpemVkLW9wZXJhdGluZy1wcm9jZWR1cmUtbm90YXJpemVkLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPk5ZIFN0YW5kYXJkIE9wZXJhdGluZyBQcm9jZWR1cmVzPC9hPgo8YSBocmVmPSJodHRwczovL2Rvcy5ueS5nb3Yvc3lzdGVtL2ZpbGVzL2RvY3VtZW50cy8yMDIxLzA4L2ZhaXJob3VzaW5nbm90aWNlLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPk5ZIEZhaXIgSG91c2luZyBOb3RpY2U8L2E+CjxhIGhyZWY9Imh0dHBzOi8vbnlzYXIuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIyLzA1L1JNQV9Vbmtub3duLnBkZiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPlJlYXNvbmFibGUgQWNjb21tb2RhdGlvbnMgTm90aWNlPC9hPgo8YSBocmVmPSIjcHJpdmFjeXBvbGljeSI+UHJpdmFjeSBQb2xpY3k8L2E+CjxhIGhyZWY9IiN0ZXJtIj5UZXJtcyAmYW1wOyBDb25kaXRpb25zPC9hPgo8YSBocmVmPSIjdGVybSI+QWNjZXNzaWJpbGl0eTwvYT4KPGEgaHJlZj0iaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9qZXJyaW5yZWFsdHkiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj5JbnN0YWdyYW08L2E+CjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9zaGFyZS8xSmdTTlFTNE5KLyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPkZhY2Vib29rPC9hPgo8L2Rpdj4KPHA+TGlzdGluZyBpbmZvcm1hdGlvbiBpcyBkZWVtZWQgcmVsaWFibGUgYnV0IG5vdCBndWFyYW50ZWVkLiBSZXZpZXdzIGFyZSBmcm9tIEdvb2dsZSBhbmQgWmlsbG93OyBzb21lIGFyZSBzaG9ydGVuZWQuIFNhbGVzIGRhdGEgZnJvbSBIb21lcy5jb20uIE5vdGhpbmcgb24gdGhpcyBzaXRlIGlzIGxlZ2FsLCB0YXggb3IgZmluYW5jaWFsIGFkdmljZS4gJmNvcHk7IDIwMjYgSmVycmluIFJlYWx0eS48L3A+CjwvZm9vdGVyPgo=")));function f(){document.querySelectorAll("section[id$='-section']").forEach(function(s){if(s.querySelector(".jr-foot"))return;var d=document.createElement("div");d.innerHTML=H;s.appendChild(d);});}f();setTimeout(f,1200);})();

Westchester County, NY

Yonkers, NY Real Estate: Homes for Sale & Local Guide

Yonkers is Westchester's largest city and often the best value this close to Manhattan. You'll find Hudson River views, quiet single-family blocks, condos by the waterfront, and a solid supply of two-family homes for buyers who want rental income.

Median sale price

$650K

Price per sq ft

$364

Market data: Redfin, 3 months ending Sep 2026.

Neighborhoods

  • CrestwoodTudors and colonials near the Crestwood Metro-North station.
  • Park HillHistoric homes on a hill above the Hudson.
  • Northwest YonkersLarger lots near Untermyer Park and Gardens.
  • Downtown & waterfrontNewer condos and rentals near Yonkers station.
  • Dunwoodie & Lincoln ParkSingle- and two-family homes with quick parkway access.

Living in Yonkers

Getting around
Metro-North Hudson Line (Ludlow, Yonkers, Glenwood, Greystone) and Harlem Line (Crestwood), roughly 25–40 minutes to Grand Central depending on the station. The Saw Mill, Sprain Brook, and Cross County Parkways and the Thruway all run through the city.
Schools
Yonkers Public Schools.
Outdoors
Tibbetts Brook Park, Untermyer Park and Gardens, Sprain Ridge Park, and the Hudson River esplanade.

Yonkers questions buyers ask

Is a two-family home a good fit in Yonkers?

Yonkers has a good supply of two-family homes, and rent from the second unit can help cover the mortgage. I'll run the rent, taxes, and financing on any property you like before you make an offer.

Which parts of Yonkers are closest to the train?

Crestwood is on the Harlem Line. Downtown, Ludlow, Glenwood, and Greystone sit along the Hudson Line.

How much do I need for a down payment?

Some loan programs allow as little as 3–5% down. Try the mortgage calculator, then I can connect you with a lender for a pre-approval.

Nearby towns

Westchester County, NY

White Plains, NY Real Estate: Homes for Sale & Local Guide

White Plains is the Westchester county seat and its busiest downtown, with shops, restaurants, and offices near an express train to Manhattan. Housing runs from downtown condos and co-ops to single-family homes on quiet side streets.

Median sale price

$750K

Price per sq ft

$419

Median days on market

24

Market data: Redfin, 3 months ending Aug 2026.

Neighborhoods

  • DowntownHigh-rise condos, co-ops, and rentals near the train station.
  • Gedney FarmsColonials and Tudors on winding, wooded streets.
  • HighlandsSingle-family homes a short drive from downtown.
  • Battle HillA mix of single- and multi-family homes.
  • North BroadwayOlder homes along a tree-lined stretch north of downtown.

Living in White Plains

Getting around
Metro-North Harlem Line from White Plains station, about 35–40 minutes to Grand Central on express trains. I-287, the Bronx River Parkway, and the Hutchinson River Parkway are close by, and Westchester County Airport is about 15 minutes away.
Schools
White Plains City School District.
Outdoors
Saxon Woods Park, the Bronx River Pathway, and Kensico Dam Plaza nearby.

White Plains questions buyers ask

Condo, co-op, or house in White Plains?

Condos and co-ops near downtown cost less up front and are close to the train. Co-ops have board approval and their own financing rules, so I'll walk you through what each building requires.

How long is the commute to Manhattan?

Express trains from White Plains reach Grand Central in about 35–40 minutes.

How fast do homes sell here?

The median home went under contract in about 24 days recently. Get pre-approved before you start touring so you can move quickly.

Nearby towns

Westchester County, NY

Scarsdale, NY Real Estate: Homes for Sale & Local Guide

Scarsdale is a village in central Westchester known for its walkable village center, mature trees, and Tudor and colonial homes. It is one of the county's higher-priced markets, so a strong pre-approval and a clear plan matter.

Median sale price

$3.02M

Price per sq ft

$798

Market data: Redfin, 3 months ending Aug 2026.

Neighborhoods

  • Village centerShops, cafés, and the train station within walking distance.
  • Fox MeadowClose to the village and the station.
  • GreenacresWalkable streets on the west side of the village.
  • Quaker RidgeLarger lots in the northeast part of town.
  • Heathcote & EdgewoodEstablished streets with a mix of home styles.

Living in Scarsdale

Getting around
Metro-North Harlem Line from Scarsdale station, roughly 30–40 minutes to Grand Central. The Bronx River and Hutchinson River Parkways and I-287 are nearby.
Schools
Scarsdale Union Free School District serves the village. Some homes with a Scarsdale mailing address are in other districts, such as Edgemont, so check each listing.
Outdoors
Weinberg Nature Center and Saxon Woods Park.

Scarsdale questions buyers ask

Does a Scarsdale address mean Scarsdale schools?

Not always. Parts of the Scarsdale mailing area are in other school districts. I'll confirm the district and tax bill for any home before you make an offer.

What do homes cost in Scarsdale?

The median sale price was about $3.02 million in the three months ending August 2026, though there is a range below and above that.

How long is the commute?

Trains from Scarsdale station reach Grand Central in roughly 30–40 minutes.

Nearby towns

Rockland County, NY

New City, NY Real Estate: Homes for Sale & Local Guide

New City is the Rockland county seat and the center of the Town of Clarkstown. Buyers often get more house and yard for the money than in much of Westchester, with colonials, split-levels, and ranches on wooded lots.

Median sale price

$690K

Price per sq ft

$361

Median days on market

26

Market data: Redfin, Feb 2025.

What's for sale

  • Colonials & split-levelsThe most common homes, often on wooded lots.
  • RanchesOne-level living for downsizers and anyone avoiding stairs.
  • Townhouses & condosLower maintenance, with HOA-managed grounds.
  • New constructionComes up occasionally; I watch builder inventory as well as the MLS.

Living in New City

Getting around
No Metro-North station in town. Commuters drive across the Mario M. Cuomo Bridge to Tarrytown station, take express buses to Manhattan, or ride NJ Transit's Pascack Valley Line from Nanuet. The Palisades Parkway and the Thruway are close.
Schools
Clarkstown Central School District.
Outdoors
High Tor State Park, the Dutch Garden downtown, and Rockland Lake State Park nearby.

I've helped buyers close on a home in New City. Read client reviews

New City questions buyers ask

How do people commute from New City to Manhattan?

Most drive to Tarrytown station over the Mario M. Cuomo Bridge, take an express bus, or use the Pascack Valley Line from Nanuet.

Are property taxes high in Rockland?

Taxes vary a lot by school district and assessment. I'll pull the actual tax bill for any home you're considering.

Can I buy new construction here?

It comes up. I recently helped a buyer land a brand-new 2025 build at asking price with 5% down.

Nearby towns

Rockland County, NY

Congers, NY Real Estate: Homes for Sale & Local Guide

Congers sits on the east side of Clarkstown between Rockland Lake and Congers Lake. It's a quieter hamlet with a short drive to the Thruway and the Mario M. Cuomo Bridge.

Median sale price

$708K

Price per sq ft

$389

Market data: Redfin, 3 months ending Jun 2026.

What's for sale

  • Colonials & split-levelsThe bulk of the market, many on generous lots.
  • Capes & ranchesSmaller homes that are often the entry point here.
  • Lake-area homesStreets near Congers Lake and Rockland Lake.
  • TownhousesA handful of HOA communities for lower maintenance.

Living in Congers

Getting around
Drive about 15–20 minutes to Tarrytown station on the Hudson Line, or take an express bus to Manhattan. Route 9W and Route 303 run through town.
Schools
Most of Congers is in the Clarkstown Central School District. Check each listing.
Outdoors
Rockland Lake State Park, Congers Lake Memorial Park, and Hook Mountain State Park.

I've helped buyers close on a home in Congers. Read client reviews

Congers questions buyers ask

What's the commute like from Congers?

Most commuters drive across the bridge to Tarrytown station. Express buses to Manhattan are another option.

How does Congers compare on price with Westchester?

The median sale price was about $708K in the three months ending June 2026, often less than comparable homes across the river.

Which school district is Congers in?

Most addresses are in Clarkstown. I'll confirm the district for any home you like.

Nearby towns

Rockland County, NY

Valley Cottage, NY Real Estate: Homes for Sale & Local Guide

Valley Cottage is a hamlet in Clarkstown just north of Nyack, close to the Thruway and the Mario M. Cuomo Bridge. Homes range from capes and ranches to newer colonials, many a few minutes from Rockland Lake State Park.

Median sale price

$666K

Price per sq ft

$382

Market data: Redfin, 3 months ending Jun 2026.

What's for sale

  • Capes & ranchesCommon starter homes with room to update.
  • ColonialsLarger family-size floor plans, some newer builds.
  • Townhouses & condosLower-maintenance options near Route 303 and 9W.
  • Near the parksStreets close to Rockland Lake and Hook Mountain.

Living in Valley Cottage

Getting around
About 10–15 minutes to the Mario M. Cuomo Bridge and Tarrytown station. Express buses run to Manhattan, and the Thruway is close.
Schools
Much of Valley Cottage is in the Nyack Union Free School District, with some addresses in Clarkstown. Check each listing.
Outdoors
Rockland Lake State Park, Hook Mountain State Park, and Nyack Beach State Park.

I've helped buyers close on two homes in Valley Cottage. Read client reviews

Valley Cottage questions buyers ask

Which school district is Valley Cottage in?

Many addresses are in Nyack; some are in Clarkstown. I'll confirm the district before you make an offer.

How close is Valley Cottage to Nyack?

Downtown Nyack is about a 10-minute drive.

What does a home cost here?

The median sale price was about $666K in the three months ending June 2026.

Nearby towns

Accessibility Statement

Last updated: October 22, 2026

Jerrin John, Licensed Real Estate Salesperson with Real Broker NY LLC, wants everyone to be able to use jerrinrealty.com, including people with disabilities. We are working to make this site meet the Web Content Accessibility Guidelines (WCAG) 2.1, Level AA.

What we do

  • Add text descriptions (alt text) to meaningful images.
  • Label form fields so screen readers announce them.
  • Build forms and buttons that work with a keyboard alone.
  • Use readable text sizes and strong color contrast.
  • Review the site when we add new pages, forms or tools.

Known limitations

Some parts of this site come from other companies, such as the home search powered by HeyLeo and the review pages on Google and Zillow. We don't control those sites, but we will tell their providers about any problem you report. The home value estimator and mortgage calculator give rough numbers only; we're glad to walk you through them by phone.

Need help or another format?

If something on this site is hard to use, or you'd like information in another format (large print, by phone, or by email), please contact us. We'll get back to you within 2 business days.

Phone or text: (914) 359-1415

Email: [email protected]

Please tell us the page and what you were trying to do.

Reasonable accommodations

If you have a disability and need an accommodation to buy, sell or rent a home with us, just ask. We support the Fair Housing Act and the New York State Human Rights Law.

(function(){ var ALT = { "image29.jpg": "Jerrin John, Licensed Real Estate Salesperson with Real Broker NY LLC", "image28.jpg": "Investment property in Westchester or Rockland County, New York" }; function fix(){ document.querySelectorAll("img").forEach(function(img){ var file = (img.getAttribute("src") || "").split("/").pop().split("?")[0]; if (ALT[file] && !(img.getAttribute("alt") || "").trim()) img.setAttribute("alt", ALT[file]); if (!img.hasAttribute("alt")) img.setAttribute("alt", ""); }); document.querySelectorAll(".jr-foot a").forEach(function(a){ if (a.textContent.trim() === "Accessibility") a.setAttribute("href", "#accessibility"); }); document.querySelectorAll(".jr-foot .jr-eho").forEach(function(p){ if (!p.querySelector("[aria-hidden]")) p.innerHTML = ' Equal Housing Opportunity'; }); document.querySelectorAll(".rlf-hp").forEach(function(d){ d.setAttribute("aria-hidden", "true"); }); document.querySelectorAll(".rlf-ico").forEach(function(s){ s.setAttribute("aria-hidden", "true"); }); } fix(); setTimeout(fix, 1500); new MutationObserver(function(){ fix(); }).observe(document.documentElement, {childList:true, subtree:true}); })();
Buyer Roadmap · New York

From first call to keys in hand.

12 steps, 4 phases. Tap a phase to see exactly what happens, what you'll need, and what I handle for you.

Get Ready Before you tour

1

Free Buyer Consultation

We map out your goals, budget, timeline and must-haves. I explain the NY agency disclosure and our written buyer agreement, required before we tour together.

You: share your wish listMe: build your plan~30 min
2

Get Pre-Approved

A pre-approval letter shows sellers you're serious and tells you exactly what you can afford. Ask about first-time buyer and down payment assistance programs.

You: send docs to lenderMe: connect you to trusted lenders
3

Plan Your Budget

Beyond the down payment, set aside money for closing costs, inspections, moving and a repair cushion. See the cost breakdown below.

Down payment+ 2–5% closing costs+ reserves

Find & Offer The fun part

4

Search & Tour Homes

Instant alerts on new and coming-soon listings so you see them first. We tour together and I point out pricing, condition, taxes and resale factors.

You: tour & shortlistMe: alerts, showings, insight
5

Make an Offer

I pull comparable sales and help you choose a strong price and terms, then send a professional offer sheet with your pre-approval. In NY, an accepted offer isn't binding until both sides sign the contract.

You: approve price & termsMe: comps, offer, negotiation
6

Home Inspection

A licensed inspector checks the home, plus termite, radon, septic, well or oil tank tests if needed. We use the results to negotiate repairs or credits.

Within 24–48 hrs of acceptanceMe: schedule & negotiate

Under Contract Paperwork & patience

7

Attorney Review & Contract

In New York, attorneys draft and review the contract of sale. When you sign, you pay the contract deposit (often 5–10% of the price), held in escrow.

You: sign & send depositYour attorney protects you
8

Mortgage Commitment

Your lender orders the appraisal and completes underwriting. Answer document requests fast.

No new credit, job changes or big purchases
9

Title, Insurance & Board

Your attorney orders the title search and title insurance. You set up homeowner's insurance. Buying a co-op? You'll also submit a board package and interview.

You: get insurance quoteCo-ops: board package

Close & Beyond Welcome home

10

Final Walk-Through

A day or two before closing, we confirm the home is in the agreed condition, repairs are done and everything included is still there.

We walk it together
11

Closing Day

Bring photo ID and the funds your attorney confirms. Sign the paperwork, and the keys are yours.

You: ID + certified fundsVerify wiring by phone
12

After Closing

Change the locks, transfer utilities and your address, register for the NYS STAR credit, keep your deed safe and review your tax assessment yearly. I'm here for contractor referrals and home value updates anytime.

Locks & detectorsUtilitiesSTAR creditTax assessment

Where your money goes

Slide to your price and pick a down payment. Buyer closing costs in New York often run about 2–5% of the price.

Purchase price$600,000
$200K$1M$2M
Down payment
Down
Mortgage
Down payment (20%)$120,000
+ Closing costs (2–5%)$12,000–$30,000
Cash you bring to close$132,000–$150,000
Loan amount: $480,000
Estimates for illustration only. Your lender's Loan Estimate gives your exact numbers.
  • Lender fees, appraisal & credit report
  • NY State & county mortgage recording tax
  • Title insurance & title search
  • Your attorney's fee
  • Prepaid taxes, insurance & escrow
  • Mansion tax: 1% if price is $1M+
  • Co-ops: board, move-in & lien search fees

Your document checklist

Tap each item as you gather it.

0 of 7 ready
Wire fraud warningAlways call your attorney at a known number to verify wiring instructions. I will never email you wiring instructions.

Ready to take Step 1?

Book a free, no-pressure buyer consultation. In 30 minutes you'll know your budget, your timeline and your next move.

Jerrin John, Licensed Real Estate Salesperson, Lic# 10401390413 · Real Broker NY LLC, 477 Madison Ave, Suite 638, New York, NY 10022 · Equal Housing Opportunity.
General information only, not legal, tax or financial advice. Consult your attorney, lender and tax professional.

(function(){ var r=document.getElementById('jjr-roadmap');if(!r)return; var pb=r.querySelectorAll('.jjr-pb'),ph=r.querySelectorAll('.jjr-phase'),bar=r.querySelector('.jjr-progress i'), back=r.querySelector('[data-nav="-1"]'),next=r.querySelector('[data-nav="1"]'),cur=0; function go(i,scroll){cur=Math.max(0,Math.min(3,i)); for(var k=0;k<4;k++){pb[k].classList.toggle('on',k===cur);ph[k].classList.toggle('on',k===cur);} bar.style.width=((cur+1)*25)+'%';back.disabled=cur===0; next.textContent=cur===3?'Book Step 1 →':'Next phase →'; if(scroll)ph[cur].scrollIntoView({behavior:'smooth',block:'start'});} for(var k=0;k<4;k++)(function(k){pb[k].addEventListener('click',function(){go(k,false)})})(k); back.addEventListener('click',function(){go(cur-1,true)}); next.addEventListener('click',function(){if(cur===3){location.href='tel:+19143591415';return;}go(cur+1,true)}); var cb=r.querySelectorAll('.jjr-check input'),cnt=r.querySelector('.jjr-count'); function upd(){var n=0;cb.forEach(function(c){if(c.checked)n++});cnt.textContent=n+' of '+cb.length+' ready'+(n===cb.length?' — you’re set!':'');} cb.forEach(function(c){c.addEventListener('change',upd)}); var rg=r.querySelector('.jjr-range'),dps=r.querySelectorAll('.jjr-dp button'),dp=20; function $(n){return '$'+Math.round(n).toLocaleString('en-US');} function calc(){var p=+rg.value,d=p*dp/100,l=p-d,mt=p>=1000000?p*0.01:0,c1=p*0.02+mt,c2=p*0.05+mt; r.querySelector('.jjr-pv').textContent=$(p); r.querySelector('.jjr-b1').style.flex=d;r.querySelector('.jjr-b2').style.flex=l; r.querySelector('.jjr-b1').textContent=dp>=10?'Down':''; r.querySelector('.jjr-dl').textContent='Down payment ('+dp+'%)'; r.querySelector('.jjr-dv').textContent=$(d); r.querySelector('.jjr-cv').textContent=$(c1)+'–'+$(c2); r.querySelector('.jjr-tv').textContent=$(d+c1)+'–'+$(d+c2); r.querySelector('.jjr-lv').textContent=$(l); r.querySelector('.jjr-mt').style.display=mt?'':'none';r.querySelector('.jjr-mv').textContent=$(mt);} rg.addEventListener('input',calc); dps.forEach(function(b){b.addEventListener('click',function(){dps.forEach(function(x){x.classList.remove('on')});b.classList.add('on');dp=+b.getAttribute('data-d');calc();})}); calc(); })();