Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥断插@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIlBhcnNlX0RuLmh0bWxcIixcInBhdGhcIjpcIlBhcnNlX0RuLmh0bWxcIixcInJ1bGVcIjpcIjwhRE9DVFlQRSBodG1sPlxcbjxodG1sPlxcbjxoZWFkPlxcbiAgICA8bWV0YSBjaGFyc2V0PVxcXCJ1dGYtOFxcXCI+XFxuICAgIDxtZXRhIG5hbWU9XFxcInZpZXdwb3J0XFxcIiBjb250ZW50PVxcXCJ3aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xLG1pbmltdW0tc2NhbGU9MSxtYXhpbXVtLXNjYWxlPTEsdXNlci1zY2FsYWJsZT1ub1xcXCIgLz5cXG4gICAgPCEtLVxcbiAgICA8c2NyaXB0IHNyYz1cXFwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS92dWVAMi41LjE2L2Rpc3QvdnVlLm1pbi5qc1xcXCI+PC9zY3JpcHQ+XFxuICAgIDxzY3JpcHQgc3JjPVxcXCJodHRwczovL2NvZGUuanF1ZXJ5LmNvbS9qcXVlcnktMi4xLjQubWluLmpzXFxcIj48L3NjcmlwdD5cXG4gICAgXFxuICAgIDxzY3JpcHQgc3JjPVxcXCJodHRwOi8vYXBwcy5iZGltZy5jb20vbGlicy9qcXVlcnkvMi4xLjQvanF1ZXJ5Lm1pbi5qc1xcXCI+PC9zY3JpcHQ+XFxuICAgIDxzY3JpcHQgc3JjPVxcXCJodHRwOi8vYXBwcy5iZGltZy5jb20vbGlicy92dWUvMS4wLjE0L3Z1ZS5qc1xcXCI+PC9zY3JpcHQ+XFxuICAgIC0tPlxcbiAgICA8dGl0bGU+UGFyc2VfRG48L3RpdGxlPlxcbiAgICA8c3R5bGUgdHlwZT10ZXh0L2Nzcz5cXG4gICAgICAgIGh0bWwsIGJvZHkge1xcbiAgICAgICAgICAgIGhlaWdodDogYXV0bztcXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICAgICAgfVxcbiAgICAgICAgYm9keSB7XFxuICAgICAgICAgICAgbWFyZ2luOiAwIDVweCAwIDVweDtcXG4gICAgICAgICAgICBwYWRkaW5nOiAwIDBweCAwIDBweDtcXG4gICAgICAgICAgICAvL2JhY2tncm91bmQ6ICNGOUYwREE7XFxuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDA7XFxuICAgICAgICAgICAgZm9udC1mYW1pbHk6IFxcXCJNaWNyb3NvZnQgWWFIZWlcXFwiLFxcXCLlrovkvZNcXFwiLFxcXCJTZWdvZSBVSVxcXCIsIFxcXCJMdWNpZGEgR3JhbmRlXFxcIiwgSGVsdmV0aWNhLCBBcmlhbCxzYW5zLXNlcmlmLCBGcmVlU2FucywgQXJpbW87XFxuICAgICAgICB9XFxuICAgICAgICAjZGl2MntcXG4gICAgICAgICAgIG1hcmdpbi10b3A6MzVweDtcXG4gICAgICAgIH1cXG4gICAgICAgIC8q6L6T5YWl5qGG54i25YWD57SgKi9cXG4gICAgICAgIGRpdi5ib3gge1xcbiAgICAgICAgICAgIGhlaWdodDogNTNweDtcXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMjBweDtcXG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgICAgICB9XFxuICAgICAgICAvKui+k+WFpeahhuWwuuWvuCovXFxuICAgICAgICBmb3JtIHtcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgICAgICAgICAgd2lkdGg6IDkyJTtcXG4gICAgICAgIH1cXG4gICAgICAgIGlucHV0LCBsYWJlbCwgLmxpZWIgYnV0dG9uIHtcXG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XFxuICAgICAgICAgICAgb3V0bGluZTogbm9uZTtcXG4gICAgICAgIH1cXG4gICAgICAgIC8q5a2X5L2T5L2N572uKi9cXG4gICAgICAgIGlucHV0IHtcXG4gICAgICAgICAgICB3aWR0aDogNzclO1xcbiAgICAgICAgICAgIGhlaWdodDogMzJweDtcXG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDY2cHg7XFxuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMzBweDtcXG4gICAgICAgIH1cXG4gICAgICAgIGxhYmVsIHtcXG4gICAgICAgICAgICB0ZXh0LWFsaWduOmNlbnRlcjtcXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogNDNweDtcXG4gICAgICAgICAgICBoZWlnaHQ6IDQwcHg7XFxuICAgICAgICAgICAgd2lkdGg6IDYwcHg7XFxuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgIH1cXG4gICAgICAgIC8q5bCP5qGGKi9cXG4gICAgICAgIC5iYXIgbGFiZWwge1xcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNEMDZCNkM7XFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTU1IDU1NXB4IDU1NXB4IDU1NTtcXG4gICAgICAgICAgICB3aWR0aDogNjBweDtcXG4gICAgICAgICAgICBmb250LXNpemU6IDEzcHg7XFxuICAgICAgICAgICAgY29sb3I6ICNGOUYwREE7XFxuICAgICAgICAgICAgdG9wOiAwO1xcbiAgICAgICAgICAgIGxlZnQ6IDNweDtcXG4gICAgICAgIH1cXG4gICAgICAgIC8q6L6T5YWl5qGG5qC35byPKi9cXG4gICAgICAgIC5iYXIgaW5wdXQge1xcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGOUYwREE7XFxuICAgICAgICAgICAgYm9yZGVyOiAzcHggc29saWQgI0QwNkI2QztcXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICAgICAgICB9XFxuICAgICAgICAvKuWIl+ihqCovXFxuICAgICAgICAubGllYiBidXR0b24ge1xcbiAgICAgICAgICAgIHRleHQtYWxpZ246Y2VudGVyO1xcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OjQwcHg7XFxuICAgICAgICAgICAgaGVpZ2h0OiA0MHB4O1xcbiAgICAgICAgICAgIHdpZHRoOiAyN3B4O1xcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICB9XFxuICAgICAgICAvKuWIl+ihqCovXFxuICAgICAgICAubGllYiBidXR0b257XFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNEMDZCNkM7XFxuICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4O1xcbiAgICAgICAgICAgIGNvbG9yOiAjRjlGMERBO1xcbiAgICAgICAgICAgIHRvcDogMDtcXG4gICAgICAgICAgICByaWdodDogMHB4O1xcbiAgICAgICAgfVxcbiAgICAgICAgLyrlpLTlg48qL1xcbiAgICAgICAgLnJvdW5kX2ljb257XFxuICAgICAgICAgICAgd2lkdGg6IDQwcHg7XFxuICAgICAgICAgICAgaGVpZ2h0OiA0MHB4O1xcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgIC5qeC11bCwgLmNqLXVsIHtcXG4gICAgICAgICAgICB6LWluZGV4OiA5OTk7XFxuICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkO1xcbiAgICAgICAgICAgIHdpZHRoOiA3NyU7XFxuICAgICAgICAgICAvLyBsZWZ0OiAxMCU7XFxuICAgICAgICB9XFxuICAgICAgICAuangtdWwsIC5jai11bCB7XFxuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgICAgIH1cXG4gICAgICAgIC5qeC11bCB7XFxuICAgICAgICAgICAgdG9wOiAzJTtcXG4gICAgICAgIH1cXG4gICAgICAgIC5jai11bCB7XFxuICAgICAgICAgICAgdG9wOiAzMCU7XFxuICAgICAgICB9XFxuICAgICAgICBsaSB7XFxuICAgICAgICAgICAgaGVpZ2h0OiAzNXB4O1xcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMWJmZGE7XFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC44KTtcXG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XFxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDM1cHg7XFxuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcXG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuICAgICAgICB9XFxuICAgICAgICBsaSB7XFxuICAgICAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcXG4gICAgICAgIH1cXG4gICAgICAgIGxpOmhvdmVyIHtcXG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgxMzksIDEzMSwgMTIwLCAwLjkpO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGlbY2hlY2s9XFxcInRydWVcXFwiXSB7XFxuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgxMzksIDAsIDAsIDAuOSk7XFxuICAgICAgICB9XFxuXFxuICAgIDwvc3R5bGU+XFxuPC9oZWFkPlxcblxcbjxib2R5PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJmdW5nXFxcIj5cXG4gICAgICAgIDxhIHN0eWxlPVxcXCJmbG9hdDpsZWZ0O1xcXCI+XFxuICAgICAgICAgICAgPGJ1dHRvbiAgc3R5bGU9XFxcImJvcmRlcjogbm9uZTtib3JkZXItcmFkaXVzOjEwcHg7YmFja2dyb3VuZDogI2M1NDY0YTt3aWR0aDogODBweDsgZm9udC1zaXplOiAxOHB4O2NvbG9yOiAjRjlGMERBO1xcXCIgb25jbGljaz1cXFwiY2FuY2VsKCk7XFxcIj7lhbMg6ZetPC9idXR0b24+XFxuICAgICAgICA8L2E+XFxuICAgICAgICA8YSBzdHlsZT1cXFwiZmxvYXQ6cmlnaHRcXFwiPlxcbiAgICAgICAgICAgIDxidXR0b24gc3R5bGU9XFxcImJvcmRlcjogbm9uZTtib3JkZXItcmFkaXVzOjEwcHg7YmFja2dyb3VuZDogIzA2ODAwNjt3aWR0aDogODBweDsgZm9udC1zaXplOiAxOHB4O2NvbG9yOiAjRjlGMERBO1xcXCJvbmNsaWNrPVxcXCJjbGlja21lKCfphY0g572uIOW3siDkv50g5a2YIO+8gScsIDEwMDAsICflvIAnKTtcXFwiPuS/nSDlrZg8L2J1dHRvbj4gXFxuICAgICAgICA8L2E+XFxuICAgIDwvZGl2PlxcbiAgICA8YnI+XFxuICAgIDxkaXYgaWQ9XFxcImRpdjJcXFwiPjwvZGl2PlxcbiAgICA8ZGl2PlxcbiAgICAgICAgPGEgc3R5bGU9XFxcImZsb2F0OmxlZnQ7bWFyZ2luLXRvcDo1cHg7XFxcIiBvbmNsaWNrPVxcXCJvcGVuRG5QYWdlKClcXFwiPlxcbiAgICAgICAgICAgIDxpbWcgc3JjPVxcXCJodHRwczovL3MzLmF4MXguY29tLzIwMjEvMDIvMjIveTd3YjlPLmpwZ1xcXCIgY2xhc3M9XFxcInJvdW5kX2ljb25cXFwiICBhbHQ9XFxcIlxcXCI+XFxuICAgICAgICA8L2E+XFxuICAgICAgICA8c3BhbiBzdHlsZT1cXFwibGluZS1oZWlnaHQ6NjBweDtmb250LXNpemU6MThweDtjb2xvcjogZ3JleTtcXFwiPiZuYnNwOyZuYnNwO+aWrSZuYnNwO+W/tTwvc3Bhbj5cXG4gICAgICAgIDxhIHN0eWxlPVxcXCJmbG9hdDpyaWdodDttYXJnaW4tdG9wOjVweDtcXFwiPlxcbiAgICAgICAgICAgIDxidXR0b24gIHN0eWxlPVxcXCJib3JkZXI6IG5vbmU7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6ICMwNUJGQzU7d2lkdGg6IDE4NXB4O2hlaWdodDo0MHB4OyBmb250LXNpemU6IDE4cHg7Y29sb3I6ICNGOUYwREE7XFxcIiBvbmNsaWNrPVxcXCJjbGlja21lKCfphY0g572uIOW3siDkv50g5a2YIO+8gScsIDEwMDAsICflhbMnKTtcXFwiPuS/neWtmOiuvue9ruW5tuWFs+mXreeVjOmdojwvYnV0dG9uPlxcbiAgICAgICAgPC9hPlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwiemotZGl2XFxcIj5cXG4gICAgICAgIDx1bCBjbGFzcz1cXFwiangtdWxcXFwiIHN0eWxlPVxcXCJoZWlnaHQ6NDQ0cHg7b3ZlcmZsb3cteTphdXRvO1xcXCI+XFxuICAgICAgICAgICAgPGxpIGNsYXNzPVxcXCJteUNob2ljZVxcXCIgc3R5bGU9XFxcInotaW5kZXg6OTk5OTtwb3NpdGlvbjogZml4ZWQ7d2lkdGg6NzYuNSU7Y29sb3I6cmVkO1xcXCI+PC9saT5cXG4gICAgICAgICAgICA8bGkgY2xhc3M9XFxcInVzZWxlc3NcXFwiPjwvbGk+XFxuICAgICAgICAgICAgPGxpIGNsYXNzPVxcXCJ4bExpc3RcXFwiIHYtZm9yPVxcXCJpdGVtIGluIGp4RGF0YVxcXCI+e3tpdGVtfX08L2xpPlxcbiAgICAgICAgPC91bD5cXG4gICAgICAgIDx1bCBjbGFzcz1cXFwiY2otdWxcXFwiPlxcbiAgICAgICAgICAgIDxsaSBzdHlsZT1cXFwiYmFja2dyb3VuZDpncmV5O1xcXCI+6K+36YCJ5oup5o+S5Lu2PC9saT5cXG4gICAgICAgICAgICA8bGkgdi1mb3I9XFxcIml0ZW0gaW4gY2pEYXRhXFxcIj57e2l0ZW19fTwvbGk+XFxuICAgICAgICA8L3VsPlxcbiAgICA8L2Rpdj5cXG48L2JvZHk+XFxuPHNjcmlwdD5cXG4gICAgZXZhbChmeV9icmlkZ2VfYXBwLmZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL2pxdWVyeTAyMTQuanNcXFwiKSk7XFxuICAgIGV2YWwoZnlfYnJpZGdlX2FwcC5mZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS92dWUwMTAxNC5qc1xcXCIpKTtcXG4gICAgZXZhbChmeV9icmlkZ2VfYXBwLmdldEludGVybmFsSnMoKSk7XFxuICAgIFxcbiAgICB2YXIgc2V0dGluZ3MgPSB7XFxuICAgICAgICBxeTogJ3l1bjE3MTcnLFxcbiAgICAgICAgeWs6ICd5dW4xNzE3JyxcXG4gICAgICAgIHR4OiAneXVuMTcxNycsXFxuICAgICAgICBtZzogJ3l1bjE3MTcnLFxcbiAgICAgICAgYmw6ICd5dW4xNzE3JyxcXG4gICAgICAgIG90aDogJ3l1bjE3MTcnLFxcbiAgICAgICAgcWp1OiAn6buY6K6kJyxcXG4gICAgICAgIGNqOiAnaGlrZXI6Ly9maWxlcy9jYWNoZS9QYXJzZV9Ebi5qcydcXG4gICAgfTtcXG4gICAgXFxuICAgIHZhciBvbGRSb3V0ZSA9IFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL015UGFyc2VTZXQuanNvblxcXCI7XFxuICAgIHZhciBteVNldCA9IGZ5X2JyaWRnZV9hcHAuZmV0Y2gob2xkUm91dGUpO1xcbiAgICBcXG4gICAgdmFyIG5ld1JvdXRlID0gXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvRHVhbk5pYW4vTXlQYXJzZS5qc29uXFxcIjtcXG4gICAgdmFyIG5ld0NvbmZpZyA9IGZ5X2JyaWRnZV9hcHAuZmV0Y2gobmV3Um91dGUpO1xcbiAgICB2YXIgbXlTZWxlY3QgPSBbXTtcXG4gICAgdHJ5e1xcbiAgICAgICAgZXZhbChcXFwibmV3Q29uZmlnID1cXFwiICsgbmV3Q29uZmlnICsgXFxcIjtcXFwiKTtcXG4gICAgICAgIHNldHRpbmdzID0gbmV3Q29uZmlnLnNldHRpbmdzLnFqdSA9PSB1bmRlZmluZWQgPyBzZXR0aW5ncyA6IG5ld0NvbmZpZy5zZXR0aW5ncztcXG4gICAgICAgIHZhciB5Y1RpdGxlID0gWydkZWZhdWx0UGFyc2UnLCAnbWFvc3MnLCAnQ2l0eUlQJywgJ2NhY2hlTTN1OCcsICdwY1VBJywgJ3BhcnNlTGMnLCAnZ3BhcnNlJywgJ25wYXJzZSddO1xcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IG5ld0NvbmZpZy50aXRsZS5sZW5ndGg7IGkrKyl7XFxuICAgICAgICAgICAgdmFyIFRpdGxlcyA9IG5ld0NvbmZpZy50aXRsZVtpXTtcXG4gICAgICAgICAgICBpZih5Y1RpdGxlLmluY2x1ZGVzKFRpdGxlcykgPT0gZmFsc2Upe1xcbiAgICAgICAgICAgICAgICBteVNlbGVjdC5wdXNoKFRpdGxlcyk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9Y2F0Y2goZSl7fVxcbiAgICB2YXIgc2ZSZWZyZXNoID0gc2V0dGluZ3MuY2o7XFxuICAgIGZ1bmN0aW9uIERpZChpZCl7XFxuICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xcbiAgICB9XFxuICAgIFxcbiAgICBpZihteVNldCA9PSAnJyl7XFxuICAgICAgICBEaWQoXFxcImRpdjJcXFwiKS5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyQmVnaW4nLCdcXFxcXFxuPGg0PuaPkOekuu+8mjxicj7ikaDms6jmhI/mj5Lku7bpgInpobnvvIzmsqHmnInmiYvliqjlr7zlhaXmj5Lku7bnmoTor53kuI3nlKjliqjlroPjgILlpoLorr7nva7kuI3lvZPkvJrlr7zoh7Top4TliJnml6Dms5Xkvb/nlKjvvIw8YnI+6Kej5Yaz5Yqe5rOV77ya5bCP56iL5bqP6aaW6aG154K55Ye75oGi5aSN6buY6K6k5o+S5Lu277ybPGJyPuKRoeWFqOWxgOiuvue9ruWmguaenOmAieaLqeS6humdnum7mOiupOmCo+S5iOWFqOmDqOeahOino+aekOS8muS9v+eUqOi/meS4gOiuvue9ru+8jOS4jeaDs+i/meagt+eahOivneivt+Whq+WFpem7mOiupO+8mzxicj7ikaLnu7/oibLkv53lrZjmjInpkq7ku4Xku4Xkv53lrZjphY3nva7kuI3kvJrlhbPpl63orr7nva7pobXpnaLvvIzphY3nva7lkI7mg7Pkv53lrZjlubblhbPpl63orr7nva7pobXpnaLnmoTor53or7fngrnok53oibLmjInpkq7vvJs8YnI+4pGj6ZiF6K+75a6M5o+Q56S654K55YWz6Zet5Yqg6L295a6M5pW06K6+572u6aG16Z2i77yM5aaC5Ye66Zeu6aKY5peg5rOV6Ieq6KGM6Kej5Yaz54K55Zu+54mH6L+b5YWl6K665Z2b5ZCR5oiR5Y+N6aaI44CCPGJyPjwvaDQ+Jyk7XFxuICAgIH1cXG4gICAgXFxuICAgIHZhciBib3hEYXRhID0gW1xcbiAgICAgICAge1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi5aWHIOWlh1xcXCIsXFxuICAgICAgICAgICAgaWQ6IFxcXCJxeVxcXCIsXFxuICAgICAgICAgICAgdmFsdWU6IHNldHRpbmdzLnF5LFxcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi6YW3IOmFt1xcXCIsXFxuICAgICAgICAgICAgaWQ6IFxcXCJ5a1xcXCIsXFxuICAgICAgICAgICAgdmFsdWU6IHNldHRpbmdzLnlrLFxcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi6IW+IOiFvlxcXCIsXFxuICAgICAgICAgICAgaWQ6IFxcXCJ0eFxcXCIsXFxuICAgICAgICAgICAgdmFsdWU6IHNldHRpbmdzLnR4LFxcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi5p6cIOaenFxcXCIsXFxuICAgICAgICAgICAgaWQ6IFxcXCJtZ1xcXCIsXFxuICAgICAgICAgICAgdmFsdWU6IHNldHRpbmdzLm1nLFxcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi5ZOpIOWTqVxcXCIsXFxuICAgICAgICAgICAgaWQ6IFxcXCJibFxcXCIsXFxuICAgICAgICAgICAgdmFsdWU6IHNldHRpbmdzLmJsLFxcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi5YW2IOS7llxcXCIsXFxuICAgICAgICAgICAgaWQ6IFxcXCJvdGhcXFwiLFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy5vdGgsXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLlhagg5bGAXFxcIixcXG4gICAgICAgICAgICBpZDogXFxcInFqdVxcXCIsXFxuICAgICAgICAgICAgdmFsdWU6IHNldHRpbmdzLnFqdSxcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuaPkiDku7ZcXFwiLFxcbiAgICAgICAgICAgIGlkOiBcXFwiY2pcXFwiLFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy5jaixcXG4gICAgICAgIH1cXG4gICAgXTtcXG5cXG4gICAgdmFyIGlucHV0Qm94ID0gXFxcIlxcXCI7XFxuICAgIGZvcihsZXQgaSA9IDA7IGkgPCBib3hEYXRhLmxlbmd0aDsgaSsrKXtcXG4gICAgICAgIGxldCBiID0gYm94RGF0YVtpXTtcXG4gICAgICAgIGlucHV0Qm94ICs9ICc8ZGl2IGNsYXNzPVxcXCJib3ggYmFyXFxcIj5cXFxcXFxuICAgICAgICAgICAgPGZvcm0+XFxcXFxcbiAgICAgICAgICAgICAgICA8bGFiZWwgdHlwZT1cXFwic3VibWl0XFxcIj4nICsgYi50aXRsZSArICc8L2xhYmVsPlxcXFxcXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XFxcInRleHRcXFwiIHBsYWNlaG9sZGVyPVxcXCLovpPlhaXop6PmnpDlkI3miJbogIVVUkwuLi4uLi5cXFwiIHZhbHVlPVxcXCInICsgYi52YWx1ZSArICdcXFwiIGlkPVxcXCInICsgYi5pZCArICdcXFwiPlxcXFxcXG4gICAgICAgICAgICA8L2Zvcm0+XFxcXFxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImxpZWJcXFwiPlxcXFxcXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD1cXFwiJyArIGIuaWQgKyAnU2VsZWN0XFxcIj7imLA8L2J1dHRvbj5cXFxcXFxuICAgICAgICAgICAgPC9kaXY+XFxcXFxcbiAgICAgICAgPC9kaXY+JztcXG4gICAgfVxcbiAgICBEaWQoXFxcImRpdjJcXFwiKS5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyZW5kJywgaW5wdXRCb3gpO1xcbiAgICBEaWQoXFxcImNqXFxcIikucGxhY2Vob2xkZXIgPSBcXFwi6L6T5YWl5o+S5Lu25Zyw5Z2ALi4uLi4uXFxcIjtcXG4gICAgRGlkKFxcXCJxanVcXFwiKS5wbGFjZWhvbGRlciA9IFxcXCLmraTpobnlu7rorq7nlZnnqbrmiJbogIXloavpu5jorqTkuKTkuKrlrZdcXFwiO1xcbiAgICBcXG4gICAgbmV3IFZ1ZSh7XFxuICAgICAgICBlbDogXFxcIi56ai1kaXZcXFwiLFxcbiAgICAgICAgZGF0YToge1xcbiAgICAgICAgICAgIGp4RGF0YTogbXlTZWxlY3QsXFxuICAgICAgICAgICAgY2pEYXRhOiBbXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvUGFyc2VfRG4uanNcXFwiLCBcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9kekhvdXNlL2pzL3NyY2F1dG8uanNcXFwiLCBcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy9QYXJzZS1WMl9Ebi5qc1xcXCJdXFxuICAgICAgICB9XFxuICAgIH0pO1xcblxcbiAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHtcXG4gICAgICAgIHZhciBsZW4gPSAkKCcuangtdWwnKS5jaGlsZHJlbignbGknKS5sZW5ndGg7XFxuICAgICAgICB2YXIgbGVuMiA9ICQoJy5jai11bCcpLmNoaWxkcmVuKCdsaScpLmxlbmd0aDtcXG4gICAgICAgICQoJy5saWViIGJ1dHRvbicpLmNsaWNrKGZ1bmN0aW9uKGUpIHtcXG4gICAgICAgICAgICBpZigkKCcubGllYiBidXR0b24nKS50ZXh0KCkuaW5jbHVkZXMoJ+KUgScpKXtcXG4gICAgICAgICAgICAgICAgJCgnLmxpZWIgYnV0dG9uJykuY3NzKCdiYWNrZ3JvdW5kJywgJycpO1xcbiAgICAgICAgICAgICAgICAkKCcubGllYiBidXR0b24nKS50ZXh0KCfimLAnKTtcXG4gICAgICAgICAgICB9ZWxzZXtcXG4gICAgICAgICAgICAgICAgJCh0aGlzKS50ZXh0KCfilIEnKTtcXG4gICAgICAgICAgICAgICAgJCh0aGlzKS5jc3MoJ2JhY2tncm91bmQnLCAncmVkJyk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICQoJ2xpJykuYXR0cignY2hlY2snLCAnZmFsc2UnKTtcXG4gICAgICAgICAgICB2YXIgaW5wdXRpZCA9IFxcXCIjXFxcIiArIHRoaXMuaWQuc3BsaXQoXFxcIlNlbGVjdFxcXCIpWzBdO1xcbiAgICAgICAgICAgIHZhciBhcnIgPSAkKGlucHV0aWQpLnZhbCgpLnNwbGl0KCcsJyk7XFxuICAgICAgICAgICAgYXJyID0gYXJyWzBdID09ICcnID8gW10gOiBhcnI7XFxuICAgICAgICAgICAgJCgnLm15Q2hvaWNlJykudGV4dChhcnIpO1xcbiAgICAgICAgICAgIGlmIChpbnB1dGlkICE9PSAnI2NqJyAmJiAkKCcuY2otdWwnKS5jc3MoJ2Rpc3BsYXknKT09J25vbmUnKSB7XFxuICAgICAgICAgICAgICAgICQoJy5qeC11bCcpLnNsaWRlVG9nZ2xlKDMwMCk7XFxuICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbGVuOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBqeExpc3QgPSAkKCcuangtdWwgbGk6bm90KC5teUNob2ljZSknKS5lcShpKTtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChhcnIuaW5jbHVkZXMoanhMaXN0LnRleHQoKSkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBqeExpc3QuYXR0cignY2hlY2snLCAndHJ1ZScpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAganhMaXN0LnVuYmluZCgnY2xpY2snKS5jbGljayhmdW5jdGlvbihlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5hdHRyKCdjaGVjaycpICE9PSBcXFwidHJ1ZVxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdjaGVjaycsICd0cnVlJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyci51bnNoaWZ0KCQodGhpcykudGV4dCgpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChpbnB1dGlkKS52YWwoYXJyKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLm15Q2hvaWNlJykudGV4dChhcnIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignY2hlY2snLCAnZmFsc2UnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSA9IDA7IGEgPCBhcnIubGVuZ3RoOyBhKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcnJbYV0gPT0gJCh0aGlzKS50ZXh0KCkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnIuc3BsaWNlKGEsIDEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoaW5wdXRpZCkudmFsKGFycik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLm15Q2hvaWNlJykudGV4dChhcnIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0gZWxzZSBpZigkKCcuangtdWwnKS5jc3MoJ2Rpc3BsYXknKT09J25vbmUnKXtcXG4gICAgICAgICAgICAgICAgJCgnLmNqLXVsJykuc2xpZGVUb2dnbGUoMjAwKTtcXG4gICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW4yOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjakxpc3QgPSAkKCcuY2otdWwgbGknKS5lcShpKTtcXG4gICAgICAgICAgICAgICAgICAgIGlmICgkKGlucHV0aWQpLnZhbCgpID09IGNqTGlzdC50ZXh0KCkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjakxpc3QuYXR0cignY2hlY2snLCAndHJ1ZScpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgY2pMaXN0LnVuYmluZCgnY2xpY2snKS5jbGljayhmdW5jdGlvbigpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGlucHV0aWQpLnZhbCgkKHRoaXMpLnRleHQoKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignY2hlY2snLCAndHJ1ZScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnNpYmxpbmdzKCkuYXR0cignY2hlY2snLCAnZmFsc2UnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgICAgICAkKGRvY3VtZW50KS5ub3QoJCgnLnhsTGlzdCcpKS5jbGljayhmdW5jdGlvbihlKSB7XFxuICAgICAgICAgICAgJCgnLmp4LXVsJykuc2xpZGVVcCgpO1xcbiAgICAgICAgICAgICQoJy5jai11bCcpLnNsaWRlVXAoKTtcXG4gICAgICAgICAgICAkKCcubGllYiBidXR0b24nKS50ZXh0KCfimLAnKTtcXG4gICAgICAgICAgICAkKCcubGllYiBidXR0b24nKS5jc3MoJ2JhY2tncm91bmQnLCAnJyk7XFxuICAgICAgICB9KTtcXG4gICAgICAgICQoZnVuY3Rpb24oKXtcXG4gICAgICAgICAgICAkKCdsYWJlbCcpLm1vdXNldXAoZnVuY3Rpb24oKXtcXG4gICAgICAgICAgICAgICAgbGV0IGlucHV0aWQgPSAnIycgKyAkKHRoaXMpLm5leHQoKS5hdHRyKCdpZCcpO1xcbiAgICAgICAgICAgICAgICBvbmVPckRibChpbnB1dGlkKTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB2YXIgY291bnQgPSAwO1xcbiAgICAgICAgICAgIHZhciB0aW1lcjtcXG4gICAgICAgICAgICBmdW5jdGlvbiBvbmVPckRibChpbnB1dGlkKXtcXG4gICAgICAgICAgICAgICAgY291bnQrKztcXG4gICAgICAgICAgICAgICAgdGltZXIgPSB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe1xcbiAgICAgICAgICAgICAgICAgICAgaWYoY291bnQgPT0gMSl7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFyciA9ICQoaW5wdXRpZCkudmFsKCkuc3BsaXQoJywnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnIuc3BsaWNlKDAsIDEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICQoaW5wdXRpZCkudmFsKGFycik7XFxuICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcXG4gICAgICAgICAgICAgICAgICAgICAgICAkKGlucHV0aWQpLnZhbCgnJyk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVyKTtcXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ID0gMDtcXG4gICAgICAgICAgICAgICAgfSwyNjApXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxuICAgIFxcbiAgICBmdW5jdGlvbiBUb2FzdChtc2csZHVyYXRpb24peyAgXFxuICAgICAgICBkdXJhdGlvbj1pc05hTihkdXJhdGlvbik/MjAwMDpkdXJhdGlvbjsgIFxcbiAgICAgICAgdmFyIG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgIFxcbiAgICAgICAgbS5pbm5lckhUTUwgPSBtc2c7ICBcXG4gICAgICAgIG0uc3R5bGUuY3NzVGV4dD1cXFwid2lkdGg6NDUlOyBtaW4td2lkdGg6MTUwcHg7IGJhY2tncm91bmQ6IzMxMTsgb3BhY2l0eTowLjY7IGhlaWdodDphdXRvO21pbi1oZWlnaHQ6IDQ1cHg7IGNvbG9yOiNmZmY7IGxpbmUtaGVpZ2h0OjQ1cHg7IHRleHQtYWxpZ246Y2VudGVyOyBib3JkZXItcmFkaXVzOjEwcHg7IHBvc2l0aW9uOmZpeGVkOyB0b3A6NjAlOyBsZWZ0OjI2JTsgei1pbmRleDo5OTk5OTk7XFxcIjsgIFxcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChtKTsgIFxcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgIFxcbiAgICAgICAgICAgIHZhciBkID0gMC41OyAgXFxuICAgICAgICAgICAgbS5zdHlsZS53ZWJraXRUcmFuc2l0aW9uID0gJy13ZWJraXQtdHJhbnNmb3JtICcgKyBkICsgJ3MgZWFzZS1pbiwgb3BhY2l0eSAnICsgZCArICdzIGVhc2UtaW4nOyAgXFxuICAgICAgICAgICAgbS5zdHlsZS5vcGFjaXR5ID0gJzAnOyAgXFxuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChtKSB9LCBkICogMTAwMCk7ICBcXG4gICAgICAgIH0sIGR1cmF0aW9uKTsgIFxcbiAgICB9ICBcXG5cXG4gICAgZnVuY3Rpb24gb3BlbkRuUGFnZSgpe1xcbiAgICAgICAgZmJhLm9wZW4oSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgIHJ1bGU6IFxcXCI9Xl9ePVxcXCIsXFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLnrqHnkIbop6PmnpBcXFwiLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHkjbm9IaXN0b3J5I1xcXCIsXFxuICAgICAgICAgICAgZmluZFJ1bGU6IFxcXCJqczp0aGlzLmQ9W107ZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9jYWNoZS9maWxlTGlua3PhtLDigb8udHh0JykpO3JlcXVpcmUoZkxpbmtzLmp4SXRVcmwpO2p4SXRlbS5qeExpc3QoKTtzZXRSZXN1bHQoZClcXFwiXFxuICAgICAgICB9KSk7XFxuICAgIH1cXG4gICAgZnVuY3Rpb24gY2FuY2VsKCl7XFxuICAgICAgICBpZihteVNldD09Jycpe1xcbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAud3JpdGVGaWxlKG9sZFJvdXRlLCBKU09OLnN0cmluZ2lmeShzZXR0aW5ncywgbnVsbCwgNCkpO1xcbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAucmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICB9ZWxzZXtcXG4gICAgICAgICAgICBmeV9icmlkZ2VfYXBwLmJhY2soZmFsc2UpO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIGZ1bmN0aW9uIGNsaWNrbWUobXNnLGR1cmF0aW9uLHRpdGxlKXtcXG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBib3hEYXRhLmxlbmd0aDsgaSsrKXtcXG4gICAgICAgICAgICBsZXQgaWQgPSBib3hEYXRhW2ldLmlkO1xcbiAgICAgICAgICAgIHNldHRpbmdzW2lkXSA9IERpZChpZCkudmFsdWU7XFxuICAgICAgICB9XFxuICAgICAgICBpZihzZXR0aW5ncy5xanUgPT0gJycpe1xcbiAgICAgICAgICAgIHNldHRpbmdzLnFqdSA9ICfpu5jorqQnO1xcbiAgICAgICAgfVxcbiAgICAgICAgdHJ5e1xcbiAgICAgICAgICAgIGV2YWwoJ3ZhciBiY0NvbmZpZz0nICsgZnlfYnJpZGdlX2FwcC5mZXRjaChuZXdSb3V0ZSkpO1xcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYmNDb25maWcuc2V0dGluZ3MsIHNldHRpbmdzKTtcXG4gICAgICAgICAgICBmeV9icmlkZ2VfYXBwLndyaXRlRmlsZShuZXdSb3V0ZSwgJCQkLnN0cmluZ2lmeShiY0NvbmZpZykpO1xcbiAgICAgICAgfWNhdGNoKGUpe31cXG4gICAgICAgIGZ5X2JyaWRnZV9hcHAud3JpdGVGaWxlKG9sZFJvdXRlLCAkJCQuc3RyaW5naWZ5KHNldHRpbmdzKSk7XFxuICAgICAgICAgICAgXFxuICAgICAgICBUb2FzdChtc2csZHVyYXRpb24pO1xcbiAgICAgICAgaWYodGl0bGU9PVxcXCLlhbNcXFwiKXtcXG4gICAgICAgICAgICBpZihzZlJlZnJlc2ggIT0gRGlkKFxcXCJjalxcXCIpLnZhbHVlKXtcXG4gICAgICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5iYWNrKCk7XFxuICAgICAgICAgICAgfWVsc2V7XFxuICAgICAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAuYmFjayhmYWxzZSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfWVsc2V7XFxuICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5yZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbjwvc2NyaXB0PiAgIFxcbjwvaHRtbD5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIlBhcnNlX0RuLmpzXCIsXCJwYXRoXCI6XCJQYXJzZV9Ebi5qc1wiLFwicnVsZVwiOlwiLy89PT09PT09PT09PT3lhY3ll4XosIPnlKg9PT09PT09PT09PT1cXG4vL++8je+8je+8jT1eX149XFxuLy92YXIgdmVyc2lvbiA9IFxcXCIzLjUuM1xcXCI7XFxuXFxudmFyIHBhcnNlUm91dGUgPSAnaGlrZXI6Ly9maWxlcy9ydWxlcy9EdWFuTmlhbi9NeVBhcnNlLmpzb24nO1xcbnZhciBNeVBhcnNlUyA9IHt9O1xcbnZhciBteVNldCA9IHt9O1xcbmlmIChmaWxlRXhpc3QocGFyc2VSb3V0ZSkpIHtcXG4gICAgZXZhbCgndmFyIHBhcnNlRmlsZSA9JyArIGZldGNoKHBhcnNlUm91dGUpKTtcXG4gICAgTXlQYXJzZVMgPSBwYXJzZUZpbGUuY29kZXM7XFxuICAgIG15U2V0ID0gcGFyc2VGaWxlLnNldHRpbmdzO1xcbn1cXG52YXIgcGFyc2VUaXRsZSA9IFtcXG4gICAgXFxcIvCfpZpcXFwiLFxcbiAgICBcXFwieXVuMTcxN1xcXCIsXFxuICAgIFxcXCJQYW5HdVxcXCIsXFxuICAgIFxcXCJGdVhpbmdcXFwiLFxcbiAgICBcXFwiaHR0cHM6Ly9qeHguc215czguY24vaW5kZXgucGhwP3VybD1cXFwiLFxcbiAgICBcXFwiaHR0cHM6Ly9va2p4LmNjLz91cmw9XFxcIixcXG4gICAgXFxcImh0dHBzOi8vangubTN1OC50di9qaWV4aS8/dXJsPVxcXCIsXFxuICAgIFxcXCJodHRwczovL3NiLjVnc2VvLm5ldC8/dXJsPVxcXCJcXG5dO1xcblxcbi8v77yN77yN77yNPV5fXj1cXG5cXG4vL+aOpeWPo+iuvue9ri5cXG5cXG52YXIgc2V0VXJsID0gXFxcImhpa2VyOi8vZW1wdHkjbm9SZWNvcmRIaXN0b3J5I0BydWxlPWpzOnRoaXMuZD1bXTtyZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7Um91dGUuc2V0UGFyc2UoKTtzZXRSZXN1bHQoZCk7XFxcIjtcXG52YXIgc2V0X3N3aXRjaCA9IHNldFVybDtcXG52YXIgbGF6eSA9IGByZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7YXl0bVBhcnNlKGlucHV0KWA7XFxuXFxuLy92YXIgcGFyd2l4ID0gYHZhciB5dXJsPSdodHRwczovL2RhaWxpLm1heWl4aW9uZ2RpLmNuLz91cmw9JztSZWZlcmVyJzogJ2h0dHBzOi8vd3d3Lm1heWl4aW9uZ2RpLmNuL3lzP2lkPSc7J2h0dHBzOi8vZGFpbGkubWF5aXhpb25nZGkuY24vYXBpLnBocCcsICdSZWZlcmVyJzonaHR0cHM6Ly9kYWlsaS5tYXlpeGlvbmdkaS5jbic7XFxuLy8g5YWo5rCRaHR0cHM6Ly9wY3ZpZGVvYWxpeXVuLnRpYW5zaGFuZ3JlbmppYW4ubWd0di5jb20uODh3dW1hLmNvbS8/dXJsPVxcblxcbi8v77yN77yN77yN5aSHIOeUqO+8je+8je+8jVxcbi8qXFxuICog5b2x6KeG5bel5Zy677yaIGh0dHBzOi8veXNnYy5jYy9cXG4gKiDmsZ/muZY6IDU1NeeUteW9sSBodHRwczovL3d3dy41NTVkeTIuY29tL3Bob25lLmh0bWwg772cIDE355yLIGh0dHA6Ly8xN2thbnl5LmNuLyBodHRwOi8vamhqaWV4aS4zMHZyLmNuLz91cmw9IO+9nCBodHRwOi8vYXBpLm1haXppbWFsbC5jb20vaW5kZXgucGhwP3VybD1cXG4gKiDmsZ/muZY6IGh0dHA6Ly93d3cudGlhbnNodXl1bi5uZXQvaW5kZXgucGhwL3ZvZC9wbGF5L2lkLzQ0ODM3Ny9zaWQvMS9uaWQvMS5odG1sXFxuICog5rGf5rmWMjogaHR0cDovLzk4aHlrLmNuL2luZGV4LnBocC92b2QvcGxheS9pZC83Mjg0MS9zaWQvMS9uaWQvMS5odG1sXFxuICog5Lq65Lq66L+3OiBodHRwczovL3ZpcC5zdXNvdS50di9wbGF5ZXIvP3VybD0g772cIGh0dHBzOi8vd3d3Lm1vbWRtLmNjL1xcbiAqIFxcbiAqIHd1aWdlbjogaHR0cHM6Ly93d3cuNWlnZW4uY29tL2RtcGxheWVyL3BsYXllci8/dXJsPVxcbiAqIOW5sumlrSjkurrkurrov7cpOiBodHRwczovL2p4Lnp1aS5jbS8/dXJsPVxcbiAqIGh0dHBzOi8vMi42Nm1vdmllLnRvcC9wbGF5ZXIvP3VybD1cXG4gKiBcXG4gKi9cXG5cXG5cXG52YXIgdG9vbHMgPSB7XFxuICAgIE1ENTogZnVuY3Rpb24oZGF0YSkge1xcbiAgICAgICAgZXZhbChnZXRDcnlwdG9KUygpKTtcXG4gICAgICAgIHJldHVybiBDcnlwdG9KUy5NRDUoZGF0YSkudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLkhleCk7XFxuICAgIH0sXFxuICAgIEFFUzogZnVuY3Rpb24odGV4dCwga2V5LCBpdiwgaXNFbmNyeXB0KSB7XFxuICAgICAgICBldmFsKGdldENyeXB0b0pTKCkpO1xcbiAgICAgICAgdmFyIGtleSA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKGtleSk7XFxuICAgICAgICB2YXIgaXYgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShpdik7XFxuICAgICAgICBpZiAoaXNFbmNyeXB0KSB7XFxuICAgICAgICAgICAgcmV0dXJuIENyeXB0b0pTLkFFUy5lbmNyeXB0KHRleHQsIGtleSwge1xcbiAgICAgICAgICAgICAgICBpdjogaXYsXFxuICAgICAgICAgICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDLFxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczdcXG4gICAgICAgICAgICB9KS50b1N0cmluZygpO1xcbiAgICAgICAgfTtcXG4gICAgICAgIHJldHVybiBDcnlwdG9KUy5BRVMuZGVjcnlwdCh0ZXh0LCBrZXksIHtcXG4gICAgICAgICAgICBpdjogaXYsXFxuICAgICAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3XFxuICAgICAgICB9KS50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XFxuICAgIH0sXFxuICAgIC8vYXNjaWlcXG4gICAgbmV4dENoYXJhY3RlcjogZnVuY3Rpb24oYXNjaWlWYWx1ZSwgaykge1xcbiAgICAgICAgdmFyIHMgPSBhc2NpaVZhbHVlO1xcbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocyArIGspO1xcbiAgICB9LFxcbiAgICAvL+WHr+aSklxcbiAgICBjYWVzYXJDaXBoZXI6IGZ1bmN0aW9uKHN0cmluZ1ZhbHVlLCBrKSB7XFxuICAgICAgICB2YXIgbmV3U3RyaW5nID0gXFxcIlxcXCI7XFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0cmluZ1ZhbHVlLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgbmV3U3RyaW5nICs9IHRoaXMubmV4dENoYXJhY3RlcihzdHJpbmdWYWx1ZVtpXS5jaGFyQ29kZUF0KCksIGspO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIG5ld1N0cmluZztcXG4gICAgfSxcXG4gICAgaGFuZGxlVXJsOiBmdW5jdGlvbih1cmwsIHZpcFVybCwgbmFtZSkge1xcbiAgICAgICAgaWYodXJsID09IFxcXCJcXFwiIHx8IHVybCA9PSB2aXBVcmwpIHtcXG4gICAgICAgICAgICBsb2cobmFtZSArIFxcXCLop6PmnpDlpLHotKVcXFwiKTtcXG4gICAgICAgICAgICByZXR1cm4gdmlwVXJsO1xcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKHVybFswXSA9PSAnLycpIHtcXG4gICAgICAgICAgICB1cmwgPSAnaHR0cHM6JyArIHVybDtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICh1cmwuaW5kZXhPZignPWh0dHAnKSAhPSAtMSkge1xcbiAgICAgICAgICAgIHVybCA9IHVybC5pbmRleE9mKCcmdXJsPScpID4gLTEgPyB1cmwgOiAnaHR0cCcgKyBkZWNvZGVVUklDb21wb25lbnQodXJsLnNwbGl0KCc9aHR0cCcpWzFdKTtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICh2aXBVcmwuaW5kZXhPZignbWd0di5jb20nKSAhPSAtMSAmJiB1cmwuaW5kZXhPZignVXNlci1BZ2VudCcpID09IC0xKSB7XFxuICAgICAgICAgICAgdXJsID0gdXJsICsgJzt7VXNlci1BZ2VudEBhcHB9JztcXG4gICAgICAgIH0gZWxzZSBpZiAodXJsLmluZGV4T2YoJy5mbHYnKSAhPSAtMSkge1xcbiAgICAgICAgICAgIHVybCA9IHVybCArICc7e1VzZXItQWdlbnRAYXBwJiZSZWZlcmVyQCcgKyB2aXBVcmwgKyAnfSc7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gdXJsICsgJyNpc1ZpZGVvPXRydWUjJztcXG4gICAgfVxcbn07XFxuXFxudmFyIFBhcnNlUyA9IHt9O1xcbnZhciBvcmlnaW5hbFBhcnNlUyA9IHtcXG4gICAgQ2l0eUlQOiAnaHR0cDovL3B2LnNvaHUuY29tL2NpdHlqc29uJyxcXG4gICAgcGNVQTogJ1VzZXItQWdlbnRATW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMFxcXFzvvJtcXFxc77ybIFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzYnLFxcbiAgICBkZWZhdWx0UGFyc2U6IGZ1bmN0aW9uKHVybCkge1xcbiAgICAgICAgc2hvd0xvYWRpbmcoXFxcIuato+WcqOiwg+eUqOe9kemhteino+aekC4uLlxcXCIpO1xcbiAgICAgICAgcmV0dXJuICQodXJsKS53ZWJMYXp5KCgpID0+IHtcXG4gICAgICAgICAgICB2YXIgVXJscyA9IF9nZXRVcmxzKCk7XFxuICAgICAgICAgICAgdmFyIFJlZzEgPSAvXFxcXC5tcDR8XFxcXC5tM3U4XFxcXD98Lm0zdTgkfFxcXFwuZmx2fFxcXFwuYXZpfFxcXFwucm12Yi87XFxuICAgICAgICAgICAgdmFyIFJlZzIgPSAvcGxheW0zdTh8LmNzcyR8LmpzJHwuaWNvJHxjbnp6XFxcXC4vO1xcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgVXJscy5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICBsZXQgaXNVcmwgPSBVcmxzW2ldO1xcbiAgICAgICAgICAgICAgICBpZiAoUmVnMS50ZXN0KGlzVXJsKSAmJiAhUmVnMi50ZXN0KGlzVXJsKSkge1xcbiAgICAgICAgICAgICAgICAgICAgZmJhLmhpZGVMb2FkaW5nKCk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNVcmwgKyBcXFwiI2lzVmlkZW89dHJ1ZSNcXFwiO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgIH0sXFxuICAgIG1hb3NzOiBmdW5jdGlvbihqeHVybCwgcmVmLCBrZXkpIHtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgdmFyIGdldFZpZGVvSW5mbyA9IGZ1bmN0aW9uKHRleHQpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvb2xzLkFFUyh0ZXh0LCBrZXksIGl2KTtcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIGlmIChyZWYpIHtcXG4gICAgICAgICAgICAgICAgdmFyIGh0bWwgPSByZXF1ZXN0KGp4dXJsLCB7XFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1JlZmVyZXInOiByZWZcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdmFyIGh0bWwgPSByZXF1ZXN0KGp4dXJsKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKGh0bWwuaW5kZXhPZignJmJ0d2FmPScpICE9IC0xKSB7XFxuICAgICAgICAgICAgICAgIGh0bWwgPSByZXF1ZXN0KGp4dXJsICsgJyZidHdhZicgKyBodG1sLm1hdGNoKC8mYnR3YWYoLio/KVxcXCIvKVsxXSwge1xcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICdSZWZlcmVyJzogcmVmXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHZhciBpdiA9IGh0bWwuc3BsaXQoJ190b2tlbiA9IFxcXCInKVsxXS5zcGxpdCgnXFxcIicpWzBdO1xcbiAgICAgICAgICAgIGV2YWwoaHRtbC5tYXRjaCgvdmFyIGNvbmZpZyA9IHtbXFxcXHNcXFxcU10qP30vKVswXSArICcnKTtcXG4gICAgICAgICAgICBpZiAoY29uZmlnLnVybC5zbGljZSgwLCA0KSAhPSAnaHR0cCcpIHtcXG4gICAgICAgICAgICAgICAgY29uZmlnLnVybCA9IGRlY29kZVVSSUNvbXBvbmVudCh0b29scy5BRVMoY29uZmlnLnVybCwgXFxcImR2eVlSUWxuUFJDTWRRU2VcXFwiLCBpdikpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gY29uZmlnLnVybDtcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICByZXR1cm4gJyc7XFxuICAgICAgICB9XFxuICAgIH0sXFxuICAgIExMUTogZnVuY3Rpb24oanh1cmwpIHtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgdmFyIGFwaSA9IGp4dXJsLnNwbGl0KCc/dXJsPScpWzBdICsgXFxcImFwaS5waHBcXFwiO1xcbiAgICAgICAgICAgIHZhciBiNjRpZCA9IGJhc2U2NEVuY29kZShqeHVybC5zcGxpdCgndXJsPScpWzFdKTtcXG4gICAgICAgICAgICB2YXIgcGFyc2VpZCA9IHRvb2xzLmNhZXNhckNpcGhlcihiNjRpZCwgLTEpO1xcbiAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShyZXF1ZXN0KGFwaSwge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAnUmVmZXJlcic6IGp4dXJsXFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxcbiAgICAgICAgICAgICAgICBib2R5OiAndXJsPScgKyBwYXJzZWlkXFxuICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgIHVybCA9IChqc29uLmNvZGUgPT0gMjAwID8gYmFzZTY0RGVjb2RlKHRvb2xzLmNhZXNhckNpcGhlcihqc29uLnVybCwgLTEpKSA6ICcnKTtcXG4gICAgICAgICAgICByZXR1cm4gdXJsO1xcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgIHJldHVybiAnJztcXG4gICAgICAgIH1cXG4gICAgfSxcXG4gICAgUGFuR3U6IGZ1bmN0aW9uKHZpcFVybCwgZGF0YSkge1xcbiAgICAgICAgLyp2YXIgcmVmID0gJ2h0dHBzOi8vd3d3LnBhbmd1amlleGkuY29tLyc7XFxuICAgICAgICB2YXIgcGFyc2UgPSAnaHR0cHM6Ly9wYW5ndWFwaS5udHJ5amQubmV0L2ppZXhpLz91cmw9JyArIHZpcFVybDtcXG4gICAgICAgIHZhciBhcGkgPSAnaHR0cHM6Ly9wYW5ndWFwaS5udHJ5amQubmV0L2ppZXhpL2FwaS5waHAnO1xcbiAgICAgICAgKi9cXG4gICAgICAgIC8vdmFyIHJlZiA9ICdodHRwczovL3hteXN0di5jb20vJztcXG4gICAgICAgIC8vdmFyIHBhcnNlID0gJ2h0dHBzOi8vd3d3Ljk5a3B3LmNvbS9wYW5ndS9pbmRleC5waHA/dXJsPScgKyB0YWlsVXJsO1xcbiAgICAgICAgLy92YXIgYXBpID0gJ2h0dHBzOi8vd3d3Ljk5a3B3LmNvbS9wYW5ndS9hcGkucGhwJztcXG4gICAgICAgIHZhciBwYXJzZSA9IFxcXCJodHRwczovL3d3dy5wYW5ndWppZXhpLmNvbS9wYW5ndS8/dXJsPVxcXCIgKyB2aXBVcmw7XFxuICAgICAgICB2YXIgYXBpID0gXFxcImh0dHBzOi8vcGFuZ3VhcGkubnRyeWpkLm5ldC9wYW5ndTIwMjEvYXBpLnBocFxcXCI7XFxuICAgICAgICBpZiAoZGF0YSkge1xcbiAgICAgICAgICAgIHJlZiA9IGRhdGFbMF07XFxuICAgICAgICAgICAgcGFyc2UgPSBkYXRhWzFdO1xcbiAgICAgICAgICAgIGFwaSA9IGRhdGFbMl07XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgVGltZSA9IChNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCkgKiAxKS50b1N0cmluZygpO1xcbiAgICAgICAgdmFyIGpzb24gPSByZXF1ZXN0KGFwaSwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBwYXJzZVxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgYm9keTogXFxcInVybD1cXFwiICsgdmlwVXJsICsgXFxcIiZyZWZlcmVyPVxcXCIgKyBiYXNlNjRFbmNvZGUocGFyc2UpICsgXFxcIiZyZWY9MSZ0aW1lPVxcXCIgKyBUaW1lICsgXFxcIiZ0eXBlPSZvdGhlcj1cXFwiICsgYmFzZTY0RW5jb2RlKHZpcFVybCkgKyBcXFwiJmlvcz0wXFxcIixcXG4gICAgICAgICAgICBtZXRob2Q6IFxcXCJQT1NUXFxcIlxcbiAgICAgICAgfSk7XFxuICAgICAgICB2YXIgdXJsID0ganNvblswXSA9PSBcXFwie1xcXCIgPyBKU09OLnBhcnNlKGpzb24pLnVybCA6IFxcXCJcXFwiO1xcbiAgICAgICAgcmV0dXJuIHVybDtcXG4gICAgfSxcXG4gICAgeXVuMTcxNzogZnVuY3Rpb24odmlwVXJsKSB7XFxuICAgICAgICB2YXIgaXN5ayA9IHZpcFVybC5pbmRleE9mKCd5b3VrdScpO1xcbiAgICAgICAgdmFyIHJlZiA9IFxcXCJodHRwczovL3d3dy4xNzE3eXVuLmNvbS9qeC90eS5waHA/dXJsPVxcXCIgKyB2aXBVcmw7XFxuICAgICAgICB2YXIgcGFyc2UgPSBcXFwiaHR0cHM6Ly8xNzE3eXVuLmNvbS56aDE4OC5uZXQvMDgyOC8/dXJsPVxcXCIgKyB2aXBVcmw7XFxuICAgICAgICB2YXIgYXBpID0gXFxcImh0dHBzOi8vMTcxN3l1bi5jb20uemgxODgubmV0LzEwMDQvLi5pbmRleC4ucGhwXFxcIjtcXG4gICAgICAgIHJldHVybiBpc3lrID09IC0xID8gdGhpcy5QYW5HdSh2aXBVcmwsIFtyZWYsIHBhcnNlLCBhcGldKSA6IHRoaXMuUGFuR3UodmlwVXJsLCBbcmVmICsgJyx2aXA6JywgcGFyc2UgKyAnLHZpcDonLCBhcGldKTtcXG4gICAgfSxcXG4gICAgRnVYaW5nOiBmdW5jdGlvbih2aXBVcmwpIHtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgLy9pZih2aXBVcmwuaW5kZXhPZigndi55b3VrdScpIT0tMSl7XFxuICAgICAgICAgICAgLy8gICAgdmlwVXJsID0gKEpTT04ucGFyc2UocmVxdWVzdCh2aXBVcmwsIHtyZWRpcmVjdDpmYWxzZSwgd2l0aEhlYWRlcnM6dHJ1ZX0pKS5oZWFkZXJzLmxvY2F0aW9uICsgJycpLnJlcGxhY2UoL1xcXFw/LiovLCcnKTtcXG4gICAgICAgICAgICAvL31cXG4gICAgICAgICAgICB2YXIgcmVmID0gJ2h0dHBzOi8vangueHVldHVpZ3VhbmcuY24vamlleGkvP3VybD0nICsgdmlwVXJsO1xcbiAgICAgICAgICAgIHZhciBwYXJzZSA9IHJlZjtcXG4gICAgICAgICAgICB2YXIgYXBpID0gJ2h0dHBzOi8vangueHVldHVpZ3VhbmcuY24vamlleGkvYXBpdV9meC5waHAnO1xcbiAgICAgICAgICAgIHJldHVybiB0aGlzLlBhbkd1KHZpcFVybCwgW3JlZiwgcGFyc2UsIGFwaV0pO1xcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgIHJldHVybiAnJztcXG4gICAgICAgIH1cXG4gICAgfSxcXG4gICAgXFxcIvCfpZpcXFwiOiBmdW5jdGlvbih2aXBVcmwpIHtcXG4gICAgICAgIGxldCDkvZzogIVf6KeG55WM55+l5ZCN5aSn5L2sO1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICB2YXIgcGxheSA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHA6Ly93d3cuenJ1aXJ5LmNvbS95dW4vYXBpLnBocFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgYm9keTogXFxcInVybD1cXFwiICsgaW5wdXQsXFxuICAgICAgICAgICAgICAgIG1ldGhvZDogXFxcIlBPU1RcXFwiXFxuICAgICAgICAgICAgfSkpLnVybDtcXG4gICAgICAgICAgICBpZiAocGxheS5zdGFydHNXaXRoKFxcXCIvXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJodHRwczpcXFwiICsgcGxheTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gcGxheTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJcXFwiO1xcbiAgICAgICAgfVxcbiAgICB9XFxufTtcXG5cXG52YXIgZnJvbXMgPSBbJ2R1b2R1b3p5JywgJ3J4JywgJ3JlbnJlbm1pJ107XFxuZm9yKGxldCBpIGluIGZyb21zKSB7XFxuICAgIGxldCBuYW1lID0gZnJvbXNbaV0gKyBcXFwiKOmAmueUqOWHveaVsClcXFwiO1xcbiAgICBQYXJzZVNbbmFtZV0gPSBmdW5jdGlvbihVcmwsIHJlZmVyZXIpe1xcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBhcnNlKHJlZmVyZXIpO1xcbiAgICB9O1xcbn1cXG5PYmplY3QuYXNzaWduKFBhcnNlUywgb3JpZ2luYWxQYXJzZVMsIE15UGFyc2VTKTtcXG4vL+imhueblumhuuW6j++8jOesrOS4ieS4quimhuebluesrOS6jOS4queEtuWQjuimhuebluesrOS4gOS4qlxcblxcblxcbmZ1bmN0aW9uIGF5dG1QYXJzZSh2aXBVcmwsIHBhcnNlTmFtZSkge1xcbiAgICB0aGlzLnJlcXVlc3QgPSBmdW5jdGlvbihwYXJhbTAsIHBhcmFtMSwgcGFyYW0yKSB7XFxuICAgICAgICBwYXJhbTEgPSBwYXJhbTEgPT0gdW5kZWZpbmVkID8ge30gOiBwYXJhbTE7XFxuICAgICAgICBpZihpc05hTihwYXJhbTEudGltZW91dCkpIHtcXG4gICAgICAgICAgICBwYXJhbTEudGltZW91dCA9IDMwMDA7XFxuICAgICAgICB9XFxuICAgICAgICBwYXJhbTIgPSBNWV9SVUxFO1xcbiAgICAgICAgdmFyIHJldFN0ciA9IG1ldGhvZF9yZXF1ZXN0Lmludm9rZShqYXZhQ29udGV4dCwgcGFyYW0wLCBwYXJhbTEsIHBhcmFtMik7XFxuICAgICAgICByZXR1cm4gcmV0U3RyID09IG51bGwgPyByZXRTdHIgOiByZXRTdHIgKyBcXFwiXFxcIjtcXG4gICAgfTtcXG4gICAgdGhpcy5mZXRjaCA9IGZ1bmN0aW9uKHBhcmFtMCwgcGFyYW0xLCBwYXJhbTIpIHtcXG4gICAgICAgIHBhcmFtMSA9IHBhcmFtMSA9PSB1bmRlZmluZWQgPyB7fSA6IHBhcmFtMTtcXG4gICAgICAgIHBhcmFtMS5oZWFkZXJzID0gcGFyYW0xLmhlYWRlcnMgPT0gdW5kZWZpbmVkID8ge30gOiBwYXJhbTEuaGVhZGVycztcXG4gICAgICAgIHBhcmFtMS5oZWFkZXJzWydVc2VyLUFnZW50J10gPSBQQ19VQTtcXG4gICAgICAgIGlmKGlzTmFOKHBhcmFtMS50aW1lb3V0KSkge1xcbiAgICAgICAgICAgIHBhcmFtMS50aW1lb3V0ID0gMzAwMDtcXG4gICAgICAgIH1cXG4gICAgICAgIHBhcmFtMiA9IE1ZX1JVTEU7XFxuICAgICAgICB2YXIgcmV0U3RyID0gbWV0aG9kX2ZldGNoLmludm9rZShqYXZhQ29udGV4dCwgcGFyYW0wLCBwYXJhbTEsIHBhcmFtMik7XFxuICAgICAgICByZXR1cm4gcmV0U3RyID09IG51bGwgPyByZXRTdHIgOiByZXRTdHIgKyBcXFwiXFxcIjtcXG4gICAgfTtcXG4gICAgdmFyIGhvc3QgPSB2aXBVcmwubWF0Y2goL1xcXFwuKC4qPylcXFxcLy8pO1xcbiAgICBob3N0ID0gaG9zdCA9PSBudWxsID8gbnVsbCA6IGhvc3RbMV07XFxuICAgIHZhciBub1VybCA9IFxcXCJ0b2FzdDovL+aOpeaUtuWIsOeahOmTvuaOpeS4ujogXFxcIjtcXG4gICAgc3dpdGNoIChteVNldC5xanUpIHtcXG4gICAgICAgIGNhc2UgXFxcIum7mOiupFxcXCI6XFxuICAgICAgICAgICAgc3dpdGNoIChob3N0KSB7XFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcInFxLmNvbVxcXCI6XFxuICAgICAgICAgICAgICAgICAgICBzdHIgPSBteVNldC50eDtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICBjYXNlIFxcXCJpcWl5aS5jb21cXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gbXlTZXQucXk7XFxuICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgY2FzZSBcXFwieW91a3UuY29tXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgIHN0ciA9IG15U2V0LnlrO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcIm1ndHYuY29tXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgIHN0ciA9IG15U2V0Lm1nO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcImJpbGliaWxpLmNvbVxcXCI6XFxuICAgICAgICAgICAgICAgICAgICBzdHIgPSBteVNldC5ibDtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gaG9zdCA9PSBudWxsID8gbm9VcmwgOiBteVNldC5vdGg7XFxuICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgIHN0ciA9IGhvc3QgPT0gbnVsbCA/IG5vVXJsIDogbXlTZXQucWp1O1xcbiAgICAgICAgICAgIGJyZWFrO1xcbiAgICB9XFxuICAgIGlmIChwYXJzZU5hbWUpIHtcXG4gICAgICAgIHN0ciA9IHBhcnNlTmFtZTtcXG4gICAgfVxcbiAgICBsZXQgbXlDaG9pY2UgPSBzdHIuc3BsaXQoJywnKTtcXG4gICAgbGV0IGxlbiA9IG15Q2hvaWNlLmxlbmd0aDtcXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xcbiAgICAgICAgbGV0IG5hbWUgPSBteUNob2ljZVtpXTtcXG4gICAgICAgIGlmICh0eXBlb2YgUGFyc2VTW25hbWVdID09ICdmdW5jdGlvbicpIHtcXG4gICAgICAgICAgICBsZXQgdXJsID0gUGFyc2VTW25hbWVdKHZpcFVybCk7XFxuICAgICAgICAgICAgbGV0IFJlZyA9IG5ldyBSZWdFeHAoXFxcIm0zdTh8bXA0fFxcXCIgKyB2aXBVcmwgKyBcXFwifGh0dHBcXFwiKTtcXG4gICAgICAgICAgICBpZiAoaSAhPSBsZW4gLSAxICYmICFSZWcudGVzdCh1cmwpKSB7XFxuICAgICAgICAgICAgICAgIGxvZyhuYW1lICsgJ+ino+aekOWksei0pScpO1xcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmV0dXJuIHRvb2xzLmhhbmRsZVVybCh1cmwsIHZpcFVybCwgbmFtZSk7XFxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBQYXJzZVNbbmFtZV0gPT0gJ3N0cmluZycpIHtcXG4gICAgICAgICAgICByZXR1cm4gUGFyc2VTLmRlZmF1bHRQYXJzZShQYXJzZVNbbmFtZV0gKyB2aXBVcmwsIHRvb2xzLmhhbmRsZVVybCwgbmFtZSk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHJldHVybiBuYW1lLnN1YnN0cigwLCA0KSA9PSBcXFwiaHR0cFxcXCIgfHwgaG9zdCA9PSBudWxsID8gbmFtZSArIHZpcFVybCA6IFxcXCJ0b2FzdDovL1xcXCIgKyBuYW1lICsgXFxcIiDkuI3mmK/nm7Tpk77kuZ/kuI3mmK/lhY3ll4VcXFwiO1xcbiAgICAgICAgfVxcbiAgICB9XFxufTtcXG5cXG52YXIgcGxheVBhcnNlID0ge1xcbiAgICBwbGF5ZXJTOiBmdW5jdGlvbihqdXJsKSB7XFxuICAgICAgICB2YXIgaHRtbCA9IHJlcXVlc3QoanVybCksXFxuICAgICAgICAgICAgVXJsID0gJycsXFxuICAgICAgICAgICAgZnJvbSA9ICcnO1xcbiAgICAgICAgdmFyIGNvZGUxID0gaHRtbC5tYXRjaCgvdmFyIHBsYXllcl9bXFxcXHNcXFxcU10qP30vKTtcXG4gICAgICAgIHZhciBkcFVybCA9IHBkZmgoaHRtbCwgXFxcImlmcmFtZSYmZGF0YS1wbGF5XFxcIik7XFxuICAgICAgICBpZiAoY29kZTEgIT0gbnVsbCkge1xcbiAgICAgICAgICAgIGV2YWwoY29kZTFbMF0ucmVwbGFjZSgvcGxheWVyXy4qPz17LywgJ3BkYXRhPXsnKSk7XFxuICAgICAgICAgICAgVXJsID0gcGRhdGEudXJsO1xcbiAgICAgICAgICAgIGZyb20gPSBwZGF0YS5mcm9tO1xcbiAgICAgICAgfSBlbHNlIGlmIChkcFVybCAhPSAnJykge1xcbiAgICAgICAgICAgIFVybCA9IGRwVXJsLnN0YXJ0c1dpdGgoXFxcImh0dHBcXFwiKSA/IGRkcFVybCA6IGRwVXJsLnNsaWNlKDMpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBjb2RlMiA9IGh0bWwubWF0Y2goL3ZhciBub3dbXFxcXHNcXFxcU10qP3ZhciBwbltcXFxcc1xcXFxTXSo/Oy8pO1xcbiAgICAgICAgICAgIGlmIChjb2RlMiAhPSBudWxsKSB7XFxuICAgICAgICAgICAgICAgIGV2YWwoY29kZTJbMF0pO1xcbiAgICAgICAgICAgICAgICBVcmwgPSBub3c7XFxuICAgICAgICAgICAgICAgIGZyb20gPSBwbjtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBpZiAoVXJsLnN1YnN0cigwLCA4KS5tYXRjaCgvSlQuLkpULi4vKSB8fCBVcmwuc3RhcnRzV2l0aChcXFwiYUhSMFxcXCIpKSB7XFxuICAgICAgICAgICAgVXJsID0gYmFzZTY0RGVjb2RlKFVybCk7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAoVXJsLnN1YnN0cigwLCA4KS5tYXRjaCgvJS4uJS4uLykpIHtcXG4gICAgICAgICAgICBVcmwgPSB1bmVzY2FwZShVcmwpO1xcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKGZyb21zLmluY2x1ZGVzKGZyb20pKSB7XFxuICAgICAgICAgICAgdmFyIG5hbWUgPSBmcm9tICsgJyjpgJrnlKjlh73mlbApJztcXG4gICAgICAgICAgICByZXR1cm4gUGFyc2VTW25hbWVdKFVybCwganVybCk7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAoL2h0bWx8YmlsaWJpbGkvLnRlc3QoVXJsKSkge1xcbiAgICAgICAgICAgIHJldHVybiBheXRtUGFyc2UoVXJsKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcmV0dXJuIFVybC5zdGFydHNXaXRoKCdodHRwJykgPyBVcmwgKyAnI2lzVmlkZW89dHJ1ZSMnIDogUGFyc2VTLmRlZmF1bHRQYXJzZShqdXJsKTtcXG4gICAgICAgIH1cXG4gICAgfSxcXG4gICAgcGxheWVyX3h4OiBmdW5jdGlvbihqdXJsKSB7XFxuICAgICAgICByZXR1cm4gJChqdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgZXZhbChmZXRjaChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL2ZpbGVzL2NhY2hlL015UGFyc2VTZXQuanNvbicpKS5jaikpO1xcbiAgICAgICAgICAgIHJldHVybiBwbGF5UGFyc2UucGxheWVyUyhpbnB1dCk7XFxuICAgICAgICB9KSBcXG4gICAgfVxcbn07XFxuXFxuZnVuY3Rpb24gc2V0UGFyc2UoKSB7XFxuICAgIHRoaXMuZCA9IFtdO1xcbiAgICByZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7XFxuICAgIFJvdXRlLnNldFBhcnNlKCk7XFxuICAgIHNldFJlc3VsdChkKTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLosIPnlKjot6/nlLFcIixcInBhdGhcIjpcIlJvdXRlXCIsXCJydWxlXCI6XCJqczpcXG5yZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7XFxuc3dpdGNoIChnZXRQYXJhbShcXFwidHlwZVxcXCIpKSB7XFxuICAgIGNhc2UgXFxcIuiuvue9rlxcXCI6XFxuICAgIHRoaXMuZCA9IFtdO1xcbiAgICAgICAgUm91dGUuc2V0UGFyc2UoKTtcXG4gICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgIGJyZWFrO1xcbiAgICBjYXNlIFxcXCLnvJbovpFcXFwiOlxcbiAgICB0aGlzLmQgPSBbXTtcXG4gICByZXF1aXJlKGZMaW5rcy5qeEl0VXJsKTtcXG4gICBqeEl0ZW0uanhMaXN0KCk7XFxuICAgc2V0UmVzdWx0KGQpO1xcbiAgICAgICAgYnJlYWs7XFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgJC5leHBvcnRzID0gUm91dGU7XFxuICAgICAgICBicmVhaztcXG59XFxuXCJ9XSxcInBhcmFtc1wiOlwie1xcXCJuZXdXaW5kb3dcXFwiOnRydWUsXFxcIndpbmRvd0lkXFxcIjpcXFwiaG9tZS5kdWFucGx1aW5cXFwifVwiLFwic2F2ZWRcIjpmYWxzZSxcInRpdGxlXCI6XCJNeUZpZWxk4bSw4oG/XCIsXCJ2ZXJzaW9uXCI6MCxcInVybFwiOlwiaGlrZXI6Ly9wYWdlL1JvdXRlP3J1bGU9TXlGaWVsZOG0sOKBvyZ0eXBlPeiuvue9riNub0hpc3RvcnkjXCIsXCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwiZmluZF9ydWxlXCI6XCJqczpcXG5yZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7XFxuc3dpdGNoIChnZXRQYXJhbShcXFwidHlwZVxcXCIpKSB7XFxuICAgIGNhc2UgXFxcIuiuvue9rlxcXCI6XFxuICAgIHRoaXMuZCA9IFtdO1xcbiAgICAgICAgUm91dGUuc2V0UGFyc2UoKTtcXG4gICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgIGJyZWFrO1xcbiAgICBjYXNlIFxcXCLnvJbovpFcXFwiOlxcbiAgICB0aGlzLmQgPSBbXTtcXG4gICByZXF1aXJlKGZMaW5rcy5qeEl0VXJsKTtcXG4gICBqeEl0ZW0uanhMaXN0KCk7XFxuICAgc2V0UmVzdWx0KGQpO1xcbiAgICAgICAgYnJlYWs7XFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgJC5leHBvcnRzID0gUm91dGU7XFxuICAgICAgICBicmVhaztcXG59XFxuXCIsXCJncm91cFwiOlwi6KeG6aKRXCIsXCJ1YVwiOlwibW9iaWxlXCIsXCJwcmVSdWxlXCI6XCJ2YXIga1QgPSBcXFwiaHR0cHM6Ly9naXRlYS5jb20vQUk5NTcvSGlrZXIvcmF3L2JyYW5jaC9tL3YvXFxcIjtcXG52YXIgZkxpbmtzID0ge1xcbiAgICBrVDoga1QsXFxuICAgIGNqRnJvbTogJ2hpa2VyOi8vcGFnZS9QYXJzZV9Ebi5qcycsXFxuICAgIHg1RnJvbTogJ2hpa2VyOi8vcGFnZS9QYXJzZV9Ebi5odG1sJyxcXG4gICAgX2JqVXJsOiBrVCArICdqeEl0ZW1fYmouanMnLFxcbiAgICBqeEl0VXJsOiBrVCArICdqeEl0ZW0uanMnLFxcbiAgICByb3V0ZVVybDogJ2h0dHBzOi8vZ2l0ZWEuY29tL0FJOTU3L0hpa2VyL3Jhdy9tL3YvUm91dGUuanMnLFxcbiAgICBjamNhY2hlOiAnaGlrZXI6Ly9maWxlcy9jYWNoZS9QYXJzZV9Ebi5qcycsXFxuICAgIHg1Y2FjaGU6ICdoaWtlcjovL2ZpbGVzL2NhY2hlL1BhcnNlX0RuLmh0bWwnLFxcbiAgICBwbHNjOiAnaGlrZXI6Ly9maWxlcy9jYWNoZS9wbHNjUGFyc2UuaHRtbCcsXFxuICAgIExhbkppZTogJ2hpa2VyOi8vZmlsZXMvY2FjaGUveDVQYXJzZUxhbkppZS50eHQnLFxcbiAgICBjb25maWc6ICdoaWtlcjovL2ZpbGVzL2NhY2hlL015UGFyc2VTZXQuanNvbicsXFxuICAgIHBhcnNlczogJ2hpa2VyOi8vZmlsZXMvcnVsZXMvRHVhbk5pYW4vTXlQYXJzZS5qc29uJyxcXG4gICAgdnVlOiAnaGlrZXI6Ly9maWxlcy9jYWNoZS92dWUwMTAxNC5qcycsXFxuICAgIGpxdWVyeTogJ2hpa2VyOi8vZmlsZXMvY2FjaGUvanF1ZXJ5MDIxNC5qcycsXFxuICAgIHg1Um91dGU6ICdmaWxlOi8vL3N0b3JhZ2UvZW11bGF0ZWQvMC9BbmRyb2lkL2RhdGEvY29tLmV4YW1wbGUuaGlrZXJ2aWV3L2ZpbGVzL0RvY3VtZW50cy9jYWNoZS8nXFxufTtcXG5sZXQgZlJvdXRlID0gJ2hpa2VyOi8vZmlsZXMvY2FjaGUvZmlsZUxpbmtz4bSw4oG/LnR4dCc7XFxuaWYgKCFnZXRWYXIoJ2p4T2xkVicpIHx8IGdldFZhcignanhOZXdWJywgJzAnKSAhPT0gJzAnKSB7XFxuICAgIHdyaXRlRmlsZShmUm91dGUsICd2YXIgZkxpbmtzPScgKyAkLnN0cmluZ2lmeShmTGlua3MpKTtcXG59XCIsXCJwYWdlc1wiOlwiW3tcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIlBhcnNlX0RuLmh0bWxcXFwiLFxcXCJwYXRoXFxcIjpcXFwiUGFyc2VfRG4uaHRtbFxcXCIsXFxcInJ1bGVcXFwiOlxcXCI8IURPQ1RZUEUgaHRtbD5cXFxcbjxodG1sPlxcXFxuPGhlYWQ+XFxcXG4gICAgPG1ldGEgY2hhcnNldD1cXFxcXFxcInV0Zi04XFxcXFxcXCI+XFxcXG4gICAgPG1ldGEgbmFtZT1cXFxcXFxcInZpZXdwb3J0XFxcXFxcXCIgY29udGVudD1cXFxcXFxcIndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEsbWluaW11bS1zY2FsZT0xLG1heGltdW0tc2NhbGU9MSx1c2VyLXNjYWxhYmxlPW5vXFxcXFxcXCIgLz5cXFxcbiAgICA8IS0tXFxcXG4gICAgPHNjcmlwdCBzcmM9XFxcXFxcXCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL3Z1ZUAyLjUuMTYvZGlzdC92dWUubWluLmpzXFxcXFxcXCI+PC9zY3JpcHQ+XFxcXG4gICAgPHNjcmlwdCBzcmM9XFxcXFxcXCJodHRwczovL2NvZGUuanF1ZXJ5LmNvbS9qcXVlcnktMi4xLjQubWluLmpzXFxcXFxcXCI+PC9zY3JpcHQ+XFxcXG4gICAgXFxcXG4gICAgPHNjcmlwdCBzcmM9XFxcXFxcXCJodHRwOi8vYXBwcy5iZGltZy5jb20vbGlicy9qcXVlcnkvMi4xLjQvanF1ZXJ5Lm1pbi5qc1xcXFxcXFwiPjwvc2NyaXB0PlxcXFxuICAgIDxzY3JpcHQgc3JjPVxcXFxcXFwiaHR0cDovL2FwcHMuYmRpbWcuY29tL2xpYnMvdnVlLzEuMC4xNC92dWUuanNcXFxcXFxcIj48L3NjcmlwdD5cXFxcbiAgICAtLT5cXFxcbiAgICA8dGl0bGU+UGFyc2VfRG48L3RpdGxlPlxcXFxuICAgIDxzdHlsZSB0eXBlPXRleHQvY3NzPlxcXFxuICAgICAgICBodG1sLCBib2R5IHtcXFxcbiAgICAgICAgICAgIGhlaWdodDogYXV0bztcXFxcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgYm9keSB7XFxcXG4gICAgICAgICAgICBtYXJnaW46IDAgNXB4IDAgNXB4O1xcXFxuICAgICAgICAgICAgcGFkZGluZzogMCAwcHggMCAwcHg7XFxcXG4gICAgICAgICAgICAvL2JhY2tncm91bmQ6ICNGOUYwREE7XFxcXG4gICAgICAgICAgICBmb250LXdlaWdodDogMDtcXFxcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBcXFxcXFxcIk1pY3Jvc29mdCBZYUhlaVxcXFxcXFwiLFxcXFxcXFwi5a6L5L2TXFxcXFxcXCIsXFxcXFxcXCJTZWdvZSBVSVxcXFxcXFwiLCBcXFxcXFxcIkx1Y2lkYSBHcmFuZGVcXFxcXFxcIiwgSGVsdmV0aWNhLCBBcmlhbCxzYW5zLXNlcmlmLCBGcmVlU2FucywgQXJpbW87XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgI2RpdjJ7XFxcXG4gICAgICAgICAgIG1hcmdpbi10b3A6MzVweDtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICAvKui+k+WFpeahhueItuWFg+e0oCovXFxcXG4gICAgICAgIGRpdi5ib3gge1xcXFxuICAgICAgICAgICAgaGVpZ2h0OiA1M3B4O1xcXFxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XFxcXG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgLyrovpPlhaXmoYblsLrlr7gqL1xcXFxuICAgICAgICBmb3JtIHtcXFxcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcXFxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcXFxuICAgICAgICAgICAgd2lkdGg6IDkyJTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBpbnB1dCwgbGFiZWwsIC5saWViIGJ1dHRvbiB7XFxcXG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XFxcXG4gICAgICAgICAgICBvdXRsaW5lOiBub25lO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIC8q5a2X5L2T5L2N572uKi9cXFxcbiAgICAgICAgaW5wdXQge1xcXFxuICAgICAgICAgICAgd2lkdGg6IDc3JTtcXFxcbiAgICAgICAgICAgIGhlaWdodDogMzJweDtcXFxcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogNjZweDtcXFxcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDMwcHg7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgbGFiZWwge1xcXFxuICAgICAgICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7XFxcXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogNDNweDtcXFxcbiAgICAgICAgICAgIGhlaWdodDogNDBweDtcXFxcbiAgICAgICAgICAgIHdpZHRoOiA2MHB4O1xcXFxuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xcXFxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIC8q5bCP5qGGKi9cXFxcbiAgICAgICAgLmJhciBsYWJlbCB7XFxcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRDA2QjZDO1xcXFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTU1IDU1NXB4IDU1NXB4IDU1NTtcXFxcbiAgICAgICAgICAgIHdpZHRoOiA2MHB4O1xcXFxuICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4O1xcXFxuICAgICAgICAgICAgY29sb3I6ICNGOUYwREE7XFxcXG4gICAgICAgICAgICB0b3A6IDA7XFxcXG4gICAgICAgICAgICBsZWZ0OiAzcHg7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgLyrovpPlhaXmoYbmoLflvI8qL1xcXFxuICAgICAgICAuYmFyIGlucHV0IHtcXFxcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGOUYwREE7XFxcXG4gICAgICAgICAgICBib3JkZXI6IDNweCBzb2xpZCAjRDA2QjZDO1xcXFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIC8q5YiX6KGoKi9cXFxcbiAgICAgICAgLmxpZWIgYnV0dG9uIHtcXFxcbiAgICAgICAgICAgIHRleHQtYWxpZ246Y2VudGVyO1xcXFxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6NDBweDtcXFxcbiAgICAgICAgICAgIGhlaWdodDogNDBweDtcXFxcbiAgICAgICAgICAgIHdpZHRoOiAyN3B4O1xcXFxuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xcXFxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIC8q5YiX6KGoKi9cXFxcbiAgICAgICAgLmxpZWIgYnV0dG9ue1xcXFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xcXFxuICAgICAgICAgICAgYmFja2dyb3VuZDogI0QwNkI2QztcXFxcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDtcXFxcbiAgICAgICAgICAgIGNvbG9yOiAjRjlGMERBO1xcXFxuICAgICAgICAgICAgdG9wOiAwO1xcXFxuICAgICAgICAgICAgcmlnaHQ6IDBweDtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICAvKuWktOWDjyovXFxcXG4gICAgICAgIC5yb3VuZF9pY29ue1xcXFxuICAgICAgICAgICAgd2lkdGg6IDQwcHg7XFxcXG4gICAgICAgICAgICBoZWlnaHQ6IDQwcHg7XFxcXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xcXFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xcXFxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXFxcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcXFxuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcXFxcbiAgICAgICAgfVxcXFxuXFxcXG4gICAgICAgIC5qeC11bCwgLmNqLXVsIHtcXFxcbiAgICAgICAgICAgIHotaW5kZXg6IDk5OTtcXFxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcXFxcbiAgICAgICAgICAgIHdpZHRoOiA3NyU7XFxcXG4gICAgICAgICAgIC8vIGxlZnQ6IDEwJTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICAuangtdWwsIC5jai11bCB7XFxcXG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIC5qeC11bCB7XFxcXG4gICAgICAgICAgICB0b3A6IDMlO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIC5jai11bCB7XFxcXG4gICAgICAgICAgICB0b3A6IDMwJTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBsaSB7XFxcXG4gICAgICAgICAgICBoZWlnaHQ6IDM1cHg7XFxcXG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDFiZmRhO1xcXFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xcXFxuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjgpO1xcXFxuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xcXFxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDM1cHg7XFxcXG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxcXG4gICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XFxcXG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcXFxuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcXFxcbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGxpIHtcXFxcbiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgbGk6aG92ZXIge1xcXFxuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xcXFxuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgxMzksIDEzMSwgMTIwLCAwLjkpO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGxpW2NoZWNrPVxcXFxcXFwidHJ1ZVxcXFxcXFwiXSB7XFxcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDEzOSwgMCwgMCwgMC45KTtcXFxcbiAgICAgICAgfVxcXFxuXFxcXG4gICAgPC9zdHlsZT5cXFxcbjwvaGVhZD5cXFxcblxcXFxuPGJvZHk+XFxcXG4gICAgPGRpdiBjbGFzcz1cXFxcXFxcImZ1bmdcXFxcXFxcIj5cXFxcbiAgICAgICAgPGEgc3R5bGU9XFxcXFxcXCJmbG9hdDpsZWZ0O1xcXFxcXFwiPlxcXFxuICAgICAgICAgICAgPGJ1dHRvbiAgc3R5bGU9XFxcXFxcXCJib3JkZXI6IG5vbmU7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6ICNjNTQ2NGE7d2lkdGg6IDgwcHg7IGZvbnQtc2l6ZTogMThweDtjb2xvcjogI0Y5RjBEQTtcXFxcXFxcIiBvbmNsaWNrPVxcXFxcXFwiY2FuY2VsKCk7XFxcXFxcXCI+5YWzIOmXrTwvYnV0dG9uPlxcXFxuICAgICAgICA8L2E+XFxcXG4gICAgICAgIDxhIHN0eWxlPVxcXFxcXFwiZmxvYXQ6cmlnaHRcXFxcXFxcIj5cXFxcbiAgICAgICAgICAgIDxidXR0b24gc3R5bGU9XFxcXFxcXCJib3JkZXI6IG5vbmU7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6ICMwNjgwMDY7d2lkdGg6IDgwcHg7IGZvbnQtc2l6ZTogMThweDtjb2xvcjogI0Y5RjBEQTtcXFxcXFxcIm9uY2xpY2s9XFxcXFxcXCJjbGlja21lKCfphY0g572uIOW3siDkv50g5a2YIO+8gScsIDEwMDAsICflvIAnKTtcXFxcXFxcIj7kv50g5a2YPC9idXR0b24+IFxcXFxuICAgICAgICA8L2E+XFxcXG4gICAgPC9kaXY+XFxcXG4gICAgPGJyPlxcXFxuICAgIDxkaXYgaWQ9XFxcXFxcXCJkaXYyXFxcXFxcXCI+PC9kaXY+XFxcXG4gICAgPGRpdj5cXFxcbiAgICAgICAgPGEgc3R5bGU9XFxcXFxcXCJmbG9hdDpsZWZ0O21hcmdpbi10b3A6NXB4O1xcXFxcXFwiIG9uY2xpY2s9XFxcXFxcXCJvcGVuRG5QYWdlKClcXFxcXFxcIj5cXFxcbiAgICAgICAgICAgIDxpbWcgc3JjPVxcXFxcXFwiaHR0cHM6Ly9zMy5heDF4LmNvbS8yMDIxLzAyLzIyL3k3d2I5Ty5qcGdcXFxcXFxcIiBjbGFzcz1cXFxcXFxcInJvdW5kX2ljb25cXFxcXFxcIiAgYWx0PVxcXFxcXFwiXFxcXFxcXCI+XFxcXG4gICAgICAgIDwvYT5cXFxcbiAgICAgICAgPHNwYW4gc3R5bGU9XFxcXFxcXCJsaW5lLWhlaWdodDo2MHB4O2ZvbnQtc2l6ZToxOHB4O2NvbG9yOiBncmV5O1xcXFxcXFwiPiZuYnNwOyZuYnNwO+aWrSZuYnNwO+W/tTwvc3Bhbj5cXFxcbiAgICAgICAgPGEgc3R5bGU9XFxcXFxcXCJmbG9hdDpyaWdodDttYXJnaW4tdG9wOjVweDtcXFxcXFxcIj5cXFxcbiAgICAgICAgICAgIDxidXR0b24gIHN0eWxlPVxcXFxcXFwiYm9yZGVyOiBub25lO2JvcmRlci1yYWRpdXM6MTBweDtiYWNrZ3JvdW5kOiAjMDVCRkM1O3dpZHRoOiAxODVweDtoZWlnaHQ6NDBweDsgZm9udC1zaXplOiAxOHB4O2NvbG9yOiAjRjlGMERBO1xcXFxcXFwiIG9uY2xpY2s9XFxcXFxcXCJjbGlja21lKCfphY0g572uIOW3siDkv50g5a2YIO+8gScsIDEwMDAsICflhbMnKTtcXFxcXFxcIj7kv53lrZjorr7nva7lubblhbPpl63nlYzpnaI8L2J1dHRvbj5cXFxcbiAgICAgICAgPC9hPlxcXFxuICAgIDwvZGl2PlxcXFxuICAgIDxkaXYgY2xhc3M9XFxcXFxcXCJ6ai1kaXZcXFxcXFxcIj5cXFxcbiAgICAgICAgPHVsIGNsYXNzPVxcXFxcXFwiangtdWxcXFxcXFxcIiBzdHlsZT1cXFxcXFxcImhlaWdodDo0NDRweDtvdmVyZmxvdy15OmF1dG87XFxcXFxcXCI+XFxcXG4gICAgICAgICAgICA8bGkgY2xhc3M9XFxcXFxcXCJteUNob2ljZVxcXFxcXFwiIHN0eWxlPVxcXFxcXFwiei1pbmRleDo5OTk5O3Bvc2l0aW9uOiBmaXhlZDt3aWR0aDo3Ni41JTtjb2xvcjpyZWQ7XFxcXFxcXCI+PC9saT5cXFxcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cXFxcXFxcInVzZWxlc3NcXFxcXFxcIj48L2xpPlxcXFxuICAgICAgICAgICAgPGxpIGNsYXNzPVxcXFxcXFwieGxMaXN0XFxcXFxcXCIgdi1mb3I9XFxcXFxcXCJpdGVtIGluIGp4RGF0YVxcXFxcXFwiPnt7aXRlbX19PC9saT5cXFxcbiAgICAgICAgPC91bD5cXFxcbiAgICAgICAgPHVsIGNsYXNzPVxcXFxcXFwiY2otdWxcXFxcXFxcIj5cXFxcbiAgICAgICAgICAgIDxsaSBzdHlsZT1cXFxcXFxcImJhY2tncm91bmQ6Z3JleTtcXFxcXFxcIj7or7fpgInmi6nmj5Lku7Y8L2xpPlxcXFxuICAgICAgICAgICAgPGxpIHYtZm9yPVxcXFxcXFwiaXRlbSBpbiBjakRhdGFcXFxcXFxcIj57e2l0ZW19fTwvbGk+XFxcXG4gICAgICAgIDwvdWw+XFxcXG4gICAgPC9kaXY+XFxcXG48L2JvZHk+XFxcXG48c2NyaXB0PlxcXFxuICAgIGV2YWwoZnlfYnJpZGdlX2FwcC5mZXRjaChcXFxcXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvanF1ZXJ5MDIxNC5qc1xcXFxcXFwiKSk7XFxcXG4gICAgZXZhbChmeV9icmlkZ2VfYXBwLmZldGNoKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS92dWUwMTAxNC5qc1xcXFxcXFwiKSk7XFxcXG4gICAgZXZhbChmeV9icmlkZ2VfYXBwLmdldEludGVybmFsSnMoKSk7XFxcXG4gICAgXFxcXG4gICAgdmFyIHNldHRpbmdzID0ge1xcXFxuICAgICAgICBxeTogJ3l1bjE3MTcnLFxcXFxuICAgICAgICB5azogJ3l1bjE3MTcnLFxcXFxuICAgICAgICB0eDogJ3l1bjE3MTcnLFxcXFxuICAgICAgICBtZzogJ3l1bjE3MTcnLFxcXFxuICAgICAgICBibDogJ3l1bjE3MTcnLFxcXFxuICAgICAgICBvdGg6ICd5dW4xNzE3JyxcXFxcbiAgICAgICAgcWp1OiAn6buY6K6kJyxcXFxcbiAgICAgICAgY2o6ICdoaWtlcjovL2ZpbGVzL2NhY2hlL1BhcnNlX0RuLmpzJ1xcXFxuICAgIH07XFxcXG4gICAgXFxcXG4gICAgdmFyIG9sZFJvdXRlID0gXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL015UGFyc2VTZXQuanNvblxcXFxcXFwiO1xcXFxuICAgIHZhciBteVNldCA9IGZ5X2JyaWRnZV9hcHAuZmV0Y2gob2xkUm91dGUpO1xcXFxuICAgIFxcXFxuICAgIHZhciBuZXdSb3V0ZSA9IFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9EdWFuTmlhbi9NeVBhcnNlLmpzb25cXFxcXFxcIjtcXFxcbiAgICB2YXIgbmV3Q29uZmlnID0gZnlfYnJpZGdlX2FwcC5mZXRjaChuZXdSb3V0ZSk7XFxcXG4gICAgdmFyIG15U2VsZWN0ID0gW107XFxcXG4gICAgdHJ5e1xcXFxuICAgICAgICBldmFsKFxcXFxcXFwibmV3Q29uZmlnID1cXFxcXFxcIiArIG5ld0NvbmZpZyArIFxcXFxcXFwiO1xcXFxcXFwiKTtcXFxcbiAgICAgICAgc2V0dGluZ3MgPSBuZXdDb25maWcuc2V0dGluZ3MucWp1ID09IHVuZGVmaW5lZCA/IHNldHRpbmdzIDogbmV3Q29uZmlnLnNldHRpbmdzO1xcXFxuICAgICAgICB2YXIgeWNUaXRsZSA9IFsnZGVmYXVsdFBhcnNlJywgJ21hb3NzJywgJ0NpdHlJUCcsICdjYWNoZU0zdTgnLCAncGNVQScsICdwYXJzZUxjJywgJ2dwYXJzZScsICducGFyc2UnXTtcXFxcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IG5ld0NvbmZpZy50aXRsZS5sZW5ndGg7IGkrKyl7XFxcXG4gICAgICAgICAgICB2YXIgVGl0bGVzID0gbmV3Q29uZmlnLnRpdGxlW2ldO1xcXFxuICAgICAgICAgICAgaWYoeWNUaXRsZS5pbmNsdWRlcyhUaXRsZXMpID09IGZhbHNlKXtcXFxcbiAgICAgICAgICAgICAgICBteVNlbGVjdC5wdXNoKFRpdGxlcyk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFxcbiAgICB9Y2F0Y2goZSl7fVxcXFxuICAgIHZhciBzZlJlZnJlc2ggPSBzZXR0aW5ncy5jajtcXFxcbiAgICBmdW5jdGlvbiBEaWQoaWQpe1xcXFxuICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xcXFxuICAgIH1cXFxcbiAgICBcXFxcbiAgICBpZihteVNldCA9PSAnJyl7XFxcXG4gICAgICAgIERpZChcXFxcXFxcImRpdjJcXFxcXFxcIikuaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlckJlZ2luJywnXFxcXFxcXFxcXFxcbjxoND7mj5DnpLrvvJo8YnI+4pGg5rOo5oSP5o+S5Lu26YCJ6aG577yM5rKh5pyJ5omL5Yqo5a+85YWl5o+S5Lu255qE6K+d5LiN55So5Yqo5a6D44CC5aaC6K6+572u5LiN5b2T5Lya5a+86Ie06KeE5YiZ5peg5rOV5L2/55So77yMPGJyPuino+WGs+WKnuazle+8muWwj+eoi+W6j+mmlumhteeCueWHu+aBouWkjem7mOiupOaPkuS7tu+8mzxicj7ikaHlhajlsYDorr7nva7lpoLmnpzpgInmi6nkuobpnZ7pu5jorqTpgqPkuYjlhajpg6jnmoTop6PmnpDkvJrkvb/nlKjov5nkuIDorr7nva7vvIzkuI3mg7Pov5nmoLfnmoTor53or7floavlhaXpu5jorqTvvJs8YnI+4pGi57u/6Imy5L+d5a2Y5oyJ6ZKu5LuF5LuF5L+d5a2Y6YWN572u5LiN5Lya5YWz6Zet6K6+572u6aG16Z2i77yM6YWN572u5ZCO5oOz5L+d5a2Y5bm25YWz6Zet6K6+572u6aG16Z2i55qE6K+d6K+354K56JOd6Imy5oyJ6ZKu77ybPGJyPuKRo+mYheivu+WujOaPkOekuueCueWFs+mXreWKoOi9veWujOaVtOiuvue9rumhtemdou+8jOWmguWHuumXrumimOaXoOazleiHquihjOino+WGs+eCueWbvueJh+i/m+WFpeiuuuWdm+WQkeaIkeWPjemmiOOAgjxicj48L2g0PicpO1xcXFxuICAgIH1cXFxcbiAgICBcXFxcbiAgICB2YXIgYm94RGF0YSA9IFtcXFxcbiAgICAgICAge1xcXFxuICAgICAgICAgICAgdGl0bGU6IFxcXFxcXFwi5aWHIOWlh1xcXFxcXFwiLFxcXFxuICAgICAgICAgICAgaWQ6IFxcXFxcXFwicXlcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy5xeSxcXFxcbiAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgdGl0bGU6IFxcXFxcXFwi6YW3IOmFt1xcXFxcXFwiLFxcXFxuICAgICAgICAgICAgaWQ6IFxcXFxcXFwieWtcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy55ayxcXFxcbiAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgdGl0bGU6IFxcXFxcXFwi6IW+IOiFvlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgaWQ6IFxcXFxcXFwidHhcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy50eCxcXFxcbiAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgdGl0bGU6IFxcXFxcXFwi5p6cIOaenFxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgaWQ6IFxcXFxcXFwibWdcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy5tZyxcXFxcbiAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgdGl0bGU6IFxcXFxcXFwi5ZOpIOWTqVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgaWQ6IFxcXFxcXFwiYmxcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy5ibCxcXFxcbiAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgdGl0bGU6IFxcXFxcXFwi5YW2IOS7llxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgaWQ6IFxcXFxcXFwib3RoXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICB2YWx1ZTogc2V0dGluZ3Mub3RoLFxcXFxuICAgICAgICB9LCB7XFxcXG4gICAgICAgICAgICB0aXRsZTogXFxcXFxcXCLlhagg5bGAXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBpZDogXFxcXFxcXCJxanVcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIHZhbHVlOiBzZXR0aW5ncy5xanUsXFxcXG4gICAgICAgIH0sIHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIuaPkiDku7ZcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGlkOiBcXFxcXFxcImNqXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICB2YWx1ZTogc2V0dGluZ3MuY2osXFxcXG4gICAgICAgIH1cXFxcbiAgICBdO1xcXFxuXFxcXG4gICAgdmFyIGlucHV0Qm94ID0gXFxcXFxcXCJcXFxcXFxcIjtcXFxcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgYm94RGF0YS5sZW5ndGg7IGkrKyl7XFxcXG4gICAgICAgIGxldCBiID0gYm94RGF0YVtpXTtcXFxcbiAgICAgICAgaW5wdXRCb3ggKz0gJzxkaXYgY2xhc3M9XFxcXFxcXCJib3ggYmFyXFxcXFxcXCI+XFxcXFxcXFxcXFxcbiAgICAgICAgICAgIDxmb3JtPlxcXFxcXFxcXFxcXG4gICAgICAgICAgICAgICAgPGxhYmVsIHR5cGU9XFxcXFxcXCJzdWJtaXRcXFxcXFxcIj4nICsgYi50aXRsZSArICc8L2xhYmVsPlxcXFxcXFxcXFxcXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XFxcXFxcXCJ0ZXh0XFxcXFxcXCIgcGxhY2Vob2xkZXI9XFxcXFxcXCLovpPlhaXop6PmnpDlkI3miJbogIVVUkwuLi4uLi5cXFxcXFxcIiB2YWx1ZT1cXFxcXFxcIicgKyBiLnZhbHVlICsgJ1xcXFxcXFwiIGlkPVxcXFxcXFwiJyArIGIuaWQgKyAnXFxcXFxcXCI+XFxcXFxcXFxcXFxcbiAgICAgICAgICAgIDwvZm9ybT5cXFxcXFxcXFxcXFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFxcXFxcImxpZWJcXFxcXFxcIj5cXFxcXFxcXFxcXFxuICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9XFxcXFxcXCInICsgYi5pZCArICdTZWxlY3RcXFxcXFxcIj7imLA8L2J1dHRvbj5cXFxcXFxcXFxcXFxuICAgICAgICAgICAgPC9kaXY+XFxcXFxcXFxcXFxcbiAgICAgICAgPC9kaXY+JztcXFxcbiAgICB9XFxcXG4gICAgRGlkKFxcXFxcXFwiZGl2MlxcXFxcXFwiKS5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyZW5kJywgaW5wdXRCb3gpO1xcXFxuICAgIERpZChcXFxcXFxcImNqXFxcXFxcXCIpLnBsYWNlaG9sZGVyID0gXFxcXFxcXCLovpPlhaXmj5Lku7blnLDlnYAuLi4uLi5cXFxcXFxcIjtcXFxcbiAgICBEaWQoXFxcXFxcXCJxanVcXFxcXFxcIikucGxhY2Vob2xkZXIgPSBcXFxcXFxcIuatpOmhueW7uuiurueVmeepuuaIluiAheWhq+m7mOiupOS4pOS4quWtl1xcXFxcXFwiO1xcXFxuICAgIFxcXFxuICAgIG5ldyBWdWUoe1xcXFxuICAgICAgICBlbDogXFxcXFxcXCIuemotZGl2XFxcXFxcXCIsXFxcXG4gICAgICAgIGRhdGE6IHtcXFxcbiAgICAgICAgICAgIGp4RGF0YTogbXlTZWxlY3QsXFxcXG4gICAgICAgICAgICBjakRhdGE6IFtcXFxcXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvUGFyc2VfRG4uanNcXFxcXFxcIiwgXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2R6SG91c2UvanMvc3JjYXV0by5qc1xcXFxcXFwiLCBcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvUGFyc2UtVjJfRG4uanNcXFxcXFxcIl1cXFxcbiAgICAgICAgfVxcXFxuICAgIH0pO1xcXFxuXFxcXG4gICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7XFxcXG4gICAgICAgIHZhciBsZW4gPSAkKCcuangtdWwnKS5jaGlsZHJlbignbGknKS5sZW5ndGg7XFxcXG4gICAgICAgIHZhciBsZW4yID0gJCgnLmNqLXVsJykuY2hpbGRyZW4oJ2xpJykubGVuZ3RoO1xcXFxuICAgICAgICAkKCcubGllYiBidXR0b24nKS5jbGljayhmdW5jdGlvbihlKSB7XFxcXG4gICAgICAgICAgICBpZigkKCcubGllYiBidXR0b24nKS50ZXh0KCkuaW5jbHVkZXMoJ+KUgScpKXtcXFxcbiAgICAgICAgICAgICAgICAkKCcubGllYiBidXR0b24nKS5jc3MoJ2JhY2tncm91bmQnLCAnJyk7XFxcXG4gICAgICAgICAgICAgICAgJCgnLmxpZWIgYnV0dG9uJykudGV4dCgn4piwJyk7XFxcXG4gICAgICAgICAgICB9ZWxzZXtcXFxcbiAgICAgICAgICAgICAgICAkKHRoaXMpLnRleHQoJ+KUgScpO1xcXFxuICAgICAgICAgICAgICAgICQodGhpcykuY3NzKCdiYWNrZ3JvdW5kJywgJ3JlZCcpO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgJCgnbGknKS5hdHRyKCdjaGVjaycsICdmYWxzZScpO1xcXFxuICAgICAgICAgICAgdmFyIGlucHV0aWQgPSBcXFxcXFxcIiNcXFxcXFxcIiArIHRoaXMuaWQuc3BsaXQoXFxcXFxcXCJTZWxlY3RcXFxcXFxcIilbMF07XFxcXG4gICAgICAgICAgICB2YXIgYXJyID0gJChpbnB1dGlkKS52YWwoKS5zcGxpdCgnLCcpO1xcXFxuICAgICAgICAgICAgYXJyID0gYXJyWzBdID09ICcnID8gW10gOiBhcnI7XFxcXG4gICAgICAgICAgICAkKCcubXlDaG9pY2UnKS50ZXh0KGFycik7XFxcXG4gICAgICAgICAgICBpZiAoaW5wdXRpZCAhPT0gJyNjaicgJiYgJCgnLmNqLXVsJykuY3NzKCdkaXNwbGF5Jyk9PSdub25lJykge1xcXFxuICAgICAgICAgICAgICAgICQoJy5qeC11bCcpLnNsaWRlVG9nZ2xlKDMwMCk7XFxcXG4gICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcXFxcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGxlbjsgaSsrKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBqeExpc3QgPSAkKCcuangtdWwgbGk6bm90KC5teUNob2ljZSknKS5lcShpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFyci5pbmNsdWRlcyhqeExpc3QudGV4dCgpKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAganhMaXN0LmF0dHIoJ2NoZWNrJywgJ3RydWUnKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICBqeExpc3QudW5iaW5kKCdjbGljaycpLmNsaWNrKGZ1bmN0aW9uKGUpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5hdHRyKCdjaGVjaycpICE9PSBcXFxcXFxcInRydWVcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignY2hlY2snLCAndHJ1ZScpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyci51bnNoaWZ0KCQodGhpcykudGV4dCgpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGlucHV0aWQpLnZhbChhcnIpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5teUNob2ljZScpLnRleHQoYXJyKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdjaGVjaycsICdmYWxzZScpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgPSAwOyBhIDwgYXJyLmxlbmd0aDsgYSsrKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcnJbYV0gPT0gJCh0aGlzKS50ZXh0KCkpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyci5zcGxpY2UoYSwgMSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGlucHV0aWQpLnZhbChhcnIpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLm15Q2hvaWNlJykudGV4dChhcnIpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZigkKCcuangtdWwnKS5jc3MoJ2Rpc3BsYXknKT09J25vbmUnKXtcXFxcbiAgICAgICAgICAgICAgICAkKCcuY2otdWwnKS5zbGlkZVRvZ2dsZSgyMDApO1xcXFxuICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XFxcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW4yOyBpKyspIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNqTGlzdCA9ICQoJy5jai11bCBsaScpLmVxKGkpO1xcXFxuICAgICAgICAgICAgICAgICAgICBpZiAoJChpbnB1dGlkKS52YWwoKSA9PSBjakxpc3QudGV4dCgpKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjakxpc3QuYXR0cignY2hlY2snLCAndHJ1ZScpO1xcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgIGNqTGlzdC51bmJpbmQoJ2NsaWNrJykuY2xpY2soZnVuY3Rpb24oKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPT0gMCkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoaW5wdXRpZCkudmFsKCQodGhpcykudGV4dCgpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ2NoZWNrJywgJ3RydWUnKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnNpYmxpbmdzKCkuYXR0cignY2hlY2snLCAnZmFsc2UnKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICAkKGRvY3VtZW50KS5ub3QoJCgnLnhsTGlzdCcpKS5jbGljayhmdW5jdGlvbihlKSB7XFxcXG4gICAgICAgICAgICAkKCcuangtdWwnKS5zbGlkZVVwKCk7XFxcXG4gICAgICAgICAgICAkKCcuY2otdWwnKS5zbGlkZVVwKCk7XFxcXG4gICAgICAgICAgICAkKCcubGllYiBidXR0b24nKS50ZXh0KCfimLAnKTtcXFxcbiAgICAgICAgICAgICQoJy5saWViIGJ1dHRvbicpLmNzcygnYmFja2dyb3VuZCcsICcnKTtcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgICQoZnVuY3Rpb24oKXtcXFxcbiAgICAgICAgICAgICQoJ2xhYmVsJykubW91c2V1cChmdW5jdGlvbigpe1xcXFxuICAgICAgICAgICAgICAgIGxldCBpbnB1dGlkID0gJyMnICsgJCh0aGlzKS5uZXh0KCkuYXR0cignaWQnKTtcXFxcbiAgICAgICAgICAgICAgICBvbmVPckRibChpbnB1dGlkKTtcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcXFxcbiAgICAgICAgICAgIHZhciB0aW1lcjtcXFxcbiAgICAgICAgICAgIGZ1bmN0aW9uIG9uZU9yRGJsKGlucHV0aWQpe1xcXFxuICAgICAgICAgICAgICAgIGNvdW50Kys7XFxcXG4gICAgICAgICAgICAgICAgdGltZXIgPSB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe1xcXFxuICAgICAgICAgICAgICAgICAgICBpZihjb3VudCA9PSAxKXtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhcnIgPSAkKGlucHV0aWQpLnZhbCgpLnNwbGl0KCcsJyk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnIuc3BsaWNlKDAsIDEpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgJChpbnB1dGlkKS52YWwoYXJyKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgfWVsc2V7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAkKGlucHV0aWQpLnZhbCgnJyk7XFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lcik7XFxcXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ID0gMDtcXFxcbiAgICAgICAgICAgICAgICB9LDI2MClcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSlcXFxcbiAgICB9KTtcXFxcbiAgICBcXFxcbiAgICBmdW5jdGlvbiBUb2FzdChtc2csZHVyYXRpb24peyAgXFxcXG4gICAgICAgIGR1cmF0aW9uPWlzTmFOKGR1cmF0aW9uKT8yMDAwOmR1cmF0aW9uOyAgXFxcXG4gICAgICAgIHZhciBtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7ICBcXFxcbiAgICAgICAgbS5pbm5lckhUTUwgPSBtc2c7ICBcXFxcbiAgICAgICAgbS5zdHlsZS5jc3NUZXh0PVxcXFxcXFwid2lkdGg6NDUlOyBtaW4td2lkdGg6MTUwcHg7IGJhY2tncm91bmQ6IzMxMTsgb3BhY2l0eTowLjY7IGhlaWdodDphdXRvO21pbi1oZWlnaHQ6IDQ1cHg7IGNvbG9yOiNmZmY7IGxpbmUtaGVpZ2h0OjQ1cHg7IHRleHQtYWxpZ246Y2VudGVyOyBib3JkZXItcmFkaXVzOjEwcHg7IHBvc2l0aW9uOmZpeGVkOyB0b3A6NjAlOyBsZWZ0OjI2JTsgei1pbmRleDo5OTk5OTk7XFxcXFxcXCI7ICBcXFxcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChtKTsgIFxcXFxuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyAgXFxcXG4gICAgICAgICAgICB2YXIgZCA9IDAuNTsgIFxcXFxuICAgICAgICAgICAgbS5zdHlsZS53ZWJraXRUcmFuc2l0aW9uID0gJy13ZWJraXQtdHJhbnNmb3JtICcgKyBkICsgJ3MgZWFzZS1pbiwgb3BhY2l0eSAnICsgZCArICdzIGVhc2UtaW4nOyAgXFxcXG4gICAgICAgICAgICBtLnN0eWxlLm9wYWNpdHkgPSAnMCc7ICBcXFxcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobSkgfSwgZCAqIDEwMDApOyAgXFxcXG4gICAgICAgIH0sIGR1cmF0aW9uKTsgIFxcXFxuICAgIH0gIFxcXFxuXFxcXG4gICAgZnVuY3Rpb24gb3BlbkRuUGFnZSgpe1xcXFxuICAgICAgICBmYmEub3BlbihKU09OLnN0cmluZ2lmeSh7XFxcXG4gICAgICAgICAgICBydWxlOiBcXFxcXFxcIj1eX149XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICB0aXRsZTogXFxcXFxcXCLnrqHnkIbop6PmnpBcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5I25vSGlzdG9yeSNcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGZpbmRSdWxlOiBcXFxcXFxcImpzOnRoaXMuZD1bXTtldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL2NhY2hlL2ZpbGVMaW5rc+G0sOKBvy50eHQnKSk7cmVxdWlyZShmTGlua3MuanhJdFVybCk7anhJdGVtLmp4TGlzdCgpO3NldFJlc3VsdChkKVxcXFxcXFwiXFxcXG4gICAgICAgIH0pKTtcXFxcbiAgICB9XFxcXG4gICAgZnVuY3Rpb24gY2FuY2VsKCl7XFxcXG4gICAgICAgIGlmKG15U2V0PT0nJyl7XFxcXG4gICAgICAgICAgICBmeV9icmlkZ2VfYXBwLndyaXRlRmlsZShvbGRSb3V0ZSwgSlNPTi5zdHJpbmdpZnkoc2V0dGluZ3MsIG51bGwsIDQpKTtcXFxcbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAucmVmcmVzaFBhZ2UodHJ1ZSk7XFxcXG4gICAgICAgIH1lbHNle1xcXFxuICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5iYWNrKGZhbHNlKTtcXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbiAgICBmdW5jdGlvbiBjbGlja21lKG1zZyxkdXJhdGlvbix0aXRsZSl7XFxcXG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBib3hEYXRhLmxlbmd0aDsgaSsrKXtcXFxcbiAgICAgICAgICAgIGxldCBpZCA9IGJveERhdGFbaV0uaWQ7XFxcXG4gICAgICAgICAgICBzZXR0aW5nc1tpZF0gPSBEaWQoaWQpLnZhbHVlO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGlmKHNldHRpbmdzLnFqdSA9PSAnJyl7XFxcXG4gICAgICAgICAgICBzZXR0aW5ncy5xanUgPSAn6buY6K6kJztcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICB0cnl7XFxcXG4gICAgICAgICAgICBldmFsKCd2YXIgYmNDb25maWc9JyArIGZ5X2JyaWRnZV9hcHAuZmV0Y2gobmV3Um91dGUpKTtcXFxcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYmNDb25maWcuc2V0dGluZ3MsIHNldHRpbmdzKTtcXFxcbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAud3JpdGVGaWxlKG5ld1JvdXRlLCAkJCQuc3RyaW5naWZ5KGJjQ29uZmlnKSk7XFxcXG4gICAgICAgIH1jYXRjaChlKXt9XFxcXG4gICAgICAgIGZ5X2JyaWRnZV9hcHAud3JpdGVGaWxlKG9sZFJvdXRlLCAkJCQuc3RyaW5naWZ5KHNldHRpbmdzKSk7XFxcXG4gICAgICAgICAgICBcXFxcbiAgICAgICAgVG9hc3QobXNnLGR1cmF0aW9uKTtcXFxcbiAgICAgICAgaWYodGl0bGU9PVxcXFxcXFwi5YWzXFxcXFxcXCIpe1xcXFxuICAgICAgICAgICAgaWYoc2ZSZWZyZXNoICE9IERpZChcXFxcXFxcImNqXFxcXFxcXCIpLnZhbHVlKXtcXFxcbiAgICAgICAgICAgICAgICBmeV9icmlkZ2VfYXBwLmJhY2soKTtcXFxcbiAgICAgICAgICAgIH1lbHNle1xcXFxuICAgICAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAuYmFjayhmYWxzZSk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1lbHNle1xcXFxuICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5yZWZyZXNoUGFnZSh0cnVlKTtcXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcblxcXFxuPC9zY3JpcHQ+ICAgXFxcXG48L2h0bWw+XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwiUGFyc2VfRG4uanNcXFwiLFxcXCJwYXRoXFxcIjpcXFwiUGFyc2VfRG4uanNcXFwiLFxcXCJydWxlXFxcIjpcXFwiLy89PT09PT09PT09PT3lhY3ll4XosIPnlKg9PT09PT09PT09PT1cXFxcbi8v77yN77yN77yNPV5fXj1cXFxcbi8vdmFyIHZlcnNpb24gPSBcXFxcXFxcIjMuNS4zXFxcXFxcXCI7XFxcXG5cXFxcbnZhciBwYXJzZVJvdXRlID0gJ2hpa2VyOi8vZmlsZXMvcnVsZXMvRHVhbk5pYW4vTXlQYXJzZS5qc29uJztcXFxcbnZhciBNeVBhcnNlUyA9IHt9O1xcXFxudmFyIG15U2V0ID0ge307XFxcXG5pZiAoZmlsZUV4aXN0KHBhcnNlUm91dGUpKSB7XFxcXG4gICAgZXZhbCgndmFyIHBhcnNlRmlsZSA9JyArIGZldGNoKHBhcnNlUm91dGUpKTtcXFxcbiAgICBNeVBhcnNlUyA9IHBhcnNlRmlsZS5jb2RlcztcXFxcbiAgICBteVNldCA9IHBhcnNlRmlsZS5zZXR0aW5ncztcXFxcbn1cXFxcbnZhciBwYXJzZVRpdGxlID0gW1xcXFxuICAgIFxcXFxcXFwi8J+lmlxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwieXVuMTcxN1xcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiUGFuR3VcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcIkZ1WGluZ1xcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiaHR0cHM6Ly9qeHguc215czguY24vaW5kZXgucGhwP3VybD1cXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcImh0dHBzOi8vb2tqeC5jYy8/dXJsPVxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwiaHR0cHM6Ly9qeC5tM3U4LnR2L2ppZXhpLz91cmw9XFxcXFxcXCIsXFxcXG4gICAgXFxcXFxcXCJodHRwczovL3NiLjVnc2VvLm5ldC8/dXJsPVxcXFxcXFwiXFxcXG5dO1xcXFxuXFxcXG4vL++8je+8je+8jT1eX149XFxcXG5cXFxcbi8v5o6l5Y+j6K6+572uLlxcXFxuXFxcXG52YXIgc2V0VXJsID0gXFxcXFxcXCJoaWtlcjovL2VtcHR5I25vUmVjb3JkSGlzdG9yeSNAcnVsZT1qczp0aGlzLmQ9W107cmVxdWlyZSgnaHR0cHM6Ly9naXRlYS5jb20vQUk5NTcvSGlrZXIvcmF3L20vdi9Sb3V0ZS5qcycpO1JvdXRlLnNldFBhcnNlKCk7c2V0UmVzdWx0KGQpO1xcXFxcXFwiO1xcXFxudmFyIHNldF9zd2l0Y2ggPSBzZXRVcmw7XFxcXG52YXIgbGF6eSA9IGByZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7YXl0bVBhcnNlKGlucHV0KWA7XFxcXG5cXFxcbi8vdmFyIHBhcndpeCA9IGB2YXIgeXVybD0naHR0cHM6Ly9kYWlsaS5tYXlpeGlvbmdkaS5jbi8/dXJsPSc7UmVmZXJlcic6ICdodHRwczovL3d3dy5tYXlpeGlvbmdkaS5jbi95cz9pZD0nOydodHRwczovL2RhaWxpLm1heWl4aW9uZ2RpLmNuL2FwaS5waHAnLCAnUmVmZXJlcic6J2h0dHBzOi8vZGFpbGkubWF5aXhpb25nZGkuY24nO1xcXFxuLy8g5YWo5rCRaHR0cHM6Ly9wY3ZpZGVvYWxpeXVuLnRpYW5zaGFuZ3JlbmppYW4ubWd0di5jb20uODh3dW1hLmNvbS8/dXJsPVxcXFxuXFxcXG4vL++8je+8je+8jeWkhyDnlKjvvI3vvI3vvI1cXFxcbi8qXFxcXG4gKiDlvbHop4blt6XlnLrvvJogaHR0cHM6Ly95c2djLmNjL1xcXFxuICog5rGf5rmWOiA1NTXnlLXlvbEgaHR0cHM6Ly93d3cuNTU1ZHkyLmNvbS9waG9uZS5odG1sIO+9nCAxN+eciyBodHRwOi8vMTdrYW55eS5jbi8gaHR0cDovL2poamlleGkuMzB2ci5jbi8/dXJsPSDvvZwgaHR0cDovL2FwaS5tYWl6aW1hbGwuY29tL2luZGV4LnBocD91cmw9XFxcXG4gKiDmsZ/muZY6IGh0dHA6Ly93d3cudGlhbnNodXl1bi5uZXQvaW5kZXgucGhwL3ZvZC9wbGF5L2lkLzQ0ODM3Ny9zaWQvMS9uaWQvMS5odG1sXFxcXG4gKiDmsZ/muZYyOiBodHRwOi8vOThoeWsuY24vaW5kZXgucGhwL3ZvZC9wbGF5L2lkLzcyODQxL3NpZC8xL25pZC8xLmh0bWxcXFxcbiAqIOS6uuS6uui/tzogaHR0cHM6Ly92aXAuc3Vzb3UudHYvcGxheWVyLz91cmw9IO+9nCBodHRwczovL3d3dy5tb21kbS5jYy9cXFxcbiAqIFxcXFxuICogd3VpZ2VuOiBodHRwczovL3d3dy41aWdlbi5jb20vZG1wbGF5ZXIvcGxheWVyLz91cmw9XFxcXG4gKiDlubLppa0o5Lq65Lq66L+3KTogaHR0cHM6Ly9qeC56dWkuY20vP3VybD1cXFxcbiAqIGh0dHBzOi8vMi42Nm1vdmllLnRvcC9wbGF5ZXIvP3VybD1cXFxcbiAqIFxcXFxuICovXFxcXG5cXFxcblxcXFxudmFyIHRvb2xzID0ge1xcXFxuICAgIE1ENTogZnVuY3Rpb24oZGF0YSkge1xcXFxuICAgICAgICBldmFsKGdldENyeXB0b0pTKCkpO1xcXFxuICAgICAgICByZXR1cm4gQ3J5cHRvSlMuTUQ1KGRhdGEpLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5IZXgpO1xcXFxuICAgIH0sXFxcXG4gICAgQUVTOiBmdW5jdGlvbih0ZXh0LCBrZXksIGl2LCBpc0VuY3J5cHQpIHtcXFxcbiAgICAgICAgZXZhbChnZXRDcnlwdG9KUygpKTtcXFxcbiAgICAgICAgdmFyIGtleSA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKGtleSk7XFxcXG4gICAgICAgIHZhciBpdiA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKGl2KTtcXFxcbiAgICAgICAgaWYgKGlzRW5jcnlwdCkge1xcXFxuICAgICAgICAgICAgcmV0dXJuIENyeXB0b0pTLkFFUy5lbmNyeXB0KHRleHQsIGtleSwge1xcXFxuICAgICAgICAgICAgICAgIGl2OiBpdixcXFxcbiAgICAgICAgICAgICAgICBtb2RlOiBDcnlwdG9KUy5tb2RlLkNCQyxcXFxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczdcXFxcbiAgICAgICAgICAgIH0pLnRvU3RyaW5nKCk7XFxcXG4gICAgICAgIH07XFxcXG4gICAgICAgIHJldHVybiBDcnlwdG9KUy5BRVMuZGVjcnlwdCh0ZXh0LCBrZXksIHtcXFxcbiAgICAgICAgICAgIGl2OiBpdixcXFxcbiAgICAgICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Qa2NzN1xcXFxuICAgICAgICB9KS50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XFxcXG4gICAgfSxcXFxcbiAgICAvL2FzY2lpXFxcXG4gICAgbmV4dENoYXJhY3RlcjogZnVuY3Rpb24oYXNjaWlWYWx1ZSwgaykge1xcXFxuICAgICAgICB2YXIgcyA9IGFzY2lpVmFsdWU7XFxcXG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHMgKyBrKTtcXFxcbiAgICB9LFxcXFxuICAgIC8v5Yev5pKSXFxcXG4gICAgY2Flc2FyQ2lwaGVyOiBmdW5jdGlvbihzdHJpbmdWYWx1ZSwgaykge1xcXFxuICAgICAgICB2YXIgbmV3U3RyaW5nID0gXFxcXFxcXCJcXFxcXFxcIjtcXFxcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJpbmdWYWx1ZS5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICAgICAgbmV3U3RyaW5nICs9IHRoaXMubmV4dENoYXJhY3RlcihzdHJpbmdWYWx1ZVtpXS5jaGFyQ29kZUF0KCksIGspO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIHJldHVybiBuZXdTdHJpbmc7XFxcXG4gICAgfSxcXFxcbiAgICBoYW5kbGVVcmw6IGZ1bmN0aW9uKHVybCwgdmlwVXJsLCBuYW1lKSB7XFxcXG4gICAgICAgIGlmKHVybCA9PSBcXFxcXFxcIlxcXFxcXFwiIHx8IHVybCA9PSB2aXBVcmwpIHtcXFxcbiAgICAgICAgICAgIGxvZyhuYW1lICsgXFxcXFxcXCLop6PmnpDlpLHotKVcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICByZXR1cm4gdmlwVXJsO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGlmICh1cmxbMF0gPT0gJy8nKSB7XFxcXG4gICAgICAgICAgICB1cmwgPSAnaHR0cHM6JyArIHVybDtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBpZiAodXJsLmluZGV4T2YoJz1odHRwJykgIT0gLTEpIHtcXFxcbiAgICAgICAgICAgIHVybCA9IHVybC5pbmRleE9mKCcmdXJsPScpID4gLTEgPyB1cmwgOiAnaHR0cCcgKyBkZWNvZGVVUklDb21wb25lbnQodXJsLnNwbGl0KCc9aHR0cCcpWzFdKTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBpZiAodmlwVXJsLmluZGV4T2YoJ21ndHYuY29tJykgIT0gLTEgJiYgdXJsLmluZGV4T2YoJ1VzZXItQWdlbnQnKSA9PSAtMSkge1xcXFxuICAgICAgICAgICAgdXJsID0gdXJsICsgJzt7VXNlci1BZ2VudEBhcHB9JztcXFxcbiAgICAgICAgfSBlbHNlIGlmICh1cmwuaW5kZXhPZignLmZsdicpICE9IC0xKSB7XFxcXG4gICAgICAgICAgICB1cmwgPSB1cmwgKyAnO3tVc2VyLUFnZW50QGFwcCYmUmVmZXJlckAnICsgdmlwVXJsICsgJ30nO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIHJldHVybiB1cmwgKyAnI2lzVmlkZW89dHJ1ZSMnO1xcXFxuICAgIH1cXFxcbn07XFxcXG5cXFxcbnZhciBQYXJzZVMgPSB7fTtcXFxcbnZhciBvcmlnaW5hbFBhcnNlUyA9IHtcXFxcbiAgICBDaXR5SVA6ICdodHRwOi8vcHYuc29odS5jb20vY2l0eWpzb24nLFxcXFxuICAgIHBjVUE6ICdVc2VyLUFnZW50QE1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjBcXFxcXFxcXO+8m1xcXFxcXFxc77ybIFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzYnLFxcXFxuICAgIGRlZmF1bHRQYXJzZTogZnVuY3Rpb24odXJsKSB7XFxcXG4gICAgICAgIHNob3dMb2FkaW5nKFxcXFxcXFwi5q2j5Zyo6LCD55So572R6aG16Kej5p6QLi4uXFxcXFxcXCIpO1xcXFxuICAgICAgICByZXR1cm4gJCh1cmwpLndlYkxhenkoKCkgPT4ge1xcXFxuICAgICAgICAgICAgdmFyIFVybHMgPSBfZ2V0VXJscygpO1xcXFxuICAgICAgICAgICAgdmFyIFJlZzEgPSAvXFxcXFxcXFwubXA0fFxcXFxcXFxcLm0zdThcXFxcXFxcXD98Lm0zdTgkfFxcXFxcXFxcLmZsdnxcXFxcXFxcXC5hdml8XFxcXFxcXFwucm12Yi87XFxcXG4gICAgICAgICAgICB2YXIgUmVnMiA9IC9wbGF5bTN1OHwuY3NzJHwuanMkfC5pY28kfGNuenpcXFxcXFxcXC4vO1xcXFxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBVcmxzLmxlbmd0aDsgaSsrKSB7XFxcXG4gICAgICAgICAgICAgICAgbGV0IGlzVXJsID0gVXJsc1tpXTtcXFxcbiAgICAgICAgICAgICAgICBpZiAoUmVnMS50ZXN0KGlzVXJsKSAmJiAhUmVnMi50ZXN0KGlzVXJsKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICBmYmEuaGlkZUxvYWRpbmcoKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlzVXJsICsgXFxcXFxcXCIjaXNWaWRlbz10cnVlI1xcXFxcXFwiO1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfSxcXFxcbiAgICBtYW9zczogZnVuY3Rpb24oanh1cmwsIHJlZiwga2V5KSB7XFxcXG4gICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICB2YXIgZ2V0VmlkZW9JbmZvID0gZnVuY3Rpb24odGV4dCkge1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiB0b29scy5BRVModGV4dCwga2V5LCBpdik7XFxcXG4gICAgICAgICAgICB9O1xcXFxuICAgICAgICAgICAgaWYgKHJlZikge1xcXFxuICAgICAgICAgICAgICAgIHZhciBodG1sID0gcmVxdWVzdChqeHVybCwge1xcXFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAnUmVmZXJlcic6IHJlZlxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIHZhciBodG1sID0gcmVxdWVzdChqeHVybCk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBpZiAoaHRtbC5pbmRleE9mKCcmYnR3YWY9JykgIT0gLTEpIHtcXFxcbiAgICAgICAgICAgICAgICBodG1sID0gcmVxdWVzdChqeHVybCArICcmYnR3YWYnICsgaHRtbC5tYXRjaCgvJmJ0d2FmKC4qPylcXFxcXFxcIi8pWzFdLCB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICdSZWZlcmVyJzogcmVmXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgdmFyIGl2ID0gaHRtbC5zcGxpdCgnX3Rva2VuID0gXFxcXFxcXCInKVsxXS5zcGxpdCgnXFxcXFxcXCInKVswXTtcXFxcbiAgICAgICAgICAgIGV2YWwoaHRtbC5tYXRjaCgvdmFyIGNvbmZpZyA9IHtbXFxcXFxcXFxzXFxcXFxcXFxTXSo/fS8pWzBdICsgJycpO1xcXFxuICAgICAgICAgICAgaWYgKGNvbmZpZy51cmwuc2xpY2UoMCwgNCkgIT0gJ2h0dHAnKSB7XFxcXG4gICAgICAgICAgICAgICAgY29uZmlnLnVybCA9IGRlY29kZVVSSUNvbXBvbmVudCh0b29scy5BRVMoY29uZmlnLnVybCwgXFxcXFxcXCJkdnlZUlFsblBSQ01kUVNlXFxcXFxcXCIsIGl2KSk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICByZXR1cm4gY29uZmlnLnVybDtcXFxcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcXFxuICAgICAgICAgICAgcmV0dXJuICcnO1xcXFxuICAgICAgICB9XFxcXG4gICAgfSxcXFxcbiAgICBMTFE6IGZ1bmN0aW9uKGp4dXJsKSB7XFxcXG4gICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICB2YXIgYXBpID0ganh1cmwuc3BsaXQoJz91cmw9JylbMF0gKyBcXFxcXFxcImFwaS5waHBcXFxcXFxcIjtcXFxcbiAgICAgICAgICAgIHZhciBiNjRpZCA9IGJhc2U2NEVuY29kZShqeHVybC5zcGxpdCgndXJsPScpWzFdKTtcXFxcbiAgICAgICAgICAgIHZhciBwYXJzZWlkID0gdG9vbHMuY2Flc2FyQ2lwaGVyKGI2NGlkLCAtMSk7XFxcXG4gICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UocmVxdWVzdChhcGksIHtcXFxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICdSZWZlcmVyJzoganh1cmxcXFxcbiAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxcXFxuICAgICAgICAgICAgICAgIGJvZHk6ICd1cmw9JyArIHBhcnNlaWRcXFxcbiAgICAgICAgICAgIH0pKTtcXFxcbiAgICAgICAgICAgIHVybCA9IChqc29uLmNvZGUgPT0gMjAwID8gYmFzZTY0RGVjb2RlKHRvb2xzLmNhZXNhckNpcGhlcihqc29uLnVybCwgLTEpKSA6ICcnKTtcXFxcbiAgICAgICAgICAgIHJldHVybiB1cmw7XFxcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcXFxcbiAgICAgICAgICAgIHJldHVybiAnJztcXFxcbiAgICAgICAgfVxcXFxuICAgIH0sXFxcXG4gICAgUGFuR3U6IGZ1bmN0aW9uKHZpcFVybCwgZGF0YSkge1xcXFxuICAgICAgICAvKnZhciByZWYgPSAnaHR0cHM6Ly93d3cucGFuZ3VqaWV4aS5jb20vJztcXFxcbiAgICAgICAgdmFyIHBhcnNlID0gJ2h0dHBzOi8vcGFuZ3VhcGkubnRyeWpkLm5ldC9qaWV4aS8/dXJsPScgKyB2aXBVcmw7XFxcXG4gICAgICAgIHZhciBhcGkgPSAnaHR0cHM6Ly9wYW5ndWFwaS5udHJ5amQubmV0L2ppZXhpL2FwaS5waHAnO1xcXFxuICAgICAgICAqL1xcXFxuICAgICAgICAvL3ZhciByZWYgPSAnaHR0cHM6Ly94bXlzdHYuY29tLyc7XFxcXG4gICAgICAgIC8vdmFyIHBhcnNlID0gJ2h0dHBzOi8vd3d3Ljk5a3B3LmNvbS9wYW5ndS9pbmRleC5waHA/dXJsPScgKyB0YWlsVXJsO1xcXFxuICAgICAgICAvL3ZhciBhcGkgPSAnaHR0cHM6Ly93d3cuOTlrcHcuY29tL3Bhbmd1L2FwaS5waHAnO1xcXFxuICAgICAgICB2YXIgcGFyc2UgPSBcXFxcXFxcImh0dHBzOi8vd3d3LnBhbmd1amlleGkuY29tL3Bhbmd1Lz91cmw9XFxcXFxcXCIgKyB2aXBVcmw7XFxcXG4gICAgICAgIHZhciBhcGkgPSBcXFxcXFxcImh0dHBzOi8vcGFuZ3VhcGkubnRyeWpkLm5ldC9wYW5ndTIwMjEvYXBpLnBocFxcXFxcXFwiO1xcXFxuICAgICAgICBpZiAoZGF0YSkge1xcXFxuICAgICAgICAgICAgcmVmID0gZGF0YVswXTtcXFxcbiAgICAgICAgICAgIHBhcnNlID0gZGF0YVsxXTtcXFxcbiAgICAgICAgICAgIGFwaSA9IGRhdGFbMl07XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgdmFyIFRpbWUgPSAoTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApICogMSkudG9TdHJpbmcoKTtcXFxcbiAgICAgICAgdmFyIGpzb24gPSByZXF1ZXN0KGFwaSwge1xcXFxuICAgICAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwiUmVmZXJlclxcXFxcXFwiOiBwYXJzZVxcXFxuICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgIGJvZHk6IFxcXFxcXFwidXJsPVxcXFxcXFwiICsgdmlwVXJsICsgXFxcXFxcXCImcmVmZXJlcj1cXFxcXFxcIiArIGJhc2U2NEVuY29kZShwYXJzZSkgKyBcXFxcXFxcIiZyZWY9MSZ0aW1lPVxcXFxcXFwiICsgVGltZSArIFxcXFxcXFwiJnR5cGU9Jm90aGVyPVxcXFxcXFwiICsgYmFzZTY0RW5jb2RlKHZpcFVybCkgKyBcXFxcXFxcIiZpb3M9MFxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgbWV0aG9kOiBcXFxcXFxcIlBPU1RcXFxcXFxcIlxcXFxuICAgICAgICB9KTtcXFxcbiAgICAgICAgdmFyIHVybCA9IGpzb25bMF0gPT0gXFxcXFxcXCJ7XFxcXFxcXCIgPyBKU09OLnBhcnNlKGpzb24pLnVybCA6IFxcXFxcXFwiXFxcXFxcXCI7XFxcXG4gICAgICAgIHJldHVybiB1cmw7XFxcXG4gICAgfSxcXFxcbiAgICB5dW4xNzE3OiBmdW5jdGlvbih2aXBVcmwpIHtcXFxcbiAgICAgICAgdmFyIGlzeWsgPSB2aXBVcmwuaW5kZXhPZigneW91a3UnKTtcXFxcbiAgICAgICAgdmFyIHJlZiA9IFxcXFxcXFwiaHR0cHM6Ly93d3cuMTcxN3l1bi5jb20vangvdHkucGhwP3VybD1cXFxcXFxcIiArIHZpcFVybDtcXFxcbiAgICAgICAgdmFyIHBhcnNlID0gXFxcXFxcXCJodHRwczovLzE3MTd5dW4uY29tLnpoMTg4Lm5ldC8wODI4Lz91cmw9XFxcXFxcXCIgKyB2aXBVcmw7XFxcXG4gICAgICAgIHZhciBhcGkgPSBcXFxcXFxcImh0dHBzOi8vMTcxN3l1bi5jb20uemgxODgubmV0LzEwMDQvLi5pbmRleC4ucGhwXFxcXFxcXCI7XFxcXG4gICAgICAgIHJldHVybiBpc3lrID09IC0xID8gdGhpcy5QYW5HdSh2aXBVcmwsIFtyZWYsIHBhcnNlLCBhcGldKSA6IHRoaXMuUGFuR3UodmlwVXJsLCBbcmVmICsgJyx2aXA6JywgcGFyc2UgKyAnLHZpcDonLCBhcGldKTtcXFxcbiAgICB9LFxcXFxuICAgIEZ1WGluZzogZnVuY3Rpb24odmlwVXJsKSB7XFxcXG4gICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICAvL2lmKHZpcFVybC5pbmRleE9mKCd2LnlvdWt1JykhPS0xKXtcXFxcbiAgICAgICAgICAgIC8vICAgIHZpcFVybCA9IChKU09OLnBhcnNlKHJlcXVlc3QodmlwVXJsLCB7cmVkaXJlY3Q6ZmFsc2UsIHdpdGhIZWFkZXJzOnRydWV9KSkuaGVhZGVycy5sb2NhdGlvbiArICcnKS5yZXBsYWNlKC9cXFxcXFxcXD8uKi8sJycpO1xcXFxuICAgICAgICAgICAgLy99XFxcXG4gICAgICAgICAgICB2YXIgcmVmID0gJ2h0dHBzOi8vangueHVldHVpZ3VhbmcuY24vamlleGkvP3VybD0nICsgdmlwVXJsO1xcXFxuICAgICAgICAgICAgdmFyIHBhcnNlID0gcmVmO1xcXFxuICAgICAgICAgICAgdmFyIGFwaSA9ICdodHRwczovL2p4Lnh1ZXR1aWd1YW5nLmNuL2ppZXhpL2FwaXVfZngucGhwJztcXFxcbiAgICAgICAgICAgIHJldHVybiB0aGlzLlBhbkd1KHZpcFVybCwgW3JlZiwgcGFyc2UsIGFwaV0pO1xcXFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxcXG4gICAgICAgICAgICByZXR1cm4gJyc7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9LFxcXFxuICAgIFxcXFxcXFwi8J+lmlxcXFxcXFwiOiBmdW5jdGlvbih2aXBVcmwpIHtcXFxcbiAgICAgICAgbGV0IOS9nOiAhV/op4bnlYznn6XlkI3lpKfkvaw7XFxcXG4gICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICB2YXIgcGxheSA9IEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJodHRwOi8vd3d3LnpydWlyeS5jb20veXVuL2FwaS5waHBcXFxcXFxcIiwge1xcXFxuICAgICAgICAgICAgICAgIGJvZHk6IFxcXFxcXFwidXJsPVxcXFxcXFwiICsgaW5wdXQsXFxcXG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcXFxcXFxcIlBPU1RcXFxcXFxcIlxcXFxuICAgICAgICAgICAgfSkpLnVybDtcXFxcbiAgICAgICAgICAgIGlmIChwbGF5LnN0YXJ0c1dpdGgoXFxcXFxcXCIvXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaHR0cHM6XFxcXFxcXCIgKyBwbGF5O1xcXFxuICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gcGxheTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiXFxcXFxcXCI7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG59O1xcXFxuXFxcXG52YXIgZnJvbXMgPSBbJ2R1b2R1b3p5JywgJ3J4JywgJ3JlbnJlbm1pJ107XFxcXG5mb3IobGV0IGkgaW4gZnJvbXMpIHtcXFxcbiAgICBsZXQgbmFtZSA9IGZyb21zW2ldICsgXFxcXFxcXCIo6YCa55So5Ye95pWwKVxcXFxcXFwiO1xcXFxuICAgIFBhcnNlU1tuYW1lXSA9IGZ1bmN0aW9uKFVybCwgcmVmZXJlcil7XFxcXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQYXJzZShyZWZlcmVyKTtcXFxcbiAgICB9O1xcXFxufVxcXFxuT2JqZWN0LmFzc2lnbihQYXJzZVMsIG9yaWdpbmFsUGFyc2VTLCBNeVBhcnNlUyk7XFxcXG4vL+imhueblumhuuW6j++8jOesrOS4ieS4quimhuebluesrOS6jOS4queEtuWQjuimhuebluesrOS4gOS4qlxcXFxuXFxcXG5cXFxcbmZ1bmN0aW9uIGF5dG1QYXJzZSh2aXBVcmwsIHBhcnNlTmFtZSkge1xcXFxuICAgIHRoaXMucmVxdWVzdCA9IGZ1bmN0aW9uKHBhcmFtMCwgcGFyYW0xLCBwYXJhbTIpIHtcXFxcbiAgICAgICAgcGFyYW0xID0gcGFyYW0xID09IHVuZGVmaW5lZCA/IHt9IDogcGFyYW0xO1xcXFxuICAgICAgICBpZihpc05hTihwYXJhbTEudGltZW91dCkpIHtcXFxcbiAgICAgICAgICAgIHBhcmFtMS50aW1lb3V0ID0gMzAwMDtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBwYXJhbTIgPSBNWV9SVUxFO1xcXFxuICAgICAgICB2YXIgcmV0U3RyID0gbWV0aG9kX3JlcXVlc3QuaW52b2tlKGphdmFDb250ZXh0LCBwYXJhbTAsIHBhcmFtMSwgcGFyYW0yKTtcXFxcbiAgICAgICAgcmV0dXJuIHJldFN0ciA9PSBudWxsID8gcmV0U3RyIDogcmV0U3RyICsgXFxcXFxcXCJcXFxcXFxcIjtcXFxcbiAgICB9O1xcXFxuICAgIHRoaXMuZmV0Y2ggPSBmdW5jdGlvbihwYXJhbTAsIHBhcmFtMSwgcGFyYW0yKSB7XFxcXG4gICAgICAgIHBhcmFtMSA9IHBhcmFtMSA9PSB1bmRlZmluZWQgPyB7fSA6IHBhcmFtMTtcXFxcbiAgICAgICAgcGFyYW0xLmhlYWRlcnMgPSBwYXJhbTEuaGVhZGVycyA9PSB1bmRlZmluZWQgPyB7fSA6IHBhcmFtMS5oZWFkZXJzO1xcXFxuICAgICAgICBwYXJhbTEuaGVhZGVyc1snVXNlci1BZ2VudCddID0gUENfVUE7XFxcXG4gICAgICAgIGlmKGlzTmFOKHBhcmFtMS50aW1lb3V0KSkge1xcXFxuICAgICAgICAgICAgcGFyYW0xLnRpbWVvdXQgPSAzMDAwO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIHBhcmFtMiA9IE1ZX1JVTEU7XFxcXG4gICAgICAgIHZhciByZXRTdHIgPSBtZXRob2RfZmV0Y2guaW52b2tlKGphdmFDb250ZXh0LCBwYXJhbTAsIHBhcmFtMSwgcGFyYW0yKTtcXFxcbiAgICAgICAgcmV0dXJuIHJldFN0ciA9PSBudWxsID8gcmV0U3RyIDogcmV0U3RyICsgXFxcXFxcXCJcXFxcXFxcIjtcXFxcbiAgICB9O1xcXFxuICAgIHZhciBob3N0ID0gdmlwVXJsLm1hdGNoKC9cXFxcXFxcXC4oLio/KVxcXFxcXFxcLy8pO1xcXFxuICAgIGhvc3QgPSBob3N0ID09IG51bGwgPyBudWxsIDogaG9zdFsxXTtcXFxcbiAgICB2YXIgbm9VcmwgPSBcXFxcXFxcInRvYXN0Oi8v5o6l5pS25Yiw55qE6ZO+5o6l5Li6OiBcXFxcXFxcIjtcXFxcbiAgICBzd2l0Y2ggKG15U2V0LnFqdSkge1xcXFxuICAgICAgICBjYXNlIFxcXFxcXFwi6buY6K6kXFxcXFxcXCI6XFxcXG4gICAgICAgICAgICBzd2l0Y2ggKGhvc3QpIHtcXFxcbiAgICAgICAgICAgICAgICBjYXNlIFxcXFxcXFwicXEuY29tXFxcXFxcXCI6XFxcXG4gICAgICAgICAgICAgICAgICAgIHN0ciA9IG15U2V0LnR4O1xcXFxuICAgICAgICAgICAgICAgICAgICBicmVhaztcXFxcbiAgICAgICAgICAgICAgICBjYXNlIFxcXFxcXFwiaXFpeWkuY29tXFxcXFxcXCI6XFxcXG4gICAgICAgICAgICAgICAgICAgIHN0ciA9IG15U2V0LnF5O1xcXFxuICAgICAgICAgICAgICAgICAgICBicmVhaztcXFxcbiAgICAgICAgICAgICAgICBjYXNlIFxcXFxcXFwieW91a3UuY29tXFxcXFxcXCI6XFxcXG4gICAgICAgICAgICAgICAgICAgIHN0ciA9IG15U2V0LnlrO1xcXFxuICAgICAgICAgICAgICAgICAgICBicmVhaztcXFxcbiAgICAgICAgICAgICAgICBjYXNlIFxcXFxcXFwibWd0di5jb21cXFxcXFxcIjpcXFxcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gbXlTZXQubWc7XFxcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcXFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcXFxcXCJiaWxpYmlsaS5jb21cXFxcXFxcIjpcXFxcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gbXlTZXQuYmw7XFxcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcXFxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XFxcXG4gICAgICAgICAgICAgICAgICAgIHN0ciA9IGhvc3QgPT0gbnVsbCA/IG5vVXJsIDogbXlTZXQub3RoO1xcXFxuICAgICAgICAgICAgICAgICAgICBicmVhaztcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGJyZWFrO1xcXFxuICAgICAgICBkZWZhdWx0OlxcXFxuICAgICAgICAgICAgc3RyID0gaG9zdCA9PSBudWxsID8gbm9VcmwgOiBteVNldC5xanU7XFxcXG4gICAgICAgICAgICBicmVhaztcXFxcbiAgICB9XFxcXG4gICAgaWYgKHBhcnNlTmFtZSkge1xcXFxuICAgICAgICBzdHIgPSBwYXJzZU5hbWU7XFxcXG4gICAgfVxcXFxuICAgIGxldCBteUNob2ljZSA9IHN0ci5zcGxpdCgnLCcpO1xcXFxuICAgIGxldCBsZW4gPSBteUNob2ljZS5sZW5ndGg7XFxcXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xcXFxuICAgICAgICBsZXQgbmFtZSA9IG15Q2hvaWNlW2ldO1xcXFxuICAgICAgICBpZiAodHlwZW9mIFBhcnNlU1tuYW1lXSA9PSAnZnVuY3Rpb24nKSB7XFxcXG4gICAgICAgICAgICBsZXQgdXJsID0gUGFyc2VTW25hbWVdKHZpcFVybCk7XFxcXG4gICAgICAgICAgICBsZXQgUmVnID0gbmV3IFJlZ0V4cChcXFxcXFxcIm0zdTh8bXA0fFxcXFxcXFwiICsgdmlwVXJsICsgXFxcXFxcXCJ8aHR0cFxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgIGlmIChpICE9IGxlbiAtIDEgJiYgIVJlZy50ZXN0KHVybCkpIHtcXFxcbiAgICAgICAgICAgICAgICBsb2cobmFtZSArICfop6PmnpDlpLHotKUnKTtcXFxcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIHJldHVybiB0b29scy5oYW5kbGVVcmwodXJsLCB2aXBVcmwsIG5hbWUpO1xcXFxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBQYXJzZVNbbmFtZV0gPT0gJ3N0cmluZycpIHtcXFxcbiAgICAgICAgICAgIHJldHVybiBQYXJzZVMuZGVmYXVsdFBhcnNlKFBhcnNlU1tuYW1lXSArIHZpcFVybCwgdG9vbHMuaGFuZGxlVXJsLCBuYW1lKTtcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIHJldHVybiBuYW1lLnN1YnN0cigwLCA0KSA9PSBcXFxcXFxcImh0dHBcXFxcXFxcIiB8fCBob3N0ID09IG51bGwgPyBuYW1lICsgdmlwVXJsIDogXFxcXFxcXCJ0b2FzdDovL1xcXFxcXFwiICsgbmFtZSArIFxcXFxcXFwiIOS4jeaYr+ebtOmTvuS5n+S4jeaYr+WFjeWXhVxcXFxcXFwiO1xcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxufTtcXFxcblxcXFxudmFyIHBsYXlQYXJzZSA9IHtcXFxcbiAgICBwbGF5ZXJTOiBmdW5jdGlvbihqdXJsKSB7XFxcXG4gICAgICAgIHZhciBodG1sID0gcmVxdWVzdChqdXJsKSxcXFxcbiAgICAgICAgICAgIFVybCA9ICcnLFxcXFxuICAgICAgICAgICAgZnJvbSA9ICcnO1xcXFxuICAgICAgICB2YXIgY29kZTEgPSBodG1sLm1hdGNoKC92YXIgcGxheWVyX1tcXFxcXFxcXHNcXFxcXFxcXFNdKj99Lyk7XFxcXG4gICAgICAgIHZhciBkcFVybCA9IHBkZmgoaHRtbCwgXFxcXFxcXCJpZnJhbWUmJmRhdGEtcGxheVxcXFxcXFwiKTtcXFxcbiAgICAgICAgaWYgKGNvZGUxICE9IG51bGwpIHtcXFxcbiAgICAgICAgICAgIGV2YWwoY29kZTFbMF0ucmVwbGFjZSgvcGxheWVyXy4qPz17LywgJ3BkYXRhPXsnKSk7XFxcXG4gICAgICAgICAgICBVcmwgPSBwZGF0YS51cmw7XFxcXG4gICAgICAgICAgICBmcm9tID0gcGRhdGEuZnJvbTtcXFxcbiAgICAgICAgfSBlbHNlIGlmIChkcFVybCAhPSAnJykge1xcXFxuICAgICAgICAgICAgVXJsID0gZHBVcmwuc3RhcnRzV2l0aChcXFxcXFxcImh0dHBcXFxcXFxcIikgPyBkZHBVcmwgOiBkcFVybC5zbGljZSgzKTtcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIGNvZGUyID0gaHRtbC5tYXRjaCgvdmFyIG5vd1tcXFxcXFxcXHNcXFxcXFxcXFNdKj92YXIgcG5bXFxcXFxcXFxzXFxcXFxcXFxTXSo/Oy8pO1xcXFxuICAgICAgICAgICAgaWYgKGNvZGUyICE9IG51bGwpIHtcXFxcbiAgICAgICAgICAgICAgICBldmFsKGNvZGUyWzBdKTtcXFxcbiAgICAgICAgICAgICAgICBVcmwgPSBub3c7XFxcXG4gICAgICAgICAgICAgICAgZnJvbSA9IHBuO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGlmIChVcmwuc3Vic3RyKDAsIDgpLm1hdGNoKC9KVC4uSlQuLi8pIHx8IFVybC5zdGFydHNXaXRoKFxcXFxcXFwiYUhSMFxcXFxcXFwiKSkge1xcXFxuICAgICAgICAgICAgVXJsID0gYmFzZTY0RGVjb2RlKFVybCk7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgaWYgKFVybC5zdWJzdHIoMCwgOCkubWF0Y2goLyUuLiUuLi8pKSB7XFxcXG4gICAgICAgICAgICBVcmwgPSB1bmVzY2FwZShVcmwpO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGlmIChmcm9tcy5pbmNsdWRlcyhmcm9tKSkge1xcXFxuICAgICAgICAgICAgdmFyIG5hbWUgPSBmcm9tICsgJyjpgJrnlKjlh73mlbApJztcXFxcbiAgICAgICAgICAgIHJldHVybiBQYXJzZVNbbmFtZV0oVXJsLCBqdXJsKTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBpZiAoL2h0bWx8YmlsaWJpbGkvLnRlc3QoVXJsKSkge1xcXFxuICAgICAgICAgICAgcmV0dXJuIGF5dG1QYXJzZShVcmwpO1xcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgcmV0dXJuIFVybC5zdGFydHNXaXRoKCdodHRwJykgPyBVcmwgKyAnI2lzVmlkZW89dHJ1ZSMnIDogUGFyc2VTLmRlZmF1bHRQYXJzZShqdXJsKTtcXFxcbiAgICAgICAgfVxcXFxuICAgIH0sXFxcXG4gICAgcGxheWVyX3h4OiBmdW5jdGlvbihqdXJsKSB7XFxcXG4gICAgICAgIHJldHVybiAkKGp1cmwpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgICAgIGV2YWwoZmV0Y2goSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9maWxlcy9jYWNoZS9NeVBhcnNlU2V0Lmpzb24nKSkuY2opKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBwbGF5UGFyc2UucGxheWVyUyhpbnB1dCk7XFxcXG4gICAgICAgIH0pIFxcXFxuICAgIH1cXFxcbn07XFxcXG5cXFxcbmZ1bmN0aW9uIHNldFBhcnNlKCkge1xcXFxuICAgIHRoaXMuZCA9IFtdO1xcXFxuICAgIHJlcXVpcmUoJ2h0dHBzOi8vZ2l0ZWEuY29tL0FJOTU3L0hpa2VyL3Jhdy9tL3YvUm91dGUuanMnKTtcXFxcbiAgICBSb3V0ZS5zZXRQYXJzZSgpO1xcXFxuICAgIHNldFJlc3VsdChkKTtcXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLosIPnlKjot6/nlLFcXFwiLFxcXCJwYXRoXFxcIjpcXFwiUm91dGVcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG5yZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7XFxcXG5zd2l0Y2ggKGdldFBhcmFtKFxcXFxcXFwidHlwZVxcXFxcXFwiKSkge1xcXFxuICAgIGNhc2UgXFxcXFxcXCLorr7nva5cXFxcXFxcIjpcXFxcbiAgICB0aGlzLmQgPSBbXTtcXFxcbiAgICAgICAgUm91dGUuc2V0UGFyc2UoKTtcXFxcbiAgICAgICAgc2V0UmVzdWx0KGQpO1xcXFxuICAgICAgICBicmVhaztcXFxcbiAgICBjYXNlIFxcXFxcXFwi57yW6L6RXFxcXFxcXCI6XFxcXG4gICAgdGhpcy5kID0gW107XFxcXG4gICByZXF1aXJlKGZMaW5rcy5qeEl0VXJsKTtcXFxcbiAgIGp4SXRlbS5qeExpc3QoKTtcXFxcbiAgIHNldFJlc3VsdChkKTtcXFxcbiAgICAgICAgYnJlYWs7XFxcXG4gICAgICAgIGRlZmF1bHQ6XFxcXG4gICAgICAgICQuZXhwb3J0cyA9IFJvdXRlO1xcXFxuICAgICAgICBicmVhaztcXFxcbn1cXFxcblxcXCJ9XVwifSIsInBpY1VybCI6Imh0dHBzOi8vc2NwaWMuY2hpbmF6Lm5ldC9GaWxlcy9waWMvaWNvbnMxMjgvODI0NS93Mi5wbmciLCJ0aXRsZSI6IuaWreaPkiJ9
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement