Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@酷安@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi6YW35a6JIiwiYXV0aG9yIjoi5pen5be36ZmM5Lq6IiwidXJsIjoiaGlrZXI6Ly9lbXB0eSQkZnlwYWdlIiwidmVyc2lvbiI6MjAyNDA5MDgwMCwiY29sX3R5cGUiOiJtb3ZpZV8zIiwiY2xhc3NfbmFtZSI6IiIsInR5cGUiOiJ2aWRlbyIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuY29uc3Qgc2V0VGltZW91dDtcbmlmIChnZXRJdGVtKFwiZmlyc3RcIikgPT0gTVlfUlVMRS52ZXJzaW9uKSB7XG4gICAgJC5yZXF1aXJlKFwiQ29uZmlnLnZpZXdcIikuX2Jhc2VQYXJzZSgpO1xufSBlbHNlIHtcbiAgICAkLnJlcXVpcmUoXCJDb25maWcudmlld1wiKS5fZ2V0c01pbmQoKTtcbn07Iiwic2VhcmNoX3VybCI6IiIsImdyb3VwIjoi4pGg5o6o6I2QIiwic2VhcmNoRmluZCI6IiIsImRldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJkZXRhaWxfZmluZF9ydWxlIjoiIiwic2RldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJzZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInVhIjoibW9iaWxlIiwicHJlUnVsZSI6ImxldCBDYXJvdXNlbCA9IFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9DYXJvdXNlbC5odG1sXCI7XG5sZXQgQ2Fyb3VzZWxVcmwgPSBcImh0dHA6Ly9oaWtlci5ub2tpYS5wcmVzcy9oaWtlcnVsZS9ydWxlbGlzdC5qc29uP2lkPTY5OTdcIjtcbmxldCBTY3JvbGxDYXJkID0gXCJoaWtlcjovL2ZpbGVzL3J1bGVzL1Njcm9sbENhcmQuaHRtbFwiO1xubGV0IFNjcm9sbENhcmRVcmwgPSBcImh0dHA6Ly9oaWtlci5ub2tpYS5wcmVzcy9oaWtlcnVsZS9ydWxlbGlzdC5qc29uP2lkPTcwMDBcIjtcbmxldCBfZGVtb2xSdWxlVXJsID0gXCJodHRwOi8vaGlrZXIubm9raWEucHJlc3MvaGlrZXJ1bGUvcnVsZWxpc3QuanNvbj9pZD02OTk5XCI7XG5sZXQgaGlrZXJQb3AgPSAkLnJlcXVpcmUoXCJodHRwOi8vaGlrZXIubm9raWEucHJlc3MvaGlrZXJ1bGUvcnVsZWxpc3QuanNvbj9pZD02OTY2XCIpO1xuaWYgKCFmaWxlRXhpc3QoQ2Fyb3VzZWwpKSBzYXZlRmlsZShDYXJvdXNlbCwgcmVxdWVzdChDYXJvdXNlbFVybCksIDApO1xuaWYgKCFmaWxlRXhpc3QoU2Nyb2xsQ2FyZCkpIHNhdmVGaWxlKFNjcm9sbENhcmQsIHJlcXVlc3QoU2Nyb2xsQ2FyZFVybCksIDApO1xubGV0IF9kZW1vbFJ1bGVWciA9IGdldE15VmFyKFwiOnJ1bGVWclwiLCBcIjBcIik7XG5pZiAoX2RlbW9sUnVsZVZyID09IDApIHtcbiAgICBsZXQgX2RlbW9sUnVsZU1hcCA9IEpTT04ucGFyc2UocmVxdWVzdChfZGVtb2xSdWxlVXJsKSk7XG4gICAgaWYgKE1ZX1JVTEUudmVyc2lvbiA8IF9kZW1vbFJ1bGVNYXAudmVyc2lvbikge1xuICAgICAgICBoaWtlclBvcC5jb25maXJtKHtcbiAgICAgICAgICAgIHRpdGxlOiBcIuWPkeeOsOaWsOeJiOacrFwiLFxuICAgICAgICAgICAgb2tUaXRsZTogXCLmm7TmlrBcIixcbiAgICAgICAgICAgIGhpZGVDYW5jZWw6IHRydWUsXG4gICAgICAgICAgICBjb25maXJtKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBg5rW36ZiU6KeG55WM6KeE5YiZ5YiG5Lqr77yM5b2T5YmN5YiG5Lqr55qE5piv77ya5bCP56iL5bqP77+laG9tZV9ydWxlX3Yy77+lYmFzZTY0Oi8vQOmFt+WuiUAke2Jhc2U2NEVuY29kZShKU09OLnN0cmluZ2lmeShfZGVtb2xSdWxlTWFwKSl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBwdXRNeVZhcihcIjpydWxlVnJcIiwgXCIxXCIpO1xufTsiLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iXCIsXCJwYXRoXCI6XCJDb25maWcudmlld1wiLFwicnVsZVwiOlwiY29uc3QgYXBpdmlldyA9IHtcXG4gICAgY29sb3I6ICh0ZXN0KSA9PiB7XFxuICAgICAgICByZXR1cm4gJzxmb250IGNvbG9yPVxcXCIjRkE3Mjk4XFxcIj4nICsgdGVzdCArICc8L2ZvbnQ+JztcXG4gICAgfSxcXG4gICAgb3JhbmdlOiAodGVzdCkgPT4ge1xcbiAgICAgICAgcmV0dXJuICc8Zm9udCBjb2xvcj1cXFwiI0ZGQTUwMFxcXCI+JyArIHRlc3QgKyAnPC9mb250Pic7XFxuICAgIH0sXFxuICAgIGJsYWNrOiAodGVzdCkgPT4ge1xcbiAgICAgICAgcmV0dXJuICc8Zm9udCBjb2xvcj1cXFwiIzAwMDAwMFxcXCI+JyArIHRlc3QgKyAnPC9mb250Pic7XFxuICAgIH0sXFxuICAgIHN0cm9uZzogKHRlc3QpID0+IHtcXG4gICAgICAgIHJldHVybiBcXFwiPHN0cm9uZz5cXFwiICsgdGVzdCArIFxcXCI8L3N0cm9uZz5cXFwiO1xcbiAgICB9LFxcbiAgICBzbWFsbDogKHRlc3QpID0+IHtcXG4gICAgICAgIHJldHVybiBcXFwiPHNtYWxsPlxcXCIgKyB0ZXN0ICsgXFxcIjwvc21hbGw+XFxcIjtcXG4gICAgfSxcXG4gICAgY2VudGVyOiAodGVzdCkgPT4ge1xcbiAgICAgICAgcmV0dXJuICc8cCBzdHlsZT1cXFwidGV4dC1hbGlnbjogY2VudGVyO1xcXCI+JyArIHRlc3QgKyAnPC9wPic7XFxuICAgIH0sXFxuICAgIGJpZzogKHRlc3QpID0+IHtcXG4gICAgICAgIHJldHVybiBcXFwiPGJpZz5cXFwiICsgdGVzdCArIFxcXCI8L2JpZz5cXFwiO1xcbiAgICB9LFxcbiAgICBncmF5OiAodGVzdCkgPT4ge1xcbiAgICAgICAgcmV0dXJuICc8Zm9udCBjb2xvcj1cXFwiZ3JheVxcXCI+JyArIHRlc3QgKyAnPC9mb250Pic7XFxuICAgIH0sXFxuICAgIHJpY2g6ICh0ZXN0KSA9PiB7XFxuICAgICAgICByZXR1cm4gXFxcIuKAmOKAmOKAmeKAmVxcXCIgKyB0ZXN0O1xcbiAgICB9LFxcbiAgICBhZGRyZXNzVGFnOiAodXJsLCB0ZXh0KSA9PiB7XFxuICAgICAgICByZXR1cm4gJzxhIGhyZWY9XFxcIicgKyB1cmwgKyAnXFxcIj4nICsgdGV4dCArICc8L2E+JztcXG4gICAgfSxcXG4gICAgZW1wdHk6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgbGF5b3V0OiBbXSxcXG4gICAgX0dldF9zY3JpcHRpb246IFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3N1YnNjcmlwdGlvbi5qc1xcXCIsXFxuICAgIF9maWxlVXRpbDogKHRleHQpID0+IHtcXG4gICAgICAgIGlmICghdGV4dC5zdGFydHNXaXRoKFxcXCJodHRwXFxcIikgJiYgIXRleHQuc3RhcnRzV2l0aChcXFwiaHR0cHNcXFwiKSkge1xcbiAgICAgICAgICAgIHJldHVybiBgaHR0cHM6Ly9hcGkuY29vbGFway5jb20ke3RleHR9YDtcXG4gICAgICAgIH07XFxuICAgICAgICByZXR1cm4gdGV4dDtcXG4gICAgfSxcXG4gICAgX2ZpbGVXZWJVdGlsOiAodGV4dCkgPT4ge1xcbiAgICAgICAgaWYgKCF0ZXh0LnN0YXJ0c1dpdGgoXFxcImh0dHBcXFwiKSAmJiAhdGV4dC5zdGFydHNXaXRoKFxcXCJodHRwc1xcXCIpKSB7XFxuICAgICAgICAgICAgcmV0dXJuIGBodHRwOi8vd3d3LmNvb2xhcGsuY29tJHt0ZXh0fWA7XFxuICAgICAgICB9O1xcbiAgICAgICAgcmV0dXJuIHRleHQ7XFxuICAgIH0sXFxuICAgIF9HZXRfa2V5d29yZDogKGt3LCBlbXB0eSkgPT4ge1xcbiAgICAgICAgbGV0IG1lbSA9IHN0b3JhZ2UwLmdldEl0ZW0oTVlfUlVMRS50aXRsZSwgW10pO1xcbiAgICAgICAgbWVtID0gbWVtLmZpbHRlcihpdCA9PiBpdCAhPSBrdyk7XFxuICAgICAgICBpZiAobWVtLmxlbmd0aCA+PSAxMCkge1xcbiAgICAgICAgICAgIG1lbSA9IG1lbS5zbGljZSgxKTtcXG4gICAgICAgIH07XFxuICAgICAgICBtZW0ucHVzaChrdyk7XFxuICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKE1ZX1JVTEUudGl0bGUsIG1lbSk7XFxuICAgICAgICByZXR1cm4gZW1wdHk7XFxuICAgIH0sXFxuICAgIF9Qb3NpdGlvbl90b29sOiAoZGF0YSwgYXJyYXksIGNob2ljZSwgdXVpZCkgPT4ge1xcbiAgICAgICAgbGV0IG9iaiA9IHt9O1xcbiAgICAgICAgZGF0YS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xcbiAgICAgICAgICAgIGlmIChpdGVtW3V1aWRdID09PSBhcnJheVt1dWlkXSkge1xcbiAgICAgICAgICAgICAgICBvYmogPSBpdGVtO1xcbiAgICAgICAgICAgICAgICBkYXRhLnNwbGljZShpbmRleCwgMSk7XFxuICAgICAgICAgICAgICAgIHJldHVybjtcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgfSk7XFxuICAgICAgICBzd2l0Y2ggKGNob2ljZSkge1xcbiAgICAgICAgICAgIGNhc2UgXFxcInRvcFxcXCI6XFxuICAgICAgICAgICAgICAgIGRhdGEudW5zaGlmdChvYmopO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBjYXNlIFxcXCJlbmRcXFwiOlxcbiAgICAgICAgICAgICAgICBkYXRhLnB1c2gob2JqKTtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICB9O1xcbiAgICB9LFxcbiAgICBfZ2VuZXJhdGVTdGFyczogKG51bSkgPT4ge1xcbiAgICAgICAgbGV0IHN0YXJzID0gXFxcIuKYhVxcXCIucmVwZWF0KG51bSk7XFxuICAgICAgICBsZXQgd2hpdGVzcGFjZXMgPSBcXFwi4piGXFxcIi5yZXBlYXQoNSAtIG51bSk7XFxuICAgICAgICByZXR1cm4gc3RhcnMgKyB3aGl0ZXNwYWNlcztcXG4gICAgfSxcXG4gICAgX2dlbmVyYXRlSW1hZ2U6IChzdHIpID0+IHtcXG4gICAgICAgIHJldHVybiBgJHtzdHJ9QGhlYWRlcnM9JHtKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBcXFwiRGFsdmlrLzIuMS4wIChMaW51eDsgVTsgQW5kcm9pZCAxMDsgVjIzMDRBIEJ1aWxkL1VQMUEuMjMxMDA1LjAwNykgKCNCdWlsZDsgdml2bzsgVjIzMDRBOyBVUDFBLjIzMTAwNS4wMDcgcmVsZWFzZS1rZXlzOyAxMCkgK0Nvb2xNYXJrZXQvMTMuMy42LTIzMTAyMzItdW5pdmVyc2FsXFxcIlxcbiAgICAgICAgfSl9YDtcXG4gICAgfSxcXG4gICAgX2dlbmVyYXRlU3RyaW5nOiAoc3RyLCBtYXhMZW5ndGgpID0+IHtcXG4gICAgICAgIGlmIChzdHIubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XFxuICAgICAgICAgICAgcmV0dXJuIHN0ci5zdWJzdHJpbmcoMCwgbWF4TGVuZ3RoKSArIFxcXCIuLi5cXFwiO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICByZXR1cm4gc3RyO1xcbiAgICAgICAgfTtcXG4gICAgfSxcXG4gICAgX2Zvcm1hdFRpbWVzdGFtcDogKHRpbWVzdGFtcCkgPT4ge1xcbiAgICAgICAgbGV0IG5vdyA9IERhdGUubm93KCkgLyAxMDAwO1xcbiAgICAgICAgbGV0IHNlY29uZHNQZXJEYXkgPSA4NjQwMDtcXG4gICAgICAgIGxldCBzZWNvbmRzUGVyV2VlayA9IHNlY29uZHNQZXJEYXkgKiA3O1xcbiAgICAgICAgbGV0IGRpZmYgPSBub3cgLSB0aW1lc3RhbXA7XFxuICAgICAgICBpZiAoZGlmZiA8PSBzZWNvbmRzUGVyV2Vlaykge1xcbiAgICAgICAgICAgIGlmIChkaWZmIDwgc2Vjb25kc1BlckRheSkge1xcbiAgICAgICAgICAgICAgICBsZXQgaG91cnNBZ28gPSBNYXRoLmZsb29yKGRpZmYgLyAzNjAwKTtcXG4gICAgICAgICAgICAgICAgbGV0IG1pbnV0ZXNBZ28gPSBNYXRoLmZsb29yKChkaWZmICUgMzYwMCkgLyA2MCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtob3Vyc0FnbyA9PT0gMCA/IGAke21pbnV0ZXNBZ2995YiG6ZKf5YmNYCA6IGAke2hvdXJzQWdvfeWwj+aXtuWJjWB9YDtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBsZXQgZGF5c0FnbyA9IE1hdGguZmxvb3IoZGlmZiAvIHNlY29uZHNQZXJEYXkpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7ZGF5c0Fnb33lpKnliY1gO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUodGltZXN0YW1wICogMTAwMCk7XFxuICAgICAgICAgICAgbGV0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XFxuICAgICAgICAgICAgbGV0IG1vbnRoID0gU3RyaW5nKGRhdGUuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsIFxcXCIwXFxcIik7XFxuICAgICAgICAgICAgbGV0IGRheSA9IFN0cmluZyhkYXRlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgXFxcIjBcXFwiKTtcXG4gICAgICAgICAgICByZXR1cm4gYCR7eWVhcn0tJHttb250aH0tJHtkYXl9YDtcXG4gICAgICAgIH07XFxuICAgIH0sXFxuICAgIF9vYmplY3RUb1F1ZXJ5U3RyaW5nOiAob2JBcnIpID0+IHtcXG4gICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhvYkFycikubWFwKChba2V5LCB2YWxdKSA9PiBgJHtlbmNvZGVVUklDb21wb25lbnQoa2V5KX09JHtlbmNvZGVVUklDb21wb25lbnQodmFsKX1gKS5qb2luKFxcXCImXFxcIik7XFxuICAgIH0sXFxuICAgIF9nZW5lcmF0ZVJhbmRvbVN0cmluZzogKGxlbmd0aCkgPT4ge1xcbiAgICAgICAgbGV0IHJlc3VsdCA9IFxcXCJcXFwiO1xcbiAgICAgICAgY29uc3QgY2hhcmFjdGVycyA9IFxcXCIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWlxcXCI7XFxuICAgICAgICBjb25zdCBjaGFyYWN0ZXJzTGVuZ3RoID0gY2hhcmFjdGVycy5sZW5ndGg7XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgcmVzdWx0ICs9IGNoYXJhY3RlcnMuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoYXJhY3RlcnNMZW5ndGgpKTtcXG4gICAgICAgIH07XFxuICAgICAgICByZXR1cm4gcmVzdWx0O1xcbiAgICB9LFxcbiAgICBfZ2VuZXJhdGVUb2tlblN0cmluZzogKCkgPT4ge1xcbiAgICAgICAgZnVuY3Rpb24gZ2V0UmFuZG9tVmFsdWVzKGFycmF5KSB7XFxuICAgICAgICAgICAgbGV0IHJhbmRfbWF4ID0gMjU2O1xcbiAgICAgICAgICAgIGlmIChhcnJheSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkgfHwgYXJyYXkgaW5zdGFuY2VvZiBJbnQ4QXJyYXkpIHtcXG4gICAgICAgICAgICAgICAgcmFuZF9tYXggPSAyNTY7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChhcnJheSBpbnN0YW5jZW9mIFVpbnQxNkFycmF5IHx8IGFycmF5IGluc3RhbmNlb2YgSW50MTZBcnJheSkge1xcbiAgICAgICAgICAgICAgICByYW5kX21heCA9IDY1NTM2O1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYXJyYXkgaW5zdGFuY2VvZiBVaW50MzJBcnJheSB8fCBhcnJheSBpbnN0YW5jZW9mIEludDMyQXJyYXkpIHtcXG4gICAgICAgICAgICAgICAgcmFuZF9tYXggPSA0Mjk0OTY3Mjk2O1xcbiAgICAgICAgICAgIH07XFxuXFxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICBhcnJheVtpXSA9IGdldFJhbmRvbUludCgwLCByYW5kX21heCk7XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH07XFxuXFxuICAgICAgICBmdW5jdGlvbiBnZXRSYW5kb21JbnQobWluLCBtYXgpIHtcXG4gICAgICAgICAgICBtaW4gPSBNYXRoLmNlaWwobWluKTtcXG4gICAgICAgICAgICBtYXggPSBNYXRoLmZsb29yKG1heCk7XFxuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pKSArIG1pbjtcXG4gICAgICAgIH07XFxuICAgICAgICBjb25zdCBiY3J5cHQgPSAkLnJlcXVpcmUoXFxcImh0dHBzOi8vdW5wa2cuY29tL2JjcnlwdGpzQDIuNC4zL2Rpc3QvYmNyeXB0Lm1pbi5qc1xcXCIpO1xcblxcbiAgICAgICAgYmNyeXB0LnNldFJhbmRvbUZhbGxiYWNrKGZ1bmN0aW9uKHNpemUpIHtcXG4gICAgICAgICAgICBsZXQgYXJyYXkgPSBuZXcgVWludDMyQXJyYXkoc2l6ZSk7XFxuICAgICAgICAgICAgZ2V0UmFuZG9tVmFsdWVzKGFycmF5KTtcXG4gICAgICAgICAgICByZXR1cm4gYXJyYXk7XFxuICAgICAgICB9KTtcXG4gICAgICAgIGxldCByYW5kb21TdHJpbmcgPSBnZXRNeVZhcihcXFwiOnN0cmluZ1xcXCIsIFxcXCIwXFxcIik7XFxuICAgICAgICBpZiAocmFuZG9tU3RyaW5nID09IFxcXCIwXFxcIikge1xcbiAgICAgICAgICAgIHNob3dMb2FkaW5nKFxcXCLojrflj5Z0b2tlbuS4re+8jOivt+eojeetiS4uLlxcXCIpO1xcbiAgICAgICAgICAgIHJhbmRvbVN0cmluZyA9IGFwaXZpZXcuX2dlbmVyYXRlUmFuZG9tU3RyaW5nKDUwKTtcXG4gICAgICAgICAgICBwdXRNeVZhcihcXFwiOnN0cmluZ1xcXCIsIHJhbmRvbVN0cmluZyk7XFxuICAgICAgICB9O1xcblxcbiAgICAgICAgZnVuY3Rpb24gZ2V0VjJUb2tlbihkZXZpY2VDb2RlKSB7XFxuICAgICAgICAgICAgbGV0IHRva2VuUGFydCA9IFxcXCJ0b2tlbjovL2NvbS5jb29sYXBrLm1hcmtldC9kY2YwMWU1NjljMWUzZGI5M2EzZDBmY2YxOTFhNjIyYz9cXFwiO1xcblxcbiAgICAgICAgICAgIGZ1bmN0aW9uIGZvcm1hdEJhc2U2NChzdHIpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bXFxcXHJcXFxcbj1dL2csIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIGxldCBkZXZpY2VDb2RlTWQ1ID0gbWQ1KGRldmljZUNvZGUpO1xcbiAgICAgICAgICAgIGxldCB0aW1lc3RhbXAgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTtcXG4gICAgICAgICAgICBsZXQgdGltZXN0YW1wTWQ1ID0gbWQ1KHRpbWVzdGFtcC50b1N0cmluZygpKTtcXG4gICAgICAgICAgICBsZXQgdGltZXN0YW1wQmFzZTY0ID0gZm9ybWF0QmFzZTY0KGJhc2U2NEVuY29kZSh0aW1lc3RhbXAudG9TdHJpbmcoKSkpO1xcbiAgICAgICAgICAgIGxldCB0b2tlbiA9IGAke3Rva2VuUGFydH0ke3RpbWVzdGFtcE1kNX0kJHtkZXZpY2VDb2RlTWQ1fSZjb20uY29vbGFway5tYXJrZXRgO1xcbiAgICAgICAgICAgIGxldCB0b2tlbkJhc2U2NCA9IGZvcm1hdEJhc2U2NChiYXNlNjRFbmNvZGUodG9rZW4pKTtcXG4gICAgICAgICAgICBsZXQgdG9rZW5CYXNlNjRNZDUgPSBtZDUodG9rZW5CYXNlNjQpO1xcbiAgICAgICAgICAgIGxldCB0b2tlbk1kNSA9IG1kNSh0b2tlbik7XFxuICAgICAgICAgICAgbGV0IGFyZyA9IGBcXFxcJDJ5XFxcXCQxMCQke3RpbWVzdGFtcEJhc2U2NH0vJHt0b2tlbk1kNX1gO1xcbiAgICAgICAgICAgIGxldCBzYWx0ID0gYXJnLnNsaWNlKDAsIDMxKSArIFxcXCJ1XFxcIjtcXG4gICAgICAgICAgICBsZXQgY3J5cHRTdHIgPSBiY3J5cHQuaGFzaFN5bmModG9rZW5CYXNlNjRNZDUsIHNhbHQpO1xcbiAgICAgICAgICAgIGxldCBjcnlwdEJhc2U2NCA9IGJhc2U2NEVuY29kZShjcnlwdFN0cik7XFxuICAgICAgICAgICAgcmV0dXJuIGB2MiR7Y3J5cHRCYXNlNjR9YDtcXG4gICAgICAgIH07XFxuICAgICAgICBsZXQgdG9rZW5TdHJpbmcgPSBnZXRNeVZhcihcXFwiOnRva2VuXFxcIiwgXFxcIjBcXFwiKTtcXG4gICAgICAgIGlmICh0b2tlblN0cmluZyA9PSBcXFwiMFxcXCIpIHtcXG4gICAgICAgICAgICB0b2tlblN0cmluZyA9IGdldFYyVG9rZW4ocmFuZG9tU3RyaW5nKTtcXG4gICAgICAgICAgICB0b2FzdChcXFwi6I635Y+W5oiQ5YqfXFxcIik7XFxuICAgICAgICAgICAgaGlkZUxvYWRpbmcoKTtcXG4gICAgICAgICAgICBwdXRNeVZhcihcXFwiOnRva2VuXFxcIiwgdG9rZW5TdHJpbmcpO1xcbiAgICAgICAgfTtcXG4gICAgfSxcXG4gICAgX2RlbW9sX0FqYXg6IChfZGVtb2wsIF9vYmplY3QsIF9uZXh0LCBfdXJsKSA9PiB7XFxuICAgICAgICBsZXQgX2RlbW9sTWFwID0gcmVxdWVzdChhcGl2aWV3Ll9maWxlVXRpbChfZGVtb2wgKyAoJC50eXBlKF9vYmplY3QpID09IFxcXCJvYmplY3RcXFwiID8gKFxcXCI/XFxcIiArIGFwaXZpZXcuX29iamVjdFRvUXVlcnlTdHJpbmcoX29iamVjdCkpIDogXFxcIlxcXCIpKSwgT2JqZWN0LmFzc2lnbih7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICBcXFwiWC1BcHAtVmVyc2lvblxcXCI6IFxcXCIxMy4zLjZcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwiWC1BcHAtQ29kZVxcXCI6IFxcXCIyMzEwMjMyXFxcIixcXG4gICAgICAgICAgICAgICAgXFxcIlgtQXBpLVZlcnNpb25cXFwiOiBcXFwiMTNcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwiWC1BcHAtSWRcXFwiOiBcXFwiY29tLmNvb2xhcGsubWFya2V0XFxcIixcXG4gICAgICAgICAgICAgICAgXFxcIlgtQXBwLVRva2VuXFxcIjogZ2V0TXlWYXIoXFxcIjp0b2tlblxcXCIsIFxcXCIwXFxcIiksXFxuICAgICAgICAgICAgICAgIFxcXCJYLUFwcC1EZXZpY2VcXFwiOiBnZXRNeVZhcihcXFwiOnN0cmluZ1xcXCIsIFxcXCIwXFxcIiksXFxuICAgICAgICAgICAgICAgIFxcXCJYLVJlcXVlc3RlZC1XaXRoXFxcIjogXFxcIlhNTEh0dHBSZXF1ZXN0XFxcIixcXG4gICAgICAgICAgICAgICAgXFxcIlgtQXBwLUNoYW5uZWxcXFwiOiBcXFwiY29vbGFwa1xcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIGJvZHk6ICQudHlwZShfbmV4dCkgPT0gXFxcIm9iamVjdFxcXCIgPyBhcGl2aWV3Ll9vYmplY3RUb1F1ZXJ5U3RyaW5nKF9uZXh0KSA6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgIG1ldGhvZDogX25leHQgPyBcXFwicG9zdFxcXCIgOiBcXFwiZ2V0XFxcIlxcbiAgICAgICAgfSwgX3VybCA/IHtcXG4gICAgICAgICAgICBvbmx5SGVhZGVyczogdHJ1ZVxcbiAgICAgICAgfSA6IHt9KSk7XFxuICAgICAgICBldmFsKFxcXCJfZGVtb2xNYXAgPVxcXCIgKyBfZGVtb2xNYXApO1xcbiAgICAgICAgaWYgKF91cmwpIHJldHVybiBfZGVtb2xNYXAudXJsO1xcbiAgICAgICAgaWYgKCFfZGVtb2xNYXAuZGF0YSkge1xcbiAgICAgICAgICAgIGlmIChfZGVtb2xNYXAubWVzc2FnZSkge1xcbiAgICAgICAgICAgICAgICB0b2FzdChfZGVtb2xNYXAubWVzc2FnZSk7XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICByZXR1cm4ge307XFxuICAgICAgICB9O1xcbiAgICAgICAgcmV0dXJuIF9kZW1vbE1hcC5kYXRhO1xcbiAgICB9LFxcbiAgICBfZ2V0UmVnRXhwOiAoX2RlbW9sTWFwLCBfbmV4dCkgPT4ge1xcbiAgICAgICAgbGV0IF90eXBlXyA9IF9kZW1vbE1hcC5lbnRpdHlUeXBlO1xcbiAgICAgICAgbGV0IF9kZW1vbF8gPSBfZGVtb2xNYXAuZXh0cmFfZnJvbUFwaTtcXG4gICAgICAgIGxldCBfdGV4dF8gPSBfZGVtb2xNYXAubWVzc2FnZTtcXG4gICAgICAgIGxldCBfaWRfID0gX2RlbW9sTWFwLmlkO1xcbiAgICAgICAgbGV0IF9kZW1vbFJlcGx5ID0gX2RlbW9sTWFwLnJlcGx5Um93cztcXG4gICAgICAgIGlmICghX25leHQgJiYgKF90eXBlXyA9PSBcXFwiZmVlZFxcXCIgfHwgX3R5cGVfID09IFxcXCJub2RlUmF0aW5nXFxcIikgJiYgX3RleHRfLnNlYXJjaChcXFwi5p+l55yL5pu05aSaXFxcIikgPT0gLTEpIHtcXG4gICAgICAgICAgICBfdGV4dF8gKz0gYXBpdmlldy5hZGRyZXNzVGFnKFxcXCJcXFwiLCBcXFwi5p+l55yL5pu05aSaXFxcIik7XFxuICAgICAgICB9IGVsc2UgaWYgKCFfbmV4dCAmJiBfdHlwZV8gPT0gXFxcImZlZWRfcmVwbHlcXFwiICYmIF9kZW1vbFJlcGx5ICYmICQudHlwZShfZGVtb2xSZXBseSkgPT0gXFxcImFycmF5XFxcIiAmJiBfZGVtb2xSZXBseS5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgX3RleHRfICs9IGFwaXZpZXcuYWRkcmVzc1RhZyhcXFwiXFxcIiwgXFxcIuafpeeci+abtOWkmlxcXCIpO1xcbiAgICAgICAgfTtcXG4gICAgICAgIHJldHVybiBfdGV4dF8gPyAoX3RleHRfXFxuICAgICAgICAgICAgLnJlcGxhY2UobmV3IFJlZ0V4cChcXFwiXFxcXG5cXFwiLCBcXFwiZ1xcXCIpLCBcXFwiPGJyPlxcXCIpXFxuICAgICAgICAgICAgLnJlcGxhY2UoL3NyYz1cXFwiKC4qPylcXFwiL2csIChtYXRjaCwgZ3JvdXAxKSA9PiB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaC5yZXBsYWNlKGdyb3VwMSwgYCR7Z3JvdXAxfSNvcmlnaW5hbFNpemUjYCk7XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxcInRcXFxcLyguKj8pXFxcIi9nLCAobWF0Y2gsIGdyb3VwMSkgPT4ge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJChhcGl2aWV3LmVtcHR5ICsgXFxcIiNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMjZ2FtZVRoZW1lI2Z5cGFnZVxcXCIpLmI2NCgpLnJ1bGUoKGdyb3VwMSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dFRhYlJ1bGVQYXJzZShncm91cDEpO1xcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGFwaXZpZXcubGF5b3V0KTtcXG4gICAgICAgICAgICAgICAgfSwgZ3JvdXAxKTtcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIC5yZXBsYWNlKC8oPGEgY2xhc3M9XFxcImZlZWQtbGluay11bmFtZVtcXFxcU1xcXFxzXSo/PFxcXFwvYT4pL2csIChtYXRjaCkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgX2RlbW9sVGFnID0gcGRmaChtYXRjaCwgXFxcImEmJlRleHRcXFwiKTtcXG4gICAgICAgICAgICAgICAgbGV0IF9kZW1vbFVybCA9IHBkZmgobWF0Y2gsIFxcXCJhJiZocmVmXFxcIik7XFxuICAgICAgICAgICAgICAgIGxldCBfZGVtb2wgPSBfZGVtb2xUYWcuc3BsaXQoXFxcIkBcXFwiKVsxXTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoLnJlcGxhY2UoYFxcXCIke19kZW1vbFVybH1cXFwiYCwgKCkgPT4gJChcXFwiI25vTG9hZGluZyNcXFwiKS5iNjQoKS5sYXp5UnVsZSgoX2RlbW9sKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IF9kZW1vbE1hcCA9IGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni91c2VyL3NwYWNlXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHVpZDogX2RlbW9sXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhfZGVtb2xNYXApLmxlbmd0aCA+IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChhcGl2aWV3LmVtcHR5ICsgXFxcIiNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMjZ2FtZVRoZW1lI2Z5cGFnZVxcXCIpLnJ1bGUoKF9kZW1vbE1hcCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9nZW5lcmF0ZVRvcCgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRVc2VyUnVsZVBhcnNlKF9kZW1vbE1hcCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChhcGl2aWV3LmxheW91dCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgX2RlbW9sTWFwKVxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBpdmlldy5lbXB0eTtcXG4gICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgIH0sIF9kZW1vbCkpO1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgLnJlcGxhY2UoLyg8YSBjbGFzcz1cXFwiZmVlZC1saW5rLXRhZ1xcXCJbXFxcXFNcXFxcc10qPzxcXFxcL2E+KS9nLCAobWF0Y2gpID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IF9kZW1vbFRhZyA9IHBkZmgobWF0Y2gsIFxcXCJhJiZUZXh0XFxcIik7XFxuICAgICAgICAgICAgICAgIGxldCBfZGVtb2xVcmwgPSBwZGZoKG1hdGNoLCBcXFwiYSYmaHJlZlxcXCIpO1xcbiAgICAgICAgICAgICAgICBsZXQgX2RlbW9sXyA9IF9kZW1vbFRhZy5zcGxpdChcXFwiI1xcXCIpWzFdO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2gucmVwbGFjZShgXFxcIiR7X2RlbW9sVXJsfVxcXCJgLCAoKSA9PiAkKGFwaXZpZXcuZW1wdHkgKyBcXFwiI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IyNnYW1lVGhlbWUjZnlwYWdlXFxcIikuYjY0KCkucnVsZSgoX2RlbW9sXykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dFRhYlJ1bGVQYXJzZShfZGVtb2xfKTtcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChhcGl2aWV3LmxheW91dCk7XFxuICAgICAgICAgICAgICAgIH0sIF9kZW1vbF8pKTtcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXFwiIFxcXCIvZywgYXBpdmlldy5lbXB0eSlcXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxcIlxcXCIvZywgKCkgPT4ge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJChhcGl2aWV3LmVtcHR5ICsgXFxcIiNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMjZ2FtZVRoZW1lI2Z5cGFnZVxcXCIpLmI2NCgpLnJ1bGUoKF9pZF8sIF9kZW1vbF8sIF90eXBlXykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBfZGVtb2xwYWdlID0gTVlfUEFHRTtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChfdHlwZV8gPT0gXFxcImZlZWRfcmVwbHlcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9kZW1vbHBhZ2UgPT0gMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9nZW5lcmF0ZVRvcCgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IF9kZW1vbE1hcCA9IGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni9mZWVkL3JlcGx5TGlzdFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IF9pZF8sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RUeXBlOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogX2RlbW9scGFnZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc01vZGU6IDAsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWRUeXBlOiBcXFwiZmVlZF9yZXBseVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrU3RhdHVzOiAwLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tRmVlZEF1dGhvcjogMFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dERldGVybWluZVBhcnNlKF9kZW1vbE1hcCwgX2lkXyk7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKF90eXBlXyA9PSBcXFwiZmVlZFxcXCIgfHwgX3R5cGVfID09IFxcXCJub2RlUmF0aW5nXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dFJ1bGVQYXJzZShfaWRfLCBfZGVtb2xfKTtcXG4gICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoYXBpdmlldy5sYXlvdXQpO1xcbiAgICAgICAgICAgICAgICB9LCBfaWRfLCBfZGVtb2xfLCBfdHlwZV8pO1xcbiAgICAgICAgICAgIH0pKSA6IF90ZXh0XztcXG4gICAgfSxcXG4gICAgX2Jhc2VQYXJzZTogKCkgPT4ge1xcbiAgICAgICAgYXBpdmlldy5fZ2VuZXJhdGVUb2tlblN0cmluZygpO1xcbiAgICAgICAgbGV0IHRvb2xkb3duID0gYXBpdmlldy5fR2V0X3NjcmlwdGlvbjtcXG4gICAgICAgIGlmICghZmlsZUV4aXN0KHRvb2xkb3duKSkgc2F2ZUZpbGUodG9vbGRvd24sIEpTT04uc3RyaW5naWZ5KHt9KSwgMCk7XFxuICAgICAgICBldmFsKFxcXCJhamF4X21hcCA9XFxcIiArIHJlYWRGaWxlKHRvb2xkb3duKSk7XFxuICAgICAgICBpZiAoYWpheF9tYXBbTVlfUlVMRS50aXRsZV0gPT0gbnVsbCkge1xcbiAgICAgICAgICAgIGFqYXhfbWFwW01ZX1JVTEUudGl0bGVdID0ge307XFxuICAgICAgICAgICAgc2F2ZUZpbGUodG9vbGRvd24sIEpTT04uc3RyaW5naWZ5KGFqYXhfbWFwKSwgMCk7XFxuICAgICAgICB9O1xcbiAgICAgICAgW1xcXCJ1c2VyXFxcIiwgXFxcInRvcGljXFxcIiwgXFxcImNhcmRcXFwiLCBcXFwiYWxidW1cXFwiLCBcXFwicHJvZHVjdFxcXCIsIFxcXCJhcGtcXFwiLCBcXFwiZHloXFxcIl1bXFxcImZvckVhY2hcXFwiXShpdCA9PiB7XFxuICAgICAgICAgICAgaWYgKGFqYXhfbWFwW01ZX1JVTEUudGl0bGVdW2l0XSA9PSBudWxsKSB7XFxuICAgICAgICAgICAgICAgIGFqYXhfbWFwW01ZX1JVTEUudGl0bGVdW2l0XSA9IFtdO1xcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSh0b29sZG93biwgSlNPTi5zdHJpbmdpZnkoYWpheF9tYXApLCAwKTtcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgfSk7XFxuICAgICAgICBsZXQgX2RlbW9scGFnZSA9IE1ZX1BBR0U7XFxuICAgICAgICBsZXQgdGluZGV4ID0gZ2V0TXlWYXIoXFxcIjpiYXNlVGFnXFxcIiwgXFxcIjBcXFwiKTtcXG4gICAgICAgIGxldCB4aW5kZXggPSBnZXRNeVZhcih0aW5kZXggKyBcXFwiOmJhc2VUYXhcXFwiLCBcXFwiMFxcXCIpO1xcbiAgICAgICAgbGV0IF9vYmplY3RBcnJheSA9IHN0b3JhZ2UwLmdldE15VmFyKFxcXCI6YmFzZVRhYlxcXCIsIFtdKTtcXG4gICAgICAgIGlmIChfb2JqZWN0QXJyYXkubGVuZ3RoID09IDApIHtcXG4gICAgICAgICAgICBkZW1vbFRpbWUgPSBwYXJzZUludChEYXRlLm5vdygpIC8gMTAwMCkudG9TdHJpbmcoKTtcXG4gICAgICAgICAgICBfb2JqZWN0QXJyYXkgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvbWFpbi9pbml0XFxcIiwge1xcbiAgICAgICAgICAgICAgICBleHA6IDAsXFxuICAgICAgICAgICAgICAgIHQ6IGRlbW9sVGltZVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIF9vYmplY3RBcnJheSA9IF9vYmplY3RBcnJheS5maWx0ZXIoXyA9PiBfLmVudGl0eVRlbXBsYXRlID09IFxcXCJjb25maWdDYXJkXFxcIik7XFxuICAgICAgICAgICAgX29iamVjdEFycmF5ID0gX29iamVjdEFycmF5LmNvbmNhdChbe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuiuoumYhVxcXCIsXFxuICAgICAgICAgICAgICAgIGVudGl0aWVzOiBbXVxcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLmkJzntKJcXFwiLFxcbiAgICAgICAgICAgICAgICBlbnRpdGllczogW11cXG4gICAgICAgICAgICB9XSk7XFxuICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoXFxcIjpiYXNlVGFiXFxcIiwgX29iamVjdEFycmF5KTtcXG4gICAgICAgIH07XFxuICAgICAgICBsZXQgX2RlbW9sTWFwID0gc3RvcmFnZTAuZ2V0TXlWYXIodGluZGV4ICsgXFxcIjpiYXNlVGFiXFxcIiwgW10pO1xcbiAgICAgICAgaWYgKF9kZW1vbE1hcC5sZW5ndGggPT0gMCkge1xcbiAgICAgICAgICAgIF9kZW1vbE1hcCA9IF9vYmplY3RBcnJheVt0aW5kZXhdW1xcXCJlbnRpdGllc1xcXCJdO1xcbiAgICAgICAgICAgIF9kZW1vbE1hcCA9IF9kZW1vbE1hcC5maWx0ZXIoXyA9PiBfLnRpdGxlICE9IFxcXCLlhbPms6hcXFwiICYmIF8udGl0bGUgIT0gXFxcIuS6jOaJi1xcXCIpO1xcbiAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKHRpbmRleCArIFxcXCI6YmFzZVRhYlxcXCIsIF9kZW1vbE1hcCk7XFxuICAgICAgICB9O1xcbiAgICAgICAgaWYgKF9kZW1vbHBhZ2UgPT0gMSkge1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0ID0gYXBpdmlldy5sYXlvdXQuY29uY2F0KF9vYmplY3RBcnJheS5tYXAoKGl0ZW0sIGkpID0+ICh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpID09IHRpbmRleCA/IGFwaXZpZXcucmljaChhcGl2aWV3LnN0cm9uZyhhcGl2aWV3LmNvbG9yKGl0ZW0udGl0bGUpKSkgOiBpdGVtLnRpdGxlLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGksIGVtcHR5KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKFxcXCI6bGlua05leHRcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoXFxcIjpsaW5rVGFnXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiOmJhc2VUYWdcXFwiLCBpKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHk7XFxuICAgICAgICAgICAgICAgIH0sIGksIGFwaXZpZXcuZW1wdHkpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpID09IHRpbmRleCA/IFxcXCIjMjBGQTcyOThcXFwiIDogXFxcIlxcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pKSk7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi6K6+572uXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGFwaXZpZXcuZW1wdHkgKyBcXFwiI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5I1xcXCIpLnJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dE1lbnVQYXJzZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGFwaXZpZXcubGF5b3V0KTtcXG4gICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCIsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IFxcXCLorr7nva7vvZzpobXpnaJcXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dCA9IGFwaXZpZXcubGF5b3V0LmNvbmNhdChfZGVtb2xNYXAubWFwKChpdGVtLCBpKSA9PiAoe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaSA9PSB4aW5kZXggPyBhcGl2aWV3LnJpY2goYXBpdmlldy5zdHJvbmcoYXBpdmlldy5jb2xvcihpdGVtLnRpdGxlKSkpIDogaXRlbS50aXRsZSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChpLCBlbXB0eSwgdGluZGV4KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKFxcXCI6bGlua05leHRcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoXFxcIjpsaW5rVGFnXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcih0aW5kZXggKyBcXFwiOmJhc2VUYXhcXFwiLCBpKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHk7XFxuICAgICAgICAgICAgICAgIH0sIGksIGFwaXZpZXcuZW1wdHksIHRpbmRleCksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCIsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGkgPT0geGluZGV4ID8gXFxcIiMyMEZBNzI5OFxcXCIgOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pKSk7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9O1xcbiAgICAgICAgbGV0IF9kZW1vbExlbiA9IF9vYmplY3RBcnJheS5sZW5ndGg7XFxuICAgICAgICBzd2l0Y2ggKF9vYmplY3RBcnJheVt0aW5kZXhdKSB7XFxuICAgICAgICAgICAgY2FzZSBfb2JqZWN0QXJyYXlbX2RlbW9sTGVuIC0gMV06XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcuX3NlYXJjaFBhcnNlKCk7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGNhc2UgX29iamVjdEFycmF5W19kZW1vbExlbiAtIDJdOlxcbiAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRTdWJzY3JQYXJzZSgpO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgICAgICBhcGl2aWV3Ll9maXJzdHBhZ2VfUGFyc2UoX2RlbW9sTWFwW3hpbmRleF0pO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgIH07XFxuICAgICAgICBzZXRSZXN1bHQoYXBpdmlldy5sYXlvdXQpO1xcbiAgICB9LFxcbiAgICBfc2VhcmNoUGFyc2U6ICgpID0+IHtcXG4gICAgICAgIGxldCBfZGVtb2xwYWdlID0gTVlfUEFHRTtcXG4gICAgICAgIGxldCBrZXl3b3JkID0gZ2V0TXlWYXIoXFxcIjprZXl3b3JkXFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgbGV0IHR5cGUgPSBnZXRNeVZhcihcXFwic2VhcmNoVHlwZVxcXCIsIFxcXCLliqjmgIFcXFwiKTtcXG4gICAgICAgIGlmIChfZGVtb2xwYWdlID09IDEpIHtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGFwaXZpZXcuc3Ryb25nKGFwaXZpZXcuYmlnKFxcXCLmkJzntKLnsbvlnotcXFwiKSkgKyBgPHU+JHt0eXBlfTwvdT5gLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKHR5cGUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkKFtcXFwi5Yqo5oCBXFxcIiwgXFxcIuW6lOeUqFxcXCIsIFxcXCLmuLjmiI9cXFwiLCBcXFwi55So5oi3XFxcIiwgXFxcIuivnemimFxcXCIsIFxcXCLmlbDnoIFcXFwiLCBcXFwi5LqM5omLXFxcIiwgXFxcIumXruetlFxcXCIsIFxcXCLlupTnlKjpm4ZcXFwiLCBcXFwi55yL55yL5Y+3XFxcIl0sIDMsIFxcXCLmkJzntKLnsbvlnos6XFxcIiArIHR5cGUpLnNlbGVjdCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcInNlYXJjaFR5cGVcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5bey5YiH5o2i5Li6IFxcXCIgKyBpbnB1dDtcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9LCB0eXBlKSxcXG4gICAgICAgICAgICAgICAgaW1nOiAkLnJlcXVpcmUoXFxcImljb24udG9vbFxcXCIpLnRhYnNlYXJjaCxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuaQnOe0olxcXCIsXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLmkJzkvaDmg7PopoHnmoQuLi4uXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBsZXQga2V5d29yZHMgPSBpbnB1dC50cmltKCk7XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiOmtleXdvcmRcXFwiLCBrZXl3b3Jkcyk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5d29yZHMpIGFwaXZpZXcuX0dldF9rZXl3b3JkKGlucHV0KTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBpdmlldy5lbXB0eTtcXG4gICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRNeVZhcihcXFwiOmtleXdvcmRcXFwiKVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9O1xcbiAgICAgICAgaWYgKGtleXdvcmQgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICBsZXQgX29iamVjdEFycmF5ID0gc3RvcmFnZTAuZ2V0TXlWYXIoXFxcIjpzZWFyY2hUYWdcXFwiLCBbXSk7XFxuICAgICAgICAgICAgaWYgKF9vYmplY3RBcnJheS5sZW5ndGggPT0gMCkge1xcbiAgICAgICAgICAgICAgICBfb2JqZWN0QXJyYXkgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvc2VhcmNoXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXFxcImhvdFNlYXJjaFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoOiAwLFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuVHlwZTogXFxcImFsbFxcXCJcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIF9vYmplY3RBcnJheSA9IF9vYmplY3RBcnJheS5maW5kKF8gPT4gXy5lbnRpdHlUZW1wbGF0ZSA9PSBcXFwiaG90U2VhcmNoXFxcIik7XFxuICAgICAgICAgICAgICAgIF9vYmplY3RBcnJheSA9IF9vYmplY3RBcnJheS5lbnRpdGllcy5tYXAoaXQgPT4gaXQudGl0bGUpO1xcbiAgICAgICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcihcXFwiOnNlYXJjaFRhZ1xcXCIsIF9vYmplY3RBcnJheSk7XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBpZiAoX2RlbW9scGFnZSA9PSAxKSB7XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGFwaXZpZXcuYmlnKFxcXCLwn5OKIOeDremXqOaQnOe0olxcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiAkLnJlcXVpcmUoXFxcImljb24udG9vbFxcXCIpLmhvdCxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogYXBpdmlldy5lbXB0eSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9pY29uXFxcIlxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQgPSBhcGl2aWV3LmxheW91dC5jb25jYXQoX29iamVjdEFycmF5LnNsaWNlKDAsIDEwKS5tYXAoKGl0KSA9PiAoe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGFwaXZpZXcucmljaChhcGl2aWV3LnNtYWxsKGFwaXZpZXcuZ3JheShpdCkpKSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoaXQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCI6a2V5d29yZFxcXCIsIGl0KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9HZXRfa2V5d29yZChpdCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBpdmlldy5lbXB0eTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIGl0KSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiZmxleF9idXR0b25cXFwiXFxuICAgICAgICAgICAgICAgIH0pKSk7XFxuICAgICAgICAgICAgICAgIGxldCBtZW0gPSBzdG9yYWdlMC5nZXRJdGVtKE1ZX1JVTEUudGl0bGUsIFtdKTtcXG4gICAgICAgICAgICAgICAgaWYgKG1lbS5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYXBpdmlldy5iaWcoXFxcIvCfk50g5pCc57Si5Y6G5Y+yXFxcIiksXFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiAkLnJlcXVpcmUoXFxcImljb24udG9vbFxcXCIpLmRlbGV0ZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIuaYr+WQpua4hemZpOaQnOe0ouiusOW9le+8n1xcXCIpLmNvbmZpcm0oKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySXRlbShNWV9SVUxFLnRpdGxlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3QoXFxcIua4hemZpOaIkOWKn35cXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfaWNvblxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gbWVtLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgaXQgPSBtZW1baV07XFxuICAgICAgICAgICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYXBpdmlldy5yaWNoKGFwaXZpZXcuc21hbGwoYXBpdmlldy5ncmF5KGl0KSkpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoaXQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcIjprZXl3b3JkXFxcIiwgaXQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9HZXRfa2V5d29yZChpdCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhcGl2aWV3LmVtcHR5O1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGl0KSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImZsZXhfYnV0dG9uXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IGFwaXZpZXcuX2V4dHJhU2VhcmNoKGl0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xcbiAgICAgICAgICAgICAgICBjYXNlIFxcXCLliqjmgIFcXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgX2RlbW9sTWFwID0gYXBpdmlldy5fZGVtb2xfQWpheChcXFwiL3Y2L3NlYXJjaFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcXFwiZmVlZFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZmVlZFR5cGU6IFxcXCJhbGxcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQ6IFxcXCJkZWZhdWx0XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hWYWx1ZToga2V5d29yZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBfZGVtb2xwYWdlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dBbm9ueW1vdXM6IFxcXCItMVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcIuaVsOeggVxcXCI6XFxuICAgICAgICAgICAgICAgICAgICBfZGVtb2xNYXAgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvc2VhcmNoXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFxcXCJwcm9kdWN0XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hWYWx1ZToga2V5d29yZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBfZGVtb2xwYWdlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dBbm9ueW1vdXM6IFxcXCItMVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk6IFxcXCJcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICBjYXNlIFxcXCLlupTnlKhcXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgX2RlbW9sTWFwID0gYXBpdmlldy5fZGVtb2xfQWpheChcXFwiL3Y2L3NlYXJjaFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcXFwiYXBrXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXQ6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQ6IFxcXCJkZWZhdWx0XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hWYWx1ZToga2V5d29yZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBfZGVtb2xwYWdlXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICBjYXNlIFxcXCLmuLjmiI9cXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgX2RlbW9sTWFwID0gYXBpdmlldy5fZGVtb2xfQWpheChcXFwiL3Y2L3NlYXJjaFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcXFwiZ2FtZVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0OiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0OiBcXFwiZGVmYXVsdFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoVmFsdWU6IGtleXdvcmQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogX2RlbW9scGFnZVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgY2FzZSBcXFwi55So5oi3XFxcIjpcXG4gICAgICAgICAgICAgICAgICAgIF9kZW1vbE1hcCA9IGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni9zZWFyY2hcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXFxcInVzZXJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFZhbHVlOiBrZXl3b3JkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IF9kZW1vbHBhZ2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Fub255bW91czogXFxcIi0xXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeTogXFxcIlxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcIuivnemimFxcXCI6XFxuICAgICAgICAgICAgICAgICAgICBfZGVtb2xNYXAgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvc2VhcmNoXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFxcXCJmZWVkVG9waWNcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFZhbHVlOiBrZXl3b3JkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IF9kZW1vbHBhZ2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Fub255bW91czogXFxcIi0xXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeTogXFxcIlxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcIumXruetlFxcXCI6XFxuICAgICAgICAgICAgICAgICAgICBfZGVtb2xNYXAgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvc2VhcmNoXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFxcXCJhc2tcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZlZWRUeXBlOiBcXFwiYWxsXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hWYWx1ZToga2V5d29yZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBfZGVtb2xwYWdlXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICBjYXNlIFxcXCLlupTnlKjpm4ZcXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgX2RlbW9sTWFwID0gYXBpdmlldy5fZGVtb2xfQWpheChcXFwiL3Y2L3NlYXJjaFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcXFwiYWxidW1cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFZhbHVlOiBrZXl3b3JkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IF9kZW1vbHBhZ2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Fub255bW91czogXFxcIi0xXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeTogXFxcIlxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcIueci+eci+WPt1xcXCI6XFxuICAgICAgICAgICAgICAgICAgICBfZGVtb2xNYXAgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvc2VhcmNoXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFxcXCJkeWhcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFZhbHVlOiBrZXl3b3JkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IF9kZW1vbHBhZ2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Fub255bW91czogXFxcIi0xXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeTogXFxcIlxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcIuS6jOaJi1xcXCI6XFxuICAgICAgICAgICAgICAgICAgICBfZGVtb2xNYXAgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvc2VhcmNoXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFxcXCJlcnNob3VcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQ6IFxcXCJkZWZhdWx0XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hWYWx1ZToga2V5d29yZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IDEsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVhbF90eXBlOiAwLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNpdHlfY29kZTogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNfbGluazogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhjaGFuZ2VfdHlwZTogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJzaG91X3R5cGU6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3RfaWQ6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3M6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IF9kZW1vbHBhZ2VcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBpZiAoX2RlbW9sTWFwID09IG51bGwgfHwgJC50eXBlKF9kZW1vbE1hcCkgPT0gXFxcIm9iamVjdFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgX2RlbW9sTWFwID0gW107XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXREZXRlcm1pbmVQYXJzZShfZGVtb2xNYXApO1xcbiAgICAgICAgfTtcXG4gICAgfSxcXG4gICAgX3NlYXJjaEdvb2RzUGFyc2U6ICgpID0+IHtcXG4gICAgICAgIGxldCBfZGVtb2xwYWdlID0gTVlfUEFHRTtcXG4gICAgICAgIGxldCBrZXl3b3JkID0gZ2V0TXlWYXIoXFxcIjprZXl3b3JkR29vZFxcXCIsIFxcXCJcXFwiKTtcXG4gICAgICAgIGxldCB0eXBlID0gZ2V0TXlWYXIoXFxcInNlYXJjaEdvb2RUeXBlXFxcIiwgXFxcIuS6rOS4nFxcXCIpO1xcbiAgICAgICAgaWYgKF9kZW1vbHBhZ2UgPT0gMSkge1xcbiAgICAgICAgICAgIGFwaXZpZXcuX2dlbmVyYXRlVG9wKCk7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBhcGl2aWV3LnN0cm9uZyhhcGl2aWV3LmJpZyhcXFwi5pCc57Si57G75Z6LXFxcIikpICsgYDx1PiR7dHlwZX08L3U+YCxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCh0eXBlKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChbXFxcIuS6rOS4nFxcXCIsIFxcXCLmt5jlrp1cXFwiLCBcXFwi5ou85aSa5aSaXFxcIl0sIDMsIFxcXCLmkJzntKLnsbvlnos6XFxcIiArIHR5cGUpLnNlbGVjdCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcInNlYXJjaEdvb2RUeXBlXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+W3suWIh+aNouS4uiBcXFwiICsgaW5wdXQ7XFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfSwgdHlwZSksXFxuICAgICAgICAgICAgICAgIGltZzogJC5yZXF1aXJlKFxcXCJpY29uLnRvb2xcXFwiKS50YWJzZWFyY2gsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIlxcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLmkJzntKJcXFwiLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBcXFwi5pCc5L2g5oOz6KaB55qELi4uLlxcXCIsXFxuICAgICAgICAgICAgICAgIHVybDogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGtleXdvcmRzID0gaW5wdXQudHJpbSgpO1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcIjprZXl3b3JkR29vZFxcXCIsIGtleXdvcmRzKTtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXl3b3JkcykgYXBpdmlldy5fR2V0X2tleXdvcmQoaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhcGl2aWV3LmVtcHR5O1xcbiAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGdldE15VmFyKFxcXCI6a2V5d29yZEdvb2RcXFwiKVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9O1xcbiAgICAgICAgaWYgKGtleXdvcmQgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICBsZXQgX29iamVjdEFycmF5ID0gc3RvcmFnZTAuZ2V0TXlWYXIoXFxcIjpzZWFyY2hHb29kVGFnXFxcIiwgW10pO1xcbiAgICAgICAgICAgIGlmIChfb2JqZWN0QXJyYXkubGVuZ3RoID09IDApIHtcXG4gICAgICAgICAgICAgICAgX29iamVjdEFycmF5ID0gYXBpdmlldy5fZGVtb2xfQWpheChcXFwiL3Y2L2dvb2RzL3NlYXJjaEhvdFdvcmRzXFxcIik7XFxuICAgICAgICAgICAgICAgIGlmICgkLnR5cGUoX29iamVjdEFycmF5KSAhPSBcXFwiYXJyYXlcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICBfb2JqZWN0QXJyYXkgPSBfb2JqZWN0QXJyYXkuc3BsaXQoXFxcIixcXFwiKTtcXG4gICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoXFxcIjpzZWFyY2hHb29kVGFnXFxcIiwgX29iamVjdEFycmF5KTtcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIGlmIChfZGVtb2xwYWdlID09IDEpIHtcXG4gICAgICAgICAgICAgICAgaWYgKF9vYmplY3RBcnJheS5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYXBpdmlldy5iaWcoXFxcIvCfk4og54Ot6Zeo5pCc57SiXFxcIiksXFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiAkLnJlcXVpcmUoXFxcImljb24udG9vbFxcXCIpLmhvdCxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFwaXZpZXcuZW1wdHksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2ljb25cXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0ID0gYXBpdmlldy5sYXlvdXQuY29uY2F0KF9vYmplY3RBcnJheS5zbGljZSgwLCAxMCkubWFwKChpdCkgPT4gKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYXBpdmlldy5yaWNoKGFwaXZpZXcuc21hbGwoYXBpdmlldy5ncmF5KGl0KSkpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoaXQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcIjprZXl3b3JkR29vZFxcXCIsIGl0KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5fR2V0X2tleXdvcmQoaXQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBpdmlldy5lbXB0eTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpdCksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJmbGV4X2J1dHRvblxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0pKSk7XFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgIGxldCBtZW0gPSBzdG9yYWdlMC5nZXRJdGVtKE1ZX1JVTEUudGl0bGUsIFtdKTtcXG4gICAgICAgICAgICAgICAgaWYgKG1lbS5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYXBpdmlldy5iaWcoXFxcIvCfk50g5pCc57Si5Y6G5Y+yXFxcIiksXFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiAkLnJlcXVpcmUoXFxcImljb24udG9vbFxcXCIpLmRlbGV0ZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIuaYr+WQpua4hemZpOaQnOe0ouiusOW9le+8n1xcXCIpLmNvbmZpcm0oKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySXRlbShNWV9SVUxFLnRpdGxlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3QoXFxcIua4hemZpOaIkOWKn35cXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfaWNvblxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gbWVtLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgaXQgPSBtZW1baV07XFxuICAgICAgICAgICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYXBpdmlldy5yaWNoKGFwaXZpZXcuc21hbGwoYXBpdmlldy5ncmF5KGl0KSkpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoaXQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcIjprZXl3b3JkR29vZFxcXCIsIGl0KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5fR2V0X2tleXdvcmQoaXQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBpdmlldy5lbXB0eTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpdCksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJmbGV4X2J1dHRvblxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBhcGl2aWV3Ll9leHRyYVNlYXJjaChpdClcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcXG4gICAgICAgICAgICAgICAgY2FzZSBcXFwi5Lqs5LicXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgIF9kZW1vbE1hcCA9IGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni9nb29kcy9zZWFyY2hcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZDoga2V5d29yZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0TmFtZTogXFxcImluT3JkZXJDb3VudDMwRGF5c1xcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNDb3Vwb246IDEsXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogX2RlbW9scGFnZVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgY2FzZSBcXFwi5reY5a6dXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgIF9kZW1vbE1hcCA9IGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni9nb29kcy90YW9iYW9TZWFyY2hcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcToga2V5d29yZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0OiBcXFwidG90YWxfc2FsZXNcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IF9kZW1vbHBhZ2VcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcIuaLvOWkmuWkmlxcXCI6XFxuICAgICAgICAgICAgICAgICAgICBfZGVtb2xNYXAgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvcGFnZS9kYXRhTGlzdFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCIvZ29vZHMvc2VhcmNoUGRkR29vZHNMaXN0XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkOiBrZXl3b3JkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRUeXBlOiA2LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IF9kZW1vbHBhZ2VcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBpZiAoX2RlbW9sTWFwID09IG51bGwgfHwgJC50eXBlKF9kZW1vbE1hcCkgPT0gXFxcIm9iamVjdFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgX2RlbW9sTWFwID0gW107XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXREZXRlcm1pbmVQYXJzZShfZGVtb2xNYXApO1xcbiAgICAgICAgfTtcXG4gICAgfSxcXG4gICAgX2ZpcnN0cGFnZV9QYXJzZTogKF9kZW1vbE1hcCkgPT4ge1xcbiAgICAgICAgbGV0IF9kZW1vbHBhZ2UgPSBNWV9QQUdFO1xcbiAgICAgICAgbGV0IGRlbW9sVGltZSA9IHBhcnNlSW50KERhdGUubm93KCkgLyAxMDAwKS50b1N0cmluZygpO1xcbiAgICAgICAgbGV0IF9kZW1vbFVybCA9IF9kZW1vbE1hcC51cmw7XFxuICAgICAgICBsZXQgX2RlbW9sTmFtZSA9IF9kZW1vbE1hcC50aXRsZTtcXG4gICAgICAgIGlmIChfZGVtb2xVcmwuc3RhcnRzV2l0aChcXFwiL21haW4vXFxcIikpIHtcXG4gICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXREZXRlcm1pbmVQYXJzZShhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvbWFpbi9pbmRleFY4XFxcIiwge1xcbiAgICAgICAgICAgICAgICBwYWdlOiBfZGVtb2xwYWdlLFxcbiAgICAgICAgICAgICAgICBmaXJzdExhdW5jaDogMCxcXG4gICAgICAgICAgICAgICAgaW5zdGFsbFRpbWU6IGRlbW9sVGltZSxcXG4gICAgICAgICAgICAgICAgaWRzOiBcXFwiXFxcIlxcbiAgICAgICAgICAgIH0pLCBcXFwiZmFsc2VcXFwiKTtcXG4gICAgICAgIH07XFxuICAgICAgICBpZiAoX2RlbW9sVXJsLnN0YXJ0c1dpdGgoXFxcIi9wYWdlXFxcIikpIHtcXG4gICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXREZXRlcm1pbmVQYXJzZShhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvcGFnZS9kYXRhTGlzdFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgdXJsOiBfZGVtb2xVcmwsXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBfZGVtb2xOYW1lLFxcbiAgICAgICAgICAgICAgICBzdWJUaXRsZTogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgIHBhZ2U6IF9kZW1vbHBhZ2VcXG4gICAgICAgICAgICB9KSk7XFxuICAgICAgICB9O1xcbiAgICAgICAgaWYgKF9kZW1vbFVybCA9PSBcXFwiL3VzZXIvZHloU3Vic2NyaWJlXFxcIikge1xcbiAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dERldGVybWluZVBhcnNlKGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni9wYWdlL2RhdGFMaXN0XFxcIiwge1xcbiAgICAgICAgICAgICAgICB1cmw6IFxcXCIvZHloL3JlY29tbWVuZExpc3Q/JnRpdGxlPeermeWGheiuoumYhVxcXCIsXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi56uZ5YaF6K6i6ZiFXFxcIixcXG4gICAgICAgICAgICAgICAgc3ViVGl0bGU6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICBwYWdlOiBfZGVtb2xwYWdlXFxuICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgfTtcXG4gICAgICAgIGlmIChfZGVtb2xVcmwgPT0gXFxcIi9wcm9kdWN0L2NhdGVnb3J5TGlzdFxcXCIpIHtcXG4gICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRMaW5rVGFiUGFyc2UoYXBpdmlldy5fZGVtb2xfQWpheChgL3Y2JHtfZGVtb2xVcmx9YCkpO1xcbiAgICAgICAgfTtcXG4gICAgfSxcXG4gICAgX2xheW91dERldGVybWluZVBhcnNlOiAoX2RlbW9sTWFwLCBfZGVtb2wpID0+IHtcXG4gICAgICAgIGxldCBfZGVtb2wgPSBfZGVtb2wgPyBfZGVtb2wgOiBcXFwiXFxcIjtcXG4gICAgICAgIGxldCBfbGlua05leHQgPSAoKSA9PiBnZXRNeVZhcihcXFwiOmxpbmtOZXh0XFxcIiArIF9kZW1vbCwgXFxcIlxcXCIpO1xcbiAgICAgICAgbGV0IF9kZW1vbE5leHQgPSBfZGVtb2xNYXAuc29tZShpdCA9PiBpdC5lbnRpdHlUZW1wbGF0ZSA9PT0gXFxcInNvcnRTZWxlY3RDYXJkXFxcIik7XFxuICAgICAgICBpZiAoX2RlbW9sTmV4dCkge1xcbiAgICAgICAgICAgIF9kZW1vbE1hcCA9IF9kZW1vbE1hcC5maWx0ZXIoaXQgPT4gaXQuZW50aXR5VGVtcGxhdGUgPT09IFxcXCJzb3J0U2VsZWN0Q2FyZFxcXCIpO1xcbiAgICAgICAgfTtcXG4gICAgICAgIHB1dE15VmFyKFxcXCI6bmV4dFxcXCIgKyBfZGVtb2wsIF9kZW1vbE5leHQgPyBcXFwidHJ1ZVxcXCIgOiBcXFwiXFxcIik7XFxuICAgICAgICBsZXQgX2RlbW9sTWFwXyA9IChfbGlua05leHQoKSA9PSBcXFwidHJ1ZVxcXCIgJiYgIV9kZW1vbCkgPyBzdG9yYWdlMC5nZXRNeVZhcihcXFwiOmRlbW9sTWFwXFxcIiArIF9kZW1vbCwgW10pIDogX2RlbW9sTWFwO1xcbiAgICAgICAgbGV0IF9kZW1vbE1hcCA9IF9kZW1vbE1hcC5sZW5ndGggPiAwID8gX2RlbW9sTWFwIDogX2RlbW9sTWFwXztcXG4gICAgICAgIGlmIChfbGlua05leHQoKSA9PSBcXFwiXFxcIiAmJiBfZGVtb2xNYXAubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKFxcXCI6ZGVtb2xNYXBcXFwiICsgX2RlbW9sLCBfZGVtb2xNYXApO1xcbiAgICAgICAgfTtcXG4gICAgICAgIF9kZW1vbE1hcC5mb3JFYWNoKChpdCwgaSkgPT4ge1xcbiAgICAgICAgICAgIF9kZW1vbFR5cGUgPSBpdC5lbnRpdHlUZW1wbGF0ZTtcXG4gICAgICAgICAgICBfdHlwZV8gPSBpdC5lbnRpdHlUeXBlO1xcbiAgICAgICAgICAgIF9kZW1vbE1hcHMgPSBpdC5lbnRpdGllcztcXG4gICAgICAgICAgICBpZiAoX2RlbW9sVHlwZSA9PSBcXFwiaW1hZ2VDYXJvdXNlbENhcmRfMVxcXCIpIHtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKFxcXCI6Y2Fyb3VzZWxNYXBcXFwiLCBKU09OLnN0cmluZ2lmeShfZGVtb2xNYXBzKSk7XFxuICAgICAgICAgICAgICAgIHB1dFZhcihcXFwiOnJ1bGVNYXBcXFwiLCBKU09OLnN0cmluZ2lmeShNWV9SVUxFKSk7XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBnZXRQYXRoKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL0Nhcm91c2VsLmh0bWxcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXCIxMzUmJmxpc3RcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHVhOiBcXFwiRGFsdmlrLzIuMS4wIChMaW51eDsgVTsgQW5kcm9pZCAxMDsgVjIzMDRBIEJ1aWxkL1VQMUEuMjMxMDA1LjAwNykgKCNCdWlsZDsgdml2bzsgVjIzMDRBOyBVUDFBLjIzMTAwNS4wMDcgcmVsZWFzZS1rZXlzOyAxMCkgK0Nvb2xNYXJrZXQvMTMuMy42LTIzMTAyMzItdW5pdmVyc2FsXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKF9kZW1vbFR5cGUgPT0gXFxcImltYWdlU3F1YXJlU2Nyb2xsQ2FyZFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKFxcXCI6Y2Fyb3VzZWxNYXBcXFwiLCBKU09OLnN0cmluZ2lmeShfZGVtb2xNYXBzKSk7XFxuICAgICAgICAgICAgICAgIHB1dFZhcihcXFwiOnJ1bGVNYXBcXFwiLCBKU09OLnN0cmluZ2lmeShNWV9SVUxFKSk7XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBnZXRQYXRoKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL1Njcm9sbENhcmQuaHRtbFxcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcIjgwJiZsaXN0XFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwieDVfd2Vidmlld19zaW5nbGVcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB1YTogXFxcIkRhbHZpay8yLjEuMCAoTGludXg7IFU7IEFuZHJvaWQgMTA7IFYyMzA0QSBCdWlsZC9VUDFBLjIzMTAwNS4wMDcpICgjQnVpbGQ7IHZpdm87IFYyMzA0QTsgVVAxQS4yMzEwMDUuMDA3IHJlbGVhc2Uta2V5czsgMTApICtDb29sTWFya2V0LzEzLjMuNi0yMzEwMjMyLXVuaXZlcnNhbFxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChfZGVtb2xUeXBlID09IFxcXCJpY29uTGlua0dyaWRDYXJkXFxcIikge1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3LmxheW91dCA9IGFwaXZpZXcubGF5b3V0LmNvbmNhdChfZGVtb2xNYXBzLm1hcChfID0+ICh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXy50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogYXBpdmlldy5fZ2VuZXJhdGVJbWFnZShfLnBpYyksXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICghXy51cmwuc3RhcnRzV2l0aChcXFwiaHR0cFxcXCIpICYmICFfLnVybC5zdGFydHNXaXRoKFxcXCJodHRwc1xcXCIpKSA/ICQoYXBpdmlldy5lbXB0eSArIFxcXCIjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjI2dhbWVUaGVtZSNmeXBhZ2VcXFwiKS5ydWxlKChfKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRMaW5rUnVsZVBhcnNlKF8pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChhcGl2aWV3LmxheW91dCk7XFxuICAgICAgICAgICAgICAgICAgICB9LCBfKSA6IF8udXJsLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IF9kZW1vbE1hcHMubGVuZ3RoID4gNCA/IFxcXCJpY29uXzVcXFwiIDogXFxcImljb25fc21hbGxfNFxcXCJcXG4gICAgICAgICAgICAgICAgfSkpKTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKF9kZW1vbFR5cGUgPT0gXFxcImljb25UYWJMaW5rR3JpZENhcmRcXFwiIHx8IF9kZW1vbFR5cGUgPT0gXFxcInZlcnRpY2FsQ29sdW1uc0Z1bGxQYWdlQ2FyZFxcXCIgfHwgX2RlbW9sVHlwZSA9PSBcXFwic29ydFNlbGVjdENhcmRcXFwiKSB7XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCI6bGlua05leHRcXFwiICsgX2RlbW9sLCBcXFwidHJ1ZVxcXCIpO1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRMaW5rVGFiUGFyc2UoX2RlbW9sTWFwcywgX2RlbW9sKTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKF9kZW1vbFR5cGUgPT0gXFxcImljb25MaXN0Q2FyZFxcXCIgfHwgKF9kZW1vbFR5cGUgPT0gXFxcImxpc3RDYXJkXFxcIiAmJiBfZGVtb2wgIT0gXFxcImZhbHNlXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0RGV0ZXJtaW5lUGFyc2UoX2RlbW9sTWFwcyk7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChfZGVtb2xUeXBlID09IFxcXCJpbWFnZVRleHRHcmlkQ2FyZFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0R3JpZENhcmRQYXJzZShfZGVtb2xNYXBzKTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKF9kZW1vbFR5cGUgPT0gXFxcImhlYWRDYXJkXFxcIiAmJiBpdC50aXRsZSAmJiBpdC5kZXNjcmlwdGlvbikge1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRIZWFkQ2FyZFBhcnNlKGl0KTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKF9kZW1vbFR5cGUgPT0gXFxcInRleHRDYXJkXFxcIiAmJiBpdC50aXRsZSAmJiBpdC5kZXNjcmlwdGlvbikge1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRUZXh0Q2FyZFBhcnNlKGl0KTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKF9kZW1vbFR5cGUgPT0gXFxcIm5vTW9yZURhdGFDYXJkXFxcIikge1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBhcGl2aWV3LnJpY2goYXBpdmlldy5zbWFsbChhcGl2aWV3LmdyYXkoaXQudGl0bGUpKSksXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGFwaXZpZXcuZW1wdHksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoX2RlbW9sVHlwZSA9PSBudWxsICYmIF90eXBlXyA9PSBcXFwidXNlclxcXCIpIHtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0VXNlclBhcnNlKGl0KTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKF90eXBlXyA9PSBcXFwiY29sbGVjdGlvblxcXCIpIHtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0Q29sbGVjdGlvblBhcnNlKGl0KTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKF90eXBlXyA9PSBcXFwiYWxidW1cXFwiKSB7XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dEFsYnVtUGFyc2UoaXQpO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoX3R5cGVfID09IFxcXCJsaXZlVG9waWNcXFwiKSB7XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dExpdmVQYXJzZShpdCk7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChfdHlwZV8gPT0gXFxcInRvcGljXFxcIiB8fCBfdHlwZV8gPT0gXFxcInByb2R1Y3RcXFwiIHx8IF90eXBlXyA9PSBcXFwiYXBrXFxcIiB8fCBfdHlwZV8gPT0gXFxcImR5aFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0VGFnUGFyc2UoaXQpO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoX3R5cGVfID09IFxcXCJwZWFyX2dvb2RzXFxcIikge1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRQZWFyR29vZFBhcnNlKGl0KTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKF90eXBlXyA9PSBcXFwiZmVlZFxcXCIgfHwgX3R5cGVfID09IFxcXCJmZWVkX3JlcGx5XFxcIiB8fCBfdHlwZV8gPT0gXFxcIm5vZGVSYXRpbmdcXFwiKSB7XFxuICAgICAgICAgICAgICAgIGlmICghaXQuZXh0cmFfZnJvbUFwaSkge1xcbiAgICAgICAgICAgICAgICAgICAgaXQuZXh0cmFfZnJvbUFwaSA9IF9kZW1vbDtcXG4gICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgaWYgKCFpdC5pZCkgaXQuaWQgPSBpdC5mZWVkX2lkO1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRGZWVkUGFyc2UoaXQpO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICB9KTtcXG4gICAgICAgIGlmIChfZGVtb2xNYXAubGVuZ3RoID09IDApIHtcXG4gICAgICAgICAgICBhcGl2aWV3Ll9FbmRfUGFyc2UoKTtcXG4gICAgICAgIH07XFxuICAgIH0sXFxuICAgIF9sYXlvdXRUZXh0Q2FyZFBhcnNlOiAoX2RlbW9sTWFwKSA9PiB7XFxuICAgICAgICBfZGVtb2xNYXAubWVzc2FnZSA9IGAke2FwaXZpZXcuYmlnKGFwaXZpZXcuc3Ryb25nKF9kZW1vbE1hcC50aXRsZSkpfSR7X2RlbW9sTWFwLnN1YlRpdGxlID8gYDxicj4ke19kZW1vbE1hcC5zdWJUaXRsZX1gIDogXFxcIlxcXCJ9PGJyPjxicj4ke19kZW1vbE1hcC5kZXNjcmlwdGlvbn1gO1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGFwaXZpZXcuX2dldFJlZ0V4cChfZGVtb2xNYXAsIHRydWUpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwicmljaF90ZXh0XFxcIlxcbiAgICAgICAgfSk7XFxuICAgIH0sXFxuICAgIF9sYXlvdXRIZWFkQ2FyZFBhcnNlOiAoX2RlbW9sTWFwKSA9PiB7XFxuICAgICAgICBhcGl2aWV3Ll9sYXlvdXRUZXh0Q2FyZFBhcnNlKF9kZW1vbE1hcCk7XFxuICAgICAgICBhcGl2aWV3Ll9nZW5lcmF0ZUVuZCgpO1xcbiAgICB9LFxcbiAgICBfbGF5b3V0TGl2ZVBhcnNlOiAoX2RlbW9sTWFwKSA9PiB7XFxuICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogX2RlbW9sTWFwLnRpdGxlLFxcbiAgICAgICAgICAgIGRlc2M6IChfZGVtb2xNYXAubGl2ZV9zdGF0dXMgPT0gLTEgPyBcXFwi5bey57uT5p2fIC0gXFxcIiA6IFxcXCJcXFwiKSArIF9kZW1vbE1hcC5kZXNjcmlwdGlvbixcXG4gICAgICAgICAgICBpbWc6IGFwaXZpZXcuX2dlbmVyYXRlSW1hZ2UoX2RlbW9sTWFwLnBpY191cmwpLFxcbiAgICAgICAgICAgIHVybDogX2RlbW9sTWFwLnZpZGVvX2xpdmVfdXJsLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibW92aWVfMlxcXCJcXG4gICAgICAgIH0pO1xcbiAgICB9LFxcbiAgICBfbGF5b3V0QWxidW1QYXJzZTogKF9kZW1vbE1hcCkgPT4ge1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IF9kZW1vbE1hcC50aXRsZSxcXG4gICAgICAgICAgICBkZXNjOiBgJHtfZGVtb2xNYXAuZGVzY3JpcHRpb259XFxcXG4ke19kZW1vbE1hcC5hcGtudW195Liq5bqU55SoYCxcXG4gICAgICAgICAgICBpbWc6IGFwaXZpZXcuX2dlbmVyYXRlSW1hZ2UoX2RlbW9sTWFwLmxvZ28pLFxcbiAgICAgICAgICAgIHVybDogJChhcGl2aWV3LmVtcHR5ICsgXFxcIiNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMjZ2FtZVRoZW1lI2Z5cGFnZVxcXCIpLnJ1bGUoKF9kZW1vbFVybCkgPT4ge1xcbiAgICAgICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgICAgICBsZXQgX2RlbW9scGFnZSA9IE1ZX1BBR0U7XFxuICAgICAgICAgICAgICAgIGlmIChfZGVtb2xwYWdlID09IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgIGFwaXZpZXcuX2dlbmVyYXRlVG9wKCk7XFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dEFsYnVtUnVsZVBhcnNlKGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni9hbGJ1bS9hcGtMaXN0XFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgaWQ6IF9kZW1vbFVybCxcXG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IF9kZW1vbHBhZ2VcXG4gICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQoYXBpdmlldy5sYXlvdXQpO1xcbiAgICAgICAgICAgIH0sIF9kZW1vbE1hcC5pZCksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJtb3ZpZV8xX2xlZnRfcGljXFxcIixcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IGFwaXZpZXcuX2V4dHJhX3Rvb2woX2RlbW9sTWFwLCBcXFwiYWxidW1cXFwiLCBcXFwiaWRcXFwiKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICB9LFxcbiAgICBfbGF5b3V0UGVhckdvb2RQYXJzZTogKF9kZW1vbE1hcCkgPT4ge1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IF9kZW1vbE1hcC50aXRsZSxcXG4gICAgICAgICAgICBkZXNjOiBgJHtfZGVtb2xNYXAuZ29vZHNfYnV5X3RleHR9XFxcXG4ke19kZW1vbE1hcC5nb29kc19wcm9tb190aXRsZX1gLFxcbiAgICAgICAgICAgIGltZzogYXBpdmlldy5fZ2VuZXJhdGVJbWFnZShfZGVtb2xNYXAuZ29vZHNfcGljKSxcXG4gICAgICAgICAgICB1cmw6ICQoYXBpdmlldy5lbXB0eSkubGF6eVJ1bGUoKHtcXG4gICAgICAgICAgICAgICAgZ29vZHNfdXJsLFxcbiAgICAgICAgICAgICAgICBnb29kc19idXlfdXJsXFxuICAgICAgICAgICAgfSkgPT4gZGVjb2RlVVJJQ29tcG9uZW50KCQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKS5fZGVtb2xfQWpheChcXFwiL3Y2L2dvb2RzL2dldEJ1eVVybFxcXCIsIG51bGwsIHtcXG4gICAgICAgICAgICAgICAgZ29vZHNfdXJsOiBnb29kc191cmwsXFxuICAgICAgICAgICAgICAgIGdvb2RzX2J1eV91cmw6IGdvb2RzX2J1eV91cmxcXG4gICAgICAgICAgICB9KSksIF9kZW1vbE1hcCksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJtb3ZpZV8xX2xlZnRfcGljXFxcIlxcbiAgICAgICAgfSk7XFxuICAgIH0sXFxuICAgIF9sYXlvdXRDb2xsZWN0aW9uUGFyc2U6IChfZGVtb2xNYXApID0+IHtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBfZGVtb2xNYXAudGl0bGUsXFxuICAgICAgICAgICAgZGVzYzogYCR7X2RlbW9sTWFwLmlzX29wZW5fdGl0bGV9XFxcXG4ke19kZW1vbE1hcC5pdGVtX251bX3kuKrlhoXlrrlgLFxcbiAgICAgICAgICAgIGltZzogYXBpdmlldy5fZ2VuZXJhdGVJbWFnZShfZGVtb2xNYXAuY292ZXJfcGljKSxcXG4gICAgICAgICAgICB1cmw6IF9kZW1vbE1hcC5pc19vcGVuX3RpdGxlID09IFxcXCLlhazlvIBcXFwiID8gJChhcGl2aWV3LmVtcHR5ICsgXFxcIiNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMjZ2FtZVRoZW1lI2Z5cGFnZVxcXCIpLnJ1bGUoKF9kZW1vbFVybCkgPT4ge1xcbiAgICAgICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgICAgICBsZXQgX2RlbW9scGFnZSA9IE1ZX1BBR0U7XFxuICAgICAgICAgICAgICAgIGlmIChfZGVtb2xwYWdlID09IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgIGFwaXZpZXcuX2dlbmVyYXRlVG9wKCk7XFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dERldGVybWluZVBhcnNlKGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni9jb2xsZWN0aW9uL2l0ZW1MaXN0XFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgaWQ6IF9kZW1vbFVybCxcXG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IF9kZW1vbHBhZ2VcXG4gICAgICAgICAgICAgICAgfSksIF9kZW1vbFVybCk7XFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdChhcGl2aWV3LmxheW91dCk7XFxuICAgICAgICAgICAgfSwgX2RlbW9sTWFwLmlkKSA6IGB0b2FzdDovLyR7X2RlbW9sTWFwLmlzX29wZW5fdGl0bGV9YCxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcIm1vdmllXzFfbGVmdF9waWNcXFwiXFxuICAgICAgICB9KTtcXG4gICAgfSxcXG4gICAgX2xheW91dEdyaWRDYXJkUGFyc2U6IChfZGVtb2xNYXApID0+IHtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0ID0gYXBpdmlldy5sYXlvdXQuY29uY2F0KF9kZW1vbE1hcC5tYXAoXyA9PiAoe1xcbiAgICAgICAgICAgIHRpdGxlOiBfLnRpdGxlLFxcbiAgICAgICAgICAgIGRlc2M6IFxcXCIwXFxcIixcXG4gICAgICAgICAgICBpbWc6IGFwaXZpZXcuX2dlbmVyYXRlSW1hZ2UoXy5waWMpLFxcbiAgICAgICAgICAgIHVybDogJChhcGl2aWV3LmVtcHR5ICsgXFxcIiNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMjZ2FtZVRoZW1lI2Z5cGFnZVxcXCIpLnJ1bGUoKF8pID0+IHtcXG4gICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgbGV0IF9kZW1vbHBhZ2UgPSBNWV9QQUdFO1xcbiAgICAgICAgICAgICAgICBsZXQgX2RlbW9sTmFtZSA9IF8udGl0bGU7XFxuICAgICAgICAgICAgICAgIGxldCBfZGVtb2xVcmwgPSBfLnVybDtcXG4gICAgICAgICAgICAgICAgaWYgKF9kZW1vbFVybC5zdGFydHNXaXRoKFxcXCIvcGFnZVxcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICBfZGVtb2xVcmwgPSBfZGVtb2xVcmwuc3BsaXQoXFxcIj1cXFwiKVsxXTtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChfZGVtb2xwYWdlID09IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9nZW5lcmF0ZVRvcCgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dERldGVybWluZVBhcnNlKGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni9wYWdlL2RhdGFMaXN0XFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IF9kZW1vbFVybCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF9kZW1vbE5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YlRpdGxlOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogX2RlbW9scGFnZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBfZGVtb2xVcmwgPSBfZGVtb2xVcmwuc3BsaXQoXFxcIi9mZWVkL1xcXCIpWzFdO1xcbiAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0UnVsZVBhcnNlKF9kZW1vbFVybCk7XFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdChhcGl2aWV3LmxheW91dCk7XFxuICAgICAgICAgICAgfSwgXyksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJjYXJkX3BpY18xXFxcIlxcbiAgICAgICAgfSkpKTtcXG4gICAgICAgIGlmIChfZGVtb2xNYXAubGVuZ3RoID09IDApIHtcXG4gICAgICAgICAgICBhcGl2aWV3Ll9FbmRfUGFyc2UoKTtcXG4gICAgICAgIH07XFxuICAgIH0sXFxuICAgIF9sYXlvdXRVc2VyUGFyc2U6IChfZGVtb2xNYXApID0+IHtcXG4gICAgICAgIF9kZW1vbE1hcCA9IF9kZW1vbE1hcC51c2VySW5mbyB8fCBfZGVtb2xNYXA7XFxuICAgICAgICBsZXQgX2RlbW9sTWFwcyA9IHt9O1xcbiAgICAgICAgX2RlbW9sTWFwcy51c2VybmFtZSA9IF9kZW1vbE1hcC51c2VybmFtZTtcXG4gICAgICAgIF9kZW1vbE1hcHMudXNlckF2YXRhciA9IF9kZW1vbE1hcC51c2VyQXZhdGFyO1xcbiAgICAgICAgX2RlbW9sTWFwcy51aWQgPSBfZGVtb2xNYXAudWlkO1xcbiAgICAgICAgX2RlbW9sTWFwcy5lbnRpdHlUeXBlID0gX2RlbW9sTWFwLmVudGl0eVR5cGU7XFxuICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogX2RlbW9sTWFwLnVzZXJuYW1lLFxcbiAgICAgICAgICAgIGltZzogYXBpdmlldy5fZ2VuZXJhdGVJbWFnZShfZGVtb2xNYXAudXNlckF2YXRhciksXFxuICAgICAgICAgICAgdXJsOiAkKGFwaXZpZXcuZW1wdHkgKyBcXFwiI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5I2Z5cGFnZVxcXCIpLnJ1bGUoKF9kZW1vbE1hcHMpID0+IHtcXG4gICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0VXNlclJ1bGVQYXJzZShfZGVtb2xNYXBzKTtcXG4gICAgICAgICAgICAgICAgc2V0UmVzdWx0KGFwaXZpZXcubGF5b3V0KTtcXG4gICAgICAgICAgICB9LCBfZGVtb2xNYXBzKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImNhcmRfcGljXzNfY2VudGVyXFxcIixcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IGDnlKjmiLcvJHtfZGVtb2xNYXAudXNlcm5hbWV9YCxcXG4gICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBhcGl2aWV3Ll9leHRyYV90b29sKF9kZW1vbE1hcHMsIFxcXCJ1c2VyXFxcIiwgXFxcInVpZFxcXCIsIHRydWUpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgIH0sXFxuICAgIF9sYXlvdXRUYWdQYXJzZTogKF9kZW1vbE1hcCkgPT4ge1xcbiAgICAgICAgbGV0IF9kZW1vbE1hcHMgPSB7fTtcXG4gICAgICAgIF9kZW1vbE1hcHMudGl0bGUgPSBfZGVtb2xNYXAudGl0bGU7XFxuICAgICAgICBfZGVtb2xNYXBzLmxvZ28gPSBfZGVtb2xNYXAubG9nbztcXG4gICAgICAgIF9kZW1vbE1hcHMudXJsID0gX2RlbW9sTWFwLnVybDtcXG4gICAgICAgIF9kZW1vbE1hcHMuaWQgPSBfZGVtb2xNYXAuaWQ7XFxuICAgICAgICBfZGVtb2xNYXBzLmVudGl0eVR5cGUgPSBfZGVtb2xNYXAuZW50aXR5VHlwZTtcXG4gICAgICAgIHN3aXRjaCAoX2RlbW9sTWFwcy5lbnRpdHlUeXBlKSB7XFxuICAgICAgICAgICAgY2FzZSBcXFwidG9waWNcXFwiOlxcbiAgICAgICAgICAgICAgICBfdGFnID0gXFxcInRvcGljXFxcIjtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgY2FzZSBcXFwicHJvZHVjdFxcXCI6XFxuICAgICAgICAgICAgICAgIF90YWcgPSBcXFwicHJvZHVjdFxcXCI7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGNhc2UgXFxcImR5aFxcXCI6XFxuICAgICAgICAgICAgICAgIF90YWcgPSBcXFwiZHloXFxcIjtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgICAgICAgX3RhZyA9IFxcXCJhcGtcXFwiO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgIH07XFxuICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogX2RlbW9sTWFwLnRpdGxlLFxcbiAgICAgICAgICAgIGltZzogYXBpdmlldy5fZ2VuZXJhdGVJbWFnZShfZGVtb2xNYXAubG9nbyksXFxuICAgICAgICAgICAgdXJsOiAkKGFwaXZpZXcuZW1wdHkgKyBcXFwiI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IyNnYW1lVGhlbWUjZnlwYWdlXFxcIikucnVsZSgoX2RlbW9sTWFwcykgPT4ge1xcbiAgICAgICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcblxcbiAgICAgICAgICAgICAgICBpZiAoX2RlbW9sTWFwcy51cmwpIHtcXG4gICAgICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dExpbmtSdWxlUGFyc2UoX2RlbW9sTWFwcyk7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRUYWJSdWxlUGFyc2UoX2RlbW9sTWFwcy5pZCk7XFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdChhcGl2aWV3LmxheW91dCk7XFxuICAgICAgICAgICAgfSwgX2RlbW9sTWFwcyksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJjYXJkX3BpY18zX2NlbnRlclxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBhcGl2aWV3Ll9leHRyYV90b29sKF9kZW1vbE1hcHMsIF90YWcsIFxcXCJ0aXRsZVxcXCIpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgIH0sXFxuICAgIF9sYXlvdXRBbGJ1bVJ1bGVQYXJzZTogKF9kZW1vbE1hcCkgPT4ge1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQgPSBhcGl2aWV3LmxheW91dC5jb25jYXQoX2RlbW9sTWFwLm1hcChfID0+ICh7XFxuICAgICAgICAgICAgdGl0bGU6IF8udGl0bGUsXFxuICAgICAgICAgICAgZGVzYzogXy5ub3RlLFxcbiAgICAgICAgICAgIGltZzogYXBpdmlldy5fZ2VuZXJhdGVJbWFnZShfLnBpYyksXFxuICAgICAgICAgICAgdXJsOiAkKGFwaXZpZXcuZW1wdHkgKyBcXFwiI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IyNnYW1lVGhlbWUjZnlwYWdlXFxcIikucnVsZSgoXykgPT4ge1xcbiAgICAgICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgICAgICBsZXQgX2RlbW9sVXJsID0gXy51cmxcXG4gICAgICAgICAgICAgICAgaWYgKF9kZW1vbFVybC5zdGFydHNXaXRoKFxcXCJodHRwXFxcIikgfHwgX2RlbW9sVXJsLnN0YXJ0c1dpdGgoXFxcImh0dHBzXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgIF8udXJsID0gX2RlbW9sVXJsLnNwbGl0KGFwaXZpZXcuX2ZpbGVXZWJVdGlsKFxcXCJcXFwiKSlbMV07XFxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoX2RlbW9sVXJsLnN0YXJ0c1dpdGgoXFxcIm1hcmtldDpcXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgXy51cmwgPSBgL2Fway8ke19kZW1vbFVybC5zcGxpdChcXFwiPVxcXCIpWzFdfWA7XFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dExpbmtSdWxlUGFyc2UoXyk7XFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdChhcGl2aWV3LmxheW91dCk7XFxuICAgICAgICAgICAgfSwgXyksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJtb3ZpZV8xX2xlZnRfcGljXFxcIlxcbiAgICAgICAgfSkpKTtcXG4gICAgICAgIGlmIChfZGVtb2xNYXAubGVuZ3RoID09IDApIHtcXG4gICAgICAgICAgICBhcGl2aWV3Ll9FbmRfUGFyc2UoKTtcXG4gICAgICAgIH07XFxuICAgIH0sXFxuICAgIF9sYXlvdXRGZWVkUGFyc2U6IChfZGVtb2xNYXApID0+IHtcXG4gICAgICAgIF90eXBlXyA9IF9kZW1vbE1hcC5lbnRpdHlUeXBlO1xcbiAgICAgICAgcnVzZXJuYW1lID0gX2RlbW9sTWFwLnJ1c2VybmFtZTtcXG4gICAgICAgIHVzZXJNYXAgPSBfZGVtb2xNYXAudXNlckluZm8gfHwgX2RlbW9sTWFwO1xcbiAgICAgICAgaW5mb0h0bWwgPSBfZGVtb2xNYXAuaW5mb0h0bWw7XFxuICAgICAgICBmZWVkVHlwZU5hbWUgPSBfZGVtb2xNYXAuZmVlZFR5cGVOYW1lO1xcbiAgICAgICAgX251bWJlckNhcmQgPSBOdW1iZXIoZ2V0SXRlbShcXFwiOm51bWJlclxcXCIsIFxcXCIzXFxcIikpO1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHVzZXJNYXAudXNlcm5hbWUgKyBcXFwiXFxcXHRcXFxcdFxcXCIgKyBhcGl2aWV3LnNtYWxsKGFwaXZpZXcuX2Zvcm1hdFRpbWVzdGFtcChfZGVtb2xNYXAuZGF0ZWxpbmUgfHwgX2RlbW9sTWFwLnJlZ2RhdGUpKSxcXG4gICAgICAgICAgICBkZXNjOiBhcGl2aWV3LnNtYWxsKChpbmZvSHRtbCA/IGluZm9IdG1sIDogXFxcIlxcXCIpICsgKGZlZWRUeXBlTmFtZSA/IGZlZWRUeXBlTmFtZSA6IFxcXCJcXFwiKSArIChydXNlcm5hbWUgPyBydXNlcm5hbWUgOiBcXFwiXFxcIikpLFxcbiAgICAgICAgICAgIGltZzogYXBpdmlldy5fZ2VuZXJhdGVJbWFnZSh1c2VyTWFwLnVzZXJBdmF0YXIpLFxcbiAgICAgICAgICAgIHVybDogJChhcGl2aWV3LmVtcHR5ICsgXFxcIiNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNmeXBhZ2VcXFwiKS5ydWxlKChfZGVtb2xNYXApID0+IHtcXG4gICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0VXNlclJ1bGVQYXJzZShfZGVtb2xNYXApO1xcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQoYXBpdmlldy5sYXlvdXQpO1xcbiAgICAgICAgICAgIH0sIHVzZXJNYXApLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIixcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IGDnlKjmiLcvJHt1c2VyTWFwLnVzZXJuYW1lfWAsXFxuICAgICAgICAgICAgICAgIGxvbmdDbGljazogYXBpdmlldy5fZXh0cmFfdG9vbChfZGVtb2xNYXAsIFxcXCJjYXJkXFxcIiwgXFxcImlkXFxcIilcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibGluZVxcXCJcXG4gICAgICAgIH0pO1xcbiAgICAgICAgaWYgKF9kZW1vbE1hcC5zdGFyKSB7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBg6K+E5YiG77yaJHthcGl2aWV3Lm9yYW5nZShhcGl2aWV3Ll9nZW5lcmF0ZVN0YXJzKF9kZW1vbE1hcC5zdGFyKSkgKyBfZGVtb2xNYXAuc3RhciAqIDJ95YiGYCxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJyaWNoX3RleHRcXFwiXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9O1xcbiAgICAgICAgaWYgKF9kZW1vbE1hcC5tZXNzYWdlX3RpdGxlKSB7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBhcGl2aWV3LmJpZyhfZGVtb2xNYXAubWVzc2FnZV90aXRsZSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwicmljaF90ZXh0XFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfTtcXG4gICAgICAgIGlmIChfZGVtb2xNYXAuY29tbWVudF9nb29kKSB7XFxuICAgICAgICAgICAgX2RlbW9sTWFwLm1lc3NhZ2UgPSBhcGl2aWV3Ll9nZW5lcmF0ZVN0cmluZyhfZGVtb2xNYXAuY29tbWVudF9nb29kLCAzMCk7XFxuICAgICAgICB9O1xcbiAgICAgICAgaWYgKF9kZW1vbE1hcC5tZXNzYWdlKSB7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBhcGl2aWV3Ll9nZXRSZWdFeHAoX2RlbW9sTWFwKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJyaWNoX3RleHRcXFwiXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9O1xcbiAgICAgICAgX2RlbW9sUGljTWFwID0gX2RlbW9sTWFwLnBpY0FycjtcXG4gICAgICAgIGlmIChfZGVtb2xQaWNNYXAgJiYgJC50eXBlKF9kZW1vbFBpY01hcCkgPT0gXFxcImFycmF5XFxcIikge1xcbiAgICAgICAgICAgIF9kZW1vbFBpY01hcC5mb3JFYWNoKChfLCBpKSA9PiB7XFxuICAgICAgICAgICAgICAgIGlmIChfdHlwZV8gPT0gXFxcImZlZWRfcmVwbHlcXFwiID8gdHJ1ZSA6IChpIDwgX251bWJlckNhcmQpKSBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIGltZzogYXBpdmlldy5fZ2VuZXJhdGVJbWFnZShfKSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogXyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwicGljXzNfc3F1YXJlXFxcIlxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH07XFxuICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICAgICAgfSk7XFxuICAgICAgICBpZiAoX2RlbW9sTWFwLnRhcmdldF9pbmZvKSB7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBfZGVtb2xNYXAudGFyZ2V0X2luZm8udGl0bGUsXFxuICAgICAgICAgICAgICAgIGltZzogYXBpdmlldy5fZ2VuZXJhdGVJbWFnZShfZGVtb2xNYXAudGFyZ2V0X2luZm8ubG9nbyksXFxuICAgICAgICAgICAgICAgIHVybDogJChhcGl2aWV3LmVtcHR5ICsgXFxcIiNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMjZ2FtZVRoZW1lI2Z5cGFnZVxcXCIpLnJ1bGUoKF9kZW1vbE1hcCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dExpbmtSdWxlUGFyc2UoX2RlbW9sTWFwLCBcXFwidGl0bGVcXFwiLCBcXFwidXJsXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoYXBpdmlldy5sYXlvdXQpO1xcbiAgICAgICAgICAgICAgICB9LCBfZGVtb2xNYXAudGFyZ2V0X2luZm8pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCJcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH07XFxuICAgICAgICBpZiAoX2RlbW9sTWFwLnR0aXRsZSkge1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogX2RlbW9sTWFwLnR0aXRsZSxcXG4gICAgICAgICAgICAgICAgaW1nOiBhcGl2aWV3Ll9nZW5lcmF0ZUltYWdlKF9kZW1vbE1hcC50cGljKSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGFwaXZpZXcuZW1wdHkgKyBcXFwiI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IyNnYW1lVGhlbWUjZnlwYWdlXFxcIikucnVsZSgoX2RlbW9sTWFwKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0TGlua1J1bGVQYXJzZShfZGVtb2xNYXAsIFxcXCJ0dGl0bGVcXFwiLCBcXFwidHVybFxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGFwaXZpZXcubGF5b3V0KTtcXG4gICAgICAgICAgICAgICAgfSwgX2RlbW9sTWFwKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9O1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgICAgIH0pO1xcbiAgICAgICAgaWYgKF9kZW1vbE1hcC5zaGFyZV9udW0gIT0gbnVsbCkge1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogU3RyaW5nKF9kZW1vbE1hcC5saWtlbnVtKSxcXG4gICAgICAgICAgICAgICAgaW1nOiAkLnJlcXVpcmUoXFxcImljb24udG9vbFxcXCIpLmdvb2QsXFxuICAgICAgICAgICAgICAgIHVybDogYXBpdmlldy5lbXB0eSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJpY29uX3NtYWxsXzNcXFwiXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogU3RyaW5nKF9kZW1vbE1hcC5yZXBseW51bSksXFxuICAgICAgICAgICAgICAgIGltZzogJC5yZXF1aXJlKFxcXCJpY29uLnRvb2xcXFwiKS5kaXNjdXNzLFxcbiAgICAgICAgICAgICAgICB1cmw6IF9kZW1vbE1hcC5yZXBseW51bSA+IDAgPyAkKGFwaXZpZXcuZW1wdHkgKyBcXFwiI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IyNnYW1lVGhlbWUjZnlwYWdlXFxcIikucnVsZSgoX2lkXykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChNWV9QQUdFID09IDEpIGFwaXZpZXcuX2dlbmVyYXRlVG9wKCk7XFxuICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRSZW1hcmtQYXJzZShfaWRfKTtcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChhcGl2aWV3LmxheW91dCk7XFxuICAgICAgICAgICAgICAgIH0sIF9kZW1vbE1hcC5pZCkgOiBhcGl2aWV3LmVtcHR5LFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImljb25fc21hbGxfM1xcXCJcXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBTdHJpbmcoX2RlbW9sTWFwLnNoYXJlX251bSksXFxuICAgICAgICAgICAgICAgIGltZzogJC5yZXF1aXJlKFxcXCJpY29uLnRvb2xcXFwiKS5zaGFyZSxcXG4gICAgICAgICAgICAgICAgdXJsOiBhcGl2aWV3LmVtcHR5LFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImljb25fc21hbGxfM1xcXCJcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH07XFxuICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImxpbmVfYmxhbmtcXFwiXFxuICAgICAgICB9KTtcXG4gICAgfSxcXG4gICAgX2xheW91dFJlbWFya1BhcnNlOiAoX2lkXykgPT4ge1xcbiAgICAgICAgbGV0IF9kZW1vbHBhZ2UgPSBNWV9QQUdFO1xcbiAgICAgICAgYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICBjbGVhck15VmFyKFxcXCI6cmVwbHlMaXN0VHlwZVxcXCIpO1xcbiAgICAgICAgICAgIGNsZWFyTXlWYXIoXFxcIjpyZXBseU5leHRcXFwiKTtcXG4gICAgICAgIH0pKTtcXG4gICAgICAgIGxldCBfZGVtb2x0eXBlID0gZ2V0TXlWYXIoXFxcIjpyZXBseUxpc3RUeXBlXFxcIiwgXFxcIum7mOiupFxcXCIpO1xcbiAgICAgICAgbGV0IGZyb21GZWVkQXV0aG9yID0gbnVsbDtcXG4gICAgICAgIHN3aXRjaCAoX2RlbW9sdHlwZSkge1xcbiAgICAgICAgICAgIGNhc2UgXFxcIum7mOiupFxcXCI6XFxuICAgICAgICAgICAgICAgIF90eXBlXyA9IFxcXCJsYXN0dXBkYXRlX2Rlc2NcXFwiO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBjYXNlIFxcXCLmnIDmlrBcXFwiOlxcbiAgICAgICAgICAgICAgICBfdHlwZV8gPSBcXFwiZGF0ZWxpbmVfZGVzY1xcXCI7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGNhc2UgXFxcIueDremXqFxcXCI6XFxuICAgICAgICAgICAgICAgIF90eXBlXyA9IFxcXCJwb3B1bGFyXFxcIjtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgY2FzZSBcXFwi5qW85Li7XFxcIjpcXG4gICAgICAgICAgICAgICAgX3R5cGVfID0gXFxcIlxcXCI7XFxuICAgICAgICAgICAgICAgIGZyb21GZWVkQXV0aG9yID0gMTtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICB9O1xcbiAgICAgICAgbGV0IF9kZW1vbFJlcGx5TWFwID0gYXBpdmlldy5fZGVtb2xfQWpheChidWlsZFVybChcXFwiL3Y2L2ZlZWQvcmVwbHlMaXN0XFxcIiwge1xcbiAgICAgICAgICAgIGlkOiBfaWRfLFxcbiAgICAgICAgICAgIGxpc3RUeXBlOiBfdHlwZV8sXFxuICAgICAgICAgICAgcGFnZTogX2RlbW9scGFnZSxcXG4gICAgICAgICAgICBkaXNjdXNzTW9kZTogMSxcXG4gICAgICAgICAgICBmZWVkVHlwZTogXFxcImZlZWRcXFwiLFxcbiAgICAgICAgICAgIGJsb2NrU3RhdHVzOiAwLFxcbiAgICAgICAgICAgIGZyb21GZWVkQXV0aG9yOiBmcm9tRmVlZEF1dGhvciA/IGZyb21GZWVkQXV0aG9yIDogMFxcbiAgICAgICAgfSksIHRydWUpO1xcbiAgICAgICAgbGV0IF9uZXh0ID0gX2RlbW9sUmVwbHlNYXAgJiYgJC50eXBlKF9kZW1vbFJlcGx5TWFwKSA9PSBcXFwiYXJyYXlcXFwiICYmIF9kZW1vbFJlcGx5TWFwLmxlbmd0aCA+IDA7XFxuICAgICAgICBpZiAoX25leHQpIHB1dE15VmFyKFxcXCI6cmVwbHlOZXh0XFxcIiwgXFxcInRydWVcXFwiKTtcXG4gICAgICAgIF9uZXh0ID0gZ2V0TXlWYXIoXFxcIjpyZXBseU5leHRcXFwiLCBcXFwiXFxcIik7XFxuICAgICAgICBpZiAoX2RlbW9scGFnZSA9PSAxICYmIF9uZXh0ID09IFxcXCJ0cnVlXFxcIikge1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogYXBpdmlldy5zdHJvbmcoYXBpdmlldy5iaWcoXFxcIuivhOiuuuWMulxcXCIpKSxcXG4gICAgICAgICAgICAgICAgZGVzYzogYDx1PiR7X2RlbW9sdHlwZX08L3U+YCxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFtcXFwi6buY6K6kXFxcIiwgXFxcIuacgOaWsFxcXCIsIFxcXCLng63pl6hcXFwiLCBcXFwi5qW85Li7XFxcIl0sIDIsIFxcXCLmjpLluo86XFxcIiArIF9kZW1vbHR5cGUpLnNlbGVjdCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiOnJlcGx5TGlzdFR5cGVcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5bey5YiH5o2i5Li6IFxcXCIgKyBpbnB1dDtcXG4gICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgIGltZzogJC5yZXF1aXJlKFxcXCJpY29uLnRvb2xcXFwiKS5yZXBseXNvcnQsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfTtcXG4gICAgICAgIGlmIChfbmV4dCA9PSBcXFwidHJ1ZVxcXCIpIHtcXG4gICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXREZXRlcm1pbmVQYXJzZShfZGVtb2xSZXBseU1hcCwgX2lkXyk7XFxuICAgICAgICB9O1xcbiAgICB9LFxcbiAgICBfbGF5b3V0TGlua1J1bGVQYXJzZTogKF9kZW1vbE1hcCwgdGl0bGUsIHVybCkgPT4ge1xcbiAgICAgICAgbGV0IF9kZW1vbHBhZ2UgPSBNWV9QQUdFO1xcbiAgICAgICAgbGV0IF9kZW1vbFVybCA9IF9kZW1vbE1hcFt1cmwgPyB1cmwgOiBcXFwidXJsXFxcIl07XFxuICAgICAgICBfZGVtb2xVcmwgPSBkZWNvZGVVUklDb21wb25lbnQoX2RlbW9sVXJsKTtcXG4gICAgICAgIGxldCBfZGVtb2xOYW1lID0gX2RlbW9sTWFwW3RpdGxlID8gdGl0bGUgOiBcXFwidGl0bGVcXFwiXTtcXG4gICAgICAgIGlmICghX2RlbW9sVXJsLnN0YXJ0c1dpdGgoXFxcIi9wYWdlXFxcIikgJiYgX2RlbW9sVXJsLmluY2x1ZGVzKFxcXCIvdC9cXFwiKSkge1xcbiAgICAgICAgICAgIF9kZW1vbFVybCA9IF9kZW1vbFVybC5zcGxpdChcXFwiL3QvXFxcIilbMV07XFxuICAgICAgICAgICAgaWYgKF9kZW1vbE1hcC5lbnRpdHlUeXBlID09IFxcXCJwaWNDYXRlZ29yeVxcXCIpIHtcXG4gICAgICAgICAgICAgICAgX2RlbW9sVXJsID0gX2RlbW9sVXJsLnNwbGl0KFxcXCI/XFxcIilbMF07XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dFBpY3R1cmVSdWxlUGFyc2UoX2RlbW9sVXJsKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRUYWJSdWxlUGFyc2UoX2RlbW9sVXJsKTtcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgfSBlbHNlIGlmICghX2RlbW9sVXJsLnN0YXJ0c1dpdGgoXFxcIi9wYWdlXFxcIikgJiYgX2RlbW9sVXJsLmluY2x1ZGVzKFxcXCIvcHJvZHVjdC9cXFwiKSkge1xcbiAgICAgICAgICAgIF9kZW1vbFVybHMgPSBfZGVtb2xVcmwuc3BsaXQoXFxcIi9wcm9kdWN0L1xcXCIpWzFdO1xcbiAgICAgICAgICAgIGlmIChfZGVtb2xNYXAuZW50aXR5VHlwZSA9PSBcXFwicGljQ2F0ZWdvcnlcXFwiKSB7XFxuICAgICAgICAgICAgICAgIF9kZW1vbFVybCA9IF9kZW1vbFVybHMuc3BsaXQoXFxcIj9cXFwiKVswXTtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0UGljdHVyZVJ1bGVQYXJzZShfZGVtb2xVcmwpO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoX2RlbW9sVXJscy5zdGFydHNXaXRoKFxcXCJjYXRlZ29yeUxpc3RcXFwiKSkge1xcbiAgICAgICAgICAgICAgICBpZiAoX2RlbW9scGFnZSA9PSAxKSB7XFxuICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9nZW5lcmF0ZVRvcCgpO1xcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICBfZGVtb2xVcmwgPSBfZGVtb2xVcmwuc3BsaXQoXFxcIj9cXFwiKVswXTtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0TGlua1RhYlBhcnNlKGFwaXZpZXcuX2RlbW9sX0FqYXgoYC92NiR7X2RlbW9sVXJsfWApKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRUYWJSdWxlUGFyc2UoX2RlbW9sVXJscyk7XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH0gZWxzZSBpZiAoIV9kZW1vbFVybC5zdGFydHNXaXRoKFxcXCIvcGFnZVxcXCIpICYmIF9kZW1vbFVybC5pbmNsdWRlcyhcXFwiL2R5aC9cXFwiKSkge1xcbiAgICAgICAgICAgIF9kZW1vbFVybHMgPSBfZGVtb2xVcmwuc3BsaXQoXFxcIi9keWgvXFxcIilbMV07XFxuICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0RHloUnVsZVBhcnNlKF9kZW1vbFVybHMpO1xcbiAgICAgICAgfSBlbHNlIGlmIChfZGVtb2xVcmwuZW5kc1dpdGgoXFxcImNvdXBvblNlYXJjaFxcXCIpKSB7XFxuICAgICAgICAgICAgYXBpdmlldy5fc2VhcmNoR29vZHNQYXJzZSgpO1xcbiAgICAgICAgfSBlbHNlIGlmIChfZGVtb2xVcmwuc3RhcnRzV2l0aChcXFwiL2Fway9cXFwiKSB8fCBfZGVtb2xVcmwuc3RhcnRzV2l0aChcXFwiL2dhbWUvXFxcIikpIHtcXG4gICAgICAgICAgICBpZiAoX2RlbW9sVXJsLnN0YXJ0c1dpdGgoXFxcIi9hcGsvXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgX2RlbW9sVXJsID0gX2RlbW9sVXJsLnNwbGl0KFxcXCIvYXBrL1xcXCIpWzFdO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIF9kZW1vbFVybCA9IF9kZW1vbFVybC5zcGxpdChcXFwiL2dhbWUvXFxcIilbMV07XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRBcGtSdWxlUGFyc2UoX2RlbW9sVXJsKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgaWYgKF9kZW1vbHBhZ2UgPT0gMSkgYXBpdmlldy5fZ2VuZXJhdGVUb3AoKTtcXG4gICAgICAgICAgICBpZiAoX2RlbW9sVXJsLmluY2x1ZGVzKFxcXCIvcGFnZVxcXCIpKSB7XFxuICAgICAgICAgICAgICAgIF9kZW1vbFVybCA9IF9kZW1vbFVybC5zcGxpdChcXFwiL3BhZ2U/dXJsPVxcXCIpWzFdO1xcbiAgICAgICAgICAgICAgICBpZiAoX2RlbW9sVXJsLmluY2x1ZGVzKFxcXCJzZWxlY3RlZFRhYlxcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICBfZGVtb2xVcmwgPSBfZGVtb2xVcmwuc3BsaXQoXFxcIiZcXFwiKVswXTtcXG4gICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBfZGVtb2xVcmwgPSBfZGVtb2xVcmwuc3BsaXQoXFxcIiNcXFwiKVsxXTtcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dERldGVybWluZVBhcnNlKGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni9wYWdlL2RhdGFMaXN0XFxcIiwge1xcbiAgICAgICAgICAgICAgICB1cmw6IF9kZW1vbFVybCxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IF9kZW1vbE5hbWUsXFxuICAgICAgICAgICAgICAgIHN1YlRpdGxlOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgcGFnZTogX2RlbW9scGFnZVxcbiAgICAgICAgICAgIH0pKTtcXG4gICAgICAgIH07XFxuICAgIH0sXFxuICAgIF9sYXlvdXRMaW5rVGFiUGFyc2U6IChfZGVtb2xNYXAsIF9kZW1vbCkgPT4ge1xcbiAgICAgICAgbGV0IF9kZW1vbCA9IF9kZW1vbCA/IF9kZW1vbCA6IFxcXCJcXFwiO1xcbiAgICAgICAgYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKChfZGVtb2wpID0+IHtcXG4gICAgICAgICAgICBjbGVhck15VmFyKFxcXCI6bGlua05leHRcXFwiICsgX2RlbW9sKTtcXG4gICAgICAgICAgICBjbGVhck15VmFyKFxcXCI6bGlua1RhZ1xcXCIgKyBfZGVtb2wpO1xcbiAgICAgICAgfSwgX2RlbW9sKSk7XFxuICAgICAgICBsZXQgX2RlbW9scGFnZSA9IE1ZX1BBR0U7XFxuICAgICAgICBsZXQgdGluZGV4ID0gZ2V0TXlWYXIoXFxcIjpsaW5rVGFnXFxcIiArIF9kZW1vbCwgXFxcIjBcXFwiKTtcXG4gICAgICAgIGxldCBfZGVtb2xNYXAgPSBfZGVtb2xNYXAuZmlsdGVyKF8gPT4gXy50aXRsZSAhPSBcXFwi5YWz5rOoXFxcIiAmJiBfLnRpdGxlICE9IFxcXCLlk4HniYxcXFwiKTtcXG4gICAgICAgIGlmIChfZGVtb2xwYWdlID09IDEpIHtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dCA9IGFwaXZpZXcubGF5b3V0LmNvbmNhdChfZGVtb2xNYXAubWFwKChfLCBpKSA9PiAoe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaSA9PSB0aW5kZXggPyBhcGl2aWV3LnJpY2goYXBpdmlldy5zdHJvbmcoYXBpdmlldy5jb2xvcihfLnRpdGxlKSkpIDogXy50aXRsZSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChpLCBlbXB0eSwgX2RlbW9sKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiOmxpbmtUYWdcXFwiICsgX2RlbW9sLCBpKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHk7XFxuICAgICAgICAgICAgICAgIH0sIGksIGFwaXZpZXcuZW1wdHksIF9kZW1vbCksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCIsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGkgPT0gdGluZGV4ID8gXFxcIiMyMEZBNzI5OFxcXCIgOiBcXFwiXFxcIlxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSkpKTtcXG4gICAgICAgIH07XFxuICAgICAgICBfZGVtb2xNYXAgPSBfZGVtb2xNYXBbdGluZGV4XTtcXG4gICAgICAgIGxldCBfZGVtb2xVcmwgPSBfZGVtb2xNYXAudXJsO1xcbiAgICAgICAgbGV0IF9kZW1vbE5hbWUgPSBfZGVtb2xNYXAudGl0bGU7XFxuICAgICAgICBsZXQgX2xpbmtOZXh0ID0gKCkgPT4gZ2V0TXlWYXIoXFxcIjpuZXh0XFxcIiArIF9kZW1vbFVybCwgXFxcIlxcXCIpO1xcbiAgICAgICAgaWYgKCFfZGVtb2xVcmwuc3RhcnRzV2l0aChcXFwiaHR0cFxcXCIpICYmICFfZGVtb2xVcmwuc3RhcnRzV2l0aChcXFwiaHR0cHNcXFwiKSkge1xcbiAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dERldGVybWluZVBhcnNlKGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni9wYWdlL2RhdGFMaXN0XFxcIiwge1xcbiAgICAgICAgICAgICAgICB1cmw6IF9kZW1vbFVybCxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IF9kZW1vbE5hbWUsXFxuICAgICAgICAgICAgICAgIHN1YlRpdGxlOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgcGFnZTogX2xpbmtOZXh0KCkgPyAxIDogX2RlbW9scGFnZVxcbiAgICAgICAgICAgIH0pLCBfZGVtb2xVcmwpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgZGVzYzogXFxcImF1dG9cXFwiLFxcbiAgICAgICAgICAgICAgICB1cmw6IF9kZW1vbFVybCxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXCIsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBjYW5CYWNrOiB0cnVlLFxcbiAgICAgICAgICAgICAgICAgICAgwqDCoMKgwqB1cmxJbnRlcmNlcHRvcjogJC50b1N0cmluZygoTVlfUlVMRSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5pbmNsdWRlcyhcXFwiL3QvXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFycmF5ID0ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpbnB1dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwiXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC50b1N0cmluZygoYXJyYXksIE1ZX1JVTEUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZiYS5vcGVuKEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlOiBNWV9SVUxFLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYGhpa2VyOi8vcGFnZS9DYXJvdXNlbC52aWV3P3J1bGU96YW35a6JJnBhZ2U9ZnlwYWdlJmFycmF5PSR7ZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGFycmF5KSl9Jmhpa2VyPSNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMjZ2FtZVRoZW1lI2Z5cGFnZWAsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZFJ1bGU6IE1ZX1JVTEUuZGV0YWlsX2ZpbmRfcnVsZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdXaW5kb3c6IHRydWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd0lkOiBNWV9SVUxFLnRpdGxlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBhcnJheSwgTVlfUlVMRSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9LCBNWV9SVUxFKSxcXG4gICAgICAgICAgICAgICAgICAgIHVhOiBcXFwiTW96aWxsYS81LjAgKExpbnV4OyBBbmRyb2lkIDEwOyBWMjMwNEEgQnVpbGQvVVAxQS4yMzEwMDUuMDA3OyB3dikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzc0LjAuMzcyOS4xODYgTW9iaWxlIFNhZmFyaS81MzcuMzYgKCNCdWlsZDsgdml2bzsgVjIzMDRBOyBVUDFBLjIzMTAwNS4wMDcgcmVsZWFzZS1rZXlzOyAxMCkgK0Nvb2xNYXJrZXQvMTMuMy42LTIzMTAyMzItdW5pdmVyc2FsXFxcIlxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9O1xcbiAgICB9LFxcbiAgICBfbGF5b3V0UnVsZVBhcnNlOiAoX2lkXywgX2RlbW9sXykgPT4ge1xcbiAgICAgICAgbGV0IF9kZW1vbHBhZ2UgPSBNWV9QQUdFO1xcbiAgICAgICAgbGV0IF9kZW1vbE1hcCA9IHN0b3JhZ2UwLmdldE15VmFyKGAke19pZF99OmZlZWREZXRhaWxgLCBbXSk7XFxuICAgICAgICBpZiAoX2RlbW9sTWFwLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICAgICAgX2RlbW9sTWFwID0gYXBpdmlldy5fZGVtb2xfQWpheChcXFwiL3Y2L2ZlZWQvZGV0YWlsXFxcIiwgT2JqZWN0LmFzc2lnbih7XFxuICAgICAgICAgICAgICAgIGlkOiBfaWRfXFxuICAgICAgICAgICAgfSwgX2RlbW9sXyA/IHtcXG4gICAgICAgICAgICAgICAgZnJvbUFwaTogX2RlbW9sX1xcbiAgICAgICAgICAgIH0gOiB7fSksIHRydWUpO1xcbiAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKGAke19pZF99OmZlZWREZXRhaWxgLCBfZGVtb2xNYXApO1xcbiAgICAgICAgfTtcXG4gICAgICAgIGxldCBfZGVtb2xQaWNzID0gX2RlbW9sTWFwLnBpY0FycjtcXG4gICAgICAgIGlmIChfZGVtb2xwYWdlID09IDEpIHtcXG4gICAgICAgICAgICBhcGl2aWV3Ll9nZW5lcmF0ZVRvcCgpO1xcbiAgICAgICAgICAgIGlmIChfZGVtb2xQaWNzICYmICQudHlwZShfZGVtb2xQaWNzKSA9PSBcXFwiYXJyYXlcXFwiKSB7XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0ID0gYXBpdmlldy5sYXlvdXQuY29uY2F0KF9kZW1vbFBpY3MubWFwKF8gPT4gKHtcXG4gICAgICAgICAgICAgICAgICAgIGltZzogYXBpdmlldy5fZ2VuZXJhdGVJbWFnZShfKSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogXyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwicGljXzNfc3F1YXJlXFxcIlxcbiAgICAgICAgICAgICAgICB9KSkpO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgbGV0IF9kZW1vbE1zZyA9IGFwaXZpZXcuX2dldFJlZ0V4cChfZGVtb2xNYXAsIHRydWUpO1xcbiAgICAgICAgICAgIGlmIChfZGVtb2xNc2cpIHtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogX2RlbW9sTXNnLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJyaWNoX3RleHRcXFwiXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibGluZV9ibGFua1xcXCJcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH07XFxuICAgICAgICBhcGl2aWV3Ll9sYXlvdXRSZW1hcmtQYXJzZShfaWRfKTtcXG4gICAgICAgIGlmIChnZXRNeVZhcihcXFwiOnJlcGx5TmV4dFxcXCIsIFxcXCJcXFwiKSA9PSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgIGFwaXZpZXcuX2dlbmVyYXRlRW5kKCk7XFxuICAgICAgICB9O1xcbiAgICB9LFxcbiAgICBfbGF5b3V0QXBwUnVsZVBhcnNlOiAoX2RlbW9sTWFwKSA9PiB7XFxuICAgICAgICBsZXQgX2RlbW9scGFnZSA9IE1ZX1BBR0U7XFxuICAgICAgICBsZXQgX2RlbW9sUGljcyA9IF9kZW1vbE1hcC5zY3JlZW5MaXN0O1xcbiAgICAgICAgaWYgKF9kZW1vbHBhZ2UgPT0gMSkge1xcbiAgICAgICAgICAgIGlmIChfZGVtb2xQaWNzICYmICQudHlwZShfZGVtb2xQaWNzKSA9PSBcXFwiYXJyYXlcXFwiKSB7XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0ID0gYXBpdmlldy5sYXlvdXQuY29uY2F0KF9kZW1vbFBpY3MubWFwKF8gPT4gKHtcXG4gICAgICAgICAgICAgICAgICAgIGltZzogYXBpdmlldy5fZ2VuZXJhdGVJbWFnZShfKSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogXyArIFxcXCIjLnBuZ1xcXCIsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInBpY18zX3NxdWFyZVxcXCJcXG4gICAgICAgICAgICAgICAgfSkpKTtcXG4gICAgICAgICAgICAgICAgX2RlbW9sTWFwLm1lc3NhZ2UgPSAoX2RlbW9sTWFwLmNoYW5nZWxvZyA/IGAke2FwaXZpZXcuc3Ryb25nKGFwaXZpZXcuYmlnKGFwaXZpZXcuYmlnKFxcXCLmlrDniYjnibnmgKfvvJpcXFwiKSkpfTxicj4ke19kZW1vbE1hcC5jaGFuZ2Vsb2d9YCA6IFxcXCJcXFwiKSArICgoX2RlbW9sTWFwLmNoYW5nZWxvZyAmJiBfZGVtb2xNYXAuaW50cm9kdWNlKSA/IFxcXCI8YnI+PGJyPlxcXCIgOiBcXFwiXFxcIikgKyAoX2RlbW9sTWFwLmludHJvZHVjZSA/IGAke2FwaXZpZXcuc3Ryb25nKGFwaXZpZXcuYmlnKGFwaXZpZXcuYmlnKFxcXCLlupTnlKjku4vnu43vvJpcXFwiKSkpfTxicj4ke19kZW1vbE1hcC5pbnRyb2R1Y2V9YCA6IFxcXCJcXFwiKTtcXG4gICAgICAgICAgICAgICAgbGV0IF9kZW1vbE1zZyA9IGFwaXZpZXcuX2dldFJlZ0V4cChfZGVtb2xNYXAsIHRydWUpO1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBfZGVtb2xNc2csXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInJpY2hfdGV4dFxcXCJcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJsaW5lX2JsYW5rXFxcIlxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIGFwaXZpZXcuX2dlbmVyYXRlRW5kKCk7XFxuICAgICAgICB9O1xcbiAgICB9LFxcbiAgICBfbGF5b3V0UGljdHVyZVJ1bGVQYXJzZTogKF9kZW1vbCkgPT4ge1xcbiAgICAgICAgYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICBjbGVhck15VmFyKFxcXCI6cGljdHVyZVRhZ1xcXCIpO1xcbiAgICAgICAgfSkpO1xcbiAgICAgICAgbGV0IF9kZW1vbHBhZ2UgPSBNWV9QQUdFO1xcbiAgICAgICAgbGV0IF9kZW1vbE1hcCA9IFtcXFwi57K+6YCJXFxcIiwgXFxcIueDremXqFxcXCIsIFxcXCLmnIDmlrBcXFwiXTtcXG4gICAgICAgIGxldCB0aW5kZXggPSBnZXRNeVZhcihcXFwiOnBpY3R1cmVUYWdcXFwiLCBcXFwiMFxcXCIpO1xcbiAgICAgICAgaWYgKF9kZW1vbHBhZ2UgPT0gMSkge1xcbiAgICAgICAgICAgIGFwaXZpZXcuX2dlbmVyYXRlVG9wKCk7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQgPSBhcGl2aWV3LmxheW91dC5jb25jYXQoX2RlbW9sTWFwLm1hcCgoaXRlbSwgaSkgPT4gKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGkgPT0gdGluZGV4ID8gYXBpdmlldy5yaWNoKGFwaXZpZXcuc3Ryb25nKGFwaXZpZXcuY29sb3IoaXRlbSkpKSA6IGl0ZW0sXFxuICAgICAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoaSwgZW1wdHkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCI6cGljdHVyZVRhZ1xcXCIsIGkpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eTtcXG4gICAgICAgICAgICAgICAgfSwgaSwgYXBpdmlldy5lbXB0eSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCIsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGkgPT0gdGluZGV4ID8gXFxcIiMyMEZBNzI5OFxcXCIgOiBcXFwiXFxcIlxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSkpKTtcXG4gICAgICAgIH07XFxuICAgICAgICBzd2l0Y2ggKF9kZW1vbE1hcFt0aW5kZXhdKSB7XFxuICAgICAgICAgICAgY2FzZSBfZGVtb2xNYXBbMF06XFxuICAgICAgICAgICAgICAgIF90eXBlXyA9IFxcXCJyZWNvbW1lbmRcXFwiO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBjYXNlIF9kZW1vbE1hcFsxXTpcXG4gICAgICAgICAgICAgICAgX3R5cGVfID0gXFxcImhvdFxcXCI7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGNhc2UgX2RlbW9sTWFwWzJdOlxcbiAgICAgICAgICAgICAgICBfdHlwZV8gPSBcXFwibmV3ZXN0XFxcIjtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICB9O1xcbiAgICAgICAgYXBpdmlldy5fbGF5b3V0RGV0ZXJtaW5lUGFyc2UoYXBpdmlldy5fZGVtb2xfQWpheChcXFwiL3Y2L3BpY3R1cmUvbGlzdFxcXCIsIHtcXG4gICAgICAgICAgICB0YWc6IF9kZW1vbCxcXG4gICAgICAgICAgICB0eXBlOiBfdHlwZV8sXFxuICAgICAgICAgICAgcGFnZTogX2RlbW9scGFnZVxcbiAgICAgICAgfSkpO1xcbiAgICB9LFxcbiAgICBfbGF5b3V0VXNlclJ1bGVQYXJzZTogKF9kZW1vbE1hcCkgPT4ge1xcbiAgICAgICAgYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICBjbGVhck15VmFyKFxcXCI6dXNlclRhZ1xcXCIpO1xcbiAgICAgICAgfSkpO1xcbiAgICAgICAgX2RlbW9sTWFwID0gX2RlbW9sTWFwLnVzZXJJbmZvIHx8IF9kZW1vbE1hcDtcXG4gICAgICAgIGxldCBfZGVtb2xNYXBzID0ge307XFxuICAgICAgICBfZGVtb2xNYXBzLnVzZXJuYW1lID0gX2RlbW9sTWFwLnVzZXJuYW1lO1xcbiAgICAgICAgX2RlbW9sTWFwcy51c2VyQXZhdGFyID0gX2RlbW9sTWFwLnVzZXJBdmF0YXI7XFxuICAgICAgICBfZGVtb2xNYXBzLnVpZCA9IF9kZW1vbE1hcC51aWQ7XFxuICAgICAgICBfZGVtb2xNYXBzLmVudGl0eVR5cGUgPSBfZGVtb2xNYXAuZW50aXR5VHlwZTtcXG4gICAgICAgIGxldCBfZGVtb2xwYWdlID0gTVlfUEFHRTtcXG4gICAgICAgIGxldCBkb3duID0gYXBpdmlldy5fR2V0X3NjcmlwdGlvbjtcXG4gICAgICAgIGxldCBhYnJlYWsgPSBmYWxzZTtcXG4gICAgICAgIGV2YWwoXFxcImZpbGVfbWFwID1cXFwiICsgcmVhZEZpbGUoZG93bikpO1xcbiAgICAgICAgZmlsZV9tYXBbTVlfUlVMRS50aXRsZV1bXFxcInVzZXJcXFwiXS5mb3JFYWNoKF8gPT4ge1xcbiAgICAgICAgICAgIGlmIChfW1xcXCJ1aWRcXFwiXSA9PSBfZGVtb2xNYXAudWlkKSB7XFxuICAgICAgICAgICAgICAgIGFicmVhayA9IHRydWU7XFxuICAgICAgICAgICAgICAgIHJldHVybjtcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgfSk7XFxuICAgICAgICBsZXQgX3RhYk1hcCA9IFtcXFwi5Yqo5oCBXFxcIiwgXFxcIueCueivhFxcXCIsIFxcXCLlm77mlodcXFwiLCBcXFwi6Zeu562UXFxcIiwgXFxcIumFt+WbvlxcXCIsIFxcXCLlpb3nialcXFwiLCBcXFwi5pS26JeP5Y2VXFxcIiwgXFxcIuW6lOeUqOmbhlxcXCJdO1xcbiAgICAgICAgbGV0IHRpbmRleCA9IGdldE15VmFyKFxcXCI6dXNlclRhZ1xcXCIsIFxcXCIwXFxcIik7XFxuICAgICAgICBpZiAoX2RlbW9scGFnZSA9PSAxKSB7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwicmljaF90ZXh0XFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImNhcmRfcGljXzNcXFwiLFxcbiAgICAgICAgICAgICAgICB1cmw6IGFwaXZpZXcuZW1wdHlcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgaW1nOiBhcGl2aWV3Ll9nZW5lcmF0ZUltYWdlKF9kZW1vbE1hcC51c2VyQXZhdGFyKSxcXG4gICAgICAgICAgICAgICAgdXJsOiBhcGl2aWV3LmVtcHR5LFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImNhcmRfcGljXzNcXFwiXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBhcGl2aWV3LnJpY2goYXBpdmlldy5iaWcoX2RlbW9sTWFwLnVzZXJuYW1lKSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgICAgIHVybDogYXBpdmlldy5lbXB0eSxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBhcGl2aWV3LnJpY2goYXBpdmlldy5zdHJvbmcoYXBpdmlldy5iaWcoYWJyZWFrID8gXFxcIuWPluWFs1xcXCIgOiBcXFwi5YWz5rOoXFxcIikpKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiBhYnJlYWsgPyAkKGFwaXZpZXcuZW1wdHkpLmxhenlSdWxlKChfZGVtb2xNYXBzKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRvd24gPSBhcGl2aWV3Ll9HZXRfc2NyaXB0aW9uO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFicmVhayA9IGZhbHNlO1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbChcXFwiYWpheF9tYXAgPVxcXCIgKyByZWFkRmlsZShkb3duKSk7XFxuICAgICAgICAgICAgICAgICAgICBhamF4X21hcFtNWV9SVUxFLnRpdGxlXVtcXFwidXNlclxcXCJdLmZvckVhY2goKEl0ZW0sIGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoSXRlbVtcXFwidWlkXFxcIl0gPT0gX2RlbW9sTWFwcy51aWQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGluZGV4ID0gaTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJyZWFrID0gdHJ1ZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChhYnJlYWspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBhamF4X21hcFtNWV9SVUxFLnRpdGxlXVtcXFwidXNlclxcXCJdLnNwbGljZSh0aW5kZXgsIDEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKGRvd24sIEpTT04uc3RyaW5naWZ5KGFqYXhfbWFwKSwgMCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3QoXFxcIuaTjeS9nOaIkOWKn1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3QoXFxcIuaTjeS9nOWksei0pVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhcGl2aWV3LmVtcHR5O1xcbiAgICAgICAgICAgICAgICB9LCBfZGVtb2xNYXBzKSA6ICQoYXBpdmlldy5lbXB0eSkubGF6eVJ1bGUoKF9kZW1vbE1hcHMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgZG93biA9IGFwaXZpZXcuX0dldF9zY3JpcHRpb247XFxuICAgICAgICAgICAgICAgICAgICBldmFsKFxcXCJhamF4X21hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgICAgICAgICAgICAgIGFqYXhfbWFwW01ZX1JVTEUudGl0bGVdW1xcXCJ1c2VyXFxcIl0ucHVzaChfZGVtb2xNYXBzKTtcXG4gICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKGRvd24sIEpTT04uc3RyaW5naWZ5KGFqYXhfbWFwKSwgMCk7XFxuICAgICAgICAgICAgICAgICAgICB0b2FzdChcXFwi5pON5L2c5oiQ5YqfXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBpdmlldy5lbXB0eTtcXG4gICAgICAgICAgICAgICAgfSwgX2RlbW9sTWFwcylcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dCA9IGFwaXZpZXcubGF5b3V0LmNvbmNhdChfdGFiTWFwLm1hcCgoXywgaSkgPT4gKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGkgPT0gdGluZGV4ID8gYXBpdmlldy5yaWNoKGFwaXZpZXcuYmlnKGFwaXZpZXcuc3Ryb25nKF8pKSkgOiBfLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGksIGVtcHR5KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiOnVzZXJUYWdcXFwiLCBpKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHk7XFxuICAgICAgICAgICAgICAgIH0sIGksIGFwaXZpZXcuZW1wdHkpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiXFxuICAgICAgICAgICAgfSkpKTtcXG4gICAgICAgIH07XFxuICAgICAgICBzd2l0Y2ggKF90YWJNYXBbdGluZGV4XSkge1xcbiAgICAgICAgICAgIGNhc2UgX3RhYk1hcFswXTpcXG4gICAgICAgICAgICAgICAgX2RlbW9sTWFwcyA9IGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni91c2VyL2ZlZWRMaXN0XFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgdWlkOiBfZGVtb2xNYXAudWlkLFxcbiAgICAgICAgICAgICAgICAgICAgcGFnZTogX2RlbW9scGFnZSxcXG4gICAgICAgICAgICAgICAgICAgIHNob3dBbm9ueW1vdXM6IDAsXFxuICAgICAgICAgICAgICAgICAgICBpc0luY2x1ZGVUb3A6IDEsXFxuICAgICAgICAgICAgICAgICAgICBzaG93RG9pbmc6IDFcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGNhc2UgX3RhYk1hcFsxXTpcXG4gICAgICAgICAgICAgICAgX2RlbW9sXyA9IGJ1aWxkVXJsKFxcXCIvZmVlZC9ub2RlUmF0aW5nTGlzdFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgIHVpZDogX2RlbW9sTWFwLnVpZCxcXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFR5cGU6IFxcXCJhbGxcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VSYXRpbmdUb0ZlZWQ6IDFcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIF9kZW1vbE1hcHMgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvcGFnZS9kYXRhTGlzdFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgIHVybDogX2RlbW9sXyxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIHN1YlRpdGxlOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IF9kZW1vbHBhZ2VcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGNhc2UgX3RhYk1hcFsyXTpcXG4gICAgICAgICAgICAgICAgX2RlbW9sTWFwcyA9IGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni91c2VyL2h0bWxGZWVkTGlzdFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgIHVpZDogX2RlbW9sTWFwLnVpZCxcXG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IF9kZW1vbHBhZ2VcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGNhc2UgX3RhYk1hcFszXTpcXG4gICAgICAgICAgICAgICAgX2RlbW9sTWFwcyA9IGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni91c2VyL3F1ZXN0aW9uQW5kQW5zd2VyTGlzdFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgIHVpZDogX2RlbW9sTWFwLnVpZCxcXG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IF9kZW1vbHBhZ2VcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGNhc2UgX3RhYk1hcFs0XTpcXG4gICAgICAgICAgICAgICAgX2RlbW9sXyA9IGJ1aWxkVXJsKFxcXCIvZmVlZC91c2VyQ29vbFBpY3R1cmVGZWVkTGlzdFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgIGZyYWdtZW50VGVtcGxhdGU6IFxcXCJmbGV4XFxcIixcXG4gICAgICAgICAgICAgICAgICAgIHVpZDogU3RyaW5nKF9kZW1vbE1hcC51aWQpXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBfZGVtb2xNYXBzID0gYXBpdmlldy5fZGVtb2xfQWpheChcXFwiL3Y2L3BhZ2UvZGF0YUxpc3RcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICB1cmw6IF9kZW1vbF8sXFxuICAgICAgICAgICAgICAgICAgICBwYWdlOiBfZGVtb2xwYWdlXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBjYXNlIF90YWJNYXBbNV06XFxuICAgICAgICAgICAgICAgIF9kZW1vbF8gPSBidWlsZFVybChcXFwiL2dvb2RzL2dvb2RzRmVlZExpc3RcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICBmcmFnbWVudFRlbXBsYXRlOiBcXFwiZmxleFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICB1aWQ6IF9kZW1vbE1hcC51aWRcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIF9kZW1vbE1hcHMgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvcGFnZS9kYXRhTGlzdFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgIHVybDogX2RlbW9sXyxcXG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IF9kZW1vbHBhZ2VcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGNhc2UgX3RhYk1hcFs2XTpcXG4gICAgICAgICAgICAgICAgX2RlbW9sTWFwcyA9IGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni9jb2xsZWN0aW9uL2xpc3RcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICB1aWQ6IF9kZW1vbE1hcC51aWQsXFxuICAgICAgICAgICAgICAgICAgICBzaG93RGVmYXVsdDogMCxcXG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IF9kZW1vbHBhZ2VcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGNhc2UgX3RhYk1hcFs3XTpcXG4gICAgICAgICAgICAgICAgX2RlbW9sTWFwcyA9IGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni91c2VyL2FsYnVtTGlzdFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgIHVpZDogX2RlbW9sTWFwLnVpZCxcXG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IF9kZW1vbHBhZ2VcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgfTtcXG4gICAgICAgIGlmIChfZGVtb2xNYXBzID09IG51bGwgfHwgJC50eXBlKF9kZW1vbE1hcHMpID09IFxcXCJvYmplY3RcXFwiKSB7XFxuICAgICAgICAgICAgX2RlbW9sTWFwcyA9IFtdO1xcbiAgICAgICAgfTtcXG4gICAgICAgIGFwaXZpZXcuX2xheW91dERldGVybWluZVBhcnNlKF9kZW1vbE1hcHMsIF9kZW1vbE1hcC51aWQpO1xcbiAgICB9LFxcbiAgICBfbGF5b3V0RHloUnVsZVBhcnNlOiAoX2RlbW9sKSA9PiB7XFxuICAgICAgICBsZXQgX2RlbW9scGFnZSA9IE1ZX1BBR0U7XFxuICAgICAgICBsZXQgZG93biA9IGFwaXZpZXcuX0dldF9zY3JpcHRpb247XFxuICAgICAgICBsZXQgYWJyZWFrID0gZmFsc2U7XFxuICAgICAgICBldmFsKFxcXCJmaWxlX21hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgIGxldCBfZGVtb2xNYXAgPSBzdG9yYWdlMC5nZXRNeVZhcihfZGVtb2wgKyBcXFwiOmR5aFRhZ1xcXCIsIFtdKTtcXG4gICAgICAgIGlmIChfZGVtb2xNYXAubGVuZ3RoID09IDApIHtcXG4gICAgICAgICAgICBfZGVtb2xNYXAgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvZHloL2RldGFpbFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgZHloSWQ6IF9kZW1vbFxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKF9kZW1vbCArIFxcXCI6ZHloVGFnXFxcIiwgX2RlbW9sTWFwKTtcXG4gICAgICAgIH07XFxuICAgICAgICBsZXQgX2RlbW9sTWFwcyA9IHt9O1xcbiAgICAgICAgX2RlbW9sTWFwcy50aXRsZSA9IF9kZW1vbE1hcC50aXRsZTtcXG4gICAgICAgIF9kZW1vbE1hcHMuaWQgPSBfZGVtb2w7XFxuICAgICAgICBfZGVtb2xNYXBzLmxvZ28gPSBfZGVtb2xNYXAubG9nbztcXG4gICAgICAgIF9kZW1vbE1hcHMuZW50aXR5VHlwZSA9IF9kZW1vbE1hcC5lbnRpdHlUeXBlO1xcbiAgICAgICAgX2RlbW9sTWFwcy51cmwgPSBgL2R5aC8ke19kZW1vbH1gO1xcbiAgICAgICAgZmlsZV9tYXBbTVlfUlVMRS50aXRsZV1bXFxcImR5aFxcXCJdLmZvckVhY2goXyA9PiB7XFxuICAgICAgICAgICAgaWYgKF8udGl0bGUgPT0gX2RlbW9sTWFwLnRpdGxlKSB7XFxuICAgICAgICAgICAgICAgIGFicmVhayA9IHRydWU7XFxuICAgICAgICAgICAgICAgIHJldHVybjtcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgfSk7XFxuICAgICAgICBpZiAoX2RlbW9scGFnZSA9PSAxKSB7XFxuICAgICAgICAgICAgYXBpdmlldy5fZ2VuZXJhdGVUb3AoKTtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJyaWNoX3RleHRcXFwiXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiY2FyZF9waWNfM1xcXCIsXFxuICAgICAgICAgICAgICAgIHVybDogYXBpdmlldy5lbXB0eVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICBpbWc6IGFwaXZpZXcuX2dlbmVyYXRlSW1hZ2UoX2RlbW9sTWFwcy5sb2dvKSxcXG4gICAgICAgICAgICAgICAgdXJsOiBhcGl2aWV3LmVtcHR5LFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImNhcmRfcGljXzNcXFwiXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBhcGl2aWV3LnJpY2goYXBpdmlldy5iaWcoX2RlbW9sTWFwcy50aXRsZSkpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgICAgICAgICB1cmw6IGFwaXZpZXcuZW1wdHksXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogYXBpdmlldy5yaWNoKGFwaXZpZXcuZ3JheShhYnJlYWsgPyBcXFwi5Y+W5YWzXFxcIiA6IFxcXCLlhbPms6hcXFwiKSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgICAgIHVybDogYWJyZWFrID8gJChhcGl2aWV3LmVtcHR5KS5sYXp5UnVsZSgoX2RlbW9sTWFwcykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBkb3duID0gYXBpdmlldy5fR2V0X3NjcmlwdGlvbjtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBhYnJlYWsgPSBmYWxzZTtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoXFxcImFqYXhfbWFwID1cXFwiICsgcmVhZEZpbGUoZG93bikpO1xcbiAgICAgICAgICAgICAgICAgICAgYWpheF9tYXBbTVlfUlVMRS50aXRsZV1bXFxcImR5aFxcXCJdLmZvckVhY2goKEl0ZW0sIGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoSXRlbS50aXRsZSA9PSBfZGVtb2xNYXBzLnRpdGxlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbmRleCA9IGk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFicmVhayA9IHRydWU7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoYWJyZWFrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYWpheF9tYXBbTVlfUlVMRS50aXRsZV1bXFxcImR5aFxcXCJdLnNwbGljZSh0aW5kZXgsIDEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKGRvd24sIEpTT04uc3RyaW5naWZ5KGFqYXhfbWFwKSwgMCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3QoXFxcIuaTjeS9nOaIkOWKn1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3QoXFxcIuaTjeS9nOWksei0pVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhcGl2aWV3LmVtcHR5O1xcbiAgICAgICAgICAgICAgICB9LCBfZGVtb2xNYXBzKSA6ICQoYXBpdmlldy5lbXB0eSkubGF6eVJ1bGUoKF9kZW1vbE1hcHMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgZG93biA9IGFwaXZpZXcuX0dldF9zY3JpcHRpb247XFxuICAgICAgICAgICAgICAgICAgICBldmFsKFxcXCJhamF4X21hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgICAgICAgICAgICAgIGFqYXhfbWFwW01ZX1JVTEUudGl0bGVdW1xcXCJkeWhcXFwiXS5wdXNoKF9kZW1vbE1hcHMpO1xcbiAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoZG93biwgSlNPTi5zdHJpbmdpZnkoYWpheF9tYXApLCAwKTtcXG4gICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLmk43kvZzmiJDlip9cXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhcGl2aWV3LmVtcHR5O1xcbiAgICAgICAgICAgICAgICB9LCBfZGVtb2xNYXBzKVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfTtcXG4gICAgICAgIF9kZW1vbE1hcCA9IGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni9keWhBcnRpY2xlL2xpc3RcXFwiLCB7XFxuICAgICAgICAgICAgZHloSWQ6IF9kZW1vbE1hcC5pZCxcXG4gICAgICAgICAgICB0eXBlOiBcXFwiYWxsXFxcIixcXG4gICAgICAgICAgICBwYWdlOiBfZGVtb2xwYWdlXFxuICAgICAgICB9KTtcXG4gICAgICAgIGFwaXZpZXcuX2xheW91dERldGVybWluZVBhcnNlKF9kZW1vbE1hcCwgX2RlbW9sKTtcXG4gICAgfSxcXG4gICAgX2xheW91dFRhYlJ1bGVQYXJzZTogKF9kZW1vbCkgPT4ge1xcbiAgICAgICAgYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKChfZGVtb2wpID0+IHtcXG4gICAgICAgICAgICBjbGVhck15VmFyKFxcXCI6bmV3VGFnXFxcIiArIF9kZW1vbCk7XFxuICAgICAgICB9LCBfZGVtb2wpKTtcXG4gICAgICAgIGxldCBfZGVtb2xwYWdlID0gTVlfUEFHRTtcXG4gICAgICAgIGxldCBkb3duID0gYXBpdmlldy5fR2V0X3NjcmlwdGlvbjtcXG4gICAgICAgIGxldCBhYnJlYWsgPSBmYWxzZTtcXG4gICAgICAgIGV2YWwoXFxcImZpbGVfbWFwID1cXFwiICsgcmVhZEZpbGUoZG93bikpO1xcbiAgICAgICAgbGV0IF9kZW1vbCA9ICQudHlwZShfZGVtb2wpID09IFxcXCJvYmplY3RcXFwiID8gZGVjb2RlVVJJQ29tcG9uZW50KF9kZW1vbC50aXRsZSkgOiBfZGVtb2w7XFxuICAgICAgICBsZXQgX2RlbW9sTWFwID0gc3RvcmFnZTAuZ2V0TXlWYXIoX2RlbW9sICsgXFxcIjpuZXdUYWdcXFwiLCBbXSk7XFxuICAgICAgICBpZiAoX2RlbW9sTWFwLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICAgICAgaWYgKCFpc05hTihfZGVtb2wpICYmICFpc05hTihwYXJzZUZsb2F0KF9kZW1vbCkpKSB7XFxuICAgICAgICAgICAgICAgIF9kZW1vbE1hcCA9IGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni9wcm9kdWN0L2RldGFpbFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBfZGVtb2xcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgX2RlbW9sTWFwID0gYXBpdmlldy5fZGVtb2xfQWpheChcXFwiL3Y2L3RvcGljL25ld1RhZ0RldGFpbFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgIHRhZzogX2RlbW9sXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoX2RlbW9sICsgXFxcIjpuZXdUYWdcXFwiLCBfZGVtb2xNYXApO1xcbiAgICAgICAgfTtcXG4gICAgICAgIGxldCBfZGVtb2xNYXBzID0ge307XFxuICAgICAgICBfZGVtb2xNYXBzLnRpdGxlID0gX2RlbW9sTWFwLnRpdGxlO1xcbiAgICAgICAgX2RlbW9sTWFwcy5pZCA9IF9kZW1vbDtcXG4gICAgICAgIF9kZW1vbE1hcHMubG9nbyA9IF9kZW1vbE1hcC5sb2dvO1xcbiAgICAgICAgX2RlbW9sTWFwcy5lbnRpdHlUeXBlID0gX2RlbW9sTWFwLmVudGl0eVR5cGU7XFxuICAgICAgICBzd2l0Y2ggKF9kZW1vbE1hcHMuZW50aXR5VHlwZSkge1xcbiAgICAgICAgICAgIGNhc2UgXFxcInRvcGljXFxcIjpcXG4gICAgICAgICAgICAgICAgX3RhZyA9IFxcXCJ0b3BpY1xcXCI7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGNhc2UgXFxcInByb2R1Y3RcXFwiOlxcbiAgICAgICAgICAgICAgICBfdGFnID0gXFxcInByb2R1Y3RcXFwiO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgIH07XFxuICAgICAgICBmaWxlX21hcFtNWV9SVUxFLnRpdGxlXVtfdGFnXS5mb3JFYWNoKF8gPT4ge1xcbiAgICAgICAgICAgIGlmIChfLnRpdGxlID09IF9kZW1vbE1hcC50aXRsZSkge1xcbiAgICAgICAgICAgICAgICBhYnJlYWsgPSB0cnVlO1xcbiAgICAgICAgICAgICAgICByZXR1cm47XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH0pO1xcbiAgICAgICAgbGV0IHRpbmRleCA9IGdldE15VmFyKFxcXCI6bmV3VGFnXFxcIiArIF9kZW1vbCwgXFxcIjBcXFwiKTtcXG4gICAgICAgIF9kZW1vbE1hcCA9IF9kZW1vbE1hcC50YWJMaXN0LmZpbHRlcihfID0+IF8udGl0bGUgIT0gXFxcIuWFqOmDqFxcXCIgJiYgXy50aXRsZSAhPSBcXFwi5p2l5oqV56WoXFxcIik7XFxuICAgICAgICBpZiAoX2RlbW9scGFnZSA9PSAxKSB7XFxuICAgICAgICAgICAgYXBpdmlldy5fZ2VuZXJhdGVUb3AoKTtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJyaWNoX3RleHRcXFwiXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiY2FyZF9waWNfM1xcXCIsXFxuICAgICAgICAgICAgICAgIHVybDogYXBpdmlldy5lbXB0eVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICBpbWc6IGFwaXZpZXcuX2dlbmVyYXRlSW1hZ2UoX2RlbW9sTWFwcy5sb2dvKSxcXG4gICAgICAgICAgICAgICAgdXJsOiBhcGl2aWV3LmVtcHR5LFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImNhcmRfcGljXzNcXFwiXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBhcGl2aWV3LnJpY2goYXBpdmlldy5iaWcoX2RlbW9sTWFwcy50aXRsZSkpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgICAgICAgICB1cmw6IGFwaXZpZXcuZW1wdHksXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogYXBpdmlldy5yaWNoKGFwaXZpZXcuZ3JheShhYnJlYWsgPyBcXFwi5Y+W5YWzXFxcIiA6IFxcXCLlhbPms6hcXFwiKSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCIsXFxuICAgICAgICAgICAgICAgIHVybDogYWJyZWFrID8gJChhcGl2aWV3LmVtcHR5KS5sYXp5UnVsZSgoX2RlbW9sTWFwcywgX3RhZykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBkb3duID0gYXBpdmlldy5fR2V0X3NjcmlwdGlvbjtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBhYnJlYWsgPSBmYWxzZTtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoXFxcImFqYXhfbWFwID1cXFwiICsgcmVhZEZpbGUoZG93bikpO1xcbiAgICAgICAgICAgICAgICAgICAgYWpheF9tYXBbTVlfUlVMRS50aXRsZV1bX3RhZ10uZm9yRWFjaCgoSXRlbSwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChJdGVtLnRpdGxlID09IF9kZW1vbE1hcHMudGl0bGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGluZGV4ID0gaTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJyZWFrID0gdHJ1ZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChhYnJlYWspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBhamF4X21hcFtNWV9SVUxFLnRpdGxlXVtfdGFnXS5zcGxpY2UodGluZGV4LCAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShhamF4X21hcCksIDApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLmk43kvZzmiJDlip9cXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLmk43kvZzlpLHotKVcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBpdmlldy5lbXB0eTtcXG4gICAgICAgICAgICAgICAgfSwgX2RlbW9sTWFwcywgX3RhZykgOiAkKGFwaXZpZXcuZW1wdHkpLmxhenlSdWxlKChfZGVtb2xNYXBzLCBfdGFnKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRvd24gPSBhcGl2aWV3Ll9HZXRfc2NyaXB0aW9uO1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbChcXFwiYWpheF9tYXAgPVxcXCIgKyByZWFkRmlsZShkb3duKSk7XFxuICAgICAgICAgICAgICAgICAgICBhamF4X21hcFtNWV9SVUxFLnRpdGxlXVtfdGFnXS5wdXNoKF9kZW1vbE1hcHMpO1xcbiAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoZG93biwgSlNPTi5zdHJpbmdpZnkoYWpheF9tYXApLCAwKTtcXG4gICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLmk43kvZzmiJDlip9cXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhcGl2aWV3LmVtcHR5O1xcbiAgICAgICAgICAgICAgICB9LCBfZGVtb2xNYXBzLCBfdGFnKVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0ID0gYXBpdmlldy5sYXlvdXQuY29uY2F0KF9kZW1vbE1hcC5tYXAoKF8sIGkpID0+ICh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpID09IHRpbmRleCA/IGFwaXZpZXcucmljaChhcGl2aWV3LnN0cm9uZyhhcGl2aWV3LmNvbG9yKF8udGl0bGUpKSkgOiBfLnRpdGxlLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGksIGVtcHR5LCBfZGVtb2wpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCI6bmV3VGFnXFxcIiArIF9kZW1vbCwgaSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5O1xcbiAgICAgICAgICAgICAgICB9LCBpLCBhcGl2aWV3LmVtcHR5LCBfZGVtb2wpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpID09IHRpbmRleCA/IFxcXCIjMjBGQTcyOThcXFwiIDogXFxcIlxcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pKSk7XFxuICAgICAgICB9O1xcbiAgICAgICAgbGV0IF9saW5rTmV4dCA9ICgpID0+IGdldE15VmFyKFxcXCI6bmV4dFxcXCIgKyBfZGVtb2wsIFxcXCJcXFwiKTtcXG4gICAgICAgIF9kZW1vbE1hcCA9IF9kZW1vbE1hcFt0aW5kZXhdO1xcbiAgICAgICAgX2RlbW9sTWFwID0gYXBpdmlldy5fZGVtb2xfQWpheChcXFwiL3Y2L3BhZ2UvZGF0YUxpc3RcXFwiLCB7XFxuICAgICAgICAgICAgdXJsOiBfZGVtb2xNYXAudXJsLFxcbiAgICAgICAgICAgIHRpdGxlOiBfZGVtb2xNYXAudGl0bGUsXFxuICAgICAgICAgICAgc3ViVGl0bGU6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgIHBhZ2U6IF9saW5rTmV4dCgpID8gMSA6IF9kZW1vbHBhZ2VcXG4gICAgICAgIH0pO1xcbiAgICAgICAgYXBpdmlldy5fbGF5b3V0RGV0ZXJtaW5lUGFyc2UoX2RlbW9sTWFwLCBfZGVtb2wpO1xcbiAgICB9LFxcbiAgICBfbGF5b3V0QXBrUnVsZVBhcnNlOiAoX2RlbW9sKSA9PiB7XFxuICAgICAgICBhZGRMaXN0ZW5lcihcXFwib25DbG9zZVxcXCIsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIGNsZWFyTXlWYXIoXFxcIjphcGtUYWdcXFwiKTtcXG4gICAgICAgIH0pKTtcXG4gICAgICAgIGxldCBfZGVtb2xwYWdlID0gTVlfUEFHRTtcXG4gICAgICAgIGxldCBkb3duID0gYXBpdmlldy5fR2V0X3NjcmlwdGlvbjtcXG4gICAgICAgIGxldCBhYnJlYWsgPSBmYWxzZTtcXG4gICAgICAgIGV2YWwoXFxcImZpbGVfbWFwID1cXFwiICsgcmVhZEZpbGUoZG93bikpO1xcbiAgICAgICAgbGV0IF9kZW1vbE1hcCA9IHN0b3JhZ2UwLmdldE15VmFyKF9kZW1vbCArIFxcXCI6YXBrVGFnXFxcIiwgW10pO1xcbiAgICAgICAgaWYgKF9kZW1vbE1hcC5sZW5ndGggPT0gMCkge1xcbiAgICAgICAgICAgIF9kZW1vbE1hcCA9IGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni9hcGsvZGV0YWlsXFxcIiwge1xcbiAgICAgICAgICAgICAgICBpZDogX2RlbW9sLFxcbiAgICAgICAgICAgICAgICBpbnN0YWxsZWQ6IFxcXCJcXFwiXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoX2RlbW9sICsgXFxcIjphcGtUYWdcXFwiLCBfZGVtb2xNYXApO1xcbiAgICAgICAgfTtcXG4gICAgICAgIGxldCBfZGVtb2xNYXBzID0ge307XFxuICAgICAgICBfZGVtb2xNYXBzLmVudGl0eVR5cGUgPSBfZGVtb2xNYXAuZW50aXR5VHlwZSB8fCBcXFwiYXBrXFxcIjtcXG4gICAgICAgIF9kZW1vbE1hcHMubG9nbyA9IF9kZW1vbE1hcC5sb2dvO1xcbiAgICAgICAgX2RlbW9sTWFwcy50aXRsZSA9IF9kZW1vbE1hcC50aXRsZTtcXG4gICAgICAgIF9kZW1vbE1hcHMudXJsID0gYC9hcGsvJHtfZGVtb2x9YDtcXG4gICAgICAgIGZpbGVfbWFwW01ZX1JVTEUudGl0bGVdW1xcXCJhcGtcXFwiXS5mb3JFYWNoKF8gPT4ge1xcbiAgICAgICAgICAgIGlmIChfLnRpdGxlID09IF9kZW1vbE1hcC50aXRsZSkge1xcbiAgICAgICAgICAgICAgICBhYnJlYWsgPSB0cnVlO1xcbiAgICAgICAgICAgICAgICByZXR1cm47XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH0pO1xcbiAgICAgICAgbGV0IHRpbmRleCA9IGdldE15VmFyKFxcXCI6YXBrVGFnXFxcIiwgXFxcIjBcXFwiKTtcXG4gICAgICAgIGxldCBfZGVtb2xNYXBfID0gW1xcXCLor6bmg4VcXFwiLCBcXFwi6K6o6K66XFxcIl07XFxuICAgICAgICBpZiAoX2RlbW9scGFnZSA9PSAxKSB7XFxuICAgICAgICAgICAgYXBpdmlldy5fZ2VuZXJhdGVUb3AoKTtcXG4gICAgICAgICAgICBzd2l0Y2ggKGdldEl0ZW0oXFxcIjphcHBsaWNhdGlvblxcXCIsIFxcXCLpu5jorqRcXFwiKSkge1xcbiAgICAgICAgICAgICAgICBjYXNlIFxcXCLpu5jorqRcXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcIjBcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogYXBpdmlldy5fZ2VuZXJhdGVJbWFnZShfZGVtb2xNYXAubG9nbyksXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhcGl2aWV3LmVtcHR5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiY2FyZF9waWNfMlxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGFwaXZpZXcucmljaChhcGl2aWV3LmJsYWNrKGAke2FwaXZpZXcuYmlnKF9kZW1vbE1hcC50aXRsZSl9PGJyPjxicj4ke19kZW1vbE1hcC52ZXJzaW9ufTxicj48YnI+JHtfZGVtb2xNYXAuY2F0TmFtZX08YnI+JHtfZGVtb2xNYXAuY29tbWVudFN0YXR1c1RleHQgPyBfZGVtb2xNYXAuY29tbWVudFN0YXR1c1RleHQgOiBcXFwiXFxcIn1gKSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcIjBcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYXBpdmlldy5lbXB0eSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImNhcmRfcGljXzJcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJyaWNoX3RleHRcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYXBpdmlldy5lbXB0eSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImNhcmRfcGljXzNcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogYXBpdmlldy5fZ2VuZXJhdGVJbWFnZShfZGVtb2xNYXAubG9nbyksXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhcGl2aWV3LmVtcHR5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiY2FyZF9waWNfM1xcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGFwaXZpZXcucmljaChhcGl2aWV3LmJpZyhfZGVtb2xNYXBzLnRpdGxlKSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFwaXZpZXcuZW1wdHksXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuS4i+i9vVxcXCIsXFxuICAgICAgICAgICAgICAgIHVybDogX2RlbW9sTWFwLmFwa2ZpbGUgPyAoKF9kZW1vbE1hcC5hcGtmaWxlICYmICFfZGVtb2xNYXAuYXBrZmlsZS5zdGFydHNXaXRoKFxcXCJodHRwXFxcIikgJiYgIV9kZW1vbE1hcC5hcGtmaWxlLnN0YXJ0c1dpdGgoXFxcImh0dHBzXFxcIikpID8gJChhcGl2aWV3LmVtcHR5KS5sYXp5UnVsZSgoe1xcbiAgICAgICAgICAgICAgICAgICAgaWQsXFxuICAgICAgICAgICAgICAgICAgICBhcGtuYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgYXBrdmVyc2lvbmNvZGVcXG4gICAgICAgICAgICAgICAgfSkgPT4gXFxcImRvd25sb2FkOi8vXFxcIiArIGRlY29kZVVSSUNvbXBvbmVudCgkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIikuX2RlbW9sX0FqYXgoXFxcIi92Ni9hcGsvZG93bmxvYWRcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICBwbjogYXBrbmFtZSxcXG4gICAgICAgICAgICAgICAgICAgIGFpZDogaWQsXFxuICAgICAgICAgICAgICAgICAgICB2YzogYXBrdmVyc2lvbmNvZGUsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYTogXFxcIlxcXCJcXG4gICAgICAgICAgICAgICAgfSwgdHJ1ZSwgdHJ1ZSkpLCBfZGVtb2xNYXApIDogXFxcImRvd25sb2FkOi8vXFxcIiArIF9kZW1vbE1hcC5hcGtmaWxlKSA6IFxcXCJ0b2FzdDovL+aXoOS4i+i9vemTvuaOpVxcXCIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF80XFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogYWJyZWFrID8gXFxcIuWPluWFs1xcXCIgOiBcXFwi5YWz5rOoXFxcIixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzRcXFwiLFxcbiAgICAgICAgICAgICAgICB1cmw6IGFicmVhayA/ICQoYXBpdmlldy5lbXB0eSkubGF6eVJ1bGUoKF9kZW1vbE1hcHMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgZG93biA9IGFwaXZpZXcuX0dldF9zY3JpcHRpb247XFxuICAgICAgICAgICAgICAgICAgICBsZXQgYWJyZWFrID0gZmFsc2U7XFxuICAgICAgICAgICAgICAgICAgICBldmFsKFxcXCJhamF4X21hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgICAgICAgICAgICAgIGFqYXhfbWFwW01ZX1JVTEUudGl0bGVdW1xcXCJhcGtcXFwiXS5mb3JFYWNoKChJdGVtLCBpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEl0ZW0udGl0bGUgPT0gX2RlbW9sTWFwcy50aXRsZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW5kZXggPSBpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnJlYWsgPSB0cnVlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFicmVhaykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGFqYXhfbWFwW01ZX1JVTEUudGl0bGVdW1xcXCJhcGtcXFwiXS5zcGxpY2UodGluZGV4LCAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShhamF4X21hcCksIDApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLmk43kvZzmiJDlip9cXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLmk43kvZzlpLHotKVcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBpdmlldy5lbXB0eTtcXG4gICAgICAgICAgICAgICAgfSwgX2RlbW9sTWFwcykgOiAkKGFwaXZpZXcuZW1wdHkpLmxhenlSdWxlKChfZGVtb2xNYXBzKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRvd24gPSBhcGl2aWV3Ll9HZXRfc2NyaXB0aW9uO1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbChcXFwiYWpheF9tYXAgPVxcXCIgKyByZWFkRmlsZShkb3duKSk7XFxuICAgICAgICAgICAgICAgICAgICBhamF4X21hcFtNWV9SVUxFLnRpdGxlXVtcXFwiYXBrXFxcIl0ucHVzaChfZGVtb2xNYXBzKTtcXG4gICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKGRvd24sIEpTT04uc3RyaW5naWZ5KGFqYXhfbWFwKSwgMCk7XFxuICAgICAgICAgICAgICAgICAgICB0b2FzdChcXFwi5pON5L2c5oiQ5YqfXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBpdmlldy5lbXB0eTtcXG4gICAgICAgICAgICAgICAgfSwgX2RlbW9sTWFwcylcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dCA9IGFwaXZpZXcubGF5b3V0LmNvbmNhdChfZGVtb2xNYXBfLm1hcCgoXywgaSkgPT4gKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGkgPT0gdGluZGV4ID8gYXBpdmlldy5yaWNoKGFwaXZpZXcuY29sb3IoYXBpdmlldy5zdHJvbmcoXykpKSA6IF8sXFxuICAgICAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoaSwgZW1wdHkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCI6YXBrVGFnXFxcIiwgaSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5O1xcbiAgICAgICAgICAgICAgICB9LCBpLCBhcGl2aWV3LmVtcHR5KSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzRcXFwiXFxuICAgICAgICAgICAgfSkpKTtcXG4gICAgICAgIH07XFxuICAgICAgICBsZXQgX2xpbmtOZXh0ID0gKCkgPT4gZ2V0TXlWYXIoXFxcIjpuZXh0XFxcIiArIF9kZW1vbCwgXFxcIlxcXCIpO1xcbiAgICAgICAgc3dpdGNoIChfZGVtb2xNYXBfW3RpbmRleF0pIHtcXG4gICAgICAgICAgICBjYXNlIF9kZW1vbE1hcF9bMF06XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dEFwcFJ1bGVQYXJzZShfZGVtb2xNYXApO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBjYXNlIF9kZW1vbE1hcF9bMV06XFxuICAgICAgICAgICAgICAgIF9kZW1vbE1hcCA9IGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni9wYWdlL2RhdGFMaXN0XFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBgIy9mZWVkL2Fwa0NvbW1lbnRMaXN0P2lzSW5jbHVkZVRvcD0xJndpdGhTb3J0Q2FyZD0xJmlkPSR7X2RlbW9sTWFwLmlkfWAsXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuiuqOiuulxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBzdWJUaXRsZTogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBwYWdlOiBfbGlua05leHQoKSA/IDEgOiBfZGVtb2xwYWdlXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXREZXRlcm1pbmVQYXJzZShfZGVtb2xNYXAsIF9kZW1vbCk7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgfTtcXG4gICAgfSxcXG4gICAgX2xheW91dFN1YnNjclBhcnNlOiAoKSA9PiB7XFxuICAgICAgICBldmFsKFxcXCJhamF4X21hcCA9XFxcIiArIHJlYWRGaWxlKGFwaXZpZXcuX0dldF9zY3JpcHRpb24pKTtcXG4gICAgICAgIGxldCBhamF4X21hcHMgPSBhamF4X21hcFtNWV9SVUxFLnRpdGxlXTtcXG4gICAgICAgIGxldCBvYmplY3RNYXAgPSBbXFxcIueUqOaIt1xcXCIsIFxcXCLluJblrZBcXFwiLCBcXFwi6K+d6aKYXFxcIiwgXFxcIuaVsOeggVxcXCIsIFxcXCLlupTnlKhcXFwiLCBcXFwi5bqU55So6ZuGXFxcIiwgXFxcIueci+eci+WPt1xcXCJdO1xcbiAgICAgICAgbGV0IF9kZW1vbHBhZ2UgPSBNWV9QQUdFO1xcbiAgICAgICAgbGV0IHRpbmRleCA9IGdldE15VmFyKFxcXCI6c3Vic2NyVGFiXFxcIiwgXFxcIjBcXFwiKTtcXG4gICAgICAgIGlmIChfZGVtb2xwYWdlID09IDEpIHtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dCA9IGFwaXZpZXcubGF5b3V0LmNvbmNhdChvYmplY3RNYXAubWFwKChpdGVtLCBpKSA9PiAoe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaSA9PSB0aW5kZXggPyBhcGl2aWV3LnJpY2goYXBpdmlldy5zdHJvbmcoYXBpdmlldy5jb2xvcihpdGVtKSkpIDogaXRlbSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChpLCBlbXB0eSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcIjpzdWJzY3JUYWJcXFwiLCBpKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHk7XFxuICAgICAgICAgICAgICAgIH0sIGksIGFwaXZpZXcuZW1wdHkpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpID09IHRpbmRleCA/IFxcXCIjMjBGQTcyOThcXFwiIDogXFxcIlxcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pKSk7XFxuICAgICAgICAgICAgc3dpdGNoIChvYmplY3RNYXBbdGluZGV4XSkge1xcbiAgICAgICAgICAgICAgICBjYXNlIG9iamVjdE1hcFswXTpcXG4gICAgICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dERldGVybWluZVBhcnNlKGFqYXhfbWFwc1tcXFwidXNlclxcXCJdLCBcXFwidXNlclxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIGNhc2Ugb2JqZWN0TWFwWzFdOlxcbiAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0RGV0ZXJtaW5lUGFyc2UoYWpheF9tYXBzW1xcXCJjYXJkXFxcIl0sIFxcXCJjYXJkXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgY2FzZSBvYmplY3RNYXBbMl06XFxuICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXREZXRlcm1pbmVQYXJzZShhamF4X21hcHNbXFxcInRvcGljXFxcIl0sIFxcXCJ0b3BpY1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIGNhc2Ugb2JqZWN0TWFwWzNdOlxcbiAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0RGV0ZXJtaW5lUGFyc2UoYWpheF9tYXBzW1xcXCJwcm9kdWN0XFxcIl0sIFxcXCJwcm9kdWN0XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgY2FzZSBvYmplY3RNYXBbNF06XFxuICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXREZXRlcm1pbmVQYXJzZShhamF4X21hcHNbXFxcImFwa1xcXCJdLCBcXFwiYXBrXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgY2FzZSBvYmplY3RNYXBbNV06XFxuICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXREZXRlcm1pbmVQYXJzZShhamF4X21hcHNbXFxcImFsYnVtXFxcIl0sIFxcXCJhbGJ1bVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIGNhc2Ugb2JqZWN0TWFwWzZdOlxcbiAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0RGV0ZXJtaW5lUGFyc2UoYWpheF9tYXBzW1xcXCJkeWhcXFwiXSwgXFxcImR5aFxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH07XFxuICAgIH0sXFxuICAgIF9sYXlvdXRNZW51UGFyc2U6ICgpID0+IHtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibGluZV9ibGFua1xcXCJcXG4gICAgICAgIH0pO1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLluJblrZDpooTop4hcXFwiLFxcbiAgICAgICAgICAgIGltZzogJC5yZXF1aXJlKFxcXCJpY29uLnRvb2xcXFwiKS5wb3N0LFxcbiAgICAgICAgICAgIHVybDogYXBpdmlldy5lbXB0eSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCJcXG4gICAgICAgIH0pO1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLmmL7npLrlm77niYflvKDmlbBcXFwiLFxcbiAgICAgICAgICAgIGltZzogJC5yZXF1aXJlKFxcXCJpY29uLnRvb2xcXFwiKS5udW1iZXIsXFxuICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgY29uc3QgaGlrZXJQb3AgPSAkLnJlcXVpcmUoXFxcImh0dHA6Ly9oaWtlci5ub2tpYS5wcmVzcy9oaWtlcnVsZS9ydWxlbGlzdC5qc29uP2lkPTY5NjZcXFwiLCAyNCk7XFxuICAgICAgICAgICAgICAgIGhpa2VyUG9wLmlucHV0QXV0b1Jvdyh7XFxuICAgICAgICAgICAgICAgICAgICBoaW50OiBg5b2T5YmN6aKE6KeI5pi+56S6JHtnZXRJdGVtKFxcXCI6bnVtYmVyXFxcIiwgXFxcIjNcXFwiKX3lvKBgLFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLor7fovpPlhaXmlbDlrZcoMS05KVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgbm9BdXRvU29mdDogdHJ1ZSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpcm0odGV4dCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnRyaW0oKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXh0ICYmICFpc05hTih0ZXh0KSAmJiBOdW1iZXIuaXNJbnRlZ2VyKE51bWJlcih0ZXh0KSkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbShcXFwiOm51bWJlclxcXCIsIHRleHQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLor7fovpPlhaXmlbDlrZfvvIHvvIHvvIFcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhcGl2aWV3LmVtcHR5O1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfaWNvblxcXCJcXG4gICAgICAgIH0pO1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJsaW5lX2JsYW5rXFxcIlxcbiAgICAgICAgfSk7XFxuICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuW6lOeUqOeVjOmdolxcXCIsXFxuICAgICAgICAgICAgaW1nOiAkLnJlcXVpcmUoXFxcImljb24udG9vbFxcXCIpLmFwcGxpY2F0aW9uLFxcbiAgICAgICAgICAgIHVybDogYXBpdmlldy5lbXB0eSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCJcXG4gICAgICAgIH0pO1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGDpu5jorqQke2FwaXZpZXcuc21hbGwoXFxcIijplb/mjInlj6/pooTop4gpXFxcIil9YCxcXG4gICAgICAgICAgICBpbWc6ICQucmVxdWlyZShcXFwiaWNvbi50b29sXFxcIilbZ2V0SXRlbShcXFwiOmFwcGxpY2F0aW9uXFxcIiwgXFxcIum7mOiupFxcXCIpID09IFxcXCLpu5jorqRcXFwiID8gXFxcIm9uXFxcIiA6IFxcXCJvZmZcXFwiXSxcXG4gICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgICAgICBpZiAoZ2V0SXRlbShcXFwiOmFwcGxpY2F0aW9uXFxcIiwgXFxcIum7mOiupFxcXCIpID09IFxcXCLpu5jorqRcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCI6YXBwbGljYXRpb25cXFwiLCBcXFwi6buY6K6kMlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbShcXFwiYXBwbGljYXRpb24xXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogJC5yZXF1aXJlKFxcXCJpY29uLnRvb2xcXFwiKS5vZmZcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbShcXFwiYXBwbGljYXRpb24yXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogJC5yZXF1aXJlKFxcXCJpY29uLnRvb2xcXFwiKS5vblxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCI6YXBwbGljYXRpb25cXFwiLCBcXFwi6buY6K6kXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKFxcXCJhcHBsaWNhdGlvbjFcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiAkLnJlcXVpcmUoXFxcImljb24udG9vbFxcXCIpLm9uXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oXFxcImFwcGxpY2F0aW9uMlxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6ICQucmVxdWlyZShcXFwiaWNvbi50b29sXFxcIikub2ZmXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFwaXZpZXcuZW1wdHk7XFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2ljb25cXFwiLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGlkOiBcXFwiYXBwbGljYXRpb24xXFxcIixcXG4gICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLpooTop4hcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4gJCgkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIikuZW1wdHkgKyBcXFwiI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IyNnYW1lVGhlbWUjZnlwYWdlXFxcIikucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKCh0ZXh0KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcIjphcHBsaWNhdGlvblxcXCIsIHRleHQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGdldEl0ZW0oXFxcIjphcHBsaWNhdGlvblxcXCIsIFxcXCLpu5jorqRcXFwiKSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcIjphcHBsaWNhdGlvblxcXCIsIFxcXCLpu5jorqRcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dExpbmtSdWxlUGFyc2Uoe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwidGl0bGVcXFwiOiBcXFwi6YW35a6JXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImxvZ29cXFwiOiBcXFwiaHR0cDovL3BwLm15YXBwLmNvbS9tYV9pY29uLzAvaWNvbl8xMDQwMTMyN18xNjExMzA2MjIyLzI1NlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJ1cmxcXFwiOiBcXFwiL2Fway9jb20uY29vbGFway5tYXJrZXRcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiaWRcXFwiOiB1bmRlZmluZWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJlbnRpdHlUeXBlXFxcIjogXFxcImFwa1xcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoYXBpdmlldy5sYXlvdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgfSkpXFxuICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogYOWQjOeUqOaIt+eVjOmdoiR7YXBpdmlldy5zbWFsbChcXFwiKOmVv+aMieWPr+mihOiniClcXFwiKX1gLFxcbiAgICAgICAgICAgIGltZzogJC5yZXF1aXJlKFxcXCJpY29uLnRvb2xcXFwiKVtnZXRJdGVtKFxcXCI6YXBwbGljYXRpb25cXFwiLCBcXFwi6buY6K6kXFxcIikgPT0gXFxcIum7mOiupFxcXCIgPyBcXFwib2ZmXFxcIiA6IFxcXCJvblxcXCJdLFxcbiAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgICAgIGlmIChnZXRJdGVtKFxcXCI6YXBwbGljYXRpb25cXFwiLCBcXFwi6buY6K6kXFxcIikgPT0gXFxcIum7mOiupFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcIjphcHBsaWNhdGlvblxcXCIsIFxcXCLpu5jorqQyXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKFxcXCJhcHBsaWNhdGlvbjFcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiAkLnJlcXVpcmUoXFxcImljb24udG9vbFxcXCIpLm9mZlxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKFxcXCJhcHBsaWNhdGlvbjJcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiAkLnJlcXVpcmUoXFxcImljb24udG9vbFxcXCIpLm9uXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcIjphcHBsaWNhdGlvblxcXCIsIFxcXCLpu5jorqRcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oXFxcImFwcGxpY2F0aW9uMVxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6ICQucmVxdWlyZShcXFwiaWNvbi50b29sXFxcIikub25cXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbShcXFwiYXBwbGljYXRpb24yXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogJC5yZXF1aXJlKFxcXCJpY29uLnRvb2xcXFwiKS5vZmZcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICByZXR1cm4gYXBpdmlldy5lbXB0eTtcXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfaWNvblxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgaWQ6IFxcXCJhcHBsaWNhdGlvbjJcXFwiLFxcbiAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIumihOiniFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiAkKCQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKS5lbXB0eSArIFxcXCIjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjI2dhbWVUaGVtZSNmeXBhZ2VcXFwiKS5ydWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRMaXN0ZW5lcihcXFwib25DbG9zZVxcXCIsICQudG9TdHJpbmcoKHRleHQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbShcXFwiOmFwcGxpY2F0aW9uXFxcIiwgdGV4dCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgZ2V0SXRlbShcXFwiOmFwcGxpY2F0aW9uXFxcIiwgXFxcIum7mOiupFxcXCIpKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbShcXFwiOmFwcGxpY2F0aW9uXFxcIiwgXFxcIum7mOiupDJcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dExpbmtSdWxlUGFyc2Uoe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwidGl0bGVcXFwiOiBcXFwi6YW35a6JXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImxvZ29cXFwiOiBcXFwiaHR0cDovL3BwLm15YXBwLmNvbS9tYV9pY29uLzAvaWNvbl8xMDQwMTMyN18xNjExMzA2MjIyLzI1NlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJ1cmxcXFwiOiBcXFwiL2Fway9jb20uY29vbGFway5tYXJrZXRcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiaWRcXFwiOiB1bmRlZmluZWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJlbnRpdHlUeXBlXFxcIjogXFxcImFwa1xcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoYXBpdmlldy5sYXlvdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgfSkpXFxuICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImxpbmVfYmxhbmtcXFwiXFxuICAgICAgICB9KTtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi5Y+N6aaIQlVHXFxcIixcXG4gICAgICAgICAgICBpbWc6ICQucmVxdWlyZShcXFwiaWNvbi50b29sXFxcIikuYnVnLFxcbiAgICAgICAgICAgIHVybDogXFxcIm1xcXdwYTovL2ltL2NoYXQ/Y2hhdF90eXBlPXdwYSZ1aW49ODYyMzQ3MjA1XFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCJcXG4gICAgICAgIH0pO1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLmm7TmlrDml6Xlv5dcXFwiLFxcbiAgICAgICAgICAgIGltZzogJC5yZXF1aXJlKFxcXCJpY29uLnRvb2xcXFwiKS5sb2dzLFxcbiAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgICAgIGNvbnN0IGhpa2VyUG9wID0gJC5yZXF1aXJlKFxcXCJodHRwczovL2hpa2VyZmFucy5jb20vd2Vpc3lyL2pzL2hpa2VyUG9wLmpzXFxcIik7XFxuICAgICAgICAgICAgICAgIGhpa2VyUG9wLnVwZGF0ZVJlY29yZHNCb3R0b20oYXBpdmlldy5fdXBkYXRlRGF0YSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiXFxuICAgICAgICB9KTtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibGluZV9ibGFua1xcXCJcXG4gICAgICAgIH0pO1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLlhbPkuo7kvZzogIVcXFwiLFxcbiAgICAgICAgICAgIGltZzogJC5yZXF1aXJlKFxcXCJpY29uLnRvb2xcXFwiKS5hYm91dCxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvcnVsZXM/cnVsZT3pgZPplb/ku5PlupNQcm8mI25vSGlzdG9yeSNcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIixcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBhdmF0YXJVcmw6IFxcXCJodHRwOi8vcTEucWxvZ28uY24vZz9iPXFxJm5rPTg2MjM0NzIwNSZzPTY0MFxcXCIsXFxuICAgICAgICAgICAgICAgIGNhbl91cGxvYWQ6IHRydWUsXFxuICAgICAgICAgICAgICAgIGlkOiAyODQsXFxuICAgICAgICAgICAgICAgIHFxOiBcXFwiODYyMzQ3MjA1XFxcIixcXG4gICAgICAgICAgICAgICAgaW5oZXJpdFRpdGxlOiBmYWxzZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLmlK/mjIHkuIDkuItcXFwiLFxcbiAgICAgICAgICAgIGltZzogJC5yZXF1aXJlKFxcXCJpY29uLnRvb2xcXFwiKS5zdXBwb3J0LFxcbiAgICAgICAgICAgIHVybDogJChhcGl2aWV3LmVtcHR5ICsgXFxcIiNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNcXFwiKS5ydWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5fZG9uYXRlX1BhcnNlKCk7XFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdChhcGl2aWV3LmxheW91dCk7XFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiXFxuICAgICAgICB9KTtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibGluZV9ibGFua1xcXCJcXG4gICAgICAgIH0pO1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLlhY3otKPlo7DmmI5cXFwiLFxcbiAgICAgICAgICAgIGltZzogJC5yZXF1aXJlKFxcXCJpY29uLnRvb2xcXFwiKS5kaXNjbGFpbWVyLFxcbiAgICAgICAgICAgIHVybDogYXBpdmlldy5lbXB0eSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCJcXG4gICAgICAgIH0pO1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGA8c21hbGw+MS4g5pys5bCP56iL5bqP5omA5pyJ5Luj56CB5YWo6YOo5byA5rqQ77yM5LiU5pys6KeE5YiZ5Li65a2m5Lmg55uu55qE77yM6K+35LqO5a+85YWlMjTlsI/ml7blhoXliKDpmaTvvIHvvIHvvIE8YnI+Mi4g5pys5bCP56iL5bqPPGI+5a6M5YWo5YWN6LS5PC9iPu+8jOWmguaenOS9oOaYr+S7mOi0uei0reS5sOeahOaBreWWnOS9oOiiq+mql+S6huOAgjxicj4zLiDlpoLmnpzlh7rnjrDlupXnur/vvIzor7c8Yj7liLfmlrDkuIDkuIs8L2I+5Lmf6K645pyJ5Lic6KW/5ZGi44CCPGJyPjQuIOWHuueOsEJVR+S6hjxiPuivt+W9leWxjzwvYj7lj5Hnu5kke2FwaXZpZXcuYWRkcmVzc1RhZyhcXFwibXFxd3BhOi8vaW0vY2hhdD9jaGF0X3R5cGU9d3BhJnVpbj04NjIzNDcyMDVcXFwiLCBcXFwi5L2c6ICFXFxcIil95ZOmPGJyPjUuIOS4jeWGmTxiPueZu+W9lTwvYj7lj6/og73kvJrlsIHlj7fvvIHvvIHvvIE8YnI+PGI+5byA5aeL5L2/55So5pys6KeE5YiZ5Y2z5Luj6KGo6YG15a6I6KeE5YiZPC9iPjwvc21hbGw+YCxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInJpY2hfdGV4dFxcXCJcXG4gICAgICAgIH0pO1xcbiAgICB9LFxcbiAgICBfRW5kX1BhcnNlOiAoKSA9PiB7XFxuICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogYXBpdmlldy5yaWNoKGFwaXZpZXcuc21hbGwoYXBpdmlldy5ncmF5KFxcXCLvvZ7vvZ7vvZ7miJHmmK/mnInlupXnur/nmoTvvZ7vvZ7vvZ5cXFwiKSkpLFxcbiAgICAgICAgICAgIHVybDogYXBpdmlldy5lbXB0eSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxuICAgICAgICB9KTtcXG4gICAgfSxcXG4gICAgX2dlbmVyYXRlVG9wOiAoKSA9PiB7XFxuICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICBpbWc6ICQucmVxdWlyZShcXFwiaWNvbi50b29sXFxcIikudG9wLFxcbiAgICAgICAgICAgIHVybDogYXBpdmlldy5lbXB0eSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInBpY18xX2Z1bGxcXFwiXFxuICAgICAgICB9KTtcXG4gICAgfSxcXG4gICAgX2dlbmVyYXRlRW5kOiAoKSA9PiB7XFxuICAgICAgICBsZXQgdGlwcyA9IFxcXCLor6Xmlofnq6DmnaXmupDkuo7phbflronvvIzlpoLmgqjllpzmrKLvvIzor7fkuIvovb1BUFBcXFwiO1xcbiAgICAgICAgbGV0IHdhcm5pbmcgPSBcXFwi5q2k6KeE5YiZ5LuF6ZmQ5a2m5Lmg5L2/55So77yM5aaC5pyJ5LiN5aal77yM6K+35pys5ZCn5Li76IGU57O75oiR5Yig6ZmkXFxcIjtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBhcGl2aWV3LmNlbnRlcihgJHthcGl2aWV3LnN0cm9uZyh0aXBzKX08YnI+JHthcGl2aWV3LnNtYWxsKGFwaXZpZXcuZ3JheSh3YXJuaW5nKSl9YCksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJyaWNoX3RleHRcXFwiXFxuICAgICAgICB9KTtcXG4gICAgfSxcXG4gICAgX2dldHNNaW5kOiAoKSA9PiB7XFxuICAgICAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICAgICAgICAgY29uc3QgaGlrZXJQb3AgPSAkLnJlcXVpcmUoXFxcImh0dHBzOi8vaGlrZXJmYW5zLmNvbS93ZWlzeXIvanMvaGlrZXJQb3AuanNcXFwiKTtcXG4gICAgICAgICAgICBpZiAoZ2V0TXlWYXIoXFxcIjp1cGRhdGVEYXRhXFxcIiwgXFxcIlxcXCIpID09IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgICAgIGhpa2VyUG9wLnVwZGF0ZVJlY29yZHNCb3R0b20oYXBpdmlldy5fdXBkYXRlRGF0YSk7XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCI6dXBkYXRlRGF0YVxcXCIsIFxcXCJ0cnVlXFxcIik7XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBsZXQgdGltZSA9IDE1O1xcbiAgICAgICAgICAgIGxldCBpZCA9IERhdGUubm93KCk7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBhcGl2aWV3LmJpZyhhcGl2aWV3LnN0cm9uZyhcXFwi4oCc4oCc5L2/55So5YmN6aG755+l4oCc4oCcXFxcIikpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgICAgICAgICB1cmw6IGFwaXZpZXcuZW1wdHksXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogYDEuIOacrOWwj+eoi+W6j+aJgOacieS7o+eggeWFqOmDqOW8gOa6kO+8jOS4lOacrOinhOWImeS4uuWtpuS5oOebrueahO+8jOivt+S6juWvvOWFpTI05bCP5pe25YaF5Yig6Zmk77yB77yB77yBPGJyPjIuIOacrOWwj+eoi+W6jzxiPuWujOWFqOWFjei0uTwvYj7vvIzlpoLmnpzkvaDmmK/ku5jotLnotK3kubDnmoTmga3llpzkvaDooqvpqpfkuobjgII8YnI+5b2T54S25aaC5p6c5pyJ6IO95Yqb5oOz6byT5Yqx5L2c6ICF55qE5Y+v5LulJHtcXFwi5pSv5oyB5LiA5LiLXFxcIi5saW5rKCQoYXBpdmlldy5lbXB0eSArIFxcXCIjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjXFxcIikuYjY0KFxcXCJcXFwiKS5ydWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5fZG9uYXRlX1BhcnNlKCk7XFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdChhcGl2aWV3LmxheW91dCk7XFxuICAgICAgICAgICAgfSkpfTxzbWFsbD4o54K55Ye75Y+v6L+b5YWl5o2Q6LWgKeOAgjwvc21hbGw+PGJyPjMuIOWmguaenOWHuueOsOW6lee6v++8jOivtzxiPuWIt+aWsOS4gOS4izwvYj7kuZ/orrjmnInkuJzopb/lkaLjgII8YnI+NC4g5Ye6546wQlVH5LqGPGI+6K+35b2V5bGPPC9iPuWPkee7mSR7YXBpdmlldy5hZGRyZXNzVGFnKFxcXCJtcXF3cGE6Ly9pbS9jaGF0P2NoYXRfdHlwZT13cGEmdWluPTg2MjM0NzIwNVxcXCIsIFxcXCLkvZzogIVcXFwiKX3lk6Y8YnI+NS4g5LiN5YaZPGI+55m75b2VPC9iPuWPr+iDveS8muWwgeWPt++8ge+8ge+8gTxicj48YnI+PGI+5byA5aeL5L2/55So5pys6KeE5YiZ5Y2z5Luj6KGo6YG15a6I6KeE5YiZPC9iPjxicj7lvZPliY3niYjmnKzvvJpgICsgTVlfUlVMRS52ZXJzaW9uLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInJpY2hfdGV4dFxcXCJcXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibGluZVxcXCJcXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5pu05paw5pel5b+XXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBoaWtlclBvcCA9ICQucmVxdWlyZShcXFwiaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3dlaXN5ci9qcy9oaWtlclBvcC5qc1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgaGlrZXJQb3AudXBkYXRlUmVjb3Jkc0JvdHRvbShhcGl2aWV3Ll91cGRhdGVEYXRhKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfMVxcXCJcXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aW1lICsgXFxcIuenkuWQjue7p+e7rVxcXCIsXFxuICAgICAgICAgICAgICAgIHVybDogXFxcInRvYXN0Oi8v6K+36K6k55yf6ZiF6K+75Lul5LiK5YaF5a65XFxcIixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBpZCArIFxcXCJ0aW1lclxcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHNldFJlc3VsdChhcGl2aWV3LmxheW91dCk7XFxuICAgICAgICAgICAgd2hpbGUgKHRpbWUgIT0gMCkge1xcbiAgICAgICAgICAgICAgICBqYXZhLmxhbmcuVGhyZWFkLnNsZWVwKDEwMDApO1xcbiAgICAgICAgICAgICAgICB0aW1lIC09IDE7XFxuICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oaWQgKyBcXFwidGltZXJcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGltZSArIFxcXCLnp5LlkI7nu6fnu61cXFwiXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB1cGRhdGVJdGVtKGlkICsgXFxcInRpbWVyXFxcIiwge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOaIkeWQjOaEj+S7peS4iuimgeaxguKAnOKAnFxcXCIsXFxuICAgICAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgodikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgc2V0SXRlbShcXFwiZmlyc3RcXFwiLCBTdHJpbmcodikpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/mhJ/osKLmgqjnmoTnkIbop6NcXFwiO1xcbiAgICAgICAgICAgICAgICB9LCBNWV9SVUxFLnZlcnNpb24pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9O1xcbiAgICB9LFxcbiAgICBfZG9uYXRlX1BhcnNlOiAoKSA9PiB7XFxuICAgICAgICBzZXRQYWdlVGl0bGUoXFxcIuaNkOi1oC/mlK/mjIFcXFwiKTtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi5o2Q6LWgL+aUr+aMgVxcXCIsXFxuICAgICAgICAgICAgZGVzYzogXFxcIui/meS4quaNkOi1oOS4jeiDveS4uuS9oOW4puadpeeJueadg++8jOS9huaCqOeahOaUr+aMgeaYr+aIkeabtOaWsOWIm+S9nOeahOWKqOWKm+OAglxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICB1cmw6IFxcXCJ0b2FzdDovL+aEn+iwouaCqOeahOaUr+aMgVxcXCJcXG4gICAgICAgIH0pO1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJwaWNfMV9mdWxsXFxcIixcXG4gICAgICAgICAgICB1cmw6ICQucmVxdWlyZShcXFwiaWNvbi50b29sXFxcIikuZG9uYXRlLFxcbiAgICAgICAgICAgIHBpY191cmw6ICQucmVxdWlyZShcXFwiaWNvbi50b29sXFxcIikuZG9uYXRlXFxuICAgICAgICB9KTtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLigJzigJzigJ3igJ1cXFwiICsgXFxcIuWbvueJh+WKoOi9vee8k+aFouivt+eojeetiVxcXCIuc21hbGwoKS5mb250Y29sb3IoXFxcIkdyYXlcXFwiKSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgfSxcXG4gICAgX2V4dHJhX3Rvb2w6IChfLCBfdGFiLCBfdGFnLCBfbmV4dCkgPT4gW3tcXG4gICAgICAgIHRpdGxlOiBg8J+TrCR7X25leHQgPyBcXFwi5YWz5rOoXFxcIiA6IFxcXCLmlLbol49cXFwifWAsXFxuICAgICAgICBqczogJC50b1N0cmluZygoXywgX3RhYiwgX3RhZykgPT4ge1xcbiAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgbGV0IHRvb2xkb3duID0gYXBpdmlldy5fR2V0X3NjcmlwdGlvbjtcXG4gICAgICAgICAgICBsZXQgYWJyZWFrID0gdHJ1ZTtcXG4gICAgICAgICAgICBldmFsKFxcXCJhamF4X21hcCA9XFxcIiArIHJlYWRGaWxlKHRvb2xkb3duKSk7XFxuICAgICAgICAgICAgYWpheF9tYXBbTVlfUlVMRS50aXRsZV1bX3RhYl0uZm9yRWFjaChJdGVtID0+IHtcXG4gICAgICAgICAgICAgICAgaWYgKEl0ZW1bX3RhZ10gPT0gX1tfdGFnXSkge1xcbiAgICAgICAgICAgICAgICAgICAgdG9hc3QoXFxcIumHjeWkjeS6huWTplxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgYWJyZWFrID0gZmFsc2U7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgaWYgKGFicmVhaykge1xcbiAgICAgICAgICAgICAgICBhamF4X21hcFtNWV9SVUxFLnRpdGxlXVtfdGFiXS5wdXNoKF8pO1xcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSh0b29sZG93biwgSlNPTi5zdHJpbmdpZnkoYWpheF9tYXApLCAwKTtcXG4gICAgICAgICAgICAgICAgdG9hc3QoXFxcIuaTjeS9nOaIkOWKn1xcXCIpO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgcmV0dXJuIGFwaXZpZXcuZW1wdHk7XFxuICAgICAgICB9LCBfLCBfdGFiLCBfdGFnKVxcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogYPCfk63lj5bmtogke19uZXh0ID8gXFxcIuWFs+azqFxcXCIgOiBcXFwi5pS26JePXFxcIn1gLFxcbiAgICAgICAganM6ICQudG9TdHJpbmcoKF8sIF90YWIsIF90YWcpID0+IHtcXG4gICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgIGxldCB0b29sZG93biA9IGFwaXZpZXcuX0dldF9zY3JpcHRpb247XFxuICAgICAgICAgICAgbGV0IGFicmVhayA9IGZhbHNlO1xcbiAgICAgICAgICAgIGV2YWwoXFxcImFqYXhfbWFwID1cXFwiICsgcmVhZEZpbGUodG9vbGRvd24pKTtcXG4gICAgICAgICAgICBhamF4X21hcFtNWV9SVUxFLnRpdGxlXVtfdGFiXS5mb3JFYWNoKChJdGVtLCBpKSA9PiB7XFxuICAgICAgICAgICAgICAgIGlmIChJdGVtW190YWddID09IF9bX3RhZ10pIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpbmRleCA9IGk7XFxuICAgICAgICAgICAgICAgICAgICBhYnJlYWsgPSB0cnVlO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGlmIChhYnJlYWspIHtcXG4gICAgICAgICAgICAgICAgYWpheF9tYXBbTVlfUlVMRS50aXRsZV1bX3RhYl0uc3BsaWNlKHRpbmRleCwgMSk7XFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKHRvb2xkb3duLCBKU09OLnN0cmluZ2lmeShhamF4X21hcCksIDApO1xcbiAgICAgICAgICAgICAgICB0b2FzdChcXFwi5pON5L2c5oiQ5YqfXFxcIik7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB0b2FzdChcXFwi5pON5L2c5aSx6LSlXFxcIik7XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICByZXR1cm4gYXBpdmlldy5lbXB0eTtcXG4gICAgICAgIH0sIF8sIF90YWIsIF90YWcpXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4qyG77iP572u6aG2XFxcIixcXG4gICAgICAgIGpzOiAkLnRvU3RyaW5nKChfLCBfdGFiLCBfdGFnKSA9PiB7XFxuICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICBsZXQgdG9vbGRvd24gPSBhcGl2aWV3Ll9HZXRfc2NyaXB0aW9uO1xcbiAgICAgICAgICAgIGxldCBhYnJlYWsgPSBmYWxzZTtcXG4gICAgICAgICAgICBldmFsKFxcXCJhamF4X21hcCA9XFxcIiArIHJlYWRGaWxlKHRvb2xkb3duKSk7XFxuICAgICAgICAgICAgYWpheF9tYXBbTVlfUlVMRS50aXRsZV1bX3RhYl0uZm9yRWFjaChJdGVtID0+IHtcXG4gICAgICAgICAgICAgICAgaWYgKEl0ZW1bX3RhZ10gPT0gX1tfdGFnXSkge1xcbiAgICAgICAgICAgICAgICAgICAgYWJyZWFrID0gdHJ1ZTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcXG4gICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpZiAoYWJyZWFrKSB7XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcuX1Bvc2l0aW9uX3Rvb2woYWpheF9tYXBbTVlfUlVMRS50aXRsZV1bX3RhYl0sIF8sIFxcXCJ0b3BcXFwiLCBfdGFnKTtcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUodG9vbGRvd24sIEpTT04uc3RyaW5naWZ5KGFqYXhfbWFwKSwgMCk7XFxuICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLmk43kvZzmiJDlip9cXFwiKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLmk43kvZzlpLHotKVcXFwiKTtcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIHJldHVybiBhcGl2aWV3LmVtcHR5O1xcbiAgICAgICAgfSwgXywgX3RhYiwgX3RhZylcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCLirIfvuI/nva7lupVcXFwiLFxcbiAgICAgICAganM6ICQudG9TdHJpbmcoKF8sIF90YWIsIF90YWcpID0+IHtcXG4gICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgIGxldCB0b29sZG93biA9IGFwaXZpZXcuX0dldF9zY3JpcHRpb247XFxuICAgICAgICAgICAgbGV0IGFicmVhayA9IGZhbHNlO1xcbiAgICAgICAgICAgIGV2YWwoXFxcImFqYXhfbWFwID1cXFwiICsgcmVhZEZpbGUodG9vbGRvd24pKTtcXG4gICAgICAgICAgICBhamF4X21hcFtNWV9SVUxFLnRpdGxlXVtfdGFiXS5mb3JFYWNoKEl0ZW0gPT4ge1xcbiAgICAgICAgICAgICAgICBpZiAoSXRlbVtfdGFnXSA9PSBfW190YWddKSB7XFxuICAgICAgICAgICAgICAgICAgICBhYnJlYWsgPSB0cnVlO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGlmIChhYnJlYWspIHtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5fUG9zaXRpb25fdG9vbChhamF4X21hcFtNWV9SVUxFLnRpdGxlXVtfdGFiXSwgXywgXFxcImVuZFxcXCIsIF90YWcpO1xcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSh0b29sZG93biwgSlNPTi5zdHJpbmdpZnkoYWpheF9tYXApLCAwKTtcXG4gICAgICAgICAgICAgICAgdG9hc3QoXFxcIuaTjeS9nOaIkOWKn1xcXCIpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdG9hc3QoXFxcIuaTjeS9nOWksei0pVxcXCIpO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgcmV0dXJuIGFwaXZpZXcuZW1wdHk7XFxuICAgICAgICB9LCBfLCBfdGFiLCBfdGFnKVxcbiAgICB9XSxcXG4gICAgX2V4dHJhU2VhcmNoOiAoaXQpID0+IFt7XFxuICAgICAgICB0aXRsZTogYOWIoOmZpOOAjCR7aXR944CNYCxcXG4gICAgICAgIGpzOiAkLnRvU3RyaW5nKChpdCkgPT4ge1xcbiAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgbGV0IG1lbSA9IHN0b3JhZ2UwLmdldEl0ZW0oTVlfUlVMRS50aXRsZSwgW10pO1xcbiAgICAgICAgICAgIG1lbS5mb3JFYWNoKChfLCBpKSA9PiB7XFxuICAgICAgICAgICAgICAgIGlmIChfID09IGl0KSB7XFxuICAgICAgICAgICAgICAgICAgICB0aW5kZXggPSBpO1xcbiAgICAgICAgICAgICAgICAgICAgYWJyZWFrID0gdHJ1ZTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcXG4gICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBtZW0uc3BsaWNlKHRpbmRleCwgMSk7XFxuICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbShNWV9SVUxFLnRpdGxlLCBtZW0pO1xcbiAgICAgICAgICAgIHRvYXN0KFxcXCLmk43kvZzmiJDlip9cXFwiKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIGFwaXZpZXcuZW1wdHk7XFxuICAgICAgICB9LCBpdClcXG4gICAgfV0sXFxuICAgIF91cGRhdGVEYXRhOiBbe1xcbiAgICAgICAgdGl0bGU6IFxcXCIyMDI0LzA5LzA4XFxcIixcXG4gICAgICAgIHJlY29yZHM6IFtcXG4gICAgICAgICAgICBcXFwi4oCY4oCY5L+u5aSN4oCZ4oCZOuWbvueJh+aYvuekulxcXCJcXG4gICAgICAgIF1cXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCIyMDI0LzA5LzA1XFxcIixcXG4gICAgICAgIHJlY29yZHM6IFtcXG4gICAgICAgICAgICBcXFwi4oCY4oCY5LyY5YyW4oCZ4oCZOumhtemdolxcXCJcXG4gICAgICAgIF1cXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCIyMDI0LzA5LzAzXFxcIixcXG4gICAgICAgIHJlY29yZHM6IFtcXG4gICAgICAgICAgICBcXFwi4oCc4oCc5pu05paw4oCd4oCdOui9ruaSreWbvlVBXFxcIixcXG4gICAgICAgICAgICBcXFwi4oCc4oCc5pu05paw4oCd4oCdOnRva2Vu5pa55rOVXFxcIixcXG4gICAgICAgICAgICBcXFwi4oCY4oCY6K+05piO4oCZ4oCZOueUseS6jumFt+WuieS4jeWcqOS9v+eUqOaXp+eJiHRva2Vu5pa55rOV77yM5bCG5L2/55So5pyA5paw5pa55rOV77yM5oSf6LCiQHpldGFscGhhIOWkp+S9rOaPkOS+m+eahGJjcnlwdOaWueazlVxcXCJcXG4gICAgICAgIF1cXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCIyMDI0LzA4LzMxXFxcIixcXG4gICAgICAgIHJlY29yZHM6IFtcXG4gICAgICAgICAgICBcXFwi4oCY4oCY5LyY5YyW4oCZ4oCZOui+k+WFpeahhue7huiKglxcXCJcXG4gICAgICAgIF1cXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCIyMDI0LzA4LzMwXFxcIixcXG4gICAgICAgIHJlY29yZHM6IFtcXG4gICAgICAgICAgICBcXFwi4oCc4oCc5pu05paw4oCd4oCdOuiuvue9rueVjOmdolxcXCIsXFxuICAgICAgICAgICAgXFxcIuKAmOKAmOS8mOWMluKAmeKAmTrluJblrZDkuI7luJblrZDkuYvpl7TliIblibLnur9cXFwiXFxuICAgICAgICBdXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwiMjAyNC8wOC8yMlxcXCIsXFxuICAgICAgICByZWNvcmRzOiBbXFxuICAgICAgICAgICAgXFxcIuKAmOKAmOS8mOWMluKAmeKAmTrlupTnlKjnlYzpnaJcXFwiXFxuICAgICAgICBdXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwiMjAyNC8wOC8yMVxcXCIsXFxuICAgICAgICByZWNvcmRzOiBbXFxuICAgICAgICAgICAgXFxcIuKAnOKAnOaUr+aMgeKAneKAnTp0ZXh0Q2FyZFxcXCJcXG4gICAgICAgIF1cXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCIyMDI0LzA4LzE5XFxcIixcXG4gICAgICAgIHJlY29yZHM6IFtcXG4gICAgICAgICAgICBcXFwi4oCc4oCc5pu05paw4oCd4oCdOmhpa2VyUG9w6ZO+5o6lXFxcIlxcbiAgICAgICAgXVxcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogXFxcIjIwMjQvMDgvMTdcXFwiLFxcbiAgICAgICAgcmVjb3JkczogW1xcbiAgICAgICAgICAgIFxcXCLigJjigJjkvJjljJbigJnigJk65LiL6L29XFxcIixcXG4gICAgICAgICAgICBcXFwi4oCY4oCY5LyY5YyW4oCZ4oCZOuWIpOaWremTvuaOpVxcXCJcXG4gICAgICAgIF1cXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCIyMDI0LzA4LzE1XFxcIixcXG4gICAgICAgIHJlY29yZHM6IFtcXG4gICAgICAgICAgICBcXFwi4oCY4oCY5LyY5YyW4oCZ4oCZOuW4luWtkOivpue7huaXtumXtO+8iOWmgu+8muWHoOWIhumSn+WJje+8iVxcXCJcXG4gICAgICAgIF1cXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCIyMDI0LzA4LzExXFxcIixcXG4gICAgICAgIHJlY29yZHM6IFtcXG4gICAgICAgICAgICBcXFwi4oCY4oCY5LyY5YyW4oCZ4oCZOueUqOaIt+S4u+mhteaYvuekuuaViOaenFxcXCJcXG4gICAgICAgIF1cXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCIyMDI0LzA4LzEwXFxcIixcXG4gICAgICAgIHJlY29yZHM6IFtcXG4gICAgICAgICAgICBcXFwi4oCY4oCY5LyY5YyW4oCZ4oCZOuWIpOaWremAu+i+kVxcXCJcXG4gICAgICAgIF1cXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCIyMDI0LzA4LzA3XFxcIixcXG4gICAgICAgIHJlY29yZHM6IFtcXG4gICAgICAgICAgICBcXFwi4oCY4oCY5LyY5YyW4oCZ4oCZOue7memqmueyieWKoOS4quiDjOaZr+iJslxcXCIsXFxuICAgICAgICAgICAgXFxcIuKAmOKAmOS8mOWMluKAmeKAmTrmlLbol4/ljZXliKTmlq1cXFwiLFxcbiAgICAgICAgICAgIFxcXCLigJjigJjkv67lpI3igJnigJk66YW35ZOB6ZO+5o6lXFxcIlxcbiAgICAgICAgXVxcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogXFxcIjIwMjQvMDgvMDVcXFwiLFxcbiAgICAgICAgcmVjb3JkczogW1xcbiAgICAgICAgICAgIFxcXCLigJzigJzmlK/mjIHigJ3igJ0655yL55yL5Y+3XFxcIixcXG4gICAgICAgICAgICBcXFwi4oCc4oCc5pu05paw4oCd4oCdOumVv+aMieesrOS4gOaOkuWIhuexu+WPr+WPjemmiEJVRyjopoHlvZXlsY/lk6YpXFxcIixcXG4gICAgICAgICAgICBcXFwi4oCY4oCY5LyY5YyW4oCZ4oCZOue7huWIhuagh+etvi/or53popgvYXBw77yM5LmL5YmN55qE5pS26JeP55qE5rKh5LqG6K+36YeN5paw5pS26JeP77yM5Li65ZCO57ut5pu05aW957u05oqkXFxcIlxcbiAgICAgICAgXVxcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogXFxcIjIwMjQvMDgvMDNcXFwiLFxcbiAgICAgICAgcmVjb3JkczogW1xcbiAgICAgICAgICAgIFxcXCLigJjigJjkvJjljJbigJnigJk66K+E6K665YiH5o2i5LiN5YaN5Zue6aG26YOoXFxcIixcXG4gICAgICAgICAgICBcXFwi4oCY4oCY5LyY5YyW4oCZ4oCZOuiuoumYheWIh+aNokxvYWRpbmdcXFwiXFxuICAgICAgICBdXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwiMjAyNC8wOC8wMlxcXCIsXFxuICAgICAgICByZWNvcmRzOiBbXFxuICAgICAgICAgICAgXFxcIuKAmOKAmOS8mOWMluKAmeKAmTrluJblrZDmoIfnrb5cXFwiLFxcbiAgICAgICAgICAgIFxcXCLigJjigJjkv67lpI3igJnigJk65b2T5rKh5pCc57Si5Yiw6LWE5rqQ5pe25oql6ZSZXFxcIixcXG4gICAgICAgICAgICBcXFwi4oCY4oCY5L+u5aSN4oCZ4oCZOumAu+i+kemUmeivr+WvvOiHtOWGheWuuemHjeWkjS4uLi5cXFwiXFxuICAgICAgICBdXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwiMjAyNC8wOC8wMVxcXCIsXFxuICAgICAgICByZWNvcmRzOiBbXFxuICAgICAgICAgICAgXFxcIuKAmOKAmOS8mOWMluKAmeKAmTrmt7vliqDlj5HluJbml7bpl7RcXFwiLFxcbiAgICAgICAgICAgIFxcXCLigJjigJjkvJjljJbigJnigJk65aS05p2h5LiN5pi+56S66YW35ZOB77yI6YOo5YiG5Lq66K6k5Li65piv5bm/5ZGK77yJXFxcIlxcbiAgICAgICAgXVxcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogXFxcIjIwMjQvMDcvMzFcXFwiLFxcbiAgICAgICAgcmVjb3JkczogW1xcbiAgICAgICAgICAgIFxcXCLigJjigJjkv67lpI3igJnigJk66YW35ZOB5pCc57Si6aG16Z2i5peg54Ot5pCc5pe25oql6ZSZXFxcIixcXG4gICAgICAgICAgICBcXFwi4oCY4oCY5L+u5aSN4oCZ4oCZOumAu+i+kemUmeivr+WvvOiHtOWGheWuuemHjeWkjVxcXCIsXFxuICAgICAgICAgICAgXFxcIuKAmOKAmOS/ruWkjeKAmeKAmTror4Torrrml6DpmZDlj6DliqBcXFwiLFxcbiAgICAgICAgICAgIFxcXCLigJjigJjkv67lpI3igJnigJk6YXBw6aG16Z2i5Y+W5YWz77yM6K6i6ZiF6aG15peg5pWI5p6cXFxcIixcXG4gICAgICAgICAgICBcXFwi4oCY4oCY5LyY5YyW4oCZ4oCZOueUsUDpk77mjqXov5vlhaXnlKjmiLfkuLvpobXvvIzlop7liqDkuIDlsYLmuJDlj5jnvo7ljJZcXFwiLFxcbiAgICAgICAgICAgIFxcXCLigJjigJjkvJjljJbigJnigJk65YWz5rOo5a2Y5YKo5Zyo5pys5Zyw6L+H5aSa5LiN5b+F6KaB55qE5pWw5o2uXFxcIlxcbiAgICAgICAgXVxcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogXFxcIjIwMjQvMDcvMzBcXFwiLFxcbiAgICAgICAgcmVjb3JkczogW1xcbiAgICAgICAgICAgIFxcXCLigJzigJzmm7TmlrDigJ3igJ065pu05pawbuS4quWGheWuue+8jOWwseS4jee7hue7huivtOS6hlxcXCJcXG4gICAgICAgIF1cXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCIyMDI0LzA3LzI5XFxcIixcXG4gICAgICAgIHJlY29yZHM6IFtcXG4gICAgICAgICAgICBcXFwi4oCc4oCc5pSv5oyB4oCd4oCdOuivnemimFxcXCIsXFxuXFxuICAgICAgICAgICAgXFxcIuKAnOKAnOaUr+aMgeKAneKAnTrlj5HnjrA9PumFt+Wbvng1XFxcIixcXG5cXG4gICAgICAgICAgICBcXFwi4oCY4oCY5L+u5aSN4oCZ4oCZOumAu+i+kemUmeivr+WvvOiHtOaXoOmZkOW+queOr+iuv+mXrumTvuaOpVxcXCJcXG4gICAgICAgIF1cXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCIyMDI0LzA3LzI4XFxcIixcXG4gICAgICAgIHJlY29yZHM6IFtcXG4gICAgICAgICAgICBcXFwi4oCc4oCc5pSv5oyB4oCd4oCdOuWIhuexu1xcXCIsXFxuICAgICAgICAgICAgXFxcIuKAmOKAmOS/ruWkjeKAmeKAmTrliKTmlq3pobXpnaLkuI3lh4bnoa5cXFwiXFxuICAgICAgICBdXFxuICAgIH1dXFxufVxcblxcbiQuZXhwb3J0cyA9IGFwaXZpZXc7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLlm77moIdcIixcInBhdGhcIjpcImljb24udG9vbFwiLFwicnVsZVwiOlwianM6XFxuJC5leHBvcnRzID0ge1xcbiAgICBkZWxldGU6IFxcXCJodHRwczovL2ljb25mb250LnR5cmFudGcuY29tL2FwaS9pbGx1c3RyYXRlLnN2Zz9zdmdfc3RyaW5nPSUzQ3N2ZyUyMGNsYXNzJTNEJTIyaWNvbiUyMiUyMHN0eWxlJTNEJTIyd2lkdGglM0ElMjAxZW0lM0JoZWlnaHQlM0ElMjAxZW0lM0J2ZXJ0aWNhbC1hbGlnbiUzQSUyMG1pZGRsZSUzQmZpbGwlM0ElMjBjdXJyZW50Q29sb3IlM0JvdmVyZmxvdyUzQSUyMGhpZGRlbiUzQiUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDEwMjQlMjAxMDI0JTIyJTIwdmVyc2lvbiUzRCUyMjEuMSUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTNDcGF0aCUyMGQlM0QlMjJNNjg2LjA4JTIwOTIxLjZoLTMyNy42OEMyNjguMjg4JTIwOTIxLjYlMjAxODQuMzIlMjA4MzcuNjMyJTIwMTg0LjMyJTIwNzQzLjQyNFYzMjcuNjhjMC0yMi41MjglMjAxOC40MzItNDAuOTYlMjA0MC45Ni00MC45NnM0MC45NiUyMDE4LjQzMiUyMDQwLjk2JTIwNDAuOTZ2NDE1Ljc0NGMwJTIwNDcuMTA0JTIwNDcuMTA0JTIwOTYuMjU2JTIwOTIuMTYlMjA5Ni4yNTZoMzI3LjY4YzQ1LjA1NiUyMDAlMjA3MS42OC00OS4xNTIlMjA3MS42OC05Ni4yNTZWMzI3LjY4YzAtMjIuNTI4JTIwMTguNDMyLTQwLjk2JTIwNDAuOTYtNDAuOTZzNDAuOTYlMjAxOC40MzIlMjA0MC45NiUyMDQwLjk2djQxNS43NDRjMCUyMDg4LjA2NC01Ny4zNDQlMjAxNzguMTc2LTE1My42JTIwMTc4LjE3NnolMjIlMjBmaWxsJTNEJTIyJTIzMzMzMzMzJTIyJTIwJTJGJTNFJTNDcGF0aCUyMGQlM0QlMjJNOTIxLjYlMjAzNDguMTZIMTAyLjRjLTIyLjUyOCUyMDAtNDAuOTYtMTguNDMyLTQwLjk2LTQwLjk2czE4LjQzMi00MC45NiUyMDQwLjk2LTQwLjk2aDgxOS4yYzIyLjUyOCUyMDAlMjA0MC45NiUyMDE4LjQzMiUyMDQwLjk2JTIwNDAuOTZzLTE4LjQzMiUyMDQwLjk2LTQwLjk2JTIwNDAuOTZ6TTc1Ny43NiUyMDE4NC4zMkgyNjYuMjRjLTIyLjUyOCUyMDAtNDAuOTYtMTguNDMyLTQwLjk2LTQwLjk2czE4LjQzMi00MC45NiUyMDQwLjk2LTQwLjk2aDQ5MS41MmMyMi41MjglMjAwJTIwNDAuOTYlMjAxOC40MzIlMjA0MC45NiUyMDQwLjk2cy0xOC40MzIlMjA0MC45Ni00MC45NiUyMDQwLjk2eiUyMiUyMGZpbGwlM0QlMjIlMjMzMzMzMzMlMjIlMjAlMkYlM0UlM0NwYXRoJTIwZCUzRCUyMk01OTMuOTIlMjA3MTYuOGMtMjIuNTI4JTIwMC00MC45Ni0xOC40MzItNDAuOTYtNDAuOTZWNDMwLjA4YzAtMjIuNTI4JTIwMTguNDMyLTQwLjk2JTIwNDAuOTYtNDAuOTZzNDAuOTYlMjAxOC40MzIlMjA0MC45NiUyMDQwLjk2djI0NS43NmMwJTIwMjIuNTI4LTE4LjQzMiUyMDQwLjk2LTQwLjk2JTIwNDAuOTZ6TTQzMC4wOCUyMDcxNi44Yy0yMi41MjglMjAwLTQwLjk2LTE4LjQzMi00MC45Ni00MC45NlY0MzAuMDhjMC0yMi41MjglMjAxOC40MzItNDAuOTYlMjA0MC45Ni00MC45NnM0MC45NiUyMDE4LjQzMiUyMDQwLjk2JTIwNDAuOTZ2MjQ1Ljc2YzAlMjAyMi41MjgtMTguNDMyJTIwNDAuOTYtNDAuOTYlMjA0MC45NnolMjIlMjBmaWxsJTNEJTIyJTIzRTVCRDQxJTIyJTIwJTJGJTNFJTNDJTJGc3ZnJTNFXFxcIixcXG4gICAgdGFic2VhcmNoOiBcXFwiaHR0cHM6Ly9pY29uZm9udC50eXJhbnRnLmNvbS9hcGkvaWxsdXN0cmF0ZS5zdmc/c3ZnX3N0cmluZz0lM0NzdmclMjBjbGFzcyUzRCUyMmljb24lMjIlMjBzdHlsZSUzRCUyMndpZHRoJTNBJTIwMWVtJTNCaGVpZ2h0JTNBJTIwMWVtJTNCdmVydGljYWwtYWxpZ24lM0ElMjBtaWRkbGUlM0JmaWxsJTNBJTIwY3VycmVudENvbG9yJTNCb3ZlcmZsb3clM0ElMjBoaWRkZW4lM0IlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMDI0JTIwMTAyNCUyMiUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUzQ3BhdGglMjBkJTNEJTIyTTMyNy41MjY0JTIwMTYwSDExOC44MzUyYy0zLjc4ODglMjAwLTYuODYwOCUyMDMuNTg0LTYuODYwOCUyMDcuOTg3MnYyMDQuNDkyOGMwJTIwNC40MDMyJTIwMy4wNzIlMjA3Ljk4NzIlMjA2Ljg2MDglMjA3Ljk4NzJoMjA4LjY5MTJjMy43Mzc2JTIwMCUyMDYuODA5Ni0zLjU4NCUyMDYuODA5Ni03Ljk4NzJWMTY3LjkzNmMwLTQuNDAzMi0zLjA3Mi03Ljk4NzItNi44MDk2LTcuOTg3MnolMjBtNTUxLjE2OCUyMDI5NC40YzE4LjQzMiUyMDAlMjAzMy4yOCUyMDExLjExMDQlMjAzMy4yMjg4JTIwMjQuODMydjM1OS45MzZjMCUyMDEzLjcyMTYtMTQuODk5MiUyMDI0LjgzMi0zMy4yOCUyMDI0LjgzMkgxNDUuMjU0NGMtMTguNDMyJTIwMC0zMy4yOC0xMS4xMTA0LTMzLjI4LTI0LjgzMlY0NzkuMjMyYzAtMTMuNzIxNiUyMDE0Ljg0OC0yNC44MzIlMjAzMy4yOC0yNC44MzJoNzMzLjM4ODh6JTIwbS0zOC41MDI0JTIwNzEuNjhIMTgzLjcwNTZ2MjY2LjI0SDg0MC4xOTJ2LTI2Ni4yNHpNNjE2LjI5NDQlMjAxNjBjMy43ODg4JTIwMCUyMDYuODA5NiUyMDMuNTg0JTIwNi44MDk2JTIwNy45ODcydjIwNC40OTI4YzAlMjA0LjQwMzItMy4wNzIlMjA3Ljk4NzItNi44MDk2JTIwNy45ODcySDQwNy42MDMyYy0zLjczNzYlMjAwLTYuODA5Ni0zLjU4NC02LjgwOTYtNy45ODcyVjE2Ny45MzZjMC00LjQwMzIlMjAzLjA3Mi03Ljk4NzIlMjA2LjgwOTYtNy45ODcyaDIwOC42OTEyeiUyMG0tNDQuMzkwNCUyMDUxLjJINDUxLjk5MzZWMzI5LjIxNmgxMTkuOTEwNFYyMTEuMnolMjBtMzMzLjE1ODQtNTEuMmMzLjc4ODglMjAwJTIwNi44NjA4JTIwMy41ODQlMjA2Ljg2MDglMjA3Ljk4NzJ2MjA0LjQ5MjhjMCUyMDQuNDAzMi0zLjA3MiUyMDcuOTg3Mi02Ljg2MDglMjA3Ljk4NzJoLTIwOC42OTEyYy0zLjczNzYlMjAwLTYuODA5Ni0zLjU4NC02LjgwOTYtNy45ODcyVjE2Ny45MzZjMC00LjQwMzIlMjAzLjA3Mi03Ljk4NzIlMjA2LjgwOTYtNy45ODcyaDIwOC42OTEyeiUyMG0tNDQuMzkwNCUyMDUxLjJoLTExOS45MTA0VjMyOS4yMTZoMTE5LjkxMDRWMjExLjJ6JTIyJTIwJTJGJTNFJTNDJTJGc3ZnJTNFXFxcIixcXG4gICAgaG90OiBcXFwiaHR0cHM6Ly9pY29uZm9udC50eXJhbnRnLmNvbS9hcGkvaWxsdXN0cmF0ZS5zdmc/c3ZnX3N0cmluZz0lM0NzdmclMjBjbGFzcyUzRCUyMmljb24lMjIlMjBzdHlsZSUzRCUyMndpZHRoJTNBJTIwMWVtJTNCaGVpZ2h0JTNBJTIwMWVtJTNCdmVydGljYWwtYWxpZ24lM0ElMjBtaWRkbGUlM0JmaWxsJTNBJTIwY3VycmVudENvbG9yJTNCb3ZlcmZsb3clM0ElMjBoaWRkZW4lM0IlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMDI0JTIwMTAyNCUyMiUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUzQ3BhdGglMjBkJTNEJTIyTTUyOC41OCUyMDYyMi4wN3EtMTcuODglMjAwLTI4LjE1JTIwMTMuMjd0LTEwLjI4JTIwMzQuMzdxMCUyMDIwLjgyJTIwMTAlMjAzNHQyNy42JTIwMTMuMjlxMTcuODclMjAwJTIwMjcuODMtMTIuNjd0OS45NC0zNHEwLTIyLjMxLTkuNjYtMzUuMjV0LTI3LjI4LTEzLjAxeiUyMiUyMGZpbGwlM0QlMjIlMjNGRjcxNkUlMjIlMjAlMkYlM0UlM0NwYXRoJTIwZCUzRCUyMk04NzQuMjQlMjA1ODYuMzhDODY1LjMlMjA0ODYuMTQlMjA3NzklMjA0MDkuNzIlMjA3NzIuODUlMjAzMTEuNGMtMjkuMTklMjA1My43Ny0zMi4yNiUyMDg5LjEtMzUuMzMlMjAxNDIuODctODkuMS0xMTAuNjEtMTgyLjgxLTI1Ni41NS0xNjEuMy0zOTAuMTklMjAwJTIwMC0xNzAuNTIlMjA1MC42OS0yMzkuNjUlMjAzMTYuNDUtNDMtMzUuMzMtMzkuOTQtMTEwLjYxLTE4LjQzLTE1NS4xNUMyNzElMjAyNTcuOTEtMy4yOCUyMDU3NC41NiUyMDI1Ny44OCUyMDgzOC4wNSUyMDMxMS44MiUyMDg5MS43NiUyMDQwMi41NCUyMDk2MiUyMDUyMi40MyUyMDk1OS44NmgwLjY3YzguNjMlMjAwLjQxJTIwMTY2Ljg0JTIwMiUyMDI5NC42MS0xNDguNjklMjA1OS42OC04Ni4xNyUyMDY0LjktMTMwLjg4JTIwNTYuNTMtMjI0Ljc5ek00MzMuNzYlMjA3MzEuNjVhOS4yJTIwOS4yJTIwMCUyMDAlMjAxLTkuMiUyMDkuMmgtMTJhOS4yJTIwOS4yJTIwMCUyMDAlMjAxLTkuMjEtOS4yVjY4MmgtNjAuODF2NDkuNjlhOS4yJTIwOS4yJTIwMCUyMDAlMjAxLTkuMjElMjA5LjJoLTEyYTkuMiUyMDkuMiUyMDAlMjAwJTIwMS05LjItOS4yVjYwNS41N2E3LjQ1JTIwNy40NSUyMDAlMjAwJTIwMSUyMDcuNDUtNy40NWgxNS41YTcuNDUlMjA3LjQ1JTIwMCUyMDAlMjAxJTIwNy40NiUyMDcuNDV2NTAuMTRoNjAuODF2LTUwLjE0YTcuNDUlMjA3LjQ1JTIwMCUyMDAlMjAxJTIwNy40Ni03LjQ1aDE1LjVhNy40NSUyMDcuNDUlMjAwJTIwMCUyMDElMjA3LjQ1JTIwNy40NXpNNTc4JTIwNzIyLjU2cS0xOS4zOCUyMDIwLjc4LTUwLjgxJTIwMjAuNzgtMzAuNjklMjAwLTQ5Ljg2LTIwLjE0dC0xOS4xNi01MS44M3EwLTMzLjU0JTIwMTkuNTgtNTQuNnQ1MS43NC0yMXEzMC42JTIwMCUyMDQ5LjI1JTIwMjAuMzZ0MTguNjYlMjA1Mi4zNHEwLjAxJTIwMzMuMzEtMTkuNCUyMDU0LjA5eiUyMG0xMzMuODYtMTA1LjIxYTUuNjUlMjA1LjY1JTIwMCUyMDAlMjAxLTUuNjUlMjA1LjY1aC0zNS4wOHYxMTBhNy44NCUyMDcuODQlMjAwJTIwMCUyMDEtNy44NCUyMDcuODRoLTE0LjgzYTcuODQlMjA3Ljg0JTIwMCUyMDAlMjAxLTcuODQtNy44NFY2MjNoLTMzLjQ0YTcuMTklMjA3LjE5JTIwMCUyMDAlMjAxLTcuMTktNy4xOVY2MDUuM2E3LjE4JTIwNy4xOCUyMDAlMjAwJTIwMSUyMDcuMTktNy4xOGg5OWE1LjY0JTIwNS42NCUyMDAlMjAwJTIwMSUyMDUuNjUlMjA1LjY0eiUyMiUyMGZpbGwlM0QlMjIlMjNGRjcxNkUlMjIlMjAlMkYlM0UlM0NwYXRoJTIwZCUzRCUyMk03MzcuNTIlMjA0NTQuMjdDNzA1LjA2JTIwNDE0JTIwNjcyJTIwMzY5JTIwNjQ0LjExJTIwMzIxLjYzJTIwNDQyLjc2JTIwMzQ0LjQyJTIwMjg2LjMlMjA1MTUuMzIlMjAyODYuMyUyMDcyMi43NmE0MDIuMTUlMjA0MDIuMTUlMjAwJTIwMCUyMDAlMjAzOC4yNSUyMDE3MS43M2M1MS42NCUyMDM2LjMzJTIwMTE4LjM0JTIwNjYuNzYlMjAxOTcuODglMjA2NS4zN2gwLjY3YzguNjMlMjAwLjQxJTIwMTY2Ljg0JTIwMiUyMDI5NC42MS0xNDguNjklMjA1OS42OC04Ni4yMyUyMDY0LjktMTMwLjg5JTIwNTYuNTMtMjI0LjgtOC40NC05NC41NS04NS42OC0xNjcuOTEtOTkuNTktMjU4LjQ0cS00LjY1LTEtOS4zNC0xLjg3Yy0yMi4yMyUyMDQ1Ljk0LTI1LjAxJTIwNzkuNDgtMjcuNzklMjAxMjguMjF6TTQzMy43NiUyMDczMS42NWE5LjIlMjA5LjIlMjAwJTIwMCUyMDEtOS4yJTIwOS4yaC0xMmE5LjIlMjA5LjIlMjAwJTIwMCUyMDEtOS4yMS05LjJWNjgyaC02MC44MXY0OS42OWE5LjIlMjA5LjIlMjAwJTIwMCUyMDEtOS4yMSUyMDkuMmgtMTJhOS4yJTIwOS4yJTIwMCUyMDAlMjAxLTkuMi05LjJWNjA1LjU3YTcuNDUlMjA3LjQ1JTIwMCUyMDAlMjAxJTIwNy40NS03LjQ1aDE1LjVhNy40NSUyMDcuNDUlMjAwJTIwMCUyMDElMjA3LjQ2JTIwNy40NXY1MC4xNGg2MC44MXYtNTAuMTRhNy40NSUyMDcuNDUlMjAwJTIwMCUyMDElMjA3LjQ2LTcuNDVoMTUuNWE3LjQ1JTIwNy40NSUyMDAlMjAwJTIwMSUyMDcuNDUlMjA3LjQ1ek01NzglMjA3MjIuNTZxLTE5LjM4JTIwMjAuNzgtNTAuODElMjAyMC43OC0zMC42OSUyMDAtNDkuODYtMjAuMTR0LTE5LjE2LTUxLjgzcTAtMzMuNTQlMjAxOS41OC01NC42dDUxLjc0LTIxcTMwLjYlMjAwJTIwNDkuMjUlMjAyMC4zNnQxOC42NiUyMDUyLjM0cTAuMDElMjAzMy4zMS0xOS40JTIwNTQuMDl6JTIwbTEzMy44Ni0xMDUuMjFhNS42NSUyMDUuNjUlMjAwJTIwMCUyMDEtNS42NSUyMDUuNjVoLTM1LjA4djExMGE3Ljg0JTIwNy44NCUyMDAlMjAwJTIwMS03Ljg0JTIwNy44NGgtMTQuODNhNy44NCUyMDcuODQlMjAwJTIwMCUyMDEtNy44NC03Ljg0VjYyM2gtMzMuNDRhNy4xOSUyMDcuMTklMjAwJTIwMCUyMDEtNy4xOS03LjE5VjYwNS4zYTcuMTglMjA3LjE4JTIwMCUyMDAlMjAxJTIwNy4xOS03LjE4aDk5YTUuNjQlMjA1LjY0JTIwMCUyMDAlMjAxJTIwNS42NSUyMDUuNjR6JTIyJTIwZmlsbCUzRCUyMiUyM0ZGNUM2NCUyMiUyMCUyRiUzRSUzQ3BhdGglMjBkJTNEJTIyTTUyOC41OCUyMDYyMi4wN3EtMTcuODglMjAwLTI4LjE1JTIwMTMuMjd0LTEwLjI4JTIwMzQuMzdxMCUyMDIwLjgyJTIwMTAlMjAzNHQyNy42JTIwMTMuMjlxMTcuODclMjAwJTIwMjcuODMtMTIuNjd0OS45NC0zNHEwLTIyLjMxLTkuNjYtMzUuMjV0LTI3LjI4LTEzLjAxeiUyMiUyMGZpbGwlM0QlMjIlMjNGQzQ5NTYlMjIlMjAlMkYlM0UlM0NwYXRoJTIwZCUzRCUyMk04NzQuMjQlMjA1ODYuMzhjLTUuODQtNjUuNDYtNDQuNjctMTIwLjc3LTcyLjYyLTE3OC42NGE0MDQlMjA0MDQlMjAwJTIwMCUyMDAtNjEuMzIlMjA4LjM2Yy0xLjIxJTIwMTEuOTMtMiUyMDI0LjQ1LTIuNzglMjAzOC4xN1E3MjUuMjclMjA0MzkuMDYlMjA3MTMlMjA0MjNjLTEzNy42MyUyMDQwLTI0NC45MyUyMDE1MS4zLTI3OS4yNCUyMDI5MS4yNnYxNy4zOWE5LjE5JTIwOS4xOSUyMDAlMjAwJTIwMS01LjQzJTIwOC4zOCUyMDQwNi4zMSUyMDQwNi4zMSUyMDAlMjAwJTIwMCUyMDE5LjExJTIwMjExLjYyJTIwMjk5Ljc1JTIwMjk5Ljc1JTIwMCUyMDAlMjAwJTIwNzUlMjA4LjIxaDAuNjdjOC42MyUyMDAuNDElMjAxNjYuODQlMjAyJTIwMjk0LjYxLTE0OC42OSUyMDU5LjY3LTg2LjE3JTIwNjQuODktMTMwLjg4JTIwNTYuNTItMjI0Ljc5ek01NzglMjA3MjIuNTZxLTE5LjM4JTIwMjAuNzgtNTAuODElMjAyMC43OC0zMC42OSUyMDAtNDkuODYtMjAuMTR0LTE5LjE2LTUxLjgzcTAtMzMuNTQlMjAxOS41OC01NC42dDUxLjc0LTIxcTMwLjYlMjAwJTIwNDkuMjUlMjAyMC4zNnQxOC42NiUyMDUyLjM0cTAuMDElMjAzMy4zMS0xOS40JTIwNTQuMDl6JTIwbTEzMy44Ni0xMDUuMjFhNS42NSUyMDUuNjUlMjAwJTIwMCUyMDEtNS42NSUyMDUuNjVoLTM1LjA4djExMGE3Ljg0JTIwNy44NCUyMDAlMjAwJTIwMS03Ljg0JTIwNy44NGgtMTQuODNhNy44NCUyMDcuODQlMjAwJTIwMCUyMDEtNy44NC03Ljg0VjYyM2gtMzMuNDRhNy4xOSUyMDcuMTklMjAwJTIwMCUyMDEtNy4xOS03LjE5VjYwNS4zYTcuMTglMjA3LjE4JTIwMCUyMDAlMjAxJTIwNy4xOS03LjE4aDk5YTUuNjQlMjA1LjY0JTIwMCUyMDAlMjAxJTIwNS42NSUyMDUuNjR6JTIyJTIwZmlsbCUzRCUyMiUyM0ZDNDk1NiUyMiUyMCUyRiUzRSUzQ3BhdGglMjBkJTNEJTIyTTcxMS44NiUyMDYxNS4zNnYyYTUuNjUlMjA1LjY1JTIwMCUyMDAlMjAxLTUuNjUlMjA1LjY1aC0xLjM1YTQwNC41NCUyMDQwNC41NCUyMDAlMjAwJTIwMC0zMy43MyUyMDQzLjMzVjczM2E3Ljg0JTIwNy44NCUyMDAlMjAwJTIwMS03Ljg0JTIwNy44NGgtMTQuODNhNy44NCUyMDcuODQlMjAwJTIwMCUyMDEtNy44NC03Ljg0di0xM2E0MDIuMTIlMjA0MDIuMTIlMjAwJTIwMCUyMDAtMzguMjklMjAxNzEuODNBNDA3LjQzJTIwNDA3LjQzJTIwMCUyMDAlMjAwJTIwNjA2LjIlMjA5NDhjNTktMTUuODUlMjAxNDAtNTIuNDglMjAyMTEuNTEtMTM2Ljc4JTIwNTkuNjgtODYuMjMlMjA2NC45LTEzMC44OSUyMDU2LjUzLTIyNC44LTIuMTgtMjQuMzgtOC45My00Ny4zNC0xOC02OS41NWE0MDQuMzglMjA0MDQuMzglMjAwJTIwMCUyMDAtMTQ0LjM4JTIwOTguNDl6JTIyJTIwZmlsbCUzRCUyMiUyM0YyM0Q0RiUyMiUyMCUyRiUzRSUzQ3BhdGglMjBkJTNEJTIyTTYwNC4zNiUyMDQyMS4xMmMwJTIwMTMuNjUtNDAuOSUyMDMuMzctOTEuMzUlMjAzLjUycy05MS4zMyUyMDEwLjY2LTkxLjM3LTMlMjA0MC44MS0zMy4yOSUyMDkxLjI2LTMzLjQ0JTIwOTEuNDIlMjAxOS4yNyUyMDkxLjQ2JTIwMzIuOTJ6JTIyJTIwZmlsbCUzRCUyMiUyM0ZGRkZGRiUyMiUyMCUyRiUzRSUzQyUyRnN2ZyUzRVxcXCIsXFxuICAgIGdvb2Q6IFxcXCJodHRwczovL2ljb25mb250LnR5cmFudGcuY29tL2FwaS9pbGx1c3RyYXRlLnN2Zz9zdmdfc3RyaW5nPSUzQ3N2ZyUyMGNsYXNzJTNEJTIyaWNvbiUyMiUyMHN0eWxlJTNEJTIyd2lkdGglM0ElMjAxZW0lM0JoZWlnaHQlM0ElMjAxZW0lM0J2ZXJ0aWNhbC1hbGlnbiUzQSUyMG1pZGRsZSUzQmZpbGwlM0ElMjBjdXJyZW50Q29sb3IlM0JvdmVyZmxvdyUzQSUyMGhpZGRlbiUzQiUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDEwMjQlMjAxMDI0JTIyJTIwdmVyc2lvbiUzRCUyMjEuMSUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTNDcGF0aCUyMGQlM0QlMjJNNTkxLjYyODE5JTIwMTIxLjkwNDc2MmM3LjY4JTIwMCUyMDIxLjE4NzA0OCUyMDEuNjMzNTI0JTIwMzEuNTI0NTcyJTIwNC45NzM3MTQlMjA1MC45MDc0MjklMjAxNi41MDU5MDUlMjA4MC4yMTMzMzMlMjA3MC41ODI4NTclMjA2OC4zMzk4MDklMjAxMjQuNzA4NTcybC0xLjIxOTA0NyUyMDUuMDcxMjM4LTQ1LjM3Mjk1MyUyMDE3MC4xNzkwNDdoMTc5LjczNjM4MWMyMS44MjA5NTIlMjAwJTIwNDMuMzk4MDk1JTIwOC4wOTQ0NzYlMjA1OC4wMjY2NjclMjAyNC4yODM0MjklMjAxNi4zMzUyMzglMjAxOC4wOTA2NjclMjAyMi42OTg2NjclMjA0Mi4wMzI3NjIlMjAxNy44NDY4NTclMjA2NS4yNjc4MDlsLTEuMjE5MDQ3JTIwNC45NzM3MTUtOTQuNzY4NzYyJTIwMzM3LjQzMjM4MWE1OS4yOTQ0NzYlMjA1OS4yOTQ0NzYlMjAwJTIwMCUyMDEtNTIuNjYyODU3JTIwNDMuMTU0Mjg1bC00LjM4ODU3MiUyMDAuMTQ2Mjg2SDI2OC4xOTA0NzZWNDQ0LjAwMTUyNGM5Ny4wODQ5NTItMjEuMDE2MzgxJTIwMjM5LjA3OTYxOS0yNzkuMjgzODElMjAyMzkuMDc5NjE5LTI3OS4yODM4MUM1MjcuNDU3NTI0JTIwMTM3LjMzNzkwNSUyMDU1MS45MzYlMjAxMjEuOTA0NzYyJTIwNTkxLjYyODE5JTIwMTIxLjkwNDc2MnpNODI4Ljk1MjM4MSUyMDUwMS4xMjYwOTVjMC0wLjMxNjk1Mi0wLjE0NjI4Ni0wLjUxMi0wLjU2MDc2Mi0wLjk3NTIzOCUyMDAuMzQxMzMzJTIwMC4zOTAwOTUtMC45NzUyMzgtMC4xNzA2NjctMy43NTQ2NjctMC4xNzA2NjdINTQ5LjY5Mjk1Mmw2OS45MDAxOTEtMjYyLjIxNzE0MmM1LjAyMjQ3Ni0xOC43NzMzMzMtNC4xNDQ3NjItMzYuNDk4Mjg2LTE4Ljk2ODM4MS00MS4zMDEzMzRhNTIuNTg5NzE0JTIwNTIuNTg5NzE0JTIwMCUyMDAlMjAwLTkuMDIwOTUyLTEuNDE0MDk1Yy0xMC45MjI2NjclMjAwLTE1LjQ1NzUyNCUyMDEuMjY3ODEtMjEuMDY1MTQzJTIwNy41NTgwOTVsLTEuOTUwNDc3JTIwMi4yOTE4MS05LjIxNiUyMDE2LjA5MTQyOC05Ljg3NDI4NSUyMDE2LjcwMDk1M2ExNTM0LjY4MzQyOSUyMDE1MzQuNjgzNDI5JTIwMCUyMDAlMjAxLTcyLjIxNjM4MSUyMDExMC4yMDE5MDVjLTI4LjAxMzcxNCUyMDM4Ljc2NTcxNC01NS41Mzk4MSUyMDcyLjE2NzYxOS04Mi41NTM5MDUlMjA5OC44MTYtMTcuOTY4NzYyJTIwMTcuNzI0OTUyLTM1LjU5NjE5JTIwMzIuNDk5ODEtNTMuMzk0Mjg2JTIwNDMuOTU4ODU3VjgyOC45NTIzODFoMzk1LjYwNTMzNEw4MjguOTUyMzgxJTIwNTAxLjEyNjA5NXpNMTIxLjkwNDc2MiUyMDQzOC44NTcxNDNoNzMuMTQyODU3djQ2My4yMzgwOTVIMTIxLjkwNDc2MnolMjIlMjAlMkYlM0UlM0MlMkZzdmclM0VcXFwiLFxcbiAgICBkaXNjdXNzOiBcXFwiaHR0cHM6Ly9pY29uZm9udC50eXJhbnRnLmNvbS9hcGkvaWxsdXN0cmF0ZS5zdmc/c3ZnX3N0cmluZz0lM0NzdmclMjBjbGFzcyUzRCUyMmljb24lMjIlMjBzdHlsZSUzRCUyMndpZHRoJTNBJTIwMWVtJTNCaGVpZ2h0JTNBJTIwMWVtJTNCdmVydGljYWwtYWxpZ24lM0ElMjBtaWRkbGUlM0JmaWxsJTNBJTIwY3VycmVudENvbG9yJTNCb3ZlcmZsb3clM0ElMjBoaWRkZW4lM0IlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMDI0JTIwMTAyNCUyMiUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUzQ3BhdGglMjBkJTNEJTIyTTczMS40Mjg1NzElMjAyNjguMTkwNDc2YTczLjE0Mjg1NyUyMDczLjE0Mjg1NyUyMDAlMjAwJTIwMSUyMDczLjE0Mjg1OCUyMDczLjE0Mjg1N3YzNjUuNzE0Mjg2YTczLjE0Mjg1NyUyMDczLjE0Mjg1NyUyMDAlMjAwJTIwMS03My4xNDI4NTglMjA3My4xNDI4NTdINDc5LjQ3NTgxbC0xNjUuMzc2JTIwMTE0LjQ5Mjk1M0EyOS4yNTcxNDMlMjAyOS4yNTcxNDMlMjAwJTIwMCUyMDElMjAyNjguMTkwNDc2JTIwODcwLjY0MzgxVjc4MC4xOTA0NzZIMTcwLjY2NjY2N2E3My4xNDI4NTclMjA3My4xNDI4NTclMjAwJTIwMCUyMDEtNzMuMTQyODU3LTczLjE0Mjg1N1YzNDEuMzMzMzMzYTczLjE0Mjg1NyUyMDczLjE0Mjg1NyUyMDAlMjAwJTIwMSUyMDczLjE0Mjg1Ny03My4xNDI4NTdoNTYwLjc2MTkwNHolMjBtMCUyMDczLjE0Mjg1N0gxNzAuNjY2NjY3djM2NS43MTQyODZoMTcwLjY2NjY2NnY3OS43OTg4NTdMNDU2LjYzMDg1NyUyMDcwNy4wNDc2MTlINzMxLjQyODU3MVYzNDEuMzMzMzMzeiUyMG0tMjg1Ljc0NDc2MSUyMDIxOS40Mjg1NzJ2NzMuMTQyODU3SDI0My44MDk1MjR2LTczLjE0Mjg1N2gyMDEuODc0Mjg2ek04NTMuMzMzMzMzJTIwMTQ2LjI4NTcxNGE3My4xNDI4NTclMjA3My4xNDI4NTclMjAwJTIwMCUyMDElMjA3My4xNDI4NTclMjA3My4xNDI4NTd2MzkwLjA5NTIzOWgtNzMuMTQyODU3VjIxOS40Mjg1NzFIMjkyLjU3MTQyOVYxNDYuMjg1NzE0aDU2MC43NjE5MDR6TTU4NS4xNDI4NTclMjA0MTQuNDc2MTl2NzMuMTQyODU4SDI0My44MDk1MjR2LTczLjE0Mjg1OGgzNDEuMzMzMzMzeiUyMiUyMCUyRiUzRSUzQyUyRnN2ZyUzRVxcXCIsXFxuICAgIHNoYXJlOiBcXFwiaHR0cHM6Ly9pY29uZm9udC50eXJhbnRnLmNvbS9hcGkvaWxsdXN0cmF0ZS5zdmc/c3ZnX3N0cmluZz0lM0NzdmclMjBjbGFzcyUzRCUyMmljb24lMjIlMjBzdHlsZSUzRCUyMndpZHRoJTNBJTIwMWVtJTNCaGVpZ2h0JTNBJTIwMWVtJTNCdmVydGljYWwtYWxpZ24lM0ElMjBtaWRkbGUlM0JmaWxsJTNBJTIwY3VycmVudENvbG9yJTNCb3ZlcmZsb3clM0ElMjBoaWRkZW4lM0IlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMDI0JTIwMTAyNCUyMiUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUzQ3BhdGglMjBkJTNEJTIyTTM1NC45ODY2NjclMjAyMTkuNDI4NTcxdjczLjE0Mjg1OEgxOTUuMDQ3NjE5djUzNi4zODA5NTJoNTg1LjE0Mjg1N1Y1NDguNTcxNDI5aDczLjE0Mjg1N1Y4MjguOTUyMzgxYTczLjE0Mjg1NyUyMDczLjE0Mjg1NyUyMDAlMjAwJTIwMS03My4xNDI4NTclMjA3My4xNDI4NTdIMTk1LjA0NzYxOWE3My4xNDI4NTclMjA3My4xNDI4NTclMjAwJTIwMCUyMDEtNzMuMTQyODU3LTczLjE0Mjg1N1YyOTIuNTcxNDI5YTczLjE0Mjg1NyUyMDczLjE0Mjg1NyUyMDAlMjAwJTIwMSUyMDczLjE0Mjg1Ny03My4xNDI4NThoMTU5LjkzOTA0OHolMjBtMzgzLjgyOTMzMy0xMDAuNDczOTA0bDE3Mi4zOTc3MTQlMjAxNzIuMzczMzMzLTE4MS4wMDQxOSUyMDE4MS4wMjg1NzEtNTEuNzM2MzgxLTUxLjcxMkw3NTcuNzg0MzgxJTIwMzQxLjMzMzMzM0g2NzAuNDc2MTljLTEzOS4wNjg5NTIlMjAwLTI1Mi4yNDUzMzMlMjAxMTAuODg0NTcxLTI1NS45MDI0NzYlMjAyNDkuMDc1ODFMNDE0LjQ3NjE5JTIwNTk3LjMzMzMzM3Y5Ny41MjM4MWgtNzMuMTQyODU3di05Ny41MjM4MUMzNDEuMzMzMzMzJTIwNDE1LjU0ODk1MiUyMDQ4OC42OTE4MSUyMDI2OC4xOTA0NzYlMjA2NzAuNDc2MTklMjAyNjguMTkwNDc2aDExNC4xMjcyMzlsLTk3LjQ5OTQyOS05Ny41MjM4MDklMjA1MS43MTItNTEuNzEyeiUyMiUyMCUyRiUzRSUzQyUyRnN2ZyUzRVxcXCIsXFxuICAgIHJlcGx5c29ydDogXFxcImh0dHBzOi8vaWNvbmZvbnQudHlyYW50Zy5jb20vYXBpL2lsbHVzdHJhdGUuc3ZnP3N2Z19zdHJpbmc9JTNDc3ZnJTIwY2xhc3MlM0QlMjJpY29uJTIyJTIwc3R5bGUlM0QlMjJ3aWR0aCUzQSUyMDFlbSUzQmhlaWdodCUzQSUyMDFlbSUzQnZlcnRpY2FsLWFsaWduJTNBJTIwbWlkZGxlJTNCZmlsbCUzQSUyMGN1cnJlbnRDb2xvciUzQm92ZXJmbG93JTNBJTIwaGlkZGVuJTNCJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTAyNCUyMDEwMjQlMjIlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlM0NwYXRoJTIwZCUzRCUyMk0xNDYuMjg1NzE0JTIwNjA5LjUyMzgxaDEyMS45MDQ3NjJ2MjQzLjgwOTUyM0gxNDYuMjg1NzE0eiUyMG0xOTUuMDQ3NjE5LTE5NS4wNDc2MmgxMjEuOTA0NzYydjQzOC44NTcxNDNoLTEyMS45MDQ3NjJ6JTIwbTE5NS4wNDc2MTklMjA0OC43NjE5MDVoMTIxLjkwNDc2MnYzOTAuMDk1MjM4aC0xMjEuOTA0NzYyeiUyMG0xOTUuMDQ3NjE5LTI5Mi41NzE0MjhoMTIxLjkwNDc2MnY2ODIuNjY2NjY2aC0xMjEuOTA0NzYyeiUyMiUyMCUyRiUzRSUzQyUyRnN2ZyUzRVxcXCIsXFxuICAgIGFwcGxpY2F0aW9uOiBcXFwiaHR0cHM6Ly9pY29uZm9udC50eXJhbnRnLmNvbS9hcGkvaWxsdXN0cmF0ZS5zdmc/c3ZnX3N0cmluZz0lM0NzdmclMjBjbGFzcyUzRCUyMmljb24lMjIlMjBzdHlsZSUzRCUyMndpZHRoJTNBJTIwMWVtJTNCaGVpZ2h0JTNBJTIwMWVtJTNCdmVydGljYWwtYWxpZ24lM0ElMjBtaWRkbGUlM0JmaWxsJTNBJTIwY3VycmVudENvbG9yJTNCb3ZlcmZsb3clM0ElMjBoaWRkZW4lM0IlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMDI0JTIwMTAyNCUyMiUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUzQ3BhdGglMjBkJTNEJTIyTTUxMiUyMDUxMm0tNTEyJTIwMGE1MTIlMjA1MTIlMjAwJTIwMSUyMDAlMjAxMDI0JTIwMCUyMDUxMiUyMDUxMiUyMDAlMjAxJTIwMC0xMDI0JTIwMFolMjIlMjBmaWxsJTNEJTIyJTIzQjJEQjQ4JTIyJTIwJTJGJTNFJTNDcGF0aCUyMGQlM0QlMjJNMjUyLjU4NjY2NyUyMDMwMS4zOTczMzNjMC0yNi45NjUzMzMlMjAyMS45NDI4NTctNDguODEwNjY3JTIwNDguODEwNjY2LTQ4LjgxMDY2NmgxNDkuNDU1MjM4YzI2Ljk0MDk1MiUyMDAlMjA0OC43ODYyODYlMjAyMS45NDI4NTclMjA0OC43ODYyODYlMjA0OC44MTA2NjZ2MTQ5LjQ1NTIzOGMwJTIwMjYuOTQwOTUyLTIxLjkxODQ3NiUyMDQ4Ljc4NjI4Ni00OC44MTA2NjclMjA0OC43ODYyODZoLTE0OS40MzA4NTdjLTI2Ljk2NTMzMyUyMDAtNDguODEwNjY3LTIxLjkxODQ3Ni00OC44MTA2NjYtNDguODEwNjY3di0xNDkuNDMwODU3eiUyMG0wJTIwMjg1LjQyNzgxYzAtMjYuOTY1MzMzJTIwMjEuOTQyODU3LTQ4LjgxMDY2NyUyMDQ4LjgxMDY2Ni00OC44MTA2NjdoMTQ5LjQ1NTIzOGMyNi45NDA5NTIlMjAwJTIwNDguNzg2Mjg2JTIwMjEuOTE4NDc2JTIwNDguNzg2Mjg2JTIwNDguODEwNjY3djE0OS40MzA4NTdjMCUyMDI2Ljk2NTMzMy0yMS45MTg0NzYlMjA0OC44MTA2NjctNDguODEwNjY3JTIwNDguODEwNjY3aC0xNDkuNDMwODU3Yy0yNi45NjUzMzMlMjAwLTQ4LjgxMDY2Ny0yMS45NDI4NTctNDguODEwNjY2LTQ4LjgxMDY2N3YtMTQ5LjQ1NTIzOHolMjBtMjg1LjQyNzgwOS0yODUuNDI3ODFjMC0yNi45NjUzMzMlMjAyMS45MTg0NzYtNDguODEwNjY3JTIwNDguODEwNjY3LTQ4LjgxMDY2NmgxNDkuNDMwODU3YzI2Ljk2NTMzMyUyMDAlMjA0OC44MTA2NjclMjAyMS45NDI4NTclMjA0OC44MTA2NjclMjA0OC44MTA2NjZ2MTQ5LjQ1NTIzOGMwJTIwMjYuOTQwOTUyLTIxLjk0Mjg1NyUyMDQ4Ljc4NjI4Ni00OC44MTA2NjclMjA0OC43ODYyODZoLTE0OS40NTUyMzhjLTI2Ljk0MDk1MiUyMDAtNDguNzg2Mjg2LTIxLjkxODQ3Ni00OC43ODYyODYtNDguODEwNjY3di0xNDkuNDMwODU3eiUyMG0wJTIwMjg1LjQyNzgxYzAtMjYuOTY1MzMzJTIwMjEuOTE4NDc2LTQ4LjgxMDY2NyUyMDQ4LjgxMDY2Ny00OC44MTA2NjdoMTQ5LjQzMDg1N2MyNi45NjUzMzMlMjAwJTIwNDguODEwNjY3JTIwMjEuOTE4NDc2JTIwNDguODEwNjY3JTIwNDguODEwNjY3djE0OS40MzA4NTdjMCUyMDI2Ljk2NTMzMy0yMS45NDI4NTclMjA0OC44MTA2NjctNDguODEwNjY3JTIwNDguODEwNjY3aC0xNDkuNDU1MjM4Yy0yNi45NDA5NTIlMjAwLTQ4Ljc4NjI4Ni0yMS45NDI4NTctNDguNzg2Mjg2LTQ4LjgxMDY2N3YtMTQ5LjQ1NTIzOHolMjIlMjBmaWxsJTNEJTIyJTIzRkZGRkZGJTIyJTIwJTJGJTNFJTNDJTJGc3ZnJTNFXFxcIixcXG4gICAgcG9zdDogXFxcImh0dHBzOi8vaWNvbmZvbnQudHlyYW50Zy5jb20vYXBpL2lsbHVzdHJhdGUuc3ZnP3N2Z19zdHJpbmc9JTNDc3ZnJTIwY2xhc3MlM0QlMjJpY29uJTIyJTIwc3R5bGUlM0QlMjJ3aWR0aCUzQSUyMDFlbSUzQmhlaWdodCUzQSUyMDFlbSUzQnZlcnRpY2FsLWFsaWduJTNBJTIwbWlkZGxlJTNCZmlsbCUzQSUyMGN1cnJlbnRDb2xvciUzQm92ZXJmbG93JTNBJTIwaGlkZGVuJTNCJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTAyNCUyMDEwMjQlMjIlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlM0NwYXRoJTIwZCUzRCUyMk03MDAuNDI4ODkxMjIlMjA0ODMuNjc0OTUyNTFoLTc3LjE0MjYwNjE5di04NS43ODkwNjM4Mmg3Ny4xNDI2MDYxOWE4LjA2OTIwNzM0JTIwOC4wNjkyMDczNCUyMDAlMjAwJTIwMCUyMDguNTk3MzI5NDUtOC41OTczMjk0NnYtMTcuMDk2NDAyNTNhOC4wNjkyMDczNCUyMDguMDY5MjA3MzQlMjAwJTIwMCUyMDAtOC41OTczMjk0NS04LjU5NzMyOTQ1aC03Ny4xNDI2MDYxOVYzMjAuNzY3ODQ2NTlhOC4wNjkyMDczNCUyMDguMDY5MjA3MzQlMjAwJTIwMCUyMDAtOC41OTczMjk0NS04LjU5NzMyOTQ1aC0xNy4wOTY0MDI1M2E4LjA2OTIwNzM0JTIwOC4wNjkyMDczNCUyMDAlMjAwJTIwMC04LjU5NzMyOTQ2JTIwOC41OTczMjk0NXYxNjIuOTA3MTA1OTJoLTI1LjY1Njg4NjgyYTguMDY5MjA3MzQlMjA4LjA2OTIwNzM0JTIwMCUyMDAlMjAwLTguNTk3MzI4NDclMjA4LjU5NzMyODQ3djE3MS40NTUzMDgxN2E4LjA4MTQ4OTM5JTIwOC4wODE0ODkzOSUyMDAlMjAwJTIwMCUyMDguNTk3MzI4NDclMjA4LjU5NzMyODQ3aDk0LjI3NTg1NTg0YTUxLjU4Mzk3NDc1JTIwNTEuNTgzOTc0NzUlMjAwJTIwMCUyMDAlMjA1MS40NDg4NzQyLTUxLjQ2MTE1NTI2VjQ5Mi4yMzU0MzU4M2E4LjE2NzQ2MjczJTIwOC4xNjc0NjI3MyUyMDAlMjAwJTIwMC04LjYzNDE3NTU5LTguNTYwNDgzMzJ6JTIwbS0yNS42OTM3MzE5OSUyMDEzNy4xNjQyNDU3NWExNy4xOTQ2NTc5MiUyMDE3LjE5NDY1NzkyJTIwMCUyMDAlMjAxLTE3LjEyMDk2NjYyJTIwMTcuMTMzMjQ4NjhoLTYzLjQzNjAwNzI1Yy0zLjQxNDM2NzY5JTIwMC01LjE0NjExNTYzLTEuNzQ0MDI5OTgtNS4xNDYxMTU2My01LjE1ODM5NzY4di0xMDkuNzM4NzY1ODJjMC0zLjQwMjA4NTY0JTIwMS43MzE3NDc5NC01LjE0NjExNTYzJTIwNS4xNDYxMTU2My01LjE0NjExNTYzaDc1LjQxMDg1ODI1YzMuNDAyMDg1NjQlMjAwJTIwNS4xNDYxMTU2MyUyMDEuNzQ0MDI5OTglMjA1LjE0NjExNTYyJTIwNS4xNDYxMTU2M3pNNTEzLjU0NzUxOTIlMjA2MzcuOTcyNDQ2OTRjLTYuODkwMTQ1NjEtMS43NDQwMjk5OC0xNy4xMzMyNDg2Ny02LjgyODczNTM4LTMyLjU4Mzg3NzU5LTE3LjEzMzI0ODY4LTMyLjU4Mzg3NzU5LTI1LjY5MzczMTk4LTMwLjg1MjEyOTY2LTUxLjQ0ODg3NDItMzAuODUyMTI5NjYtNTEuNDQ4ODc0MlYzODkuMzI1NDA1MzdhOC4wNjkyMDczNCUyMDguMDY5MjA3MzQlMjAwJTIwMCUyMDAtOC41OTczMjk0NS04LjU5NzMyOTQ1aC0xNy4wOTY0MDI1M2E4LjA2OTIwNzM0JTIwOC4wNjkyMDczNCUyMDAlMjAwJTIwMC04LjU5NzMyOTQ1JTIwOC41OTczMjk0NWwtMS43NDQwMjk5OSUyMDE4MC4wNjQ5MTg2OXMwJTIwMzQuMzE1NjI1NTMtMjQuMDExMTEyMjMlMjA1My4xMTkyMTE5MWMtMTMuNzE4ODgwOTglMjA4LjU5NzMyOTQ1LTI3LjQzNzc2MTk3JTIwMTMuNzE4ODgwOTgtMzQuMzg5MzE2ODMlMjAxNS40NjI5MTA5N2E3LjM2OTEzOTUzJTIwNy4zNjkxMzk1MyUyMDAlMjAwJTIwMC02Ljg5MDE0NDYzJTIwNi44OTAxNDU2djE3LjEyMDk2NjYzYzAlMjA1LjE1ODM5NzY3JTIwNS4xNTgzOTc2NyUyMDguNTk3MzI5NDUlMjAxMC4zMDQ1MTMzJTIwOC41OTczMjk0NSUyMDExLjk3NDg1MS0xLjc0NDAyOTk4JTIwMzAuODUyMTI5NjYtNS4xNTgzOTc2NyUyMDQyLjkwMDY3MTk1LTEzLjcxODg4MDk4JTIwMjcuNDI1NDc5OTItMTcuMTk0NjU3OTIlMjAzMi41ODM4Nzc1OS0zNC4zODkzMTY4MyUyMDMyLjU4Mzg3NzYtMzQuMzg5MzE2ODNzNS4xNDYxMTU2MyUyMDE1LjQ2MjkxMDk3JTIwMzQuMzI3OTA3NTglMjAzMi41ODM4Nzc1OWMxNS40NjI5MTA5NyUyMDEwLjMwNDUxMzMlMjAzMC44Mzk4NDc2MSUyMDEzLjcxODg4MDk4JTIwNDEuMTQ0MzYwOSUyMDEzLjcxODg4MDk5JTIwNS4xNTgzOTc2NyUyMDAlMjAxMC4zMTY3OTUzNC0zLjQxNDM2NzY5JTIwMTAuMzE2Nzk1MzUtOC41OTczMjk0NXYtMTcuMDU5NTU3MzhjMC4wODU5NzMzNC0xLjczMTc0Nzk0LTMuMzUyOTU4NDQtMy40MTQzNjc2OS02LjgxNjQ1NDMyLTUuMTQ2MTE1NjJ6JTIyJTIwZmlsbCUzRCUyMiUyMzEyOTZkYiUyMiUyMCUyRiUzRSUzQ3BhdGglMjBkJTNEJTIyTTUxMS40NTk1OTY4MyUyMDMuMzA1MzI1MjNDMjM3LjY1OTIyNjQ1JTIwMy4zMDUzMjUyMyUyMDE0Ljk2MzgzNjkxJTIwMjIyLjAzMzY2MTg3JTIwOC41NDA0MDMxNyUyMDQ5NC4yODY1MTMwNVY1MTguNTA2NDE3MTJjNi40MjM0MzI3NSUyMDI3Mi4yNDA1NjkxMiUyMDIyOS4xMTg4MjIzJTIwNDkwLjk2ODkwNTc3JTIwNTAyLjkxOTE5MzY2JTIwNDkwLjk2ODkwNTc3JTIwMjc3Ljg0MTExNTU2JTIwMCUyMDUwMy4wNjY1NzUyNy0yMjUuMjI1NDYwNjklMjA1MDMuMDY2NTc1MjYtNTAzLjA2NjU3NjI1Uzc4OS4zMDA3MTE0MSUyMDMuMzA1MzI1MjMlMjA1MTEuNDU5NTk2ODMlMjAzLjMwNTMyNTIzek04MDguMDkyMDE2NzIlMjA2NzcuNTkzODUyNzNhNzguMjk3MTA0ODElMjA3OC4yOTcxMDQ4MSUyMDAlMjAwJTIwMS03OC4zMDkzODY4NiUyMDc4LjMwOTM4Njg2SDM2Ny42MDE3MTUyN2wtMTIxLjA2MjY3NjIyJTIwNjYuMDM5NzY5NjlWMzA1LjcxMDIzODI1QTc4LjI5NzEwNDgxJTIwNzguMjk3MTA0ODElMjAwJTIwMCUyMDElMjAzMjQuODQ4NDI1OTElMjAyMjcuNDI1NDE1NDhoNDA0Ljk3MTA1MDA5QTc4LjI4NDgyMjc3JTIwNzguMjg0ODIyNzclMjAwJTIwMCUyMDElMjA4MDguMDkyMDE2NzIlMjAzMDUuNzEwMjM4MjV6JTIyJTIwZmlsbCUzRCUyMiUyMzEyOTZkYiUyMiUyMCUyRiUzRSUzQ3BhdGglMjBkJTNEJTIyTTM1Ny41MDU5OTQ4JTIwNTg2LjUxMTI5MDY5aDE3LjEzMzI0ODY3YTguMDgxNDg5MzklMjA4LjA4MTQ4OTM5JTIwMCUyMDAlMjAwJTIwOC41OTczMjk0NS04LjU5NzMyODQ3VjM1My4zMjcxNjAwOWE3LjM2OTEzOTUzJTIwNy4zNjkxMzk1MyUyMDAlMjAwJTIwMSUyMDYuOTAyNDI2NjctNi45MDI0Mjc2NWg4OS4xOTExNDk0N2E3LjM2OTEzOTUzJTIwNy4zNjkxMzk1MyUyMDAlMjAwJTIwMSUyMDYuODE2NDU0MzIlMjA2LjkwMjQyNzY1VjU3Ny45NTA4MDczN2E4LjA4MTQ4OTM5JTIwOC4wODE0ODkzOSUyMDAlMjAwJTIwMCUyMDguNTk3MzI4NDYlMjA4LjU5NzMyOTQ2aDE3LjEyMDk2NzYxYTguMDgxNDg5MzklMjA4LjA4MTQ4OTM5JTIwMCUyMDAlMjAwJTIwOC41OTczMjg0Ny04LjU5NzMyOTQ2VjMyOS4zNjUxNzUwNmExNy4wOTY0MDM1MiUyMDE3LjA5NjQwMzUyJTIwMCUyMDAlMjAwLTE3LjIxOTIyMjAxLTE3LjE5NDY1NzkyaC0xMDIuODM2MzM4MThjLTI5LjE4MTc5MTk1JTIwMC01MS40NjExNTYyNSUyMDIyLjI3OTM2NDMtNTEuNDYxMTU2MjUlMjA1MS40NDg4NzQyVjU3Ny45NTA4MDczN2E4LjA4MTQ4OTM5JTIwOC4wODE0ODkzOSUyMDAlMjAwJTIwMCUyMDguNTYwNDgzMzIlMjA4LjU2MDQ4MzMyeiUyMiUyMGZpbGwlM0QlMjIlMjMxMjk2ZGIlMjIlMjAlMkYlM0UlM0MlMkZzdmclM0VcXFwiLFxcbiAgICBudW1iZXI6IFxcXCJodHRwczovL2ljb25mb250LnR5cmFudGcuY29tL2FwaS9pbGx1c3RyYXRlLnN2Zz9zdmdfc3RyaW5nPSUzQ3N2ZyUyMGNsYXNzJTNEJTIyaWNvbiUyMiUyMHN0eWxlJTNEJTIyd2lkdGglM0ElMjAxZW0lM0JoZWlnaHQlM0ElMjAxZW0lM0J2ZXJ0aWNhbC1hbGlnbiUzQSUyMG1pZGRsZSUzQmZpbGwlM0ElMjBjdXJyZW50Q29sb3IlM0JvdmVyZmxvdyUzQSUyMGhpZGRlbiUzQiUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDEwMjQlMjAxMDI0JTIyJTIwdmVyc2lvbiUzRCUyMjEuMSUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTNDcGF0aCUyMGQlM0QlMjJNODk2JTIwMjI0SDEyOGMtMzUuMiUyMDAtNjQlMjAyOC44LTY0JTIwNjR2NDQ4YzAlMjAzNS4yJTIwMjguOCUyMDY0JTIwNjQlMjA2NGg3NjhjMzUuMiUyMDAlMjA2NC0yOC44JTIwNjQtNjRWMjg4YzAtMzUuMi0yOC44LTY0LTY0LTY0eiUyMG0wJTIwNDgwYzAlMjAxOS4yLTEyLjglMjAzMi0zMiUyMDMySDE2MGMtMTkuMiUyMDAtMzItMTIuOC0zMi0zMlYzMjBjMC0xOS4yJTIwMTIuOC0zMiUyMDMyLTMyaDcwNGMxOS4yJTIwMCUyMDMyJTIwMTIuOCUyMDMyJTIwMzJ2Mzg0eiUyMiUyMGZpbGwlM0QlMjIlMjMzMzMzMzMlMjIlMjAlMkYlM0UlM0NwYXRoJTIwZCUzRCUyMk0yOTEuMiUyMDQxMi44Yy0xMi44JTIwNi40LTIyLjQlMjAxMi44LTM1LjIlMjAxNnY0MS42YzIyLjQtNi40JTIwNDEuNi0xNiUyMDU0LjQtMjguOFY2NDBoMzguNFYzOTMuNkgzMjBjLTYuNCUyMDMuMi0xOS4yJTIwMTIuOC0yOC44JTIwMTkuMnpNNDg5LjYlMjA1NjBjMjIuNC0xNiUyMDQxLjYtMjguOCUyMDQ4LTM4LjQlMjAxNi0xNiUyMDIyLjQtMzguNCUyMDIyLjQtNTcuNiUyMDAtMjIuNC02LjQtMzguNC0yMi40LTU0LjQtMTYtMTIuOC0zNS4yLTE5LjItNTcuNi0xOS4yLTI1LjYlMjAwLTQ4JTIwOS42LTYwLjglMjAyNS42LTE2JTIwMTYtMjIuNCUyMDM4LjQtMjIuNCUyMDY3LjJoMzguNGMwLTE5LjIlMjAzLjItMzUuMiUyMDEyLjgtNDQuOCUyMDYuNC05LjYlMjAxOS4yLTE2JTIwMzItMTZzMjUuNiUyMDMuMiUyMDMyJTIwOS42YzYuNCUyMDYuNCUyMDkuNiUyMDE2JTIwOS42JTIwMjguOHMtNi40JTIwMjUuNi0xNiUyMDM4LjRjLTYuNCUyMDYuNC0xNiUyMDE2LTMyJTIwMjguOC0yOC44JTIwMTkuMi00NC44JTIwMzUuMi01NC40JTIwNDQuOC0xNiUyMDE5LjItMjIuNCUyMDQxLjYtMjIuNCUyMDY0aDE2Ni40di0zNS4ySDQ0NC44YzYuNC0xMi44JTIwMjIuNC0yNS42JTIwNDQuOC00MS42eiUyMG0yMzMuNi01NC40YzI1LjYtOS42JTIwMzguNC0yNS42JTIwMzguNC01NC40JTIwMC0yMi40LTYuNC0zOC40LTIyLjQtNTEuMi0xNi0xMi44LTM1LjItMTkuMi01Ny42LTE5LjJTNjQwJTIwMzg3LjIlMjA2MjQlMjA0MDBjLTE2JTIwMTIuOC0yNS42JTIwMzItMjUuNiUyMDU3LjZoMzguNGMwLTE2JTIwNi40LTI1LjYlMjAxMi44LTMyJTIwNi40LTYuNCUyMDE5LjItOS42JTIwMzItOS42czI1LjYlMjAzLjIlMjAzMiUyMDkuNmM2LjQlMjA2LjQlMjA5LjYlMjAxNiUyMDkuNiUyMDI4LjhzLTMuMiUyMDIyLjQtOS42JTIwMjguOGMtNi40JTIwNi40LTE5LjIlMjA5LjYtMzIlMjA5LjZoLTE2djI4LjhoMTZjMTYlMjAwJTIwMjUuNiUyMDMuMiUyMDM1LjIlMjA5LjYlMjA5LjYlMjA2LjQlMjAxMi44JTIwMTYlMjAxMi44JTIwMzIlMjAwJTIwMTIuOC0zLjIlMjAyMi40LTEyLjglMjAyOC44LTkuNiUyMDkuNi0xOS4yJTIwMTIuOC0zNS4yJTIwMTIuOC0xMi44JTIwMC0yNS42LTMuMi0zMi0xMi44LTkuNi05LjYtMTIuOC0yMi40LTE2LTM4LjRoLTM4LjRjMy4yJTIwMjguOCUyMDEyLjglMjA0OCUyMDI4LjglMjA2NCUyMDE2JTIwMTIuOCUyMDM1LjIlMjAxOS4yJTIwNjAuOCUyMDE5LjIlMjAyNS42JTIwMCUyMDQ4LTYuNCUyMDY0LTIyLjQlMjAxNi0xNiUyMDIyLjQtMzIlMjAyMi40LTU0LjQlMjAwLTE2LTMuMi0yNS42LTEyLjgtMzUuMi05LjYtNi40LTIyLjQtMTYtMzUuMi0xOS4yeiUyMiUyMGZpbGwlM0QlMjIlMjMzMzMzMzMlMjIlMjAlMkYlM0UlM0MlMkZzdmclM0VcXFwiLFxcbiAgICBkaXNjbGFpbWVyOiBcXFwiaHR0cHM6Ly9pY29uZm9udC50eXJhbnRnLmNvbS9hcGkvaWxsdXN0cmF0ZS5zdmc/c3ZnX3N0cmluZz0lM0NzdmclMjBjbGFzcyUzRCUyMmljb24lMjIlMjBzdHlsZSUzRCUyMndpZHRoJTNBJTIwMWVtJTNCaGVpZ2h0JTNBJTIwMWVtJTNCdmVydGljYWwtYWxpZ24lM0ElMjBtaWRkbGUlM0JmaWxsJTNBJTIwY3VycmVudENvbG9yJTNCb3ZlcmZsb3clM0ElMjBoaWRkZW4lM0IlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMDI0JTIwMTAyNCUyMiUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUzQ3BhdGglMjBkJTNEJTIyTTUxMiUyMDUxMm0tNDcwLjM3Mzk4NCUyMDBhNDcwLjM3Mzk4NCUyMDQ3MC4zNzM5ODQlMjAwJTIwMSUyMDAlMjA5NDAuNzQ3OTY4JTIwMCUyMDQ3MC4zNzM5ODQlMjA0NzAuMzczOTg0JTIwMCUyMDElMjAwLTk0MC43NDc5NjglMjAwWiUyMiUyMGZpbGwlM0QlMjIlMjNFQjhBOTglMjIlMjAlMkYlM0UlM0NwYXRoJTIwZCUzRCUyMk00OTkuNTEyMTk1JTIwNDkxLjE4Njk5Mm0tMzkxLjI4NDU1MyUyMDBhMzkxLjI4NDU1MyUyMDM5MS4yODQ1NTMlMjAwJTIwMSUyMDAlMjA3ODIuNTY5MTA2JTIwMCUyMDM5MS4yODQ1NTMlMjAzOTEuMjg0NTUzJTIwMCUyMDElMjAwLTc4Mi41NjkxMDYlMjAwWiUyMiUyMGZpbGwlM0QlMjIlMjNGRjk2QTUlMjIlMjAlMkYlM0UlM0NwYXRoJTIwZCUzRCUyMk01MTIlMjA2Mi40MzkwMjRjMjQ3Ljg5MTI1MiUyMDAlMjA0NDkuNTYwOTc2JTIwMjAxLjY3Mzg4NiUyMDQ0OS41NjA5NzYlMjA0NDkuNTYwOTc2JTIwMCUyMDI0Ny44OTEyNTItMjAxLjY2OTcyNCUyMDQ0OS41NjA5NzYtNDQ5LjU2MDk3NiUyMDQ0OS41NjA5NzYtMjQ3Ljg4NzA4OSUyMDAtNDQ5LjU2MDk3Ni0yMDEuNjY5NzI0LTQ0OS41NjA5NzYtNDQ5LjU2MDk3NkM2Mi40MzkwMjQlMjAyNjQuMTEyOTExJTIwMjY0LjExMjkxMSUyMDYyLjQzOTAyNCUyMDUxMiUyMDYyLjQzOTAyNHpNMjAuODEzMDA4JTIwNTEyYzAlMjAyNzAuODM1NTEyJTIwMjIwLjM0NzMxNyUyMDQ5MS4xODY5OTIlMjA0OTEuMTg2OTkyJTIwNDkxLjE4Njk5MiUyMDI3MC44MzU1MTIlMjAwJTIwNDkxLjE4Njk5Mi0yMjAuMzUxNDglMjA0OTEuMTg2OTkyLTQ5MS4xODY5OTJDMTAwMy4xODY5OTIlMjAyNDEuMTYwMzI1JTIwNzgyLjgzNTUxMiUyMDIwLjgxMzAwOCUyMDUxMiUyMDIwLjgxMzAwOCUyMDI0MS4xNjAzMjUlMjAyMC44MTMwMDglMjAyMC44MTMwMDglMjAyNDEuMTYwMzI1JTIwMjAuODEzMDA4JTIwNTEyeiUyMiUyMGZpbGwlM0QlMjIlMjM2RTZFOTYlMjIlMjAlMkYlM0UlM0NwYXRoJTIwZCUzRCUyMk00NzAuNzExMTU0JTIwMjk5LjgwMzA1N3YyMzUuMjkxMDU3YTM0Ljg5OTI1MiUyMDM0Ljg5OTI1MiUyMDAlMjAwJTIwMCUyMDY5LjgwMjY2NyUyMDBWMjk5LjgwMzA1N2MwLTE5LjI3NzAwOC0xNS42MjY0MDctMzQuODk5MjUyLTM0LjkwMzQxNC0zNC44OTkyNTJzLTM0Ljg5OTI1MiUyMDE1LjYyNjQwNy0zNC44OTkyNTMlMjAzNC44OTkyNTJ6TTQ3MC43MTExNTQlMjA2NTEuOTQyNTA0djM2LjUxMDE3OWEzNC45MDM0MTUlMjAzNC45MDM0MTUlMjAwJTIwMCUyMDAlMjA2OS44MDI2NjclMjAwdi0zNi41MTAxNzlhMzQuOTA3NTc3JTIwMzQuOTA3NTc3JTIwMCUyMDAlMjAwLTY5LjgwMjY2NyUyMDB6JTIyJTIwZmlsbCUzRCUyMiUyMzZFNkU5NiUyMiUyMCUyRiUzRSUzQyUyRnN2ZyUzRVxcXCIsXFxuICAgIGxvZ3M6IFxcXCJodHRwczovL2ljb25mb250LnR5cmFudGcuY29tL2FwaS9pbGx1c3RyYXRlLnN2Zz9zdmdfc3RyaW5nPSUzQ3N2ZyUyMGNsYXNzJTNEJTIyaWNvbiUyMiUyMHN0eWxlJTNEJTIyd2lkdGglM0ElMjAxZW0lM0JoZWlnaHQlM0ElMjAxZW0lM0J2ZXJ0aWNhbC1hbGlnbiUzQSUyMG1pZGRsZSUzQmZpbGwlM0ElMjBjdXJyZW50Q29sb3IlM0JvdmVyZmxvdyUzQSUyMGhpZGRlbiUzQiUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDEwMjQlMjAxMDI0JTIyJTIwdmVyc2lvbiUzRCUyMjEuMSUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTNDcGF0aCUyMGQlM0QlMjJNNzI2LjklMjAyNjcuN0gyOTcuMWMtMTYuMiUyMDAtMjkuNCUyMDEzLjItMjkuNCUyMDI5LjRWNzI3YzAlMjAxNi4yJTIwMTMuMiUyMDI5LjQlMjAyOS40JTIwMjkuNEg3MjdjMTYuMiUyMDAlMjAyOS40LTEzLjIlMjAyOS40LTI5LjRWMjk3LjFjLTAuMS0xNi4yLTEzLjItMjkuNC0yOS41LTI5LjR6JTIwbS0zNzAlMjA3MC41aDE0OGMxMS45JTIwMCUyMDIxLjYlMjA5LjYlMjAyMS42JTIwMjEuNiUyMDAlMjAxMS45LTkuNiUyMDIxLjYtMjEuNiUyMDIxLjZoLTE0OGMtMTEuOSUyMDAtMjEuNi05LjYtMjEuNi0yMS42JTIwMC0xMiUyMDkuNi0yMS42JTIwMjEuNi0yMS42eiUyMG0tMjEuNiUyMDIyNC42YzAtMTEuOSUyMDkuNi0yMS42JTIwMjEuNi0yMS42aDI0NS43YzExLjklMjAwJTIwMjEuNiUyMDkuNiUyMDIxLjYlMjAyMS42JTIwMCUyMDExLjktOS43JTIwMjEuNi0yMS42JTIwMjEuNkgzNTYuOWMtMTItMC4xLTIxLjYtOS43LTIxLjYtMjEuNnolMjBtMzMxLjglMjAxMjNINTA0LjhjLTExLjklMjAwLTIxLjYtOS42LTIxLjYtMjEuNiUyMDAtMTEuOSUyMDkuNi0yMS42JTIwMjEuNi0yMS42aDE2Mi4zYzExLjklMjAwJTIwMjEuNiUyMDkuNiUyMDIxLjYlMjAyMS42JTIwMCUyMDEyLTkuNiUyMDIxLjYtMjEuNiUyMDIxLjZ6JTIwbTAtMjAyLjlINDIxLjRjLTExLjklMjAwLTIxLjYtOS42LTIxLjYtMjEuNnM5LjYtMjEuNiUyMDIxLjYtMjEuNmgyNDUuN2MxMS45JTIwMCUyMDIxLjYlMjA5LjYlMjAyMS42JTIwMjEuNiUyMDAlMjAxMS45LTkuNiUyMDIxLjYtMjEuNiUyMDIxLjZ6JTIyJTIwZmlsbCUzRCUyMiUyM0Y1Q0Y1RCUyMiUyMCUyRiUzRSUzQ3BhdGglMjBkJTNEJTIyTTUxMiUyMDBDMjI5LjIlMjAwJTIwMCUyMDIyOS4yJTIwMCUyMDUxMnMyMjkuMiUyMDUxMiUyMDUxMiUyMDUxMiUyMDUxMi0yMjkuMiUyMDUxMi01MTJTNzk0LjglMjAwJTIwNTEyJTIwMHolMjBtMjg3LjQlMjA3MjYuOWMwJTIwNDAtMzIuNSUyMDcyLjUtNzIuNSUyMDcyLjVIMjk3LjFjLTQwJTIwMC03Mi41LTMyLjUtNzIuNS03Mi41VjI5Ny4xYzAtNDAlMjAzMi41LTcyLjUlMjA3Mi41LTcyLjVINzI3YzQwJTIwMCUyMDcyLjUlMjAzMi41JTIwNzIuNSUyMDcyLjV2NDI5Ljh6JTIyJTIwZmlsbCUzRCUyMiUyM0Y1Q0Y1RCUyMiUyMCUyRiUzRSUzQyUyRnN2ZyUzRVxcXCIsXFxuICAgIGFib3V0OiBcXFwiaHR0cHM6Ly9pY29uZm9udC50eXJhbnRnLmNvbS9hcGkvaWxsdXN0cmF0ZS5zdmc/c3ZnX3N0cmluZz0lM0NzdmclMjBjbGFzcyUzRCUyMmljb24lMjIlMjBzdHlsZSUzRCUyMndpZHRoJTNBJTIwMWVtJTNCaGVpZ2h0JTNBJTIwMWVtJTNCdmVydGljYWwtYWxpZ24lM0ElMjBtaWRkbGUlM0JmaWxsJTNBJTIwY3VycmVudENvbG9yJTNCb3ZlcmZsb3clM0ElMjBoaWRkZW4lM0IlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMDI0JTIwMTAyNCUyMiUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUzQ3BhdGglMjBkJTNEJTIyTTg4MS42JTIwNTEyLjFjMCUyMDIwMy43LTE2NS43JTIwMzY5LjUtMzY5LjUlMjAzNjkuNVMxNDIuNiUyMDcxNS44JTIwMTQyLjYlMjA1MTIuMXMxNjUuNy0zNjkuNSUyMDM2OS41LTM2OS41JTIwMzY5LjUlMjAxNjUuOCUyMDM2OS41JTIwMzY5LjVtNzcuNyUyMDBjMC0yNDYuNi0yMDAuNi00NDcuMi00NDcuMi00NDcuMlM2NC45JTIwMjY1LjUlMjA2NC45JTIwNTEyLjFzMjAwLjYlMjA0NDcuMiUyMDQ0Ny4yJTIwNDQ3LjIlMjA0NDcuMi0yMDAuNiUyMDQ0Ny4yLTQ0Ny4yTTU4Mi41JTIwMzE4LjJjOS05JTIwMTQuMi0yMS42JTIwMTQuMi0zNC4zJTIwMC0xMi44LTUuMi0yNS40LTE0LjItMzQuNHMtMjEuNi0xNC4yLTM0LjQtMTQuMmMtMTIuNyUyMDAtMjUuMyUyMDUuMi0zNC4zJTIwMTQuMi05LjElMjA5LTE0LjMlMjAyMS42LTE0LjMlMjAzNC40JTIwMCUyMDEyLjclMjA1LjIlMjAyNS4zJTIwMTQuMyUyMDM0LjMlMjA5JTIwOSUyMDIxLjUlMjAxNC4zJTIwMzQuMyUyMDE0LjNzMjUuMy01LjMlMjAzNC40LTE0LjNtLTk2LjYlMjA0NjQuM2MtNy42JTIwMC0xNS4yLTIuNi0yMS4zLTcuNS05LjktNy45LTE0LjUtMjAuNy0xMi4xLTMzLjFsNDcuOS0yNDMuMS0yNi40JTIwMTQuOGMtMTYuNCUyMDkuMi0zNy4xJTIwMy40LTQ2LjMtMTMtOS4yLTE2LjQtMy40LTM3LjElMjAxMi45LTQ2LjNsOTAuNy01MS4xYzExLjYtNi41JTIwMjUuOS01LjclMjAzNi42JTIwMi4xJTIwMTAuOCUyMDcuOCUyMDE2JTIwMjEuMSUyMDEzLjQlMjAzNC4xbC00OS42JTIwMjUxLjklMjA0MC43LTE3LjdjMTcuMi03LjUlMjAzNy4zJTIwMC40JTIwNDQuOCUyMDE3LjYlMjA3LjUlMjAxNy4yLTAuNCUyMDM3LjMtMTcuNiUyMDQ0LjhsLTEwMC4yJTIwNDMuN2MtNC4zJTIwMS45LTguOSUyMDIuOC0xMy41JTIwMi44JTIyJTIwJTJGJTNFJTNDJTJGc3ZnJTNFXFxcIixcXG4gICAgc3VwcG9ydDogXFxcImh0dHBzOi8vaWNvbmZvbnQudHlyYW50Zy5jb20vYXBpL2lsbHVzdHJhdGUuc3ZnP3N2Z19zdHJpbmc9JTNDc3ZnJTIwY2xhc3MlM0QlMjJpY29uJTIyJTIwc3R5bGUlM0QlMjJ3aWR0aCUzQSUyMDFlbSUzQmhlaWdodCUzQSUyMDFlbSUzQnZlcnRpY2FsLWFsaWduJTNBJTIwbWlkZGxlJTNCZmlsbCUzQSUyMGN1cnJlbnRDb2xvciUzQm92ZXJmbG93JTNBJTIwaGlkZGVuJTNCJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTAyNCUyMDEwMjQlMjIlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlM0NwYXRoJTIwZCUzRCUyMk03MjAuMSUyMDM0Ni41bS05MyUyMDBhOTMlMjA5MyUyMDAlMjAxJTIwMCUyMDE4NiUyMDAlMjA5MyUyMDkzJTIwMCUyMDElMjAwLTE4NiUyMDBaJTIyJTIwZmlsbCUzRCUyMiUyM0Y3NjI2MCUyMiUyMCUyRiUzRSUzQ3BhdGglMjBkJTNEJTIyTTcxOS45JTIwMzgyLjNtLTcuMiUyMDBhNy4yJTIwNy4yJTIwMCUyMDElMjAwJTIwMTQuNCUyMDAlMjA3LjIlMjA3LjIlMjAwJTIwMSUyMDAtMTQuNCUyMDBaJTIyJTIwZmlsbCUzRCUyMiUyM0ZGRkZGRiUyMiUyMCUyRiUzRSUzQ3BhdGglMjBkJTNEJTIyTTcxMy4xJTIwMzAzLjVoMTRsLTIuNyUyMDYyLjhoLTkuMiUyMiUyMGZpbGwlM0QlMjIlMjNGRkZGRkYlMjIlMjAlMkYlM0UlM0NwYXRoJTIwZCUzRCUyMk03MTkuOSUyMDYzMi41bS05MyUyMDBhOTMlMjA5MyUyMDAlMjAxJTIwMCUyMDE4NiUyMDAlMjA5MyUyMDkzJTIwMCUyMDElMjAwLTE4NiUyMDBaJTIyJTIwZmlsbCUzRCUyMiUyMzEwQUVGRiUyMiUyMCUyRiUzRSUzQ3BhdGglMjBkJTNEJTIyTTcxOS45JTIwNTkzLjltLTguMyUyMDBhOC4zJTIwOC4zJTIwMCUyMDElMjAwJTIwMTYuNiUyMDAlMjA4LjMlMjA4LjMlMjAwJTIwMSUyMDAtMTYuNiUyMDBaJTIyJTIwZmlsbCUzRCUyMiUyM0ZGRkZGRiUyMiUyMCUyRiUzRSUzQ3BhdGglMjBkJTNEJTIyTTcxMy45JTIwNjExLjNoMTJsLTEuMSUyMDY3LjJINzE1JTIyJTIwZmlsbCUzRCUyMiUyM0ZGRkZGRiUyMiUyMCUyRiUzRSUzQ3BhdGglMjBkJTNEJTIyTTUxMS4zJTIwNTEyLjJtLTQ0OCUyMDBhNDQ4JTIwNDQ4JTIwMCUyMDElMjAwJTIwODk2JTIwMCUyMDQ0OCUyMDQ0OCUyMDAlMjAxJTIwMC04OTYlMjAwWiUyMiUyMGZpbGwlM0QlMjIlMjMwOUJCMDclMjIlMjAlMkYlM0UlM0NwYXRoJTIwZCUzRCUyMk0zMTIuMiUyMDUwMy44bC0yNi40JTIwMzIuOCUyMDE1My43JTIwMTYwLjMlMjAzMjQuMi0zMTkuNy0yNi0yNi40LTI5OCUyMDI1MXolMjIlMjBmaWxsJTNEJTIyJTIzRkZGRkZGJTIyJTIwJTJGJTNFJTNDJTJGc3ZnJTNFXFxcIixcXG4gICAgYnVnOiBcXFwiaHR0cHM6Ly9pY29uZm9udC50eXJhbnRnLmNvbS9hcGkvaWxsdXN0cmF0ZS5zdmc/c3ZnX3N0cmluZz0lM0NzdmclMjBjbGFzcyUzRCUyMmljb24lMjIlMjBzdHlsZSUzRCUyMndpZHRoJTNBJTIwMWVtJTNCaGVpZ2h0JTNBJTIwMWVtJTNCdmVydGljYWwtYWxpZ24lM0ElMjBtaWRkbGUlM0JmaWxsJTNBJTIwY3VycmVudENvbG9yJTNCb3ZlcmZsb3clM0ElMjBoaWRkZW4lM0IlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMDI0JTIwMTAyNCUyMiUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUzQ3BhdGglMjBkJTNEJTIyTTUxMiUyMDUxMm0tNTEyJTIwMGE1MTIlMjA1MTIlMjAwJTIwMSUyMDAlMjAxMDI0JTIwMCUyMDUxMiUyMDUxMiUyMDAlMjAxJTIwMC0xMDI0JTIwMFolMjIlMjBmaWxsJTNEJTIyJTIzRkYzRTNFJTIyJTIwJTJGJTNFJTNDcGF0aCUyMGQlM0QlMjJNMzUzLjE2NjIyMiUyMDI0MC4yMDc2NDRoMTE5Ljg3NjI2N3Y4Mi43MzkySDM1My4xNjYyMjJ2LTgyLjczOTJ6JTIwbTk0Ljc1NDEzNCUyMDU5LjUyODUzNHYtMzYuNTkwOTM0aC02OS4zNTg5MzR2MzYuNTkwOTM0aDY5LjM1ODkzNHolMjBtLTEwMy4yMTkyJTIwNDQuMjM2OGgxMzcuMzUyNTMzdjIzLjQ4MzczM2gtNTcuMzQ0djI4LjM5ODkzM2g0OC44Nzg5MzN2MjMuMjEwNjY3aC00OC44Nzg5MzN2MzAuMzEwNGg2My44OTc2djI0LjU3NmgtMTU0LjI4MjY2N3YtMjQuNTc2aDY0LjE3MDY2N3YtMzAuMzEwNGgtNDcuNTEzNnYtMjMuMjEwNjY3aDQ3LjUxMzZ2LTI4LjM5ODkzM2gtNTMuNzk0MTMzdi0yMy40ODM3MzN6JTIwbS0xMDIuMTI2OTM0LTQwLjE0MDhoMzcuNjgzMlYyNzAuNzkxMTExYy0xMi43NDMxMTElMjAxLjYzODQtMjMuNDgzNzMzJTIwMi45MTI3MTEtMzIuMjIxODY2JTIwMy44MjI5MzNMMjQyLjg0NzI4OSUyMDI1MC4zMTExMTFjMzIuOTUwMDQ0LTIuNzMwNjY3JTIwNjMuMDc4NC04LjI4MzAyMiUyMDkwLjM4NTA2Ny0xNi42NTcwNjdsOS4wMTEyJTIwMjQuNTc2Yy0xMC45MjI2NjclMjAzLjA5NDc1Ni0yMy4zMDE2ODklMjA1LjkxNjQ0NC0zNy4xMzcwNjclMjA4LjQ2NTA2N3YzNy4xMzcwNjdoMzEuNDAyNjY3djI0Ljg0OTA2NmgtMzEuNDAyNjY3djExLjQ2ODhjMTAuMzc2NTMzJTIwOS44MzA0JTIwMjIuNzU1NTU2JTIwMjIuNDgyNDg5JTIwMzcuMTM3MDY3JTIwMzcuOTU2MjY3bC0xNC40NzI1MzQlMjAyMS44NDUzMzNhODE2LjAzNjk3OCUyMDgxNi4wMzY5NzglMjAwJTIwMCUyMDAtMjIuNjY0NTMzLTM1LjIyNTZ2MTE3LjQxODY2N2gtMjQuODQ5MDY3di0xMTMuODY4OGEyODEuMzA0MTc4JTIwMjgxLjMwNDE3OCUyMDAlMjAwJTIwMS0zMy4wNDEwNjYlMjA2My4zNTE0NjdsLTExLjQ2ODgtMjguOTQ1MDY3YTIwMi4wNjkzMzMlMjAyMDIuMDY5MzMzJTIwMCUyMDAlMjAwJTIwNDEuNTA2MTMzLTc0LjAwMTA2N0gyNDIuNTc0MjIydi0yNC44NDkwNjZ6JTIwbTQzMS4yNjMyODktNzQuMjc0MTM0YzQuMTg3MDIyJTIwOC4zNzQwNDQlMjA3LjU1NDg0NCUyMDE1Ljc0Njg0NCUyMDEwLjEwMzQ2NyUyMDIyLjExODRoOTcuMjExNzMzdjI0LjAyOTg2N2gtMTk5LjMzODY2N3Y2My42MjQ1MzNjLTEuMDkyMjY3JTIwNjAuMDc0NjY3LTEwLjc0MDYyMiUyMDEwOC4wNDMzNzgtMjguOTQ1MDY2JTIwMTQzLjkwNjEzNGwtMTkuNjYwOC0xNy40NzYyNjdjMTQuNzQ1Ni0zMC40MDE0MjIlMjAyMi4zOTE0NjctNzIuNTQ0NzExJTIwMjIuOTM3Ni0xMjYuNDI5ODY3VjI1MS42NzY0NDRoMTAxLjMwNzczM2ExNDYuNjE0MDQ0JTIwMTQ2LjYxNDA0NCUyMDAlMjAwJTIwMC05LjgzMDQtMTcuNzQ5MzMzbDI2LjIxNDQtNC4zNjkwNjd6JTIwbS0yNi4yMTQ0JTIwOTMuMzg4OGE1MzkuOTg5MzMzJTIwNTM5Ljk4OTMzMyUyMDAlMjAwJTIwMSUyMDM0Ljk1MjUzMyUyMDE5LjM4NzczNCUyMDI2Ny42MDUzMzMlMjAyNjcuNjA1MzMzJTIwMCUyMDAlMjAwJTIwMzkuNTk0NjY3LTI3LjU3OTczNGgtMTE1Ljc4MDI2N3YtMjIuMTE4NGgxNDguMjc1MnYxOC41Njg1MzRhMjg4LjAzOTgyMiUyMDI4OC4wMzk4MjIlMjAwJTIwMCUyMDEtNTIuOTc0OTMzJTIwNDMuNjkwNjY2bDkuMDExMiUyMDYuNTUzNi0zLjU0OTg2NyUyMDMuNTQ5ODY3aDY5LjkwNTA2N3YyMC4yMDY5MzNjLTExLjQ2ODglMjAyMS4yOTkyLTIzLjkzODg0NCUyMDM4Ljk1NzUxMS0zNy40MTAxMzMlMjA1Mi45NzQ5MzRsLTE5LjM4NzczNC0xNS41NjQ4YTE2OS43MTA5MzMlMjAxNjkuNzEwOTMzJTIwMCUyMDAlMjAwJTIwMjguNjcyLTMzLjg2MDI2N2gtNTQuNjEzMzMzdjY3LjQ0NzQ2N2MwJTIwMTguMzg2NDg5LTkuMDExMiUyMDI3LjU3OTczMy0yNy4wMzM2JTIwMjcuNTc5NzMzaC00MC42ODY5MzNsLTUuNDYxMzM0LTI0LjU3NmMxNS4yOTE3MzMlMjAxLjI3NDMxMSUyMDI3Ljc2MTc3OCUyMDEuOTExNDY3JTIwMzcuNDEwMTM0JTIwMS45MTE0NjclMjA2LjczNTY0NCUyMDAlMjAxMC4xMDM0NjctMy42NDA4ODklMjAxMC4xMDM0NjYtMTAuOTIyNjY3di02MS40NGgtNzguMDk3MDY2VjM2NC45OTkxMTFoODkuNTY1ODY2YTQ1Mi4wMzkxMTElMjA0NTIuMDM5MTExJTIwMCUyMDAlMjAwLTQ3Ljc4NjY2Ni0yNy4wMzM2bDE1LjI5MTczMy0xNS4wMTg2Njd6TTI2Ni42OTUxMTElMjA1NzQuODk2MzU2aDI4Ljk0NTA2N3Y3OC42NDMyYzExLjQ2ODgtMTYuNTY2MDQ0JTIwMjUuODUwMzExLTI0Ljg0OTA2NyUyMDQzLjE0NDUzMy0yNC44NDkwNjclMjAyMC4yMDY5MzMlMjAwJTIwMzYuMTM1ODIyJTIwNy4zNzI4JTIwNDcuNzg2NjY3JTIwMjIuMTE4NCUyMDEwLjc0MDYyMiUyMDEzLjgzNTM3OCUyMDE2LjExMDkzMyUyMDMxLjAzODU3OCUyMDE2LjExMDkzMyUyMDUxLjYwOTYlMjAwJTIwMjEuNjYzMjg5LTUuNDYxMzMzJTIwMzkuMzIxNi0xNi4zODQlMjA1Mi45NzQ5MzMtMTIuMDE0OTMzJTIwMTQuNzQ1Ni0yOC4zMDc5MTElMjAyMi4xMTg0LTQ4Ljg3ODkzMyUyMDIyLjExODQtMTkuMTE0NjY3JTIwMC0zMy42NzgyMjItNi45MTc2ODktNDMuNjkwNjY3LTIwLjc1MzA2NlY3NzMuNjg4ODg5SDI2Ni42OTUxMTF2LTE5OC43OTI1MzN6JTIwbTY1LjUzNiUyMDc3LjI3Nzg2NmMtMTEuMTA0NzExJTIwMC0xOS44NDI4NDQlMjA0LjI3ODA0NC0yNi4yMTQ0JTIwMTIuODM0MTM0LTcuNDYzODIyJTIwOS4xMDIyMjItMTEuMTk1NzMzJTIwMjEuMzkwMjIyLTExLjE5NTczMyUyMDM2Ljg2NHYyLjQ1NzZjMCUyMDE0LjAxNzQyMiUyMDMuMDAzNzMzJTIwMjUuNTc3MjQ0JTIwOS4wMTEyJTIwMzQuNjc5NDY2JTIwNi45MTc2ODklMjAxMC4wMTI0NDQlMjAxNi42NTcwNjclMjAxNS4wMTg2NjclMjAyOS4yMTgxMzMlMjAxNS4wMTg2NjclMjAxNC4wMTc0MjIlMjAwJTIwMjQuNDg0OTc4LTUuMDk3MjQ0JTIwMzEuNDAyNjY3LTE1LjI5MTczMyUyMDUuNjQzMzc4LTkuMTAyMjIyJTIwOC40NjUwNjctMjEuMjA4MTc4JTIwOC40NjUwNjYtMzYuMzE3ODY3JTIwMC0xNS42NTU4MjItMy4wMDM3MzMtMjcuNTc5NzMzLTkuMDExMi0zNS43NzE3MzMtNi43MzU2NDQtOS42NDgzNTYtMTcuMjk0MjIyLTE0LjQ3MjUzMy0zMS42NzU3MzMtMTQuNDcyNTM0eiUyMG0xMjAuNTEzNDIyLTE5LjY2MDhoMjguOTQ1MDY3djg2LjAxNmMwJTIwMTIuMTk2OTc4JTIwMi41NDg2MjIlMjAyMC45MzUxMTElMjA3LjY0NTg2NyUyMDI2LjIxNDQlMjA1LjA5NzI0NCUyMDUuNjQzMzc4JTIwMTMuMTk4MjIyJTIwOC40NjUwNjclMjAyNC4zMDI5MzMlMjA4LjQ2NTA2NyUyMDcuMjgxNzc4JTIwMCUyMDE0LjI5MDQ4OS0zLjA5NDc1NiUyMDIxLjAyNjEzMy05LjI4NDI2NyUyMDYuNTUzNi02LjM3MTU1NiUyMDExLjEwNDcxMS0xNC43NDU2JTIwMTMuNjUzMzM0LTI1LjEyMjEzM3YtODYuMjg5MDY3aDI4Ljk0NTA2NlY3NzMuNjg4ODg5aC0yOC45NDUwNjZ2LTE5LjExNDY2N2MtMTIuMDE0OTMzJTIwMTUuMjkxNzMzLTI2Ljg1MTU1NiUyMDIyLjkzNzYtNDQuNTA5ODY3JTIwMjIuOTM3Ni0zNC4wNDIzMTElMjAwLTUxLjA2MzQ2Ny0xOS4wMjM2NDQtNTEuMDYzNDY3LTU3LjA3MDkzM3YtODcuOTI3NDY3eiUyMG0yMzkuMDI0MzU2LTMuODIyOTMzYzE4LjU2ODUzMyUyMDAlMjAzMi45NTAwNDQlMjA3LjU1NDg0NCUyMDQzLjE0NDUzMyUyMDIyLjY2NDUzM3YtMTguODQxNmgyOC45NDUwNjd2MTMxLjg5MTJjMCUyMDQ0Ljc4MjkzMy0yMS45MzYzNTYlMjA2Ny4xNzQ0LTY1LjgwOTA2NyUyMDY3LjE3NDQtMTkuNDc4NzU2JTIwMC0zNC40OTc0MjItMy43MzE5MTEtNDUuMDU2LTExLjE5NTczMy0xMC4xOTQ0ODktNy40NjM4MjItMTYuNjU3MDY3LTE5LjAyMzY0NC0xOS4zODc3MzMtMzQuNjc5NDY3aDI4Ljk0NTA2N2MxLjYzODQlMjA4LjM3NDA0NCUyMDUuMDk3MjQ0JTIwMTQuMjkwNDg5JTIwMTAuMzc2NTMzJTIwMTcuNzQ5MzM0JTIwNS40NjEzMzMlMjAzLjQ1ODg0NCUyMDEzLjgzNTM3OCUyMDUuMTg4MjY3JTIwMjUuMTIyMTMzJTIwNS4xODgyNjYlMjAyNC41NzYlMjAwJTIwMzYuODY0LTEzLjI4OTI0NCUyMDM2Ljg2NC0zOS44Njc3MzN2LTIxLjg0NTMzM2MtMTAuMzc2NTMzJTIwMTUuNjU1ODIyLTI0Ljc1ODA0NCUyMDIzLjQ4MzczMy00My4xNDQ1MzMlMjAyMy40ODM3MzMtMTkuMTE0NjY3JTIwMC0zNC41ODg0NDQtNi40NjI1NzgtNDYuNDIxMzMzLTE5LjM4NzczMy0xMS44MzI4ODktMTIuNTYxMDY3LTE3Ljc0OTMzMy0yOS41ODIyMjItMTcuNzQ5MzM0LTUxLjA2MzQ2NyUyMDAtMjEuMjk5MiUyMDUuOTE2NDQ0LTM4LjQxMTM3OCUyMDE3Ljc0OTMzNC01MS4zMzY1MzMlMjAxMS42NTA4NDQtMTMuMjg5MjQ0JTIwMjcuMTI0NjIyLTE5LjkzMzg2NyUyMDQ2LjQyMTMzMy0xOS45MzM4Njd6JTIwbTQuMzY5MDY3JTIwMjMuNDgzNzMzYy0xMi41NjEwNjclMjAwLTIyLjAyNzM3OCUyMDQuMjc4MDQ0LTI4LjM5ODkzNCUyMDEyLjgzNDEzNC02LjkxNzY4OSUyMDguMDA5OTU2LTEwLjM3NjUzMyUyMDE5LjY2MDgtMTAuMzc2NTMzJTIwMzQuOTUyNTMzJTIwMCUyMDEzLjY1MzMzMyUyMDIuNzMwNjY3JTIwMjQuNDg0OTc4JTIwOC4xOTIlMjAzMi40OTQ5MzMlMjA2LjM3MTU1NiUyMDkuNDY2MzExJTIwMTYuNTY2MDQ0JTIwMTQuMTk5NDY3JTIwMzAuNTgzNDY3JTIwMTQuMTk5NDY3JTIwMTIuMTk2OTc4JTIwMCUyMDIxLjg0NTMzMy00LjA5NiUyMDI4Ljk0NTA2Ni0xMi4yODglMjA2LjczNTY0NC04LjczODEzMyUyMDEwLjEwMzQ2Ny0yMC4yMDY5MzMlMjAxMC4xMDM0NjctMzQuNDA2NCUyMDAtMTQuNTYzNTU2LTMuMzY3ODIyLTI2LjIxNDQtMTAuMTAzNDY3LTM0Ljk1MjUzMy02LjkxNzY4OS04LjU1NjA4OS0xNi41NjYwNDQtMTIuODM0MTMzLTI4Ljk0NTA2Ni0xMi44MzQxMzR6JTIyJTIwZmlsbCUzRCUyMiUyM0ZGRkZGRiUyMiUyMCUyRiUzRSUzQyUyRnN2ZyUzRVxcXCIsXFxuICAgIGRvbmF0ZTogXFxcImh0dHBzOi8vczIubG9saS5uZXQvMjAyNC8wNy8yOC9Gd3FRaVd0TnIxdVBJR0sucG5nXFxcIixcXG4gICAgdG9wOiBcXFwiaHR0cHM6Ly9oaWtlcmZhbnMuY29tL2ltZy90b3AucG5nXFxcIixcXG4gICAgb246IFxcXCJodHRwczovL2hpa2VyZmFucy5jb20vdHViaWFvL21lc3N5LzU1LnN2Z1xcXCIsXFxuICAgIG9mZjogXFxcImh0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vbWVzc3kvNjMuc3ZnXFxcIlxcbn07XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLova7mkq3pobXpnaJcIixcInBhdGhcIjpcIkNhcm91c2VsLnZpZXdcIixcInJ1bGVcIjpcImpzOlxcbihmdW5jdGlvbigpIHtcXG4gICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgbGV0IGFycmF5ID0gZGVjb2RlVVJJQ29tcG9uZW50KGdldFBhcmFtKFxcXCJhcnJheVxcXCIpKTtcXG4gICAgZXZhbChcXFwiYXJyYXkgPVxcXCIgKyBhcnJheSk7XFxuICAgIGFwaXZpZXcuX2xheW91dExpbmtSdWxlUGFyc2UoYXJyYXkpO1xcbiAgICBzZXRSZXN1bHQoYXBpdmlldy5sYXlvdXQpO1xcbn0pKCk7XCJ9XSIsImljb24iOiJodHRwczovL3N0YXRpYy5jb29sYXBrLmNvbS9zdGF0aWMvd2ViL3Y4L2ltYWdlcy9oZWFkZXItbG9nby5wbmciLCJwcm94eSI6IiJ9
Add Comment
Please, Sign In to add comment