6dfaa9b1f58940f05ef5bef700f4bd0cPCEtLTY5MTdaUkV2aTVuclBVQ1pCRGNOTklvbUNsdkYyWm81TkhpTzJYdVdLN1BDcHI5WUxid25vQW54YTJnZ0owVnZ5R2pxS3NrakxsYStxQmJkaXYvNEx6WVl5RHVac28rR0pNVnFGRHZLNm5NN2lJcWdnSFhiUThxUVVxbE94Q25SRWpxQXN1MENQRTVuV29sc2NPT1VzelNqYmhPYXIwKzRLUG8tLT48ZmgtZnVuY3Rpb24+DQokcGFnZT0kX0dFVFsicGFnZSJdOw0KJHRhZz10KCRfR0VUWyJ0YWciXSk7DQoNCiR1cmw9Z2V0aHR0cCgpLiRfU0VSVkVSWydIVFRQX0hPU1QnXS4kX1NFUlZFUlsnUEhQX1NFTEYnXS4nPycuJF9TRVJWRVJbJ1FVRVJZX1NUUklORyddOw0KZnVuY3Rpb24gdXJsKCR1cmwsJGtleSwkdmFsdWUpew0KICAkdXJsPXN0cl9yZXBsYWNlKCImIi4ka2V5LiI9Ii5zdHJfcmVwbGFjZSgiJTNBIiwiOiIsdXJsZW5jb2RlKCR2YWx1ZSkpLCIiLCR1cmwpOw0KICByZXR1cm4gJHVybDsNCn0NCg0KaWYoJHRhZz09IiIpew0KICAkdGFnaW5mbz0iIjsNCn1lbHNlew0KICAkdGFnaW5mbz0iIGFuZCBDT05DQVQoXCIgXCIsUF90YWcsXCIgXCIpIGxpa2UgJyUgIi4kdGFnLiIgJSciOw0KfQ0KDQokTV9pZD1pbnR2YWwoJF9HRVRbIk1faWQiXSk7DQppZigkcGFnZT09IiIpew0KICAkcGFnZT0xOw0KfQ0KaWYoJE1faWQhPTApew0KICAkTV9pbmZvPSIgYW5kIFBfbWlkPSRNX2lkICIuJHRhZ2luZm87DQp9ZWxzZXsNCiAgJE1faW5mbz0iIGFuZCBQX3NoPTEiLiR0YWdpbmZvOw0KfQ0KDQokc3FsPSJzZWxlY3QgKiBmcm9tIHNsX3Bzb3J0IHdoZXJlIFNfaWQ9Ii4kaWQ7DQogICRyZXN1bHQgPSBteXNxbGlfcXVlcnkoJGNvbm4sICRzcWwpOw0KICAkcm93ID0gbXlzcWxpX2ZldGNoX2Fzc29jKCRyZXN1bHQpOw0KICBpZiAobXlzcWxpX251bV9yb3dzKCRyZXN1bHQpID4gMCkgew0KICAgICRTX3N1Yj0kcm93WyJTX3N1YiJdOw0KICB9DQoNCmlmKCRpZD09MCl7DQogICRzcWw9InNlbGVjdCBjb3VudChQX2lkKSBhcyBQX2NvdW50IGZyb20gc2xfcHJvZHVjdCB3aGVyZSBQX2RlbD0wICIuJE1fcGluZm8uIiAgIi5zaHV4aW5nKCJQX3NodXhpbmciKS4iICRNX2luZm8gb3JkZXIgYnkgUF9vcmRlcixQX2lkIGRlc2MiOw0KfWVsc2V7DQogIGlmKCRTX3N1Yj09MCl7DQogICAgJHNxbD0ic2VsZWN0IGNvdW50KFBfaWQpIGFzIFBfY291bnQgZnJvbSBzbF9wcm9kdWN0LHNsX3Bzb3J0IHdoZXJlIFNfZGVsPTAgIi5zaHV4aW5nKCJQX3NodXhpbmciKS4iICRNX2luZm8gYW5kIFBfZGVsPTAgIi4kTV9waW5mby4iICBhbmQgUF9zb3J0PVNfaWQgYW5kIFNfc3ViPSIuJGlkLiIgb3JkZXIgYnkgUF9vcmRlcixQX2lkIGRlc2MiOw0KICB9ZWxzZXsNCiAgICAkc3FsPSJzZWxlY3QgY291bnQoUF9pZCkgYXMgUF9jb3VudCBmcm9tIHNsX3Byb2R1Y3Qsc2xfcHNvcnQgd2hlcmUgU19kZWw9MCAiLnNodXhpbmcoIlBfc2h1eGluZyIpLiIgJE1faW5mbyBhbmQgUF9kZWw9MCAiLiRNX3BpbmZvLiIgIGFuZCBQX3NvcnQ9U19pZCBhbmQgU19pZD0iLiRpZC4iIG9yZGVyIGJ5IFBfb3JkZXIsUF9pZCBkZXNjIjsNCiAgfQ0KfQ0KDQokcmVzdWx0ID0gbXlzcWxpX3F1ZXJ5KCRjb25uLCAkc3FsKTsNCiRyb3cgPSBteXNxbGlfZmV0Y2hfYXNzb2MoJHJlc3VsdCk7DQokUF9jb3VudD0kcm93WyJQX2NvdW50Il07DQoNCiRwYWdlX251bT1pbnR2YWwoJFBfY291bnQvMTApKzE7DQppZigkUF9jb3VudCUxMCA9PTApew0KICAkcGFnZV9udW09JHBhZ2VfbnVtLTE7DQp9DQoNCmZ1bmN0aW9uIGlzX2hhdmVzKCRhLCRiKXsNCiAgaWYoaW5fYXJyYXkoJGEsJGIpKXsNCiAgICAgIHJldHVybiB0cnVlOw0KICB9ZWxzZXsNCiAgICAgIHJldHVybiBmYWxzZTsNCiAgfQ0KfQ0KDQo8L2ZoLWZ1bmN0aW9uPg0KDQo8IURPQ1RZUEUgSFRNTD4NCjxodG1sIGNsYXNzPSIgICI+DQo8aGVhZD4NCjxtZXRhIG5hbWU9InJlbmRlcmVyIiBjb250ZW50PSJ3ZWJraXQiPg0KPG1ldGEgY2hhcnNldD0idXRmLTgiLz4NCjxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSxjaHJvbWU9MSI+DQo8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT0wLCBtaW5pbWFsLXVpIj4NCjxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iYXV0aG9yIiAgZGF0YS12YXJpYWJsZT0iLyxjbiwxMDAwMSwsMTAwMDEsTTExNTYwMTQiIC8+DQo8dGl0bGU+W1NfdGl0bGVdIC0g5oKo55qE572R56uZ5ZCN56ewIC0gUG93ZXJlZCBieSDllYbmk45NQUxMPC90aXRsZT4NCjxsaW5rIGhyZWY9Im1lZGlhLzIwMTkxMjA4MTEzMDM1ZU0uaWNvIiByZWw9InNob3J0Y3V0IGljb24iIC8+DQo8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iW1NfY29udGVudF0iIC8+DQo8bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0iW1Nfa2V5d29yZHNdIiAvPg0KDQo8bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9J3RlbXBsYXRlL3QxL3NraW4vY3NzL2luZGV4LmNzcyc+DQo8bGluayBocmVmPSJjc3MvUGFnZXIuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiAvPg0KDQo8c2NyaXB0Pgp2YXIgX2htdCA9IF9obXQgfHwgW107CihmdW5jdGlvbigpIHsKICB2YXIgaG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKICBobS5zcmMgPSAiaHR0cHM6Ly9obS5iYWlkdS5jb20vaG0uanM/ZTJlY2M1YTgyNjhlYTFhNGM5ODYyZWM3YjRlZTViMTEiOwogIHZhciBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpWzBdOyAKICBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGhtLCBzKTsKfSkoKTsKPC9zY3JpcHQ+CjwvaGVhZD4NCjxib2R5Pg0KPCEtLVtpZiBsdGUgSUUgOF0+DQo8ZGl2IGNsYXNzPSJ0ZXh0LWNlbnRlciBwYWRkaW5nLXRvcC01MCBwYWRkaW5nLWJvdHRvbS01MCBiZy1ibHVlLWdyZXktMTAwIj4NCiAgPHAgY2xhc3M9ImJyb3dzZXJ1cGdyYWRlIGZvbnQtc2l6ZS0xOCI+DQoJ5L2g5q2j5Zyo5L2/55So5LiA5LiqPHN0cm9uZz7ov4fml7Y8L3N0cm9uZz7nmoTmtY/op4jlmajjgILor7c8YSBocmVmPSJodHRwOi8vYnJvd3NlaGFwcHkuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPuWNh+e6p+aCqOeahOa1j+iniOWZqDwvYT7vvIzku6Xmj5Dpq5jmgqjnmoTkvZPpqozjgIINCiAgPC9wPg0KPC9kaXY+DQo8IVtlbmRpZl0tLT4NCjxkaXYgY2xhc3M9ImxvYWQtYm94Ij48L2Rpdj4NCjxoZWFkZXI+DQoNCiAgPGRpdiBjbGFzcz0iaGVhZC1ib3giPg0KICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+DQogICAgICA8ZGl2IGNsYXNzPSJoZWFkLWxlZnQiPg0KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkLWxlZnQtd3JhcHBlciI+DQogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZC1sZWZ0LXNsaWRlIj4NCiAgICAgICAgICAgIDxwPuasoui/juadpeWIsOaCqOeahOe9keermeWQjeensO+8gTwvcD4NCiAgICAgICAgICAgIDxmb250Pg0KICAgICAgICAgICAgPGhyPg0KICAgICAgICAgICAgPGEgaWQ9Im1ldC13ZWl4aW5zIj48aSBjbGFzcz0iZmEgZmEtd2VpeGluIiBkYXRhLXBsdWdpbj0id2VidWlQb3BvdmVyIiBkYXRhLXRyaWdnZXI9ImhvdmVyIiBkYXRhLWFuaW1hdGlvbj0icG9wIiBkYXRhLXBsYWNlbWVudD0nYm90dG9tJyBkYXRhLXdpZHRoPScxMzAnIGRhdGEtcGFkZGluZz0nMCcgZGF0YS1jb250ZW50PSI8aW1nIHNyYz0nbWVkaWEvMjAxOTExMjYyMjQzNTJXZi5qcGcnIGFsdD0n5oKo55qE572R56uZ5ZCN56ewJyBzdHlsZT0nd2lkdGg6IDEyMHB4O2Rpc3BsYXk6YmxvY2s7bWFyZ2luOmF1dG87Jz4iPjwvaT48L2E+DQogICAgICAgICAgICANCiAgICAgICAgICAgICA8L2ZvbnQ+IDwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCiAgICAgIDwvZGl2Pg0KICAgICAgPGRpdiBjbGFzcz0iaGVhZC1yaWdodCI+IA0KICAgICAgICA8ZmgtZnVuY3Rpb24+DQogICAgICBpZigkX1NFU1NJT05bIk1fbG9naW4iXT09IiIpew0KICAgICAgICAkYXBpPSRhcGkuIjxhIGNsYXNzPVwibG9naW5cIiBocmVmPVwibWVtYmVyL2xvZ2luLnBocFwiPueZu+W9lTwvYT4NCiAgICAgICAgICAgICAgPGhyPg0KICAgICAgICAgICAgICA8YSBjbGFzcz1cImxvZ2luXCIgaHJlZj1cIm1lbWJlci9yZWcucGhwXCI+5rOo5YaMPC9hPiI7DQogICAgICB9ZWxzZXsNCiAgICAgICAgJGFwaT0kYXBpLiI8YSBjbGFzcz1cImxvZ2luXCIgaHJlZj1cIm1lbWJlclwiPiIuJF9TRVNTSU9OWyJNX2xvZ2luIl0uIjwvYT4NCiAgICAgICAgICAgICAgPGhyPg0KICAgICAgICAgICAgICA8YSBjbGFzcz1cImxvZ2luXCIgaHJlZj1cIm1lbWJlci9sb2dpbi5waHA/YWN0aW9uPXVubG9naW5cIj7pgIDlh7o8L2E+IjsNCiAgICAgIH0NCiAgICAgICAgPC9maC1mdW5jdGlvbj4NCiAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biBzaG9wY3V0Ij4gPGEgaHJlZj0ibWVtYmVyL2NhcnQucGhwIj4gPGkgY2xhc3M9Imljb24gd2Itc2hvcHBpbmctY2FydCIgYXJpYS1oaWRkZW49InRydWUiPjwvaT4gPGZvbnQ+6LSt54mp6L2mPC9mb250PiA8c3BhbiBjbGFzcz0iYmFkZ2UgYmFkZ2UtZGFuZ2VyIHVwIGhpZGUgdG9wY2FydC1nb29kbnVtIj48L3NwYW4+IDwvYT4gPC9saT4NCiAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KICA8L2Rpdj4NCiAgPG5hdj4NCiAgICA8ZGl2IGNsYXNzPSJuZWNrLWJveCI+DQogICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPg0KICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWJveCI+IDxhIGhyZWY9Ii4vIiB0aXRsZT0i5oKo55qE572R56uZ5ZCN56ewIj4gPGltZyBzcmM9Im1lZGlhLzIwMTkxMjAyMjE0NDA5elgucG5nIiBhbHQ9IuaCqOeahOe9keermeWQjeensCI+IDxpbWcgc3JjPSJtZWRpYS8yMDE5MTIwMjIxNDQwOXpYLnBuZyIgYWx0PSLmgqjnmoTnvZHnq5nlkI3np7AiPiA8L2E+IDwvZGl2Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJzZWFyY2gtYm94Ij4NCiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWFyY2gtY3V0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxwPiDjgIANCjxmaC1mdW5jdGlvbj4NCiRrZXl3b3JkPWV4cGxvZGUoIiwiLCRIX2RhdGFbIkNfaG90d29yZHMiXSk7DQpmb3IoJGk9MDskaTxjb3VudCgka2V5d29yZCk7JGkrKyl7DQogICRhcGk9JGFwaS4iPGEgaHJlZj1cIi4vP3R5cGU9c2VhcmNoJmtleXdvcmQ9Ii4ka2V5d29yZFskaV0uIlwiPiIuJGtleXdvcmRbJGldLiI8L2E+IjsNCn0NCjwvZmgtZnVuY3Rpb24+DQogIDwvcD4NCiAgICAgICAgICAgIDxmb3JtICBuYW1lPSJmb3Jtc2VhcmNoIiBhY3Rpb249Ii4vP3R5cGU9c2VhcmNoIiBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ia2V5d29yZCIgdmFsdWU9IiIgcGxhY2Vob2xkZXI9Iui+k+WFpeWFs+mUruivjSI+DQogICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImZhIGZhLXNlYXJjaCIgdHlwZT0ic3VibWl0Ij48L2J1dHRvbj4NCiAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQogICAgICAgIDxkaXYgY2xhc3M9Im5hdi1ib3ggaW5kZXgiPg0KICAgICAgICAgIA0KICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1jdXQiPg0KICAgICAgICAgICAgPHVsIGNsYXNzPSJuYXYtdWwiPg0KDQogICAgICAgICAgICAgIDxmaC1mdW5jdGlvbj4NCiAgICAgICAgICAgICAgICAkc3FsPSJzZWxlY3QgKiBmcm9tIHNsX21lbnUgd2hlcmUgVV9oaWRlPTAgYW5kIFVfZGVsPTAgYW5kIFVfc3ViPTAgb3JkZXIgYnkgVV9vcmRlcixVX2lkIGRlc2MiOw0KICAgICAgICAgICAgICAgIHNbWw0KDQogICAgICAgICAgICAgICAgaWYoJHJvd1siVV9pZCJdPT1nZXRycygic2VsZWN0ICogZnJvbSBzbF9tZW51IHdoZXJlIFVfaGlkZT0wIGFuZCBVX2RlbD0wIGFuZCBVX3R5cGU9J3Byb2R1Y3QnIGFuZCBVX3R5cGVpZD0kaWQiLCJVX2lkIikgfHwgJHJvd1siVV9pZCJdPT1nZXRycygic2VsZWN0ICogZnJvbSBzbF9tZW51IHdoZXJlIFVfaGlkZT0wIGFuZCBVX2RlbD0wIGFuZCBVX3R5cGU9J3Byb2R1Y3QnIGFuZCBVX3R5cGVpZD0kaWQiLCJVX3N1YiIpKXsNCiAgICAgICAgICAgICAgICAgICAgJGNsYXNzPSJuYXYtbGkgYWN0aXZlIjsNCiAgICAgICAgICAgICAgICAgIH1lbHNlew0KICAgICAgICAgICAgICAgICAgICAkY2xhc3M9Im5hdi1saSBtYXJnaW4tbGVmdC0wIjsNCiAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgaWYoJHJvd1siVV90eXBlIl09PSJsaW5rIil7DQogICAgICAgICAgICAgICAgICAgICRsaW5rPSRyb3dbIlVfbGluayJdOw0KICAgICAgICAgICAgICAgICAgICAkdGFyZ2V0PSJfYmxhbmsiOw0KICAgICAgICAgICAgICAgICAgfWVsc2V7DQogICAgICAgICAgICAgICAgICAgICRsaW5rPSI/dHlwZT0iLiRyb3dbIlVfdHlwZSJdLiImaWQ9Ii4kcm93WyJVX3R5cGVpZCJdOw0KICAgICAgICAgICAgICAgICAgICAkdGFyZ2V0PSJfc2VsZiI7DQogICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAkYXBpPSRhcGkuIjxsaSBjbGFzcz1cIiIuJGNsYXNzLiJcIj48YSBocmVmPVwiIi4kbGluay4iXCIgdGFyZ2V0PVwiIi4kdGFyZ2V0LiJcIiB0aXRsZT1cIiIuJHJvd1siVV90aXRsZSJdLiJcIiA+Ii4kcm93WyJVX3RpdGxlIl0uIjwvYT48L2xpPiI7DQogICAgICAgICAgICAgICAgICAgIF1dDQoNCiAgICAgICAgICAgICAgPC9maC1mdW5jdGlvbj4NCiAgICAgICAgICAgIDwvdWw+DQogICAgICAgICAgPC9kaXY+DQogICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWhvdmVyIj4NCg0KICAgICAgICAgICAgPGZoLWZ1bmN0aW9uPg0KICAgICAgICAgICAgJHNxbD0ic2VsZWN0ICogZnJvbSBzbF9tZW51IHdoZXJlIFVfaGlkZT0wIGFuZCBVX2RlbD0wIGFuZCBVX3N1Yj0wIG9yZGVyIGJ5IFVfb3JkZXIsVV9pZCBkZXNjIjsNCiAgICAgICAgICAgICAgICBzW1sNCiAgICAgICAgICAgICAgICAkYXBpPSRhcGkuIjx1bD4iOw0KDQogICAgICAgICAgICAgICAgICAgICRzcWwyPSJzZWxlY3QgKiBmcm9tIHNsX21lbnUgd2hlcmUgVV9oaWRlPTAgYW5kIFVfZGVsPTAgYW5kIFVfc3ViPSIuJHJvd1siVV9pZCJdLiIgb3JkZXIgYnkgVV9vcmRlcixVX2lkIGRlc2MiOw0KICAgICAgICAgICAgICAgICAgICBzMltbDQogICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgaWYoJHJvdzJbIlVfdHlwZSJdPT0ibGluayIpew0KICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmsyPSRyb3cyWyJVX2xpbmsiXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0YXJnZXQ9Il9ibGFuayI7DQogICAgICAgICAgICAgICAgICAgICAgfWVsc2V7DQogICAgICAgICAgICAgICAgICAgICAgICAkbGluazI9Ij90eXBlPSIuJHJvdzJbIlVfdHlwZSJdLiImaWQ9Ii4kcm93MlsiVV90eXBlaWQiXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0YXJnZXQ9Il9zZWxmIjsNCiAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFwaT0kYXBpLiI8bGk+PGEgaHJlZj1cIiIuJGxpbmsyLiJcIiB0YXJnZXQ9XCIiLiR0YXJnZXQuIlwiIHRpdGxlPVwiIi4kcm93MlsiVV90aXRsZSJdLiJcIiA+Ii4kcm93MlsiVV90aXRsZSJdLiI8L2E+PC9saT4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgXV0NCg0KICAgICAgICAgICAgICAgICAgJGFwaT0kYXBpLiI8L3VsPiI7DQogICAgICAgICAgICAgICAgICAgIF1dDQoNCiAgICAgICAgICAgIDwvZmgtZnVuY3Rpb24+DQogICAgICAgICAgICANCiAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQogICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCiAgPC9uYXY+DQogIDxkaXYgY2xhc3M9Im1ldC1iYW5uZXItbnkgdmVydGljYWwtYWxpZ24gdGV4dC1jZW50ZXIiIHN0eWxlPScnPg0KICAgIDxoMSBjbGFzcz0idmVydGljYWwtYWxpZ24tbWlkZGxlIiBzdHlsZT0nY29sb3I6I2ZmZmZmZjsnPltTX3RpdGxlXTwvaDE+DQogIDwvZGl2Pg0KPC9oZWFkZXI+DQoNCjxkaXYgY2xhc3M9ImNvbHVtbi1zaWRlICI+DQogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciBtb2JpbGUtbm90LXBhZGRpbmciPg0KICAgIDxkaXYgY2xhc3M9ImNvbHVtbi1uYXYiPg0KICAgICAgPG9sIGNsYXNzPSJjb2x1bW4tdWwiPg0KPGxpPjxhPuWVhuWTgeWIhuexu++8mjwvYT48L2xpPg0KICAgICAgICA8bGkgY2xhc3M9ImNvbHVtbi1saSA8ZmgtZnVuY3Rpb24+aWYoJGlkPT0wKXskYXBpPSRhcGkuImFjdGl2ZSI7fWVsc2V7JGFwaT0kYXBpLiIiO308L2ZoLWZ1bmN0aW9uPiI+IDxhIGhyZWY9Ij90eXBlPXByb2R1Y3QmaWQ9MCI+5YWo6YOo5ZWG5ZOBPC9hPiA8L2xpPg0KICAgICAgICANCjxmaC1mdW5jdGlvbj4NCg0KJHNxbD0ic2VsZWN0ICogZnJvbSBzbF9wc29ydCB3aGVyZSBTX2RlbD0wIGFuZCBTX3N1Yj0wIG9yZGVyIGJ5IFNfb3JkZXIsU19pZCBkZXNjIjsNCiAgICAgICAgICAgICAgICBzW1sNCg0KCSAgICAgICAgICAgIGlmKCRyb3dbIlNfaWQiXT09JGlkIHx8ICRyb3dbIlNfaWQiXT09Z2V0cnMoInNlbGVjdCBTX3N1YiBmcm9tIHNsX3Bzb3J0IHdoZXJlIFNfaWQ9JGlkIiwiU19zdWIiKSl7DQoJICAgICAgICAgICAgICAgICRhY3RpdmU9ImFjdGl2ZSI7DQoJICAgICAgICAgICAgfWVsc2V7DQoJICAgICAgICAgICAgCSRhY3RpdmU9IiI7DQoJICAgICAgICAJfQ0KICAgICAgICAgICAgICAgICAgJGFwaT0kYXBpLiI8bGkgY2xhc3M9XCJjb2x1bW4tbGkgbmF2cyAiLiRhY3RpdmUuIlwiPiA8YSBocmVmPVwiP3R5cGU9cHJvZHVjdCZpZD0iLiRyb3dbIlNfaWQiXS4iXCIgdGl0bGU9XCIiLiRyb3dbIlNfdGl0bGUiXS4iXCIgPiIuJHJvd1siU190aXRsZSJdLiI8L2E+IDwvbGk+IjsNCiAgICAgICAgICAgICAgICBdXQ0KPC9maC1mdW5jdGlvbj4NCiAgICAgICAgDQogICAgICA8L29sPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9ImNvbHVtbi1ob3ZlciI+DQogICAgICA8dWw+DQogICAgICA8L3VsPg0KICAgICAgPHVsPg0KICAgICAgPC91bD4NCg0KPGZoLWZ1bmN0aW9uPg0KJHNxbD0ic2VsZWN0ICogZnJvbSBzbF9wc29ydCB3aGVyZSBTX2RlbD0wIGFuZCBTX3N1Yj0wIG9yZGVyIGJ5IFNfb3JkZXIsU19pZCBkZXNjIjsNCiAgICAgICAgICAgICAgICBzW1sNCiRhcGk9JGFwaS4iPHVsIGNsYXNzPVwiaGFzXCI+IjsNCiRzcWwyPSJzZWxlY3QgKiBmcm9tIHNsX3Bzb3J0IHdoZXJlIFNfZGVsPTAgYW5kIFNfc3ViPSIuJHJvd1siU19pZCJdLiIgb3JkZXIgYnkgU19vcmRlcixTX2lkIGRlc2MiOw0KICAgICAgICAgICAgICAgIHMyW1sNCiAgICAgICAgICAgICAgICAgICRhcGk9JGFwaS4iPGxpPjxhIGhyZWY9XCI/dHlwZT1wcm9kdWN0JmlkPSIuJHJvdzJbIlNfaWQiXS4iXCIgdGl0bGU9XCIiLiRyb3cyWyJTX3RpdGxlIl0uIlwiID4iLiRyb3cyWyJTX3RpdGxlIl0uIjwvYT48L2xpPiI7DQogICAgICAgICAgICAgICAgXV0NCiRhcGk9JGFwaS4iPC91bD4iOw0KDQogICAgICAgICAgICAgICAgXV0NCjwvZmgtZnVuY3Rpb24+DQogICAgPC9kaXY+DQogIDwvZGl2Pg0KPC9kaXY+DQoNCjxkaXYgc3R5bGU9ImhlaWdodDogMTBweDtiYWNrZ3JvdW5kOiAjZjdmN2Y3Ij48L2Rpdj4NCjxkaXYgY2xhc3M9ImNvbHVtbi1zaWRlICIgc3R5bGU9InotaW5kZXg6IDEiPg0KICA8ZGl2IGNsYXNzPSJjb250YWluZXIgbW9iaWxlLW5vdC1wYWRkaW5nIj4NCjxmaC1mdW5jdGlvbj4NCg0KJGFyciA9IGFycmF5KCk7DQppZigkaWQ9PTApew0KICAvLyRzcWw9InNlbGVjdCAqIGZyb20gc2xfcHJvZHVjdCB3aGVyZSBQX2RlbD0wICIuJE1fcGluZm8uIiAgJE1faW5mbyBvcmRlciBieSBQX3RvcCBkZXNjLFBfb3JkZXIsUF90aW1lIGRlc2MsUF9pZCBkZXNjIjsNCn1lbHNlew0KICBpZigkU19zdWI9PTApew0KICAgICRzcWw9InNlbGVjdCAqIGZyb20gc2xfcHJvZHVjdCxzbF9wc29ydCB3aGVyZSBTX2RlbD0wICRNX2luZm8gYW5kIFBfZGVsPTAgIi4kTV9waW5mby4iICBhbmQgUF9zb3J0PVNfaWQgYW5kIFNfc3ViPSIuJGlkLiIgb3JkZXIgYnkgUF90b3AgZGVzYyxQX29yZGVyLFBfdGltZSBkZXNjLFBfaWQgZGVzYyI7DQogIH1lbHNlew0KICAgICRzcWw9InNlbGVjdCAqIGZyb20gc2xfcHJvZHVjdCxzbF9wc29ydCB3aGVyZSBTX2RlbD0wICRNX2luZm8gYW5kIFBfZGVsPTAgIi4kTV9waW5mby4iICBhbmQgUF9zb3J0PVNfaWQgYW5kIFNfaWQ9Ii4kaWQuIiBvcmRlciBieSBQX3RvcCBkZXNjLFBfb3JkZXIsUF90aW1lIGRlc2MsUF9pZCBkZXNjIjsNCiAgfQ0KfQ0KDQokcmVzdWx0ID0gbXlzcWxpX3F1ZXJ5KCRjb25uLCAgJHNxbCk7DQppZiAobXlzcWxpX251bV9yb3dzKCRyZXN1bHQpID4gMCkgew0Kd2hpbGUoJHJvdyA9IG15c3FsaV9mZXRjaF9hc3NvYygkcmVzdWx0KSkgew0KICAgICAgICAkc3g9ZXhwbG9kZSgiXHJcbiIsJHJvd1siUF9zaHV4aW5nIl0pOw0KICAgICAgICBmb3IoJGk9MDskaTxjb3VudCgkc3gpOyRpKyspew0KICAgICAgICAgIGlmKHNwbGl0eCgkc3hbJGldLCI6IiwwKSE9IiIpew0KICAgICAgICAgICAgJGM9anNvbl9kZWNvZGUoIntcIlNfdGl0bGVcIjpcIiIuc3BsaXR4KCRzeFskaV0sIjoiLDApLiJcIn0iLHRydWUpOw0KICAgICAgICAgICAgaWYoIWlzX2hhdmVzKCRjLCRhcnIpKXsNCiAgICAgICAgICAgICAgYXJyYXlfcHVzaCgkYXJyLCRjKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9IA0KDQoNCmZvcigkaT0wOyRpPGNvdW50KCRhcnIpOyRpKyspew0KICAkYXJyWyRpXVsibGlzdCJdPWFycmF5KCk7DQogICRyZXN1bHQgPSBteXNxbGlfcXVlcnkoJGNvbm4sICAkc3FsKTsNCiAgaWYgKG15c3FsaV9udW1fcm93cygkcmVzdWx0KSA+IDApIHsNCiAgd2hpbGUoJHJvdyA9IG15c3FsaV9mZXRjaF9hc3NvYygkcmVzdWx0KSkgew0KICAgICAgICAgICRzeD1leHBsb2RlKCJcclxuIiwkcm93WyJQX3NodXhpbmciXSk7DQogICAgICAgICAgZm9yKCRtPTA7JG08Y291bnQoJHN4KTskbSsrKXsNCiAgICAgICAgICAgICRzPXNwbGl0eCgkc3hbJG1dLCI6IiwwKTsNCiAgICAgICAgICAgIGlmKCRzPT0kYXJyWyRpXVsiU190aXRsZSJdKXsNCiAgICAgICAgICAgICAgJHY9c3BsaXR4KCRzeFskbV0sIjoiLDEpOw0KICAgICAgICAgICAgICAgIGlmKCR2IT0iIil7DQogICAgICAgICAgICAgICAgICAkeD1qc29uX2RlY29kZSgie1wic2h1eGluZ1wiOlwiIi4kdi4iXCJ9Iix0cnVlKTsNCiAgICAgICAgICAgICAgICAgIGlmKCFpc19oYXZlcygkeCwkYXJyWyRpXVsibGlzdCJdKSl7DQogICAgICAgICAgICAgICAgICAgIGFycmF5X3B1c2goJGFyclskaV1bImxpc3QiXSwkeCk7DQogICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9DQogIH0NCn0NCg0KDQpmb3IoJGk9MDskaTxjb3VudCgkYXJyKTskaSsrKXsNCiAgZm9yKCRqPTA7JGo8Y291bnQoJGFyclskaV1bImxpc3QiXSk7JGorKyl7DQogICAgaWYoJF9HRVRbImYiLiRpXT09JGFyclskaV1bIlNfdGl0bGUiXS4iOiIuJGFyclskaV1bImxpc3QiXVskal1bInNodXhpbmciXSl7DQogICAgICAkc2VsZWN0ZWQ9ImFjdGl2ZSI7DQogICAgfWVsc2V7DQogICAgICAkc2VsZWN0ZWQ9IiI7DQogICAgfQ0KDQogICAgJHNodXhpbmc9JHNodXhpbmcuIjxsaSBjbGFzcz1cIiIuJHNlbGVjdGVkLiJcIj4gPGEgc3R5bGU9XCJwYWRkaW5nOjEwcHg7XCIgaHJlZj1cIiIudXJsKCR1cmwsImYiLiRpLCRfR0VUWyJmIi4kaV0pLiImZiIuJGkuIj0iLiRhcnJbJGldWyJTX3RpdGxlIl0uIjoiLiRhcnJbJGldWyJsaXN0Il1bJGpdWyJzaHV4aW5nIl0uIlwiID4iLiRhcnJbJGldWyJsaXN0Il1bJGpdWyJzaHV4aW5nIl0uIjwvYT4gPC9saT4iOw0KDQogIH0NCg0KaWYoJF9HRVRbImYiLiRpXT09IiIpew0KICAkc2VsZWN0ZWQ9ImFjdGl2ZSI7DQp9ZWxzZXsNCiAgJHNlbGVjdGVkPSIiOw0KfQ0KDQogICRhcGk9JGFwaS4gIg0KICA8ZGl2IGNsYXNzPVwiY29sdW1uLW5hdlwiPjxvbCBjbGFzcz1cImNvbHVtbi11bFwiPjxsaT48YSBzdHlsZT1cInBhZGRpbmc6MTBweDtcIj4iLiRhcnJbJGldWyJTX3RpdGxlIl0uIu+8mjwvYT48L2xpPjxsaSBjbGFzcz1cIiIuJHNlbGVjdGVkLiJcIj48YSBzdHlsZT1cInBhZGRpbmc6MTBweDtcIiBocmVmPVwiIi51cmwoJHVybCwiZiIuJGksJF9HRVRbImYiLiRpXSkuIiZmIi4kaS4iPVwiPuS4jemZkDwvYT48L2xpPiIuJHNodXhpbmcuIjwvb2w+PC9kaXY+IjsNCiAgJHNodXhpbmc9IiI7DQp9DQoNCjwvZmgtZnVuY3Rpb24+DQo8L2Rpdj4NCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJncmV5LWJveCI+DQogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+DQogICAgPGRpdiBjbGFzcz0iaG9zdC1jdXQiPg0KICAgICAgPGRpdiBjbGFzcz0iaG9zdC1saXN0IGFjdGl2ZSI+DQogICAgICAgIDx1bCBjbGFzcz0iYmxvY2tzLTIgYmxvY2tzLXNtLTMgYmxvY2tzLW1kLTQgYmxvY2tzLXhsZy01ICBtZXQtcGFnZS1hamF4IG1ldC1ncmlkIiBpZD0ibWV0LWdyaWQiIGRhdGEtc2NhbGU9JzEnPg0KDQo8ZmgtZnVuY3Rpb24+DQppZigkaWQ9PTApew0KICAkc3FsPSJzZWxlY3QgKiBmcm9tIHNsX3Byb2R1Y3Qgd2hlcmUgUF9kZWw9MCAiLiRNX3BpbmZvLiIgICIuc2h1eGluZygiUF9zaHV4aW5nIikuIiAkTV9pbmZvIG9yZGVyIGJ5IFBfdG9wIGRlc2MsUF9vcmRlcixQX3RpbWUgZGVzYyxQX2lkIGRlc2MgbGltaXQgIi4oKCRwYWdlLTEpKjEwKS4iLDEwIjsNCn1lbHNlew0KICBpZigkU19zdWI9PTApew0KICAgICRzcWw9InNlbGVjdCAqIGZyb20gc2xfcHJvZHVjdCxzbF9wc29ydCB3aGVyZSBTX2RlbD0wICIuc2h1eGluZygiUF9zaHV4aW5nIikuIiAkTV9pbmZvIGFuZCBQX2RlbD0wICIuJE1fcGluZm8uIiAgYW5kIFBfc29ydD1TX2lkIGFuZCBTX3N1Yj0iLiRpZC4iIG9yZGVyIGJ5IFBfdG9wIGRlc2MsUF9vcmRlcixQX3RpbWUgZGVzYyxQX2lkIGRlc2MgbGltaXQgIi4oKCRwYWdlLTEpKjEwKS4iLDEwIjsNCiAgfWVsc2V7DQogICAgJHNxbD0ic2VsZWN0ICogZnJvbSBzbF9wcm9kdWN0LHNsX3Bzb3J0IHdoZXJlIFNfZGVsPTAgIi5zaHV4aW5nKCJQX3NodXhpbmciKS4iICRNX2luZm8gYW5kIFBfZGVsPTAgIi4kTV9waW5mby4iICBhbmQgUF9zb3J0PVNfaWQgYW5kIFNfaWQ9Ii4kaWQuIiBvcmRlciBieSBQX3RvcCBkZXNjLFBfb3JkZXIsUF90aW1lIGRlc2MsUF9pZCBkZXNjIGxpbWl0ICIuKCgkcGFnZS0xKSoxMCkuIiwxMCI7DQogIH0NCn0NCg0KICAgIHNbWw0KDQogICAgICAgICAgICBpZigkcm93WyJQX21pZCJdPT0wKXsNCiAgICAgICAgICAgICAgICAkenk9IjxzcGFuIHN0eWxlPVwiZm9udC1zaXplOjEycHg7YmFja2dyb3VuZDojYzgxNjIzO2JvcmRlci1yYWRpdXM6NXB4O3BhZGRpbmc6MXB4IDNweDtjb2xvcjojZmZmZmZmO21hcmdpbi1yaWdodDo1cHg7ZGlzcGxheTppbmxpbmU7XCI+6Ieq6JClPC9zcGFuPiI7DQogICAgICAgICAgICAgIH1lbHNlew0KICAgICAgICAgICAgICAgICR6eT0iIjsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYoJHJvd1siUF9saW1pdCJdPjAgYW5kICRyb3dbIlBfbGltaXRsb25nIl0+MCBhbmQgJHJvd1siUF9saW1pdGxvbmciXS0odGltZSgpLXN0cnRvdGltZSgkcm93WyJQX2xpbWl0dGltZSJdKSkvMzYwMD4wKXsNCiAgICAgICAgICAgICAgJFBfcHJpY2U9JHJvd1siUF9saW1pdCJdLiIgPHNwYW4gc3R5bGU9XCJiYWNrZ3JvdW5kOiNmOTA7Y29sb3I6I2ZmZmZmZjtib3JkZXItcmFkaXVzOjVweDtmb250LXNpemU6MTJweDtwYWRkaW5nOjBweCA2cHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7XCI+6ZmQ5pe2PC9zcGFuPiI7DQogICAgICAgICAgICAgICRsPWRhdGUoJ1ktbS1kIEg6aTpzJyxzdHJ0b3RpbWUoJysnLiRyb3dbIlBfbGltaXRsb25nIl0uJyBob3VyJyxzdHJ0b3RpbWUoJHJvd1siUF9saW1pdHRpbWUiXSkpKTsNCiAgICAgICAgICAgIH1lbHNlew0KICAgICAgICAgICAgICAkUF9wcmljZT1wKCRyb3dbIlBfcHJpY2UiXSk7DQogICAgICAgICAgICAgICRsPSIiOw0KICAgICAgICAgICAgfQ0KDQogICAgICAkYXBpPSRhcGkuIjxsaSBjbGFzcz1cInNob3duIHNjbXMtcGljXCI+IDxhIGhyZWY9XCI/dHlwZT1wcm9kdWN0aW5mbyZpZD0iLiRyb3dbIlBfaWQiXS4iXCIgdGl0bGU9XCIiLiRyb3dbIlBfdGl0bGUiXS4iXCI+IA0KDQogICAgICAgIDxkaXYgc3R5bGU9XCJiYWNrZ3JvdW5kLWltYWdlOnVybCgiLnBpYyhzcGxpdHgoJHJvd1siUF9waWMiXSwifCIsMCkpLiIpO2JhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXIgY2VudGVyO3dpZHRoOjEwMCU7aGVpZ2h0OjIwMHB4O2JhY2tncm91bmQtc2l6ZTogY292ZXI7bWFyZ2luOjIwcHggYXV0byAyNXB4IGF1dG87cG9zaXRpb246cmVsYXRpdmU7XCIgY2xhc3M9XCJzc3NcIiBsaW1pdD1cIiIuJGwuIlwiPg0KICAgICAgICAgIA0KICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgPHNwYW4+IDxiPiIuJHp5LiRyb3dbIlBfdGl0bGUiXS4iPC9iPiA8aT4mbmJzcDs8L2k+DQo8cD48c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OmJvbGQ7dGV4dC1hbGlnbjpsZWZ0XCI+77+lIi4kUF9wcmljZS4iPC9zcGFuPiAgPHNwYW4gc3R5bGU9XCJjb2xvcjogIzk5OTk5OTtmbG9hdDpyaWdodDttYXJnaW4tdG9wOi0yMHB4O1wiPuW3suWUru+8miIuJHJvd1siUF9zb2xkIl0uIuS7tjwvc3Bhbj48L3A+DQo8L3NwYW4+IDwvYT4gPC9saT4iOw0KICAgICAgICAgICAgICAgIF1dDQo8L2ZoLWZ1bmN0aW9uPg0KDQogICAgICAgIDwvdWw+DQogICAgICAgIDxkaXY+DQo8ZGl2IGNsYXNzPSdtZXRfcGFnZXInPg0KPGRpdiBpZD0icGFnZXIiPjwvZGl2Pg0KPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQogIDwvZGl2Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJjb250YWluZXIiPg0KICA8ZGl2IGNsYXNzPSJmb290LXNlcnZpY2UiPg0KICAgIDx1bCBjbGFzcz0iZm9vdC1zZXJ2aWNlLXdyYXBlciI+DQogICAgICA8bGkgY2xhc3M9ImZvb3Qtc2VydmljZS1zbGlkZSI+PGEgIHRpdGxlPSLmraPlk4Hkv53or4EiPjxpIGNsYXNzPSJmYSBmYS1kaWFtb25kIj48L2k+5q2j5ZOB5L+d6K+BPC9hPjwvbGk+DQogICAgICA8bGkgY2xhc3M9ImZvb3Qtc2VydmljZS1zbGlkZSI+PGEgIHRpdGxlPSLlpoLlrp7mj4/ov7AiPjxpIGNsYXNzPSJmYSBmYS1jYW1lcmEtcmV0cm8iPjwvaT7lpoLlrp7mj4/ov7A8L2E+PC9saT4NCiAgICAgIDxsaSBjbGFzcz0iZm9vdC1zZXJ2aWNlLXNsaWRlIj48YSAgdGl0bGU9IuS4k+S4mumFjemAgSI+PGkgY2xhc3M9ImZhIGZhLXRydWNrIj48L2k+5LiT5Lia6YWN6YCBPC9hPjwvbGk+DQogICAgICA8bGkgY2xhc3M9ImZvb3Qtc2VydmljZS1zbGlkZSI+PGEgIHRpdGxlPSLph5HniYzmnI3liqEiPjxpIGNsYXNzPSJmYSBmYS1oZWFydC1vIj48L2k+6YeR54mM5pyN5YqhPC9hPjwvbGk+DQogICAgICA8bGkgY2xhc3M9ImZvb3Qtc2VydmljZS1zbGlkZSI+PGEgIHRpdGxlPSLkuIfljYPkv6HotZYiPjxpIGNsYXNzPSJmYSB3Yi1nYWxsZXJ5Ij48L2k+5LiH5Y2D5L+h6LWWPC9hPjwvbGk+DQogICAgPC91bD4NCiAgPC9kaXY+DQogIDxkaXYgY2xhc3M9ImZvb3QtY29udGVudCI+DQogICAgPGRpdiBjbGFzcz0iZm9vdC1uYXYiPg0KICAgICAgPHVsIGNsYXNzPSJmb290LW5hdi13cmFwZXIiPg0KDQogICAgICAgIDxmaC1mdW5jdGlvbj4NCiAgICAgICAgICAgICAgICAkc3FsPSJzZWxlY3QgKiBmcm9tIHNsX21lbnUgd2hlcmUgVV9oaWRlPTAgYW5kIG5vdCBVX3R5cGU9J2luZGV4JyBhbmQgbm90IFVfdHlwZT0nbGluaycgYW5kIFVfZGVsPTAgYW5kIFVfc3ViPTAgb3JkZXIgYnkgVV9vcmRlcixVX2lkIGRlc2MiOw0KICAgICAgICAgICAgICAgIHNbWw0KICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAkYXBpPSRhcGkuIjxsaSBjbGFzcz1cImZvb3QtbmF2LXNsaWRlXCI+IDxiPjxhIGhyZWY9XCI/dHlwZT0iLiRyb3dbIlVfdHlwZSJdLiImaWQ9Ii4kcm93WyJVX3R5cGVpZCJdLiJcIiAgdGl0bGU9XCIiLiRyb3dbIlVfdGl0bGUiXS4iXCI+Ii4kcm93WyJVX3RpdGxlIl0uIjwvYT48L2I+DQogICAgICAgICAgPG9sPiI7DQoNCiAgICAgICAgICAgICRzcWwyPSJzZWxlY3QgKiBmcm9tIHNsX21lbnUgd2hlcmUgVV9oaWRlPTAgYW5kIFVfZGVsPTAgYW5kIFVfc3ViPSIuJHJvd1siVV9pZCJdLiIgb3JkZXIgYnkgVV9vcmRlcixVX2lkIGRlc2MiOw0KICAgICAgICAgICAgICAgIHMyW1sNCiAgICAgICAgICAgICAgICAgICRhcGk9JGFwaS4iPGxpPjxhIGhyZWY9XCI/dHlwZT0iLiRyb3cyWyJVX3R5cGUiXS4iJmlkPSIuJHJvdzJbIlVfdHlwZWlkIl0uIlwiICB0aXRsZT1cIiIuJHJvdzJbIlVfdGl0bGUiXS4iXCI+Ii4kcm93MlsiVV90aXRsZSJdLiI8L2E+PC9saT4iOw0KICAgICAgICAgICAgICAgIF1dDQoNCiAgICAgICAgICAkYXBpPSRhcGkuIjwvb2w+DQogICAgICAgIDwvbGk+IjsNCiAgICAgICAgICAgICAgICAgICAgXV0NCg0KICAgICAgICAgICAgICA8L2ZoLWZ1bmN0aW9uPg0KICAgICAgICANCiAgICAgIDwvdWw+DQogICAgPC9kaXY+DQogICAgPGRpdiBjbGFzcz0iZm9vdC10ZXh0Ij4gPGI+PGEgaHJlZj0idGVsOjAxMC0xMDA4NiIgdGl0bGU9IjAxMC0xMDA4NiI+MDEwLTEwMDg2PC9hPjwvYj4gPGk+5pyN5Yqh5pe26Ze0IDk6MDAtMjI6MDA8L2k+DQogICAgICA8cD4gPGEgaWQ9Im1ldC13ZWl4aW4iPjxpIGNsYXNzPSJmYSBmYS13ZWl4aW4gbGlnaHQtZ3JlZW4tNzAwIiBkYXRhLXBsdWdpbj0id2VidWlQb3BvdmVyIiBkYXRhLXRyaWdnZXI9ImhvdmVyIiBkYXRhLWFuaW1hdGlvbj0icG9wIiBkYXRhLXBsYWNlbWVudD0ndG9wJyBkYXRhLXdpZHRoPScxNjAnIGRhdGEtcGFkZGluZz0nMCcgZGF0YS1jb250ZW50PSI8aW1nIHNyYz0nbWVkaWEvMjAxOTExMjYyMjQzNTJXZi5qcGcnIHN0eWxlPSd3aWR0aDogMTUwcHg7aGVpZ2h0OjE1MHB4O2Rpc3BsYXk6YmxvY2s7bWFyZ2luOmF1dG87Jz4iPjwvaT48L2E+IA0KICAgICAgICANCiAgICAgIDwvcD4NCiAgICA8L2Rpdj4NCiAgPC9kaXY+DQo8L2Rpdj4NCjxmb290ZXI+DQogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+DQogICAgPGRpdiBjbGFzcz0ibWV0LWxpbmtzIj4NCiAgICAgIDxvbCBjbGFzcz0iYnJlYWRjcnVtYiI+DQogICAgICAgIDxsaT7lj4vmg4Xpk77mjqUgOjwvbGk+DQogICAgICAgIDxmaC1mdW5jdGlvbj4NCiAgICAgICAgJHNxbD0ic2VsZWN0ICogZnJvbSBzbF9saW5rIHdoZXJlIExfZGVsPTAgb3JkZXIgYnkgTF9pZCBkZXNjIjsNCiAgICAgICAgICAgICAgICBzW1sNCiAgICAgICAgICAgICAgICAgICAgICAgICRhcGk9JGFwaS4iPGxpPjxhIGhyZWY9XCIiLiRyb3dbIkxfbGluayJdLiJcIiB0YXJnZXQ9XCJfYmxhbmtcIj4iLiRyb3dbIkxfdGl0bGUiXS4iPC9hPiAgPC9saT4iOw0KICAgICAgICAgICAgICAgICAgICBdXQ0KICAgICAgICA8L2ZoLWZ1bmN0aW9uPg0KICAgICAgPC9vbD4NCiAgICA8L2Rpdj4NCiAgICA8cD4NCiAgICA8cD4NCkNvcHlyaWdodCDCqSAyMDE1LTIwMjAg5oKo55qE5YWs5Y+45ZCN56ewIOeJiOadg+aJgOaciSA8YSBocmVmPSJodHRwOi8vYmVpYW4ubWlpdC5nb3YuY24vIiB0YXJnZXQ9Il9ibGFuayI+5LqsSUNQ5aSHMDAwMDAwMDDlj7c8L2E+DQogICAgICA8L3A+DQogICAgPC9wPg0KICA8L2Rpdj4NCjwvZm9vdGVyPg0KDQo8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4taWNvbiBidG4tcHJpbWFyeSBidG4tc3F1YXJlZCBtZXQtc2Nyb2xsLXRvcCBoaWRlIj48aSBjbGFzcz0iaWNvbiB3Yi1jaGV2cm9uLXVwIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvYnV0dG9uPg0KPGJ1dHRvbiB0eXBlPSJidXR0b24iIG9uY2xpY2s9IndpbmRvdy5sb2NhdGlvbi5ocmVmPSdtZW1iZXIvY2FydC5waHAnIiBjbGFzcz0iYnRuIGJ0bi1pY29uIGJ0bi1wcmltYXJ5IGJ0bi1zcXVhcmVkIG1ldC1zY3JvbGwtdG9wIGhpZGUiIHN0eWxlPSJib3R0b206IDUwcHg7Ij48aSBjbGFzcz0iaWNvbiB3Yi1zaG9wcGluZy1jYXJ0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvYnV0dG9uPg0KPHNjcmlwdCBzcmM9InRlbXBsYXRlL3QxL3NraW4vanMvc2hvcF9sYW5nX2NuLmpzIj48L3NjcmlwdD4gDQo8c2NyaXB0IHNyYz0idGVtcGxhdGUvdDEvc2tpbi9qcy9pbmRleC5qcyI+PC9zY3JpcHQ+IA0KPHNjcmlwdCBzcmM9InRlbXBsYXRlL3QxL3NraW4vanMvc2hvcF92My5qcyI+PC9zY3JpcHQ+DQo8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnBhZ2VyLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0Pg0KPHNjcmlwdD4NCg0KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7DQogICQoIi5zc3MiKS5oZWlnaHQoJCgiLnNzcyIpLndpZHRoKCkpOw0KICAkKCIjcGFnZXIiKS5wYWdlcih7IHBhZ2VudW1iZXI6IDxmaC1mdW5jdGlvbj4gJGFwaT0kYXBpLiRwYWdlOzwvZmgtZnVuY3Rpb24+LCBwYWdlY291bnQ6IDxmaC1mdW5jdGlvbj4gJGFwaT0kYXBpLiRwYWdlX251bTs8L2ZoLWZ1bmN0aW9uPiwgYnV0dG9uQ2xpY2tDYWxsYmFjazogUGFnZUNsaWNrIH0pOw0KfSk7DQoNClBhZ2VDbGljayA9IGZ1bmN0aW9uKHBhZ2VjbGlja2VkbnVtYmVyKSB7DQogIHdpbmRvdy5sb2NhdGlvbj0iPGZoLWZ1bmN0aW9uPiRhcGk9JGFwaS51cmwoJHVybCwicGFnZSIsJF9HRVRbInBhZ2UiXSk7PC9maC1mdW5jdGlvbj4mcGFnZT0iK3BhZ2VjbGlja2VkbnVtYmVyOw0KfQ0KDQpmdW5jdGlvbiBsaW1pdCgpew0KICAkKCIuc3NzIikuZWFjaChmdW5jdGlvbigpew0KICAgICAgaWYoJCh0aGlzKS5hdHRyKCJsaW1pdCIpIT0iIil7DQogICAgICB2YXIgbGVmdFRpbWUgPSBuZXcgRGF0ZSgkKHRoaXMpLmF0dHIoImxpbWl0IikpIC0gbmV3IERhdGUoKTsNCiAgICAgIHZhciBkLCBoLCBtLCBzOw0KICAgICAgaWYgKGxlZnRUaW1lIDwgMCkgew0KICAgICAgICByZXR1cm47DQogICAgICB9DQogICAgICBkID0gTWF0aC5mbG9vcihsZWZ0VGltZSAvIDEwMDAgLyA2MCAvIDYwIC8gMjQpOw0KICAgICAgaCA9IE1hdGguZmxvb3IoKGxlZnRUaW1lIC8gMTAwMCAvIDYwIC8gNjApICUgMjQpOw0KICAgICAgbSA9IE1hdGguZmxvb3IoKGxlZnRUaW1lIC8gMTAwMCAvIDYwKSAlIDYwKTsNCiAgICAgIHMgPSBNYXRoLmZsb29yKChsZWZ0VGltZSAvIDEwMDApICUgNjApOw0KICAgICAgY29uc3Qgc3RyID0gYCR7ZH3lpKkke2h9OiR7bX06JHtzfWA7DQogICAgICAgICQodGhpcykuaHRtbCgiPGRpdiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTtsZWZ0OiAwcHg7Ym90dG9tOiAwcHg7YmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjUpO2NvbG9yOiAjZmZmO3dpZHRoOjEwMCU7aGVpZ2h0OjI1cHg7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MjVweDt0ZXh0LWFsaWduOmxlZnRcIj48aW1nIHNyYz1cImh0dHBzOi8vbWlzYy4zNjBidXlpbWcuY29tL3Byb2R1Y3Qvc2VhcmNoLzEuMC44L2Nzcy9pL3NlYXJjaC5wcmVzZWxsLmdpZlwiIHN0eWxlPVwibWFyZ2luOjAgNXB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrXCI+6ZmQ5pe254m55oOgICIrc3RyKyIg5ZCO57uT5p2fPC9kaXY+Iik7DQogICAgICB9DQogICAgfSk7DQp9DQpsaW1pdCgpOw0Kc2V0SW50ZXJ2YWwobGltaXQsIDEwMDApOw0KPC9zY3JpcHQ+DQo8bGluayBocmVmPSdjc3MvbGFucmVuemhpamlhLmNzcycgcmVsPSdzdHlsZXNoZWV0JyB0eXBlPSd0ZXh0L2NzcycgLz48c2NyaXB0IHNyYz0nanMvanF1ZXJ5LktpblNsaWRlc2hvdy0xLjIuMS5taW4uanMnIHR5cGU9J3RleHQvamF2YXNjcmlwdCc+PC9zY3JpcHQ+PGRpdiBpZD0nb25saW5lX3FxX2xheWVyJyBzdHlsZT0nei1pbmRleDoyMDAwOyc+PGRpdiBpZD0nb25saW5lX3FxX3RhYic+PGRpdiBjbGFzcz0nb25saW5lX2ljb24nPjxhIGlkPSdmbG9hdFNob3cnIHN0eWxlPSdkaXNwbGF5OmJsb2NrOycgaHJlZj0namF2YXNjcmlwdDp2b2lkKDApOyc+Jm5ic3A7PC9hPjxhICBpZD0nZmxvYXRIaWRlJyBzdHlsZT0nZGlzcGxheTpub25lOycgaHJlZj0namF2YXNjcmlwdDp2b2lkKDApOyc+Jm5ic3A7PC9hPjwvZGl2PjwvZGl2PjxkaXYgaWQ9J29ubGluZVNlcnZpY2UnIHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxkaXYgY2xhc3M9J29ubGluZV93aW5kb3dzIG92ZXJ6Jz48ZGl2IGNsYXNzPSdvbmxpbmVfd190b3AnPjwvZGl2PjxkaXYgY2xhc3M9J29ubGluZV93X2Mgb3ZlcnonPjxkaXYgY2xhc3M9J29ubGluZV9iYXIgZXhwYW5kJyBpZD0nb25saW5lU29ydDEnPjxoMj48YSBvbmNsaWNrPSdjaGFuZ2VPbmxpbmUoMSknPuWcqOe6v+WuouacjTwvYT48L2gyPjxkaXYgY2xhc3M9J29ubGluZV9jb250ZW50IG92ZXJ6JyBpZD0nb25saW5lVHlwZTEnPjx1bCBjbGFzcz0nb3ZlcnonPjxsaT48YSB0aXRsZT0n54K55Ye76L+Z6YeM57uZ5oiR5Y+R5raI5oGvJyBocmVmPSdodHRwOi8vd3BhLnFxLmNvbS9tc2dyZD92PTMmdWluPTEyMzEyMzEyMyZzaXRlPXFxJm1lbnU9eWVzJyB0YXJnZXQ9J19ibGFuaycgY2xhc3M9J3FxX2ljb24nPuWUruWJjeWSqOivojwvYT48L2xpPjxsaT48YSB0aXRsZT0n54K55Ye76L+Z6YeM57uZ5oiR5Y+R5raI5oGvJyBocmVmPSdodHRwOi8vd3d3LnRhb2Jhby5jb20vd2Vid3cvd3cucGhwP3Zlcj0zJnRvdWlkPXRhb2JhbyZzaXRlaWQ9Y250YW9iYW8mc3RhdHVzPTEmY2hhcnNldD11dGYtOCcgdGFyZ2V0PSdfYmxhbmsnIGNsYXNzPSd3d19pY29uJz7llK7lkI7mnI3liqE8L2E+PC9saT48L3VsPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9J29ubGluZV9iYXIgY29sbGFwc2UyJyBpZD0nb25saW5lU29ydDInPjxoMj48YSBvbmNsaWNrPSdjaGFuZ2VPbmxpbmUoMiknPueUteivneWuouacjTwvYT48L2gyPjxkaXYgY2xhc3M9J29ubGluZV9jb250ZW50IG92ZXJ6JyBpZD0nb25saW5lVHlwZTInPjx1bCBjbGFzcz0nb3ZlcnonPjxsaT4wMTAtMTAwODY8L2xpPjwvdWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0nb25saW5lX2JhciBjb2xsYXBzZTInIGlkPSdvbmxpbmVTb3J0Myc+PGgyPjxhIG9uY2xpY2s9J2NoYW5nZU9ubGluZSgzKSc+572R56uZ5LqM57u056CBPC9hPjwvaDI+PGRpdiBjbGFzcz0nb25saW5lX2NvbnRlbnQgb3ZlcnonIGlkPSdvbmxpbmVUeXBlMyc+PHVsIGNsYXNzPSdvdmVyeic+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nanMvcXJjb2RlLm1pbi5qcyc+PC9zY3JpcHQ+PGRpdiBpZD0ncXJjb2RlJyBzdHlsZT0nbWFyZ2luOjAgMCAxMHB4IDEwcHg7Jz48L2Rpdj48c2NyaXB0PnZhciBxcmNvZGUgPSBuZXcgUVJDb2RlKCdxcmNvZGUnLCB7d2lkdGg6IDExMCxoZWlnaHQ6IDExMCxjb2xvckRhcms6ICcjMDAwMDAwJyxjb2xvckxpZ2h0OiAnI2ZmZmZmZicsY29ycmVjdExldmVsOiBRUkNvZGUuQ29ycmVjdExldmVsLkh9KTtxcmNvZGUubWFrZUNvZGUoJ2h0dHA6Ly9sb2NhbGhvc3Q6NTAwMScpOzwvc2NyaXB0PjwvdWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0nb25saW5lX2JhciBjb2xsYXBzZTInIGlkPSdvbmxpbmVTb3J0NCc+PGgyPjxhIG9uY2xpY2s9J2NoYW5nZU9ubGluZSg0KSc+5b6u5L+h5YWs5LyX5Y+3PC9hPjwvaDI+PGRpdiBjbGFzcz0nb25saW5lX2NvbnRlbnQgb3ZlcnonIGlkPSdvbmxpbmVUeXBlNCc+PHVsIGNsYXNzPSdvdmVyeic+PGltZyBzcmM9J21lZGlhLzIwMTkxMTI2MjI0MzUyV2YuanBnJyB3aWR0aD0nMTIwJyAvPjwvdWw+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0nb25saW5lX3dfYm90dG9tJz48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4NCg0KPGZoLWZ1bmN0aW9uPg0KaWYoaXNNb2JpbGUoKSl7DQogICRhcGk9JGFwaS4nPHN0eWxlPg0KLnRhYl9iYXJ7cG9zaXRpb246IGZpeGVkO2JvdHRvbTogMHB4O2xlZnQ6IDBweDt6LWluZGV4OiA5OTk5O2JhY2tncm91bmQ6ICNmZmY7aGVpZ2h0OiA1NXB4O3dpZHRoOiAxMDAlO2JvcmRlci10b3A6IHNvbGlkIDFweCAjREREO3BhZGRpbmctdG9wOiA1cHg7Zm9udC1zaXplOiAxMnB4O30NCi50YWJfYmFyIC50YWJ7fQ0KLnRhYl9iYXIgLmFjdGl2ZXtjb2xvcjogI2ZmMDAwMH0NCi50YWJfYmFyIGltZ3toZWlnaHQ6IDI3cHg7fQ0KLnRhYl9iYXIgdGFibGV7d2lkdGg6IDEwMCU7fQ0KLnRhYl9iYXIgdGFibGUgdHIgdGR7dGV4dC1hbGlnbjogY2VudGVyO30NCi5oNTB7aGVpZ2h0OiA1MHB4O30NCg0KPC9zdHlsZT4NCg0KPGRpdiBjbGFzcz0iaDUwIj48L2Rpdj4NCjxkaXYgY2xhc3M9InRhYl9iYXIiPg0KICA8dGFibGU+DQogICAgPHRyPg0KICA8dGQ+PGEgY2xhc3M9InRhYiIgaHJlZj0iLi8iPg0KICAgIDxpbWcgc3JjPSJ0ZW1wbGF0ZS90MS9za2luL2ltYWdlcy90YWIxLnBuZyI+DQogICAgPGRpdiA+6aaW6aG1PC9kaXY+DQogIDwvYT48L3RkPic7DQoNCiAgaWYoJGNvbmZpZy0+cHJvZHVjdCE9ImZhbHNlIil7DQogICAgJGFwaT0kYXBpLic8dGQ+PGEgY2xhc3M9InRhYiIgaHJlZj0iP3R5cGU9cHJvZHVjdCZpZD0wIj4NCiAgICAgIDxpbWcgc3JjPSJ0ZW1wbGF0ZS90MS9za2luL2ltYWdlcy90YWIyXzIucG5nIj4NCiAgICAgIDxkaXYgY2xhc3M9ImFjdGl2ZSI+5ZWG5ZOBPC9kaXY+DQogICAgPC9hPjwvdGQ+JzsNCiAgfQ0KDQogIGlmKCRjb25maWctPm5ld3MhPSJmYWxzZSIpew0KICAgICRhcGk9JGFwaS4nPHRkPjxhIGNsYXNzPSJ0YWIiIGhyZWY9Ij90eXBlPW5ld3MmaWQ9MCI+DQogICAgICA8aW1nIHNyYz0idGVtcGxhdGUvdDEvc2tpbi9pbWFnZXMvdGFiMy5wbmciPg0KICAgICAgPGRpdiA+5paH56ugPC9kaXY+DQogICAgPC9hPjwvdGQ+JzsNCiAgfQ0KDQogIGlmKCRjb25maWctPmNvdXJzZSE9ImZhbHNlIil7DQogICAgJGFwaT0kYXBpLic8dGQ+PGEgY2xhc3M9InRhYiIgaHJlZj0iP3R5cGU9Y291cnNlJmlkPTAiPg0KICAgICAgICA8aW1nIHNyYz0idGVtcGxhdGUvdDEvc2tpbi9pbWFnZXMvdGFiNS5wbmciPg0KICAgICAgICA8ZGl2ID7or77nqIs8L2Rpdj4NCiAgICAgIDwvYT48L3RkPic7DQogIH0NCg0KICAkYXBpPSRhcGkuJzx0ZD48YSBjbGFzcz0idGFiIiBocmVmPSJtZW1iZXIiPg0KICAgIDxpbWcgc3JjPSJ0ZW1wbGF0ZS90MS9za2luL2ltYWdlcy90YWI0LnBuZyI+DQogICAgPGRpdj7miJHnmoQ8L2Rpdj4NCiAgPC9hPjwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCjwvZGl2Pic7DQp9DQo8L2ZoLWZ1bmN0aW9uPg0KDQo8YSBocmVmPSdqYXZhc2NyaXB0OjsnIHRhcmdldD0nX2JsYW5rJyBvbmNsaWNrPSdhbGVydCgi5pys572R56uZ55Sx44CK5ZWG5pOOTUFMTOOAi+WFjei0ueeJiOaQreW7uu+8jOivt+WLv+eUqOS9nOWVhuS4mueUqOmAlCIpO3dpbmRvdy5sb2NhdGlvbi5ocmVmPSJodHRwOi8vc2hhbmdxaW5nbWFsbC5jb20iJyB0aXRsZT0n5ZWG5pOOTUFMTCc+PGRpdiBzdHlsZT0icG9zaXRpb246IGZpeGVkO3otaW5kZXg6OTk5OTk7Ym90dG9tOiAxMHB4O2xlZnQ6IGNhbGMoNTAlIC0gMTAwcHgpO2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwwLjcpO3RleHQtYWxpZ246IGNlbnRlcjt3aWR0aDogMjAwcHg7aGVpZ2h0OiAzMHB4O2xpbmUtaGVpZ2h0OiAzMHB4O2JvcmRlci1yYWRpdXM6IDMwcHg7Zm9udC1zaXplOiAxOHB4O2NvbG9yOiAjMzMzMzMzIj48aW1nIHNyYz0iaHR0cDovL3NoYW5ncWluZ21hbGwuY29tL21lZGlhLzIwMjEwNjIwMDg0ODQ5R2guaWNvIiBzdHlsZT0iaGVpZ2h0OiAyMHB4O3dpZHRoOiAyMHB4O21hcmdpbi1yaWdodDogNXB4O3ZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Ij7llYbmk45NQUxMPC9kaXY+PC9hPjwvYm9keT4NCjwvaHRtbD4=