xiaomianao666

小程序:uckk云

Jul 10th, 2023
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@uckk云@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoidWNra+S6kSIsImF1dGhvciI6IlRob21hc+WWsiIsInVybCI6Imhpa2VyOi8vZW1wdHkjI3Vja2vkupEiLCJ2ZXJzaW9uIjoyMDIzMDcwOCwiY29sX3R5cGUiOiJtb3ZpZV8zIiwiY2xhc3NfbmFtZSI6IiIsInR5cGUiOiJhbGwiLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczpcbi8vIOWkuOWFi+S6keebmCAvIFVD5LqR55uYIOi1hOa6kOS4i+i9vVxuXG4vLyDloavlhpnmoLzlvI/lpoLkuItcbi8vIFtcIui1hOa6kOWQjeensFwiLCBcIui1hOa6kGlkXCIsIFwi5o+Q5Y+W56CBXCIsIFwi5paH5Lu2aWRcIiwgIFwi5o6S5bqP57G75Z6LXCIsIFwi5qC35byP57G75Z6LXCJdLFxuXG5cbi8vIOi1hOa6kOWQjeensCAtIOiHquWumuS5ieS9oOWWnOasoueahFxuXG5cbi8vIOi1hOa6kGlkIC0g5YiG5Lqr6ZO+5o6l6Z2g5ZCO6Z2i55qE5a2X56ymXG7jgIDjgIAgLy8g5L6L77yaaHR0cHM6Ly9wYW4ucXVhcmsuY24vcy/jgJBmMmFiNjM5YzJjNWTjgJEjL1xu44CA44CAIC8vIOKdl+ayoeaciei1hOa6kGlk5pe25Lya5Yik5a6a5Li644CQ5paw5YiG57G744CRXG5cblxuLy8g5o+Q5Y+W56CBIC0g5rKh5pyJ5bCx55WZ56m644CCXG5cblxuLy8g5paH5Lu2aWQgLSDmsqHmnInlsLHnlZnnqbrjgIJcbuOAgOOAgCAvLyDngrnlh7vmlofku7blpLnml7bvvIzor7fmsYLpk77mjqXnmoRwZGlyX2ZpZCjpnIDopoHmipPljIUpXG5cblxuLy8g5o6S5bqP57G75Z6LIC0g5Y+v5Lul5LiN5aGr77yM55WZ56m65Lmf6KGM44CCXG7jgIDjgIAgLy8gMCDvvIzmnIDov5Hmm7TmlrDmjpLjgIIo6buY6K6kKVxu44CAIC8vIDEg77yM5ZCN56ew5q2j5bqP5o6S44CCKOmYsuatouS5seW6j++8nylcbi8vIDIg77yM5Y+R5biD5pe26Ze05o6S44CCKOKJiOWQjeensOato+W6j++8nylcbi8vIDMg77yM5ZCN56ew5YCS5bqP5o6S44CCKOKJiOacgOi/keabtOaWsO+8nylcblxuXG4vLyDmoLflvI/nsbvlnosgLSDlj6/ku6XkuI3loavvvIznlZnnqbrkuZ/ooYzjgIJcbi8vIOeoi+W6j+m7mOiupCAtIOWtl+mdouaEj+aAnVxuLy8g5YW25LuW5qC35byPIC0g5aGr5YaZ5a2Y5Zyo55qE57uE5Lu25qC35byP5Y2z5Y+vXG5cblxuXG4vLyDotYTmupDliJfooahf5byA5aeLXG56eSA9IFtcbiAgICBbXCLpu5jorqRcIl0sXG4gICAgW1wi5pyA5paw5b2x6KeG4piF4piFXCIsIFwiNDhkYzViYjMzZmVkXCIsIFwiXCIsIFwiMzRhNWFmZTA0ZjM4NDQ5Y2JiZDgzMzYwMTU3NzBmMGRcIl0sXG4gICAgW1wi5aW95Y+L5Yqo5ryr4piF4piFXCIsIFwiOWZmNjRjNDU4MDMxXCIsIFwiXCIsIFwiOGFkZDUxNTcyMzc3NDQ0YTljOTIxMzg5OGU4YjJhM2FcIl0sXG4gICAgW1wi5pyA5paw55S15b2x4pmzXCIsIFwiZjBmZTk0ZmU3NzA2XCIsIFwiXCIsIFwiOTdhOTc1N2RlMjRkNGU3YzlmMzgzMmM4YTNmN2NkZDFcIl0sXG4gICAgW1wi5pyA5paw55S15b2x4pm0XCIsIFwiZDMzNzQ0NTI2MzgxXCIsIFwiXCIsIFwiYmU5OWY2ODZiYzc5NDQyMGJlNTIyNjZmODM0ZGZhODhcIl0sXG4gICAgW1wi5pyA5paw576O5Ymn4piFXCIsIFwiMTJjZmQ4OGFkNTU1XCIsIFwiXCIsIFwiYTM5YmU1MTYwMDAzNGZhYWJkZGE0MDI2OWE0NjhmNDhcIl0sXG4gICAgW1wi5b2x6KeG5aSn5YWo4piGXCIsIFwiYjA3N2UxOTY1NjUwXCIsIFwiXCIsIFwiOTI1Y2U4NDc4ZTVmNDM4N2EwMzQ2M2NlODA3OTE4NzZcIl0sXG4gICAgW1wi5b2x6KeGXCJdLFxuICAgIFtcIui/nOmJtOWtl+W5leKYhVwiLCBcIjVlOTZiMzJlZGM3ZFwiLCBcIlwiLCBcIjE4ZjQ3YmQxOGU2NTQwZDQ5NDVhODg3MzMwODEwMTFiXCJdLFxuICAgIFtcIuS4k+mimOWQiOmbhuKYhVwiLCBcIjEwMWFlZDUxZDc5ZVwiLCBcIlwiLCBcImNkYWNjNzNkNzlkZTQ0YTNhOGZhMGFiYmU2YWMyY2JlXCJdLFxuICAgIFtcIuS6uuS6uuW9seinhuKYhlwiLCBcIjk1MzQyYWM0ODkyOVwiLCBcIlwiLCBcIjgyZTUzYWIxZTVmYTRlZDVhM2I0YzE4OTZkYjMzMzUyXCJdLFxuICAgIFtcIueDremXqOW9seinhuKYhlwiLCBcImUxYzVjY2ZhNDhhM1wiLCBcIlwiLCBcIjY4OTQ5YTY2ZTdkZDQwNDY4M2YwYjAxMmIyMDIwMjg3XCJdLFxuICAgIFtcIueUteW9seWQiOmbhuKZtVwiLCBcImVmYWNkNmRmNmRjN1wiLCBcIlwiLCBcImFlMzFhZmI2MjQwMjRjZWZhZGMyODgxNTYzMGNhNjUwXCJdLFxuICAgIFtcIueUteW9seWQiOmbhuKZtlwiLCBcIjQ1NWUwMzY2ZGI0MFwiLCBcIlwiLCBcIjUzZDkxMTFjZWUyZjRlNzFhMmI2ZjJjZWUxODU3NTIzXCJdLFxuICAgIFtcIua8q+WogeeUteW9sVwiLCBcIjRjNzZmMjc1NzQwOFwiLCBcIlwiLCBcIjBiZDQxZDRmY2VhNjRkOGY4YjBhYWJjMWM5YTVkNTY4XCJdLFxuICAgIFtcIuixhueTo1RvcDI1MFwiLCBcIjM1MjRlYTg3ZTAzOVwiLCBcIlwiLCBcIjc3ZGQwNTFlMjhlNzRhZmE4MjcyODc2MTIyYjRlMDY2XCIsIDFdLFxuICAgIFtcIuaBkOaAlueJh1wiLCBcIjc4ZGQ1YzY2ZWVkZVwiLCBcIlwiLCBcImZhZGExNjExNDQ3NzQ1NGZhZjllNDc0NWQ0OTY0OTY5XCJdLFxuICAgIFtcIueUteinhuWJp1wiLCBcImQ2ZmVhODBlMDU1Y1wiLCBcIlwiLCBcIjliMDQ2MzM3YzE1YzQzODFhYWQ2YmEyYTRiMGQ4ZTE4XCJdLFxuICAgIFtcIuWKqOa8q1wiLCBcIjA2YjdjYmFkNzViZlwiLCBcIlwiLCBcIjRkM2VmYzZjNDZjNzQ5ZGFhNjkzYWIzNmFjMWVmZmYxXCJdLFxuICAgIFtcIuiFkOWJp1wiLCBcImFhZTMyM2U3YjRlZFwiLCBcIlwiLCBcIjI0N2U0NmViMmQ3MzQxYTE5ZmIwYzdhYjFhNDQwMWY1XCJdLFxuICAgIFtcIuaYjuaYn1wiXSxcbiAgICBbXCLmiLfnlLDmg6DmoqjppplcIiwgXCI1Mzk0ZDc3NzQwYTBcIiwgXCJcIiwgMF0sXG4gICAgW1wi5bKp5LqV5L+K5LqMXCIsIFwiNDdjYWMwZDYxNWVhXCIsIFwiXCIsIDBdLFxuICAgIFtcIuWImOW+t+WNjlwiLCBcImJkMTRjNzVjM2E2OFwiLCBcIlwiLCAwXSxcbiAgICBbXCLljJfph47mraZcIiwgXCJlMzI4NWE4NTBkY2JcIiwgXCJcIiwgMF0sXG4gICAgW1wi5ZC05LqsXCIsIFwiNmMyOTQ3NWVlZTI2XCIsIFwiXCIsIDBdLFxuICAgIFtcIuael+ato+iLsVwiLCBcIjM1NjU3NGFjMTBlYVwiLCBcIlwiLCAwXSxcbiAgICBbXCLmiJDpvplcIiwgXCI0ZjM0OTkwMTRjZjBcIiwgXCJcIiwgMF0sXG4gICAgW1wi6YKx5reR6LSeXCIsIFwiMzIzNDUxY2IzYWUwXCIsIFwiXCIsIDBdLFxuICAgIFtcIuWnnOa2m1wiLCBcIjMzNzA5ZDBkZjkxZVwiLCBcIlwiLCAwXSxcbiAgICBbXCLmnY7ov57mnbBcIiwgXCJkMWYyMTliODcxZTJcIiwgXCJcIiwgMF0sXG4gICAgW1wi5ZGo5pif6amwXCIsIFwiMzVmMmQwZTE4NGY5XCIsIFwiXCIsIDBdLFxuICAgIFtcIumprOS4nOmUoVwiLCBcIjhmNjg1MzA3MmNkZFwiLCBcIlwiLCAwXSxcbiAgICBbXCLmnY7nv7DnpaVcIiwgXCJhM2YxMDc2NDQwMDBcIiwgXCJcIiwgMF0sXG4gICAgW1wi5a6r5bSO6aqPXCIsIFwiM2ZmZGYwZjNmZGEwXCIsIFwiXCIsIFwiYzdhNmFlYWU3NzI1NDgwN2JlNDZlZDRmNGViOWRiZmVcIl0sXG4gICAgW1wi5p2O5Li954+NXCIsIFwiNmQ5N2E1YzhiM2Y3XCIsIFwiXCIsIDBdLFxuICAgIFtcIumfs+S5kFwiXSxcbiAgICBbXCLpn7PkuZDlkIjpm4ZcIiwgXCJiNjA5ZGFlYWVkNDZcIiwgXCJcIiwgXCJlYmM0ZGRiMmIwZWU0MzIwYjNiYWEwN2Y2OWFkMjU5ZFwiXSxcbiAgICBbXCLpn7PkuZDkuJPljLpcIiwgXCI0M2Q0MWM3OTFhNzJcIiwgXCJcIiwgXCJjNzBhOWRhM2NlN2U0MjY1YjQwZjEwZmNiZjk0MDFhZFwiXSxcbiAgICBbXCLml6DmjZ/pn7PkuZBcIiwgXCI3ZGU2MDFmNDA5YzFcIiwgXCJcIiwgXCI0YzI2NTU4MzJlNTE0ZWRmYTFiNzgwMzI0MGEyNDI3NFwiXSxcbiAgICBbXCI0NjTpn7PkuZBcIiwgXCJlODEzMGE0MjYzYjBcIiwgXCJcIiwgXCJkY2RmYzUxMDNhYmY0ZmNmYmZhYWVmZWRlYjczZWU4M1wiXSxcbiAgICBbXCJESiDpn7PkuZBcIiwgXCIxOGU1NTFiOTRmYmJcIiwgXCJcIiwgXCI2NzIyMjg3NGQxMTY0ZGU0ODgxNDE3OTM3MjNhYTBlOFwiXSxcbiAgICBbXCLnjovlipvlro9cIiwgXCI2NGNhN2Y5ZmJjNDVcIiwgXCJcIiwgXCIyOGU3NTNjYjg2NDI0OWI5OWNjNzZiYzhlMjVjZTU1OFwiXSxcbiAgICBbXCJNS1bikaBcIiwgXCJlMDEyOWE2ZDljZTFcIiwgXCJcIiwgXCIyMmI1NzYzYjlmOTQ0MmE1YmM1MTg1MzFkNGQ5YWMxNlwiXSxcbiAgICBbXCJNS1bikaFcIiwgXCI5MzNhNmYzMGEwZjhcIiwgXCJcIiwgXCJlOTE3YjY2YWM5YTE0ZDZhYWNlMmM0ZWYwMTQzYTZjYlwiXSxcbiAgICBbXCJNS1bikaJcIiwgXCJkM2I3ZjM4NTFhNjZcIiwgXCJcIiwgXCJiZGY3MDE4MjlhYjg0NmQ1OTAxNWY0OGU4MThmMzBmM1wiXSxcbiAgICBbXCJNS1bikaNcIiwgXCI3NzkwYmY1MTA3MTBcIiwgXCJcIiwgXCIwYjA4NTk2YjZlZjQ0YmUzOGFhMjAwMjE4NTE3ZTJlZlwiXSxcbiAgICBbXCJNS1bikaRcIiwgXCIwN2VkZTU5MTY3YWJcIiwgXCJcIiwgXCI4OTVkNjQ2N2FhY2M0NGNiYjJjZGQ3NDhiYWEzN2U4OFwiXSxcbiAgICBbXCJNS1bikaVcIiwgXCJkNTRiMjVhMjFhMTZcIiwgXCJcIiwgXCIwZDhhNDg3ZTVlMGE0OWVmYjdiZGFmNjVkYjJiOTVjM1wiXSxcbiAgICBbXCLmloflraZcIl0sXG4gICAgW1wi5q+P5pel6I2Q5Lmm4piFXCIsIFwiZGJiMjg0YjY2OGE1XCIsIFwiXCIsIFwiY2FjMGQ2MzNlMGYxNDdkOThiMjhjM2YyYWQ1ZGMzYmJcIl0sXG4gICAgW1wi55S15a2Q5Lmm5bqT4piGXCIsIFwiYTRkMmQyY2UyODljXCIsIFwiXCIsIFwiNzI4MjMzMTQ1YmY2NGU1MmJmMDQwMmIwOTdjODMyMWFcIl0sXG4gICAgW1wi56eR5bm7VG9wMTAwK1wiLCBcIjZmMTg5NThhZTcwZlwiLCBcIlwiLCBcIjZiZGM4YTZiNDkwODQ5ZjQ4YmU5NmIxMjY4Y2M0ZTE0XCJdLFxuICAgIFtcIui/nueOr+eUu1wiLCBcImZjNWYwNGE3MjE0MFwiLCBcIlwiLCBcImU1MTBjM2I2NTkxYzQ5NTFiZDI3MzBjNWY2ZDMxYzIwXCJdLFxuICAgIFtcIui9r+S7tlwiXSxcbiAgICBbXCLova/ku7bmuLjmiI9cIiwgXCJiMGQ4ZWQzMzhjZWRcIiwgXCJcIiwgMF0sXG4gICAgW1wi6Iu55p6c6L2v5Lu2XCIsIFwiYzkwMDA1MzI4MzdhXCIsIFwiXCIsIDBdLFxuICAgIFtcIuWuieWNk+i9r+S7tlwiLCBcIjFjOTAwMmY5Njg3MVwiLCBcIlwiLCAwXSxcbiAgICBbXCLnlLXohJHova/ku7ZcIiwgXCJkZjg4Y2ZkY2VlNGZcIiwgXCJcIiwgMF0sXG4gICAgW1wi5a2m5LmgXCJdLFxuICAgIFtcIuernui1m+S4k+WMulwiLCBcImNjZmQ4YTIzN2Q0MlwiLCBcIlwiLCBcImE3ZTM3ODQ3NTE2MDQ5MjE5Y2FjNTQwZmQ3MDViNWNhXCJdLFxuICAgIFtcIuWkp+WtpjQ257qnXCIsIFwiMTI1YjJmMzQxNDA0XCIsIFwiXCIsIFwiNzE0MTA3ZDE2OTk4NDc5Mjg3ZGUzYzU3YTFjNDc2OWNcIl0sXG4gICAgW1wi6Ieq6ICD6LWE5paZXCIsIFwiMmZhNmQ2NTI1OTUwXCIsIFwiXCIsIFwiZmM1ODZkMmIxZThlNDUwNzgwN2JlNjIyMzNmMmNjYzhcIl0sXG4gICAgW1wi6ICD6K+B6ICD57qnXCIsIFwiOTZkOTU3MzgxZDk5XCIsIFwiXCIsIFwiNzgwMWJkNzhjZjUwNDE0NDkxMzFjNzUwYzgxY2IxZmRcIl0sXG4gICAgW1wi6ICD56CU5LiT5Yy6XCIsIFwiZDIxODRlYTFkYzA4XCIsIFwiXCIsIFwiYzBhYmI0YjA0ZGUzNGMwNjgxZDgzODlmYTUxMDY4YTlcIl0sXG4gICAgW1wi5aSn5a2m5LiT5Yy6XCIsIFwiMjk5MTdmMTkyNjI4XCIsIFwiXCIsIFwiZWYzNjk2YzMwZDY0NGE0MTkxZGZlNDM4OGI3MWE5ZjhcIl0sXG4gICAgW1wi6auY5Lit5LiT5Yy6XCIsIFwiYzRjNDdkYzRkN2ZiXCIsIFwiXCIsIFwiZjBmM2E4M2IxMmFhNDg3MGFkZGE3NzczMmIyOTBmNDRcIl0sXG4gICAgW1wi5Yid5Lit5LiT5Yy6XCIsIFwiNmVlZTYwZjYwNjFkXCIsIFwiXCIsIFwiMmJlNmM1ZGNiZmYzNGIyOTg5NmI3NmEyNmUzYmRiYTVcIl0sXG4gICAgW1wi5bCP5a2m5LiT5Yy6XCIsIFwiMjAzZmY5ZjMzZWYyXCIsIFwiXCIsIFwiNzQ1NmEzZjE2NzZlNGVhMjkwYmNkZGQ0Y2JkMDIyYzFcIl0sXG4gICAgW1wi5bCR5YS/5LiT5Yy6XCIsIFwiNjA0ZWZjZjdhNjA1XCIsIFwiXCIsIFwiMWE3MGRhMjcwMGEyNDZmMWE4YzU4ZDEzOWRmYTdlNDFcIl0sXG4gICAgW1wi5YW25LuWXCJdLFxuICAgIFtcIuS/ruWbvuiuvuiuoVwiLCBcIjVjM2U3NjJiN2YxNlwiLCBcIlwiLCBcIjdkNTY0NDNjNTk0ODQ2M2FhNzgzYTFmYzMzY2Y4YWEzXCJdLFxuICAgIFtcIumHkeiejeeQhui0olwiLCBcIjJmMWZmODM5Y2U2M1wiLCBcIlwiLCBcImQxNTFjZDc0NmQxYzQzNDRiZjA0Nzg0OThjMWQxNDM2XCJdLFxuICAgIFtcIui/kOWKqOWBpei6q1wiLCBcIjhlZWVmMjFjM2ZiYlwiLCBcIlwiLCBcIjEwMGFkNzBiYzQ5NjRlNzA4ZGFhZjJiZjY2YjQzNGFjXCJdLFxuICAgIFtcIumfs+S5kOaVmeeoi1wiLCBcIjE3MWViZjk0ZTM5N1wiLCBcIlwiLCBcIjBjMDU0M2E3OGMyNTQ0YWM4ODBhMzE2MzY5ZmQwMzc5XCJdLFxuICAgIFtcIuWGmeS9nOaVmeeoi1wiLCBcIjViZmUwOTk0ZDhkYVwiLCBcIlwiLCBcIjgxNGQzZTA4MzJlODQ4Yzg4NjVlNzU4OTI0OWM2OGZmXCJdLFxuICAgIFtcIuWFtuS7luaKgOiDvVwiLCBcImE1MTA2NzRlMzI3ZFwiLCBcIlwiLCBcIjI5MDQ3ZWI4MDBhNDRhYzk5NGFlNWQzM2UwNmMyMmZiXCJdLFxuICAgIFtcIuS5puazleaVmeeoi1wiLCBcIjlkOTgyMGYyZjFhMlwiLCBcIlwiLCBcIjhiNzllMmUxYWRmYjQ2MzBiYWRmM2Y1YjFmMmFmMmU3XCJdLFxuICAgIFtcIuiBjOWcuuWIm+S4mlwiLCBcIjZlODg0OGRkZGZhZlwiLCBcIlwiLCBcImRiMmE0YmMwMDgzMDQxMzRiOTBhZTA4OTg2Mzk5YTcxXCJdLFxuICAgIFtcIue+juacr+e7mOeUu1wiLCBcImQ4NzhjZjhjODZiY1wiLCBcIlwiLCBcIjIwOTQ0NWMzOWRlNjRhMDNhMjc4MGM0ZGU0NDhjODAwXCJdLFxuICAgIFtcIuaRhOW9seaVmeeoi1wiLCBcIjMzNTk3NDZhYTQwYlwiLCBcIlwiLCBcIjQxMDliMWM1YWM0MTQ5OWQ5Yjk4YmY2OTlkYzlhY2UxXCJdLFxuICAgIFtcIuaKlumfs+i/kOiQpVwiLCBcIjQ2M2ViODEwNGY4MFwiLCBcIlwiLCBcImE5YWIwZDMxMWM5NzRkMmI5OTU3MTg2ZTQ4MWM0MDM1XCJdLFxuICAgIFtcIuinhumikeWJqui+kVwiLCBcIjY3NmJhYmU1NTkzMlwiLCBcIlwiLCBcIjJlNzg0ZTAyMWEwOTQyNzJhZWIyYmMxYTFiOTVkMzE5XCJdLFxuICAgIFtcIue8lueoi+W8gOWPkVwiLCBcImQ5YWJkYTcxNTI0NFwiLCBcIlwiLCBcIjZiY2JiM2FhOGM4MzRiYTE4M2YxOWMwZDE5ZDE4MzVmXCJdXG5dOyAvL+i1hOa6kOWIl+ihqF/nu5PmnZ9cbiQucmVxdWlyZSgnaG9tZT9ydWxlPXVja2vkupEnKTsiLCJzZWFyY2hfdXJsIjoiaGlrZXI6Ly9lbXB0eSMjI2Z5cGFnZSMjIyoqIiwiZ3JvdXAiOiLikaDikaDlkKzlkKwiLCJzZWFyY2hGaW5kIjoianM6XG4kLnJlcXVpcmUoJ3NlYXJjaD9ydWxlPXVja2vkupEnKTsiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIiLCJ1YSI6Im1vYmlsZSIsInByZVJ1bGUiOiIiLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6K+35rGC5Ye95pWwXCIsXCJwYXRoXCI6XCJpbmZvXCIsXCJydWxlXCI6XCJqczpcXG5zYXJyID0gWyAvLyDmjqXlj6PlkI3np7DvvIzmjqXlj6NzaWRcXG4gICAgW1xcXCLogZrlkIjmkJzntKJcXFwiLCA5OTldLFxcbiAgICBbXFxcIui2o+ebmOaQnOe0olxcXCIsIDFdLFxcbiAgICBbXFxcIuadpeaQnOS4gOS4i1xcXCIsIDJdLFxcbiAgICBbXFxcIuebmOaQnOi1hOa6kFxcXCIsIDNdLFxcbiAgICBbXFxcIueIseebmOaQnOe0olxcXCIsIDRdLFxcbiAgICBbXFxcIuWPo+iii+S6keebmFxcXCIsIDVdLFxcbiAgICBbXFxcIuWwj+S6keaQnOe0olxcXCIsIDZdLFxcbiAgICBbXFxcIuapmOWtkOW9seaQnFxcXCIsIDddLFxcbiAgICBbXFxcImtr6LWE5rqQ572RXFxcIiwgOF0sXFxuXTtcXG5zb3J0MSA9IFtcXFwi5pyA6L+R5pu05pawXFxcIiwgXFxcIuWQjeensOato+W6j1xcXCIsIFxcXCLlkI3np7DlgJLluo9cXFwiLCBcXFwi5Y+R5biD5pe26Ze0XFxcIl07XFxuc29ydDIgPSBbXFxcInVwZGF0ZWRfYXQlM0FkZXNjXFxcIiwgXFxcImZpbGVfbmFtZSUzQWFzY1xcXCIsIFxcXCJmaWxlX25hbWUlM0FkZXNjXFxcIiwgXFxcInVwZGF0ZWRfYXQlM0Fhc2NcXFwiXTtcXG5zdHlsZSA9IFtcXFwi56iL5bqP6buY6K6kXFxcIiwgXFxcImF2YXRhclxcXCIsIFxcXCJ0ZXh0XzFcXFwiLCBcXFwibW92aWVfM19tYXJxdWVlXFxcIl07XFxuXFxuXFxuXFxuXFxuY29uc3QgZW1wdHkgPSAnaGlrZXI6Ly9lbXB0eSMjZnlwYWdlJztcXG5cXG5jb25zdCBDb2xvciA9ICh0ZXN0KSA9PiB7XFxuICAgIHJldHVybiAnPGZvbnQgY29sb3I9XFxcIiNGQTcyOThcXFwiPicgKyB0ZXN0ICsgJzwvZnJvbnQ+JztcXG59XFxuXFxuY29uc3QgU3Ryb25nID0gKHRlc3QpID0+IHtcXG4gICAgcmV0dXJuICc8c3Ryb25nPicgKyB0ZXN0ICsgJzwvc3Ryb25nPic7XFxufVxcblxcbmNvbnN0IFJpY2ggPSAodGVzdCkgPT4ge1xcbiAgICByZXR1cm4gXFxcIuKAmOKAmOKAmeKAmVxcXCIgKyB0ZXN0O1xcbn1cXG5cXG5cXG5cXG5wb3N0ID0gKHVybCwgYm9keSkgPT4gSlNPTi5wYXJzZShmZXRjaCh1cmwsIHtcXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoYm9keSksXFxuICAgIG1ldGhvZDogJ1BPU1QnXFxufSkpO1xcblxcblxcblxcbi8vIOiOt+WPlnN0b2tlblxcbmdldHMgPSAocHdkX2lkLCBwYXNzY29kZSkgPT4ge1xcbiAgICB1cmwgPSAnaHR0cHM6Ly9wYW4ucXVhcmsuY24vMS9jbG91ZGRyaXZlL3NoYXJlL3NoYXJlcGFnZS90b2tlbic7XFxuICAgIGJvZHkgPSB7XFxuICAgICAgICBwd2RfaWQ6IHB3ZF9pZCxcXG4gICAgICAgIHBhc3Njb2RlOiBwYXNzY29kZVxcbiAgICB9O1xcbiAgICBfID0gcG9zdCh1cmwsIGJvZHkpO1xcbiAgICBpZiAoXy5zdGF0dXMgPT0gMjAwKSB7XFxuICAgICAgICBzdG9rZW4gPSBfLmRhdGEuc3Rva2VuO1xcbiAgICAgICAgc3Rva2VuID0gZW5jb2RlVVJJQ29tcG9uZW50KHN0b2tlbik7XFxuICAgICAgICBwdXRNeVZhcignc3Rva2VuJywgc3Rva2VuKTtcXG4gICAgICAgIHJldHVybiB0cnVlO1xcbiAgICB9XFxuICAgIHJldHVybiBmYWxzZTtcXG59XFxuXFxuXFxuXFxuXFxuLy8g6LWE5rqQ5aSn5bCPXFxuZ2V0eiA9IChiKSA9PiB7XFxuICAgIGtiID0gfn4oYiAqIDEwMCAvIDEwMjQpIC8gMTAwO1xcbiAgICBpZiAoa2IgPiAxMDI0KSB7XFxuICAgICAgICBtYiA9IH5+KGtiICogMTAwIC8gMTAyNCkgLyAxMDBcXG4gICAgICAgIGlmIChtYiA+IDEwMjQpIHtcXG4gICAgICAgICAgICBnYiA9IH5+KG1iICogMTAwIC8gMTAyNCkgLyAxMDBcXG4gICAgICAgICAgICByZXR1cm4gZ2IudG9GaXhlZCgyKSArICdHQic7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gbWIudG9GaXhlZCgyKSArICdNQic7XFxuICAgIH1cXG4gICAgcmV0dXJuIGtiLnRvRml4ZWQoMikgKyAnS0InO1xcbn1cXG5cXG5cXG5cXG4vLyDojrflj5botYTmupDliJfooahcXG5nZXRkID0gKHB3ZF9pZCwgcGFzc2NvZGUsIHBkaXJfZmlkLCBzb3J0bnVtLCBzdHlsZTEpID0+IHtcXG5cXG4gICAgLy8g5pS26JeP5ZCO6YeN5byA5pegc3Rva2Vu44CCXFxuICAgIC8vIOWFiOWIpOWumu+8jOWwkeWKoOi9veS4gOasoemTvuaOpeOAglxcbiAgICBpZiAoZ2V0TXlWYXIoJ3N0b2tlbicpID09ICcnKSB7XFxuICAgICAgICBpZiAoZ2V0cyhwd2RfaWQsIHBhc3Njb2RlKSkge1xcbiAgICAgICAgICAgIHJldHVybiBnZXRkKHB3ZF9pZCwgcGFzc2NvZGUsIHBkaXJfZmlkKTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBkID0gW3tcXG4gICAgICAgICAgICB0aXRsZTogXy5tZXNzYWdlXFxuICAgICAgICB9XTtcXG4gICAgfVxcbiAgICBzZXRQYWdlUGljVXJsKFxcXCJcXFwiKTtcXG4gICAgUGFnZVRpdGxlID0gZ2V0UGFnZVRpdGxlKCkucmVwbGFjZSgvXFxcXHMqXFxcXC1cXFxccypb5L+d5o6S5qC35YiGXVvlrZjluo/lvI/kuqtdXFxcXHMqJC8sICcnKTtcXG4gICAgc2V0UGFnZVRpdGxlKFBhZ2VUaXRsZSk7XFxuICAgIGNvcHl1cmwgPSB7XFxuICAgICAgICB0aXRsZTogJyDimIYg5YiG5Lqr6LWE5rqQ6ZO+5o6lIOKYhiAnLFxcbiAgICAgICAganM6ICQudG9TdHJpbmcoKHB3ZF9pZCwgcGFzc2NvZGUpID0+IHtcXG4gICAgICAgICAgICB1cmwgPSBcXFwiY29weTovL2h0dHBzOi8vcGFuLnF1YXJrLmNuL3MvXFxcIiArIHB3ZF9pZDtcXG4gICAgICAgICAgICBpZiAocGFzc2NvZGUpIHtcXG4gICAgICAgICAgICAgICAgdXJsICs9IFxcXCJcXFxcblxcXFxu5o+Q5Y+W56CBJO+8mlxcXCIgKyBwYXNzY29kZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmV0dXJuIHVybFxcbiAgICAgICAgfSwgcHdkX2lkLCBwYXNzY29kZSlcXG4gICAgfTtcXG5cXG5cXG4gICAgaWYgKHNvcnRudW0gPT0gJ3VuZGVmaW5lZCcgfHwgIXNvcnRudW0pIHtcXG4gICAgICAgIHNvcnRudW0gPSBnZXRJdGVtKCdzb3J0bnVtJywgJzAnKTtcXG4gICAgfVxcbiAgICBpZiAoc3R5bGUxID09ICd1bmRlZmluZWQnIHx8ICFzdHlsZTEpIHtcXG4gICAgICAgIHN0eWxlMSA9IGdldEl0ZW0oJ3N0eWxlMScsICfnqIvluo/pu5jorqQnKTtcXG4gICAgfVxcblxcblxcbiAgICBzb3J0bnVtID0gTnVtYmVyKGdldE15VmFyKCdzb3J0bnVtJywgc29ydG51bSkpO1xcbiAgICBzdHlsZTEgPSBTdHJpbmcoZ2V0TXlWYXIoJ3N0eWxlMScsIHN0eWxlMSkpO1xcbiAgICBjbGVhck15VmFyKCdzb3J0bnVtJyk7XFxuICAgIGNsZWFyTXlWYXIoJ3N0eWxlMScpO1xcblxcblxcblxcbiAgICBkID0gW107XFxuICAgIGV4dHJhID0ge1xcbiAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgIHRpdGxlOiAnIOKYhSDmiZPlvIDkuLrmlrDkuoznuqcg4piFICcsXFxuICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGlucHV0KSA9PiB7XFxuICAgICAgICAgICAgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5JykucnVsZSgoaW5wdXQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2luZm8/cnVsZT11Y2tr5LqRJywge30pKS5ydWxlKTtcXG4gICAgICAgICAgICAgICAgICAgIFtwd2RfaWQsIHBhc3Njb2RlLCBwZGlyX2ZpZCwgc29ydG51bSwgc3R5bGUxXSA9IGlucHV0LnNwbGl0KCcjJyk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0cyhwd2RfaWQsIHBhc3Njb2RlKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldGQocHdkX2lkLCBwYXNzY29kZSwgcGRpcl9maWQsIHNvcnRudW0sIHN0eWxlMSk7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXy5tZXNzYWdlXFxuICAgICAgICAgICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgICAgICAgICAgfSwgaW5wdXQpO1xcbiAgICAgICAgICAgIH0sIHB3ZF9pZCArICcjJyArIHBhc3Njb2RlICsgJyMnICsgcGRpcl9maWQgKyAnIycgKyBzb3J0bnVtICsgXFxcIiNcXFwiICsgc3R5bGUxKVxcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRpdGxlOiAnIOKYhSDlpI3liLbmkJzntKLor63lj6Ug4piFICcsXFxuICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHB3ZF9pZCwgcGFzc2NvZGUsIHBkaXJfZmlkLCBzb3J0bnVtKSA9PiB7XFxuICAgICAgICAgICAgICAgIHVybCA9IFxcXCJjb3B5Oi8vL3MvXFxcIiArIHB3ZF9pZCArIFxcXCIvcGRpcl9maWQvXFxcIiArIHBkaXJfZmlkICsgXFxcIi9zb3J0bnVtL1xcXCIgKyBzb3J0bnVtO1xcbiAgICAgICAgICAgICAgICBpZiAocGFzc2NvZGUpIHtcXG4gICAgICAgICAgICAgICAgICAgIHVybCArPSBcXFwiJFxcXCIgKyBwYXNzY29kZTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICByZXR1cm4gdXJsXFxuICAgICAgICAgICAgfSwgcHdkX2lkLCBwYXNzY29kZSwgcGRpcl9maWQsIHNvcnRudW0pXFxuICAgICAgICB9LCBjb3B5dXJsXVxcbiAgICB9O1xcblxcblxcbiAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNtYWxsPjxmb250IGNvbG9yPSMyMGIyYWE+JyArIFBhZ2VUaXRsZSArICc8L2ZvbnQ+PC9zbWFsbD4nLFxcbiAgICAgICAgICAgIGRlc2M6ICfigJjigJjigJnigJk8c21hbGw+PGZvbnQgY29sb3I9I2ZmN2Y1MD7mjpLluo/vvJonICsgc29ydDFbc29ydG51bV0gKyAn44CA5qC35byP77yaJyArIHN0eWxlMSArICc8L2ZvbnQ+PC9zbWFsbD4nLFxcbiAgICAgICAgICAgIHVybDogJChbXFxcIui/lOWbnuS4iue6p1xcXCIsIFxcXCLmn6XnnIvmlLbol49cXFwiXSwgMSwgJ+ivt+mAieaLqScpLnNlbGVjdCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHN3aXRjaCAoaW5wdXQpIHtcXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ+i/lOWbnuS4iue6pyc6XFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gJ2hpa2VyOi8vaG9tZUB1Y2tr5LqRJztcXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ+afpeeci+aUtuiXjyc6XFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gJ2hpa2VyOi8vY29sbGVjdGlvbj9ydWxlPXVja2vkupEnO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHJldHVybiB1cmw7XFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFJpY2goU3Ryb25nKENvbG9yKCfkv53lrZgnKSkpLFxcbiAgICAgICAgICAgIHVybDogJC5yZXF1aXJlKFxcXCLkv53lrZg/cnVsZT11Y2tr5LqRXFxcIikoUGFnZVRpdGxlLCBwd2RfaWQsIHBhc3Njb2RlLCBwZGlyX2ZpZCwgc29ydG51bSwgc3R5bGUxKSxcXG4gICAgICAgICAgICBpbWc6ICdodHRwczovL2docHJveHkuY29tL2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9sczEyNTc4MTAwMy9sbXR1Ymlhby9tYWluL3JlZC84LnBuZycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uX3JvdW5kX3NtYWxsXzQnLFxcbiAgICAgICAgICAgIGV4dHJhOiBleHRyYVxcbiAgICAgICAgfSk7XFxuXFxuXFxuXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBSaWNoKFN0cm9uZyhDb2xvcign5o6S5bqPJykpKSxcXG4gICAgICAgICAgICB1cmw6ICQoc29ydDEsIDEsICfor7fpgInmi6knKS5zZWxlY3QoKHN0eWxlMSkgPT4ge1xcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGlucHV0KSB7XFxuICAgICAgICAgICAgICAgICAgICBjYXNlICfmnIDov5Hmm7TmlrAnOlxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdzb3J0bnVtJywgJzAnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ+WQjeensOato+W6jyc6XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3NvcnRudW0nLCAnMScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAn5ZCN56ew5YCS5bqPJzpcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignc29ydG51bScsICcyJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICBjYXNlICflj5HluIPml7bpl7QnOlxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdzb3J0bnVtJywgJzMnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBwdXRNeVZhcignc3R5bGUxJywgc3R5bGUxKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICB9LCBzdHlsZTEpLFxcbiAgICAgICAgICAgIGltZzogJ2h0dHBzOi8vZ2hwcm94eS5jb20vaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2xzMTI1NzgxMDAzL2xtdHViaWFvL21haW4vcmVkLzQwLnBuZycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uX3JvdW5kX3NtYWxsXzQnLFxcbiAgICAgICAgICAgIGV4dHJhOiBleHRyYVxcbiAgICAgICAgfSk7XFxuXFxuXFxuXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBSaWNoKFN0cm9uZyhDb2xvcign5qC35byPJykpKSxcXG4gICAgICAgICAgICB1cmw6ICQoc3R5bGUsIDEsICfor7fpgInmi6knKS5zZWxlY3QoKHNvcnRudW0pID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3NvcnRudW0nLCBzb3J0bnVtKTtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3N0eWxlMScsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgIH0sIFN0cmluZyhzb3J0bnVtKSksXFxuICAgICAgICAgICAgaW1nOiAnaHR0cHM6Ly9naHByb3h5LmNvbS9odHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbHMxMjU3ODEwMDMvbG10dWJpYW8vbWFpbi9yZWQvMjcucG5nJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fcm91bmRfc21hbGxfNCcsXFxuICAgICAgICAgICAgZXh0cmE6IGV4dHJhXFxuICAgICAgICB9KTtcXG5cXG5cXG5cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFJpY2goU3Ryb25nKENvbG9yKCfliIbkuqsnKSkpLFxcbiAgICAgICAgICAgIHVybDogJChbJ+aJk+W8gOS4uuaWsOS6jOe6pycsICflpI3liLbmkJzntKLor63lj6UnLCAn5YiG5Lqr6LWE5rqQ6ZO+5o6lJ10sIDEsICfor7fpgInmi6knKS5zZWxlY3QoKGxpc3QpID0+IHtcXG4gICAgICAgICAgICAgICAgZm9yIChpIGluIGxpc3QpIHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChsaXN0W2ldLnRpdGxlLm1hdGNoKGlucHV0KSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHJldHVybiBldmFsKGxpc3RbaV0uanMpXFxuICAgICAgICAgICAgfSwgZXh0cmEubG9uZ0NsaWNrKSxcXG4gICAgICAgICAgICBpbWc6ICdodHRwczovL2docHJveHkuY29tL2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9sczEyNTc4MTAwMy9sbXR1Ymlhby9tYWluL3JlZC8xMi5wbmcnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF9zbWFsbF80JyxcXG4gICAgICAgICAgICBleHRyYTogZXh0cmFcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuXFxuXFxuXFxuXFxuXFxuXFxuICAgIHVybCA9IFxcXCJodHRwczovL3Bhbi5xdWFyay5jbi8xL2Nsb3VkZHJpdmUvc2hhcmUvc2hhcmVwYWdlL2RldGFpbD9wd2RfaWQ9XFxcIiArIHB3ZF9pZCArIFxcXCImc3Rva2VuPVxcXCIgKyBnZXRNeVZhcignc3Rva2VuJykgKyBcXFwiJnBkaXJfZmlkPVxcXCIgKyBwZGlyX2ZpZCArIFxcXCImZm9yY2U9MCZfcGFnZT1cXFwiICsgTVlfUEFHRSArIFxcXCImX3NpemU9NTAmX3NvcnQ9ZmlsZV90eXBlJTNBYXNjJTJDXFxcIiArIHNvcnQyW3NvcnRudW1dO1xcblxcbiAgICBfID0gX18gPSBKU09OLnBhcnNlKGZldGNoKHVybCkpO1xcblxcblxcbiAgICBpZiAoXy5jb2RlICE9IDAgfHwgXy5tZXNzYWdlID09IFxcXCLliIbkuqvnmoRzdG9rZW7ov4fmnJ9cXFwiKSB7XFxuICAgICAgICBpZiAoZ2V0cyhwd2RfaWQsIHBhc3Njb2RlKSkge1xcbiAgICAgICAgICAgIHJldHVybiBnZXRkKHB3ZF9pZCwgcGFzc2NvZGUsIHBkaXJfZmlkKTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBkID0gW3tcXG4gICAgICAgICAgICB0aXRsZTogXy5tZXNzYWdlXFxuICAgICAgICB9XTtcXG4gICAgfTtcXG5cXG4gICAgdHJ5IHtcXG4gICAgICAgIF9fLmRhdGEubGlzdC5tYXAoXyA9PiB7XFxuICAgICAgICAgICAgdGltZSA9IFxcXCLij7HvuI8gXFxcIiArICQuZGF0ZUZvcm1hdChfLnVwZGF0ZWRfYXQsICd5eXl5LU1NLWRkJykgKyBcXFwi44CAXFxcIjtcXG5cXG4gICAgICAgICAgICAvLyDmlofku7blpLnltYzlpZdcXG4gICAgICAgICAgICBpZiAoXy5maWxlX3R5cGUgPT09IDApIHtcXG4gICAgICAgICAgICAgICAgaWYgKF8uaW5jbHVkZV9pdGVtcyA9PT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgbnVtID0gJ/Cfk4EgJyArIF8uaW5jbHVkZV9pdGVtcyArICfpobknO1xcbiAgICAgICAgICAgICAgICAgICAgdXJsID0gJ3RvYXN0Oi8v5rKh5pyJ6LWE5rqQJztcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIG51bSA9ICfwn5eC77iPICcgKyBfLmluY2x1ZGVfaXRlbXMgKyAn6aG5JztcXG4gICAgICAgICAgICAgICAgICAgIHVybCA9ICQoZW1wdHkpLnJ1bGUoKGlucHV0KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvaW5mbz9ydWxlPXVja2vkupEnLCB7fSkpLnJ1bGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIF8gPSBpbnB1dC5zcGxpdCgnIycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldGQoX1swXSwgX1sxXSwgX1syXSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgcHdkX2lkICsgXFxcIiNcXFwiICsgcGFzc2NvZGUgKyBcXFwiI1xcXCIgKyBfLmZpZCk7XFxuICAgICAgICAgICAgICAgIH1cXG5cXG5cXG4gICAgICAgICAgICAgICAgZXh0cmEgPSB7XFxuICAgICAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IF8uZmlsZV9uYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnIOKYhSDlpI3liLbmkJzntKLor63lj6Ug4piFICcsXFxuICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHB3ZF9pZCwgcGFzc2NvZGUsIHBkaXJfZmlkLCBzb3J0bnVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9IFxcXCJjb3B5Oi8vL3MvXFxcIiArIHB3ZF9pZCArIFxcXCIvcGRpcl9maWQvXFxcIiArIHBkaXJfZmlkO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFzc2NvZGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCArPSBcXFwiJFxcXCIgKyBwYXNzY29kZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXJsXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgcHdkX2lkLCBwYXNzY29kZSwgXy5maWQsIHNvcnRudW0pXFxuICAgICAgICAgICAgICAgICAgICB9LCBjb3B5dXJsXVxcbiAgICAgICAgICAgICAgICB9XFxuXFxuXFxuICAgICAgICAgICAgICAgIGlmIChzdHlsZTEgPT0gJ+eoi+W6j+m7mOiupCcpIHtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF8uZmlsZV9uYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjIvMDgvMDUvNS8xMTBfZmE2NjBlMTNlZDY3Zjg2ODgyMDUwMWU2YWNlNmQ1ZTFfY29uXzEzMHgxMzAucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IGV4dHJhXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpbWUgKyBudW0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiBleHRyYVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBfLmZpbGVfbmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiB0aW1lICsgbnVtLFxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjIvMDgvMDUvNS8xMTBfZmE2NjBlMTNlZDY3Zjg2ODgyMDUwMWU2YWNlNmQ1ZTFfY29uXzEzMHgxMzAucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogc3R5bGUxLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiBleHRyYVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgLy8g5LiN5piv6Z+z6aKR5oiW6KeG6aKR5pe277yM5LiN5Yqg5YWl6ZuG5pWw5YiX6KGo44CCXFxuICAgICAgICAgICAgaWYgKCFfLmZpbGVfbmFtZS5tYXRjaCgvXFxcXC4oYXZpfHdtdnxtcGVnfG1wNHxtNHZ8bW92fGFzZnxmbHZ8ZjR2fHJtdmJ8cm18M2dwfHZvYnxta3Z8bTN1OHxhYWN8YWMzfGFpZmZ8YW1yfG00YXxtcDJ8bXAzfG9nZ3xyYXxhdXx3YXZ8d21hfG1rYXxmbGFjfHdhdikvKSkge1xcbiAgICAgICAgICAgICAgICB0eXBlID0gXFxcIm5vXFxcIjtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB0eXBlID0gXFxcIlxcXCI7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHVybCA9IF8uZmlkICsgXFxcIiNcXFwiICsgcHdkX2lkICsgXFxcIiNcXFwiICsgXy5zaGFyZV9maWRfdG9rZW4gKyBcXFwiI1xcXCIgKyBwYXNzY29kZSArIGdldFU7XFxuICAgICAgICAgICAgZGVzYyA9IHRpbWUgKyBcXFwi8J+TpSBcXFwiICsgZ2V0eihfLnNpemUpO1xcblxcbiAgICAgICAgICAgIGlmIChzdHlsZTEgPT0gJ+eoi+W6j+m7mOiupCcpIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBfLmZpbGVfbmFtZSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogdXJsLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBfLnRodW1ibmFpbCB8fCAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMi8wNy8yNi83LzExMF8xOWQ5ODIzODE3YTgzMzcwNGQ2ZTliNDBjNzFkYTA0Ml9jb25fMTMweDEzMC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IF8uZmlsZV9uYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogdHlwZSArICdwbGF5bGlzdCdcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogZGVzYyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogdXJsLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IF8uZmlsZV9uYW1lXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZSdcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXy5maWxlX25hbWUsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBkZXNjLFxcblxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IF8udGh1bWJuYWlsIHx8ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIyLzA3LzI2LzcvMTEwXzE5ZDk4MjM4MTdhODMzNzA0ZDZlOWI0MGM3MWRhMDQyX2Nvbl8xMzB4MTMwLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogc3R5bGUxLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IGV4dHJhXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICB9IGNhdGNoIChlcnIpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IF8ubWVzc2FnZSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJodHRwczovL3Bhbi5xdWFyay5jbi9zL1xcXCIgKyBwd2RfaWRcXG4gICAgICAgIH0pXFxuICAgIH1cXG4gICAgcmV0dXJuIGQ7XFxufVxcblxcblxcblxcblxcbi8vIOiOt+WPluS4i+i9vemTvuaOpVxcbmdldFUgPSAkKFxcXCJcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2luZm8/cnVsZT11Y2tr5LqRJywge30pKS5ydWxlKTtcXG4gICAgXyA9IGlucHV0LnNwbGl0KCcjJyk7XFxuICAgIHJldHVybiBnZXR1KF9bMF0sIF9bMV0sIF9bMl0sIF9bM10pO1xcbn0pO1xcbmdldHUgPSAoYSwgYiwgYywgZSkgPT4ge1xcbiAgICB1cmwgPSBcXFwiaHR0cHM6Ly9wYW4ucXVhcmsuY24vMS9jbG91ZGRyaXZlL2ZpbGUvc2hhcmUvZG93bmxvYWRcXFwiO1xcbiAgICBib2R5ID0ge1xcbiAgICAgICAgZmlkczogW2FdLFxcbiAgICAgICAgcHdkX2lkOiBiLFxcbiAgICAgICAgc3Rva2VuOiBkZWNvZGVVUklDb21wb25lbnQoZ2V0TXlWYXIoJ3N0b2tlbicpKSxcXG4gICAgICAgIGZpZHNfdG9rZW46IFtjXVxcbiAgICB9O1xcblxcblxcblxcbiAgICBfID0gcG9zdCh1cmwgKyBcXFwiP3ByPXVjcHJvJmZyPWg1XFxcIiwgYm9keSk7XFxuXFxuXFxuICAgIGlmIChfLm1lc3NhZ2UgPT0gXFxcIuWIhuS6q+eahHN0b2tlbui/h+acn1xcXCIpIHtcXG4gICAgICAgIGlmIChnZXRzKGIsIGUpKSB7XFxuICAgICAgICAgICAgcmV0dXJuIGdldHUoYSwgYiwgYywgZSk7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gZCA9IFt7XFxuICAgICAgICAgICAgdGl0bGU6IF8ubWVzc2FnZVxcbiAgICAgICAgfV07XFxuICAgIH07XFxuXFxuICAgIGlmIChfLnN0YXR1cyA+IDMwMCB8fCBfLm1lc3NhZ2UgPT0gXFxcIuWIhuS6q+S4jeWtmOWcqFxcXCIpIHtcXG4gICAgICAgIF8gPSBwb3N0KHVybCwgYm9keSk7XFxuICAgIH1cXG4gICAgaWYgKF8uc3RhdHVzID4gMzAwIHx8IF8ubWVzc2FnZSA9PSBcXFwi5YiG5Lqr5LiN5a2Y5ZyoXFxcIikge1xcbiAgICAgICAgXyA9IHBvc3QodXJsICsgXFxcIj9wcj1VQ0Jyb3dzZXImZnI9aDVcXFwiLCBib2R5KTtcXG4gICAgfVxcblxcbiAgICB0cnkge1xcbiAgICAgICAgXyA9IF8uZGF0YVswXTtcXG4gICAgICAgIHVybCA9IF8uZG93bmxvYWRfdXJsXFxuICAgICAgICBpZiAoXy5mb3JtYXRfdHlwZS5tYXRjaCgnYXVkaW8nKSB8fCBfLmZpbGVfbmFtZS5tYXRjaCgvXFxcXC4oYWFjfGFjM3xhaWZmfGFtcnxtNGF8bXAyfG1wM3xvZ2d8cmF8YXV8d2F2fHdtYXxta2F8ZmxhY3x3YXYpLykpIHtcXG4gICAgICAgICAgICB1cmwgKz0gXFxcIiNpc011c2ljPXRydWUjXFxcIlxcbiAgICAgICAgfSBlbHNlIGlmIChfLmZvcm1hdF90eXBlLm1hdGNoKCd2aWRlbycpIHx8IF8uZmlsZV9uYW1lLm1hdGNoKC9cXFxcLihhdml8d212fG1wZWd8bXA0fG00dnxtb3Z8YXNmfGZsdnxmNHZ8cm12YnxybXwzZ3B8dm9ifG1rdikvKSkge1xcbiAgICAgICAgICAgIHVybCArPSBcXFwiI2lzVmlkZW89dHJ1ZSNcXFwiXFxuICAgICAgICB9XFxuICAgIH0gY2F0Y2ggKGVycikge1xcbiAgICAgICAgdXJsID0gJ3RvYXN0Oi8v5peg5rOV6I635Y+WJ1xcbiAgICB9XFxuICAgIHJldHVybiB1cmw7XFxufTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuiBmuWQiOaQnOe0olwiLFwicGF0aFwiOlwic2VhcmNoXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9pbmZvP3J1bGU9dWNra+S6kScsIHt9KSkucnVsZSk7XFxuZCA9IFtdO1xcbl8gPSBNWV9VUkwuc3BsaXQoJyMjIycpO1xcblxcbi8vIOm7mOiupDHvvIzotqPnm5jmkJxcXG5zaWQgPSBfWzNdIHx8IGdldEl0ZW0oJ3NpZCcsICcxJyk7XFxuc29rZXkgPSBfWzJdO1xcblxcbmlmIChzb2tleS5tYXRjaCgvXuiBmuWQiD/mkJzntKI/LykpIHtcXG4gICAgc2lkID0gJzk5OSdcXG4gICAgc29rZXkgPSBzb2tleS5yZXBsYWNlKC9e6IGa5ZCIP+aQnOe0oj8vLCBcXFwiXFxcIikudHJpbSgpO1xcbn1cXG5cXG5pZiAoc29rZXkubWF0Y2goL1xcXFwvc1xcXFwvLisvKSkge1xcbiAgICB2YXIgcHdkX2lkID0gTVlfVVJMLm1hdGNoKC9cXFxcL3NcXFxcLyhbXlxcXFwvXFxcXD9cXFxcJFxcXFwjXSspLylbMV0sXFxuICAgICAgICBwYXNzY29kZSA9IFxcXCJcXFwiLFxcbiAgICAgICAgcGRpcl9maWQgPSBzb3J0bnVtID0gMDtcXG4gICAgaWYgKHNva2V5Lm1hdGNoKC9cXFxcL3BkaXJfZmlkXFxcXC8uKy8pKSB7XFxuICAgICAgICBwZGlyX2ZpZCA9IHNva2V5Lm1hdGNoKC9cXFxcL3BkaXJfZmlkXFxcXC8oW15cXFxcL1xcXFw/XFxcXCRcXFxcI10rKS8pWzFdO1xcbiAgICB9XFxuICAgIGlmIChzb2tleS5tYXRjaCgvXFxcXC9zb3J0bnVtXFxcXC8uKy8pKSB7XFxuICAgICAgICBzb3J0bnVtID0gc29rZXkubWF0Y2goL1xcXFwvc29ydG51bVxcXFwvKFteXFxcXC9cXFxcP1xcXFwkXFxcXCNdKykvKVsxXTtcXG4gICAgfVxcbiAgICBpZiAoc29rZXkubWF0Y2goL1xcXFwkLisvKSkge1xcbiAgICAgICAgcGFzc2NvZGUgPSBzb2tleS5yZXBsYWNlKC9eW1xcXFxTXFxcXHNdK1xcXFwkKO+8mlxcXFxzKik/LywgJycpO1xcbiAgICB9XFxuXFxuXFxuICAgIGlmIChnZXRzKHB3ZF9pZCwgcGFzc2NvZGUpKSB7XFxuICAgICAgICBnZXRkKHB3ZF9pZCwgcGFzc2NvZGUsIHBkaXJfZmlkLCBzb3J0bnVtLCAwKTtcXG4gICAgICAgIGEgPSBbXTtcXG4gICAgICAgIGlmIChnZXRJdGVtKCdzdHlsZTEnLCAn56iL5bqP6buY6K6kJykgPT0gJ+eoi+W6j+m7mOiupCcpIHtcXG4gICAgICAgICAgICBmb3IgKGkgPSA1OyBpIDwgZC5sZW5ndGg7IGkgKz0gMykge1xcbiAgICAgICAgICAgICAgICBhLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGRbaV0udGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBkW2kgKyAxXS50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogZFtpXS51cmxcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGZvciAoaSA9IDU7IGkgPCBkLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgIGEucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogZFtpXS50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGRbaV0uZGVzYyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogZFtpXS51cmxcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBkID0gYVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgZCA9IFt7XFxuICAgICAgICAgICAgdGl0bGU6IF8ubWVzc2FnZVxcbiAgICAgICAgfV07XFxuICAgIH1cXG59IGVsc2Uge1xcbiAgICBzd2l0Y2ggKHNpZCkge1xcblxcbiAgICAgICAgY2FzZSAnOTk5JzpcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuiBmuaQnCA9PiBcXFwiICsgc29rZXksXFxuICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vc2VhcmNoP3M9XFxcIiArIHNva2V5ICsgXFxcIiZydWxlPXVja2vkupFcXFwiLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgcnVsZXM6ICQudG9TdHJpbmcoKHNhcnIsIGlucHV0KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgc2FyclswXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzYXJyLm1hcChbdGl0bGUsIHNpZF0gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInRpdGxlXFxcIjogdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwic2VhcmNoX3VybFxcXCI6IFxcXCJoaWtlcjovL2VtcHR5IyMjZnlwYWdlIyMjXFxcIiArIGlucHV0LnJlcGxhY2UoL17ogZrlkIg/5pCc57SiP1xcXFxzKi8sICcnKSArIFxcXCIjIyNcXFwiICsgc2lkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInNlYXJjaEZpbmRcXFwiOiBcXFwianM6ICQucmVxdWlyZSgnc2VhcmNoP3J1bGU9dWNra+S6kScpO1xcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICB9LCBzYXJyLCBzb2tleSlcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgYnJlYWs7XFxuXFxuXFxuXFxuICAgICAgICBjYXNlICcxJzpcXG4gICAgICAgICAgICB1cmwgPSAnaHR0cHM6Ly92LmZ1bmxldHUuY29tL3NlYXJjaCdcXG4gICAgICAgICAgICBib2R5ID0ge1xcbiAgICAgICAgICAgICAgICBcXFwic3R5bGVcXFwiOiBcXFwiZ2V0XFxcIixcXG4gICAgICAgICAgICAgICAgXFxcImRhdGFzcmNcXFwiOiBcXFwic2VhcmNoXFxcIixcXG4gICAgICAgICAgICAgICAgXFxcInF1ZXJ5XFxcIjoge1xcbiAgICAgICAgICAgICAgICAgICAgXFxcImlkXFxcIjogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwiZGF0ZXRpbWVcXFwiOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJjb21tb25pZFxcXCI6IDEsXFxuICAgICAgICAgICAgICAgICAgICBcXFwicGFybWlkXFxcIjogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwiZmlsZWlkXFxcIjogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwicmVwb3J0aWRcXFwiOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJ2YWxpZGlkXFxcIjogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwic2VhcmNodGV4dFxcXCI6IHNva2V5XFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIFxcXCJwYWdlXFxcIjoge1xcbiAgICAgICAgICAgICAgICAgICAgXFxcInBhZ2VTaXplXFxcIjogMTAsXFxuICAgICAgICAgICAgICAgICAgICBcXFwicGFnZUluZGV4XFxcIjogTVlfUEFHRVxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBcXFwib3JkZXJcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwicHJvcFxcXCI6IFxcXCJpZFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwib3JkZXJcXFwiOiBcXFwiZGVzY1xcXCJcXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgXFxcIm1lc3NhZ2VcXFwiOiBcXFwi6K+35rGC6LWE5rqQ5YiX6KGo5pWw5o2uXFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBwb3N0KHVybCwgYm9keSkuZGF0YS5tYXAoXyA9PiB7XFxuICAgICAgICAgICAgICAgIGlmIChfLnZhbGlkID09IDApIHtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF8udGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcIuKPse+4jyBcXFwiICsgXy51cGRhdGV0aW1lICsgXFxcIuOAgPCflJYgXFxcIiArIF8uZmlsZXR5cGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9zZWFyY2g/cz1cXFwiICsgXy51cmwgKyBcXFwiJnJ1bGU9dWNra+S6kVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcblxcblxcblxcbiAgICAgICAgY2FzZSAnMic6XFxuICAgICAgICAgICAgdXJsID0gXFxcImh0dHBzOi8vd3d3LmxhaXNveWl4aWEuY29tL3Mvc2VhcmNoP3E9XFxcIiArIHNva2V5ICsgXFxcIiZjdXJyZW50UGFnZT1cXFwiICsgTVlfUEFHRSArIFxcXCImbz00MVxcXCJcXG4gICAgICAgICAgICBwZGZhKGZldGNoKHVybCksIFxcXCJib2R5JiYucmVzdWx0LXBpZWNlXFxcIilcXG4gICAgICAgICAgICAgICAgLm1hcChkaXYgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcGRmaChkaXYsIFxcXCIudGl0bGUmJmEmJlRleHRcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBwZGZoKGRpdiwgXFxcIi5iYXNpYy1pbmZvJiZUZXh0XFxcIiksXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9zZWFyY2g/cz1cXFwiICsgcGRmaChkaXYsIFxcXCIudGl0bGUmJmEmJmhyZWZcXFwiKSArIFxcXCImcnVsZT11Y2tr5LqRXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBicmVhaztcXG5cXG5cXG5cXG4gICAgICAgIGNhc2UgJzMnOlxcbiAgICAgICAgICAgIGlmIChnZXRNeVZhcignYnVpbGRJZCcpID09ICcnKSB7XFxuICAgICAgICAgICAgICAgIGJ1aWxkSWQgPSBmZXRjaChcXFwiaHR0cHM6Ly93d3cucGFuc2VhcmNoLm1lL1xcXCIpLm1hdGNoKC9idWlsZElkXFxcIjpcXFwiKFteXFxcIl0rKS8pWzFdXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKCdidWlsZElkJywgYnVpbGRJZClcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdXJsID0gXFxcImh0dHBzOi8vd3d3LnBhbnNlYXJjaC5tZS9fbmV4dC9kYXRhL1xcXCIgKyBnZXRNeVZhcignYnVpbGRJZCcpICsgXFxcIi9zZWFyY2guanNvbj9rZXl3b3JkPVxcXCIgKyBzb2tleSArIFxcXCImb2Zmc2V0PVxcXCIgKyAoKE1ZX1BBR0UgLSAxKSAqIDEwKSArIFxcXCImcGFuPXF1YXJrXFxcIlxcbiAgICAgICAgICAgIEpTT04ucGFyc2UoZmV0Y2godXJsKSlcXG4gICAgICAgICAgICAgICAgLnBhZ2VQcm9wcy5kYXRhLmRhdGEubWFwKF8gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXy5jb250ZW50Lm1hdGNoKC/otYTmupDlkI3np7DvvJo/KFteXFxcXG5dKykvKVsxXSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFwi4o+x77iPIFxcXCIgKyBfLnRpbWUucmVwbGFjZSgvVC4qLywgJ+OAgPCflJYgJykgKyBfLmNvbnRlbnQubWF0Y2goL+aWh+S7tuexu+Wei++8mj8oW15cXFxcbl0rKS8pWzFdLnJlcGxhY2UoLzxcXFxcLz9zcGFuW14+XSo+L2csICcnKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3NlYXJjaD9zPVxcXCIgKyBwZGZoKF8uY29udGVudCwgXFxcImEmJmhyZWZcXFwiKSArIFxcXCImcnVsZT11Y2tr5LqRXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBicmVhaztcXG5cXG5cXG5cXG4gICAgICAgIGNhc2UgJzQnOlxcbiAgICAgICAgICAgIHVybCA9IFxcXCJodHRwczovL2FpcGFuc28uY29tL3NlYXJjaD9wYWdlPVxcXCIgKyBNWV9QQUdFICsgXFxcIiZrPVxcXCIgKyBzb2tleSArIFxcXCImcz0wJnQ9LTFcXFwiO1xcbiAgICAgICAgICAgIHBkZmEoZmV0Y2godXJsKSwgXFxcImJvZHkmJnZhbi1yb3dcXFwiKVxcbiAgICAgICAgICAgICAgICAubWFwKGRpdiA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBocmVmID0gcGRmaChkaXYsIFxcXCJhJiZocmVmXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoaHJlZi5tYXRjaCgvXFxcXC9zXFxcXC8vKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIF8gPSBkaXYuc3BsaXQoJzwvdGVtcGxhdGU+JylcXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcGRmaChfWzBdLCBcXFwiKiYmVGV4dFxcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBwZGZoKF9bMV0sIFxcXCIqJiZUZXh0XFxcIiksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChcXFwiaHR0cHM6Ly9haXBhbnNvLmNvbVxcXCIgKyBocmVmLnJlcGxhY2UoJy9zLycsICcvY3YvJykpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWYgPSBmZXRjaChpbnB1dCwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlZmVyZXInOiBpbnB1dFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25seUhlYWRlcnM6IHRydWVcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vc2VhcmNoP3M9XFxcIiArIGhyZWYgKyBcXFwiJnJ1bGU9dWNra+S6kVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIGJyZWFrO1xcblxcblxcbiAgICAgICAgY2FzZSAnNSc6XFxuICAgICAgICAgICAgdXJsID0gXFxcImh0dHBzOi8vd3d3LndveGlhbmdzb3UuY29tL2FwaS92MS9yZXNJbmZvL3NlYXJjaD9kZXZpY2VJZD0wJmtleXdvcmQ9XFxcIiArIHNva2V5ICsgXFxcIiZzb3VyY2VUeXBlPTMmdGltZUZpbHRlcj0wJnNpemVGaWx0ZXI9MCZvZmZzZXQ9XFxcIiArICgoTVlfUEFHRSAtIDEpICogMjApICsgXFxcIiZsaW1pdD0yMCZhcHBseUF0PTAmY2hhbm5lbElkPTBcXFwiXFxuICAgICAgICAgICAgSlNPTi5wYXJzZShmZXRjaCh1cmwpKVxcbiAgICAgICAgICAgICAgICAucmVzSW5mb3MubWFwKF8gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXy5uYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLij7HvuI8gXFxcIiArICgkLmRhdGVGb3JtYXQoXy5sYXN0VXBkYXRlVGltZSAvIDEsICd5eXl5LU1NLWRkJykpICsgXFxcIuOAgPCfk6UgXFxcIiArIGdldHooXy5zaXplKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3NlYXJjaD9zPVxcXCIgKyBkZWNvZGVVUklDb21wb25lbnQoXy51cmwpLnJlcGxhY2UoL15bXFxcXHNcXFxcU10qP1xcXFwvc1xcXFwvLywgXFxcIi9zL1xcXCIpICsgXFxcIiZydWxlPXVja2vkupFcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIGJyZWFrO1xcblxcblxcblxcbiAgICAgICAgY2FzZSAnNic6XFxuICAgICAgICAgICAgdXJsID0gXFxcImh0dHBzOi8vd3d3Lnl1bnNvLm5ldC9hcGkvdmFsaWRhdGUvc2VhcmNoP3dkPVxcXCIgKyBzb2tleSArIFxcXCImbW9kZT05MDAwMSZzdHlwZT0yMDUwMCZ1az0mcGFnZT1cXFwiICsgTVlfUEFHRSArIFxcXCImbGltaXQ9MjAmc2NyZWVuX2ZpbGV0eXBlPXVuZGVmaW5lZFxcXCJcXG4gICAgICAgICAgICBkYXRhID0gJzxib2R5PicgKyBKU09OLnBhcnNlKGZldGNoKHVybCkpLmRhdGEgKyAnPC9ib2R5PidcXG4gICAgICAgICAgICBwZGZhKFN0cmluZyhkYXRhKSwgXFxcImJvZHkmJi5sYXl1aS1jYXJkXFxcIilcXG4gICAgICAgICAgICAgICAgLm1hcChkaXYgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBkZmgoZGl2LCBcXFwiYSYmVGV4dFxcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHBkZmgoZGl2LCBcXFwiYSYmVGV4dFxcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBwZGZoKGRpdiwgXFxcIi5sYXl1aS1jYXJkLWJvZHkmJlRleHRcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9zZWFyY2g/cz1cXFwiICsgYmFzZTY0RGVjb2RlKHBkZmgoZGl2LCBcXFwiZGl2JiZ1cmxcXFwiKSkgKyBcXFwiJnJ1bGU9dWNra+S6kVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIGJyZWFrO1xcblxcblxcbiAgICAgICAgY2FzZSAnNyc6XFxuICAgICAgICAgICAgdXJsID0gXFxcImh0dHBzOi8vd3d3Lm5tbWUueHl6L3MvXFxcIiArIE1ZX1BBR0UgKyBcXFwiL1xcXCIgKyBzb2tleVxcbiAgICAgICAgICAgIGJvZHkgPSBmZXRjaCh1cmwpXFxuICAgICAgICAgICAgdGl0bGUgPSBwZGZhKGJvZHksIFxcXCJib2R5JiZhLmNvcHlbZGF0YS10eXBlfj1xdWFya11cXFwiKVxcbiAgICAgICAgICAgIHBkZmEoYm9keSwgXFxcImJvZHkmJmEub3BlbjpoYXMoaW1nW3NyY349cXVhcmtdKVxcXCIpXFxuICAgICAgICAgICAgICAgIC5tYXAoKGRpdiwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY29kZSA9IHBkZmgoZGl2LCBcXFwiYSYmZGF0YS1jb2RlXFxcIilcXG4gICAgICAgICAgICAgICAgICAgIGhyZWYgPSBcXFwiaHR0cHM6Ly93d3cubm1tZS54eXovb3Blbi9vdGhlci9cXFwiICsgcGRmaChkaXYsIFxcXCJhJiZkYXRhLXVybFxcXCIpXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwZGZoKHRpdGxlW2ldLCBcXFwiYSYmZGF0YS10aXRsZVxcXCIpLnJlcGxhY2UoL+WkuOWFi1vkupHnvZFd55uYLywgJycpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLmj5Dlj5bnoIHvvJpcXFwiICsgY29kZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoaHJlZikubGF6eVJ1bGUoKGNvZGUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZiA9IGZldGNoKGlucHV0LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlZmVyZXInOiAnaHR0cHM6Ly93d3cubm1tZS54eXovJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vc2VhcmNoP3M9XFxcIiArIGhyZWYgKyBcXFwiJFxcXCIgKyBjb2RlICsgXFxcIiZydWxlPXVja2vkupFcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgY29kZS5yZXBsYWNlKC9e5pegJC8sIFxcXCJcXFwiKSlcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgYnJlYWs7XFxuXFxuXFxuICAgICAgICBjYXNlICc4JzpcXG4gICAgICAgICAgICBob3N0ID0gXFxcImh0dHBzOi8vd3d3LmtrcGFucy5jb20vXFxcIlxcbiAgICAgICAgICAgIGlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgICAgICAgICAgICAgaWYgKGdldE15VmFyKCdmb3JtaGFzaCcpID09ICcnKSB7XFxuICAgICAgICAgICAgICAgICAgICBmb3JtaGFzaCA9IHBkZmgoZmV0Y2hQQyhob3N0KSwgJ2lucHV0W25hbWU9Zm9ybWhhc2hdJiZ2YWx1ZScpXFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignZm9ybWhhc2gnLCBmb3JtaGFzaClcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBib2R5ID0gJ21vZD1mb3J1bSZmb3JtaGFzaD0nICsgZ2V0TXlWYXIoJ2Zvcm1oYXNoJykgKyAnJnNyY2h0eXBlPXRpdGxlJnNyaGZpZD0mc3JobG9jYWxpdHk9Zm9ydW06OmluZGV4JnNyY2h0eHQ9JyArIHNva2V5ICsgJyZzZWFyY2hzdWJtaXQ9dHJ1ZSdcXG5cXG4gICAgICAgICAgICAgICAgXyA9IEpTT04ucGFyc2UoZmV0Y2hQQyhob3N0ICsgJ3NlYXJjaC5waHA/c2VhcmNoc3VibWl0PXllcycsIHtcXG4gICAgICAgICAgICAgICAgICAgIGJvZHk6IGJvZHksXFxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcXG4gICAgICAgICAgICAgICAgICAgIHdpdGhIZWFkZXJzOiB0cnVlLFxcbiAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3Q6IGZhbHNlXFxuICAgICAgICAgICAgICAgIH0pKS5oZWFkZXJzXFxuICAgICAgICAgICAgICAgIHVybCA9IGhvc3QgKyAoXy5sb2NhdGlvblswXSB8fCBfLkxvY2F0aW9uWzBdKVxcbiAgICAgICAgICAgICAgICBwdXRNeVZhcigna2twYW5zJywgdXJsLnJlcGxhY2UoL2t3PS4qLywgJ3BhZ2U9JykpXFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdXJsID0gZ2V0TXlWYXIoJ2trcGFucycpICsgTVlfUEFHRVxcbiAgICAgICAgICAgIH1cXG5cXG5cXG4gICAgICAgICAgICBwZGZhKGZldGNoUEModXJsKSwgXFxcImJvZHkmJmxpLnBid1xcXCIpXFxuICAgICAgICAgICAgICAgIC5tYXAoZGl2ID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHBkZmgoZGl2LCBcXFwiaDMmJlRleHRcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBwZGZoKGRpdiwgXFxcInAsLTEmJlRleHRcXFwiKS5yZXBsYWNlKC9eKC4rPykgLitcXFxcLSAvLCAn4o+x77iPICQx44CA8J+Pt++4jyAnKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoaG9zdCArIHBkZmgoZGl2LCBcXFwiYSwwJiZocmVmXFxcIikpLnJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwZGZoKGdldFJlc0NvZGUoKSwgXFxcImJvZHkmJi50X2Z8fC5tZXNzYWdlJiZIdG1sXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvPGEgaHJlZj1cXFwiLio/cXVhcmtcXFxcLmNuL2csICc8YSBocmVmPVxcXCJoaWtlcjovL3NlYXJjaD9ydWxlPXVja2vkupEmcz0nKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwicmljaF90ZXh0XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgYnJlYWs7XFxuXFxuXFxuXFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5peg5rOV6I635Y+W5pCc57Si5o6l5Y+jXFxcIlxcbiAgICAgICAgICAgIH0pXFxuICAgIH1cXG59XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi56iL5bqP6aaW6aG1XCIsXCJwYXRoXCI6XCJob21lXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9pbmZvP3J1bGU9dWNra+S6kScsIHt9KSkucnVsZSk7XFxuXFxuZCA9IFt7XFxuICAgIHRpdGxlOiAn8J+UjScsXFxuICAgIGRlc2M6ICfmkJzntKLlhbPplK7or40gLyDpk77mjqUk5o+Q5Y+W56CBJyxcXG4gICAgdXJsOiAnXFxcImhpa2VyOi8vc2VhcmNoP3M9XFxcIitpbnB1dCtcXFwiJnJ1bGU9XFxcIitNWV9SVUxFLnRpdGxlJyxcXG4gICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBydWxlczogJC50b1N0cmluZygoc2FycikgPT4ge1xcbiAgICAgICAgICAgIGxldCBkYXRhID0gW107XFxuICAgICAgICAgICAgaW5wdXQyID0gXFxcIlxcXCI7XFxuICAgICAgICAgICAgaWYgKGlucHV0Lm1hdGNoKC8jIyMuKy8pKSB7XFxuICAgICAgICAgICAgICAgIGlucHV0MiA9IGlucHV0Lm1hdGNoKC8jIyMoLispLylbMV07XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmIChpbnB1dC5tYXRjaCgvXFxcXC9zXFxcXC8uKy8pKSB7XFxuICAgICAgICAgICAgICAgIHNhcnIgPSBbXFxuICAgICAgICAgICAgICAgICAgICBbXFxcIuiOt+WPlui1hOa6kOaWh+S7tlxcXCIsIDk5OV1cXG4gICAgICAgICAgICAgICAgXTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFpbnB1dDIubWF0Y2goL14oOTk5KT8kLykgJiYgc2FycltpbnB1dDJdKSB7XFxuICAgICAgICAgICAgICAgIHNhcnIgPSBbc2FycltpbnB1dDJdXVxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGlmICghaW5wdXQyLm1hdGNoKC9eKDk5OSk/JC8pKSB7XFxuICAgICAgICAgICAgICAgICAgICBpbnB1dCA9IGlucHV0LnNwbGl0KCcjIyMnKVswXVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGlmICghZ2V0TXlWYXIoJ2lucHV0MicpLm1hdGNoKC9eKDk5OSk/JC8pKSB7XFxuICAgICAgICAgICAgICAgICAgICBzYXJyID0gW3NhcnJbZ2V0TXlWYXIoJ2lucHV0MicpXV1cXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzYXJyWzBdO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZSgvXuiBmuWQiD/mkJzntKI/XFxcXHMqLywgJycpO1xcbiAgICAgICAgICAgIHB1dE15VmFyKCdzb2tleScsIGlucHV0KTtcXG4gICAgICAgICAgICBzYXJyLm1hcChbdGl0bGUsIHNpZF0gPT4ge1xcbiAgICAgICAgICAgICAgICBkYXRhLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgXFxcInRpdGxlXFxcIjogdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICBcXFwic2VhcmNoX3VybFxcXCI6IFxcXCJoaWtlcjovL2VtcHR5IyMjZnlwYWdlIyMjXFxcIiArIGlucHV0ICsgXFxcIiMjI1xcXCIgKyBzaWQsXFxuICAgICAgICAgICAgICAgICAgICBcXFwic2VhcmNoRmluZFxcXCI6IFxcXCJqczogJC5yZXF1aXJlKCdzZWFyY2g/cnVsZT11Y2tr5LqRJyk7XFxcIlxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShkYXRhKTtcXG4gICAgICAgIH0sIHNhcnIpLFxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRNeVZhcihcXFwic29rZXlcXFwiLCBcXFwiXFxcIiksXFxuICAgICAgICBvbkNoYW5nZTogXFxcInB1dE15VmFyKCdzb2tleScsaW5wdXQpXFxcIlxcbiAgICB9XFxufV07XFxuW1xcXCLpppbpobXmlLbol49cXFwiLCBcXFwi5pCc57Si5Y+R546wXFxcIiwgXFxcIueoi+W6j+iuvue9rlxcXCJdLm1hcCgobmFtZSwgaSkgPT4ge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGdldE15VmFyKCdpaScsIGdldEl0ZW0oJ2lpJywgJzAnKSkgPT0gaSA/IFJpY2goU3Ryb25nKENvbG9yKG5hbWUpKSkgOiBuYW1lLFxcbiAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChlbXB0eSwgaSkgPT4ge1xcbiAgICAgICAgICAgIHB1dE15VmFyKCdpaScsIGkpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICByZXR1cm4gZW1wdHk7XFxuICAgICAgICB9LCBlbXB0eS5yZXBsYWNlKC8jLisvLCAnJyksIGkpLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9KTtcXG59KTtcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbn0pO1xcblxcblxcbmlpID0gZ2V0TXlWYXIoJ2lpJywgZ2V0SXRlbSgnaWknLCAnMCcpKTtcXG5pZiAoaWkgPT0gJzAnKSB7XFxuICAgIGlUYWcgPSBbXTtcXG4gICAgenkubWFwKFthLCBiLCBjLCBlLCBmLCBnXSA9PiB7XFxuICAgICAgICBpZiAoIWIpIHtcXG4gICAgICAgICAgICByZXR1cm4gaVRhZy5wdXNoKFthLCBbXV0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgZSA9IGUgfHwgMFxcbiAgICAgICAgZXh0cmEgPSB7XFxuICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJyDimIUg5aSN5Yi25pCc57Si6K+t5Y+lIOKYhSAnLFxcbiAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygocHdkX2lkLCBwYXNzY29kZSwgcGRpcl9maWQsIHNvcnRudW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHVybCA9IFxcXCJjb3B5Oi8vL3MvXFxcIiArIHB3ZF9pZCArIFxcXCIvcGRpcl9maWQvXFxcIiArIHBkaXJfZmlkICsgXFxcIi9zb3J0bnVtL1xcXCIgKyBzb3J0bnVtO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhc3Njb2RlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsICs9IFxcXCIkXFxcIiArIHBhc3Njb2RlO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVybFxcbiAgICAgICAgICAgICAgICB9LCBiLCBjLCBlLCBmKVxcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICcg4piGIOWIhuS6q+i1hOa6kOmTvuaOpSDimIYgJyxcXG4gICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHB3ZF9pZCwgcGFzc2NvZGUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHVybCA9IFxcXCJjb3B5Oi8vaHR0cHM6Ly9wYW4ucXVhcmsuY24vcy9cXFwiICsgcHdkX2lkO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhc3Njb2RlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsICs9IFxcXCJcXFxcblxcXFxu5o+Q5Y+W56CBJO+8mlxcXCIgKyBwYXNzY29kZTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmxcXG4gICAgICAgICAgICAgICAgfSwgYiwgYylcXG4gICAgICAgICAgICB9XVxcbiAgICAgICAgfVxcbiAgICAgICAgaVRhZ1tpVGFnLmxlbmd0aCAtIDFdWzFdLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBTdHJvbmcoYSksXFxuICAgICAgICAgICAgdXJsOiAkKGVtcHR5KS5ydWxlKChpbnB1dCkgPT4ge1xcbiAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9pbmZvP3J1bGU9dWNra+S6kScsIHt9KSkucnVsZSk7XFxuICAgICAgICAgICAgICAgIFtwd2RfaWQsIHBhc3Njb2RlLCBwZGlyX2ZpZCwgc29ydG51bSwgc3R5bGUxXSA9IGlucHV0LnNwbGl0KCcjJyk7XFxuICAgICAgICAgICAgICAgIGlmIChnZXRzKHB3ZF9pZCwgcGFzc2NvZGUpKSB7XFxuICAgICAgICAgICAgICAgICAgICBnZXRkKHB3ZF9pZCwgcGFzc2NvZGUsIHBkaXJfZmlkLCBzb3J0bnVtLCBzdHlsZTEpO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgZCA9IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF8ubWVzc2FnZVxcbiAgICAgICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7XFxuICAgICAgICAgICAgfSwgYiArIFxcXCIjXFxcIiArIGMgKyBcXFwiI1xcXCIgKyBlICsgXFxcIiNcXFwiICsgZiArIFxcXCIjXFxcIiArIGcpLFxcbiAgICAgICAgICAgIGltZzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjIvMDgvMDUvNS8xMTBfZmE2NjBlMTNlZDY3Zjg2ODgyMDUwMWU2YWNlNmQ1ZTFfY29uXzEzMHgxMzAucG5nJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcicsXFxuICAgICAgICAgICAgZXh0cmE6IGV4dHJhXFxuICAgICAgICB9KTtcXG4gICAgICAgIGlUYWdbaVRhZy5sZW5ndGggLSAxXVsxXS5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnXFxuICAgICAgICB9KTtcXG4gICAgfSk7XFxuXFxuICAgIC8vIOmYsuatoumAieS4reS6huWIoOmZpOeahOWIhue7hCjph43lkK/kuZ/ooYwpXFxuICAgIGlmIChnZXRNeVZhcignaScsICcwJykgPiBpVGFnLmxlbmd0aCAtIDEpIHtcXG4gICAgICAgIHB1dE15VmFyKCdpJywgJzAnKTtcXG4gICAgfTtcXG5cXG4gICAgaVRhZy5tYXAoKFtuYW1lLCBsaXN0XSwgaSkgPT4ge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZ2V0TXlWYXIoJ2knLCAnMCcpID09IGkgPyBSaWNoKFN0cm9uZyhDb2xvcihuYW1lKSkpIDogbmFtZSxcXG4gICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGVtcHR5LCBpKSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKCdpJywgaSk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5O1xcbiAgICAgICAgICAgIH0sIGVtcHR5LnJlcGxhY2UoLyMuKy8sICcnKSwgaSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgfSk7XFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmUnXFxuICAgIH0pO1xcbiAgICBkID0gZC5jb25jYXQoaVRhZ1tnZXRNeVZhcignaScsICcwJyldWzFdKTtcXG59IGVsc2UgaWYgKGlpID09ICcxJykge1xcbiAgICAvLyDmkJzntKLliIbnsbtcXG4gICAgc2Fyci5tYXAoW25hbWUsIHNpZF0gPT4ge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZ2V0TXlWYXIoJ2lucHV0MicsICc5OTknKSA9PSBzaWQgPyBSaWNoKFN0cm9uZyhDb2xvcihuYW1lKSkpIDogbmFtZSxcXG4gICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGVtcHR5LCBzaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2lucHV0MicsIHNpZCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5O1xcbiAgICAgICAgICAgIH0sIGVtcHR5LnJlcGxhY2UoLyMuKy8sICcnKSwgc2lkKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9KTtcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZSdcXG4gICAgfSk7XFxuICAgIGhlYWRlciA9IHtcXG4gICAgICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChMaW51eDsgQW5kcm9pZCA2LjA7IE5leHVzIDUgQnVpbGQvTVJBNThOKSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvOTkuMC40ODQ0LjUxIE1vYmlsZSBTYWZhcmkvNTM3LjM2JyxcXG4gICAgICAgICdIb3N0JzogJ3RvcC5iYWlkdS5jb20nLFxcbiAgICAgICAgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyonLFxcbiAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6ICd6aC1DTix6aDtxPTAuOSxlbi1VUztxPTAuOCxlbjtxPTAuNycsXFxuICAgICAgICAnQWNjZXB0LUVuY29kaW5nJzogJ2d6aXAsIGRlZmxhdGUsIGJyJyxcXG4gICAgICAgICdSZWZlcmVyJzogJ2h0dHBzOi8vdG9wLmJhaWR1LmNvbS9ib2FyZD90YWI9bm92ZWwnLFxcbiAgICB9XFxuICAgIGxldCBqc29uO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IChnZXRNeVZhcigndG9wYmFpZHUnLCAnMCcpID09ICcwJyA/ICfimJHnlLXlvbHng63mkJzmppwnIDogJ+eUteW9seeDreaQnOamnCcpLFxcbiAgICAgICAgdXJsOiBgaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjQGxhenlSdWxlPS5qczpwdXRNeVZhcigndG9wYmFpZHUnLCcwJyk7cmVmcmVzaFBhZ2UoKTsnaGlrZXI6Ly9lbXB0eSdgLFxcbiAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbidcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IChnZXRNeVZhcigndG9wYmFpZHUnLCAnMCcpID09ICcxJyA/ICfimJHnlLXop4bliafng63mkJzmppwnIDogJ+eUteinhuWJp+eDreaQnOamnCcpLFxcbiAgICAgICAgdXJsOiBgaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjQGxhenlSdWxlPS5qczpwdXRNeVZhcigndG9wYmFpZHUnLCcxJyk7cmVmcmVzaFBhZ2UoKTsnaGlrZXI6Ly9lbXB0eSdgLFxcbiAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbidcXG4gICAgfSk7XFxuICAgIGlmIChnZXRNeVZhcigndG9wYmFpZHUnLCAnMCcpID09IFxcXCIxXFxcIikge1xcbiAgICAgICAgaWYgKGdldE15VmFyKCdkc2pqc29uJywgXFxcIlxcXCIpID09IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAganNvbiA9IHJlcXVlc3QoJ2h0dHBzOi8vdG9wLmJhaWR1LmNvbS9hcGkvYm9hcmQ/cGxhdGZvcm09d2lzZSZ0YWI9dGVsZXBsYXkmdGFnPSU3QiU3RCcsIHtcXG4gICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVyXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgcHV0TXlWYXIoJ2Rzampzb24nLCBqc29uKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAganNvbiA9IGdldE15VmFyKCdkc2pqc29uJyk7XFxuICAgICAgICB9XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBpZiAoZ2V0TXlWYXIoJ2R5anNvbicsICcnKSA9PSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgIGpzb24gPSByZXF1ZXN0KCdodHRwczovL3RvcC5iYWlkdS5jb20vYXBpL2JvYXJkP3BsYXRmb3JtPXdpc2UmdGFiPW1vdmllJnRhZz0lN0IlN0QnLCB7XFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlclxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHB1dE15VmFyKCdkeWpzb24nLCBqc29uKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAganNvbiA9IGdldE15VmFyKCdkeWpzb24nKTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBsZXQgbGlzdCA9IEpTT04ucGFyc2UoanNvbikuZGF0YS5jYXJkc1swXS5jb250ZW50O1xcblxcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIGxldCBuYW1lID0gbGlzdFtpXS53b3JkICsgJyAgICAoJyArIGxpc3RbaV0uc2hvd1syXSArICcpJztcXG4gICAgICAgIGxldCBkZXMgPSBsaXN0W2ldLmRlc2M7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpID09IFxcXCIwXFxcIiA/ICfigJzigJzigJ3igJ08c3BhbiBzdHlsZT1cXFwiY29sb3I6I2ZmMzMwMFxcXCI+JyArIChwYXJzZUludChpKSArIDEpLnRvU3RyaW5nKCkgKyAnPC9zcGFuPicgKyBcXFwiXFxcXHRcXFxcdFxcXFx0XFxcIiArIG5hbWUgOiBpID09IFxcXCIxXFxcIiA/ICfigJzigJzigJ3igJ08c3BhbiBzdHlsZT1cXFwiY29sb3I6I2ZmNjYwMFxcXCI+JyArIChwYXJzZUludChpKSArIDEpLnRvU3RyaW5nKCkgKyAnPC9zcGFuPicgKyBcXFwiXFxcXHRcXFxcdFxcXFx0XFxcIiArIG5hbWUgOiBpID09IFxcXCIyXFxcIiA/ICfigJzigJzigJ3igJ08c3BhbiBzdHlsZT1cXFwiY29sb3I6I2ZmOTkwMFxcXCI+JyArIChwYXJzZUludChpKSArIDEpLnRvU3RyaW5nKCkgKyAnPC9zcGFuPicgKyBcXFwiXFxcXHRcXFxcdFxcXFx0XFxcIiArIG5hbWUgOiAn4oCc4oCc4oCd4oCdPHNwYW4+JyArIChwYXJzZUludChpKSArIDEpLnRvU3RyaW5nKCkgKyAnPC9zcGFuPicgKyBcXFwiXFxcXHRcXFxcdFxcXFx0XFxcIiArIG5hbWUsXFxuICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChuYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lLnNwbGl0KCcgICAgKCcpWzBdO1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcignc29rZXknLCBuYW1lKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgIH0sIG5hbWUpLFxcbiAgICAgICAgICAgIGRlc2M6IGRlcyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfMVxcXCJcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuXFxuXFxufSBlbHNlIGlmIChpaSA9PSAnMicpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi5Z+656GA6K6+572uXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwiR1VJ57yW6L6RXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF8zXFxcIixcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9ndWknXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLmn6XnnIvmlLbol49cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzNcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9jb2xsZWN0aW9uP3J1bGU9dWNra+S6kVxcXCJcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuaBouWkjem7mOiupFxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfM1xcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIuehruWumuaBouWkjem7mOiupOiuvue9ruWQl++8n1xcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIGNsZWFySXRlbSgnaWknKVxcbiAgICAgICAgICAgIGNsZWFySXRlbSgnc29ydG51bScpXFxuICAgICAgICAgICAgY2xlYXJJdGVtKCdzdHlsZTEnKVxcbiAgICAgICAgICAgIGNsZWFySXRlbSgnc2lkJylcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgfSlcXG4gICAgfSk7XFxuXFxuICAgIGxldCBiYWNrdXBGaWxlTmFtZSA9IFxcXCJiYWNrdXAuanNvblxcXCI7XFxuICAgIGxldCBwYXRoID0gXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvZmlsZXMvdWNra+S6kS9cXFwiICsgYmFja3VwRmlsZU5hbWU7XFxuICAgIGxldCBiYWNrdXBGaWxlID0gbmV3IGphdmEuaW8uRmlsZShnZXRQYXRoKHBhdGgpLnNsaWNlKDcpKTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi5aSH5Lu95LiO6L+Y5Y6fXFxcIixcXG4gICAgICAgIGRlc2M6IFxcXCLkuIrmrKHlpIfku73vvJpcXFwiICsgKGJhY2t1cEZpbGUuZXhpc3RzKCkgPyAkLmRhdGVGb3JtYXQoYmFja3VwRmlsZS5sYXN0TW9kaWZpZWQoKSwgJ3l5eXktTU0tZGQnKSA6IFxcXCLov5jmnKrlpIfku71cXFwiKSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICB9KTtcXG4gICAgbGV0IGYgPSAoYmFja3VwRmlsZU5hbWUpID0+IHtcXG4gICAgICAgIGxldCBkYXRhID0gJC5yZXF1aXJlKFxcXCJkYXRhXFxcIikuZ2V0RGF0YSgpO1xcbiAgICAgICAgc2F2ZUZpbGUoYmFja3VwRmlsZU5hbWUsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcXG4gICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lpIfku73lrozmiJBcXFwiO1xcbiAgICB9O1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLlpIfku71cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzNcXFwiLFxcbiAgICAgICAgdXJsOiBiYWNrdXBGaWxlLmV4aXN0cygpID8gJChcXFwi5bey5pyJ5aSH5Lu95paH5Lu25piv5ZCm6KaG55uWP1xcXCIpLmNvbmZpcm0oZiwgYmFja3VwRmlsZU5hbWUpIDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZShmLCBiYWNrdXBGaWxlTmFtZSlcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuaBouWkjVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfM1xcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGJhY2t1cEZpbGVOYW1lKSA9PiB7XFxuICAgICAgICAgICAgbGV0IGRhdGEgPSBKU09OLnBhcnNlKHJlYWRGaWxlKGJhY2t1cEZpbGVOYW1lKSk7XFxuICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwi5pu/5o2iXFxcIikoZGF0YSk7XFxuICAgICAgICB9LCBiYWNrdXBGaWxlTmFtZSlcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuWQiOW5tuaBouWkjVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfM1xcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGJhY2t1cEZpbGVOYW1lKSA9PiB7XFxuICAgICAgICAgICAgbGV0IGRhdGEgPSBKU09OLnBhcnNlKHJlYWRGaWxlKGJhY2t1cEZpbGVOYW1lKSk7XFxuICAgICAgICAgICAgbGV0IGFkZERhdGEgPSAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5nZXREYXRhKCk7XFxuICAgICAgICAgICAgbGV0IGRhdGFQbGFuZSA9IGRhdGEuZmlsdGVyKHYgPT4gdi5sZW5ndGggPiAxKS5tYXAodiA9PiB2WzFdICsgdlszXSk7XFxuICAgICAgICAgICAgbGV0IG5ld0RhdGUgPSBhZGREYXRhLmZpbHRlcih2ID0+IHYubGVuZ3RoID4gMSAmJiAhZGF0YVBsYW5lLmluY2x1ZGVzKHZbMV0gKyB2WzNdKSk7XFxuICAgICAgICAgICAgbGV0IGluZGV4ID0gZGF0YS5maW5kSW5kZXgodiA9PiB2Lmxlbmd0aCA9PT0gMSAmJiB2WzBdID09PSBcXFwi5L2c6ICF5paw5aKeXFxcIik7XFxuICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcXG4gICAgICAgICAgICAgICAgbGV0IHMgPSBkYXRhLnNwbGljZSgwLCBpbmRleCArIDEpO1xcbiAgICAgICAgICAgICAgICBkYXRhID0gcy5jb25jYXQobmV3RGF0ZSwgZGF0YSk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgZGF0YS5wdXNoKFtcXFwi5L2c6ICF5paw5aKeXFxcIl0pO1xcbiAgICAgICAgICAgICAgICBkYXRhID0gZGF0YS5jb25jYXQobmV3RGF0ZSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcIuabv+aNolxcXCIpKGRhdGEpO1xcbiAgICAgICAgfSwgYmFja3VwRmlsZU5hbWUpXFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdiaWdfYmlnX2JsYW5rX2Jsb2NrJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn6buY6K6k6aaW6aG1JyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG4gICAgW1xcXCLpppbpobXmlLbol49cXFwiLCBcXFwi5pCc57Si5Y+R546wXFxcIl0ubWFwKChuYW1lLCBpKSA9PiB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBnZXRJdGVtKCdpaScsICcwJykgPT0gaSA/IFJpY2goU3Ryb25nKENvbG9yKG5hbWUpKSkgOiBuYW1lLFxcbiAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaSkgPT4ge1xcbiAgICAgICAgICAgICAgICBzZXRJdGVtKCdpaScsIGkpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICB9LCBTdHJpbmcoaSkpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgIH0pO1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn6buY6K6k5o6S5bqPJyxcXG4gICAgICAgIGRlc2M6ICfmjqjojZDvvJrmnIDov5Hmm7TmlrAgLyDlkI3np7DmraPluo8nLFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgIH0pO1xcbiAgICBzb3J0MS5tYXAoKG5hbWUsIGkpID0+IHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGdldEl0ZW0oJ3NvcnRudW0nLCAnMCcpID09IGkgPyBSaWNoKFN0cm9uZyhDb2xvcihuYW1lKSkpIDogbmFtZSxcXG4gICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGkpID0+IHtcXG4gICAgICAgICAgICAgICAgc2V0SXRlbSgnc29ydG51bScsIGkpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICB9LCBTdHJpbmcoaSkpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgIH0pO1xcbiAgICB9KVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfpu5jorqTmoLflvI8nLFxcbiAgICAgICAgZGVzYzogJ+aOqOiNkO+8mueoi+W6j+m7mOiupCAvIGF2YXRhcicsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgfSk7XFxuICAgIHN0eWxlLm1hcChuYW1lID0+IHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGdldEl0ZW0oJ3N0eWxlMScsICfnqIvluo/pu5jorqQnKSA9PSBuYW1lID8gUmljaChTdHJvbmcoQ29sb3IobmFtZSkpKSA6IG5hbWUsXFxuICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChuYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgIHNldEl0ZW0oJ3N0eWxlMScsIG5hbWUpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICB9LCBuYW1lKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9KTtcXG4gICAgfSlcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn6buY6K6k5pCc57SiJyxcXG4gICAgICAgIGRlc2M6ICfmjqjojZDvvJrogZrlkIjmkJzntKIgLyDotqPnm5jmkJzntKInLFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgIH0pO1xcbiAgICBzYXJyLm1hcChbbmFtZSwgc2lkXSA9PiB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBnZXRJdGVtKCdzaWQnLCAnMScpID09IHNpZCA/IFJpY2goU3Ryb25nKENvbG9yKG5hbWUpKSkgOiBuYW1lLFxcbiAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoc2lkKSA9PiB7XFxuICAgICAgICAgICAgICAgIHNldEl0ZW0oJ3NpZCcsIHNpZCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgIH0sIFN0cmluZyhzaWQpKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9KTtcXG4gICAgfSk7XFxufVxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIui1hOa6kOaVsOaNrlwiLFwicGF0aFwiOlwiZGF0YVwiLFwicnVsZVwiOlwianM6XFxubGV0IHJ1bGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vaG9tZUB1Y2tr5LqRXFxcIikpO1xcbmxldCBzdHIgPSBydWxlLmZpbmRfcnVsZS5tYXRjaCgvenkuKj8oXFxcXFtbXFxcXFNcXFxcc10qP1xcXFxdKTsvKVsxXTtcXG52YXIgZGF0YSA9IGV2YWwoXFxcIihcXFwiICsgc3RyICsgXFxcIilcXFwiKTtcXG4kLmV4cG9ydHMuZ2V0enl6dSA9ICgpID0+e1xcbmxldCB6eSA9IGdldERhdGEoKTtcXG5sZXQgenUgPSBnZXRHcm91cCgpO1xcbn07XFxuJC5leHBvcnRzLmdldERhdGEgPSAoKSA9PiBkYXRhO1xcbiQuZXhwb3J0cy5nZXRHcm91cCA9IG5ld0RhdGEgPT4gKG5ld0RhdGEgfHwgZGF0YSkuZmlsdGVyKHYgPT4gdi5sZW5ndGggPT09IDEpLm1hcCh2ID0+IHZbMF0pO1xcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5pu/5o2i5a+85YWlXCIsXCJwYXRoXCI6XCLmm7/mjaJcIixcInJ1bGVcIjpcIiQuZXhwb3J0cyA9IGZ1bmN0aW9uKHp5KSB7XFxuICAgIGxldCBydWxlID0gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2hvbWVAdWNra+S6kVxcXCIpKTtcXG4gICAgcnVsZS5maW5kX3J1bGUgPSBydWxlLmZpbmRfcnVsZS5yZXBsYWNlKC96eS4qP1xcXFxbW1xcXFxTXFxcXHNdKj9cXFxcXTsvLCAoKSA9PiBcXFwienkgPSBcXFwiICsgSlNPTi5zdHJpbmdpZnkoenkpLnJlcGxhY2UoL1xcXFwsXFxcXFtcXFxcXFxcIuS9nOiAheaWsOWinlxcXFxcXFwiXFxcXF1cXFxcXSQvLCddJykgKyBcXFwiO1xcXCIpO1xcbiAgICByZXR1cm4gXFxcInJ1bGU6Ly9cXFwiICsgYmFzZTY0RW5jb2RlKFxcXCLmtbfpmJTop4bnlYzvv6Vob21lX3J1bGXvv6VcXFwiICsgSlNPTi5zdHJpbmdpZnkocnVsZSkpO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIkdVSee8lui+kVwiLFwicGF0aFwiOlwiZ3VpXCIsXCJydWxlXCI6XCJqczpcXG5sZXQgenkgPSBzdG9yYWdlMC5nZXRNeVZhcihcXFwiZGF0YVxcXCIsICQucmVxdWlyZShcXFwiZGF0YVxcXCIpLmdldERhdGEoKSk7XFxuXFxubGV0IHp1ID0gJC5yZXF1aXJlKFxcXCJkYXRhXFxcIikuZ2V0R3JvdXAoenkpO1xcbmxldCBkID0gW107XFxubGV0IGdyb3VwID0gZ2V0TXlWYXIoXFxcImdyb3VwXFxcIiwgU3RyaW5nKHp1WzBdKSk7XFxuYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAoKSA9PiB7XFxuICAgIGNsZWFyTXlWYXIoXFxcImdyb3VwXFxcIik7XFxuICAgIGNsZWFyTXlWYXIoXFxcImRhdGFcXFwiKTtcXG59KTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIuS/neWtmOaVsOaNrlxcXCIsXFxuICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICBsZXQgenkgPSBzdG9yYWdlMC5nZXRNeVZhcihcXFwiZGF0YVxcXCIsICQucmVxdWlyZShcXFwiZGF0YVxcXCIpLmdldERhdGEoKSk7XFxuICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCLmm7/mjaJcXFwiKSh6eSk7XFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxufSk7XFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiXFxufSk7XFxuenUuZm9yRWFjaCh2ID0+IHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBncm91cCA9PT0gdiA/IFxcXCLigJzigJxcXFwiICsgdiArIFxcXCLigJ3igJ1cXFwiIDogdixcXG4gICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgodikgPT4ge1xcbiAgICAgICAgICAgIHB1dE15VmFyKFxcXCJncm91cFxcXCIsIHYpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcbiAgICAgICAgfSwgdiksXFxuICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5Yig6ZmkXFxcIixcXG4gICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGdyb3VwKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChcXFwi56Gu6K6k5Yig6ZmkP1xcXFxuKOS8muWIoOmZpOivpee7hOS4i+WFqOmDqOaWh+S7tuWkuSlcXFwiKS5jb25maXJtKChncm91cCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB6eSA9IHN0b3JhZ2UwLmdldE15VmFyKFxcXCJkYXRhXFxcIiwgJC5yZXF1aXJlKFxcXCJkYXRhXFxcIikuZ2V0RGF0YSgpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3RGF0YSA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpc2dyb3VwID0gZmFsc2U7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgdiBvZiB6eSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodi5sZW5ndGggPT09IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2WzBdID09PSBncm91cCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZ3JvdXAgPSB0cnVlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc2dyb3VwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNncm91cCA9IGZhbHNlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc2dyb3VwKSBjb250aW51ZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RGF0YS5wdXNoKHYpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0TXlWYXIoXFxcImdyb3VwXFxcIikgPT09IGdyb3VwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoXFxcImdyb3VwXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKFxcXCJkYXRhXFxcIiwgSlNPTi5zdHJpbmdpZnkobmV3RGF0YSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIGdyb3VwKTtcXG4gICAgICAgICAgICAgICAgfSwgdilcXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi6YeN5ZG95ZCNXFxcIixcXG4gICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGdyb3VwKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChncm91cCwgXFxcIuaWsOeahOWQjeensCjkuI3ph43lpI0pXFxcIikuaW5wdXQoKGdyb3VwKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHp5ID0gc3RvcmFnZTAuZ2V0TXlWYXIoXFxcImRhdGFcXFwiLCAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5nZXREYXRhKCkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB6dSA9ICQucmVxdWlyZShcXFwiZGF0YVxcXCIpLmdldEdyb3VwKHp5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoenUuaW5jbHVkZXMoaW5wdXQpKSByZXR1cm4gXFxcInRvYXN0Oi8v5bey5a2Y5ZyoXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IHp5LmZpbmRJbmRleCh2ID0+IHYubGVuZ3RoID09PSAxICYmIHZbMF0gPT09IGdyb3VwKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB6eVtpXVswXSA9IGlucHV0O1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRNeVZhcihcXFwiZ3JvdXBcXFwiKSA9PT0gZ3JvdXApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcImdyb3VwXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcihcXFwiZGF0YVxcXCIsIEpTT04uc3RyaW5naWZ5KHp5KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgZ3JvdXApO1xcbiAgICAgICAgICAgICAgICB9LCB2KVxcbiAgICAgICAgICAgIH1dXFxuICAgICAgICB9XFxuICAgIH0pO1xcbn0pO1xcbmV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2luZm8/cnVsZT11Y2tr5LqRJywge30pKS5ydWxlKTtcXG5sZXQgaXNHcm91cCA9IGZhbHNlO1xcbmxldCBpID0gMDtcXG5sZXQgaWkgPSAtMTtcXG5mb3IgKGxldCB2IG9mIHp5KSB7XFxuICAgIGlpKys7XFxuICAgIGlmICh2Lmxlbmd0aCA9PSAxKSB7XFxuICAgICAgICBpZiAodlswXSA9PT0gZ3JvdXApIHtcXG4gICAgICAgICAgICBpc0dyb3VwID0gdHJ1ZTtcXG4gICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgIH0gZWxzZSBpZiAoaXNHcm91cCkge1xcbiAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIGlmICghaXNHcm91cCkgY29udGludWU7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogdlswXSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF8xXFxcIixcXG4gICAgICAgIGRlc2M6IFxcXCLotYTmupBJRDogXFxcIiArIHZbMV0gKyBcXFwiXFxcXG7mlofku7ZJRDogXFxcIiArICh2WzNdfHwwKSArIFxcXCJcXFxcbuaPkOWPlueggTogXFxcIiArIHZbMl0gKyBcXFwi44CA5o6S5bqPOiBcXFwiICsgc29ydDFbdls0XSB8fCAwXSArIFxcXCLjgIDmoLflvI86IFxcXCIgKyBzdHlsZVt2WzVdIHx8IDBdLFxcbiAgICAgICAgdXJsOiAkKFtcXFwi5Yig6ZmkXFxcIiwgXFxcIumHjeWRveWQjVxcXCIsIFxcXCLph43mlrDliIbnu4RcXFwiLCBcXFwi5YiG5LqrXFxcIl0pLnNlbGVjdCgoaSwgdikgPT4ge1xcbiAgICAgICAgICAgIHN3aXRjaCAoaW5wdXQpIHtcXG4gICAgICAgICAgICAgICAgY2FzZSBcXFwi5YiG5LqrXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiY29weTovL2h0dHBzOi8vcGFuLnF1YXJrLmNuL3MvXFxcIiArIHZbMV0gKyAodlsyXSA/IFxcXCIkXFxcIiArIHZbMl0gOiBcXFwiXFxcIik7XFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcIuWIoOmZpFxcXCI6XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChcXFwi5piv5ZCm5Yig6ZmkXFxcIikuY29uZmlybSgoaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB6eSA9IHN0b3JhZ2UwLmdldE15VmFyKFxcXCJkYXRhXFxcIiwgJC5yZXF1aXJlKFxcXCJkYXRhXFxcIikuZ2V0RGF0YSgpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB6eS5zcGxpY2UoaSwgMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoXFxcImRhdGFcXFwiLCBKU09OLnN0cmluZ2lmeSh6eSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIGkpO1xcbiAgICAgICAgICAgICAgICBjYXNlIFxcXCLph43lkb3lkI1cXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQodlswXSwgXFxcIuaWsOeahOWQjeensFxcXCIpLmlucHV0KChpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHp5ID0gc3RvcmFnZTAuZ2V0TXlWYXIoXFxcImRhdGFcXFwiLCAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5nZXREYXRhKCkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHp5W2ldWzBdID0gaW5wdXQ7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoXFxcImRhdGFcXFwiLCBKU09OLnN0cmluZ2lmeSh6eSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIGkpO1xcbiAgICAgICAgICAgICAgICBjYXNlIFxcXCLph43mlrDliIbnu4RcXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoW1xcXCLpgInnu4RcXFwiLCBcXFwi5paw57uEXFxcIl0sIDIpLnNlbGVjdChpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBzZXROZXdEYXRhKGksIGlzTmV3WnUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHp5ID0gc3RvcmFnZTAuZ2V0TXlWYXIoXFxcImRhdGFcXFwiLCAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5nZXREYXRhKCkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgenUgPSAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5nZXRHcm91cCh6eSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdEYXRhID0genkuc3BsaWNlKGksIDEpWzBdO1xcblxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNOZXdadSAmJiAhenUuaW5jbHVkZXMoaW5wdXQpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChbXFxcIuacgOWJjemdolxcXCIsIFxcXCLmnIDlkI7pnaJcXFwiLCBcXFwi6Ieq5a6a5LmJXFxcIl0sIDEsICfor7fpgInmi6knKS5zZWxlY3QoKGlucHV0MiwgbmV3RGF0YSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB6eSA9IHN0b3JhZ2UwLmdldE15VmFyKFxcXCJkYXRhXFxcIiwgJC5yZXF1aXJlKFxcXCJkYXRhXFxcIikuZ2V0RGF0YSgpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgenUgPSAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5nZXRHcm91cCh6eSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnB1dCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICfmnIDliY3pnaInOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgenkudW5zaGlmdChbaW5wdXQyXSwgbmV3RGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAn5pyA5ZCO6Z2iJzpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHp5LnB1c2goW2lucHV0Ml0sIG5ld0RhdGEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ+iHquWumuS5iSc6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCh6dSwgMSwgJ+ivt+mAieaLqeaWsOe7hOS9jee9ricpLnNlbGVjdCgoaW5wdXQyLCBuZXdEYXRhKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHp5ID0gc3RvcmFnZTAuZ2V0TXlWYXIoXFxcImRhdGFcXFwiLCAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5nZXREYXRhKCkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB6dSA9ICQucmVxdWlyZShcXFwiZGF0YVxcXCIpLmdldEdyb3VwKHp5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0genkuZmluZEluZGV4KHYgPT4gdlswXSA9PT0gaW5wdXQgJiYgdlsxXSA9PT0gdW5kZWZpbmVkKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6eS5zcGxpY2UoaSwgMCwgW2lucHV0Ml0sIG5ld0RhdGEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKFxcXCJkYXRhXFxcIiwgSlNPTi5zdHJpbmdpZnkoenkpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpbnB1dDIsIG5ld0RhdGEpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoXFxcImRhdGFcXFwiLCBKU09OLnN0cmluZ2lmeSh6eSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGlucHV0LCBuZXdEYXRhKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSB6eS5maW5kSW5kZXgodiA9PiB2WzBdID09PSBpbnB1dCAmJiB2WzFdID09PSB1bmRlZmluZWQpICsgMTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlpID0genUuaW5kZXhPZihpbnB1dCkgKyAxO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWkgPSB6eS5maW5kSW5kZXgodiA9PiB2WzBdID09PSB6dVtpaV0gJiYgdlsxXSA9PT0gdW5kZWZpbmVkKSsxO1xcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoW1xcXCLmnIDliY3pnaJcXFwiLCBcXFwi5pyA5ZCO6Z2iXFxcIiwgXFxcIuiHquWumuS5iVxcXCJdLCAxLCAn6K+36YCJ5oupJykuc2VsZWN0KChpLCBpaSwgbmV3RGF0YSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB6eSA9IHN0b3JhZ2UwLmdldE15VmFyKFxcXCJkYXRhXFxcIiwgJC5yZXF1aXJlKFxcXCJkYXRhXFxcIikuZ2V0RGF0YSgpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgenUgPSAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5nZXRHcm91cCh6eSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnB1dCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICfmnIDliY3pnaInOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgenkuc3BsaWNlKGksIDAsIG5ld0RhdGEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ+acgOWQjumdoic6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6eS5zcGxpY2UoaWksIDAsIG5ld0RhdGEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ+iHquWumuS5iSc6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6dTIgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaiA9IGk7IGogPCBpaTsgaisrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgenUyLnB1c2goenlbal1bMF0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCh6dTIsIDEsICfor7fpgInmi6notYTmupDkvY3nva4nKS5zZWxlY3QoKGksIHp1MiwgbmV3RGF0YSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB6eSA9IHN0b3JhZ2UwLmdldE15VmFyKFxcXCJkYXRhXFxcIiwgJC5yZXF1aXJlKFxcXCJkYXRhXFxcIikuZ2V0RGF0YSgpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgenUgPSAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5nZXRHcm91cCh6eSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSArPSB6dTIuaW5kZXhPZihpbnB1dCk7XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgenkuc3BsaWNlKGksIDAsIG5ld0RhdGEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKFxcXCJkYXRhXFxcIiwgSlNPTi5zdHJpbmdpZnkoenkpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpLCB6dTIsIG5ld0RhdGEpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoXFxcImRhdGFcXFwiLCBKU09OLnN0cmluZ2lmeSh6eSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGksIGlpLCBuZXdEYXRhKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gXFxcIumAiee7hFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHp5ID0gc3RvcmFnZTAuZ2V0TXlWYXIoXFxcImRhdGFcXFwiLCAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5nZXREYXRhKCkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgenUgPSAkLnJlcXVpcmUoXFxcImRhdGFcXFwiKS5nZXRHcm91cCh6eSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKHp1LCAyLCBcXFwi6YCJ5oup57uEXFxcIikuc2VsZWN0KHNldE5ld0RhdGEsIGkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKFxcXCJcXFwiLCBcXFwi6K+36L6T5YWl5paw55qE57uE5ZCNXFxcIikuaW5wdXQoc2V0TmV3RGF0YSwgaSwgdHJ1ZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSwgaSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSwgaWksIHYpXFxuICAgIH0pO1xcbn1cXG5cXG5cXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkv53lrZjotYTmupBcIixcInBhdGhcIjpcIuS/neWtmFwiLFwicnVsZVwiOlwiJC5leHBvcnRzID0gZnVuY3Rpb24oUGFnZVRpdGxlLCBwd2RfaWQsIHBhc3Njb2RlLCBwZGlyX2ZpZCwgc29ydG51bSwgc3R5bGUxKSB7XFxuICAgIHJldHVybiAkKFBhZ2VUaXRsZSwgXFxcIui+k+WFpeWQjeensFxcXCIpLmlucHV0KChwd2RfaWQsIHBhc3Njb2RlLCBwZGlyX2ZpZCwgc29ydG51bSwgc3R5bGUxKSA9PiB7XFxuICAgICAgICBsZXQgbmV3RGF0YSA9IFtpbnB1dCwgcHdkX2lkLCBwYXNzY29kZSwgcGRpcl9maWQsIHNvcnRudW0sIHN0eWxlMV07XFxuICAgICAgICByZXR1cm4gJChbXFxcIumAiee7hFxcXCIsIFxcXCLmlrDnu4RcXFwiXSwgMikuc2VsZWN0KG5ld0RhdGEgPT4ge1xcbiAgICAgICAgICAgIGZ1bmN0aW9uIHNldE5ld0RhdGEobmV3RGF0YSwgaXNOZXdadSkge1xcblxcbiAgICAgICAgICAgICAgICBsZXQgenkgPSAkLnJlcXVpcmUoXFxcImRhdGE/cnVsZT11Y2tr5LqRXFxcIikuZ2V0RGF0YSgpO1xcbiAgICAgICAgICAgICAgICBsZXQgenUgPSAkLnJlcXVpcmUoXFxcImRhdGE/cnVsZT11Y2tr5LqRXFxcIikuZ2V0R3JvdXAoKTtcXG5cXG5cXG4gICAgICAgICAgICAgICAgaWYgKGlzTmV3WnUgJiYgIXp1LmluY2x1ZGVzKGlucHV0KSkge1xcblxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoW1xcXCLmnIDliY3pnaJcXFwiLCBcXFwi5pyA5ZCO6Z2iXFxcIiwgXFxcIuiHquWumuS5iVxcXCJdLCAxLCAn6K+36YCJ5oupJykuc2VsZWN0KChpbnB1dDIsIG5ld0RhdGEpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgenkgPSAkLnJlcXVpcmUoXFxcImRhdGE/cnVsZT11Y2tr5LqRXFxcIikuZ2V0RGF0YSgpO1xcbiAgICAgICAgICAgICAgICBsZXQgenUgPSAkLnJlcXVpcmUoXFxcImRhdGE/cnVsZT11Y2tr5LqRXFxcIikuZ2V0R3JvdXAoKTtcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGlucHV0KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ+acgOWJjemdoic6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6eS51bnNoaWZ0KFtpbnB1dDJdLCBuZXdEYXRhKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICfmnIDlkI7pnaInOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgenkucHVzaChbaW5wdXQyXSwgbmV3RGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAn6Ieq5a6a5LmJJzpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKHp1LCAxLCAn6K+36YCJ5oup5paw57uE5L2N572uJykuc2VsZWN0KChpbnB1dDIsIG5ld0RhdGEpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgenkgPSAkLnJlcXVpcmUoXFxcImRhdGE/cnVsZT11Y2tr5LqRXFxcIikuZ2V0RGF0YSgpO1xcbiAgICAgICAgICAgICAgICBsZXQgenUgPSAkLnJlcXVpcmUoXFxcImRhdGE/cnVsZT11Y2tr5LqRXFxcIikuZ2V0R3JvdXAoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0genkuZmluZEluZGV4KHYgPT4gdlswXSA9PT0gaW5wdXQgJiYgdlsxXSA9PT0gdW5kZWZpbmVkKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6eS5zcGxpY2UoaSwgMCwgW2lucHV0Ml0sIG5ld0RhdGEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcIuabv+aNoj9ydWxlPXVja2vkupFcXFwiKSh6eSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpbnB1dDIsIG5ld0RhdGEpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwi5pu/5o2iP3J1bGU9dWNra+S6kVxcXCIpKHp5KTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIGlucHV0LCBuZXdEYXRhKVxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSB6eS5maW5kSW5kZXgodiA9PiB2WzBdID09PSBpbnB1dCAmJiB2WzFdID09PSB1bmRlZmluZWQpICsgMTtcXG4gICAgICAgICAgICAgICAgICAgIGlpID0genUuaW5kZXhPZihpbnB1dCkgKyAxO1xcbiAgICAgICAgICAgICAgICAgICAgaWkgPSB6eS5maW5kSW5kZXgodiA9PiB2WzBdID09PSB6dVtpaV0gJiYgdlsxXSA9PT0gdW5kZWZpbmVkKTtcXG5cXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkKFtcXFwi5pyA5YmN6Z2iXFxcIiwgXFxcIuacgOWQjumdolxcXCIsIFxcXCLoh6rlrprkuYlcXFwiXSwgMSwgJ+ivt+mAieaLqScpLnNlbGVjdCgoaSwgaWksIG5ld0RhdGEpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgenkgPSAkLnJlcXVpcmUoXFxcImRhdGE/cnVsZT11Y2tr5LqRXFxcIikuZ2V0RGF0YSgpO1xcbiAgICAgICAgICAgICAgICBsZXQgenUgPSAkLnJlcXVpcmUoXFxcImRhdGE/cnVsZT11Y2tr5LqRXFxcIikuZ2V0R3JvdXAoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGlucHV0KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ+acgOWJjemdoic6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6eS5zcGxpY2UoaSwgMCwgbmV3RGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAn5pyA5ZCO6Z2iJzpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHp5LnNwbGljZShpaSwgMCwgbmV3RGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAn6Ieq5a6a5LmJJzpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHp1MiA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gaTsgaiA8IGlpOyBqKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6dTIucHVzaCh6eVtqXVswXSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKHp1MiwgMSwgJ+ivt+mAieaLqei1hOa6kOS9jee9ricpLnNlbGVjdCgoaSwgenUyLCBuZXdEYXRhKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHp5ID0gJC5yZXF1aXJlKFxcXCJkYXRhP3J1bGU9dWNra+S6kVxcXCIpLmdldERhdGEoKTtcXG4gICAgICAgICAgICAgICAgbGV0IHp1ID0gJC5yZXF1aXJlKFxcXCJkYXRhP3J1bGU9dWNra+S6kVxcXCIpLmdldEdyb3VwKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSArPSB6dTIuaW5kZXhPZihpbnB1dCk7XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgenkuc3BsaWNlKGksIDAsIG5ld0RhdGEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcIuabv+aNoj9ydWxlPXVja2vkupFcXFwiKSh6eSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpLCB6dTIsIG5ld0RhdGEpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwi5pu/5o2iP3J1bGU9dWNra+S6kVxcXCIpKHp5KTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIGksIGlpLCBuZXdEYXRhKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAoaW5wdXQgPT0gXFxcIumAiee7hFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgenUgPSAkLnJlcXVpcmUoXFxcImRhdGE/cnVsZT11Y2tr5LqRXFxcIikuZ2V0R3JvdXAoKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoenUsIDIsIFxcXCLpgInmi6nnu4RcXFwiKS5zZWxlY3Qoc2V0TmV3RGF0YSwgbmV3RGF0YSk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoXFxcIlxcXCIsIFxcXCLor7fovpPlhaXmlrDnmoTnu4TlkI1cXFwiKS5pbnB1dChzZXROZXdEYXRhLCBuZXdEYXRhLCB0cnVlKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9LCBuZXdEYXRhKTtcXG4gICAgfSwgcHdkX2lkLCBwYXNzY29kZSwgcGRpcl9maWQsIHNvcnRudW0sIHN0eWxlMSlcXG59XCJ9XSIsImljb24iOiJodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIyLzA3LzI2LzcvMTEwXzE5ZDk4MjM4MTdhODMzNzA0ZDZlOWI0MGM3MWRhMDQyX2Nvbl8xMzB4MTMwLnBuZyIsInByb3h5IjoiIn0=
Add Comment
Please, Sign In to add comment