Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥排行榜-顶了十几年的锅盖头终究还是没了!@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJqczpcXG5sZXQgaHRtbCA9IGdldFJlc0NvZGUoKVxcbi8vIGxvZyhodG1sKVxcbmxldCByZWdleCA9IC93aW5kb3dcXFxcLl9fSU5JVElBTF9TVEFURV9fPSguKj8pO1xcXFwoZnVuY3Rpb25cXFxcKFxcXFwpXFxcXHsvXFxuLy8gbG9nKE1ZX1VSTClcXG5pZihNWV9VUkwuc3RhcnRzV2l0aCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbCcpKSB7XFxuICAgIGxldCBjb2RlID0gSlNPTi5wYXJzZShodG1sKVxcbiAgICB0cnkge1xcbiAgICAgICAgaWYgKGNvZGUuZGF0YS5WaWV3WydyZWRpcmVjdF91cmwnXSkge1xcbiAgICAgICAgICAgIE1ZX1VSTCA9IGNvZGUuZGF0YS5WaWV3WydyZWRpcmVjdF91cmwnXTtcXG4gICAgICAgICAgICBodG1sID0gZmV0Y2goTVlfVVJMLCB7fSk7XFxuICAgICAgICB9XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGxvZyAoZS5tZXNzYWdlKVxcbiAgICB9XFxufVxcbi8vIGxvZyhodG1sKVxcbmlmIChNWV9VUkwuc3RhcnRzV2l0aCgnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2Jhbmd1bWkvcGxheS8nKSAmJiByZWdleC50ZXN0KGh0bWwpKSB7XFxuICAgIC8vIOeVquWJp1xcbiAgICAvLyBsb2coJ+WMuemFje+8micgKyBSZWdFeHAuJDEpXFxuICAgIGxldCByZXMgPSBKU09OLnBhcnNlKFJlZ0V4cC4kMSlcXG4gICAgbGV0IHJlc3VsdCA9IHJlcy5uZXdlc3RFcFxcbiAgICBpZighcmVzdWx0KSB7XFxuICAgICAgICByZXN1bHQgPSByZXMubWVkaWFJbmZvLm5ld19lcFxcbiAgICB9XFxuICAgIHNldFJlc3VsdChcXFwi5pu05paw6Iez77ya56ysXFxcIiArIHJlc3VsdC50aXRsZSArIFxcXCLor51cXFwiKVxcbn0gZWxzZSBpZiAoTVlfVVJMLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2gnKSkge1xcbiAgICAvLyBVUCDkuLtcXG4gICAgbGV0IHJlcyA9IEpTT04ucGFyc2UoaHRtbClcXG4gICAgbGV0IHJlc3VsdCA9IHJlcy5kYXRhLmxpc3Qudmxpc3RbMF0udGl0bGVcXG4gICAgc2V0UmVzdWx0KFxcXCLmm7TmlrDoh7PvvJpcXFwiICsgcmVzdWx0KVxcbn0gZWxzZSB7XFxuICAgIHNldFJlc3VsdChcXFwiXFxcIilcXG59XCIsXCJsaXN0VG9DbGVhckFzc29jaWF0ZWRGS1wiOltdLFwibGlzdFRvQ2xlYXJTZWxmRktcIjpbXSxcInBhZ2VMaXN0XCI6W3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt5LiA57qnXCIsXCJwYXRoXCI6XCJjb21tb25cIixcInJ1bGVcIjpcInZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXG4gICAgLy8ucmVwbGFjZSgnbS5iaWxpYmlsaS5jb20nLCAnd3d3LmJpbGliaWxpLmNvbScpLnJlcGxhY2UoL1xcXFw/L2csICfvvJ/vvJ8nKS5yZXBsYWNlKC9cXFxcJi9nLCAn77yG77yGJylcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn6Kej5p6QJyxcXG4gICAgICAgIHVybDogXFxcIidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nKydodHRwczovLycraW5wdXQuc3BsaXQoJ2h0dHBzOi8vJylbMV0rJyNpbW1lcnNpdmVUaGVtZSMnXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgZGVzYzogJ+ivt+i+k+WFpee9keWdgOaIluiAhWLnq5nlpI3liLbnmoTpk77mjqUnXFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdXJsOiAkKFxcXCLmm7TlpJpcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXCI7XFxuICAgICAgICB9LCApLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vaW1nMC5iYWlkdS5jb20vaXQvdT0xNjEyMTAxNDIzLDExNDU5ODIxNjMmZm09MjUzJmFwcD0xMzgmZj1KUEVHP3c9NTAwJmg9NDI0JyxcXG4gICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMScsXFxuICAgICAgICBkZXNjOlxcXCIwXFxcIlxcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5o6S6KGM5qacJyxcXG4gICAgICAgIHVybDogJChcXFwi5o6S6KGM5qacXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFwiO1xcbiAgICAgICAgfSwgKSxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS81MC5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfnm7Tmkq0nLFxcbiAgICAgICAgdXJsOiAkKFxcXCLnm7Tmkq1cXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXCI7XFxuICAgICAgICB9LCApLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzIyLnBuZycsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+aXtuWFieacuicsXFxuICAgICAgICB1cmw6ICQoXFxcIuaXtuWFieaculxcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcIjtcXG4gICAgICAgIH0sICksXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvNTYucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAnVVAnLFxcbiAgICAgICAgdXJsOiAkKFxcXCJVUOS4u1xcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcIjtcXG4gICAgICAgIH0sICksXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvOTgucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn57Si5byVJyxcXG4gICAgICAgIHVybDogJChcXFwi57Si5byVXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFwiO1xcbiAgICAgICAgfSwgKSxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS80Ny5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfmlrDnlaonLFxcbiAgICAgICAgdXJsOiAkKFxcXCLmlrDnlapcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXCI7XFxuICAgICAgICB9LCApLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzIzLnBuZycsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+a8q+a4uCcsXFxuICAgICAgICB1cmw6ICQoXFxcIua8q+a4uFxcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcIjtcXG4gICAgICAgIH0sICksXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvODMucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn55m75b2VJyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9uZXdsb2dpbicsXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvMi5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxuICAgIH0pO1xcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcylcIn0se1wiY29sX3R5cGVcIjpcInBpY18xX2NhcmRcIixcIm5hbWVcIjpcIuS7o+eggS3mjpLooYzmppxcIixcInBhdGhcIjpcInBoYlwiLFwicnVsZVwiOlwiLy/liIbnsbtcXG5cXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxudmFyIGMxID0gJ2FsbCZiYW5ndW1pJmd1b2NoYW4mZG91Z2EmbXVzaWMma25vd2xlZGdlJnRlY2gmY2FyJmxpZmUmZm9vZCZraWNoaWt1JmZhc2hpb24mY2luZXBoaWxlJm9yaWdpbiZyb29raWUmZ2FtZSZlbnQmZGFuY2UmbW92aWUmdHYmZG9jdW1lbnRhcnkmYW5pbWFsJmd1b2NodWFuZyc7XFxudmFyIHcxID0gJ+WFqOmDqCbnlarliacm5Zu95YibJuWKqOeUuybpn7PkuZAm55+l6K+GJuenkeaKgCbmsb3ovaYm55Sf5rS7Jue+jumjnybprLznlZwm5pe25bCaJuW9seinhibljp/liJsm5paw5Lq6Jua4uOaIjyblqLHkuZAm6Iie6LmIJueUteW9sSbnlLXop4bliacm57qq5b2V54mHJuWKqOeJqeWciCblm73liJvnm7jlhbMnO1xcbnZhciB3b3JkMSA9IHcxLnNwbGl0KCcmJyk7XFxudmFyIGNsYXNzMSA9IGMxLnNwbGl0KCcmJyk7XFxudmFyIGxhYjEgPSBnZXRWYXIoJ2xhYjEnLCAn5YWo6YOoJyk7XFxudmFyIGtleTEgPSBnZXRWYXIoJ2tleTEnLCAnYWxsJyk7XFxuXFxuICAgIGZvciAodmFyIGkgaW4gd29yZDEpIHtcXG4gICAgICAgIHZhciBhID0gd29yZDFbaV07XFxuICAgICAgICB2YXIgYiA9IGNsYXNzMVtpXTtcXG4gICAgICAgIHZhciBjID0gYSArICcmJyArIGI7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAgYSA9PSBsYWIxID8gZ2V0SGVhZChhKSA6IGEsXFxuICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChjKSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dFZhcihcXFwibGFiMVxcXCIsIGMuc3BsaXQoJyYnKVswXSk7XFxuICAgICAgICAgICAgICAgIHB1dFZhcihcXFwia2V5MVxcXCIsIGMuc3BsaXQoJyYnKVsxXSk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgIH0sIGMpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVxcbi8v5YiG57G7XFxuLy9sb2coTVlfUEFHRSlcXG5cXG52YXIgdXJsID0gJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS92L3BvcHVsYXIvcmFuay9hbGwnO1xcblxcbk1ZX1VSTCA9IHVybC5yZXBsYWNlKCdhbGwnLCBnZXRWYXIoJ2tleTEnKSk7XFxuXFxudmFyIHltID0gcmVxdWVzdChNWV9VUkwsIHt9KS5yZXBsYWNlKC9cXFxcXFxcXHUwMDJGL2csICcvJyk7XFxuaWYgKHltLmluY2x1ZGVzKCdyYW5rLXRpcHMnKSkge1xcblxcbiAgICAvKuaPkOekuuS/oeaBr1xcbiAgICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTon4oCc4oCcJytwYXJzZURvbUZvckh0bWwoeW0sJy5yYW5rLXRpcHMmJlRleHQnKSsn4oCd4oCdJyxcXG4gICAgICAgIGNvbF90eXBlOid0ZXh0XzEnXFxuICAgICAgfSk7XFxuICAgIOaPkOekuuS/oeaBryovXFxuXFxuICAgIHZhciBwaSA9IEpTT04ucGFyc2UoeW0uc3BsaXQoJ1xcXCJyYW5rTGlzdFxcXCI6JylbMV0uc3BsaXQoJyxcXFwicmFua05vdGVcXFwiJylbMF0pO1xcbiAgICBmb3IgKHZhciBpID0gMDsgcGkgIT0gbnVsbCAmJiBpIDwgcGkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIHZhciBudW0gPSBpICsgMTtcXG4gICAgICAgIHZhciBxID0gSlNPTi5zdHJpbmdpZnkocGlbaV0pO1xcbiAgICAgICAgaWYgKCFwaVtpXS51cmwpIHtcXG4gICAgICAgICAgICB2YXIgcnVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIHBpW2ldLmJ2aWQ7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHZhciBydXJsID0gcGlbaV0udXJsO1xcbiAgICAgICAgfVxcbiAgICAgICAgXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBwaVtpXS50aXRsZSxcXG4gICAgICAgICAgICBwaWNfdXJsOiBwaVtpXS5waWMgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgIGRlc2M6ICghcS5pbmNsdWRlcygnbmFtZScpID8gcGlbaV0ubmV3X2VwLmluZGV4X3Nob3cgOiAoJ3VwOiAnICsgcGlbaV0ub3duZXIubmFtZSkpLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyBydXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzFfY2FyZCdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgLypcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOidOby4nK251bSsnXFxcXG5cXFxcbuKAmOKAmDxzbWFsbD4nK3BpW2ldLnRpdGxlKydcXFxcbicrKCFxLmluY2x1ZGVzKCduYW1lJyk/cGlbaV0ubmV3X2VwLmluZGV4X3Nob3c6KCd1cDogJytwaVtpXS5vd25lci5uYW1lKSkrJzwvc21hbGw+JyxcXG4gICAgICAgICAgICAgICAgcGljX3VybDpwaVtpXS5waWMrUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgZGVzYzonMCcsXFxuICAgICAgICAgICAgICAgIHVybDonaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JytydXJsKycjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6J3BpY18xX2NhcmQnXFxuICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICovXFxuICAgIH1cXG59IGVsc2Uge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfigJzigJzoioLliLbkuIDngrnvvIzkvJHmga/llabvvIHigJ3igJ0nLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEtdXDwn5C3XCIsXCJwYXRoXCI6XCJ1cFwiLFwicnVsZVwiOlwiY29uc3QgaGVhZENvbG9yID0gXFxcIiMzNThjY2RcXFwiO1xcblxcbi8v5pe26Ze05oiz6L2s5o2i5pa55rOVXFxuLypcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxuICAgICB2YXIgc3NzID0gbmV3IERhdGUocGFyc2VJbnQoblMpKS50b0xvY2FsZVN0cmluZygpLnN1YnN0cigwLDE3KTtcXG4gICAgIHZhciBZTUQgPSBzc3Muc3BsaXQoJ+aXpScpWzBdLnJlcGxhY2UoJ+W5tCcsJy0nKS5yZXBsYWNlKCfmnIgnLCctJyk7XFxuICAgICByZXR1cm4gKFlNRClcXG59XFxuKi9cXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHtcXG4gICAgdmFyIGRhdGUgPSBuZXcgRGF0ZShuUyk7XFxuICAgIHZhciBZWSA9IGRhdGUuZ2V0RnVsbFllYXIoKSArICctJztcXG4gICAgdmFyIE1NID0gKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpICsgJy0nO1xcbiAgICB2YXIgREQgPSAoZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIChkYXRlLmdldERhdGUoKSkgOiBkYXRlLmdldERhdGUoKSk7XFxuICAgIHZhciB0aW1lID0gWVkgKyBNTSArIEREO1xcbiAgICByZXR1cm4gdGltZVxcbn1cXG52YXIgc3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0XFxcIixpbnB1dCk7cHV0VmFyKCd1cCcsJycpO3B1dFZhcignVVAnLCcnKTtwdXRWYXIoJ3NldCcsJycpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiYDtcXG4vL+aXtumXtOaIs+i9rOaNolxcblxcbnZhciB1aWQgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2NhY2hlLnR4dFxcXCIsIHt9KTtcXG52YXIgVVBfVVJMID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2g/bWlkPXVpZCZwcz0zMCZ0aWQ9MCZrZXl3b3JkPSZqc29ucD1qc29ucCZwbj0nICsgcGFnZW51bSArICcmb3JkZXI9cHViZGF0ZSc7XFxudmFyIHVwX3VybCA9IFVQX1VSTC5yZXBsYWNlKFxcXCJ1aWRcXFwiLCB1aWQpO1xcbnZhciB4eCA9IGdldFZhcignbGIyJykuc3BsaXQoJ1xcXFxuJyk7XFxuLy/mm7TmlrDlpLTlg49cXG5mb3IgKHZhciBrIGluIHh4KSB7XFxuICAgIGlmICgheHhba10uc3BsaXQoJyMjJylbMV0pIHtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nICsgeHhba10uc3BsaXQoJyYmJylbMV0gKyAnJmpzb25wPWpzb25wJywge30pKS5kYXRhLmZhY2U7XFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScgKyB4eFtrXS5zcGxpdCgnJiYnKVsxXSArICcmbmVlZF90b3A9MScsIHt9KSkuZGF0YS5jYXJkc1swXS5kZXNjLnVzZXJfcHJvZmlsZS5pbmZvLmZhY2U7XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgZmFjZSA9IHh4W2tdICsgJyMjJyArIHBpYztcXG4gICAgICAgIHZhciBmYWNlID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cC50eHRcXFwiLCB7fSkucmVwbGFjZSh4eFtrXSwgZmFjZSk7XFxuICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cC50eHRcXFwiLCBmYWNlKTtcXG4gICAgfVxcbn1cXG5cXG5cXG5cXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxuICAgIHZhciBzX3RhYiA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsIHt9KTtcXG4gICAgaWYgKGdldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpICYmIGdldFZhcignc3RhcmlkJykpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfmjqjojZAnID8gJ/CflLQnICsgZ2V0SGVhZChzX3RhYikgOiAn4pqq77iP5o6o6I2QJyxcXG4gICAgICAgICAgICB1cmw6ICfmjqjojZAnICsgc3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfmlLbol48nID8gJ/CflLQnICsgZ2V0SGVhZChzX3RhYikgOiAn4pqq77iP5pS26JePJyxcXG4gICAgICAgICAgICB1cmw6ICfmlLbol48nICsgc3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfov73nlaonID8gJ/CflLQnICsgZ2V0SGVhZChzX3RhYikgOiAn4pqq77iP6L+955WqJyxcXG4gICAgICAgICAgICB1cmw6ICfov73nlaonICsgc3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfov73liacnID8gJ/CflLQnICsgZ2V0SGVhZChzX3RhYikgOiAn4pqq77iP6L+95YmnJyxcXG4gICAgICAgICAgICB1cmw6ICfov73liacnICsgc3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICAvL+iHquW3seeahOWFs+azqFxcbiAgICB2YXIgc3Rhcmpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9JyArIGdldFZhcignc3RhcmlkJykgKyAnJmpzb25wPWpzb25wJywge30pKTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAoZ2V0VmFyKCdVUCcpID09ICflhbPms6gnID8gJ+KYuu+4jycgOiAnJykgKyBzdGFyanNvbi5kYXRhLm5hbWUsXFxuICAgICAgICBwaWNfdXJsOiBzdGFyanNvbi5kYXRhLmZhY2UgKyBSZWZlcmVyLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdVUCcsIGdldFZhcignVVAnKT09J+WFs+azqCc/J+aKmOWPoCc6J+WFs+azqCcpO3B1dFZhcignc2V0JywnJyk7Y2xlYXJWYXIoJ2h0bScpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCcnKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8vJytnZXRWYXIoJ1VQJywn5LiT5rOoJylcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzJfcm91bmQnXFxuICAgIH0pO1xcbiAgICAvL+iHquW3seeahOWFs+azqFxcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICc8c3Ryb25nPicgKyAn4oCY4oCYVVDigJnigJknICsgJzwvc3Ryb25nPicgKyAoZ2V0VmFyKCd1cCcsICfmipjlj6AnKSA9PSAn5bGV5byAJyA/ICfwn5mJJyA6ICfwn5mIJyksXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ3VwJywgZ2V0VmFyKCd1cCcpPT0n5bGV5byAJz8n5oqY5Y+gJzon5bGV5byAJyk7cHV0VmFyKCdzZXQnLCcnKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0JywnJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+W3sicrZ2V0VmFyKCd1cCcsJ+WxleW8gCcpO1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogZ2V0VmFyKCdzZXQnKSAhPSAnJyA/IChnZXRWYXIoJ3NldCcpID09ICfnva7pobYnID8gJzxzdHJvbmc+JyArICfigJzigJznva7pobYnICsgJzwvc3Ryb25nPicgOiAnPHN0cm9uZz4nICsgJ+KAnOKAnOWPluWFs+KAneKAnScgKyAnPC9zdHJvbmc+JykgOiAn6K6+572uJyxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignc2V0JywgZ2V0VmFyKCdzZXQnLCflsZXlvIAnKT09J+WPluWFsyc/J+e9rumhtic6J+WPluWFsycpO3B1dFZhcigndXAnLCcnKTtwdXRWYXIoJ1VQJywnJyk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsJycpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly8nK2dldFZhcignc2V0Jywn5bGV5byAJykrJ2luZ34nXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG5cXG4gICAgaWYgKGdldFZhcignVVAnKSA9PSAn5YWz5rOoJykge1xcbiAgICAgICAgaWYgKGdldFZhcignaHRtJykgPT0gJycgfHwgZ2V0VmFyKCd1cCcpID09ICflsZXlvIAnKSB7XFxuICAgICAgICAgICAgdmFyIHVybHMgPSBbXTtcXG4gICAgICAgICAgICB2YXIgc3VybCA9ICdodHRwczovL3NwYWNlLmJpbGliaWxpLmNvbS9oNS9mb2xsb3c/dHlwZT1mb2xsb3cmbWlkPScgKyBnZXRWYXIoJ3N0YXJpZCcpO1xcbiAgICAgICAgICAgIHZhciBpZCA9IHN1cmwuc3BsaXQoJ21pZD0nKVsxXTtcXG4gICAgICAgICAgICB2YXIgY29kZSA9IGZldGNoKHN1cmwsIHt9KTtcXG4gICAgICAgICAgICB2YXIgc3Rhcmxpc3QgPSBKU09OLnBhcnNlKCd7XFxcIm15JyArIGNvZGUuc3BsaXQoJ3tcXFwibXknKVsxXS5zcGxpdCgnfX07JylbMF0gKyAnfX0nKTtcXG5cXG4gICAgICAgICAgICB2YXIgc3RhcmxzID0gc3Rhcmxpc3RbJ2xpc3QnXVsnZ2V0Rm9sbG93TGlzdC1wYWdlLW1pZC0nICsgaWRdWydyZXN1bHQnXTtcXG4gICAgICAgICAgICBmb3IgKHggaW4gc3RhcmxzKSB7XFxuICAgICAgICAgICAgICAgIHZhciB5dXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2g/bWlkPScgKyBzdGFybHNbeF0ubWlkICsgJyZwcz0zMCZ0aWQ9MCZrZXl3b3JkPSZqc29ucD1qc29ucCZwbj1meXBhZ2Umb3JkZXI9cHViZGF0ZSc7XFxuICAgICAgICAgICAgICAgIHVybHMucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHl1cmwucmVwbGFjZSgvZnlwYWdlL2csICcxJylcXG4gICAgICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ3VwJykgPT0gJ+WxleW8gCcpXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzdGFybHNbeF0udW5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBzdGFybHNbeF0uZmFjZSArIFJlZmVyZXIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2d6Mj91cmw9JyArIHl1cmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uX3JvdW5kXzQnXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgLy/lhbPms6jliJfooahcXG5cXG4gICAgaWYgKGdldFZhcigndXAnKSA9PSAn5bGV5byAJyAmJiBnZXRWYXIoJ1VQJykgIT0gJ+WFs+azqCcpIHtcXG4gICAgICAgIGZvciAodmFyIGsgaW4geHgpIHtcXG4gICAgICAgICAgICB2YXIgc3QgPSB1aWQgPT0geHhba10uc3BsaXQoJyYmJylbMV0uc3BsaXQoJyMjJylbMF0gPyAn4pyTJyA6ICcnO1xcbiAgICAgICAgICAgIHZhciBwaWMgPSB4eFtrXS5zcGxpdCgnIyMnKVsxXTtcXG4gICAgICAgICAgICAvKuWktOWDj+iOt+WPllxcbiAgICAgICAgICAgICAgICB0cnl7XFxuICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1jYXRjaChlKXtcXG4gICAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZuZWVkX3RvcD0xJyx7fSkpLmRhdGEuY2FyZHNbMF0uZGVzYy51c2VyX3Byb2ZpbGUuaW5mby5mYWNlO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICBpZiAoIXBpYykge1xcbiAgICAgICAgICAgICAgICB2YXIgcGljID0gJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZic7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBzdCArIHh4W2tdLnNwbGl0KCcmJicpWzBdLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5IycgKyB4eFtrXS5zcGxpdCgnJiYnKVsxXSArIGBAbGF6eVJ1bGU9LmpzOmlucHV0PWlucHV0LnNwbGl0KCcjJylbMV07cHV0VmFyMigndWlkJyxpbnB1dCk7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfY2FjaGUudHh0XFxcIixpbnB1dCk7cHV0VmFyKCd1cCcsJ+aKmOWPoCcpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiO2AsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IHBpYyArIFJlZmVyZXIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC8v5Y+W5YWz55u45YWzXFxuXFxuICAgIGlmIChnZXRWYXIoJ3NldCcpID09ICflj5blhbMnKSB7XFxuXFxuICAgICAgICBmb3IgKHZhciBrIGluIHh4KSB7XFxuICAgICAgICAgICAgdmFyIHN0ID0gdWlkID09IHh4W2tdLnNwbGl0KCcmJicpWzFdID8gJ+KckycgOiAnJztcXG4gICAgICAgICAgICB2YXIgcGljID0geHhba10uc3BsaXQoJyMjJylbMV07XFxuICAgICAgICAgICAgLyrlpLTlg4/ojrflj5ZcXG4gICAgICAgICAgICAgICAgdHJ5e1xcbiAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO1xcbiAgICAgICAgICAgICAgICB9Y2F0Y2goZSl7XFxuICAgICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS52Yy5iaWxpYmlsaS5jb20vZHluYW1pY19zdnIvdjEvZHluYW1pY19zdnIvc3BhY2VfaGlzdG9yeT9ob3N0X3VpZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmbmVlZF90b3A9MScse30pKS5kYXRhLmNhcmRzWzBdLmRlc2MudXNlcl9wcm9maWxlLmluZm8uZmFjZTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICovXFxuICAgICAgICAgICAgaWYgKCFwaWMpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHBpYyA9ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+KdjCcgKyBzdCArIHh4W2tdLnNwbGl0KCcmJicpWzBdLFxcbiAgICAgICAgICAgICAgICB1cmw6IHh4W2tdICsgYEBsYXp5UnVsZT0uanM6dmFyIHNjPWlucHV0KydcXFxcXFxcXG4nO3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXG4nO3ZhciB4ej14ci5yZXBsYWNlKHNjLCcnKTt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLHh6KTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8v5Y+W5YWz5oiQ5Yqf77yB6ZOB5a2Q5YaN6KeB8J+mhidgLFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBwaWMgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fcm91bmRfNCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICAvL+e9rumhtuebuOWFs1xcblxcbiAgICBpZiAoZ2V0VmFyKCdzZXQnKSA9PSAn572u6aG2Jykge1xcblxcbiAgICAgICAgZm9yICh2YXIgayBpbiB4eCkge1xcbiAgICAgICAgICAgIHZhciBzdCA9IHVpZCA9PSB4eFtrXS5zcGxpdCgnJiYnKVsxXSA/ICfinJMnIDogJyc7XFxuICAgICAgICAgICAgdmFyIHBpYyA9IHh4W2tdLnNwbGl0KCcjIycpWzFdO1xcbiAgICAgICAgICAgIC8q5aS05YOP6I635Y+WXFxuICAgICAgICAgICAgICAgIHRyeXtcXG4gICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtcXG4gICAgICAgICAgICAgICAgfWNhdGNoKGUpe1xcbiAgICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkudmMuYmlsaWJpbGkuY29tL2R5bmFtaWNfc3ZyL3YxL2R5bmFtaWNfc3ZyL3NwYWNlX2hpc3Rvcnk/aG9zdF91aWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJm5lZWRfdG9wPTEnLHt9KSkuZGF0YS5jYXJkc1swXS5kZXNjLnVzZXJfcHJvZmlsZS5pbmZvLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIGlmICghcGljKSB7XFxuICAgICAgICAgICAgICAgIHZhciBwaWMgPSAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfwn5SdJyArIHN0ICsgeHhba10uc3BsaXQoJyYmJylbMF0sXFxuICAgICAgICAgICAgICAgIHVybDogeHhba10gKyBgQGxhenlSdWxlPS5qczp2YXIgc2M9aW5wdXQrJ1xcXFxcXFxcbic7dmFyIHhyPWdldFZhcignbGIyJykrJ1xcXFxcXFxcbic7dmFyIHh6PXhyLnJlcGxhY2Uoc2MsJycpO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIsc2MreHopO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly/nva7pobbmiJDlip/wn5SdJ2AsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IHBpYyArIFJlZmVyZXIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuXFxufVxcbi8vZC5wdXNoKHt0aXRsZTp4eH0pO1xcbmlmIChzX3RhYiA9PSAn5o6o6I2QJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9mZWVkXFxcIikpLnJ1bGUpO1xcbn0gZWxzZSBpZiAoc190YWIgPT0gJ+aUtuiXjycpIHtcXG4gICAgaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvdmlkZW9cXFwiKSkucnVsZSk7XFxufSBlbHNlIGlmIChzX3RhYiA9PSAn6L+95YmnJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9kc2pcXFwiKSkucnVsZSlcXG59IGVsc2UgaWYgKHNfdGFiID09ICfov73nlaonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2Zhbmp1XFxcIikpLnJ1bGUpXFxufSBlbHNlIGlmIChnZXRWYXIoJ1VQJykgIT0gJ+WFs+azqCcgJiYgZ2V0VmFyKCd1cCcpICE9ICflsZXlvIAnICYmIGdldFZhcignc2V0JykgPT0gJycpIHtcXG4gICAgdmFyIGpzb24gPSB7fTtcXG4gICAgZXZhbCgnanNvbj0nICsgZmV0Y2godXBfdXJsLCB7fSkpO1xcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGpzb24uZGF0YS5saXN0LnZsaXN0Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICB2YXIgciA9IHt9O1xcbiAgICAgICAgdmFyIGogPSBqc29uLmRhdGEubGlzdC52bGlzdFtpXTtcXG4gICAgICAgIHZhciB0ID0gTnVtYmVyKGouY3JlYXRlZCkgKiAxMDAwO1xcblxcblxcbiAgICAgICAgdmFyIHRpbWUgPSBnZXRMb2NhbFRpbWUodCk7XFxuXFxuICAgICAgICBpZiAoai5wbGF5ID4gMTAwMDApXFxuICAgICAgICAgICAgdmFyIHBsYXkgPSAoai5wbGF5IC8gMTAwMDApLnRvRml4ZWQoMSkgKyAn5LiHJztcXG4gICAgICAgIGVsc2VcXG4gICAgICAgICAgICB2YXIgcGxheSA9IGoucGxheTtcXG5cXG4gICAgICAgIHZhciBwaWNzID0gKGoucGljLmluZGV4T2YoJzonKSAhPSAtMSkgPyBqLnBpYyA6ICdodHRwczonICsgai5waWM7XFxuXFxuICAgICAgICByLnBpY191cmwgPSBwaWNzICsgUmVmZXJlcjtcXG4gICAgICAgIHIudXJsID0gJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgai5idmlkICsgJyNpbW1lcnNpdmVUaGVtZSMnO1xcbiAgICAgICAgci50aXRsZSA9IGoudGl0bGU7XFxuICAgICAgICByLmNvbF90eXBlID0gJ21vdmllXzFfdmVydGljYWxfcGljJztcXG4gICAgICAgIHIuZGVzYyA9ICfml7bplb/vvJonICsgai5sZW5ndGggKyAnICDmkq3mlL7ph4/vvJonICsgcGxheSArICcgIOWPkeW4g+aXpeacn++8micgKyB0aW1lO1xcbiAgICAgICAgaWYgKGoubGVuZ3RoICE9IFxcXCIwMDowMFxcXCIpIHtcXG4gICAgICAgICAgICBkLnB1c2gocilcXG4gICAgICAgIH07XFxuICAgIH1cXG59IGVsc2UgaWYgKGdldFZhcignVVAnKSA9PSAn5YWz5rOoJyAmJiBnZXRWYXIoJ3VwJykgIT0gJ+WxleW8gCcpIHtcXG5cXG4gICAgaWYgKGdldFZhcignaHRtJykgPT0gJycpIHtcXG4gICAgICAgIGh0bSA9IFtdO1xcbiAgICAgICAgdmFyIHltID0gYmF0Y2hGZXRjaCh1cmxzKS5tYXAoZnVuY3Rpb24oYSkge1xcbiAgICAgICAgICAgIHZhciBoID0gSlNPTi5wYXJzZShhKS5kYXRhLmxpc3Qudmxpc3Q7XFxuICAgICAgICAgICAgaHRtID0gaHRtLmNvbmNhdChoKTtcXG4gICAgICAgIH0pO1xcbiAgICAgICAgaHRtID0gaHRtLnNvcnQoZnVuY3Rpb24oYSwgYikge1xcbiAgICAgICAgICAgIHJldHVybiBiLmNyZWF0ZWQgLSBhLmNyZWF0ZWQ7XFxuICAgICAgICB9KS5tYXAoZnVuY3Rpb24oYSkge1xcbiAgICAgICAgICAgIGEuY3JlYXRlZCA9IGdldExvY2FsVGltZShOdW1iZXIoYS5jcmVhdGVkKSAqIDEwMDApO1xcbiAgICAgICAgICAgIHJldHVybiBhXFxuICAgICAgICB9KTtcXG4gICAgICAgIHB1dFZhcignaHRtJywgSlNPTi5zdHJpbmdpZnkoaHRtKSk7XFxuICAgIH0gZWxzZSBodG0gPSBKU09OLnBhcnNlKGdldFZhcignaHRtJykpO1xcbiAgICB2YXIgaSA9IDA7XFxuICAgIHZhciBrID0gMDtcXG4gICAgdmFyIHIgPSBuZXcgRGF0ZSgpO1xcbiAgICB2YXIgTSA9IHIuZ2V0TW9udGgoKSArIDE7XFxuICAgIHZhciB0RCA9IHIuZ2V0RnVsbFllYXIoKSArICctJyArIChNIDwgMTAgPyAoJzAnICsgTSkgOiBNKSArICctJyArIChyLmdldERhdGUoKSA8IDEwID8gKCcwJyArIHIuZ2V0RGF0ZSgpKSA6IHIuZ2V0RGF0ZSgpKTtcXG5cXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBodG0ubGVuZ3RoOyBqKyspIHtcXG4gICAgICAgIHRyeSB7XFxuXFxuICAgICAgICAgICAgaWYgKGogIT0gMCAmJiBodG1baiAtIDFdLmNyZWF0ZWQgIT0gaHRtW2pdLmNyZWF0ZWQpIGkrKztcXG5cXG4gICAgICAgICAgICBpZiAoaSArIDEgPT0gTVlfVVJMLnNwbGl0KCcjJylbMV0pIHtcXG4gICAgICAgICAgICAgICAgaWYgKGsgPT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGUgPSBodG1bal0uY3JlYXRlZDtcXG4gICAgICAgICAgICAgICAgICAgIGsrKztcXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRlID09IHREKSBkYXRlID0gJzxzdHJvbmc+5LuK5aSpPC9zdHJvbmc+JztcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ08Zm9udCBjb2xvcj1cXFwiIzM1OGNjZFxcXCI+JyArIGRhdGUgKyAnPFxcXFxmb250PicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3VybDpgQGxhenlSdWxlPS5qczpjbGVhclZhcignaHRtJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+WIt+aWsOaIkOWKnyc7YFxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaWYgKGh0bVtqXS5wbGF5ID4gMTAwMDApXFxuICAgICAgICAgICAgICAgICAgICB2YXIgcGxheSA9IChodG1bal0ucGxheSAvIDEwMDAwKS50b0ZpeGVkKDEpICsgJ+S4hyc7XFxuICAgICAgICAgICAgICAgIGVsc2VcXG4gICAgICAgICAgICAgICAgICAgIHZhciBwbGF5ID0gaHRtW2pdLnBsYXk7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaHRtW2pdLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiAoKGh0bVtqXS5waWMuaW5kZXhPZignOicpICE9IC0xKSA/IGh0bVtqXS5waWMgOiAoJ2h0dHBzOicgKyBodG1bal0ucGljKSkgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogJ1VQOicgKyBodG1bal0uYXV0aG9yICsgJyAg5pe26ZW/77yaJyArIGh0bVtqXS5sZW5ndGggKyAnXFxcXG7mkq3mlL7ph4/vvJonICsgcGxheSArICcgIOWPkeW4g+aXpeacn++8micgKyBodG1bal0uY3JlYXRlZCxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgaHRtW2pdLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGkgKyAxID4gTVlfVVJMLnNwbGl0KCcjJylbMV0pIHtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBjYXRjaCAoZSkge31cXG4gICAgfVxcblxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3ml7blhYnwn5CUXCIsXCJwYXRoXCI6XCJzZ2pcIixcInJ1bGVcIjpcIi8v5YiG57G7XFxudmFyIHBhZ2VudW0gPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV09PScxJyl7XFxudmFyIGMyID0gJzIyJjIxMiY3MSYxODImMTM4JjI4JjMzJjE4NSc7XFxuXFxudmFyIHcyID0gJ+msvOeVnCbnvo7po58m57u86Im6JuW9seinhibnlJ/mtLsm6Z+z5LmQJueVquWJpybnlLXop4bliacnO1xcblxcbnZhciB3b3JkMiA9IHcyLnNwbGl0KCcmJyk7XFxudmFyIGNsYXNzMiA9IGMyLnNwbGl0KCcmJyk7XFxudmFyIGxhYjIgPSBnZXRWYXIoJ2xhYjInLCAn6ay855WcJyk7XFxudmFyIGtleTIgPSBnZXRWYXIoJ2tleTInLCAnMjInKTtcXG5mb3IgKHZhciBpIGluIHdvcmQyKXtcXG4gICAgdmFyIGEgPSB3b3JkMltpXTtcXG4gICAgdmFyIGIgPSBjbGFzczJbaV07XFxuICAgIHZhciBjID0gYSArICcmJyArIGI7XFxuICAgIGQucHVzaCh7XFxuICAgIHRpdGxlOiBhPT1sYWIyPyBnZXRIZWFkKGEpOmEsXFxuICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoYyk9PntcXG4gICAgICAgIHB1dFZhcihcXFwibGFiMlxcXCIsYy5zcGxpdCgnJicpWzBdKTtcXG4gICAgICAgIHB1dFZhcihcXFwia2V5MlxcXCIsYy5zcGxpdCgnJicpWzFdKTtcXG4gICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgfSwgYyksXFxuICAgIGNvbF90eXBlOidzY3JvbGxfYnV0dG9uJ1xcbiAgICB9KTtcXG59XFxufVxcbi8v5YiG57G7XFxuXFxudmFyIG0gPSBOdW1iZXIoZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0XFxcIix7fSkpO1xcbnZhciB0ID0gbTwwPzA6bTtcXG52YXIgbnVtMSA9IE51bWJlcih0KS0xMjtcXG52YXIgbnVtMiA9IE51bWJlcih0KSsxMjtcXG52YXIgbnVtMyA9IE51bWJlcih0KS0xO1xcbnZhciBudW00ID0gTnVtYmVyKHQpKzE7XFxuLy92YXIgdGltZXN0YW1wID0gRGF0ZS5wYXJzZShuZXcgRGF0ZSgpKTtcXG52YXIgdGltZXN0YW1wID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxudmFyIHN0YW1wMSA9IHRpbWVzdGFtcCAtIHQqMzAqMjQqNjAqNjAqMTAwMDtcXG52YXIgc3RhbXAyID0gdGltZXN0YW1wIC0gKHQrMSkqMzAqMjQqNjAqNjAqMTAwMDtcXG4vKlxcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykgeyBcXG4gICAgIHZhciBzc3MgPSBuZXcgRGF0ZShwYXJzZUludChuUykpLnRvTG9jYWxlU3RyaW5nKCkuc3Vic3RyKDAsMTcpO1xcbiAgICAgdmFyIG1tID0gc3NzLnNwbGl0KCflubQnKVsxXS5zcGxpdCgn5pyIJylbMF07XFxuICAgICB2YXIgZGQgPSBzc3Muc3BsaXQoJ+aciCcpWzFdLnNwbGl0KCfml6UnKVswXTtcXG4gICAgIHZhciBZWSA9IHNzcy5zcGxpdCgn5bm0JylbMF07XFxuICAgICB2YXIgTU0gPSAobW08IDEwID8gJzAnICsgbW06bW0pO1xcbiAgICAgdmFyIEREID0gKGRkPCAxMCA/ICcwJyArIGRkOmRkKTtcXG4gICAgIHJldHVybiAoWVkrTU0rREQpXFxufVxcbiovXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcbnZhciBkYXRlID0gbmV3IERhdGUoblMpO1xcbnZhciBZWSA9IFN0cmluZyhkYXRlLmdldEZ1bGxZZWFyKCkpOyBcXG52YXIgTU0gPSBTdHJpbmcoKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpKTsgXFxudmFyIEREID0gU3RyaW5nKChkYXRlLmdldERhdGUoKSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0RGF0ZSgpKSA6IGRhdGUuZ2V0RGF0ZSgpKSk7IFxcbnZhciB0aW1lID0gWVkgKyBNTSArIEREO1xcbnJldHVybiB0aW1lXFxufVxcbi8v5pe26Ze05oiz6L2s5o2iXFxudmFyIHRpbWUxID0gZ2V0TG9jYWxUaW1lKHN0YW1wMSk7XFxudmFyIHRpbWUyID0gZ2V0TG9jYWxUaW1lKHN0YW1wMik7XFxudmFyIFNHSl9VUkwgPSAnaHR0cHM6Ly9zLnNlYXJjaC5iaWxpYmlsaS5jb20vY2F0ZS9zZWFyY2g/bWFpbl92ZXI9djMmc2VhcmNoX3R5cGU9dmlkZW8mdmlld190eXBlPWhvdF9yYW5rJm9yZGVyPWNsaWNrJmNvcHlfcmlnaHQ9LTEmY2F0ZV9pZD0yMiZwYWdlPScrcGFnZW51bSsnJnBhZ2VzaXplPTEwJnRpbWVfZnJvbT10aW1lMiZ0aW1lX3RvPXRpbWUxJztcXG52YXIgVVJMID0gU0dKX1VSTC5yZXBsYWNlKCd0aW1lMScsdGltZTEpLnJlcGxhY2UoJ3RpbWUyJyx0aW1lMikucmVwbGFjZSgnMjInLGdldFZhcigna2V5MicpIT0nJz9nZXRWYXIoJ2tleTInKTonMjInKTtcXG52YXIganNvbiA9IEpTT04ucGFyc2UocmVxdWVzdChVUkwse30pKTtcXG5cXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV09PScxJyl7XFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6Jysx5bm0JyxcXG4gICAgICAgICAgdXJsOlxcbm51bTErYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfICdgLFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF80J1xcbiAgICAgICB9KTtcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTonLTHlubQnLFxcbiAgICAgICAgICB1cmw6XFxubnVtMitgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8gJ2AsXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0XzQnXFxuICAgICAgIH0pO1xcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOicrMeaciCcsXFxuICAgICAgICAgIHVybDpcXG5udW0zK2BAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL21vdXRocy50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnyAnYCxcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfNCdcXG4gICAgICAgfSk7XFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6Jy0x5pyIJyxcXG4gICAgICAgICAgdXJsOlxcbm51bTQrYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfICdgLFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF80J1xcbiAgICAgICB9KTtcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTpnZXRIZWFkKCgn5b2T5YmN5pe26Ze057q/OiAnK3RpbWUyKyd+Jyt0aW1lMSkpLFxcbiAgICAgICAgICBcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfY2VudGVyXzEnXFxuICAgICAgIH0pO1xcbi8qXFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6IGdldExvY2FsVGltZSh0aW1lc3RhbXApLiBzcGxpdCgn5pelJylbMF0sXFxuICAgICAgICAgIFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF9jZW50ZXJfMSdcXG4gICAgICAgfSk7XFxuKi9cXG59XFxuLypcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTogZ2V0TG9jYWxUaW1lKHNzcyksXFxuICAgICAgICAgIFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF9jZW50ZXJfMSdcXG4gICAgICAgfSk7XFxuKi9cXG5mb3IgKHZhciBpIGluIGpzb24ucmVzdWx0KVxcbntcXG4gdmFyIHIgPSB7fTtcXG4gdmFyIGogPSBqc29uLnJlc3VsdFtpXTtcXG4gaWYgKGoucGxheT4xMDAwMClcXG4gICAgdmFyIHBsYXkgPSAoai5wbGF5LzEwMDAwKS50b0ZpeGVkKDEpKyfkuIcnO1xcbiBlbHNlXFxuICAgIHZhciBwbGF5ID0gai5wbGF5O1xcbiBkLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTpqLnRpdGxlLFxcbiAgICAgICAgICBpbWc6J2h0dHBzOicrai5waWMrUmVmZXJlcixcXG4gICAgICAgICAgZGVzYzondXDwn5C3Oicrai5hdXRob3IrJ1xcXFxu5pKt5pS+6YePOiAnK3BsYXkrJyAgICAgICAg5Y+R5biD5pel5pyfOiAnK2oucHViZGF0ZS8qKydcXFxcbuaPj+i/sDonK2ouZGVzY3JpcHRpb24qLyxcXG4gICAgICAgICAgdXJsOlxcbidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIGouYnZpZCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgIGNvbF90eXBlOidtb3ZpZV8yJ1xcbiAgICAgICB9KTtcXG59XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpobXpnaIt5LqM57qnXCIsXCJwYXRoXCI6XCJkZXRhaWxcIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbi8vbG9nKE1ZX1JVTEUudGl0bGUpXFxudmFyIFJlZmVyZXIgPSAnQFJlZmVyZXI9aHR0cDovL3d3dy5iaWxpYmlsaS5jb20nO1xcbi8v6aKc6ImyXFxudmFyIENvbG9ycyA9IFtcXFwiNFxcXCIsIFxcXCI1XFxcIiwgXFxcIjBcXFwiLCBcXFwiMVxcXCIsIFxcXCJBXFxcIiwgXFxcIjNcXFwiLCBcXFwiOFxcXCIsIFxcXCI5XFxcIiwgXFxcIkJcXFwiLCBcXFwiQ1xcXCIsIFxcXCJEXFxcIiwgXFxcIkVcXFwiLCBcXFwiNlxcXCIsIFxcXCI3XFxcIiwgXFxcIkZcXFwiXTtcXG52YXIgQ29sb3IgPSAnIyc7XFxuaWYgKGdldFZhcignWVMnKSA9PSAn6ZqP5py6Jykge1xcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykge1xcbiAgICAgICAgdmFyIG51bSA9IE1hdGguY2VpbCgoTWF0aC5yYW5kb20oKSAqIDE1KSkgLSAxO1xcbiAgICAgICAgdmFyIENvbG9yID0gQ29sb3IgKyBDb2xvcnNbbnVtXTtcXG4gICAgfVxcbn0gZWxzZSB7XFxuICAgIHZhciBDb2xvciA9IFxcXCIjRkE3Mjk4XFxcIjtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0SGVhZCh0aXRsZSkge1xcbiAgICByZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIicgKyBDb2xvciArICdcXFwiPicgKyB0aXRsZSArICc8L2Zyb250Pjwvc3Ryb25nPic7XFxufVxcblxcbmQucHVzaCh7XFxuICAgIGRlc2M6ICcyNTgmJmZsb2F0JyxcXG4gICAgY29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZSdcXG59KTtcXG52YXIgYmFuZ3VtaSA9IGdldFJlc0NvZGUoKTtcXG5pZiAoTVlfVVJMLmluZGV4T2YoJ2FwaS5iaWxpJykgPT0gLTEpIHtcXG4gICAgdHJ5IHtcXG4gICAgICAgIHZhciBhID0gZmV0Y2goTVlfVVJMLCB7fSk7XFxuICAgICAgICB2YXIgYiA9IEpTT04ucGFyc2UoYS5zcGxpdCgnXFxcImVwTGlzdFxcXCI6JylbMV0uc3BsaXQoJ31dJylbMF0gKyAnfV0nKTtcXG4gICAgICAgIC8vbG9nKGIpXFxuICAgICAgICB2YXIgcnVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWlsP2FpZD0mYnZpZD0nICsgYlswXS5idmlkO1xcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICB2YXIgYSA9IGZldGNoKE1ZX1VSTCwge1xcbiAgICAgICAgICAgIHJlZGlyZWN0OiBmYWxzZVxcbiAgICAgICAgfSk7XFxuICAgICAgICB2YXIgYiA9IGEuc3BsaXQoJ3ZpZGVvLycpWzFdLnNwbGl0KCdcXFwiJylbMF0uc3BsaXQoXFxcIj9cXFwiKVswXTtcXG4gICAgICAgIHZhciBydXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWw/YWlkPSZidmlkPScgKyBiO1xcbiAgICB9XFxuICAgIHZhciBiYW5ndW1pID0gZmV0Y2gocnVybCwge30pO1xcbn1cXG52YXIganNvbiA9IEpTT04ucGFyc2UoYmFuZ3VtaSk7XFxudmFyIHYgPSBqc29uLmRhdGEuVmlldztcXG52YXIgcCA9IHYucGFnZXM7XFxudmFyIGNhcmQgPSBqc29uLmRhdGEuQ2FyZC5jYXJkO1xcbnZhciByZWxhdGVkID0ganNvbi5kYXRhLlJlbGF0ZWQ7XFxudmFyIHRhZ3MgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9iaWxpYmlsaTIudHh0XFxcIiwge30pO1xcbnZhciBzZXR0aW5nMSA9IGBAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9jYWNoZS9iaWxpYmlsaTIudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/mraPluLjpobXpnaLliIfmjaLmiJDlip/wn5GM5Y+v6IO95bm25rKh5pyJ5LuA5LmI5Y+Y5YyWJ2A7XFxudmFyIHNldHRpbmcyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2NhY2hlL2JpbGliaWxpMi50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+makOiXj+mhtemdouWIh+aNouaIkOWKn/CfkYzlj6/og73lubbmsqHmnInku4DkuYjlj5jljJYnYDtcXG52YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG52YXIgbGlrZV91cmwgPSAnaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvdjIvdmlldy9saWtlJztcXG52YXIgY29pbl91cmwgPSAnaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvdjIvdmlldy9jb2luL2FkZCc7XFxudmFyIGFkZF91cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9hcHAvZm9sbG93L2FkZCc7XFxudmFyIGRlbF91cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9hcHAvZm9sbG93L2RlbCc7XFxudmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbnZhciBjX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmF2dHlwZT0xJmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImZnJvbT03JmZyb21fc3BtaWQ9dG0ucmVjb21tZW5kLjAuMCZtb2JpX2FwcD1hbmRyb2lkJm11bHRpcGx5PTEmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzZWxlY3RfbGlrZT0xJnNwbWlkPW1haW4udWdjLXZpZGVvLWRldGFpbC4wLjAmc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmdXBpZD0wJnNpZ249OGFiYmRkZDg3YTZiZDgyZTFlNDJjYjNjZmZkMzJiYjknO1xcbnZhciBsX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbGlrZT0wJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZzaWduPTRhMDg2NDVjMjk5NGViNjkyYWMwY2ZiMGJkNzU2OWM2JztcXG52YXIgeGx4eiA9IFxcXCJoaWtlcjovL2VtcHR5I25vUmVjb3JkSGlzdG9yeSNAcnVsZT1qczp0aGlzLmQ9W107cmVxdWlyZSgnaHR0cHM6Ly9naXRlYS5jb20vQUk5NTcvSGlrZXIvcmF3L20vdi9Sb3V0ZS5qcycpO1JvdXRlLnNldFBhcnNlKCk7c2V0UmVzdWx0KGQpO1xcXCI7XFxudmFyIGp4Z2wgPSBcXFwiaGlrZXI6Ly9lbXB0eSNub1JlY29yZEhpc3RvcnkjQHJ1bGU9anM6dGhpcy5kPVtdO3JlcXVpcmUoJ2h0dHBzOi8vZ2l0ZWEuY29tL0FJOTU3L0hpa2VyL3Jhdy9tL3YvanhJdGVtLmpzJyk7anhJdGVtLmp4TGlzdCgpO3NldFJlc3VsdChkKVxcXCI7XFxuaWYgKHZbJ3JlZGlyZWN0X3VybCddKSB7XFxuICAgIHZhciByZWRpcmVjdCA9IHZbJ3JlZGlyZWN0X3VybCddO1xcbiAgICB2YXIgeW0gPSBmZXRjaChyZWRpcmVjdCwge30pO1xcblxcbn1cXG5cXG5ldmFsUHJpdmF0ZUpTKFxcXCJYVWlGVDF2WFlXclV3K1ZocG5xbGcwTjB2QVdncGdsaDhNaForOXZQRDk5Tko1VmdlRmRIbXdhS2F3SXk2QzBoNkZGUWhFUTVSaEptVjBFUUhuTDl4eWJQSEFjaEFMN2haRVpkK2hiR0hWNWplRytuSzVRM2llNzhwdUdEYjFUSjRmQUk3ZzZlekxJalFNQnhOLzJYTTkyWU5OUEtESGRoTElNUUdWNjlNcThjVE9XaktwWlFwMC92Z051eGFQUUtFelNkSFFKdWU3dFR4ZFNFdkR0M3MvdHhkRWgvb0d6RkNDTldlWkNVVTUzemhFaEMwNnE2WkZqWkNNK2Q4RnNaNWNYbE5KZW10ZWdNZ0pVTGRUcWFWZFJ3VmhWWCsxdUJROU55MERwc05HeDJMd0hnT2psczlodzE0TGhFcXRoRWU3M3lQQkd2U2dLRUJkU1lnRzdjSzdoWVZURU5lR1RpUkF6S1BRN2pHRXFFSjhhYWRIT0hBZVNhMjVhQmJ6YzgxaGh4Z1h0aWFsWDhVcWVwbjdrNGcyR2tzcW9HM0pWSStxVGZXWnhQV3FOTS8walVYYnJVVENSWm5yekdWb3c2TndQUVhLcTNDREtsOWkrYVp2ZVd6NUlmNUVORVpHaVdsVzV6NGFKU0VjZXhDRHNpWmxvMS9RSklqMnJXb25FMHU1NGFoMi9aWi8vWkdvTUJKK2QxOUdtZXBrTEJEM24ycW9nS25qWmoycmpXcWdQYWRFZWUxWkloWjNTR2JtVGxKZjFBNEJZSXV1UHd2NGRHWmRSb0RXNjRCaEM1anVDbjZ3RG03WW15N0JYZjFzUWFGaW1FbnJTSWlIR2hNK1dLZzNJeVdlY3VoL0drKytNbU42QXh4Y3ZOQXlwOGJDNGh6Qk12WkovbDV0UnlhcG9tZENWNUJwaVhmamtXUm5ib3BJakkrV0tCM2ZDYVl5UmRlTkxFUktuRWxzY0RpejdVZW5McHJoWWMvYTRMc0dlTU1GVlo4WW84L3dHWUgzOEpcXFwiKVxcblxcbnZhciBwdXJsID0gJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS92aWRlby8nICsgdi5idmlkO1xcbnZhciBtb2RlID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvYmlsaWJpbGkudHh0XFxcIiwge30pO1xcbnZhciBtb2RlX3VybCA9IGBAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9jYWNoZS9iaWxpYmlsaS50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnywg54K55Liq6KeG6aKR6K+V6K+V5ZCnKF5fXikgJ2A7XFxudmFyIHpsID0gXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcigncGFnZScsIGdldFZhcigncGFnZScpPT0n55u06ZO+Jz8n5YWz6ZetJzon55u06ZO+Jyk7cmVmcmVzaFBhZ2UoKTtpZihnZXRWYXIoJ3BhZ2UnKT09J+ebtOmTvicpeyd0b2FzdDovL+eCueWHu+S4i+aWueWIh+aNoua4heaZsOW6pvCfpJ8nfWVsc2V7J3RvYXN0Oi8v5bey5YWz6ZetJ31cXFwiO1xcbmlmIChtb2RlID09ICd5aGMnKSB7XFxuICAgIHZhciBsYXp5ID0geWhjXFxufVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiB2LnRpdGxlLFxcbiAgICBkZXNjOiAn5o+P6L+wOiAnICsgdi5kZXNjICsgJ+OAgOexu+WeizogJyArIHYudG5hbWUsXFxuICAgIHVybDogdGFncyA9PSAndXAnID8gJ2ZhbicgKyBzZXR0aW5nMiA6ICd1cCcgKyBzZXR0aW5nMSxcXG4gICAgaW1nOiB2LnBpYyArIFJlZmVyZXIsXFxuICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cidcXG59KTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJyAgJyArIGNhcmQubmFtZSxcXG4gICAgcGljX3VybDogY2FyZC5mYWNlICsgUmVmZXJlcixcXG4gICAgLy91cmw6ICdoaWtlcjovL3BhZ2UvZ3oxP3VybD1odHRwczovL3NwYWNlLmJpbGliaWxpLmNvbS9oNS9mb2xsb3fvvJ/vvJ90eXBlPWZvbGxvd++8hu+8hm1pZD0nICsgY2FyZC5taWQsXFxuICAgIHVybDogJ2hpa2VyOi8vcGFnZS9zcz91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYXJjL3NlYXJjaO+8n++8n21pZD0nICsgY2FyZC5taWQgKyAn77yG77yGcHM9MzDvvIbvvIZ0aWQ9MO+8hu+8hmtleXdvcmQ977yG77yGanNvbnA9anNvbnDvvIbvvIZwbj1meXBhZ2XvvIbvvIZvcmRlcj1wdWJkYXRlJyxcXG4gICAgY29sX3R5cGU6ICdpY29uXzJfcm91bmQnXFxufSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfigJzigJzirZDvuI9TdGFy4oCd4oCdJyxcXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eSMnICsgY2FyZC5uYW1lICsgJyYmJyArIGNhcmQubWlkICsgYEBsYXp5UnVsZT0uanM6aW5wdXQ9aW5wdXQuc3BsaXQoJyMnKVsxXTt2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScraW5wdXQuc3BsaXQoXFxcIiYmXFxcIilbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7aWYoIWdldFZhcignbGIyJykuaW5jbHVkZXMoaW5wdXQuc3BsaXQoJyYmJylbMV0uc3BsaXQoJyMjJylbMF0pKXt2YXIgeHI9Z2V0VmFyKCdsYjInKSsnXFxcXFxcXFxuJytpbnB1dCsnIyMnK3BpYzt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLHhyKTsndG9hc3Q6Ly/lhbPms6jmiJDlip8nfWVsc2V7J3RvYXN0Oi8v5bm06L275Lq677yM6ICX5a2Q5bC+5rGBJ31gLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMidcXG59KTtcXG5cXG5mdW5jdGlvbiByZXF1ZXN0X2JpbGlfYXBpKGJhc2VVcmwsIFNlY3JldElkLCBTZWNyZXRLZXkpIHtcXG4gICAgaWYgKCFTZWNyZXRJZCB8fCAhU2VjcmV0S2V5KSByZXR1cm4gcmVxdWVzdChiYXNlVXJsKVxcbiAgICBldmFsKGdldENyeXB0b0pTKCkpXFxuICAgIGxldCBub3dEYXRlID0gbmV3IERhdGUoKTtcXG4gICAgbGV0IGRhdGVUaW1lID0gbm93RGF0ZS50b1VUQ1N0cmluZygpO1xcbiAgICBsZXQgc291cmNlID0gJ2JpbGktYXBpJztcXG4gICAgbGV0IGF1dGggPSBcXFwiaG1hYyBpZD1cXFxcXFxcIlxcXCIgKyBTZWNyZXRJZCArIFxcXCJcXFxcXFxcIiwgYWxnb3JpdGhtPVxcXFxcXFwiaG1hYy1zaGExXFxcXFxcXCIsIGhlYWRlcnM9XFxcXFxcXCJ4LWRhdGUgc291cmNlXFxcXFxcXCIsIHNpZ25hdHVyZT1cXFxcXFxcIlxcXCI7XFxuICAgIGxldCBzaWduU3RyID0gXFxcIngtZGF0ZTogXFxcIiArIGRhdGVUaW1lICsgXFxcIlxcXFxuXFxcIiArIFxcXCJzb3VyY2U6IFxcXCIgKyBzb3VyY2U7XFxuICAgIGxldCBzaWduID0gQ3J5cHRvSlMuSG1hY1NIQTEoc2lnblN0ciwgU2VjcmV0S2V5KVxcbiAgICBzaWduID0gQ3J5cHRvSlMuZW5jLkJhc2U2NC5zdHJpbmdpZnkoc2lnbilcXG4gICAgc2lnbiA9IGF1dGggKyBzaWduICsgXFxcIlxcXFxcXFwiXFxcIlxcbiAgICByZXR1cm4gcmVxdWVzdChiYXNlVXJsLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIlNvdXJjZVxcXCI6IHNvdXJjZSxcXG4gICAgICAgICAgICBcXFwiWC1EYXRlXFxcIjogZGF0ZVRpbWUsXFxuICAgICAgICAgICAgXFxcIkF1dGhvcml6YXRpb25cXFwiOiBzaWduXFxuICAgICAgICB9XFxuICAgIH0pXFxufVxcblxcbmV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpKS5ydWxlKVxcblxcbi8v6Ieq5a6a5LmJYXBp6aG5XFxudmFyIG1BcGkgPSB7XFxuICAgIGF1dGhvcjogJycsXFxuICAgIHR5cGU6ICcnLFxcbiAgICBpZDogJycsXFxuICAgIGJhc2VVcmw6ICcnLFxcbiAgICBzZWNyZXRJZDogJycsXFxuICAgIHNlY3JldEtleTogJydcXG59XFxuaWYgKG1BcGkuYmFzZVVybCAmJiBtQXBpLnNlY3JldElkICYmIG1BcGkuc2VjcmV0S2V5KSB7XFxuICAgIHB1dFZhcignYXBpJywgSlNPTi5zdHJpbmdpZnkobUFwaSkpXFxufVxcblxcbnZhciBhcGlJbmRleFN0ciA9IGdldFZhcignYXBpSW5kZXgnLCAnJylcXG52YXIgYXBpSW5kZXggPSBwYXJzZUludChhcGlJbmRleFN0cilcXG5cXG5cXG50cnkge1xcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHAubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIHZhciBwYXJ0ID0gdi52aWRlb3MgIT0gMSA/IHBbaV0ucGFydCA6ICflvZPliY3op4bpopHml6DpgInpm4bvvIzngrnlh7vmraTlpITmkq3mlL4nO1xcbiAgICAgICAgcHV0VmFyKCdVQScsICc7e1VzZXItQWdlbnRATW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMFxcXFxcXFxc77ybXFxcXFxcXFzvvJsgV09XNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS80OS4wLjI2MjMuODcgU2FmYXJpLzUzNy4zNu+8hu+8hu+8hu+8hlJlZmVyZXJAaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL3ZpZGVvfScpO1xcbiAgICAgICAgZXZhbFByaXZhdGVKUyhcXFwiaWZuenFhTnFOUmtONk5xRzBmWng1TWV5NDc3T3NNSk9UYlRkOVNhak1rZjVSNU8zOTZKMjJGeGtiUWJrWFhDcGdnZnVhZDVvKzNwOTdMSFdiSXB0b3c0bytNUlF0YVAwLzh3aXlKQ3JaQ2FaWVc2NHdVMUI2MHhSQlF0YmRKQ0VnUnVIaG9ac2JHQVpCQTQzL1RYeEd3SWtDY2tiVjZuekhobTkzRGs1RGlDNUk1SG4rQ2ZpQk1FNHlRbzM5T1VKeTNwR0FXbGpEMXNucHpHaEJqMWIzSHJUdnlrakZhU1BnblMvTVVkSk1mMFFaSVNOR1U4ejVvdmFuUHNIK0Y1V3NRZ0hnSXF4VzlldlYzK3RneWZMVWRGUjBONERsdExZcnc3dkNQZ3pQUVgvdndCTVB5NlljVnRTVktqYjZRekZhdVROK0oySVJZcnBheTE1YWtBa29mYStZeC9mTlRlZjQrNlphVnptWGVaYUVhajBiUS9IUFppYnhUejNTK0RtVVZkZ1l1MEhYTXkwQ0ZDWFN0MytlT1VOOWMrRW1WQUxyTk44T3FXclBla3J2RjFxTjFVS3Y2a0JjQkVQL1N3a3VmczN2TTA3Zld2L1JOSllCN2hFaHNvSXh5dkhRT2lQWUNURCtlVXMrZmgrVTliUlJBVXpSU2xYQ3poV1hqRGZDSmpZLzlCMmw0UnBoL253b3BFTXFpaTVwSkNKVVBUYy9INFVmdzlGT0xabXhNSGJFaVdmZnAwcmdicEhvS25Sbnp3WWZnL1JLN245ekxBZEdBSy84dUdhMHNsWjVJVDFYVWVxclBzQ3F0M01INUcybXl4QkRscUQwWVFVYjZOV2hJN3BqanBpbjZiVzJ0aHd6SDROVC9UcDRDV3BIbFZ5Y0JWV3NTZ2hHeVNCRVFScEJRS0xPVHYxRXZPeGdGeGg5R1ljdTlUNldQdWZiRW5EZy9MSzlyZ3IycHdvSTNZSWowcDJCYkJtWDd2TWhQeEtLTHB4Wmk0M0p3VmY5SHhuMzFOYVlRaS8wUzF6VENnOVMyNnRVZ0FxNDhyaStFaTNNSFVrSTZXc01iQTczTG5mZ0JqNzdEQWxRbDVRT2tVdi9wSGh5WWxpaVEyWFlhWXhTSCtoRzQrdEErSzZ1UDBoREtlUUxrL2Y5dDdpKzZZTzBVKzhHaS9Yd0hBc3Q2Q0w3SS9LaUJmRlBuTllMeFpCeDlFMHNRZXJJKzhZS0YySmZUb3R2SGZjOWlTZjNMZUFjVXpXeS9Hc1lyMjBxekUxKzJocVVueFFicWlFamxhTXFlci8vUW81OE93K0ZtcFFwMXd1KzdoZ2ZyNlJrSzRZd3hrZXdlWGhPUmZDQk5xSUJKenR3WjFmQjBtYnBSTjNja256RGljcmFtbTNqV2tEaVl6Zi9KTTNoWXMzY3J5bGRHeVhxcjI4SjZ1OHhMYVNEWEYveVVRd2JTRldKTXN0NCtpalMzSDdEVTV3WWpna2hFemhCVkt4NzI0TFVta3BVVGFSVGowMEpnQ01zbEhEeXl2TFNOWldjL3NJbi92V1NBSFU5cTJDWVI3QzlDSWtHdUkwa09LSDBud0tLaTF4V2Y5WncxaXZnTHhrVWxPRUlGTnBROFhkNFJ2aWpqR0xyeFFSMnptc3JxTGpUaGpwblI5cnlsMnF1VG0rSG11aWVqc0dNV0dJWEtreXBkTFlQbnZjSGZIMmNsV2dVNzFWSnhXcno2S2s3TGpJR3o2bUZvajQ1Wlo3Ri9qMXRqWE1oOGxyWUJsS2RYanpsRGNzMmhzOUo5dUFjeEtXalJYbXk4dUtDNFp1N01mVkswa2NEZnZ0QWZja25lblJnd2haRktwU0h5Nkg4ZklsMFduSFBiVVNONS9RMUlpazhrYWFDME1TYlI4S1Y0NnZoRWV2UWRQb2V4WDdDanBTalprRkFLU0YvMmt1RFh5R3N6THoyaE5Pa0cwaTFCbWt4aGpjNjMvQVFseUtpemszME1KQmZOUFZFNnk5cURFc2RYbUxNc291SDhwNzBIeUgvS29lbHlBa2krVWZkbEtRTmoxN0hvWUdTaW5Ra2JiMmlGV0c5TkRPV3dyajhaUXVYVGlOS1RYSk9ySDhsVDErMTY0RUdqWGU1K2Z6ZlVtQU0wQ0xSTVRSL05xNXpOVmdlOVBGL1ZQTmZVMGROVmNvTG1ZUDZEVFU1T3pnMGJzb3gxYThTZ25keEZSOWJTTlJ6Wm56UEdKbzZIS0djZmJWYVNVRlFDVGQ2VWJ6VGRjcExEVFFxdVp3UEZiZGRTb1lqZHNGdWtuUENFMlVwNnJrL2UxZGg5S3I4bWFFOEZZOENPbkJ1N0IxV2RQZHl1V2V6N3hQdHNoekFJd1Jla0lPbUcwb21TbGJ4dVh3MGI5V3RQQVhSTVRlUGdhYkR1OEJyejAvNHMwZW9CQ1I2Y3ZYaXdLQVg4REZJOXZ6NGZudXJOTGQ3aFpJa0N2QW5UM1J3L3RTdHNTKzhyRlVtRzAzaWFRbUpuM3lYYWladzFNU0hrUlZxV3REWjh6U0FrcnFvWUE3UTN1eVhkSk02TXFDWEViQ2ZnWGxnUDRDQThnTHI4dHZ3aDRuWEZtWVNhYUdsRU1ZQ2hoVnNQMFRvbnNneUdjNlpIckYra0gybERHU3F4TU5lQitRVE5zTkhnckVScmh4NjZ4T3lsc0laRXdMQ2V2bmZtUXAvQ0x6NE1jQ3QwRld6aG5KUTJOQWg4MTFtT3diNDJpM1hPam50a3RIVDJ0UU1RUUtCZ2RUbllqR1lLdzBCNDE0MXVlQk5hd0dhWjNsTGFYV1Q3WXVHUWFGS3BYZHprbWk1c09kalZSeVNralZwQTlZZEVhblNRNTY4NFNqTFozQnV0V05reElwM2VReTQzayt4b2toUHZ3alRWWXBHa2JiQkdvQ004eklCRHhlcTIyTDlBa2NOWVh1ekpheS9OZzNUdVhXV0tBdjArOHpLZENSdHZhSVZZYjAwTTViQ3VQeGxDRElnVkNqVkNIWGlicXN1UDdqS3lSejN0cjluQ1pJWCsrWUNBYStaZFhLMFAyZWcxdGxKemVXZzIwelVnRWpPa25zSUZrazJ1QmZMMlVFak54ZGxsRE9JUzc0R3I0QkhicVRGT3ZGQmExalpsUGJyZnh1TlkxcS9KelNkY1ZHOTIxZTQ3T3o4ckZEUHVWRTdOZnRhMm1EZlFsN00wSlRON1RpZUJZamRhQVhQUzlET1lPUHNPVldVbE8xUXhjZXR2NWd3Z0kwZ0lWaHBhWFRJNkF5QzJuWTR2TGhmaFVaV3Jia2U2c2FHditOK1FjckFTL1hxek5WTzE4bnRiZk11ZWxGaVNuVEZTaXJZQk55TmJKMnl0T2s1SHFNSHh2TzdjRHpNUTdFMnplSkhqOFJ5dlNCbXZUcTBqQmRMQmlJQWg3ZUoreDJKb0VXLzNDYnJUYmZPeVp6K0hGUHNPN2hzeVR6S2FyRHBEdndkNkdsT0tnWDJTVmwzU1RENGFMdVhkMHZOd1ZacUg2RWlScmw4YWhTekx3QURjWU1JVUJEUndlR1kzbG50bXZDWDIxd0tWdGRlQkdUb1RLUnpET0FSTmZwR05iRkJLMHJ3cVB3SzN1WTR0aVh6aG1teUpsRDZLMm9XVTRnOVhZVzgyQUJsazUyTWxPZVFZZDFoV0hyYXdwR3BiSENFYzRpcXM4TjJTZGFhNUI5cU40VFlCM1hOTnRpK3JOSXRHZzlPcGFzdTVvZmZDRkZJYk5abWpUYzlFbEs0TXduT1c5OUNHbTQwMk1hNC9lazBsVUhQa3JNOFVXNk5DQURJb3ZDMGttclZVb3huUzBIUXhzZmdXUUlsa05QRDlGVWZPNGlKZjJmM2lUZ3p0OWhFMk9nVDJDakt3S3A4SENqdWhjYTVGY3MxU2xEbGhTQUtlSE1IOXcyVWYvbjV1UTZuQjBXVVdDTnNSdjlETjBNV2ZDeFY3Rk54VWxhMndjUEliVXRZUk5qb0U5Z295c0NxZkJ3bzdvWEdnQ1pGbHFtNzh2dHFDYmVLMjhpWHpqRmN0KzQ4dDBrYzZiRWlxUDI4S25ZRjhuQVZuRlFJMk9JZVF2S2JJSEFzL1RYbHMyNjNRbGFqZEhVcE1LWk5rL0FCS0cvK3FrVzJkV1FFOVdtUENlUE92ZFZtQWFQTXgyeTdMbjNqMjdVVlJQbElwbmlPNnI2V1AyZFQ0YW1mcGE0RFQ5dzhEa3RIMGozOVphNUtiQmpxWVQzMDhFYVgyN3hSdS9xL05YY1hoa1hQOUlEWnlSU0NjdVpreGY2VFo0UUtwSG41dnpqb3VJYWNTUE1UdGFTdHB5RkR2TkdIVCt4VjZFWXVCcTVyL2dDZDZPaFNiTERLcUh6dmNCQ0RCTE0yT1A0L0VSMnNodjdHckwySWJzd0tYUVk1U1VJRTF4OW5lSDJyNUd4NDFQMGJmT1ZwbWxMdEJOTVJFUGxNNGpUME9Kak11aEQvT3VHMmg0OVF4ZUpxVUtxQ3FyVzhyQVdiS0lxRjdESHhEMWx6MHpObTRqRWZzUzYvWUxTbFRwNHIzYytGZWREdmFSaUdTaUxuR0U4N3E1YkVkd0s3WWJuVkJZTVg2YmRDSXNLOFEwN1FKa095Y1VNZm1kQ2txVmU5N1JhQ25sYWNIUWFnMDI0ZUZuV0hHRk8vcngvdFV2VVppYzJ3QnE2L3g2ajhBSjhEMmxuZ244WDdhYUFyOVFWc25USldZVmtzMGh0MzRTWU9NZWsvaW5DbU10RHNrU3JPNytXVEVmQ3VDS2tpcDdWR3o1MkpNcTJ2enptbXlLeW8ycWE4UmhVY2N5WGh5bThXR3g2b3UrK1NpSnF1NmZNenN3TUc0VHRYL2pMUmZYMjRUOGFvWXBaM285M2k5U3hrUW8wdDNPUTIwTkgrNGxvQnJXeWt3QVNHRnFXT1gvNTU1SG5vS2pHdWhjKzZiTVZGZy9qUzNwREpzWG4rZk11N2VpZEphdnlaNlVaamgwQThLTDVyN2p6QVhuV2U2RWk1LzRQNlZwT1VIWVhLQTVzckVjekZwSFVQOVJkVjNJdWlLNzZHUHE2cGo1TTVMaktkd041S0JOWHVsMGFnT2UycElJU2Ntc0hLUE1yYjFNNDJzRGxvUlFobmVwTmlvOEFSdjBZRDJROUdKUE9jQkhVNkVUSFdZejJJaXluOVBpalpSN1lTcDJwN3lpUUJOR3FqV1lHV3U2TE1sUUlkWVJDSjlwVFJ6eHVVOHJuenh4azhQUUNENXBETVJFQzRaZE1vU1hjbWNWY0h5TUNtQVVHbWlUUitPckFDckxwZ3lkdnRMK2tNSFV0Wkh2SDRNYVI3SXh2aUhGQUVRY3p2cUo2TFVrc2kxRWRPTE1JL1JzUGNOK1A1RXhNcjJ4azE3NlBzZC91ZGp1aDVTU1lzaGZkQ3Fma285Tnhhemk3eVlJNW9sR0VFNEtpWFVxVWtGZDNxd2t2SElWVUlhUDA3NVFUMnlYd1Zwc0xUSGFEeHo2RmUzbzBoNExrbGlPOGdHV2EvaXFrRC9Ebm04c3J5MGpXVm5QN0NKLzcxa2dCMVBaWHdwZ2EwMXJEZllhVlRNVnl4R1NJeXl2TFNOWldjL3NJbi92V1NBSFU5alNJakloUmtncHhUL0tNdjZpSDhsbFdISjF0ajgvUlRDRjBDbDJmNld3VGJGSlljTWFGbG5tTWlzMkFMVk9OUHM2VU12c08vUE93NUNjcjc5c0p6aWVXTE1WYU9WRzQvZTFWUFRTQXpZOUg4N09DSlhleCtpQU9vVytLQW5yaUJ6QVZCZEZ3eVVxSWVuTEpWc1JIN1Z2M05WNzNNcXJxbi9wa3pBWHRraVVBWHdwS21WemRiZU5MbGVib2tEa29tc3NyeTBqV1ZuUDdDSi83MWtnQjFQWTNtVFJtU3RTa0hieEEvRnRjZmhiMzM0Qm96MVl1WDQrWm5wQmxSU3d5VFRFMXVHTFlmZXBaYTBKOXBUYzhZL0diRTZ6WHVhK2ZkM09Za2s0Q3BZNWhJTlZBTkdiR01EMVlRbHBjby9yM0E2djhIN3NkTzVLN1NqWjhJVDVKU0xWc3BCRlUzeXlxalBjZFZHOWR5RC9McEd4YlcyN1FCby84dTJWaHBrbTlMY013M2g4aGlwNkN6QjZUbHB3VDFUNjdYSGtHejhVYTFDK1NML0VFemVxOUs5OFZUU1c0RlB5ZWNGWTdJVWM0MEFYUG1wcUtJcXRhN1NjakFZdkQ4aFpIM2QzVTFVNTMvU29jSkhLRGo0WnYxamJuRlRzam9kalYwZkhlWU9kdDUwUEZXY094WFlhejhqZ2dkbDA0QkVGRlVrMFNwZnYyenJkTjI1NUtGcjFtNGdVeHkzS2k3eUZBUGhkS3J5Q0ovaGpUUkpRY1REbmE2eVBTZnNlQ0R0b1JrbUd2MHlOZEUwYmk5YzRwV1BRZ3JWaTBRamR6SDI1WDBObkpBa2w1WVVpa1BsbEZaWGhuMmRRekxtTWpLUDJSSzZMS1JBNUFwSGdPWFpXbkd0MEFtY2ZVeXV0dzBHWVJHOWV3b0tBWVEzOEp0S3ZSc2RWSWk2RmM0TXlqZTJCYnd1TG90K2w2WXh4UDJGZWtVa2tpOThnYlFxMENscHZiaFoybjV2YzVxSVoxZnZiU050ZU5IaTJOc0RXK2hVWEU4T1loM0F4OXdBSzZCaE0wRGlueG82T1ZvejhhbHhxNDR0dHFraUFSN0c4SFh6bXVNTmpMcythOStRSTlxZTZEU2JBQlFqN1VGRWhQY1YxZS9nUFQvd1IvczVveVNTTHYzMzB0anJ6d283cGxMb3VuYy9zYTdVZUF4QmVyUVVxeTJBbDQxRGF3RkxlSyttYSthT01iT2VaOGRJQmJHWmpXUko2alhaSWVNNWRrV29hWTVjUlJjQ3AwOXFGbW1obC9jV3NRVjIvS2ZxL0RhMnUzOFNmWHJJMVZLMmVnN0MyT3ZrNVNTY3Nsc1JOUTBRZ290Qys0TUNVUkVNODlSZTdJQjkvaXdXdis3OXFJM1MvSG5LZnhydUZ2T1dONC93V0hSNjlvY2FoR3hPLzF0OXVaUXNLTDhOaDRtRitMQUZZamhaK1I0SXBCVnRlWHk2ZkdsVzhhUVExc3ptL1M5aUlrK2pZY2trU25vVmlZWnRtMnZHc1pWQ0lPY2wwdnJMSG1aTVZ5aS9HSjhUOWwvaVNRcSs5TkFEbVdTd1JzVzlqcktSMnV5d0dzOUJoRmVzYlY0WEpYRXZ4TU1Lakhwd2h0WkRRQUZLS0xmalU0bEx1UDFrRzFHejNmUWdWRzBDS2dRckd4d3lnOUpORng4bEswcGRFT08rRGFYelRySG9YeE0wYklzZmNMWUN3SzVsbElDS0FrOFpNVDZNdGFITXYweTdldk1qQlovMVlsdlE5ZWtMMGY2KzdoVzdiR1RoRU95N3g5SXl5YmJvOXhVOGtHUTBJd1N5c2JINzk5ZXlmS25sWlpYZFUvbng0V24xYTFDUHlnSzE0S3RpWFRkRkRRMkxnQ09uMnFvUFpmN050SUZ4ZEw2eWFlcCtDcXEydUVOb3BnMER6eFR6SGJxWDZEbWNQN1B5ZWpITk9WVWczd0RGMlJ3ZDNJa3lZQ3FnWm5ONkVyVzFWMjZvaWxGWXlYRlordjdFSEU4QjZNaExueHRMR2tSWlowK0ZGSTZLbitYb2U3TEwrMlphRG80L3l5bmtWUjdCRnVTcWh0S0x2empkYnlZb1Rvd2ltODVjNlJxL1JDWHR3ZzlSZzRxU0VSR2pqWnlGY0pRL1E2YUpidjBMcEV5Um4zcXBwNzV1VDN6Y2JUU1JSVFZqenZjdVhJRXJncjFEL1B1Z0ZtaE9XZS8ycEIxNWpVNDBpZSszYzg5b3lpYWVJTy81c2tkd1FQemc2L1lITlYvMXNWVmdPS2FXNEk3UUFrYVNPdGRWUG02SDZ3dmx5WEVDQU52aENNR2VsRkFlMWpXdmRCTXVuVlI4TjJSRlNBTzhNa0lKNm84THZVb3pLRGtNUUJ0NXAvY1dzUVYyL0tmcS9EYTJ1MzhTZlhENTJnS0Q2SDhYVktGZm1ESGFvU2hNc3J5MGpXVm5QN0NKLzcxa2dCMVBhbWIwcWFiVDgzRDZxbi9hM0dsSHlHeGFtWmdSSGFLMTZ2bVpFemFudVRET3pHMWFVcHZFQ3RSQjhFTWdhcGFRWExLOHRJMWxaeit3aWYrOVpJQWRUMjZ2RnBnYTBaUkxXUlAzakgwdHlyTllBNzVlQ1RmOWRJcWpZR2NBQTFyc1UwemVlcGRNWjhNSlhkNSt4YkFhWEEvdUpmc0dqUEk3cHNRYzhKbitmbTNNTGsrTkNFRjhMc1EwT3RnbElYTCs2M0ZSdnlHN25NY2V2SDRpL1hUMEIxQlhOUEw2cjhpNmJuYmUrUUpLWU1BOTNQZGJCY0RzR1RWYUxpSmxZZEVPVGZqWWJwTFVSQ2RseDlLL3B1RVhXK1xcXCIpXFxuXFxuICAgICAgICBpZiAodlsncmVkaXJlY3RfdXJsJ10pIHtcXG4gICAgICAgICAgICB2YXIgZXAgPSBKU09OLnBhcnNlKHltLnNwbGl0KCdcXFwiZXBMaXN0XFxcIjonKVsxXS5zcGxpdCgnfV0nKVswXSArICd9XScpO1xcbiAgICAgICAgICAgIHZhciBzZWFzb25faWQgPSB5bS5zcGxpdCgnXFxcInNlYXNvbl9pZFxcXCI6JylbMV0uc3BsaXQoJywnKVswXTtcXG4gICAgICAgICAgICBsb2coc2Vhc29uX2lkKVxcbiAgICAgICAgICAgIHB1dFZhcignYWlkJywgU3RyaW5nKGVwWzBdLmFpZCkpO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICfnm7Tpk74nID8gZ2V0SGVhZCgn55u06ZO+JykgOiAn55u06ZO+JyxcXG4gICAgICAgICAgICAgICAgdXJsOiAn55u06ZO+JyArIG1vZGVfdXJsLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogbW9kZSA9PSAn5pat5o+SJyA/IGdldEhlYWQoJ+aWreaPkicpIDogJ+aWreaPkicsXFxuICAgICAgICAgICAgICAgIHVybDogKG1vZGUgPT0gJ+aWreaPkicgPyB4bHh6IDogJ+aWreaPkicgKyBtb2RlX3VybCksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGlmIChnZXRWYXIoJ2xpa2VfdHlwZScpID09PSAn5byA5ZCvJyAmJiBnZXRWYXIoJ2FjY2Vzc19rZXknKSkge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfngrnotZ4nLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKGxpa2VfdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbGlrZT0wJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZzaWduPTRhMDg2NDVjMjk5NGViNjkyYWMwY2ZiMGJkNzU2OWM2JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbF9jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogbF9ib2R5X3R4dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGxfY29kZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycgKyBsX2NvZGUuZGF0YS50b2FzdDtcXG4gICAgICAgICAgICAgICAgICAgIH0sICksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+aKleW4gScsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoY29pbl91cmwpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYXZ0eXBlPTEmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZmcm9tPTcmZnJvbV9zcG1pZD10bS5yZWNvbW1lbmQuMC4wJm1vYmlfYXBwPWFuZHJvaWQmbXVsdGlwbHk9MSZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlbGVjdF9saWtlPTEmc3BtaWQ9bWFpbi51Z2MtdmlkZW8tZGV0YWlsLjAuMCZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZ1cGlkPTAmc2lnbj04YWJiZGRkODdhNmJkODJlMWU0MmNiM2NmZmQzMmJiOSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudF90eXBlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGNfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhjX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mipXkuoYx5Liq5biBJztcXG4gICAgICAgICAgICAgICAgICAgIH0sICksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+i/veeVqicsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoYWRkX3VybCkubGF6eVJ1bGUoKHNlYXNvbl9pZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWRkX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MDkxMDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzZWFzb25faWQ9JyArIHNlYXNvbl9pZCArICcmc3RhdGlzdGljcz17XFxcImFwcElkXFxcIjoxLFxcXCJwbGF0Zm9ybVxcXCI6MyxcXFwidmVyc2lvblxcXCI6XFxcIjYuOS4xXFxcIixcXFwiYWJ0ZXN0XFxcIjpcXFwiXFxcIn0mdHM9JyArIHRzICsgJyZzaWduPWM2NGI0YzUwODMyZDI5ZTQwYTNkZGVkZWQzNjY3MTM1JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWRkX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IGNvbnRlbnRfdHlwZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBhZGRfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhhZGRfY29kZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycgKyBhZGRfY29kZS5yZXN1bHQudG9hc3Q7XFxuICAgICAgICAgICAgICAgICAgICB9LCBzZWFzb25faWQpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICflj5bmtognLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKGRlbF91cmwpLmxhenlSdWxlKChzZWFzb25faWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRlbF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjA5MTAwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2Vhc29uX2lkPScgKyBzZWFzb25faWQgKyAnJnN0YXRpc3RpY3M9e1xcXCJhcHBJZFxcXCI6MSxcXFwicGxhdGZvcm1cXFwiOjMsXFxcInZlcnNpb25cXFwiOlxcXCI2LjkuMVxcXCIsXFxcImFidGVzdFxcXCI6XFxcIlxcXCJ9JnRzPScgKyB0cyArICcmc2lnbj1jNjRiNGM1MDgzMmQyOWU0MGEzZGRlZGVkMzY2NzEzNSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRlbF9jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogZGVsX2JvZHlfdHh0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coZGVsX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nICsgZGVsX2NvZGUucmVzdWx0LnRvYXN0O1xcbiAgICAgICAgICAgICAgICAgICAgfSwgc2Vhc29uX2lkKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbiAgICAgICAgICAgIH0pO1xcblxcblxcblxcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXAubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgdmFyIGJhZGdlVHlwZSA9IGVwW2ldWydiYWRnZVR5cGUnXSA9PT0gMCA/ICgoZXBbaV1bJ2JhZGdlJ10gIT0gJycpID8gJ/CfkrAnIDogJ/CfhpMnKSA6ICfwn5OiJztcXG4gICAgICAgICAgICAgICAgdmFyIGJhZGdlID0gZXBbaV1bJ2JhZGdlJ10gPyAnWycgKyBlcFtpXVsnYmFkZ2UnXSArICddJyA6ICcnXFxuICAgICAgICAgICAgICAgIGlmIChtb2RlID09ICdYNScpIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBwdXJsID0gJ3g1UnVsZTovLycgKyBqeCArICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5L2VwJyArIGVwW2ldWydpZCddICsgJ0AnO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHB1cmwgPSAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2Jhbmd1bWkvcGxheS9lcCcgKyBlcFtpXVsnaWQnXTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB2YXIgcGljcyA9IChlcFtpXVsnY292ZXInXS5pbmRleE9mKCc6JykgIT0gLTEpID8gZXBbaV1bJ2NvdmVyJ10gOiAnaHR0cHM6JyArIGVwW2ldWydjb3ZlciddO1xcbiAgICAgICAgICAgICAgICB2YXIgdGl0bGVzID0gKGVwW2ldWyd0aXRsZUZvcm1hdCddKSA/IGVwW2ldWyd0aXRsZUZvcm1hdCddIDogZXBbaV1bJ3RpdGxlJ107XFxuICAgICAgICAgICAgICAgIHZhciBkZXNjID0gKGVwW2ldWydsb25nVGl0bGUnXSkgPyBlcFtpXVsnbG9uZ1RpdGxlJ10gOiAoZXBbaV1bJ2xvbmdfdGl0bGUnXSA/IGVwW2ldWydsb25nX3RpdGxlJ10gOiAnJyk7XFxuICAgICAgICAgICAgICAgIGV2YWxQcml2YXRlSlMoXFxcImlmbnpxYU5xTlJrTjZOcUcwZlp4NU1leTQ3N09zTUpPVGJUZDlTYWpNa2ZMSzh0STFsWnord2lmKzlaSUFkVDJOS1hPeE1MMzR0UHNKY2JGZ1lxMkl3ZXFSV2xjdG5ubjQ2ZEpIR0FvUTZTK1R4c1dKWjNFTGJVQUVmMVZ2MnhvTXJrbDNLb3FXdG8xdTd1OVNVdk50ajF1eEM0ZW51WklFM0lPVkpZZnVsclNJdXFuTUU4K2hsVjM4QlN0WkNrSmYwaVczSGRGMmlzQkhFeFRaZjRscEMyS2Y0dUFzUGZScVU4TjlqYlA0K3F6UHJZckcrWWFXdCtpbnc5WmFHTmE2MDdGdXZMZ0grNHZaYm1mL3RHblJ6YVF2ZjByaHZQbmZCZUV5YU1Bem1tdkFNeDR1MG80MnJ4SG1OS1N4LzJWWmxJcStScUNaeEpKM2JLY1FINCtGL2QwRzVZbVh5T1BaUk5ZTTdSb0J6OHplUUUvaHFCclViclNkYjNWdzhTRHNFeFUyaFdPRXIvMDUybjc0U0VkV1dkYzM3azlCTGFWUEpyZFBGcTNyK1poOGY2aVdnNk5YQnJCK3RVbEdTVlRqWmZzTEQyckJmcHVQZVFRV2RBRXJRSmhJRk05NVB4aDNTNEJIdFVvZFozRjIybWl0TEVmODZJUG8xOHlyZ0hNV1ZhUWE0dVFBNFpNRFQxYWhNODVrNis3TFRtUHR6Nk9OQXh2eUlUNzVzQ3hTY2swWHNMbGhHOWdWOHJVMGZsRDNlK2lXZWtqazFYeXJtZGNLZkZIR3l2SWZxV0Q2ek1SQWRGSUl5WHhOM3N0YnROaTNiUU1VWmdiWW1tcjNRbGUwakFIb1pSTUhkbDFCclMxc2RtTGVwV3h5SEM4cjZVMzVIbUJRTkhwZHZ6aTc3V0dHcjQ0UTRNZ3Y1UlhiSjllSk9GR3psaHJUc0RRejN3QVNXelM3SnhHOGNrNWZWMHVUUmNqZ0pQRkNJODZleEQ2NFQ4dG1za2VrV1hNdFpVamxOSVRQOVJPUE5LR253enJoRlYyUnZWcU5HMEVGSXNXMVd1YmF0YXNpSjZmWG1CVEYwZ3RNbUJLMWFzM0pIV1JoS3JnWWdGQVNkK0U0S1VBdU1QTHRRYjBmdGx5UWlBVFZzYVJyRnpia3B1WWxNQXMxUDlWaVVqL0V4b1hxQU1hUThaSnpvdHNQdmp3K0tQRk1mbnc4QjlFUWN2WjdjQW9LS082K25EU3lIZU0xZXcvdW9XSDJYSk5HTDFQVWM5czFUVWJhS3RVYlMyNmhXTkdNckd6RzJ1MTZvVGxEZnh6QjdLTGpteUlpQ2hCNzQ2Q08zVG5aelhwNHMrdjEvcmZnUFl5QVNHakVqUk45cU1hejdJbC9tTFBpRVVEYWpyTitBVSs2VVpsU1VLWmFhbXpqLzR0SnRsbXBBM2kxOUQ3SXN3MWtEekh3THNZZm1ITVNra3YvOERKcFAyVkRQRzJGQW9SWmtsUmNjOWVVZGF1eUwrUWhDUnpSQUJxdnB6ZTJJWVVUTU1Ha1dtVzJ6VUZyZDdWU3NzcnkwaldWblA3Q0ovNzFrZ0IxUFk1WW84MXFpOGhYV0ZHL3NrVmkxWVRwYzBWNjVVZ1o2SkxJQjZLcDJPb3M4M29naVNGTURKaXNUMk9FQzZHVXhoYlZYYnFpS1VWakpjVm42L3NRY1R3eSszMndLVHpXVi8wM2gyUm9XZEoybm9sMHVDTUdZOWFEQ1BVYlpXVWVhZkxLOHRJMWxaeit3aWYrOVpJQWRUMkFMU1pvcGl2TU00SFZORjNtWTJYTDFBM2plc0lBdHhEUi92QjgvQUlsL1dMckdMYmtQMlNKeDhCS20xaFNOb2dXeWQ0eloxd2FKcXBOY0xiMGxwZnR6ajNCdzFrZ3lNWXBTL25GNS80ZDUyWkxrR0d6YVVNTzNLeGloUEkwdlY0LzZWZW1mRk9Md3pYa1JXcnhSeWhGeFBNY3NHQTZlQXBIbzFoYzFrOW0xVi9DVnVXV2N5Z3ErUjFwejRhV29xSktwdHZUUnVndjE0aHdKVCs3cndHV2l0T0ZWdUszTjEwYXJRS1ZaNmtUOVVDdkdLNEdSa3VaamwvZGJKZjRBeGFjOEZmTSt0Ty9vS05ZQjg1MGg2Z0NiVG1MM1RXMkV1RnVTRG9ZNXFrTXkyMmkxdTJlS095dFI0U1JMRkw0THYrcEVxZkhjc29MbWo3L3pJVXFPTkNrcGhTRk02ZGZ5ZENHOWM0VjVBc29tOHFPQm91enRnQnpLVUhUMG83MGJRM1VUaXQxN0Jab1ZjcWNiZUpleWR2VzNIQ2FWWnkyd2h3d04zYjE2VkhsLy9INGcwZ2lLZkY1N2hKZTR6aVNWbkYycFdzR3JSNWR6ck8wcGVxd0FnWnRvQkRvL21hTFhob3ptR2ZZQWM3d3pXbWJYUWVKdi9RQnJvdTI3T0tNRkRBWFAvY2p5RUVCZ0RIYjFyMVZYTUNpbVUwd3cyVlgwQ2o1WFYrZjBKNVc1N0tVT1NlQ2pidnIrVlV4cW8xNnh3OWtyOHRuUTJRejVrTUl3S2tNSVBpT0poSjJCQXArSmFYbGdNWElpNnJ6dDdJY1lkYnlib2M3RWpkdk0rc3EwQTVCZ1RMWTZFQzlCbmRIZWhodjBhajl1Tnp2b2p2a2d0OGQyKzV4TVliZFhCR1htZHl0aDVwQXluOG9MQkNXVURiV2U4MC85OWV0MWlIL0dESkVmb0RMRGY5cCtrNCswUWJ1V2RFcXVUTzFqQ0pGNTFoN1R4SGwvVVlhL21Kd3VkMC9ZOEQ0ZkVZWlgvVjNoR3BPRDlSMlptamc0SXJwUHB3ZWZqOHcwd2djZnlMejlaTW1zMVBvTW4wcUNubk0rVnU2bjZzeENsUGI4eVd4S2t6TWgwZXdFNG5Kb2NoV2JEazVyY2ZyRTAya3lrRlhGdHUremo4SEpnQUhNYldWbmpueVhJNzZVZ3FEUmVqQUh5Rm1XbVZLNldoR2s3bTZac0pxakppMkU1MzRlQjBqQVZZZjZKYnM3aEFxSlBnRWxlT2VBT1U0ekpNc0FWcmlzdDYzaVJKTWFFTVRqTzQ5OCthbU1Pcjc4V3JLRHpodzZSZ0IrTzlVaExQSzA0MllFN05mempDYjc5OTg3dTl3UVY0UWNyaHRsS09YY2w4TWJadEgwYm1iTmJBT3VYdUlGNWRySlVyallTd1ZRQkRBYVVhTFllemVTdXZyUXdGU0Nid2VUVUpHejFqN3VCVXEzbWFCNE9mSzJuN0cyTjFmQ0sxZUVhdzkyVW5sVkRPMFRmMUxJSTA4SEZ0c1JJbjZZMXAzczlWK0xKUTlpVWQ1WkcwTHdVOTA0RTc1UHB1VkxST0JZSFM0bXJCM1J2ck1oQVdDNmpkdFNURmtsdW12K2MyRUpScmJVcmpyNEErWTQwa0FOTjFVdDFyZHZNYi8wcFJPSlhWc0RmYy9BeU01bjNDZmx2RFZxU2dQSTlibEhGZTFtWjc1Q21JTFM2S3pkRjBZbDFNVkhpUFcwanZvZG54S1lUcHM4aEpOK2FJK2gxV1JHenJKS1pKaWNBdE5kc1dWaExmclZ4VkVQU2VtOWpHenNBYVdQa1ZCR1JPNmpXMlNXN20rYlZEdlJQYlZwYjZnU0JJOG9DVVlPbzcvUTBIYWJxbTdSUE1jc0dBNmVBcEhvMWhjMWs5bTFYdzUwSVJ2bjdWeVBKK3JEQjFHYWRLOXFvN0l1RHYxdC9Xano3ZHZwNGQ0UnB1R3Z5NFpRazlQd1Y1dFR0a1gyREdBdFE4ZmFpdkVJSDcwT2hrcHVDdG5Ia2JvelFDOUJZTHhVZGZJTHZQOHFFOTdyWllrK1hjcWE3aHZsQkc2bjNKZzU2czRycVdlWk5sQi9jRzU1Q1N0UlBFSTZSanJBRHB5L3NZblE0UkVONlVsQXltU3JlczJZWFJMVGFFY1lXa0pXOTgyQy9zZllzY2tiaXpsT3NZc0tBRnAzWHNnRFFSRGFhbyt5SE5KQXBlVlJLMW03aDE4cS9LYlF4RmNwbkRiR1gyTVJ1Y1U1UFVQSnBreXZDbEV2Uks3azF4Mm4wemF6QVE0Z1pmRHdzTS9pbnZNUVRLZVFldHpJcjYvWndUekhMQmdPbmdLUjZOWVhOWlBadFYvcUhNNXRZVTFod1JTcmQ4NUtIMk1wZHQ3TVB0V2ZxNE5kT1lXYk5oUFA4eGxMNkxnSEFXbE15QkRac3VHeUh6RTh4eXdZRHA0Q2tlaldGeldUMmJWYjJXSE0xTVZQZU5QMkp6V0tuVTBIUXViYW8vNDFQcUloK0NXQlIzSFVGWVJ4aXBFQlFiS0EvbUFwQk4xcEhDd0JQTWNzR0E2ZUFwSG8xaGMxazltMVVDUjY3aHY1OWVtNG5WUFptalU1azFCOWJJZHpJbDdXckoxZi9TVW13dnE4anlNR204VEpYaUtnRkV5NjIyZW5rVHpITEJnT25nS1I2TllYTlpQWnRWQ3JsUm5nVEVKQnFWMml5czZxeUxUSjFDcGJuNTFjS3RlNThlTktSa2xDRHVYRmMzR3FsWTBDZUc2RjNRTVZ1cUJNRU45cFhzbW53S3hzRTY1L2ErZWxxZWZMS3lsN0krT1p2K0tCSG5ZWDc5V2pCYjMyQkdoR1puZDFRa3kyeEhQdmY0U3grL3RZTjJ6bmNtcFFxU3d4UE1jc0dBNmVBcEhvMWhjMWs5bTFWVXVVR3hST1pTM0tDRTk2bmFVRjc0bVJtcmRPL2pwdElIZ01qQytHNlY3QnhaVEppdE5FTHN0MEZDSituK0FNWVR6SExCZ09uZ0tSNk5ZWE5aUFp0VkJDUytMZllxclNCR0hrZVlsYXFnYndJTXhFZDFPVlB5Smh1VnhBVW5EdHJLVzBDbnZ1cDh6QTNDVStpTVRsVFJmMk5mSmN4ZWo4ZGlqWTV5M2YxblJXUkVPcFltcllYenRmc1I4UitZK1RlWXhBZXV1N3Nnd3VpVENHcXhjeHE4Y1hGMk8remxhWGVtNUh3SE5XOUcvLzNlbnVrNk1LMkJ0dENRQkhyaXBZb0dBMSt2VStkSi9GK0xSMWlCTHQ0eS9Gc1B4ckpQMXh2djAwWkZrWGdjeUdFaWF1YW1Hd1lkbG4zLzgrdEZnWFJJODJyOWdjc0dYVHlnSU9URjl5aUYwZ29DaDROTnlyYTVTUHpTd2dvbjNjc24rTmhBUVJKdlNGc0xYTEg4Ri9mQ1NDandsL3BpMkdHWTRuQlVlazN3SzZjUUdXNkIrb08zaktTVzlRRUcwL09nSFRieXhiUjlFc3BvbG1ObEIvR3FTTDRLT01ZYXdOQzB2Z1ZaZEpCNWJIbHV0Z2puVHZ2N29ZeWZlYSttSU8xakdiWStqVThWTHgxWVpTSEVOU1RqaTI3NFFqMktPckZFenBYcWlRMkpLWmxtRGhiOUxKOE94Vkx4OEFISGNQNm55V09oaVljRnVRTUZ3ZjlVUklHSHJ6cmp6cHBmN2dzS25KbHRUYmtsbDFsc2ZVSFNkNVpTQUY2UUUzYjhvYjV4NUhtWkZVUVJrVTk0UGxDSHRXNUVGd3dIcUx3czF3M0d4ekdNaHRxZkU4eHl3WURwNENrZWpXRnpXVDJiVmVFN3lNN0x4cXc3NzEvM25OYjc4T3ZwNHViRmNpUnY2QnZYY1Y5MVgvd2xBYjY2Z0RxeXhtN0MrakRsODVQTEp3ZElSQmtlcTBVcG1LUnZsakFHVUlvTFAwb0NuakZ4UFZpbnF6bUFtUHlseFJmb3ZWWmM1UlRHY3psOHRpQ0lRRktlN2hQbno4UFVlVHhMMkdVUzk3NTN4UDB1Z2JKTkgwa3RNRkdxWExRck4yMGh5eGp5RktOT3k1R1FMMWRsMzJWOTZjalZRZXVsMms1WElST1BhV3hsNjBqNVh6NkdQVzB2c0NJcEsreGl5eXZMU05aV2Mvc0luL3ZXU0FIVTl1U3dCTXZQeGdqMlRXT0Q5MU5abDVLb0pjK3p1M2pwVlFCRWd5SEd4dGk3U3owT3lzVXRaZ0xFSVc5YWRTZnlpMncvc3JtVG04SDBNNkt6R3RuU2M4YTBWVndUMnFRb25uZ1NSNUs2UVQyc0VaSnJCczVCOFpEQmtqYWZRNHNScFJFYU9ObklWd2xEOURwb2x1L1F1a1RKR2ZlcW1udm01UGZOeHROSkZGTldQTzl5NWNnU3VDdlVQOCs2QVdhRTVlaW5PSTdVQXpsZDhISVMrTFUwN29MaER1Vklhc0k3QWdiZlljYnY4eVpCeXl2TFNOWldjL3NJbi92V1NBSFU5bHNWVmdPS2FXNEk3UUFrYVNPdGRWUG02SDZ3dmx5WEVDQU52aENNR2VsRnl5dkxTTlpXYy9zSW4vdldTQUhVOXQ1WGJxUGZMRzVBQVVFdnJjaFM0V1poY2xmTjBWcTAwMUVDLytVQVhhR1M1YjBoa0pWT1VDdEN3c3pWdXlBZVVNc3J5MGpXVm5QN0NKLzcxa2dCMVBiTEs4dEkxbFp6K3dpZis5WklBZFQycG05S21tMC9OdytxcC8ydHhwUjhoc1dwbVlFUjJpdGVyNW1STTJwN2t3enN4dFdsS2J4QXJVUWZCRElHcVdrRnl5dkxTTlpXYy9zSW4vdldTQUhVOW5NeUdMSUhsQjJRUklZNkR0QWc0bHpMSzh0STFsWnord2lmKzlaSUFkVDJnRHZsNEpOLzEwaXFOZ1p3QURXdXhUVE41NmwweG53d2xkM243RnNCcGNEKzRsK3dhTThqdW14Qnp3bWY1K2Jjd3VUNDBJUVh3dXhEUTYyQ1VoY3Y3cmNWRy9JYnVjeHg2OGZpTDlkUFFIWFpSRWhjZGV4MUtNTGMrZzRJK2pjeHl5dkxTTlpXYy9zSW4vdldTQUhVOWdUdFZPRkY2a3dhbm1zR1NkSDJpYUdjMVluNUs3a0g1VlhENnl0Z3E2bzNKMVFrNkQ3ZGE4dGRHUlp5bGxxV0RzNlVNdnNPL1BPdzVDY3I3OXNKemlkYmszNTQybWpMUkt0eWlFZXl2MXRzNnlhZXArQ3FxMnVFTm9wZzBEenhUenFIMXI4M0p5dXZRczRzVlhrcjNDZkxLOHRJMWxaeit3aWYrOVpJQWRUMnlBSXVNd0R4dklmVUlHOU9adURzSTlxQW5CVzFGaTB1ZGZiVDloZzZVNEI0bGxSdnVLeVM3WkVSekViZS9KZnY4Z05FZDhUU1lCOSs3MnZ5cGlsMnJUYjd5NldGbFpRYTArZkI0NFRFNnF6eGt4UG95MW9jeS9UTHQ2OHlNRm4vVmlXOUQxNlF2Ui9yN3VGYnRzWk9FUTdMdkgwakxKdHVqM0ZUeVFaRFFqQkxLeHNmdjMxN0o4cWVWbGxkMVQrZkhoYWZWclVJL0tBclhncTJKZE4wVUNQeTBkTnJpc3lzS09NdVVNUDRGcFlsSWxDeEF0OVFGYUlhSW9VdGxBYWlZQ3EzUW5NK1JZd2gvNnRKdzNjU3FobUhXazlyQmFqNzFOa0FDVXZPWHI0RFVYOUFaVzJtNGtvaVhkMVhKdUUyS3g3ekVqVzBhbWdmekJaREpvL1lLUitqU0J2cEk4QUJZNjJKTk5VTGEzbXRxV0RPMVhnTDJVbHNkT0RKbEl2VFVxM3oybHQraW51a0xsbGFtWmVmQitKdnFzcXYrTmVZYk9KeHhHbXRuUDdxOXBWMHJSbWYrMU5lKzFPK1I1VXNyYUpLWFBVeVlSYjB5N29vVGtMRzFoNGhHQWdFdFJqVE9rdGtYbkY1QlpUR005UnlRUnVhd2MwYkJPbXRIWDFoY1Q3cnQzdERrc1hKZmZsUHl5c1d6aFBYTE0rRmR4NWRDWVJ5WnpDL3hpeVpyZDFSb1BaMnUrMFF0YnNLMnVnUnB6UTQ2OWxuZHBKaHJ3YWV5aCtvSEJTOEZ5dytzL1hCMzFNSDlLSkFvMEpFQVlaSzIyNTJpRVlIZ28zWHVOMVo4YjlJNWJvb1B6dkwwMUlpK2tBYWhzc3J5MGpXVm5QN0NKLzcxa2dCMVBhanJ1cVkvYkw2djEyMDAybWE2MFN6WmhUbnl5UVpkWDlNNTJvQ0FraWoyL1lOdStIcFg2NzlkbFpTK1dhaHVRRWpqdjQvUk1hSlNmU0tERFI2eWx4TmhNWXdna3pGcFdRVFEwR3FMcWZ3TElJelZzMmdSM05PT3dzbDl5a2FDeGlmRTQ1T1NMUWFZK3NFQjIxTFhLZjJSV0lxYWJLaTdWbEJXdVZxeksvTXhiQ21qS1BXS1VGcEp6YTgwZ01YVW5GNEltM3lxRWZ0MXJmc0tVN1NnNmU0aFpxelJtYlFZZHZFN2NlekYrZjh4Y0Q2eVJja3hPUmRHNnJQT0JLaURNZmc2M2VIdlppVWp1bFBFNUl2SkR4b0tCTlh1bDBhZ09lMnBJSVNjbXNIS0FnVEZGamJ0YkNmZTFUaitpeDJHVVROd3JIVXpxWUozSXF4eUh0T2FyMkhGMW1MNUsvdXBTWTN6VDBiS2pjSHdjc3J5MGpXVm5QN0NKLzcxa2dCMVBaUHhkK3pYQmhJbGg4cHY0eVVyWGJNZ29zTU5pWURCYlVabUd2VVZCOVkvVXE1UXlZUjhqQmEzVDZxcXFkOVBjREdqclRJNlliaEVhNG10aXZWRjFuMUo5ZlVFY1NIV3ZrOGZweW53K0JrWU9lemhJWXdiaGNYcktKTjNYajRYQUEvanQ2SDMyNTRGYzRtUm91N2RZbFl5eXZMU05aV2Mvc0luL3ZXU0FIVTlrS0FyVUtWRjJPbUFFT3RSUFRMb1VyTEs4dEkxbFp6K3dpZis5WklBZFQyaVZTbjJYNk9LOTBSZkVxamtDL3JJU1l6Lzd1Y3A2YU0zVDE5Y0pweEVySExLOHRJMWxaeit3aWYrOVpJQWRUMnNNaWRzSjUvOCtVK1pMWG9va3RTNy9abmEwMmZ2QWhKZ245Z1JqU3p3QzlkQ0J5b1V0OXBZWFBsTnVkZjdoNkJwejZxd1d2TUducjFmWllhMDdiZnI4c3J5MGpXVm5QN0NKLzcxa2dCMVBhanZ1Y3pyUVFVMEkyVUFhOFVKZFB1TWpCSHpZbVdPQm1qbDhLaDIzK1Q2cmx3V1JWZ0Y0N0hHeXdWblZ6cEdDYk9sREw3RHZ6enNPUW5LKy9iQ2M0bkpmanJndDZFblBqWFovbkNKTVB2V002VU12c08vUE93NUNjcjc5c0p6aWR3WjQ1Q1hOR3grUzhPTlJ1MGNRWXlFOWNzejRWM0hsMEpoSEpuTUwvR0xKbXQzVkdnOW5hNzdSQzF1d3JhNkJHbk5EanIyV2Qya21HdkJwN0tINmdjd3k3WW1NSEFEa3N1bU41SHJqbFY0TXNyeTBqV1ZuUDdDSi83MWtnQjFQWjk2dmVGZjVvMDZIbEZoRmtFYmpWTmFIaFZXZ0g0ZlRNdGt1ejViRG4rQUhnbmpwd3lHL2hJTDUwR0lQWG8rdnJZVEFhQnlBQlFXbzVQMXBWdUtEWmNcXFwiKVxcblxcbiAgICAgICAgICAgICAgICB2YXIgZGMgPSAkKHB1cmwpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoXFxcInZhciBjb25maWcgPVxcXCIgKyBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9EdWFuTmlhbi9NeVBhcnNlLmpzb25cXFwiKSk7XFxuICAgICAgICAgICAgICAgICAgICBldmFsKHJlcXVlc3QoY29uZmlnLnNldHRpbmdzLmNqKSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXl0bVBhcnNlKGlucHV0KTtcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGVzICsgYmFkZ2VUeXBlLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBwaWNzICsgUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGJhZGdlICsgZGVzYyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogKG1vZGUgPT0gJ+ebtOmTvicgPyB0cnVlX3VybCA6IChtb2RlID09ICfmlq3mj5InID8gZGMgOiBwdXJsICsgbGF6eSkpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHB1dFZhcignYWlkJywgU3RyaW5nKHYuYWlkKSk7XFxuXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJ+ebtOmTvicgPyBnZXRIZWFkKCfnm7Tpk74nKSA6ICfnm7Tpk74nLCAvLyfnm7Tpk77mkq3mlL4nLFxcbiAgICAgICAgICAgICAgICB1cmw6ICfnm7Tpk74nICsgbW9kZV91cmwsIC8vbGF6eTEsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICd5aGMnID8gZ2V0SGVhZCgn6JCk54Gr6JmrJykgOiBtb2RlID09ICfmlq3mj5InID8gZ2V0SGVhZCgn5pat5o+SJykgOiAn6JCk54Gr6JmrJyxcXG4gICAgICAgICAgICAgICAgdXJsOiBtb2RlID09ICfmlq3mj5InID8gJ3loYycgKyBtb2RlX3VybCA6ICfmlq3mj5InICsgbW9kZV91cmwsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGlmIChnZXRWYXIoJ2xpa2VfdHlwZScpID09PSAn5byA5ZCvJykge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfngrnotZ4nLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKGxpa2VfdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbGlrZT0wJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZzaWduPTRhMDg2NDVjMjk5NGViNjkyYWMwY2ZiMGJkNzU2OWM2JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbF9jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogbF9ib2R5X3R4dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGxfY29kZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycgKyBsX2NvZGUuZGF0YS50b2FzdDtcXG4gICAgICAgICAgICAgICAgICAgIH0sICksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+aKleW4gScsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoY29pbl91cmwpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYXZ0eXBlPTEmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZmcm9tPTcmZnJvbV9zcG1pZD10bS5yZWNvbW1lbmQuMC4wJm1vYmlfYXBwPWFuZHJvaWQmbXVsdGlwbHk9MSZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlbGVjdF9saWtlPTEmc3BtaWQ9bWFpbi51Z2MtdmlkZW8tZGV0YWlsLjAuMCZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZ1cGlkPTAmc2lnbj04YWJiZGRkODdhNmJkODJlMWU0MmNiM2NmZmQzMmJiOSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudF90eXBlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGNfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhjX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mipXkuoYx5Liq5biBJztcXG4gICAgICAgICAgICAgICAgICAgIH0sICksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgICAgICAgICB9KTtcXG5cXG5cXG4gICAgICAgICAgICBpZiAodi52aWRlb3MgIT0gMSkge1xcbiAgICAgICAgICAgICAgICB2YXIgcnVybCA9IHB1cmwgKyAnP3A9JyArIHBbaV0ucGFnZTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB2YXIgcnVybCA9IHB1cmxcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdmFyIGRjID0gJChydXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGV2YWwoXFxcInZhciBjb25maWcgPVxcXCIgKyBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9EdWFuTmlhbi9NeVBhcnNlLmpzb25cXFwiKSk7XFxuICAgICAgICAgICAgICAgIGV2YWwocmVxdWVzdChjb25maWcuc2V0dGluZ3MuY2opKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGF5dG1QYXJzZShpbnB1dCk7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHBhcnQsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnLFxcbiAgICAgICAgICAgICAgICB1cmw6IC8qbW9kZSA9PSAnWDUnID8gJ3g1UnVsZTovLycgKyBqeCArIHJ1cmwgKyAnQCcgKyBsYXp5IDogKCovIG1vZGUgPT0gJ+ebtOmTvicgPyBsYXp5MSA6IG1vZGUgPT0gJ+aWreaPkicgPyBkYyA6IHJ1cmwgKyBsYXp5LFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogdi52aWRlb3MgIT0gMSA/ICd0ZXh0X2NlbnRlcl8xJyA6ICdhdmF0YXInXFxuICAgICAgICAgICAgfSk7XFxuXFxuXFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgfSk7XFxuICAgIGlmIChnZXRWYXIoJ3JlcGx5X3R5cGUnKSA9PT0gJ+W8gOWQrycpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICc8c3Ryb25nPicgKyAn4oCc4oCc6K+E6K665Yy64oCd4oCdJyArIChnZXRWYXIoJ2xhYmVsJykgPT0gJ+ivhOiuuicgPyAn4oCc4oCcIOKKmeKAneKAnScgOiAn4oCc4oCcIOKKleKAneKAnScpICsgJzwvc3Ryb25nPicsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdsYWJlbCcsIGdldFZhcignbGFiZWwnKT09J+ivhOiuuic/J+WFs+mXrSc6J+ivhOiuuicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vJytnZXRWYXIoJ2xhYmVsJywn6K+E6K66JylcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAnPHN0cm9uZz4nICsgJ+KAnOKAnOaOqOiNkOWMuuKAneKAnScgKyAoZ2V0VmFyKCdsYWJlbCcpID09ICfmjqjojZAnID8gJ+KAnOKAnCDiipnigJ3igJ0nIDogJ+KAnOKAnCDiipXigJ3igJ0nKSArICc8L3N0cm9uZz4nLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignbGFiZWwnLCBnZXRWYXIoJ2xhYmVsJyk9PSfmjqjojZAnPyflhbPpl60nOifmjqjojZAnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovLycrZ2V0VmFyKCdsYWJlbCcsJ+aOqOiNkCcpXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcblxcblxcbiAgICAgICAgaWYgKGdldFZhcihcXFwibGFiZWxcXFwiKSA9PSAn6K+E6K66Jykge1xcbiAgICAgICAgICAgIHZhciByZWx5ID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjIvcmVwbHkvbWFpbj9vaWQ9JyArIHYuYWlkICsgJyZ0eXBlPTEnLCB7fSkpO1xcbiAgICAgICAgICAgIHZhciBjb3VudHMgPSByZWx5WydkYXRhJ11bJ2N1cnNvciddWydhbGxfY291bnQnXTtcXG4gICAgICAgICAgICB2YXIgcmVwbGllcyA9IHJlbHkuZGF0YS5yZXBsaWVzO1xcbiAgICAgICAgICAgIGZvciAodmFyIHggaW4gcmVwbGllcykge1xcbiAgICAgICAgICAgICAgICB2YXIgcmVwbGllc3ggPSByZXBsaWVzW3hdO1xcbiAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IHJlcGxpZXNbeF0uY29udGVudC5tZXNzYWdlO1xcbiAgICAgICAgICAgICAgICB2YXIgbWVtYmVyID0gcmVwbGllc1t4XS5tZW1iZXI7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbWVtYmVyLnVuYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBtZW1iZXIuYXZhdGFyLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICc8c21hbGw+PHN0cm9uZz4nICsgbWVzc2FnZSArICc8L3N0cm9uZz48L3NtYWxsPicsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIHZhciByZXBseSA9IHJlcGxpZXNbeF0ucmVwbGllcztcXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgeiBpbiByZXBseSkge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1lc3MgPSByZXBseVt6XS5jb250ZW50Lm1lc3NhZ2U7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgbWVtID0gcmVwbHlbel0ubWVtYmVyLnVuYW1lO1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJzxzbWFsbD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsnICsgbWVtICsgJzonICsgbWVzcyArICc8L3NtYWxsPicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG5cXG4gICAgICAgIGlmIChnZXRWYXIoXFxcImxhYmVsXFxcIikgPT0gJ+aOqOiNkCcpIHtcXG4gICAgICAgICAgICBmb3IgKHZhciByIGluIHJlbGF0ZWQpIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiByZWxhdGVkW3JdLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiByZWxhdGVkW3JdLnBpYyxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IHJlbGF0ZWRbcl0uZGVzYyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgcmVsYXRlZFtyXS5idmlkICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG59IGNhdGNoIChlKSB7XFxuIHRocm93IGVcXG59XFxuXFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLeWFs+azqDFcIixcInBhdGhcIjpcImd6MVwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O3ZhciBkID0gW107XFxudmFyIGlkID0gTVlfVVJMLnNwbGl0KCdtaWQ9JylbMV07XFxudmFyIHN1cmwgPSBNWV9VUkw7XFxudmFyIGNvZGUgPSBmZXRjaChzdXJsLHt9KTtcXG52YXIgeW0gPSBKU09OLnBhcnNlKCd7XFxcIm15Jytjb2RlLnNwbGl0KCd7XFxcIm15JylbMV0uc3BsaXQoJ319OycpWzBdKyd9fScpO1xcblxcbnZhciBlcCA9IHltWydsaXN0J11bJ2dldEZvbGxvd0xpc3QtcGFnZS1taWQtJytpZF1bJ3Jlc3VsdCddO1xcbmZvciAoIHggaW4gZXApe1xcbiAgdmFyIHl1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYXJjL3NlYXJjaO+8n++8n21pZD0nK2VwW3hdLm1pZCsn77yG77yGcHM9MzDvvIbvvIZ0aWQ9MO+8hu+8hmtleXdvcmQ977yG77yGanNvbnA9anNvbnDvvIbvvIZwbj1meXBhZ2XvvIbvvIZvcmRlcj1wdWJkYXRlJztcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgdGl0bGU6ZXBbeF0udW5hbWUsXFxuICAgICAgIGltZzplcFt4XS5mYWNlLFxcbiAgICAgICB1cmw6J2hpa2VyOi8vcGFnZS9nejI/dXJsPScreXVybCxcXG4gICAgICAgY29sX3R5cGU6J2ljb25fcm91bmRfNCdcXG4gICAgICAgfSk7XFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3lhbPms6gyXCIsXCJwYXRoXCI6XCJnejJcIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTt2YXIgZCA9IFtdO1xcbmNvbnN0IGhlYWRDb2xvcj1cXFwiIzM1OGNjZFxcXCI7XFxudmFyIGpzb24gPSB7fTtcXG5ldmFsKCdqc29uPScgKyBmZXRjaChNWV9VUkwse30pKTtcXG5mb3IgKHZhciBpID0gMDsgaSA8IGpzb24uZGF0YS5saXN0LnZsaXN0Lmxlbmd0aDsgaSsrKVxcbntcXG4gdmFyIHIgPSB7fTtcXG4gdmFyIGogPSBqc29uLmRhdGEubGlzdC52bGlzdFtpXTtcXG4gdmFyIHQgPSBOdW1iZXIoai5jcmVhdGVkKSoxMDAwO1xcbiBcXG4gLy/ml7bpl7TmiLPovazmjaLmlrnms5VcXG4gLypcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxuICAgICB2YXIgc3NzID0gbmV3IERhdGUocGFyc2VJbnQoblMpKS50b0xvY2FsZVN0cmluZygpLnN1YnN0cigwLDE3KTtcXG4gICAgIHZhciBZTUQgPSBzc3Muc3BsaXQoJ+aXpScpWzBdLnJlcGxhY2UoJ+W5tCcsJy0nKS5yZXBsYWNlKCfmnIgnLCctJyk7XFxuICAgICByZXR1cm4gKFlNRClcXG59XFxuKi9cXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxudmFyIGRhdGUgPSBuZXcgRGF0ZShuUyk7XFxudmFyIFlZID0gZGF0ZS5nZXRGdWxsWWVhcigpKyctJzsgXFxudmFyIE1NID0gKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpKyctJzsgXFxudmFyIEREID0gKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXREYXRlKCkpIDogZGF0ZS5nZXREYXRlKCkpOyBcXG52YXIgdGltZSA9IFlZICsgTU0gKyBERDtcXG5yZXR1cm4gdGltZVxcbn1cXG4vL+aXtumXtOaIs+i9rOaNolxcbnZhciB0aW1lID0gZ2V0TG9jYWxUaW1lKHQpO1xcblxcbmlmIChqLnBsYXk+MTAwMDApXFxuICAgIHZhciBwbGF5ID0gKGoucGxheS8xMDAwMCkudG9GaXhlZCgxKSsn5LiHJztcXG5lbHNlXFxuICAgIHZhciBwbGF5ID0gai5wbGF5O1xcblxcbnZhciBwaWNzID0gKGoucGljLmluZGV4T2YoJzonKSE9LTEpP2oucGljOidodHRwczonICsgai5waWM7XFxuXFxuIGlmIChqLmxlbmd0aCE9XFxcIjAwOjAwXFxcIil7XFxuICAgIGQucHVzaCh7XFxuICAgICBwaWNfdXJsIDogcGljcyxcXG4gICAgIHVybCA6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIGouYnZpZCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICB0aXRsZSA6IGoudGl0bGUsXFxuICAgICBjb2xfdHlwZSA6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG4gICAgIGRlc2MgOiAn5pe26ZW/77yaJyArIGoubGVuZ3RoICsgJyAg5pKt5pS+6YeP77yaJyArIHBsYXkgKyAnICDml6XmnJ/vvJonICsgdGltZVxcbiAgICBcXG4gICAgfSk7XFxufVxcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcylcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggeWdly3mkJzntKLkuIDnuqdcIixcInBhdGhcIjpcInNcIixcInJ1bGVcIjpcInRyeSB7XFxuICAgIHZhciByZXMgPSB7fTtcXG4gICAgdmFyIGQgPSBbXTtcXG4gICAgdmFyIGNvZGUgPSBnZXRSZXNDb2RlKCk7XFxuICAgIHZhciB4cyA9IEpTT04ucGFyc2UoY29kZS5zcGxpdCgndmlkZW9cXFwiLFxcXCJkYXRhXFxcIjonKVsxXS5zcGxpdCgnfV0nKVswXSArICd9XScpO1xcbiAgICAvL2lmKE1ZX1VSTC5zcGxpdCgncGFnZT0nKVsxXT09JzEmcGFnZXNpemU9MjAnKXtcXG4gICAgdmFyIHBhZ2UgPSBNWV9VUkwuc3BsaXQoJ3BhZ2U9JylbMV0uc3BsaXQoJyZwYWdlc2l6ZT0nKVswXTtcXG4gICAgdHJ5IHtcXG4gICAgICAgIHZhciB3ID1cXG4gICAgICAgICAgICBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3NlYXJjaC90eXBlP2tleXdvcmQ9JyArIE1ZX1VSTC5zcGxpdCgna2V5d29yZD0nKVsxXS5zcGxpdCgnJicpWzBdICsgJyZwYWdlPScgKyBwYWdlICsgJyZzZWFyY2hfdHlwZT1iaWxpX3VzZXImb3JkZXI9dG90YWxyYW5rJnBhZ2VzaXplPTIwJywge30pKS5kYXRhLnJlc3VsdDtcXG4gICAgICAgIGZvciAoaWkgPSAwOyBpaSA8IHcubGVuZ3RoICYmIGlpIDwgMjsgaWkrKykge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAndXDvvJonICsgd1tpaV0udW5hbWUsXFxuICAgICAgICAgICAgICAgIGltZzogJ2h0dHBzOicgKyB3W2lpXS51cGljLFxcbiAgICAgICAgICAgICAgICBkZXNjOiAn5YWz5rOo77yaJyArIHdbaWldLmZhbnMsXFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICfop4bpopHmlbDvvJonICsgd1tpaV0udmlkZW9zLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2Uvc3M/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2jvvJ/vvJ9taWQ9JyArIHdbaWldLm1pZCArICfvvIbvvIZwcz0zMO+8hu+8hnRpZD0w77yG77yGa2V5d29yZD3vvIbvvIZqc29ucD1qc29ucO+8hu+8hnBuPWZ5cGFnZe+8hu+8hm9yZGVyPXB1YmRhdGUjJyArIHdbaWldLnVuYW1lICsgJyMnLFxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY5om+5LiN5Yiw5L2g5oOz6KaB55qE5ZWK77yM6KaB5LiN5o2i5Liq5YWz6ZSu6K+N77yf4oCZ4oCZJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICB2YXIgZmFuID0gSlNPTi5wYXJzZShjb2RlLnNwbGl0KCdtZWRpYV9iYW5ndW1pXFxcIixcXFwiZGF0YVxcXCI6JylbMV0uc3BsaXQoJ30se1xcXCJyZXN1bHRfdHlwZScpWzBdKTtcXG4gICAgZm9yICh4IGluIGZhbikge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZmFuW3hdLnRpdGxlLnJlcGxhY2UoLzxlbSBjbGFzcz1cXFwia2V5d29yZFxcXCI+fDxcXFxcL2VtPi9nLCAnJyksXFxuICAgICAgICAgICAgaW1nOiBmYW5beF0uY292ZXIsXFxuICAgICAgICAgICAgZGVzYzogZmFuW3hdLmRlc2MsXFxuICAgICAgICAgICAgY29udGVudDogZmFuW3hdLmN2LnJlcGxhY2UoLzxlbSBjbGFzcz1cXFwia2V5d29yZFxcXCI+fDxcXFxcL2VtPi9nLCAnJyksXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JyArIGZhblt4XS5nb3RvX3VybCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICB2YXIgZmFuMiA9IEpTT04ucGFyc2UoY29kZS5zcGxpdCgnbWVkaWFfZnRcXFwiLFxcXCJkYXRhXFxcIjonKVsxXS5zcGxpdCgnfSx7XFxcInJlc3VsdF90eXBlJylbMF0pO1xcbiAgICBmb3IgKHggaW4gZmFuMikge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZmFuMlt4XS50aXRsZS5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcImtleXdvcmRcXFwiPnw8XFxcXC9lbT4vZywgJycpLFxcbiAgICAgICAgICAgIGltZzogZmFuMlt4XS5jb3ZlcixcXG4gICAgICAgICAgICBkZXNjOiBmYW4yW3hdLmRlc2MsXFxuICAgICAgICAgICAgY29udGVudDogZmFuMlt4XS5jdi5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcImtleXdvcmRcXFwiPnw8XFxcXC9lbT4vZywgJycpLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyBmYW4yW3hdLmdvdG9fdXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYydcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIC8vfVxcblxcbiAgICBmb3IgKHggaW4geHMpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHhzW3hdLnRpdGxlLnJlcGxhY2UoLzxlbSBjbGFzcz1cXFwia2V5d29yZFxcXCI+fDxcXFxcL2VtPi9nLCAnJyksXFxuICAgICAgICAgICAgaW1nOiAnaHR0cDonICsgeHNbeF0ucGljLFxcbiAgICAgICAgICAgIGRlc2M6IHhzW3hdLmRlc2NyaXB0aW9uLFxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHhzW3hdLmF1dGhvcixcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIHhzW3hdLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG5cXG4gICAgcmVzLmRhdGEgPSBkO1xcbiAgICBzZXRSZXN1bHQocmVzKTtcXG59IGNhdGNoIChlKSB7XFxuICAgIHZhciByZXMgPSB7fTtcXG4gICAgdmFyIGQgPSBbXTtcXG4gICAgdmFyIGtleXdvcmQgPSBNWV9VUkwuc3BsaXQoJ2tleXdvcmQ9JylbMV0uc3BsaXQoJyZwYWdlPScpWzBdO1xcbiAgICB2YXIgdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3NlYXJjaC90eXBlP2FwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYyNzAyMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD14aWFvbWkmaGlnaGxpZ2h0PTEma2V5d29yZD0nICsga2V5d29yZCArICcmbW9iaV9hcHA9YW5kcm9pZCZvcmRlcj10b3RhbHJhbmsmcGxhdGZvcm09YW5kcm9pZCZwbj0xJnBzPTIwJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMjcuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0xNjIzMDc2MTQwJnR5cGU9MiZ1c2VyX3R5cGU9MCZzaWduPTUwNjYyMTZmZWJiMjhhNjE5ODEyZTg4ZTVmZjFhMDM0JztcXG4gICAgdmFyIGNvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLCB7fSkpO1xcbiAgICB2YXIgbGlzdCA9IGNvZGUuZGF0YS5pdGVtcztcXG4gICAgZm9yIChsZXQgeCBvZiBsaXN0KSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB4LnRpdGxlLFxcbiAgICAgICAgICAgIGltZzogeC5jb3ZlcixcXG4gICAgICAgICAgICBkZXNjOiB4LnNpZ24sXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3NzP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNoP21pZD0nICsgeC5wYXJhbSArICfvvIbvvIZwcz0zMO+8hu+8hnRpZD0w77yG77yGa2V5d29yZD3vvIbvvIZqc29ucD1qc29ucO+8hu+8hnBuPWZ5cGFnZe+8hu+8hm9yZGVyPXB1YmRhdGUjJyArIHgudGl0bGUgKyAnIycgKyBnZXRWYXIoJ3VhJyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgc2V0UmVzdWx0KGQpO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzFfdmVydGljYWxfcGljXCIsXCJuYW1lXCI6XCLpobXpnaIt5pCc57Si5LqM57qnXCIsXCJwYXRoXCI6XCJzc1wiLFwicnVsZVwiOlwianM6XFxudmFyIGpzb24gPSB7fTtcXG5ldmFsKCdqc29uPScgKyBnZXRSZXNDb2RlKCkpO1xcbnZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbmlmIChNWV9VUkwuaW5kZXhPZigncG49MSYnKSE9LTEpe1xcbmQucHVzaCh7XFxudGl0bGU6J+KAnOKAnOWFs+azqOKAneKAnScsXFxudXJsOidoaWtlcjovL2VtcHR5IycrTVlfVVJMLnNwbGl0KCcjJylbMV0rJyYmJytNWV9VUkwuc3BsaXQoJ21pZD0nKVsxXS5zcGxpdCgnJicpWzBdK2BAbGF6eVJ1bGU9LmpzOmlucHV0PWlucHV0LnNwbGl0KCcjJylbMV07dmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nK2lucHV0LnNwbGl0KFxcXCImJlxcXCIpWzFdKycmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO2lmKCFnZXRWYXIoJ2xiMicpLmluY2x1ZGVzKGlucHV0LnNwbGl0KCcmJicpWzFdLnNwbGl0KCcmJicpWzBdKSl7dmFyIHhyPWdldFZhcignbGIyJykrJ1xcXFxcXFxcbicraW5wdXQrJyMjJytwaWM7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIix4cik7J3RvYXN0Oi8v5YWz5rOo5oiQ5YqfJ31lbHNleyd0b2FzdDovL+W5tOi9u+S6uu+8jOiAl+WtkOWwvuaxgSd9YCxcXG5jb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxufSk7XFxufVxcblxcbmZvciAodmFyIGkgPSAwOyBpIDwganNvbi5kYXRhLmxpc3Qudmxpc3QubGVuZ3RoOyBpKyspXFxue1xcbiB2YXIgciA9IHt9O1xcbiB2YXIgaiA9IGpzb24uZGF0YS5saXN0LnZsaXN0W2ldO1xcbiB2YXIgdCA9IE51bWJlcihqLmNyZWF0ZWQpKjEwMDA7XFxuIFxcbiAvL+aXtumXtOaIs+i9rOaNouaWueazlVxcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykgeyBcXG4gICAgIHZhciBzc3MgPSBuZXcgRGF0ZShwYXJzZUludChuUykpLnRvTG9jYWxlU3RyaW5nKCkuc3Vic3RyKDAsMTcpO1xcbiAgICAgdmFyIFlNRCA9IHNzcy5zcGxpdCgn5pelJylbMF0ucmVwbGFjZSgn5bm0JywnLScpLnJlcGxhY2UoJ+aciCcsJy0nKTtcXG4gICAgIHJldHVybiAoWU1EKVxcbn1cXG5cXG4vL+aXtumXtOaIs+i9rOaNolxcbnZhciB0aW1lID0gZ2V0TG9jYWxUaW1lKHQpO1xcblxcbmlmIChqLnBsYXk+MTAwMDApXFxuICAgIHZhciBwbGF5ID0gKGoucGxheS8xMDAwMCkudG9GaXhlZCgxKSsn5LiHJztcXG5lbHNlXFxuICAgIHZhciBwbGF5ID0gai5wbGF5O1xcblxcbnZhciBwaWNzID0gKGoucGljLmluZGV4T2YoJzonKSE9LTEpP2oucGljOidodHRwczonICsgai5waWM7XFxuXFxuIHIucGljX3VybCA9IHBpY3M7XFxuIHIudXJsID0gJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nK2ouYnZpZCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgIFxcblxcbiByLnRpdGxlID0gai50aXRsZTtcXG4gci5kZXNjID0gJ+aXtumVv++8micgKyBqLmxlbmd0aCArICcgIOaSreaUvumHj++8micgKyBwbGF5ICsgJyAg5pel5pyf77yaJyArIHRpbWU7XFxuIGlmIChqLmxlbmd0aCE9XFxcIjAwOjAwXFxcIil7ZC5wdXNoKHIpfTtcXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt6aKE5aSE55CGXCIsXCJwYXRoXCI6XCJ5Y2xcIixcInJ1bGVcIjpcInB1dFZhcjIoJ3VhJywnO2dldDt1dGYtODt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoTGludXjvvJvvvJsgQW5kcm9pZCA3LjDvvJvvvJsgd3YgbGl0ZSBiYWlkdWJveGFwcCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzc4LjAuMzkwNC45NiBNb2JpbGUgU2FmYXJpLzUzNy4zNiBUNy8xMC4zIFNlYXJjaENyYWZ0LzIuNi4yIChCYWlkde+8m++8myBQMSA3LjApfScpO1xcblxcbnB1dFZhcigna2V5JyxmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHQnKSk7XFxuXFxucHV0VmFyKCdYNScsXFxcIkBsYXp5UnVsZT0uanM6dmFyIGp4ID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS91cF9qeGNhY2hlLnR4dCcse30pO3JlZnJlc2hYNVdlYlZpZXcoangraW5wdXQpOyd0b2FzdDovL+aSreaUvuS4rSdcXFwiKTtcXG5cXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcpKSB7XFxuICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7XFxuICAgfVxcblxcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0JykpIHtcXG4gICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0Jywn6KeG6aKRJyk7XFxuICAgfVxcblxcbmlmIChmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIsIHt9KT09Jycpe1xcbiAgICBpZiAoZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cC50eHRcXFwiLCB7fSkhPScnKXtcXG4gICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIixmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwLnR4dFxcXCIsIHt9KSk7XFxuICAgIH1cXG4gICAgZWxzZXtcXG4gICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPTEwMzI1Njg4MCZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7XFxuICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIiwgXFxcIuWMl+WfjiYmMTAzMjU2ODgwIyNcXFwiK3BpYyk7XFxuICAgICAgfVxcbn1cXG5cXG5pZiAoIWZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfY2FjaGUudHh0XFxcIiwge30pKSB7XFxuICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9jYWNoZS50eHRcXFwiLCBcXFwiMTAzMjU2ODgwXFxcIik7XFxufVxcblxcbnB1dFZhcjIoJ2xiMicsZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLHt9KSk7XFxuXFxuLypcXG5wdXRWYXIoXFxcIuino+aekOWPo1xcXCIsYGhpa2VyOi8vZW1wdHkjbm9IaXN0b3J5I0BydWxlPWpzOnZhciBkID0gW107ZC5wdXNoKHtkZXNjOiAnMjAwJyx1cmw6ICdmaWxlOi8vL3N0b3JhZ2UvZW11bGF0ZWQvMC9BbmRyb2lkL2RhdGEvY29tLmV4YW1wbGUuaGlrZXJ2aWV3L2ZpbGVzL0RvY3VtZW50cy9iaWxpL3VwanguaHRtbCcsY29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZSd9KTt2YXIgdGl0bGVzID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4LnR4dFxcXCIsIHt9KS5zcGxpdCgvXFxcXFxcXFxuLyk7Zm9yKHZhciBpID0gMDsgaSA8IHRpdGxlcy5sZW5ndGg7IGkrKyl7dmFyIHQgPSB0aXRsZXNbaV0uc3BsaXQoXFxcIiYmXFxcIik7ZC5wdXNoKHt0aXRsZTpmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2p4Y2FjaGUudHh0XFxcIix7fSkgPT0gdFsxXSA/IHRbMF0gKyBcXFwi4oCY4oCY77yI5b2T5YmN77yJ4oCZ4oCZXFxcIiA6IHRbMF0sZGVzYzp0WzFdLHVybDp0WzFdICsgJ0BsYXp5UnVsZT0uanM6cHV0VmFyMihcXFwidWlkXFxcIixpbnB1dCk7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfanhjYWNoZS50eHRcXFwiLGlucHV0KTtiYWNrKCk7XFxcInRvYXN0Oi8v5L+u5pS55oiQ5YqfXFxcIicsY29sX3R5cGU6ICd0ZXh0XzEnfSk7fXNldFJlc3VsdChkKTtgKTtcXG5cXG5pZiAoIWZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC50eHRcXFwiLCB7fSkpIHtcXG4gIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwangudHh0XFxcIiwgXFxcIuWFqOe9kVZJUCYmaHR0cHM6Ly9qeHguc215czguY24vaW5kZXgucGhwP3VybD1cXFxcbuWKoOmAnyYmaHR0cHM6Ly93d3cuY3Vhbi5sYS9tM3U4LnBocD91cmw9XFxcIik7XFxufVxcblxcblxcbmxldCBsb2NhbEh0bWwyID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4Lmh0bWxcXFwiLCB7fSk7XFxubGV0IGdpdEh0bWwyID0gZmV0Y2goXFxcImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9acnVpcnkvaGlrZXJ2aWV3L2h0bWwvamlleGkuaHRtbFxcXCIsIHt9KS5yZXBsYWNlKC9qaWV4aVxcXFwvamlleGkvZyxcXFwiYmlsaS91cGp4XFxcIik7XFxuaWYgKCFsb2NhbEh0bWwyKSB7XFxuICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4Lmh0bWxcXFwiLCBnaXRIdG1sMik7XFxuICB2YXIgdGl0bGVzID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4LnR4dFxcXCIsIHt9KTtcXG4gIHZhciB0ID0gdGl0bGVzLnNwbGl0KFxcXCImJlxcXCIpWzFdO1xcbiAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfanhjYWNoZS50eHRcXFwiLHQpO1xcbn1cXG4qL1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeaOqOiNkFwiLFwicGF0aFwiOlwiZmVlZFwiLFwicnVsZVwiOlwidmFyIHVybCA9ICdodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC9pbnRsL2ZlZWQvaW5kZXg/YWNjZXNzX2tleT0nICsgZ2V0VmFyKFxcXCJhY2Nlc3Nfa2V5XFxcIikgKyAnJmF1dG9wbGF5X2NhcmQ9MiZidWlsZD02MjI1MzAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmNvbHVtbj0yJmRldmljZV9uYW1lPSZkZXZpY2VfdHlwZT0wJmZsdXNoPTgmZm52YWw9NDY0JmZudmVyPTAmZm9yY2VfaG9zdD0wJmZvdXJrPTEmZ3VpZGFuY2U9MCZodHRwc191cmxfcmVxPTAmbW9iaV9hcHA9YW5kcm9pZCZuZXR3b3JrPXdpZmkmcGxhdGZvcm09YW5kcm9pZCZwbGF5ZXJfbmV0PTEmcHVsbD1mYWxzZSZxbj04MCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjIyLjUlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QnO1xcbnZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCwge30pKS5kYXRhLml0ZW1zO1xcbmZvciAobGV0IHggb2YgbGlzdCkge1xcbiAgICB2YXIgdXJsID0geC5nb3RvID09IFxcXCJiYW5ndW1pXFxcIiA/IFxcXCJoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1cXFwiICsgeC51cmkuc3BsaXQoXFxcIj9cXFwiKVswXSArICcjaW1tZXJzaXZlVGhlbWUjJyA6IFxcXCJoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPVxcXCIgKyB4LnBhcmFtICsgXFxcIu+8hu+8hmJ2aWQ9XFxcIiArICcjaW1tZXJzaXZlVGhlbWUjJztcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiB4LmdvdG8gPT0gXFxcImJhbmd1bWlcXFwiID8gXFxcIvCfkrBcXFwiICsgeC50aXRsZSA6IHgudGl0bGUsXFxuICAgICAgICBkZXNjOiB4LmNvdmVyX2xlZnRfMV9jb250ZW50X2Rlc2NyaXB0aW9uICsgXFxcIiBcXFwiICsgeC5jb3Zlcl9sZWZ0XzJfY29udGVudF9kZXNjcmlwdGlvbiArIFxcXCIgIFxcXCIgKyB4LmNvdmVyX3JpZ2h0X3RleHQsXFxuICAgICAgICBwaWM6IHguY292ZXIgKyBcXFwiQFJlZmVyZXI9aHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXCIsXFxuICAgICAgICB1cmw6IHVybCxcXG4gICAgICAgIGNvbF90eXBlOiAnbW92aWVfMidcXG4gICAgfSk7XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeaWsOeVqlwiLFwicGF0aFwiOlwibmV3YmdtXCIsXCJydWxlXCI6XCJpZiAoTVlfVVJMLnNwbGl0KCcjJylbMV09PScxJykge1xcblxcbiAgICBsZXQgdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2MvYXBwL3RpbWVsaW5lP2FjY2Vzc19rZXk9JmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImZmlsdGVyX3R5cGU9MCZtb2JpX2FwcD1hbmRyb2lkJm5pZ2h0X21vZGU9MCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0xNjM1OTUyODQwJnNpZ249NmU0ZGY0NTQyZDM4ZWVlMmZhYmYyMTI4ODViOTBjNjQnO1xcbiAgICB0cnkge1xcbiAgICAgICAgdmFyIHNvdXJjZV9jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCwge30pKTtcXG4gICAgICAgIHZhciBkYXRlbGluZSA9IFt7XFxuICAgICAgICAgICAgXFxcImNvZGVcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs0XSxcXG4gICAgICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCLliY3ml6VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCIwXFxcIlxcbiAgICAgICAgfSx7XFxuICAgICAgICAgICAgXFxcImNvZGVcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs1XSxcXG4gICAgICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCLmmKjml6VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCIxXFxcIlxcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIFxcXCJjb2RlXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbNl0sXFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwi5LuK5pelXFxcIixcXG4gICAgICAgICAgICBcXFwiaWRcXFwiOiBcXFwiMlxcXCJcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICBcXFwiY29kZVxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzddLFxcbiAgICAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIuaYjuaXpVxcXCIsXFxuICAgICAgICAgICAgXFxcImlkXFxcIjogXFxcIjNcXFwiXFxuICAgICAgICB9LHtcXG4gICAgICAgICAgICBcXFwiY29kZVxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzhdLFxcbiAgICAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIuWQjuaXpVxcXCIsXFxuICAgICAgICAgICAgXFxcImlkXFxcIjogXFxcIjRcXFwiXFxuICAgICAgICB9XTtcXG4gICAgICAgIGlmICghZ2V0VmFyKCdpZCcpKSB7XFxuICAgICAgICAgICAgcHV0VmFyKCdpZCcsICcyJyk7XFxuICAgICAgICB9XFxuICAgICAgICBsZXQgaWQgPSBnZXRWYXIoJ2lkJyk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnMCcgPyBnZXRIZWFkKCfliY3ml6UnKSA6ICfliY3ml6UnLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnMCcpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzEnID8gZ2V0SGVhZCgn5pio5pelJykgOiAn5pio5pelJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzEnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICcyJyA/IGdldEhlYWQoJ+S7iuaXpScpIDogJ+S7iuaXpScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICcyJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnMycgPyBnZXRIZWFkKCfmmI7ml6UnKSA6ICfmmI7ml6UnLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnMycpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzQnID8gZ2V0SGVhZCgn5ZCO5pelJykgOiAn5ZCO5pelJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzQnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGxldCBsaXN0ID0gZGF0ZWxpbmVbaWRdLmNvZGUuZXBpc29kZXM7XFxuICAgICAgICBmb3IgKGxldCB4IG9mIGxpc3QpIHtcXG4gICAgICAgICAgICBsZXQgdHlwZSA9ICh4LnB1Ymxpc2hlZCA9PSAnMScgPyAn5bey5Y+R5biDJyA6ICfmnKrlj5HluIMnKTtcXG4gICAgICAgICAgICBsb2codHlwZSlcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogeC50aXRsZSxcXG4gICAgICAgICAgICAgICAgZGVzYzogJ+KAmOKAmCcgKyB0eXBlICsgJ+KAmeKAmVxcXFxuJyArIHgucHViX2luZGV4ICsgJ1xcXFxu5pu05paw5pe26Ze077yaJyArIGdldEhlYWQoeC5wdWJfdGltZSksXFxuICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyB4LnVybCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICAgICAgaW1nOiB4LmNvdmVyK1JlZmVyZXIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOidtb3ZpZV8xX3ZlcnRpY2FsX3BpYydcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZ2V0SGVhZCgn6ZO+5o6l54K45LqG77yM562J5L+u5aSNJyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt55Wq5Ymn57Si5byVXCIsXCJwYXRoXCI6XCJzeVwiLFwicnVsZVwiOlwiY29uc3QgeyBDYXRlZ29yaWVzSGVhZGVyIH0gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9jYXRlZ29yaWVzLWhlYWRlclxcXCIpXFxuXFxuLyoqXFxuICog6I635Y+W5YiG57G75pWw5o2u5rqQ77yM5Y+v5Yqo5oCB5Y+v6Z2Z5oCB77yM6Ieq5bex5qC55o2u5a6e6ZmF5oOF5Ya15aSE55CGXFxuICogaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2FuaW1lL2luZGV4L1xcbiAqL1xcbmxldCBtQ2F0ZWdvcmllcyA9IHt9XFxubGV0IGNhdEluVmFyID0gZ2V0VmFyKE1ZX1JVTEUudXJsICsgXFxcIiNjYXRlZ29yaWVzXFxcIiwgJycpXFxuaWYgKGdldFZhcihNWV9SVUxFLnVybCArIFxcXCIjY2F0ZWdvcmllc1xcXCIsICcnKSkge1xcbiAgICBtQ2F0ZWdvcmllcyA9IEpTT04ucGFyc2UoY2F0SW5WYXIpXFxufSBlbHNlIHtcXG4gICAgbGV0IGNhdFVybCA9ICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYW5pbWUvaW5kZXgvJ1xcbiAgICBsZXQgY2F0U3JjID0gcmVxdWVzdChjYXRVcmwpXFxuICAgIC8vIGxvZyhjYXRTcmMpXFxuICAgIGxldCBjYXRSZWdleCA9IC93aW5kb3dcXFxcLl9fSU5JVElBTF9TVEFURV9fPSguKj8pO1xcXFwoZnVuY3Rpb25cXFxcKFxcXFwpXFxcXHsvXFxuICAgIGlmIChjYXRSZWdleC50ZXN0KGNhdFNyYykpIHtcXG4gICAgICAgIC8vIGxvZyhSZWdFeHAuJDEpXFxuICAgICAgICBsZXQgY2F0ZWdvcnkgPSBKU09OLnBhcnNlKFJlZ0V4cC4kMSlcXG4gICAgICAgIGxldCBtRmlsdGVycyA9IGNhdGVnb3J5LmZpbHRlcnM7XFxuICAgICAgICAvLyBsb2cobUZpbHRlcnMpXFxuICAgICAgICBtRmlsdGVycy5tYXAoZmlsdGVyID0+IG1DYXRlZ29yaWVzW2ZpbHRlci5rZXldID0gZmlsdGVyLmxpc3QpXFxuICAgICAgICBsZXQgb3JkZXJzID0gY2F0ZWdvcnkub3JkZXJzXFxuICAgICAgICBsZXQgbU9yZGVycyA9IFtdXFxuICAgICAgICBvcmRlcnMubWFwKG9yZGVyID0+IHtcXG4gICAgICAgICAgICBsZXQgbU9yZGVyID0ge31cXG4gICAgICAgICAgICBtT3JkZXIubmFtZSA9IG9yZGVyLnRpdGxlXFxuICAgICAgICAgICAgbU9yZGVyLnZhbHVlID0gb3JkZXIua2V5XFxuICAgICAgICAgICAgbU9yZGVycy5wdXNoKG1PcmRlcilcXG4gICAgICAgIH0pXFxuICAgICAgICAvLyBsb2cobU9yZGVycylcXG4gICAgICAgIG1DYXRlZ29yaWVzWydvcmRlciddID0gbU9yZGVyc1xcbiAgICB9XFxuICAgIHB1dFZhcihNWV9SVUxFLnVybCArIFxcXCIjY2F0ZWdvcmllc1xcXCIsIEpTT04uc3RyaW5naWZ5KG1DYXRlZ29yaWVzKSlcXG59XFxubGV0IGtleXMgPSBPYmplY3Qua2V5cyhtQ2F0ZWdvcmllcylcXG4vLyBsb2cobUNhdGVnb3JpZXMpXFxuLy8gbG9nKGtleXMpXFxuLyoqXFxuICog57uE5ZCI5b2T5YmN5YiG57G76ZO+5o6lXFxuICovXFxubGV0IHRydWVfdXJsID0gZ2V0VmFyKE1ZX1JVTEUudXJsLCBNWV9VUkwpXFxudHJ1ZV91cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9zZWFzb24vaW5kZXgvcmVzdWx0PydcXG5mb3IgKGxldCBpdCBvZiBrZXlzKSB7XFxuICAgIGxldCBjYXRfdXJsID0gZ2V0VmFyKE1ZX1JVTEUudXJsICsgXFxcIiNcXFwiICsgaXQsIGl0ID09PSAnb3JkZXJzJyA/ICczJyA6ICctMScpXFxuICAgIHRydWVfdXJsICs9IChjYXRfdXJsID8gJyYnICsgaXQgKyAnPScgKyBjYXRfdXJsIDogJycpXFxufVxcbi8vIGxldCBwYWdlID0gMVxcbmNvbnN0IHBhZ2UgPSBNWV9VUkwuc3BsaXQoJyMnKVsxXVxcbmlmKHBhZ2U9PTEpe1xcbiAgICBcXG59XFxudHJ1ZV91cmwgPSB0cnVlX3VybCArXFxuICAgICcmc3Q9MSZzb3J0PTAmc2Vhc29uX3R5cGU9MSZwYWdlc2l6ZT0yMCZ0eXBlPTEnICtcXG4gICAgJyZwYWdlPScgKyBwYWdlXFxuLy8gbG9nKHRydWVfdXJsKVxcblxcbmNvbnN0IGVtcHR5ID0gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuXFxuQ2F0ZWdvcmllc0hlYWRlclxcbiAgICAuc2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXkoJ25hbWUnLCAndmFsdWUnKVxcbiAgICAuZ2V0KGQsIG1DYXRlZ29yaWVzLCBwYWdlKVxcbi8qKlxcbiAqIOiOt+WPluW9k+WJjeWIhuexu+mhtemdoua6kOeggVxcbiAqL1xcbnRyeSB7XFxuICAgIHZhciBzeWxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodHJ1ZV91cmwsIHt9KSkuZGF0YS5saXN0O1xcblxcbiAgICAvKipcXG4gICAgICog5YiX6KGo5pWw5o2u5rqQXFxuICAgICAqL1xcbiAgICBmb3IgKGxldCBkYXRhIG9mIHN5bGlzdCkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZGF0YS50aXRsZSAvKisgJy8nICsgZGF0YS5pbmRleF9zaG93Ki8gLFxcbiAgICAgICAgICAgIGRlc2M6IGRhdGEub3JkZXIsXFxuICAgICAgICAgICAgaW1nOiBkYXRhLmNvdmVyK1JlZmVyZXIsXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JyArIGRhdGEubGluayArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzMnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn0gY2F0Y2ggKGUpIHt9XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt5Yqo5oCB5YiG57G75qih5Z2XXCIsXCJwYXRoXCI6XCJjYXRlZ29yaWVzLWhlYWRlclwiLFwicnVsZVwiOlwianM6XFxuLyoqXFxuICog5L2/55So6K+05piO77yaXFxuICogMS7mj5DliY3lu7rnq4vlpb0g5YiG57G75omA5bGe57G75Z6L5ZKM5YiG57G75YiX6KGoIOeahOWvueW6lOWFs+ezu++8jOWNsyBnZXQg5Ye95pWw5Lit55qEIGNhdGVnb3JpZXNcXG4gKiAyLuiuvue9ruWtkOWIhuexu+aVsOaNrueahCBrZXnvvIzosIPnlKggc2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXkodGl0bGVLZXksIHVybEtleSlcXG4gKiAzLueEtuWQjuiwg+eUqCBDYXRlZ29yaWVzSGVhZGVyLmdldChsYXlvdXQsIGNhdGVnb3JpZXMsIHBhZ2UpXFxuICpcXG4gKiDmlK/mjIHpk77lvI/osIPnlKjvvIzkuIDlj6Xor53ljbPlj6/osIPnlKjnlJ/miJDliIbnsbvvvIzljbPvvJpcXG4gKiBDYXRlZ29yaWVzSGVhZGVyXFxuICogICAgLnNldFN1YkNhdGVnb3JpZXNJdGVtS2V5KHRpdGxlS2V5LCB1cmxLZXkpXFxuICogICAgLmdldChsYXlvdXQsIGNhdGVnb3JpZXMsIHBhZ2UpXFxuICpcXG4gKiBAdHlwZSB7e3NldFN1YkNhdGVnb3JpZXNJdGVtS2V5OiBDYXRlZ29yaWVzSGVhZGVyLnNldFN1YkNhdGVnb3JpZXNJdGVtS2V5LCBnZXQ6IENhdGVnb3JpZXNIZWFkZXIuZ2V0LCBjYXRlZ29yaWVzS2V5OiB7dGl0bGU6IHN0cmluZywgdXJsOiBzdHJpbmd9fX1cXG4gKi9cXG5sZXQgQ2F0ZWdvcmllc0hlYWRlciA9IHtcXG4gICAgY2F0ZWdvcmllc0tleToge1xcbiAgICAgICAgc3ViX2NhdGVnb3JpZXM6ICcnLFxcbiAgICAgICAgdGl0bGU6ICcnLFxcbiAgICAgICAgdXJsOiAnJyxcXG4gICAgfSxcXG4gICAgLyoqXFxuICAgICAqIDEu6K6+572u5LuO5YiG57G75YiX6KGo5Lit5ou/55qE5a2Q5YiG57G755qE5pWw5o2uIGtlee+8jFxcbiAgICAgKiAgIOagueaNriBrZXkg5ou/5Yiw5pWw5o2u5ZCO77yMXFxuICAgICAqICAg5Lya6Ieq5Yqo6LWL5YC857uZIHNjcm9sbF9idXR0b24g55qEIHsgdGl0bGU6IGl0ZW1bdGl0bGVLZXldLCB1cmw6IGl0ZW1bdXJsS2V5XSB9XFxuICAgICAqXFxuICAgICAqIEBwYXJhbSB0aXRsZV9rZXkgdGl0bGUg55qEIGtleVxcbiAgICAgKiBAcGFyYW0gdXJsX2tleSB1cmwg55qEIGtleVxcbiAgICAgKi9cXG4gICAgc2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXkgOiAodGl0bGVfa2V5LCB1cmxfa2V5KSA9PiB7XFxuICAgICAgICBDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkudGl0bGUgPSB0aXRsZV9rZXlcXG4gICAgICAgIENhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS51cmwgPSB1cmxfa2V5XFxuICAgICAgICByZXR1cm4gQ2F0ZWdvcmllc0hlYWRlcjtcXG4gICAgfSxcXG4gICAgc2V0U3ViQ2F0ZWdvcmllc0tleTogKHN1Yl9jYXRlZ29yaWVzX2tleSkgPT4ge1xcbiAgICAgICAgQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnN1Yl9jYXRlZ29yaWVzID0gc3ViX2NhdGVnb3JpZXNfa2V5XFxuICAgICAgICByZXR1cm4gQ2F0ZWdvcmllc0hlYWRlcjtcXG4gICAgfSxcXG4gICAgLyoqXFxuICAgICAqIDIu6I635Y+W5YiG57G75aS06YOoXFxuICAgICAqXFxuICAgICAqIEBwYXJhbSBsYXlvdXQg5b2T5YmN55WM6Z2i77yM5Y2z5bi455So55qEIGQucHVzaCDnmoQgZFxcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcmllcyDliIbnsbvmiYDlsZ7nsbvlnovlkozliIbnsbvliJfooajnmoTlr7nlupTlhbPns7vooajvvIxcXG4gICAgICogICAgICAgIOWmgu+8mlxcbiAgICAgKiAgICAgICAge1xcbiAgICAgKiAgICAgICAgICAgXFxcIuW5tOS7vVxcXCI6IFt7IFxcXCJuYW1lXFxcIjogXFxcIjIwMjFcXFwiLCBcXFwidmFsdWVcXFwiOiBcXFwiMjAyMVxcXCIgfSwgeyBcXFwibmFtZVxcXCI6IFxcXCIyMDIwXFxcIiwgXFxcInZhbHVlXFxcIjogXFxcIjIwMjBcXFwiIH0uLi5dLFxcbiAgICAgKiAgICAgICAgICAgXFxcIuaOkuW6j1xcXCI6IFt7IFxcXCJuYW1lXFxcIjogXFxcIueDreW6plxcXCIsIFxcXCJ2YWx1ZVxcXCI6IFxcXCJob3RcXFwiIH0sIHsgXFxcIm5hbWVcXFwiOiBcXFwi5pe26Ze0XFxcIiwgXFxcInZhbHVlXFxcIjogXFxcInRpbWVcXFwiIH0uLi5dLFxcbiAgICAgKiAgICAgICAgfVxcbiAgICAgKiBAcGFyYW0gcGFnZSDpobXnoIFcXG4gICAgICogQHBhcmFtIHVybExpc3RlbmVyIOmineWkluWkhOeQhiBidXR0b24g55qEIHVybO+8jOmcgOimgSByZXR1cm5cXG4gICAgICovXFxuICAgIGdldDogKGxheW91dCwgY2F0ZWdvcmllcywgcGFnZSwgdXJsTGlzdGVuZXIpID0+IHtcXG4gICAgICAgIC8vIGxvZyhjYXRlZ29yaWVzKVxcbiAgICAgICAgLy8g5YiG57G75omA5bGe57G75Z6L55qE5YiX6KGo77yM5aaC77yaWyBcXFwi5bm05Lu9XFxcIiwgXFxcIuaOkuW6j1xcXCIgXVxcbiAgICAgICAgbGV0IGNhdGVnb3J5X25hbWVzID0gT2JqZWN0LmtleXMoY2F0ZWdvcmllcylcXG4gICAgICAgIGxldCB0eXBlcyA9IFtdXFxuICAgICAgICAvLyDmoLnmja7lr7nlupTlhbPns7vooajmi7/liIbnsbvliJfooahcXG4gICAgICAgIGNhdGVnb3J5X25hbWVzLm1hcChjYXRlZ29yeV9uYW1lID0+IHtcXG4gICAgICAgICAgICAvLyDov5nph4zkvJrmi7/liLAg5bm05Lu9IOaOkuW6jy4uLiDlhbbkuK3kuIDkuKpcXG4gICAgICAgICAgICB0eXBlcy5wdXNoKGNhdGVnb3JpZXNbY2F0ZWdvcnlfbmFtZV0pO1xcbiAgICAgICAgICAgIC8vIOi/memHjOS4i+mdouWvuSB0eXBlcyDnmoTlgLzov5vooYzlpITnkIZcXG4gICAgICAgIH0pXFxuICAgICAgICBjYXRlZ29yaWVzID0gdHlwZXM7XFxuICAgICAgICBsZXQgaW5pdF9jYXRlID0gW11cXG5cXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjA7IGkrKykge1xcbiAgICAgICAgICAgIGluaXRfY2F0ZS5wdXNoKFxcXCIwXFxcIilcXG4gICAgICAgIH1cXG5cXG4gICAgICAgIGNvbnN0IGNhdGVfdGVtcF9qc29uID0gZ2V0VmFyKE1ZX1JVTEUudGl0bGUsIEpTT04uc3RyaW5naWZ5KGluaXRfY2F0ZSkpXFxuICAgICAgICBjb25zdCBjYXRlX3RlbXAgPSBKU09OLnBhcnNlKGNhdGVfdGVtcF9qc29uKVxcblxcbiAgICAgICAgaWYgKHBhcnNlSW50KHBhZ2UpID09PSAxKSB7XFxuICAgICAgICAgICAgLyoqXFxuICAgICAgICAgICAgICog6YGN5Y6G56ysIGluZGV4IOWxguWIhuexu1xcbiAgICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIGNhdGVnb3JpZXMuZm9yRWFjaCgoY2F0ZWdvcnksIGluZGV4KSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCBzdWJfY2F0ZWdvcnlfbmFtZSA9IGNhdGVnb3J5X25hbWVzW2luZGV4XVxcbiAgICAgICAgICAgICAgICBsZXQgc3ViX2NhdGVnb3JpZXNfa2V5ID0gQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnN1Yl9jYXRlZ29yaWVzXFxuICAgICAgICAgICAgICAgIGxldCBzdWJfY2F0ZWdvcmllcyA9IHN1Yl9jYXRlZ29yaWVzX2tleSA/IGNhdGVnb3J5W3N1Yl9jYXRlZ29yaWVzX2tleV0gOiBjYXRlZ29yeTtcXG4gICAgICAgICAgICAgICAgLy8gbG9nKGNhdGVnb3J5KVxcbiAgICAgICAgICAgICAgICAvKipcXG4gICAgICAgICAgICAgICAgICog5Zyo56ysIGluZGV4IOWxguWIhuexu+S4remBjeWOhuivpeWxguaJgOacieWtkOWIhuexu1xcbiAgICAgICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXMuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBpdGVtW0NhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS50aXRsZV1cXG4gICAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSBlc2NhcGUoaXRlbVtDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkudXJsXSlcXG4gICAgICAgICAgICAgICAgICAgIGlmICh1cmxMaXN0ZW5lcikgdXJsID0gdXJsTGlzdGVuZXIub25EZWFsKGl0ZW0sIHN1Yl9jYXRlZ29yeV9uYW1lLCB1cmwpXFxuICAgICAgICAgICAgICAgICAgICBsYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGtleS50b1N0cmluZygpID09PSBjYXRlX3RlbXBbaW5kZXhdID8gJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjogIzA5OEFDMVxcXCI+JyArIHRpdGxlICsgJzwvc3Bhbj48L2I+JyA6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCh1cmwpLmxhenlSdWxlKChwYXJhbXMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmNhdGVfdGVtcFtwYXJhbXMuaW5kZXhdID0gcGFyYW1zLmtleS50b1N0cmluZygpXFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihNWV9SVUxFLnRpdGxlLCBKU09OLnN0cmluZ2lmeShwYXJhbXMuY2F0ZV90ZW1wKSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKE1ZX1JVTEUudXJsICsgXFxcIiNcXFwiICsgcGFyYW1zLnN1Yl9jYXRlZ29yeV9uYW1lLCBpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZV90ZW1wOiBjYXRlX3RlbXAsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBrZXksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IHBhZ2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yeV9uYW1lOiBzdWJfY2F0ZWdvcnlfbmFtZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICBsYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICB9XFxufVxcbiQuZXhwb3J0cy5DYXRlZ29yaWVzSGVhZGVyPUNhdGVnb3JpZXNIZWFkZXJcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaIkeeahOaUtuiXjy3op4bpopFcIixcInBhdGhcIjpcInZpZGVvXCIsXCJydWxlXCI6XCJ2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG52YXIgdmlkZW9fdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YzL2Zhdi9mb2xkZXIvc3BhY2U/YWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnVwX21pZD0nICsgZ2V0VmFyKCdzdGFyaWQnKSArICcmc2lnbj0wYTUxYjc3MmY4MWRjNzgxMmNkNjYyMjZhODMyNTM4Myc7XFxudmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodmlkZW9fdXJsKSkuZGF0YTtcXG5mb3IgKHZhciB4IG9mIGxpc3QpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiB4Lm5hbWUsXFxuICAgICAgICBpbWc6ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eSNcXFwiK3guaWQrXFxcIkBsYXp5UnVsZT0uanM6cHV0VmFyKCdjaGFuZ2UnLGdldFZhcignY2hhbmdlJyk9PWlucHV0LnNwbGl0KCcjJylbMV0/JzAnOmlucHV0LnNwbGl0KCcjJylbMV0pO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5bey5Yi35pawJ1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcidcXG4gICAgfSk7XFxuICAgIGlmIChnZXRWYXIoJ2NoYW5nZScpID09IHguaWQpIHtcXG4gICAgICAgIHZhciBsaXN0MiA9IHgubWVkaWFMaXN0UmVzcG9uc2UubGlzdDtcXG4gICAgICAgIGxvZyhsaXN0MilcXG4gICAgICAgIGZvciAodmFyIGEgaW4gbGlzdDIpIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogbGlzdDJbYV0udGl0bGUsXFxuICAgICAgICAgICAgICAgIGltZzogbGlzdDJbYV0uY292ZXIrUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgdXJsOidoaWtlcjovL3BhZ2UvY29sbGVjdGlvbj91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjMvZmF2L3Jlc291cmNlL2lkc++8n++8n2FjY2Vzc19rZXk9JytnZXRWYXIoJ2FjY2Vzc19rZXknKSsn77yG77yGYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzbvvIbvvIZidWlsZD02MTMwNDAw77yG77yGY19sb2NhbGU9emhfQ07vvIbvvIZjaGFubmVsPW1hc3Rlcu+8hu+8hm1lZGlhX2lkPScrbGlzdDJbYV0uaWQrJ++8hu+8hm1pZD0nK2dldFZhcignc3RhcmlkJykrJ++8hu+8hm1vYmlfYXBwPWFuZHJvaWTvvIbvvIZwbGF0Zm9ybT1hbmRyb2lk77yG77yGc19sb2NhbGU9emhfQ07vvIbvvIZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0TvvIbvvIZ0cz0nK3RzKyfvvIbvvIZzaWduPTdlMGYxYjkyZjNlZjM4MjhiMTliZTY2ODM4OTE1MDA3JyxcXG4gICAgICAgICAgICAgICAvLyBkZXNjOiBhWydtZWRpYV9jb3VudCddLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcblxcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5oiR55qE5pS26JePLei/veeVqlwiLFwicGF0aFwiOlwiZmFuanVcIixcInJ1bGVcIjpcInZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciB2aWRlb191cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9hcHAvZm9sbG93L3YyL2Jhbmd1bWk/YWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYwOTEwMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnBuPScgKyBwYWdlbnVtICsgJyZwcz0yMCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjkuMSUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZzdGF0dXM9MiZ0cz0nICsgdHMgKyAnJnNpZ249MTYyNGY5NTk4ZGNhMDZlYjEyOTUzNGU0NzY1ZjliMWEnO1xcbnRyeSB7XFxuICAgIHZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHZpZGVvX3VybCkpLnJlc3VsdC5mb2xsb3dfbGlzdDtcXG4gICAgZm9yICh2YXIgeCBvZiBsaXN0KSB7XFxuICAgICAgICB2YXIg57G75Z6LID0geC5pc19maW5pc2ggPT0gMSA/IFxcXCLlroznu5NcXFwiIDogXFxcIui/nui9vVxcXCI7XFxuICAgICAgICB2YXIg5qCH6K+GID0geFsnc2Vhc29uX3R5cGVfbmFtZSddICsgXFxcIiB8IFxcXCIgKyB4LmJhZGdlO1xcbiAgICAgICAgdmFyIGRlc2MgPSB4LnByb2dyZXNzID8g5qCH6K+GICsgXFxcIlxcXFxu4oCc4oCcXFxcIiArIHgubmV3X2VwLmluZGV4X3Nob3cgKyBcXFwi4oCd4oCdXFxcXG5cXFwiICsgeC5wcm9ncmVzcy5pbmRleF9zaG93IDog5qCH6K+GICsgXFxcIlxcXFxu4oCc4oCcXFxcIiArIHgubmV3X2VwLmluZGV4X3Nob3cgKyBcXFwi4oCd4oCdXFxcXG5cXFwiO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogeC50aXRsZSArIFxcXCJcXFxcdFxcXCIgKyBnZXRIZWFkKOexu+WeiyksXFxuICAgICAgICAgICAgaW1nOiB4Lm5ld19lcC5jb3ZlciArIFJlZmVyZXIsXFxuICAgICAgICAgICAgZGVzYzogZGVzYyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1cXFwiICsgeC51cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYydcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufSBjYXRjaCAoZSkge31cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaIkeeahOaUtuiXjy3ov73liadcIixcInBhdGhcIjpcImRzalwiLFwicnVsZVwiOlwidmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxudmFyIHZpZGVvX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL2FwcC9mb2xsb3cvdjIvY2luZW1hP2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MDkxMDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZwbj0nICsgcGFnZW51bSArICcmcHM9MjAmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi45LjElMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0Qmc3RhdHVzPTImdHM9JyArIHRzICsgJyZzaWduPTE2MjRmOTU5OGRjYTA2ZWIxMjk1MzRlNDc2NWY5YjFhJztcXG50cnkge1xcbiAgICB2YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh2aWRlb191cmwpKS5yZXN1bHQuZm9sbG93X2xpc3Q7XFxuICAgIGZvciAodmFyIHggb2YgbGlzdCkge1xcbiAgICAgICAgdmFyIOexu+WeiyA9IHguaXNfZmluaXNoID09IDEgPyBcXFwi5a6M57uTXFxcIiA6IFxcXCLov57ovb1cXFwiO1xcbiAgICAgICAgdmFyIOagh+ivhiA9IHhbJ3NlYXNvbl90eXBlX25hbWUnXSArIFxcXCIgfCBcXFwiICsgeC5hcmVhc1swXS5uYW1lO1xcbiAgICAgICAgdmFyIGRlc2MgPSB4LnByb2dyZXNzID8g5qCH6K+GICsgXFxcIlxcXFxu4oCc4oCcXFxcIiArIHgubmV3X2VwLmluZGV4X3Nob3cgKyBcXFwi4oCd4oCdXFxcXG5cXFwiICsgeC5wcm9ncmVzcy5pbmRleF9zaG93IDog5qCH6K+GICsgXFxcIlxcXFxu4oCc4oCcXFxcIiArIHgubmV3X2VwLmluZGV4X3Nob3cgKyBcXFwi4oCd4oCdXFxcXG5cXFwiO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogeC50aXRsZSArIFxcXCJcXFxcdFxcXCIgKyBnZXRIZWFkKOexu+WeiyksXFxuICAgICAgICAgICAgaW1nOiB4Lm5ld19lcC5jb3ZlciArIFJlZmVyZXIsXFxuICAgICAgICAgICAgZGVzYzogZGVzYyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1cXFwiICsgeC51cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYydcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufSBjYXRjaCAoZSkge31cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaIkeeahOaUtuiXjy3mlLbol49cIixcInBhdGhcIjpcImNvbGxlY3Rpb25cIixcInJ1bGVcIjpcImpzOnZhciByZXMgPSB7fTt2YXIgZCA9IFtdO1xcbnZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciBjb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KE1ZX1VSTCkpLmRhdGE7XFxudmFyIHJlc291cmNlcyA9ICcnO1xcbmZvciAodmFyIHggb2YgY29kZSl7XFxuICAgIHZhciByZXNvdXJjZXMgPSByZXNvdXJjZXMgKyB4LmlkICsgJzonICsgeC50eXBlICsgJywnO1xcbn1cXG52YXIgcmVzb3VyY2VzID0gcmVzb3VyY2VzLnNsaWNlKDAscmVzb3VyY2VzLmxlbmd0aC0xKTtcXG52YXIgdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YzL2Zhdi9yZXNvdXJjZS9pbmZvcz9hY2Nlc3Nfa2V5PScrZ2V0VmFyKCdhY2Nlc3Nfa2V5JykrJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGUmbWlkPScrZ2V0VmFyKCdzdGFyaWQnKSsnJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZyZXNvdXJjZXM9JytyZXNvdXJjZXMrJyZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9Jyt0cysnJnNpZ249N2UwZjFiOTJmM2VmMzgyOGIxOWJlNjY4Mzg5MTUwMDcnO1xcbnZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCx7fSkpLmRhdGE7XFxuZm9yICh2YXIgeSBvZiBsaXN0ICl7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6eS50aXRsZSxcXG4gICAgaW1nOnkuY292ZXIsXFxuICAgIGRlc2M6J+aSreaUvumHjzogJyt5LmNudF9pbmZvLnBsYXkrJyAg5by55bmVOiAnK3kuY250X2luZm8uZGFubWFrdSxcXG4gICAgdXJsOidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIHkuYnZpZCArJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICBjb2xfdHlwZTonbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxuICAgIH0pO1xcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt55m75b2VXCIsXCJwYXRoXCI6XCJsb2dpblwiLFwicnVsZVwiOlwiZXZhbFByaXZhdGVKUygnTGxlMG5heWRzelEyNTBJaE95ZFJBMWtKcjBYbk5hL3JGbHNqaUVLWlc3cmV0WkZldUhOSmxQS1dNRTRhOUJjZkI5QjBoVGF3WU04ditoRXd6RjNSVk4yc1IvaUg4TnZ5SFk2dXpLTmdqTWJKODVHTEVnMEp5alBJdGZHR1Jnd0pGVVZOTDFJTGVSTmJhZTM5WFZyb0Q3V0tVS0JQZnY3SHdxajJIWUZINXVRTHBPVlp2RzRVY1lPekFzN2o4TmlhUEVVSk1TNDI0QmtibnMxTmY2RklEWGxma05JSXNXQkhXUmRPNm1wNzNWeTJ2dTVoZzFhRzBBVmVrNStwUWNxYWt4RU05Y1dHZ0NKQzVtS3BVaVpTRXRQOTJzS0E5U0srL05Ic3FmMTNDT3RRUmlpeDZnRmh5RmhMZXo3K0dwdVNiTEgxM2sxRkRVWmtpbFk3T0JQOHlDWlArWW00MVloaS95SVR4M0VsTG1namlCZXhqMHFUTGpyS0lYbng0RERYaWlwU3cvWXBVTmRxdGdVWEhOaTk4YTdjR3RMRSs5NUFxazJEY1YvSDNPRzVocHN3U0hDMitpbHJSTFA4K1R5TFRvZ3JGVWFKWU14T21yV3dBalVNMUZmTHMvTVN4NjAxVy91ZUZEQW1oTy9aWm9VWndmM01ZYmh0a3YrQnhneUcvNzZXZkRBUWJHQVJKOTROYWpaOXB6enZjdVhJRXJncjFEL1B1Z0ZtaE9XSGsvTVNkRkRsQnFNRHBFOHg5NVlqNnRMNHdGc3cyT2FHT29lOE1oc25pRllFRjhCcU1QUmVkMHo3Y0JDNFJHeEQ1TmdWMUZLV0hBUGdaUFlGS2pnTzlnbE5KdjcxSVNnSW85U0tSQkVqS21FNGNFdmIva0pFT0NFRExqQlFyVnNPVDExT3VaY1p1ZENaRU9Uem1yaUdIZFBmZmxLQnJGc0VoN3lsVXRQWllFY0VwQ3kxV2gxZTFZeE5LWmhiT3VrMDJ3dEE3RmZITlAwRHFJWjgzRjhSRkczOFJZMzZmRkkvL3pMcENNRU04VVhoemxqdzVxb1NQdnpmaGVSMS9HRjNNampGZnN6WFozVUN2Y0JnMndDMU9rQVZLcDB1U2NHTG1lcTZRYUViUU4ydW56MDJwcEZWN2VLOUg3M3lEMUVFbE5LQ1FDa2ttQjZkeHBxdGtWNkpoUnN4aWdNY2VYbjRkVUd0K0F0ZmtBMkt2eW1lNXJrdXBwQmNlRnZNZmhJRnN4WUdSMlVFOStveDZrZmxZQnRQcDU1UTZ1bElLeWRocms1VEFUek0yaXY5Zjl4cVlwSklJQm50SVZJb2YzT2FuSEpXckV0eFEyYzFnY3ZPdC9XYkUvbGtOZHJRMzNJT1lyT0ZiMmNiWjRNL2xoNW5WdHppanZwWWUwTTZPNXYrSW9aTXBPaVZxc2U3eU5pWGhBSHhFMDV6aWlWY2o5cGl6cFd6SWViek80ZytLa2FxSnJCUzZ5ejVRWG1pRmNXVkVTSUlJb3ZZSGVDS1JETGdCb2pxSmRUZUlYYVIvS2U0OXN0MDNYMkhSdzJyMEIwTW5pZjh0RVBkYTFnbGNCTHNURVpFVzJoYmtkdG9FaWNJUkZ2a2k1NXg5SFF0UVQ0enAyVFdwM2F1N1RJendEaXRDVWJiRE9WMXpGZ1NIaDA4NzNMbHlCSzRLOVEvejdvQlpvVGxoNVB6RW5SUTVRYWpBNlJQTWZlV0krclMrTUJiTU5qbWhqcUh2REliSjRpQnAreFhoamMrMnJ2aURhQU95RkM5dWx2a3h6YStUVzRNYXQwaHh0WURySWwrRHBvdWVqeUlNVFc4RHN2WHhQWENBUWJtd0dsREVBZk9peXF0cUxROUhmOGdEWEUzNVE3YXkweUFCRWVqMXFLV2dyai9ZbkJiWS9kWUFPUFNIcG1sZGRGTEpuS3BBcGRNWHZZQnN3cldGMENSUlNiMXM3Q1pSZ01mT1F6SzZJejYvdGVoYXNtT3M3TWw5dy9IcG41bktoMTArbjBpR1hNdng1SUkrU0dwb0x1ZUN0Um1KN1VWVkN0REc2eGV2eFlNbTA0c0FHR0dKYUNEQWhHSDhpY2JoSUUyYitvcURGRXBtVTBlWTdSdEc3OWhQaEwrZ1hZT3lZTlV2SnFlamxiWjEvT2R2TDVuWXk2bTMwR3dsM3o3dzVlc2xaQ1VBMGthUnM1a21VT0x2TDBRUVBENzRmYWdBZHFHc0xIVUdEV2I0QnpDTEYyTVlMSHkrRHNja0szRllKTXcwVTVxTjdMNzAwc1ZTYWxmNnRLOTZkV3F6bjVlSXJld2YxaUdvODNJY3d6OW84MUptdUtBMUxwSVNTOTA5OG53QXgxcVAxRnpQY3dJaFRTVnVSOCtBb28xcDNEaTBXTHdOS1FOT0k4eDc1RG1hRTZCTFBpRGthRExLSnljK2J6WDBoSUMzc1BiMitkZnZsa3NDbksyMmNHaEsyNUZzOU9GUjNyRi9WRlZTUmJERzcrN0FxT2tFMjRib2tFVWpkOG5TNUhqcXAzRC91ayswWHpCeTkyMjJYNmJKbUpod0ZsS3o0NlRCVlhlenptM2R6UVc3T2wrME9xZi9FeDJBWStyd1ArTTZ4RlJIVVgvajJHY0dhNW1oYkpVelJSQmRPNUlwclUyTnM2SHRTWEM5SXFjeFcxVmw1YkNPYk1HOStIdnZ6dTBzRzdBV05ndVpKQ3N4a0pYaGhnd2YyR0I2RlB1NitvRlJ6NkQ0QTA1c3NEc0xMVnltWjVjZ1RiRGNiZXExOVVtaVlhbTNQbjdxV0ljanVoOU9zTjR0aUZUcnJVRVBaSVJYOVhrMFVHRFlmYWJRMXBYZnhNLyt5U2g4cTdkd25WSi9nN2x1aWhHT2VlTndIWEFGQXk0bjNhY1BIMlhCYy9tc3g1WEtnSXJlT1JNVlkvY0ZiOUtjbTNvV1p6eks2K0hTUDg1dGtGS0ttNTVoZzhNeHdpNUl4OVJRRS9wR0F4MWNzb3ZTcDNqUlAwaDYybzZOaEZrdENES1d6akVVbDlibWEyOGZaeWlZNGRYQkVzSEJPcEt2QnpBQTBsUmtlelRuRXZ2WHM5WjU1VXJBYThaaEFGdXg2WkVOdzRjTVRJdVNrVmZ3K1YvVS9tb21sdEo5dkdQZ2lxYjVuWmw5S3U3ZDBST1YxNUozUUFzYmhPeFQ2U2drSVZ1Z3VWYVRWUmNqMEhXK21NTllLYlF5bnJOUkFxS0RlSnF1VnhjOUhsUE02TDhxUG5aSVdiYkhBZlVmR2J3MGxSbHdTdU9wRjcrQTJXSkxaNFh6U2dIYmNNWGt1bHpQUERQOS9jYVJJQjhlMlZrekVaU1BuVWlaQXBXUDZ3V3VzSHVCMzlXQU03OCtOQmk0QnAybXhXakxLSExXUU1EZUlYWGhkeGVjSzVxVVVmWUxnSVRpaDlEZUZwZ0xOV2NCTEdRRmJkU05rSjNOV3BjRzU2RGFqREl1TFVhOGswMGk5NGNKd0F6TWtKQnhOSmI1ZWhCUmtWdldYb3NtdEpCTWRSZjZORWJzVjl1OHZwWmpORW9nVWtubWx0Sjl2R1BnaXFiNW5abDlLdTdkMVpxVFB6b3B3WmhoK2l0RHBVYjBMcjI3YzV3TkFBRWpycGhPcWZlME5qMzlDTlcwTEg0V3hqZjJsd2x4TXRPS1IxSFFML0NQdzUxeXlZSi9MVnJReitpZjNpSUJOVTRuQ2dPYnVXNUpVTFR2c1FzczJSbmVMQ3c2cnBoeGdNc2Rhd01FZ1o5cUNyQ003eVRNMEV5bEZ4ZmppSVpLcWJLMTBCYWUyTm9IRCtHdW9VS0FRcDVTdTRBcVhTZktMem14NGhXYm1TaU5WN21DQi9yZHcxeWJzUHZnQUZjRzg1TjUza05qemNQdmJLTE9PeEhYSFlWV0NsQm1KcHJ3SnRIQTZCMVdacEdXUng1TS9nRG1zR3pWUm1WdUJEdm1TQVpNd0llVnI1YnpERTg2bTBOcWNtZ1ROZXB4d3FCK3lCQnA1S3pkNDJFQVFodDJFSzVUMnpNeHZnVHplUy96M0svcTVsUkhsMXpLMEovc1F3THg5ejhsTVZnOVJCYkFlL2ViMjBWb3d6Y3FQZGUvcWkwakhNd0djTWFDOWR1eVc1NndsR09zbmtiZXlCUS9QZlJTU3JrVUcvdmNhQ2JUYTRJVDg0Wnp0cE5RUnZiZVVuSUFvUGtXL2VaNndPVWlhNEpzeWF3OTlXYTgrRTRMakRtWjB6UmhuU0hnVXlDL3liOXJaVDJsRTFTN0pCSWs3WVpQWHlBMDBhMkxnS0ZHODhZelY4MGhpK0FWVHdSWlBrOXdsTzdnUlMyTlIvNTc3bkl4RzBIMjJsbEZzY21OMUxoSTkxRkQyVmJWWGJxaUtVVmpKY1ZuNi9zUWNUd3d6N3R2QjZ6OXlNbXJEbHlDTXZ5VWR3R0k2dXI5RWFjNHFXNkVVejF4SDJ5NVRJOEFmaHh4eE9yQVFabkVSYlRNSUNkZktHUUdESmUvVGRLUktRdGdicGI1TWMydmsxdURHcmRJY2JXQTZ6RFB1MjhIclAzSXlhc09YSUl5L0pSTmR2c1g2RGxLZFl3TG5GVVFqMnQ2SFFIaHRqa09saSt0Y09uUmxqQWEzMm9yZng3OVZPdXZpTnErbU9xUjFOK0NHUkYyYm1LVTFrcERBcng0VnpEZFdKZGRFcmErT2tGbk9ORUd6NFllY3dFUlpVZDc3K25uUEwyTW9DTW1FRFljdlhJczJFdVpIZGtUZm4xaXdlb2dEMDFRZndxWkhORjhIdmxCV01VL2Y2RWR6WEtMcUlnUksyaXBBTUZnS1J2bFJiYXNIUGxSdXNTZzBwUk5WVUNRUjVlYk55eHFGWGhMYzIrb2VkSzhKRW9Mb01FUTVEM2ZKYXJZZ2Q5ank2Zk9pQmtHOEM5SUlUQjhteXR5eXN3Y0t0d2h5MS8xV2JITzdDei9SZHFWY3lKMzRBMnEyWjN5dWkxUTVhMW9QbU8wTldMZm55YTQrc1JOUXJrc2lRNEh1TzI2R2FaVVI4a1d6RjFPeGRkdWFQVnhJTk1iNjU4Y3NYVnVER1o1TVlwV2RiY2tGVzZlWVBGaXUreFNEQy9lRHpzWEFINkZMM1BWOE9wRFVQQm1wVGVrMlhYZmVLZHFVMnBTOW03U0NpQ0I1dTJxYmlLQzJjOXZCVjI0TTZzOFJhNGhtZCtQYWo0RlR5dHYzNlNIMWJMSzh0STFsWnord2lmKzlaSUFkVDIyY3I1N2pxK3lwTVBlTjF5NTlEcXY3cHNoRCtKVEk4VWdkUzRRVmxDd0YxN1lydkpIUEQ0MktGRWJnUVkrKzBqMGRhbHlIWWNnZjU4UXlBbDkrbm5CSlpWVVZsSWlsUTZxRVBzSHpiNnJNYlY2N1lTcVpIY0x2ZkNUb2JSaTRwYUJDRVV4Y3lOTFF2SlNLY0twWkF1ZjIrOEs4MXpLeXozTWRFY3VydHNobnN4UUErb2NEQzJPeTU4aXlDSzZkU2pJclRQaUZGUTgwQm1wYTJEM2xzY0xWbVk1SVI0b2s5dGdkQmVYSTZYWjh1Mms5S0xKV2QrRnFzZjhZT1FHeE82RUgyY0NLTzJ1MCszRi9HT3o2Ky9PcnV0TGFocVIybWtWR0lkSkt1WGVZR3NabkRCZ2VKZ0JKWjhySUhDMEMwTldMTHhpakxMRkpmemkwcHpHSVJIVzRMQUpBaE8vZkxwU0w1MFJscmhNWXZiUXM0b1p1MXBlKzc5WFQ1UlI4OGRsWHMxcjZENHNKSFloNis3eDNrUFF1TWxzOXJjMW55d3pCZGwzNUNJWnhFdzZjQUNqUDhZNGRuNnp3TllQbnQ5UW1HMklWNFo0ck1Wd0k1cFpRaW1WNGNCMUp5cC95SzN2T2NGZXBXYmEwaU5MN3hBaEVHRHRzOEk3aEsvNU5IU0N6d3M2N1RTa0o4VUh5d0drdFNUSkNUMDE1eXBRQ2FTbkttT09xVWlteENhaGZTNGU0ZjlYdGZCbFNsR1djWit5eXZMU05aV2Mvc0luL3ZXU0FIVTlqeHNDUDJwSzhJcEg4alJ5YUR4YWlHRkx4TW1ReGM1a0RnZzZ2R2RQNkt5MjRBMkEwZUJpZVhiZ1BmWHlIczgyUjQ1NjkyMkp6MHBWQUdzalA0NDNteGlFK282V3YzTG5kbm0wK0YvUTFIa3Y3NFBkdkltSERONHVyR0Y4dEVCK0RsQ0ZRK2xGU3FoK2JDUEl2aHpoZTZOeHpxOERoK2lvenVuWklvZkl6cmlvMWdjckJmQjBRWWRqWEcwRlRSN3BkTjU0bTJNcHZFSDB5ZnRFbzE5bnJ2TEs4dEkxbFp6K3dpZis5WklBZFQydEhWL0NQU3NLdDd6d2N5dGFHckxhYW80MkQyMnNzd1RSTFBhRy9xNkdpN0RqRWhod0tsQnhqanc3SU15dElJM05rTThjYitKdEV5Zjh3RmtURUZpRkxVWWltUS9oUFhJOTN6clhrKyt2cW9nTHJ1MHRhWGd0bE0xN3F0QWZ6R1F1OHlVZEk0cXFZemVKeFh4ZjBOTloyb0JqZURyMkRpd0k5T1hQVXVCSGJzTDRjMy9udzEwRW0yVTZNRkJVY3Jaai9ETWFTRnhWY1o3TW9XbDJvbjhHbTBWb3d6Y3FQZGUvcWkwakhNd0djTWY5ejQ5ZWdaUlF6TDdoS1NVTTVUUHQzN0FtazM3OWNjd3BMdFBUVDIzQmg3VWhua2RHMEdVb0h2SHN5OTlHeG1RYVI0bmF5Ty9yUUZib3F1c3RTRkxyTzgwL1B0bkg4RUpjd1FhUVlaSnpOMWI5YkQ2UnJKbDZ6UUlvbXdNZll1dSttOEZzTzd6ZDQvY2ZyNmhpT2ViSFNLWm1EUEZkM1hSSmUvOUNObkxHTFlYSkxyWXZFdnRGendEOEEzbjNkaFhXUGlta0Fpc0YwUis3UGhROVZKTFdjR2g4dHFLZ29Wb1o3a3pCR3VEN1NoOWMrMlNyK1NBR0g2YUhCVDRGdDFlc3dVbmIrZm5KR2hhSFNDL1N2b3pLQ0xtV05yUFE5NGFadVl5T092MGZsUFU5UHY5S09RVXkrNVV1ZGxNdnRxbDdCSUpmbzRQaWgvbEs4ZTFORzlKTjBEOU1MdTJmNytVQkJjZ25jQjlFaHVjS1FDSnNSaFBMZ1pwWC9yK3NMZ25iUzFIY0JLNTZ2N3FObVBRWXpsTUx3Z1VGUUY3QWRld1RvZS9ZaXVBYnFjS2NNMU13TGZJNGJlL2duRzRjOFI0VTlCUDFHbDgxWjVUTFpmV2ZlMXg2VjhHekpJOTg3VnVLMlk3MTBubEVzSVVBQ3AwREErcDNiNnF3L2JFVUcwYm9MUHpvTnJJVEd0T0l3RWJ1WGlBanhrdmhzL0pBdndJRzY1djZvTlNrN1l4Slp6Rk5vK2oxZklhejArRkJqVzVjV2Yrc2lPcDN2WWhrWFdvNVNsNmFDN25RcjlEemhONzBUT2k5bkJ6SFFSRmxSM3Z2NmVjOHZZeWdJeVlRTmh5OWNpellTNWtkMlJOK2ZXTEI2aUFkUS9ERjd3eUg5OXpJcHJJTlU0TnhldmI2SHlWSlBrNTFYRkIxU0lnU0lycnB6M0VqM0orVmlncGdFYmhWWjZxc0ZsOEFuMlVZcEFsM3hMeTF1Y0JGMnhCdXFaS1licEpVdEQ5RndHZVJrVnlFMXRHcWpIdFFZaC9JTWdxdmZheUxaQnhpTytWM1RDMlZQRnoycm9DeHhOOElMenlLQ2NjeElZNkVZc2cyd0xiMWI5QityV0g0RzhOL3JnQzlEMHJYcm5RS0ViWXArbFhYbHR3RVNRZ1B6cmI1RW9SUHR5OWRpYmxTQmJ4cjRQd0VsL0dueFJsRlpwWWs4RHlmRkpkdU44MTIxWDVtUldLVTY2OW11RzNqSTRMc1hyaGw2QlZWTWNYTjlrYXE5cXpPcjJ2VGY2SXM1T3pWK3hnUU5CRHNNaWRzSjUvOCtVK1pMWG9va3RTN3pCOURqeUVuVFF4V1hPbmhJdzRrN1d6ajZwbStaSTVXMU4zMFFiVkIrUWZPSWZGemtBOFIza3NvRHVJeGZrZytzWTZrUEdzN01jclNXRTJ3MFdaWlRjaURvbVROei9hL0FBUkdhS0xFL2U0a2cxcjBwU0VkNUxxZnYyR1BEMENWRytJSVJzcTk1SE1GclhESWZmL3c5YkxLOHRJMWxaeit3aWYrOVpJQWRUMng5SmNkeDgvK0VNTDZzRitSQmhaT0lpemRuVUNjdmpMdkUzZHZqVDJYQmljZFFGejcxR1NPZWdqZytIZnlzVGE5NHA0NlVzL2craXVXSEEyc2RIdUVHWVNFblFsLzFYa3JHSTF3T3FMYzR4Vy9UeGZjSk9TQlkxZk9JMldOQXlwS1NKM1hMcTFiNGJIbHE2QlZ4Umw3WkdwWElBKzRUamhqY05XRDNoVzBoUXJvMDY4MXRIdGc3K2Jqd0NzUGt2TVV6MEc1a1BaaG0veXAxWnVheUc4YStobkxBc3Z1L01sS25QWXdybFRGUEVMUEN6cnROS1FueFFmTEFhUzFKTWtSeUNHdnhhVGtrUS9pZkY3S2R6Vm54eVEyYzg4eFF3R2NKd2I1aUZ3VElyTEs4dEkxbFp6K3dpZis5WklBZFQyZW1XdTRXRDVKTDlwWVF5czZ1dVRqcFVueTNHQ0JxdG1sU0Y3V0FxYi9TRE5OR3p5TlE3ZmE4Y3o2bzJCdWVIN25zZXd0THJXSTgxMzlrRFk3YnV3SUpsWlBOclFPMTRuS0M0RlJkWVRkNnRHTFJ6ZHpwUlEzWVNOMWVib3FMeURhaUR0dDJFZW8yU3VPTlNYREtrRFBVdEROL3lFWGhDUWNnVU43b0xKMHA5VFRnc0E0SW05M1JML0hYbkVadnF1ZWVoRU4wUmd1eWlFazZ4ZnFqdEcvL3Fyb2RmWFlkWjJYZXZVQTBlM1ExT0RxdXNvZ1o2OU5QVHdjTUlJRUI5T2psQ2RDWHREbEdGaXdZaDluc0thV1laMmhaejlwYUFBOTY1eVJDUlQ2RlNPTHhhblJobzJFc2xJL2V4ZFkzbTZobmFGblAybG9BRDNybkpFSkZQb1ZLU2VWNEhjMksrUEhwZG1BVTdsQ2kwbkM4d1M2TFZwTVNTMTJCNHptMkppeS8vcjNyRnJDajg5d0NWTTRyV01lSGpHTkVxSU9rY0FLSXBoVG44TiszdFdyTHVldkpDVzh1Q1BtUnFOQkl4M281dTlBZ2cyQ294QmNiZUtoU2tneGNzcnkwaldWblA3Q0ovNzFrZ0IxUFpzOFFYMHczMzBSYnQrbitxZkdPS2dsdFRpOVRVSUUrbmFrT3dCVXdsR3pHQ292Y2pGL2VzZVlmaXNUMWtBVFphNUNCcFJFaCtmbmMzTGV0TGg2bEp6YlJ6Q09VN2h2WW1mcUNmUUlFRTJMSy93bnVvN3hLRk01eHU3d2RjYllsN0xLOHRJMWxaeit3aWYrOVpJQWRUMitpRndEMDg3ZW5TOVFtbmMrNlR0R3d5cWNzenV6NmowMEJGSVMvU2JNVmhuSkFDK1pRV1NvT1lTc3prZW5QWW1rUzl5RmNQbEZmakJabWhEaWR5S25zc3J5MGpXVm5QN0NKLzcxa2dCMVBiR2EySUwydjBKTCswNXlxcEVrMVJYUnNQZGRxdTlHL2daQndZdGIwMi82NExKVWM3bVp0dzVLdi80VTg0b2YvWndsNGJwcUY5YXo1TkpyS0trRi94aXl5dkxTTlpXYy9zSW4vdldTQUhVOWgrdGw5UXhpODdLMmgrNS9COVdIZ3pIN1gxaXkyOU9aQ29NZWxYRCtDbFZ5eXZMU05aV2Mvc0luL3ZXU0FIVTlpRVNNT292TWtCN2F2V2FncWRWQVpYemMvZ2JwT2x4MGdzRmpoUHduMHVoTGUxMmVmYTBtb1U1Wit4YXNkWkwvR0NqNDN0Q1ZCVG1GVUxydlRpeWdwYUdkb1djL2FXZ0FQZXVja1FrVStoVUdoRzdMakFNWGhrdEVYYnVyR1Fabm1jdEJMYVQvM2s4dE5iSEFwVmdLWGpMSzh0STFsWnord2lmKzlaSUFkVDIzbHdLcjZjaEJhMFYwQnp0UHpHdUl6RlhibFB4OUNQamlhV1hIaC9zaU1ETEs4dEkxbFp6K3dpZis5WklBZFQyUDRsMDJCdUtCREUzMGt2OUJiRjNTbi94STh6czQ5cjhYSUUyVG5HVFFYakxLOHRJMWxaeit3aWYrOVpJQWRUMlQ5ZTZsUHF1QVRlL3d4VjNYVFNUaVVETkc1T3pteTFuek9NU3IwSWJqczcwK2JmRng4aDdZQmcwMEFNczZjaUt6NG1uVzdicnVPSG1DNDRuWGtmc3dybDVFTGg0RXRaV1Nxcmhma2FwQ29LaWYzaUlCTlU0bkNnT2J1VzVKVUxUdzFBSUNaeUFDRXhuOXc2VzJpQlZJcTJVVWNXRjZONWRrRU9ER0FJd0lXcDRZUUI2d3JTMGJUd1pML1hvR1Y5WHNKdzNyei9FMjRWenNBTVlKMWpwS0F4STEyZDcwbC96QUNZQ2tsVS9kdFJBZ1VuS2ZDQ3h3Y0xRcTRLUXFBTGR1bXhRd3UrZE5CQlVvWDRtUHBEemhUbnBVY05XZXVkbFRmdmRBNlZhZldGeHkwR21McmhiZU1xQ09xNlRIcDdWT1pTVlVEcDU2bm5LOE9qMGJycm05QWQzSHplNGFpdFRzZzJVL2ZjSCs3ejFyY0VGUXJ3QVN1TUVnRlQvRGJnKzBuMCtvY0dEWG9nendzeEFaRHlhU3ViUnNtdFYwNUJRRlRKL0JOdnYvdWY1a1NZOWkvOTdLVTdJRm1ZeGw4c3B3emtUcmlvNGpBUkg2WndUWHBSbEg5NlRaZGQ5NHAycFRhbEwyYnRJS0lLNVdrNzRLNXdIMzJTWVRzaFZPZi9peXl2TFNOWldjL3NJbi92V1NBSFU5c1FzVkp6bS9wWUFmTmZWaFhHUk1KNlNvRDJvZmtIOUorWlNuTGZESkU4MGo4bkdXU2pmR3FuUDhtM1E3c2NsOGdkY0VzVlNEVnhxUVN4d2FpUlV3REJoNU9UQ2w3RHZvWnFEd29peHAwTzVWcUt2eXg4V0NVeU9PZmZ5T3JBZjU1b2VVS25hNXAySUF3Y3R5aDRJUm5VbjE5UVJ4SWRhK1R4K25LZkQ0R1JnRU1QNUs3OGZiL21lb1BrYkFkSFBVYkNmNnlCOHlPNCs5NldtUU1xckVpYXpLZXladGpidmxpa2JPZU1QNWZDOG03TzFPL0NCbmhmbk9yR1l6SFp3SGtDcWN3eEFxckI5V2tiTEx5SE1adnA1Z0dncklvS0doRkhENWJuZjlmQXp6cFF5K3c3ODg3RGtKeXZ2MnduT0orS3FsbVpBb3lIVmlINDNGejBYYUEwUm1tQmJwSEpmQUJjSmwycEFrS29IVlVjYmQ2eDVDelJSOC9PQXRucU92TnRDemlobTdXbDc3djFkUGxGSHp4M0xLOHRJMWxaeit3aWYrOVpJQWRUMmxoQkYzSDBQbzlGRVdDQXgrdjBuZmdVc1lXZDJpd2g4OXlBTXI2YXFSZHdiTVpmY2FJUHJmTUdpaDhRNlJVU2RHTnQ5cjJhVytRODVxSEZKdGk5QWZXTStuK2xzZ2x3MnljV0ptOEhCQmtGTG1RMFdwc05nRUFqZFNqLyt3OEJsMVVVd2h4bkxrYy96c2l0S0xSdHJIQ3JOV1JjUDlWTDNUZDhIYVVPNmZTbHFoMzZSdWNmdzhUUTFCMU1Xb3VwamhQUjhPVHorQ1VrZHlLUGJFN1VqMVVEcGg5a1lhcVhQTWwxLzZtcHEwMmJMSzh0STFsWnord2lmKzlaSUFkVDJPUGZacWZFclB3dDhmSmxvbzNGSG9ac0hqM3VOUjB5T2pJU1pRRlhmaGRXWWd0VW1iM1hOSURIb0hHeFducTVNNmRSL2hCQm81VjRpK1RMWnZNVXFlRkpjUjRueTFURFJkOHRPM2RCZDkwNlJ3bi9CQ3FIS09PMEdLTXZ4RkE5djhmVG0xTVBmeXJnTmxzd1hBdVpqeUg5c3ErNTB3bFpocW9KTVZsSzFVcSt0MUI4SUtZZVkyZDMvdzUzdGVlOWdTN3RRSUVTS1ZMUlJTTWV5Y3VMZ29vTUhKSGdoTFpkYnlKcDBZKytrRXFxMXJBTHZFS2NmdWRPdVMwMmExTzZFMzFBOVl5bVFQeVYrb2dBNVJhN1lNaUxnUTYwVDBlb1NrK2NpaTRoUEtKeGUvNGJlL1gzMk44cElJQkxIbkdxVHRqRWxuTVUyajZQVjhoclBUNFVHTmJseFovNnlJNm5lOWlHUmRhamxLWHBvTHVkQ3YwUE9FM3ZSTTZMMmNITWRCRVdWSGUrL3A1enk5aktBakpoQTJITDF5TE5oTG1SM1pFMzU5WXNIcUlBZVB5Q05yREozNWR6VXE4c3I3NWs1cDlzZnNOOWY2ZHp2eEFvRWdOemd3VnpLUEZseFdxd3pVd2F6V3lkR0NTV3BEbEhLZ09JTFlIaUx6WmRmSDVwdGNsNlBpQ0RiVWd0eE5yUVBLTmdYVUJZQXBLNEYvSjl4Wmw5SlB3MU1yWUkxazRVcDdHTVVhYWNYdHoyaWxEUEY2VHhQQmJyU0N5aU1Udm9GWnlyeTZRNW00OXZjVktna1JPUC9QQjEwNnpncXpWa1hEL1ZTOTAzZkIybER1bjBwMnlPZEVoL0N3Y3VGWTJORVVhRHVJQm9neWJDb0FTcEdTdi9kUC9OYTk5YWFmQiszdkE2eEM3c2c5MWdHUm14dGxYTnZZaUNNbUREekNaaE1mbmYvcWh4MWY4dklPRHJqTDVpZDZqeEhybWhBUmNVT3hENGo5LzU4V3RKWXZhbXRDendzNjdUU2tKOFVIeXdHa3RTVEpNcGdadGl6b0FYTjU5aFErVTVDaElRMFVUaklwQ0NoY0F2V3A5L0NIeW80Umc5L2lxaU5MU0JPVzQxcFl2Z0dVN3RIMWlQdWhleDE5YlhNNW84RTZXQ2pPeW5wN05nQUNWMytSQXo0cmFsMWhuYUZuUDJsb0FEM3JuSkVKRlBvVkMxUU9DR0RPL28xeFhiNjhnR2lIaUJDc3NIN1drVHN4VGZQVHFpdVhHMk5pV3N1b05jUC84NDQ3VE9Ed0J3UWh4YTFmM1JGTDBxVnlscUdyYlBlcWZnd1FYMFROdUJxOUQvTlRISXloZVR1d0FvVllHOHY0bE1qN29ydm51blV3d2drNlVYKzNVVWJMYUFaNEttdGRSM2hUc3hLaWlLNFJyaUVwMDc1RUg1MmxkalJKYjR1YkkvUVgrcWRyVEx4RndJZFllUC93aWlrTlZPWFBNQ203dUh2cmNJcHZocWNWdFZFWCtHOWFMOHZQbnpjK2hIbnhBNzA4YkQ2TGZKTmdhM0Z5SEtpQlIzVWY5bjBEZ0hHTjVYMWh4R2xRYm04VVRMOUxJQnZpRDk2MFY3SlF2bXFBaC9rNHBkZ0c5cXc0VWdoT2hqRXk1RG1DcCtkdjRSV09VT2FtNXFkK0tlZ2trRVNPRzhrUVFlcHpwUXkrdzc4ODdEa0p5dnYyd25PSjhDSlJsMUVPRE0wUVl6a3pNdHY4WEhMSzh0STFsWnord2lmKzlaSUFkVDJDb3Ryb1JQcjlMQUwxS3QrZDdEM01kdHhOYXNMVHVKZERJK3FOYmI4UFR0UHV0L3REcU9QWGkxMXl1NHpWMzNuUlk2RmovWlI1b0s4b3c3a1dtYnMwK0U4R09oaEdqRjVhN3NiL1FYdzJRT0RxdXNvZ1o2OU5QVHdjTUlJRUI5T0RDV09LQisxdnJGS1RGaDhmV29PQmdMUkpyRTc1MWswU2FERGxWTjNpc05KQU9zZlhqekd2b1l6VzJiYXBqR2xxeWpqNmZ5QlUrNUl3TjhGcTRsQnZnTjhZSThWTWQ4YmJ3SWp2SjV2S1dBU2ZBQUVCeStMRFZjNnNYdGNzUHZXdDMrc3VzOUkyMnpLMlRqN2hTNnA2TXNyeTBqV1ZuUDdDSi83MWtnQjFQYngvYUx6U0xRbXR3TzRXUm9OMjJLWVZKQTMvWHpTRWdiZ25lZ3hxcU5PQmkzdGRubjJ0SnFGT1dmc1dySFdTL3p2N3EyVTBIQW1TSGNiK250dGxzVkxqTWpSd2phT2dBdFJlajNkRXZTUFZGdy9pMGFDSzB4TVFiTEtoV2J4dFFDQmtsZkZhWVZGTFBaWkUwbjNTL3hqMUJQVG1GZGFVR3laUloyNlFER2hPTXNyeTBqV1ZuUDdDSi83MWtnQjFQWXpMTklUNjdzd2hKMVRFbklBTGNVcys1Smx3SnU3bXhUUlU0V1hBbkJQMTNnZTVnVmpqMU5hSjY4d3VhUGlWaDdBZDZVUFdXZ1I2d0xJUG5UVWZ0RmowcDZWWFNKUHVUZWF3UlJRNGMzY3JYZVFtdENIQ3BVZ1hLVm90Y0RkeldBVFRuT0tKVnlQMm1MT2xiTWg1dk03K3U0Zkw3TTE2ejg3U0pFSFRUVG1tK0s5TkhOcG1TbXdKYmhhc1p3ZGd4L0FkNlVQV1dnUjZ3TElQblRVZnRGak9JaWhGL0MzMWdzSzRFdnR1dXNtVWs4OWNja0FQNWl2bXB5R1JMNjZ4S1QzYkJBLzU0bFZPaXJWeHJaUUIvdzdUUzdsL0VlLzJvMUtFVUw4cDdEdG8vYzVzblFKbENTVWZERERPdWV4bVhqQU9iUWdzMzdiTER5RTc0WUtLYkxSZHd4SmVFa0NqRGR3THZNdUpHcnNDT3oyT3RqQVBJUVRrakNoTkp5V0N6U0VkelhLTHFJZ1JLMmlwQU1GZ0tSdmxSYmFzSFBsUnVzU2cwcFJOVlVDUVozWFBnbDNxVElsYU1Ib2JCUVJuUDAxMXZvaDV5NkRCTUtDMTZsWU5EOFVmbXlnY2xUWXNaQ2VkZXA3VWxvRHF3Y2pIYTZLSDhXMVdGWjlEWHhQM1d2WUYwUkRyWVRiNGpvUW1JVlYvY0puZWQzY1AyVXJ2cGxyNkxuZFRya05xQllBcEs0Ri9KOXhabDlKUHcxTXJZSTFrNFVwN0dNVWFhY1h0ejJpbERQRjZUeFBCYnJTQ3lpTVR2b0ZaeXJ5NlE1bTQ5dmNWS2drUk9QL1BCMTA2emdxelZrWEQvVlM5MDNmQjJsRHVuMHAyeU9kRWgvQ3djdUZZMk5FVWFEdUlPcno1c21adUx2SVhtV09wRVhXaUdvSWxpeWtwbkhjbWxaWkhsSnBWdXZvVXowRzVrUFpobS95cDFadWF5RzhhOXFSb3JWWEl0L2hhOTRLYzJ3ZlRjdkxLOHRJMWxaeit3aWYrOVpJQWRUMnp1WmhGcUhWRlJKVWNqME8vZVRHTGwzQllMVlBEVVFhTDlmSHQzNVN2Nm1GSWkyRUJWN2xma3BqbFNMUlhRTzlDendzNjdUU2tKOFVIeXdHa3RTVEpJSElhdzNnWGtxQW8wZWp3SlhyMjJLcmJZZko5RzVYODlQbUNIaXlwekdKQW8wM2NJMjB3TDJFd1czalRlWTdiL1lXWUNwbHJOcU1DRW44R29rNG42V2ZiL212YzN1aVN6MlNkbTc5VWlYakpqZkwzMDVoVTFiK0JIangyS3JTQ0tnRVZvL0JHUllSdC91dHlrdHJpNlpCZUhCVUxhbmc2cnkrL2RSVjVOM0VzRHViSlJYNklEWlB6ajh0d1E2U2N2a3ZuNGNLQzFRWitUcE1VUnJNL1JUaEJNRUVUcFRmcXlPNFpNYXpWc2JJZVIwNGVMRzJxWmJsR1hyVHY0VUVheFQzSnlodE5HWmVTaGJnK1BkNzkvMjQzelhiVmZtWkZZcFRycjJhNGJlTVp0eXlnM3lhVE45enVSaXI0TFZ6b2x0VmR1cUlwUldNbHhXZnIreEJ4UEJSUmhaQUFMZU1VQWdiNXhVRHoxU3hzdGNZdTZtcmZFaFBpOCtqaitHZGtLYmlRbTJWeWM3ZEpaVlA4VU9RN0R2YXg5OFRvM2p4UUFEdTlieVlEaVF1ZEgrTGxHYnRyUFBrMUJHNXN0SjFTMnAvbm1SWFo0SU9BTkxvRURuMnpTQkYzRE1DNmRzNzZqZ3YzNWI0eUZUeHl5dkxTTlpXYy9zSW4vdldTQUhVOWhRdjNyc3dzQkg1WW5OQk8rMDEvQm5PbERMN0R2enpzT1FuSysvYkNjNG40V0V4cmlTN0RMQ1pkdWlFT0prWE12ZnlucEVyMWRNOHBrTzZ3OXpZK1RzdGZnRDRjUWtwVEl5NVkrR3lwU25Ib0RMaW5SMGlmclNqd0JSeDgvY1luTTZVTXZzTy9QT3c1Q2NyNzlzSnppZHlTNmxidmNkWXlVOGI4RzZIYXoyU2Fzdmc1RmVOVnVtbWNlaWpvaTh6RFYxdUh6bHBKOWJ1VUFibUxQMU53ZU5ldXFLNllWdnA2dkNlRTRHaGZIeUhZS2k5eU1YOTZ4NWgrS3hQV1FCTmx2VHYzNGJKR3dzaDdjVVlYeTMxd1pUT2xETDdEdnp6c09RbksrL2JDYzRuaWNmbklybnltTStSaGNWTmZadXV1MTVSVnlHYTY0S1BtNDVRS0FXZXUwbmhUQkRRWXdGRnNILzlUWk1STjJsYkh0NFloL2NWRWgzSG9DWUZqMkFnTVVvYjhLbjFLVmlET3N2ZThqbWg2OHVwVWhtSDZJN0hlWGkxWWRUSFVqNkpobmFGblAybG9BRDNybkpFSkZQb1ZLSmZQd2gyR2tYRDdGcUY1MEdSOUdiandYOGZiZmpZd29yZGtYczM1RG9wQTg4K1l1NCtTYnpnekpLRXdpSmZxMW9KUzhDbWVodWNPc0xGclJUV21ucUF6QjhEMDhUWXQ0TG9sQkttT0ZEcDFYVlhTVnFtYXhwSGt4enNvRzk3aHMvOXB3VzVUbEtERnVhd0YrM1NQZ3RoOGJCbFF4NmpJYVhlUm9TWXY0ajdram5oY3pxL0JGMitweWZEd1NBalNCalhOK0E0azRGOTVJSFgrZVBFd0Z6dUp0bVRDTGY5dlRBeFdFOG9jUzVlQlBlTytzRDRRdy9CMi8xbzdGQmhCeVlzdG9EM2pUYitzeDhnWS9jOUl2dnIzS09qWmdPU0R6VHVmeThNN1ZYaFB1Mlo3UFNOckw5L2ttQTZ5czV2MXRLbStqUWF3djMvUUhYNDJKOXk4aEEydUxrRmFOeU80WHhDVjB1clRwaUVXY0dNTXIrbE9FSnlkNytuTm1Ld2o4WkRFVit6UG1MSExsQ0hJQnRNdTR2TEs4dEkxbFp6K3dpZis5WklBZFQyY3ZJN2NPTk9VeHZubi9oZTFJRVBrNllhY2oycmUzaEtzcm1jSTgrbU80akxLOHRJMWxaeit3aWYrOVpJQWRUMlZvVDVQWDdUblZvTDMzS2VxclI3YnFjekYvRjdoY0UvMDRIbDBOMXZJczJWOEZaUS91aGN1U2JzTmpjeEJRYi9Ibkg5Nit2UC9sL2JIMDJRdjN0VmhIUXY5Y0Z1cUpVRWFzclR5ekNYYTBJcjFqa0xGOC9yaHZqY3Eyank2aTE1cjZJMTdlaWZDaXkrZFlXNnI2dlFYV085cFliTzJzbmlYWDJ5VHhWc29rRXlUTEJnODFVRC9jQ2NTbWZrNnF1d2NHUXRxeno5U2JxNjI0b3J5UTZ1MlpGWW5vNS8rRnFiaEhScXZOcExld0lFUXNHa2xqa3JTRENBNU5aVG9hYzk1RTVOemVod2g4U0NreW9oS09oUWExZkNadUhkdlc5RGVCcVU4WGlzMUx2YUVYVEJ3MDBHZ2RvS09PQ1NxcVZXZHZHaEtyTElqeWExMXlCcDJMTXR6T3JzOG8zLzlrbmx4U1ZhRVJ5cFdaZHNwQXpNc0V5anl6Z2dJVFBqWlRUK3ZrQk15ZHdtMHU2NU5MZVNqZUtJZmV4MjRUTjBodW4wSGxXaUhRSVUrM1l4NllwcmkxdERod3ozODNRcGhFeUtGaHcwaFpnMXI3bEd2MG5wVW9welF2dVNaY0NidTVzVTBWT0Zsd0p3VDlkN3Bnb1JuUWh1ZkZEQnlFZC9qazBLTStGNStFNms5SlZ1dDVBcXFxSWpEcU5UaWxrVGNaY2gzejErWW5OM1lzSGJQK0FqV0hqVmNZcUhNUGVNNjF1aXFlUWRxUEJSVURBS3FIeVh6RW9SeUxKQ0dubjM1MHVhSXM4ZHhQeFhjZ284Ui80UTZpTXBZVGFWSElPcEhKbldoSm1Jcng1SDJiY0xiZlQ1L1FtTUlNVzVMZ291czE1eS9BSnJSMG5WbWVWY01KaXhVcjh4Qjh3T2Flc3FZYWRGeXl2TFNOWldjL3NJbi92V1NBSFU5a09Zb2dndWw0NHpJWjYxTHJvRmdYS0dkb1djL2FXZ0FQZXVja1FrVStoVVBiVmMwODBha2toTFhPcjdjZzhWRVV2WmJ6MEhYOGhQRnNhYlVENnIrYTJNTGwwRk55WjJFSFlrVjd6QUIvV05BRVpMcTNhdXYrcDdPYnZYN3MvcExsUjRZZ0tWQ1JPQlZ4bE44ZzNYV0tuMzY5TjFqbG9zcVJCZERNZkpCQmJEVHpjazg4M0RZSjJOTmRWUVlqT3Fnc2JLbmxxOFkrUGoyN2Q1d0MrYVpLUzVDLzdDZVN1OGZySWdiZ2luaGY3USt3MjE4aDlBdEtUWENRaWxnZXVSTEk2b2ZKVGRXdHlIQkNjYU5yN1g5aGdwclIrWmtSRWV3UW0wamltTjduQzd5eXZMU05aV2Mvc0luL3ZXU0FIVTlrOHVaRVVQckIyVjFMbThsT3kzYzgzSEljUlc0RTE2QjdsY3BMSHFaYWVwRGhrd29DL01hdVFMTm81aUVXMmV1Y2VqbWZnYVpOTEcxbEVRUzlvR1pCTUR4aG5RZ3Evam83bkpZeFdHaHBERkU2U3NoU05wa2MrM3VrWG5nYWRmaUg5TjgwQVBYSVh2dThxais3NGNITGZPbERMN0R2enpzT1FuSysvYkNjNG5oQTAxa3NOV1BpTGprQWI4VXRLSnE0aU5PTCtFREV6NnJmWW5hNkVEWUQ3bnRzL1NPTE4zUzV4VVF3RlFSLytMVFRwN1JidWdaMis2Yk1xQXlacVllOHNyeTBqV1ZuUDdDSi83MWtnQjFQYjVyT2FSd20xSGZncmxjZzFaRWczUlVubk9oRjBZWUJ5VVlYZEJPRGs3cFBNbDZTMWFsOVNySGZneW1UT2RJTWJYSkZiVjcyQlFsandVSzk2R1YzYVFvaE1qazAvSStSS2RpMDg5RGdvTWJ3QTMrVmMvL2VIcWg3NzZZTmVGaHdrTnE5QWRESjRuL0xSRDNXdFlKWEFTdDNpdkM0dTlRQlRmYi92Q21OSmkvZnphZXM0b0pBS3VTYzBDbythdTZSWnlweDVENWpMTm1YTTNGOFlacGc4eVZnUVh3R293OUY1M1RQdHdFTGhFYkNkVUpPZyszV3ZMWFJrV2NwWmFsZzRLMTU5YUVNL3Z3WXdDcTM0bHhrU0ZobEt5VFVnNVJzWGZSTHBhTWhtMGVaU0hkdW9ESE5mNFoxb2dnWkd6aWtvR29wOGMvenJvV0JvTi9hVkttbjhzNFR5RStVQlFlenYxZkxCZVV5QkdiSDhKWEEvNXUyMThFWkJCUXR3M29xRXY4eUoyRGNWZEtOeG16dEI4TG1uSCcpXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpobXpnaIt55m75b2VXCIsXCJwYXRoXCI6XCJwd2QtbG9naW5cIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbnZhciBpc2xvZ2luID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9pc2xvZ2luLnR4dCcsIHt9KTtcXG5pZiAoaXNsb2dpbiA9PT0gXFxcIjFcXFwiKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB1cmw6IFxcXCJwdXRWYXIoJ215X2FjY291bnQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOeahOi0puWPt+aYrycgKyBpbnB1dDtcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICB0aXRsZTogJ+i0puWPtycsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFwicHV0VmFyKCdteV9hY2NvdW50JyxpbnB1dClcXFwiLFxcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxuICAgICAgICAgICAgaGVpZ2h0OiAxLFxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0VmFyKCdteV9hY2NvdW50JylcXG4gICAgICAgIH1cXG4gICAgfSk7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB1cmw6IFxcXCJwdXRWYXIoJ215X3Bhc3N3b3JkJyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDnmoTlr4bnoIHmmK8nICsgaW5wdXRcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICB0aXRsZTogJ+WvhueggScsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFwicHV0VmFyKCdteV9wYXNzd29yZCcsaW5wdXQpXFxcIixcXG4gICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcbiAgICAgICAgICAgIGhlaWdodDogMSxcXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGdldFZhcignbXlfcGFzc3dvcmQnKVxcbiAgICAgICAgfVxcbiAgICB9KVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJzlpKfkvJrlkZjvvJ8o5YWI54K55oiRKeKAneKAnVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCLkuI3mmK/lpKfkvJrlkZjliKvngrnnoa7orqTvvIzlkKbliJnlkI7mnpzoh6rotJ9cXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoXFxcImlzdmlwXFxcIiwgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuoblpKfkvJrlkZjjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJznmbvlvZUo5YaN54K55oiRKeKAneKAnVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCLnoa7orqTnmbvlvZXvvJ9cXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoXFxcImxvZ2luaW5nXFxcIiwgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuobnmbvlvZXjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbiAgICBpZiAoZ2V0VmFyKFxcXCJsb2dpbmluZ1xcXCIpID09PSBcXFwiMVxcXCIpIHtcXG4gICAgICAgIGlmIChnZXRWYXIoJ215X2FjY291bnQnKSAhPSAnJyAmJiBnZXRWYXIoJ215X3Bhc3N3b3JkJykgIT0gJycpIHtcXG4gICAgICAgICAgICAvLyBUT0RPIOWQkOS9rOivtOi/memHjOWPr+S7peaUueaIkCAkLnJlcXVpcmUg55So5rOVICAgICAgICAgIFxcbiAgICAgICAgICAgIGV2YWxQcml2YXRlSlMoXFxcImR0ZDFQM2RURUlUb25zZ3JORmZvQmlnaTVsamF6MFBlR21ibU1qanI5SDVuZnZzbkJ3N0pGcDM3Y24zZWdxdTB5LzB3VFcyb1U3cXRNd1FJQWlMaEVTVktCbEtrUnZXMHBuUERkSGw3UEd3d0RUNUdNMXZCc29nYjdZRHB3bXdWOHJ0dGFkME81WUpCdnBqWDI5aFVCcFNzaWFvN2wzVWVienhOQVdZaWo3WXdIV2h0MGpWYmg1U0w3UFhWbzE0OWZQU1R1eGw4QSt2TFVXaSsyV3hHck9aK1F2dHJZSW4yOEJxUzhQUzd6ZjBSMHlyOWhYempiTU9PWDJDT2RWWUtQZGJHc3h6a2xWNVgyTExtS2JQZ0VmUUVsQ2dNWnBZdW5lMEk4T3lJNTVITEs4dEkxbFp6K3dpZis5WklBZFQyZFRRdkNCYitpSGpwUjZLME1yMGRmYy9qclRkLytubXNtV3Jraml0dXE4eDJoN1UzYlptYXhrcVlyeFNvcHJMaVp2bkJrU3ZFb0lpcVVVT0tpbUN5MDFmM3RSZlNRQmVSNWxnVDVBL3hxZ2QyOGFFcXNzaVBKclhYSUduWXN5M01MWlJoU0x3NWtkU1UzWStkeUNhNlpjSUR4bE9HZVNGTG1JME9DRmJwWmU5Ylk3bktVT2FpMytUSHNhRmlFRXFwZC82blVRRjRUWlJCZ1ZxallFRndXSnlLQUs2REFxb1J2QjJUMGlmMndVdk9sREw3RHZ6enNPUW5LKy9iQ2M0bnlaeGREZlFYTjZScUIraTZOZ1RiQ2pOZDRURlg1ZldCdkhhNXBIclRTWkFoVFc5d0ZBNXdzQURCOTV5K0p4Mlg5UWs0R0xDR3N0Z0djbUhtOTZhcDF1V3ErSzh2R0VaRWJFamtVNTJ0TVM1eno2Z203WWhYZjhlQllCbUVhaUx1TWVVNzVHZTJxUzZ1T29qMjJJVEVVY3NyeTBqV1ZuUDdDSi83MWtnQjFQWVpOeW5YTGwxdGZvRFkzSFpnUGFrZjZEK0FEelFZcXhxUktaQ3RsTkl5YTlrOEM0SDdmYmhMRFhkV0Ezb1Y1eVVPZ2FTWEsxT000MEZ4TnlOWHBBL1pLUzZnWTNCMS9WMit6cHorUTdDbXVlNStxYU8wWHJEUDE1aGpTNGJ4bldyT2xETDdEdnp6c09RbksrL2JDYzRuWHhla3VvVFZVUlk3ZWgrZElGNFFPYVhtYk5qWU5raXFuQWQ4NUZyWEtYb2VnSlpDODVCNEpWcU9XY3VlaXBOYUh5L2R3QWhLcG5LLzVKTzdaNnlhMmxzMi9KdlBPQ1A5MWU2ZzRITytZcUVwTHFCamNIWDlYYjdPblA1RHNLYTVucHJia0lQMmtuRFhYcXRNWUdSZGNpZ2VJUnorT0htbktMbS8rV0NQYTA2MThFcXZNc0dnOWZwdnRVbzIvdG0wUnpZWWk4a3VGR29wVHlvaWtEd2kzY3NyeTBqV1ZuUDdDSi83MWtnQjFQYTFBRGt2aXZrbmNFaFBXUDR3WENhVHd3cFowRzYrWVR2eXA2OHRoRmRBTDV4eDkrblVhNWpXbUpVeXlRK3IxVXNENXNNcWluWTViL2VEVW54UktLQlR6cFF5K3c3ODg3RGtKeXZ2MnduT0p5ZEhQTTJhaDc4ZUF0dFNhaFZDRWIvbDNacWkyaEZraVpKOGd4UEMwUFk3L3F0Mk4wbjhsSEQ4KzcyS1RVRElxdVg1NjVDSVFuY0RXNUtmWFVaTE9uWmJzNlJUcVIwMEx1UEhBeFBJSGhpYWJqa052U1ZRT3p2M2F3ZXJhbWVTTzhzcnkwaldWblA3Q0ovNzFrZ0IxUGJaZkFBKzdnK1lkVE5wZXU5TFJSb29pRndWLzljdTVIcEVnWjJYNndhV2Rvb1kxZzVwQ1hLcE11L2Q3YzNoZFFmTEs4dEkxbFp6K3dpZis5WklBZFQyWTk2c2tCdE5sdk5BeDZJR3B6S044ZU4wT0pDbTJJcXNKSm5IWEpkMWZyeUNNbUVDRkVlYVZicHVLRzNWMDl3QUM3U1lpN2ovYkNCK0RDMTFCU2FadjhCM3BROVphQkhyQXNnK2ROUiswV010WmpLNFFsZnpzTXRnR3FkbmwvRCtcXFwiKVxcbiAgICAgICAgfVxcbiAgICB9XFxufSBlbHNlIGlmIChpc2xvZ2luID09PSBcXFwiMlxcXCIpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc5bey55m75b2V77yB4oCd4oCdXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIuehruiupOmHjeaWsOeZu+W9le+8nyjor7fkuI3opoHlsJ3or5XlpJrmrKHnmbvlvZXvvIzlkKbliJnotKblj7flvILluLgpXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0VmFyKFxcXCJpc2xvZ2luXFxcIiwgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9pc2xvZ2luLnR4dCcsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG55m75b2V44CC56Wd5aW96L+QKOKcquKWveKcqilcXFwiXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG59IGVsc2UgaWYgKGlzbG9naW4gPT09IFxcXCIzXFxcIikge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJzkvaDpnIDopoHljrvlrqLmiLfnq6/mlLnkuIvlr4bnoIHmiY3og73nmbvlvZXvvIHvvIHvvIHigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgIHVybDogJChcXFwi56Gu6K6k55m75b2V77yfKOivt+S4jeimgeWwneivleWkmuasoeeZu+W9le+8jOWQpuWImei0puWPt+W8guW4uClcXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoXFxcImlzbG9naW5cXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2lzbG9naW4udHh0JywgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuobnmbvlvZXjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbn0gZWxzZSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOeCueWHu+i/m+WFpeeZu+W9lemhtemdouKAneKAnVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCLnoa7orqTnmbvlvZXvvJ8o6K+35LiN6KaB5bCd6K+V5aSa5qyh55m75b2V77yM5ZCm5YiZ6LSm5Y+35byC5bi4KVxcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcihcXFwiaXNsb2dpblxcXCIsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvaXNsb2dpbi50eHQnLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S9oOmAieaLqeS6hueZu+W9leOAguelneWlvei/kCjinKrilr3inKopXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIueZu+W9lemhtemdolwiLFwicGF0aFwiOlwibmV3bG9naW5cIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi4oCc4oCc5pa55rOV5LiA4oCd4oCdXFxcIixcXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKFxcXCJsX2lkXFxcIixcXFwiMVxcXCIpO3JlZnJlc2hQYWdlKCk7XFxcInRvYXN0Oi8v5Yi35paw5oiQ5YqfXFxcIicsXFxuICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbn0pO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi4oCc4oCc5pa55rOV5LqM4oCd4oCdXFxcIixcXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKFxcXCJsX2lkXFxcIixcXFwiMlxcXCIpO3JlZnJlc2hQYWdlKCk7XFxcInRvYXN0Oi8v5Yi35paw5oiQ5YqfXFxcIicsXFxuICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbn0pO1xcbmlmIChnZXRWYXIoXFxcImxfaWRcXFwiKSA9PSBcXFwiMVxcXCIpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5pON5L2c5oyH5byVIOKRoOWFiOeCueWHu+S4i+aWueesrOS4gOatpei/m+WOu+WTlOWTqeaJi+acuueJiOe9kemhteeZu+W9lei0puWPtyDikaHov5Tlm57nm7TmjqXngrnnrKzkuozmraXnmbvlvZXnhLblkI7mjInmj5DnpLrnmbvlvZUg4oCc4oCc5rOoOuaWueazleS4gOS4jeWPr+eUqOWGjemHh+eUqOaWueazleS6jOKAneKAnScsXFxuICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnDEuIOeCueaIkeWOu+e9kemhteeZu+W9leWQjuiHquWKqOiOt+WPlmNvb2tpZeKAneKAnVxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvY2tcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCcMi4g5YaN54K55oiR55m75b2V4oCd4oCdXFxcIixcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS93ZWJsb2dpblxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgIH0pO1xcbn1cXG5pZiAoZ2V0VmFyKFxcXCJsX2lkXFxcIikgPT0gXFxcIjJcXFwiKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuaTjeS9nOaMh+W8lSDikaDlhYjngrnlh7vkuIvmlrnnrKzkuIDmraXov5vljrvlk5Tlk6nmiYvmnLrniYjnvZHpobXnmbvlvZXotKblj7cg4pGh54K55Ye75Y+z5LiL6KeS6K6+572u4oaS5p+l55yL5rqQ56CB4oaS5Y6f55Sf55WM6Z2iIOKRouWkjeWItuacgOS4iuaWuei+k+WFpeahhumHjOeahOmTvuaOpSDikaPov5Tlm57pppbpobXmiorpk77mjqXovpPlhaXmoYblhoUg4pGk54K55Ye756ys5LqM5q2l77yM5oyJ5o+Q56S655m75b2V5Y2z5Y+vXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5L+d5a2YJyxcXG4gICAgICAgIHVybDogXFxcInZhciBjayA9ICdTRVNTREFUQScraW5wdXQuc3BsaXQoJ1NFU1NEQVRBJylbMV0uc3BsaXQoJ3NpZCcpWzBdLnJlcGxhY2UoJ++8m++8mycsJzsgJyk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYmlsaWNrLnR4dCcsY2sucmVwbGFjZSgn77yb77ybJywnOyAnKSk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/mgqjnmoRjb29raWXmmK86Jytja1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgIGRlc2M6ICfor7fovpPlhaXpk77mjqUnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJwxLiDngrnmiJHljrvnvZHpobXnmbvlvZXlkI7miYvliqjojrflj5Zjb29raWXigJ3igJ1cXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaHR0cHM6Ly9tLmJpbGliaWxpLmNvbS9cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCcMi4g54K55oiR55m75b2V4oCd4oCdXFxcIixcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS93ZWJsb2dpblxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgIH0pO1xcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJjb29raWXojrflj5ZcIixcInBhdGhcIjpcImNrXCIsXCJydWxlXCI6XCJqczpcXG5zZXRSZXN1bHQoW3tcXG4gICAgY29sX3R5cGU6IFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXCIsXFxuICAgIHVybDogXFxcImh0dHBzOi8vbS5iaWxpYmlsaS5jb20vXFxcIixcXG4gICAgZGVzYzogXFxcImZsb2F0JiYxMDAlXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICBmYmEubG9nKGRvY3VtZW50LmNvb2tpZSlcXG4gICAgICAgICAgICBmeV9icmlkZ2VfYXBwLndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2JpbGljay50eHQnLCBmeV9icmlkZ2VfYXBwLmdldENvb2tpZSgnaHR0cHM6Ly9tLmJpbGliaWxpLmNvbS8nKSk7XFxuICAgICAgICB9KVxcbiAgICB9XFxufV0pXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpobXpnaItd2Vi55m75b2VXCIsXCJwYXRoXCI6XCJ3ZWJsb2dpblwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxudmFyIGNrID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9iaWxpY2sudHh0XFxcIikucmVwbGFjZSgv77yb77ybIC9nLCc7ICcpO1xcbmxvZyhjaylcXG52YXIgbG9naW5fdXJsID0gXFxcImh0dHBzOi8vcGFzc3BvcnQuYmlsaWJpbGkuY29tL2xvZ2luL2FwcC90aGlyZD9hcHBrZXk9MjdlYjUzZmM5MDU4ZjhjMyZhcGk9aHR0cCUzQSUyRiUyRmxpbmsuYWNnLnR2JTJGZm9ydW0ucGhwJnNpZ249NjdlYzc5ODAwNDM3MzI1M2Q2MDExNGNhYWFkODlhOGNcXFwiO1xcbnZhciBsb2NhdGlvbiA9IEpTT04ucGFyc2UoZmV0Y2gobG9naW5fdXJsLCB7XFxuICAgIGhlYWRlcnM6IHtcXG4gICAgICAgIFxcXCJ1c2VyLWFnZW50XFxcIjogXFxcIk1vemlsbGEvNS4wIChMaW51eDsgQW5kcm9pZCAxMDsgTTIwMDdKM1NDIEJ1aWxkL1FLUTEuMjAwNDE5LjAwMjsgd3YpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIENocm9tZS84My4wLjQxMDMuMTAxIE1vYmlsZSBTYWZhcmkvNTM3LjM2XFxcIixcXG4gICAgICAgIFxcXCJjb29raWVcXFwiOiBja1xcbiAgICB9LFxcbiAgICBtZXRob2Q6ICdHRVQnXFxufSkpLmRhdGFbJ2NvbmZpcm1fdXJpJ107XFxuLy9sb2cobG9jYXRpb24pO1xcblxcbnZhciBpbmZvID0gSlNPTi5wYXJzZShmZXRjaChsb2NhdGlvbiwge1xcbiAgICBoZWFkZXJzOiB7XFxuICAgICAgICBcXFwidXNlci1hZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoTGludXg7IEFuZHJvaWQgMTA7IE0yMDA3SjNTQyBCdWlsZC9RS1ExLjIwMDQxOS4wMDI7IHd2KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvODMuMC40MTAzLjEwMSBNb2JpbGUgU2FmYXJpLzUzNy4zNlxcXCIsXFxuICAgICAgICBcXFwiY29va2llXFxcIjogY2tcXG4gICAgfSxcXG4gICAgbWV0aG9kOiAnR0VUJyxcXG4gICAgb25seUhlYWRlcnM6IHRydWUsXFxuICAgIHJlZGlyZWN0OiBmYWxzZVxcbn0pKS5oZWFkZXJzLmxvY2F0aW9uWzBdLnNwbGl0KFxcXCI/XFxcIilbMV0uc3BsaXQoXFxcIiZcXFwiKTtcXG5wdXRWYXIoXFxcIm15a2V5XFxcIixpbmZvWzBdLnNwbGl0KFxcXCI9XFxcIilbMV0pO1xcbnB1dFZhcihcXFwibXltaWRcXFwiLGluZm9bMV0uc3BsaXQoXFxcIj1cXFwiKVsxXSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogaW5mb1swXSxcXG4gICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBpbmZvWzFdLFxcbiAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJzlpKfkvJrlkZjngrnmiJHigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCLkuI3mmK/lpKfkvJrlkZjliKvngrnnoa7orqTvvIzlkKbliJnlkI7mnpzoh6rotJ9cXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9hY2Nlc3Nfa2V5LnR4dFxcXCIsZ2V0VmFyKFxcXCJteWtleVxcXCIpKTtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0XFxcIixnZXRWYXIoXFxcIm15a2V5XFxcIikpO1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHRcXFwiLGdldFZhcihcXFwibXltaWRcXFwiKSk7XFxuICAgICAgICAgICAgLy9yZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lpKfkvJrlkZjnmbvlvZXmiJDlip9cXFwiXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc5peg5Lya5ZGY54K55oiR4oCd4oCdXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF8yXFxcIixcXG4gICAgICAgIHVybDogJChcXFwi54K55Ye755m75b2VXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYWNjZXNzX2tleS50eHRcXFwiLGdldFZhcihcXFwibXlrZXlcXFwiKSk7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dFxcXCIsZ2V0VmFyKFxcXCJteW1pZFxcXCIpKTtcXG4gICAgICAgICAgICAvL3JlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+eZu+W9leaIkOWKn1xcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbiAgICBcXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt55u05pKtXCIsXCJwYXRoXCI6XCJ6YlwiLFwicnVsZVwiOlwiaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcbnZhciB6YmMxID0gJ2FsbCYyJjMmNiYxJjUmOSYxMCYxMSc7XFxudmFyIHpidzEgPSAn5YWo6YOoJue9kea4uCbmiYvmuLgm5Y2V5py6JuWoseS5kCbnlLXlj7Am6Jma5ouf5Li75pKtJueUn+a0uyblrabkuaAnO1xcbnZhciB6YmMyID0gJzAmMzMnO1xcbnZhciB6YncyID0gJ+m7mOiupOWwj+WIhuexuyblvbHpn7PppobvvIjnlJ/mtLvvvIknO1xcbnZhciB6YndvcmQxID0gemJ3MS5zcGxpdCgnJicpO1xcbnZhciB6YmNsYXNzMSA9IHpiYzEuc3BsaXQoJyYnKTtcXG52YXIgemJsYWIxID0gZ2V0VmFyKCd6YmxhYjEnLCAn5YWo6YOoJyk7XFxudmFyIHpia2V5MSA9IGdldFZhcignemJrZXkxJywgJ2FsbCcpO1xcblxcbnZhciB6YndvcmQyID0gemJ3Mi5zcGxpdCgnJicpO1xcbnZhciB6YmNsYXNzMiA9IHpiYzIuc3BsaXQoJyYnKTtcXG52YXIgemJsYWIyID0gZ2V0VmFyKCd6YmxhYjInLCAn6buY6K6k5bCP5YiG57G7Jyk7XFxudmFyIHpia2V5MiA9IGdldFZhcignemJrZXkyJywgJzAnKTtcXG5cXG4gICAgLypmb3IgKHZhciBpIGluIHpid29yZDEpIHtcXG4gICAgICAgIHZhciBhID0gemJ3b3JkMVtpXTtcXG4gICAgICAgIHZhciBiID0gemJjbGFzczFbaV07XFxuICAgICAgICB2YXIgYyA9IGEgKyAnJicgKyBiO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogYSA9PSB6YmxhYjEgPyBnZXRIZWFkKGEpIDogYSxcXG4gICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGMpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKFxcXCJ6YmxhYjFcXFwiLCBjLnNwbGl0KCcmJylbMF0pO1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoXFxcInpia2V5MVxcXCIsIGMuc3BsaXQoJyYnKVsxXSk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgIH0sIGMpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nXFxuICAgICAgICB9KTtcXG4gICAgfSovXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+aQnOe0oicsXFxuICAgICAgICB1cmw6IFxcXCJwdXRWYXIoJ3piaycsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5q2j5Zyo5pCc57SiJztcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaycsXFxuICAgICAgICBkZXNjOiAn5L2g5oOz55yL5LuA5LmI55u05pKt77yfJ1xcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnYmlnX2JsYW5rX2Jsb2NrJ1xcbiAgICB9KTtcXG5cXG4gICAgZm9yICh2YXIgaSBpbiB6YndvcmQxKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB6YndvcmQxW2ldID09IHpibGFiMSA/IGdldEhlYWQoemJ3b3JkMVtpXSkgOiB6YndvcmQxW2ldLFxcbiAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChuYW1lLCBrZXkpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCd6YmxhYjEnLCBuYW1lKTtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCd6YmtleTEnLCBrZXkpO1xcbiAgICAgICAgICAgICAgICBjbGVhclZhcignemJrJywgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgIH0sIHpid29yZDFbaV0sIHpiY2xhc3MxW2ldKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgfSk7XFxuICAgIGZvciAodmFyIGkgaW4gemJ3b3JkMikge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogemJ3b3JkMltpXSA9PSB6YmxhYjIgPyBnZXRIZWFkKHpid29yZDJbaV0pIDogemJ3b3JkMltpXSxcXG4gICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgobmFtZSwga2V5KSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dFZhcignemJsYWIyJywgbmFtZSk7XFxuICAgICAgICAgICAgICAgIHB1dFZhcignemJrZXkyJywga2V5KTtcXG4gICAgICAgICAgICAgICAgY2xlYXJWYXIoJ3piaycsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCB6YndvcmQyW2ldLCB6YmNsYXNzMltpXSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XFxuaWYgKGdldFZhcignemJrJykgIT0gJycpIHtcXG4gICAgdmFyIHpidXJsID0gXFxcImh0dHBzOi8vc2VhcmNoLmJpbGliaWxpLmNvbS9saXZlP2tleXdvcmQ9XFxcIiArIGdldFZhcignemJrJyk7XFxuICAgIGxvZyh6YnVybClcXG4gICAgdmFyIHF6ID0gXFxcImh0dHBzOi8vc2VhcmNoLmJpbGliaWxpLmNvbVxcXCI7XFxuICAgIHZhciBsaXZlID0gcXogKyBwYXJzZURvbUZvckh0bWwoZmV0Y2goemJ1cmwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ5LjAuMjYyMy44NyBTYWZhcmkvNTM3LjM2XFxcIixcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogXFxcIl91dWlkPTgyNDY3MzczLUM2QTEtNTdCQS1BRTAyLUE5QTZEMTc3Qzg4Nzk3MjQ4aW5mb2M7IGJ1dmlkMz0xN0M5QTJDQi04NTBCLTRDNzMtQjlERS02NERCMEU2REJBQkIxNDMxMDVpbmZvYzsgc2lkPWN5OTYxZnE3OyBycGRpZD18KHV8SkopfGt+bHwwSid1WXxZfHVrdW0pOyBMSVZFX0JVVklEPUFVVE84ODE2MDYxMDIyMTkzNDIwOyBic291cmNlPXNlYXJjaF9iYWlkdTsgUFZJRD0yMzsgZmluZ2VyPTE5ODQ5ODk1MDE7IGFycmFuZ2U9bWF0cml4XFxcIlxcbiAgICAgICAgfVxcbiAgICB9KSwgJ2JvZHkmJi5oZWFkbGluZS1saXZlJiZhJiZocmVmJyk7XFxuICAgIGxvZyhcXFwiMTIzOjo6XFxcIiArIGxpdmUpXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+S4u+aSrScsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvemIyP3VybD1cXFwiK2xpdmUucmVwbGFjZShcXFwiP1xcXCIsXFxcIu+8n++8n1xcXCIpLnJlcGxhY2UoXFxcIiZcXFwiLFxcXCLvvIbvvIZcXFwiKSArICfvvIbvvIZwYWdlPWZ5cGFnZScsXFxuICAgICAgICBkZXNjOiAn5YWx5pyJJyArIHBhcnNlRG9tRm9ySHRtbChmZXRjaCh6YnVybCwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBcXFwiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV09XNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS80OS4wLjI2MjMuODcgU2FmYXJpLzUzNy4zNlxcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBcXFwiX3V1aWQ9ODI0NjczNzMtQzZBMS01N0JBLUFFMDItQTlBNkQxNzdDODg3OTcyNDhpbmZvYzsgYnV2aWQzPTE3QzlBMkNCLTg1MEItNEM3My1COURFLTY0REIwRTZEQkFCQjE0MzEwNWluZm9jOyBzaWQ9Y3k5NjFmcTc7IHJwZGlkPXwodXxKSil8a35sfDBKJ3VZfFl8dWt1bSk7IExJVkVfQlVWSUQ9QVVUTzg4MTYwNjEwMjIxOTM0MjA7IGJzb3VyY2U9c2VhcmNoX2JhaWR1OyBQVklEPTIzOyBmaW5nZXI9MTk4NDk4OTUwMTsgYXJyYW5nZT1tYXRyaXhcXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSksICdib2R5JiYuZmxvdy1sb2FkZXImJi5oZWFkbGluZS1saXZlJiYubnVtLXR4dCYmc3BhbiYmVGV4dCcpLnJlcGxhY2UoXFxcIlxcXFwoXFxcIiwgXFxcIlxcXCIpLnJlcGxhY2UoXFxcIlxcXFwpXFxcIiwgXFxcIlxcXCIpICsgJ+S4u+aSrScsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgIH0pO1xcbiAgICB0cnkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+ebtOaSreS4rScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3piMj91cmw9XFxcIitsaXZlLnJlcGxhY2UoXFxcIj9cXFwiLFxcXCLvvJ/vvJ9cXFwiKS5yZXBsYWNlKFxcXCImXFxcIixcXFwi77yG77yGXFxcIikucmVwbGFjZShcXFwic2VhcmNoX3R5cGU9bGl2ZV91c2VyXFxcIiwgXFxcIlxcXCIpICsgJ3BhZ2U9ZnlwYWdlJyxcXG4gICAgICAgICAgICBkZXNjOiAn5YWx5pyJJyArIHBhcnNlRG9tRm9ySHRtbChmZXRjaCh6YnVybCwge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ5LjAuMjYyMy44NyBTYWZhcmkvNTM3LjM2XFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBcXFwiX3V1aWQ9ODI0NjczNzMtQzZBMS01N0JBLUFFMDItQTlBNkQxNzdDODg3OTcyNDhpbmZvYzsgYnV2aWQzPTE3QzlBMkNCLTg1MEItNEM3My1COURFLTY0REIwRTZEQkFCQjE0MzEwNWluZm9jOyBzaWQ9Y3k5NjFmcTc7IHJwZGlkPXwodXxKSil8a35sfDBKJ3VZfFl8dWt1bSk7IExJVkVfQlVWSUQ9QVVUTzg4MTYwNjEwMjIxOTM0MjA7IGJzb3VyY2U9c2VhcmNoX2JhaWR1OyBQVklEPTIzOyBmaW5nZXI9MTk4NDk4OTUwMTsgYXJyYW5nZT1tYXRyaXhcXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KSwgJ2JvZHkmJi5oZWFkbGluZS1yb29tJiYubnVtLXR4dCYmc3BhbiYmVGV4dCcpLnJlcGxhY2UoXFxcIlxcXFwoXFxcIiwgXFxcIlxcXCIpLnJlcGxhY2UoXFxcIlxcXFwpXFxcIiwgXFxcIlxcXCIpICsgJ+ebtOaSremXtCcsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgfSk7XFxuICAgIH0gY2F0Y2ggKGUpIHt9XFxufSBlbHNlIHtcXG4gICAgdmFyIHBhZ2UgPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXG4gICAgdmFyIHVybCA9IFxcXCJodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS9yb29tL3YzL2FyZWEvZ2V0Um9vbUxpc3Q/cGxhdGZvcm09d2ViJnBhcmVudF9hcmVhX2lkPVxcXCIgKyB6YmtleTEgKyBcXFwiJmNhdGVfaWQ9MCZhcmVhX2lkPVxcXCIgKyB6YmtleTIgKyBcXFwiJnBhZ2U9XFxcIiArIHBhZ2UgKyBcXFwiJnBhZ2Vfc2l6ZT0zMCZ0YWdfdmVyc2lvbj0xXFxcIjtcXG4gICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsKSk7XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwganNvbi5kYXRhLmxpc3QubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIHZhciByID0ge307XFxuICAgICAgICB2YXIgaiA9IGpzb24uZGF0YS5saXN0W2ldO1xcbiAgICAgICAgci5waWNfdXJsID0gai5zeXN0ZW1fY292ZXIgKyBSZWZlcmVyO1xcbiAgICAgICAgci51cmwgPSAnaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20veGxpdmUvd2ViLXJvb20vdjEvcGxheVVybC9wbGF5VXJsP2NpZD0nICsgai5yb29taWQgKyAnJnBsYXRmb3JtPWg1Jm90eXBlPWpzb24mcXVhbGl0eT0wJyArIGBAbGF6eVJ1bGU9VGV4dC5qczpKU09OLnBhcnNlKGlucHV0KS5kYXRhLmR1cmxbMF0udXJsYDtcXG4gICAgICAgIHIudGl0bGUgPSBqLnRpdGxlO1xcbiAgICAgICAgci5kZXNjID0gJ1VQ8J+Qt++8micgKyBqLnVuYW1lO1xcbiAgICAgICAgci5jb2xfdHlwZSA9IFxcXCJtb3ZpZV8yXFxcIjtcXG4gICAgICAgIGQucHVzaChyKTtcXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3nm7Tmkq1cIixcInBhdGhcIjpcInpiMlwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxudmFyIFJlZmVyZXIgPSBcXFwiQFJlZmVyZXI9aHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tXFxcIjtcXG5pZiAoTVlfVVJMLmluZGV4T2YoXFxcInNlYXJjaF90eXBlPWxpdmVfdXNlclxcXCIpICE9IC0xKSB7XFxuICAgIHZhciBsaXZlID0gcGFyc2VEb21Gb3JBcnJheShmZXRjaChNWV9VUkwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ5LjAuMjYyMy44NyBTYWZhcmkvNTM3LjM2XFxcIixcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogXFxcIl91dWlkPTgyNDY3MzczLUM2QTEtNTdCQS1BRTAyLUE5QTZEMTc3Qzg4Nzk3MjQ4aW5mb2M7IGJ1dmlkMz0xN0M5QTJDQi04NTBCLTRDNzMtQjlERS02NERCMEU2REJBQkIxNDMxMDVpbmZvYzsgc2lkPWN5OTYxZnE3OyBycGRpZD18KHV8SkopfGt+bHwwSid1WXxZfHVrdW0pOyBMSVZFX0JVVklEPUFVVE84ODE2MDYxMDIyMTkzNDIwOyBic291cmNlPXNlYXJjaF9iYWlkdTsgUFZJRD0yMzsgZmluZ2VyPTE5ODQ5ODk1MDE7IGFycmFuZ2U9bWF0cml4XFxcIlxcbiAgICAgICAgfVxcbiAgICB9KSwgJ2JvZHkmJi5saXZlLXVzZXItd3JhcCYmbGknKTtcXG4gICAgZm9yICh2YXIgaSBpbiBsaXZlKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBwYXJzZURvbUZvckh0bWwobGl2ZVtpXSwgJy5pdGVtLXJpZ2h0JiZQJiZUZXh0JyksXFxuICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20veGxpdmUvd2ViLXJvb20vdjEvcGxheVVybC9wbGF5VXJsP2NpZD0nICsgcGFyc2VEb20obGl2ZVtpXSwgJ2EmJmhyZWYnKS5zcGxpdChcXFwibGl2ZS5iaWxpYmlsaS5jb20vXFxcIilbMV0uc3BsaXQoXFxcIj9mcm9tXFxcIilbMF0gKyAnJnBsYXRmb3JtPWg1Jm90eXBlPWpzb24mcXVhbGl0eT0wJyArIGBAbGF6eVJ1bGU9VGV4dC5qczpKU09OLnBhcnNlKGlucHV0KS5kYXRhLmR1cmxbMF0udXJsYCxcXG4gICAgICAgICAgICAvL2ltZzogcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICcubGF6eS1pbWcmJmltZyYmc3JjJykgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgIGRlc2M6IHBhcnNlRG9tRm9ySHRtbChsaXZlW2ldLCAnLml0ZW0tcmlnaHQmJi5zdGF0dXMmJlRleHQnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3BpY18xJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59IGVsc2Uge1xcbiAgICB2YXIgbGl2ZSA9IHBhcnNlRG9tRm9yQXJyYXkoZmV0Y2goTVlfVVJMLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBcXFwiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV09XNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS80OS4wLjI2MjMuODcgU2FmYXJpLzUzNy4zNlxcXCIsXFxuICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IFxcXCJfdXVpZD04MjQ2NzM3My1DNkExLTU3QkEtQUUwMi1BOUE2RDE3N0M4ODc5NzI0OGluZm9jOyBidXZpZDM9MTdDOUEyQ0ItODUwQi00QzczLUI5REUtNjREQjBFNkRCQUJCMTQzMTA1aW5mb2M7IHNpZD1jeTk2MWZxNzsgcnBkaWQ9fCh1fEpKKXxrfmx8MEondVl8WXx1a3VtKTsgTElWRV9CVVZJRD1BVVRPODgxNjA2MTAyMjE5MzQyMDsgYnNvdXJjZT1zZWFyY2hfYmFpZHU7IFBWSUQ9MjM7IGZpbmdlcj0xOTg0OTg5NTAxOyBhcnJhbmdlPW1hdHJpeFxcXCJcXG4gICAgICAgIH1cXG4gICAgfSksICdib2R5JiYubGl2ZS1yb29tLXdyYXAmJmxpJyk7XFxuICAgIGZvciAodmFyIGkgaW4gbGl2ZSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICdwJiZUZXh0JyksXFxuICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20veGxpdmUvd2ViLXJvb20vdjEvcGxheVVybC9wbGF5VXJsP2NpZD0nICsgcGFyc2VEb20obGl2ZVtpXSwgJ2EmJmhyZWYnKS5zcGxpdChcXFwibGl2ZS5iaWxpYmlsaS5jb20vXFxcIilbMV0uc3BsaXQoXFxcIj9mcm9tXFxcIilbMF0gKyAnJnBsYXRmb3JtPWg1Jm90eXBlPWpzb24mcXVhbGl0eT0wJyArIGBAbGF6eVJ1bGU9VGV4dC5qczpKU09OLnBhcnNlKGlucHV0KS5kYXRhLmR1cmxbMF0udXJsYCxcXG4gICAgICAgICAgICAvL2ltZzogcGFyc2VEb20obGl2ZVtpXSwgJy5sYXp5LWltZyYmaW1nJiZzcmMnKSArIFJlZmVyZXIsXFxuICAgICAgICAgICAgZGVzYzogJ1VQ8J+Qt++8micgKyBwYXJzZURvbUZvckh0bWwobGl2ZVtpXSwgJy51bmFtZSYmc3BhbiYmVGV4dCcpICsgJ8K35Lq65rCUJyArIHBhcnNlRG9tRm9ySHRtbChsaXZlW2ldLCAnLmxpdmUtbnVtJiZzcGFuJiZUZXh0JyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMSdcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIkFQSVwiLFwicGF0aFwiOlwiYXBpXCIsXCJydWxlXCI6XCJldmFsUHJpdmF0ZUpTKFxcXCJGMzFnNTRwUHBiTjNwSFBOOU5UM0QwelF2RWpKWHdScmZSaUptRUJ1ZlVRQTJISFd0UUxSaEF3cVNNek1VZElBUkJNS0JiUHQyOGpCNnR5dVl4WE9mM0M3K1Z6UEQzTkpFZVl5MjRPZlRtU2dzUjRTSGlQUjNKME9pZlFNbVRCTE10ZjFkWDNrMXkvOFd1b1hQTVFuQ1hYRE1ROTdod2V6b3Q1MklPeUtzRzY0T3E1YUdGTjVkaXFUMXRtMjlTcC9HcnRWSlg4Znlqb05xNFRycGZ4aUhzVVcxU1lzMmhmY3MzSmpOa05PdVEycFdiUDJzcG85Y1VMNlpPaFl2V3l4Qk1FZzJrUERFVDZ2UXVhRlFueFJJcEF1bFhKRE11ZkFPdnptTjVjMFJVaU9qcGo1NHk4U3FlNmcxL0ZjbTY0NFd5UEZNeFc4YjREV2ZUaVg5ZERkSUJkbzJTTG5EMThvU3VPQzU1d2VnOCtYUVNvcW1leTNYdDMzdTdTM2FLcmlDVVlPMkhDd3pLdTJkZnVucGUwTE9VbHYvdW1kNXBkeHkvNlVNS1RITUNZPVxcXCIpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpobXpnaIt5LiA57qn77yI5ouT5bGV77yJXCIsXCJwYXRoXCI6XCJuZXdkZXRpYWxcIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbnZhciBSZWZlcmVyID0gJ0BSZWZlcmVyPWh0dHA6Ly93d3cuYmlsaWJpbGkuY29tJztcXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnKSkge1xcbiAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcsICflvIDlkK8s5YWz6ZetJyk7XFxufVxcbnZhciBzX3R5cGUgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0Jyk7XFxucHV0VmFyKCdyZXBseV90eXBlJywgc190eXBlLnNwbGl0KCcsJylbMF0pO1xcbnB1dFZhcignbGlrZV90eXBlJywgc190eXBlLnNwbGl0KCcsJylbMV0pO1xcbi8v6aKc6ImyXFxudmFyIENvbG9ycyA9IFtcXFwiNFxcXCIsIFxcXCI1XFxcIiwgXFxcIjBcXFwiLCBcXFwiMVxcXCIsIFxcXCJBXFxcIiwgXFxcIjNcXFwiLCBcXFwiOFxcXCIsIFxcXCI5XFxcIiwgXFxcIkJcXFwiLCBcXFwiQ1xcXCIsIFxcXCJEXFxcIiwgXFxcIkVcXFwiLCBcXFwiNlxcXCIsIFxcXCI3XFxcIiwgXFxcIkZcXFwiXTtcXG52YXIgQ29sb3IgPSAnIyc7XFxuaWYgKGdldFZhcignWVMnKSA9PSAn6ZqP5py6Jykge1xcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykge1xcbiAgICAgICAgdmFyIG51bSA9IE1hdGguY2VpbCgoTWF0aC5yYW5kb20oKSAqIDE1KSkgLSAxO1xcbiAgICAgICAgdmFyIENvbG9yID0gQ29sb3IgKyBDb2xvcnNbbnVtXTtcXG4gICAgfVxcbn0gZWxzZSB7XFxuICAgIHZhciBDb2xvciA9IFxcXCIjRkE3Mjk4XFxcIjtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0SGVhZCh0aXRsZSkge1xcbiAgICByZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIicgKyBDb2xvciArICdcXFwiPicgKyB0aXRsZSArICc8L2Zyb250Pjwvc3Ryb25nPic7XFxufVxcbnZhciBwYWdlbnVtID0gTVlfVVJMLnNwbGl0KCcjJylbMV07XFxudmFyIHJ4ID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0Jywge30pO1xcbnZhciB3ciA9IGBAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLGlucHV0KTtyZWZyZXNoUGFnZShmYWxzZSk7XFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcImA7XFxudmFyIHNfdGFiID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0Jywge30pO1xcbnZhciBzciA9IGBAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHRcXFwiLGlucHV0KTtyZWZyZXNoUGFnZShmYWxzZSk7XFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcImA7XFxuXFxuaWYgKHJ4ID09ICfmjpLooYzmppwnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3BoYlxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ1VQ5Li7Jykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS91cFxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+aXtuWFieacuicpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uvc2dqXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn5paw55WqJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9uZXdiZ21cXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfntKLlvJUnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3N5XFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn55u05pKtJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS96YlxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+abtOWkmicpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvbW9yZVxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gXFxcIua8q+a4uFxcXCIpIHtcXG4gICAgZXZhbFByaXZhdGVKUyhcXFwiTm0wN3dJWjhVZFF5NDFTM2dDekhaRDFaNXJMZ0cxMlRONFhKMWVpY3Z3NGNpYkh2OTV6TkdtQkhzdUdUSXZiVWNoeVdYd1dNandxT2pHYWZPWmh1dUdIYjFqOS9LcFZrOGl2dHhxUnVVVDE1ZWRMUlNqWm5BQUZmemwzNVZiM2FrYXcwM2lGKzJuN3cwcm9sYjhZOGJXcDNOcVFxNjNGSEp4ZTNiZDRsemRTdmcrWG0zakVWWkl2a09VUGc0QW83VFRpUi84VWE0MzFUMVIyZXJhVGJnTkhDLys5cnhSODhjZW4zT3ZaVkNDSjNORmUrYjZzRW5mUUpxbytZRm4waDFZeVFOaFdsaGRJZ3dDb292MXdOS3Z6TmM1VTZsNkxKSUUvNGVaVzA3NnhBdnVHVzdWaVJ0ZDk5TmxLM2hicmM3d1BrVjErbjNBcU1QeU4wMDl6Q0xFU2dLYVlqbG44SThNZTZBcVJrRlN1elVNRE8za2NyV21pVzZ3eUdqMzg0Z1ozRDFhNUI0ZVZ6VHRqckNLbGt0R3hlQnVIZ1pIT0pRcFBLZXhaM1d4aWFiaDViS3Nib1U2QURXKzR2djZaVFBubThwL2tWSkxUakhhTGQxaGZUK0FpMTVCY21HVkRxRkhSQXhPdzdEQmkyM2pIbHFhczRsNm8zb1NJVXg0RS9TTUVuYkRueCtrNGp3NFlTZ21nNjZSekZ0TmdaK082emlLWDZNUEJhVUhKT29rVDRodFZvbzJGTmIxMGthRnhyTGJ5eFRjQ0JJL1FLditrdkdLUTJidjd2UnNGYUVOa0hGa0xaTkxORHg4blA0NjAzZi9wNXJKbHE1STRyYnF2TXZyUjFmbHhkZUVzODNrdERyZWpxaHBYMkhZb3g1WGplTmVwU1dBbFNlZWZnU1IxdGs5d0I5clVDdkQ1MUZDUWNBT2RqMGZJdWxad2lYK016WkZYNWZlVG5ma0FHdW94Sjh4eW0yZkMwaTlEeHdRRTJrZDZlcGZLRkpzT0l2VXViVmFML2JEK0pHaVhIa05vajZ1ajc1Y244MlQveFUrNXk3TVZacmwzaFljOW1Yc2dPZHBJTmgvSmd1bmVhTGx6L2N0ZnprVkZhUFN2YW1Ja2FFM0txRTVRNHN2dlIvRXlLbHZKSVUwVUt6OS94OElXK2U4blRnSy8yMVhRMW1DMVYxOTdVNWQvQkZlRnFCeG00d2lGSGtCRWlUNGt3V0JTeEEwTGdydWwrc1dtams0ZGtiY01wa1dDOEFySzgrcGFlQkNqT3NNaVY0NERyVFNCemlpZGozU1lRQS9GTG5hbW4zTVFHWHpMelovWEFmemsxMnBabC9xVTByMy9TYnAzeW9uajYzSDljZVNxRFMxM2N6SVRKUDJZNTdxTE04K3RwZk8wU0REb3VvQlpPNUZCb3JwbGUwaHJ6U3l6QXhtbGoxclozN3g5RDRTR2tRdGhnNVNsOWVNTVNhc1l4Y1M1TDBDZWNEVE9yTEZoVUhzVTJYS2hvTmJhTFFoY1N4RGRUYUJvdGZCNDhYRXp1V2hVNlgxY2JQWlo1azlhUWwzaTQxcHVBVkFTN3RvQnEyRzRPSmVuOXFTOGpwQXpDYnhDdUFObWpuL3pabWx6LzJYalY3YnpkV3p3NnVLYWpRdDJWdmhWSUhqcE4zQzBFYWtLR0tMN2tpdXBWTlM4L0xMRTVFOUhZSVlJd2FSQzBlcUVBbWR6dGtRNDVlVXEwVHl5ai80K1dUWTNNbWZiREJzV0E1VzFxSzFabFVlWGx3bDFmT09TZjBCMDgrMmxsU0g3cUgvQ0E4UmF6VTFpcG1IU1BJcHh5dys5dHpwbzB2Sk9UTzRwUTE4bGlDTW94RW9MbFk1TDcrZDlmeFJpbHAwUm85L3pXL1A3M3pDT0FCQ0VzM0ZjendqeTJVbHlDU0I3ejRnUE0xSnpsU21SR1gzaU0vM3lGTTdvd3dReUZyNzd6SkpLdHAwaXVnL21ON3hkYlJCbnJRYjJiMi9wWVBEV2JIL3lJcE91bDJpVmlYYWVtYTJWUXM2cUttMHhOdVpNcU9yOHRWcTc3VXpHcCtGWWZhVG5YVEdrV0t4ZWdHNXNpNFc0d244YXE1NStiUDZFQkpYeGp3VEFEQXg4WVArWGtpSzJuZ0V0YmdXdXpwWmhpQVlERVhCc2N2alpaaUxvdGNFQmdJcUg3eXpFdHBacDJZNCtZSG9GUUJ2VFFsei8rbTlkTzJMTmErUW81S3l0WXM1bG1LMjFjQ1VHb2ZQM1JXUjUzTHZzc0E0M25YcUprczA3cFhnbm80YWU2T0xvd0xqMDVZQU9YNXRRZGpOeFNvQXRacExoTXZTZjE0NDkzZ3MrY0hHNEdGblo2N1VoY0N0bzVnSE1DU0d2TjlkRGVYNUpkaEJySTU2WVVxY293eGlxRGg2MzJFcTdsR2lqdXczQmFQMUszdm9obzdBNWdzc2pzdE11VW9hU1NVb0tvV0FHQjJnYWh3anUraFVTNm1yS0czTnRtc2ZoTmxZb0o2d2lSUkZHeGNFTVVTQmgwM3Y1MjBreXlpZm9wZ2dCRUVQNHVNSW1VM0tCalc5T0RHZTNlaDROMk03MWJWWGJxaUtVVmpKY1ZuNi9zUWNUd2dKVWhkeDlEczhtKzl5WWk1WW1yNDczSENKN1F1YzMwWEtRNXp0V0NpcjBHMk1QdU02c0YxYjFZWFhzVzFrK3p0UDRoMUV2QTdyRzR2aG02Qi81ckd6K2xPVEczV2NqcTlNanVnTFFlTzNHRzZNdGFjdkdGT0h3ZFFiTDBYSlQwN1BzMmRBa3ZkWk5qdmZWYjFaTmlvcFY3TmErZytMQ1IySWV2dThkNUQwTEM0WXQ4anVBSHRpM1BsdU9YbWtXbUNGYjA2RURTRUd5Ty9SVU9KdDFRbTJRQytEbG9pRXBlbEIxcE91UkpRVVVGQnNsaVcreWFqL1hnRWkzbk5BM3VUd0puTEtnbGFjclExclpjZnI4QnNoUnpocVFsdHhkYmhXeGZrOFFLdklqSjRMRjFhZW1VR0IvamUzWnRveGgzdE10eE9KQ2ZCMHFlVWpIVWx5bXNjcXl5R29TWktPanhEeXZDOStHd2FjZEc0ZlVrTnlPa3RQUE15YnMvWnJtWFBJZVZxeUJ4b252T1hNL2JEYnB6MHJwOEcxWmVJMHJTb1JsdjExdldOc1BncjZzeW56ZEhZQmE4elBXSWxnVjBaMGg5SE5NbXZMbFZQTXZ3M2UrL2dYRjBmTEtoczloNGpUSGt6M0VyOWp1NEVtRW5GcU9mdWNHL1NDQ3M5ME50a29LUy81dFNyLzAvZTJIcW54UkxURCsxN1EwbFpudmJuNWZ5KzRHalJETzVMSldmeGZXdUtVaytiUTVMMWN5bVo5MXgvODIyZUU1YW9HclVlN2p4L1FkRkRCWGw3Skt0SlhZQnhtRVZhUklQNEN4QU1GcXpkT3llVlN2dHVrd0Z2N0d0MFYxVmppN1hvQy8zd1NKRlI2M2FtM000WllFekFjV29sU0V2YnNXL3NhM1JYVldPTHRlZ0wvZkJJa1ZIb1NOUmhiUlBFRTZpNkJzVUQ3cUtDaTEvZWdKVGpGMEo0S043UFJoR3k3YlRJT1R1K1lhL2Y5TGFkWDFBOGJMc1lzeGxUYk5xVm82SnpQWmFwaWNOY0NkSFBNMmFoNzhlQXR0U2FoVkNFYi9sM1pxaTJoRmtpWko4Z3hQQzBQWTdydG10UEFhWDR1SnNOZ2FCMEJUbHhzbEMxT29Ka0VsTjdHYnAxckJjdEd1VXc3cEwrUklPVFFrQ1lsK2EwVW4yZW1vSHdOdWJxRitKZDVjTzJwd1VvejAzalprOFUzbVdHbWpJcmNjak14QWUvcnR3eXNQNjNiNmlHN003dkxwT254VjN4dkN5ZEtUd21UZGkwbDZDMHozbzV0cXkycGtsN3VqMThEVmVWQ1hDNFZHNTZGK3ZQOEU5VkVNQWwvekNjakkycW1xbHVhNytoM2JybEhnNzk4QVJtNGJkTVBPbWZ5ZG1UR0IwZjdocXpadjE0QjMvY1dZcmFkd080ZXIxOVpiZlZZK3Y5UEpZcjZXT1U2MmlIUmo2WCtTS3R0UFdSK2xZSTAzaXRNcjhEdkY2eEdDK3hwK2hXK3Yvei85ZnJjODFJY0dNSVNlOE1IVFdpWGpBM1BoT1ErZXdINm5mUmVFTlRQVmFCcXJDdGtobk5kaWM4VTJoYzFjd2xGTHo3Zm9MZVl5eU84aWVkWGVGV09PK3FYN2p6OXVuaEl4YWxCaU1JdnNHN0pQOTRkZGp6M244Zk1UYjVNUEJvWDVGY2FmNFpCU3dYZDk4NDRvQjBCMXFvcEVLU2JCcVp4VjlZUSt3cGppbnZMdnY4b0NTdjI2YVlUc3ZFYlhzVGUrTTRBQ1gwdGtVbHJBNmkwNFo1eTZwYWxvWllObThwRFRzSnJrMGptOTU0L1k4NnBDK2dxMXVTZFREa1o2WVpyK0tuSEgzNmRScm1OYVlsVExKRDZ2VlM3MktWa295LzlZYjRVWlIvaFRpVE5Vb0hpRWMvamg1cHlpNXYvbGdqMnRPMVJJZ3RYRXVjcDhYYmZpREJIemtMWlY3TmErZytMQ1IySWV2dThkNUQwSk15eGE0Tjg3SE9SMWZIekVXTjVuTHBjYUZ4bllJK3U0Zm13R2tOdUFhOHk2K1dvV1pxVVJSdUpmeGNBb0wvSW5SOHRSMjRwREtRTHdPaFQ4RHRycXlpN2ZjV2x2NG9HWU16cWxBYVNuWjhFdnIxWU91YnRVREhoRlVMalhZNStPK3d1cXorY3pZWU0vRk5KR1VSS0haY2k4RGZMeVBIRU84VmUwOG5oSGxzWXhZT2FwYWpBL2dCT2NweEQxRzBtQmVBYTc2cTBJY3pDU3NSNjVieE10MFlWY25qOG1wdDdvK3EyUjRBbU5Ka1ZFNGU1TGxZSVJpQ3VHTEdZdGQxT3ZqNzUwek8vbmlSeDJzcXJpTWFnVW9OM0J2RWF2a2xjSFpKcTk2N0hLSFJKU2VMWldUMjkyWUcvY2wzWTNleXgxMTZFTjRkMi9oZis3NGVVRTZscXprL2VnK1pTaDF5NlJJdDdKRmx1S2NYZXV4WldJd2RxcVk5TjgwL3NrSmdZdXB6TDI0bGxJb0NoZ3A4Y3dnQ3NkbWZVQzkvNm5ZREtJNnlidSt2QW5UWVdjNkttSUF4U0t1c3J0a1VGMVlBUTA5d2FwZkpmZlpWcThsUDY5Z3pIbTJJa3Y5a0d1dUhPVTlZWUhxQ0hqVjcrS3FJSncxcmVWdS82bnAydTZ2MGtBK3AxczZzMFhVaEtoWWdvTTJQQ1JNc05BcmZxYS9RRy9qZmx0OUxIWk1Xd2kxNUJjbUdWRHFGSFJBeE93N0RCaTIzakhscWFzNGw2bzNvU0lVeDRFL3lBZllIdXNjbFlQMFpMMk9rSjhiOU1ESWRXWTJxcUdPanEzaHJZWi81TWZMeFdLc0kybS9Ycy9hMkx4VVVRMm1QS2Vya3hqNy9MZ1dvSDBKQ0RCOE11OWx2eTBNSVNOWEdldXlPTSt2R0ZuZWN1ekRtN01RT0NFdW10YldSWEZtL2NmYk1UZVpSNVd0aVMzSkx4V1NucWtRNDZQL01IYncweVkvSHRHVWdZQ1QvTGNSb0IxYkk4T2ptSUI3UmRjR2VMYUtSQ2xGMDdzakcyVDMrT2FGSVVsOFdzZkNUcEF5UU1DUUhnTW9TQ21nNldFbUZ6NHRVZG01QXVKUjFQWkw1S1NKTFBGdStXMU9kR1lsOFhjSGtlajZGUzc2TEFYcHM5ODY4N2hBL211bGJtWFlLWVczWVhkbjZsRENrN2szRXlUY0VuV1lIbGhMZDFiM2VvOGRQanROTGd5UkcxTTRuRmlKdDB1YWU2SXF1ZDFMczdBSnVOMUt5VVpJeUJsd3UvajVxdkxxeG5SbGt2YWJuVkZOYTNOSXJ3bC9leldxNlZ2Z21iY0NpcGkrWDNHOWUxTjJqckNnM0paVnk5N1hVUGFWbE81MWxRZUIvRkJFeHVhVzFZR285SndWaHhrUVlmY1A0Y21DRU56aXdjZkhkVXhMUmJjMHFxb3REYW9Ydy9Cc0pTZ2lFSkZuNnI5Q0w0QW1jdXIrYlFWVTh6K0lTUDJUUUJXV3QyaTdkcWxweEdBWXczUGNIS1NuRXV6elBaVTR4NTJEV2VwRU5pbG5EWlBXdml4YjYxamJKR2tEL3hXWFJ3NzRFQmpFYm9iOTJkUEltVlhMT3VlQkpIdjdXR0tEOFcxQ3hGT0M5MWhqbU9BS1NUSGV0Z005RkREOTdIR3RnajlxejUybDkydXZSa0FNZFhQY0ErbE9CS0ZFQ0xYa0Z5WVpVT29VZEVERTdEc01HTHBEWEtPRGZPVHoxZkV0NG81VXdDQWV0VG1lZ0c5a0s1Um43VkduZFcxVzVaS0ZMVW1vemdUS3duVzNkZDZIS3JwbzNQYkl0UGR1U2ZseDVKaEtRZStGcUxnb1ZLRG12NGtmN2gzMUtyVlRyNE1YM2FPZUppUmdQbjBCMnVUTXJFRHd2QU9RMHZSL3hhRGFDR1owT0w1VTJ3bTZBeHdPQ2djTnM1SG5NOWFlaUtYU3FqSjBPejZpV25xZzdLbTBwaTFkVUs5NlZxb2doUjV1Z3Q2K2R0Y1ZWRTNlTncraHZ1R3FZYVJDK092YUV4cHFkeHBISUU3djd3RUFMREJqRlp4VjBPTjR1OXR4ZjNaaVFXNHlPazc2b1J0OFhlUjJ5OXc3Qjkrd1paVDkrSjhPRlAvN2llTTM3bW1SVEljR241RVU2LzRHdTFyQ3RGWDlUU3NYOGJYYXJQREM3dTBXLzlEOEQ4Y05YQ2VvY05Xd3hTSUFIQUppSFE5cUdrNG12QVZQdGZ6NVkvSkNoSTNCd3RtRm9udmVZQk41d2FoS3ZDc1E0NzZrQ3JWMU8rSk4vTklZdVdOSHMxUU9KTXkxTWl2eUhWY0h2SFExZzcxcFgzejBsR1VldFRtZWdHOWtLNVJuN1ZHbmRXMVdaUHdRbThCWWRLOGtzQkNwNzcvdEVTd3pKWHZmM0Fuemp2T0dKV3U2RXUwTHoyTXo4SmExUDNIWi93ZGxtUStINHFZUUZad0FSSWlISWhLRVN0aEV5bS9TeGZYQ2o2NHlOOGI0WVo3a2Vua1ZzZ3VsanFIWUM1aGo5emsvTWlmcXNnTHpoVktxK2FqTWJEVmkzYUJ0R3Q3MHdpWW5Cd0VjVTFNdEtid1F6K1Q2VGdUb202TDMvQnZaWU9TSkpBdk1ZWmR2R0xkcFpxcWRIbGxJcEZ4Mkp1NHJadHp4bkwzZGg3bXNvWmp0U2JHU1hKTnc4akVJUThmZTB4ZXFCWkZPMnpEZW9KV0tWQXFHTnhKTEVxS0lXQWRNUEZxSXVIaFpSWW1vQXpiWUdDSGxzcmlYOXFSTnVIcmtiNU1IKzN1WnkrSjNIME5EcS9JUEs0SmpLcFp1N29tdEtMRlcxdmQ3ZGkrYjdvVmtYVzJ4TDFNYy9sQ0o4L2FFTzdUMFg3Y09tMFExenFKN0ZyUFNaaHRyQ29Zcmw3aDFxL2xWck9xajJWenRlUklxM0xOcFhDVXoyWVdONHh3U0JPNFZPRit1ME5ZWjBmV2grOFY1U2lmSS9NQW1WbmlDVGhkMWVja1V4QklGN3R6MVNTWDBsRjYyT1REYjVPQi9FRGIveUJuaURyUU5Db0J6NzY5MjhleHdGUEc1RnNwU3FYMnRMcFdabDlWdUcrZHJEcjh2Y2RHcmpVenJGemZ2b0ZMR1hBQ2JOV0YzT0tYbllZWU9VU01BM2h0d3FWd2RuUHk1Ry9tTTgrTmNjV2NuZmduYWlnUXFianNqS3Qyc3MvZGx5ZzB0QkZCNWt1UU1tWC9URjhJRW1sZGJVa1l2eTExUmF0UHkwR2JFY0hrZ2ZhY0p0M3pXdVJqd0JTYkFIUUFYTU5PblJoWE5DVnNlK0JrUlpHWjRsOEFGVlpCeFF1MEZrcFdyNisrYlhyeU1MRWhLZDBnbnE0WHUvS0FQNWJuVklBcWRxZ1ZmbjlJMzdoUExubjFBT2VTdTRTUTJDZVMrVzJEWDhqMmRQV2xxWk1EUU84anN6UHJhL3NGWURaQ0FxWVJnOFBrTUN2S0dXZVJnMHpkdnZDVEhHRnQ3dUFMSW9ITE15ZG02L2tJZ0V3d3FCV1EycGszZ2RTRWNTcmdGVDVmTDFwMUFLUndiV2NNTVRMRHVabEN3cEZJSDVzTFZHT1piZlUrT0NNT2s1MFBZVDBVSllKT2cyUktod3FjQ2lEWFQySC9peUI0TGpIZjA5QnhmeFgyRUNIeTdIT09TNWZyODVMSzNtc1IzTytJcWxDbC9VaHpjTFV5cC9FMTBlWUVjQ01ISFdqeHdiSDVYSWJOWEVaKzdWYkdVcU51ZElqUERPRDdlZUpBL1loMlpmVGR4QlpVRFlvR0pVZmxVM3NEb1BPOXk1Y2dTdUN2VVA4KzZBV2FFNVR5bnE1TVkrL3k0RnFCOUNRZ3dmRExMSzh0STFsWnord2lmKzlaSUFkVDJJSFA1S1lnVFhTNVEvU1dDT2Jva25ZWitUQkZ4MW1lc0hHcWFxZ2pJWERIeFRyVHUvYkFxR2VFbG56ZDhsaG11L2F0ek44RklDTTNpUXhCMjRCcGRHRSs2MyswT280OWVMWFhLN2pOWGZlZkZ6NDhiaHRqWGNCL2xrYTZDaTJxR3FSL3l4UlZvRGVKSTFnREZya3Fnd2lTYmlIZjJobFFDcXY0UHF6RllKQ2tGd3BOdW9yeFdZRS9GSW9YSU1nelNDU2hZcnI1Sm02YjgzRG44d0RFVG9WM0FyNmFaK2V1SXc5ZzcyK2xLQTNITEs4dEkxbFp6K3dpZis5WklBZFQyYWtIWGdKWk15eHdiK0FGRjRiNG1iWnN6ajJyTmVLUDNBbjZrUkIwTWF5M09sREw3RHZ6enNPUW5LKy9iQ2M0bncvQnNKU2dpRUpGbjZyOUNMNEFtY3ZGMzEyQkppOGVYNFNjdE5EQnd3RTQ2SzY0T0FZSTB3Z1dHUm9qNVpicFFJTlZBTkdiR01EMVlRbHBjby9yM0EzYnhvU3F5eUk4bXRkY2dhZGl6TGN6ZHd2c01yYVNpYUNTWmtKTG44WU1GdktENGN0Z3BGdFo0dTlmc0NsL0JPdUpKNVJXQ3B0R0ZhUlJ5MElmdVlRRW9FMWU2WFJxQTU3YWtnaEp5YXdjb0tsU001SjFoTXlSTWlyNEEwbFRKQ1duSVExeDV3QytUNk9rTzM5eW04a28xVjhlNTBKemNrRHhJd2srdlhia1hiRXB4MnpLOGRndEdveEtUZ0dXajd1Rmd1NjVZOEpyYThXVXgxY1V4TFFZenZENFJISUdYRjhwTEZydVlCWXNFdXN3ZlpUT1YrY1lpUlA1MHNVZTNDSGJ4b1NxeXlJOG10ZGNnYWRpekxjeHhNZFlqL0ZKZ3BUN0ZhTTNobG9OTjArZzJsRFVjeWdQTmU3dEhRMlN1OGNzcnkwaldWblA3Q0ovNzFrZ0IxUFp5V3duUlpOTG9Ibzl4Wlc1Z3ZBTVZnNEtsUXhjMDQ0NU5DMkV1Rm1ISHBIeHZDTGlYa3FtSTNHeXoxOXBnZFpPR1JtUEhnbTdFUmw0eXFXUzI4aE1OSUhJaDFqcmEzQXBZejk3TWcvREhYSUtaQURsODZVVncvMzIwNVlSUlBPVVlSWHJHMWVGeVZ4TDhURENveDZjSWdVL29nVE1Rd0lDdEQzL1RIektwRG4vMjdiNDZRTUFvTlAyS2xyVCtkb09mTkxPVVVsamxXdEtrakZvK3hZZ0V5MUc5amtUUFRkQXRHKzd3NUJKNHQ1K0FUeVQwQ1ZJdm9JaVRGbFozaEprYjN3T0tkc2hBOEJIaXU2UndxR3kvRnU2MlZHb2RNOVhKYkJrMW0vUFNSd2JXcjhiSTlIMzNyOE5oV1Uxb3FRSXF3LzNLTmtzQnNJaTJSd3VROUZOUlFPSmJaNXNHeitYcVcwZFhzVVdZVm4xdjZoWWdwVVFPZ1ZWUktWYzRLaVNTOHNHb0VwYkFTdFBUMXVSb0c3NDhYdnF0VTVEMU53Slc3YW9ySkpNSUNxdVFVZnVKVWJzM3hPUlF5a1c5NFV5aDJkV1UycGp2MVYyN040WmxmMUdJQ3k2ZHJGdGFEZzZ4YmtqMkxkK0RNQ083amg4TWdxWVd3ZW1Bbm9jSkhYUjBTY2VDakhHOVhXREVvd3NNZ3NkTVpvdkFzeGM1QURKQS9WWndxK3hpb3ZGNlcrWHVsdGp1aUIxR1hzR0FGL1BMSzh0STFsWnord2lmKzlaSUFkVDIxQk9XZWEzMWJ2UWNRT0RjK2o1MFcvcmt2R21xbGtwWDJVRU4za29mWDM0clNrWHdaM3NudDZJUmNabDlIR3ZVanFVd0t0bHJOTkFXckFPcHR3aFQ4Qm8ya2pWSUdFNmxkREIwNTluMnpGQk1yR29yekxxMENqbm5kVzVORDBTUXlkdHFtYnhldStDendpdDBCTHpKQnplZ2E0cTdzRlJHSWRLZUc0Z002RkRmYmpCNE1FNDBKSEdycC9hYVVuWnZzanpkaHRaNGpOdi83QUwveDZROXRoMUdrRlk3YllJYzJXRXRYWGFYSldoOU0rcWNSa2tjSmtBaGRlakh5WmpGYk4ybnRkaU1zeUhKTFo5VVdhdGFXUzl4MGF1TlRPc1hOKytnVXNaY0FKdDJOOERVbmJiMU03Sklpc0JYb3dwVVl1V2wrYS9PRUg3ck0ySWhkK2EyWnNzcnkwaldWblA3Q0ovNzFrZ0IxUFl3aUgwZlJuQ3p2bGJoY2NJZElQTkVHNlZSS1czSk1sMUpDSDBKNnZEbG12aDVKMXlERm1oYkFtWHF1VjBCb3J6OFN3dEt3THRHcStQUGorTmZzZzFwWkNtQjhSYnVJRzh4SHdGRk42bWNsY0tHZjI4N0U3aXljSGZiRTl5K1VJQ2lIYWRrZytveWlXMFNzdm5OQ05lZkczYTk0M1VxL2xDK0p0TlJSaTNLWUlqRE51OGlhcEZ6OXBzL2JlYkkrYURMSzh0STFsWnord2lmKzlaSUFkVDJ6L2xyQTBOSmRlZlBHR0hPY3RiOGxpc2ZjSHpWRFFBaG5lY1pXRmpkQWFSN2t4L09mTlpHem9CRHB5d3lZNklFdFdYSW1BSE1JK215OUlVZVRxUkNKbjVLeU1tQ0ZVVm5NcU1xVXgwak9CNHRSSVBFWGtod1pQbzRZTVVSY0RoSTZ5YWVwK0NxcTJ1RU5vcGcwRHp4VDVyTHg4V3B2VHBOUENPWVNXSm02YzJoaEFZR09aNzZPVUFwTjVzRHlUQkJXTWt4WU5RU294cTl3VVJLT0dyM0lzc3J5MGpXVm5QN0NKLzcxa2dCMVBiVmRQbTZoNCs4VjBOMVZuZnA0bm5EZkc4SXVKZVNxWWpjYkxQWDJtQjFrNURvMGs1cVFNZ09GWG9EakNiZGVuQmRYdkZmcjN1S1J3N3hPRDFaekxQM1JJRGlLVVRqVkRPYTBiMzByTnZ1OXNzcnkwaldWblA3Q0ovNzFrZ0IxUGI1UjVPMzk2SjIyRnhrYlFia1hYQ3A1MTBUSk1FMitJeGhtWVExRFBMcUxjc3J5MGpXVm5QN0NKLzcxa2dCMVBiNVI1TzM5NkoyMkZ4a2JRYmtYWENwVGZJRjBaWDIwd0t5cXVlM2VXM1pVSjBBK1hVQld3RU04QnBma01VNktpTDJXcHJOMW5VNkpUcW9JQUNSMUNDVXlNK3FDSXBMaTJDbVpnVHhkNXZkQ0FRcTliWUpSWldEOXcwSks1UnlFZzBDM2VWWWdidDk0VkREd0EwcnlKa05MK3ZwZkJzTzdkUmp1UjM2ZmlvK3NIUWpVb3lvME42WmRsQmplb2k1UUhpcHlOL20wd054aGFWRlhLczE2VHRudFN3bUd1dXVscy9MR21EcE9CMVlYVkJEZTlWd2R5K0paRFRjaDlzVFp1SzVzcWdHQlprSHB1OCtnOVJ1WWlUM0J4L2dVeFpKa3gwbTRBdllLbzk3QVpIa2RiUDdoVzBaZThaZU8wYmpJblJ0SVMvKzEvOW9wKy9Yd0pIRTVuQ1lpYk43ZWprYklHVGRsYnlqNTRCVnJMbVNUYXNrL2VzWFFSS2c1MUg5ckhJVXltVVFyRkxrT29hdWErVW02WlM0bjd2ejNVbDlZRmtUYXlQZThDdklQS1dvNUZIWkt4ZVdaUXZ2Y2t0SE9MaUFqcjVWS1RFWklGSnZqOEVlSi8zQkZHVFRrUkxpbFRBeExRMU03NitFS2VlV0oyRk9UWjBqNUtBbUxRYzNqNGIwVXhoc1F4Z2thcVN5M1o5NWtJdEFJREp6OU5JVE5wRHNHTm55VnpudTlwMHJTVGZiY0tqT1hZV25mWGJzM2F2czN0WWpYMEl2ZDJqSTZJLzE3MWZBV1I5VFp0eVNSSlZHc0diOXh2L214SlBnNE5xbTJjT2dMQktURVQ3OFIrRlR6SU9kdWtEYVFJYWpneGlQbTdwOE5LREtQRDZSYXFBcVpwUlQ2bHNoQmRVUng2cVI2cUhaWlUrUXhFRURkUG9mekUyU0FRYUJ0YUhuTVlCbTFlYnNKNUsrMXlTM291UWNWZnZUSDFyWU9QWmFtczNXZFRvbE9xZ2dBSkhVSUpTNE9WUGRnbHFXRjk2WWErTklGNWcvY0hjS2E3aVpvSDdNYTU0MjA1RmxoZnFPRHlGdHN0dlBOdmxPZXA2UDJYVDJXcHJOMW5VNkpUcW9JQUNSMUNDVU43N3NQOWJicTdwRjdIVElIeXZwUUtKc0tELzV4ZHc3UEJqdmlMcFRWTlcybnZhSmt5S0F2ZlZ5YUw2NGdyWUJyODZvaU5PY1NKYnBKQTBSYnJSOGVPSWJZcnJVcFhYbkhoS2RlSmRIUHN2L1JvVlVwT2tOSHAyeTFzNVRxZFlrUCs1LzZWVWRHNFVCbzBuNVBMVjRWSHJPbFR2VCtTaCtGeklLbGpuRmRIQUVvV0UwZDAvaS9vUS9wcFBmaFVibVRhZmRiQU5GeURCNlBmZHIrQkdONDFxZ1k4ZkNibEUxUiszUDcrRkNsTVBMNW43T0hTVlpLMnM2UTYweEtQTTYwNVQ1TlV6dzkwb21GSzlTRm03aERGUkxyUk5PYkdnaUZPaDdFb0JDWjE1aFVkZVljR1ozdnVZcXJ5UXB2TUV2SVFjU1pUVHI5eHhnZ05ad1Z3eHd0WkszT2hRUTFYWEY5d2FkbGo1QWhxMTlURGRhN0NZQ1Rza1h5TDI1d2ZvemJmdjRObWZSTWkyTzQwWTUyUmlsL2RTNHRidDN3ZFV2K2owbHBEQW9zbmdUMEpyMWpwektFTUg3VkthR1hqalNJZzhqZFJvb1Z0Q25sWUQybW9xUTlQd3lrZ2lVRlJUS2dQYUhvTHdoY3Z2Mldwck4xblU2SlRxb0lBQ1IxQ0NVbGNhUmNhQnU3WDV6bUpsQ0o1SGp3cTh5ZWMyT1dIVjVES0RaWVpNVGlGSmM0R04zdHVKLzVqZ0JPZEFYUHlkRjlscWF6ZFoxT2lVNnFDQUFrZFFnbEU4UTlFS0Z0ZFhBUUYvdGR5UUdGWVZkZXVpZVB6dTVzYlFUUnVEY0V5eUg0UG9HZTQrQnl6cHRjSU1lR0VvWDhKbndCcGFYbU5EVUxiTkFrVlJENS85Z3ozTUVkcEJpc2hlaHhUaEhjNVZlN2gvYk9oMnh1aW1DQVpFVTY4bUMySHhKYmk3bWVkWnRXblFLTmZFeGdLTlJoWEVVbW9GNVQxaXNTcUFKRFoyWmpoWERGMGw1YXlmbEtSdHNrR0JUODZJQStLZnBlaDhoMXB4VlZUcjUvekQyMkUxaXR4TzM1UDNyMkF5RCs3V1E0TUtZdHN2MUh3RFpSWmwwcFd1S0EzdHRtVE5ZZ1M4ekpPdWM3NnVmQTVCQjFBNCtFMFljQ211ZS9sajhwR1ZldU0zM1RaUElLak1wUnU5cFZIUDJUcUdaTHdTYy8weno5UnJmUkc5SmZ3cTVzZ3JLcWZxYkxOUjNSOENhdDhCUHlZQVBxZXF5a2d1Q2NBcGVRL1h0SHVGUFVremVUM1ZFZ1grMDFId1JvWG9TK2IrZm5sVUVoYzhFOFZMRUJSVXdTOFJLVEwzR3AxZnJGTzZDMW94NjhNT3FqZnA5OHNjRThzUlZtdmM2alg1MEV5UTdyeXlpdWdjYUxsYnNubkRNOWxxYXpkWjFPaVU2cUNBQWtkUWdsSUdwTGhLbEcxazh4aXh4Y2tkUGdSd005c2tnd1QzRjJidGpNMTYxSzBsOHl5dkxTTlpXYy9zSW4vdldTQUhVOXByUWhqVXYrcTZsNXduaVNtalJUU3NDK3dnSGNuMnNpb1hndCtvYU16dDJ5eXZMU05aV2Mvc0luL3ZXU0FIVTloUGJKZkJXbXd0TWRvUEhQb1Y3ZWpTcFcrN2hPcGEzVkgrQm5XaXpoY0Y2eXl2TFNOWldjL3NJbi92V1NBSFU5dUE5Q1NXL3BGaTVMSmpGNUNvakZFQnNuNHQ3QlRmYmJacFN4blh5cThzRXpwUXkrdzc4ODdEa0p5dnYyd25PSjhzcnkwaldWblA3Q0ovNzFrZ0IxUFkwMFBWdm9NMmZXOEx4Tm1KWmo1ZlV5eXZMU05aV2Mvc0luL3ZXU0FIVTlzc3J5MGpXVm5QN0NKLzcxa2dCMVBhVG5pclNSbDkyWjFNTVduS3FQclZtcWh0TXJOSDVjNWwrNzV1NFZFblVrMVFJelkxeHVYR2tHVlgxOWR1WkdjckxLOHRJMWxaeit3aWYrOVpJQWRUMnl5dkxTTlpXYy9zSW4vdldTQUhVOW5DK2YzWDNqRldrSW5Vdlp1RitRVFVFUVNrRXk4b3Bqb3FvZkptYnpEbTNBV0NqQUUzb0tvRFRzekF1T0o4MCs4c3J5MGpXVm5QN0NKLzcxa2dCMVBhclRtWW03b09aMXJ4bDBUSTFxSmRPaG5hRm5QMmxvQUQzcm5KRUpGUG9WTXNyeTBqV1ZuUDdDSi83MWtnQjFQYkt1Z0ZpeDUyMTNHcENPKzhYVnlRRWJXUTBBQlNpaTM0MU9KUzdqOVpCdFppQ3ZWVFExTm8zV3BoUjFMd01aeWpON0N3QXloTEEzRjFnSUNMUjlMSUJ5eXZMU05aV2Mvc0luL3ZXU0FIVTl2SXd3UTFWSFJxMC9ZRjIvWGVudHFQTEs4dEkxbFp6K3dpZis5WklBZFQybnVFTVlwOW1vckpmYWpCRUZLZTVzRmYzVi9KSEZrMWtBZDREbDEvUTE1WFZ5SE91WGZIWnJhUHMwMS90UkFVNWpGZzVxbHFNRCtBRTV5bkVQVWJTWU1zcnkwaldWblA3Q0ovNzFrZ0IxUGFGUkVBc3g5eGt0STFyeFdoTE5aUUF6cFF5K3c3ODg3RGtKeXZ2MnduT0o3bmhIMEk2cXZYTHo5RkM5WUdYVzM1dnRNRENySEZiemxsZUlCMmNlRVd3eXl2TFNOWldjL3NJbi92V1NBSFU5bC82dmpJTlJBSVg2NGUzTXd5QithL2kzcEx2clpoMllqWE9MRXpEb01zenl5dkxTTlpXYy9zSW4vdldTQUhVOXRoR0VSdmZQRkx3TlJEVlphelEzWTdDQVFibXdHbERFQWZPaXlxdHFMUTlRWGh3VkMycDRPcTh2djNVVmVUZHhNSUJCdWJBYVVNUUI4NkxLcTJvdEQzaXlQZldLd1FRZGFhS0ZBOEc3bWtNQWFQdXFHeDduU0NteXdvdzlNUGczM214dWJBYVRQOTE4RlNIelhhUTFQanNNWG13eDcxUTd3ZzRBZG8vZmJyaHpPV2Q2TzhUUnp0VWUxODBMMnE5NkVsVVd1Nm1ET2NGaGx6ekprTnd2c0pTQTVOMm9Eb1ZmV2FhaW1GTGwySmRIbzNEV0ZQRTBUdHlsblhQRm5QaVIrcjZ5RUkya2NGT1piaDB4dUc5U1kvQU1SYkFIMDVKWWtpa3U0elY2THdTV0l1ZkZZZjRJV3lFck8yaFFyYVgxZGNnSEdrQXJoTGoycVFBNmwyQVVtQXBzTzRpY3NUc0FMb1hNaDY4RUJKUWJ0MmkwNmcxdk9rTGhCMVh6MTMrV0NRKzRTN09OWlpUcllkaVh5UGU0UTJPVC9mSXJQMHROejloV1RkQ1Jhb01FVUY5RzVyMjNLeCsvN09ONUlDYkdnVTRDV2xMMzQ1cGtrMXMyckFuYlh6RU9VbFZFUU1ZdWtwZ09ja1VZdUJ4S0VhZHlEUjJYTnZZSFBUVVNKNmNWUT09XFxcIilcXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeabtOWkmlwiLFwicGF0aFwiOlwibW9yZVwiLFwicnVsZVwiOlwiaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcbiAgICB2YXIgX3R5cGUgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+agt+W8jy50eHQnLCB7fSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+a8q+a4uCcgPyBnZXRIZWFkKHJ4KSA6ICfmvKvmuLgnLFxcbiAgICAgICAgdXJsOiAn5ryr5ri4JyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGdldFZhcignWVMnKSA9PSAn6ZqP5py6JyA/IGdldEhlYWQoJ+maj+acuicpIDogZ2V0SGVhZCgn6aqa57KJJyksXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ1lTJywgZ2V0VmFyKCdZUycpPT0n6ZqP5py6Jz8n6aqa57KJJzon6ZqP5py6Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/popzoibItLScrZ2V0VmFyKCdZUycsJ+maj+acuicpXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBfdHlwZT09XFxcIuaWsOeJiFxcXCI/Z2V0SGVhZChcXFwi5paw54mIXFxcIik6XFxcIuaWsOeJiFxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/moLflvI8udHh0Jywn5paw54mIJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8nXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBfdHlwZT09XFxcIuaXp+eJiFxcXCI/Z2V0SGVhZChcXFwi5pen54mIXFxcIik6XFxcIuaXp+eJiFxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/moLflvI8udHh0Jywn5pen54mIJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8nXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICB9KTtcXG4gICAgaWYgKHJ4ICE9ICfml7blhYnmnLonICYmIHJ4ICE9ICfntKLlvJUnKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6Ieq5a6aVUlEJyxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO2NsZWFyVmFyKCdodG0nKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOi+k+WFpeeahOaYrycraW5wdXRcXFwiLCBcXFwiaGludFxcXCI6IFxcXCLor7flnKjkuIvmlrnovpPlhaVVSURcXFxcbuS4jeefpemBk+aAjuS5iOafpe+8n2Lnq5nngrnlvIDoh6rlt7HnmoTkv6Hmga/vvIzplb/mjIl1aWTljbPlj6/vvIzor7floavlhaXnuq/mlbDlrZdcXFwifWAsXFxuICAgICAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn54K56LWea2V5JyxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYWNjZXNzX2tleS50eHQnLGlucHV0KTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JywnVVDkuLsnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOi+k+WFpeeahOaYrycraW5wdXRcXFwiLCBcXFwiaGludFxcXCI6IFxcXCLor7flnKjkuIvmlrnovpPlhaVrZXko55So5LqO54K56LWe5oqV5biBKVxcXFxu5LiN55+l6YGT5oCO5LmI5oqT77yf6YKj5bCx566X5LqGXFxcIn1gLFxcbiAgICAgICAgICAgIGRlc2M6ICfigJjigJjlt7LovpPlhaU6IOKAmeKAmScgKyBnZXRIZWFkKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYWNjZXNzX2tleS50eHQnKSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfop6PmnpBrZXknLFxcbiAgICAgICAgICAgIHVybDogYGlucHV0Oi8ve1xcXCJ2YWx1ZVxcXCI6XFxcIlxcXCIsIFxcXCJqc1xcXCI6IFxcXCJ3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcIiwgXFxcImhpbnRcXFwiOiBcXFwi6K+35Zyo5LiL5pa56L6T5YWla2V5KOeUqOS6juino+aekClcXFxcbuS4jeefpemBk+aAjuS5iOaKk++8n+mCo+Wwseeul+S6hlxcXCJ9YCxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHQnKSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgICAgIH0pO1xcblxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+ivhOiuuuWMujog4oCc4oCc5beyJyArIGdldFZhcigncmVwbHlfdHlwZScpLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcigncmVwbHlfdHlwZScsIGdldFZhcigncmVwbHlfdHlwZScpPT0n5YWz6ZetJz8n5byA5ZCvJzon5YWz6ZetJyk7cmVmcmVzaFBhZ2UoKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcsZ2V0VmFyKCdyZXBseV90eXBlJykrJywnK2dldFZhcignbGlrZV90eXBlJykpOyd0b2FzdDovL+W3sicrZ2V0VmFyKCdyZXBseV90eXBlJyk7XFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+eCuei1nibmipXluIE6IOKAnOKAnOW3sicgKyBnZXRWYXIoJ2xpa2VfdHlwZScpLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignbGlrZV90eXBlJywgZ2V0VmFyKCdsaWtlX3R5cGUnKT09J+WFs+mXrSc/J+W8gOWQryc6J+WFs+mXrScpO3JlZnJlc2hQYWdlKCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnLGdldFZhcigncmVwbHlfdHlwZScpKycsJytnZXRWYXIoJ2xpa2VfdHlwZScpKTsndG9hc3Q6Ly/lt7InK2dldFZhcignbGlrZV90eXBlJyk7XFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeS4gOe6pzJcIixcInBhdGhcIjpcImNvbW1vbjJcIixcInJ1bGVcIjpcInZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbnZhciBwYWdlbnVtID0gTVlfVVJMLnNwbGl0KCcjJylbMV07XFxudmFyIFJlZmVyZXIgPSAnQFJlZmVyZXI9aHR0cDovL3d3dy5iaWxpYmlsaS5jb20nO1xcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcpKSB7XFxuICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JywgJ+W8gOWQryzlhbPpl60nKTtcXG59XFxudmFyIHNfdHlwZSA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnKTtcXG5wdXRWYXIoJ3JlcGx5X3R5cGUnLCBzX3R5cGUuc3BsaXQoJywnKVswXSk7XFxucHV0VmFyKCdsaWtlX3R5cGUnLCBzX3R5cGUuc3BsaXQoJywnKVsxXSk7XFxuLy/popzoibJcXG52YXIgQ29sb3JzID0gW1xcXCI0XFxcIiwgXFxcIjVcXFwiLCBcXFwiMFxcXCIsIFxcXCIxXFxcIiwgXFxcIkFcXFwiLCBcXFwiM1xcXCIsIFxcXCI4XFxcIiwgXFxcIjlcXFwiLCBcXFwiQlxcXCIsIFxcXCJDXFxcIiwgXFxcIkRcXFwiLCBcXFwiRVxcXCIsIFxcXCI2XFxcIiwgXFxcIjdcXFwiLCBcXFwiRlxcXCJdO1xcbnZhciBDb2xvciA9ICcjJztcXG5pZiAoZ2V0VmFyKCdZUycpID09ICfpmo/mnLonKSB7XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7XFxuICAgICAgICB2YXIgbnVtID0gTWF0aC5jZWlsKChNYXRoLnJhbmRvbSgpICogMTUpKSAtIDE7XFxuICAgICAgICB2YXIgQ29sb3IgPSBDb2xvciArIENvbG9yc1tudW1dO1xcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgdmFyIENvbG9yID0gXFxcIiNGQTcyOThcXFwiO1xcbn1cXG5cXG5mdW5jdGlvbiBnZXRIZWFkKHRpdGxlKSB7XFxuICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiJyArIENvbG9yICsgJ1xcXCI+JyArIHRpdGxlICsgJzwvZnJvbnQ+PC9zdHJvbmc+JztcXG59XFxuXFxudmFyIGMxID0gJ2FsbCZiYW5ndW1pJmd1b2NoYW4mZG91Z2EmbXVzaWMma25vd2xlZGdlJnRlY2gmY2FyJmxpZmUmZm9vZCZraWNoaWt1JmZhc2hpb24mY2luZXBoaWxlJm9yaWdpbiZyb29raWUmZ2FtZSZlbnQmZGFuY2UmbW92aWUmdHYmZG9jdW1lbnRhcnkmYW5pbWFsJmd1b2NodWFuZyc7XFxuXFxudmFyIHcxID0gJ+WFqOmDqCbnlarliacm5Zu95YibJuWKqOeUuybpn7PkuZAm55+l6K+GJuenkeaKgCbmsb3ovaYm55Sf5rS7Jue+jumjnybprLznlZwm5pe25bCaJuW9seinhibljp/liJsm5paw5Lq6Jua4uOaIjyblqLHkuZAm6Iie6LmIJueUteW9sSbnlLXop4bliacm57qq5b2V54mHJuWKqOeJqeWciCblm73liJvnm7jlhbMnO1xcblxcbnZhciBjMiA9ICcyMiYyMTImNzEmMTgyJjEzOCYyOCYzMyYxODUnO1xcblxcbnZhciB3MiA9ICfprLznlZwm576O6aOfJue7vOiJuiblvbHop4Ym55Sf5rS7Jumfs+S5kCbnlarliacm55S16KeG5YmnJztcXG5cXG52YXIgd29yZDEgPSB3MS5zcGxpdCgnJicpO1xcbnZhciBjbGFzczEgPSBjMS5zcGxpdCgnJicpO1xcbnZhciBsYWIxID0gZ2V0VmFyKCdsYWIxJywgJ+WFqOmDqCcpO1xcbnZhciBrZXkxID0gZ2V0VmFyKCdrZXkxJywgJ2FsbCcpO1xcblxcbnZhciB3b3JkMiA9IHcyLnNwbGl0KCcmJyk7XFxudmFyIGNsYXNzMiA9IGMyLnNwbGl0KCcmJyk7XFxudmFyIGxhYjIgPSBnZXRWYXIoJ2xhYjInLCAn6ay855WcJyk7XFxudmFyIGtleTIgPSBnZXRWYXIoJ2tleTInLCAnMjInKTtcXG5cXG52YXIgemJjMSA9ICdhbGwmMiYzJjYmMSY1JjkmMTAmMTEnO1xcbnZhciB6YncxID0gJ+WFqOmDqCbnvZHmuLgm5omL5ri4JuWNleacuiblqLHkuZAm55S15Y+wJuiZmuaLn+S4u+aSrSbnlJ/mtLsm5a2m5LmgJztcXG52YXIgemJjMiA9ICcwJjMzJztcXG52YXIgemJ3MiA9ICfpu5jorqTlsI/liIbnsbsm5b2x6Z+z6aaG77yI55Sf5rS777yJJztcXG52YXIgemJ3b3JkMSA9IHpidzEuc3BsaXQoJyYnKTtcXG52YXIgemJjbGFzczEgPSB6YmMxLnNwbGl0KCcmJyk7XFxudmFyIHpibGFiMSA9IGdldFZhcignemJsYWIxJywgJ+WFqOmDqCcpO1xcbnZhciB6YmtleTEgPSBnZXRWYXIoJ3pia2V5MScsICdhbGwnKTtcXG5cXG52YXIgemJ3b3JkMiA9IHpidzIuc3BsaXQoJyYnKTtcXG52YXIgemJjbGFzczIgPSB6YmMyLnNwbGl0KCcmJyk7XFxudmFyIHpibGFiMiA9IGdldFZhcignemJsYWIyJywgJ+m7mOiupOWwj+WIhuexuycpO1xcbnZhciB6YmtleTIgPSBnZXRWYXIoJ3pia2V5MicsICcwJyk7XFxuXFxuXFxuXFxuLy/kuInlkIjkuIBcXG52YXIgcnggPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCB7fSk7XFxudmFyIHdyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsaW5wdXQpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiYDtcXG52YXIgc190YWIgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCB7fSk7XFxudmFyIHNyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dFxcXCIsaW5wdXQpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiYDtcXG5cXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxuICAgIC8vLnJlcGxhY2UoJ20uYmlsaWJpbGkuY29tJywgJ3d3dy5iaWxpYmlsaS5jb20nKS5yZXBsYWNlKC9cXFxcPy9nLCAn77yf77yfJykucmVwbGFjZSgvXFxcXCYvZywgJ++8hu+8hicpXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+ino+aekCcsXFxuICAgICAgICB1cmw6IFxcXCInaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JysnaHR0cHM6Ly8nK2lucHV0LnNwbGl0KCdodHRwczovLycpWzFdKycjaW1tZXJzaXZlVGhlbWUjJ1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgIGRlc2M6ICfor7fovpPlhaXnvZHlnYDmiJbogIVi56uZ5aSN5Yi255qE6ZO+5o6lJ1xcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAnVVDkuLsnID8gZ2V0SGVhZCgn6aaW6aG1JykgOiAn6aaW6aG1JyxcXG4gICAgICAgIHVybDogJ1VQ5Li7JyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmjpLooYzmppwnID8gZ2V0SGVhZChyeCkgOiAn5o6S6KGM5qacJyxcXG4gICAgICAgIHVybDogJ+aOkuihjOamnCcgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn5paw55WqJyA/IGdldEhlYWQocngpIDogJ+aWsOeVqicsXFxuICAgICAgICB1cmw6ICfmlrDnlaonICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+ebtOaSrScgPyBnZXRIZWFkKHJ4KSA6ICfnm7Tmkq0nLFxcbiAgICAgICAgdXJsOiAn55u05pKtJyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmm7TlpJonID8gZ2V0SGVhZChyeCkgOiAn5pu05aSaJyxcXG4gICAgICAgIHVybDogJ+abtOWkmicgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICB9KTtcXG4gICAgLypcXG4gICAgICAgIGlmIChyeCA9PSAn5pS26JePJykge1xcbiAgICAgICAgICAgIFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBzX3RhYiA9PSAn6L+955WqJyA/IGdldEhlYWQoc190YWIpIDogJ+i/veeVqicsXFxuICAgICAgICAgICAgICAgIHVybDogJ+i/veeVqicgKyBzcixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfov73liacnID8gZ2V0SGVhZChzX3RhYikgOiAn6L+95YmnJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAn6L+95YmnJyArIHNyLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMydcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBcXG4gICAgICAgICAgICBpZiAoc190YWIgPT0gJ+i/veeVqicpIHtcXG4gICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvZmFuanVcXFwiKSkucnVsZSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKHNfdGFiID09ICfov73liacnKSB7XFxuICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2RzalxcXCIpKS5ydWxlKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgKi9cXG59XFxuXFxuaWYgKHJ4ID09ICfmjpLooYzmppwnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3BoYlxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ1VQ5Li7Jykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS91cFxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+aXtuWFieacuicpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uvc2dqXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn5paw55WqJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9uZXdiZ21cXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfntKLlvJUnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3N5XFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn55u05pKtJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS96YlxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+abtOWkmicpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvbW9yZTJcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09IFxcXCLmvKvmuLhcXFwiKSB7XFxuICAgIGV2YWxQcml2YXRlSlMoXFxcIk5tMDd3SVo4VWRReTQxUzNnQ3pIWkQxWjVyTGdHMTJUTjRYSjFlaWN2dzRjaWJIdjk1ek5HbUJIc3VHVEl2YlVjaHlXWHdXTWp3cU9qR2FmT1podXVHSGIxajkvS3BWazhpdnR4cVJ1VVQxNWVkTFJTalpuQUFGZnpsMzVWYjNha2F3MDNpRisybjd3MHJvbGI4WThiV3AzTnFRcTYzRkhKeGUzYmQ0bHpkU3ZnK1htM2pFVlpJdmtPVVBnNEFvN1RUaVIvOFVhNDMxVDFSMmVyYVRiZ05IQy8rOXJ4Ujg4Y2VuM092WlZDQ0ozTkZlK2I2c0VuZlFKcW8rWUZuMGgxWXlRTmhXbGhkSWd3Q29vdjF3Tkt2ek5jNVU2bDZMSklFLzRlWlcwNzZ4QXZ1R1c3VmlSdGQ5OU5sSzNoYnJjN3dQa1YxK24zQXFNUHlOMDA5ekNMRVNnS2FZamxuOEk4TWU2QXFSa0ZTdXpVTURPM2tjcldtaVc2d3lHajM4NGdaM0QxYTVCNGVWelR0anJDS2xrdEd4ZUJ1SGdaSE9KUXBQS2V4WjNXeGlhYmg1YktzYm9VNkFEVys0dnY2WlRQbm04cC9rVkpMVGpIYUxkMWhmVCtBaTE1QmNtR1ZEcUZIUkF4T3c3REJpMjNqSGxxYXM0bDZvM29TSVV4NEUvU01FbmJEbngrazRqdzRZU2dtZzY2UnpGdE5nWitPNnppS1g2TVBCYVVISk9va1Q0aHRWb28yRk5iMTBrYUZ4ckxieXhUY0NCSS9RS3Yra3ZHS1EyYnY3dlJzRmFFTmtIRmtMWk5MTkR4OG5QNDYwM2YvcDVySmxxNUk0cmJxdk12clIxZmx4ZGVFczgza3REcmVqcWhwWDJIWW94NVhqZU5lcFNXQWxTZWVmZ1NSMXRrOXdCOXJVQ3ZENTFGQ1FjQU9kajBmSXVsWndpWCtNelpGWDVmZVRuZmtBR3VveEo4eHltMmZDMGk5RHh3UUUya2Q2ZXBmS0ZKc09JdlV1YlZhTC9iRCtKR2lYSGtOb2o2dWo3NWNuODJUL3hVKzV5N01WWnJsM2hZYzltWHNnT2RwSU5oL0pndW5lYUxsei9jdGZ6a1ZGYVBTdmFtSWthRTNLcUU1UTRzdnZSL0V5S2x2SklVMFVLejkveDhJVytlOG5UZ0svMjFYUTFtQzFWMTk3VTVkL0JGZUZxQnhtNHdpRkhrQkVpVDRrd1dCU3hBMExncnVsK3NXbWprNGRrYmNNcGtXQzhBcks4K3BhZUJDak9zTWlWNDREclRTQnppaWRqM1NZUUEvRkxuYW1uM01RR1h6THpaL1hBZnprMTJwWmwvcVUwcjMvU2JwM3lvbmo2M0g5Y2VTcURTMTNjeklUSlAyWTU3cUxNOCt0cGZPMFNERG91b0JaTzVGQm9ycGxlMGhyelN5ekF4bWxqMXJaMzd4OUQ0U0drUXRoZzVTbDllTU1TYXNZeGNTNUwwQ2VjRFRPckxGaFVIc1UyWEtob05iYUxRaGNTeERkVGFCb3RmQjQ4WEV6dVdoVTZYMWNiUFpaNWs5YVFsM2k0MXB1QVZBUzd0b0JxMkc0T0plbjlxUzhqcEF6Q2J4Q3VBTm1qbi96Wm1sei8yWGpWN2J6ZFd6dzZ1S2FqUXQyVnZoVklIanBOM0MwRWFrS0dLTDdraXVwVk5TOC9MTEU1RTlIWUlZSXdhUkMwZXFFQW1kenRrUTQ1ZVVxMFR5eWovNCtXVFkzTW1mYkRCc1dBNVcxcUsxWmxVZVhsd2wxZk9PU2YwQjA4KzJsbFNIN3FIL0NBOFJhelUxaXBtSFNQSXB4eXcrOXR6cG8wdkpPVE80cFExOGxpQ01veEVvTGxZNUw3K2Q5ZnhSaWxwMFJvOS96Vy9QNzN6Q09BQkNFczNGY3p3ankyVWx5Q1NCN3o0Z1BNMUp6bFNtUkdYM2lNLzN5Rk03b3d3UXlGcjc3ekpKS3RwMGl1Zy9tTjd4ZGJSQm5yUWIyYjIvcFlQRFdiSC95SXBPdWwyaVZpWGFlbWEyVlFzNnFLbTB4TnVaTXFPcjh0VnE3N1V6R3ArRllmYVRuWFRHa1dLeGVnRzVzaTRXNHduOGFxNTUrYlA2RUJKWHhqd1RBREF4OFlQK1hraUsybmdFdGJnV3V6cFpoaUFZREVYQnNjdmpaWmlMb3RjRUJnSXFIN3l6RXRwWnAyWTQrWUhvRlFCdlRRbHovK205ZE8yTE5hK1FvNUt5dFlzNWxtSzIxY0NVR29mUDNSV1I1M0x2c3NBNDNuWHFKa3MwN3BYZ25vNGFlNk9Mb3dMajA1WUFPWDV0UWRqTnhTb0F0WnBMaE12U2YxNDQ5M2dzK2NIRzRHRm5aNjdVaGNDdG81Z0hNQ1NHdk45ZERlWDVKZGhCckk1NllVcWNvd3hpcURoNjMyRXE3bEdpanV3M0JhUDFLM3ZvaG83QTVnc3Nqc3RNdVVvYVNTVW9Lb1dBR0IyZ2Fod2p1K2hVUzZtcktHM050bXNmaE5sWW9KNndpUlJGR3hjRU1VU0JoMDN2NTIwa3l5aWZvcGdnQkVFUDR1TUltVTNLQmpXOU9ER2UzZWg0TjJNNzFiVlhicWlLVVZqSmNWbjYvc1FjVHdnSlVoZHg5RHM4bSs5eVlpNVltcjQ3M0hDSjdRdWMzMFhLUTV6dFdDaXIwRzJNUHVNNnNGMWIxWVhYc1cxayt6dFA0aDFFdkE3ckc0dmhtNkIvNXJHeitsT1RHM1djanE5TWp1Z0xRZU8zR0c2TXRhY3ZHRk9Id2RRYkwwWEpUMDdQczJkQWt2ZFpOanZmVmIxWk5pb3BWN05hK2crTENSMklldnU4ZDVEMExDNFl0OGp1QUh0aTNQbHVPWG1rV21DRmIwNkVEU0VHeU8vUlVPSnQxUW0yUUMrRGxvaUVwZWxCMXBPdVJKUVVVRkJzbGlXK3lhai9YZ0VpM25OQTN1VHdKbkxLZ2xhY3JRMXJaY2ZyOEJzaFJ6aHFRbHR4ZGJoV3hmazhRS3ZJako0TEYxYWVtVUdCL2plM1p0b3hoM3RNdHhPSkNmQjBxZVVqSFVseW1zY3F5eUdvU1pLT2p4RHl2QzkrR3dhY2RHNGZVa055T2t0UFBNeWJzL1pybVhQSWVWcXlCeG9udk9YTS9iRGJwejBycDhHMVplSTByU29SbHYxMXZXTnNQZ3I2c3luemRIWUJhOHpQV0lsZ1YwWjBoOUhOTW12TGxWUE12dzNlKy9nWEYwZkxLaHM5aDRqVEhrejNFcjlqdTRFbUVuRnFPZnVjRy9TQ0NzOTBOdGtvS1MvNXRTci8wL2UySHFueFJMVEQrMTdRMGxabnZibjVmeSs0R2pSRE81TEpXZnhmV3VLVWsrYlE1TDFjeW1aOTF4LzgyMmVFNWFvR3JVZTdqeC9RZEZEQlhsN0pLdEpYWUJ4bUVWYVJJUDRDeEFNRnF6ZE95ZVZTdnR1a3dGdjdHdDBWMVZqaTdYb0MvM3dTSkZSNjNhbTNNNFpZRXpBY1dvbFNFdmJzVy9zYTNSWFZXT0x0ZWdML2ZCSWtWSG9TTlJoYlJQRUU2aTZCc1VEN3FLQ2kxL2VnSlRqRjBKNEtON1BSaEd5N2JUSU9UdStZYS9mOUxhZFgxQThiTHNZc3hsVGJOcVZvNkp6UFphcGljTmNDZEhQTTJhaDc4ZUF0dFNhaFZDRWIvbDNacWkyaEZraVpKOGd4UEMwUFk3cnRtdFBBYVg0dUpzTmdhQjBCVGx4c2xDMU9vSmtFbE43R2JwMXJCY3RHdVV3N3BMK1JJT1RRa0NZbCthMFVuMmVtb0h3TnVicUYrSmQ1Y08ycHdVb3owM2paazhVM21XR21qSXJjY2pNeEFlL3J0d3lzUDYzYjZpRzdNN3ZMcE9ueFYzeHZDeWRLVHdtVGRpMGw2QzB6M281dHF5MnBrbDd1ajE4RFZlVkNYQzRWRzU2Rit2UDhFOVZFTUFsL3pDY2pJMnFtcWx1YTcraDNicmxIZzc5OEFSbTRiZE1QT21meWRtVEdCMGY3aHF6WnYxNEIzL2NXWXJhZHdPNGVyMTlaYmZWWSt2OVBKWXI2V09VNjJpSFJqNlgrU0t0dFBXUitsWUkwM2l0TXI4RHZGNnhHQyt4cCtoVyt2L3ovOWZyYzgxSWNHTUlTZThNSFRXaVhqQTNQaE9RK2V3SDZuZlJlRU5UUFZhQnFyQ3RraG5OZGljOFUyaGMxY3dsRkx6N2ZvTGVZeXlPOGllZFhlRldPTytxWDdqejl1bmhJeGFsQmlNSXZzRzdKUDk0ZGRqejNuOGZNVGI1TVBCb1g1RmNhZjRaQlN3WGQ5ODQ0b0IwQjFxb3BFS1NiQnFaeFY5WVErd3BqaW52THZ2OG9DU3YyNmFZVHN2RWJYc1RlK000QUNYMHRrVWxyQTZpMDRaNXk2cGFsb1pZTm04cERUc0pyazBqbTk1NC9ZODZwQytncTF1U2RURGtaNllacitLbkhIMzZkUnJtTmFZbFRMSkQ2dlZTNzJLVmtveS85WWI0VVpSL2hUaVROVW9IaUVjL2poNXB5aTV2L2xnajJ0TzFSSWd0WEV1Y3A4WGJmaURCSHprTFpWN05hK2crTENSMklldnU4ZDVEMEpNeXhhNE44N0hPUjFmSHpFV041bkxwY2FGeG5ZSSt1NGZtd0drTnVBYTh5NitXb1dacVVSUnVKZnhjQW9ML0luUjh0UjI0cERLUUx3T2hUOER0cnF5aTdmY1dsdjRvR1lNenFsQWFTblo4RXZyMVlPdWJ0VURIaEZVTGpYWTUrTyt3dXF6K2N6WVlNL0ZOSkdVUktIWmNpOERmTHlQSEVPOFZlMDhuaEhsc1l4WU9hcGFqQS9nQk9jcHhEMUcwbUJlQWE3NnEwSWN6Q1NzUjY1YnhNdDBZVmNuajhtcHQ3bytxMlI0QW1OSmtWRTRlNUxsWUlSaUN1R0xHWXRkMU92ajc1MHpPL25pUngyc3FyaU1hZ1VvTjNCdkVhdmtsY0haSnE5NjdIS0hSSlNlTFpXVDI5MllHL2NsM1kzZXl4MTE2RU40ZDIvaGYrNzRlVUU2bHF6ay9lZytaU2gxeTZSSXQ3SkZsdUtjWGV1eFpXSXdkcXFZOU44MC9za0pnWXVwekwyNGxsSW9DaGdwOGN3Z0NzZG1mVUM5LzZuWURLSTZ5YnUrdkFuVFlXYzZLbUlBeFNLdXNydGtVRjFZQVEwOXdhcGZKZmZaVnE4bFA2OWd6SG0ySWt2OWtHdXVIT1U5WVlIcUNIalY3K0txSUp3MXJlVnUvNm5wMnU2djBrQStwMXM2czBYVWhLaFlnb00yUENSTXNOQXJmcWEvUUcvamZsdDlMSFpNV3dpMTVCY21HVkRxRkhSQXhPdzdEQmkyM2pIbHFhczRsNm8zb1NJVXg0RS95QWZZSHVzY2xZUDBaTDJPa0o4YjlNRElkV1kycXFHT2pxM2hyWVovNU1mTHhXS3NJMm0vWHMvYTJMeFVVUTJtUEtlcmt4ajcvTGdXb0gwSkNEQjhNdTlsdnkwTUlTTlhHZXV5T00rdkdGbmVjdXpEbTdNUU9DRXVtdGJXUlhGbS9jZmJNVGVaUjVXdGlTM0pMeFdTbnFrUTQ2UC9NSGJ3MHlZL0h0R1VnWUNUL0xjUm9CMWJJOE9qbUlCN1JkY0dlTGFLUkNsRjA3c2pHMlQzK09hRklVbDhXc2ZDVHBBeVFNQ1FIZ01vU0NtZzZXRW1GejR0VWRtNUF1SlIxUFpMNUtTSkxQRnUrVzFPZEdZbDhYY0hrZWo2RlM3NkxBWHBzOTg2ODdoQS9tdWxibVhZS1lXM1lYZG42bERDazdrM0V5VGNFbldZSGxoTGQxYjNlbzhkUGp0TkxneVJHMU00bkZpSnQwdWFlNklxdWQxTHM3QUp1TjFLeVVaSXlCbHd1L2o1cXZMcXhuUmxrdmFiblZGTmEzTklyd2wvZXpXcTZWdmdtYmNDaXBpK1gzRzllMU4yanJDZzNKWlZ5OTdYVVBhVmxPNTFsUWVCL0ZCRXh1YVcxWUdvOUp3Vmh4a1FZZmNQNGNtQ0VOeml3Y2ZIZFV4TFJiYzBxcW90RGFvWHcvQnNKU2dpRUpGbjZyOUNMNEFtY3VyK2JRVlU4eitJU1AyVFFCV1d0Mmk3ZHFscHhHQVl3M1BjSEtTbkV1enpQWlU0eDUyRFdlcEVOaWxuRFpQV3ZpeGI2MWpiSkdrRC94V1hSdzc0RUJqRWJvYjkyZFBJbVZYTE91ZUJKSHY3V0dLRDhXMUN4Rk9DOTFoam1PQUtTVEhldGdNOUZERDk3SEd0Z2o5cXo1Mmw5MnV2UmtBTWRYUGNBK2xPQktGRUNMWGtGeVlaVU9vVWRFREU3RHNNR0xwRFhLT0RmT1R6MWZFdDRvNVV3Q0FldFRtZWdHOWtLNVJuN1ZHbmRXMVc1WktGTFVtb3pnVEt3blczZGQ2SEtycG8zUGJJdFBkdVNmbHg1SmhLUWUrRnFMZ29WS0RtdjRrZjdoMzFLclZUcjRNWDNhT2VKaVJnUG4wQjJ1VE1yRUR3dkFPUTB2Ui94YURhQ0daME9MNVUyd202QXh3T0NnY05zNUhuTTlhZWlLWFNxakowT3o2aVducWc3S20wcGkxZFVLOTZWcW9naFI1dWd0NitkdGNWVkUzZU53K2h2dUdxWWFSQytPdmFFeHBxZHhwSElFN3Y3d0VBTERCakZaeFYwT040dTl0eGYzWmlRVzR5T2s3Nm9SdDhYZVIyeTl3N0I5K3daWlQ5K0o4T0ZQLzdpZU0zN21tUlRJY0duNUVVNi80R3UxckN0Rlg5VFNzWDhiWGFyUERDN3UwVy85RDhEOGNOWENlb2NOV3d4U0lBSEFKaUhROXFHazRtdkFWUHRmejVZL0pDaEkzQnd0bUZvbnZlWUJONXdhaEt2Q3NRNDc2a0NyVjFPK0pOL05JWXVXTkhzMVFPSk15MU1pdnlIVmNIdkhRMWc3MXBYM3owbEdVZXRUbWVnRzlrSzVSbjdWR25kVzFXWlB3UW04QllkSzhrc0JDcDc3L3RFU3d6Slh2ZjNBbnpqdk9HSld1NkV1MEx6Mk16OEphMVAzSFovd2RsbVErSDRxWVFGWndBUklpSEloS0VTdGhFeW0vU3hmWENqNjR5TjhiNFlaN2tlbmtWc2d1bGpxSFlDNWhqOXprL01pZnFzZ0x6aFZLcSthak1iRFZpM2FCdEd0NzB3aVluQndFY1UxTXRLYndReitUNlRnVG9tNkwzL0J2WllPU0pKQXZNWVpkdkdMZHBacXFkSGxsSXBGeDJKdTRyWnR6eG5MM2RoN21zb1pqdFNiR1NYSk53OGpFSVE4ZmUweGVxQlpGTzJ6RGVvSldLVkFxR054SkxFcUtJV0FkTVBGcUl1SGhaUlltb0F6YllHQ0hsc3JpWDlxUk51SHJrYjVNSCszdVp5K0ozSDBORHEvSVBLNEpqS3BadTdvbXRLTEZXMXZkN2RpK2I3b1ZrWFcyeEwxTWMvbENKOC9hRU83VDBYN2NPbTBRMXpxSjdGclBTWmh0ckNvWXJsN2gxcS9sVnJPcWoyVnp0ZVJJcTNMTnBYQ1V6MllXTjR4d1NCTzRWT0YrdTBOWVowZldoKzhWNVNpZkkvTUFtVm5pQ1RoZDFlY2tVeEJJRjd0ejFTU1gwbEY2Mk9URGI1T0IvRURiL3lCbmlEclFOQ29Cejc2OTI4ZXh3RlBHNUZzcFNxWDJ0THBXWmw5VnVHK2RyRHI4dmNkR3JqVXpyRnpmdm9GTEdYQUNiTldGM09LWG5ZWVlPVVNNQTNodHdxVndkblB5NUcvbU04K05jY1djbmZnbmFpZ1FxYmpzakt0MnNzL2RseWcwdEJGQjVrdVFNbVgvVEY4SUVtbGRiVWtZdnkxMVJhdFB5MEdiRWNIa2dmYWNKdDN6V3VSandCU2JBSFFBWE1OT25SaFhOQ1ZzZStCa1JaR1o0bDhBRlZaQnhRdTBGa3BXcjYrK2JYcnlNTEVoS2QwZ25xNFh1L0tBUDViblZJQXFkcWdWZm45STM3aFBMbm4xQU9lU3U0U1EyQ2VTK1cyRFg4ajJkUFdscVpNRFFPOGpzelByYS9zRllEWkNBcVlSZzhQa01DdktHV2VSZzB6ZHZ2Q1RIR0Z0N3VBTElvSExNeWRtNi9rSWdFd3dxQldRMnBrM2dkU0VjU3JnRlQ1ZkwxcDFBS1J3YldjTU1UTER1WmxDd3BGSUg1c0xWR09aYmZVK09DTU9rNTBQWVQwVUpZSk9nMlJLaHdxY0NpRFhUMkgvaXlCNExqSGYwOUJ4ZnhYMkVDSHk3SE9PUzVmcjg1TEszbXNSM08rSXFsQ2wvVWh6Y0xVeXAvRTEwZVlFY0NNSEhXanh3Ykg1WEliTlhFWis3VmJHVXFOdWRJalBET0Q3ZWVKQS9ZaDJaZlRkeEJaVURZb0dKVWZsVTNzRG9QTzl5NWNnU3VDdlVQOCs2QVdhRTVUeW5xNU1ZKy95NEZxQjlDUWd3ZkRMTEs4dEkxbFp6K3dpZis5WklBZFQySUhQNUtZZ1RYUzVRL1NXQ09ib2tuWVorVEJGeDFtZXNIR3FhcWdqSVhESHhUclR1L2JBcUdlRWxuemQ4bGhtdS9hdHpOOEZJQ00zaVF4QjI0QnBkR0UrNjMrME9vNDllTFhYSzdqTlhmZWZGejQ4Ymh0alhjQi9sa2E2Q2kycUdxUi95eFJWb0RlSkkxZ0RGcmtxZ3dpU2JpSGYyaGxRQ3F2NFBxekZZSkNrRndwTnVvcnhXWUUvRklvWElNZ3pTQ1NoWXJyNUptNmI4M0RuOHdERVRvVjNBcjZhWitldUl3OWc3MitsS0EzSExLOHRJMWxaeit3aWYrOVpJQWRUMmFrSFhnSlpNeXh3YitBRkY0YjRtYlpzemoyck5lS1AzQW42a1JCME1heTNPbERMN0R2enpzT1FuSysvYkNjNG53L0JzSlNnaUVKRm42cjlDTDRBbWN2RjMxMkJKaThlWDRTY3ROREJ3d0U0Nks2NE9BWUkwd2dXR1JvajVaYnBRSU5WQU5HYkdNRDFZUWxwY28vcjNBM2J4b1NxeXlJOG10ZGNnYWRpekxjemR3dnNNcmFTaWFDU1prSkxuOFlNRnZLRDRjdGdwRnRaNHU5ZnNDbC9CT3VKSjVSV0NwdEdGYVJSeTBJZnVZUUVvRTFlNlhScUE1N2FrZ2hKeWF3Y29LbFNNNUoxaE15Uk1pcjRBMGxUSkNXbklRMXg1d0MrVDZPa08zOXltOGtvMVY4ZTUwSnpja0R4SXdrK3ZYYmtYYkVweDJ6SzhkZ3RHb3hLVGdHV2o3dUZndTY1WThKcmE4V1V4MWNVeExRWXp2RDRSSElHWEY4cExGcnVZQllzRXVzd2ZaVE9WK2NZaVJQNTBzVWUzQ0hieG9TcXl5SThtdGRjZ2FkaXpMY3h4TWRZai9GSmdwVDdGYU0zaGxvTk4wK2cybERVY3lnUE5lN3RIUTJTdThjc3J5MGpXVm5QN0NKLzcxa2dCMVBaeVd3blJaTkxvSG85eFpXNWd2QU1WZzRLbFF4YzA0NDVOQzJFdUZtSEhwSHh2Q0xpWGtxbUkzR3l6MTlwZ2RaT0dSbVBIZ203RVJsNHlxV1MyOGhNTklISWgxanJhM0FwWXo5N01nL0RIWElLWkFEbDg2VVZ3LzMyMDVZUlJQT1VZUlhyRzFlRnlWeEw4VERDb3g2Y0lnVS9vZ1RNUXdJQ3REMy9USHpLcERuLzI3YjQ2UU1Bb05QMktsclQrZG9PZk5MT1VVbGpsV3RLa2pGbyt4WWdFeTFHOWprVFBUZEF0Rys3dzVCSjR0NStBVHlUMENWSXZvSWlURmxaM2hKa2Izd09LZHNoQThCSGl1NlJ3cUd5L0Z1NjJWR29kTTlYSmJCazFtL1BTUndiV3I4Ykk5SDMzcjhOaFdVMW9xUUlxdy8zS05rc0JzSWkyUnd1UTlGTlJRT0piWjVzR3orWHFXMGRYc1VXWVZuMXY2aFlncFVRT2dWVlJLVmM0S2lTUzhzR29FcGJBU3RQVDF1Um9HNzQ4WHZxdFU1RDFOd0pXN2FvckpKTUlDcXVRVWZ1SlViczN4T1JReWtXOTRVeWgyZFdVMnBqdjFWMjdONFpsZjFHSUN5NmRyRnRhRGc2eGJrajJMZCtETUNPN2poOE1ncVlXd2VtQW5vY0pIWFIwU2NlQ2pIRzlYV0RFb3dzTWdzZE1ab3ZBc3hjNUFESkEvVlp3cSt4aW92RjZXK1h1bHRqdWlCMUdYc0dBRi9QTEs4dEkxbFp6K3dpZis5WklBZFQyMUJPV2VhMzFidlFjUU9EYytqNTBXL3JrdkdtcWxrcFgyVUVOM2tvZlgzNHJTa1h3WjNzbnQ2SVJjWmw5SEd2VWpxVXdLdGxyTk5BV3JBT3B0d2hUOEJvMmtqVklHRTZsZERCMDU5bjJ6RkJNckdvcnpMcTBDam5uZFc1TkQwU1F5ZHRxbWJ4ZXUrQ3p3aXQwQkx6SkJ6ZWdhNHE3c0ZSR0lkS2VHNGdNNkZEZmJqQjRNRTQwSkhHcnAvYWFVblp2c2p6ZGh0WjRqTnYvN0FML3g2UTl0aDFHa0ZZN2JZSWMyV0V0WFhhWEpXaDlNK3FjUmtrY0prQWhkZWpIeVpqRmJOMm50ZGlNc3lISkxaOVVXYXRhV1M5eDBhdU5UT3NYTisrZ1VzWmNBSnQyTjhEVW5iYjFNN0pJaXNCWG93cFVZdVdsK2EvT0VIN3JNMkloZCthMlpzc3J5MGpXVm5QN0NKLzcxa2dCMVBZd2lIMGZSbkN6dmxiaGNjSWRJUE5FRzZWUktXM0pNbDFKQ0gwSjZ2RGxtdmg1SjF5REZtaGJBbVhxdVYwQm9yejhTd3RLd0x0R3ErUFBqK05mc2cxcFpDbUI4UmJ1SUc4eEh3RkZONm1jbGNLR2YyODdFN2l5Y0hmYkU5eStVSUNpSGFka2crb3lpVzBTc3ZuTkNOZWZHM2E5NDNVcS9sQytKdE5SUmkzS1lJakROdThpYXBGejlwcy9iZWJJK2FETEs4dEkxbFp6K3dpZis5WklBZFQyei9sckEwTkpkZWZQR0dIT2N0YjhsaXNmY0h6VkRRQWhuZWNaV0ZqZEFhUjdreC9PZk5aR3pvQkRweXd5WTZJRXRXWEltQUhNSStteTlJVWVUcVJDSm41S3lNbUNGVVZuTXFNcVV4MGpPQjR0UklQRVhraHdaUG80WU1VUmNEaEk2eWFlcCtDcXEydUVOb3BnMER6eFQ1ckx4OFdwdlRwTlBDT1lTV0ptNmMyaGhBWUdPWjc2T1VBcE41c0R5VEJCV01reFlOUVNveHE5d1VSS09HcjNJc3NyeTBqV1ZuUDdDSi83MWtnQjFQYlZkUG02aDQrOFYwTjFWbmZwNG5uRGZHOEl1SmVTcVlqY2JMUFgybUIxazVEbzBrNXFRTWdPRlhvRGpDYmRlbkJkWHZGZnIzdUtSdzd4T0QxWnpMUDNSSURpS1VUalZET2EwYjMwck52dTlzc3J5MGpXVm5QN0NKLzcxa2dCMVBiNVI1TzM5NkoyMkZ4a2JRYmtYWENwNTEwVEpNRTIrSXhobVlRMURQTHFMY3NyeTBqV1ZuUDdDSi83MWtnQjFQYjVSNU8zOTZKMjJGeGtiUWJrWFhDcFRmSUYwWlgyMHdLeXF1ZTNlVzNaVUowQStYVUJXd0VNOEJwZmtNVTZLaUwyV3ByTjFuVTZKVHFvSUFDUjFDQ1V5TStxQ0lwTGkyQ21aZ1R4ZDV2ZENBUXE5YllKUlpXRDl3MEpLNVJ5RWcwQzNlVllnYnQ5NFZERHdBMHJ5SmtOTCt2cGZCc083ZFJqdVIzNmZpbytzSFFqVW95bzBONlpkbEJqZW9pNVFIaXB5Ti9tMHdOeGhhVkZYS3MxNlR0bnRTd21HdXV1bHMvTEdtRHBPQjFZWFZCRGU5VndkeStKWkRUY2g5c1RadUs1c3FnR0Jaa0hwdTgrZzlSdVlpVDNCeC9nVXhaSmt4MG00QXZZS285N0FaSGtkYlA3aFcwWmU4WmVPMGJqSW5SdElTLysxLzlvcCsvWHdKSEU1bkNZaWJON2Vqa2JJR1RkbGJ5ajU0QlZyTG1TVGFzay9lc1hRUktnNTFIOXJISVV5bVVRckZMa09vYXVhK1VtNlpTNG43dnozVWw5WUZrVGF5UGU4Q3ZJUEtXbzVGSFpLeGVXWlF2dmNrdEhPTGlBanI1VktURVpJRkp2ajhFZUovM0JGR1RUa1JMaWxUQXhMUTFNNzYrRUtlZVdKMkZPVFowajVLQW1MUWMzajRiMFV4aHNReGdrYXFTeTNaOTVrSXRBSURKejlOSVROcERzR05ueVZ6bnU5cDByU1RmYmNLak9YWVduZlhiczNhdnMzdFlqWDBJdmQyakk2SS8xNzFmQVdSOVRadHlTUkpWR3NHYjl4di9teEpQZzROcW0yY09nTEJLVEVUNzhSK0ZUeklPZHVrRGFRSWFqZ3hpUG03cDhOS0RLUEQ2UmFxQXFacFJUNmxzaEJkVVJ4NnFSNnFIWlpVK1F4RUVEZFBvZnpFMlNBUWFCdGFIbk1ZQm0xZWJzSjVLKzF5UzNvdVFjVmZ2VEgxcllPUFphbXMzV2RUb2xPcWdnQUpIVUlKUzRPVlBkZ2xxV0Y5NllhK05JRjVnL2NIY0thN2lab0g3TWE1NDIwNUZsaGZxT0R5RnRzdHZQTnZsT2VwNlAyWFQyV3ByTjFuVTZKVHFvSUFDUjFDQ1VONzdzUDliYnE3cEY3SFRJSHl2cFFLSnNLRC81eGR3N1BCanZpTHBUVk5XMm52YUpreUtBdmZWeWFMNjRncllCcjg2b2lOT2NTSmJwSkEwUmJyUjhlT0liWXJyVXBYWG5IaEtkZUpkSFBzdi9Sb1ZVcE9rTkhwMnkxczVUcWRZa1ArNS82VlVkRzRVQm8wbjVQTFY0VkhyT2xUdlQrU2grRnpJS2xqbkZkSEFFb1dFMGQwL2kvb1EvcHBQZmhVYm1UYWZkYkFORnlEQjZQZmRyK0JHTjQxcWdZOGZDYmxFMVIrM1A3K0ZDbE1QTDVuN09IU1ZaSzJzNlE2MHhLUE02MDVUNU5Venc5MG9tRks5U0ZtN2hERlJMclJOT2JHZ2lGT2g3RW9CQ1oxNWhVZGVZY0daM3Z1WXFyeVFwdk1FdklRY1NaVFRyOXh4Z2dOWndWd3h3dFpLM09oUVExWFhGOXdhZGxqNUFocTE5VERkYTdDWUNUc2tYeUwyNXdmb3piZnY0Tm1mUk1pMk80MFk1MlJpbC9kUzR0YnQzd2RVditqMGxwREFvc25nVDBKcjFqcHpLRU1IN1ZLYUdYampTSWc4amRSb29WdENubFlEMm1vcVE5UHd5a2dpVUZSVEtnUGFIb0x3aGN2djJXcHJOMW5VNkpUcW9JQUNSMUNDVWxjYVJjYUJ1N1g1em1KbENKNUhqd3E4eWVjMk9XSFY1REtEWllaTVRpRkpjNEdOM3R1Si81amdCT2RBWFB5ZEY5bHFhemRaMU9pVTZxQ0FBa2RRZ2xFOFE5RUtGdGRYQVFGL3RkeVFHRllWZGV1aWVQenU1c2JRVFJ1RGNFeXlINFBvR2U0K0J5enB0Y0lNZUdFb1g4Sm53QnBhWG1ORFVMYk5Ba1ZSRDUvOWd6M01FZHBCaXNoZWh4VGhIYzVWZTdoL2JPaDJ4dWltQ0FaRVU2OG1DMkh4SmJpN21lZFp0V25RS05mRXhnS05SaFhFVW1vRjVUMWlzU3FBSkRaMlpqaFhERjBsNWF5ZmxLUnRza0dCVDg2SUErS2ZwZWg4aDFweFZWVHI1L3pEMjJFMWl0eE8zNVAzcjJBeUQrN1dRNE1LWXRzdjFId0RaUlpsMHBXdUtBM3R0bVROWWdTOHpKT3VjNzZ1ZkE1QkIxQTQrRTBZY0NtdWUvbGo4cEdWZXVNMzNUWlBJS2pNcFJ1OXBWSFAyVHFHWkx3U2MvMHp6OVJyZlJHOUpmd3E1c2dyS3FmcWJMTlIzUjhDYXQ4QlB5WUFQcWVxeWtndUNjQXBlUS9YdEh1RlBVa3plVDNWRWdYKzAxSHdSb1hvUytiK2ZubFVFaGM4RThWTEVCUlV3UzhSS1RMM0dwMWZyRk82QzFveDY4TU9xamZwOThzY0U4c1JWbXZjNmpYNTBFeVE3cnl5aXVnY2FMbGJzbm5ETTlscWF6ZFoxT2lVNnFDQUFrZFFnbElHcExoS2xHMWs4eGl4eGNrZFBnUndNOXNrZ3dUM0YyYnRqTTE2MUswbDh5eXZMU05aV2Mvc0luL3ZXU0FIVTlwclFoalV2K3E2bDV3bmlTbWpSVFNzQyt3Z0hjbjJzaW9YZ3Qrb2FNenQyeXl2TFNOWldjL3NJbi92V1NBSFU5aFBiSmZCV213dE1kb1BIUG9WN2VqU3BXKzdoT3BhM1ZIK0JuV2l6aGNGNnl5dkxTTlpXYy9zSW4vdldTQUhVOXVBOUNTVy9wRmk1TEpqRjVDb2pGRUJzbjR0N0JUZmJiWnBTeG5YeXE4c0V6cFF5K3c3ODg3RGtKeXZ2MnduT0o4c3J5MGpXVm5QN0NKLzcxa2dCMVBZMDBQVnZvTTJmVzhMeE5tSlpqNWZVeXl2TFNOWldjL3NJbi92V1NBSFU5c3NyeTBqV1ZuUDdDSi83MWtnQjFQYVRuaXJTUmw5MloxTU1XbktxUHJWbXFodE1yTkg1YzVsKzc1dTRWRW5VazFRSXpZMXh1WEdrR1ZYMTlkdVpHY3JMSzh0STFsWnord2lmKzlaSUFkVDJ5eXZMU05aV2Mvc0luL3ZXU0FIVTluQytmM1gzakZXa0luVXZadUYrUVRVRVFTa0V5OG9wam9xb2ZKbWJ6RG0zQVdDakFFM29Lb0RUc3pBdU9KODArOHNyeTBqV1ZuUDdDSi83MWtnQjFQYXJUbVltN29PWjFyeGwwVEkxcUpkT2huYUZuUDJsb0FEM3JuSkVKRlBvVk1zcnkwaldWblA3Q0ovNzFrZ0IxUGJLdWdGaXg1MjEzR3BDTys4WFZ5UUViV1EwQUJTaWkzNDFPSlM3ajlaQnRaaUN2VlRRMU5vM1dwaFIxTHdNWnlqTjdDd0F5aExBM0YxZ0lDTFI5TElCeXl2TFNOWldjL3NJbi92V1NBSFU5dkl3d1ExVkhScTAvWUYyL1hlbnRxUExLOHRJMWxaeit3aWYrOVpJQWRUMm51RU1ZcDltb3JKZmFqQkVGS2U1c0ZmM1YvSkhGazFrQWQ0RGwxL1ExNVhWeUhPdVhmSFpyYVBzMDEvdFJBVTVqRmc1cWxxTUQrQUU1eW5FUFViU1lNc3J5MGpXVm5QN0NKLzcxa2dCMVBhRlJFQXN4OXhrdEkxcnhXaExOWlFBenBReSt3Nzg4N0RrSnl2djJ3bk9KN25oSDBJNnF2WEx6OUZDOVlHWFczNXZ0TURDckhGYnpsbGVJQjJjZUVXd3l5dkxTTlpXYy9zSW4vdldTQUhVOWwvNnZqSU5SQUlYNjRlM013eUIrYS9pM3BMdnJaaDJZalhPTEV6RG9Nc3p5eXZMU05aV2Mvc0luL3ZXU0FIVTl0aEdFUnZmUEZMd05SRFZaYXpRM1k3Q0FRYm13R2xERUFmT2l5cXRxTFE5UVhod1ZDMnA0T3E4dnYzVVZlVGR4TUlCQnViQWFVTVFCODZMS3Eyb3REM2l5UGZXS3dRUWRhYUtGQThHN21rTUFhUHVxR3g3blNDbXl3b3c5TVBnMzNteHViQWFUUDkxOEZTSHpYYVExUGpzTVhtd3g3MVE3d2c0QWRvL2Zicmh6T1dkNk84VFJ6dFVlMTgwTDJxOTZFbFVXdTZtRE9jRmhsenpKa053dnNKU0E1TjJvRG9WZldhYWltRkxsMkpkSG8zRFdGUEUwVHR5bG5YUEZuUGlSK3I2eUVJMmtjRk9aYmgweHVHOVNZL0FNUmJBSDA1SllraWt1NHpWNkx3U1dJdWZGWWY0SVd5RXJPMmhRcmFYMWRjZ0hHa0FyaExqMnFRQTZsMkFVbUFwc080aWNzVHNBTG9YTWg2OEVCSlFidDJpMDZnMXZPa0xoQjFYejEzK1dDUSs0UzdPTlpaVHJZZGlYeVBlNFEyT1QvZklyUDB0Tno5aFdUZENSYW9NRVVGOUc1cjIzS3grLzdPTjVJQ2JHZ1U0Q1dsTDM0NXBrazFzMnJBbmJYekVPVWxWRVFNWXVrcGdPY2tVWXVCeEtFYWR5RFIyWE52WUhQVFVTSjZjVlE9PVxcXCIpXFxufVxcbi8v5LiJ5ZCI5LiAXFxuXFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt5pu05aSaMlwiLFwicGF0aFwiOlwibW9yZTJcIixcInJ1bGVcIjpcImlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXG4gICAgdmFyIF90eXBlID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/moLflvI8udHh0Jywge30pO1xcbiAgICBcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn5pe25YWJ5py6JyA/IGdldEhlYWQocngpIDogJ+aXtuWFifCfkKUnLFxcbiAgICAgICAgdXJsOiAn5pe25YWJ5py6JyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgIH0pO1xcbiAgICAvKlxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+i/veeVqicsXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9jb2xsZWN0aW9uP2dyb3VwPeKRoOi/veeVqicsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICB9KTtcXG4gICAgKi9cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn57Si5byVJyA/IGdldEhlYWQocngpIDogJ+e0ouW8lScsXFxuICAgICAgICB1cmw6ICfntKLlvJUnICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgfSk7XFxuICAgIC8qXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiByeCA9PSAn5pS26JePJyA/IGdldEhlYWQocngpIDogJ+aUtuiXjycsXFxuICAgICAgICAgICAgdXJsOiAn5pS26JePJyArIHdyLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgfSk7XFxuICAgICovXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+eZu+W9lScsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvbmV3bG9naW4nLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmvKvmuLgnID8gZ2V0SGVhZChyeCkgOiAn5ryr5ri4JyxcXG4gICAgICAgIHVybDogJ+a8q+a4uCcgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBnZXRWYXIoJ1lTJykgPT0gJ+maj+acuicgPyBnZXRIZWFkKCfpmo/mnLonKSA6IGdldEhlYWQoJ+mqmueyiScpLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdZUycsIGdldFZhcignWVMnKT09J+maj+acuic/J+mqmueyiSc6J+maj+acuicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v6aKc6ImyLS0nK2dldFZhcignWVMnLCfpmo/mnLonKVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogX3R5cGU9PVxcXCLmlrDniYhcXFwiP2dldEhlYWQoXFxcIuaWsOeJiFxcXCIpOlxcXCLmlrDniYhcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsJ+aWsOeJiCcpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfJ1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogX3R5cGU9PVxcXCLml6fniYhcXFwiP2dldEhlYWQoXFxcIuaXp+eJiFxcXCIpOlxcXCLml6fniYhcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsJ+aXp+eJiCcpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfJ1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgfSk7XFxuICAgIFxcbiAgICBpZiAocnggIT0gJ+aXtuWFieacuicgJiYgcnggIT0gJ+e0ouW8lScpIHtcXG5cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfoh6rlrppVSUQnLFxcbiAgICAgICAgICAgIHVybDogYGlucHV0Oi8ve1xcXCJ2YWx1ZVxcXCI6XFxcIlxcXCIsIFxcXCJqc1xcXCI6IFxcXCJ3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7Y2xlYXJWYXIoJ2h0bScpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpVVJRFxcXFxu5LiN55+l6YGT5oCO5LmI5p+l77yfYuermeeCueW8gOiHquW3seeahOS/oeaBr++8jOmVv+aMiXVpZOWNs+WPr++8jOivt+Whq+WFpee6r+aVsOWtl1xcXCJ9YCxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnKSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfngrnotZ5rZXknLFxcbiAgICAgICAgICAgIHVybDogYGlucHV0Oi8ve1xcXCJ2YWx1ZVxcXCI6XFxcIlxcXCIsIFxcXCJqc1xcXCI6IFxcXCJ3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9hY2Nlc3Nfa2V5LnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpWtleSjnlKjkuo7ngrnotZ7mipXluIEpXFxcXG7kuI3nn6XpgZPmgI7kuYjmipPvvJ/pgqPlsLHnrpfkuoZcXFwifWAsXFxuICAgICAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9hY2Nlc3Nfa2V5LnR4dCcpKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+ino+aekGtleScsXFxuICAgICAgICAgICAgdXJsOiBgaW5wdXQ6Ly97XFxcInZhbHVlXFxcIjpcXFwiXFxcIiwgXFxcImpzXFxcIjogXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHQnLGlucHV0KTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JywnVVDkuLsnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOi+k+WFpeeahOaYrycraW5wdXRcXFwiLCBcXFwiaGludFxcXCI6IFxcXCLor7flnKjkuIvmlrnovpPlhaVrZXko55So5LqO6Kej5p6QKVxcXFxu5LiN55+l6YGT5oCO5LmI5oqT77yf6YKj5bCx566X5LqGXFxcIn1gLFxcbiAgICAgICAgICAgIGRlc2M6ICfigJjigJjlt7LovpPlhaU6IOKAmeKAmScgKyBnZXRIZWFkKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkva2V5LnR4dCcpKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbiAgICAgICAgfSk7XFxuXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6K+E6K665Yy6OiDigJzigJzlt7InICsgZ2V0VmFyKCdyZXBseV90eXBlJyksXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdyZXBseV90eXBlJywgZ2V0VmFyKCdyZXBseV90eXBlJyk9PSflhbPpl60nPyflvIDlkK8nOiflhbPpl60nKTtyZWZyZXNoUGFnZSgpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JyxnZXRWYXIoJ3JlcGx5X3R5cGUnKSsnLCcrZ2V0VmFyKCdsaWtlX3R5cGUnKSk7J3RvYXN0Oi8v5beyJytnZXRWYXIoJ3JlcGx5X3R5cGUnKTtcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn54K56LWeJuaKleW4gTog4oCc4oCc5beyJyArIGdldFZhcignbGlrZV90eXBlJyksXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdsaWtlX3R5cGUnLCBnZXRWYXIoJ2xpa2VfdHlwZScpPT0n5YWz6ZetJz8n5byA5ZCvJzon5YWz6ZetJyk7cmVmcmVzaFBhZ2UoKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcsZ2V0VmFyKCdyZXBseV90eXBlJykrJywnK2dldFZhcignbGlrZV90eXBlJykpOyd0b2FzdDovL+W3sicrZ2V0VmFyKCdsaWtlX3R5cGUnKTtcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XCJ9XSxcInNhdmVkXCI6ZmFsc2UsXCJ0aXRsZVwiOlwi5ZOU5ZOp4oSbXCIsXCJ2ZXJzaW9uXCI6MCxcInVybFwiOlwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbD9haWQ9JmJ2aWQ9QlYxVFo0eTE2N2ZHI2ltbWVyc2l2ZVRoZW1lI1wiLFwiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcImZpbmRfcnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxuLy9sb2coTVlfUlVMRS50aXRsZSlcXG52YXIgUmVmZXJlciA9ICdAUmVmZXJlcj1odHRwOi8vd3d3LmJpbGliaWxpLmNvbSc7XFxuLy/popzoibJcXG52YXIgQ29sb3JzID0gW1xcXCI0XFxcIiwgXFxcIjVcXFwiLCBcXFwiMFxcXCIsIFxcXCIxXFxcIiwgXFxcIkFcXFwiLCBcXFwiM1xcXCIsIFxcXCI4XFxcIiwgXFxcIjlcXFwiLCBcXFwiQlxcXCIsIFxcXCJDXFxcIiwgXFxcIkRcXFwiLCBcXFwiRVxcXCIsIFxcXCI2XFxcIiwgXFxcIjdcXFwiLCBcXFwiRlxcXCJdO1xcbnZhciBDb2xvciA9ICcjJztcXG5pZiAoZ2V0VmFyKCdZUycpID09ICfpmo/mnLonKSB7XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7XFxuICAgICAgICB2YXIgbnVtID0gTWF0aC5jZWlsKChNYXRoLnJhbmRvbSgpICogMTUpKSAtIDE7XFxuICAgICAgICB2YXIgQ29sb3IgPSBDb2xvciArIENvbG9yc1tudW1dO1xcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgdmFyIENvbG9yID0gXFxcIiNGQTcyOThcXFwiO1xcbn1cXG5cXG5mdW5jdGlvbiBnZXRIZWFkKHRpdGxlKSB7XFxuICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiJyArIENvbG9yICsgJ1xcXCI+JyArIHRpdGxlICsgJzwvZnJvbnQ+PC9zdHJvbmc+JztcXG59XFxuXFxuZC5wdXNoKHtcXG4gICAgZGVzYzogJzI1OCYmZmxvYXQnLFxcbiAgICBjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJ1xcbn0pO1xcbnZhciBiYW5ndW1pID0gZ2V0UmVzQ29kZSgpO1xcbmlmIChNWV9VUkwuaW5kZXhPZignYXBpLmJpbGknKSA9PSAtMSkge1xcbiAgICB0cnkge1xcbiAgICAgICAgdmFyIGEgPSBmZXRjaChNWV9VUkwsIHt9KTtcXG4gICAgICAgIHZhciBiID0gSlNPTi5wYXJzZShhLnNwbGl0KCdcXFwiZXBMaXN0XFxcIjonKVsxXS5zcGxpdCgnfV0nKVswXSArICd9XScpO1xcbiAgICAgICAgLy9sb2coYilcXG4gICAgICAgIHZhciBydXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWw/YWlkPSZidmlkPScgKyBiWzBdLmJ2aWQ7XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIHZhciBhID0gZmV0Y2goTVlfVVJMLCB7XFxuICAgICAgICAgICAgcmVkaXJlY3Q6IGZhbHNlXFxuICAgICAgICB9KTtcXG4gICAgICAgIHZhciBiID0gYS5zcGxpdCgndmlkZW8vJylbMV0uc3BsaXQoJ1xcXCInKVswXS5zcGxpdChcXFwiP1xcXCIpWzBdO1xcbiAgICAgICAgdmFyIHJ1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbD9haWQ9JmJ2aWQ9JyArIGI7XFxuICAgIH1cXG4gICAgdmFyIGJhbmd1bWkgPSBmZXRjaChydXJsLCB7fSk7XFxufVxcbnZhciBqc29uID0gSlNPTi5wYXJzZShiYW5ndW1pKTtcXG52YXIgdiA9IGpzb24uZGF0YS5WaWV3O1xcbnZhciBwID0gdi5wYWdlcztcXG52YXIgY2FyZCA9IGpzb24uZGF0YS5DYXJkLmNhcmQ7XFxudmFyIHJlbGF0ZWQgPSBqc29uLmRhdGEuUmVsYXRlZDtcXG52YXIgdGFncyA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL2JpbGliaWxpMi50eHRcXFwiLCB7fSk7XFxudmFyIHNldHRpbmcxID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2NhY2hlL2JpbGliaWxpMi50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+ato+W4uOmhtemdouWIh+aNouaIkOWKn/CfkYzlj6/og73lubbmsqHmnInku4DkuYjlj5jljJYnYDtcXG52YXIgc2V0dGluZzIgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvYmlsaWJpbGkyLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v6ZqQ6JeP6aG16Z2i5YiH5o2i5oiQ5Yqf8J+RjOWPr+iDveW5tuayoeacieS7gOS5iOWPmOWMlidgO1xcbnZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciBsaWtlX3VybCA9ICdodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi92aWV3L2xpa2UnO1xcbnZhciBjb2luX3VybCA9ICdodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi92aWV3L2NvaW4vYWRkJztcXG52YXIgYWRkX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL2FwcC9mb2xsb3cvYWRkJztcXG52YXIgZGVsX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL2FwcC9mb2xsb3cvZGVsJztcXG52YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxudmFyIGNfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYXZ0eXBlPTEmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZmcm9tPTcmZnJvbV9zcG1pZD10bS5yZWNvbW1lbmQuMC4wJm1vYmlfYXBwPWFuZHJvaWQmbXVsdGlwbHk9MSZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlbGVjdF9saWtlPTEmc3BtaWQ9bWFpbi51Z2MtdmlkZW8tZGV0YWlsLjAuMCZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZ1cGlkPTAmc2lnbj04YWJiZGRkODdhNmJkODJlMWU0MmNiM2NmZmQzMmJiOSc7XFxudmFyIGxfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZsaWtlPTAmbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnNpZ249NGEwODY0NWMyOTk0ZWI2OTJhYzBjZmIwYmQ3NTY5YzYnO1xcbnZhciB4bHh6ID0gXFxcImhpa2VyOi8vZW1wdHkjbm9SZWNvcmRIaXN0b3J5I0BydWxlPWpzOnRoaXMuZD1bXTtyZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7Um91dGUuc2V0UGFyc2UoKTtzZXRSZXN1bHQoZCk7XFxcIjtcXG52YXIganhnbCA9IFxcXCJoaWtlcjovL2VtcHR5I25vUmVjb3JkSGlzdG9yeSNAcnVsZT1qczp0aGlzLmQ9W107cmVxdWlyZSgnaHR0cHM6Ly9naXRlYS5jb20vQUk5NTcvSGlrZXIvcmF3L20vdi9qeEl0ZW0uanMnKTtqeEl0ZW0uanhMaXN0KCk7c2V0UmVzdWx0KGQpXFxcIjtcXG5pZiAodlsncmVkaXJlY3RfdXJsJ10pIHtcXG4gICAgdmFyIHJlZGlyZWN0ID0gdlsncmVkaXJlY3RfdXJsJ107XFxuICAgIHZhciB5bSA9IGZldGNoKHJlZGlyZWN0LCB7fSk7XFxuXFxufVxcblxcbmV2YWxQcml2YXRlSlMoXFxcIlhVaUZUMXZYWVdyVXcrVmhwbnFsZzBOMHZBV2dwZ2xoOE1oWis5dlBEOTlOSjVWZ2VGZEhtd2FLYXdJeTZDMGg2RkZRaEVRNVJoSm1WMEVRSG5MOXh5YlBIQWNoQUw3aFpFWmQraGJHSFY1amVHK25LNVEzaWU3OHB1R0RiMVRKNGZBSTdnNmV6TElqUU1CeE4vMlhNOTJZTk5QS0RIZGhMSU1RR1Y2OU1xOGNUT1dqS3BaUXAwL3ZnTnV4YVBRS0V6U2RIUUp1ZTd0VHhkU0V2RHQzcy90eGRFaC9vR3pGQ0NOV2VaQ1VVNTN6aEVoQzA2cTZaRmpaQ00rZDhGc1o1Y1hsTkplbXRlZ01nSlVMZFRxYVZkUndWaFZYKzF1QlE5TnkwRHBzTkd4Mkx3SGdPamxzOWh3MTRMaEVxdGhFZTczeVBCR3ZTZ0tFQmRTWWdHN2NLN2hZVlRFTmVHVGlSQXpLUFE3akdFcUVKOGFhZEhPSEFlU2EyNWFCYnpjODFoaHhnWHRpYWxYOFVxZXBuN2s0ZzJHa3Nxb0czSlZJK3FUZldaeFBXcU5NLzBqVVhiclVUQ1JabnJ6R1ZvdzZOd1BRWEtxM0NES2w5aSthWnZlV3o1SWY1RU5FWkdpV2xXNXo0YUpTRWNleENEc2labG8xL1FKSWoycldvbkUwdTU0YWgyL1paLy9aR29NQkorZDE5R21lcGtMQkQzbjJxb2dLbmpaajJyaldxZ1BhZEVlZTFaSWhaM1NHYm1UbEpmMUE0QllJdXVQd3Y0ZEdaZFJvRFc2NEJoQzVqdUNuNndEbTdZbXk3QlhmMXNRYUZpbUVuclNJaUhHaE0rV0tnM0l5V2VjdWgvR2srK01tTjZBeHhjdk5BeXA4YkM0aHpCTXZaSi9sNXRSeWFwb21kQ1Y1QnBpWGZqa1dSbmJvcElqSStXS0IzZkNhWXlSZGVOTEVSS25FbHNjRGl6N1VlbkxwcmhZYy9hNExzR2VNTUZWWjhZbzgvd0dZSDM4SlxcXCIpXFxuXFxudmFyIHB1cmwgPSAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL3ZpZGVvLycgKyB2LmJ2aWQ7XFxudmFyIG1vZGUgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9iaWxpYmlsaS50eHRcXFwiLCB7fSk7XFxudmFyIG1vZGVfdXJsID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2NhY2hlL2JpbGliaWxpLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfLCDngrnkuKrop4bpopHor5Xor5XlkKcoXl9eKSAnYDtcXG52YXIgemwgPSBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdwYWdlJywgZ2V0VmFyKCdwYWdlJyk9PSfnm7Tpk74nPyflhbPpl60nOifnm7Tpk74nKTtyZWZyZXNoUGFnZSgpO2lmKGdldFZhcigncGFnZScpPT0n55u06ZO+Jyl7J3RvYXN0Oi8v54K55Ye75LiL5pa55YiH5o2i5riF5pmw5bqm8J+knyd9ZWxzZXsndG9hc3Q6Ly/lt7LlhbPpl60nfVxcXCI7XFxuaWYgKG1vZGUgPT0gJ3loYycpIHtcXG4gICAgdmFyIGxhenkgPSB5aGNcXG59XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IHYudGl0bGUsXFxuICAgIGRlc2M6ICfmj4/ov7A6ICcgKyB2LmRlc2MgKyAn44CA57G75Z6LOiAnICsgdi50bmFtZSxcXG4gICAgdXJsOiB0YWdzID09ICd1cCcgPyAnZmFuJyArIHNldHRpbmcyIDogJ3VwJyArIHNldHRpbmcxLFxcbiAgICBpbWc6IHYucGljICsgUmVmZXJlcixcXG4gICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJ1xcbn0pO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAnICAnICsgY2FyZC5uYW1lLFxcbiAgICBwaWNfdXJsOiBjYXJkLmZhY2UgKyBSZWZlcmVyLFxcbiAgICAvL3VybDogJ2hpa2VyOi8vcGFnZS9nejE/dXJsPWh0dHBzOi8vc3BhY2UuYmlsaWJpbGkuY29tL2g1L2ZvbGxvd++8n++8n3R5cGU9Zm9sbG9377yG77yGbWlkPScgKyBjYXJkLm1pZCxcXG4gICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3NzP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNo77yf77yfbWlkPScgKyBjYXJkLm1pZCArICfvvIbvvIZwcz0zMO+8hu+8hnRpZD0w77yG77yGa2V5d29yZD3vvIbvvIZqc29ucD1qc29ucO+8hu+8hnBuPWZ5cGFnZe+8hu+8hm9yZGVyPXB1YmRhdGUnLFxcbiAgICBjb2xfdHlwZTogJ2ljb25fMl9yb3VuZCdcXG59KTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+KAnOKAnOKtkO+4j1N0YXLigJ3igJ0nLFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5IycgKyBjYXJkLm5hbWUgKyAnJiYnICsgY2FyZC5taWQgKyBgQGxhenlSdWxlPS5qczppbnB1dD1pbnB1dC5zcGxpdCgnIycpWzFdO3ZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9JytpbnB1dC5zcGxpdChcXFwiJiZcXFwiKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtpZighZ2V0VmFyKCdsYjInKS5pbmNsdWRlcyhpbnB1dC5zcGxpdCgnJiYnKVsxXS5zcGxpdCgnIyMnKVswXSkpe3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXG4nK2lucHV0KycjIycrcGljO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIseHIpOyd0b2FzdDovL+WFs+azqOaIkOWKnyd9ZWxzZXsndG9hc3Q6Ly/lubTovbvkurrvvIzogJflrZDlsL7msYEnfWAsXFxuICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbn0pO1xcblxcbmZ1bmN0aW9uIHJlcXVlc3RfYmlsaV9hcGkoYmFzZVVybCwgU2VjcmV0SWQsIFNlY3JldEtleSkge1xcbiAgICBpZiAoIVNlY3JldElkIHx8ICFTZWNyZXRLZXkpIHJldHVybiByZXF1ZXN0KGJhc2VVcmwpXFxuICAgIGV2YWwoZ2V0Q3J5cHRvSlMoKSlcXG4gICAgbGV0IG5vd0RhdGUgPSBuZXcgRGF0ZSgpO1xcbiAgICBsZXQgZGF0ZVRpbWUgPSBub3dEYXRlLnRvVVRDU3RyaW5nKCk7XFxuICAgIGxldCBzb3VyY2UgPSAnYmlsaS1hcGknO1xcbiAgICBsZXQgYXV0aCA9IFxcXCJobWFjIGlkPVxcXFxcXFwiXFxcIiArIFNlY3JldElkICsgXFxcIlxcXFxcXFwiLCBhbGdvcml0aG09XFxcXFxcXCJobWFjLXNoYTFcXFxcXFxcIiwgaGVhZGVycz1cXFxcXFxcIngtZGF0ZSBzb3VyY2VcXFxcXFxcIiwgc2lnbmF0dXJlPVxcXFxcXFwiXFxcIjtcXG4gICAgbGV0IHNpZ25TdHIgPSBcXFwieC1kYXRlOiBcXFwiICsgZGF0ZVRpbWUgKyBcXFwiXFxcXG5cXFwiICsgXFxcInNvdXJjZTogXFxcIiArIHNvdXJjZTtcXG4gICAgbGV0IHNpZ24gPSBDcnlwdG9KUy5IbWFjU0hBMShzaWduU3RyLCBTZWNyZXRLZXkpXFxuICAgIHNpZ24gPSBDcnlwdG9KUy5lbmMuQmFzZTY0LnN0cmluZ2lmeShzaWduKVxcbiAgICBzaWduID0gYXV0aCArIHNpZ24gKyBcXFwiXFxcXFxcXCJcXFwiXFxuICAgIHJldHVybiByZXF1ZXN0KGJhc2VVcmwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiU291cmNlXFxcIjogc291cmNlLFxcbiAgICAgICAgICAgIFxcXCJYLURhdGVcXFwiOiBkYXRlVGltZSxcXG4gICAgICAgICAgICBcXFwiQXV0aG9yaXphdGlvblxcXCI6IHNpZ25cXG4gICAgICAgIH1cXG4gICAgfSlcXG59XFxuXFxuZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikpLnJ1bGUpXFxuXFxuLy/oh6rlrprkuYlhcGnpoblcXG52YXIgbUFwaSA9IHtcXG4gICAgYXV0aG9yOiAnJyxcXG4gICAgdHlwZTogJycsXFxuICAgIGlkOiAnJyxcXG4gICAgYmFzZVVybDogJycsXFxuICAgIHNlY3JldElkOiAnJyxcXG4gICAgc2VjcmV0S2V5OiAnJ1xcbn1cXG5pZiAobUFwaS5iYXNlVXJsICYmIG1BcGkuc2VjcmV0SWQgJiYgbUFwaS5zZWNyZXRLZXkpIHtcXG4gICAgcHV0VmFyKCdhcGknLCBKU09OLnN0cmluZ2lmeShtQXBpKSlcXG59XFxuXFxudmFyIGFwaUluZGV4U3RyID0gZ2V0VmFyKCdhcGlJbmRleCcsICcnKVxcbnZhciBhcGlJbmRleCA9IHBhcnNlSW50KGFwaUluZGV4U3RyKVxcblxcblxcbnRyeSB7XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcC5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgdmFyIHBhcnQgPSB2LnZpZGVvcyAhPSAxID8gcFtpXS5wYXJ0IDogJ+W9k+WJjeinhumikeaXoOmAiembhu+8jOeCueWHu+atpOWkhOaSreaUvic7XFxuICAgICAgICBwdXRWYXIoJ1VBJywgJzt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wXFxcXFxcXFzvvJtcXFxcXFxcXO+8myBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ5LjAuMjYyMy44NyBTYWZhcmkvNTM3LjM277yG77yG77yG77yGUmVmZXJlckBodHRwczovL3d3dy5iaWxpYmlsaS5jb20vdmlkZW99Jyk7XFxuICAgICAgICBldmFsUHJpdmF0ZUpTKFxcXCJpZm56cWFOcU5Sa042TnFHMGZaeDVNZXk0NzdPc01KT1RiVGQ5U2FqTWtmNVI1TzM5NkoyMkZ4a2JRYmtYWENwZ2dmdWFkNW8rM3A5N0xIV2JJcHRvdzRvK01SUXRhUDAvOHdpeUpDclpDYVpZVzY0d1UxQjYweFJCUXRiZEpDRWdSdUhob1pzYkdBWkJBNDMvVFh4R3dJa0Nja2JWNm56SGhtOTNEazVEaUM1STVIbitDZmlCTUU0eVFvMzlPVUp5M3BHQVdsakQxc25wekdoQmoxYjNIclR2eWtqRmFTUGduUy9NVWRKTWYwUVpJU05HVTh6NW92YW5Qc0grRjVXc1FnSGdJcXhXOWV2VjMrdGd5ZkxVZEZSME40RGx0TFlydzd2Q1BnelBRWC92d0JNUHk2WWNWdFNWS2piNlF6RmF1VE4rSjJJUllycGF5MTVha0Frb2ZhK1l4L2ZOVGVmNCs2WmFWem1YZVphRWFqMGJRL0hQWmlieFR6M1MrRG1VVmRnWXUwSFhNeTBDRkNYU3QzK2VPVU45YytFbVZBTHJOTjhPcVdyUGVrcnZGMXFOMVVLdjZrQmNCRVAvU3drdWZzM3ZNMDdmV3YvUk5KWUI3aEVoc29JeHl2SFFPaVBZQ1REK2VVcytmaCtVOWJSUkFVelJTbFhDemhXWGpEZkNKalkvOUIybDRScGgvbndvcEVNcWlpNXBKQ0pVUFRjL0g0VWZ3OUZPTFpteE1IYkVpV2ZmcDByZ2JwSG9LblJuendZZmcvUks3bjl6TEFkR0FLLzh1R2Ewc2xaNUlUMVhVZXFyUHNDcXQzTUg1RzJteXhCRGxxRDBZUVViNk5XaEk3cGpqcGluNmJXMnRod3pINE5UL1RwNENXcEhsVnljQlZXc1NnaEd5U0JFUVJwQlFLTE9UdjFFdk94Z0Z4aDlHWWN1OVQ2V1B1ZmJFbkRnL0xLOXJncjJwd29JM1lJajBwMkJiQm1YN3ZNaFB4S0tMcHhaaTQzSndWZjlIeG4zMU5hWVFpLzBTMXpUQ2c5UzI2dFVnQXE0OHJpK0VpM01IVWtJNldzTWJBNzNMbmZnQmo3N0RBbFFsNVFPa1V2L3BIaHlZbGlpUTJYWWFZeFNIK2hHNCt0QStLNnVQMGhES2VRTGsvZjl0N2krNllPMFUrOEdpL1h3SEFzdDZDTDdJL0tpQmZGUG5OWUx4WkJ4OUUwc1FlckkrOFlLRjJKZlRvdHZIZmM5aVNmM0xlQWNVeld5L0dzWXIyMHF6RTErMmhxVW54UWJxaUVqbGFNcWVyLy9RbzU4T3crRm1wUXAxd3UrN2hnZnI2UmtLNFl3eGtld2VYaE9SZkNCTnFJQkp6dHdaMWZCMG1icFJOM2NrbnpEaWNyYW1tM2pXa0RpWXpmL0pNM2hZczNjcnlsZEd5WHFyMjhKNnU4eExhU0RYRi95VVF3YlNGV0pNc3Q0K2lqUzNIN0RVNXdZamdraEV6aEJWS3g3MjRMVW1rcFVUYVJUajAwSmdDTXNsSER5eXZMU05aV2Mvc0luL3ZXU0FIVTlxMkNZUjdDOUNJa0d1STBrT0tIMG53S0tpMXhXZjladzFpdmdMeGtVbE9FSUZOcFE4WGQ0UnZpampHTHJ4UVIyem1zcnFMalRoanBuUjlyeWwycXVUbStIbXVpZWpzR01XR0lYS2t5cGRMWVBudmNIZkgyY2xXZ1U3MVZKeFdyejZLazdMaklHejZtRm9qNDVaWjdGL2oxdGpYTWg4bHJZQmxLZFhqemxEY3MyaHM5Sjl1QWN4S1dqUlhteTh1S0M0WnU3TWZWSzBrY0RmdnRBZmNrbmVuUmd3aFpGS3BTSHk2SDhmSWwwV25IUGJVU041L1ExSWlrOGthYUMwTVNiUjhLVjQ2dmhFZXZRZFBvZXhYN0NqcFNqWmtGQUtTRi8ya3VEWHlHc3pMejJoTk9rRzBpMUJta3hoamM2My9BUWx5S2l6azMwTUpCZk5QVkU2eTlxREVzZFhtTE1zb3VIOHA3MEh5SC9Lb2VseUFraStVZmRsS1FOajE3SG9ZR1NpblFrYmIyaUZXRzlORE9Xd3JqOFpRdVhUaU5LVFhKT3JIOGxUMSsxNjRFR2pYZTUrZnpmVW1BTTBDTFJNVFIvTnE1ek5WZ2U5UEYvVlBOZlUwZE5WY29MbVlQNkRUVTVPemcwYnNveDFhOFNnbmR4RlI5YlNOUnpabnpQR0pvNkhLR2NmYlZhU1VGUUNUZDZVYnpUZGNwTERUUXF1WndQRmJkZFNvWWpkc0Z1a25QQ0UyVXA2cmsvZTFkaDlLcjhtYUU4Rlk4Q09uQnU3QjFXZFBkeXVXZXo3eFB0c2h6QUl3UmVrSU9tRzBvbVNsYnh1WHcwYjlXdFBBWFJNVGVQZ2FiRHU4QnJ6MC80czBlb0JDUjZjdlhpd0tBWDhERkk5dno0Zm51ck5MZDdoWklrQ3ZBblQzUncvdFN0c1MrOHJGVW1HMDNpYVFtSm4zeVhhaVp3MU1TSGtSVnFXdERaOHpTQWtycW9ZQTdRM3V5WGRKTTZNcUNYRWJDZmdYbGdQNENBOGdMcjh0dndoNG5YRm1ZU2FhR2xFTVlDaGhWc1AwVG9uc2d5R2M2WkhyRitrSDJsREdTcXhNTmVCK1FUTnNOSGdyRVJyaHg2NnhPeWxzSVpFd0xDZXZuZm1RcC9DTHo0TWNDdDBGV3pobkpRMk5BaDgxMW1Pd2I0MmkzWE9qbnRrdEhUMnRRTVFRS0JnZFRuWWpHWUt3MEI0MTQxdWVCTmF3R2FaM2xMYVhXVDdZdUdRYUZLcFhkemttaTVzT2RqVlJ5U2tqVnBBOVlkRWFuU1E1Njg0U2pMWjNCdXRXTmt4SXAzZVF5NDNrK3hva2hQdndqVFZZcEdrYmJCR29DTTh6SUJEeGVxMjJMOUFrY05ZWHV6SmF5L05nM1R1WFdXS0F2MCs4ektkQ1J0dmFJVlliMDBNNWJDdVB4bENESWdWQ2pWQ0hYaWJxc3VQN2pLeVJ6M3RyOW5DWklYKytZQ0FhK1pkWEswUDJlZzF0bEp6ZVdnMjB6VWdFak9rbnNJRmtrMnVCZkwyVUVqTnhkbGxET0lTNzRHcjRCSGJxVEZPdkZCYTFqWmxQYnJmeHVOWTFxL0p6U2RjVkc5MjFlNDdPejhyRkRQdVZFN05mdGEybURmUWw3TTBKVE43VGllQllqZGFBWFBTOURPWU9Qc09WV1VsTzFReGNldHY1Z3dnSTBnSVZocGFYVEk2QXlDMm5ZNHZMaGZoVVpXcmJrZTZzYUd2K04rUWNyQVMvWHF6TlZPMThudGJmTXVlbEZpU25URlNpcllCTnlOYkoyeXRPazVIcU1IeHZPN2NEek1RN0UyemVKSGo4Unl2U0JtdlRxMGpCZExCaUlBaDdlSit4MkpvRVcvM0NiclRiZk95WnorSEZQc083aHN5VHpLYXJEcER2d2Q2R2xPS2dYMlNWbDNTVEQ0YUx1WGQwdk53VlpxSDZFaVJybDhhaFN6THdBRGNZTUlVQkRSd2VHWTNsbnRtdkNYMjF3S1Z0ZGVCR1RvVEtSekRPQVJOZnBHTmJGQkswcndxUHdLM3VZNHRpWHpobW15SmxENksyb1dVNGc5WFlXODJBQmxrNTJNbE9lUVlkMWhXSHJhd3BHcGJIQ0VjNGlxczhOMlNkYWE1QjlxTjRUWUIzWE5OdGkrck5JdEdnOU9wYXN1NW9mZkNGRkliTlptalRjOUVsSzRNd25PVzk5Q0dtNDAyTWE0L2VrMGxVSFBrck04VVc2TkNBRElvdkMwa21yVlVveG5TMEhReHNmZ1dRSWxrTlBEOUZVZk80aUpmMmYzaVRnenQ5aEUyT2dUMkNqS3dLcDhIQ2p1aGNhNUZjczFTbERsaFNBS2VITUg5dzJVZi9uNXVRNm5CMFdVV0NOc1J2OUROME1XZkN4VjdGTnhVbGEyd2NQSWJVdFlSTmpvRTlnb3lzQ3FmQndvN29YR2dDWkZscW03OHZ0cUNiZUsyOGlYempGY3QrNDh0MGtjNmJFaXFQMjhLbllGOG5BVm5GUUkyT0llUXZLYklIQXMvVFhsczI2M1FsYWpkSFVwTUtaTmsvQUJLRy8rcWtXMmRXUUU5V21QQ2VQT3ZkVm1BYVBNeDJ5N0xuM2oyN1VWUlBsSXBuaU82cjZXUDJkVDRhbWZwYTREVDl3OERrdEgwajM5WmE1S2JCanFZVDMwOEVhWDI3eFJ1L3EvTlhjWGhrWFA5SURaeVJTQ2N1Wmt4ZjZUWjRRS3BIbjV2empvdUlhY1NQTVR0YVN0cHlGRHZOR0hUK3hWNkVZdUJxNXIvZ0NkNk9oU2JMREtxSHp2Y0JDREJMTTJPUDQvRVIyc2h2N0dyTDJJYnN3S1hRWTVTVUlFMXg5bmVIMnI1R3g0MVAwYmZPVnBtbEx0Qk5NUkVQbE00alQwT0pqTXVoRC9PdUcyaDQ5UXhlSnFVS3FDcXJXOHJBV2JLSXFGN0RIeEQxbHowek5tNGpFZnNTNi9ZTFNsVHA0cjNjK0ZlZER2YVJpR1NpTG5HRTg3cTViRWR3SzdZYm5WQllNWDZiZENJc0s4UTA3UUprT3ljVU1mbWRDa3FWZTk3UmFDbmxhY0hRYWcwMjRlRm5XSEdGTy9yeC90VXZVWmljMndCcTYveDZqOEFKOEQybG5nbjhYN2FhQXI5UVZzblRKV1lWa3MwaHQzNFNZT01lay9pbkNtTXREc2tTck83K1dURWZDdUNLa2lwN1ZHejUySk1xMnZ6em1teUt5bzJxYThSaFVjY3lYaHltOFdHeDZvdSsrU2lKcXU2Zk16c3dNRzRUdFgvakxSZlgyNFQ4YW9ZcFozbzkzaTlTeGtRbzB0M09RMjBOSCs0bG9Ccld5a3dBU0dGcVdPWC81NTVIbm9Lakd1aGMrNmJNVkZnL2pTM3BESnNYbitmTXU3ZWlkSmF2eVo2VVpqaDBBOEtMNXI3anpBWG5XZTZFaTUvNFA2VnBPVUhZWEtBNXNyRWN6RnBIVVA5UmRWM0l1aUs3NkdQcTZwajVNNUxqS2R3TjVLQk5YdWwwYWdPZTJwSUlTY21zSEtQTXJiMU00MnNEbG9SUWhuZXBOaW84QVJ2MFlEMlE5R0pQT2NCSFU2RVRIV1l6MklpeW45UGlqWlI3WVNwMnA3eWlRQk5HcWpXWUdXdTZMTWxRSWRZUkNKOXBUUnp4dVU4cm56eHhrOFBRQ0Q1cERNUkVDNFpkTW9TWGNtY1ZjSHlNQ21BVUdtaVRSK09yQUNyTHBneWR2dEwra01IVXRaSHZINE1hUjdJeHZpSEZBRVFjenZxSjZMVWtzaTFFZE9MTUkvUnNQY04rUDVFeE1yMnhrMTc2UHNkL3VkanVoNVNTWXNoZmRDcWZrbzlOeGF6aTd5WUk1b2xHRUU0S2lYVXFVa0ZkM3F3a3ZISVZVSWFQMDc1UVQyeVh3VnBzTFRIYUR4ejZGZTNvMGg0TGtsaU84Z0dXYS9pcWtEL0RubThzcnkwaldWblA3Q0ovNzFrZ0IxUFpYd3BnYTAxckRmWWFWVE1WeXhHU0l5eXZMU05aV2Mvc0luL3ZXU0FIVTlqU0lqSWhSa2dweFQvS012NmlIOGxsV0hKMXRqOC9SVENGMENsMmY2V3dUYkZKWWNNYUZsbm1NaXMyQUxWT05QczZVTXZzTy9QT3c1Q2NyNzlzSnppZVdMTVZhT1ZHNC9lMVZQVFNBelk5SDg3T0NKWGV4K2lBT29XK0tBbnJpQnpBVkJkRnd5VXFJZW5MSlZzUkg3VnYzTlY3M01xcnFuL3BrekFYdGtpVUFYd3BLbVZ6ZGJlTkxsZWJva0Rrb21zc3J5MGpXVm5QN0NKLzcxa2dCMVBZM21UUm1TdFNrSGJ4QS9GdGNmaGIzMzRCb3oxWXVYNCtabnBCbFJTd3lUVEUxdUdMWWZlcFphMEo5cFRjOFkvR2JFNnpYdWErZmQzT1lrazRDcFk1aElOVkFOR2JHTUQxWVFscGNvL3IzQTZ2OEg3c2RPNUs3U2paOElUNUpTTFZzcEJGVTN5eXFqUGNkVkc5ZHlEL0xwR3hiVzI3UUJvLzh1MlZocGttOUxjTXczaDhoaXA2Q3pCNlRscHdUMVQ2N1hIa0d6OFVhMUMrU0wvRUV6ZXE5Szk4VlRTVzRGUHllY0ZZN0lVYzQwQVhQbXBxS0lxdGE3U2NqQVl2RDhoWkgzZDNVMVU1My9Tb2NKSEtEajRadjFqYm5GVHNqb2RqVjBmSGVZT2R0NTBQRldjT3hYWWF6OGpnZ2RsMDRCRUZGVWswU3BmdjJ6cmROMjU1S0ZyMW00Z1V4eTNLaTd5RkFQaGRLcnlDSi9oalRSSlFjVERuYTZ5UFNmc2VDRHRvUmttR3YweU5kRTBiaTljNHBXUFFnclZpMFFqZHpIMjVYME5uSkFrbDVZVWlrUGxsRlpYaG4yZFF6TG1NaktQMlJLNkxLUkE1QXBIZ09YWlduR3QwQW1jZlV5dXR3MEdZUkc5ZXdvS0FZUTM4SnRLdlJzZFZJaTZGYzRNeWplMkJid3VMb3QrbDZZeHhQMkZla1Vra2k5OGdiUXEwQ2xwdmJoWjJuNXZjNXFJWjFmdmJTTnRlTkhpMk5zRFcraFVYRThPWWgzQXg5d0FLNkJoTTBEaW54bzZPVm96OGFseHE0NHR0cWtpQVI3RzhIWHptdU1OakxzK2E5K1FJOXFlNkRTYkFCUWo3VUZFaFBjVjFlL2dQVC93Ui9zNW95U1NMdjMzMHRqcnp3bzdwbExvdW5jL3NhN1VlQXhCZXJRVXF5MkFsNDFEYXdGTGVLK21hK2FPTWJPZVo4ZElCYkdaaldSSjZqWFpJZU01ZGtXb2FZNWNSUmNDcDA5cUZtbWhsL2NXc1FWMi9LZnEvRGEydTM4U2ZYckkxVksyZWc3QzJPdms1U1Njc2xzUk5RMFFnb3RDKzRNQ1VSRU04OVJlN0lCOS9pd1d2Kzc5cUkzUy9IbktmeHJ1RnZPV040L3dXSFI2OW9jYWhHeE8vMXQ5dVpRc0tMOE5oNG1GK0xBRllqaForUjRJcEJWdGVYeTZmR2xXOGFRUTFzem0vUzlpSWsrallja2tTbm9WaVladG0ydkdzWlZDSU9jbDB2ckxIbVpNVnlpL0dKOFQ5bC9pU1FxKzlOQURtV1N3UnNXOWpyS1IydXl3R3M5QmhGZXNiVjRYSlhFdnhNTUtqSHB3aHRaRFFBRktLTGZqVTRsTHVQMWtHMUd6M2ZRZ1ZHMENLZ1FyR3h3eWc5Sk5GeDhsSzBwZEVPTytEYVh6VHJIb1h4TTBiSXNmY0xZQ3dLNWxsSUNLQWs4Wk1UNk10YUhNdjB5N2V2TWpCWi8xWWx2UTlla0wwZjYrN2hXN2JHVGhFT3k3eDlJeXliYm85eFU4a0dRMEl3U3lzYkg3OTlleWZLbmxaWlhkVS9ueDRXbjFhMUNQeWdLMTRLdGlYVGRGRFEyTGdDT24ycW9QWmY3TnRJRnhkTDZ5YWVwK0NxcTJ1RU5vcGcwRHp4VHpIYnFYNkRtY1A3UHllakhOT1ZVZzN3REYyUndkM0lreVlDcWdabk42RXJXMVYyNm9pbEZZeVhGWit2N0VIRThCNk1oTG54dExHa1JaWjArRkZJNktuK1hvZTdMTCsyWmFEbzQveXlua1ZSN0JGdVNxaHRLTHZ6amRieVlvVG93aW04NWM2UnEvUkNYdHdnOVJnNHFTRVJHampaeUZjSlEvUTZhSmJ2MExwRXlSbjNxcHA3NXVUM3pjYlRTUlJUVmp6dmN1WElFcmdyMUQvUHVnRm1oT1dlLzJwQjE1alU0MGllKzNjODlveWlhZUlPLzVza2R3UVB6ZzYvWUhOVi8xc1ZWZ09LYVc0STdRQWthU090ZFZQbTZINnd2bHlYRUNBTnZoQ01HZWxGQWUxald2ZEJNdW5WUjhOMlJGU0FPOE1rSUo2bzhMdlVvektEa01RQnQ1cC9jV3NRVjIvS2ZxL0RhMnUzOFNmWEQ1MmdLRDZIOFhWS0ZmbURIYW9TaE1zcnkwaldWblA3Q0ovNzFrZ0IxUGFtYjBxYWJUODNENnFuL2EzR2xIeUd4YW1aZ1JIYUsxNnZtWkV6YW51VERPekcxYVVwdkVDdFJCOEVNZ2FwYVFYTEs4dEkxbFp6K3dpZis5WklBZFQyNnZGcGdhMFpSTFdSUDNqSDB0eXJOWUE3NWVDVGY5ZElxallHY0FBMXJzVTB6ZWVwZE1aOE1KWGQ1K3hiQWFYQS91SmZzR2pQSTdwc1FjOEpuK2ZtM01MaytOQ0VGOExzUTBPdGdsSVhMKzYzRlJ2eUc3bk1jZXZINGkvWFQwQjFCWE5QTDZyOGk2Ym5iZStRSktZTUE5M1BkYkJjRHNHVFZhTGlKbFlkRU9UZmpZYnBMVVJDZGx4OUsvcHVFWFcrXFxcIilcXG5cXG4gICAgICAgIGlmICh2WydyZWRpcmVjdF91cmwnXSkge1xcbiAgICAgICAgICAgIHZhciBlcCA9IEpTT04ucGFyc2UoeW0uc3BsaXQoJ1xcXCJlcExpc3RcXFwiOicpWzFdLnNwbGl0KCd9XScpWzBdICsgJ31dJyk7XFxuICAgICAgICAgICAgdmFyIHNlYXNvbl9pZCA9IHltLnNwbGl0KCdcXFwic2Vhc29uX2lkXFxcIjonKVsxXS5zcGxpdCgnLCcpWzBdO1xcbiAgICAgICAgICAgIGxvZyhzZWFzb25faWQpXFxuICAgICAgICAgICAgcHV0VmFyKCdhaWQnLCBTdHJpbmcoZXBbMF0uYWlkKSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJ+ebtOmTvicgPyBnZXRIZWFkKCfnm7Tpk74nKSA6ICfnm7Tpk74nLFxcbiAgICAgICAgICAgICAgICB1cmw6ICfnm7Tpk74nICsgbW9kZV91cmwsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICfmlq3mj5InID8gZ2V0SGVhZCgn5pat5o+SJykgOiAn5pat5o+SJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAobW9kZSA9PSAn5pat5o+SJyA/IHhseHogOiAn5pat5o+SJyArIG1vZGVfdXJsKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgaWYgKGdldFZhcignbGlrZV90eXBlJykgPT09ICflvIDlkK8nICYmIGdldFZhcignYWNjZXNzX2tleScpKSB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+eCuei1nicsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQobGlrZV91cmwpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZsaWtlPTAmbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnNpZ249NGEwODY0NWMyOTk0ZWI2OTJhYzBjZmIwYmQ3NTY5YzYnO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IGNvbnRlbnRfdHlwZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBsX2JvZHlfdHh0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2cobF9jb2RlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8vJyArIGxfY29kZS5kYXRhLnRvYXN0O1xcbiAgICAgICAgICAgICAgICAgICAgfSwgKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5oqV5biBJyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChjb2luX3VybCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY19ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZhdnR5cGU9MSZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmZyb209NyZmcm9tX3NwbWlkPXRtLnJlY29tbWVuZC4wLjAmbW9iaV9hcHA9YW5kcm9pZCZtdWx0aXBseT0xJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2VsZWN0X2xpa2U9MSZzcG1pZD1tYWluLnVnYy12aWRlby1kZXRhaWwuMC4wJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnVwaWQ9MCZzaWduPThhYmJkZGQ4N2E2YmQ4MmUxZTQyY2IzY2ZmZDMyYmI5JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY19jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogY19ib2R5X3R4dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGNfY29kZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+aKleS6hjHkuKrluIEnO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn6L+955WqJyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChhZGRfdXJsKS5sYXp5UnVsZSgoc2Vhc29uX2lkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhZGRfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYwOTEwMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlYXNvbl9pZD0nICsgc2Vhc29uX2lkICsgJyZzdGF0aXN0aWNzPXtcXFwiYXBwSWRcXFwiOjEsXFxcInBsYXRmb3JtXFxcIjozLFxcXCJ2ZXJzaW9uXFxcIjpcXFwiNi45LjFcXFwiLFxcXCJhYnRlc3RcXFwiOlxcXCJcXFwifSZ0cz0nICsgdHMgKyAnJnNpZ249YzY0YjRjNTA4MzJkMjllNDBhM2RkZWRlZDM2NjcxMzUnO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhZGRfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudF90eXBlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGFkZF9ib2R5X3R4dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGFkZF9jb2RlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8vJyArIGFkZF9jb2RlLnJlc3VsdC50b2FzdDtcXG4gICAgICAgICAgICAgICAgICAgIH0sIHNlYXNvbl9pZCksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+WPlua2iCcsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoZGVsX3VybCkubGF6eVJ1bGUoKHNlYXNvbl9pZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGVsX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MDkxMDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzZWFzb25faWQ9JyArIHNlYXNvbl9pZCArICcmc3RhdGlzdGljcz17XFxcImFwcElkXFxcIjoxLFxcXCJwbGF0Zm9ybVxcXCI6MyxcXFwidmVyc2lvblxcXCI6XFxcIjYuOS4xXFxcIixcXFwiYWJ0ZXN0XFxcIjpcXFwiXFxcIn0mdHM9JyArIHRzICsgJyZzaWduPWM2NGI0YzUwODMyZDI5ZTQwYTNkZGVkZWQzNjY3MTM1JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGVsX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IGNvbnRlbnRfdHlwZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBkZWxfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhkZWxfY29kZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycgKyBkZWxfY29kZS5yZXN1bHQudG9hc3Q7XFxuICAgICAgICAgICAgICAgICAgICB9LCBzZWFzb25faWQpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJycsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgICAgICAgICAgfSk7XFxuXFxuXFxuXFxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlcC5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICB2YXIgYmFkZ2VUeXBlID0gZXBbaV1bJ2JhZGdlVHlwZSddID09PSAwID8gKChlcFtpXVsnYmFkZ2UnXSAhPSAnJykgPyAn8J+SsCcgOiAn8J+GkycpIDogJ/Cfk6InO1xcbiAgICAgICAgICAgICAgICB2YXIgYmFkZ2UgPSBlcFtpXVsnYmFkZ2UnXSA/ICdbJyArIGVwW2ldWydiYWRnZSddICsgJ10nIDogJydcXG4gICAgICAgICAgICAgICAgaWYgKG1vZGUgPT0gJ1g1Jykge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHB1cmwgPSAneDVSdWxlOi8vJyArIGp4ICsgJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9iYW5ndW1pL3BsYXkvZXAnICsgZXBbaV1bJ2lkJ10gKyAnQCc7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgcHVybCA9ICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5L2VwJyArIGVwW2ldWydpZCddO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHZhciBwaWNzID0gKGVwW2ldWydjb3ZlciddLmluZGV4T2YoJzonKSAhPSAtMSkgPyBlcFtpXVsnY292ZXInXSA6ICdodHRwczonICsgZXBbaV1bJ2NvdmVyJ107XFxuICAgICAgICAgICAgICAgIHZhciB0aXRsZXMgPSAoZXBbaV1bJ3RpdGxlRm9ybWF0J10pID8gZXBbaV1bJ3RpdGxlRm9ybWF0J10gOiBlcFtpXVsndGl0bGUnXTtcXG4gICAgICAgICAgICAgICAgdmFyIGRlc2MgPSAoZXBbaV1bJ2xvbmdUaXRsZSddKSA/IGVwW2ldWydsb25nVGl0bGUnXSA6IChlcFtpXVsnbG9uZ190aXRsZSddID8gZXBbaV1bJ2xvbmdfdGl0bGUnXSA6ICcnKTtcXG4gICAgICAgICAgICAgICAgZXZhbFByaXZhdGVKUyhcXFwiaWZuenFhTnFOUmtONk5xRzBmWng1TWV5NDc3T3NNSk9UYlRkOVNhak1rZkxLOHRJMWxaeit3aWYrOVpJQWRUMk5LWE94TUwzNHRQc0pjYkZnWXEySXdlcVJXbGN0bm5uNDZkSkhHQW9RNlMrVHhzV0paM0VMYlVBRWYxVnYyeG9NcmtsM0tvcVd0bzF1N3U5U1V2TnRqMXV4QzRlbnVaSUUzSU9WSllmdWxyU0l1cW5NRTgraGxWMzhCU3RaQ2tKZjBpVzNIZEYyaXNCSEV4VFpmNGxwQzJLZjR1QXNQZlJxVThOOWpiUDQrcXpQcllyRytZYVd0K2ludzlaYUdOYTYwN0Z1dkxnSCs0dlpibWYvdEduUnphUXZmMHJodlBuZkJlRXlhTUF6bW12QU14NHUwbzQycnhIbU5LU3gvMlZabElxK1JxQ1p4SkozYktjUUg0K0YvZDBHNVltWHlPUFpSTllNN1JvQno4emVRRS9ocUJyVWJyU2RiM1Z3OFNEc0V4VTJoV09Fci8wNTJuNzRTRWRXV2RjMzdrOUJMYVZQSnJkUEZxM3IrWmg4ZjZpV2c2TlhCckIrdFVsR1NWVGpaZnNMRDJyQmZwdVBlUVFXZEFFclFKaElGTTk1UHhoM1M0Qkh0VW9kWjNGMjJtaXRMRWY4NklQbzE4eXJnSE1XVmFRYTR1UUE0Wk1EVDFhaE04NWs2KzdMVG1QdHo2T05BeHZ5SVQ3NXNDeFNjazBYc0xsaEc5Z1Y4clUwZmxEM2UraVdla2prMVh5cm1kY0tmRkhHeXZJZnFXRDZ6TVJBZEZJSXlYeE4zc3RidE5pM2JRTVVaZ2JZbW1yM1FsZTBqQUhvWlJNSGRsMUJyUzFzZG1MZXBXeHlIQzhyNlUzNUhtQlFOSHBkdnppNzdXR0dyNDRRNE1ndjVSWGJKOWVKT0ZHemxoclRzRFF6M3dBU1d6UzdKeEc4Y2s1ZlYwdVRSY2pnSlBGQ0k4NmV4RDY0VDh0bXNrZWtXWE10WlVqbE5JVFA5Uk9QTktHbnd6cmhGVjJSdlZxTkcwRUZJc1cxV3ViYXRhc2lKNmZYbUJURjBndE1tQksxYXMzSkhXUmhLcmdZZ0ZBU2QrRTRLVUF1TVBMdFFiMGZ0bHlRaUFUVnNhUnJGemJrcHVZbE1BczFQOVZpVWovRXhvWHFBTWFROFpKem90c1B2ancrS1BGTWZudzhCOUVRY3ZaN2NBb0tLTzYrbkRTeUhlTTFldy91b1dIMlhKTkdMMVBVYzlzMVRVYmFLdFViUzI2aFdOR01yR3pHMnUxNm9UbERmeHpCN0tMam15SWlDaEI3NDZDTzNUblp6WHA0cyt2MS9yZmdQWXlBU0dqRWpSTjlxTWF6N0lsL21MUGlFVURhanJOK0FVKzZVWmxTVUtaYWFtemovNHRKdGxtcEEzaTE5RDdJc3cxa0R6SHdMc1lmbUhNU2trdi84REpwUDJWRFBHMkZBb1Jaa2xSY2M5ZVVkYXV5TCtRaENSelJBQnF2cHplMklZVVRNTUdrV21XMnpVRnJkN1ZTc3NyeTBqV1ZuUDdDSi83MWtnQjFQWTVZbzgxcWk4aFhXRkcvc2tWaTFZVHBjMFY2NVVnWjZKTElCNktwMk9vczgzb2dpU0ZNREppc1QyT0VDNkdVeGhiVlhicWlLVVZqSmNWbjYvc1FjVHd5KzMyd0tUeldWLzAzaDJSb1dkSjJub2wwdUNNR1k5YURDUFViWldVZWFmTEs4dEkxbFp6K3dpZis5WklBZFQyQUxTWm9waXZNTTRIVk5GM21ZMlhMMUEzamVzSUF0eERSL3ZCOC9BSWwvV0xyR0xia1AyU0p4OEJLbTFoU05vZ1d5ZDR6WjF3YUpxcE5jTGIwbHBmdHpqM0J3MWtneU1ZcFMvbkY1LzRkNTJaTGtHR3phVU1PM0t4aWhQSTB2VjQvNlZlbWZGT0x3elhrUldyeFJ5aEZ4UE1jc0dBNmVBcEhvMWhjMWs5bTFWL0NWdVdXY3lncStSMXB6NGFXb3FKS3B0dlRSdWd2MTRod0pUKzdyd0dXaXRPRlZ1SzNOMTBhclFLVlo2a1Q5VUN2R0s0R1JrdVpqbC9kYkpmNEF4YWM4RmZNK3RPL29LTllCODUwaDZnQ2JUbUwzVFcyRXVGdVNEb1k1cWtNeTIyaTF1MmVLT3l0UjRTUkxGTDRMditwRXFmSGNzb0xtajcveklVcU9OQ2twaFNGTTZkZnlkQ0c5YzRWNUFzb204cU9Cb3V6dGdCektVSFQwbzcwYlEzVVRpdDE3QlpvVmNxY2JlSmV5ZHZXM0hDYVZaeTJ3aHd3TjNiMTZWSGwvL0g0ZzBnaUtmRjU3aEplNHppU1ZuRjJwV3NHclI1ZHpyTzBwZXF3QWdadG9CRG8vbWFMWGhvem1HZllBYzd3eldtYlhRZUp2L1FCcm91MjdPS01GREFYUC9janlFRUJnREhiMXIxVlhNQ2ltVTB3dzJWWDBDajVYVitmMEo1VzU3S1VPU2VDamJ2citWVXhxbzE2eHc5a3I4dG5RMlF6NWtNSXdLa01JUGlPSmhKMkJBcCtKYVhsZ01YSWk2cnp0N0ljWWRieWJvYzdFamR2TStzcTBBNUJnVExZNkVDOUJuZEhlaGh2MGFqOXVOenZvanZrZ3Q4ZDIrNXhNWWJkWEJHWG1keXRoNXBBeW44b0xCQ1dVRGJXZTgwLzk5ZXQxaUgvR0RKRWZvRExEZjlwK2s0KzBRYnVXZEVxdVRPMWpDSkY1MWg3VHhIbC9VWWEvbUp3dWQwL1k4RDRmRVlaWC9WM2hHcE9EOVIyWm1qZzRJcnBQcHdlZmo4dzB3Z2NmeUx6OVpNbXMxUG9NbjBxQ25uTStWdTZuNnN4Q2xQYjh5V3hLa3pNaDBld0U0bkpvY2hXYkRrNXJjZnJFMDJreWtGWEZ0dSt6ajhISmdBSE1iV1Zuam55WEk3NlVncURSZWpBSHlGbVdtVks2V2hHazdtNlpzSnFqSmkyRTUzNGVCMGpBVllmNkpiczdoQXFKUGdFbGVPZUFPVTR6Sk1zQVZyaXN0NjNpUkpNYUVNVGpPNDk4K2FtTU9yNzhXcktEemh3NlJnQitPOVVoTFBLMDQyWUU3TmZ6akNiNzk5ODd1OXdRVjRRY3JodGxLT1hjbDhNYlp0SDBibWJOYkFPdVh1SUY1ZHJKVXJqWVN3VlFCREFhVWFMWWV6ZVN1dnJRd0ZTQ2J3ZVRVSkd6MWo3dUJVcTNtYUI0T2ZLMm43RzJOMWZDSzFlRWF3OTJVbmxWRE8wVGYxTElJMDhIRnRzUkluNlkxcDNzOVYrTEpROWlVZDVaRzBMd1U5MDRFNzVQcHVWTFJPQllIUzRtckIzUnZyTWhBV0M2amR0U1RGa2x1bXYrYzJFSlJyYlVyanI0QStZNDBrQU5OMVV0MXJkdk1iLzBwUk9KWFZzRGZjL0F5TTVuM0NmbHZEVnFTZ1BJOWJsSEZlMW1aNzVDbUlMUzZLemRGMFlsMU1WSGlQVzBqdm9kbnhLWVRwczhoSk4rYUkraDFXUkd6ckpLWkppY0F0TmRzV1ZoTGZyVnhWRVBTZW05akd6c0FhV1BrVkJHUk82alcyU1c3bStiVkR2UlBiVnBiNmdTQkk4b0NVWU9vNy9RMEhhYnFtN1JQTWNzR0E2ZUFwSG8xaGMxazltMVh3NTBJUnZuN1Z5UEorckRCMUdhZEs5cW83SXVEdjF0L1dqejdkdnA0ZDRScHVHdnk0WlFrOVB3VjV0VHRrWDJER0F0UThmYWl2RUlINzBPaGtwdUN0bkhrYm96UUM5QllMeFVkZklMdlA4cUU5N3JaWWsrWGNxYTdodmxCRzZuM0pnNTZzNHJxV2VaTmxCL2NHNTVDU3RSUEVJNlJqckFEcHkvc1luUTRSRU42VWxBeW1TcmVzMllYUkxUYUVjWVdrSlc5ODJDL3NmWXNja2JpemxPc1lzS0FGcDNYc2dEUVJEYWFvK3lITkpBcGVWUksxbTdoMThxL0tiUXhGY3BuRGJHWDJNUnVjVTVQVVBKcGt5dkNsRXZSSzdrMXgybjB6YXpBUTRnWmZEd3NNL2ludk1RVEtlUWV0eklyNi9ad1R6SExCZ09uZ0tSNk5ZWE5aUFp0Vi9xSE01dFlVMWh3UlNyZDg1S0gyTXBkdDdNUHRXZnE0TmRPWVdiTmhQUDh4bEw2TGdIQVdsTXlCRFpzdUd5SHpFOHh5d1lEcDRDa2VqV0Z6V1QyYlZiMldITTFNVlBlTlAySnpXS25VMEhRdWJhby80MVBxSWgrQ1dCUjNIVUZZUnhpcEVCUWJLQS9tQXBCTjFwSEN3QlBNY3NHQTZlQXBIbzFoYzFrOW0xVUNSNjdodjU5ZW00blZQWm1qVTVrMUI5YklkeklsN1dySjFmL1NVbXd2cThqeU1HbThUSlhpS2dGRXk2MjJlbmtUekhMQmdPbmdLUjZOWVhOWlBadFZDcmxSbmdURUpCcVYyaXlzNnF5TFRKMUNwYm41MWNLdGU1OGVOS1JrbENEdVhGYzNHcWxZMENlRzZGM1FNVnVxQk1FTjlwWHNtbndLeHNFNjUvYStlbHFlZkxLeWw3SStPWnYrS0JIbllYNzlXakJiMzJCR2hHWm5kMVFreTJ4SFB2ZjRTeCsvdFlOMnpuY21wUXFTd3hQTWNzR0E2ZUFwSG8xaGMxazltMVZVdVVHeFJPWlMzS0NFOTZuYVVGNzRtUm1yZE8vanB0SUhnTWpDK0c2VjdCeFpUSml0TkVMc3QwRkNKK24rQU1ZVHpITEJnT25nS1I2TllYTlpQWnRWQkNTK0xmWXFyU0JHSGtlWWxhcWdid0lNeEVkMU9WUHlKaHVWeEFVbkR0cktXMENudnVwOHpBM0NVK2lNVGxUUmYyTmZKY3hlajhkaWpZNXkzZjFuUldSRU9wWW1yWVh6dGZzUjhSK1krVGVZeEFldXU3c2d3dWlUQ0dxeGN4cThjWEYyTyt6bGFYZW01SHdITlc5Ry8vM2VudWs2TUsyQnR0Q1FCSHJpcFlvR0ExK3ZVK2RKL0YrTFIxaUJMdDR5L0ZzUHhySlAxeHZ2MDBaRmtYZ2N5R0VpYXVhbUd3WWRsbjMvOCt0RmdYUkk4MnI5Z2NzR1hUeWdJT1RGOXlpRjBnb0NoNE5OeXJhNVNQelN3Z29uM2NzbitOaEFRUkp2U0ZzTFhMSDhGL2ZDU0Nqd2wvcGkyR0dZNG5CVWVrM3dLNmNRR1c2QitvTzNqS1NXOVFFRzAvT2dIVGJ5eGJSOUVzcG9sbU5sQi9HcVNMNEtPTVlhd05DMHZnVlpkSkI1YkhsdXRnam5UdnY3b1l5ZmVhK21JTzFqR2JZK2pVOFZMeDFZWlNIRU5TVGppMjc0UWoyS09yRkV6cFhxaVEySktabG1EaGI5TEo4T3hWTHg4QUhIY1A2bnlXT2hpWWNGdVFNRndmOVVSSUdIcnpyanpwcGY3Z3NLbkpsdFRia2xsMWxzZlVIU2Q1WlNBRjZRRTNiOG9iNXg1SG1aRlVRUmtVOTRQbENIdFc1RUZ3d0hxTHdzMXczR3h6R01odHFmRTh4eXdZRHA0Q2tlaldGeldUMmJWZUU3eU03THhxdzc3MS8zbk5iNzhPdnA0dWJGY2lSdjZCdlhjVjkxWC93bEFiNjZnRHF5eG03QytqRGw4NVBMSndkSVJCa2VxMFVwbUtSdmxqQUdVSW9MUDBvQ25qRnhQVmlucXptQW1QeWx4UmZvdlZaYzVSVEdjemw4dGlDSVFGS2U3aFBuejhQVWVUeEwyR1VTOTc1M3hQMHVnYkpOSDBrdE1GR3FYTFFyTjIwaHl4anlGS05PeTVHUUwxZGwzMlY5NmNqVlFldWwyazVYSVJPUGFXeGw2MGo1WHo2R1BXMHZzQ0lwSyt4aXl5dkxTTlpXYy9zSW4vdldTQUhVOXVTd0JNdlB4Z2oyVFdPRDkxTlpsNUtvSmMrenUzanBWUUJFZ3lIR3h0aTdTejBPeXNVdFpnTEVJVzlhZFNmeWkydy9zcm1UbThIME02S3pHdG5TYzhhMFZWd1QycVFvbm5nU1I1SzZRVDJzRVpKckJzNUI4WkRCa2phZlE0c1JwUkVhT05uSVZ3bEQ5RHBvbHUvUXVrVEpHZmVxbW52bTVQZk54dE5KRkZOV1BPOXk1Y2dTdUN2VVA4KzZBV2FFNWVpbk9JN1VBemxkOEhJUytMVTA3b0xoRHVWSWFzSTdBZ2JmWWNidjh5WkJ5eXZMU05aV2Mvc0luL3ZXU0FIVTlsc1ZWZ09LYVc0STdRQWthU090ZFZQbTZINnd2bHlYRUNBTnZoQ01HZWxGeXl2TFNOWldjL3NJbi92V1NBSFU5dDVYYnFQZkxHNUFBVUV2cmNoUzRXWmhjbGZOMFZxMDAxRUMvK1VBWGFHUzViMGhrSlZPVUN0Q3dzelZ1eUFlVU1zcnkwaldWblA3Q0ovNzFrZ0IxUGJMSzh0STFsWnord2lmKzlaSUFkVDJwbTlLbW0wL053K3FwLzJ0eHBSOGhzV3BtWUVSMml0ZXI1bVJNMnA3a3d6c3h0V2xLYnhBclVRZkJESUdxV2tGeXl2TFNOWldjL3NJbi92V1NBSFU5bk15R0xJSGxCMlFSSVk2RHRBZzRsekxLOHRJMWxaeit3aWYrOVpJQWRUMmdEdmw0Sk4vMTBpcU5nWndBRFd1eFRUTjU2bDB4bnd3bGQzbjdGc0JwY0QrNGwrd2FNOGp1bXhCendtZjUrYmN3dVQ0MElRWHd1eERRNjJDVWhjdjdyY1ZHL0lidWN4eDY4ZmlMOWRQUUhYWlJFaGNkZXgxS01MYytnNEkramN4eXl2TFNOWldjL3NJbi92V1NBSFU5Z1R0Vk9GRjZrd2FubXNHU2RIMmlhR2MxWW41SzdrSDVWWEQ2eXRncTZvM0oxUWs2RDdkYTh0ZEdSWnlsbHFXRHM2VU12c08vUE93NUNjcjc5c0p6aWRiazM1NDJtakxSS3R5aUVleXYxdHM2eWFlcCtDcXEydUVOb3BnMER6eFR6cUgxcjgzSnl1dlFzNHNWWGtyM0NmTEs4dEkxbFp6K3dpZis5WklBZFQyeUFJdU13RHh2SWZVSUc5T1p1RHNJOXFBbkJXMUZpMHVkZmJUOWhnNlU0QjRsbFJ2dUt5UzdaRVJ6RWJlL0pmdjhnTkVkOFRTWUI5KzcydnlwaWwyclRiN3k2V0ZsWlFhMCtmQjQ0VEU2cXp4a3hQb3kxb2N5L1RMdDY4eU1Gbi9WaVc5RDE2UXZSL3I3dUZidHNaT0VRN0x2SDBqTEp0dWozRlR5UVpEUWpCTEt4c2Z2MzE3SjhxZVZsbGQxVCtmSGhhZlZyVUkvS0FyWGdxMkpkTjBVQ1B5MGROcmlzeXNLT011VU1QNEZwWWxJbEN4QXQ5UUZhSWFJb1V0bEFhaVlDcTNRbk0rUll3aC82dEp3M2NTcWhtSFdrOXJCYWo3MU5rQUNVdk9YcjREVVg5QVpXMm00a29pWGQxWEp1RTJLeDd6RWpXMGFtZ2Z6QlpESm8vWUtSK2pTQnZwSThBQlk2MkpOTlVMYTNtdHFXRE8xWGdMMlVsc2RPREpsSXZUVXEzejJsdCtpbnVrTGxsYW1aZWZCK0p2cXNxditOZVliT0p4eEdtdG5QN3E5cFYwclJtZisxTmUrMU8rUjVVc3JhSktYUFV5WVJiMHk3b29Ua0xHMWg0aEdBZ0V0UmpUT2t0a1huRjVCWlRHTTlSeVFSdWF3YzBiQk9tdEhYMWhjVDdydDN0RGtzWEpmZmxQeXlzV3poUFhMTStGZHg1ZENZUnlaekMveGl5WnJkMVJvUFoydSswUXRic0sydWdScHpRNDY5bG5kcEpocndhZXloK29IQlM4Rnl3K3MvWEIzMU1IOUtKQW8wSkVBWVpLMjI1MmlFWUhnbzNYdU4xWjhiOUk1Ym9vUHp2TDAxSWkra0FhaHNzcnkwaldWblA3Q0ovNzFrZ0IxUGFqcnVxWS9iTDZ2MTIwMDJtYTYwU3paaFRueXlRWmRYOU01Mm9DQWtpajIvWU51K0hwWDY3OWRsWlMrV2FodVFFamp2NC9STWFKU2ZTS0REUjZ5bHhOaE1Zd2drekZwV1FUUTBHcUxxZndMSUl6VnMyZ1IzTk9Pd3NsOXlrYUN4aWZFNDVPU0xRYVkrc0VCMjFMWEtmMlJXSXFhYktpN1ZsQld1VnF6Sy9NeGJDbWpLUFdLVUZwSnphODBnTVhVbkY0SW0zeXFFZnQxcmZzS1U3U2c2ZTRoWnF6Um1iUVlkdkU3Y2V6RitmOHhjRDZ5UmNreE9SZEc2clBPQktpRE1mZzYzZUh2WmlVanVsUEU1SXZKRHhvS0JOWHVsMGFnT2UycElJU2Ntc0hLQWdURkZqYnRiQ2ZlMVRqK2l4MkdVVE53ckhVenFZSjNJcXh5SHRPYXIySEYxbUw1Sy91cFNZM3pUMGJLamNId2NzcnkwaldWblA3Q0ovNzFrZ0IxUFpQeGQrelhCaElsaDhwdjR5VXJYYk1nb3NNTmlZREJiVVptR3ZVVkI5WS9VcTVReVlSOGpCYTNUNnFxcWQ5UGNER2pyVEk2WWJoRWE0bXRpdlZGMW4xSjlmVUVjU0hXdms4ZnB5bncrQmtZT2V6aElZd2JoY1hyS0pOM1hqNFhBQS9qdDZIMzI1NEZjNG1Sb3U3ZFlsWXl5dkxTTlpXYy9zSW4vdldTQUhVOWtLQXJVS1ZGMk9tQUVPdFJQVExvVXJMSzh0STFsWnord2lmKzlaSUFkVDJpVlNuMlg2T0s5MFJmRXFqa0MvcklTWXovN3VjcDZhTTNUMTljSnB4RXJITEs4dEkxbFp6K3dpZis5WklBZFQyc01pZHNKNS84K1UrWkxYb29rdFM3L1puYTAyZnZBaEpnbjlnUmpTendDOWRDQnlvVXQ5cFlYUGxOdWRmN2g2QnB6NnF3V3ZNR25yMWZaWWEwN2JmcjhzcnkwaldWblA3Q0ovNzFrZ0IxUGFqdnVjenJRUVUwSTJVQWE4VUpkUHVNakJIelltV09CbWpsOEtoMjMrVDZybHdXUlZnRjQ3SEd5d1ZuVnpwR0NiT2xETDdEdnp6c09RbksrL2JDYzRuSmZqcmd0NkVuUGpYWi9uQ0pNUHZXTTZVTXZzTy9QT3c1Q2NyNzlzSnppZHdaNDVDWE5HeCtTOE9OUnUwY1FZeUU5Y3N6NFYzSGwwSmhISm5NTC9HTEptdDNWR2c5bmE3N1JDMXV3cmE2QkduTkRqcjJXZDJrbUd2QnA3S0g2Z2N3eTdZbU1IQURrc3VtTjVIcmpsVjRNc3J5MGpXVm5QN0NKLzcxa2dCMVBaOTZ2ZUZmNW8wNkhsRmhGa0VialZOYUhoVldnSDRmVE10a3V6NWJEbitBSGduanB3eUcvaElMNTBHSVBYbyt2cllUQWFCeUFCUVdvNVAxcFZ1S0RaY1xcXCIpXFxuXFxuICAgICAgICAgICAgICAgIHZhciBkYyA9ICQocHVybCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbChcXFwidmFyIGNvbmZpZyA9XFxcIiArIGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL0R1YW5OaWFuL015UGFyc2UuanNvblxcXCIpKTtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwocmVxdWVzdChjb25maWcuc2V0dGluZ3MuY2opKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBheXRtUGFyc2UoaW5wdXQpO1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZXMgKyBiYWRnZVR5cGUsXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHBpY3MgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogYmFkZ2UgKyBkZXNjLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAobW9kZSA9PSAn55u06ZO+JyA/IHRydWVfdXJsIDogKG1vZGUgPT0gJ+aWreaPkicgPyBkYyA6IHB1cmwgKyBsYXp5KSksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInXFxuICAgICAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcHV0VmFyKCdhaWQnLCBTdHJpbmcodi5haWQpKTtcXG5cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogbW9kZSA9PSAn55u06ZO+JyA/IGdldEhlYWQoJ+ebtOmTvicpIDogJ+ebtOmTvicsIC8vJ+ebtOmTvuaSreaUvicsXFxuICAgICAgICAgICAgICAgIHVybDogJ+ebtOmTvicgKyBtb2RlX3VybCwgLy9sYXp5MSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJ3loYycgPyBnZXRIZWFkKCfokKTngavomasnKSA6IG1vZGUgPT0gJ+aWreaPkicgPyBnZXRIZWFkKCfmlq3mj5InKSA6ICfokKTngavomasnLFxcbiAgICAgICAgICAgICAgICB1cmw6IG1vZGUgPT0gJ+aWreaPkicgPyAneWhjJyArIG1vZGVfdXJsIDogJ+aWreaPkicgKyBtb2RlX3VybCxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgaWYgKGdldFZhcignbGlrZV90eXBlJykgPT09ICflvIDlkK8nKSB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+eCuei1nicsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQobGlrZV91cmwpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZsaWtlPTAmbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnNpZ249NGEwODY0NWMyOTk0ZWI2OTJhYzBjZmIwYmQ3NTY5YzYnO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IGNvbnRlbnRfdHlwZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBsX2JvZHlfdHh0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2cobF9jb2RlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8vJyArIGxfY29kZS5kYXRhLnRvYXN0O1xcbiAgICAgICAgICAgICAgICAgICAgfSwgKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5oqV5biBJyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChjb2luX3VybCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY19ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZhdnR5cGU9MSZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmZyb209NyZmcm9tX3NwbWlkPXRtLnJlY29tbWVuZC4wLjAmbW9iaV9hcHA9YW5kcm9pZCZtdWx0aXBseT0xJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2VsZWN0X2xpa2U9MSZzcG1pZD1tYWluLnVnYy12aWRlby1kZXRhaWwuMC4wJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnVwaWQ9MCZzaWduPThhYmJkZGQ4N2E2YmQ4MmUxZTQyY2IzY2ZmZDMyYmI5JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY19jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogY19ib2R5X3R4dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGNfY29kZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+aKleS6hjHkuKrluIEnO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbiAgICAgICAgICAgIH0pO1xcblxcblxcbiAgICAgICAgICAgIGlmICh2LnZpZGVvcyAhPSAxKSB7XFxuICAgICAgICAgICAgICAgIHZhciBydXJsID0gcHVybCArICc/cD0nICsgcFtpXS5wYWdlO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHZhciBydXJsID0gcHVybFxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB2YXIgZGMgPSAkKHJ1cmwpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgZXZhbChcXFwidmFyIGNvbmZpZyA9XFxcIiArIGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL0R1YW5OaWFuL015UGFyc2UuanNvblxcXCIpKTtcXG4gICAgICAgICAgICAgICAgZXZhbChyZXF1ZXN0KGNvbmZpZy5zZXR0aW5ncy5jaikpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gYXl0bVBhcnNlKGlucHV0KTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogcGFydCxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZicsXFxuICAgICAgICAgICAgICAgIHVybDogLyptb2RlID09ICdYNScgPyAneDVSdWxlOi8vJyArIGp4ICsgcnVybCArICdAJyArIGxhenkgOiAoKi8gbW9kZSA9PSAn55u06ZO+JyA/IGxhenkxIDogbW9kZSA9PSAn5pat5o+SJyA/IGRjIDogcnVybCArIGxhenksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiB2LnZpZGVvcyAhPSAxID8gJ3RleHRfY2VudGVyXzEnIDogJ2F2YXRhcidcXG4gICAgICAgICAgICB9KTtcXG5cXG5cXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICB9KTtcXG4gICAgaWYgKGdldFZhcigncmVwbHlfdHlwZScpID09PSAn5byA5ZCvJykge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJzxzdHJvbmc+JyArICfigJzigJzor4TorrrljLrigJ3igJ0nICsgKGdldFZhcignbGFiZWwnKSA9PSAn6K+E6K66JyA/ICfigJzigJwg4oqZ4oCd4oCdJyA6ICfigJzigJwg4oqV4oCd4oCdJykgKyAnPC9zdHJvbmc+JyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2xhYmVsJywgZ2V0VmFyKCdsYWJlbCcpPT0n6K+E6K66Jz8n5YWz6ZetJzon6K+E6K66Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly8nK2dldFZhcignbGFiZWwnLCfor4TorronKVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG5cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICc8c3Ryb25nPicgKyAn4oCc4oCc5o6o6I2Q5Yy64oCd4oCdJyArIChnZXRWYXIoJ2xhYmVsJykgPT0gJ+aOqOiNkCcgPyAn4oCc4oCcIOKKmeKAneKAnScgOiAn4oCc4oCcIOKKleKAneKAnScpICsgJzwvc3Ryb25nPicsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdsYWJlbCcsIGdldFZhcignbGFiZWwnKT09J+aOqOiNkCc/J+WFs+mXrSc6J+aOqOiNkCcpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vJytnZXRWYXIoJ2xhYmVsJywn5o6o6I2QJylcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuXFxuXFxuICAgICAgICBpZiAoZ2V0VmFyKFxcXCJsYWJlbFxcXCIpID09ICfor4TorronKSB7XFxuICAgICAgICAgICAgdmFyIHJlbHkgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92Mi9yZXBseS9tYWluP29pZD0nICsgdi5haWQgKyAnJnR5cGU9MScsIHt9KSk7XFxuICAgICAgICAgICAgdmFyIGNvdW50cyA9IHJlbHlbJ2RhdGEnXVsnY3Vyc29yJ11bJ2FsbF9jb3VudCddO1xcbiAgICAgICAgICAgIHZhciByZXBsaWVzID0gcmVseS5kYXRhLnJlcGxpZXM7XFxuICAgICAgICAgICAgZm9yICh2YXIgeCBpbiByZXBsaWVzKSB7XFxuICAgICAgICAgICAgICAgIHZhciByZXBsaWVzeCA9IHJlcGxpZXNbeF07XFxuICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gcmVwbGllc1t4XS5jb250ZW50Lm1lc3NhZ2U7XFxuICAgICAgICAgICAgICAgIHZhciBtZW1iZXIgPSByZXBsaWVzW3hdLm1lbWJlcjtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBtZW1iZXIudW5hbWUsXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IG1lbWJlci5hdmF0YXIsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcidcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJzxzbWFsbD48c3Ryb25nPicgKyBtZXNzYWdlICsgJzwvc3Ryb25nPjwvc21hbGw+JyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgdmFyIHJlcGx5ID0gcmVwbGllc1t4XS5yZXBsaWVzO1xcbiAgICAgICAgICAgICAgICBmb3IgKHZhciB6IGluIHJlcGx5KSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgbWVzcyA9IHJlcGx5W3pdLmNvbnRlbnQubWVzc2FnZTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBtZW0gPSByZXBseVt6XS5tZW1iZXIudW5hbWU7XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnPHNtYWxsPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOycgKyBtZW0gKyAnOicgKyBtZXNzICsgJzwvc21hbGw+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcblxcbiAgICAgICAgaWYgKGdldFZhcihcXFwibGFiZWxcXFwiKSA9PSAn5o6o6I2QJykge1xcbiAgICAgICAgICAgIGZvciAodmFyIHIgaW4gcmVsYXRlZCkge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHJlbGF0ZWRbcl0udGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHJlbGF0ZWRbcl0ucGljLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogcmVsYXRlZFtyXS5kZXNjLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyByZWxhdGVkW3JdLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfVxcbn0gY2F0Y2ggKGUpIHtcXG4gdGhyb3cgZVxcbn1cXG5cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCIsXCJncm91cFwiOlwi4pGg5o6o6I2QXCIsXCJ1YVwiOlwibW9iaWxlXCIsXCJwcmVSdWxlXCI6XCJqczpcXG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS95Y2xcXFwiKSkucnVsZSk7XFxuLy/pgJrov4fmkJzntKLmn6XnnIvoh6rlt7HnmoR1aWTvvIznhLblkI7mm7/mjaLljbPlj69cXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcse30pKXtcXG5wdXRWYXIoJ3N0YXJpZCcsJzkyODEyMycpO1xcbn1lbHNle1xcbnB1dFZhcignc3RhcmlkJyxmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnLHt9KSk7XFxufVxcbnB1dFZhcihcXFwiYWNjZXNzX2tleVxcXCIsZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9hY2Nlc3Nfa2V5LnR4dCcpKTtcXG4vL+iHquW3seWOu2Lnq5nlrqLmiLfnq6/pppbpobXmipPljIXvvIzmib7liLBhcHAuYmlsaWJpbGkuY29t5byA5aS055qE6ZO+5o6l77yM54S25ZCO5oqKYWNjZXNzX2tleeeahOWAvOWhq+WFpeS4iuaWuSc9J+WQjumdouWNs+WPr1xcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/moLflvI8udHh0Jywge30pKXtcXG4gICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsXFxcIuaWsOeJiFxcXCIpO1xcbiAgICB9XCIsXCJwYWdlc1wiOlwiW3tcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuS7o+eggS3kuIDnuqdcXFwiLFxcXCJwYXRoXFxcIjpcXFwiY29tbW9uXFxcIixcXFwicnVsZVxcXCI6XFxcInZhciByZXMgPSB7fTtcXFxcbnZhciBkID0gW107XFxcXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxcXG4gICAgLy8ucmVwbGFjZSgnbS5iaWxpYmlsaS5jb20nLCAnd3d3LmJpbGliaWxpLmNvbScpLnJlcGxhY2UoL1xcXFxcXFxcPy9nLCAn77yf77yfJykucmVwbGFjZSgvXFxcXFxcXFwmL2csICfvvIbvvIYnKVxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiAn6Kej5p6QJyxcXFxcbiAgICAgICAgdXJsOiBcXFxcXFxcIidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nKydodHRwczovLycraW5wdXQuc3BsaXQoJ2h0dHBzOi8vJylbMV0rJyNpbW1lcnNpdmVUaGVtZSMnXFxcXFxcXCIsXFxcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcXFxuICAgICAgICBkZXNjOiAn6K+36L6T5YWl572R5Z2A5oiW6ICFYuermeWkjeWItueahOmTvuaOpSdcXFxcbiAgICB9KTtcXFxcblxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHVybDogJChcXFxcXFxcIuabtOWkmlxcXFxcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXFxcXFwiLCBpbnB1dCk7XFxcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxcXG4gICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXFxcXFwiO1xcXFxuICAgICAgICB9LCApLFxcXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9pbWcwLmJhaWR1LmNvbS9pdC91PTE2MTIxMDE0MjMsMTE0NTk4MjE2MyZmbT0yNTMmYXBwPTEzOCZmPUpQRUc/dz01MDAmaD00MjQnLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ2NhcmRfcGljXzEnLFxcXFxuICAgICAgICBkZXNjOlxcXFxcXFwiMFxcXFxcXFwiXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6ICfmjpLooYzmppwnLFxcXFxuICAgICAgICB1cmw6ICQoXFxcXFxcXCLmjpLooYzmppxcXFxcXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFxcXFxcIiwgaW5wdXQpO1xcXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFxcXFxcIjtcXFxcbiAgICAgICAgfSwgKSxcXFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzUwLnBuZycsXFxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcXFxuICAgIH0pO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiAn55u05pKtJyxcXFxcbiAgICAgICAgdXJsOiAkKFxcXFxcXFwi55u05pKtXFxcXFxcXCIpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcXFxcXCIsIGlucHV0KTtcXFxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcXFxcXCI7XFxcXG4gICAgICAgIH0sICksXFxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS8yMi5wbmcnLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMidcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJ+aXtuWFieacuicsXFxcXG4gICAgICAgIHVybDogJChcXFxcXFxcIuaXtuWFieaculxcXFxcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXFxcXFwiLCBpbnB1dCk7XFxcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxcXG4gICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXFxcXFwiO1xcXFxuICAgICAgICB9LCApLFxcXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvNTYucG5nJyxcXFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6ICdVUCcsXFxcXG4gICAgICAgIHVybDogJChcXFxcXFxcIlVQ5Li7XFxcXFxcXCIpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcXFxcXCIsIGlucHV0KTtcXFxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcXFxcXCI7XFxcXG4gICAgICAgIH0sICksXFxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS85OC5wbmcnLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMidcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJ+e0ouW8lScsXFxcXG4gICAgICAgIHVybDogJChcXFxcXFxcIue0ouW8lVxcXFxcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXFxcXFwiLCBpbnB1dCk7XFxcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxcXG4gICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXFxcXFwiO1xcXFxuICAgICAgICB9LCApLFxcXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvNDcucG5nJyxcXFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6ICfmlrDnlaonLFxcXFxuICAgICAgICB1cmw6ICQoXFxcXFxcXCLmlrDnlapcXFxcXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFxcXFxcIiwgaW5wdXQpO1xcXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFxcXFxcIjtcXFxcbiAgICAgICAgfSwgKSxcXFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzIzLnBuZycsXFxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcXFxuICAgIH0pO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiAn5ryr5ri4JyxcXFxcbiAgICAgICAgdXJsOiAkKFxcXFxcXFwi5ryr5ri4XFxcXFxcXCIpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcXFxcXCIsIGlucHV0KTtcXFxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcXFxcXCI7XFxcXG4gICAgICAgIH0sICksXFxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS84My5wbmcnLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMidcXFxcbiAgICB9KTtcXFxcblxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiAn55m75b2VJyxcXFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL25ld2xvZ2luJyxcXFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzIucG5nJyxcXFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxcXG4gICAgfSk7XFxcXG59XFxcXG5yZXMuZGF0YSA9IGQ7XFxcXG5zZXRSZXN1bHQocmVzKVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJwaWNfMV9jYXJkXFxcIixcXFwibmFtZVxcXCI6XFxcIuS7o+eggS3mjpLooYzmppxcXFwiLFxcXCJwYXRoXFxcIjpcXFwicGhiXFxcIixcXFwicnVsZVxcXCI6XFxcIi8v5YiG57G7XFxcXG5cXFxcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXFxcbnZhciBjMSA9ICdhbGwmYmFuZ3VtaSZndW9jaGFuJmRvdWdhJm11c2ljJmtub3dsZWRnZSZ0ZWNoJmNhciZsaWZlJmZvb2Qma2ljaGlrdSZmYXNoaW9uJmNpbmVwaGlsZSZvcmlnaW4mcm9va2llJmdhbWUmZW50JmRhbmNlJm1vdmllJnR2JmRvY3VtZW50YXJ5JmFuaW1hbCZndW9jaHVhbmcnO1xcXFxudmFyIHcxID0gJ+WFqOmDqCbnlarliacm5Zu95YibJuWKqOeUuybpn7PkuZAm55+l6K+GJuenkeaKgCbmsb3ovaYm55Sf5rS7Jue+jumjnybprLznlZwm5pe25bCaJuW9seinhibljp/liJsm5paw5Lq6Jua4uOaIjyblqLHkuZAm6Iie6LmIJueUteW9sSbnlLXop4bliacm57qq5b2V54mHJuWKqOeJqeWciCblm73liJvnm7jlhbMnO1xcXFxudmFyIHdvcmQxID0gdzEuc3BsaXQoJyYnKTtcXFxcbnZhciBjbGFzczEgPSBjMS5zcGxpdCgnJicpO1xcXFxudmFyIGxhYjEgPSBnZXRWYXIoJ2xhYjEnLCAn5YWo6YOoJyk7XFxcXG52YXIga2V5MSA9IGdldFZhcigna2V5MScsICdhbGwnKTtcXFxcblxcXFxuICAgIGZvciAodmFyIGkgaW4gd29yZDEpIHtcXFxcbiAgICAgICAgdmFyIGEgPSB3b3JkMVtpXTtcXFxcbiAgICAgICAgdmFyIGIgPSBjbGFzczFbaV07XFxcXG4gICAgICAgIHZhciBjID0gYSArICcmJyArIGI7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogIGEgPT0gbGFiMSA/IGdldEhlYWQoYSkgOiBhLFxcXFxuICAgICAgICAgICAgdXJsOiAkKFxcXFxcXFwiI25vTG9hZGluZyNcXFxcXFxcIikubGF6eVJ1bGUoKGMpID0+IHtcXFxcbiAgICAgICAgICAgICAgICBwdXRWYXIoXFxcXFxcXCJsYWIxXFxcXFxcXCIsIGMuc3BsaXQoJyYnKVswXSk7XFxcXG4gICAgICAgICAgICAgICAgcHV0VmFyKFxcXFxcXFwia2V5MVxcXFxcXFwiLCBjLnNwbGl0KCcmJylbMV0pO1xcXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCJcXFxcbiAgICAgICAgICAgIH0sIGMpLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG59XFxcXG4vL+WIhuexu1xcXFxuLy9sb2coTVlfUEFHRSlcXFxcblxcXFxudmFyIHVybCA9ICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vdi9wb3B1bGFyL3JhbmsvYWxsJztcXFxcblxcXFxuTVlfVVJMID0gdXJsLnJlcGxhY2UoJ2FsbCcsIGdldFZhcigna2V5MScpKTtcXFxcblxcXFxudmFyIHltID0gcmVxdWVzdChNWV9VUkwsIHt9KS5yZXBsYWNlKC9cXFxcXFxcXFxcXFxcXFxcdTAwMkYvZywgJy8nKTtcXFxcbmlmICh5bS5pbmNsdWRlcygncmFuay10aXBzJykpIHtcXFxcblxcXFxuICAgIC8q5o+Q56S65L+h5oGvXFxcXG4gICAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTon4oCc4oCcJytwYXJzZURvbUZvckh0bWwoeW0sJy5yYW5rLXRpcHMmJlRleHQnKSsn4oCd4oCdJyxcXFxcbiAgICAgICAgY29sX3R5cGU6J3RleHRfMSdcXFxcbiAgICAgIH0pO1xcXFxuICAgIOaPkOekuuS/oeaBryovXFxcXG5cXFxcbiAgICB2YXIgcGkgPSBKU09OLnBhcnNlKHltLnNwbGl0KCdcXFxcXFxcInJhbmtMaXN0XFxcXFxcXCI6JylbMV0uc3BsaXQoJyxcXFxcXFxcInJhbmtOb3RlXFxcXFxcXCInKVswXSk7XFxcXG4gICAgZm9yICh2YXIgaSA9IDA7IHBpICE9IG51bGwgJiYgaSA8IHBpLmxlbmd0aDsgaSsrKSB7XFxcXG4gICAgICAgIHZhciBudW0gPSBpICsgMTtcXFxcbiAgICAgICAgdmFyIHEgPSBKU09OLnN0cmluZ2lmeShwaVtpXSk7XFxcXG4gICAgICAgIGlmICghcGlbaV0udXJsKSB7XFxcXG4gICAgICAgICAgICB2YXIgcnVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIHBpW2ldLmJ2aWQ7XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICB2YXIgcnVybCA9IHBpW2ldLnVybDtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBwaVtpXS50aXRsZSxcXFxcbiAgICAgICAgICAgIHBpY191cmw6IHBpW2ldLnBpYyArIFJlZmVyZXIsXFxcXG4gICAgICAgICAgICBkZXNjOiAoIXEuaW5jbHVkZXMoJ25hbWUnKSA/IHBpW2ldLm5ld19lcC5pbmRleF9zaG93IDogKCd1cDogJyArIHBpW2ldLm93bmVyLm5hbWUpKSxcXFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyBydXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMV9jYXJkJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICAgICAgLypcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTonTm8uJytudW0rJ1xcXFxcXFxcblxcXFxcXFxcbuKAmOKAmDxzbWFsbD4nK3BpW2ldLnRpdGxlKydcXFxcXFxcXG4nKyghcS5pbmNsdWRlcygnbmFtZScpP3BpW2ldLm5ld19lcC5pbmRleF9zaG93OigndXA6ICcrcGlbaV0ub3duZXIubmFtZSkpKyc8L3NtYWxsPicsXFxcXG4gICAgICAgICAgICAgICAgcGljX3VybDpwaVtpXS5waWMrUmVmZXJlcixcXFxcbiAgICAgICAgICAgICAgICBkZXNjOicwJyxcXFxcbiAgICAgICAgICAgICAgICB1cmw6J2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScrcnVybCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6J3BpY18xX2NhcmQnXFxcXG4gICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAqL1xcXFxuICAgIH1cXFxcbn0gZWxzZSB7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6ICfigJzigJzoioLliLbkuIDngrnvvIzkvJHmga/llabvvIHigJ3igJ0nLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxcXG4gICAgfSk7XFxcXG59XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5Luj56CBLXVw8J+Qt1xcXCIsXFxcInBhdGhcXFwiOlxcXCJ1cFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJjb25zdCBoZWFkQ29sb3IgPSBcXFxcXFxcIiMzNThjY2RcXFxcXFxcIjtcXFxcblxcXFxuLy/ml7bpl7TmiLPovazmjaLmlrnms5VcXFxcbi8qXFxcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxcXG4gICAgIHZhciBzc3MgPSBuZXcgRGF0ZShwYXJzZUludChuUykpLnRvTG9jYWxlU3RyaW5nKCkuc3Vic3RyKDAsMTcpO1xcXFxuICAgICB2YXIgWU1EID0gc3NzLnNwbGl0KCfml6UnKVswXS5yZXBsYWNlKCflubQnLCctJykucmVwbGFjZSgn5pyIJywnLScpO1xcXFxuICAgICByZXR1cm4gKFlNRClcXFxcbn1cXFxcbiovXFxcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHtcXFxcbiAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKG5TKTtcXFxcbiAgICB2YXIgWVkgPSBkYXRlLmdldEZ1bGxZZWFyKCkgKyAnLSc7XFxcXG4gICAgdmFyIE1NID0gKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpICsgJy0nO1xcXFxuICAgIHZhciBERCA9IChkYXRlLmdldERhdGUoKSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0RGF0ZSgpKSA6IGRhdGUuZ2V0RGF0ZSgpKTtcXFxcbiAgICB2YXIgdGltZSA9IFlZICsgTU0gKyBERDtcXFxcbiAgICByZXR1cm4gdGltZVxcXFxufVxcXFxudmFyIHNyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHRcXFxcXFxcIixpbnB1dCk7cHV0VmFyKCd1cCcsJycpO3B1dFZhcignVVAnLCcnKTtwdXRWYXIoJ3NldCcsJycpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFxcXFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcXFxcXCJgO1xcXFxuLy/ml7bpl7TmiLPovazmjaJcXFxcblxcXFxudmFyIHVpZCA9IGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2NhY2hlLnR4dFxcXFxcXFwiLCB7fSk7XFxcXG52YXIgVVBfVVJMID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2g/bWlkPXVpZCZwcz0zMCZ0aWQ9MCZrZXl3b3JkPSZqc29ucD1qc29ucCZwbj0nICsgcGFnZW51bSArICcmb3JkZXI9cHViZGF0ZSc7XFxcXG52YXIgdXBfdXJsID0gVVBfVVJMLnJlcGxhY2UoXFxcXFxcXCJ1aWRcXFxcXFxcIiwgdWlkKTtcXFxcbnZhciB4eCA9IGdldFZhcignbGIyJykuc3BsaXQoJ1xcXFxcXFxcbicpO1xcXFxuLy/mm7TmlrDlpLTlg49cXFxcbmZvciAodmFyIGsgaW4geHgpIHtcXFxcbiAgICBpZiAoIXh4W2tdLnNwbGl0KCcjIycpWzFdKSB7XFxcXG4gICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScgKyB4eFtrXS5zcGxpdCgnJiYnKVsxXSArICcmanNvbnA9anNvbnAnLCB7fSkpLmRhdGEuZmFjZTtcXFxcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcXFxuICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScgKyB4eFtrXS5zcGxpdCgnJiYnKVsxXSArICcmbmVlZF90b3A9MScsIHt9KSkuZGF0YS5jYXJkc1swXS5kZXNjLnVzZXJfcHJvZmlsZS5pbmZvLmZhY2U7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgdmFyIGZhY2UgPSB4eFtrXSArICcjIycgKyBwaWM7XFxcXG4gICAgICAgIHZhciBmYWNlID0gZmV0Y2goXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXAudHh0XFxcXFxcXCIsIHt9KS5yZXBsYWNlKHh4W2tdLCBmYWNlKTtcXFxcbiAgICAgICAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwLnR4dFxcXFxcXFwiLCBmYWNlKTtcXFxcbiAgICB9XFxcXG59XFxcXG5cXFxcblxcXFxuXFxcXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxcXG4gICAgdmFyIHNfdGFiID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0Jywge30pO1xcXFxuICAgIGlmIChnZXRWYXIoXFxcXFxcXCJhY2Nlc3Nfa2V5XFxcXFxcXCIpICYmIGdldFZhcignc3RhcmlkJykpIHtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBzX3RhYiA9PSAn5o6o6I2QJyA/ICfwn5S0JyArIGdldEhlYWQoc190YWIpIDogJ+Kaqu+4j+aOqOiNkCcsXFxcXG4gICAgICAgICAgICB1cmw6ICfmjqjojZAnICsgc3IsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+aUtuiXjycgPyAn8J+UtCcgKyBnZXRIZWFkKHNfdGFiKSA6ICfimqrvuI/mlLbol48nLFxcXFxuICAgICAgICAgICAgdXJsOiAn5pS26JePJyArIHNyLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfov73nlaonID8gJ/CflLQnICsgZ2V0SGVhZChzX3RhYikgOiAn4pqq77iP6L+955WqJyxcXFxcbiAgICAgICAgICAgIHVybDogJ+i/veeVqicgKyBzcixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcXFxuICAgICAgICB9KTtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBzX3RhYiA9PSAn6L+95YmnJyA/ICfwn5S0JyArIGdldEhlYWQoc190YWIpIDogJ+Kaqu+4j+i/veWJpycsXFxcXG4gICAgICAgICAgICB1cmw6ICfov73liacnICsgc3IsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfVxcXFxuICAgIC8v6Ieq5bex55qE5YWz5rOoXFxcXG4gICAgdmFyIHN0YXJqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScgKyBnZXRWYXIoJ3N0YXJpZCcpICsgJyZqc29ucD1qc29ucCcsIHt9KSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IChnZXRWYXIoJ1VQJykgPT0gJ+WFs+azqCcgPyAn4pi677iPJyA6ICcnKSArIHN0YXJqc29uLmRhdGEubmFtZSxcXFxcbiAgICAgICAgcGljX3VybDogc3Rhcmpzb24uZGF0YS5mYWNlICsgUmVmZXJlcixcXFxcbiAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignVVAnLCBnZXRWYXIoJ1VQJyk9PSflhbPms6gnPyfmipjlj6AnOiflhbPms6gnKTtwdXRWYXIoJ3NldCcsJycpO2NsZWFyVmFyKCdodG0nKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0JywnJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovLycrZ2V0VmFyKCdVUCcsJ+S4k+azqCcpXFxcXFxcXCIsXFxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yX3JvdW5kJ1xcXFxuICAgIH0pO1xcXFxuICAgIC8v6Ieq5bex55qE5YWz5rOoXFxcXG5cXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJzxzdHJvbmc+JyArICfigJjigJhVUOKAmeKAmScgKyAnPC9zdHJvbmc+JyArIChnZXRWYXIoJ3VwJywgJ+aKmOWPoCcpID09ICflsZXlvIAnID8gJ/CfmYknIDogJ/CfmYgnKSxcXFxcbiAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcigndXAnLCBnZXRWYXIoJ3VwJyk9PSflsZXlvIAnPyfmipjlj6AnOiflsZXlvIAnKTtwdXRWYXIoJ3NldCcsJycpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCcnKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8v5beyJytnZXRWYXIoJ3VwJywn5bGV5byAJyk7XFxcXFxcXCIsXFxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcXFxuICAgIH0pO1xcXFxuXFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IGdldFZhcignc2V0JykgIT0gJycgPyAoZ2V0VmFyKCdzZXQnKSA9PSAn572u6aG2JyA/ICc8c3Ryb25nPicgKyAn4oCc4oCc572u6aG2JyArICc8L3N0cm9uZz4nIDogJzxzdHJvbmc+JyArICfigJzigJzlj5blhbPigJ3igJ0nICsgJzwvc3Ryb25nPicpIDogJ+iuvue9ricsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ3NldCcsIGdldFZhcignc2V0Jywn5bGV5byAJyk9PSflj5blhbMnPyfnva7pobYnOiflj5blhbMnKTtwdXRWYXIoJ3VwJywnJyk7cHV0VmFyKCdVUCcsJycpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCcnKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8vJytnZXRWYXIoJ3NldCcsJ+WxleW8gCcpKydpbmd+J1xcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXFxcbiAgICB9KTtcXFxcblxcXFxuICAgIGlmIChnZXRWYXIoJ1VQJykgPT0gJ+WFs+azqCcpIHtcXFxcbiAgICAgICAgaWYgKGdldFZhcignaHRtJykgPT0gJycgfHwgZ2V0VmFyKCd1cCcpID09ICflsZXlvIAnKSB7XFxcXG4gICAgICAgICAgICB2YXIgdXJscyA9IFtdO1xcXFxuICAgICAgICAgICAgdmFyIHN1cmwgPSAnaHR0cHM6Ly9zcGFjZS5iaWxpYmlsaS5jb20vaDUvZm9sbG93P3R5cGU9Zm9sbG93Jm1pZD0nICsgZ2V0VmFyKCdzdGFyaWQnKTtcXFxcbiAgICAgICAgICAgIHZhciBpZCA9IHN1cmwuc3BsaXQoJ21pZD0nKVsxXTtcXFxcbiAgICAgICAgICAgIHZhciBjb2RlID0gZmV0Y2goc3VybCwge30pO1xcXFxuICAgICAgICAgICAgdmFyIHN0YXJsaXN0ID0gSlNPTi5wYXJzZSgne1xcXFxcXFwibXknICsgY29kZS5zcGxpdCgne1xcXFxcXFwibXknKVsxXS5zcGxpdCgnfX07JylbMF0gKyAnfX0nKTtcXFxcblxcXFxuICAgICAgICAgICAgdmFyIHN0YXJscyA9IHN0YXJsaXN0WydsaXN0J11bJ2dldEZvbGxvd0xpc3QtcGFnZS1taWQtJyArIGlkXVsncmVzdWx0J107XFxcXG4gICAgICAgICAgICBmb3IgKHggaW4gc3RhcmxzKSB7XFxcXG4gICAgICAgICAgICAgICAgdmFyIHl1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYXJjL3NlYXJjaD9taWQ9JyArIHN0YXJsc1t4XS5taWQgKyAnJnBzPTMwJnRpZD0wJmtleXdvcmQ9Jmpzb25wPWpzb25wJnBuPWZ5cGFnZSZvcmRlcj1wdWJkYXRlJztcXFxcbiAgICAgICAgICAgICAgICB1cmxzLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHl1cmwucmVwbGFjZSgvZnlwYWdlL2csICcxJylcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcblxcXFxuICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ3VwJykgPT0gJ+WxleW8gCcpXFxcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogc3RhcmxzW3hdLnVuYW1lLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBzdGFybHNbeF0uZmFjZSArIFJlZmVyZXIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZ3oyP3VybD0nICsgeXVybCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbiAgICAvL+WFs+azqOWIl+ihqFxcXFxuXFxcXG4gICAgaWYgKGdldFZhcigndXAnKSA9PSAn5bGV5byAJyAmJiBnZXRWYXIoJ1VQJykgIT0gJ+WFs+azqCcpIHtcXFxcbiAgICAgICAgZm9yICh2YXIgayBpbiB4eCkge1xcXFxuICAgICAgICAgICAgdmFyIHN0ID0gdWlkID09IHh4W2tdLnNwbGl0KCcmJicpWzFdLnNwbGl0KCcjIycpWzBdID8gJ+KckycgOiAnJztcXFxcbiAgICAgICAgICAgIHZhciBwaWMgPSB4eFtrXS5zcGxpdCgnIyMnKVsxXTtcXFxcbiAgICAgICAgICAgIC8q5aS05YOP6I635Y+WXFxcXG4gICAgICAgICAgICAgICAgdHJ5e1xcXFxuICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7XFxcXG4gICAgICAgICAgICAgICAgfWNhdGNoKGUpe1xcXFxuICAgICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS52Yy5iaWxpYmlsaS5jb20vZHluYW1pY19zdnIvdjEvZHluYW1pY19zdnIvc3BhY2VfaGlzdG9yeT9ob3N0X3VpZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmbmVlZF90b3A9MScse30pKS5kYXRhLmNhcmRzWzBdLmRlc2MudXNlcl9wcm9maWxlLmluZm8uZmFjZTtcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAqL1xcXFxuICAgICAgICAgICAgaWYgKCFwaWMpIHtcXFxcbiAgICAgICAgICAgICAgICB2YXIgcGljID0gJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZic7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBzdCArIHh4W2tdLnNwbGl0KCcmJicpWzBdLFxcXFxuICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHkjJyArIHh4W2tdLnNwbGl0KCcmJicpWzFdICsgYEBsYXp5UnVsZT0uanM6aW5wdXQ9aW5wdXQuc3BsaXQoJyMnKVsxXTtwdXRWYXIyKCd1aWQnLGlucHV0KTt3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfY2FjaGUudHh0XFxcXFxcXCIsaW5wdXQpO3B1dFZhcigndXAnLCfmipjlj6AnKTtyZWZyZXNoUGFnZShmYWxzZSk7XFxcXFxcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXFxcXFwiO2AsXFxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogcGljICsgUmVmZXJlcixcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fcm91bmRfNCdcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxuXFxcXG4gICAgLy/lj5blhbPnm7jlhbNcXFxcblxcXFxuICAgIGlmIChnZXRWYXIoJ3NldCcpID09ICflj5blhbMnKSB7XFxcXG5cXFxcbiAgICAgICAgZm9yICh2YXIgayBpbiB4eCkge1xcXFxuICAgICAgICAgICAgdmFyIHN0ID0gdWlkID09IHh4W2tdLnNwbGl0KCcmJicpWzFdID8gJ+KckycgOiAnJztcXFxcbiAgICAgICAgICAgIHZhciBwaWMgPSB4eFtrXS5zcGxpdCgnIyMnKVsxXTtcXFxcbiAgICAgICAgICAgIC8q5aS05YOP6I635Y+WXFxcXG4gICAgICAgICAgICAgICAgdHJ5e1xcXFxuICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7XFxcXG4gICAgICAgICAgICAgICAgfWNhdGNoKGUpe1xcXFxuICAgICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS52Yy5iaWxpYmlsaS5jb20vZHluYW1pY19zdnIvdjEvZHluYW1pY19zdnIvc3BhY2VfaGlzdG9yeT9ob3N0X3VpZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmbmVlZF90b3A9MScse30pKS5kYXRhLmNhcmRzWzBdLmRlc2MudXNlcl9wcm9maWxlLmluZm8uZmFjZTtcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAqL1xcXFxuICAgICAgICAgICAgaWYgKCFwaWMpIHtcXFxcbiAgICAgICAgICAgICAgICB2YXIgcGljID0gJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZic7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn4p2MJyArIHN0ICsgeHhba10uc3BsaXQoJyYmJylbMF0sXFxcXG4gICAgICAgICAgICAgICAgdXJsOiB4eFtrXSArIGBAbGF6eVJ1bGU9LmpzOnZhciBzYz1pbnB1dCsnXFxcXFxcXFxcXFxcXFxcXG4nO3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXFxcXFxcXFxcbic7dmFyIHh6PXhyLnJlcGxhY2Uoc2MsJycpO3dyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFxcXFxcIix4eik7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+WPluWFs+aIkOWKn++8gemTgeWtkOWGjeingfCfpoYnYCxcXFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBwaWMgKyBSZWZlcmVyLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG5cXFxcbiAgICAvL+e9rumhtuebuOWFs1xcXFxuXFxcXG4gICAgaWYgKGdldFZhcignc2V0JykgPT0gJ+e9rumhticpIHtcXFxcblxcXFxuICAgICAgICBmb3IgKHZhciBrIGluIHh4KSB7XFxcXG4gICAgICAgICAgICB2YXIgc3QgPSB1aWQgPT0geHhba10uc3BsaXQoJyYmJylbMV0gPyAn4pyTJyA6ICcnO1xcXFxuICAgICAgICAgICAgdmFyIHBpYyA9IHh4W2tdLnNwbGl0KCcjIycpWzFdO1xcXFxuICAgICAgICAgICAgLyrlpLTlg4/ojrflj5ZcXFxcbiAgICAgICAgICAgICAgICB0cnl7XFxcXG4gICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtcXFxcbiAgICAgICAgICAgICAgICB9Y2F0Y2goZSl7XFxcXG4gICAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZuZWVkX3RvcD0xJyx7fSkpLmRhdGEuY2FyZHNbMF0uZGVzYy51c2VyX3Byb2ZpbGUuaW5mby5mYWNlO1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICovXFxcXG4gICAgICAgICAgICBpZiAoIXBpYykge1xcXFxuICAgICAgICAgICAgICAgIHZhciBwaWMgPSAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJztcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfwn5SdJyArIHN0ICsgeHhba10uc3BsaXQoJyYmJylbMF0sXFxcXG4gICAgICAgICAgICAgICAgdXJsOiB4eFtrXSArIGBAbGF6eVJ1bGU9LmpzOnZhciBzYz1pbnB1dCsnXFxcXFxcXFxcXFxcXFxcXG4nO3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXFxcXFxcXFxcbic7dmFyIHh6PXhyLnJlcGxhY2Uoc2MsJycpO3dyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFxcXFxcIixzYyt4eik7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+e9rumhtuaIkOWKn/CflJ0nYCxcXFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBwaWMgKyBSZWZlcmVyLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG5cXFxcblxcXFxufVxcXFxuLy9kLnB1c2goe3RpdGxlOnh4fSk7XFxcXG5pZiAoc190YWIgPT0gJ+aOqOiNkCcpIHtcXFxcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL3BhZ2UvZmVlZFxcXFxcXFwiKSkucnVsZSk7XFxcXG59IGVsc2UgaWYgKHNfdGFiID09ICfmlLbol48nKSB7XFxcXG4gICAgaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcXFxcXCIpKS5ydWxlKTtcXFxcbn0gZWxzZSBpZiAoc190YWIgPT0gJ+i/veWJpycpIHtcXFxcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL3BhZ2UvZHNqXFxcXFxcXCIpKS5ydWxlKVxcXFxufSBlbHNlIGlmIChzX3RhYiA9PSAn6L+955WqJykge1xcXFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vcGFnZS9mYW5qdVxcXFxcXFwiKSkucnVsZSlcXFxcbn0gZWxzZSBpZiAoZ2V0VmFyKCdVUCcpICE9ICflhbPms6gnICYmIGdldFZhcigndXAnKSAhPSAn5bGV5byAJyAmJiBnZXRWYXIoJ3NldCcpID09ICcnKSB7XFxcXG4gICAgdmFyIGpzb24gPSB7fTtcXFxcbiAgICBldmFsKCdqc29uPScgKyBmZXRjaCh1cF91cmwsIHt9KSk7XFxcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBqc29uLmRhdGEubGlzdC52bGlzdC5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICB2YXIgciA9IHt9O1xcXFxuICAgICAgICB2YXIgaiA9IGpzb24uZGF0YS5saXN0LnZsaXN0W2ldO1xcXFxuICAgICAgICB2YXIgdCA9IE51bWJlcihqLmNyZWF0ZWQpICogMTAwMDtcXFxcblxcXFxuXFxcXG4gICAgICAgIHZhciB0aW1lID0gZ2V0TG9jYWxUaW1lKHQpO1xcXFxuXFxcXG4gICAgICAgIGlmIChqLnBsYXkgPiAxMDAwMClcXFxcbiAgICAgICAgICAgIHZhciBwbGF5ID0gKGoucGxheSAvIDEwMDAwKS50b0ZpeGVkKDEpICsgJ+S4hyc7XFxcXG4gICAgICAgIGVsc2VcXFxcbiAgICAgICAgICAgIHZhciBwbGF5ID0gai5wbGF5O1xcXFxuXFxcXG4gICAgICAgIHZhciBwaWNzID0gKGoucGljLmluZGV4T2YoJzonKSAhPSAtMSkgPyBqLnBpYyA6ICdodHRwczonICsgai5waWM7XFxcXG5cXFxcbiAgICAgICAgci5waWNfdXJsID0gcGljcyArIFJlZmVyZXI7XFxcXG4gICAgICAgIHIudXJsID0gJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgai5idmlkICsgJyNpbW1lcnNpdmVUaGVtZSMnO1xcXFxuICAgICAgICByLnRpdGxlID0gai50aXRsZTtcXFxcbiAgICAgICAgci5jb2xfdHlwZSA9ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYyc7XFxcXG4gICAgICAgIHIuZGVzYyA9ICfml7bplb/vvJonICsgai5sZW5ndGggKyAnICDmkq3mlL7ph4/vvJonICsgcGxheSArICcgIOWPkeW4g+aXpeacn++8micgKyB0aW1lO1xcXFxuICAgICAgICBpZiAoai5sZW5ndGggIT0gXFxcXFxcXCIwMDowMFxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICBkLnB1c2gocilcXFxcbiAgICAgICAgfTtcXFxcbiAgICB9XFxcXG59IGVsc2UgaWYgKGdldFZhcignVVAnKSA9PSAn5YWz5rOoJyAmJiBnZXRWYXIoJ3VwJykgIT0gJ+WxleW8gCcpIHtcXFxcblxcXFxuICAgIGlmIChnZXRWYXIoJ2h0bScpID09ICcnKSB7XFxcXG4gICAgICAgIGh0bSA9IFtdO1xcXFxuICAgICAgICB2YXIgeW0gPSBiYXRjaEZldGNoKHVybHMpLm1hcChmdW5jdGlvbihhKSB7XFxcXG4gICAgICAgICAgICB2YXIgaCA9IEpTT04ucGFyc2UoYSkuZGF0YS5saXN0LnZsaXN0O1xcXFxuICAgICAgICAgICAgaHRtID0gaHRtLmNvbmNhdChoKTtcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGh0bSA9IGh0bS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcXFxcbiAgICAgICAgICAgIHJldHVybiBiLmNyZWF0ZWQgLSBhLmNyZWF0ZWQ7XFxcXG4gICAgICAgIH0pLm1hcChmdW5jdGlvbihhKSB7XFxcXG4gICAgICAgICAgICBhLmNyZWF0ZWQgPSBnZXRMb2NhbFRpbWUoTnVtYmVyKGEuY3JlYXRlZCkgKiAxMDAwKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBhXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICBwdXRWYXIoJ2h0bScsIEpTT04uc3RyaW5naWZ5KGh0bSkpO1xcXFxuICAgIH0gZWxzZSBodG0gPSBKU09OLnBhcnNlKGdldFZhcignaHRtJykpO1xcXFxuICAgIHZhciBpID0gMDtcXFxcbiAgICB2YXIgayA9IDA7XFxcXG4gICAgdmFyIHIgPSBuZXcgRGF0ZSgpO1xcXFxuICAgIHZhciBNID0gci5nZXRNb250aCgpICsgMTtcXFxcbiAgICB2YXIgdEQgPSByLmdldEZ1bGxZZWFyKCkgKyAnLScgKyAoTSA8IDEwID8gKCcwJyArIE0pIDogTSkgKyAnLScgKyAoci5nZXREYXRlKCkgPCAxMCA/ICgnMCcgKyByLmdldERhdGUoKSkgOiByLmdldERhdGUoKSk7XFxcXG5cXFxcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGh0bS5sZW5ndGg7IGorKykge1xcXFxuICAgICAgICB0cnkge1xcXFxuXFxcXG4gICAgICAgICAgICBpZiAoaiAhPSAwICYmIGh0bVtqIC0gMV0uY3JlYXRlZCAhPSBodG1bal0uY3JlYXRlZCkgaSsrO1xcXFxuXFxcXG4gICAgICAgICAgICBpZiAoaSArIDEgPT0gTVlfVVJMLnNwbGl0KCcjJylbMV0pIHtcXFxcbiAgICAgICAgICAgICAgICBpZiAoayA9PSAwKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBkYXRlID0gaHRtW2pdLmNyZWF0ZWQ7XFxcXG4gICAgICAgICAgICAgICAgICAgIGsrKztcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGUgPT0gdEQpIGRhdGUgPSAnPHN0cm9uZz7ku4rlpKk8L3N0cm9uZz4nO1xcXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ08Zm9udCBjb2xvcj1cXFxcXFxcIiMzNThjY2RcXFxcXFxcIj4nICsgZGF0ZSArICc8XFxcXFxcXFxmb250PicsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgLy91cmw6YEBsYXp5UnVsZT0uanM6Y2xlYXJWYXIoJ2h0bScpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly/liLfmlrDmiJDlip8nO2BcXFxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIGlmIChodG1bal0ucGxheSA+IDEwMDAwKVxcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgcGxheSA9IChodG1bal0ucGxheSAvIDEwMDAwKS50b0ZpeGVkKDEpICsgJ+S4hyc7XFxcXG4gICAgICAgICAgICAgICAgZWxzZVxcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgcGxheSA9IGh0bVtqXS5wbGF5O1xcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBodG1bal0udGl0bGUsXFxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogKChodG1bal0ucGljLmluZGV4T2YoJzonKSAhPSAtMSkgPyBodG1bal0ucGljIDogKCdodHRwczonICsgaHRtW2pdLnBpYykpICsgUmVmZXJlcixcXFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogJ1VQOicgKyBodG1bal0uYXV0aG9yICsgJyAg5pe26ZW/77yaJyArIGh0bVtqXS5sZW5ndGggKyAnXFxcXFxcXFxu5pKt5pS+6YeP77yaJyArIHBsYXkgKyAnICDlj5HluIPml6XmnJ/vvJonICsgaHRtW2pdLmNyZWF0ZWQsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgaHRtW2pdLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGkgKyAxID4gTVlfVVJMLnNwbGl0KCcjJylbMV0pIHtcXFxcbiAgICAgICAgICAgICAgICBicmVhaztcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSBjYXRjaCAoZSkge31cXFxcbiAgICB9XFxcXG5cXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLku6PnoIEt5pe25YWJ8J+QlFxcXCIsXFxcInBhdGhcXFwiOlxcXCJzZ2pcXFwiLFxcXCJydWxlXFxcIjpcXFwiLy/liIbnsbtcXFxcbnZhciBwYWdlbnVtID0gTVlfVVJMLnNwbGl0KCcjJylbMV07XFxcXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV09PScxJyl7XFxcXG52YXIgYzIgPSAnMjImMjEyJjcxJjE4MiYxMzgmMjgmMzMmMTg1JztcXFxcblxcXFxudmFyIHcyID0gJ+msvOeVnCbnvo7po58m57u86Im6JuW9seinhibnlJ/mtLsm6Z+z5LmQJueVquWJpybnlLXop4bliacnO1xcXFxuXFxcXG52YXIgd29yZDIgPSB3Mi5zcGxpdCgnJicpO1xcXFxudmFyIGNsYXNzMiA9IGMyLnNwbGl0KCcmJyk7XFxcXG52YXIgbGFiMiA9IGdldFZhcignbGFiMicsICfprLznlZwnKTtcXFxcbnZhciBrZXkyID0gZ2V0VmFyKCdrZXkyJywgJzIyJyk7XFxcXG5mb3IgKHZhciBpIGluIHdvcmQyKXtcXFxcbiAgICB2YXIgYSA9IHdvcmQyW2ldO1xcXFxuICAgIHZhciBiID0gY2xhc3MyW2ldO1xcXFxuICAgIHZhciBjID0gYSArICcmJyArIGI7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogYT09bGFiMj8gZ2V0SGVhZChhKTphLFxcXFxuICAgIHVybDogJChcXFxcXFxcIiNub0xvYWRpbmcjXFxcXFxcXCIpLmxhenlSdWxlKChjKT0+e1xcXFxuICAgICAgICBwdXRWYXIoXFxcXFxcXCJsYWIyXFxcXFxcXCIsYy5zcGxpdCgnJicpWzBdKTtcXFxcbiAgICAgICAgcHV0VmFyKFxcXFxcXFwia2V5MlxcXFxcXFwiLGMuc3BsaXQoJyYnKVsxXSk7XFxcXG4gICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcbiAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG4gICAgfSwgYyksXFxcXG4gICAgY29sX3R5cGU6J3Njcm9sbF9idXR0b24nXFxcXG4gICAgfSk7XFxcXG59XFxcXG59XFxcXG4vL+WIhuexu1xcXFxuXFxcXG52YXIgbSA9IE51bWJlcihmZXRjaChcXFxcXFxcImhpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0XFxcXFxcXCIse30pKTtcXFxcbnZhciB0ID0gbTwwPzA6bTtcXFxcbnZhciBudW0xID0gTnVtYmVyKHQpLTEyO1xcXFxudmFyIG51bTIgPSBOdW1iZXIodCkrMTI7XFxcXG52YXIgbnVtMyA9IE51bWJlcih0KS0xO1xcXFxudmFyIG51bTQgPSBOdW1iZXIodCkrMTtcXFxcbi8vdmFyIHRpbWVzdGFtcCA9IERhdGUucGFyc2UobmV3IERhdGUoKSk7XFxcXG52YXIgdGltZXN0YW1wID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxcXG52YXIgc3RhbXAxID0gdGltZXN0YW1wIC0gdCozMCoyNCo2MCo2MCoxMDAwO1xcXFxudmFyIHN0YW1wMiA9IHRpbWVzdGFtcCAtICh0KzEpKjMwKjI0KjYwKjYwKjEwMDA7XFxcXG4vKlxcXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcXFxuICAgICB2YXIgc3NzID0gbmV3IERhdGUocGFyc2VJbnQoblMpKS50b0xvY2FsZVN0cmluZygpLnN1YnN0cigwLDE3KTtcXFxcbiAgICAgdmFyIG1tID0gc3NzLnNwbGl0KCflubQnKVsxXS5zcGxpdCgn5pyIJylbMF07XFxcXG4gICAgIHZhciBkZCA9IHNzcy5zcGxpdCgn5pyIJylbMV0uc3BsaXQoJ+aXpScpWzBdO1xcXFxuICAgICB2YXIgWVkgPSBzc3Muc3BsaXQoJ+W5tCcpWzBdO1xcXFxuICAgICB2YXIgTU0gPSAobW08IDEwID8gJzAnICsgbW06bW0pO1xcXFxuICAgICB2YXIgREQgPSAoZGQ8IDEwID8gJzAnICsgZGQ6ZGQpO1xcXFxuICAgICByZXR1cm4gKFlZK01NK0REKVxcXFxufVxcXFxuKi9cXFxcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykgeyBcXFxcbnZhciBkYXRlID0gbmV3IERhdGUoblMpO1xcXFxudmFyIFlZID0gU3RyaW5nKGRhdGUuZ2V0RnVsbFllYXIoKSk7IFxcXFxudmFyIE1NID0gU3RyaW5nKChkYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgOiBkYXRlLmdldE1vbnRoKCkgKyAxKSk7IFxcXFxudmFyIEREID0gU3RyaW5nKChkYXRlLmdldERhdGUoKSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0RGF0ZSgpKSA6IGRhdGUuZ2V0RGF0ZSgpKSk7IFxcXFxudmFyIHRpbWUgPSBZWSArIE1NICsgREQ7XFxcXG5yZXR1cm4gdGltZVxcXFxufVxcXFxuLy/ml7bpl7TmiLPovazmjaJcXFxcbnZhciB0aW1lMSA9IGdldExvY2FsVGltZShzdGFtcDEpO1xcXFxudmFyIHRpbWUyID0gZ2V0TG9jYWxUaW1lKHN0YW1wMik7XFxcXG52YXIgU0dKX1VSTCA9ICdodHRwczovL3Muc2VhcmNoLmJpbGliaWxpLmNvbS9jYXRlL3NlYXJjaD9tYWluX3Zlcj12MyZzZWFyY2hfdHlwZT12aWRlbyZ2aWV3X3R5cGU9aG90X3Jhbmsmb3JkZXI9Y2xpY2smY29weV9yaWdodD0tMSZjYXRlX2lkPTIyJnBhZ2U9JytwYWdlbnVtKycmcGFnZXNpemU9MTAmdGltZV9mcm9tPXRpbWUyJnRpbWVfdG89dGltZTEnO1xcXFxudmFyIFVSTCA9IFNHSl9VUkwucmVwbGFjZSgndGltZTEnLHRpbWUxKS5yZXBsYWNlKCd0aW1lMicsdGltZTIpLnJlcGxhY2UoJzIyJyxnZXRWYXIoJ2tleTInKSE9Jyc/Z2V0VmFyKCdrZXkyJyk6JzIyJyk7XFxcXG52YXIganNvbiA9IEpTT04ucGFyc2UocmVxdWVzdChVUkwse30pKTtcXFxcblxcXFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpe1xcXFxuZC5wdXNoKHtcXFxcbiAgICAgICAgICB0aXRsZTonKzHlubQnLFxcXFxuICAgICAgICAgIHVybDpcXFxcbm51bTErYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfICdgLFxcXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0XzQnXFxcXG4gICAgICAgfSk7XFxcXG5kLnB1c2goe1xcXFxuICAgICAgICAgIHRpdGxlOictMeW5tCcsXFxcXG4gICAgICAgICAgdXJsOlxcXFxubnVtMitgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8gJ2AsXFxcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfNCdcXFxcbiAgICAgICB9KTtcXFxcbmQucHVzaCh7XFxcXG4gICAgICAgICAgdGl0bGU6Jysx5pyIJyxcXFxcbiAgICAgICAgICB1cmw6XFxcXG5udW0zK2BAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL21vdXRocy50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnyAnYCxcXFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF80J1xcXFxuICAgICAgIH0pO1xcXFxuZC5wdXNoKHtcXFxcbiAgICAgICAgICB0aXRsZTonLTHmnIgnLFxcXFxuICAgICAgICAgIHVybDpcXFxcbm51bTQrYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfICdgLFxcXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0XzQnXFxcXG4gICAgICAgfSk7XFxcXG5kLnB1c2goe1xcXFxuICAgICAgICAgIHRpdGxlOmdldEhlYWQoKCflvZPliY3ml7bpl7Tnur86ICcrdGltZTIrJ34nK3RpbWUxKSksXFxcXG4gICAgICAgICAgXFxcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfY2VudGVyXzEnXFxcXG4gICAgICAgfSk7XFxcXG4vKlxcXFxuZC5wdXNoKHtcXFxcbiAgICAgICAgICB0aXRsZTogZ2V0TG9jYWxUaW1lKHRpbWVzdGFtcCkuIHNwbGl0KCfml6UnKVswXSxcXFxcbiAgICAgICAgICBcXFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF9jZW50ZXJfMSdcXFxcbiAgICAgICB9KTtcXFxcbiovXFxcXG59XFxcXG4vKlxcXFxuZC5wdXNoKHtcXFxcbiAgICAgICAgICB0aXRsZTogZ2V0TG9jYWxUaW1lKHNzcyksXFxcXG4gICAgICAgICAgXFxcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfY2VudGVyXzEnXFxcXG4gICAgICAgfSk7XFxcXG4qL1xcXFxuZm9yICh2YXIgaSBpbiBqc29uLnJlc3VsdClcXFxcbntcXFxcbiB2YXIgciA9IHt9O1xcXFxuIHZhciBqID0ganNvbi5yZXN1bHRbaV07XFxcXG4gaWYgKGoucGxheT4xMDAwMClcXFxcbiAgICB2YXIgcGxheSA9IChqLnBsYXkvMTAwMDApLnRvRml4ZWQoMSkrJ+S4hyc7XFxcXG4gZWxzZVxcXFxuICAgIHZhciBwbGF5ID0gai5wbGF5O1xcXFxuIGQucHVzaCh7XFxcXG4gICAgICAgICAgdGl0bGU6ai50aXRsZSxcXFxcbiAgICAgICAgICBpbWc6J2h0dHBzOicrai5waWMrUmVmZXJlcixcXFxcbiAgICAgICAgICBkZXNjOid1cPCfkLc6JytqLmF1dGhvcisnXFxcXFxcXFxu5pKt5pS+6YePOiAnK3BsYXkrJyAgICAgICAg5Y+R5biD5pel5pyfOiAnK2oucHViZGF0ZS8qKydcXFxcXFxcXG7mj4/ov7A6JytqLmRlc2NyaXB0aW9uKi8sXFxcXG4gICAgICAgICAgdXJsOlxcXFxuJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgai5idmlkKycjaW1tZXJzaXZlVGhlbWUjJyxcXFxcbiAgICAgICAgICBjb2xfdHlwZTonbW92aWVfMidcXFxcbiAgICAgICB9KTtcXFxcbn1cXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIumhtemdoi3kuoznuqdcXFwiLFxcXCJwYXRoXFxcIjpcXFwiZGV0YWlsXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudmFyIHJlcyA9IHt9O1xcXFxudmFyIGQgPSBbXTtcXFxcbi8vbG9nKE1ZX1JVTEUudGl0bGUpXFxcXG52YXIgUmVmZXJlciA9ICdAUmVmZXJlcj1odHRwOi8vd3d3LmJpbGliaWxpLmNvbSc7XFxcXG4vL+minOiJslxcXFxudmFyIENvbG9ycyA9IFtcXFxcXFxcIjRcXFxcXFxcIiwgXFxcXFxcXCI1XFxcXFxcXCIsIFxcXFxcXFwiMFxcXFxcXFwiLCBcXFxcXFxcIjFcXFxcXFxcIiwgXFxcXFxcXCJBXFxcXFxcXCIsIFxcXFxcXFwiM1xcXFxcXFwiLCBcXFxcXFxcIjhcXFxcXFxcIiwgXFxcXFxcXCI5XFxcXFxcXCIsIFxcXFxcXFwiQlxcXFxcXFwiLCBcXFxcXFxcIkNcXFxcXFxcIiwgXFxcXFxcXCJEXFxcXFxcXCIsIFxcXFxcXFwiRVxcXFxcXFwiLCBcXFxcXFxcIjZcXFxcXFxcIiwgXFxcXFxcXCI3XFxcXFxcXCIsIFxcXFxcXFwiRlxcXFxcXFwiXTtcXFxcbnZhciBDb2xvciA9ICcjJztcXFxcbmlmIChnZXRWYXIoJ1lTJykgPT0gJ+maj+acuicpIHtcXFxcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykge1xcXFxuICAgICAgICB2YXIgbnVtID0gTWF0aC5jZWlsKChNYXRoLnJhbmRvbSgpICogMTUpKSAtIDE7XFxcXG4gICAgICAgIHZhciBDb2xvciA9IENvbG9yICsgQ29sb3JzW251bV07XFxcXG4gICAgfVxcXFxufSBlbHNlIHtcXFxcbiAgICB2YXIgQ29sb3IgPSBcXFxcXFxcIiNGQTcyOThcXFxcXFxcIjtcXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gZ2V0SGVhZCh0aXRsZSkge1xcXFxuICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFxcXFxcIicgKyBDb2xvciArICdcXFxcXFxcIj4nICsgdGl0bGUgKyAnPC9mcm9udD48L3N0cm9uZz4nO1xcXFxufVxcXFxuXFxcXG5kLnB1c2goe1xcXFxuICAgIGRlc2M6ICcyNTgmJmZsb2F0JyxcXFxcbiAgICBjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJ1xcXFxufSk7XFxcXG52YXIgYmFuZ3VtaSA9IGdldFJlc0NvZGUoKTtcXFxcbmlmIChNWV9VUkwuaW5kZXhPZignYXBpLmJpbGknKSA9PSAtMSkge1xcXFxuICAgIHRyeSB7XFxcXG4gICAgICAgIHZhciBhID0gZmV0Y2goTVlfVVJMLCB7fSk7XFxcXG4gICAgICAgIHZhciBiID0gSlNPTi5wYXJzZShhLnNwbGl0KCdcXFxcXFxcImVwTGlzdFxcXFxcXFwiOicpWzFdLnNwbGl0KCd9XScpWzBdICsgJ31dJyk7XFxcXG4gICAgICAgIC8vbG9nKGIpXFxcXG4gICAgICAgIHZhciBydXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWw/YWlkPSZidmlkPScgKyBiWzBdLmJ2aWQ7XFxcXG4gICAgfSBjYXRjaCAoZSkge1xcXFxuICAgICAgICB2YXIgYSA9IGZldGNoKE1ZX1VSTCwge1xcXFxuICAgICAgICAgICAgcmVkaXJlY3Q6IGZhbHNlXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICB2YXIgYiA9IGEuc3BsaXQoJ3ZpZGVvLycpWzFdLnNwbGl0KCdcXFxcXFxcIicpWzBdLnNwbGl0KFxcXFxcXFwiP1xcXFxcXFwiKVswXTtcXFxcbiAgICAgICAgdmFyIHJ1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbD9haWQ9JmJ2aWQ9JyArIGI7XFxcXG4gICAgfVxcXFxuICAgIHZhciBiYW5ndW1pID0gZmV0Y2gocnVybCwge30pO1xcXFxufVxcXFxudmFyIGpzb24gPSBKU09OLnBhcnNlKGJhbmd1bWkpO1xcXFxudmFyIHYgPSBqc29uLmRhdGEuVmlldztcXFxcbnZhciBwID0gdi5wYWdlcztcXFxcbnZhciBjYXJkID0ganNvbi5kYXRhLkNhcmQuY2FyZDtcXFxcbnZhciByZWxhdGVkID0ganNvbi5kYXRhLlJlbGF0ZWQ7XFxcXG52YXIgdGFncyA9IGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9iaWxpYmlsaTIudHh0XFxcXFxcXCIsIHt9KTtcXFxcbnZhciBzZXR0aW5nMSA9IGBAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9jYWNoZS9iaWxpYmlsaTIudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/mraPluLjpobXpnaLliIfmjaLmiJDlip/wn5GM5Y+v6IO95bm25rKh5pyJ5LuA5LmI5Y+Y5YyWJ2A7XFxcXG52YXIgc2V0dGluZzIgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvYmlsaWJpbGkyLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v6ZqQ6JeP6aG16Z2i5YiH5o2i5oiQ5Yqf8J+RjOWPr+iDveW5tuayoeacieS7gOS5iOWPmOWMlidgO1xcXFxudmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxcXG52YXIgbGlrZV91cmwgPSAnaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvdjIvdmlldy9saWtlJztcXFxcbnZhciBjb2luX3VybCA9ICdodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi92aWV3L2NvaW4vYWRkJztcXFxcbnZhciBhZGRfdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2MvYXBwL2ZvbGxvdy9hZGQnO1xcXFxudmFyIGRlbF91cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9hcHAvZm9sbG93L2RlbCc7XFxcXG52YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxcXG52YXIgY19ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZhdnR5cGU9MSZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmZyb209NyZmcm9tX3NwbWlkPXRtLnJlY29tbWVuZC4wLjAmbW9iaV9hcHA9YW5kcm9pZCZtdWx0aXBseT0xJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2VsZWN0X2xpa2U9MSZzcG1pZD1tYWluLnVnYy12aWRlby1kZXRhaWwuMC4wJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnVwaWQ9MCZzaWduPThhYmJkZGQ4N2E2YmQ4MmUxZTQyY2IzY2ZmZDMyYmI5JztcXFxcbnZhciBsX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbGlrZT0wJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZzaWduPTRhMDg2NDVjMjk5NGViNjkyYWMwY2ZiMGJkNzU2OWM2JztcXFxcbnZhciB4bHh6ID0gXFxcXFxcXCJoaWtlcjovL2VtcHR5I25vUmVjb3JkSGlzdG9yeSNAcnVsZT1qczp0aGlzLmQ9W107cmVxdWlyZSgnaHR0cHM6Ly9naXRlYS5jb20vQUk5NTcvSGlrZXIvcmF3L20vdi9Sb3V0ZS5qcycpO1JvdXRlLnNldFBhcnNlKCk7c2V0UmVzdWx0KGQpO1xcXFxcXFwiO1xcXFxudmFyIGp4Z2wgPSBcXFxcXFxcImhpa2VyOi8vZW1wdHkjbm9SZWNvcmRIaXN0b3J5I0BydWxlPWpzOnRoaXMuZD1bXTtyZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L2p4SXRlbS5qcycpO2p4SXRlbS5qeExpc3QoKTtzZXRSZXN1bHQoZClcXFxcXFxcIjtcXFxcbmlmICh2WydyZWRpcmVjdF91cmwnXSkge1xcXFxuICAgIHZhciByZWRpcmVjdCA9IHZbJ3JlZGlyZWN0X3VybCddO1xcXFxuICAgIHZhciB5bSA9IGZldGNoKHJlZGlyZWN0LCB7fSk7XFxcXG5cXFxcbn1cXFxcblxcXFxuZXZhbFByaXZhdGVKUyhcXFxcXFxcIlhVaUZUMXZYWVdyVXcrVmhwbnFsZzBOMHZBV2dwZ2xoOE1oWis5dlBEOTlOSjVWZ2VGZEhtd2FLYXdJeTZDMGg2RkZRaEVRNVJoSm1WMEVRSG5MOXh5YlBIQWNoQUw3aFpFWmQraGJHSFY1amVHK25LNVEzaWU3OHB1R0RiMVRKNGZBSTdnNmV6TElqUU1CeE4vMlhNOTJZTk5QS0RIZGhMSU1RR1Y2OU1xOGNUT1dqS3BaUXAwL3ZnTnV4YVBRS0V6U2RIUUp1ZTd0VHhkU0V2RHQzcy90eGRFaC9vR3pGQ0NOV2VaQ1VVNTN6aEVoQzA2cTZaRmpaQ00rZDhGc1o1Y1hsTkplbXRlZ01nSlVMZFRxYVZkUndWaFZYKzF1QlE5TnkwRHBzTkd4Mkx3SGdPamxzOWh3MTRMaEVxdGhFZTczeVBCR3ZTZ0tFQmRTWWdHN2NLN2hZVlRFTmVHVGlSQXpLUFE3akdFcUVKOGFhZEhPSEFlU2EyNWFCYnpjODFoaHhnWHRpYWxYOFVxZXBuN2s0ZzJHa3Nxb0czSlZJK3FUZldaeFBXcU5NLzBqVVhiclVUQ1JabnJ6R1ZvdzZOd1BRWEtxM0NES2w5aSthWnZlV3o1SWY1RU5FWkdpV2xXNXo0YUpTRWNleENEc2labG8xL1FKSWoycldvbkUwdTU0YWgyL1paLy9aR29NQkorZDE5R21lcGtMQkQzbjJxb2dLbmpaajJyaldxZ1BhZEVlZTFaSWhaM1NHYm1UbEpmMUE0QllJdXVQd3Y0ZEdaZFJvRFc2NEJoQzVqdUNuNndEbTdZbXk3QlhmMXNRYUZpbUVuclNJaUhHaE0rV0tnM0l5V2VjdWgvR2srK01tTjZBeHhjdk5BeXA4YkM0aHpCTXZaSi9sNXRSeWFwb21kQ1Y1QnBpWGZqa1dSbmJvcElqSStXS0IzZkNhWXlSZGVOTEVSS25FbHNjRGl6N1VlbkxwcmhZYy9hNExzR2VNTUZWWjhZbzgvd0dZSDM4SlxcXFxcXFwiKVxcXFxuXFxcXG52YXIgcHVybCA9ICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vdmlkZW8vJyArIHYuYnZpZDtcXFxcbnZhciBtb2RlID0gZmV0Y2goXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL2JpbGliaWxpLnR4dFxcXFxcXFwiLCB7fSk7XFxcXG52YXIgbW9kZV91cmwgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvYmlsaWJpbGkudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8sIOeCueS4quinhumikeivleivleWQpyheX14pICdgO1xcXFxudmFyIHpsID0gXFxcXFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ3BhZ2UnLCBnZXRWYXIoJ3BhZ2UnKT09J+ebtOmTvic/J+WFs+mXrSc6J+ebtOmTvicpO3JlZnJlc2hQYWdlKCk7aWYoZ2V0VmFyKCdwYWdlJyk9PSfnm7Tpk74nKXsndG9hc3Q6Ly/ngrnlh7vkuIvmlrnliIfmjaLmuIXmmbDluqbwn6SfJ31lbHNleyd0b2FzdDovL+W3suWFs+mXrSd9XFxcXFxcXCI7XFxcXG5pZiAobW9kZSA9PSAneWhjJykge1xcXFxuICAgIHZhciBsYXp5ID0geWhjXFxcXG59XFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiB2LnRpdGxlLFxcXFxuICAgIGRlc2M6ICfmj4/ov7A6ICcgKyB2LmRlc2MgKyAn44CA57G75Z6LOiAnICsgdi50bmFtZSxcXFxcbiAgICB1cmw6IHRhZ3MgPT0gJ3VwJyA/ICdmYW4nICsgc2V0dGluZzIgOiAndXAnICsgc2V0dGluZzEsXFxcXG4gICAgaW1nOiB2LnBpYyArIFJlZmVyZXIsXFxcXG4gICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJ1xcXFxufSk7XFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiAnICAnICsgY2FyZC5uYW1lLFxcXFxuICAgIHBpY191cmw6IGNhcmQuZmFjZSArIFJlZmVyZXIsXFxcXG4gICAgLy91cmw6ICdoaWtlcjovL3BhZ2UvZ3oxP3VybD1odHRwczovL3NwYWNlLmJpbGliaWxpLmNvbS9oNS9mb2xsb3fvvJ/vvJ90eXBlPWZvbGxvd++8hu+8hm1pZD0nICsgY2FyZC5taWQsXFxcXG4gICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3NzP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNo77yf77yfbWlkPScgKyBjYXJkLm1pZCArICfvvIbvvIZwcz0zMO+8hu+8hnRpZD0w77yG77yGa2V5d29yZD3vvIbvvIZqc29ucD1qc29ucO+8hu+8hnBuPWZ5cGFnZe+8hu+8hm9yZGVyPXB1YmRhdGUnLFxcXFxuICAgIGNvbF90eXBlOiAnaWNvbl8yX3JvdW5kJ1xcXFxufSk7XFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiAn4oCc4oCc4q2Q77iPU3RhcuKAneKAnScsXFxcXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eSMnICsgY2FyZC5uYW1lICsgJyYmJyArIGNhcmQubWlkICsgYEBsYXp5UnVsZT0uanM6aW5wdXQ9aW5wdXQuc3BsaXQoJyMnKVsxXTt2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScraW5wdXQuc3BsaXQoXFxcXFxcXCImJlxcXFxcXFwiKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtpZighZ2V0VmFyKCdsYjInKS5pbmNsdWRlcyhpbnB1dC5zcGxpdCgnJiYnKVsxXS5zcGxpdCgnIyMnKVswXSkpe3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXFxcXFxcXFxcbicraW5wdXQrJyMjJytwaWM7d3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXFxcXFwiLHhyKTsndG9hc3Q6Ly/lhbPms6jmiJDlip8nfWVsc2V7J3RvYXN0Oi8v5bm06L275Lq677yM6ICX5a2Q5bC+5rGBJ31gLFxcXFxuICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcXFxufSk7XFxcXG5cXFxcbmZ1bmN0aW9uIHJlcXVlc3RfYmlsaV9hcGkoYmFzZVVybCwgU2VjcmV0SWQsIFNlY3JldEtleSkge1xcXFxuICAgIGlmICghU2VjcmV0SWQgfHwgIVNlY3JldEtleSkgcmV0dXJuIHJlcXVlc3QoYmFzZVVybClcXFxcbiAgICBldmFsKGdldENyeXB0b0pTKCkpXFxcXG4gICAgbGV0IG5vd0RhdGUgPSBuZXcgRGF0ZSgpO1xcXFxuICAgIGxldCBkYXRlVGltZSA9IG5vd0RhdGUudG9VVENTdHJpbmcoKTtcXFxcbiAgICBsZXQgc291cmNlID0gJ2JpbGktYXBpJztcXFxcbiAgICBsZXQgYXV0aCA9IFxcXFxcXFwiaG1hYyBpZD1cXFxcXFxcXFxcXFxcXFwiXFxcXFxcXCIgKyBTZWNyZXRJZCArIFxcXFxcXFwiXFxcXFxcXFxcXFxcXFxcIiwgYWxnb3JpdGhtPVxcXFxcXFxcXFxcXFxcXCJobWFjLXNoYTFcXFxcXFxcXFxcXFxcXFwiLCBoZWFkZXJzPVxcXFxcXFxcXFxcXFxcXCJ4LWRhdGUgc291cmNlXFxcXFxcXFxcXFxcXFxcIiwgc2lnbmF0dXJlPVxcXFxcXFxcXFxcXFxcXCJcXFxcXFxcIjtcXFxcbiAgICBsZXQgc2lnblN0ciA9IFxcXFxcXFwieC1kYXRlOiBcXFxcXFxcIiArIGRhdGVUaW1lICsgXFxcXFxcXCJcXFxcXFxcXG5cXFxcXFxcIiArIFxcXFxcXFwic291cmNlOiBcXFxcXFxcIiArIHNvdXJjZTtcXFxcbiAgICBsZXQgc2lnbiA9IENyeXB0b0pTLkhtYWNTSEExKHNpZ25TdHIsIFNlY3JldEtleSlcXFxcbiAgICBzaWduID0gQ3J5cHRvSlMuZW5jLkJhc2U2NC5zdHJpbmdpZnkoc2lnbilcXFxcbiAgICBzaWduID0gYXV0aCArIHNpZ24gKyBcXFxcXFxcIlxcXFxcXFxcXFxcXFxcXCJcXFxcXFxcIlxcXFxuICAgIHJldHVybiByZXF1ZXN0KGJhc2VVcmwsIHtcXFxcbiAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgXFxcXFxcXCJTb3VyY2VcXFxcXFxcIjogc291cmNlLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJYLURhdGVcXFxcXFxcIjogZGF0ZVRpbWUsXFxcXG4gICAgICAgICAgICBcXFxcXFxcIkF1dGhvcml6YXRpb25cXFxcXFxcIjogc2lnblxcXFxuICAgICAgICB9XFxcXG4gICAgfSlcXFxcbn1cXFxcblxcXFxuZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXFxcXFwiKSkucnVsZSlcXFxcblxcXFxuLy/oh6rlrprkuYlhcGnpoblcXFxcbnZhciBtQXBpID0ge1xcXFxuICAgIGF1dGhvcjogJycsXFxcXG4gICAgdHlwZTogJycsXFxcXG4gICAgaWQ6ICcnLFxcXFxuICAgIGJhc2VVcmw6ICcnLFxcXFxuICAgIHNlY3JldElkOiAnJyxcXFxcbiAgICBzZWNyZXRLZXk6ICcnXFxcXG59XFxcXG5pZiAobUFwaS5iYXNlVXJsICYmIG1BcGkuc2VjcmV0SWQgJiYgbUFwaS5zZWNyZXRLZXkpIHtcXFxcbiAgICBwdXRWYXIoJ2FwaScsIEpTT04uc3RyaW5naWZ5KG1BcGkpKVxcXFxufVxcXFxuXFxcXG52YXIgYXBpSW5kZXhTdHIgPSBnZXRWYXIoJ2FwaUluZGV4JywgJycpXFxcXG52YXIgYXBpSW5kZXggPSBwYXJzZUludChhcGlJbmRleFN0cilcXFxcblxcXFxuXFxcXG50cnkge1xcXFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcC5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICB2YXIgcGFydCA9IHYudmlkZW9zICE9IDEgPyBwW2ldLnBhcnQgOiAn5b2T5YmN6KeG6aKR5peg6YCJ6ZuG77yM54K55Ye75q2k5aSE5pKt5pS+JztcXFxcbiAgICAgICAgcHV0VmFyKCdVQScsICc7e1VzZXItQWdlbnRATW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMFxcXFxcXFxcXFxcXFxcXFzvvJtcXFxcXFxcXFxcXFxcXFxc77ybIFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzbvvIbvvIbvvIbvvIZSZWZlcmVyQGh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS92aWRlb30nKTtcXFxcbiAgICAgICAgZXZhbFByaXZhdGVKUyhcXFxcXFxcImlmbnpxYU5xTlJrTjZOcUcwZlp4NU1leTQ3N09zTUpPVGJUZDlTYWpNa2Y1UjVPMzk2SjIyRnhrYlFia1hYQ3BnZ2Z1YWQ1byszcDk3TEhXYklwdG93NG8rTVJRdGFQMC84d2l5SkNyWkNhWllXNjR3VTFCNjB4UkJRdGJkSkNFZ1J1SGhvWnNiR0FaQkE0My9UWHhHd0lrQ2NrYlY2bnpIaG05M0RrNURpQzVJNUhuK0NmaUJNRTR5UW8zOU9VSnkzcEdBV2xqRDFzbnB6R2hCajFiM0hyVHZ5a2pGYVNQZ25TL01VZEpNZjBRWklTTkdVOHo1b3ZhblBzSCtGNVdzUWdIZ0lxeFc5ZXZWMyt0Z3lmTFVkRlIwTjREbHRMWXJ3N3ZDUGd6UFFYL3Z3Qk1QeTZZY1Z0U1ZLamI2UXpGYXVUTitKMklSWXJwYXkxNWFrQWtvZmErWXgvZk5UZWY0KzZaYVZ6bVhlWmFFYWowYlEvSFBaaWJ4VHozUytEbVVWZGdZdTBIWE15MENGQ1hTdDMrZU9VTjljK0VtVkFMck5OOE9xV3JQZWtydkYxcU4xVUt2NmtCY0JFUC9Td2t1ZnMzdk0wN2ZXdi9STkpZQjdoRWhzb0l4eXZIUU9pUFlDVEQrZVVzK2ZoK1U5YlJSQVV6UlNsWEN6aFdYakRmQ0pqWS85QjJsNFJwaC9ud29wRU1xaWk1cEpDSlVQVGMvSDRVZnc5Rk9MWm14TUhiRWlXZmZwMHJnYnBIb0tuUm56d1lmZy9SSzduOXpMQWRHQUsvOHVHYTBzbFo1SVQxWFVlcXJQc0NxdDNNSDVHMm15eEJEbHFEMFlRVWI2TldoSTdwampwaW42YlcydGh3ekg0TlQvVHA0Q1dwSGxWeWNCVldzU2doR3lTQkVRUnBCUUtMT1R2MUV2T3hnRnhoOUdZY3U5VDZXUHVmYkVuRGcvTEs5cmdyMnB3b0kzWUlqMHAyQmJCbVg3dk1oUHhLS0xweFppNDNKd1ZmOUh4bjMxTmFZUWkvMFMxelRDZzlTMjZ0VWdBcTQ4cmkrRWkzTUhVa0k2V3NNYkE3M0xuZmdCajc3REFsUWw1UU9rVXYvcEhoeVlsaWlRMlhZYVl4U0graEc0K3RBK0s2dVAwaERLZVFMay9mOXQ3aSs2WU8wVSs4R2kvWHdIQXN0NkNMN0kvS2lCZkZQbk5ZTHhaQng5RTBzUWVySSs4WUtGMkpmVG90dkhmYzlpU2YzTGVBY1V6V3kvR3NZcjIwcXpFMSsyaHFVbnhRYnFpRWpsYU1xZXIvL1FvNThPdytGbXBRcDF3dSs3aGdmcjZSa0s0WXd4a2V3ZVhoT1JmQ0JOcUlCSnp0d1oxZkIwbWJwUk4zY2tuekRpY3JhbW0zaldrRGlZemYvSk0zaFlzM2NyeWxkR3lYcXIyOEo2dTh4TGFTRFhGL3lVUXdiU0ZXSk1zdDQraWpTM0g3RFU1d1lqZ2toRXpoQlZLeDcyNExVbWtwVVRhUlRqMDBKZ0NNc2xIRHl5dkxTTlpXYy9zSW4vdldTQUhVOXEyQ1lSN0M5Q0lrR3VJMGtPS0gwbndLS2kxeFdmOVp3MWl2Z0x4a1VsT0VJRk5wUThYZDRSdmlqakdMcnhRUjJ6bXNycUxqVGhqcG5SOXJ5bDJxdVRtK0htdWllanNHTVdHSVhLa3lwZExZUG52Y0hmSDJjbFdnVTcxVkp4V3J6NktrN0xqSUd6Nm1Gb2o0NVpaN0YvajF0alhNaDhscllCbEtkWGp6bERjczJoczlKOXVBY3hLV2pSWG15OHVLQzRadTdNZlZLMGtjRGZ2dEFmY2tuZW5SZ3doWkZLcFNIeTZIOGZJbDBXbkhQYlVTTjUvUTFJaWs4a2FhQzBNU2JSOEtWNDZ2aEVldlFkUG9leFg3Q2pwU2paa0ZBS1NGLzJrdURYeUdzekx6MmhOT2tHMGkxQm1reGhqYzYzL0FRbHlLaXprMzBNSkJmTlBWRTZ5OXFERXNkWG1MTXNvdUg4cDcwSHlIL0tvZWx5QWtpK1VmZGxLUU5qMTdIb1lHU2luUWtiYjJpRldHOU5ET1d3cmo4WlF1WFRpTktUWEpPckg4bFQxKzE2NEVHalhlNStmemZVbUFNMENMUk1UUi9OcTV6TlZnZTlQRi9WUE5mVTBkTlZjb0xtWVA2RFRVNU96ZzBic294MWE4U2duZHhGUjliU05SelpuelBHSm82SEtHY2ZiVmFTVUZRQ1RkNlVielRkY3BMRFRRcXVad1BGYmRkU29ZamRzRnVrblBDRTJVcDZyay9lMWRoOUtyOG1hRThGWThDT25CdTdCMVdkUGR5dVdlejd4UHRzaHpBSXdSZWtJT21HMG9tU2xieHVYdzBiOVd0UEFYUk1UZVBnYWJEdThCcnowLzRzMGVvQkNSNmN2WGl3S0FYOERGSTl2ejRmbnVyTkxkN2haSWtDdkFuVDNSdy90U3RzUys4ckZVbUcwM2lhUW1KbjN5WGFpWncxTVNIa1JWcVd0RFo4elNBa3Jxb1lBN1EzdXlYZEpNNk1xQ1hFYkNmZ1hsZ1A0Q0E4Z0xyOHR2d2g0blhGbVlTYWFHbEVNWUNoaFZzUDBUb25zZ3lHYzZaSHJGK2tIMmxER1NxeE1OZUIrUVROc05IZ3JFUnJoeDY2eE95bHNJWkV3TENldm5mbVFwL0NMejRNY0N0MEZXemhuSlEyTkFoODExbU93YjQyaTNYT2pudGt0SFQydFFNUVFLQmdkVG5ZakdZS3cwQjQxNDF1ZUJOYXdHYVozbExhWFdUN1l1R1FhRktwWGR6a21pNXNPZGpWUnlTa2pWcEE5WWRFYW5TUTU2ODRTakxaM0J1dFdOa3hJcDNlUXk0M2sreG9raFB2d2pUVllwR2tiYkJHb0NNOHpJQkR4ZXEyMkw5QWtjTllYdXpKYXkvTmczVHVYV1dLQXYwKzh6S2RDUnR2YUlWWWIwME01YkN1UHhsQ0RJZ1ZDalZDSFhpYnFzdVA3akt5UnozdHI5bkNaSVgrK1lDQWErWmRYSzBQMmVnMXRsSnplV2cyMHpVZ0VqT2tuc0lGa2sydUJmTDJVRWpOeGRsbERPSVM3NEdyNEJIYnFURk92RkJhMWpabFBicmZ4dU5ZMXEvSnpTZGNWRzkyMWU0N096OHJGRFB1VkU3TmZ0YTJtRGZRbDdNMEpUTjdUaWVCWWpkYUFYUFM5RE9ZT1BzT1ZXVWxPMVF4Y2V0djVnd2dJMGdJVmhwYVhUSTZBeUMyblk0dkxoZmhVWldyYmtlNnNhR3YrTitRY3JBUy9YcXpOVk8xOG50YmZNdWVsRmlTblRGU2lyWUJOeU5iSjJ5dE9rNUhxTUh4dk83Y0R6TVE3RTJ6ZUpIajhSeXZTQm12VHEwakJkTEJpSUFoN2VKK3gySm9FVy8zQ2JyVGJmT3laeitIRlBzTzdoc3lUekthckRwRHZ3ZDZHbE9LZ1gyU1ZsM1NURDRhTHVYZDB2TndWWnFINkVpUnJsOGFoU3pMd0FEY1lNSVVCRFJ3ZUdZM2xudG12Q1gyMXdLVnRkZUJHVG9US1J6RE9BUk5mcEdOYkZCSzByd3FQd0szdVk0dGlYemhtbXlKbEQ2SzJvV1U0ZzlYWVc4MkFCbGs1Mk1sT2VRWWQxaFdIcmF3cEdwYkhDRWM0aXFzOE4yU2RhYTVCOXFONFRZQjNYTk50aStyTkl0R2c5T3Bhc3U1b2ZmQ0ZGSWJOWm1qVGM5RWxLNE13bk9XOTlDR200MDJNYTQvZWswbFVIUGtyTThVVzZOQ0FESW92QzBrbXJWVW94blMwSFF4c2ZnV1FJbGtOUEQ5RlVmTzRpSmYyZjNpVGd6dDloRTJPZ1QyQ2pLd0twOEhDanVoY2E1RmNzMVNsRGxoU0FLZUhNSDl3MlVmL241dVE2bkIwV1VXQ05zUnY5RE4wTVdmQ3hWN0ZOeFVsYTJ3Y1BJYlV0WVJOam9FOWdveXNDcWZCd283b1hHZ0NaRmxxbTc4dnRxQ2JlSzI4aVh6akZjdCs0OHQwa2M2YkVpcVAyOEtuWUY4bkFWbkZRSTJPSWVRdktiSUhBcy9UWGxzMjYzUWxhamRIVXBNS1pOay9BQktHLytxa1cyZFdRRTlXbVBDZVBPdmRWbUFhUE14Mnk3TG4zajI3VVZSUGxJcG5pTzZyNldQMmRUNGFtZnBhNERUOXc4RGt0SDBqMzlaYTVLYkJqcVlUMzA4RWFYMjd4UnUvcS9OWGNYaGtYUDlJRFp5UlNDY3Vaa3hmNlRaNFFLcEhuNXZ6am91SWFjU1BNVHRhU3RweUZEdk5HSFQreFY2RVl1QnE1ci9nQ2Q2T2hTYkxES3FIenZjQkNEQkxNMk9QNC9FUjJzaHY3R3JMMklic3dLWFFZNVNVSUUxeDluZUgycjVHeDQxUDBiZk9WcG1sTHRCTk1SRVBsTTRqVDBPSmpNdWhEL091RzJoNDlReGVKcVVLcUNxclc4ckFXYktJcUY3REh4RDFsejB6Tm00akVmc1M2L1lMU2xUcDRyM2MrRmVkRHZhUmlHU2lMbkdFODdxNWJFZHdLN1liblZCWU1YNmJkQ0lzSzhRMDdRSmtPeWNVTWZtZENrcVZlOTdSYUNubGFjSFFhZzAyNGVGbldIR0ZPL3J4L3RVdlVaaWMyd0JxNi94Nmo4QUo4RDJsbmduOFg3YWFBcjlRVnNuVEpXWVZrczBodDM0U1lPTWVrL2luQ21NdERza1NyTzcrV1RFZkN1Q0traXA3Vkd6NTJKTXEydnp6bW15S3lvMnFhOFJoVWNjeVhoeW04V0d4Nm91KytTaUpxdTZmTXpzd01HNFR0WC9qTFJmWDI0VDhhb1lwWjNvOTNpOVN4a1FvMHQzT1EyME5IKzRsb0JyV3lrd0FTR0ZxV09YLzU1NUhub0tqR3VoYys2Yk1WRmcvalMzcERKc1huK2ZNdTdlaWRKYXZ5WjZVWmpoMEE4S0w1cjdqekFYbldlNkVpNS80UDZWcE9VSFlYS0E1c3JFY3pGcEhVUDlSZFYzSXVpSzc2R1BxNnBqNU01TGpLZHdONUtCTlh1bDBhZ09lMnBJSVNjbXNIS1BNcmIxTTQyc0Rsb1JRaG5lcE5pbzhBUnYwWUQyUTlHSlBPY0JIVTZFVEhXWXoySWl5bjlQaWpaUjdZU3AycDd5aVFCTkdxaldZR1d1NkxNbFFJZFlSQ0o5cFRSenh1VThybnp4eGs4UFFDRDVwRE1SRUM0WmRNb1NYY21jVmNIeU1DbUFVR21pVFIrT3JBQ3JMcGd5ZHZ0TCtrTUhVdFpIdkg0TWFSN0l4dmlIRkFFUWN6dnFKNkxVa3NpMUVkT0xNSS9Sc1BjTitQNUV4TXIyeGsxNzZQc2QvdWRqdWg1U1NZc2hmZENxZmtvOU54YXppN3lZSTVvbEdFRTRLaVhVcVVrRmQzcXdrdkhJVlVJYVAwNzVRVDJ5WHdWcHNMVEhhRHh6NkZlM28waDRMa2xpTzhnR1dhL2lxa0QvRG5tOHNyeTBqV1ZuUDdDSi83MWtnQjFQWlh3cGdhMDFyRGZZYVZUTVZ5eEdTSXl5dkxTTlpXYy9zSW4vdldTQUhVOWpTSWpJaFJrZ3B4VC9LTXY2aUg4bGxXSEoxdGo4L1JUQ0YwQ2wyZjZXd1RiRkpZY01hRmxubU1pczJBTFZPTlBzNlVNdnNPL1BPdzVDY3I3OXNKemllV0xNVmFPVkc0L2UxVlBUU0F6WTlIODdPQ0pYZXgraUFPb1crS0FucmlCekFWQmRGd3lVcUllbkxKVnNSSDdWdjNOVjczTXFycW4vcGt6QVh0a2lVQVh3cEttVnpkYmVOTGxlYm9rRGtvbXNzcnkwaldWblA3Q0ovNzFrZ0IxUFkzbVRSbVN0U2tIYnhBL0Z0Y2ZoYjMzNEJvejFZdVg0K1pucEJsUlN3eVRURTF1R0xZZmVwWmEwSjlwVGM4WS9HYkU2elh1YStmZDNPWWtrNENwWTVoSU5WQU5HYkdNRDFZUWxwY28vcjNBNnY4SDdzZE81SzdTalo4SVQ1SlNMVnNwQkZVM3l5cWpQY2RWRzlkeUQvTHBHeGJXMjdRQm8vOHUyVmhwa205TGNNdzNoOGhpcDZDekI2VGxwd1QxVDY3WEhrR3o4VWExQytTTC9FRXplcTlLOThWVFNXNEZQeWVjRlk3SVVjNDBBWFBtcHFLSXF0YTdTY2pBWXZEOGhaSDNkM1UxVTUzL1NvY0pIS0RqNFp2MWpibkZUc2pvZGpWMGZIZVlPZHQ1MFBGV2NPeFhZYXo4amdnZGwwNEJFRkZVazBTcGZ2MnpyZE4yNTVLRnIxbTRnVXh5M0tpN3lGQVBoZEtyeUNKL2hqVFJKUWNURG5hNnlQU2ZzZUNEdG9Sa21HdjB5TmRFMGJpOWM0cFdQUWdyVmkwUWpkekgyNVgwTm5KQWtsNVlVaWtQbGxGWlhobjJkUXpMbU1qS1AyUks2TEtSQTVBcEhnT1haV25HdDBBbWNmVXl1dHcwR1lSRzlld29LQVlRMzhKdEt2UnNkVklpNkZjNE15amUyQmJ3dUxvdCtsNll4eFAyRmVrVWtraTk4Z2JRcTBDbHB2YmhaMm41dmM1cUlaMWZ2YlNOdGVOSGkyTnNEVytoVVhFOE9ZaDNBeDl3QUs2QmhNMERpbnhvNk9Wb3o4YWx4cTQ0dHRxa2lBUjdHOEhYem11TU5qTHMrYTkrUUk5cWU2RFNiQUJRajdVRkVoUGNWMWUvZ1BUL3dSL3M1b3lTU0x2MzMwdGpyendvN3BsTG91bmMvc2E3VWVBeEJlclFVcXkyQWw0MURhd0ZMZUsrbWErYU9NYk9lWjhkSUJiR1pqV1JKNmpYWkllTTVka1dvYVk1Y1JSY0NwMDlxRm1taGwvY1dzUVYyL0tmcS9EYTJ1MzhTZlhySTFWSzJlZzdDMk92azVTU2NzbHNSTlEwUWdvdEMrNE1DVVJFTTg5UmU3SUI5L2l3V3YrNzlxSTNTL0huS2Z4cnVGdk9XTjQvd1dIUjY5b2NhaEd4Ty8xdDl1WlFzS0w4Tmg0bUYrTEFGWWpoWitSNElwQlZ0ZVh5NmZHbFc4YVFRMXN6bS9TOWlJaytqWWNra1Nub1ZpWVp0bTJ2R3NaVkNJT2NsMHZyTEhtWk1WeWkvR0o4VDlsL2lTUXErOU5BRG1XU3dSc1c5anJLUjJ1eXdHczlCaEZlc2JWNFhKWEV2eE1NS2pIcHdodFpEUUFGS0tMZmpVNGxMdVAxa0cxR3ozZlFnVkcwQ0tnUXJHeHd5ZzlKTkZ4OGxLMHBkRU9PK0RhWHpUckhvWHhNMGJJc2ZjTFlDd0s1bGxJQ0tBazhaTVQ2TXRhSE12MHk3ZXZNakJaLzFZbHZROWVrTDBmNis3aFc3YkdUaEVPeTd4OUl5eWJibzl4VThrR1EwSXdTeXNiSDc5OWV5ZktubFpaWGRVL254NFduMWExQ1B5Z0sxNEt0aVhUZEZEUTJMZ0NPbjJxb1BaZjdOdElGeGRMNnlhZXArQ3FxMnVFTm9wZzBEenhUekhicVg2RG1jUDdQeWVqSE5PVlVnM3dERjJSd2QzSWt5WUNxZ1puTjZFclcxVjI2b2lsRll5WEZaK3Y3RUhFOEI2TWhMbnh0TEdrUlpaMCtGRkk2S24rWG9lN0xMKzJaYURvNC95eW5rVlI3QkZ1U3FodEtMdnpqZGJ5WW9Ub3dpbTg1YzZScS9SQ1h0d2c5Umc0cVNFUkdqalp5RmNKUS9RNmFKYnYwTHBFeVJuM3FwcDc1dVQzemNiVFNSUlRWanp2Y3VYSUVyZ3IxRC9QdWdGbWhPV2UvMnBCMTVqVTQwaWUrM2M4OW95aWFlSU8vNXNrZHdRUHpnNi9ZSE5WLzFzVlZnT0thVzRJN1FBa2FTT3RkVlBtNkg2d3ZseVhFQ0FOdmhDTUdlbEZBZTFqV3ZkQk11blZSOE4yUkZTQU84TWtJSjZvOEx2VW96S0RrTVFCdDVwL2NXc1FWMi9LZnEvRGEydTM4U2ZYRDUyZ0tENkg4WFZLRmZtREhhb1NoTXNyeTBqV1ZuUDdDSi83MWtnQjFQYW1iMHFhYlQ4M0Q2cW4vYTNHbEh5R3hhbVpnUkhhSzE2dm1aRXphbnVURE96RzFhVXB2RUN0UkI4RU1nYXBhUVhMSzh0STFsWnord2lmKzlaSUFkVDI2dkZwZ2EwWlJMV1JQM2pIMHR5ck5ZQTc1ZUNUZjlkSXFqWUdjQUExcnNVMHplZXBkTVo4TUpYZDUreGJBYVhBL3VKZnNHalBJN3BzUWM4Sm4rZm0zTUxrK05DRUY4THNRME90Z2xJWEwrNjNGUnZ5RzduTWNldkg0aS9YVDBCMUJYTlBMNnI4aTZibmJlK1FKS1lNQTkzUGRiQmNEc0dUVmFMaUpsWWRFT1RmallicExVUkNkbHg5Sy9wdUVYVytcXFxcXFxcIilcXFxcblxcXFxuICAgICAgICBpZiAodlsncmVkaXJlY3RfdXJsJ10pIHtcXFxcbiAgICAgICAgICAgIHZhciBlcCA9IEpTT04ucGFyc2UoeW0uc3BsaXQoJ1xcXFxcXFwiZXBMaXN0XFxcXFxcXCI6JylbMV0uc3BsaXQoJ31dJylbMF0gKyAnfV0nKTtcXFxcbiAgICAgICAgICAgIHZhciBzZWFzb25faWQgPSB5bS5zcGxpdCgnXFxcXFxcXCJzZWFzb25faWRcXFxcXFxcIjonKVsxXS5zcGxpdCgnLCcpWzBdO1xcXFxuICAgICAgICAgICAgbG9nKHNlYXNvbl9pZClcXFxcbiAgICAgICAgICAgIHB1dFZhcignYWlkJywgU3RyaW5nKGVwWzBdLmFpZCkpO1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogbW9kZSA9PSAn55u06ZO+JyA/IGdldEhlYWQoJ+ebtOmTvicpIDogJ+ebtOmTvicsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAn55u06ZO+JyArIG1vZGVfdXJsLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICfmlq3mj5InID8gZ2V0SGVhZCgn5pat5o+SJykgOiAn5pat5o+SJyxcXFxcbiAgICAgICAgICAgICAgICB1cmw6IChtb2RlID09ICfmlq3mj5InID8geGx4eiA6ICfmlq3mj5InICsgbW9kZV91cmwpLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICBpZiAoZ2V0VmFyKCdsaWtlX3R5cGUnKSA9PT0gJ+W8gOWQrycgJiYgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykpIHtcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+eCuei1nicsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChsaWtlX3VybCkubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmxpa2U9MCZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmc2lnbj00YTA4NjQ1YzI5OTRlYjY5MmFjMGNmYjBiZDc1NjljNic7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbF9jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudF90eXBlXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBsX2JvZHlfdHh0LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2cobF9jb2RlKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nICsgbF9jb2RlLmRhdGEudG9hc3Q7XFxcXG4gICAgICAgICAgICAgICAgICAgIH0sICksXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5oqV5biBJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKGNvaW5fdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmF2dHlwZT0xJmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImZnJvbT03JmZyb21fc3BtaWQ9dG0ucmVjb21tZW5kLjAuMCZtb2JpX2FwcD1hbmRyb2lkJm11bHRpcGx5PTEmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzZWxlY3RfbGlrZT0xJnNwbWlkPW1haW4udWdjLXZpZGVvLWRldGFpbC4wLjAmc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmdXBpZD0wJnNpZ249OGFiYmRkZDg3YTZiZDgyZTFlNDJjYjNjZmZkMzJiYjknO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCwge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IGNvbnRlbnRfdHlwZVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogY19ib2R5X3R4dCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGNfY29kZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5oqV5LqGMeS4quW4gSc7XFxcXG4gICAgICAgICAgICAgICAgICAgIH0sICksXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn6L+955WqJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKGFkZF91cmwpLmxhenlSdWxlKChzZWFzb25faWQpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFkZF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjA5MTAwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2Vhc29uX2lkPScgKyBzZWFzb25faWQgKyAnJnN0YXRpc3RpY3M9e1xcXFxcXFwiYXBwSWRcXFxcXFxcIjoxLFxcXFxcXFwicGxhdGZvcm1cXFxcXFxcIjozLFxcXFxcXFwidmVyc2lvblxcXFxcXFwiOlxcXFxcXFwiNi45LjFcXFxcXFxcIixcXFxcXFxcImFidGVzdFxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCJ9JnRzPScgKyB0cyArICcmc2lnbj1jNjRiNGM1MDgzMmQyOWU0MGEzZGRlZGVkMzY2NzEzNSc7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWRkX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGFkZF9ib2R5X3R4dCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGFkZF9jb2RlKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nICsgYWRkX2NvZGUucmVzdWx0LnRvYXN0O1xcXFxuICAgICAgICAgICAgICAgICAgICB9LCBzZWFzb25faWQpLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+WPlua2iCcsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChkZWxfdXJsKS5sYXp5UnVsZSgoc2Vhc29uX2lkKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkZWxfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYwOTEwMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlYXNvbl9pZD0nICsgc2Vhc29uX2lkICsgJyZzdGF0aXN0aWNzPXtcXFxcXFxcImFwcElkXFxcXFxcXCI6MSxcXFxcXFxcInBsYXRmb3JtXFxcXFxcXCI6MyxcXFxcXFxcInZlcnNpb25cXFxcXFxcIjpcXFxcXFxcIjYuOS4xXFxcXFxcXCIsXFxcXFxcXCJhYnRlc3RcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwifSZ0cz0nICsgdHMgKyAnJnNpZ249YzY0YjRjNTA4MzJkMjllNDBhM2RkZWRlZDM2NjcxMzUnO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRlbF9jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudF90eXBlXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBkZWxfYm9keV90eHQsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhkZWxfY29kZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8vJyArIGRlbF9jb2RlLnJlc3VsdC50b2FzdDtcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwgc2Vhc29uX2lkKSxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG5cXFxcblxcXFxuXFxcXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVwLmxlbmd0aDsgaSsrKSB7XFxcXG4gICAgICAgICAgICAgICAgdmFyIGJhZGdlVHlwZSA9IGVwW2ldWydiYWRnZVR5cGUnXSA9PT0gMCA/ICgoZXBbaV1bJ2JhZGdlJ10gIT0gJycpID8gJ/CfkrAnIDogJ/CfhpMnKSA6ICfwn5OiJztcXFxcbiAgICAgICAgICAgICAgICB2YXIgYmFkZ2UgPSBlcFtpXVsnYmFkZ2UnXSA/ICdbJyArIGVwW2ldWydiYWRnZSddICsgJ10nIDogJydcXFxcbiAgICAgICAgICAgICAgICBpZiAobW9kZSA9PSAnWDUnKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBwdXJsID0gJ3g1UnVsZTovLycgKyBqeCArICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5L2VwJyArIGVwW2ldWydpZCddICsgJ0AnO1xcXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBwdXJsID0gJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9iYW5ndW1pL3BsYXkvZXAnICsgZXBbaV1bJ2lkJ107XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIHZhciBwaWNzID0gKGVwW2ldWydjb3ZlciddLmluZGV4T2YoJzonKSAhPSAtMSkgPyBlcFtpXVsnY292ZXInXSA6ICdodHRwczonICsgZXBbaV1bJ2NvdmVyJ107XFxcXG4gICAgICAgICAgICAgICAgdmFyIHRpdGxlcyA9IChlcFtpXVsndGl0bGVGb3JtYXQnXSkgPyBlcFtpXVsndGl0bGVGb3JtYXQnXSA6IGVwW2ldWyd0aXRsZSddO1xcXFxuICAgICAgICAgICAgICAgIHZhciBkZXNjID0gKGVwW2ldWydsb25nVGl0bGUnXSkgPyBlcFtpXVsnbG9uZ1RpdGxlJ10gOiAoZXBbaV1bJ2xvbmdfdGl0bGUnXSA/IGVwW2ldWydsb25nX3RpdGxlJ10gOiAnJyk7XFxcXG4gICAgICAgICAgICAgICAgZXZhbFByaXZhdGVKUyhcXFxcXFxcImlmbnpxYU5xTlJrTjZOcUcwZlp4NU1leTQ3N09zTUpPVGJUZDlTYWpNa2ZMSzh0STFsWnord2lmKzlaSUFkVDJOS1hPeE1MMzR0UHNKY2JGZ1lxMkl3ZXFSV2xjdG5ubjQ2ZEpIR0FvUTZTK1R4c1dKWjNFTGJVQUVmMVZ2MnhvTXJrbDNLb3FXdG8xdTd1OVNVdk50ajF1eEM0ZW51WklFM0lPVkpZZnVsclNJdXFuTUU4K2hsVjM4QlN0WkNrSmYwaVczSGRGMmlzQkhFeFRaZjRscEMyS2Y0dUFzUGZScVU4TjlqYlA0K3F6UHJZckcrWWFXdCtpbnc5WmFHTmE2MDdGdXZMZ0grNHZaYm1mL3RHblJ6YVF2ZjByaHZQbmZCZUV5YU1Bem1tdkFNeDR1MG80MnJ4SG1OS1N4LzJWWmxJcStScUNaeEpKM2JLY1FINCtGL2QwRzVZbVh5T1BaUk5ZTTdSb0J6OHplUUUvaHFCclViclNkYjNWdzhTRHNFeFUyaFdPRXIvMDUybjc0U0VkV1dkYzM3azlCTGFWUEpyZFBGcTNyK1poOGY2aVdnNk5YQnJCK3RVbEdTVlRqWmZzTEQyckJmcHVQZVFRV2RBRXJRSmhJRk05NVB4aDNTNEJIdFVvZFozRjIybWl0TEVmODZJUG8xOHlyZ0hNV1ZhUWE0dVFBNFpNRFQxYWhNODVrNis3TFRtUHR6Nk9OQXh2eUlUNzVzQ3hTY2swWHNMbGhHOWdWOHJVMGZsRDNlK2lXZWtqazFYeXJtZGNLZkZIR3l2SWZxV0Q2ek1SQWRGSUl5WHhOM3N0YnROaTNiUU1VWmdiWW1tcjNRbGUwakFIb1pSTUhkbDFCclMxc2RtTGVwV3h5SEM4cjZVMzVIbUJRTkhwZHZ6aTc3V0dHcjQ0UTRNZ3Y1UlhiSjllSk9GR3psaHJUc0RRejN3QVNXelM3SnhHOGNrNWZWMHVUUmNqZ0pQRkNJODZleEQ2NFQ4dG1za2VrV1hNdFpVamxOSVRQOVJPUE5LR253enJoRlYyUnZWcU5HMEVGSXNXMVd1YmF0YXNpSjZmWG1CVEYwZ3RNbUJLMWFzM0pIV1JoS3JnWWdGQVNkK0U0S1VBdU1QTHRRYjBmdGx5UWlBVFZzYVJyRnpia3B1WWxNQXMxUDlWaVVqL0V4b1hxQU1hUThaSnpvdHNQdmp3K0tQRk1mbnc4QjlFUWN2WjdjQW9LS082K25EU3lIZU0xZXcvdW9XSDJYSk5HTDFQVWM5czFUVWJhS3RVYlMyNmhXTkdNckd6RzJ1MTZvVGxEZnh6QjdLTGpteUlpQ2hCNzQ2Q08zVG5aelhwNHMrdjEvcmZnUFl5QVNHakVqUk45cU1hejdJbC9tTFBpRVVEYWpyTitBVSs2VVpsU1VLWmFhbXpqLzR0SnRsbXBBM2kxOUQ3SXN3MWtEekh3THNZZm1ITVNra3YvOERKcFAyVkRQRzJGQW9SWmtsUmNjOWVVZGF1eUwrUWhDUnpSQUJxdnB6ZTJJWVVUTU1Ha1dtVzJ6VUZyZDdWU3NzcnkwaldWblA3Q0ovNzFrZ0IxUFk1WW84MXFpOGhYV0ZHL3NrVmkxWVRwYzBWNjVVZ1o2SkxJQjZLcDJPb3M4M29naVNGTURKaXNUMk9FQzZHVXhoYlZYYnFpS1VWakpjVm42L3NRY1R3eSszMndLVHpXVi8wM2gyUm9XZEoybm9sMHVDTUdZOWFEQ1BVYlpXVWVhZkxLOHRJMWxaeit3aWYrOVpJQWRUMkFMU1pvcGl2TU00SFZORjNtWTJYTDFBM2plc0lBdHhEUi92QjgvQUlsL1dMckdMYmtQMlNKeDhCS20xaFNOb2dXeWQ0eloxd2FKcXBOY0xiMGxwZnR6ajNCdzFrZ3lNWXBTL25GNS80ZDUyWkxrR0d6YVVNTzNLeGloUEkwdlY0LzZWZW1mRk9Md3pYa1JXcnhSeWhGeFBNY3NHQTZlQXBIbzFoYzFrOW0xVi9DVnVXV2N5Z3ErUjFwejRhV29xSktwdHZUUnVndjE0aHdKVCs3cndHV2l0T0ZWdUszTjEwYXJRS1ZaNmtUOVVDdkdLNEdSa3VaamwvZGJKZjRBeGFjOEZmTSt0Ty9vS05ZQjg1MGg2Z0NiVG1MM1RXMkV1RnVTRG9ZNXFrTXkyMmkxdTJlS095dFI0U1JMRkw0THYrcEVxZkhjc29MbWo3L3pJVXFPTkNrcGhTRk02ZGZ5ZENHOWM0VjVBc29tOHFPQm91enRnQnpLVUhUMG83MGJRM1VUaXQxN0Jab1ZjcWNiZUpleWR2VzNIQ2FWWnkyd2h3d04zYjE2VkhsLy9INGcwZ2lLZkY1N2hKZTR6aVNWbkYycFdzR3JSNWR6ck8wcGVxd0FnWnRvQkRvL21hTFhob3ptR2ZZQWM3d3pXbWJYUWVKdi9RQnJvdTI3T0tNRkRBWFAvY2p5RUVCZ0RIYjFyMVZYTUNpbVUwd3cyVlgwQ2o1WFYrZjBKNVc1N0tVT1NlQ2pidnIrVlV4cW8xNnh3OWtyOHRuUTJRejVrTUl3S2tNSVBpT0poSjJCQXArSmFYbGdNWElpNnJ6dDdJY1lkYnlib2M3RWpkdk0rc3EwQTVCZ1RMWTZFQzlCbmRIZWhodjBhajl1Tnp2b2p2a2d0OGQyKzV4TVliZFhCR1htZHl0aDVwQXluOG9MQkNXVURiV2U4MC85OWV0MWlIL0dESkVmb0RMRGY5cCtrNCswUWJ1V2RFcXVUTzFqQ0pGNTFoN1R4SGwvVVlhL21Kd3VkMC9ZOEQ0ZkVZWlgvVjNoR3BPRDlSMlptamc0SXJwUHB3ZWZqOHcwd2djZnlMejlaTW1zMVBvTW4wcUNubk0rVnU2bjZzeENsUGI4eVd4S2t6TWgwZXdFNG5Kb2NoV2JEazVyY2ZyRTAya3lrRlhGdHUremo4SEpnQUhNYldWbmpueVhJNzZVZ3FEUmVqQUh5Rm1XbVZLNldoR2s3bTZac0pxakppMkU1MzRlQjBqQVZZZjZKYnM3aEFxSlBnRWxlT2VBT1U0ekpNc0FWcmlzdDYzaVJKTWFFTVRqTzQ5OCthbU1Pcjc4V3JLRHpodzZSZ0IrTzlVaExQSzA0MllFN05mempDYjc5OTg3dTl3UVY0UWNyaHRsS09YY2w4TWJadEgwYm1iTmJBT3VYdUlGNWRySlVyallTd1ZRQkRBYVVhTFllemVTdXZyUXdGU0Nid2VUVUpHejFqN3VCVXEzbWFCNE9mSzJuN0cyTjFmQ0sxZUVhdzkyVW5sVkRPMFRmMUxJSTA4SEZ0c1JJbjZZMXAzczlWK0xKUTlpVWQ1WkcwTHdVOTA0RTc1UHB1VkxST0JZSFM0bXJCM1J2ck1oQVdDNmpkdFNURmtsdW12K2MyRUpScmJVcmpyNEErWTQwa0FOTjFVdDFyZHZNYi8wcFJPSlhWc0RmYy9BeU01bjNDZmx2RFZxU2dQSTlibEhGZTFtWjc1Q21JTFM2S3pkRjBZbDFNVkhpUFcwanZvZG54S1lUcHM4aEpOK2FJK2gxV1JHenJKS1pKaWNBdE5kc1dWaExmclZ4VkVQU2VtOWpHenNBYVdQa1ZCR1JPNmpXMlNXN20rYlZEdlJQYlZwYjZnU0JJOG9DVVlPbzcvUTBIYWJxbTdSUE1jc0dBNmVBcEhvMWhjMWs5bTFYdzUwSVJ2bjdWeVBKK3JEQjFHYWRLOXFvN0l1RHYxdC9Xano3ZHZwNGQ0UnB1R3Z5NFpRazlQd1Y1dFR0a1gyREdBdFE4ZmFpdkVJSDcwT2hrcHVDdG5Ia2JvelFDOUJZTHhVZGZJTHZQOHFFOTdyWllrK1hjcWE3aHZsQkc2bjNKZzU2czRycVdlWk5sQi9jRzU1Q1N0UlBFSTZSanJBRHB5L3NZblE0UkVONlVsQXltU3JlczJZWFJMVGFFY1lXa0pXOTgyQy9zZllzY2tiaXpsT3NZc0tBRnAzWHNnRFFSRGFhbyt5SE5KQXBlVlJLMW03aDE4cS9LYlF4RmNwbkRiR1gyTVJ1Y1U1UFVQSnBreXZDbEV2Uks3azF4Mm4wemF6QVE0Z1pmRHdzTS9pbnZNUVRLZVFldHpJcjYvWndUekhMQmdPbmdLUjZOWVhOWlBadFYvcUhNNXRZVTFod1JTcmQ4NUtIMk1wZHQ3TVB0V2ZxNE5kT1lXYk5oUFA4eGxMNkxnSEFXbE15QkRac3VHeUh6RTh4eXdZRHA0Q2tlaldGeldUMmJWYjJXSE0xTVZQZU5QMkp6V0tuVTBIUXViYW8vNDFQcUloK0NXQlIzSFVGWVJ4aXBFQlFiS0EvbUFwQk4xcEhDd0JQTWNzR0E2ZUFwSG8xaGMxazltMVVDUjY3aHY1OWVtNG5WUFptalU1azFCOWJJZHpJbDdXckoxZi9TVW13dnE4anlNR204VEpYaUtnRkV5NjIyZW5rVHpITEJnT25nS1I2TllYTlpQWnRWQ3JsUm5nVEVKQnFWMml5czZxeUxUSjFDcGJuNTFjS3RlNThlTktSa2xDRHVYRmMzR3FsWTBDZUc2RjNRTVZ1cUJNRU45cFhzbW53S3hzRTY1L2ErZWxxZWZMS3lsN0krT1p2K0tCSG5ZWDc5V2pCYjMyQkdoR1puZDFRa3kyeEhQdmY0U3grL3RZTjJ6bmNtcFFxU3d4UE1jc0dBNmVBcEhvMWhjMWs5bTFWVXVVR3hST1pTM0tDRTk2bmFVRjc0bVJtcmRPL2pwdElIZ01qQytHNlY3QnhaVEppdE5FTHN0MEZDSituK0FNWVR6SExCZ09uZ0tSNk5ZWE5aUFp0VkJDUytMZllxclNCR0hrZVlsYXFnYndJTXhFZDFPVlB5Smh1VnhBVW5EdHJLVzBDbnZ1cDh6QTNDVStpTVRsVFJmMk5mSmN4ZWo4ZGlqWTV5M2YxblJXUkVPcFltcllYenRmc1I4UitZK1RlWXhBZXV1N3Nnd3VpVENHcXhjeHE4Y1hGMk8remxhWGVtNUh3SE5XOUcvLzNlbnVrNk1LMkJ0dENRQkhyaXBZb0dBMSt2VStkSi9GK0xSMWlCTHQ0eS9Gc1B4ckpQMXh2djAwWkZrWGdjeUdFaWF1YW1Hd1lkbG4zLzgrdEZnWFJJODJyOWdjc0dYVHlnSU9URjl5aUYwZ29DaDROTnlyYTVTUHpTd2dvbjNjc24rTmhBUVJKdlNGc0xYTEg4Ri9mQ1NDandsL3BpMkdHWTRuQlVlazN3SzZjUUdXNkIrb08zaktTVzlRRUcwL09nSFRieXhiUjlFc3BvbG1ObEIvR3FTTDRLT01ZYXdOQzB2Z1ZaZEpCNWJIbHV0Z2puVHZ2N29ZeWZlYSttSU8xakdiWStqVThWTHgxWVpTSEVOU1RqaTI3NFFqMktPckZFenBYcWlRMkpLWmxtRGhiOUxKOE94Vkx4OEFISGNQNm55V09oaVljRnVRTUZ3ZjlVUklHSHJ6cmp6cHBmN2dzS25KbHRUYmtsbDFsc2ZVSFNkNVpTQUY2UUUzYjhvYjV4NUhtWkZVUVJrVTk0UGxDSHRXNUVGd3dIcUx3czF3M0d4ekdNaHRxZkU4eHl3WURwNENrZWpXRnpXVDJiVmVFN3lNN0x4cXc3NzEvM25OYjc4T3ZwNHViRmNpUnY2QnZYY1Y5MVgvd2xBYjY2Z0RxeXhtN0MrakRsODVQTEp3ZElSQmtlcTBVcG1LUnZsakFHVUlvTFAwb0NuakZ4UFZpbnF6bUFtUHlseFJmb3ZWWmM1UlRHY3psOHRpQ0lRRktlN2hQbno4UFVlVHhMMkdVUzk3NTN4UDB1Z2JKTkgwa3RNRkdxWExRck4yMGh5eGp5RktOT3k1R1FMMWRsMzJWOTZjalZRZXVsMms1WElST1BhV3hsNjBqNVh6NkdQVzB2c0NJcEsreGl5eXZMU05aV2Mvc0luL3ZXU0FIVTl1U3dCTXZQeGdqMlRXT0Q5MU5abDVLb0pjK3p1M2pwVlFCRWd5SEd4dGk3U3owT3lzVXRaZ0xFSVc5YWRTZnlpMncvc3JtVG04SDBNNkt6R3RuU2M4YTBWVndUMnFRb25uZ1NSNUs2UVQyc0VaSnJCczVCOFpEQmtqYWZRNHNScFJFYU9ObklWd2xEOURwb2x1L1F1a1RKR2ZlcW1udm01UGZOeHROSkZGTldQTzl5NWNnU3VDdlVQOCs2QVdhRTVlaW5PSTdVQXpsZDhISVMrTFUwN29MaER1Vklhc0k3QWdiZlljYnY4eVpCeXl2TFNOWldjL3NJbi92V1NBSFU5bHNWVmdPS2FXNEk3UUFrYVNPdGRWUG02SDZ3dmx5WEVDQU52aENNR2VsRnl5dkxTTlpXYy9zSW4vdldTQUhVOXQ1WGJxUGZMRzVBQVVFdnJjaFM0V1poY2xmTjBWcTAwMUVDLytVQVhhR1M1YjBoa0pWT1VDdEN3c3pWdXlBZVVNc3J5MGpXVm5QN0NKLzcxa2dCMVBiTEs4dEkxbFp6K3dpZis5WklBZFQycG05S21tMC9OdytxcC8ydHhwUjhoc1dwbVlFUjJpdGVyNW1STTJwN2t3enN4dFdsS2J4QXJVUWZCRElHcVdrRnl5dkxTTlpXYy9zSW4vdldTQUhVOW5NeUdMSUhsQjJRUklZNkR0QWc0bHpMSzh0STFsWnord2lmKzlaSUFkVDJnRHZsNEpOLzEwaXFOZ1p3QURXdXhUVE41NmwweG53d2xkM243RnNCcGNEKzRsK3dhTThqdW14Qnp3bWY1K2Jjd3VUNDBJUVh3dXhEUTYyQ1VoY3Y3cmNWRy9JYnVjeHg2OGZpTDlkUFFIWFpSRWhjZGV4MUtNTGMrZzRJK2pjeHl5dkxTTlpXYy9zSW4vdldTQUhVOWdUdFZPRkY2a3dhbm1zR1NkSDJpYUdjMVluNUs3a0g1VlhENnl0Z3E2bzNKMVFrNkQ3ZGE4dGRHUlp5bGxxV0RzNlVNdnNPL1BPdzVDY3I3OXNKemlkYmszNTQybWpMUkt0eWlFZXl2MXRzNnlhZXArQ3FxMnVFTm9wZzBEenhUenFIMXI4M0p5dXZRczRzVlhrcjNDZkxLOHRJMWxaeit3aWYrOVpJQWRUMnlBSXVNd0R4dklmVUlHOU9adURzSTlxQW5CVzFGaTB1ZGZiVDloZzZVNEI0bGxSdnVLeVM3WkVSekViZS9KZnY4Z05FZDhUU1lCOSs3MnZ5cGlsMnJUYjd5NldGbFpRYTArZkI0NFRFNnF6eGt4UG95MW9jeS9UTHQ2OHlNRm4vVmlXOUQxNlF2Ui9yN3VGYnRzWk9FUTdMdkgwakxKdHVqM0ZUeVFaRFFqQkxLeHNmdjMxN0o4cWVWbGxkMVQrZkhoYWZWclVJL0tBclhncTJKZE4wVUNQeTBkTnJpc3lzS09NdVVNUDRGcFlsSWxDeEF0OVFGYUlhSW9VdGxBYWlZQ3EzUW5NK1JZd2gvNnRKdzNjU3FobUhXazlyQmFqNzFOa0FDVXZPWHI0RFVYOUFaVzJtNGtvaVhkMVhKdUUyS3g3ekVqVzBhbWdmekJaREpvL1lLUitqU0J2cEk4QUJZNjJKTk5VTGEzbXRxV0RPMVhnTDJVbHNkT0RKbEl2VFVxM3oybHQraW51a0xsbGFtWmVmQitKdnFzcXYrTmVZYk9KeHhHbXRuUDdxOXBWMHJSbWYrMU5lKzFPK1I1VXNyYUpLWFBVeVlSYjB5N29vVGtMRzFoNGhHQWdFdFJqVE9rdGtYbkY1QlpUR005UnlRUnVhd2MwYkJPbXRIWDFoY1Q3cnQzdERrc1hKZmZsUHl5c1d6aFBYTE0rRmR4NWRDWVJ5WnpDL3hpeVpyZDFSb1BaMnUrMFF0YnNLMnVnUnB6UTQ2OWxuZHBKaHJ3YWV5aCtvSEJTOEZ5dytzL1hCMzFNSDlLSkFvMEpFQVlaSzIyNTJpRVlIZ28zWHVOMVo4YjlJNWJvb1B6dkwwMUlpK2tBYWhzc3J5MGpXVm5QN0NKLzcxa2dCMVBhanJ1cVkvYkw2djEyMDAybWE2MFN6WmhUbnl5UVpkWDlNNTJvQ0FraWoyL1lOdStIcFg2NzlkbFpTK1dhaHVRRWpqdjQvUk1hSlNmU0tERFI2eWx4TmhNWXdna3pGcFdRVFEwR3FMcWZ3TElJelZzMmdSM05PT3dzbDl5a2FDeGlmRTQ1T1NMUWFZK3NFQjIxTFhLZjJSV0lxYWJLaTdWbEJXdVZxeksvTXhiQ21qS1BXS1VGcEp6YTgwZ01YVW5GNEltM3lxRWZ0MXJmc0tVN1NnNmU0aFpxelJtYlFZZHZFN2NlekYrZjh4Y0Q2eVJja3hPUmRHNnJQT0JLaURNZmc2M2VIdlppVWp1bFBFNUl2SkR4b0tCTlh1bDBhZ09lMnBJSVNjbXNIS0FnVEZGamJ0YkNmZTFUaitpeDJHVVROd3JIVXpxWUozSXF4eUh0T2FyMkhGMW1MNUsvdXBTWTN6VDBiS2pjSHdjc3J5MGpXVm5QN0NKLzcxa2dCMVBaUHhkK3pYQmhJbGg4cHY0eVVyWGJNZ29zTU5pWURCYlVabUd2VVZCOVkvVXE1UXlZUjhqQmEzVDZxcXFkOVBjREdqclRJNlliaEVhNG10aXZWRjFuMUo5ZlVFY1NIV3ZrOGZweW53K0JrWU9lemhJWXdiaGNYcktKTjNYajRYQUEvanQ2SDMyNTRGYzRtUm91N2RZbFl5eXZMU05aV2Mvc0luL3ZXU0FIVTlrS0FyVUtWRjJPbUFFT3RSUFRMb1VyTEs4dEkxbFp6K3dpZis5WklBZFQyaVZTbjJYNk9LOTBSZkVxamtDL3JJU1l6Lzd1Y3A2YU0zVDE5Y0pweEVySExLOHRJMWxaeit3aWYrOVpJQWRUMnNNaWRzSjUvOCtVK1pMWG9va3RTNy9abmEwMmZ2QWhKZ245Z1JqU3p3QzlkQ0J5b1V0OXBZWFBsTnVkZjdoNkJwejZxd1d2TUducjFmWllhMDdiZnI4c3J5MGpXVm5QN0NKLzcxa2dCMVBhanZ1Y3pyUVFVMEkyVUFhOFVKZFB1TWpCSHpZbVdPQm1qbDhLaDIzK1Q2cmx3V1JWZ0Y0N0hHeXdWblZ6cEdDYk9sREw3RHZ6enNPUW5LKy9iQ2M0bkpmanJndDZFblBqWFovbkNKTVB2V002VU12c08vUE93NUNjcjc5c0p6aWR3WjQ1Q1hOR3grUzhPTlJ1MGNRWXlFOWNzejRWM0hsMEpoSEpuTUwvR0xKbXQzVkdnOW5hNzdSQzF1d3JhNkJHbk5EanIyV2Qya21HdkJwN0tINmdjd3k3WW1NSEFEa3N1bU41SHJqbFY0TXNyeTBqV1ZuUDdDSi83MWtnQjFQWjk2dmVGZjVvMDZIbEZoRmtFYmpWTmFIaFZXZ0g0ZlRNdGt1ejViRG4rQUhnbmpwd3lHL2hJTDUwR0lQWG8rdnJZVEFhQnlBQlFXbzVQMXBWdUtEWmNcXFxcXFxcIilcXFxcblxcXFxuICAgICAgICAgICAgICAgIHZhciBkYyA9ICQocHVybCkubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICBldmFsKFxcXFxcXFwidmFyIGNvbmZpZyA9XFxcXFxcXCIgKyBmZXRjaChcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvRHVhbk5pYW4vTXlQYXJzZS5qc29uXFxcXFxcXCIpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgZXZhbChyZXF1ZXN0KGNvbmZpZy5zZXR0aW5ncy5jaikpO1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXl0bVBhcnNlKGlucHV0KTtcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGVzICsgYmFkZ2VUeXBlLFxcXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHBpY3MgKyBSZWZlcmVyLFxcXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBiYWRnZSArIGRlc2MsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogKG1vZGUgPT0gJ+ebtOmTvicgPyB0cnVlX3VybCA6IChtb2RlID09ICfmlq3mj5InID8gZGMgOiBwdXJsICsgbGF6eSkpLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG5cXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIHB1dFZhcignYWlkJywgU3RyaW5nKHYuYWlkKSk7XFxcXG5cXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJ+ebtOmTvicgPyBnZXRIZWFkKCfnm7Tpk74nKSA6ICfnm7Tpk74nLCAvLyfnm7Tpk77mkq3mlL4nLFxcXFxuICAgICAgICAgICAgICAgIHVybDogJ+ebtOmTvicgKyBtb2RlX3VybCwgLy9sYXp5MSxcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuXFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICd5aGMnID8gZ2V0SGVhZCgn6JCk54Gr6JmrJykgOiBtb2RlID09ICfmlq3mj5InID8gZ2V0SGVhZCgn5pat5o+SJykgOiAn6JCk54Gr6JmrJyxcXFxcbiAgICAgICAgICAgICAgICB1cmw6IG1vZGUgPT0gJ+aWreaPkicgPyAneWhjJyArIG1vZGVfdXJsIDogJ+aWreaPkicgKyBtb2RlX3VybCxcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgaWYgKGdldFZhcignbGlrZV90eXBlJykgPT09ICflvIDlkK8nKSB7XFxcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfngrnotZ4nLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQobGlrZV91cmwpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZsaWtlPTAmbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnNpZ249NGEwODY0NWMyOTk0ZWI2OTJhYzBjZmIwYmQ3NTY5YzYnO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCwge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IGNvbnRlbnRfdHlwZVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogbF9ib2R5X3R4dCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGxfY29kZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8vJyArIGxfY29kZS5kYXRhLnRvYXN0O1xcXFxuICAgICAgICAgICAgICAgICAgICB9LCApLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+aKleW4gScsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChjb2luX3VybCkubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY19ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZhdnR5cGU9MSZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmZyb209NyZmcm9tX3NwbWlkPXRtLnJlY29tbWVuZC4wLjAmbW9iaV9hcHA9YW5kcm9pZCZtdWx0aXBseT0xJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2VsZWN0X2xpa2U9MSZzcG1pZD1tYWluLnVnYy12aWRlby1kZXRhaWwuMC4wJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnVwaWQ9MCZzaWduPThhYmJkZGQ4N2E2YmQ4MmUxZTQyY2IzY2ZmZDMyYmI5JztcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGNfYm9keV90eHQsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhjX2NvZGUpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+aKleS6hjHkuKrluIEnO1xcXFxuICAgICAgICAgICAgICAgICAgICB9LCApLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxcXG4gICAgICAgICAgICB9KTtcXFxcblxcXFxuXFxcXG4gICAgICAgICAgICBpZiAodi52aWRlb3MgIT0gMSkge1xcXFxuICAgICAgICAgICAgICAgIHZhciBydXJsID0gcHVybCArICc/cD0nICsgcFtpXS5wYWdlO1xcXFxuICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICB2YXIgcnVybCA9IHB1cmxcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIHZhciBkYyA9ICQocnVybCkubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIGV2YWwoXFxcXFxcXCJ2YXIgY29uZmlnID1cXFxcXFxcIiArIGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9EdWFuTmlhbi9NeVBhcnNlLmpzb25cXFxcXFxcIikpO1xcXFxuICAgICAgICAgICAgICAgIGV2YWwocmVxdWVzdChjb25maWcuc2V0dGluZ3MuY2opKTtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gYXl0bVBhcnNlKGlucHV0KTtcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogcGFydCxcXFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJyxcXFxcbiAgICAgICAgICAgICAgICB1cmw6IC8qbW9kZSA9PSAnWDUnID8gJ3g1UnVsZTovLycgKyBqeCArIHJ1cmwgKyAnQCcgKyBsYXp5IDogKCovIG1vZGUgPT0gJ+ebtOmTvicgPyBsYXp5MSA6IG1vZGUgPT0gJ+aWreaPkicgPyBkYyA6IHJ1cmwgKyBsYXp5LFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiB2LnZpZGVvcyAhPSAxID8gJ3RleHRfY2VudGVyXzEnIDogJ2F2YXRhcidcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuXFxcXG5cXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcblxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXFxcbiAgICB9KTtcXFxcbiAgICBpZiAoZ2V0VmFyKCdyZXBseV90eXBlJykgPT09ICflvIDlkK8nKSB7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogJzxzdHJvbmc+JyArICfigJzigJzor4TorrrljLrigJ3igJ0nICsgKGdldFZhcignbGFiZWwnKSA9PSAn6K+E6K66JyA/ICfigJzigJwg4oqZ4oCd4oCdJyA6ICfigJzigJwg4oqV4oCd4oCdJykgKyAnPC9zdHJvbmc+JyxcXFxcbiAgICAgICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2xhYmVsJywgZ2V0VmFyKCdsYWJlbCcpPT0n6K+E6K66Jz8n5YWz6ZetJzon6K+E6K66Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly8nK2dldFZhcignbGFiZWwnLCfor4TorronKVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxcXG4gICAgICAgIH0pO1xcXFxuXFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogJzxzdHJvbmc+JyArICfigJzigJzmjqjojZDljLrigJ3igJ0nICsgKGdldFZhcignbGFiZWwnKSA9PSAn5o6o6I2QJyA/ICfigJzigJwg4oqZ4oCd4oCdJyA6ICfigJzigJwg4oqV4oCd4oCdJykgKyAnPC9zdHJvbmc+JyxcXFxcbiAgICAgICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2xhYmVsJywgZ2V0VmFyKCdsYWJlbCcpPT0n5o6o6I2QJz8n5YWz6ZetJzon5o6o6I2QJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly8nK2dldFZhcignbGFiZWwnLCfmjqjojZAnKVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxcXG4gICAgICAgIH0pO1xcXFxuXFxcXG5cXFxcbiAgICAgICAgaWYgKGdldFZhcihcXFxcXFxcImxhYmVsXFxcXFxcXCIpID09ICfor4TorronKSB7XFxcXG4gICAgICAgICAgICB2YXIgcmVseSA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YyL3JlcGx5L21haW4/b2lkPScgKyB2LmFpZCArICcmdHlwZT0xJywge30pKTtcXFxcbiAgICAgICAgICAgIHZhciBjb3VudHMgPSByZWx5WydkYXRhJ11bJ2N1cnNvciddWydhbGxfY291bnQnXTtcXFxcbiAgICAgICAgICAgIHZhciByZXBsaWVzID0gcmVseS5kYXRhLnJlcGxpZXM7XFxcXG4gICAgICAgICAgICBmb3IgKHZhciB4IGluIHJlcGxpZXMpIHtcXFxcbiAgICAgICAgICAgICAgICB2YXIgcmVwbGllc3ggPSByZXBsaWVzW3hdO1xcXFxuICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gcmVwbGllc1t4XS5jb250ZW50Lm1lc3NhZ2U7XFxcXG4gICAgICAgICAgICAgICAgdmFyIG1lbWJlciA9IHJlcGxpZXNbeF0ubWVtYmVyO1xcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBtZW1iZXIudW5hbWUsXFxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogbWVtYmVyLmF2YXRhcixcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICc8c21hbGw+PHN0cm9uZz4nICsgbWVzc2FnZSArICc8L3N0cm9uZz48L3NtYWxsPicsXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgIHZhciByZXBseSA9IHJlcGxpZXNbeF0ucmVwbGllcztcXFxcbiAgICAgICAgICAgICAgICBmb3IgKHZhciB6IGluIHJlcGx5KSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBtZXNzID0gcmVwbHlbel0uY29udGVudC5tZXNzYWdlO1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgbWVtID0gcmVwbHlbel0ubWVtYmVyLnVuYW1lO1xcXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICc8c21hbGw+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7JyArIG1lbSArICc6JyArIG1lc3MgKyAnPC9zbWFsbD4nLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfVxcXFxuXFxcXG4gICAgICAgIGlmIChnZXRWYXIoXFxcXFxcXCJsYWJlbFxcXFxcXFwiKSA9PSAn5o6o6I2QJykge1xcXFxuICAgICAgICAgICAgZm9yICh2YXIgciBpbiByZWxhdGVkKSB7XFxcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHJlbGF0ZWRbcl0udGl0bGUsXFxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogcmVsYXRlZFtyXS5waWMsXFxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IHJlbGF0ZWRbcl0uZGVzYyxcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyByZWxhdGVkW3JdLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMidcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbn0gY2F0Y2ggKGUpIHtcXFxcbiB0aHJvdyBlXFxcXG59XFxcXG5cXFxcbnJlcy5kYXRhID0gZDtcXFxcbnNldFJlc3VsdChyZXMpO1xcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIumhtemdoi3lhbPms6gxXFxcIixcXFwicGF0aFxcXCI6XFxcImd6MVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciByZXMgPSB7fTt2YXIgZCA9IFtdO1xcXFxudmFyIGlkID0gTVlfVVJMLnNwbGl0KCdtaWQ9JylbMV07XFxcXG52YXIgc3VybCA9IE1ZX1VSTDtcXFxcbnZhciBjb2RlID0gZmV0Y2goc3VybCx7fSk7XFxcXG52YXIgeW0gPSBKU09OLnBhcnNlKCd7XFxcXFxcXCJteScrY29kZS5zcGxpdCgne1xcXFxcXFwibXknKVsxXS5zcGxpdCgnfX07JylbMF0rJ319Jyk7XFxcXG5cXFxcbnZhciBlcCA9IHltWydsaXN0J11bJ2dldEZvbGxvd0xpc3QtcGFnZS1taWQtJytpZF1bJ3Jlc3VsdCddO1xcXFxuZm9yICggeCBpbiBlcCl7XFxcXG4gIHZhciB5dXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2jvvJ/vvJ9taWQ9JytlcFt4XS5taWQrJ++8hu+8hnBzPTMw77yG77yGdGlkPTDvvIbvvIZrZXl3b3JkPe+8hu+8hmpzb25wPWpzb25w77yG77yGcG49ZnlwYWdl77yG77yGb3JkZXI9cHViZGF0ZSc7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICB0aXRsZTplcFt4XS51bmFtZSxcXFxcbiAgICAgICBpbWc6ZXBbeF0uZmFjZSxcXFxcbiAgICAgICB1cmw6J2hpa2VyOi8vcGFnZS9nejI/dXJsPScreXVybCxcXFxcbiAgICAgICBjb2xfdHlwZTonaWNvbl9yb3VuZF80J1xcXFxuICAgICAgIH0pO1xcXFxufVxcXFxucmVzLmRhdGEgPSBkO1xcXFxuc2V0UmVzdWx0KHJlcyk7XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi6aG16Z2iLeWFs+azqDJcXFwiLFxcXCJwYXRoXFxcIjpcXFwiZ3oyXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudmFyIHJlcyA9IHt9O3ZhciBkID0gW107XFxcXG5jb25zdCBoZWFkQ29sb3I9XFxcXFxcXCIjMzU4Y2NkXFxcXFxcXCI7XFxcXG52YXIganNvbiA9IHt9O1xcXFxuZXZhbCgnanNvbj0nICsgZmV0Y2goTVlfVVJMLHt9KSk7XFxcXG5mb3IgKHZhciBpID0gMDsgaSA8IGpzb24uZGF0YS5saXN0LnZsaXN0Lmxlbmd0aDsgaSsrKVxcXFxue1xcXFxuIHZhciByID0ge307XFxcXG4gdmFyIGogPSBqc29uLmRhdGEubGlzdC52bGlzdFtpXTtcXFxcbiB2YXIgdCA9IE51bWJlcihqLmNyZWF0ZWQpKjEwMDA7XFxcXG4gXFxcXG4gLy/ml7bpl7TmiLPovazmjaLmlrnms5VcXFxcbiAvKlxcXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcXFxuICAgICB2YXIgc3NzID0gbmV3IERhdGUocGFyc2VJbnQoblMpKS50b0xvY2FsZVN0cmluZygpLnN1YnN0cigwLDE3KTtcXFxcbiAgICAgdmFyIFlNRCA9IHNzcy5zcGxpdCgn5pelJylbMF0ucmVwbGFjZSgn5bm0JywnLScpLnJlcGxhY2UoJ+aciCcsJy0nKTtcXFxcbiAgICAgcmV0dXJuIChZTUQpXFxcXG59XFxcXG4qL1xcXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcXFxudmFyIGRhdGUgPSBuZXcgRGF0ZShuUyk7XFxcXG52YXIgWVkgPSBkYXRlLmdldEZ1bGxZZWFyKCkrJy0nOyBcXFxcbnZhciBNTSA9IChkYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgOiBkYXRlLmdldE1vbnRoKCkgKyAxKSsnLSc7IFxcXFxudmFyIEREID0gKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXREYXRlKCkpIDogZGF0ZS5nZXREYXRlKCkpOyBcXFxcbnZhciB0aW1lID0gWVkgKyBNTSArIEREO1xcXFxucmV0dXJuIHRpbWVcXFxcbn1cXFxcbi8v5pe26Ze05oiz6L2s5o2iXFxcXG52YXIgdGltZSA9IGdldExvY2FsVGltZSh0KTtcXFxcblxcXFxuaWYgKGoucGxheT4xMDAwMClcXFxcbiAgICB2YXIgcGxheSA9IChqLnBsYXkvMTAwMDApLnRvRml4ZWQoMSkrJ+S4hyc7XFxcXG5lbHNlXFxcXG4gICAgdmFyIHBsYXkgPSBqLnBsYXk7XFxcXG5cXFxcbnZhciBwaWNzID0gKGoucGljLmluZGV4T2YoJzonKSE9LTEpP2oucGljOidodHRwczonICsgai5waWM7XFxcXG5cXFxcbiBpZiAoai5sZW5ndGghPVxcXFxcXFwiMDA6MDBcXFxcXFxcIil7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgcGljX3VybCA6IHBpY3MsXFxcXG4gICAgIHVybCA6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIGouYnZpZCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxcXG4gICAgIHRpdGxlIDogai50aXRsZSxcXFxcbiAgICAgY29sX3R5cGUgOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxcXG4gICAgIGRlc2MgOiAn5pe26ZW/77yaJyArIGoubGVuZ3RoICsgJyAg5pKt5pS+6YeP77yaJyArIHBsYXkgKyAnICDml6XmnJ/vvJonICsgdGltZVxcXFxuICAgIFxcXFxuICAgIH0pO1xcXFxufVxcXFxufVxcXFxucmVzLmRhdGEgPSBkO1xcXFxuc2V0UmVzdWx0KHJlcylcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLku6PnoIHlnZct5pCc57Si5LiA57qnXFxcIixcXFwicGF0aFxcXCI6XFxcInNcXFwiLFxcXCJydWxlXFxcIjpcXFwidHJ5IHtcXFxcbiAgICB2YXIgcmVzID0ge307XFxcXG4gICAgdmFyIGQgPSBbXTtcXFxcbiAgICB2YXIgY29kZSA9IGdldFJlc0NvZGUoKTtcXFxcbiAgICB2YXIgeHMgPSBKU09OLnBhcnNlKGNvZGUuc3BsaXQoJ3ZpZGVvXFxcXFxcXCIsXFxcXFxcXCJkYXRhXFxcXFxcXCI6JylbMV0uc3BsaXQoJ31dJylbMF0gKyAnfV0nKTtcXFxcbiAgICAvL2lmKE1ZX1VSTC5zcGxpdCgncGFnZT0nKVsxXT09JzEmcGFnZXNpemU9MjAnKXtcXFxcbiAgICB2YXIgcGFnZSA9IE1ZX1VSTC5zcGxpdCgncGFnZT0nKVsxXS5zcGxpdCgnJnBhZ2VzaXplPScpWzBdO1xcXFxuICAgIHRyeSB7XFxcXG4gICAgICAgIHZhciB3ID1cXFxcbiAgICAgICAgICAgIEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvc2VhcmNoL3R5cGU/a2V5d29yZD0nICsgTVlfVVJMLnNwbGl0KCdrZXl3b3JkPScpWzFdLnNwbGl0KCcmJylbMF0gKyAnJnBhZ2U9JyArIHBhZ2UgKyAnJnNlYXJjaF90eXBlPWJpbGlfdXNlciZvcmRlcj10b3RhbHJhbmsmcGFnZXNpemU9MjAnLCB7fSkpLmRhdGEucmVzdWx0O1xcXFxuICAgICAgICBmb3IgKGlpID0gMDsgaWkgPCB3Lmxlbmd0aCAmJiBpaSA8IDI7IGlpKyspIHtcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICd1cO+8micgKyB3W2lpXS51bmFtZSxcXFxcbiAgICAgICAgICAgICAgICBpbWc6ICdodHRwczonICsgd1tpaV0udXBpYyxcXFxcbiAgICAgICAgICAgICAgICBkZXNjOiAn5YWz5rOo77yaJyArIHdbaWldLmZhbnMsXFxcXG4gICAgICAgICAgICAgICAgY29udGVudDogJ+inhumikeaVsO+8micgKyB3W2lpXS52aWRlb3MsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3NzP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNo77yf77yfbWlkPScgKyB3W2lpXS5taWQgKyAn77yG77yGcHM9MzDvvIbvvIZ0aWQ9MO+8hu+8hmtleXdvcmQ977yG77yGanNvbnA9anNvbnDvvIbvvIZwbj1meXBhZ2XvvIbvvIZvcmRlcj1wdWJkYXRlIycgKyB3W2lpXS51bmFtZSArICcjJyxcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICB9XFxcXG4gICAgfSBjYXRjaCAoZSkge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6ICfigJjigJjmib7kuI3liLDkvaDmg7PopoHnmoTllYrvvIzopoHkuI3mjaLkuKrlhbPplK7or43vvJ/igJnigJknLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG4gICAgdmFyIGZhbiA9IEpTT04ucGFyc2UoY29kZS5zcGxpdCgnbWVkaWFfYmFuZ3VtaVxcXFxcXFwiLFxcXFxcXFwiZGF0YVxcXFxcXFwiOicpWzFdLnNwbGl0KCd9LHtcXFxcXFxcInJlc3VsdF90eXBlJylbMF0pO1xcXFxuICAgIGZvciAoeCBpbiBmYW4pIHtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBmYW5beF0udGl0bGUucmVwbGFjZSgvPGVtIGNsYXNzPVxcXFxcXFwia2V5d29yZFxcXFxcXFwiPnw8XFxcXFxcXFwvZW0+L2csICcnKSxcXFxcbiAgICAgICAgICAgIGltZzogZmFuW3hdLmNvdmVyLFxcXFxuICAgICAgICAgICAgZGVzYzogZmFuW3hdLmRlc2MsXFxcXG4gICAgICAgICAgICBjb250ZW50OiBmYW5beF0uY3YucmVwbGFjZSgvPGVtIGNsYXNzPVxcXFxcXFwia2V5d29yZFxcXFxcXFwiPnw8XFxcXFxcXFwvZW0+L2csICcnKSxcXFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyBmYW5beF0uZ290b191cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH1cXFxcbiAgICB2YXIgZmFuMiA9IEpTT04ucGFyc2UoY29kZS5zcGxpdCgnbWVkaWFfZnRcXFxcXFxcIixcXFxcXFxcImRhdGFcXFxcXFxcIjonKVsxXS5zcGxpdCgnfSx7XFxcXFxcXCJyZXN1bHRfdHlwZScpWzBdKTtcXFxcbiAgICBmb3IgKHggaW4gZmFuMikge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IGZhbjJbeF0udGl0bGUucmVwbGFjZSgvPGVtIGNsYXNzPVxcXFxcXFwia2V5d29yZFxcXFxcXFwiPnw8XFxcXFxcXFwvZW0+L2csICcnKSxcXFxcbiAgICAgICAgICAgIGltZzogZmFuMlt4XS5jb3ZlcixcXFxcbiAgICAgICAgICAgIGRlc2M6IGZhbjJbeF0uZGVzYyxcXFxcbiAgICAgICAgICAgIGNvbnRlbnQ6IGZhbjJbeF0uY3YucmVwbGFjZSgvPGVtIGNsYXNzPVxcXFxcXFwia2V5d29yZFxcXFxcXFwiPnw8XFxcXFxcXFwvZW0+L2csICcnKSxcXFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyBmYW4yW3hdLmdvdG9fdXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG4gICAgLy99XFxcXG5cXFxcbiAgICBmb3IgKHggaW4geHMpIHtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiB4c1t4XS50aXRsZS5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcXFxcXCJrZXl3b3JkXFxcXFxcXCI+fDxcXFxcXFxcXC9lbT4vZywgJycpLFxcXFxuICAgICAgICAgICAgaW1nOiAnaHR0cDonICsgeHNbeF0ucGljLFxcXFxuICAgICAgICAgICAgZGVzYzogeHNbeF0uZGVzY3JpcHRpb24sXFxcXG4gICAgICAgICAgICBjb250ZW50OiB4c1t4XS5hdXRob3IsXFxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIHhzW3hdLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH1cXFxcblxcXFxuICAgIHJlcy5kYXRhID0gZDtcXFxcbiAgICBzZXRSZXN1bHQocmVzKTtcXFxcbn0gY2F0Y2ggKGUpIHtcXFxcbiAgICB2YXIgcmVzID0ge307XFxcXG4gICAgdmFyIGQgPSBbXTtcXFxcbiAgICB2YXIga2V5d29yZCA9IE1ZX1VSTC5zcGxpdCgna2V5d29yZD0nKVsxXS5zcGxpdCgnJnBhZ2U9JylbMF07XFxcXG4gICAgdmFyIHVybCA9ICdodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi9zZWFyY2gvdHlwZT9hcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MjcwMjAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9eGlhb21pJmhpZ2hsaWdodD0xJmtleXdvcmQ9JyArIGtleXdvcmQgKyAnJm1vYmlfYXBwPWFuZHJvaWQmb3JkZXI9dG90YWxyYW5rJnBsYXRmb3JtPWFuZHJvaWQmcG49MSZwcz0yMCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjI3LjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9MTYyMzA3NjE0MCZ0eXBlPTImdXNlcl90eXBlPTAmc2lnbj01MDY2MjE2ZmViYjI4YTYxOTgxMmU4OGU1ZmYxYTAzNCc7XFxcXG4gICAgdmFyIGNvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLCB7fSkpO1xcXFxuICAgIHZhciBsaXN0ID0gY29kZS5kYXRhLml0ZW1zO1xcXFxuICAgIGZvciAobGV0IHggb2YgbGlzdCkge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IHgudGl0bGUsXFxcXG4gICAgICAgICAgICBpbWc6IHguY292ZXIsXFxcXG4gICAgICAgICAgICBkZXNjOiB4LnNpZ24sXFxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2Uvc3M/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2g/bWlkPScgKyB4LnBhcmFtICsgJ++8hu+8hnBzPTMw77yG77yGdGlkPTDvvIbvvIZrZXl3b3JkPe+8hu+8hmpzb25wPWpzb25w77yG77yGcG49ZnlwYWdl77yG77yGb3JkZXI9cHViZGF0ZSMnICsgeC50aXRsZSArICcjJyArIGdldFZhcigndWEnKSxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYydcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfVxcXFxuICAgIHNldFJlc3VsdChkKTtcXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi6aG16Z2iLeaQnOe0ouS6jOe6p1xcXCIsXFxcInBhdGhcXFwiOlxcXCJzc1xcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciBqc29uID0ge307XFxcXG5ldmFsKCdqc29uPScgKyBnZXRSZXNDb2RlKCkpO1xcXFxudmFyIHJlcyA9IHt9O1xcXFxudmFyIGQgPSBbXTtcXFxcbmlmIChNWV9VUkwuaW5kZXhPZigncG49MSYnKSE9LTEpe1xcXFxuZC5wdXNoKHtcXFxcbnRpdGxlOifigJzigJzlhbPms6jigJ3igJ0nLFxcXFxudXJsOidoaWtlcjovL2VtcHR5IycrTVlfVVJMLnNwbGl0KCcjJylbMV0rJyYmJytNWV9VUkwuc3BsaXQoJ21pZD0nKVsxXS5zcGxpdCgnJicpWzBdK2BAbGF6eVJ1bGU9LmpzOmlucHV0PWlucHV0LnNwbGl0KCcjJylbMV07dmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nK2lucHV0LnNwbGl0KFxcXFxcXFwiJiZcXFxcXFxcIilbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7aWYoIWdldFZhcignbGIyJykuaW5jbHVkZXMoaW5wdXQuc3BsaXQoJyYmJylbMV0uc3BsaXQoJyYmJylbMF0pKXt2YXIgeHI9Z2V0VmFyKCdsYjInKSsnXFxcXFxcXFxcXFxcXFxcXG4nK2lucHV0KycjIycrcGljO3dyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFxcXFxcIix4cik7J3RvYXN0Oi8v5YWz5rOo5oiQ5YqfJ31lbHNleyd0b2FzdDovL+W5tOi9u+S6uu+8jOiAl+WtkOWwvuaxgSd9YCxcXFxcbmNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXFxcbn0pO1xcXFxufVxcXFxuXFxcXG5mb3IgKHZhciBpID0gMDsgaSA8IGpzb24uZGF0YS5saXN0LnZsaXN0Lmxlbmd0aDsgaSsrKVxcXFxue1xcXFxuIHZhciByID0ge307XFxcXG4gdmFyIGogPSBqc29uLmRhdGEubGlzdC52bGlzdFtpXTtcXFxcbiB2YXIgdCA9IE51bWJlcihqLmNyZWF0ZWQpKjEwMDA7XFxcXG4gXFxcXG4gLy/ml7bpl7TmiLPovazmjaLmlrnms5VcXFxcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykgeyBcXFxcbiAgICAgdmFyIHNzcyA9IG5ldyBEYXRlKHBhcnNlSW50KG5TKSkudG9Mb2NhbGVTdHJpbmcoKS5zdWJzdHIoMCwxNyk7XFxcXG4gICAgIHZhciBZTUQgPSBzc3Muc3BsaXQoJ+aXpScpWzBdLnJlcGxhY2UoJ+W5tCcsJy0nKS5yZXBsYWNlKCfmnIgnLCctJyk7XFxcXG4gICAgIHJldHVybiAoWU1EKVxcXFxufVxcXFxuXFxcXG4vL+aXtumXtOaIs+i9rOaNolxcXFxudmFyIHRpbWUgPSBnZXRMb2NhbFRpbWUodCk7XFxcXG5cXFxcbmlmIChqLnBsYXk+MTAwMDApXFxcXG4gICAgdmFyIHBsYXkgPSAoai5wbGF5LzEwMDAwKS50b0ZpeGVkKDEpKyfkuIcnO1xcXFxuZWxzZVxcXFxuICAgIHZhciBwbGF5ID0gai5wbGF5O1xcXFxuXFxcXG52YXIgcGljcyA9IChqLnBpYy5pbmRleE9mKCc6JykhPS0xKT9qLnBpYzonaHR0cHM6JyArIGoucGljO1xcXFxuXFxcXG4gci5waWNfdXJsID0gcGljcztcXFxcbiByLnVybCA9ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JytqLmJ2aWQrJyNpbW1lcnNpdmVUaGVtZSMnLFxcXFxuICAgICAgIFxcXFxuXFxcXG4gci50aXRsZSA9IGoudGl0bGU7XFxcXG4gci5kZXNjID0gJ+aXtumVv++8micgKyBqLmxlbmd0aCArICcgIOaSreaUvumHj++8micgKyBwbGF5ICsgJyAg5pel5pyf77yaJyArIHRpbWU7XFxcXG4gaWYgKGoubGVuZ3RoIT1cXFxcXFxcIjAwOjAwXFxcXFxcXCIpe2QucHVzaChyKX07XFxcXG59XFxcXG5yZXMuZGF0YSA9IGQ7XFxcXG5zZXRSZXN1bHQocmVzKVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuS7o+eggS3pooTlpITnkIZcXFwiLFxcXCJwYXRoXFxcIjpcXFwieWNsXFxcIixcXFwicnVsZVxcXCI6XFxcInB1dFZhcjIoJ3VhJywnO2dldDt1dGYtODt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoTGludXjvvJvvvJsgQW5kcm9pZCA3LjDvvJvvvJsgd3YgbGl0ZSBiYWlkdWJveGFwcCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzc4LjAuMzkwNC45NiBNb2JpbGUgU2FmYXJpLzUzNy4zNiBUNy8xMC4zIFNlYXJjaENyYWZ0LzIuNi4yIChCYWlkde+8m++8myBQMSA3LjApfScpO1xcXFxuXFxcXG5wdXRWYXIoJ2tleScsZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JykpO1xcXFxuXFxcXG5wdXRWYXIoJ1g1JyxcXFxcXFxcIkBsYXp5UnVsZT0uanM6dmFyIGp4ID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS91cF9qeGNhY2hlLnR4dCcse30pO3JlZnJlc2hYNVdlYlZpZXcoangraW5wdXQpOyd0b2FzdDovL+aSreaUvuS4rSdcXFxcXFxcIik7XFxcXG5cXFxcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JykpIHtcXFxcbiAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO1xcXFxuICAgfVxcXFxuXFxcXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcpKSB7XFxcXG4gICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0Jywn6KeG6aKRJyk7XFxcXG4gICB9XFxcXG5cXFxcbmlmIChmZXRjaChcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFxcXFxcIiwge30pPT0nJyl7XFxcXG4gICAgaWYgKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwLnR4dFxcXFxcXFwiLCB7fSkhPScnKXtcXFxcbiAgICB3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcXFxcXCIsZmV0Y2goXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXAudHh0XFxcXFxcXCIsIHt9KSk7XFxcXG4gICAgfVxcXFxuICAgIGVsc2V7XFxcXG4gICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPTEwMzI1Njg4MCZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7XFxcXG4gICAgICB3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcXFxcXCIsIFxcXFxcXFwi5YyX5Z+OJiYxMDMyNTY4ODAjI1xcXFxcXFwiK3BpYyk7XFxcXG4gICAgICB9XFxcXG59XFxcXG5cXFxcbmlmICghZmV0Y2goXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfY2FjaGUudHh0XFxcXFxcXCIsIHt9KSkge1xcXFxuICB3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfY2FjaGUudHh0XFxcXFxcXCIsIFxcXFxcXFwiMTAzMjU2ODgwXFxcXFxcXCIpO1xcXFxufVxcXFxuXFxcXG5wdXRWYXIyKCdsYjInLGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXFxcXFwiLHt9KSk7XFxcXG5cXFxcbi8qXFxcXG5wdXRWYXIoXFxcXFxcXCLop6PmnpDlj6NcXFxcXFxcIixgaGlrZXI6Ly9lbXB0eSNub0hpc3RvcnkjQHJ1bGU9anM6dmFyIGQgPSBbXTtkLnB1c2goe2Rlc2M6ICcyMDAnLHVybDogJ2ZpbGU6Ly8vc3RvcmFnZS9lbXVsYXRlZC8wL0FuZHJvaWQvZGF0YS9jb20uZXhhbXBsZS5oaWtlcnZpZXcvZmlsZXMvRG9jdW1lbnRzL2JpbGkvdXBqeC5odG1sJyxjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJ30pO3ZhciB0aXRsZXMgPSBmZXRjaChcXFxcXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4LnR4dFxcXFxcXFwiLCB7fSkuc3BsaXQoL1xcXFxcXFxcXFxcXFxcXFxuLyk7Zm9yKHZhciBpID0gMDsgaSA8IHRpdGxlcy5sZW5ndGg7IGkrKyl7dmFyIHQgPSB0aXRsZXNbaV0uc3BsaXQoXFxcXFxcXCImJlxcXFxcXFwiKTtkLnB1c2goe3RpdGxlOmZldGNoKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2p4Y2FjaGUudHh0XFxcXFxcXCIse30pID09IHRbMV0gPyB0WzBdICsgXFxcXFxcXCLigJjigJjvvIjlvZPliY3vvInigJnigJlcXFxcXFxcIiA6IHRbMF0sZGVzYzp0WzFdLHVybDp0WzFdICsgJ0BsYXp5UnVsZT0uanM6cHV0VmFyMihcXFxcXFxcInVpZFxcXFxcXFwiLGlucHV0KTt3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfanhjYWNoZS50eHRcXFxcXFxcIixpbnB1dCk7YmFjaygpO1xcXFxcXFwidG9hc3Q6Ly/kv67mlLnmiJDlip9cXFxcXFxcIicsY29sX3R5cGU6ICd0ZXh0XzEnfSk7fXNldFJlc3VsdChkKTtgKTtcXFxcblxcXFxuaWYgKCFmZXRjaChcXFxcXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4LnR4dFxcXFxcXFwiLCB7fSkpIHtcXFxcbiAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwangudHh0XFxcXFxcXCIsIFxcXFxcXFwi5YWo572RVklQJiZodHRwczovL2p4eC5zbXlzOC5jbi9pbmRleC5waHA/dXJsPVxcXFxcXFxcbuWKoOmAnyYmaHR0cHM6Ly93d3cuY3Vhbi5sYS9tM3U4LnBocD91cmw9XFxcXFxcXCIpO1xcXFxufVxcXFxuXFxcXG5cXFxcbmxldCBsb2NhbEh0bWwyID0gZmV0Y2goXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC5odG1sXFxcXFxcXCIsIHt9KTtcXFxcbmxldCBnaXRIdG1sMiA9IGZldGNoKFxcXFxcXFwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL1pydWlyeS9oaWtlcnZpZXcvaHRtbC9qaWV4aS5odG1sXFxcXFxcXCIsIHt9KS5yZXBsYWNlKC9qaWV4aVxcXFxcXFxcL2ppZXhpL2csXFxcXFxcXCJiaWxpL3VwanhcXFxcXFxcIik7XFxcXG5pZiAoIWxvY2FsSHRtbDIpIHtcXFxcbiAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwanguaHRtbFxcXFxcXFwiLCBnaXRIdG1sMik7XFxcXG4gIHZhciB0aXRsZXMgPSBmZXRjaChcXFxcXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4LnR4dFxcXFxcXFwiLCB7fSk7XFxcXG4gIHZhciB0ID0gdGl0bGVzLnNwbGl0KFxcXFxcXFwiJiZcXFxcXFxcIilbMV07XFxcXG4gIHdyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9qeGNhY2hlLnR4dFxcXFxcXFwiLHQpO1xcXFxufVxcXFxuKi9cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLku6PnoIEt5o6o6I2QXFxcIixcXFwicGF0aFxcXCI6XFxcImZlZWRcXFwiLFxcXCJydWxlXFxcIjpcXFwidmFyIHVybCA9ICdodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC9pbnRsL2ZlZWQvaW5kZXg/YWNjZXNzX2tleT0nICsgZ2V0VmFyKFxcXFxcXFwiYWNjZXNzX2tleVxcXFxcXFwiKSArICcmYXV0b3BsYXlfY2FyZD0yJmJ1aWxkPTYyMjUzMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImY29sdW1uPTImZGV2aWNlX25hbWU9JmRldmljZV90eXBlPTAmZmx1c2g9OCZmbnZhbD00NjQmZm52ZXI9MCZmb3JjZV9ob3N0PTAmZm91cms9MSZndWlkYW5jZT0wJmh0dHBzX3VybF9yZXE9MCZtb2JpX2FwcD1hbmRyb2lkJm5ldHdvcms9d2lmaSZwbGF0Zm9ybT1hbmRyb2lkJnBsYXllcl9uZXQ9MSZwdWxsPWZhbHNlJnFuPTgwJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMjIuNSUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCc7XFxcXG52YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIHt9KSkuZGF0YS5pdGVtcztcXFxcbmZvciAobGV0IHggb2YgbGlzdCkge1xcXFxuICAgIHZhciB1cmwgPSB4LmdvdG8gPT0gXFxcXFxcXCJiYW5ndW1pXFxcXFxcXCIgPyBcXFxcXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPVxcXFxcXFwiICsgeC51cmkuc3BsaXQoXFxcXFxcXCI/XFxcXFxcXCIpWzBdICsgJyNpbW1lcnNpdmVUaGVtZSMnIDogXFxcXFxcXCJoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPVxcXFxcXFwiICsgeC5wYXJhbSArIFxcXFxcXFwi77yG77yGYnZpZD1cXFxcXFxcIiArICcjaW1tZXJzaXZlVGhlbWUjJztcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogeC5nb3RvID09IFxcXFxcXFwiYmFuZ3VtaVxcXFxcXFwiID8gXFxcXFxcXCLwn5KwXFxcXFxcXCIgKyB4LnRpdGxlIDogeC50aXRsZSxcXFxcbiAgICAgICAgZGVzYzogeC5jb3Zlcl9sZWZ0XzFfY29udGVudF9kZXNjcmlwdGlvbiArIFxcXFxcXFwiIFxcXFxcXFwiICsgeC5jb3Zlcl9sZWZ0XzJfY29udGVudF9kZXNjcmlwdGlvbiArIFxcXFxcXFwiICBcXFxcXFxcIiArIHguY292ZXJfcmlnaHRfdGV4dCxcXFxcbiAgICAgICAgcGljOiB4LmNvdmVyICsgXFxcXFxcXCJAUmVmZXJlcj1odHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcXFxcXCIsXFxcXG4gICAgICAgIHVybDogdXJsLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInXFxcXG4gICAgfSk7XFxcXG59XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5Luj56CBLeaWsOeVqlxcXCIsXFxcInBhdGhcXFwiOlxcXCJuZXdiZ21cXFwiLFxcXCJydWxlXFxcIjpcXFwiaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpIHtcXFxcblxcXFxuICAgIGxldCB1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9hcHAvdGltZWxpbmU/YWNjZXNzX2tleT0mYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZmaWx0ZXJfdHlwZT0wJm1vYmlfYXBwPWFuZHJvaWQmbmlnaHRfbW9kZT0wJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPTE2MzU5NTI4NDAmc2lnbj02ZTRkZjQ1NDJkMzhlZWUyZmFiZjIxMjg4NWI5MGM2NCc7XFxcXG4gICAgdHJ5IHtcXFxcbiAgICAgICAgdmFyIHNvdXJjZV9jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCwge30pKTtcXFxcbiAgICAgICAgdmFyIGRhdGVsaW5lID0gW3tcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiY29kZVxcXFxcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs0XSxcXFxcbiAgICAgICAgICAgIFxcXFxcXFwibmFtZVxcXFxcXFwiOiBcXFxcXFxcIuWJjeaXpVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJpZFxcXFxcXFwiOiBcXFxcXFxcIjBcXFxcXFxcIlxcXFxuICAgICAgICB9LHtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiY29kZVxcXFxcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs1XSxcXFxcbiAgICAgICAgICAgIFxcXFxcXFwibmFtZVxcXFxcXFwiOiBcXFxcXFxcIuaYqOaXpVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJpZFxcXFxcXFwiOiBcXFxcXFxcIjFcXFxcXFxcIlxcXFxuICAgICAgICB9LCB7XFxcXG4gICAgICAgICAgICBcXFxcXFxcImNvZGVcXFxcXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbNl0sXFxcXG4gICAgICAgICAgICBcXFxcXFxcIm5hbWVcXFxcXFxcIjogXFxcXFxcXCLku4rml6VcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiaWRcXFxcXFxcIjogXFxcXFxcXCIyXFxcXFxcXCJcXFxcbiAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgXFxcXFxcXCJjb2RlXFxcXFxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzddLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJuYW1lXFxcXFxcXCI6IFxcXFxcXFwi5piO5pelXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBcXFxcXFxcImlkXFxcXFxcXCI6IFxcXFxcXFwiM1xcXFxcXFwiXFxcXG4gICAgICAgIH0se1xcXFxuICAgICAgICAgICAgXFxcXFxcXCJjb2RlXFxcXFxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzhdLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJuYW1lXFxcXFxcXCI6IFxcXFxcXFwi5ZCO5pelXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBcXFxcXFxcImlkXFxcXFxcXCI6IFxcXFxcXFwiNFxcXFxcXFwiXFxcXG4gICAgICAgIH1dO1xcXFxuICAgICAgICBpZiAoIWdldFZhcignaWQnKSkge1xcXFxuICAgICAgICAgICAgcHV0VmFyKCdpZCcsICcyJyk7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgbGV0IGlkID0gZ2V0VmFyKCdpZCcpO1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICcwJyA/IGdldEhlYWQoJ+WJjeaXpScpIDogJ+WJjeaXpScsXFxcXG4gICAgICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICcwJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcXFxuICAgICAgICB9KTtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnMScgPyBnZXRIZWFkKCfmmKjml6UnKSA6ICfmmKjml6UnLFxcXFxuICAgICAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnMScpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzInID8gZ2V0SGVhZCgn5LuK5pelJykgOiAn5LuK5pelJyxcXFxcbiAgICAgICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzInKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXFxcXFwiLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICczJyA/IGdldEhlYWQoJ+aYjuaXpScpIDogJ+aYjuaXpScsXFxcXG4gICAgICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICczJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcXFxuICAgICAgICB9KTtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnNCcgPyBnZXRIZWFkKCflkI7ml6UnKSA6ICflkI7ml6UnLFxcXFxuICAgICAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnNCcpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGxldCBsaXN0ID0gZGF0ZWxpbmVbaWRdLmNvZGUuZXBpc29kZXM7XFxcXG4gICAgICAgIGZvciAobGV0IHggb2YgbGlzdCkge1xcXFxuICAgICAgICAgICAgbGV0IHR5cGUgPSAoeC5wdWJsaXNoZWQgPT0gJzEnID8gJ+W3suWPkeW4gycgOiAn5pyq5Y+R5biDJyk7XFxcXG4gICAgICAgICAgICBsb2codHlwZSlcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHgudGl0bGUsXFxcXG4gICAgICAgICAgICAgICAgZGVzYzogJ+KAmOKAmCcgKyB0eXBlICsgJ+KAmeKAmVxcXFxcXFxcbicgKyB4LnB1Yl9pbmRleCArICdcXFxcXFxcXG7mm7TmlrDml7bpl7TvvJonICsgZ2V0SGVhZCh4LnB1Yl90aW1lKSxcXFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nICsgeC51cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxcXG4gICAgICAgICAgICAgICAgaW1nOiB4LmNvdmVyK1JlZmVyZXIsXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6J21vdmllXzFfdmVydGljYWxfcGljJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9IGNhdGNoIChlKSB7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogZ2V0SGVhZCgn6ZO+5o6l54K45LqG77yM562J5L+u5aSNJyksXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH1cXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLku6PnoIEt55Wq5Ymn57Si5byVXFxcIixcXFwicGF0aFxcXCI6XFxcInN5XFxcIixcXFwicnVsZVxcXCI6XFxcImNvbnN0IHsgQ2F0ZWdvcmllc0hlYWRlciB9ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2NhdGVnb3JpZXMtaGVhZGVyXFxcXFxcXCIpXFxcXG5cXFxcbi8qKlxcXFxuICog6I635Y+W5YiG57G75pWw5o2u5rqQ77yM5Y+v5Yqo5oCB5Y+v6Z2Z5oCB77yM6Ieq5bex5qC55o2u5a6e6ZmF5oOF5Ya15aSE55CGXFxcXG4gKiBodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYW5pbWUvaW5kZXgvXFxcXG4gKi9cXFxcbmxldCBtQ2F0ZWdvcmllcyA9IHt9XFxcXG5sZXQgY2F0SW5WYXIgPSBnZXRWYXIoTVlfUlVMRS51cmwgKyBcXFxcXFxcIiNjYXRlZ29yaWVzXFxcXFxcXCIsICcnKVxcXFxuaWYgKGdldFZhcihNWV9SVUxFLnVybCArIFxcXFxcXFwiI2NhdGVnb3JpZXNcXFxcXFxcIiwgJycpKSB7XFxcXG4gICAgbUNhdGVnb3JpZXMgPSBKU09OLnBhcnNlKGNhdEluVmFyKVxcXFxufSBlbHNlIHtcXFxcbiAgICBsZXQgY2F0VXJsID0gJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9hbmltZS9pbmRleC8nXFxcXG4gICAgbGV0IGNhdFNyYyA9IHJlcXVlc3QoY2F0VXJsKVxcXFxuICAgIC8vIGxvZyhjYXRTcmMpXFxcXG4gICAgbGV0IGNhdFJlZ2V4ID0gL3dpbmRvd1xcXFxcXFxcLl9fSU5JVElBTF9TVEFURV9fPSguKj8pO1xcXFxcXFxcKGZ1bmN0aW9uXFxcXFxcXFwoXFxcXFxcXFwpXFxcXFxcXFx7L1xcXFxuICAgIGlmIChjYXRSZWdleC50ZXN0KGNhdFNyYykpIHtcXFxcbiAgICAgICAgLy8gbG9nKFJlZ0V4cC4kMSlcXFxcbiAgICAgICAgbGV0IGNhdGVnb3J5ID0gSlNPTi5wYXJzZShSZWdFeHAuJDEpXFxcXG4gICAgICAgIGxldCBtRmlsdGVycyA9IGNhdGVnb3J5LmZpbHRlcnM7XFxcXG4gICAgICAgIC8vIGxvZyhtRmlsdGVycylcXFxcbiAgICAgICAgbUZpbHRlcnMubWFwKGZpbHRlciA9PiBtQ2F0ZWdvcmllc1tmaWx0ZXIua2V5XSA9IGZpbHRlci5saXN0KVxcXFxuICAgICAgICBsZXQgb3JkZXJzID0gY2F0ZWdvcnkub3JkZXJzXFxcXG4gICAgICAgIGxldCBtT3JkZXJzID0gW11cXFxcbiAgICAgICAgb3JkZXJzLm1hcChvcmRlciA9PiB7XFxcXG4gICAgICAgICAgICBsZXQgbU9yZGVyID0ge31cXFxcbiAgICAgICAgICAgIG1PcmRlci5uYW1lID0gb3JkZXIudGl0bGVcXFxcbiAgICAgICAgICAgIG1PcmRlci52YWx1ZSA9IG9yZGVyLmtleVxcXFxuICAgICAgICAgICAgbU9yZGVycy5wdXNoKG1PcmRlcilcXFxcbiAgICAgICAgfSlcXFxcbiAgICAgICAgLy8gbG9nKG1PcmRlcnMpXFxcXG4gICAgICAgIG1DYXRlZ29yaWVzWydvcmRlciddID0gbU9yZGVyc1xcXFxuICAgIH1cXFxcbiAgICBwdXRWYXIoTVlfUlVMRS51cmwgKyBcXFxcXFxcIiNjYXRlZ29yaWVzXFxcXFxcXCIsIEpTT04uc3RyaW5naWZ5KG1DYXRlZ29yaWVzKSlcXFxcbn1cXFxcbmxldCBrZXlzID0gT2JqZWN0LmtleXMobUNhdGVnb3JpZXMpXFxcXG4vLyBsb2cobUNhdGVnb3JpZXMpXFxcXG4vLyBsb2coa2V5cylcXFxcbi8qKlxcXFxuICog57uE5ZCI5b2T5YmN5YiG57G76ZO+5o6lXFxcXG4gKi9cXFxcbmxldCB0cnVlX3VybCA9IGdldFZhcihNWV9SVUxFLnVybCwgTVlfVVJMKVxcXFxudHJ1ZV91cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9zZWFzb24vaW5kZXgvcmVzdWx0PydcXFxcbmZvciAobGV0IGl0IG9mIGtleXMpIHtcXFxcbiAgICBsZXQgY2F0X3VybCA9IGdldFZhcihNWV9SVUxFLnVybCArIFxcXFxcXFwiI1xcXFxcXFwiICsgaXQsIGl0ID09PSAnb3JkZXJzJyA/ICczJyA6ICctMScpXFxcXG4gICAgdHJ1ZV91cmwgKz0gKGNhdF91cmwgPyAnJicgKyBpdCArICc9JyArIGNhdF91cmwgOiAnJylcXFxcbn1cXFxcbi8vIGxldCBwYWdlID0gMVxcXFxuY29uc3QgcGFnZSA9IE1ZX1VSTC5zcGxpdCgnIycpWzFdXFxcXG5pZihwYWdlPT0xKXtcXFxcbiAgICBcXFxcbn1cXFxcbnRydWVfdXJsID0gdHJ1ZV91cmwgK1xcXFxuICAgICcmc3Q9MSZzb3J0PTAmc2Vhc29uX3R5cGU9MSZwYWdlc2l6ZT0yMCZ0eXBlPTEnICtcXFxcbiAgICAnJnBhZ2U9JyArIHBhZ2VcXFxcbi8vIGxvZyh0cnVlX3VybClcXFxcblxcXFxuY29uc3QgZW1wdHkgPSBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIlxcXFxuXFxcXG5DYXRlZ29yaWVzSGVhZGVyXFxcXG4gICAgLnNldFN1YkNhdGVnb3JpZXNJdGVtS2V5KCduYW1lJywgJ3ZhbHVlJylcXFxcbiAgICAuZ2V0KGQsIG1DYXRlZ29yaWVzLCBwYWdlKVxcXFxuLyoqXFxcXG4gKiDojrflj5blvZPliY3liIbnsbvpobXpnaLmupDnoIFcXFxcbiAqL1xcXFxudHJ5IHtcXFxcbiAgICB2YXIgc3lsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHRydWVfdXJsLCB7fSkpLmRhdGEubGlzdDtcXFxcblxcXFxuICAgIC8qKlxcXFxuICAgICAqIOWIl+ihqOaVsOaNrua6kFxcXFxuICAgICAqL1xcXFxuICAgIGZvciAobGV0IGRhdGEgb2Ygc3lsaXN0KSB7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogZGF0YS50aXRsZSAvKisgJy8nICsgZGF0YS5pbmRleF9zaG93Ki8gLFxcXFxuICAgICAgICAgICAgZGVzYzogZGF0YS5vcmRlcixcXFxcbiAgICAgICAgICAgIGltZzogZGF0YS5jb3ZlcitSZWZlcmVyLFxcXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JyArIGRhdGEubGluayArICcjaW1tZXJzaXZlVGhlbWUjJyxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMydcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfVxcXFxufSBjYXRjaCAoZSkge31cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLku6PnoIEt5Yqo5oCB5YiG57G75qih5Z2XXFxcIixcXFwicGF0aFxcXCI6XFxcImNhdGVnb3JpZXMtaGVhZGVyXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxuLyoqXFxcXG4gKiDkvb/nlKjor7TmmI7vvJpcXFxcbiAqIDEu5o+Q5YmN5bu656uL5aW9IOWIhuexu+aJgOWxnuexu+Wei+WSjOWIhuexu+WIl+ihqCDnmoTlr7nlupTlhbPns7vvvIzljbMgZ2V0IOWHveaVsOS4reeahCBjYXRlZ29yaWVzXFxcXG4gKiAyLuiuvue9ruWtkOWIhuexu+aVsOaNrueahCBrZXnvvIzosIPnlKggc2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXkodGl0bGVLZXksIHVybEtleSlcXFxcbiAqIDMu54S25ZCO6LCD55SoIENhdGVnb3JpZXNIZWFkZXIuZ2V0KGxheW91dCwgY2F0ZWdvcmllcywgcGFnZSlcXFxcbiAqXFxcXG4gKiDmlK/mjIHpk77lvI/osIPnlKjvvIzkuIDlj6Xor53ljbPlj6/osIPnlKjnlJ/miJDliIbnsbvvvIzljbPvvJpcXFxcbiAqIENhdGVnb3JpZXNIZWFkZXJcXFxcbiAqICAgIC5zZXRTdWJDYXRlZ29yaWVzSXRlbUtleSh0aXRsZUtleSwgdXJsS2V5KVxcXFxuICogICAgLmdldChsYXlvdXQsIGNhdGVnb3JpZXMsIHBhZ2UpXFxcXG4gKlxcXFxuICogQHR5cGUge3tzZXRTdWJDYXRlZ29yaWVzSXRlbUtleTogQ2F0ZWdvcmllc0hlYWRlci5zZXRTdWJDYXRlZ29yaWVzSXRlbUtleSwgZ2V0OiBDYXRlZ29yaWVzSGVhZGVyLmdldCwgY2F0ZWdvcmllc0tleToge3RpdGxlOiBzdHJpbmcsIHVybDogc3RyaW5nfX19XFxcXG4gKi9cXFxcbmxldCBDYXRlZ29yaWVzSGVhZGVyID0ge1xcXFxuICAgIGNhdGVnb3JpZXNLZXk6IHtcXFxcbiAgICAgICAgc3ViX2NhdGVnb3JpZXM6ICcnLFxcXFxuICAgICAgICB0aXRsZTogJycsXFxcXG4gICAgICAgIHVybDogJycsXFxcXG4gICAgfSxcXFxcbiAgICAvKipcXFxcbiAgICAgKiAxLuiuvue9ruS7juWIhuexu+WIl+ihqOS4reaLv+eahOWtkOWIhuexu+eahOaVsOaNriBrZXnvvIxcXFxcbiAgICAgKiAgIOagueaNriBrZXkg5ou/5Yiw5pWw5o2u5ZCO77yMXFxcXG4gICAgICogICDkvJroh6rliqjotYvlgLznu5kgc2Nyb2xsX2J1dHRvbiDnmoQgeyB0aXRsZTogaXRlbVt0aXRsZUtleV0sIHVybDogaXRlbVt1cmxLZXldIH1cXFxcbiAgICAgKlxcXFxuICAgICAqIEBwYXJhbSB0aXRsZV9rZXkgdGl0bGUg55qEIGtleVxcXFxuICAgICAqIEBwYXJhbSB1cmxfa2V5IHVybCDnmoQga2V5XFxcXG4gICAgICovXFxcXG4gICAgc2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXkgOiAodGl0bGVfa2V5LCB1cmxfa2V5KSA9PiB7XFxcXG4gICAgICAgIENhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS50aXRsZSA9IHRpdGxlX2tleVxcXFxuICAgICAgICBDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkudXJsID0gdXJsX2tleVxcXFxuICAgICAgICByZXR1cm4gQ2F0ZWdvcmllc0hlYWRlcjtcXFxcbiAgICB9LFxcXFxuICAgIHNldFN1YkNhdGVnb3JpZXNLZXk6IChzdWJfY2F0ZWdvcmllc19rZXkpID0+IHtcXFxcbiAgICAgICAgQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnN1Yl9jYXRlZ29yaWVzID0gc3ViX2NhdGVnb3JpZXNfa2V5XFxcXG4gICAgICAgIHJldHVybiBDYXRlZ29yaWVzSGVhZGVyO1xcXFxuICAgIH0sXFxcXG4gICAgLyoqXFxcXG4gICAgICogMi7ojrflj5bliIbnsbvlpLTpg6hcXFxcbiAgICAgKlxcXFxuICAgICAqIEBwYXJhbSBsYXlvdXQg5b2T5YmN55WM6Z2i77yM5Y2z5bi455So55qEIGQucHVzaCDnmoQgZFxcXFxuICAgICAqIEBwYXJhbSBjYXRlZ29yaWVzIOWIhuexu+aJgOWxnuexu+Wei+WSjOWIhuexu+WIl+ihqOeahOWvueW6lOWFs+ezu+ihqO+8jFxcXFxuICAgICAqICAgICAgICDlpoLvvJpcXFxcbiAgICAgKiAgICAgICAge1xcXFxuICAgICAqICAgICAgICAgICBcXFxcXFxcIuW5tOS7vVxcXFxcXFwiOiBbeyBcXFxcXFxcIm5hbWVcXFxcXFxcIjogXFxcXFxcXCIyMDIxXFxcXFxcXCIsIFxcXFxcXFwidmFsdWVcXFxcXFxcIjogXFxcXFxcXCIyMDIxXFxcXFxcXCIgfSwgeyBcXFxcXFxcIm5hbWVcXFxcXFxcIjogXFxcXFxcXCIyMDIwXFxcXFxcXCIsIFxcXFxcXFwidmFsdWVcXFxcXFxcIjogXFxcXFxcXCIyMDIwXFxcXFxcXCIgfS4uLl0sXFxcXG4gICAgICogICAgICAgICAgIFxcXFxcXFwi5o6S5bqPXFxcXFxcXCI6IFt7IFxcXFxcXFwibmFtZVxcXFxcXFwiOiBcXFxcXFxcIueDreW6plxcXFxcXFwiLCBcXFxcXFxcInZhbHVlXFxcXFxcXCI6IFxcXFxcXFwiaG90XFxcXFxcXCIgfSwgeyBcXFxcXFxcIm5hbWVcXFxcXFxcIjogXFxcXFxcXCLml7bpl7RcXFxcXFxcIiwgXFxcXFxcXCJ2YWx1ZVxcXFxcXFwiOiBcXFxcXFxcInRpbWVcXFxcXFxcIiB9Li4uXSxcXFxcbiAgICAgKiAgICAgICAgfVxcXFxuICAgICAqIEBwYXJhbSBwYWdlIOmhteeggVxcXFxuICAgICAqIEBwYXJhbSB1cmxMaXN0ZW5lciDpop3lpJblpITnkIYgYnV0dG9uIOeahCB1cmzvvIzpnIDopoEgcmV0dXJuXFxcXG4gICAgICovXFxcXG4gICAgZ2V0OiAobGF5b3V0LCBjYXRlZ29yaWVzLCBwYWdlLCB1cmxMaXN0ZW5lcikgPT4ge1xcXFxuICAgICAgICAvLyBsb2coY2F0ZWdvcmllcylcXFxcbiAgICAgICAgLy8g5YiG57G75omA5bGe57G75Z6L55qE5YiX6KGo77yM5aaC77yaWyBcXFxcXFxcIuW5tOS7vVxcXFxcXFwiLCBcXFxcXFxcIuaOkuW6j1xcXFxcXFwiIF1cXFxcbiAgICAgICAgbGV0IGNhdGVnb3J5X25hbWVzID0gT2JqZWN0LmtleXMoY2F0ZWdvcmllcylcXFxcbiAgICAgICAgbGV0IHR5cGVzID0gW11cXFxcbiAgICAgICAgLy8g5qC55o2u5a+55bqU5YWz57O76KGo5ou/5YiG57G75YiX6KGoXFxcXG4gICAgICAgIGNhdGVnb3J5X25hbWVzLm1hcChjYXRlZ29yeV9uYW1lID0+IHtcXFxcbiAgICAgICAgICAgIC8vIOi/memHjOS8muaLv+WIsCDlubTku70g5o6S5bqPLi4uIOWFtuS4reS4gOS4qlxcXFxuICAgICAgICAgICAgdHlwZXMucHVzaChjYXRlZ29yaWVzW2NhdGVnb3J5X25hbWVdKTtcXFxcbiAgICAgICAgICAgIC8vIOi/memHjOS4i+mdouWvuSB0eXBlcyDnmoTlgLzov5vooYzlpITnkIZcXFxcbiAgICAgICAgfSlcXFxcbiAgICAgICAgY2F0ZWdvcmllcyA9IHR5cGVzO1xcXFxuICAgICAgICBsZXQgaW5pdF9jYXRlID0gW11cXFxcblxcXFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDIwOyBpKyspIHtcXFxcbiAgICAgICAgICAgIGluaXRfY2F0ZS5wdXNoKFxcXFxcXFwiMFxcXFxcXFwiKVxcXFxuICAgICAgICB9XFxcXG5cXFxcbiAgICAgICAgY29uc3QgY2F0ZV90ZW1wX2pzb24gPSBnZXRWYXIoTVlfUlVMRS50aXRsZSwgSlNPTi5zdHJpbmdpZnkoaW5pdF9jYXRlKSlcXFxcbiAgICAgICAgY29uc3QgY2F0ZV90ZW1wID0gSlNPTi5wYXJzZShjYXRlX3RlbXBfanNvbilcXFxcblxcXFxuICAgICAgICBpZiAocGFyc2VJbnQocGFnZSkgPT09IDEpIHtcXFxcbiAgICAgICAgICAgIC8qKlxcXFxuICAgICAgICAgICAgICog6YGN5Y6G56ysIGluZGV4IOWxguWIhuexu1xcXFxuICAgICAgICAgICAgICovXFxcXG4gICAgICAgICAgICBjYXRlZ29yaWVzLmZvckVhY2goKGNhdGVnb3J5LCBpbmRleCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIGxldCBzdWJfY2F0ZWdvcnlfbmFtZSA9IGNhdGVnb3J5X25hbWVzW2luZGV4XVxcXFxuICAgICAgICAgICAgICAgIGxldCBzdWJfY2F0ZWdvcmllc19rZXkgPSBDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkuc3ViX2NhdGVnb3JpZXNcXFxcbiAgICAgICAgICAgICAgICBsZXQgc3ViX2NhdGVnb3JpZXMgPSBzdWJfY2F0ZWdvcmllc19rZXkgPyBjYXRlZ29yeVtzdWJfY2F0ZWdvcmllc19rZXldIDogY2F0ZWdvcnk7XFxcXG4gICAgICAgICAgICAgICAgLy8gbG9nKGNhdGVnb3J5KVxcXFxuICAgICAgICAgICAgICAgIC8qKlxcXFxuICAgICAgICAgICAgICAgICAqIOWcqOesrCBpbmRleCDlsYLliIbnsbvkuK3pgY3ljobor6XlsYLmiYDmnInlrZDliIbnsbtcXFxcbiAgICAgICAgICAgICAgICAgKi9cXFxcbiAgICAgICAgICAgICAgICBzdWJfY2F0ZWdvcmllcy5mb3JFYWNoKChpdGVtLCBrZXkpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gaXRlbVtDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkudGl0bGVdXFxcXG4gICAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSBlc2NhcGUoaXRlbVtDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkudXJsXSlcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVybExpc3RlbmVyKSB1cmwgPSB1cmxMaXN0ZW5lci5vbkRlYWwoaXRlbSwgc3ViX2NhdGVnb3J5X25hbWUsIHVybClcXFxcbiAgICAgICAgICAgICAgICAgICAgbGF5b3V0LnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGtleS50b1N0cmluZygpID09PSBjYXRlX3RlbXBbaW5kZXhdID8gJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXFxcXFwiY29sb3I6ICMwOThBQzFcXFxcXFxcIj4nICsgdGl0bGUgKyAnPC9zcGFuPjwvYj4nIDogdGl0bGUsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQodXJsKS5sYXp5UnVsZSgocGFyYW1zKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmNhdGVfdGVtcFtwYXJhbXMuaW5kZXhdID0gcGFyYW1zLmtleS50b1N0cmluZygpXFxcXG5cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoTVlfUlVMRS50aXRsZSwgSlNPTi5zdHJpbmdpZnkocGFyYW1zLmNhdGVfdGVtcCkpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKE1ZX1JVTEUudXJsICsgXFxcXFxcXCIjXFxcXFxcXCIgKyBwYXJhbXMuc3ViX2NhdGVnb3J5X25hbWUsIGlucHV0KVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZV90ZW1wOiBjYXRlX3RlbXAsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IHBhZ2UsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViX2NhdGVnb3J5X25hbWU6IHN1Yl9jYXRlZ29yeV9uYW1lXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICBsYXlvdXQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcImJsYW5rX2Jsb2NrXFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG59XFxcXG4kLmV4cG9ydHMuQ2F0ZWdvcmllc0hlYWRlcj1DYXRlZ29yaWVzSGVhZGVyXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5oiR55qE5pS26JePLeinhumikVxcXCIsXFxcInBhdGhcXFwiOlxcXCJ2aWRlb1xcXCIsXFxcInJ1bGVcXFwiOlxcXCJ2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXFxcbnZhciB2aWRlb191cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjMvZmF2L2ZvbGRlci9zcGFjZT9hY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmdXBfbWlkPScgKyBnZXRWYXIoJ3N0YXJpZCcpICsgJyZzaWduPTBhNTFiNzcyZjgxZGM3ODEyY2Q2NjIyNmE4MzI1MzgzJztcXFxcbnZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHZpZGVvX3VybCkpLmRhdGE7XFxcXG5mb3IgKHZhciB4IG9mIGxpc3QpIHtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogeC5uYW1lLFxcXFxuICAgICAgICBpbWc6ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnLFxcXFxuICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eSNcXFxcXFxcIit4LmlkK1xcXFxcXFwiQGxhenlSdWxlPS5qczpwdXRWYXIoJ2NoYW5nZScsZ2V0VmFyKCdjaGFuZ2UnKT09aW5wdXQuc3BsaXQoJyMnKVsxXT8nMCc6aW5wdXQuc3BsaXQoJyMnKVsxXSk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/lt7LliLfmlrAnXFxcXFxcXCIsXFxcXG4gICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJ1xcXFxuICAgIH0pO1xcXFxuICAgIGlmIChnZXRWYXIoJ2NoYW5nZScpID09IHguaWQpIHtcXFxcbiAgICAgICAgdmFyIGxpc3QyID0geC5tZWRpYUxpc3RSZXNwb25zZS5saXN0O1xcXFxuICAgICAgICBsb2cobGlzdDIpXFxcXG4gICAgICAgIGZvciAodmFyIGEgaW4gbGlzdDIpIHtcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGxpc3QyW2FdLnRpdGxlLFxcXFxuICAgICAgICAgICAgICAgIGltZzogbGlzdDJbYV0uY292ZXIrUmVmZXJlcixcXFxcbiAgICAgICAgICAgICAgICB1cmw6J2hpa2VyOi8vcGFnZS9jb2xsZWN0aW9uP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92My9mYXYvcmVzb3VyY2UvaWRz77yf77yfYWNjZXNzX2tleT0nK2dldFZhcignYWNjZXNzX2tleScpKyfvvIbvvIZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNu+8hu+8hmJ1aWxkPTYxMzA0MDDvvIbvvIZjX2xvY2FsZT16aF9DTu+8hu+8hmNoYW5uZWw9bWFzdGVy77yG77yGbWVkaWFfaWQ9JytsaXN0MlthXS5pZCsn77yG77yGbWlkPScrZ2V0VmFyKCdzdGFyaWQnKSsn77yG77yGbW9iaV9hcHA9YW5kcm9pZO+8hu+8hnBsYXRmb3JtPWFuZHJvaWTvvIbvvIZzX2xvY2FsZT16aF9DTu+8hu+8hnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RO+8hu+8hnRzPScrdHMrJ++8hu+8hnNpZ249N2UwZjFiOTJmM2VmMzgyOGIxOWJlNjY4Mzg5MTUwMDcnLFxcXFxuICAgICAgICAgICAgICAgLy8gZGVzYzogYVsnbWVkaWFfY291bnQnXSxcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH1cXFxcblxcXFxuICAgIH1cXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLmiJHnmoTmlLbol48t6L+955WqXFxcIixcXFwicGF0aFxcXCI6XFxcImZhbmp1XFxcIixcXFwicnVsZVxcXCI6XFxcInZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcXFxudmFyIHZpZGVvX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL2FwcC9mb2xsb3cvdjIvYmFuZ3VtaT9hY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjA5MTAwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmcG49JyArIHBhZ2VudW0gKyAnJnBzPTIwJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuOS4xJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnN0YXR1cz0yJnRzPScgKyB0cyArICcmc2lnbj0xNjI0Zjk1OThkY2EwNmViMTI5NTM0ZTQ3NjVmOWIxYSc7XFxcXG50cnkge1xcXFxuICAgIHZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHZpZGVvX3VybCkpLnJlc3VsdC5mb2xsb3dfbGlzdDtcXFxcbiAgICBmb3IgKHZhciB4IG9mIGxpc3QpIHtcXFxcbiAgICAgICAgdmFyIOexu+WeiyA9IHguaXNfZmluaXNoID09IDEgPyBcXFxcXFxcIuWujOe7k1xcXFxcXFwiIDogXFxcXFxcXCLov57ovb1cXFxcXFxcIjtcXFxcbiAgICAgICAgdmFyIOagh+ivhiA9IHhbJ3NlYXNvbl90eXBlX25hbWUnXSArIFxcXFxcXFwiIHwgXFxcXFxcXCIgKyB4LmJhZGdlO1xcXFxuICAgICAgICB2YXIgZGVzYyA9IHgucHJvZ3Jlc3MgPyDmoIfor4YgKyBcXFxcXFxcIlxcXFxcXFxcbuKAnOKAnFxcXFxcXFwiICsgeC5uZXdfZXAuaW5kZXhfc2hvdyArIFxcXFxcXFwi4oCd4oCdXFxcXFxcXFxuXFxcXFxcXCIgKyB4LnByb2dyZXNzLmluZGV4X3Nob3cgOiDmoIfor4YgKyBcXFxcXFxcIlxcXFxcXFxcbuKAnOKAnFxcXFxcXFwiICsgeC5uZXdfZXAuaW5kZXhfc2hvdyArIFxcXFxcXFwi4oCd4oCdXFxcXFxcXFxuXFxcXFxcXCI7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogeC50aXRsZSArIFxcXFxcXFwiXFxcXFxcXFx0XFxcXFxcXCIgKyBnZXRIZWFkKOexu+WeiyksXFxcXG4gICAgICAgICAgICBpbWc6IHgubmV3X2VwLmNvdmVyICsgUmVmZXJlcixcXFxcbiAgICAgICAgICAgIGRlc2M6IGRlc2MsXFxcXG4gICAgICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9XFxcXFxcXCIgKyB4LnVybCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH1cXFxcbn0gY2F0Y2ggKGUpIHt9XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5oiR55qE5pS26JePLei/veWJp1xcXCIsXFxcInBhdGhcXFwiOlxcXCJkc2pcXFwiLFxcXCJydWxlXFxcIjpcXFwidmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxcXG52YXIgdmlkZW9fdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2MvYXBwL2ZvbGxvdy92Mi9jaW5lbWE/YWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYwOTEwMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnBuPScgKyBwYWdlbnVtICsgJyZwcz0yMCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjkuMSUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZzdGF0dXM9MiZ0cz0nICsgdHMgKyAnJnNpZ249MTYyNGY5NTk4ZGNhMDZlYjEyOTUzNGU0NzY1ZjliMWEnO1xcXFxudHJ5IHtcXFxcbiAgICB2YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh2aWRlb191cmwpKS5yZXN1bHQuZm9sbG93X2xpc3Q7XFxcXG4gICAgZm9yICh2YXIgeCBvZiBsaXN0KSB7XFxcXG4gICAgICAgIHZhciDnsbvlnosgPSB4LmlzX2ZpbmlzaCA9PSAxID8gXFxcXFxcXCLlroznu5NcXFxcXFxcIiA6IFxcXFxcXFwi6L+e6L29XFxcXFxcXCI7XFxcXG4gICAgICAgIHZhciDmoIfor4YgPSB4WydzZWFzb25fdHlwZV9uYW1lJ10gKyBcXFxcXFxcIiB8IFxcXFxcXFwiICsgeC5hcmVhc1swXS5uYW1lO1xcXFxuICAgICAgICB2YXIgZGVzYyA9IHgucHJvZ3Jlc3MgPyDmoIfor4YgKyBcXFxcXFxcIlxcXFxcXFxcbuKAnOKAnFxcXFxcXFwiICsgeC5uZXdfZXAuaW5kZXhfc2hvdyArIFxcXFxcXFwi4oCd4oCdXFxcXFxcXFxuXFxcXFxcXCIgKyB4LnByb2dyZXNzLmluZGV4X3Nob3cgOiDmoIfor4YgKyBcXFxcXFxcIlxcXFxcXFxcbuKAnOKAnFxcXFxcXFwiICsgeC5uZXdfZXAuaW5kZXhfc2hvdyArIFxcXFxcXFwi4oCd4oCdXFxcXFxcXFxuXFxcXFxcXCI7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogeC50aXRsZSArIFxcXFxcXFwiXFxcXFxcXFx0XFxcXFxcXCIgKyBnZXRIZWFkKOexu+WeiyksXFxcXG4gICAgICAgICAgICBpbWc6IHgubmV3X2VwLmNvdmVyICsgUmVmZXJlcixcXFxcbiAgICAgICAgICAgIGRlc2M6IGRlc2MsXFxcXG4gICAgICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9XFxcXFxcXCIgKyB4LnVybCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH1cXFxcbn0gY2F0Y2ggKGUpIHt9XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5oiR55qE5pS26JePLeaUtuiXj1xcXCIsXFxcInBhdGhcXFwiOlxcXCJjb2xsZWN0aW9uXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOnZhciByZXMgPSB7fTt2YXIgZCA9IFtdO1xcXFxudmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxcXG52YXIgY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChNWV9VUkwpKS5kYXRhO1xcXFxudmFyIHJlc291cmNlcyA9ICcnO1xcXFxuZm9yICh2YXIgeCBvZiBjb2RlKXtcXFxcbiAgICB2YXIgcmVzb3VyY2VzID0gcmVzb3VyY2VzICsgeC5pZCArICc6JyArIHgudHlwZSArICcsJztcXFxcbn1cXFxcbnZhciByZXNvdXJjZXMgPSByZXNvdXJjZXMuc2xpY2UoMCxyZXNvdXJjZXMubGVuZ3RoLTEpO1xcXFxudmFyIHVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92My9mYXYvcmVzb3VyY2UvaW5mb3M/YWNjZXNzX2tleT0nK2dldFZhcignYWNjZXNzX2tleScpKycmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlJm1pZD0nK2dldFZhcignc3RhcmlkJykrJyZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmcmVzb3VyY2VzPScrcmVzb3VyY2VzKycmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScrdHMrJyZzaWduPTdlMGYxYjkyZjNlZjM4MjhiMTliZTY2ODM4OTE1MDA3JztcXFxcbnZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCx7fSkpLmRhdGE7XFxcXG5mb3IgKHZhciB5IG9mIGxpc3QgKXtcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6eS50aXRsZSxcXFxcbiAgICBpbWc6eS5jb3ZlcixcXFxcbiAgICBkZXNjOifmkq3mlL7ph486ICcreS5jbnRfaW5mby5wbGF5KycgIOW8ueW5lTogJyt5LmNudF9pbmZvLmRhbm1ha3UsXFxcXG4gICAgdXJsOidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIHkuYnZpZCArJyNpbW1lcnNpdmVUaGVtZSMnLFxcXFxuICAgIGNvbF90eXBlOidtb3ZpZV8xX3ZlcnRpY2FsX3BpYydcXFxcbiAgICB9KTtcXFxcbn1cXFxcbnJlcy5kYXRhID0gZDtcXFxcbnNldFJlc3VsdChyZXMpO1xcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuS7o+eggS3nmbvlvZVcXFwiLFxcXCJwYXRoXFxcIjpcXFwibG9naW5cXFwiLFxcXCJydWxlXFxcIjpcXFwiZXZhbFByaXZhdGVKUygnTGxlMG5heWRzelEyNTBJaE95ZFJBMWtKcjBYbk5hL3JGbHNqaUVLWlc3cmV0WkZldUhOSmxQS1dNRTRhOUJjZkI5QjBoVGF3WU04ditoRXd6RjNSVk4yc1IvaUg4TnZ5SFk2dXpLTmdqTWJKODVHTEVnMEp5alBJdGZHR1Jnd0pGVVZOTDFJTGVSTmJhZTM5WFZyb0Q3V0tVS0JQZnY3SHdxajJIWUZINXVRTHBPVlp2RzRVY1lPekFzN2o4TmlhUEVVSk1TNDI0QmtibnMxTmY2RklEWGxma05JSXNXQkhXUmRPNm1wNzNWeTJ2dTVoZzFhRzBBVmVrNStwUWNxYWt4RU05Y1dHZ0NKQzVtS3BVaVpTRXRQOTJzS0E5U0srL05Ic3FmMTNDT3RRUmlpeDZnRmh5RmhMZXo3K0dwdVNiTEgxM2sxRkRVWmtpbFk3T0JQOHlDWlArWW00MVloaS95SVR4M0VsTG1namlCZXhqMHFUTGpyS0lYbng0RERYaWlwU3cvWXBVTmRxdGdVWEhOaTk4YTdjR3RMRSs5NUFxazJEY1YvSDNPRzVocHN3U0hDMitpbHJSTFA4K1R5TFRvZ3JGVWFKWU14T21yV3dBalVNMUZmTHMvTVN4NjAxVy91ZUZEQW1oTy9aWm9VWndmM01ZYmh0a3YrQnhneUcvNzZXZkRBUWJHQVJKOTROYWpaOXB6enZjdVhJRXJncjFEL1B1Z0ZtaE9XSGsvTVNkRkRsQnFNRHBFOHg5NVlqNnRMNHdGc3cyT2FHT29lOE1oc25pRllFRjhCcU1QUmVkMHo3Y0JDNFJHeEQ1TmdWMUZLV0hBUGdaUFlGS2pnTzlnbE5KdjcxSVNnSW85U0tSQkVqS21FNGNFdmIva0pFT0NFRExqQlFyVnNPVDExT3VaY1p1ZENaRU9Uem1yaUdIZFBmZmxLQnJGc0VoN3lsVXRQWllFY0VwQ3kxV2gxZTFZeE5LWmhiT3VrMDJ3dEE3RmZITlAwRHFJWjgzRjhSRkczOFJZMzZmRkkvL3pMcENNRU04VVhoemxqdzVxb1NQdnpmaGVSMS9HRjNNampGZnN6WFozVUN2Y0JnMndDMU9rQVZLcDB1U2NHTG1lcTZRYUViUU4ydW56MDJwcEZWN2VLOUg3M3lEMUVFbE5LQ1FDa2ttQjZkeHBxdGtWNkpoUnN4aWdNY2VYbjRkVUd0K0F0ZmtBMkt2eW1lNXJrdXBwQmNlRnZNZmhJRnN4WUdSMlVFOStveDZrZmxZQnRQcDU1UTZ1bElLeWRocms1VEFUek0yaXY5Zjl4cVlwSklJQm50SVZJb2YzT2FuSEpXckV0eFEyYzFnY3ZPdC9XYkUvbGtOZHJRMzNJT1lyT0ZiMmNiWjRNL2xoNW5WdHppanZwWWUwTTZPNXYrSW9aTXBPaVZxc2U3eU5pWGhBSHhFMDV6aWlWY2o5cGl6cFd6SWViek80ZytLa2FxSnJCUzZ5ejVRWG1pRmNXVkVTSUlJb3ZZSGVDS1JETGdCb2pxSmRUZUlYYVIvS2U0OXN0MDNYMkhSdzJyMEIwTW5pZjh0RVBkYTFnbGNCTHNURVpFVzJoYmtkdG9FaWNJUkZ2a2k1NXg5SFF0UVQ0enAyVFdwM2F1N1RJendEaXRDVWJiRE9WMXpGZ1NIaDA4NzNMbHlCSzRLOVEvejdvQlpvVGxoNVB6RW5SUTVRYWpBNlJQTWZlV0krclMrTUJiTU5qbWhqcUh2REliSjRpQnAreFhoamMrMnJ2aURhQU95RkM5dWx2a3h6YStUVzRNYXQwaHh0WURySWwrRHBvdWVqeUlNVFc4RHN2WHhQWENBUWJtd0dsREVBZk9peXF0cUxROUhmOGdEWEUzNVE3YXkweUFCRWVqMXFLV2dyai9ZbkJiWS9kWUFPUFNIcG1sZGRGTEpuS3BBcGRNWHZZQnN3cldGMENSUlNiMXM3Q1pSZ01mT1F6SzZJejYvdGVoYXNtT3M3TWw5dy9IcG41bktoMTArbjBpR1hNdng1SUkrU0dwb0x1ZUN0Um1KN1VWVkN0REc2eGV2eFlNbTA0c0FHR0dKYUNEQWhHSDhpY2JoSUUyYitvcURGRXBtVTBlWTdSdEc3OWhQaEwrZ1hZT3lZTlV2SnFlamxiWjEvT2R2TDVuWXk2bTMwR3dsM3o3dzVlc2xaQ1VBMGthUnM1a21VT0x2TDBRUVBENzRmYWdBZHFHc0xIVUdEV2I0QnpDTEYyTVlMSHkrRHNja0szRllKTXcwVTVxTjdMNzAwc1ZTYWxmNnRLOTZkV3F6bjVlSXJld2YxaUdvODNJY3d6OW84MUptdUtBMUxwSVNTOTA5OG53QXgxcVAxRnpQY3dJaFRTVnVSOCtBb28xcDNEaTBXTHdOS1FOT0k4eDc1RG1hRTZCTFBpRGthRExLSnljK2J6WDBoSUMzc1BiMitkZnZsa3NDbksyMmNHaEsyNUZzOU9GUjNyRi9WRlZTUmJERzcrN0FxT2tFMjRib2tFVWpkOG5TNUhqcXAzRC91ayswWHpCeTkyMjJYNmJKbUpod0ZsS3o0NlRCVlhlenptM2R6UVc3T2wrME9xZi9FeDJBWStyd1ArTTZ4RlJIVVgvajJHY0dhNW1oYkpVelJSQmRPNUlwclUyTnM2SHRTWEM5SXFjeFcxVmw1YkNPYk1HOStIdnZ6dTBzRzdBV05ndVpKQ3N4a0pYaGhnd2YyR0I2RlB1NitvRlJ6NkQ0QTA1c3NEc0xMVnltWjVjZ1RiRGNiZXExOVVtaVlhbTNQbjdxV0ljanVoOU9zTjR0aUZUcnJVRVBaSVJYOVhrMFVHRFlmYWJRMXBYZnhNLyt5U2g4cTdkd25WSi9nN2x1aWhHT2VlTndIWEFGQXk0bjNhY1BIMlhCYy9tc3g1WEtnSXJlT1JNVlkvY0ZiOUtjbTNvV1p6eks2K0hTUDg1dGtGS0ttNTVoZzhNeHdpNUl4OVJRRS9wR0F4MWNzb3ZTcDNqUlAwaDYybzZOaEZrdENES1d6akVVbDlibWEyOGZaeWlZNGRYQkVzSEJPcEt2QnpBQTBsUmtlelRuRXZ2WHM5WjU1VXJBYThaaEFGdXg2WkVOdzRjTVRJdVNrVmZ3K1YvVS9tb21sdEo5dkdQZ2lxYjVuWmw5S3U3ZDBST1YxNUozUUFzYmhPeFQ2U2drSVZ1Z3VWYVRWUmNqMEhXK21NTllLYlF5bnJOUkFxS0RlSnF1VnhjOUhsUE02TDhxUG5aSVdiYkhBZlVmR2J3MGxSbHdTdU9wRjcrQTJXSkxaNFh6U2dIYmNNWGt1bHpQUERQOS9jYVJJQjhlMlZrekVaU1BuVWlaQXBXUDZ3V3VzSHVCMzlXQU03OCtOQmk0QnAybXhXakxLSExXUU1EZUlYWGhkeGVjSzVxVVVmWUxnSVRpaDlEZUZwZ0xOV2NCTEdRRmJkU05rSjNOV3BjRzU2RGFqREl1TFVhOGswMGk5NGNKd0F6TWtKQnhOSmI1ZWhCUmtWdldYb3NtdEpCTWRSZjZORWJzVjl1OHZwWmpORW9nVWtubWx0Sjl2R1BnaXFiNW5abDlLdTdkMVpxVFB6b3B3WmhoK2l0RHBVYjBMcjI3YzV3TkFBRWpycGhPcWZlME5qMzlDTlcwTEg0V3hqZjJsd2x4TXRPS1IxSFFML0NQdzUxeXlZSi9MVnJReitpZjNpSUJOVTRuQ2dPYnVXNUpVTFR2c1FzczJSbmVMQ3c2cnBoeGdNc2Rhd01FZ1o5cUNyQ003eVRNMEV5bEZ4ZmppSVpLcWJLMTBCYWUyTm9IRCtHdW9VS0FRcDVTdTRBcVhTZktMem14NGhXYm1TaU5WN21DQi9yZHcxeWJzUHZnQUZjRzg1TjUza05qemNQdmJLTE9PeEhYSFlWV0NsQm1KcHJ3SnRIQTZCMVdacEdXUng1TS9nRG1zR3pWUm1WdUJEdm1TQVpNd0llVnI1YnpERTg2bTBOcWNtZ1ROZXB4d3FCK3lCQnA1S3pkNDJFQVFodDJFSzVUMnpNeHZnVHplUy96M0svcTVsUkhsMXpLMEovc1F3THg5ejhsTVZnOVJCYkFlL2ViMjBWb3d6Y3FQZGUvcWkwakhNd0djTWFDOWR1eVc1NndsR09zbmtiZXlCUS9QZlJTU3JrVUcvdmNhQ2JUYTRJVDg0Wnp0cE5RUnZiZVVuSUFvUGtXL2VaNndPVWlhNEpzeWF3OTlXYTgrRTRMakRtWjB6UmhuU0hnVXlDL3liOXJaVDJsRTFTN0pCSWs3WVpQWHlBMDBhMkxnS0ZHODhZelY4MGhpK0FWVHdSWlBrOXdsTzdnUlMyTlIvNTc3bkl4RzBIMjJsbEZzY21OMUxoSTkxRkQyVmJWWGJxaUtVVmpKY1ZuNi9zUWNUd3d6N3R2QjZ6OXlNbXJEbHlDTXZ5VWR3R0k2dXI5RWFjNHFXNkVVejF4SDJ5NVRJOEFmaHh4eE9yQVFabkVSYlRNSUNkZktHUUdESmUvVGRLUktRdGdicGI1TWMydmsxdURHcmRJY2JXQTZ6RFB1MjhIclAzSXlhc09YSUl5L0pSTmR2c1g2RGxLZFl3TG5GVVFqMnQ2SFFIaHRqa09saSt0Y09uUmxqQWEzMm9yZng3OVZPdXZpTnErbU9xUjFOK0NHUkYyYm1LVTFrcERBcng0VnpEZFdKZGRFcmErT2tGbk9ORUd6NFllY3dFUlpVZDc3K25uUEwyTW9DTW1FRFljdlhJczJFdVpIZGtUZm4xaXdlb2dEMDFRZndxWkhORjhIdmxCV01VL2Y2RWR6WEtMcUlnUksyaXBBTUZnS1J2bFJiYXNIUGxSdXNTZzBwUk5WVUNRUjVlYk55eHFGWGhMYzIrb2VkSzhKRW9Mb01FUTVEM2ZKYXJZZ2Q5ank2Zk9pQmtHOEM5SUlUQjhteXR5eXN3Y0t0d2h5MS8xV2JITzdDei9SZHFWY3lKMzRBMnEyWjN5dWkxUTVhMW9QbU8wTldMZm55YTQrc1JOUXJrc2lRNEh1TzI2R2FaVVI4a1d6RjFPeGRkdWFQVnhJTk1iNjU4Y3NYVnVER1o1TVlwV2RiY2tGVzZlWVBGaXUreFNEQy9lRHpzWEFINkZMM1BWOE9wRFVQQm1wVGVrMlhYZmVLZHFVMnBTOW03U0NpQ0I1dTJxYmlLQzJjOXZCVjI0TTZzOFJhNGhtZCtQYWo0RlR5dHYzNlNIMWJMSzh0STFsWnord2lmKzlaSUFkVDIyY3I1N2pxK3lwTVBlTjF5NTlEcXY3cHNoRCtKVEk4VWdkUzRRVmxDd0YxN1lydkpIUEQ0MktGRWJnUVkrKzBqMGRhbHlIWWNnZjU4UXlBbDkrbm5CSlpWVVZsSWlsUTZxRVBzSHpiNnJNYlY2N1lTcVpIY0x2ZkNUb2JSaTRwYUJDRVV4Y3lOTFF2SlNLY0twWkF1ZjIrOEs4MXpLeXozTWRFY3VydHNobnN4UUErb2NEQzJPeTU4aXlDSzZkU2pJclRQaUZGUTgwQm1wYTJEM2xzY0xWbVk1SVI0b2s5dGdkQmVYSTZYWjh1Mms5S0xKV2QrRnFzZjhZT1FHeE82RUgyY0NLTzJ1MCszRi9HT3o2Ky9PcnV0TGFocVIybWtWR0lkSkt1WGVZR3NabkRCZ2VKZ0JKWjhySUhDMEMwTldMTHhpakxMRkpmemkwcHpHSVJIVzRMQUpBaE8vZkxwU0w1MFJscmhNWXZiUXM0b1p1MXBlKzc5WFQ1UlI4OGRsWHMxcjZENHNKSFloNis3eDNrUFF1TWxzOXJjMW55d3pCZGwzNUNJWnhFdzZjQUNqUDhZNGRuNnp3TllQbnQ5UW1HMklWNFo0ck1Wd0k1cFpRaW1WNGNCMUp5cC95SzN2T2NGZXBXYmEwaU5MN3hBaEVHRHRzOEk3aEsvNU5IU0N6d3M2N1RTa0o4VUh5d0drdFNUSkNUMDE1eXBRQ2FTbkttT09xVWlteENhaGZTNGU0ZjlYdGZCbFNsR1djWit5eXZMU05aV2Mvc0luL3ZXU0FIVTlqeHNDUDJwSzhJcEg4alJ5YUR4YWlHRkx4TW1ReGM1a0RnZzZ2R2RQNkt5MjRBMkEwZUJpZVhiZ1BmWHlIczgyUjQ1NjkyMkp6MHBWQUdzalA0NDNteGlFK282V3YzTG5kbm0wK0YvUTFIa3Y3NFBkdkltSERONHVyR0Y4dEVCK0RsQ0ZRK2xGU3FoK2JDUEl2aHpoZTZOeHpxOERoK2lvenVuWklvZkl6cmlvMWdjckJmQjBRWWRqWEcwRlRSN3BkTjU0bTJNcHZFSDB5ZnRFbzE5bnJ2TEs4dEkxbFp6K3dpZis5WklBZFQydEhWL0NQU3NLdDd6d2N5dGFHckxhYW80MkQyMnNzd1RSTFBhRy9xNkdpN0RqRWhod0tsQnhqanc3SU15dElJM05rTThjYitKdEV5Zjh3RmtURUZpRkxVWWltUS9oUFhJOTN6clhrKyt2cW9nTHJ1MHRhWGd0bE0xN3F0QWZ6R1F1OHlVZEk0cXFZemVKeFh4ZjBOTloyb0JqZURyMkRpd0k5T1hQVXVCSGJzTDRjMy9udzEwRW0yVTZNRkJVY3Jaai9ETWFTRnhWY1o3TW9XbDJvbjhHbTBWb3d6Y3FQZGUvcWkwakhNd0djTWY5ejQ5ZWdaUlF6TDdoS1NVTTVUUHQzN0FtazM3OWNjd3BMdFBUVDIzQmg3VWhua2RHMEdVb0h2SHN5OTlHeG1RYVI0bmF5Ty9yUUZib3F1c3RTRkxyTzgwL1B0bkg4RUpjd1FhUVlaSnpOMWI5YkQ2UnJKbDZ6UUlvbXdNZll1dSttOEZzTzd6ZDQvY2ZyNmhpT2ViSFNLWm1EUEZkM1hSSmUvOUNObkxHTFlYSkxyWXZFdnRGendEOEEzbjNkaFhXUGlta0Fpc0YwUis3UGhROVZKTFdjR2g4dHFLZ29Wb1o3a3pCR3VEN1NoOWMrMlNyK1NBR0g2YUhCVDRGdDFlc3dVbmIrZm5KR2hhSFNDL1N2b3pLQ0xtV05yUFE5NGFadVl5T092MGZsUFU5UHY5S09RVXkrNVV1ZGxNdnRxbDdCSUpmbzRQaWgvbEs4ZTFORzlKTjBEOU1MdTJmNytVQkJjZ25jQjlFaHVjS1FDSnNSaFBMZ1pwWC9yK3NMZ25iUzFIY0JLNTZ2N3FObVBRWXpsTUx3Z1VGUUY3QWRld1RvZS9ZaXVBYnFjS2NNMU13TGZJNGJlL2duRzRjOFI0VTlCUDFHbDgxWjVUTFpmV2ZlMXg2VjhHekpJOTg3VnVLMlk3MTBubEVzSVVBQ3AwREErcDNiNnF3L2JFVUcwYm9MUHpvTnJJVEd0T0l3RWJ1WGlBanhrdmhzL0pBdndJRzY1djZvTlNrN1l4Slp6Rk5vK2oxZklhejArRkJqVzVjV2Yrc2lPcDN2WWhrWFdvNVNsNmFDN25RcjlEemhONzBUT2k5bkJ6SFFSRmxSM3Z2NmVjOHZZeWdJeVlRTmh5OWNpellTNWtkMlJOK2ZXTEI2aUFkUS9ERjd3eUg5OXpJcHJJTlU0TnhldmI2SHlWSlBrNTFYRkIxU0lnU0lycnB6M0VqM0orVmlncGdFYmhWWjZxc0ZsOEFuMlVZcEFsM3hMeTF1Y0JGMnhCdXFaS1licEpVdEQ5RndHZVJrVnlFMXRHcWpIdFFZaC9JTWdxdmZheUxaQnhpTytWM1RDMlZQRnoycm9DeHhOOElMenlLQ2NjeElZNkVZc2cyd0xiMWI5QityV0g0RzhOL3JnQzlEMHJYcm5RS0ViWXArbFhYbHR3RVNRZ1B6cmI1RW9SUHR5OWRpYmxTQmJ4cjRQd0VsL0dueFJsRlpwWWs4RHlmRkpkdU44MTIxWDVtUldLVTY2OW11RzNqSTRMc1hyaGw2QlZWTWNYTjlrYXE5cXpPcjJ2VGY2SXM1T3pWK3hnUU5CRHNNaWRzSjUvOCtVK1pMWG9va3RTN3pCOURqeUVuVFF4V1hPbmhJdzRrN1d6ajZwbStaSTVXMU4zMFFiVkIrUWZPSWZGemtBOFIza3NvRHVJeGZrZytzWTZrUEdzN01jclNXRTJ3MFdaWlRjaURvbVROei9hL0FBUkdhS0xFL2U0a2cxcjBwU0VkNUxxZnYyR1BEMENWRytJSVJzcTk1SE1GclhESWZmL3c5YkxLOHRJMWxaeit3aWYrOVpJQWRUMng5SmNkeDgvK0VNTDZzRitSQmhaT0lpemRuVUNjdmpMdkUzZHZqVDJYQmljZFFGejcxR1NPZWdqZytIZnlzVGE5NHA0NlVzL2craXVXSEEyc2RIdUVHWVNFblFsLzFYa3JHSTF3T3FMYzR4Vy9UeGZjSk9TQlkxZk9JMldOQXlwS1NKM1hMcTFiNGJIbHE2QlZ4Umw3WkdwWElBKzRUamhqY05XRDNoVzBoUXJvMDY4MXRIdGc3K2Jqd0NzUGt2TVV6MEc1a1BaaG0veXAxWnVheUc4YStobkxBc3Z1L01sS25QWXdybFRGUEVMUEN6cnROS1FueFFmTEFhUzFKTWtSeUNHdnhhVGtrUS9pZkY3S2R6Vm54eVEyYzg4eFF3R2NKd2I1aUZ3VElyTEs4dEkxbFp6K3dpZis5WklBZFQyZW1XdTRXRDVKTDlwWVF5czZ1dVRqcFVueTNHQ0JxdG1sU0Y3V0FxYi9TRE5OR3p5TlE3ZmE4Y3o2bzJCdWVIN25zZXd0THJXSTgxMzlrRFk3YnV3SUpsWlBOclFPMTRuS0M0RlJkWVRkNnRHTFJ6ZHpwUlEzWVNOMWVib3FMeURhaUR0dDJFZW8yU3VPTlNYREtrRFBVdEROL3lFWGhDUWNnVU43b0xKMHA5VFRnc0E0SW05M1JML0hYbkVadnF1ZWVoRU4wUmd1eWlFazZ4ZnFqdEcvL3Fyb2RmWFlkWjJYZXZVQTBlM1ExT0RxdXNvZ1o2OU5QVHdjTUlJRUI5T2psQ2RDWHREbEdGaXdZaDluc0thV1laMmhaejlwYUFBOTY1eVJDUlQ2RlNPTHhhblJobzJFc2xJL2V4ZFkzbTZobmFGblAybG9BRDNybkpFSkZQb1ZLU2VWNEhjMksrUEhwZG1BVTdsQ2kwbkM4d1M2TFZwTVNTMTJCNHptMkppeS8vcjNyRnJDajg5d0NWTTRyV01lSGpHTkVxSU9rY0FLSXBoVG44TiszdFdyTHVldkpDVzh1Q1BtUnFOQkl4M281dTlBZ2cyQ294QmNiZUtoU2tneGNzcnkwaldWblA3Q0ovNzFrZ0IxUFpzOFFYMHczMzBSYnQrbitxZkdPS2dsdFRpOVRVSUUrbmFrT3dCVXdsR3pHQ292Y2pGL2VzZVlmaXNUMWtBVFphNUNCcFJFaCtmbmMzTGV0TGg2bEp6YlJ6Q09VN2h2WW1mcUNmUUlFRTJMSy93bnVvN3hLRk01eHU3d2RjYllsN0xLOHRJMWxaeit3aWYrOVpJQWRUMitpRndEMDg3ZW5TOVFtbmMrNlR0R3d5cWNzenV6NmowMEJGSVMvU2JNVmhuSkFDK1pRV1NvT1lTc3prZW5QWW1rUzl5RmNQbEZmakJabWhEaWR5S25zc3J5MGpXVm5QN0NKLzcxa2dCMVBiR2EySUwydjBKTCswNXlxcEVrMVJYUnNQZGRxdTlHL2daQndZdGIwMi82NExKVWM3bVp0dzVLdi80VTg0b2YvWndsNGJwcUY5YXo1TkpyS0trRi94aXl5dkxTTlpXYy9zSW4vdldTQUhVOWgrdGw5UXhpODdLMmgrNS9COVdIZ3pIN1gxaXkyOU9aQ29NZWxYRCtDbFZ5eXZMU05aV2Mvc0luL3ZXU0FIVTlpRVNNT292TWtCN2F2V2FncWRWQVpYemMvZ2JwT2x4MGdzRmpoUHduMHVoTGUxMmVmYTBtb1U1Wit4YXNkWkwvR0NqNDN0Q1ZCVG1GVUxydlRpeWdwYUdkb1djL2FXZ0FQZXVja1FrVStoVUdoRzdMakFNWGhrdEVYYnVyR1Fabm1jdEJMYVQvM2s4dE5iSEFwVmdLWGpMSzh0STFsWnord2lmKzlaSUFkVDIzbHdLcjZjaEJhMFYwQnp0UHpHdUl6RlhibFB4OUNQamlhV1hIaC9zaU1ETEs4dEkxbFp6K3dpZis5WklBZFQyUDRsMDJCdUtCREUzMGt2OUJiRjNTbi94STh6czQ5cjhYSUUyVG5HVFFYakxLOHRJMWxaeit3aWYrOVpJQWRUMlQ5ZTZsUHF1QVRlL3d4VjNYVFNUaVVETkc1T3pteTFuek9NU3IwSWJqczcwK2JmRng4aDdZQmcwMEFNczZjaUt6NG1uVzdicnVPSG1DNDRuWGtmc3dybDVFTGg0RXRaV1Nxcmhma2FwQ29LaWYzaUlCTlU0bkNnT2J1VzVKVUxUdzFBSUNaeUFDRXhuOXc2VzJpQlZJcTJVVWNXRjZONWRrRU9ER0FJd0lXcDRZUUI2d3JTMGJUd1pML1hvR1Y5WHNKdzNyei9FMjRWenNBTVlKMWpwS0F4STEyZDcwbC96QUNZQ2tsVS9kdFJBZ1VuS2ZDQ3h3Y0xRcTRLUXFBTGR1bXhRd3UrZE5CQlVvWDRtUHBEemhUbnBVY05XZXVkbFRmdmRBNlZhZldGeHkwR21McmhiZU1xQ09xNlRIcDdWT1pTVlVEcDU2bm5LOE9qMGJycm05QWQzSHplNGFpdFRzZzJVL2ZjSCs3ejFyY0VGUXJ3QVN1TUVnRlQvRGJnKzBuMCtvY0dEWG9nendzeEFaRHlhU3ViUnNtdFYwNUJRRlRKL0JOdnYvdWY1a1NZOWkvOTdLVTdJRm1ZeGw4c3B3emtUcmlvNGpBUkg2WndUWHBSbEg5NlRaZGQ5NHAycFRhbEwyYnRJS0lLNVdrNzRLNXdIMzJTWVRzaFZPZi9peXl2TFNOWldjL3NJbi92V1NBSFU5c1FzVkp6bS9wWUFmTmZWaFhHUk1KNlNvRDJvZmtIOUorWlNuTGZESkU4MGo4bkdXU2pmR3FuUDhtM1E3c2NsOGdkY0VzVlNEVnhxUVN4d2FpUlV3REJoNU9UQ2w3RHZvWnFEd29peHAwTzVWcUt2eXg4V0NVeU9PZmZ5T3JBZjU1b2VVS25hNXAySUF3Y3R5aDRJUm5VbjE5UVJ4SWRhK1R4K25LZkQ0R1JnRU1QNUs3OGZiL21lb1BrYkFkSFBVYkNmNnlCOHlPNCs5NldtUU1xckVpYXpLZXladGpidmxpa2JPZU1QNWZDOG03TzFPL0NCbmhmbk9yR1l6SFp3SGtDcWN3eEFxckI5V2tiTEx5SE1adnA1Z0dncklvS0doRkhENWJuZjlmQXp6cFF5K3c3ODg3RGtKeXZ2MnduT0orS3FsbVpBb3lIVmlINDNGejBYYUEwUm1tQmJwSEpmQUJjSmwycEFrS29IVlVjYmQ2eDVDelJSOC9PQXRucU92TnRDemlobTdXbDc3djFkUGxGSHp4M0xLOHRJMWxaeit3aWYrOVpJQWRUMmxoQkYzSDBQbzlGRVdDQXgrdjBuZmdVc1lXZDJpd2g4OXlBTXI2YXFSZHdiTVpmY2FJUHJmTUdpaDhRNlJVU2RHTnQ5cjJhVytRODVxSEZKdGk5QWZXTStuK2xzZ2x3MnljV0ptOEhCQmtGTG1RMFdwc05nRUFqZFNqLyt3OEJsMVVVd2h4bkxrYy96c2l0S0xSdHJIQ3JOV1JjUDlWTDNUZDhIYVVPNmZTbHFoMzZSdWNmdzhUUTFCMU1Xb3VwamhQUjhPVHorQ1VrZHlLUGJFN1VqMVVEcGg5a1lhcVhQTWwxLzZtcHEwMmJMSzh0STFsWnord2lmKzlaSUFkVDJPUGZacWZFclB3dDhmSmxvbzNGSG9ac0hqM3VOUjB5T2pJU1pRRlhmaGRXWWd0VW1iM1hOSURIb0hHeFducTVNNmRSL2hCQm81VjRpK1RMWnZNVXFlRkpjUjRueTFURFJkOHRPM2RCZDkwNlJ3bi9CQ3FIS09PMEdLTXZ4RkE5djhmVG0xTVBmeXJnTmxzd1hBdVpqeUg5c3ErNTB3bFpocW9KTVZsSzFVcSt0MUI4SUtZZVkyZDMvdzUzdGVlOWdTN3RRSUVTS1ZMUlJTTWV5Y3VMZ29vTUhKSGdoTFpkYnlKcDBZKytrRXFxMXJBTHZFS2NmdWRPdVMwMmExTzZFMzFBOVl5bVFQeVYrb2dBNVJhN1lNaUxnUTYwVDBlb1NrK2NpaTRoUEtKeGUvNGJlL1gzMk44cElJQkxIbkdxVHRqRWxuTVUyajZQVjhoclBUNFVHTmJseFovNnlJNm5lOWlHUmRhamxLWHBvTHVkQ3YwUE9FM3ZSTTZMMmNITWRCRVdWSGUrL3A1enk5aktBakpoQTJITDF5TE5oTG1SM1pFMzU5WXNIcUlBZVB5Q05yREozNWR6VXE4c3I3NWs1cDlzZnNOOWY2ZHp2eEFvRWdOemd3VnpLUEZseFdxd3pVd2F6V3lkR0NTV3BEbEhLZ09JTFlIaUx6WmRmSDVwdGNsNlBpQ0RiVWd0eE5yUVBLTmdYVUJZQXBLNEYvSjl4Wmw5SlB3MU1yWUkxazRVcDdHTVVhYWNYdHoyaWxEUEY2VHhQQmJyU0N5aU1Udm9GWnlyeTZRNW00OXZjVktna1JPUC9QQjEwNnpncXpWa1hEL1ZTOTAzZkIybER1bjBwMnlPZEVoL0N3Y3VGWTJORVVhRHVJQm9neWJDb0FTcEdTdi9kUC9OYTk5YWFmQiszdkE2eEM3c2c5MWdHUm14dGxYTnZZaUNNbUREekNaaE1mbmYvcWh4MWY4dklPRHJqTDVpZDZqeEhybWhBUmNVT3hENGo5LzU4V3RKWXZhbXRDendzNjdUU2tKOFVIeXdHa3RTVEpNcGdadGl6b0FYTjU5aFErVTVDaElRMFVUaklwQ0NoY0F2V3A5L0NIeW80Umc5L2lxaU5MU0JPVzQxcFl2Z0dVN3RIMWlQdWhleDE5YlhNNW84RTZXQ2pPeW5wN05nQUNWMytSQXo0cmFsMWhuYUZuUDJsb0FEM3JuSkVKRlBvVkMxUU9DR0RPL28xeFhiNjhnR2lIaUJDc3NIN1drVHN4VGZQVHFpdVhHMk5pV3N1b05jUC84NDQ3VE9Ed0J3UWh4YTFmM1JGTDBxVnlscUdyYlBlcWZnd1FYMFROdUJxOUQvTlRISXloZVR1d0FvVllHOHY0bE1qN29ydm51blV3d2drNlVYKzNVVWJMYUFaNEttdGRSM2hUc3hLaWlLNFJyaUVwMDc1RUg1MmxkalJKYjR1YkkvUVgrcWRyVEx4RndJZFllUC93aWlrTlZPWFBNQ203dUh2cmNJcHZocWNWdFZFWCtHOWFMOHZQbnpjK2hIbnhBNzA4YkQ2TGZKTmdhM0Z5SEtpQlIzVWY5bjBEZ0hHTjVYMWh4R2xRYm04VVRMOUxJQnZpRDk2MFY3SlF2bXFBaC9rNHBkZ0c5cXc0VWdoT2hqRXk1RG1DcCtkdjRSV09VT2FtNXFkK0tlZ2trRVNPRzhrUVFlcHpwUXkrdzc4ODdEa0p5dnYyd25PSjhDSlJsMUVPRE0wUVl6a3pNdHY4WEhMSzh0STFsWnord2lmKzlaSUFkVDJDb3Ryb1JQcjlMQUwxS3QrZDdEM01kdHhOYXNMVHVKZERJK3FOYmI4UFR0UHV0L3REcU9QWGkxMXl1NHpWMzNuUlk2RmovWlI1b0s4b3c3a1dtYnMwK0U4R09oaEdqRjVhN3NiL1FYdzJRT0RxdXNvZ1o2OU5QVHdjTUlJRUI5T0RDV09LQisxdnJGS1RGaDhmV29PQmdMUkpyRTc1MWswU2FERGxWTjNpc05KQU9zZlhqekd2b1l6VzJiYXBqR2xxeWpqNmZ5QlUrNUl3TjhGcTRsQnZnTjhZSThWTWQ4YmJ3SWp2SjV2S1dBU2ZBQUVCeStMRFZjNnNYdGNzUHZXdDMrc3VzOUkyMnpLMlRqN2hTNnA2TXNyeTBqV1ZuUDdDSi83MWtnQjFQYngvYUx6U0xRbXR3TzRXUm9OMjJLWVZKQTMvWHpTRWdiZ25lZ3hxcU5PQmkzdGRubjJ0SnFGT1dmc1dySFdTL3p2N3EyVTBIQW1TSGNiK250dGxzVkxqTWpSd2phT2dBdFJlajNkRXZTUFZGdy9pMGFDSzB4TVFiTEtoV2J4dFFDQmtsZkZhWVZGTFBaWkUwbjNTL3hqMUJQVG1GZGFVR3laUloyNlFER2hPTXNyeTBqV1ZuUDdDSi83MWtnQjFQWXpMTklUNjdzd2hKMVRFbklBTGNVcys1Smx3SnU3bXhUUlU0V1hBbkJQMTNnZTVnVmpqMU5hSjY4d3VhUGlWaDdBZDZVUFdXZ1I2d0xJUG5UVWZ0RmowcDZWWFNKUHVUZWF3UlJRNGMzY3JYZVFtdENIQ3BVZ1hLVm90Y0RkeldBVFRuT0tKVnlQMm1MT2xiTWg1dk03K3U0Zkw3TTE2ejg3U0pFSFRUVG1tK0s5TkhOcG1TbXdKYmhhc1p3ZGd4L0FkNlVQV1dnUjZ3TElQblRVZnRGak9JaWhGL0MzMWdzSzRFdnR1dXNtVWs4OWNja0FQNWl2bXB5R1JMNjZ4S1QzYkJBLzU0bFZPaXJWeHJaUUIvdzdUUzdsL0VlLzJvMUtFVUw4cDdEdG8vYzVzblFKbENTVWZERERPdWV4bVhqQU9iUWdzMzdiTER5RTc0WUtLYkxSZHd4SmVFa0NqRGR3THZNdUpHcnNDT3oyT3RqQVBJUVRrakNoTkp5V0N6U0VkelhLTHFJZ1JLMmlwQU1GZ0tSdmxSYmFzSFBsUnVzU2cwcFJOVlVDUVozWFBnbDNxVElsYU1Ib2JCUVJuUDAxMXZvaDV5NkRCTUtDMTZsWU5EOFVmbXlnY2xUWXNaQ2VkZXA3VWxvRHF3Y2pIYTZLSDhXMVdGWjlEWHhQM1d2WUYwUkRyWVRiNGpvUW1JVlYvY0puZWQzY1AyVXJ2cGxyNkxuZFRya05xQllBcEs0Ri9KOXhabDlKUHcxTXJZSTFrNFVwN0dNVWFhY1h0ejJpbERQRjZUeFBCYnJTQ3lpTVR2b0ZaeXJ5NlE1bTQ5dmNWS2drUk9QL1BCMTA2emdxelZrWEQvVlM5MDNmQjJsRHVuMHAyeU9kRWgvQ3djdUZZMk5FVWFEdUlPcno1c21adUx2SVhtV09wRVhXaUdvSWxpeWtwbkhjbWxaWkhsSnBWdXZvVXowRzVrUFpobS95cDFadWF5RzhhOXFSb3JWWEl0L2hhOTRLYzJ3ZlRjdkxLOHRJMWxaeit3aWYrOVpJQWRUMnp1WmhGcUhWRlJKVWNqME8vZVRHTGwzQllMVlBEVVFhTDlmSHQzNVN2Nm1GSWkyRUJWN2xma3BqbFNMUlhRTzlDendzNjdUU2tKOFVIeXdHa3RTVEpJSElhdzNnWGtxQW8wZWp3SlhyMjJLcmJZZko5RzVYODlQbUNIaXlwekdKQW8wM2NJMjB3TDJFd1czalRlWTdiL1lXWUNwbHJOcU1DRW44R29rNG42V2ZiL212YzN1aVN6MlNkbTc5VWlYakpqZkwzMDVoVTFiK0JIangyS3JTQ0tnRVZvL0JHUllSdC91dHlrdHJpNlpCZUhCVUxhbmc2cnkrL2RSVjVOM0VzRHViSlJYNklEWlB6ajh0d1E2U2N2a3ZuNGNLQzFRWitUcE1VUnJNL1JUaEJNRUVUcFRmcXlPNFpNYXpWc2JJZVIwNGVMRzJxWmJsR1hyVHY0VUVheFQzSnlodE5HWmVTaGJnK1BkNzkvMjQzelhiVmZtWkZZcFRycjJhNGJlTVp0eXlnM3lhVE45enVSaXI0TFZ6b2x0VmR1cUlwUldNbHhXZnIreEJ4UEJSUmhaQUFMZU1VQWdiNXhVRHoxU3hzdGNZdTZtcmZFaFBpOCtqaitHZGtLYmlRbTJWeWM3ZEpaVlA4VU9RN0R2YXg5OFRvM2p4UUFEdTlieVlEaVF1ZEgrTGxHYnRyUFBrMUJHNXN0SjFTMnAvbm1SWFo0SU9BTkxvRURuMnpTQkYzRE1DNmRzNzZqZ3YzNWI0eUZUeHl5dkxTTlpXYy9zSW4vdldTQUhVOWhRdjNyc3dzQkg1WW5OQk8rMDEvQm5PbERMN0R2enpzT1FuSysvYkNjNG40V0V4cmlTN0RMQ1pkdWlFT0prWE12ZnlucEVyMWRNOHBrTzZ3OXpZK1RzdGZnRDRjUWtwVEl5NVkrR3lwU25Ib0RMaW5SMGlmclNqd0JSeDgvY1luTTZVTXZzTy9QT3c1Q2NyNzlzSnppZHlTNmxidmNkWXlVOGI4RzZIYXoyU2Fzdmc1RmVOVnVtbWNlaWpvaTh6RFYxdUh6bHBKOWJ1VUFibUxQMU53ZU5ldXFLNllWdnA2dkNlRTRHaGZIeUhZS2k5eU1YOTZ4NWgrS3hQV1FCTmx2VHYzNGJKR3dzaDdjVVlYeTMxd1pUT2xETDdEdnp6c09RbksrL2JDYzRuaWNmbklybnltTStSaGNWTmZadXV1MTVSVnlHYTY0S1BtNDVRS0FXZXUwbmhUQkRRWXdGRnNILzlUWk1STjJsYkh0NFloL2NWRWgzSG9DWUZqMkFnTVVvYjhLbjFLVmlET3N2ZThqbWg2OHVwVWhtSDZJN0hlWGkxWWRUSFVqNkpobmFGblAybG9BRDNybkpFSkZQb1ZLSmZQd2gyR2tYRDdGcUY1MEdSOUdiandYOGZiZmpZd29yZGtYczM1RG9wQTg4K1l1NCtTYnpnekpLRXdpSmZxMW9KUzhDbWVodWNPc0xGclJUV21ucUF6QjhEMDhUWXQ0TG9sQkttT0ZEcDFYVlhTVnFtYXhwSGt4enNvRzk3aHMvOXB3VzVUbEtERnVhd0YrM1NQZ3RoOGJCbFF4NmpJYVhlUm9TWXY0ajdram5oY3pxL0JGMitweWZEd1NBalNCalhOK0E0azRGOTVJSFgrZVBFd0Z6dUp0bVRDTGY5dlRBeFdFOG9jUzVlQlBlTytzRDRRdy9CMi8xbzdGQmhCeVlzdG9EM2pUYitzeDhnWS9jOUl2dnIzS09qWmdPU0R6VHVmeThNN1ZYaFB1Mlo3UFNOckw5L2ttQTZ5czV2MXRLbStqUWF3djMvUUhYNDJKOXk4aEEydUxrRmFOeU80WHhDVjB1clRwaUVXY0dNTXIrbE9FSnlkNytuTm1Ld2o4WkRFVit6UG1MSExsQ0hJQnRNdTR2TEs4dEkxbFp6K3dpZis5WklBZFQyY3ZJN2NPTk9VeHZubi9oZTFJRVBrNllhY2oycmUzaEtzcm1jSTgrbU80akxLOHRJMWxaeit3aWYrOVpJQWRUMlZvVDVQWDdUblZvTDMzS2VxclI3YnFjekYvRjdoY0UvMDRIbDBOMXZJczJWOEZaUS91aGN1U2JzTmpjeEJRYi9Ibkg5Nit2UC9sL2JIMDJRdjN0VmhIUXY5Y0Z1cUpVRWFzclR5ekNYYTBJcjFqa0xGOC9yaHZqY3Eyank2aTE1cjZJMTdlaWZDaXkrZFlXNnI2dlFYV085cFliTzJzbmlYWDJ5VHhWc29rRXlUTEJnODFVRC9jQ2NTbWZrNnF1d2NHUXRxeno5U2JxNjI0b3J5UTZ1MlpGWW5vNS8rRnFiaEhScXZOcExld0lFUXNHa2xqa3JTRENBNU5aVG9hYzk1RTVOemVod2g4U0NreW9oS09oUWExZkNadUhkdlc5RGVCcVU4WGlzMUx2YUVYVEJ3MDBHZ2RvS09PQ1NxcVZXZHZHaEtyTElqeWExMXlCcDJMTXR6T3JzOG8zLzlrbmx4U1ZhRVJ5cFdaZHNwQXpNc0V5anl6Z2dJVFBqWlRUK3ZrQk15ZHdtMHU2NU5MZVNqZUtJZmV4MjRUTjBodW4wSGxXaUhRSVUrM1l4NllwcmkxdERod3ozODNRcGhFeUtGaHcwaFpnMXI3bEd2MG5wVW9welF2dVNaY0NidTVzVTBWT0Zsd0p3VDlkN3Bnb1JuUWh1ZkZEQnlFZC9qazBLTStGNStFNms5SlZ1dDVBcXFxSWpEcU5UaWxrVGNaY2gzejErWW5OM1lzSGJQK0FqV0hqVmNZcUhNUGVNNjF1aXFlUWRxUEJSVURBS3FIeVh6RW9SeUxKQ0dubjM1MHVhSXM4ZHhQeFhjZ284Ui80UTZpTXBZVGFWSElPcEhKbldoSm1Jcng1SDJiY0xiZlQ1L1FtTUlNVzVMZ291czE1eS9BSnJSMG5WbWVWY01KaXhVcjh4Qjh3T2Flc3FZYWRGeXl2TFNOWldjL3NJbi92V1NBSFU5a09Zb2dndWw0NHpJWjYxTHJvRmdYS0dkb1djL2FXZ0FQZXVja1FrVStoVVBiVmMwODBha2toTFhPcjdjZzhWRVV2WmJ6MEhYOGhQRnNhYlVENnIrYTJNTGwwRk55WjJFSFlrVjd6QUIvV05BRVpMcTNhdXYrcDdPYnZYN3MvcExsUjRZZ0tWQ1JPQlZ4bE44ZzNYV0tuMzY5TjFqbG9zcVJCZERNZkpCQmJEVHpjazg4M0RZSjJOTmRWUVlqT3Fnc2JLbmxxOFkrUGoyN2Q1d0MrYVpLUzVDLzdDZVN1OGZySWdiZ2luaGY3USt3MjE4aDlBdEtUWENRaWxnZXVSTEk2b2ZKVGRXdHlIQkNjYU5yN1g5aGdwclIrWmtSRWV3UW0wamltTjduQzd5eXZMU05aV2Mvc0luL3ZXU0FIVTlrOHVaRVVQckIyVjFMbThsT3kzYzgzSEljUlc0RTE2QjdsY3BMSHFaYWVwRGhrd29DL01hdVFMTm81aUVXMmV1Y2VqbWZnYVpOTEcxbEVRUzlvR1pCTUR4aG5RZ3Evam83bkpZeFdHaHBERkU2U3NoU05wa2MrM3VrWG5nYWRmaUg5TjgwQVBYSVh2dThxais3NGNITGZPbERMN0R2enpzT1FuSysvYkNjNG5oQTAxa3NOV1BpTGprQWI4VXRLSnE0aU5PTCtFREV6NnJmWW5hNkVEWUQ3bnRzL1NPTE4zUzV4VVF3RlFSLytMVFRwN1JidWdaMis2Yk1xQXlacVllOHNyeTBqV1ZuUDdDSi83MWtnQjFQYjVyT2FSd20xSGZncmxjZzFaRWczUlVubk9oRjBZWUJ5VVlYZEJPRGs3cFBNbDZTMWFsOVNySGZneW1UT2RJTWJYSkZiVjcyQlFsandVSzk2R1YzYVFvaE1qazAvSStSS2RpMDg5RGdvTWJ3QTMrVmMvL2VIcWg3NzZZTmVGaHdrTnE5QWRESjRuL0xSRDNXdFlKWEFTdDNpdkM0dTlRQlRmYi92Q21OSmkvZnphZXM0b0pBS3VTYzBDbythdTZSWnlweDVENWpMTm1YTTNGOFlacGc4eVZnUVh3R293OUY1M1RQdHdFTGhFYkNkVUpPZyszV3ZMWFJrV2NwWmFsZzRLMTU5YUVNL3Z3WXdDcTM0bHhrU0ZobEt5VFVnNVJzWGZSTHBhTWhtMGVaU0hkdW9ESE5mNFoxb2dnWkd6aWtvR29wOGMvenJvV0JvTi9hVkttbjhzNFR5RStVQlFlenYxZkxCZVV5QkdiSDhKWEEvNXUyMThFWkJCUXR3M29xRXY4eUoyRGNWZEtOeG16dEI4TG1uSCcpXFxcXG5cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLpobXpnaIt55m75b2VXFxcIixcXFwicGF0aFxcXCI6XFxcInB3ZC1sb2dpblxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciByZXMgPSB7fTtcXFxcbnZhciBkID0gW107XFxcXG52YXIgaXNsb2dpbiA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvaXNsb2dpbi50eHQnLCB7fSk7XFxcXG5pZiAoaXNsb2dpbiA9PT0gXFxcXFxcXCIxXFxcXFxcXCIpIHtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB1cmw6IFxcXFxcXFwicHV0VmFyKCdteV9hY2NvdW50JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDnmoTotKblj7fmmK8nICsgaW5wdXQ7XFxcXFxcXCIsXFxcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcXFxuICAgICAgICB0aXRsZTogJ+i0puWPtycsXFxcXG4gICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICBvbkNoYW5nZTogXFxcXFxcXCJwdXRWYXIoJ215X2FjY291bnQnLGlucHV0KVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXFxcbiAgICAgICAgICAgIGhlaWdodDogMSxcXFxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0VmFyKCdteV9hY2NvdW50JylcXFxcbiAgICAgICAgfVxcXFxuICAgIH0pO1xcXFxuXFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdXJsOiBcXFxcXFxcInB1dFZhcignbXlfcGFzc3dvcmQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOeahOWvhueggeaYrycgKyBpbnB1dFxcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXFxcbiAgICAgICAgdGl0bGU6ICflr4bnoIEnLFxcXFxuICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgb25DaGFuZ2U6IFxcXFxcXFwicHV0VmFyKCdteV9wYXNzd29yZCcsaW5wdXQpXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcXFxuICAgICAgICAgICAgaGVpZ2h0OiAxLFxcXFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRWYXIoJ215X3Bhc3N3b3JkJylcXFxcbiAgICAgICAgfVxcXFxuICAgIH0pXFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IFxcXFxcXFwi4oCc4oCc5aSn5Lya5ZGY77yfKOWFiOeCueaIkSnigJ3igJ1cXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6ICQoXFxcXFxcXCLkuI3mmK/lpKfkvJrlkZjliKvngrnnoa7orqTvvIzlkKbliJnlkI7mnpzoh6rotJ9cXFxcXFxcIikuY29uZmlybSgoKSA9PiB7XFxcXG4gICAgICAgICAgICBwdXRWYXIoXFxcXFxcXCJpc3ZpcFxcXFxcXFwiLCBcXFxcXFxcIjFcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuoblpKfkvJrlkZjjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXFxcXFwiXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IFxcXFxcXFwi4oCc4oCc55m75b2VKOWGjeeCueaIkSnigJ3igJ1cXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6ICQoXFxcXFxcXCLnoa7orqTnmbvlvZXvvJ9cXFxcXFxcIikuY29uZmlybSgoKSA9PiB7XFxcXG4gICAgICAgICAgICBwdXRWYXIoXFxcXFxcXCJsb2dpbmluZ1xcXFxcXFwiLCBcXFxcXFxcIjFcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuobnmbvlvZXjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXFxcXFwiXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSk7XFxcXG4gICAgaWYgKGdldFZhcihcXFxcXFxcImxvZ2luaW5nXFxcXFxcXCIpID09PSBcXFxcXFxcIjFcXFxcXFxcIikge1xcXFxuICAgICAgICBpZiAoZ2V0VmFyKCdteV9hY2NvdW50JykgIT0gJycgJiYgZ2V0VmFyKCdteV9wYXNzd29yZCcpICE9ICcnKSB7XFxcXG4gICAgICAgICAgICAvLyBUT0RPIOWQkOS9rOivtOi/memHjOWPr+S7peaUueaIkCAkLnJlcXVpcmUg55So5rOVICAgICAgICAgIFxcXFxuICAgICAgICAgICAgZXZhbFByaXZhdGVKUyhcXFxcXFxcImR0ZDFQM2RURUlUb25zZ3JORmZvQmlnaTVsamF6MFBlR21ibU1qanI5SDVuZnZzbkJ3N0pGcDM3Y24zZWdxdTB5LzB3VFcyb1U3cXRNd1FJQWlMaEVTVktCbEtrUnZXMHBuUERkSGw3UEd3d0RUNUdNMXZCc29nYjdZRHB3bXdWOHJ0dGFkME81WUpCdnBqWDI5aFVCcFNzaWFvN2wzVWVienhOQVdZaWo3WXdIV2h0MGpWYmg1U0w3UFhWbzE0OWZQU1R1eGw4QSt2TFVXaSsyV3hHck9aK1F2dHJZSW4yOEJxUzhQUzd6ZjBSMHlyOWhYempiTU9PWDJDT2RWWUtQZGJHc3h6a2xWNVgyTExtS2JQZ0VmUUVsQ2dNWnBZdW5lMEk4T3lJNTVITEs4dEkxbFp6K3dpZis5WklBZFQyZFRRdkNCYitpSGpwUjZLME1yMGRmYy9qclRkLytubXNtV3Jraml0dXE4eDJoN1UzYlptYXhrcVlyeFNvcHJMaVp2bkJrU3ZFb0lpcVVVT0tpbUN5MDFmM3RSZlNRQmVSNWxnVDVBL3hxZ2QyOGFFcXNzaVBKclhYSUduWXN5M01MWlJoU0x3NWtkU1UzWStkeUNhNlpjSUR4bE9HZVNGTG1JME9DRmJwWmU5Ylk3bktVT2FpMytUSHNhRmlFRXFwZC82blVRRjRUWlJCZ1ZxallFRndXSnlLQUs2REFxb1J2QjJUMGlmMndVdk9sREw3RHZ6enNPUW5LKy9iQ2M0bnlaeGREZlFYTjZScUIraTZOZ1RiQ2pOZDRURlg1ZldCdkhhNXBIclRTWkFoVFc5d0ZBNXdzQURCOTV5K0p4Mlg5UWs0R0xDR3N0Z0djbUhtOTZhcDF1V3ErSzh2R0VaRWJFamtVNTJ0TVM1eno2Z203WWhYZjhlQllCbUVhaUx1TWVVNzVHZTJxUzZ1T29qMjJJVEVVY3NyeTBqV1ZuUDdDSi83MWtnQjFQWVpOeW5YTGwxdGZvRFkzSFpnUGFrZjZEK0FEelFZcXhxUktaQ3RsTkl5YTlrOEM0SDdmYmhMRFhkV0Ezb1Y1eVVPZ2FTWEsxT000MEZ4TnlOWHBBL1pLUzZnWTNCMS9WMit6cHorUTdDbXVlNStxYU8wWHJEUDE1aGpTNGJ4bldyT2xETDdEdnp6c09RbksrL2JDYzRuWHhla3VvVFZVUlk3ZWgrZElGNFFPYVhtYk5qWU5raXFuQWQ4NUZyWEtYb2VnSlpDODVCNEpWcU9XY3VlaXBOYUh5L2R3QWhLcG5LLzVKTzdaNnlhMmxzMi9KdlBPQ1A5MWU2ZzRITytZcUVwTHFCamNIWDlYYjdPblA1RHNLYTVucHJia0lQMmtuRFhYcXRNWUdSZGNpZ2VJUnorT0htbktMbS8rV0NQYTA2MThFcXZNc0dnOWZwdnRVbzIvdG0wUnpZWWk4a3VGR29wVHlvaWtEd2kzY3NyeTBqV1ZuUDdDSi83MWtnQjFQYTFBRGt2aXZrbmNFaFBXUDR3WENhVHd3cFowRzYrWVR2eXA2OHRoRmRBTDV4eDkrblVhNWpXbUpVeXlRK3IxVXNENXNNcWluWTViL2VEVW54UktLQlR6cFF5K3c3ODg3RGtKeXZ2MnduT0p5ZEhQTTJhaDc4ZUF0dFNhaFZDRWIvbDNacWkyaEZraVpKOGd4UEMwUFk3L3F0Mk4wbjhsSEQ4KzcyS1RVRElxdVg1NjVDSVFuY0RXNUtmWFVaTE9uWmJzNlJUcVIwMEx1UEhBeFBJSGhpYWJqa052U1ZRT3p2M2F3ZXJhbWVTTzhzcnkwaldWblA3Q0ovNzFrZ0IxUGJaZkFBKzdnK1lkVE5wZXU5TFJSb29pRndWLzljdTVIcEVnWjJYNndhV2Rvb1kxZzVwQ1hLcE11L2Q3YzNoZFFmTEs4dEkxbFp6K3dpZis5WklBZFQyWTk2c2tCdE5sdk5BeDZJR3B6S044ZU4wT0pDbTJJcXNKSm5IWEpkMWZyeUNNbUVDRkVlYVZicHVLRzNWMDl3QUM3U1lpN2ovYkNCK0RDMTFCU2FadjhCM3BROVphQkhyQXNnK2ROUiswV010WmpLNFFsZnpzTXRnR3FkbmwvRCtcXFxcXFxcIilcXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbn0gZWxzZSBpZiAoaXNsb2dpbiA9PT0gXFxcXFxcXCIyXFxcXFxcXCIpIHtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogXFxcXFxcXCLigJzigJzlt7LnmbvlvZXvvIHigJ3igJ1cXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6ICQoXFxcXFxcXCLnoa7orqTph43mlrDnmbvlvZXvvJ8o6K+35LiN6KaB5bCd6K+V5aSa5qyh55m75b2V77yM5ZCm5YiZ6LSm5Y+35byC5bi4KVxcXFxcXFwiKS5jb25maXJtKCgpID0+IHtcXFxcbiAgICAgICAgICAgIHB1dFZhcihcXFxcXFxcImlzbG9naW5cXFxcXFxcIiwgXFxcXFxcXCIxXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvaXNsb2dpbi50eHQnLCBcXFxcXFxcIjFcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuobnmbvlvZXjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXFxcXFwiXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSk7XFxcXG59IGVsc2UgaWYgKGlzbG9naW4gPT09IFxcXFxcXFwiM1xcXFxcXFwiKSB7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IFxcXFxcXFwi4oCc4oCc5L2g6ZyA6KaB5Y675a6i5oi356uv5pS55LiL5a+G56CB5omN6IO955m75b2V77yB77yB77yB4oCd4oCdXFxcXFxcXCIsXFxcXG4gICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfY2VudGVyXzFcXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiAkKFxcXFxcXFwi56Gu6K6k55m75b2V77yfKOivt+S4jeimgeWwneivleWkmuasoeeZu+W9le+8jOWQpuWImei0puWPt+W8guW4uClcXFxcXFxcIikuY29uZmlybSgoKSA9PiB7XFxcXG4gICAgICAgICAgICBwdXRWYXIoXFxcXFxcXCJpc2xvZ2luXFxcXFxcXCIsIFxcXFxcXFwiMVxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2lzbG9naW4udHh0JywgXFxcXFxcXCIxXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG55m75b2V44CC56Wd5aW96L+QKOKcquKWveKcqilcXFxcXFxcIlxcXFxuICAgICAgICB9KVxcXFxuICAgIH0pO1xcXFxufSBlbHNlIHtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogXFxcXFxcXCLigJzigJzngrnlh7vov5vlhaXnmbvlvZXpobXpnaLigJ3igJ1cXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6ICQoXFxcXFxcXCLnoa7orqTnmbvlvZXvvJ8o6K+35LiN6KaB5bCd6K+V5aSa5qyh55m75b2V77yM5ZCm5YiZ6LSm5Y+35byC5bi4KVxcXFxcXFwiKS5jb25maXJtKCgpID0+IHtcXFxcbiAgICAgICAgICAgIHB1dFZhcihcXFxcXFxcImlzbG9naW5cXFxcXFxcIiwgXFxcXFxcXCIxXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvaXNsb2dpbi50eHQnLCBcXFxcXFxcIjFcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuobnmbvlvZXjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXFxcXFwiXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSk7XFxcXG59XFxcXG5yZXMuZGF0YSA9IGQ7XFxcXG5zZXRSZXN1bHQocmVzKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLnmbvlvZXpobXpnaJcXFwiLFxcXCJwYXRoXFxcIjpcXFwibmV3bG9naW5cXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgcmVzID0ge307XFxcXG52YXIgZCA9IFtdO1xcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogXFxcXFxcXCLigJzigJzmlrnms5XkuIDigJ3igJ1cXFxcXFxcIixcXFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoXFxcXFxcXCJsX2lkXFxcXFxcXCIsXFxcXFxcXCIxXFxcXFxcXCIpO3JlZnJlc2hQYWdlKCk7XFxcXFxcXCJ0b2FzdDovL+WIt+aWsOaIkOWKn1xcXFxcXFwiJyxcXFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMidcXFxcbn0pO1xcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogXFxcXFxcXCLigJzigJzmlrnms5XkuozigJ3igJ1cXFxcXFxcIixcXFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoXFxcXFxcXCJsX2lkXFxcXFxcXCIsXFxcXFxcXCIyXFxcXFxcXCIpO3JlZnJlc2hQYWdlKCk7XFxcXFxcXCJ0b2FzdDovL+WIt+aWsOaIkOWKn1xcXFxcXFwiJyxcXFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMidcXFxcbn0pO1xcXFxuaWYgKGdldFZhcihcXFxcXFxcImxfaWRcXFxcXFxcIikgPT0gXFxcXFxcXCIxXFxcXFxcXCIpIHtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJ+aTjeS9nOaMh+W8lSDikaDlhYjngrnlh7vkuIvmlrnnrKzkuIDmraXov5vljrvlk5Tlk6nmiYvmnLrniYjnvZHpobXnmbvlvZXotKblj7cg4pGh6L+U5Zue55u05o6l54K556ys5LqM5q2l55m75b2V54S25ZCO5oyJ5o+Q56S655m75b2VIOKAnOKAnOazqDrmlrnms5XkuIDkuI3lj6/nlKjlho3ph4fnlKjmlrnms5XkuozigJ3igJ0nLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogXFxcXFxcXCLigJzigJwxLiDngrnmiJHljrvnvZHpobXnmbvlvZXlkI7oh6rliqjojrflj5Zjb29raWXigJ3igJ1cXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS9ja1xcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IFxcXFxcXFwi4oCc4oCcMi4g5YaN54K55oiR55m75b2V4oCd4oCdXFxcXFxcXCIsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL3BhZ2Uvd2VibG9naW5cXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcXFxuICAgIH0pO1xcXFxufVxcXFxuaWYgKGdldFZhcihcXFxcXFxcImxfaWRcXFxcXFxcIikgPT0gXFxcXFxcXCIyXFxcXFxcXCIpIHtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogXFxcXFxcXCLmk43kvZzmjIflvJUg4pGg5YWI54K55Ye75LiL5pa556ys5LiA5q2l6L+b5Y675ZOU5ZOp5omL5py654mI572R6aG155m75b2V6LSm5Y+3IOKRoeeCueWHu+WPs+S4i+inkuiuvue9ruKGkuafpeeci+a6kOeggeKGkuWOn+eUn+eVjOmdoiDikaLlpI3liLbmnIDkuIrmlrnovpPlhaXmoYbph4znmoTpk77mjqUg4pGj6L+U5Zue6aaW6aG15oqK6ZO+5o6l6L6T5YWl5qGG5YaFIOKRpOeCueWHu+esrOS6jOatpe+8jOaMieaPkOekuueZu+W9leWNs+WPr1xcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJ+S/neWtmCcsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJ2YXIgY2sgPSAnU0VTU0RBVEEnK2lucHV0LnNwbGl0KCdTRVNTREFUQScpWzFdLnNwbGl0KCdzaWQnKVswXS5yZXBsYWNlKCfvvJvvvJsnLCc7ICcpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2JpbGljay50eHQnLGNrLnJlcGxhY2UoJ++8m++8mycsJzsgJykpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5oKo55qEY29va2ll5pivOicrY2tcXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxcXG4gICAgICAgIGRlc2M6ICfor7fovpPlhaXpk77mjqUnXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IFxcXFxcXFwi4oCc4oCcMS4g54K55oiR5Y67572R6aG155m75b2V5ZCO5omL5Yqo6I635Y+WY29va2ll4oCd4oCdXFxcXFxcXCIsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJodHRwczovL20uYmlsaWJpbGkuY29tL1xcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IFxcXFxcXFwi4oCc4oCcMi4g54K55oiR55m75b2V4oCd4oCdXFxcXFxcXCIsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL3BhZ2Uvd2VibG9naW5cXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcXFxuICAgIH0pO1xcXFxufVxcXFxucmVzLmRhdGEgPSBkO1xcXFxuc2V0UmVzdWx0KHJlcyk7XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwiY29va2ll6I635Y+WXFxcIixcXFwicGF0aFxcXCI6XFxcImNrXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxuc2V0UmVzdWx0KFt7XFxcXG4gICAgY29sX3R5cGU6IFxcXFxcXFwieDVfd2Vidmlld19zaW5nbGVcXFxcXFxcIixcXFxcbiAgICB1cmw6IFxcXFxcXFwiaHR0cHM6Ly9tLmJpbGliaWxpLmNvbS9cXFxcXFxcIixcXFxcbiAgICBkZXNjOiBcXFxcXFxcImZsb2F0JiYxMDAlXFxcXFxcXCIsXFxcXG4gICAgZXh0cmE6IHtcXFxcbiAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgICAgICAgICAgZmJhLmxvZyhkb2N1bWVudC5jb29raWUpXFxcXG4gICAgICAgICAgICBmeV9icmlkZ2VfYXBwLndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2JpbGljay50eHQnLCBmeV9icmlkZ2VfYXBwLmdldENvb2tpZSgnaHR0cHM6Ly9tLmJpbGliaWxpLmNvbS8nKSk7XFxcXG4gICAgICAgIH0pXFxcXG4gICAgfVxcXFxufV0pXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi6aG16Z2iLXdlYueZu+W9lVxcXCIsXFxcInBhdGhcXFwiOlxcXCJ3ZWJsb2dpblxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciByZXMgPSB7fTtcXFxcbnZhciBkID0gW107XFxcXG52YXIgY2sgPSBmZXRjaChcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9iaWxpY2sudHh0XFxcXFxcXCIpLnJlcGxhY2UoL++8m++8myAvZywnOyAnKTtcXFxcbmxvZyhjaylcXFxcbnZhciBsb2dpbl91cmwgPSBcXFxcXFxcImh0dHBzOi8vcGFzc3BvcnQuYmlsaWJpbGkuY29tL2xvZ2luL2FwcC90aGlyZD9hcHBrZXk9MjdlYjUzZmM5MDU4ZjhjMyZhcGk9aHR0cCUzQSUyRiUyRmxpbmsuYWNnLnR2JTJGZm9ydW0ucGhwJnNpZ249NjdlYzc5ODAwNDM3MzI1M2Q2MDExNGNhYWFkODlhOGNcXFxcXFxcIjtcXFxcbnZhciBsb2NhdGlvbiA9IEpTT04ucGFyc2UoZmV0Y2gobG9naW5fdXJsLCB7XFxcXG4gICAgaGVhZGVyczoge1xcXFxuICAgICAgICBcXFxcXFxcInVzZXItYWdlbnRcXFxcXFxcIjogXFxcXFxcXCJNb3ppbGxhLzUuMCAoTGludXg7IEFuZHJvaWQgMTA7IE0yMDA3SjNTQyBCdWlsZC9RS1ExLjIwMDQxOS4wMDI7IHd2KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvODMuMC40MTAzLjEwMSBNb2JpbGUgU2FmYXJpLzUzNy4zNlxcXFxcXFwiLFxcXFxuICAgICAgICBcXFxcXFxcImNvb2tpZVxcXFxcXFwiOiBja1xcXFxuICAgIH0sXFxcXG4gICAgbWV0aG9kOiAnR0VUJ1xcXFxufSkpLmRhdGFbJ2NvbmZpcm1fdXJpJ107XFxcXG4vL2xvZyhsb2NhdGlvbik7XFxcXG5cXFxcbnZhciBpbmZvID0gSlNPTi5wYXJzZShmZXRjaChsb2NhdGlvbiwge1xcXFxuICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgXFxcXFxcXCJ1c2VyLWFnZW50XFxcXFxcXCI6IFxcXFxcXFwiTW96aWxsYS81LjAgKExpbnV4OyBBbmRyb2lkIDEwOyBNMjAwN0ozU0MgQnVpbGQvUUtRMS4yMDA0MTkuMDAyOyB3dikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzgzLjAuNDEwMy4xMDEgTW9iaWxlIFNhZmFyaS81MzcuMzZcXFxcXFxcIixcXFxcbiAgICAgICAgXFxcXFxcXCJjb29raWVcXFxcXFxcIjogY2tcXFxcbiAgICB9LFxcXFxuICAgIG1ldGhvZDogJ0dFVCcsXFxcXG4gICAgb25seUhlYWRlcnM6IHRydWUsXFxcXG4gICAgcmVkaXJlY3Q6IGZhbHNlXFxcXG59KSkuaGVhZGVycy5sb2NhdGlvblswXS5zcGxpdChcXFxcXFxcIj9cXFxcXFxcIilbMV0uc3BsaXQoXFxcXFxcXCImXFxcXFxcXCIpO1xcXFxucHV0VmFyKFxcXFxcXFwibXlrZXlcXFxcXFxcIixpbmZvWzBdLnNwbGl0KFxcXFxcXFwiPVxcXFxcXFwiKVsxXSk7XFxcXG5wdXRWYXIoXFxcXFxcXCJteW1pZFxcXFxcXFwiLGluZm9bMV0uc3BsaXQoXFxcXFxcXCI9XFxcXFxcXCIpWzFdKTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogaW5mb1swXSxcXFxcbiAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IGluZm9bMV0sXFxcXG4gICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcXFxuICAgIH0pO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBcXFxcXFxcIuKAnOKAnOWkp+S8muWRmOeCueaIkeKAneKAnVxcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0XzJcXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiAkKFxcXFxcXFwi5LiN5piv5aSn5Lya5ZGY5Yir54K556Gu6K6k77yM5ZCm5YiZ5ZCO5p6c6Ieq6LSfXFxcXFxcXCIpLmNvbmZpcm0oKCkgPT4ge1xcXFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0XFxcXFxcXCIsZ2V0VmFyKFxcXFxcXFwibXlrZXlcXFxcXFxcIikpO1xcXFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHRcXFxcXFxcIixnZXRWYXIoXFxcXFxcXCJteWtleVxcXFxcXFwiKSk7XFxcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dFxcXFxcXFwiLGdldFZhcihcXFxcXFxcIm15bWlkXFxcXFxcXCIpKTtcXFxcbiAgICAgICAgICAgIC8vcmVmcmVzaFBhZ2UoKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5aSn5Lya5ZGY55m75b2V5oiQ5YqfXFxcXFxcXCJcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogXFxcXFxcXCLigJzigJzml6DkvJrlkZjngrnmiJHigJ3igJ1cXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF8yXFxcXFxcXCIsXFxcXG4gICAgICAgIHVybDogJChcXFxcXFxcIueCueWHu+eZu+W9lVxcXFxcXFwiKS5jb25maXJtKCgpID0+IHtcXFxcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9hY2Nlc3Nfa2V5LnR4dFxcXFxcXFwiLGdldFZhcihcXFxcXFxcIm15a2V5XFxcXFxcXCIpKTtcXFxcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0XFxcXFxcXCIsZ2V0VmFyKFxcXFxcXFwibXltaWRcXFxcXFxcIikpO1xcXFxuICAgICAgICAgICAgLy9yZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/nmbvlvZXmiJDlip9cXFxcXFxcIlxcXFxuICAgICAgICB9KVxcXFxuICAgIH0pO1xcXFxuICAgIFxcXFxucmVzLmRhdGEgPSBkO1xcXFxuc2V0UmVzdWx0KHJlcyk7XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5Luj56CBLeebtOaSrVxcXCIsXFxcInBhdGhcXFwiOlxcXCJ6YlxcXCIsXFxcInJ1bGVcXFwiOlxcXCJpZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxcXG52YXIgemJjMSA9ICdhbGwmMiYzJjYmMSY1JjkmMTAmMTEnO1xcXFxudmFyIHpidzEgPSAn5YWo6YOoJue9kea4uCbmiYvmuLgm5Y2V5py6JuWoseS5kCbnlLXlj7Am6Jma5ouf5Li75pKtJueUn+a0uyblrabkuaAnO1xcXFxudmFyIHpiYzIgPSAnMCYzMyc7XFxcXG52YXIgemJ3MiA9ICfpu5jorqTlsI/liIbnsbsm5b2x6Z+z6aaG77yI55Sf5rS777yJJztcXFxcbnZhciB6YndvcmQxID0gemJ3MS5zcGxpdCgnJicpO1xcXFxudmFyIHpiY2xhc3MxID0gemJjMS5zcGxpdCgnJicpO1xcXFxudmFyIHpibGFiMSA9IGdldFZhcignemJsYWIxJywgJ+WFqOmDqCcpO1xcXFxudmFyIHpia2V5MSA9IGdldFZhcignemJrZXkxJywgJ2FsbCcpO1xcXFxuXFxcXG52YXIgemJ3b3JkMiA9IHpidzIuc3BsaXQoJyYnKTtcXFxcbnZhciB6YmNsYXNzMiA9IHpiYzIuc3BsaXQoJyYnKTtcXFxcbnZhciB6YmxhYjIgPSBnZXRWYXIoJ3pibGFiMicsICfpu5jorqTlsI/liIbnsbsnKTtcXFxcbnZhciB6YmtleTIgPSBnZXRWYXIoJ3pia2V5MicsICcwJyk7XFxcXG5cXFxcbiAgICAvKmZvciAodmFyIGkgaW4gemJ3b3JkMSkge1xcXFxuICAgICAgICB2YXIgYSA9IHpid29yZDFbaV07XFxcXG4gICAgICAgIHZhciBiID0gemJjbGFzczFbaV07XFxcXG4gICAgICAgIHZhciBjID0gYSArICcmJyArIGI7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogYSA9PSB6YmxhYjEgPyBnZXRIZWFkKGEpIDogYSxcXFxcbiAgICAgICAgICAgIHVybDogJChcXFxcXFxcIiNub0xvYWRpbmcjXFxcXFxcXCIpLmxhenlSdWxlKChjKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgcHV0VmFyKFxcXFxcXFwiemJsYWIxXFxcXFxcXCIsIGMuc3BsaXQoJyYnKVswXSk7XFxcXG4gICAgICAgICAgICAgICAgcHV0VmFyKFxcXFxcXFwiemJrZXkxXFxcXFxcXCIsIGMuc3BsaXQoJyYnKVsxXSk7XFxcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIlxcXFxuICAgICAgICAgICAgfSwgYyksXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICB9Ki9cXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJ+aQnOe0oicsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJwdXRWYXIoJ3piaycsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5q2j5Zyo5pCc57SiJztcXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaycsXFxcXG4gICAgICAgIGRlc2M6ICfkvaDmg7PnnIvku4DkuYjnm7Tmkq3vvJ8nXFxcXG4gICAgfSk7XFxcXG5cXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICBjb2xfdHlwZTogJ2JpZ19ibGFua19ibG9jaydcXFxcbiAgICB9KTtcXFxcblxcXFxuICAgIGZvciAodmFyIGkgaW4gemJ3b3JkMSkge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IHpid29yZDFbaV0gPT0gemJsYWIxID8gZ2V0SGVhZCh6YndvcmQxW2ldKSA6IHpid29yZDFbaV0sXFxcXG4gICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgobmFtZSwga2V5KSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCd6YmxhYjEnLCBuYW1lKTtcXFxcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ3pia2V5MScsIGtleSk7XFxcXG4gICAgICAgICAgICAgICAgY2xlYXJWYXIoJ3piaycsIGlucHV0KTtcXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxcXG4gICAgICAgICAgICB9LCB6YndvcmQxW2ldLCB6YmNsYXNzMVtpXSksXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH1cXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcXFxuICAgIH0pO1xcXFxuICAgIGZvciAodmFyIGkgaW4gemJ3b3JkMikge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IHpid29yZDJbaV0gPT0gemJsYWIyID8gZ2V0SGVhZCh6YndvcmQyW2ldKSA6IHpid29yZDJbaV0sXFxcXG4gICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgobmFtZSwga2V5KSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCd6YmxhYjInLCBuYW1lKTtcXFxcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ3pia2V5MicsIGtleSk7XFxcXG4gICAgICAgICAgICAgICAgY2xlYXJWYXIoJ3piaycsIGlucHV0KTtcXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxcXG4gICAgICAgICAgICB9LCB6YndvcmQyW2ldLCB6YmNsYXNzMltpXSksXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH1cXFxcbn1cXFxcbmlmIChnZXRWYXIoJ3piaycpICE9ICcnKSB7XFxcXG4gICAgdmFyIHpidXJsID0gXFxcXFxcXCJodHRwczovL3NlYXJjaC5iaWxpYmlsaS5jb20vbGl2ZT9rZXl3b3JkPVxcXFxcXFwiICsgZ2V0VmFyKCd6YmsnKTtcXFxcbiAgICBsb2coemJ1cmwpXFxcXG4gICAgdmFyIHF6ID0gXFxcXFxcXCJodHRwczovL3NlYXJjaC5iaWxpYmlsaS5jb21cXFxcXFxcIjtcXFxcbiAgICB2YXIgbGl2ZSA9IHF6ICsgcGFyc2VEb21Gb3JIdG1sKGZldGNoKHpidXJsLCB7XFxcXG4gICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiVXNlci1BZ2VudFxcXFxcXFwiOiBcXFxcXFxcIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzZcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiQ29va2llXFxcXFxcXCI6IFxcXFxcXFwiX3V1aWQ9ODI0NjczNzMtQzZBMS01N0JBLUFFMDItQTlBNkQxNzdDODg3OTcyNDhpbmZvYzsgYnV2aWQzPTE3QzlBMkNCLTg1MEItNEM3My1COURFLTY0REIwRTZEQkFCQjE0MzEwNWluZm9jOyBzaWQ9Y3k5NjFmcTc7IHJwZGlkPXwodXxKSil8a35sfDBKJ3VZfFl8dWt1bSk7IExJVkVfQlVWSUQ9QVVUTzg4MTYwNjEwMjIxOTM0MjA7IGJzb3VyY2U9c2VhcmNoX2JhaWR1OyBQVklEPTIzOyBmaW5nZXI9MTk4NDk4OTUwMTsgYXJyYW5nZT1tYXRyaXhcXFxcXFxcIlxcXFxuICAgICAgICB9XFxcXG4gICAgfSksICdib2R5JiYuaGVhZGxpbmUtbGl2ZSYmYSYmaHJlZicpO1xcXFxuICAgIGxvZyhcXFxcXFxcIjEyMzo6OlxcXFxcXFwiICsgbGl2ZSlcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJ+S4u+aSrScsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL3BhZ2UvemIyP3VybD1cXFxcXFxcIitsaXZlLnJlcGxhY2UoXFxcXFxcXCI/XFxcXFxcXCIsXFxcXFxcXCLvvJ/vvJ9cXFxcXFxcIikucmVwbGFjZShcXFxcXFxcIiZcXFxcXFxcIixcXFxcXFxcIu+8hu+8hlxcXFxcXFwiKSArICfvvIbvvIZwYWdlPWZ5cGFnZScsXFxcXG4gICAgICAgIGRlc2M6ICflhbHmnIknICsgcGFyc2VEb21Gb3JIdG1sKGZldGNoKHpidXJsLCB7XFxcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJVc2VyLUFnZW50XFxcXFxcXCI6IFxcXFxcXFwiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV09XNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS80OS4wLjI2MjMuODcgU2FmYXJpLzUzNy4zNlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwiQ29va2llXFxcXFxcXCI6IFxcXFxcXFwiX3V1aWQ9ODI0NjczNzMtQzZBMS01N0JBLUFFMDItQTlBNkQxNzdDODg3OTcyNDhpbmZvYzsgYnV2aWQzPTE3QzlBMkNCLTg1MEItNEM3My1COURFLTY0REIwRTZEQkFCQjE0MzEwNWluZm9jOyBzaWQ9Y3k5NjFmcTc7IHJwZGlkPXwodXxKSil8a35sfDBKJ3VZfFl8dWt1bSk7IExJVkVfQlVWSUQ9QVVUTzg4MTYwNjEwMjIxOTM0MjA7IGJzb3VyY2U9c2VhcmNoX2JhaWR1OyBQVklEPTIzOyBmaW5nZXI9MTk4NDk4OTUwMTsgYXJyYW5nZT1tYXRyaXhcXFxcXFxcIlxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9KSwgJ2JvZHkmJi5mbG93LWxvYWRlciYmLmhlYWRsaW5lLWxpdmUmJi5udW0tdHh0JiZzcGFuJiZUZXh0JykucmVwbGFjZShcXFxcXFxcIlxcXFxcXFxcKFxcXFxcXFwiLCBcXFxcXFxcIlxcXFxcXFwiKS5yZXBsYWNlKFxcXFxcXFwiXFxcXFxcXFwpXFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpICsgJ+S4u+aSrScsXFxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXFxcbiAgICB9KTtcXFxcbiAgICB0cnkge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6ICfnm7Tmkq3kuK0nLFxcXFxuICAgICAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS96YjI/dXJsPVxcXFxcXFwiK2xpdmUucmVwbGFjZShcXFxcXFxcIj9cXFxcXFxcIixcXFxcXFxcIu+8n++8n1xcXFxcXFwiKS5yZXBsYWNlKFxcXFxcXFwiJlxcXFxcXFwiLFxcXFxcXFwi77yG77yGXFxcXFxcXCIpLnJlcGxhY2UoXFxcXFxcXCJzZWFyY2hfdHlwZT1saXZlX3VzZXJcXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIikgKyAncGFnZT1meXBhZ2UnLFxcXFxuICAgICAgICAgICAgZGVzYzogJ+WFseaciScgKyBwYXJzZURvbUZvckh0bWwoZmV0Y2goemJ1cmwsIHtcXFxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIFxcXFxcXFwiVXNlci1BZ2VudFxcXFxcXFwiOiBcXFxcXFxcIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzZcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJDb29raWVcXFxcXFxcIjogXFxcXFxcXCJfdXVpZD04MjQ2NzM3My1DNkExLTU3QkEtQUUwMi1BOUE2RDE3N0M4ODc5NzI0OGluZm9jOyBidXZpZDM9MTdDOUEyQ0ItODUwQi00QzczLUI5REUtNjREQjBFNkRCQUJCMTQzMTA1aW5mb2M7IHNpZD1jeTk2MWZxNzsgcnBkaWQ9fCh1fEpKKXxrfmx8MEondVl8WXx1a3VtKTsgTElWRV9CVVZJRD1BVVRPODgxNjA2MTAyMjE5MzQyMDsgYnNvdXJjZT1zZWFyY2hfYmFpZHU7IFBWSUQ9MjM7IGZpbmdlcj0xOTg0OTg5NTAxOyBhcnJhbmdlPW1hdHJpeFxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgfSksICdib2R5JiYuaGVhZGxpbmUtcm9vbSYmLm51bS10eHQmJnNwYW4mJlRleHQnKS5yZXBsYWNlKFxcXFxcXFwiXFxcXFxcXFwoXFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpLnJlcGxhY2UoXFxcXFxcXCJcXFxcXFxcXClcXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIikgKyAn55u05pKt6Ze0JyxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfSBjYXRjaCAoZSkge31cXFxcbn0gZWxzZSB7XFxcXG4gICAgdmFyIHBhZ2UgPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXFxcbiAgICB2YXIgdXJsID0gXFxcXFxcXCJodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS9yb29tL3YzL2FyZWEvZ2V0Um9vbUxpc3Q/cGxhdGZvcm09d2ViJnBhcmVudF9hcmVhX2lkPVxcXFxcXFwiICsgemJrZXkxICsgXFxcXFxcXCImY2F0ZV9pZD0wJmFyZWFfaWQ9XFxcXFxcXCIgKyB6YmtleTIgKyBcXFxcXFxcIiZwYWdlPVxcXFxcXFwiICsgcGFnZSArIFxcXFxcXFwiJnBhZ2Vfc2l6ZT0zMCZ0YWdfdmVyc2lvbj0xXFxcXFxcXCI7XFxcXG4gICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsKSk7XFxcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBqc29uLmRhdGEubGlzdC5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICB2YXIgciA9IHt9O1xcXFxuICAgICAgICB2YXIgaiA9IGpzb24uZGF0YS5saXN0W2ldO1xcXFxuICAgICAgICByLnBpY191cmwgPSBqLnN5c3RlbV9jb3ZlciArIFJlZmVyZXI7XFxcXG4gICAgICAgIHIudXJsID0gJ2h0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3hsaXZlL3dlYi1yb29tL3YxL3BsYXlVcmwvcGxheVVybD9jaWQ9JyArIGoucm9vbWlkICsgJyZwbGF0Zm9ybT1oNSZvdHlwZT1qc29uJnF1YWxpdHk9MCcgKyBgQGxhenlSdWxlPVRleHQuanM6SlNPTi5wYXJzZShpbnB1dCkuZGF0YS5kdXJsWzBdLnVybGA7XFxcXG4gICAgICAgIHIudGl0bGUgPSBqLnRpdGxlO1xcXFxuICAgICAgICByLmRlc2MgPSAnVVDwn5C377yaJyArIGoudW5hbWU7XFxcXG4gICAgICAgIHIuY29sX3R5cGUgPSBcXFxcXFxcIm1vdmllXzJcXFxcXFxcIjtcXFxcbiAgICAgICAgZC5wdXNoKHIpO1xcXFxuICAgIH1cXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLpobXpnaIt55u05pKtXFxcIixcXFwicGF0aFxcXCI6XFxcInpiMlxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciByZXMgPSB7fTtcXFxcbnZhciBkID0gW107XFxcXG52YXIgUmVmZXJlciA9IFxcXFxcXFwiQFJlZmVyZXI9aHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tXFxcXFxcXCI7XFxcXG5pZiAoTVlfVVJMLmluZGV4T2YoXFxcXFxcXCJzZWFyY2hfdHlwZT1saXZlX3VzZXJcXFxcXFxcIikgIT0gLTEpIHtcXFxcbiAgICB2YXIgbGl2ZSA9IHBhcnNlRG9tRm9yQXJyYXkoZmV0Y2goTVlfVVJMLCB7XFxcXG4gICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiVXNlci1BZ2VudFxcXFxcXFwiOiBcXFxcXFxcIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzZcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiQ29va2llXFxcXFxcXCI6IFxcXFxcXFwiX3V1aWQ9ODI0NjczNzMtQzZBMS01N0JBLUFFMDItQTlBNkQxNzdDODg3OTcyNDhpbmZvYzsgYnV2aWQzPTE3QzlBMkNCLTg1MEItNEM3My1COURFLTY0REIwRTZEQkFCQjE0MzEwNWluZm9jOyBzaWQ9Y3k5NjFmcTc7IHJwZGlkPXwodXxKSil8a35sfDBKJ3VZfFl8dWt1bSk7IExJVkVfQlVWSUQ9QVVUTzg4MTYwNjEwMjIxOTM0MjA7IGJzb3VyY2U9c2VhcmNoX2JhaWR1OyBQVklEPTIzOyBmaW5nZXI9MTk4NDk4OTUwMTsgYXJyYW5nZT1tYXRyaXhcXFxcXFxcIlxcXFxuICAgICAgICB9XFxcXG4gICAgfSksICdib2R5JiYubGl2ZS11c2VyLXdyYXAmJmxpJyk7XFxcXG4gICAgZm9yICh2YXIgaSBpbiBsaXZlKSB7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICcuaXRlbS1yaWdodCYmUCYmVGV4dCcpLFxcXFxuICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20veGxpdmUvd2ViLXJvb20vdjEvcGxheVVybC9wbGF5VXJsP2NpZD0nICsgcGFyc2VEb20obGl2ZVtpXSwgJ2EmJmhyZWYnKS5zcGxpdChcXFxcXFxcImxpdmUuYmlsaWJpbGkuY29tL1xcXFxcXFwiKVsxXS5zcGxpdChcXFxcXFxcIj9mcm9tXFxcXFxcXCIpWzBdICsgJyZwbGF0Zm9ybT1oNSZvdHlwZT1qc29uJnF1YWxpdHk9MCcgKyBgQGxhenlSdWxlPVRleHQuanM6SlNPTi5wYXJzZShpbnB1dCkuZGF0YS5kdXJsWzBdLnVybGAsXFxcXG4gICAgICAgICAgICAvL2ltZzogcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICcubGF6eS1pbWcmJmltZyYmc3JjJykgKyBSZWZlcmVyLFxcXFxuICAgICAgICAgICAgZGVzYzogcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICcuaXRlbS1yaWdodCYmLnN0YXR1cyYmVGV4dCcpLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMSdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfVxcXFxufSBlbHNlIHtcXFxcbiAgICB2YXIgbGl2ZSA9IHBhcnNlRG9tRm9yQXJyYXkoZmV0Y2goTVlfVVJMLCB7XFxcXG4gICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiVXNlci1BZ2VudFxcXFxcXFwiOiBcXFxcXFxcIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzZcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiQ29va2llXFxcXFxcXCI6IFxcXFxcXFwiX3V1aWQ9ODI0NjczNzMtQzZBMS01N0JBLUFFMDItQTlBNkQxNzdDODg3OTcyNDhpbmZvYzsgYnV2aWQzPTE3QzlBMkNCLTg1MEItNEM3My1COURFLTY0REIwRTZEQkFCQjE0MzEwNWluZm9jOyBzaWQ9Y3k5NjFmcTc7IHJwZGlkPXwodXxKSil8a35sfDBKJ3VZfFl8dWt1bSk7IExJVkVfQlVWSUQ9QVVUTzg4MTYwNjEwMjIxOTM0MjA7IGJzb3VyY2U9c2VhcmNoX2JhaWR1OyBQVklEPTIzOyBmaW5nZXI9MTk4NDk4OTUwMTsgYXJyYW5nZT1tYXRyaXhcXFxcXFxcIlxcXFxuICAgICAgICB9XFxcXG4gICAgfSksICdib2R5JiYubGl2ZS1yb29tLXdyYXAmJmxpJyk7XFxcXG4gICAgZm9yICh2YXIgaSBpbiBsaXZlKSB7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICdwJiZUZXh0JyksXFxcXG4gICAgICAgICAgICB1cmw6ICdodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS94bGl2ZS93ZWItcm9vbS92MS9wbGF5VXJsL3BsYXlVcmw/Y2lkPScgKyBwYXJzZURvbShsaXZlW2ldLCAnYSYmaHJlZicpLnNwbGl0KFxcXFxcXFwibGl2ZS5iaWxpYmlsaS5jb20vXFxcXFxcXCIpWzFdLnNwbGl0KFxcXFxcXFwiP2Zyb21cXFxcXFxcIilbMF0gKyAnJnBsYXRmb3JtPWg1Jm90eXBlPWpzb24mcXVhbGl0eT0wJyArIGBAbGF6eVJ1bGU9VGV4dC5qczpKU09OLnBhcnNlKGlucHV0KS5kYXRhLmR1cmxbMF0udXJsYCxcXFxcbiAgICAgICAgICAgIC8vaW1nOiBwYXJzZURvbShsaXZlW2ldLCAnLmxhenktaW1nJiZpbWcmJnNyYycpICsgUmVmZXJlcixcXFxcbiAgICAgICAgICAgIGRlc2M6ICdVUPCfkLfvvJonICsgcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICcudW5hbWUmJnNwYW4mJlRleHQnKSArICfCt+S6uuawlCcgKyBwYXJzZURvbUZvckh0bWwobGl2ZVtpXSwgJy5saXZlLW51bSYmc3BhbiYmVGV4dCcpLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMSdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfVxcXFxufVxcXFxucmVzLmRhdGEgPSBkO1xcXFxuc2V0UmVzdWx0KHJlcyk7XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwiQVBJXFxcIixcXFwicGF0aFxcXCI6XFxcImFwaVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJldmFsUHJpdmF0ZUpTKFxcXFxcXFwiRjMxZzU0cFBwYk4zcEhQTjlOVDNEMHpRdkVqSlh3UnJmUmlKbUVCdWZVUUEySEhXdFFMUmhBd3FTTXpNVWRJQVJCTUtCYlB0MjhqQjZ0eXVZeFhPZjNDNytWelBEM05KRWVZeTI0T2ZUbVNnc1I0U0hpUFIzSjBPaWZRTW1UQkxNdGYxZFgzazF5LzhXdW9YUE1RbkNYWERNUTk3aHdlem90NTJJT3lLc0c2NE9xNWFHRk41ZGlxVDF0bTI5U3AvR3J0VkpYOGZ5am9OcTRUcnBmeGlIc1VXMVNZczJoZmNzM0pqTmtOT3VRMnBXYlAyc3BvOWNVTDZaT2hZdld5eEJNRWcya1BERVQ2dlF1YUZRbnhSSXBBdWxYSkRNdWZBT3Z6bU41YzBSVWlPanBqNTR5OFNxZTZnMS9GY202NDRXeVBGTXhXOGI0RFdmVGlYOWREZElCZG8yU0xuRDE4b1N1T0M1NXdlZzgrWFFTb3FtZXkzWHQzM3U3UzNhS3JpQ1VZTzJIQ3d6S3UyZGZ1bnBlMExPVWx2L3VtZDVwZHh5LzZVTUtUSE1DWT1cXFxcXFxcIilcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLpobXpnaIt5LiA57qn77yI5ouT5bGV77yJXFxcIixcXFwicGF0aFxcXCI6XFxcIm5ld2RldGlhbFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciByZXMgPSB7fTtcXFxcbnZhciBkID0gW107XFxcXG52YXIgUmVmZXJlciA9ICdAUmVmZXJlcj1odHRwOi8vd3d3LmJpbGliaWxpLmNvbSc7XFxcXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnKSkge1xcXFxuICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JywgJ+W8gOWQryzlhbPpl60nKTtcXFxcbn1cXFxcbnZhciBzX3R5cGUgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0Jyk7XFxcXG5wdXRWYXIoJ3JlcGx5X3R5cGUnLCBzX3R5cGUuc3BsaXQoJywnKVswXSk7XFxcXG5wdXRWYXIoJ2xpa2VfdHlwZScsIHNfdHlwZS5zcGxpdCgnLCcpWzFdKTtcXFxcbi8v6aKc6ImyXFxcXG52YXIgQ29sb3JzID0gW1xcXFxcXFwiNFxcXFxcXFwiLCBcXFxcXFxcIjVcXFxcXFxcIiwgXFxcXFxcXCIwXFxcXFxcXCIsIFxcXFxcXFwiMVxcXFxcXFwiLCBcXFxcXFxcIkFcXFxcXFxcIiwgXFxcXFxcXCIzXFxcXFxcXCIsIFxcXFxcXFwiOFxcXFxcXFwiLCBcXFxcXFxcIjlcXFxcXFxcIiwgXFxcXFxcXCJCXFxcXFxcXCIsIFxcXFxcXFwiQ1xcXFxcXFwiLCBcXFxcXFxcIkRcXFxcXFxcIiwgXFxcXFxcXCJFXFxcXFxcXCIsIFxcXFxcXFwiNlxcXFxcXFwiLCBcXFxcXFxcIjdcXFxcXFxcIiwgXFxcXFxcXCJGXFxcXFxcXCJdO1xcXFxudmFyIENvbG9yID0gJyMnO1xcXFxuaWYgKGdldFZhcignWVMnKSA9PSAn6ZqP5py6Jykge1xcXFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7XFxcXG4gICAgICAgIHZhciBudW0gPSBNYXRoLmNlaWwoKE1hdGgucmFuZG9tKCkgKiAxNSkpIC0gMTtcXFxcbiAgICAgICAgdmFyIENvbG9yID0gQ29sb3IgKyBDb2xvcnNbbnVtXTtcXFxcbiAgICB9XFxcXG59IGVsc2Uge1xcXFxuICAgIHZhciBDb2xvciA9IFxcXFxcXFwiI0ZBNzI5OFxcXFxcXFwiO1xcXFxufVxcXFxuXFxcXG5mdW5jdGlvbiBnZXRIZWFkKHRpdGxlKSB7XFxcXG4gICAgcmV0dXJuICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVxcXFxcXFwiJyArIENvbG9yICsgJ1xcXFxcXFwiPicgKyB0aXRsZSArICc8L2Zyb250Pjwvc3Ryb25nPic7XFxcXG59XFxcXG52YXIgcGFnZW51bSA9IE1ZX1VSTC5zcGxpdCgnIycpWzFdO1xcXFxudmFyIHJ4ID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0Jywge30pO1xcXFxudmFyIHdyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFxcXFxcIixpbnB1dCk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFxcXFxcImA7XFxcXG52YXIgc190YWIgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCB7fSk7XFxcXG52YXIgc3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dFxcXFxcXFwiLGlucHV0KTtyZWZyZXNoUGFnZShmYWxzZSk7XFxcXFxcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXFxcXFwiYDtcXFxcblxcXFxuaWYgKHJ4ID09ICfmjpLooYzmppwnKSB7XFxcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3BoYlxcXFxcXFwiKSkucnVsZSlcXFxcbn1cXFxcblxcXFxuaWYgKHJ4ID09ICdVUOS4uycpIHtcXFxcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL3BhZ2UvdXBcXFxcXFxcIikpLnJ1bGUpXFxcXG59XFxcXG5cXFxcbmlmIChyeCA9PSAn5pe25YWJ5py6Jykge1xcXFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vcGFnZS9zZ2pcXFxcXFxcIikpLnJ1bGUpXFxcXG59XFxcXG5cXFxcbmlmIChyeCA9PSAn5paw55WqJykge1xcXFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vcGFnZS9uZXdiZ21cXFxcXFxcIikpLnJ1bGUpXFxcXG59XFxcXG5cXFxcbmlmIChyeCA9PSAn57Si5byVJykge1xcXFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vcGFnZS9zeVxcXFxcXFwiKSkucnVsZSlcXFxcbn1cXFxcblxcXFxuaWYgKHJ4ID09ICfnm7Tmkq0nKSB7XFxcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3piXFxcXFxcXCIpKS5ydWxlKVxcXFxufVxcXFxuXFxcXG5pZiAocnggPT0gJ+abtOWkmicpIHtcXFxcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL3BhZ2UvbW9yZVxcXFxcXFwiKSkucnVsZSlcXFxcbn1cXFxcblxcXFxuaWYgKHJ4ID09IFxcXFxcXFwi5ryr5ri4XFxcXFxcXCIpIHtcXFxcbiAgICBldmFsUHJpdmF0ZUpTKFxcXFxcXFwiTm0wN3dJWjhVZFF5NDFTM2dDekhaRDFaNXJMZ0cxMlRONFhKMWVpY3Z3NGNpYkh2OTV6TkdtQkhzdUdUSXZiVWNoeVdYd1dNandxT2pHYWZPWmh1dUdIYjFqOS9LcFZrOGl2dHhxUnVVVDE1ZWRMUlNqWm5BQUZmemwzNVZiM2FrYXcwM2lGKzJuN3cwcm9sYjhZOGJXcDNOcVFxNjNGSEp4ZTNiZDRsemRTdmcrWG0zakVWWkl2a09VUGc0QW83VFRpUi84VWE0MzFUMVIyZXJhVGJnTkhDLys5cnhSODhjZW4zT3ZaVkNDSjNORmUrYjZzRW5mUUpxbytZRm4waDFZeVFOaFdsaGRJZ3dDb292MXdOS3Z6TmM1VTZsNkxKSUUvNGVaVzA3NnhBdnVHVzdWaVJ0ZDk5TmxLM2hicmM3d1BrVjErbjNBcU1QeU4wMDl6Q0xFU2dLYVlqbG44SThNZTZBcVJrRlN1elVNRE8za2NyV21pVzZ3eUdqMzg0Z1ozRDFhNUI0ZVZ6VHRqckNLbGt0R3hlQnVIZ1pIT0pRcFBLZXhaM1d4aWFiaDViS3Nib1U2QURXKzR2djZaVFBubThwL2tWSkxUakhhTGQxaGZUK0FpMTVCY21HVkRxRkhSQXhPdzdEQmkyM2pIbHFhczRsNm8zb1NJVXg0RS9TTUVuYkRueCtrNGp3NFlTZ21nNjZSekZ0TmdaK082emlLWDZNUEJhVUhKT29rVDRodFZvbzJGTmIxMGthRnhyTGJ5eFRjQ0JJL1FLditrdkdLUTJidjd2UnNGYUVOa0hGa0xaTkxORHg4blA0NjAzZi9wNXJKbHE1STRyYnF2TXZyUjFmbHhkZUVzODNrdERyZWpxaHBYMkhZb3g1WGplTmVwU1dBbFNlZWZnU1IxdGs5d0I5clVDdkQ1MUZDUWNBT2RqMGZJdWxad2lYK016WkZYNWZlVG5ma0FHdW94Sjh4eW0yZkMwaTlEeHdRRTJrZDZlcGZLRkpzT0l2VXViVmFML2JEK0pHaVhIa05vajZ1ajc1Y244MlQveFUrNXk3TVZacmwzaFljOW1Yc2dPZHBJTmgvSmd1bmVhTGx6L2N0ZnprVkZhUFN2YW1Ja2FFM0txRTVRNHN2dlIvRXlLbHZKSVUwVUt6OS94OElXK2U4blRnSy8yMVhRMW1DMVYxOTdVNWQvQkZlRnFCeG00d2lGSGtCRWlUNGt3V0JTeEEwTGdydWwrc1dtams0ZGtiY01wa1dDOEFySzgrcGFlQkNqT3NNaVY0NERyVFNCemlpZGozU1lRQS9GTG5hbW4zTVFHWHpMelovWEFmemsxMnBabC9xVTByMy9TYnAzeW9uajYzSDljZVNxRFMxM2N6SVRKUDJZNTdxTE04K3RwZk8wU0REb3VvQlpPNUZCb3JwbGUwaHJ6U3l6QXhtbGoxclozN3g5RDRTR2tRdGhnNVNsOWVNTVNhc1l4Y1M1TDBDZWNEVE9yTEZoVUhzVTJYS2hvTmJhTFFoY1N4RGRUYUJvdGZCNDhYRXp1V2hVNlgxY2JQWlo1azlhUWwzaTQxcHVBVkFTN3RvQnEyRzRPSmVuOXFTOGpwQXpDYnhDdUFObWpuL3pabWx6LzJYalY3YnpkV3p3NnVLYWpRdDJWdmhWSUhqcE4zQzBFYWtLR0tMN2tpdXBWTlM4L0xMRTVFOUhZSVlJd2FSQzBlcUVBbWR6dGtRNDVlVXEwVHl5ai80K1dUWTNNbWZiREJzV0E1VzFxSzFabFVlWGx3bDFmT09TZjBCMDgrMmxsU0g3cUgvQ0E4UmF6VTFpcG1IU1BJcHh5dys5dHpwbzB2Sk9UTzRwUTE4bGlDTW94RW9MbFk1TDcrZDlmeFJpbHAwUm85L3pXL1A3M3pDT0FCQ0VzM0ZjendqeTJVbHlDU0I3ejRnUE0xSnpsU21SR1gzaU0vM3lGTTdvd3dReUZyNzd6SkpLdHAwaXVnL21ON3hkYlJCbnJRYjJiMi9wWVBEV2JIL3lJcE91bDJpVmlYYWVtYTJWUXM2cUttMHhOdVpNcU9yOHRWcTc3VXpHcCtGWWZhVG5YVEdrV0t4ZWdHNXNpNFc0d244YXE1NStiUDZFQkpYeGp3VEFEQXg4WVArWGtpSzJuZ0V0YmdXdXpwWmhpQVlERVhCc2N2alpaaUxvdGNFQmdJcUg3eXpFdHBacDJZNCtZSG9GUUJ2VFFsei8rbTlkTzJMTmErUW81S3l0WXM1bG1LMjFjQ1VHb2ZQM1JXUjUzTHZzc0E0M25YcUprczA3cFhnbm80YWU2T0xvd0xqMDVZQU9YNXRRZGpOeFNvQXRacExoTXZTZjE0NDkzZ3MrY0hHNEdGblo2N1VoY0N0bzVnSE1DU0d2TjlkRGVYNUpkaEJySTU2WVVxY293eGlxRGg2MzJFcTdsR2lqdXczQmFQMUszdm9obzdBNWdzc2pzdE11VW9hU1NVb0tvV0FHQjJnYWh3anUraFVTNm1yS0czTnRtc2ZoTmxZb0o2d2lSUkZHeGNFTVVTQmgwM3Y1MjBreXlpZm9wZ2dCRUVQNHVNSW1VM0tCalc5T0RHZTNlaDROMk03MWJWWGJxaUtVVmpKY1ZuNi9zUWNUd2dKVWhkeDlEczhtKzl5WWk1WW1yNDczSENKN1F1YzMwWEtRNXp0V0NpcjBHMk1QdU02c0YxYjFZWFhzVzFrK3p0UDRoMUV2QTdyRzR2aG02Qi81ckd6K2xPVEczV2NqcTlNanVnTFFlTzNHRzZNdGFjdkdGT0h3ZFFiTDBYSlQwN1BzMmRBa3ZkWk5qdmZWYjFaTmlvcFY3TmErZytMQ1IySWV2dThkNUQwTEM0WXQ4anVBSHRpM1BsdU9YbWtXbUNGYjA2RURTRUd5Ty9SVU9KdDFRbTJRQytEbG9pRXBlbEIxcE91UkpRVVVGQnNsaVcreWFqL1hnRWkzbk5BM3VUd0puTEtnbGFjclExclpjZnI4QnNoUnpocVFsdHhkYmhXeGZrOFFLdklqSjRMRjFhZW1VR0IvamUzWnRveGgzdE10eE9KQ2ZCMHFlVWpIVWx5bXNjcXl5R29TWktPanhEeXZDOStHd2FjZEc0ZlVrTnlPa3RQUE15YnMvWnJtWFBJZVZxeUJ4b252T1hNL2JEYnB6MHJwOEcxWmVJMHJTb1JsdjExdldOc1BncjZzeW56ZEhZQmE4elBXSWxnVjBaMGg5SE5NbXZMbFZQTXZ3M2UrL2dYRjBmTEtoczloNGpUSGt6M0VyOWp1NEVtRW5GcU9mdWNHL1NDQ3M5ME50a29LUy81dFNyLzAvZTJIcW54UkxURCsxN1EwbFpudmJuNWZ5KzRHalJETzVMSldmeGZXdUtVaytiUTVMMWN5bVo5MXgvODIyZUU1YW9HclVlN2p4L1FkRkRCWGw3Skt0SlhZQnhtRVZhUklQNEN4QU1GcXpkT3llVlN2dHVrd0Z2N0d0MFYxVmppN1hvQy8zd1NKRlI2M2FtM000WllFekFjV29sU0V2YnNXL3NhM1JYVldPTHRlZ0wvZkJJa1ZIb1NOUmhiUlBFRTZpNkJzVUQ3cUtDaTEvZWdKVGpGMEo0S043UFJoR3k3YlRJT1R1K1lhL2Y5TGFkWDFBOGJMc1lzeGxUYk5xVm82SnpQWmFwaWNOY0NkSFBNMmFoNzhlQXR0U2FoVkNFYi9sM1pxaTJoRmtpWko4Z3hQQzBQWTdydG10UEFhWDR1SnNOZ2FCMEJUbHhzbEMxT29Ka0VsTjdHYnAxckJjdEd1VXc3cEwrUklPVFFrQ1lsK2EwVW4yZW1vSHdOdWJxRitKZDVjTzJwd1VvejAzalprOFUzbVdHbWpJcmNjak14QWUvcnR3eXNQNjNiNmlHN003dkxwT254VjN4dkN5ZEtUd21UZGkwbDZDMHozbzV0cXkycGtsN3VqMThEVmVWQ1hDNFZHNTZGK3ZQOEU5VkVNQWwvekNjakkycW1xbHVhNytoM2JybEhnNzk4QVJtNGJkTVBPbWZ5ZG1UR0IwZjdocXpadjE0QjMvY1dZcmFkd080ZXIxOVpiZlZZK3Y5UEpZcjZXT1U2MmlIUmo2WCtTS3R0UFdSK2xZSTAzaXRNcjhEdkY2eEdDK3hwK2hXK3Yvei85ZnJjODFJY0dNSVNlOE1IVFdpWGpBM1BoT1ErZXdINm5mUmVFTlRQVmFCcXJDdGtobk5kaWM4VTJoYzFjd2xGTHo3Zm9MZVl5eU84aWVkWGVGV09PK3FYN2p6OXVuaEl4YWxCaU1JdnNHN0pQOTRkZGp6M244Zk1UYjVNUEJvWDVGY2FmNFpCU3dYZDk4NDRvQjBCMXFvcEVLU2JCcVp4VjlZUSt3cGppbnZMdnY4b0NTdjI2YVlUc3ZFYlhzVGUrTTRBQ1gwdGtVbHJBNmkwNFo1eTZwYWxvWllObThwRFRzSnJrMGptOTU0L1k4NnBDK2dxMXVTZFREa1o2WVpyK0tuSEgzNmRScm1OYVlsVExKRDZ2VlM3MktWa295LzlZYjRVWlIvaFRpVE5Vb0hpRWMvamg1cHlpNXYvbGdqMnRPMVJJZ3RYRXVjcDhYYmZpREJIemtMWlY3TmErZytMQ1IySWV2dThkNUQwSk15eGE0Tjg3SE9SMWZIekVXTjVuTHBjYUZ4bllJK3U0Zm13R2tOdUFhOHk2K1dvV1pxVVJSdUpmeGNBb0wvSW5SOHRSMjRwREtRTHdPaFQ4RHRycXlpN2ZjV2x2NG9HWU16cWxBYVNuWjhFdnIxWU91YnRVREhoRlVMalhZNStPK3d1cXorY3pZWU0vRk5KR1VSS0haY2k4RGZMeVBIRU84VmUwOG5oSGxzWXhZT2FwYWpBL2dCT2NweEQxRzBtQmVBYTc2cTBJY3pDU3NSNjVieE10MFlWY25qOG1wdDdvK3EyUjRBbU5Ka1ZFNGU1TGxZSVJpQ3VHTEdZdGQxT3ZqNzUwek8vbmlSeDJzcXJpTWFnVW9OM0J2RWF2a2xjSFpKcTk2N0hLSFJKU2VMWldUMjkyWUcvY2wzWTNleXgxMTZFTjRkMi9oZis3NGVVRTZscXprL2VnK1pTaDF5NlJJdDdKRmx1S2NYZXV4WldJd2RxcVk5TjgwL3NrSmdZdXB6TDI0bGxJb0NoZ3A4Y3dnQ3NkbWZVQzkvNm5ZREtJNnlidSt2QW5UWVdjNkttSUF4U0t1c3J0a1VGMVlBUTA5d2FwZkpmZlpWcThsUDY5Z3pIbTJJa3Y5a0d1dUhPVTlZWUhxQ0hqVjcrS3FJSncxcmVWdS82bnAydTZ2MGtBK3AxczZzMFhVaEtoWWdvTTJQQ1JNc05BcmZxYS9RRy9qZmx0OUxIWk1Xd2kxNUJjbUdWRHFGSFJBeE93N0RCaTIzakhscWFzNGw2bzNvU0lVeDRFL3lBZllIdXNjbFlQMFpMMk9rSjhiOU1ESWRXWTJxcUdPanEzaHJZWi81TWZMeFdLc0kybS9Ycy9hMkx4VVVRMm1QS2Vya3hqNy9MZ1dvSDBKQ0RCOE11OWx2eTBNSVNOWEdldXlPTSt2R0ZuZWN1ekRtN01RT0NFdW10YldSWEZtL2NmYk1UZVpSNVd0aVMzSkx4V1NucWtRNDZQL01IYncweVkvSHRHVWdZQ1QvTGNSb0IxYkk4T2ptSUI3UmRjR2VMYUtSQ2xGMDdzakcyVDMrT2FGSVVsOFdzZkNUcEF5UU1DUUhnTW9TQ21nNldFbUZ6NHRVZG01QXVKUjFQWkw1S1NKTFBGdStXMU9kR1lsOFhjSGtlajZGUzc2TEFYcHM5ODY4N2hBL211bGJtWFlLWVczWVhkbjZsRENrN2szRXlUY0VuV1lIbGhMZDFiM2VvOGRQanROTGd5UkcxTTRuRmlKdDB1YWU2SXF1ZDFMczdBSnVOMUt5VVpJeUJsd3UvajVxdkxxeG5SbGt2YWJuVkZOYTNOSXJ3bC9leldxNlZ2Z21iY0NpcGkrWDNHOWUxTjJqckNnM0paVnk5N1hVUGFWbE81MWxRZUIvRkJFeHVhVzFZR285SndWaHhrUVlmY1A0Y21DRU56aXdjZkhkVXhMUmJjMHFxb3REYW9Ydy9Cc0pTZ2lFSkZuNnI5Q0w0QW1jdXIrYlFWVTh6K0lTUDJUUUJXV3QyaTdkcWxweEdBWXczUGNIS1NuRXV6elBaVTR4NTJEV2VwRU5pbG5EWlBXdml4YjYxamJKR2tEL3hXWFJ3NzRFQmpFYm9iOTJkUEltVlhMT3VlQkpIdjdXR0tEOFcxQ3hGT0M5MWhqbU9BS1NUSGV0Z005RkREOTdIR3RnajlxejUybDkydXZSa0FNZFhQY0ErbE9CS0ZFQ0xYa0Z5WVpVT29VZEVERTdEc01HTHBEWEtPRGZPVHoxZkV0NG81VXdDQWV0VG1lZ0c5a0s1Um43VkduZFcxVzVaS0ZMVW1vemdUS3duVzNkZDZIS3JwbzNQYkl0UGR1U2ZseDVKaEtRZStGcUxnb1ZLRG12NGtmN2gzMUtyVlRyNE1YM2FPZUppUmdQbjBCMnVUTXJFRHd2QU9RMHZSL3hhRGFDR1owT0w1VTJ3bTZBeHdPQ2djTnM1SG5NOWFlaUtYU3FqSjBPejZpV25xZzdLbTBwaTFkVUs5NlZxb2doUjV1Z3Q2K2R0Y1ZWRTNlTncraHZ1R3FZYVJDK092YUV4cHFkeHBISUU3djd3RUFMREJqRlp4VjBPTjR1OXR4ZjNaaVFXNHlPazc2b1J0OFhlUjJ5OXc3Qjkrd1paVDkrSjhPRlAvN2llTTM3bW1SVEljR241RVU2LzRHdTFyQ3RGWDlUU3NYOGJYYXJQREM3dTBXLzlEOEQ4Y05YQ2VvY05Xd3hTSUFIQUppSFE5cUdrNG12QVZQdGZ6NVkvSkNoSTNCd3RtRm9udmVZQk41d2FoS3ZDc1E0NzZrQ3JWMU8rSk4vTklZdVdOSHMxUU9KTXkxTWl2eUhWY0h2SFExZzcxcFgzejBsR1VldFRtZWdHOWtLNVJuN1ZHbmRXMVdaUHdRbThCWWRLOGtzQkNwNzcvdEVTd3pKWHZmM0Fuemp2T0dKV3U2RXUwTHoyTXo4SmExUDNIWi93ZGxtUStINHFZUUZad0FSSWlISWhLRVN0aEV5bS9TeGZYQ2o2NHlOOGI0WVo3a2Vua1ZzZ3VsanFIWUM1aGo5emsvTWlmcXNnTHpoVktxK2FqTWJEVmkzYUJ0R3Q3MHdpWW5Cd0VjVTFNdEtid1F6K1Q2VGdUb202TDMvQnZaWU9TSkpBdk1ZWmR2R0xkcFpxcWRIbGxJcEZ4Mkp1NHJadHp4bkwzZGg3bXNvWmp0U2JHU1hKTnc4akVJUThmZTB4ZXFCWkZPMnpEZW9KV0tWQXFHTnhKTEVxS0lXQWRNUEZxSXVIaFpSWW1vQXpiWUdDSGxzcmlYOXFSTnVIcmtiNU1IKzN1WnkrSjNIME5EcS9JUEs0SmpLcFp1N29tdEtMRlcxdmQ3ZGkrYjdvVmtYVzJ4TDFNYy9sQ0o4L2FFTzdUMFg3Y09tMFExenFKN0ZyUFNaaHRyQ29Zcmw3aDFxL2xWck9xajJWenRlUklxM0xOcFhDVXoyWVdONHh3U0JPNFZPRit1ME5ZWjBmV2grOFY1U2lmSS9NQW1WbmlDVGhkMWVja1V4QklGN3R6MVNTWDBsRjYyT1REYjVPQi9FRGIveUJuaURyUU5Db0J6NzY5MjhleHdGUEc1RnNwU3FYMnRMcFdabDlWdUcrZHJEcjh2Y2RHcmpVenJGemZ2b0ZMR1hBQ2JOV0YzT0tYbllZWU9VU01BM2h0d3FWd2RuUHk1Ry9tTTgrTmNjV2NuZmduYWlnUXFianNqS3Qyc3MvZGx5ZzB0QkZCNWt1UU1tWC9URjhJRW1sZGJVa1l2eTExUmF0UHkwR2JFY0hrZ2ZhY0p0M3pXdVJqd0JTYkFIUUFYTU5PblJoWE5DVnNlK0JrUlpHWjRsOEFGVlpCeFF1MEZrcFdyNisrYlhyeU1MRWhLZDBnbnE0WHUvS0FQNWJuVklBcWRxZ1ZmbjlJMzdoUExubjFBT2VTdTRTUTJDZVMrVzJEWDhqMmRQV2xxWk1EUU84anN6UHJhL3NGWURaQ0FxWVJnOFBrTUN2S0dXZVJnMHpkdnZDVEhHRnQ3dUFMSW9ITE15ZG02L2tJZ0V3d3FCV1EycGszZ2RTRWNTcmdGVDVmTDFwMUFLUndiV2NNTVRMRHVabEN3cEZJSDVzTFZHT1piZlUrT0NNT2s1MFBZVDBVSllKT2cyUktod3FjQ2lEWFQySC9peUI0TGpIZjA5QnhmeFgyRUNIeTdIT09TNWZyODVMSzNtc1IzTytJcWxDbC9VaHpjTFV5cC9FMTBlWUVjQ01ISFdqeHdiSDVYSWJOWEVaKzdWYkdVcU51ZElqUERPRDdlZUpBL1loMlpmVGR4QlpVRFlvR0pVZmxVM3NEb1BPOXk1Y2dTdUN2VVA4KzZBV2FFNVR5bnE1TVkrL3k0RnFCOUNRZ3dmRExMSzh0STFsWnord2lmKzlaSUFkVDJJSFA1S1lnVFhTNVEvU1dDT2Jva25ZWitUQkZ4MW1lc0hHcWFxZ2pJWERIeFRyVHUvYkFxR2VFbG56ZDhsaG11L2F0ek44RklDTTNpUXhCMjRCcGRHRSs2MyswT280OWVMWFhLN2pOWGZlZkZ6NDhiaHRqWGNCL2xrYTZDaTJxR3FSL3l4UlZvRGVKSTFnREZya3Fnd2lTYmlIZjJobFFDcXY0UHF6RllKQ2tGd3BOdW9yeFdZRS9GSW9YSU1nelNDU2hZcnI1Sm02YjgzRG44d0RFVG9WM0FyNmFaK2V1SXc5ZzcyK2xLQTNITEs4dEkxbFp6K3dpZis5WklBZFQyYWtIWGdKWk15eHdiK0FGRjRiNG1iWnN6ajJyTmVLUDNBbjZrUkIwTWF5M09sREw3RHZ6enNPUW5LKy9iQ2M0bncvQnNKU2dpRUpGbjZyOUNMNEFtY3ZGMzEyQkppOGVYNFNjdE5EQnd3RTQ2SzY0T0FZSTB3Z1dHUm9qNVpicFFJTlZBTkdiR01EMVlRbHBjby9yM0EzYnhvU3F5eUk4bXRkY2dhZGl6TGN6ZHd2c01yYVNpYUNTWmtKTG44WU1GdktENGN0Z3BGdFo0dTlmc0NsL0JPdUpKNVJXQ3B0R0ZhUlJ5MElmdVlRRW9FMWU2WFJxQTU3YWtnaEp5YXdjb0tsU001SjFoTXlSTWlyNEEwbFRKQ1duSVExeDV3QytUNk9rTzM5eW04a28xVjhlNTBKemNrRHhJd2srdlhia1hiRXB4MnpLOGRndEdveEtUZ0dXajd1Rmd1NjVZOEpyYThXVXgxY1V4TFFZenZENFJISUdYRjhwTEZydVlCWXNFdXN3ZlpUT1YrY1lpUlA1MHNVZTNDSGJ4b1NxeXlJOG10ZGNnYWRpekxjeHhNZFlqL0ZKZ3BUN0ZhTTNobG9OTjArZzJsRFVjeWdQTmU3dEhRMlN1OGNzcnkwaldWblA3Q0ovNzFrZ0IxUFp5V3duUlpOTG9Ibzl4Wlc1Z3ZBTVZnNEtsUXhjMDQ0NU5DMkV1Rm1ISHBIeHZDTGlYa3FtSTNHeXoxOXBnZFpPR1JtUEhnbTdFUmw0eXFXUzI4aE1OSUhJaDFqcmEzQXBZejk3TWcvREhYSUtaQURsODZVVncvMzIwNVlSUlBPVVlSWHJHMWVGeVZ4TDhURENveDZjSWdVL29nVE1Rd0lDdEQzL1RIektwRG4vMjdiNDZRTUFvTlAyS2xyVCtkb09mTkxPVVVsamxXdEtrakZvK3hZZ0V5MUc5amtUUFRkQXRHKzd3NUJKNHQ1K0FUeVQwQ1ZJdm9JaVRGbFozaEprYjN3T0tkc2hBOEJIaXU2UndxR3kvRnU2MlZHb2RNOVhKYkJrMW0vUFNSd2JXcjhiSTlIMzNyOE5oV1Uxb3FRSXF3LzNLTmtzQnNJaTJSd3VROUZOUlFPSmJaNXNHeitYcVcwZFhzVVdZVm4xdjZoWWdwVVFPZ1ZWUktWYzRLaVNTOHNHb0VwYkFTdFBUMXVSb0c3NDhYdnF0VTVEMU53Slc3YW9ySkpNSUNxdVFVZnVKVWJzM3hPUlF5a1c5NFV5aDJkV1UycGp2MVYyN040WmxmMUdJQ3k2ZHJGdGFEZzZ4YmtqMkxkK0RNQ083amg4TWdxWVd3ZW1Bbm9jSkhYUjBTY2VDakhHOVhXREVvd3NNZ3NkTVpvdkFzeGM1QURKQS9WWndxK3hpb3ZGNlcrWHVsdGp1aUIxR1hzR0FGL1BMSzh0STFsWnord2lmKzlaSUFkVDIxQk9XZWEzMWJ2UWNRT0RjK2o1MFcvcmt2R21xbGtwWDJVRU4za29mWDM0clNrWHdaM3NudDZJUmNabDlIR3ZVanFVd0t0bHJOTkFXckFPcHR3aFQ4Qm8ya2pWSUdFNmxkREIwNTluMnpGQk1yR29yekxxMENqbm5kVzVORDBTUXlkdHFtYnhldStDendpdDBCTHpKQnplZ2E0cTdzRlJHSWRLZUc0Z002RkRmYmpCNE1FNDBKSEdycC9hYVVuWnZzanpkaHRaNGpOdi83QUwveDZROXRoMUdrRlk3YllJYzJXRXRYWGFYSldoOU0rcWNSa2tjSmtBaGRlakh5WmpGYk4ybnRkaU1zeUhKTFo5VVdhdGFXUzl4MGF1TlRPc1hOKytnVXNaY0FKdDJOOERVbmJiMU03Sklpc0JYb3dwVVl1V2wrYS9PRUg3ck0ySWhkK2EyWnNzcnkwaldWblA3Q0ovNzFrZ0IxUFl3aUgwZlJuQ3p2bGJoY2NJZElQTkVHNlZSS1czSk1sMUpDSDBKNnZEbG12aDVKMXlERm1oYkFtWHF1VjBCb3J6OFN3dEt3THRHcStQUGorTmZzZzFwWkNtQjhSYnVJRzh4SHdGRk42bWNsY0tHZjI4N0U3aXljSGZiRTl5K1VJQ2lIYWRrZytveWlXMFNzdm5OQ05lZkczYTk0M1VxL2xDK0p0TlJSaTNLWUlqRE51OGlhcEZ6OXBzL2JlYkkrYURMSzh0STFsWnord2lmKzlaSUFkVDJ6L2xyQTBOSmRlZlBHR0hPY3RiOGxpc2ZjSHpWRFFBaG5lY1pXRmpkQWFSN2t4L09mTlpHem9CRHB5d3lZNklFdFdYSW1BSE1JK215OUlVZVRxUkNKbjVLeU1tQ0ZVVm5NcU1xVXgwak9CNHRSSVBFWGtod1pQbzRZTVVSY0RoSTZ5YWVwK0NxcTJ1RU5vcGcwRHp4VDVyTHg4V3B2VHBOUENPWVNXSm02YzJoaEFZR09aNzZPVUFwTjVzRHlUQkJXTWt4WU5RU294cTl3VVJLT0dyM0lzc3J5MGpXVm5QN0NKLzcxa2dCMVBiVmRQbTZoNCs4VjBOMVZuZnA0bm5EZkc4SXVKZVNxWWpjYkxQWDJtQjFrNURvMGs1cVFNZ09GWG9EakNiZGVuQmRYdkZmcjN1S1J3N3hPRDFaekxQM1JJRGlLVVRqVkRPYTBiMzByTnZ1OXNzcnkwaldWblA3Q0ovNzFrZ0IxUGI1UjVPMzk2SjIyRnhrYlFia1hYQ3A1MTBUSk1FMitJeGhtWVExRFBMcUxjc3J5MGpXVm5QN0NKLzcxa2dCMVBiNVI1TzM5NkoyMkZ4a2JRYmtYWENwVGZJRjBaWDIwd0t5cXVlM2VXM1pVSjBBK1hVQld3RU04QnBma01VNktpTDJXcHJOMW5VNkpUcW9JQUNSMUNDVXlNK3FDSXBMaTJDbVpnVHhkNXZkQ0FRcTliWUpSWldEOXcwSks1UnlFZzBDM2VWWWdidDk0VkREd0EwcnlKa05MK3ZwZkJzTzdkUmp1UjM2ZmlvK3NIUWpVb3lvME42WmRsQmplb2k1UUhpcHlOL20wd054aGFWRlhLczE2VHRudFN3bUd1dXVscy9MR21EcE9CMVlYVkJEZTlWd2R5K0paRFRjaDlzVFp1SzVzcWdHQlprSHB1OCtnOVJ1WWlUM0J4L2dVeFpKa3gwbTRBdllLbzk3QVpIa2RiUDdoVzBaZThaZU8wYmpJblJ0SVMvKzEvOW9wKy9Yd0pIRTVuQ1lpYk43ZWprYklHVGRsYnlqNTRCVnJMbVNUYXNrL2VzWFFSS2c1MUg5ckhJVXltVVFyRkxrT29hdWErVW02WlM0bjd2ejNVbDlZRmtUYXlQZThDdklQS1dvNUZIWkt4ZVdaUXZ2Y2t0SE9MaUFqcjVWS1RFWklGSnZqOEVlSi8zQkZHVFRrUkxpbFRBeExRMU03NitFS2VlV0oyRk9UWjBqNUtBbUxRYzNqNGIwVXhoc1F4Z2thcVN5M1o5NWtJdEFJREp6OU5JVE5wRHNHTm55VnpudTlwMHJTVGZiY0tqT1hZV25mWGJzM2F2czN0WWpYMEl2ZDJqSTZJLzE3MWZBV1I5VFp0eVNSSlZHc0diOXh2L214SlBnNE5xbTJjT2dMQktURVQ3OFIrRlR6SU9kdWtEYVFJYWpneGlQbTdwOE5LREtQRDZSYXFBcVpwUlQ2bHNoQmRVUng2cVI2cUhaWlUrUXhFRURkUG9mekUyU0FRYUJ0YUhuTVlCbTFlYnNKNUsrMXlTM291UWNWZnZUSDFyWU9QWmFtczNXZFRvbE9xZ2dBSkhVSUpTNE9WUGRnbHFXRjk2WWErTklGNWcvY0hjS2E3aVpvSDdNYTU0MjA1RmxoZnFPRHlGdHN0dlBOdmxPZXA2UDJYVDJXcHJOMW5VNkpUcW9JQUNSMUNDVU43N3NQOWJicTdwRjdIVElIeXZwUUtKc0tELzV4ZHc3UEJqdmlMcFRWTlcybnZhSmt5S0F2ZlZ5YUw2NGdyWUJyODZvaU5PY1NKYnBKQTBSYnJSOGVPSWJZcnJVcFhYbkhoS2RlSmRIUHN2L1JvVlVwT2tOSHAyeTFzNVRxZFlrUCs1LzZWVWRHNFVCbzBuNVBMVjRWSHJPbFR2VCtTaCtGeklLbGpuRmRIQUVvV0UwZDAvaS9vUS9wcFBmaFVibVRhZmRiQU5GeURCNlBmZHIrQkdONDFxZ1k4ZkNibEUxUiszUDcrRkNsTVBMNW43T0hTVlpLMnM2UTYweEtQTTYwNVQ1TlV6dzkwb21GSzlTRm03aERGUkxyUk5PYkdnaUZPaDdFb0JDWjE1aFVkZVljR1ozdnVZcXJ5UXB2TUV2SVFjU1pUVHI5eHhnZ05ad1Z3eHd0WkszT2hRUTFYWEY5d2FkbGo1QWhxMTlURGRhN0NZQ1Rza1h5TDI1d2ZvemJmdjRObWZSTWkyTzQwWTUyUmlsL2RTNHRidDN3ZFV2K2owbHBEQW9zbmdUMEpyMWpwektFTUg3VkthR1hqalNJZzhqZFJvb1Z0Q25sWUQybW9xUTlQd3lrZ2lVRlJUS2dQYUhvTHdoY3Z2Mldwck4xblU2SlRxb0lBQ1IxQ0NVbGNhUmNhQnU3WDV6bUpsQ0o1SGp3cTh5ZWMyT1dIVjVES0RaWVpNVGlGSmM0R04zdHVKLzVqZ0JPZEFYUHlkRjlscWF6ZFoxT2lVNnFDQUFrZFFnbEU4UTlFS0Z0ZFhBUUYvdGR5UUdGWVZkZXVpZVB6dTVzYlFUUnVEY0V5eUg0UG9HZTQrQnl6cHRjSU1lR0VvWDhKbndCcGFYbU5EVUxiTkFrVlJENS85Z3ozTUVkcEJpc2hlaHhUaEhjNVZlN2gvYk9oMnh1aW1DQVpFVTY4bUMySHhKYmk3bWVkWnRXblFLTmZFeGdLTlJoWEVVbW9GNVQxaXNTcUFKRFoyWmpoWERGMGw1YXlmbEtSdHNrR0JUODZJQStLZnBlaDhoMXB4VlZUcjUvekQyMkUxaXR4TzM1UDNyMkF5RCs3V1E0TUtZdHN2MUh3RFpSWmwwcFd1S0EzdHRtVE5ZZ1M4ekpPdWM3NnVmQTVCQjFBNCtFMFljQ211ZS9sajhwR1ZldU0zM1RaUElLak1wUnU5cFZIUDJUcUdaTHdTYy8weno5UnJmUkc5SmZ3cTVzZ3JLcWZxYkxOUjNSOENhdDhCUHlZQVBxZXF5a2d1Q2NBcGVRL1h0SHVGUFVremVUM1ZFZ1grMDFId1JvWG9TK2IrZm5sVUVoYzhFOFZMRUJSVXdTOFJLVEwzR3AxZnJGTzZDMW94NjhNT3FqZnA5OHNjRThzUlZtdmM2alg1MEV5UTdyeXlpdWdjYUxsYnNubkRNOWxxYXpkWjFPaVU2cUNBQWtkUWdsSUdwTGhLbEcxazh4aXh4Y2tkUGdSd005c2tnd1QzRjJidGpNMTYxSzBsOHl5dkxTTlpXYy9zSW4vdldTQUhVOXByUWhqVXYrcTZsNXduaVNtalJUU3NDK3dnSGNuMnNpb1hndCtvYU16dDJ5eXZMU05aV2Mvc0luL3ZXU0FIVTloUGJKZkJXbXd0TWRvUEhQb1Y3ZWpTcFcrN2hPcGEzVkgrQm5XaXpoY0Y2eXl2TFNOWldjL3NJbi92V1NBSFU5dUE5Q1NXL3BGaTVMSmpGNUNvakZFQnNuNHQ3QlRmYmJacFN4blh5cThzRXpwUXkrdzc4ODdEa0p5dnYyd25PSjhzcnkwaldWblA3Q0ovNzFrZ0IxUFkwMFBWdm9NMmZXOEx4Tm1KWmo1ZlV5eXZMU05aV2Mvc0luL3ZXU0FIVTlzc3J5MGpXVm5QN0NKLzcxa2dCMVBhVG5pclNSbDkyWjFNTVduS3FQclZtcWh0TXJOSDVjNWwrNzV1NFZFblVrMVFJelkxeHVYR2tHVlgxOWR1WkdjckxLOHRJMWxaeit3aWYrOVpJQWRUMnl5dkxTTlpXYy9zSW4vdldTQUhVOW5DK2YzWDNqRldrSW5Vdlp1RitRVFVFUVNrRXk4b3Bqb3FvZkptYnpEbTNBV0NqQUUzb0tvRFRzekF1T0o4MCs4c3J5MGpXVm5QN0NKLzcxa2dCMVBhclRtWW03b09aMXJ4bDBUSTFxSmRPaG5hRm5QMmxvQUQzcm5KRUpGUG9WTXNyeTBqV1ZuUDdDSi83MWtnQjFQYkt1Z0ZpeDUyMTNHcENPKzhYVnlRRWJXUTBBQlNpaTM0MU9KUzdqOVpCdFppQ3ZWVFExTm8zV3BoUjFMd01aeWpON0N3QXloTEEzRjFnSUNMUjlMSUJ5eXZMU05aV2Mvc0luL3ZXU0FIVTl2SXd3UTFWSFJxMC9ZRjIvWGVudHFQTEs4dEkxbFp6K3dpZis5WklBZFQybnVFTVlwOW1vckpmYWpCRUZLZTVzRmYzVi9KSEZrMWtBZDREbDEvUTE1WFZ5SE91WGZIWnJhUHMwMS90UkFVNWpGZzVxbHFNRCtBRTV5bkVQVWJTWU1zcnkwaldWblA3Q0ovNzFrZ0IxUGFGUkVBc3g5eGt0STFyeFdoTE5aUUF6cFF5K3c3ODg3RGtKeXZ2MnduT0o3bmhIMEk2cXZYTHo5RkM5WUdYVzM1dnRNRENySEZiemxsZUlCMmNlRVd3eXl2TFNOWldjL3NJbi92V1NBSFU5bC82dmpJTlJBSVg2NGUzTXd5QithL2kzcEx2clpoMllqWE9MRXpEb01zenl5dkxTTlpXYy9zSW4vdldTQUhVOXRoR0VSdmZQRkx3TlJEVlphelEzWTdDQVFibXdHbERFQWZPaXlxdHFMUTlRWGh3VkMycDRPcTh2djNVVmVUZHhNSUJCdWJBYVVNUUI4NkxLcTJvdEQzaXlQZldLd1FRZGFhS0ZBOEc3bWtNQWFQdXFHeDduU0NteXdvdzlNUGczM214dWJBYVRQOTE4RlNIelhhUTFQanNNWG13eDcxUTd3ZzRBZG8vZmJyaHpPV2Q2TzhUUnp0VWUxODBMMnE5NkVsVVd1Nm1ET2NGaGx6ekprTnd2c0pTQTVOMm9Eb1ZmV2FhaW1GTGwySmRIbzNEV0ZQRTBUdHlsblhQRm5QaVIrcjZ5RUkya2NGT1piaDB4dUc5U1kvQU1SYkFIMDVKWWtpa3U0elY2THdTV0l1ZkZZZjRJV3lFck8yaFFyYVgxZGNnSEdrQXJoTGoycVFBNmwyQVVtQXBzTzRpY3NUc0FMb1hNaDY4RUJKUWJ0MmkwNmcxdk9rTGhCMVh6MTMrV0NRKzRTN09OWlpUcllkaVh5UGU0UTJPVC9mSXJQMHROejloV1RkQ1Jhb01FVUY5RzVyMjNLeCsvN09ONUlDYkdnVTRDV2xMMzQ1cGtrMXMyckFuYlh6RU9VbFZFUU1ZdWtwZ09ja1VZdUJ4S0VhZHlEUjJYTnZZSFBUVVNKNmNWUT09XFxcXFxcXCIpXFxcXG59XFxcXG5yZXMuZGF0YSA9IGQ7XFxcXG5zZXRSZXN1bHQocmVzKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLku6PnoIEt5pu05aSaXFxcIixcXFwicGF0aFxcXCI6XFxcIm1vcmVcXFwiLFxcXCJydWxlXFxcIjpcXFwiaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcXFxuICAgIHZhciBfdHlwZSA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsIHt9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogcnggPT0gJ+a8q+a4uCcgPyBnZXRIZWFkKHJ4KSA6ICfmvKvmuLgnLFxcXFxuICAgICAgICB1cmw6ICfmvKvmuLgnICsgd3IsXFxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcXFxuICAgIH0pO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBnZXRWYXIoJ1lTJykgPT0gJ+maj+acuicgPyBnZXRIZWFkKCfpmo/mnLonKSA6IGdldEhlYWQoJ+mqmueyiScpLFxcXFxuICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdZUycsIGdldFZhcignWVMnKT09J+maj+acuic/J+mqmueyiSc6J+maj+acuicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v6aKc6ImyLS0nK2dldFZhcignWVMnLCfpmo/mnLonKVxcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogX3R5cGU9PVxcXFxcXFwi5paw54mIXFxcXFxcXCI/Z2V0SGVhZChcXFxcXFxcIuaWsOeJiFxcXFxcXFwiKTpcXFxcXFxcIuaWsOeJiFxcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsJ+aWsOeJiCcpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfJ1xcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogX3R5cGU9PVxcXFxcXFwi5pen54mIXFxcXFxcXCI/Z2V0SGVhZChcXFxcXFxcIuaXp+eJiFxcXFxcXFwiKTpcXFxcXFxcIuaXp+eJiFxcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsJ+aXp+eJiCcpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfJ1xcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXFxcbiAgICB9KTtcXFxcbiAgICBpZiAocnggIT0gJ+aXtuWFieacuicgJiYgcnggIT0gJ+e0ouW8lScpIHtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiAn6Ieq5a6aVUlEJyxcXFxcbiAgICAgICAgICAgIHVybDogYGlucHV0Oi8ve1xcXFxcXFwidmFsdWVcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLCBcXFxcXFxcImpzXFxcXFxcXCI6IFxcXFxcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO2NsZWFyVmFyKCdodG0nKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOi+k+WFpeeahOaYrycraW5wdXRcXFxcXFxcIiwgXFxcXFxcXCJoaW50XFxcXFxcXCI6IFxcXFxcXFwi6K+35Zyo5LiL5pa56L6T5YWlVUlEXFxcXFxcXFxu5LiN55+l6YGT5oCO5LmI5p+l77yfYuermeeCueW8gOiHquW3seeahOS/oeaBr++8jOmVv+aMiXVpZOWNs+WPr++8jOivt+Whq+WFpee6r+aVsOWtl1xcXFxcXFwifWAsXFxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnKSksXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogJ+eCuei1nmtleScsXFxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFxcXFxcInZhbHVlXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIiwgXFxcXFxcXCJqc1xcXFxcXFwiOiBcXFxcXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcXFxcXCIsIFxcXFxcXFwiaGludFxcXFxcXFwiOiBcXFxcXFxcIuivt+WcqOS4i+aWuei+k+WFpWtleSjnlKjkuo7ngrnotZ7mipXluIEpXFxcXFxcXFxu5LiN55+l6YGT5oCO5LmI5oqT77yf6YKj5bCx566X5LqGXFxcXFxcXCJ9YCxcXFxcbiAgICAgICAgICAgIGRlc2M6ICfigJjigJjlt7LovpPlhaU6IOKAmeKAmScgKyBnZXRIZWFkKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYWNjZXNzX2tleS50eHQnKSksXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogJ+ino+aekGtleScsXFxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFxcXFxcInZhbHVlXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIiwgXFxcXFxcXCJqc1xcXFxcXFwiOiBcXFxcXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHQnLGlucHV0KTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JywnVVDkuLsnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOi+k+WFpeeahOaYrycraW5wdXRcXFxcXFxcIiwgXFxcXFxcXCJoaW50XFxcXFxcXCI6IFxcXFxcXFwi6K+35Zyo5LiL5pa56L6T5YWla2V5KOeUqOS6juino+aekClcXFxcXFxcXG7kuI3nn6XpgZPmgI7kuYjmipPvvJ/pgqPlsLHnrpfkuoZcXFxcXFxcIn1gLFxcXFxuICAgICAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JykpLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXFxcbiAgICAgICAgfSk7XFxcXG5cXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiAn6K+E6K665Yy6OiDigJzigJzlt7InICsgZ2V0VmFyKCdyZXBseV90eXBlJyksXFxcXG4gICAgICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdyZXBseV90eXBlJywgZ2V0VmFyKCdyZXBseV90eXBlJyk9PSflhbPpl60nPyflvIDlkK8nOiflhbPpl60nKTtyZWZyZXNoUGFnZSgpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JyxnZXRWYXIoJ3JlcGx5X3R5cGUnKSsnLCcrZ2V0VmFyKCdsaWtlX3R5cGUnKSk7J3RvYXN0Oi8v5beyJytnZXRWYXIoJ3JlcGx5X3R5cGUnKTtcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiAn54K56LWeJuaKleW4gTog4oCc4oCc5beyJyArIGdldFZhcignbGlrZV90eXBlJyksXFxcXG4gICAgICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdsaWtlX3R5cGUnLCBnZXRWYXIoJ2xpa2VfdHlwZScpPT0n5YWz6ZetJz8n5byA5ZCvJzon5YWz6ZetJyk7cmVmcmVzaFBhZ2UoKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcsZ2V0VmFyKCdyZXBseV90eXBlJykrJywnK2dldFZhcignbGlrZV90eXBlJykpOyd0b2FzdDovL+W3sicrZ2V0VmFyKCdsaWtlX3R5cGUnKTtcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG59XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5Luj56CBLeS4gOe6pzJcXFwiLFxcXCJwYXRoXFxcIjpcXFwiY29tbW9uMlxcXCIsXFxcInJ1bGVcXFwiOlxcXCJ2YXIgcmVzID0ge307XFxcXG52YXIgZCA9IFtdO1xcXFxudmFyIHBhZ2VudW0gPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXFxcbnZhciBSZWZlcmVyID0gJ0BSZWZlcmVyPWh0dHA6Ly93d3cuYmlsaWJpbGkuY29tJztcXFxcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcpKSB7XFxcXG4gICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnLCAn5byA5ZCvLOWFs+mXrScpO1xcXFxufVxcXFxudmFyIHNfdHlwZSA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnKTtcXFxcbnB1dFZhcigncmVwbHlfdHlwZScsIHNfdHlwZS5zcGxpdCgnLCcpWzBdKTtcXFxcbnB1dFZhcignbGlrZV90eXBlJywgc190eXBlLnNwbGl0KCcsJylbMV0pO1xcXFxuLy/popzoibJcXFxcbnZhciBDb2xvcnMgPSBbXFxcXFxcXCI0XFxcXFxcXCIsIFxcXFxcXFwiNVxcXFxcXFwiLCBcXFxcXFxcIjBcXFxcXFxcIiwgXFxcXFxcXCIxXFxcXFxcXCIsIFxcXFxcXFwiQVxcXFxcXFwiLCBcXFxcXFxcIjNcXFxcXFxcIiwgXFxcXFxcXCI4XFxcXFxcXCIsIFxcXFxcXFwiOVxcXFxcXFwiLCBcXFxcXFxcIkJcXFxcXFxcIiwgXFxcXFxcXCJDXFxcXFxcXCIsIFxcXFxcXFwiRFxcXFxcXFwiLCBcXFxcXFxcIkVcXFxcXFxcIiwgXFxcXFxcXCI2XFxcXFxcXCIsIFxcXFxcXFwiN1xcXFxcXFwiLCBcXFxcXFxcIkZcXFxcXFxcIl07XFxcXG52YXIgQ29sb3IgPSAnIyc7XFxcXG5pZiAoZ2V0VmFyKCdZUycpID09ICfpmo/mnLonKSB7XFxcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHtcXFxcbiAgICAgICAgdmFyIG51bSA9IE1hdGguY2VpbCgoTWF0aC5yYW5kb20oKSAqIDE1KSkgLSAxO1xcXFxuICAgICAgICB2YXIgQ29sb3IgPSBDb2xvciArIENvbG9yc1tudW1dO1xcXFxuICAgIH1cXFxcbn0gZWxzZSB7XFxcXG4gICAgdmFyIENvbG9yID0gXFxcXFxcXCIjRkE3Mjk4XFxcXFxcXCI7XFxcXG59XFxcXG5cXFxcbmZ1bmN0aW9uIGdldEhlYWQodGl0bGUpIHtcXFxcbiAgICByZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcXFxcXCInICsgQ29sb3IgKyAnXFxcXFxcXCI+JyArIHRpdGxlICsgJzwvZnJvbnQ+PC9zdHJvbmc+JztcXFxcbn1cXFxcblxcXFxudmFyIGMxID0gJ2FsbCZiYW5ndW1pJmd1b2NoYW4mZG91Z2EmbXVzaWMma25vd2xlZGdlJnRlY2gmY2FyJmxpZmUmZm9vZCZraWNoaWt1JmZhc2hpb24mY2luZXBoaWxlJm9yaWdpbiZyb29raWUmZ2FtZSZlbnQmZGFuY2UmbW92aWUmdHYmZG9jdW1lbnRhcnkmYW5pbWFsJmd1b2NodWFuZyc7XFxcXG5cXFxcbnZhciB3MSA9ICflhajpg6gm55Wq5YmnJuWbveWImybliqjnlLsm6Z+z5LmQJuefpeivhibnp5HmioAm5rG96L2mJueUn+a0uybnvo7po58m6ay855WcJuaXtuWwmiblvbHop4Ym5Y6f5YibJuaWsOS6uibmuLjmiI8m5aix5LmQJuiInui5iCbnlLXlvbEm55S16KeG5YmnJue6quW9leeJhybliqjnianlnIgm5Zu95Yib55u45YWzJztcXFxcblxcXFxudmFyIGMyID0gJzIyJjIxMiY3MSYxODImMTM4JjI4JjMzJjE4NSc7XFxcXG5cXFxcbnZhciB3MiA9ICfprLznlZwm576O6aOfJue7vOiJuiblvbHop4Ym55Sf5rS7Jumfs+S5kCbnlarliacm55S16KeG5YmnJztcXFxcblxcXFxudmFyIHdvcmQxID0gdzEuc3BsaXQoJyYnKTtcXFxcbnZhciBjbGFzczEgPSBjMS5zcGxpdCgnJicpO1xcXFxudmFyIGxhYjEgPSBnZXRWYXIoJ2xhYjEnLCAn5YWo6YOoJyk7XFxcXG52YXIga2V5MSA9IGdldFZhcigna2V5MScsICdhbGwnKTtcXFxcblxcXFxudmFyIHdvcmQyID0gdzIuc3BsaXQoJyYnKTtcXFxcbnZhciBjbGFzczIgPSBjMi5zcGxpdCgnJicpO1xcXFxudmFyIGxhYjIgPSBnZXRWYXIoJ2xhYjInLCAn6ay855WcJyk7XFxcXG52YXIga2V5MiA9IGdldFZhcigna2V5MicsICcyMicpO1xcXFxuXFxcXG52YXIgemJjMSA9ICdhbGwmMiYzJjYmMSY1JjkmMTAmMTEnO1xcXFxudmFyIHpidzEgPSAn5YWo6YOoJue9kea4uCbmiYvmuLgm5Y2V5py6JuWoseS5kCbnlLXlj7Am6Jma5ouf5Li75pKtJueUn+a0uyblrabkuaAnO1xcXFxudmFyIHpiYzIgPSAnMCYzMyc7XFxcXG52YXIgemJ3MiA9ICfpu5jorqTlsI/liIbnsbsm5b2x6Z+z6aaG77yI55Sf5rS777yJJztcXFxcbnZhciB6YndvcmQxID0gemJ3MS5zcGxpdCgnJicpO1xcXFxudmFyIHpiY2xhc3MxID0gemJjMS5zcGxpdCgnJicpO1xcXFxudmFyIHpibGFiMSA9IGdldFZhcignemJsYWIxJywgJ+WFqOmDqCcpO1xcXFxudmFyIHpia2V5MSA9IGdldFZhcignemJrZXkxJywgJ2FsbCcpO1xcXFxuXFxcXG52YXIgemJ3b3JkMiA9IHpidzIuc3BsaXQoJyYnKTtcXFxcbnZhciB6YmNsYXNzMiA9IHpiYzIuc3BsaXQoJyYnKTtcXFxcbnZhciB6YmxhYjIgPSBnZXRWYXIoJ3pibGFiMicsICfpu5jorqTlsI/liIbnsbsnKTtcXFxcbnZhciB6YmtleTIgPSBnZXRWYXIoJ3pia2V5MicsICcwJyk7XFxcXG5cXFxcblxcXFxuXFxcXG4vL+S4ieWQiOS4gFxcXFxudmFyIHJ4ID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0Jywge30pO1xcXFxudmFyIHdyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFxcXFxcIixpbnB1dCk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFxcXFxcImA7XFxcXG52YXIgc190YWIgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCB7fSk7XFxcXG52YXIgc3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dFxcXFxcXFwiLGlucHV0KTtyZWZyZXNoUGFnZShmYWxzZSk7XFxcXFxcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXFxcXFwiYDtcXFxcblxcXFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcXFxuICAgIC8vLnJlcGxhY2UoJ20uYmlsaWJpbGkuY29tJywgJ3d3dy5iaWxpYmlsaS5jb20nKS5yZXBsYWNlKC9cXFxcXFxcXD8vZywgJ++8n++8nycpLnJlcGxhY2UoL1xcXFxcXFxcJi9nLCAn77yG77yGJylcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJ+ino+aekCcsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCInaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JysnaHR0cHM6Ly8nK2lucHV0LnNwbGl0KCdodHRwczovLycpWzFdKycjaW1tZXJzaXZlVGhlbWUjJ1xcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXFxcbiAgICAgICAgZGVzYzogJ+ivt+i+k+WFpee9keWdgOaIluiAhWLnq5nlpI3liLbnmoTpk77mjqUnXFxcXG4gICAgfSk7XFxcXG5cXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogcnggPT0gJ1VQ5Li7JyA/IGdldEhlYWQoJ+mmlumhtScpIDogJ+mmlumhtScsXFxcXG4gICAgICAgIHVybDogJ1VQ5Li7JyArIHdyLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogcnggPT0gJ+aOkuihjOamnCcgPyBnZXRIZWFkKHJ4KSA6ICfmjpLooYzmppwnLFxcXFxuICAgICAgICB1cmw6ICfmjpLooYzmppwnICsgd3IsXFxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcXFxuICAgIH0pO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn5paw55WqJyA/IGdldEhlYWQocngpIDogJ+aWsOeVqicsXFxcXG4gICAgICAgIHVybDogJ+aWsOeVqicgKyB3cixcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfnm7Tmkq0nID8gZ2V0SGVhZChyeCkgOiAn55u05pKtJyxcXFxcbiAgICAgICAgdXJsOiAn55u05pKtJyArIHdyLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogcnggPT0gJ+abtOWkmicgPyBnZXRIZWFkKHJ4KSA6ICfmm7TlpJonLFxcXFxuICAgICAgICB1cmw6ICfmm7TlpJonICsgd3IsXFxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcXFxuICAgIH0pO1xcXFxuICAgIC8qXFxcXG4gICAgICAgIGlmIChyeCA9PSAn5pS26JePJykge1xcXFxuICAgICAgICAgICAgXFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBzX3RhYiA9PSAn6L+955WqJyA/IGdldEhlYWQoc190YWIpIDogJ+i/veeVqicsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAn6L+955WqJyArIHNyLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBzX3RhYiA9PSAn6L+95YmnJyA/IGdldEhlYWQoc190YWIpIDogJ+i/veWJpycsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAn6L+95YmnJyArIHNyLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICBcXFxcbiAgICAgICAgICAgIGlmIChzX3RhYiA9PSAn6L+955WqJykge1xcXFxuICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vcGFnZS9mYW5qdVxcXFxcXFwiKSkucnVsZSlcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGlmIChzX3RhYiA9PSAn6L+95YmnJykge1xcXFxuICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vcGFnZS9kc2pcXFxcXFxcIikpLnJ1bGUpXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFxcbiAgICAqL1xcXFxufVxcXFxuXFxcXG5pZiAocnggPT0gJ+aOkuihjOamnCcpIHtcXFxcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL3BhZ2UvcGhiXFxcXFxcXCIpKS5ydWxlKVxcXFxufVxcXFxuXFxcXG5pZiAocnggPT0gJ1VQ5Li7Jykge1xcXFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vcGFnZS91cFxcXFxcXFwiKSkucnVsZSlcXFxcbn1cXFxcblxcXFxuaWYgKHJ4ID09ICfml7blhYnmnLonKSB7XFxcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3NnalxcXFxcXFwiKSkucnVsZSlcXFxcbn1cXFxcblxcXFxuaWYgKHJ4ID09ICfmlrDnlaonKSB7XFxcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL25ld2JnbVxcXFxcXFwiKSkucnVsZSlcXFxcbn1cXFxcblxcXFxuaWYgKHJ4ID09ICfntKLlvJUnKSB7XFxcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3N5XFxcXFxcXCIpKS5ydWxlKVxcXFxufVxcXFxuXFxcXG5pZiAocnggPT0gJ+ebtOaSrScpIHtcXFxcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL3BhZ2UvemJcXFxcXFxcIikpLnJ1bGUpXFxcXG59XFxcXG5cXFxcbmlmIChyeCA9PSAn5pu05aSaJykge1xcXFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vcGFnZS9tb3JlMlxcXFxcXFwiKSkucnVsZSlcXFxcbn1cXFxcblxcXFxuaWYgKHJ4ID09IFxcXFxcXFwi5ryr5ri4XFxcXFxcXCIpIHtcXFxcbiAgICBldmFsUHJpdmF0ZUpTKFxcXFxcXFwiTm0wN3dJWjhVZFF5NDFTM2dDekhaRDFaNXJMZ0cxMlRONFhKMWVpY3Z3NGNpYkh2OTV6TkdtQkhzdUdUSXZiVWNoeVdYd1dNandxT2pHYWZPWmh1dUdIYjFqOS9LcFZrOGl2dHhxUnVVVDE1ZWRMUlNqWm5BQUZmemwzNVZiM2FrYXcwM2lGKzJuN3cwcm9sYjhZOGJXcDNOcVFxNjNGSEp4ZTNiZDRsemRTdmcrWG0zakVWWkl2a09VUGc0QW83VFRpUi84VWE0MzFUMVIyZXJhVGJnTkhDLys5cnhSODhjZW4zT3ZaVkNDSjNORmUrYjZzRW5mUUpxbytZRm4waDFZeVFOaFdsaGRJZ3dDb292MXdOS3Z6TmM1VTZsNkxKSUUvNGVaVzA3NnhBdnVHVzdWaVJ0ZDk5TmxLM2hicmM3d1BrVjErbjNBcU1QeU4wMDl6Q0xFU2dLYVlqbG44SThNZTZBcVJrRlN1elVNRE8za2NyV21pVzZ3eUdqMzg0Z1ozRDFhNUI0ZVZ6VHRqckNLbGt0R3hlQnVIZ1pIT0pRcFBLZXhaM1d4aWFiaDViS3Nib1U2QURXKzR2djZaVFBubThwL2tWSkxUakhhTGQxaGZUK0FpMTVCY21HVkRxRkhSQXhPdzdEQmkyM2pIbHFhczRsNm8zb1NJVXg0RS9TTUVuYkRueCtrNGp3NFlTZ21nNjZSekZ0TmdaK082emlLWDZNUEJhVUhKT29rVDRodFZvbzJGTmIxMGthRnhyTGJ5eFRjQ0JJL1FLditrdkdLUTJidjd2UnNGYUVOa0hGa0xaTkxORHg4blA0NjAzZi9wNXJKbHE1STRyYnF2TXZyUjFmbHhkZUVzODNrdERyZWpxaHBYMkhZb3g1WGplTmVwU1dBbFNlZWZnU1IxdGs5d0I5clVDdkQ1MUZDUWNBT2RqMGZJdWxad2lYK016WkZYNWZlVG5ma0FHdW94Sjh4eW0yZkMwaTlEeHdRRTJrZDZlcGZLRkpzT0l2VXViVmFML2JEK0pHaVhIa05vajZ1ajc1Y244MlQveFUrNXk3TVZacmwzaFljOW1Yc2dPZHBJTmgvSmd1bmVhTGx6L2N0ZnprVkZhUFN2YW1Ja2FFM0txRTVRNHN2dlIvRXlLbHZKSVUwVUt6OS94OElXK2U4blRnSy8yMVhRMW1DMVYxOTdVNWQvQkZlRnFCeG00d2lGSGtCRWlUNGt3V0JTeEEwTGdydWwrc1dtams0ZGtiY01wa1dDOEFySzgrcGFlQkNqT3NNaVY0NERyVFNCemlpZGozU1lRQS9GTG5hbW4zTVFHWHpMelovWEFmemsxMnBabC9xVTByMy9TYnAzeW9uajYzSDljZVNxRFMxM2N6SVRKUDJZNTdxTE04K3RwZk8wU0REb3VvQlpPNUZCb3JwbGUwaHJ6U3l6QXhtbGoxclozN3g5RDRTR2tRdGhnNVNsOWVNTVNhc1l4Y1M1TDBDZWNEVE9yTEZoVUhzVTJYS2hvTmJhTFFoY1N4RGRUYUJvdGZCNDhYRXp1V2hVNlgxY2JQWlo1azlhUWwzaTQxcHVBVkFTN3RvQnEyRzRPSmVuOXFTOGpwQXpDYnhDdUFObWpuL3pabWx6LzJYalY3YnpkV3p3NnVLYWpRdDJWdmhWSUhqcE4zQzBFYWtLR0tMN2tpdXBWTlM4L0xMRTVFOUhZSVlJd2FSQzBlcUVBbWR6dGtRNDVlVXEwVHl5ai80K1dUWTNNbWZiREJzV0E1VzFxSzFabFVlWGx3bDFmT09TZjBCMDgrMmxsU0g3cUgvQ0E4UmF6VTFpcG1IU1BJcHh5dys5dHpwbzB2Sk9UTzRwUTE4bGlDTW94RW9MbFk1TDcrZDlmeFJpbHAwUm85L3pXL1A3M3pDT0FCQ0VzM0ZjendqeTJVbHlDU0I3ejRnUE0xSnpsU21SR1gzaU0vM3lGTTdvd3dReUZyNzd6SkpLdHAwaXVnL21ON3hkYlJCbnJRYjJiMi9wWVBEV2JIL3lJcE91bDJpVmlYYWVtYTJWUXM2cUttMHhOdVpNcU9yOHRWcTc3VXpHcCtGWWZhVG5YVEdrV0t4ZWdHNXNpNFc0d244YXE1NStiUDZFQkpYeGp3VEFEQXg4WVArWGtpSzJuZ0V0YmdXdXpwWmhpQVlERVhCc2N2alpaaUxvdGNFQmdJcUg3eXpFdHBacDJZNCtZSG9GUUJ2VFFsei8rbTlkTzJMTmErUW81S3l0WXM1bG1LMjFjQ1VHb2ZQM1JXUjUzTHZzc0E0M25YcUprczA3cFhnbm80YWU2T0xvd0xqMDVZQU9YNXRRZGpOeFNvQXRacExoTXZTZjE0NDkzZ3MrY0hHNEdGblo2N1VoY0N0bzVnSE1DU0d2TjlkRGVYNUpkaEJySTU2WVVxY293eGlxRGg2MzJFcTdsR2lqdXczQmFQMUszdm9obzdBNWdzc2pzdE11VW9hU1NVb0tvV0FHQjJnYWh3anUraFVTNm1yS0czTnRtc2ZoTmxZb0o2d2lSUkZHeGNFTVVTQmgwM3Y1MjBreXlpZm9wZ2dCRUVQNHVNSW1VM0tCalc5T0RHZTNlaDROMk03MWJWWGJxaUtVVmpKY1ZuNi9zUWNUd2dKVWhkeDlEczhtKzl5WWk1WW1yNDczSENKN1F1YzMwWEtRNXp0V0NpcjBHMk1QdU02c0YxYjFZWFhzVzFrK3p0UDRoMUV2QTdyRzR2aG02Qi81ckd6K2xPVEczV2NqcTlNanVnTFFlTzNHRzZNdGFjdkdGT0h3ZFFiTDBYSlQwN1BzMmRBa3ZkWk5qdmZWYjFaTmlvcFY3TmErZytMQ1IySWV2dThkNUQwTEM0WXQ4anVBSHRpM1BsdU9YbWtXbUNGYjA2RURTRUd5Ty9SVU9KdDFRbTJRQytEbG9pRXBlbEIxcE91UkpRVVVGQnNsaVcreWFqL1hnRWkzbk5BM3VUd0puTEtnbGFjclExclpjZnI4QnNoUnpocVFsdHhkYmhXeGZrOFFLdklqSjRMRjFhZW1VR0IvamUzWnRveGgzdE10eE9KQ2ZCMHFlVWpIVWx5bXNjcXl5R29TWktPanhEeXZDOStHd2FjZEc0ZlVrTnlPa3RQUE15YnMvWnJtWFBJZVZxeUJ4b252T1hNL2JEYnB6MHJwOEcxWmVJMHJTb1JsdjExdldOc1BncjZzeW56ZEhZQmE4elBXSWxnVjBaMGg5SE5NbXZMbFZQTXZ3M2UrL2dYRjBmTEtoczloNGpUSGt6M0VyOWp1NEVtRW5GcU9mdWNHL1NDQ3M5ME50a29LUy81dFNyLzAvZTJIcW54UkxURCsxN1EwbFpudmJuNWZ5KzRHalJETzVMSldmeGZXdUtVaytiUTVMMWN5bVo5MXgvODIyZUU1YW9HclVlN2p4L1FkRkRCWGw3Skt0SlhZQnhtRVZhUklQNEN4QU1GcXpkT3llVlN2dHVrd0Z2N0d0MFYxVmppN1hvQy8zd1NKRlI2M2FtM000WllFekFjV29sU0V2YnNXL3NhM1JYVldPTHRlZ0wvZkJJa1ZIb1NOUmhiUlBFRTZpNkJzVUQ3cUtDaTEvZWdKVGpGMEo0S043UFJoR3k3YlRJT1R1K1lhL2Y5TGFkWDFBOGJMc1lzeGxUYk5xVm82SnpQWmFwaWNOY0NkSFBNMmFoNzhlQXR0U2FoVkNFYi9sM1pxaTJoRmtpWko4Z3hQQzBQWTdydG10UEFhWDR1SnNOZ2FCMEJUbHhzbEMxT29Ka0VsTjdHYnAxckJjdEd1VXc3cEwrUklPVFFrQ1lsK2EwVW4yZW1vSHdOdWJxRitKZDVjTzJwd1VvejAzalprOFUzbVdHbWpJcmNjak14QWUvcnR3eXNQNjNiNmlHN003dkxwT254VjN4dkN5ZEtUd21UZGkwbDZDMHozbzV0cXkycGtsN3VqMThEVmVWQ1hDNFZHNTZGK3ZQOEU5VkVNQWwvekNjakkycW1xbHVhNytoM2JybEhnNzk4QVJtNGJkTVBPbWZ5ZG1UR0IwZjdocXpadjE0QjMvY1dZcmFkd080ZXIxOVpiZlZZK3Y5UEpZcjZXT1U2MmlIUmo2WCtTS3R0UFdSK2xZSTAzaXRNcjhEdkY2eEdDK3hwK2hXK3Yvei85ZnJjODFJY0dNSVNlOE1IVFdpWGpBM1BoT1ErZXdINm5mUmVFTlRQVmFCcXJDdGtobk5kaWM4VTJoYzFjd2xGTHo3Zm9MZVl5eU84aWVkWGVGV09PK3FYN2p6OXVuaEl4YWxCaU1JdnNHN0pQOTRkZGp6M244Zk1UYjVNUEJvWDVGY2FmNFpCU3dYZDk4NDRvQjBCMXFvcEVLU2JCcVp4VjlZUSt3cGppbnZMdnY4b0NTdjI2YVlUc3ZFYlhzVGUrTTRBQ1gwdGtVbHJBNmkwNFo1eTZwYWxvWllObThwRFRzSnJrMGptOTU0L1k4NnBDK2dxMXVTZFREa1o2WVpyK0tuSEgzNmRScm1OYVlsVExKRDZ2VlM3MktWa295LzlZYjRVWlIvaFRpVE5Vb0hpRWMvamg1cHlpNXYvbGdqMnRPMVJJZ3RYRXVjcDhYYmZpREJIemtMWlY3TmErZytMQ1IySWV2dThkNUQwSk15eGE0Tjg3SE9SMWZIekVXTjVuTHBjYUZ4bllJK3U0Zm13R2tOdUFhOHk2K1dvV1pxVVJSdUpmeGNBb0wvSW5SOHRSMjRwREtRTHdPaFQ4RHRycXlpN2ZjV2x2NG9HWU16cWxBYVNuWjhFdnIxWU91YnRVREhoRlVMalhZNStPK3d1cXorY3pZWU0vRk5KR1VSS0haY2k4RGZMeVBIRU84VmUwOG5oSGxzWXhZT2FwYWpBL2dCT2NweEQxRzBtQmVBYTc2cTBJY3pDU3NSNjVieE10MFlWY25qOG1wdDdvK3EyUjRBbU5Ka1ZFNGU1TGxZSVJpQ3VHTEdZdGQxT3ZqNzUwek8vbmlSeDJzcXJpTWFnVW9OM0J2RWF2a2xjSFpKcTk2N0hLSFJKU2VMWldUMjkyWUcvY2wzWTNleXgxMTZFTjRkMi9oZis3NGVVRTZscXprL2VnK1pTaDF5NlJJdDdKRmx1S2NYZXV4WldJd2RxcVk5TjgwL3NrSmdZdXB6TDI0bGxJb0NoZ3A4Y3dnQ3NkbWZVQzkvNm5ZREtJNnlidSt2QW5UWVdjNkttSUF4U0t1c3J0a1VGMVlBUTA5d2FwZkpmZlpWcThsUDY5Z3pIbTJJa3Y5a0d1dUhPVTlZWUhxQ0hqVjcrS3FJSncxcmVWdS82bnAydTZ2MGtBK3AxczZzMFhVaEtoWWdvTTJQQ1JNc05BcmZxYS9RRy9qZmx0OUxIWk1Xd2kxNUJjbUdWRHFGSFJBeE93N0RCaTIzakhscWFzNGw2bzNvU0lVeDRFL3lBZllIdXNjbFlQMFpMMk9rSjhiOU1ESWRXWTJxcUdPanEzaHJZWi81TWZMeFdLc0kybS9Ycy9hMkx4VVVRMm1QS2Vya3hqNy9MZ1dvSDBKQ0RCOE11OWx2eTBNSVNOWEdldXlPTSt2R0ZuZWN1ekRtN01RT0NFdW10YldSWEZtL2NmYk1UZVpSNVd0aVMzSkx4V1NucWtRNDZQL01IYncweVkvSHRHVWdZQ1QvTGNSb0IxYkk4T2ptSUI3UmRjR2VMYUtSQ2xGMDdzakcyVDMrT2FGSVVsOFdzZkNUcEF5UU1DUUhnTW9TQ21nNldFbUZ6NHRVZG01QXVKUjFQWkw1S1NKTFBGdStXMU9kR1lsOFhjSGtlajZGUzc2TEFYcHM5ODY4N2hBL211bGJtWFlLWVczWVhkbjZsRENrN2szRXlUY0VuV1lIbGhMZDFiM2VvOGRQanROTGd5UkcxTTRuRmlKdDB1YWU2SXF1ZDFMczdBSnVOMUt5VVpJeUJsd3UvajVxdkxxeG5SbGt2YWJuVkZOYTNOSXJ3bC9leldxNlZ2Z21iY0NpcGkrWDNHOWUxTjJqckNnM0paVnk5N1hVUGFWbE81MWxRZUIvRkJFeHVhVzFZR285SndWaHhrUVlmY1A0Y21DRU56aXdjZkhkVXhMUmJjMHFxb3REYW9Ydy9Cc0pTZ2lFSkZuNnI5Q0w0QW1jdXIrYlFWVTh6K0lTUDJUUUJXV3QyaTdkcWxweEdBWXczUGNIS1NuRXV6elBaVTR4NTJEV2VwRU5pbG5EWlBXdml4YjYxamJKR2tEL3hXWFJ3NzRFQmpFYm9iOTJkUEltVlhMT3VlQkpIdjdXR0tEOFcxQ3hGT0M5MWhqbU9BS1NUSGV0Z005RkREOTdIR3RnajlxejUybDkydXZSa0FNZFhQY0ErbE9CS0ZFQ0xYa0Z5WVpVT29VZEVERTdEc01HTHBEWEtPRGZPVHoxZkV0NG81VXdDQWV0VG1lZ0c5a0s1Um43VkduZFcxVzVaS0ZMVW1vemdUS3duVzNkZDZIS3JwbzNQYkl0UGR1U2ZseDVKaEtRZStGcUxnb1ZLRG12NGtmN2gzMUtyVlRyNE1YM2FPZUppUmdQbjBCMnVUTXJFRHd2QU9RMHZSL3hhRGFDR1owT0w1VTJ3bTZBeHdPQ2djTnM1SG5NOWFlaUtYU3FqSjBPejZpV25xZzdLbTBwaTFkVUs5NlZxb2doUjV1Z3Q2K2R0Y1ZWRTNlTncraHZ1R3FZYVJDK092YUV4cHFkeHBISUU3djd3RUFMREJqRlp4VjBPTjR1OXR4ZjNaaVFXNHlPazc2b1J0OFhlUjJ5OXc3Qjkrd1paVDkrSjhPRlAvN2llTTM3bW1SVEljR241RVU2LzRHdTFyQ3RGWDlUU3NYOGJYYXJQREM3dTBXLzlEOEQ4Y05YQ2VvY05Xd3hTSUFIQUppSFE5cUdrNG12QVZQdGZ6NVkvSkNoSTNCd3RtRm9udmVZQk41d2FoS3ZDc1E0NzZrQ3JWMU8rSk4vTklZdVdOSHMxUU9KTXkxTWl2eUhWY0h2SFExZzcxcFgzejBsR1VldFRtZWdHOWtLNVJuN1ZHbmRXMVdaUHdRbThCWWRLOGtzQkNwNzcvdEVTd3pKWHZmM0Fuemp2T0dKV3U2RXUwTHoyTXo4SmExUDNIWi93ZGxtUStINHFZUUZad0FSSWlISWhLRVN0aEV5bS9TeGZYQ2o2NHlOOGI0WVo3a2Vua1ZzZ3VsanFIWUM1aGo5emsvTWlmcXNnTHpoVktxK2FqTWJEVmkzYUJ0R3Q3MHdpWW5Cd0VjVTFNdEtid1F6K1Q2VGdUb202TDMvQnZaWU9TSkpBdk1ZWmR2R0xkcFpxcWRIbGxJcEZ4Mkp1NHJadHp4bkwzZGg3bXNvWmp0U2JHU1hKTnc4akVJUThmZTB4ZXFCWkZPMnpEZW9KV0tWQXFHTnhKTEVxS0lXQWRNUEZxSXVIaFpSWW1vQXpiWUdDSGxzcmlYOXFSTnVIcmtiNU1IKzN1WnkrSjNIME5EcS9JUEs0SmpLcFp1N29tdEtMRlcxdmQ3ZGkrYjdvVmtYVzJ4TDFNYy9sQ0o4L2FFTzdUMFg3Y09tMFExenFKN0ZyUFNaaHRyQ29Zcmw3aDFxL2xWck9xajJWenRlUklxM0xOcFhDVXoyWVdONHh3U0JPNFZPRit1ME5ZWjBmV2grOFY1U2lmSS9NQW1WbmlDVGhkMWVja1V4QklGN3R6MVNTWDBsRjYyT1REYjVPQi9FRGIveUJuaURyUU5Db0J6NzY5MjhleHdGUEc1RnNwU3FYMnRMcFdabDlWdUcrZHJEcjh2Y2RHcmpVenJGemZ2b0ZMR1hBQ2JOV0YzT0tYbllZWU9VU01BM2h0d3FWd2RuUHk1Ry9tTTgrTmNjV2NuZmduYWlnUXFianNqS3Qyc3MvZGx5ZzB0QkZCNWt1UU1tWC9URjhJRW1sZGJVa1l2eTExUmF0UHkwR2JFY0hrZ2ZhY0p0M3pXdVJqd0JTYkFIUUFYTU5PblJoWE5DVnNlK0JrUlpHWjRsOEFGVlpCeFF1MEZrcFdyNisrYlhyeU1MRWhLZDBnbnE0WHUvS0FQNWJuVklBcWRxZ1ZmbjlJMzdoUExubjFBT2VTdTRTUTJDZVMrVzJEWDhqMmRQV2xxWk1EUU84anN6UHJhL3NGWURaQ0FxWVJnOFBrTUN2S0dXZVJnMHpkdnZDVEhHRnQ3dUFMSW9ITE15ZG02L2tJZ0V3d3FCV1EycGszZ2RTRWNTcmdGVDVmTDFwMUFLUndiV2NNTVRMRHVabEN3cEZJSDVzTFZHT1piZlUrT0NNT2s1MFBZVDBVSllKT2cyUktod3FjQ2lEWFQySC9peUI0TGpIZjA5QnhmeFgyRUNIeTdIT09TNWZyODVMSzNtc1IzTytJcWxDbC9VaHpjTFV5cC9FMTBlWUVjQ01ISFdqeHdiSDVYSWJOWEVaKzdWYkdVcU51ZElqUERPRDdlZUpBL1loMlpmVGR4QlpVRFlvR0pVZmxVM3NEb1BPOXk1Y2dTdUN2VVA4KzZBV2FFNVR5bnE1TVkrL3k0RnFCOUNRZ3dmRExMSzh0STFsWnord2lmKzlaSUFkVDJJSFA1S1lnVFhTNVEvU1dDT2Jva25ZWitUQkZ4MW1lc0hHcWFxZ2pJWERIeFRyVHUvYkFxR2VFbG56ZDhsaG11L2F0ek44RklDTTNpUXhCMjRCcGRHRSs2MyswT280OWVMWFhLN2pOWGZlZkZ6NDhiaHRqWGNCL2xrYTZDaTJxR3FSL3l4UlZvRGVKSTFnREZya3Fnd2lTYmlIZjJobFFDcXY0UHF6RllKQ2tGd3BOdW9yeFdZRS9GSW9YSU1nelNDU2hZcnI1Sm02YjgzRG44d0RFVG9WM0FyNmFaK2V1SXc5ZzcyK2xLQTNITEs4dEkxbFp6K3dpZis5WklBZFQyYWtIWGdKWk15eHdiK0FGRjRiNG1iWnN6ajJyTmVLUDNBbjZrUkIwTWF5M09sREw3RHZ6enNPUW5LKy9iQ2M0bncvQnNKU2dpRUpGbjZyOUNMNEFtY3ZGMzEyQkppOGVYNFNjdE5EQnd3RTQ2SzY0T0FZSTB3Z1dHUm9qNVpicFFJTlZBTkdiR01EMVlRbHBjby9yM0EzYnhvU3F5eUk4bXRkY2dhZGl6TGN6ZHd2c01yYVNpYUNTWmtKTG44WU1GdktENGN0Z3BGdFo0dTlmc0NsL0JPdUpKNVJXQ3B0R0ZhUlJ5MElmdVlRRW9FMWU2WFJxQTU3YWtnaEp5YXdjb0tsU001SjFoTXlSTWlyNEEwbFRKQ1duSVExeDV3QytUNk9rTzM5eW04a28xVjhlNTBKemNrRHhJd2srdlhia1hiRXB4MnpLOGRndEdveEtUZ0dXajd1Rmd1NjVZOEpyYThXVXgxY1V4TFFZenZENFJISUdYRjhwTEZydVlCWXNFdXN3ZlpUT1YrY1lpUlA1MHNVZTNDSGJ4b1NxeXlJOG10ZGNnYWRpekxjeHhNZFlqL0ZKZ3BUN0ZhTTNobG9OTjArZzJsRFVjeWdQTmU3dEhRMlN1OGNzcnkwaldWblA3Q0ovNzFrZ0IxUFp5V3duUlpOTG9Ibzl4Wlc1Z3ZBTVZnNEtsUXhjMDQ0NU5DMkV1Rm1ISHBIeHZDTGlYa3FtSTNHeXoxOXBnZFpPR1JtUEhnbTdFUmw0eXFXUzI4aE1OSUhJaDFqcmEzQXBZejk3TWcvREhYSUtaQURsODZVVncvMzIwNVlSUlBPVVlSWHJHMWVGeVZ4TDhURENveDZjSWdVL29nVE1Rd0lDdEQzL1RIektwRG4vMjdiNDZRTUFvTlAyS2xyVCtkb09mTkxPVVVsamxXdEtrakZvK3hZZ0V5MUc5amtUUFRkQXRHKzd3NUJKNHQ1K0FUeVQwQ1ZJdm9JaVRGbFozaEprYjN3T0tkc2hBOEJIaXU2UndxR3kvRnU2MlZHb2RNOVhKYkJrMW0vUFNSd2JXcjhiSTlIMzNyOE5oV1Uxb3FRSXF3LzNLTmtzQnNJaTJSd3VROUZOUlFPSmJaNXNHeitYcVcwZFhzVVdZVm4xdjZoWWdwVVFPZ1ZWUktWYzRLaVNTOHNHb0VwYkFTdFBUMXVSb0c3NDhYdnF0VTVEMU53Slc3YW9ySkpNSUNxdVFVZnVKVWJzM3hPUlF5a1c5NFV5aDJkV1UycGp2MVYyN040WmxmMUdJQ3k2ZHJGdGFEZzZ4YmtqMkxkK0RNQ083amg4TWdxWVd3ZW1Bbm9jSkhYUjBTY2VDakhHOVhXREVvd3NNZ3NkTVpvdkFzeGM1QURKQS9WWndxK3hpb3ZGNlcrWHVsdGp1aUIxR1hzR0FGL1BMSzh0STFsWnord2lmKzlaSUFkVDIxQk9XZWEzMWJ2UWNRT0RjK2o1MFcvcmt2R21xbGtwWDJVRU4za29mWDM0clNrWHdaM3NudDZJUmNabDlIR3ZVanFVd0t0bHJOTkFXckFPcHR3aFQ4Qm8ya2pWSUdFNmxkREIwNTluMnpGQk1yR29yekxxMENqbm5kVzVORDBTUXlkdHFtYnhldStDendpdDBCTHpKQnplZ2E0cTdzRlJHSWRLZUc0Z002RkRmYmpCNE1FNDBKSEdycC9hYVVuWnZzanpkaHRaNGpOdi83QUwveDZROXRoMUdrRlk3YllJYzJXRXRYWGFYSldoOU0rcWNSa2tjSmtBaGRlakh5WmpGYk4ybnRkaU1zeUhKTFo5VVdhdGFXUzl4MGF1TlRPc1hOKytnVXNaY0FKdDJOOERVbmJiMU03Sklpc0JYb3dwVVl1V2wrYS9PRUg3ck0ySWhkK2EyWnNzcnkwaldWblA3Q0ovNzFrZ0IxUFl3aUgwZlJuQ3p2bGJoY2NJZElQTkVHNlZSS1czSk1sMUpDSDBKNnZEbG12aDVKMXlERm1oYkFtWHF1VjBCb3J6OFN3dEt3THRHcStQUGorTmZzZzFwWkNtQjhSYnVJRzh4SHdGRk42bWNsY0tHZjI4N0U3aXljSGZiRTl5K1VJQ2lIYWRrZytveWlXMFNzdm5OQ05lZkczYTk0M1VxL2xDK0p0TlJSaTNLWUlqRE51OGlhcEZ6OXBzL2JlYkkrYURMSzh0STFsWnord2lmKzlaSUFkVDJ6L2xyQTBOSmRlZlBHR0hPY3RiOGxpc2ZjSHpWRFFBaG5lY1pXRmpkQWFSN2t4L09mTlpHem9CRHB5d3lZNklFdFdYSW1BSE1JK215OUlVZVRxUkNKbjVLeU1tQ0ZVVm5NcU1xVXgwak9CNHRSSVBFWGtod1pQbzRZTVVSY0RoSTZ5YWVwK0NxcTJ1RU5vcGcwRHp4VDVyTHg4V3B2VHBOUENPWVNXSm02YzJoaEFZR09aNzZPVUFwTjVzRHlUQkJXTWt4WU5RU294cTl3VVJLT0dyM0lzc3J5MGpXVm5QN0NKLzcxa2dCMVBiVmRQbTZoNCs4VjBOMVZuZnA0bm5EZkc4SXVKZVNxWWpjYkxQWDJtQjFrNURvMGs1cVFNZ09GWG9EakNiZGVuQmRYdkZmcjN1S1J3N3hPRDFaekxQM1JJRGlLVVRqVkRPYTBiMzByTnZ1OXNzcnkwaldWblA3Q0ovNzFrZ0IxUGI1UjVPMzk2SjIyRnhrYlFia1hYQ3A1MTBUSk1FMitJeGhtWVExRFBMcUxjc3J5MGpXVm5QN0NKLzcxa2dCMVBiNVI1TzM5NkoyMkZ4a2JRYmtYWENwVGZJRjBaWDIwd0t5cXVlM2VXM1pVSjBBK1hVQld3RU04QnBma01VNktpTDJXcHJOMW5VNkpUcW9JQUNSMUNDVXlNK3FDSXBMaTJDbVpnVHhkNXZkQ0FRcTliWUpSWldEOXcwSks1UnlFZzBDM2VWWWdidDk0VkREd0EwcnlKa05MK3ZwZkJzTzdkUmp1UjM2ZmlvK3NIUWpVb3lvME42WmRsQmplb2k1UUhpcHlOL20wd054aGFWRlhLczE2VHRudFN3bUd1dXVscy9MR21EcE9CMVlYVkJEZTlWd2R5K0paRFRjaDlzVFp1SzVzcWdHQlprSHB1OCtnOVJ1WWlUM0J4L2dVeFpKa3gwbTRBdllLbzk3QVpIa2RiUDdoVzBaZThaZU8wYmpJblJ0SVMvKzEvOW9wKy9Yd0pIRTVuQ1lpYk43ZWprYklHVGRsYnlqNTRCVnJMbVNUYXNrL2VzWFFSS2c1MUg5ckhJVXltVVFyRkxrT29hdWErVW02WlM0bjd2ejNVbDlZRmtUYXlQZThDdklQS1dvNUZIWkt4ZVdaUXZ2Y2t0SE9MaUFqcjVWS1RFWklGSnZqOEVlSi8zQkZHVFRrUkxpbFRBeExRMU03NitFS2VlV0oyRk9UWjBqNUtBbUxRYzNqNGIwVXhoc1F4Z2thcVN5M1o5NWtJdEFJREp6OU5JVE5wRHNHTm55VnpudTlwMHJTVGZiY0tqT1hZV25mWGJzM2F2czN0WWpYMEl2ZDJqSTZJLzE3MWZBV1I5VFp0eVNSSlZHc0diOXh2L214SlBnNE5xbTJjT2dMQktURVQ3OFIrRlR6SU9kdWtEYVFJYWpneGlQbTdwOE5LREtQRDZSYXFBcVpwUlQ2bHNoQmRVUng2cVI2cUhaWlUrUXhFRURkUG9mekUyU0FRYUJ0YUhuTVlCbTFlYnNKNUsrMXlTM291UWNWZnZUSDFyWU9QWmFtczNXZFRvbE9xZ2dBSkhVSUpTNE9WUGRnbHFXRjk2WWErTklGNWcvY0hjS2E3aVpvSDdNYTU0MjA1RmxoZnFPRHlGdHN0dlBOdmxPZXA2UDJYVDJXcHJOMW5VNkpUcW9JQUNSMUNDVU43N3NQOWJicTdwRjdIVElIeXZwUUtKc0tELzV4ZHc3UEJqdmlMcFRWTlcybnZhSmt5S0F2ZlZ5YUw2NGdyWUJyODZvaU5PY1NKYnBKQTBSYnJSOGVPSWJZcnJVcFhYbkhoS2RlSmRIUHN2L1JvVlVwT2tOSHAyeTFzNVRxZFlrUCs1LzZWVWRHNFVCbzBuNVBMVjRWSHJPbFR2VCtTaCtGeklLbGpuRmRIQUVvV0UwZDAvaS9vUS9wcFBmaFVibVRhZmRiQU5GeURCNlBmZHIrQkdONDFxZ1k4ZkNibEUxUiszUDcrRkNsTVBMNW43T0hTVlpLMnM2UTYweEtQTTYwNVQ1TlV6dzkwb21GSzlTRm03aERGUkxyUk5PYkdnaUZPaDdFb0JDWjE1aFVkZVljR1ozdnVZcXJ5UXB2TUV2SVFjU1pUVHI5eHhnZ05ad1Z3eHd0WkszT2hRUTFYWEY5d2FkbGo1QWhxMTlURGRhN0NZQ1Rza1h5TDI1d2ZvemJmdjRObWZSTWkyTzQwWTUyUmlsL2RTNHRidDN3ZFV2K2owbHBEQW9zbmdUMEpyMWpwektFTUg3VkthR1hqalNJZzhqZFJvb1Z0Q25sWUQybW9xUTlQd3lrZ2lVRlJUS2dQYUhvTHdoY3Z2Mldwck4xblU2SlRxb0lBQ1IxQ0NVbGNhUmNhQnU3WDV6bUpsQ0o1SGp3cTh5ZWMyT1dIVjVES0RaWVpNVGlGSmM0R04zdHVKLzVqZ0JPZEFYUHlkRjlscWF6ZFoxT2lVNnFDQUFrZFFnbEU4UTlFS0Z0ZFhBUUYvdGR5UUdGWVZkZXVpZVB6dTVzYlFUUnVEY0V5eUg0UG9HZTQrQnl6cHRjSU1lR0VvWDhKbndCcGFYbU5EVUxiTkFrVlJENS85Z3ozTUVkcEJpc2hlaHhUaEhjNVZlN2gvYk9oMnh1aW1DQVpFVTY4bUMySHhKYmk3bWVkWnRXblFLTmZFeGdLTlJoWEVVbW9GNVQxaXNTcUFKRFoyWmpoWERGMGw1YXlmbEtSdHNrR0JUODZJQStLZnBlaDhoMXB4VlZUcjUvekQyMkUxaXR4TzM1UDNyMkF5RCs3V1E0TUtZdHN2MUh3RFpSWmwwcFd1S0EzdHRtVE5ZZ1M4ekpPdWM3NnVmQTVCQjFBNCtFMFljQ211ZS9sajhwR1ZldU0zM1RaUElLak1wUnU5cFZIUDJUcUdaTHdTYy8weno5UnJmUkc5SmZ3cTVzZ3JLcWZxYkxOUjNSOENhdDhCUHlZQVBxZXF5a2d1Q2NBcGVRL1h0SHVGUFVremVUM1ZFZ1grMDFId1JvWG9TK2IrZm5sVUVoYzhFOFZMRUJSVXdTOFJLVEwzR3AxZnJGTzZDMW94NjhNT3FqZnA5OHNjRThzUlZtdmM2alg1MEV5UTdyeXlpdWdjYUxsYnNubkRNOWxxYXpkWjFPaVU2cUNBQWtkUWdsSUdwTGhLbEcxazh4aXh4Y2tkUGdSd005c2tnd1QzRjJidGpNMTYxSzBsOHl5dkxTTlpXYy9zSW4vdldTQUhVOXByUWhqVXYrcTZsNXduaVNtalJUU3NDK3dnSGNuMnNpb1hndCtvYU16dDJ5eXZMU05aV2Mvc0luL3ZXU0FIVTloUGJKZkJXbXd0TWRvUEhQb1Y3ZWpTcFcrN2hPcGEzVkgrQm5XaXpoY0Y2eXl2TFNOWldjL3NJbi92V1NBSFU5dUE5Q1NXL3BGaTVMSmpGNUNvakZFQnNuNHQ3QlRmYmJacFN4blh5cThzRXpwUXkrdzc4ODdEa0p5dnYyd25PSjhzcnkwaldWblA3Q0ovNzFrZ0IxUFkwMFBWdm9NMmZXOEx4Tm1KWmo1ZlV5eXZMU05aV2Mvc0luL3ZXU0FIVTlzc3J5MGpXVm5QN0NKLzcxa2dCMVBhVG5pclNSbDkyWjFNTVduS3FQclZtcWh0TXJOSDVjNWwrNzV1NFZFblVrMVFJelkxeHVYR2tHVlgxOWR1WkdjckxLOHRJMWxaeit3aWYrOVpJQWRUMnl5dkxTTlpXYy9zSW4vdldTQUhVOW5DK2YzWDNqRldrSW5Vdlp1RitRVFVFUVNrRXk4b3Bqb3FvZkptYnpEbTNBV0NqQUUzb0tvRFRzekF1T0o4MCs4c3J5MGpXVm5QN0NKLzcxa2dCMVBhclRtWW03b09aMXJ4bDBUSTFxSmRPaG5hRm5QMmxvQUQzcm5KRUpGUG9WTXNyeTBqV1ZuUDdDSi83MWtnQjFQYkt1Z0ZpeDUyMTNHcENPKzhYVnlRRWJXUTBBQlNpaTM0MU9KUzdqOVpCdFppQ3ZWVFExTm8zV3BoUjFMd01aeWpON0N3QXloTEEzRjFnSUNMUjlMSUJ5eXZMU05aV2Mvc0luL3ZXU0FIVTl2SXd3UTFWSFJxMC9ZRjIvWGVudHFQTEs4dEkxbFp6K3dpZis5WklBZFQybnVFTVlwOW1vckpmYWpCRUZLZTVzRmYzVi9KSEZrMWtBZDREbDEvUTE1WFZ5SE91WGZIWnJhUHMwMS90UkFVNWpGZzVxbHFNRCtBRTV5bkVQVWJTWU1zcnkwaldWblA3Q0ovNzFrZ0IxUGFGUkVBc3g5eGt0STFyeFdoTE5aUUF6cFF5K3c3ODg3RGtKeXZ2MnduT0o3bmhIMEk2cXZYTHo5RkM5WUdYVzM1dnRNRENySEZiemxsZUlCMmNlRVd3eXl2TFNOWldjL3NJbi92V1NBSFU5bC82dmpJTlJBSVg2NGUzTXd5QithL2kzcEx2clpoMllqWE9MRXpEb01zenl5dkxTTlpXYy9zSW4vdldTQUhVOXRoR0VSdmZQRkx3TlJEVlphelEzWTdDQVFibXdHbERFQWZPaXlxdHFMUTlRWGh3VkMycDRPcTh2djNVVmVUZHhNSUJCdWJBYVVNUUI4NkxLcTJvdEQzaXlQZldLd1FRZGFhS0ZBOEc3bWtNQWFQdXFHeDduU0NteXdvdzlNUGczM214dWJBYVRQOTE4RlNIelhhUTFQanNNWG13eDcxUTd3ZzRBZG8vZmJyaHpPV2Q2TzhUUnp0VWUxODBMMnE5NkVsVVd1Nm1ET2NGaGx6ekprTnd2c0pTQTVOMm9Eb1ZmV2FhaW1GTGwySmRIbzNEV0ZQRTBUdHlsblhQRm5QaVIrcjZ5RUkya2NGT1piaDB4dUc5U1kvQU1SYkFIMDVKWWtpa3U0elY2THdTV0l1ZkZZZjRJV3lFck8yaFFyYVgxZGNnSEdrQXJoTGoycVFBNmwyQVVtQXBzTzRpY3NUc0FMb1hNaDY4RUJKUWJ0MmkwNmcxdk9rTGhCMVh6MTMrV0NRKzRTN09OWlpUcllkaVh5UGU0UTJPVC9mSXJQMHROejloV1RkQ1Jhb01FVUY5RzVyMjNLeCsvN09ONUlDYkdnVTRDV2xMMzQ1cGtrMXMyckFuYlh6RU9VbFZFUU1ZdWtwZ09ja1VZdUJ4S0VhZHlEUjJYTnZZSFBUVVNKNmNWUT09XFxcXFxcXCIpXFxcXG59XFxcXG4vL+S4ieWQiOS4gFxcXFxuXFxcXG5yZXMuZGF0YSA9IGQ7XFxcXG5zZXRSZXN1bHQocmVzKVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuS7o+eggS3mm7TlpJoyXFxcIixcXFwicGF0aFxcXCI6XFxcIm1vcmUyXFxcIixcXFwicnVsZVxcXCI6XFxcImlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXFxcbiAgICB2YXIgX3R5cGUgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+agt+W8jy50eHQnLCB7fSk7XFxcXG4gICAgXFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfml7blhYnmnLonID8gZ2V0SGVhZChyeCkgOiAn5pe25YWJ8J+QpScsXFxcXG4gICAgICAgIHVybDogJ+aXtuWFieacuicgKyB3cixcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxcXG4gICAgfSk7XFxcXG4gICAgLypcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiAn6L+955WqJyxcXFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vY29sbGVjdGlvbj9ncm91cD3ikaDov73nlaonLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICovXFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfntKLlvJUnID8gZ2V0SGVhZChyeCkgOiAn57Si5byVJyxcXFxcbiAgICAgICAgdXJsOiAn57Si5byVJyArIHdyLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXFxcbiAgICB9KTtcXFxcbiAgICAvKlxcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IHJ4ID09ICfmlLbol48nID8gZ2V0SGVhZChyeCkgOiAn5pS26JePJyxcXFxcbiAgICAgICAgICAgIHVybDogJ+aUtuiXjycgKyB3cixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcXFxuICAgICAgICB9KTtcXFxcbiAgICAqL1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiAn55m75b2VJyxcXFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL25ld2xvZ2luJyxcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmvKvmuLgnID8gZ2V0SGVhZChyeCkgOiAn5ryr5ri4JyxcXFxcbiAgICAgICAgdXJsOiAn5ryr5ri4JyArIHdyLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogZ2V0VmFyKCdZUycpID09ICfpmo/mnLonID8gZ2V0SGVhZCgn6ZqP5py6JykgOiBnZXRIZWFkKCfpqprnsoknKSxcXFxcbiAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignWVMnLCBnZXRWYXIoJ1lTJyk9PSfpmo/mnLonPyfpqprnsoknOifpmo/mnLonKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+minOiJsi0tJytnZXRWYXIoJ1lTJywn6ZqP5py6JylcXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IF90eXBlPT1cXFxcXFxcIuaWsOeJiFxcXFxcXFwiP2dldEhlYWQoXFxcXFxcXCLmlrDniYhcXFxcXFxcIik6XFxcXFxcXCLmlrDniYhcXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+agt+W8jy50eHQnLCfmlrDniYgnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnydcXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IF90eXBlPT1cXFxcXFxcIuaXp+eJiFxcXFxcXFwiP2dldEhlYWQoXFxcXFxcXCLml6fniYhcXFxcXFxcIik6XFxcXFxcXCLml6fniYhcXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+agt+W8jy50eHQnLCfml6fniYgnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnydcXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxcXG4gICAgfSk7XFxcXG4gICAgXFxcXG4gICAgaWYgKHJ4ICE9ICfml7blhYnmnLonICYmIHJ4ICE9ICfntKLlvJUnKSB7XFxcXG5cXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiAn6Ieq5a6aVUlEJyxcXFxcbiAgICAgICAgICAgIHVybDogYGlucHV0Oi8ve1xcXFxcXFwidmFsdWVcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLCBcXFxcXFxcImpzXFxcXFxcXCI6IFxcXFxcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO2NsZWFyVmFyKCdodG0nKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOi+k+WFpeeahOaYrycraW5wdXRcXFxcXFxcIiwgXFxcXFxcXCJoaW50XFxcXFxcXCI6IFxcXFxcXFwi6K+35Zyo5LiL5pa56L6T5YWlVUlEXFxcXFxcXFxu5LiN55+l6YGT5oCO5LmI5p+l77yfYuermeeCueW8gOiHquW3seeahOS/oeaBr++8jOmVv+aMiXVpZOWNs+WPr++8jOivt+Whq+WFpee6r+aVsOWtl1xcXFxcXFwifWAsXFxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnKSksXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogJ+eCuei1nmtleScsXFxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFxcXFxcInZhbHVlXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIiwgXFxcXFxcXCJqc1xcXFxcXFwiOiBcXFxcXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcXFxcXCIsIFxcXFxcXFwiaGludFxcXFxcXFwiOiBcXFxcXFxcIuivt+WcqOS4i+aWuei+k+WFpWtleSjnlKjkuo7ngrnotZ7mipXluIEpXFxcXFxcXFxu5LiN55+l6YGT5oCO5LmI5oqT77yf6YKj5bCx566X5LqGXFxcXFxcXCJ9YCxcXFxcbiAgICAgICAgICAgIGRlc2M6ICfigJjigJjlt7LovpPlhaU6IOKAmeKAmScgKyBnZXRIZWFkKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYWNjZXNzX2tleS50eHQnKSksXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogJ+ino+aekGtleScsXFxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFxcXFxcInZhbHVlXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIiwgXFxcXFxcXCJqc1xcXFxcXFwiOiBcXFxcXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHQnLGlucHV0KTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JywnVVDkuLsnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOi+k+WFpeeahOaYrycraW5wdXRcXFxcXFxcIiwgXFxcXFxcXCJoaW50XFxcXFxcXCI6IFxcXFxcXFwi6K+35Zyo5LiL5pa56L6T5YWla2V5KOeUqOS6juino+aekClcXFxcXFxcXG7kuI3nn6XpgZPmgI7kuYjmipPvvJ/pgqPlsLHnrpfkuoZcXFxcXFxcIn1gLFxcXFxuICAgICAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JykpLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXFxcbiAgICAgICAgfSk7XFxcXG5cXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiAn6K+E6K665Yy6OiDigJzigJzlt7InICsgZ2V0VmFyKCdyZXBseV90eXBlJyksXFxcXG4gICAgICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdyZXBseV90eXBlJywgZ2V0VmFyKCdyZXBseV90eXBlJyk9PSflhbPpl60nPyflvIDlkK8nOiflhbPpl60nKTtyZWZyZXNoUGFnZSgpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JyxnZXRWYXIoJ3JlcGx5X3R5cGUnKSsnLCcrZ2V0VmFyKCdsaWtlX3R5cGUnKSk7J3RvYXN0Oi8v5beyJytnZXRWYXIoJ3JlcGx5X3R5cGUnKTtcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiAn54K56LWeJuaKleW4gTog4oCc4oCc5beyJyArIGdldFZhcignbGlrZV90eXBlJyksXFxcXG4gICAgICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdsaWtlX3R5cGUnLCBnZXRWYXIoJ2xpa2VfdHlwZScpPT0n5YWz6ZetJz8n5byA5ZCvJzon5YWz6ZetJyk7cmVmcmVzaFBhZ2UoKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcsZ2V0VmFyKCdyZXBseV90eXBlJykrJywnK2dldFZhcignbGlrZV90eXBlJykpOyd0b2FzdDovL+W3sicrZ2V0VmFyKCdsaWtlX3R5cGUnKTtcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG59XFxcIn1dXCJ9IiwicGljVXJsIjoiaHR0cDovL2kxLmhkc2xiLmNvbS9iZnMvYXJjaGl2ZS83ZTU3NGE4ZmY3MDE4YTgzNDIxMWJhNzY3MzU0NzQwNzYxZTQxZjY0LmpwZ0BSZWZlcmVyPWh0dHA6Ly93d3cuYmlsaWJpbGkuY29tIiwidGl0bGUiOiLmjpLooYzmppwt6aG25LqG5Y2B5Yeg5bm055qE6ZSF55uW5aS057uI56m26L+Y5piv5rKh5LqG77yBIn0=
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement