Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥喜欢听音乐的梦@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImdtdE1vZGlmaWVkXCI6MCxcImlkXCI6MCxcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbXSxcInBhcmFtc1wiOlwie1xcXCJjbHNcXFwiOlxcXCJlbGVsaXN0IOaXpeW4uOS5puetvue7hCDlvIDlhbNcXFwiLFxcXCJpZFxcXCI6XFxcIuaIkeeahOS4u+mhtSPpn7PkuZDmrYzljZVcXFwiLFxcXCJsb25nQ2xpY2tcXFwiOlt7XFxcImpzXFxcIjpcXFwiKFxcXFxuKGtleSwgalVybCwgaW5kZXgsIGlzR3JvdXApID0+IHtcXFxcbiAgICBldmFsKGZldGNoKGpVcmwpKTtcXFxcbiAgICBjb25zdCBMb2NhbGZpbGUgPSBIaWtlckhvbWUuZ2V0TG9jYWxmaWxlKCk7XFxcXG4gICAgY29uc3QgYm9va01hcmsgPSBIaWtlckhvbWUuZ2V0Qm9va21hcmtzTGlzdChMb2NhbGZpbGUuZ2V0SXRlbShcXFxcXFxcIkJvb2ttYXJrc0xpc3RcXFxcXFxcIikpO1xcXFxuICAgIGlmIChpc0dyb3VwKSB7XFxcXG4gICAgICAgIHZhciB0ZW0gPSBib29rTWFyay5nZXRfZ3JvdXAoa2V5LCBpbmRleCk7XFxcXG4gICAgICAgIHRlbS5zdGF0dXMgPSAhdGVtLnN0YXR1cztcXFxcbiAgICAgICAgYm9va01hcmsubW9kaWZ5X2dyb3VwKGtleSwgdGVtLCBpbmRleCk7XFxcXG4gICAgfSBlbHNlIHtcXFxcbiAgICAgICAgdmFyIHRlbSA9IGJvb2tNYXJrLmdldChrZXkpO1xcXFxuICAgICAgICB0ZW0uc3RhdHVzID0gIXRlbS5zdGF0dXM7XFxcXG4gICAgICAgIGJvb2tNYXJrLm1vZGlmeShrZXksIHRlbSk7XFxcXG4gICAgfVxcXFxuICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcbiAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCI7XFxcXG59XFxcXG4pKDIsXFxcXFxcXCJoaWtlcjovL2Fzc2V0cy9ob21lLmpzXFxcXFxcXCIsMTEsdHJ1ZSlcXFwiLFxcXCJ0aXRsZVxcXCI6XFxcIuWFsyDpl61cXFwifSx7XFxcImpzXFxcIjpcXFwiKFxcXFxuKGtleSwgalVybCwgZ3JvdXBOYW1lKSA9PiB7XFxcXG4gICAgZXZhbChmZXRjaChqVXJsKSk7XFxcXG4gICAgcmV0dXJuICQoKS54NWNLZXkoXFxcXFxcXCJtb2RpZnlAXFxcXFxcXCIgKyBrZXkgKyBcXFxcXFxcIkBcXFxcXFxcIiArIChncm91cE5hbWUgfHwgXFxcXFxcXCIjXFxcXFxcXFx1N2E3YVxcXFxcXFxcdTc2N2RcXFxcXFxcXHU3ZWM0I1xcXFxcXFwiKSk7XFxcXG59XFxcXG4pKDIsXFxcXFxcXCJoaWtlcjovL2Fzc2V0cy9ob21lLmpzXFxcXFxcXCIsXFxcXFxcXCLml6XluLjkuabnrb7nu4RcXFxcXFxcIilcXFwiLFxcXCJ0aXRsZVxcXCI6XFxcIuS/riDmlLlcXFwifSx7XFxcImpzXFxcIjpcXFwiKFxcXFxuKGtleSwgalVybCwgbiwgaW5kZXgsIGlzR3JvdXApID0+IHtcXFxcbiAgICBldmFsKGZldGNoKGpVcmwpKTtcXFxcbiAgICBjb25maXJtKHt0aXRsZTogXFxcXFxcXCJcXFxcXFxcXHU2ZTI5XFxcXFxcXFx1OTlhOFxcXFxcXFxcdTYzZDBcXFxcXFxcXHU3OTNhXFxcXFxcXCIsIGNvbnRlbnQ6IFxcXFxcXFwiXFxcXFxcXFx1Nzg2ZVxcXFxcXFxcdThiYTRcXFxcXFxcXHU1MjIwXFxcXFxcXFx1OTY2NFxcXFxcXFxcdTMwMGNcXFxcXFxcIiArIG4gKyBcXFxcXFxcIlxcXFxcXFxcdTMwMGQ/XFxcXFxcXCIsIGNvbmZpcm06ICQudG9TdHJpbmcoKGtleSwgalVybCwgaW5kZXgsIGlzR3JvdXApID0+IHtcXFxcbiAgICAgICAgZXZhbChmZXRjaChqVXJsKSk7XFxcXG4gICAgICAgIGNvbnN0IExvY2FsZmlsZSA9IEhpa2VySG9tZS5nZXRMb2NhbGZpbGUoKTtcXFxcbiAgICAgICAgY29uc3QgYm9va01hcmsgPSBIaWtlckhvbWUuZ2V0Qm9va21hcmtzTGlzdChMb2NhbGZpbGUuZ2V0SXRlbShcXFxcXFxcIkJvb2ttYXJrc0xpc3RcXFxcXFxcIikpO1xcXFxuICAgICAgICBpZiAoaXNHcm91cCkge1xcXFxuICAgICAgICAgICAgYm9va01hcmsuZGVsX2dyb3VwKGtleSwgaW5kZXgpO1xcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgYm9va01hcmsuZGVsKGtleSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxuICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL1xcXFxcXFxcdTVkZjJcXFxcXFxcXHU1MjIwXFxcXFxcXFx1OTY2NFxcXFxcXFwiO1xcXFxuICAgIH1cXFxcbiAgICAsIGtleSwgalVybCwgaW5kZXgsIGlzR3JvdXApfSk7XFxcXG4gICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiO1xcXFxufVxcXFxuKSgyLFxcXFxcXFwiaGlrZXI6Ly9hc3NldHMvaG9tZS5qc1xcXFxcXFwiLFxcXFxcXFwi6Z+z5LmQ5q2M5Y2VXFxcXFxcXCIsMTEsdHJ1ZSlcXFwiLFxcXCJ0aXRsZVxcXCI6XFxcIuWIoCDpmaRcXFwifV19XCIsXCJzYXZlZFwiOmZhbHNlLFwidGl0bGVcIjpcIuaIkeeahOS4u+mhtVwiLFwidmVyc2lvblwiOjAsXCJ1cmxcIjpcImhpa2VyOi8vZW1wdHkjZnlwYWdlI2ltbWVyc2l2ZVRoZW1lIyNub1JlY29yZEhpc3RvcnkjO2dldDtVVEYtODt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoTGludXjvvJvvvJsgQW5kcm9pZCAxNO+8m++8myAyMzAxM1JLNzVDIEJ1aWxkL1VLUTEuMjMwODA0LjAwMe+8m++8myB3dikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzExOC4wLjAuMCBNb2JpbGUgU2FmYXJpLzUzNy4zNn1cIixcImNvbF90eXBlXCI6XCJpY29uX3NtYWxsXzRcIixcImZpbmRfcnVsZVwiOlwianM6KFxcbigpID0+IHtcXG4gICAgc2V0UGFnZVRpdGxlKFxcXCJcXFxcdTU1OWNcXFxcdTZiMjJcXFxcdTU0MmNcXFxcdTk3ZjNcXFxcdTRlNTBcXFxcdTc2ODRcXFxcdTY4YTZcXFwiKTtcXG4gICAgbGV0IGQgPSBbXTtcXG4gICAgdHJ5IHtcXG4gICAgICAgIGxldCBpZCA9IGdldEl0ZW0oXFxcIm11c2ljX2ltZ1xcXCIsIFxcXCJkb25nbWFuXFxcIik7XFxuICAgICAgICB2YXIgZmlsZSA9IFxcXCJoaWtlcjovL2ZpbGVzL0ptL3BuZy9cXFwiICsgaWQgKyBcXFwiLmpzb25cXFwiO1xcbiAgICAgICAgdmFyIGltZ2xpc3QgPSBKU09OLnBhcnNlKGZldGNoKGZpbGUpKTtcXG4gICAgICAgIGxldCBtYXggPSBpbWdsaXN0Lmxlbmd0aCAtIDE7XFxuICAgICAgICBsZXQgbWluID0gMDtcXG4gICAgICAgIGxldCBudW0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkpICsgbWluO1xcbiAgICAgICAgdmFyIHNob3dJbWcgPSBpbWdsaXN0W251bV07XFxuICAgIH1cXG4gICAgY2F0Y2gge1xcbiAgICB9XFxuICAgIGlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgICAgIGQucHVzaCh7dGl0bGU6IFxcXCJcXFxcdTZjMzhcXFxcdThmZGNcXFxcdTc2ZjhcXFxcdTRmZTFcXFxcdTdmOGVcXFxcdTU5N2RcXFxcdTc2ODRcXFxcdTRlOGJcXFxcdTYwYzVcXFxcdTUzNzNcXFxcdTVjMDZcXFxcdTUzZDFcXFxcdTc1MWZcXFxcdWZmMDFcXFwiLCBjb2xfdHlwZTogXFxcIm1vdmllXzFfdmVydGljYWxfcGljX2JsdXJcXFwiLCBkZXNjOiBcXFwiXFxcXHVkODNlXFxcXHVkZGY4IFxcXFx1NGVhY1xcXFx1NjhhNlxcXFxuXFxcXG5cXFxcdWQ4M2RcXFxcdWRjNDlcXFxcdWQ4M2NcXFxcdWRmZmIgXFxcXHU2NzJjXFxcXHU1NzMwXFxcXHU5N2YzXFxcXHU0ZTUwXFxcIiwgcGljOiBzaG93SW1nIHx8IFxcXCJcXFwiLCB1cmw6IFxcXCJzZWxlY3Q6Ly9cXFwiICsgSlNPTi5zdHJpbmdpZnkoe29wdGlvbnM6IFtcXFwiXFxcXHU2NzJjXFxcXHU1NzMwXFxcXHU5N2YzXFxcXHU0ZTUwXFxcIiwgXFxcIlxcXFx1NjZmNFxcXFx1NjM2MlxcXFx1NTZmZVxcXFx1NzI0N1xcXCJdLCBhdHRhY2hWaWV3OiB0cnVlLCBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXCJcXFxcdTY3MmNcXFxcdTU3MzBcXFxcdTk3ZjNcXFxcdTRlNTBcXFwiKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9sb2NhbE1lZGlhXFxcIjtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBbXFxcIlxcXFx1NTJhOFxcXFx1NmYyYlxcXCIsIFxcXCJcXFxcdTdmOGVcXFxcdTU5NzNcXFwiLCBcXFwiXFxcXHU5OGNlXFxcXHU2NjZmXFxcIiwgXFxcIlxcXFx1NmM3ZFxcXFx1OGY2NlxcXCIsIFxcXCJcXFxcdTUyYThcXFxcdTU2ZmVcXFwiXTtcXG4gICAgICAgICAgICAgICAgbGV0IGlkID0gW1xcXCJkb25nbWFuXFxcIiwgXFxcIm1laW52XFxcIiwgXFxcImZlbmdqaW5nXFxcIiwgXFxcInFpY2hlXFxcIiwgXFxcImdpZlxcXCJdO1xcbiAgICAgICAgICAgICAgICB2YXIgbGlzdCA9IHRpdGxlLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7bmFtZTogaXRlbSwgaWQ6IGlkW2luZGV4XX07XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgKTtcXG4gICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBsaXN0Lm1hcChqID0+IGoubmFtZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAkKG5hbWUsIDIsIFxcXCJcXFxcdTI3NTdcXFxcdWZlMGZcXFxcdTU2ZmVcXFxcdTcyNDdcXFxcdTVmMTVcXFxcdTc1MjhcXFxcdTc2ODRcXFxcdTU5MjlcXFxcdTZjMTRcXFwiKS5zZWxlY3QoKGxpc3QpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBhID0gbGlzdC5maW5kSW5kZXgoaiA9PiBqLm5hbWUgPT0gaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IGxpc3RbYV0uaWQ7XFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCJtdXNpY19pbWdcXFwiLCB1cmwpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAsIGxpc3QpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgICl9KX0sIHtjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJ9LCB7Y29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwifSwge3RpdGxlOiBcXFwiXFxcXHU1YzBmXFxcXHU0ZTAzXFxcXHU2YjRjXFxcXHU1MzU1XFxcIiwgY29sX3R5cGU6IFxcXCJpY29uXzNfcm91bmRfZmlsbFxcXCIsIHBpYzogXFxcImhpa2VyOi8vZmlsZXMvSm0vbG0vbXVzaWMvODUuc3ZnXFxcIiwgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICBpZiAoIWZpbGVFeGlzdChcXFwiaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvblxcXCIsIFxcXCJbe1xcXFxcXFwidGl0bGVcXFxcXFxcIjpcXFxcXFxcIlxcXFx1NzBlZFxcXFx1NjQxY1xcXFx1NmI0Y1xcXFx1NjZmMlxcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiaHR0cDovL3FwaWMueS5xcS5jb20vbXVzaWNfY292ZXIvaEtGcmliTWh3SDRDbHdOV0p4aWN1Q3hqdXdJa2JaUHE0SFZUMFFneHNkYjhKV1FYWEMyVEZzdVEvNjAwP249MVxcXFxcXFwiLFxcXFxcXFwiaWRcXFxcXFxcIjo3NTMyNjcwNTM4fSx7XFxcXFxcXCJ0aXRsZVxcXFxcXFwiOlxcXFxcXFwiXFxcXHU2Mjk2XFxcXHU5N2YzXFxcXHU3MGVkXFxcXHU5NWU4XFxcXFxcXCIsXFxcXFxcXCJpY29uXFxcXFxcXCI6XFxcXFxcXCJodHRwOi8vcXBpYy55LnFxLmNvbS9tdXNpY19jb3Zlci9XcHZkSlhmbjc5OGliRDRnY2ZqdzBOU3VCa0ZUSllwWTVRT2V2M0V4Y0JRaWFtUmNvYmtwTjc3Zy82MDA/bj0xXFxcXFxcXCIsXFxcXFxcXCJpZFxcXFxcXFwiOjc2MzAzMDM0NzR9XVxcXCIpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB2YXIgZ2VkYW4gPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvblxcXCIpKTtcXG4gICAgICAgICAgICByZXR1cm4gJChnZWRhbiwgMiwgXFxcIlxcXFx1NWMwZlxcXFx1NGUwM1xcXFx1NmI0Y1xcXFx1NTM1NVxcXCIpLnNlbGVjdCgoZ2VkYW4pID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IGEgPSBnZWRhbi5maW5kSW5kZXgodCA9PiB0LnRpdGxlID09IGlucHV0KTtcXG4gICAgICAgICAgICAgICAgdmFyIGlkID0gZ2VkYW5bYV0uaWQ7XFxuICAgICAgICAgICAgICAgIHJldHVybiAkKFxcXCJoaWtlcjovL2VtcHR5I2ltbWVyc2l2ZVRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNcXFwiKS5ydWxlKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKFxcXCJcXFxcdTVjMGZcXFxcdTRlMDNcXFxcdTZiNGNcXFxcdTUzNTVcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBkID0gW107XFxuICAgICAgICAgICAgICAgICAgICBsZXQgaHRtbCA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnlhb2h1ZC5jbi9hcGkvcXFtdXNpYy92Mj9rZXk9YVVseWtBMzVLZ213UFVwZWhKS05iRmpvNnYmdHlwZT1zb25nbGlzdCZpZD1cXFwiICsgaWQpKS5kYXRhO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBodG1sLmxpc3QubWFwKGogPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7dGl0bGU6IGoudGl0bGUsIHNpbmdlcjogai5hdXRob3IsIGFsYnVtOiBqLmFsYnVtLm5hbWUsIHBpYzogai5waWMsIGlkOiBqLm1pZH07XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICApO1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHt0aXRsZTogaHRtbC5pbmZvLnRpdGxlLCBjb2xfdHlwZTogXFxcIm1vdmllXzFfdmVydGljYWxfcGljX2JsdXJcXFwiLCBkZXNjOiBcXFwiXFxcXHVkODNlXFxcXHVkZGY4XFxcXHRcXFwiICsgaHRtbC5pbmZvLmNyZWF0b3IubmljayArIFxcXCJcXFxcblxcXFxuXFxcXHVkODNjXFxcXHVkZmJjXFxcXHRcXFwiICsgaHRtbC5pbmZvLnNvbmdudW0gKyBcXFwiXFxcXHU5OTk2XFxcIiwgcGljOiBodG1sLmluZm8ucGljdXJsLCB1cmw6ICQoXFxcIlxcXCIsIFxcXCJcXFxcdTY2ZjJcXFxcdTU0MGRcXFxcdTYyMTZcXFxcdTZiNGNcXFxcdTYyNGJcXFwiKS5pbnB1dCgoanNvbikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHNlYXJjaChhcnJheSwgbmFtZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXkuZmlsdGVyKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0udGl0bGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhuYW1lLnRvTG93ZXJDYXNlKCkpIHx8IGl0ZW0uc2luZ2VyLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobmFtZS50b0xvd2VyQ2FzZSgpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0cyA9IHNlYXJjaChqc29uLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChcXFwiaGlrZXI6Ly9lbXB0eVxcXCIpLnJ1bGUoKHJlc3VsdHMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZShcXFwiXFxcXHU2NDFjXFxcXHU3ZDIyXFxcXHU3ZWQzXFxcXHU2NzljXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5mb3JFYWNoKGogPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7dGl0bGU6IGoudGl0bGUsIGNvbF90eXBlOiBcXFwidGV4dF8xXFxcIiwgZGVzYzogai5hbGJ1bSA/IGouc2luZ2VyICsgXFxcIiAtLSBcXFwiICsgai5hbGJ1bSA6IGouc2luZ2VyICsgXFxcIiAtLSBcXFwiICsgai50aXRsZSwgcGljOiBqLnBpYywgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganMgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS54aW5nemhpZ2UuY29tL0FQSS9RUW11c2ljVklQLz9icj0xMSZtaWQ9XFxcIiArIGouaWQpKS5kYXRhLnNyYztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbanMgKyBcXFwiI2lzTXVzaWM9dHJ1ZSNcXFwiXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL3hpYW9hcGkuY24vQVBJL212X3NxLnBocD9uPTEmbXNnPVxcXCIgKyBqLnRpdGxlLCB7dGltZW91dDogMjAwMH0pKS51cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gW2pzb25bM10gfHwganNvblsyXSB8fCBqc29uWzFdIHx8IGpzb25bMF1dO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbHJjID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkueWFvaHVkLmNuL2FwaS9tdXNpYy9scmM/a2V5PWFVbHlrQTM1S2dtd1BVcGVoSktOYkZqbzZ2JnR5cGU9cXEmbWlkPVxcXCIgKyBqLmlkKSkuZGF0YTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHt1cmxzOiB1cmwsIGx5cmljOiBscmN9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBqKSwgZXh0cmE6IHtpbmhlcml0VGl0bGU6IGZhbHNlfX0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHJlc3VsdHMpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly9cXFxcdTZjYTFcXFxcdTY3MDlcXFxcdTYyN2VcXFxcdTUyMzBcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICwganNvbiksIGV4dHJhOiB7bG9uZ0NsaWNrOiBbe3RpdGxlOiBcXFwiXFxcXHVkODNkXFxcXHVkY2UwXFxcXHU1OTBkXFxcXHU1MjM2XFxcXHU1NmZlXFxcXHU3MjQ3XFxcXHU5NGZlXFxcXHU2M2E1XFxcIiwganM6ICQudG9TdHJpbmcoKGh0bWwpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImNvcHk6Ly9cXFwiICsgaHRtbC5pbmZvLnBpY3VybDtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICwgaHRtbCl9XX19KTtcXG4gICAgICAgICAgICAgICAgICAgIGpzb24ubWFwKGogPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7dGl0bGU6IGoudGl0bGUsIGNvbF90eXBlOiBcXFwidGV4dF8xXFxcIiwgZGVzYzogai5hbGJ1bSA/IGouc2luZ2VyICsgXFxcIiAtLSBcXFwiICsgai5hbGJ1bSA6IGouc2luZ2VyICsgXFxcIiAtLSBcXFwiICsgai50aXRsZSwgcGljX3VybDogai5waWMgKyBcXFwiQFJlZmVyZXI9XFxcIiwgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNcXFwiKS5sYXp5UnVsZSgoaikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkueGluZ3poaWdlLmNvbS9BUEkvUVFtdXNpY1ZJUC8/YnI9MTEmbWlkPVxcXCIgKyBqLmlkKSkuZGF0YS5zcmM7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gW2pzICsgXFxcIiNpc011c2ljPXRydWUjXFxcIl07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly94aWFvYXBpLmNuL0FQSS9tdl9zcS5waHA/bj0xJm1zZz1cXFwiICsgai50aXRsZSwge3RpbWVvdXQ6IDIwMDB9KSkudXJsO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFtqc29uWzNdIHx8IGpzb25bMl0gfHwganNvblsxXSB8fCBqc29uWzBdXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnlhb2h1ZC5jbi9hcGkvbXVzaWMvbHJjP2tleT1hVWx5a0EzNUtnbXdQVXBlaEpLTmJGam82diZ0eXBlPXFxJm1pZD1cXFwiICsgai5pZCkpLmRhdGE7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2gge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7dXJsczogdXJsLCBseXJpYzogbHJjfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICwgaiksIGV4dHJhOiB7aW5oZXJpdFRpdGxlOiBmYWxzZSwgbG9uZ0NsaWNrOiBbe3RpdGxlOiBcXFwiXFxcXHU0ZTBiXFxcXHU4ZjdkXFxcXHU2YjRjXFxcXHU2NmYyXFxcIiwganM6ICQudG9TdHJpbmcoKGopID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS54aW5nemhpZ2UuY29tL0FQSS9RUW11c2ljVklQLz9icj0xMSZtaWQ9XFxcIiArIGouaWQpKS5kYXRhLnNyYztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJkb3dubG9hZDovL1xcXCIgKyBqc29uO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAsIGopfSwge3RpdGxlOiBcXFwiXFxcXHU4OWMyXFxcXHU3NzBiTVZcXFwiLCBqczogJC50b1N0cmluZygoaikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL3hpYW9hcGkuY24vQVBJL212X3NxLnBocD9uPTEmbXNnPVxcXCIgKyBqLnRpdGxlLCB7dGltZW91dDogMjAwMH0pKS51cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gW2pzb25bM10gfHwganNvblsyXSB8fCBqc29uWzFdIHx8IGpzb25bMF1dO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gW0pTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLmNlbmd1aWd1aS5jbi9hcGkvanVoZS9hcGkucGhwP3R5cGU9a2dtdiZuPTEmbXNnPVxcXCIgKyBqLnRpdGxlLCB7dGltZW91dDogMjAwMH0pKS5kYXRhLnVybF07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHt1cmxzOiB1cmx9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgLCBqKX1dfX0pO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgKTtcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAsIGlkKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgLCBnZWRhbik7XFxuICAgICAgICB9XFxuICAgICAgICApLCBleHRyYToge2xvbmdDbGljazogW3t0aXRsZTogXFxcIlxcXFx1ZDgzZFxcXFx1ZGM5ZSBcXFxcdTgzYjdcXFxcdTUzZDZcXFxcdTZiNGNcXFxcdTUzNTVcXFwiLCBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgcmV0dXJuICQoXFxcIlxcXCIsIFxcXCJcXFxcdTI3NTdcXFxcdWZlMGZcXFxcdTZiNGNcXFxcdTUzNTVcXFxcdTU5ODJcXFxcdTY3OWNcXFxcdTY3MDlcXFxcdTY1YjBcXFxcdTU4OWVcXFxcdWZmMGNcXFxcdTUyMTlcXFxcdTk3MDBcXFxcdTg5ODFcXFxcdTkxY2RcXFxcdTY1YjBcXFxcdTgzYjdcXFxcdTUzZDZcXFxcblxcXFxuUVFcXFxcdThkMjZcXFxcdTUzZjdcXFxcdTgzYjdcXFxcdTUzZDZcXFxcdTZiNGNcXFxcdTUzNTVcXFwiKS5pbnB1dCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCBqc29uID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkuY2VuZ3VpZ3VpLmNuL2FwaS9tdXNpYy9xcS91c2VyX2xpc3QucGhwP3FxPVxcXCIgKyBpbnB1dCkpLm15cGxheWxpc3QubWFwKGogPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHt0aXRsZTogai5uYW1lLCBpY29uOiBqLnBpYywgaWQ6IGouaWR9O1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICk7XFxuICAgICAgICAgICAgICAgIGdlZGFuID0gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL0ptL2dlZGFuLmpzb25cXFwiKSk7XFxuICAgICAgICAgICAgICAgIGdlZGFuID0gZ2VkYW4uY29uY2F0KGpzb24pO1xcbiAgICAgICAgICAgICAgICBzYXZlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uXFxcIiwgSlNPTi5zdHJpbmdpZnkoZ2VkYW4pKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vXFxcXHU1ZGYyXFxcXHU2ZGZiXFxcXHU1MmEwXFxcIjtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgKTtcXG4gICAgICAgIH1cXG4gICAgICAgICl9LCB7dGl0bGU6IFxcXCJcXFxcdWQ4M2RcXFxcdWRkMzAgXFxcXHU2YjRjXFxcXHU1MzU1XFxcXHU3YmExXFxcXHU3NDA2XFxcIiwganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIHJldHVybiAkKFxcXCJoaWtlcjovL2VtcHR5I25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5I1xcXCIpLnJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoXFxcIlxcXFx1NmI0Y1xcXFx1NTM1NVxcXFx1N2JhMVxcXFx1NzQwNlxcXCIpO1xcbiAgICAgICAgICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe3RpdGxlOiBcXFwiXFxcXHU2M2QwXFxcXHU1M2Q2aWRcXFwiLCBjb2xfdHlwZTogXFxcImlucHV0XFxcIiwgZGVzYzogXFxcIlxcXFx1OGJmN1xcXFx1OGY5M1xcXFx1NTE2NVxcXFx1NTIwNlxcXFx1NGVhYlxcXFx1NTQwZVxcXFx1NTkwZFxcXFx1NTIzNlxcXFx1NzY4NFxcXFx1OTRmZVxcXFx1NjNhNVxcXCIsIHVybDogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlucHV0KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL1xcXFx1NGUwZFxcXFx1ODBmZFxcXFx1NGUzYVxcXFx1N2E3YVxcXCI7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBsZXQgdHh0ID0gaW5wdXQ7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgdTEgPSB0eHQuc3BsaXQoXFxcIiZcXFwiKVs0XTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBpZCA9IHUxLnNwbGl0KFxcXCI9XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICBjb3B5KGlkWzFdKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly9cXFxcdTVkZjJcXFxcdTU5MGRcXFxcdTUyMzZcXFwiICsgaWRbMV07XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgKX0pO1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe3RpdGxlOiBcXFwiXFxcXHU2ZGZiXFxcXHU1MmEwXFxcIiwgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsIGRlc2M6IFxcXCJcXFxcdTY2M2VcXFxcdTc5M2FcXFxcdTU0MGRcXFxcdTc5ZjBAXFxcXHU1NmZlXFxcXHU3MjQ3XFxcXHU5NGZlXFxcXHU2M2E1QFFRXFxcXHU5N2YzXFxcXHU0ZTUwaWRcXFwiLCB1cmw6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnB1dCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly9cXFxcdThiZjdcXFxcdTY4MzlcXFxcdTYzNmVcXFxcdTYzZDBcXFxcdTc5M2FcXFxcdThmOTNcXFxcdTUxNjVcXFxcdTUxODVcXFxcdTViYjlcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgbGV0IGdlZGFuID0gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL0ptL2dlZGFuLmpzb25cXFwiKSk7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgbiA9IGlucHV0LnNwbGl0KFxcXCJAXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBkYXRhID0ge3RpdGxlOiBuWzBdLCBpY29uOiBuWzFdLCBpZDogblsyXX07XFxuICAgICAgICAgICAgICAgICAgICBnZWRhbiA9IGdlZGFuLmNvbmNhdChkYXRhKTtcXG4gICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL0ptL2dlZGFuLmpzb25cXFwiLCBKU09OLnN0cmluZ2lmeShnZWRhbikpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL1xcXFx1NWRmMlxcXFx1NmRmYlxcXFx1NTJhMFxcXCI7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgKSwgZXh0cmE6IHt0eXBlOiBcXFwidGV4dGFyZWFcXFwiLCBoZWlnaHQ6IDJ9fSk7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7dGl0bGU6IFxcXCJcXFxcdTZiNGNcXFxcdTUzNTVcXFxcdTU2ZmVcXFxcdTcyNDdcXFxcdTk0ZmVcXFxcdTYzYTVcXFxcdTUzZWZcXFxcdTRlZTVcXFxcdTU3MjhcXFxcdTZiNGNcXFxcdTUzNTVcXFxcdTRlOGNcXFxcdTdlYTdcXFxcdTZkNzdcXFxcdTYyYTVcXFxcdTk1N2ZcXFxcdTYzMDlcXFxcdTU5MGRcXFxcdTUyMzZcXFxcdWZmMGNcXFxcdTYyNDBcXFxcdTRlZTVcXFxcdTUzZWZcXFxcdTRlZTVcXFxcdTUxNDhcXFxcdTZkZmJcXFxcdTUyYTBcXFxcdTZiNGNcXFxcdTUzNTVcXFxcdTUxOGRcXFxcdTdmMTZcXFxcdThmOTFcXFxcdTZkZmJcXFxcdTUyYTBcXFxcdTZiNGNcXFxcdTUzNTVcXFxcdTU2ZmVcXFxcdTcyNDdcXFxcdWZmMGNcXFxcdTYyMTZcXFxcdTgwMDVcXFxcdTgxZWFcXFxcdTVkZjFcXFxcdTkwMDlcXFxcdTRlMDBcXFxcdTVmMjBcXFxcdTU2ZmVcXFxcdTRmNWNcXFxcdTRlM2FcXFxcdTVjMDFcXFxcdTk3NjJcXFxcdTMwMDJcXFwiLCBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiLCB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIn0pO1xcbiAgICAgICAgICAgICAgICBsZXQgZ2VkYW4gPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvblxcXCIpKTtcXG4gICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gMDtcXG4gICAgICAgICAgICAgICAgZ2VkYW4ubWFwKGogPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBqLnRpdGxlICsgXFxcIkBcXFwiICsgai5pY29uICsgXFxcIkBcXFwiICsgai5pZDtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7dGl0bGU6IGluZGV4ICsgXFxcIi5cXFwiICsgai50aXRsZSwgY29sX3R5cGU6IFxcXCJjYXJkX3BpY18zXFxcIiwgcGljOiBqLmljb24sIHVybDogJChbXFxcIlxcXFx1N2YxNlxcXFx1OGY5MVxcXCIsIFxcXCJcXFxcdTc5ZmJcXFxcdTRmNGRcXFwiLCBcXFwiXFxcXHU1MjIwXFxcXHU5NjY0XFxcIl0sIDMsIFxcXCJcXFxcdThiZjdcXFxcdTkwMDlcXFxcdTYyZTlcXFwiKS5zZWxlY3QoKGluZGV4LCBpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXCJcXFxcdTdmMTZcXFxcdThmOTFcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKGl0ZW0sIFxcXCJcXFxcdTYwZjNcXFxcdTg5ODFcXFxcdTY2ZjRcXFxcdTYzNjJcXFxcdTc2ODRcXFxcdTZiNGNcXFxcdTUzNTVcXFxcdTU0MGQsXFxcXHU2YjRjXFxcXHU1MzU1aWQsXFxcXHU1NmZlXFxcXHU3MjQ3XFxcXHU5NGZlXFxcXHU2M2E1IFxcXCIpLmlucHV0KChpbmRleCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdlZGFuID0gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL0ptL2dlZGFuLmpzb25cXFwiKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbiA9IGlucHV0LnNwbGl0KFxcXCJAXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZWRhbltpbmRleF0gPSB7dGl0bGU6IG5bMF0sIGljb246IG5bMV0sIGlkOiBuWzJdfTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL0ptL2dlZGFuLmpzb25cXFwiLCBKU09OLnN0cmluZ2lmeShnZWRhbikpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL1xcXFx1NjZmNFxcXFx1NjUzOVxcXFx1NjIxMFxcXFx1NTI5Zn5cXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgaW5kZXgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwiXFxcXHU3OWZiXFxcXHU0ZjRkXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoXFxcIlxcXCIsIFxcXCJcXFxcdTg5ODFcXFxcdTc5ZmJcXFxcdTUyYThcXFxcdTUyMzBcXFxcdTU0ZWFcXFxcdTRlMmFcXFxcdTVlOGZcXFxcdTUzZjdcXFxcdTUyNGRcXFxcdTk3NjIvXFxcXHU1NDBlXFxcXHU5NzYyXFxcIikuaW5wdXQoKGluZGV4KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdlZGFuID0gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL0ptL2dlZGFuLmpzb25cXFwiKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXAgPSBnZWRhbltpbmRleF07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VkYW4uc3BsaWNlKGlucHV0LCAwLCB0ZW1wKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPCBpbmRleCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZWRhbi5zcGxpY2UoaW5kZXggKyAxLCAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZWRhbi5zcGxpY2UoaW5kZXgsIDEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uXFxcIiwgSlNPTi5zdHJpbmdpZnkoZ2VkYW4pKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL1xcXFx1NzlmYlxcXFx1NGY0ZFxcXFx1NjIxMFxcXFx1NTI5Zn5cXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBpbmRleCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZ2VkYW4gPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvblxcXCIpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlZGFuLnNwbGljZShpbmRleCwgMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9KbS9nZWRhbi5qc29uXFxcIiwgSlNPTi5zdHJpbmdpZnkoZ2VkYW4pKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly9cXFxcdTUyMjBcXFxcdTk2NjRcXFxcdTYyMTBcXFxcdTUyOWZ+XFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICwgaW5kZXgsIGl0ZW0pfSk7XFxuICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICk7XFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgKTtcXG4gICAgICAgIH1cXG4gICAgICAgICl9LCB7dGl0bGU6IFxcXCJcXFxcdTI2N2JcXFxcdWZlMGYgXFxcXHU2MDYyXFxcXHU1OTBkXFxcXHU5ZWQ4XFxcXHU4YmE0XFxcIiwganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIGRlbGV0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvSm0vZ2VkYW4uanNvblxcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vXFxcXHU1ZGYyXFxcXHU2MDYyXFxcXHU1OTBkXFxcXHU5ZWQ4XFxcXHU4YmE0XFxcIjtcXG4gICAgICAgIH1cXG4gICAgICAgICl9XX19KTtcXG4gICAgICAgIGQucHVzaCh7dGl0bGU6IFxcXCJcXFxcdTVjMGZcXFxcdTgyYjhcXFxcdTY5OWNcXFxcdTUzNTVcXFwiLCBjb2xfdHlwZTogXFxcImljb25fM19yb3VuZF9maWxsXFxcIiwgcGljOiBcXFwiaGlrZXI6Ly9maWxlcy9KbS9sbS9tdXNpYy81MS5zdmdcXFwiLCB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHZhciBnZWRhbiA9IEpTT04ucGFyc2UoZmMoXFxcImh0dHA6Ly9tdXNpYy4xNjMuY29tL2FwaS90b3BsaXN0XFxcIiwgMjQpKS5saXN0Lm1hcChsID0+IHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHt0aXRsZTogbC5uYW1lLCBpY29uOiBsLmNvdmVySW1nVXJsLCBpZDogbC5pZH07XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICk7XFxuICAgICAgICAgICAgcmV0dXJuICQoZ2VkYW4sIDIsIFxcXCJcXFxcdTVjMGZcXFxcdTgyYjhcXFxcdTYzOTJcXFxcdTg4NGNcXFxcdTY5OWNcXFwiKS5zZWxlY3QoKGdlZGFuKSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCBhID0gZ2VkYW4uZmluZEluZGV4KHQgPT4gdC50aXRsZSA9PSBpbnB1dCk7XFxuICAgICAgICAgICAgICAgIGxldCBpZCA9IGdlZGFuW2FdLmlkO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJChcXFwiaGlrZXI6Ly9lbXB0eSNpbW1lcnNpdmVUaGVtZSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjXFxcIikucnVsZSgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBkID0gW107XFxuICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoXFxcIlxcXFx1NWMwZlxcXFx1ODJiOFxcXFx1NmI0Y1xcXFx1NTM1NVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGh0bWwgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwOi8vbXVzaWMuMTYzLmNvbS9hcGkvdjYvcGxheWxpc3QvZGV0YWlsP249MTAwMCZpZD1cXFwiICsgaWQsIHtoZWFkZXJzOiB7XFxcIlVzZXItQWdlbnRcXFwiOiBcXFwiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV09XNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMDIuMC4wLjAgU2FmYXJpLzUzNy4zNlxcXCIsIFxcXCJDb29raWVcXFwiOiBcXFwib3M9cGM7IE1VU0lDX1U9MDAxNzM5OTdFNTdEQzE2MTEyRDJFMTU3OUY1NTU0NDQ4MTJFNTEzM0YxNkMzNDIxM0Q5QkI1RTNFQ0VDODE4ODQ1REY4QTMzNkEzQjlENDk1RUUxODJGMzAwMUFGRUFGOUU5NzE1OTFDQ0VEQzQ3MTM4NDJGMzI5NkExRTc5REZCNzgxN0E4QzdCQjgxNTRGRjE1NDgzNjQ4RjE4NEQwRTcyRDdEMjZBNTY1RTQ0NTA3MzgwODI0OTAyQzIxNTJDQzBCQjVEQjlBMzc5RTgwRjZGMDNEMEQ5OEIyNzkzQTIwMzIzMDM0REU0QTBCQkI0NjcyRDQ4RjkzNjI5NjBFRjIxMzYxNTNEMDJFN0RGMTRDOUNFODRGMUY2NEMxNkVCMzA3QTVCQkI1ODY4NkM2MDk1MDgyQUE0NTA1ODNFNjRFQUNEM0U2QjVCRTBERkNBQ0E5MTI1RjAzNTA1N0ZFMTdCNUJEQTYxRDg5REY1QUJENzc5MDZGNUU1RDg1OEM3NERCMkUxNzhBM0IwRTYwOTVERDc1NTE4RDQ4MkRDOUQ2MTA4MEE2MUQ5Qjc2NUQ3RTk4RUJFMjMwQ0YwMTdDRDkwMjA4MzkyRDNFMTBERTk2NEE2ODEyMUI2QzY2RDA4QzkwMkE5OEVENzExM0FBRTU5RDFFNTU1OUIwNzFERTgzMTI2QjhDMjk1Qzc4MENDRDRCMEI0REUzNkUzNUMwOUFBNjM0MzU1QUVERTJGODgwOTk4NzE5Mjc3RTVFRjlDN0I5Q0FGRkM5MEUyNzlBQUEyQkFGQ0E0NEMwQTgzNTM3RDYwOUUyREFBNUQ1RDc3NDg0OEM5OEREMjg3MTE4ODk1QzFDM0Q2NTc0NDY2RjkyNjJERUNFMDcyOTJBQzE1N0MxREI3MENCNzAzOTU4QTdGRTU1MzQ0RTI3MzQyMkU2OVxcXCJ9fSkpLnBsYXlsaXN0O1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGpzb24gPSBodG1sLnRyYWNrcy5tYXAoaiA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNpbmdlciA9IGouYXIubWFwKG4gPT4gbi5uYW1lKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3RpdGxlOiBqLm5hbWUsIHNpbmdlcjogc2luZ2VyLCBhbGJ1bTogai50bnMsIHBpYzogai5hbC5waWNVcmwsIGlkOiBqLmlkLCB2aWQ6IGoubXZ9O1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgKTtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7dGl0bGU6IGh0bWwuZGVzY3JpcHRpb24sIGNvbF90eXBlOiBcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1clxcXCIsIGRlc2M6IFxcXCJcXFxcdWQ4M2VcXFxcdWRkZjhcXFxcdFxcXCIgKyBodG1sLmNyZWF0b3Iubmlja25hbWUgKyBcXFwiXFxcXG5cXFxcblxcXFx1ZDgzY1xcXFx1ZGZiY1xcXFx0XFxcIiArIGh0bWwudHJhY2tDb3VudCArIFxcXCJcXFxcdTk5OTZcXFwiLCBwaWM6IGh0bWwuY292ZXJJbWdVcmwsIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwifSk7XFxuICAgICAgICAgICAgICAgICAgICBqc29uLm1hcChqID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe3RpdGxlOiBqLnRpdGxlLCBjb2xfdHlwZTogXFxcInRleHRfMVxcXCIsIGRlc2M6IGouYWxidW0gPyBqLnNpbmdlciArIFxcXCIgLS0gXFxcIiArIGouYWxidW0gOiBqLnNpbmdlciArIFxcXCIgLS0gXFxcIiArIGoudGl0bGUsIHBpY191cmw6IGoucGljICsgXFxcIkBSZWZlcmVyPVxcXCIsIHVybDogJChcXFwiI25vTG9hZGluZyMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjXFxcIikubGF6eVJ1bGUoKGopID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnhpbmd6aGlnZS5jb20vQVBJL05ldEVhc2VfQ2xvdWRNdXNpY19uZXcvP2JyPTUmc29uZ2lkPVxcXCIgKyBqLmlkKSkuZGF0YS5zcmM7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IChcXFwiaHR0cHM6Ly9tdXNpYy4xNjMuY29tL3NvbmcvbWVkaWEvb3V0ZXIvdXJsP2lkPVxcXCIgKyBqLmlkKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gW2pzICsgXFxcIiNpc011c2ljPXRydWUjXFxcIl07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbHJjID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cDovL211c2ljLjE2My5jb20vYXBpL3NvbmcvbHlyaWM/b3M9cGMmbHY9LTEma3Y9LTEmdHY9LTEmaWQ9XFxcIiArIGouaWQpKS5scmMubHlyaWM7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2gge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7dXJsczogdXJsLCBseXJpYzogbHJjfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICwgaiksIGV4dHJhOiB7aW5oZXJpdFRpdGxlOiBmYWxzZSwgbG9uZ0NsaWNrOiBbe3RpdGxlOiBcXFwiXFxcXHU0ZTBiXFxcXHU4ZjdkXFxcXHU2YjRjXFxcXHU2NmYyXFxcIiwganM6ICQudG9TdHJpbmcoKGopID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkueGluZ3poaWdlLmNvbS9BUEkvTmV0RWFzZV9DbG91ZE11c2ljX25ldy8/YnI9NSZzb25naWQ9XFxcIiArIGouaWQpKS5kYXRhLnNyYztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSAoXFxcImh0dHBzOi8vbXVzaWMuMTYzLmNvbS9zb25nL21lZGlhL291dGVyL3VybD9pZD1cXFwiICsgai5pZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJkb3dubG9hZDovL1xcXCIgKyBqc29uO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAsIGopfSwge3RpdGxlOiBcXFwiXFxcXHU4OWMyXFxcXHU3NzBiTVZcXFwiLCBqczogJC50b1N0cmluZygoaikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnZwczAyLnRvcC9BUEkva2dfbXVzaWNfbXYucGhwP249MSZ0eXBlPWpzb24mbXNnPVxcXCIgKyBqLnRpdGxlKSkuZGF0YS51cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidmlkZW86Ly9cXFwiICsganNvbjtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgLCBqKX1dfX0pO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgKTtcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAsIGlkKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgLCBnZWRhbik7XFxuICAgICAgICB9XFxuICAgICAgICApfSk7XFxuICAgICAgICBkLnB1c2goe3RpdGxlOiBnZXRJdGVtKFxcXCJrd2dkXFxcIiwgXFxcIm5ld1xcXCIpID09IFxcXCJuZXdcXFwiID8gXFxcIlxcXFx1NjcwMFxcXFx1NjViMFxcXFx1NmI0Y1xcXFx1NTM1NVxcXCIgOiBcXFwiXFxcXHU2NzAwXFxcXHU3MGVkXFxcXHU2YjRjXFxcXHU1MzU1XFxcIiwgY29sX3R5cGU6IFxcXCJpY29uXzNfcm91bmRfZmlsbFxcXCIsIHBpYzogXFxcImhpa2VyOi8vZmlsZXMvSm0vbG0vbXVzaWMvODIuc3ZnXFxcIiwgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICBzZXRJdGVtKFxcXCJrd2dkXFxcIiwgZ2V0SXRlbShcXFwia3dnZFxcXCIsIFxcXCJuZXdcXFwiKSA9PSBcXFwibmV3XFxcIiA/IFxcXCJob3RcXFwiIDogXFxcIm5ld1xcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICB0b2FzdChcXFwiXFxcXHU1ZGYyXFxcXHU1MjA3XFxcXHU2MzYyXFxcIiArIChnZXRJdGVtKFxcXCJrd2dkXFxcIiwgXFxcIm5ld1xcXCIpID09IFxcXCJuZXdcXFwiID8gXFxcIlxcXFx1NjcwMFxcXFx1NjViMFxcXFx1NmI0Y1xcXFx1NTM1NVxcXCIgOiBcXFwiXFxcXHU2NzAwXFxcXHU3MGVkXFxcXHU2YjRjXFxcXHU1MzU1XFxcIikpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICB9XFxuICAgICAgICApfSwge3RpdGxlOiBcXFwiXFxcXHU2NDFjXFxcXHU3ZDIyXFxcIiwgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsIGRlc2M6IFxcXCJcXFxcdWQ4M2RcXFxcdWRjNDlcXFxcdWQ4M2NcXFxcdWRmZmIgXFxcXHU2YjRjXFxcXHU1NDBkXFxcXHUzMDAxXFxcXHU2YjRjXFxcXHU2MjRiXFxcXHUzMDAxXFxcXHU2OTljXFxcXHU1MzU1XFxcXHU1NDBkXFxcXHU3OWYwXFxcIiwgdXJsOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICBpZiAoIWlucHV0KSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly9cXFxcdThiZjdcXFxcdThmOTNcXFxcdTUxNjVcXFxcdTUxNzNcXFxcdTk1MmVcXFxcdThiY2RcXFxcdTY0MWNcXFxcdTdkMjJcXFwiO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB2YXIgdHh0ID0gaW5wdXQ7XFxuICAgICAgICAgICAgc2V0SXRlbShcXFwic3NwdF9pbnB1dFxcXCIsIHR4dCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJzZWxlY3Q6Ly9cXFwiICsgSlNPTi5zdHJpbmdpZnkoe29wdGlvbnM6IFtcXFwiXFxcXHU1YzBmXFxcXHU0ZTAzXFxcIiwgXFxcIlxcXFx1NWMwZlxcXFx1ODJiOFxcXCIsIFxcXCJcXFxcdTVjMGZcXFxcdTgzYjRcXFwiXSwgYXR0YWNoVmlldzogdHJ1ZSwganM6ICQudG9TdHJpbmcoKHR4dCkgPT4ge1xcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gXFxcIlxcXFx1NWMwZlxcXFx1NGUwM1xcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkKFxcXCJoaWtlcjovL2VtcHR5I2Z5cGFnZSNpbW1lcnNpdmVUaGVtZSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjXFxcIikucnVsZSgodHh0KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKFxcXCJcXFxcdTVjMGZcXFxcdTRlMDNcXFxcdTY0MWNcXFxcdTdkMjJcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB5aXlhbiA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvSm0veWl5YW4uanNvblxcXCIpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF4ID0geWl5YW4ubGVuZ3RoIC0gMTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWluID0gMDtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbnVtID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbiArIDEpKSArIG1pbjtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgRGlzcGxheSA9IHlpeWFuW251bV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS55YW9odWQuY24vYXBpL3FxbXVzaWMvdjI/a2V5PWFVbHlrQTM1S2dtd1BVcGVoSktOYkZqbzZ2JnR5cGU9c28mcGFnZT1cXFwiICsgTVlfUEFHRSArIFxcXCImcGVyX3BhZ2U9MzAmd29yZD1cXFwiICsgdHh0KSkuZGF0YS5saXN0Lm1hcChqID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHt0aXRsZTogai50aXRsZSwgc2luZ2VyOiBqLmF1dGhvciwgcGljOiBqLnBpYywgYWxidW06IGouYWxidW0ubmFtZSwgaWQ6IGoubWlkfTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7dGl0bGU6IFxcXCJcXFxcdWQ4M2RcXFxcdWRkMGVcXFxcdFxcXCIgKyB0eHQsIGNvbF90eXBlOiBcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1clxcXCIsIGRlc2M6IFxcXCJcXFxcdWQ4M2VcXFxcdWRkZjhcXFxcdFxcXFx1NWMwZlxcXFx1NGUwM1xcXFx1OTdmM1xcXFx1NGU1MFxcXFxuXFxcXG5cXFxcdWQ4M2NcXFxcdWRmYThcXFxcdFxcXCIgKyBEaXNwbGF5LnJlcGxhY2UoL++8jHzjgIIvZywgXFxcIiBcXFwiKSwgcGljOiBqc29uWzBdLnBpYywgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJ9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAganNvbi5mb3JFYWNoKGogPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe3RpdGxlOiBqLnRpdGxlLCBjb2xfdHlwZTogXFxcInRleHRfMVxcXCIsIGRlc2M6IGouYWxidW0gPyBqLnNpbmdlciArIFxcXCIgLS0gXFxcIiArIGouYWxidW0gOiBqLnNpbmdlciArIFxcXCIgLS0gXFxcIiArIGoudGl0bGUsIHBpY191cmw6IGoucGljICsgXFxcIkBSZWZlcmVyPVxcXCIsIHVybDogJChcXFwiI25vTG9hZGluZyMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjXFxcIikubGF6eVJ1bGUoKGopID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkueGluZ3poaWdlLmNvbS9BUEkvUVFtdXNpY1ZJUC8/YnI9MTEmbWlkPVxcXCIgKyBqLmlkKSkuZGF0YS5zcmM7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFtqcyArIFxcXCIjaXNNdXNpYz10cnVlI1xcXCJdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2gge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly94aWFvYXBpLmNuL0FQSS9tdl9zcS5waHA/bj0xJm1zZz1cXFwiICsgai50aXRsZSwge3RpbWVvdXQ6IDIwMDB9KSkudXJsO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbanNvblszXSB8fCBqc29uWzJdIHx8IGpzb25bMV0gfHwganNvblswXV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBscmMgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS55YW9odWQuY24vYXBpL211c2ljL2xyYz9rZXk9YVVseWtBMzVLZ213UFVwZWhKS05iRmpvNnYmdHlwZT1xcSZtaWQ9XFxcIiArIGouaWQpKS5kYXRhO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2gge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHt1cmxzOiB1cmwsIGx5cmljOiBscmN9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIGopLCBleHRyYToge2luaGVyaXRUaXRsZTogZmFsc2UsIGxvbmdDbGljazogW3t0aXRsZTogXFxcIlxcXFx1NGUwYlxcXFx1OGY3ZFxcXFx1NmI0Y1xcXFx1NjZmMlxcXCIsIGpzOiAkLnRvU3RyaW5nKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnhpbmd6aGlnZS5jb20vQVBJL1FRbXVzaWNWSVAvP2JyPTExJm1pZD1cXFwiICsgai5pZCkpLmRhdGEuc3JjO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJkb3dubG9hZDovL1xcXCIgKyBqc29uO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgail9LCB7dGl0bGU6IFxcXCJcXFxcdTg5YzJcXFxcdTc3MGJNVlxcXCIsIGpzOiAkLnRvU3RyaW5nKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly94aWFvYXBpLmNuL0FQSS9tdl9zcS5waHA/bj0xJm1zZz1cXFwiICsgai50aXRsZSwge3RpbWVvdXQ6IDIwMDB9KSkudXJsO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbanNvblszXSB8fCBqc29uWzJdIHx8IGpzb25bMV0gfHwganNvblswXV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBbSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkuY2VuZ3VpZ3VpLmNuL2FwaS9qdWhlL2FwaS5waHA/dHlwZT1rZ212Jm49MSZtc2c9XFxcIiArIGoudGl0bGUsIHt0aW1lb3V0OiAyMDAwfSkpLmRhdGEudXJsXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7dXJsczogdXJsfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBqKX1dfX0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICwgdHh0KTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwiXFxcXHU1YzBmXFxcXHU4MmI4XFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKFxcXCJoaWtlcjovL2VtcHR5I2ltbWVyc2l2ZVRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNcXFwiKS5ydWxlKCh0eHQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKFxcXCJcXFxcdTVjMGZcXFxcdTgyYjhcXFxcdTY0MWNcXFxcdTdkMjJcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHlpeWFuID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9KbS95aXlhbi5qc29uXFxcIikpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF4ID0geWl5YW4ubGVuZ3RoIC0gMTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1pbiA9IDA7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBudW0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkpICsgbWluO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgRGlzcGxheSA9IHlpeWFuW251bV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cDovL211c2ljLjE2My5jb20vYXBpL3NlYXJjaC9nZXQvd2ViP3R5cGU9MSZvZmZzZXQ9MCZsaW1pdD05MCZzPVxcXCIgKyB0eHQpKS5yZXN1bHQuc29uZ3MubWFwKGogPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNpbmdlciA9IGouYXJ0aXN0cy5tYXAocyA9PiBzLm5hbWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHt0aXRsZTogai5uYW1lLCBzaW5nZXI6IHNpbmdlclswXSwgcGljOiBcXFwiaHR0cHM6Ly93YW5naHVuLnRvcC9xcW11c2ljL3d5bXVzaWMucGhwP3R5cGU9cGljJmlkPVxcXCIgKyBqLmlkLCBhbGJ1bTogai5hbGJ1bS5uYW1lLCBpZDogai5pZCwgdmlkOiBqLm12aWR9O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7dGl0bGU6IFxcXCJcXFxcdWQ4M2RcXFxcdWRkMGVcXFxcdFxcXCIgKyB0eHQsIGNvbF90eXBlOiBcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1clxcXCIsIGRlc2M6IFxcXCJcXFxcdWQ4M2VcXFxcdWRkZjhcXFxcdFxcXFx1NWMwZlxcXFx1ODJiOFxcXFx1OTdmM1xcXFx1NGU1MFxcXFxuXFxcXG5cXFxcdWQ4M2NcXFxcdWRmYThcXFxcdFxcXCIgKyBEaXNwbGF5LnJlcGxhY2UoL++8jHzjgIIvZywgXFxcIiBcXFwiKSwgcGljOiBqc29uWzBdLnBpYywgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJ9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLm1hcChqID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7dGl0bGU6IGoudGl0bGUsIGNvbF90eXBlOiBcXFwidGV4dF8xXFxcIiwgcGljX3VybDogai5waWMgKyBcXFwiQFJlZmVyZXI9XFxcIiwgZGVzYzogai5hbGJ1bSA/IGouc2luZ2VyICsgXFxcIiAtLSBcXFwiICsgai5hbGJ1bSA6IGouc2luZ2VyICsgXFxcIiAtLSBcXFwiICsgai50aXRsZSwgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNcXFwiKS5sYXp5UnVsZSgoaikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnhpbmd6aGlnZS5jb20vQVBJL05ldEVhc2VfQ2xvdWRNdXNpY19uZXcvP2JyPTUmc29uZ2lkPVxcXCIgKyBqLmlkKSkuZGF0YS5zcmM7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IChcXFwiaHR0cHM6Ly9tdXNpYy4xNjMuY29tL3NvbmcvbWVkaWEvb3V0ZXIvdXJsP2lkPVxcXCIgKyBqLmlkKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IFtqcyArIFxcXCIjaXNNdXNpYz10cnVlI1xcXCJdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBscmMgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwOi8vbXVzaWMuMTYzLmNvbS9hcGkvc29uZy9seXJpYz9vcz1wYyZsdj0tMSZrdj0tMSZ0dj0tMSZpZD1cXFwiICsgai5pZCkpLmxyYy5seXJpYztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2gge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe3VybHM6IHVybCwgbHlyaWM6IGxyY30pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBqKSwgZXh0cmE6IHtpbmhlcml0VGl0bGU6IGZhbHNlLCBsb25nQ2xpY2s6IFt7dGl0bGU6IFxcXCJcXFxcdTRlMGJcXFxcdThmN2RcXFxcdTZiNGNcXFxcdTY2ZjJcXFwiLCBqczogJC50b1N0cmluZygoaikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkueGluZ3poaWdlLmNvbS9BUEkvTmV0RWFzZV9DbG91ZE11c2ljX25ldy8/YnI9NSZzb25naWQ9XFxcIiArIGouaWQpKS5kYXRhLnNyYztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSAoXFxcImh0dHBzOi8vbXVzaWMuMTYzLmNvbS9zb25nL21lZGlhL291dGVyL3VybD9pZD1cXFwiICsgai5pZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiZG93bmxvYWQ6Ly9cXFwiICsganNvbjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgail9LCB7dGl0bGU6IFxcXCJcXFxcdTg5YzJcXFxcdTc3MGJNVlxcXCIsIGpzOiAkLnRvU3RyaW5nKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSB0LnNwbGl0KFxcXCIgXFxcIilbMF07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS52cHMwMi50b3AvQVBJL2tnX211c2ljX212LnBocD9uPTEmdHlwZT1qc29uJm1zZz1cXFwiICsgai50aXRsZSkpLmRhdGEudXJsO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidmlkZW86Ly9cXFwiICsganNvbjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgail9XX19KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICwgdHh0KTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoXFxcImhpa2VyOi8vZW1wdHkjZnlwYWdlI2ltbWVyc2l2ZVRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNcXFwiKS5ydWxlKCh0eHQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKFxcXCJcXFxcdTVjMGZcXFxcdTgzYjRcXFxcdTY0MWNcXFxcdTdkMjJcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHlpeWFuID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9KbS95aXlhbi5qc29uXFxcIikpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF4ID0geWl5YW4ubGVuZ3RoIC0gMTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1pbiA9IDA7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBudW0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkpICsgbWluO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgRGlzcGxheSA9IHlpeWFuW251bV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9zZWFyY2gua3V3by5jbi9yLnM/Y2xpZW50PWt0JnBuPVxcXCIgKyAoTVlfUEFHRSAtIDEpICsgXFxcIiZybj0zMCZ2aXB2ZXI9MSZmdD1tdXNpYyZlbmNvZGluZz11dGY4JnJmb3JtYXQ9anNvbiZtb2JpPTEmYWxsPVxcXCIgKyB0eHQpKS5hYnNsaXN0Lm1hcChqID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbWcgPSAoXFxcImh0dHA6Ly9pbWcxLmt3Y2RuLmt1d28uY24vc3Rhci9hbGJ1bWNvdmVyLzUwMFxcXCIgKyBqLndlYl9hbGJ1bXBpY19zaG9ydC5zcGxpdChcXFwiMTIwXFxcIilbMV0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHt0aXRsZTogai5TT05HTkFNRSwgc2luZ2VyOiBqLkFSVElTVCwgcGljOiBpbWcsIGFsYnVtOiBqLkFMQlVNLCByaWQ6IGouRENfVEFSR0VUSUQsIHZpZDogai5tdnBheWluZm8udmlkfTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe3RpdGxlOiBcXFwiXFxcXHVkODNkXFxcXHVkZDBlXFxcXHRcXFwiICsgdHh0LCBwaWM6IGpzb25bMF0ucGljLCBjb2xfdHlwZTogXFxcIm1vdmllXzFfdmVydGljYWxfcGljX2JsdXJcXFwiLCBkZXNjOiBcXFwiXFxcXHVkODNlXFxcXHVkZGY4XFxcXHRcXFxcdTVjMGZcXFxcdTgzYjRcXFxcdTk3ZjNcXFxcdTRlNTBcXFxcblxcXFxuXFxcXHVkODNjXFxcXHVkZmE4XFxcXHRcXFwiICsgRGlzcGxheS5yZXBsYWNlKC/vvIx844CCL2csIFxcXCIgXFxcIiksIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwifSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5tYXAoaiA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe3RpdGxlOiBqLnRpdGxlLCBjb2xfdHlwZTogXFxcInRleHRfMVxcXCIsIHBpYzogai5waWMgKyBcXFwiQFJlZmVyZXI9XFxcIiwgZGVzYzogai5hbGJ1bSA/IGouc2luZ2VyICsgXFxcIiAtLSBcXFwiICsgai5hbGJ1bSA6IGouc2luZ2VyICsgXFxcIiAtLSBcXFwiICsgai50aXRsZSwgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNcXFwiKS5sYXp5UnVsZSgoaikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnhpbmd6aGlnZS5jb20vQVBJL0t1d29fQkRfbmV3Lz9uPTEmYnI9NSZuYW1lPVxcXCIgKyBqLnRpdGxlKSkuZGF0YS5zcmM7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IGZldGNoKFxcXCJodHRwczovL2FudGlzZXJ2ZXIua3V3by5jbi9hbnRpLnM/dHlwZT1jb252ZXJ0X3VybCZmb3JtYXQ9bXAzJnJpZD1cXFwiICsgai5yaWQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gW2pzICsgXFxcIiNpc011c2ljPXRydWUjXFxcIl07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vbS5rdXdvLmNuL25ld2g1L3NpbmdsZXMvc29uZ2luZm9hbmRscmM/bXVzaWNJZD1cXFwiICsgai5yaWQpKS5kYXRhLmxyY2xpc3QubWFwKGQgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSAoZC50aW1lICUgNjApLnRvRml4ZWQoMikucGFkU3RhcnQoNSwgXFxcIjBcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtID0gKChkLnRpbWUgLSBzKSAvIDYwKS50b0ZpeGVkKDApLnBhZFN0YXJ0KDIsIFxcXCIwXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcIltcXFwiICsgbSArIFxcXCI6XFxcIiArIHMgKyBcXFwiXVxcXCIgKyBkLmxpbmVMeXJpYztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLmpvaW4oXFxcIlxcXFxuXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHt1cmxzOiB1cmwsIGx5cmljOiBscmN9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgaiksIGV4dHJhOiB7aW5oZXJpdFRpdGxlOiBmYWxzZSwgbG9uZ0NsaWNrOiBbe3RpdGxlOiBcXFwiXFxcXHU0ZTBiXFxcXHU4ZjdkXFxcXHU2YjRjXFxcXHU2NmYyXFxcIiwganM6ICQudG9TdHJpbmcoKGopID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnhpbmd6aGlnZS5jb20vQVBJL0t1d29fQkRfbmV3Lz9uPTEmYnI9NSZuYW1lPVxcXCIgKyBqLnRpdGxlKSkuZGF0YS5zcmM7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gZmV0Y2goXFxcImh0dHBzOi8vYW50aXNlcnZlci5rdXdvLmNuL2FudGkucz90eXBlPWNvbnZlcnRfdXJsJmZvcm1hdD1tcDMmcmlkPVxcXCIgKyBqLnJpZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiZG93bmxvYWQ6Ly9cXFwiICsganNvbjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgail9LCB7dGl0bGU6IFxcXCJcXFxcdTg5YzJcXFxcdTc3MGJNVlxcXCIsIGpzOiAkLnRvU3RyaW5nKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpZCA9PSBcXFwiMFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnZwczAyLnRvcC9BUEkva2dfbXVzaWNfbXYucGhwP249MSZ0eXBlPWpzb24mbXNnPVxcXCIgKyBqLnRpdGxlKSkuZGF0YS51cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGh0bWwgPSBmZXRjaChcXFwiaHR0cHM6Ly9hbnltYXRjaC5rdXdvLmNuL21vYmkucz9mPXdlYiZ1c2VyPTZmMTczY2Y5YTJhOWRhNGMmc291cmNlPWt3cGxheWVyX2FyXzEwLjguMi4yXzEzOC5hcGsmdHlwZT1nZXRfdXJsX2J5X3ZpZCZxdWFsaXR5PU1QNEhWJnAycGlkPTEmdmlkPVxcXCIgKyBqLnZpZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhID0gaHRtbC5zcGxpdChcXFwiPVxcXCIpWzNdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYiA9IGEuc3BsaXQoXFxcIj9cXFwiKVswXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IGI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidmlkZW86Ly9cXFwiICsgdXJsO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgail9XX19KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICwgdHh0KTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAsIHR4dCl9KTtcXG4gICAgICAgIH1cXG4gICAgICAgICksIGV4dHJhOiB7ZGVmYXVsdFZhbHVlOiBnZXRJdGVtKFxcXCJzc3B0X2lucHV0XFxcIiwgXFxcIlxcXCIpfX0pO1xcbiAgICB9XFxuICAgIGxldCBrd2dkID0gZ2V0SXRlbShcXFwia3dnZFxcXCIsIFxcXCJuZXdcXFwiKTtcXG4gICAgbGV0IGh0bWwgPSAoXFxcImh0dHA6Ly93YXBpLmt1d28uY24vYXBpL3BjL2NsYXNzaWZ5L3BsYXlsaXN0L2dldFJjbVBsYXlMaXN0P2xvZ2luVWlkPTAmbG9naW5TaWQ9MCZhcHBVaWQ9NzYwMzk1NzYmJnBuPVxcXCIgKyBNWV9QQUdFICsgXFxcIiZybj0zNiZvcmRlcj1cXFwiICsga3dnZCk7XFxuICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaChodG1sKSkuZGF0YTtcXG4gICAganNvbi5kYXRhLm1hcChkYXRhID0+IHtcXG4gICAgICAgIGQucHVzaCh7dGl0bGU6IGRhdGEubmFtZSwgY29sX3R5cGU6IFxcXCJjYXJkX3BpY18zXFxcIiwgcGljOiBkYXRhLmltZywgdXJsOiAkKFxcXCJoaWtlcjovL2VtcHR5I2Z5cGFnZSNpbW1lcnNpdmVUaGVtZSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjXFxcIikucnVsZSgoZGF0YSkgPT4ge1xcbiAgICAgICAgICAgIHNldFBhZ2VUaXRsZShcXFwiXFxcXHU1YzBmXFxcXHU4M2I0XFxcXHU2YjRjXFxcXHU1MzU1XFxcIik7XFxuICAgICAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgICAgICBsZXQgaHRtbCA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vbS5rdXdvLmNuL25ld2g1YXBwL3dhcGkvYXBpL3d3dy9wbGF5bGlzdC9wbGF5TGlzdEluZm8/cGlkPVxcXCIgKyBkYXRhLmlkICsgXFxcIiZybj0zMCZ1YT0maXA9JnBuPVxcXCIgKyBNWV9QQUdFKSkuZGF0YTtcXG4gICAgICAgICAgICB2YXIganNvbiA9IGh0bWwubXVzaWNMaXN0Lm1hcChqID0+IHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHt0aXRsZTogai5uYW1lLCBzaW5nZXI6IGouYXJ0aXN0LCBhbGJ1bTogai5hbGJ1bSwgcGljOiBqLnBpYywgaWQ6IGoucmlkLCB2aWQ6IGoubXZwYXlpbmZvLnZpZCwgdGltZTogai5zb25nVGltZU1pbnV0ZXN9O1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICApO1xcbiAgICAgICAgICAgIGlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHt0aXRsZTogaHRtbC5uYW1lLCBjb2xfdHlwZTogXFxcIm1vdmllXzFfdmVydGljYWxfcGljX2JsdXJcXFwiLCBwaWM6IGh0bWwuaW1nNzAwIHx8IGh0bWwudVBpYywgZGVzYzogXFxcIlxcXFx1ZDgzZVxcXFx1ZGRmOFxcXFx0XFxcIiArIGh0bWwudXNlck5hbWUgKyBcXFwiXFxcXG5cXFxcblxcXFx1ZDgzY1xcXFx1ZGZiY1xcXFx0XFxcIiArIGRhdGEudG90YWwgKyBcXFwiXFxcXHU5OTk2XFxcIiwgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJ9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAganNvbi5tYXAoaiA9PiB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7dGl0bGU6IGoudGl0bGUsIGNvbF90eXBlOiBcXFwidGV4dF8xXFxcIiwgZGVzYzogai5hbGJ1bSA/IGouc2luZ2VyICsgXFxcIiAtLSBcXFwiICsgai5hbGJ1bSA6IGouc2luZ2VyICsgXFxcIiAtLSBcXFwiICsgai50aXRsZSwgcGljOiBqLnBpYyArIFxcXCJAUmVmZXJlcj1cXFwiLCB1cmw6ICQoXFxcIiNub0xvYWRpbmcjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5I1xcXCIpLmxhenlSdWxlKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnhpbmd6aGlnZS5jb20vQVBJL0t1d29fQkRfbmV3Lz9uPTEmYnI9NSZuYW1lPVxcXCIgKyBqLnRpdGxlKSkuZGF0YS5zcmM7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqcyA9IGZldGNoKFxcXCJodHRwczovL2FudGlzZXJ2ZXIua3V3by5jbi9hbnRpLnM/dHlwZT1jb252ZXJ0X3VybCZmb3JtYXQ9bXAzJnJpZD1cXFwiICsgai5pZCk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gW2pzICsgXFxcIiNpc011c2ljPXRydWUjXFxcIl07XFxuICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBscmMgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL20ua3V3by5jbi9uZXdoNS9zaW5nbGVzL3NvbmdpbmZvYW5kbHJjP211c2ljSWQ9XFxcIiArIGouaWQpKS5kYXRhLmxyY2xpc3QubWFwKGQgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IChkLnRpbWUgJSA2MCkudG9GaXhlZCgyKS5wYWRTdGFydCg1LCBcXFwiMFxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbSA9ICgoZC50aW1lIC0gcykgLyA2MCkudG9GaXhlZCgwKS5wYWRTdGFydCgyLCBcXFwiMFxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcIltcXFwiICsgbSArIFxcXCI6XFxcIiArIHMgKyBcXFwiXVxcXCIgKyBkLmxpbmVMeXJpYztcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgKS5qb2luKFxcXCJcXFxcblxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgY2F0Y2gge1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHt1cmxzOiB1cmwsIGx5cmljOiBscmN9KTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAsIGopLCBleHRyYToge2luaGVyaXRUaXRsZTogZmFsc2UsIGxvbmdDbGljazogW3t0aXRsZTogXFxcIlxcXFx1NGUwYlxcXFx1OGY3ZFxcXFx1NmI0Y1xcXFx1NjZmMlxcXCIsIGpzOiAkLnRvU3RyaW5nKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkueGluZ3poaWdlLmNvbS9BUEkvS3V3b19CRF9uZXcvP249MSZicj01Jm5hbWU9XFxcIiArIGoudGl0bGUpKS5kYXRhLnNyYztcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBmZXRjaChcXFwiaHR0cHM6Ly9hbnRpc2VydmVyLmt1d28uY24vYW50aS5zP3R5cGU9Y29udmVydF91cmwmZm9ybWF0PW1wMyZyaWQ9XFxcIiArIGouaWQpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJkb3dubG9hZDovL1xcXCIgKyBqc29uO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICwgail9LCB7dGl0bGU6IFxcXCJcXFxcdTg5YzJcXFxcdTc3MGJNVlxcXCIsIGpzOiAkLnRvU3RyaW5nKChqKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoai52aWQgPT0gXFxcIjBcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSB0LnNwbGl0KFxcXCIgXFxcIilbMF07XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLnZwczAyLnRvcC9BUEkva2dfbXVzaWNfbXYucGhwP249MSZ0eXBlPWpzb24mbXNnPVxcXCIgKyBqLnRpdGxlKSkuZGF0YS51cmw7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBodG1sID0gZmV0Y2goXFxcImh0dHBzOi8vYW55bWF0Y2gua3V3by5jbi9tb2JpLnM/Zj13ZWImdXNlcj02ZjE3M2NmOWEyYTlkYTRjJnNvdXJjZT1rd3BsYXllcl9hcl8xMC44LjIuMl8xMzguYXBrJnR5cGU9Z2V0X3VybF9ieV92aWQmcXVhbGl0eT1NUDRIViZwMnBpZD0xJnZpZD1cXFwiICsgai5pZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGEgPSBodG1sLnNwbGl0KFxcXCI9XFxcIilbM107XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGIgPSBhLnNwbGl0KFxcXCI/XFxcIilbMF07XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IGI7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInZpZGVvOi8vXFxcIiArIHVybDtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAsIGopfV19fSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICk7XFxuICAgICAgICAgICAgc2V0UmVzdWx0KGQpO1xcbiAgICAgICAgfVxcbiAgICAgICAgLCBkYXRhKX0pO1xcbiAgICB9XFxuICAgICk7XFxuICAgIHNldFJlc3VsdChkKTtcXG59XFxuKSgpXCIsXCJncm91cFwiOlwi4pGg5o6o6I2QXCIsXCJ1YVwiOlwibW9iaWxlXCIsXCJwcmVSdWxlXCI6XCJcIn0iLCJwaWNVcmwiOiJoaWtlcjovL2ZpbGVzL0ptL2xtL21vcmUvMTgucG5nIiwidGl0bGUiOiLllpzmrKLlkKzpn7PkuZDnmoTmoqYifQ==
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement