分身AI.com × クイズフロー(深層診断)
深層診断: あなたの抱え込みの根っこを見つける
この診断は、表面的なタイプ判定ではなく「なぜ抱え込んでしまうのか」を16問で可視化します。聞かれて答えるだけで、悩みを次の打ち手に変えていきます。
所要時間: 約6-8分(自由記述3問あり)
Q1 / 16
6%
抱え込み深度
委任ブロッカー
隠れた強み
盲点パターン
まずは、今の仕事の抱え方から見ていきます。
深層分析を実行しています
回答を整理中…
CiAgICAoZnVuY3Rpb24gKCkgewogICAgICB2YXIgcWZkU2NyaXB0ID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdDsKICAgICAgdmFyIHFmZENvbnRhaW5lciA9IHFmZFNjcmlwdCA/IHFmZFNjcmlwdC5jbG9zZXN0KCcucWYtZGVlcC1jb250YWluZXInKSA6IG51bGw7CiAgICAgIGlmICghcWZkQ29udGFpbmVyKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICAvLyBBdXRvLXNlbGVjdCB0eXBlIGZyb20gVVJMIHBhcmFtZXRlciAoP3R5cGU9Y2xhdWRlIGV0Yy4pCiAgICAgIHZhciB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpOwogICAgICB2YXIgcHJlc2VsZWN0ZWRUeXBlID0gdXJsUGFyYW1zLmdldCgndHlwZScpOwoKICAgICAgZnVuY3Rpb24gcWZkT25lKHNlbGVjdG9yKSB7CiAgICAgICAgcmV0dXJuIHFmZENvbnRhaW5lci5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gcWZkQWxsKHNlbGVjdG9yKSB7CiAgICAgICAgcmV0dXJuIHFmZENvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTsKICAgICAgfQoKICAgICAgdmFyIFFGRF9TRUNUSU9OUyA9IFsKICAgICAgICB7IGlkOiAwLCBrZXk6ICdob2xkRGVwdGgnLCBuYW1lOiAn5oqx44GI6L6844G/5rex5bqmJywgbm90ZTogJ+OBvuOBmuOBr+OAgeS7iuOBruS7leS6i+OBruaKseOBiOaWueOBi+OCieimi+OBpuOBhOOBjeOBvuOBmeOAgicgfSwKICAgICAgICB7IGlkOiAxLCBrZXk6ICdkZWxlZ2F0ZUJsb2NrJywgbmFtZTogJ+WnlOS7u+ODluODreODg+OCq+ODvCcsIG5vdGU6ICfmrKHjga/jgIHku7vjgZvjgonjgozjgarjgYTmnKzlvZPjga7lvJXjgaPjgYvjgYvjgorjgpLopovjgb7jgZnjgIInIH0sCiAgICAgICAgeyBpZDogMiwga2V5OiAnaGlkZGVuU3RyZW5ndGgnLCBuYW1lOiAn6Zqg44KM44Gf5by344G/Jywgbm90ZTogJ+OBk+OBk+OBi+OCieOBr+OAgeimi+iQveOBqOOBl+OBpuOBhOOCi+izh+eUo+OCkuaLvuOBhOOBvuOBmeOAgicgfSwKICAgICAgICB7IGlkOiAzLCBrZXk6ICdibGluZFBhdHRlcm4nLCBuYW1lOiAn55uy54K544OR44K/44O844OzJywgbm90ZTogJ+acgOW+jOOBq+OAgee5sOOCiui/lOOBmeaCqeOBv+OBruODkeOCv+ODvOODs+OCkueJueWumuOBl+OBvuOBmeOAgicgfQogICAgICBdOwoKICAgICAgdmFyIFFGRF9UWVBFX0xBQkVMID0gewogICAgICAgIHVua25vd246ICfjgo/jgYvjgonjgarjgYQnLAogICAgICAgIGNsYXVkZTogJ0NsYXVkZeWeiycsCiAgICAgICAgZ2VtaW5pOiAnR2VtaW5p5Z6LJywKICAgICAgICBjaGF0Z3B0OiAnQ2hhdEdQVOWeiycsCiAgICAgICAgZ3JvazogJ0dyb2vlnosnCiAgICAgIH07CgogICAgICB2YXIgUUZEX1FVRVNUSU9OUyA9IFsKICAgICAgICB7CiAgICAgICAgICBpZDogJ3ExJywKICAgICAgICAgIHNlY3Rpb246IDAsCiAgICAgICAgICB0eXBlOiAnY2hvaWNlJywKICAgICAgICAgIHF1ZXN0aW9uOiAn5pyd44GE44Gh44Gn5LqI5a6a5aSW44Gu5L6d6aC844GMM+S7tuOAguOBvuOBmuOAgeS9leOCkuOBl+OBvuOBmeOBi++8nycsCiAgICAgICAgICBvcHRpb25zOiBbCiAgICAgICAgICAgIHsgdGV4dDogJ+WFqOmDqOOBhOOBo+OBn+OCk+W8leOBjeWPluOCiuOAgemghueVquOCkue1hOOBv+abv+OBiOOCiycsIGVmZmVjdHM6IHsgaG9sZDogMywgZGVsZWc6IDAsIGFpOiAxLCBibGluZDogMiB9IH0sCiAgICAgICAgICAgIHsgdGV4dDogJ+mHjeimgeW6puOBoOOBkeaxuuOCgeOBpuS4gOmDqOOBr+W+jOWbnuOBl+OBq+OBmeOCiycsIGVmZmVjdHM6IHsgaG9sZDogMiwgZGVsZWc6IDEsIGFpOiAyLCBibGluZDogMSB9IH0sCiAgICAgICAgICAgIHsgdGV4dDogJ+S7u+OBm+OCieOCjOOCi+OCguOBruOCkuOBmeOBkOWIh+OCiuWIhuOBkeOCiycsIGVmZmVjdHM6IHsgaG9sZDogMSwgZGVsZWc6IDMsIGFpOiAyLCBibGluZDogMCB9IH0sCiAgICAgICAgICAgIHsgdGV4dDogJ+S+nemgvOWFg+OBq+adoeS7tuOCkueiuuiqjeOBl+OAgeWPl+OBkeOCi+mHj+OCkue1nuOCiycsIGVmZmVjdHM6IHsgaG9sZDogMSwgZGVsZWc6IDIsIGFpOiAxLCBibGluZDogMSB9IH0KICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIGlkOiAncTInLAogICAgICAgICAgc2VjdGlvbjogMCwKICAgICAgICAgIHR5cGU6ICdjaG9pY2UnLAogICAgICAgICAgcXVlc3Rpb246ICfpgLLooYzkuK3jg5fjg63jgrjjgqfjgq/jg4jjgYzpgYXjgozmsJflkbPjgILmnIDliJ3jga7lj43lv5zjga/vvJ8nLAogICAgICAgICAgb3B0aW9uczogWwogICAgICAgICAgICB7IHRleHQ6ICfoh6rliIbjga7kvZzmpa3mmYLplpPjgpLlopfjgoTjgZfjgabluLPlsLvjgpLlkIjjgo/jgZvjgosnLCBlZmZlY3RzOiB7IGhvbGQ6IDMsIGRlbGVnOiAwLCBhaTogMSwgYmxpbmQ6IDMgfSB9LAogICAgICAgICAgICB7IHRleHQ6ICfmlrDjgZfjgYTmiZPjgaHmiYvjgpLlopfjgoTjgZfjgabmtYHjgozjgpLlpInjgYjjgosnLCBlZmZlY3RzOiB7IGhvbGQ6IDIsIGRlbGVnOiAxLCBhaTogMiwgYmxpbmQ6IDIgfSB9LAogICAgICAgICAgICB7IHRleHQ6ICflt6XnqIvjgpLopovnm7TjgZfjgIHku7vjgZvjgovnr4Tlm7LjgpLlho3lrprnvqnjgZnjgosnLCBlZmZlY3RzOiB7IGhvbGQ6IDEsIGRlbGVnOiAzLCBhaTogMiwgYmxpbmQ6IDAgfSB9LAogICAgICAgICAgICB7IHRleHQ6ICfljp/lm6DjgpLoqIDoqp7ljJbjgZfjgablhKrlhYjpoIbkvY3jgpLntYTjgb/mm7/jgYjjgosnLCBlZmZlY3RzOiB7IGhvbGQ6IDEsIGRlbGVnOiAyLCBhaTogMywgYmxpbmQ6IDEgfSB9CiAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICBpZDogJ3EzJywKICAgICAgICAgIHNlY3Rpb246IDAsCiAgICAgICAgICB0eXBlOiAnY2hvaWNlJywKICAgICAgICAgIHF1ZXN0aW9uOiAn44CM5Lu744Gb44Gf44GE44GR44Gp5LiN5a6J44CN44Go5oSf44GY44KL556s6ZaT44Gv44CB44Gp44KM44Gr6L+R44GE44Gn44GZ44GL77yfJywKICAgICAgICAgIG9wdGlvbnM6IFsKICAgICAgICAgICAgeyB0ZXh0OiAn5ZOB6LOq44GM6JC944Gh44Gm57WQ5bGA44KE44KK55u044GZ5pyq5p2l44GM6KaL44GI44KL44Go44GNJywgZWZmZWN0czogeyBob2xkOiAzLCBkZWxlZzogMCwgYWk6IDEsIGJsaW5kOiAyIH0gfSwKICAgICAgICAgICAgeyB0ZXh0OiAn6Kqs5piO44Gr5pmC6ZaT44GM44GL44GL44KK44Gd44GG44Gg44Go5oSf44GY44Gf44Go44GNJywgZWZmZWN0czogeyBob2xkOiAyLCBkZWxlZzogMSwgYWk6IDIsIGJsaW5kOiAyIH0gfSwKICAgICAgICAgICAgeyB0ZXh0OiAn55u45omL44Gr6LKg5ouF44KS44GL44GR44KL572q5oKq5oSf44GM5Ye644KL44Go44GNJywgZWZmZWN0czogeyBob2xkOiAzLCBkZWxlZzogMSwgYWk6IDEsIGJsaW5kOiAzIH0gfSwKICAgICAgICAgICAgeyB0ZXh0OiAn55u45omL44Gu44Oa44O844K544Gr5ZCI44KP44Gb44KL5oOz5YOP44KS44GX44Gf44Go44GNJywgZWZmZWN0czogeyBob2xkOiAyLCBkZWxlZzogMSwgYWk6IDEsIGJsaW5kOiAyIH0gfQogICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgaWQ6ICdxNCcsCiAgICAgICAgICBzZWN0aW9uOiAwLAogICAgICAgICAgdHlwZTogJ3RleHQnLAogICAgICAgICAgcXVlc3Rpb246ICfmnIDov5HjgIzoh6rliIbjgZfjgYvjgafjgY3jgarjgYTjgI3jgajmhJ/jgZjjgZ/mpa3li5njgpIx44Gk5pu444GE44Gm44GP44Gg44GV44GE44CCJywKICAgICAgICAgIHBsYWNlaG9sZGVyOiAn5L6LOiDmj5DmoYjmm7jjga7mnIDntYLoqr/mlbTjgIHpoaflrqLov5Tkv6HjgIHliKTmlq3jgYzlv4XopoHjgarnorroqo0uLi4nCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICBpZDogJ3E1JywKICAgICAgICAgIHNlY3Rpb246IDEsCiAgICAgICAgICB0eXBlOiAnY2hvaWNlJywKICAgICAgICAgIHF1ZXN0aW9uOiAn5aSW5rOo44KE6YCj5pC644Gn5LiA55Wq44K544OI44Os44K544Gq44Gu44Gv77yfJywKICAgICAgICAgIG9wdGlvbnM6IFsKICAgICAgICAgICAgeyB0ZXh0OiAn5Lyd44GI44Gf5oSP5Zuz44GM44K644Os44KL44GT44GoJywgZWZmZWN0czogeyBob2xkOiAzLCBkZWxlZzogMCwgYWk6IDEsIGJsaW5kOiAyIH0gfSwKICAgICAgICAgICAgeyB0ZXh0OiAn44Os44OT44Ol44O844Gu5b6A5b6p44GM5aKX44GI44KL44GT44GoJywgZWZmZWN0czogeyBob2xkOiAyLCBkZWxlZzogMSwgYWk6IDIsIGJsaW5kOiAxIH0gfSwKICAgICAgICAgICAgeyB0ZXh0OiAn5pyf5b6F5YCk44Gu6Kq/5pW044GM5puW5pin44Gq44GT44GoJywgZWZmZWN0czogeyBob2xkOiAyLCBkZWxlZzogMSwgYWk6IDIsIGJsaW5kOiAyIH0gfSwKICAgICAgICAgICAgeyB0ZXh0OiAn6Ieq5YiG44Gu44Or44O844Or44GM6KiA6Kqe5YyW44Gn44GN44Gm44GE44Gq44GE44GT44GoJywgZWZmZWN0czogeyBob2xkOiAxLCBkZWxlZzogMywgYWk6IDMsIGJsaW5kOiAwIH0gfQogICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgaWQ6ICdxNicsCiAgICAgICAgICBzZWN0aW9uOiAxLAogICAgICAgICAgdHlwZTogJ2Nob2ljZScsCiAgICAgICAgICBxdWVzdGlvbjogJ+S6uuOBq+S7u+OBm+OCi+WJjeOAgemgreOBruS4reOBp+W8t+OBj+iBnuOBk+OBiOOCi+WjsOOBr++8nycsCiAgICAgICAgICBvcHRpb25zOiBbCiAgICAgICAgICAgIHsgdGV4dDogJ+OAjOacgOe1gueahOOBq+iHquWIhuOBjOOChOOCi+aWueOBjOaXqeOBhOOAjScsIGVmZmVjdHM6IHsgaG9sZDogMywgZGVsZWc6IDAsIGFpOiAxLCBibGluZDogMiB9IH0sCiAgICAgICAgICAgIHsgdGV4dDogJ+OAjOiqrOaYjuOCs+OCueODiOOBjOmrmOOBmeOBjuOCi+OAjScsIGVmZmVjdHM6IHsgaG9sZDogMiwgZGVsZWc6IDEsIGFpOiAyLCBibGluZDogMiB9IH0sCiAgICAgICAgICAgIHsgdGV4dDogJ+OAjOaWreOCi+OBruOBjOeUs+OBl+ios+OBquOBhOOAjScsIGVmZmVjdHM6IHsgaG9sZDogMywgZGVsZWc6IDEsIGFpOiAxLCBibGluZDogMyB9IH0sCiAgICAgICAgICAgIHsgdGV4dDogJ+OAjOS7u+OBm+OCi+adoeS7tuOCkuWFiOOBq+S9nOOCjOOBsOOCiOOBhOOAjScsIGVmZmVjdHM6IHsgaG9sZDogMSwgZGVsZWc6IDMsIGFpOiAyLCBibGluZDogMCB9IH0KICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIGlkOiAncTcnLAogICAgICAgICAgc2VjdGlvbjogMSwKICAgICAgICAgIHR5cGU6ICdjaG9pY2UnLAogICAgICAgICAgcXVlc3Rpb246ICfku7vjgZvjgZ/miJDmnpzjgYzmg7PlrprjgojjgorkvY7jgYvjgaPjgZ/mmYLjga7lj43lv5zjga/vvJ8nLAogICAgICAgICAgb3B0aW9uczogWwogICAgICAgICAgICB7IHRleHQ6ICfmrKHjgYvjgonoh6rliIbjgafmjIHjgaTjgajmsbrjgoHjgosnLCBlZmZlY3RzOiB7IGhvbGQ6IDMsIGRlbGVnOiAwLCBhaTogMSwgYmxpbmQ6IDMgfSB9LAogICAgICAgICAgICB7IHRleHQ6ICfntLDjgYvjgY/mlLnlloTmjIfnpLrjgZfjgablho3mj5Dlh7rjgpLlvoXjgaQnLCBlZmZlY3RzOiB7IGhvbGQ6IDIsIGRlbGVnOiAxLCBhaTogMiwgYmxpbmQ6IDIgfSB9LAogICAgICAgICAgICB7IHRleHQ6ICfln7rmupbmm7jjgpLkvZzjgorjgIHmrKHlm57jga7lho3nj77njofjgpLkuIrjgZLjgosnLCBlZmZlY3RzOiB7IGhvbGQ6IDEsIGRlbGVnOiAzLCBhaTogMywgYmxpbmQ6IDAgfSB9LAogICAgICAgICAgICB7IHRleHQ6ICfllY/poYzjgYzotbfjgY3jgZ/lt6XnqIvjgaDjgZHliIfjgorlh7rjgZfjgabopovnm7TjgZknLCBlZmZlY3RzOiB7IGhvbGQ6IDEsIGRlbGVnOiAyLCBhaTogMiwgYmxpbmQ6IDEgfSB9CiAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICBpZDogJ3E4JywKICAgICAgICAgIHNlY3Rpb246IDEsCiAgICAgICAgICB0eXBlOiAndGV4dCcsCiAgICAgICAgICBxdWVzdGlvbjogJ+S7u+OBm+OCi+OBruOCkuatouOCgeOBpuOBl+OBvuOBhuaxuuWumueahOOBqueQhueUseOCkuOAgeOBp+OBjeOCi+OBoOOBkeWFt+S9k+eahOOBq+abuOOBhOOBpuOBj+OBoOOBleOBhOOAgicsCiAgICAgICAgICBwbGFjZWhvbGRlcjogJ+S+izog5pyf5b6F5YCk44GM5o+D44KP44Gq44GE44CB6Kqs5piO44GX44Gm44KC5YaN54++44GV44KM44Gq44GE44CB5L+h6aC844KS5bSp44GX44Gf44GP44Gq44GELi4uJwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgaWQ6ICdxOScsCiAgICAgICAgICBzZWN0aW9uOiAyLAogICAgICAgICAgdHlwZTogJ2Nob2ljZScsCiAgICAgICAgICBxdWVzdGlvbjogJ+mBjuWOu+OBq+iHqueEtuOBqOS4iuaJi+OBj+WbnuOBm+OBn+mAsuOCgeaWueOBr++8nycsCiAgICAgICAgICBvcHRpb25zOiBbCiAgICAgICAgICAgIHsgdGV4dDogJ+acgOWIneOBq+WujOaIkOOCpOODoeODvOOCuOOCkuimi+OBm+OCiycsIGVmZmVjdHM6IHsgaG9sZDogMSwgZGVsZWc6IDMsIGFpOiAzLCBibGluZDogMCB9IH0sCiAgICAgICAgICAgIHsgdGV4dDogJ+Wwj+OBleOBj+ippuOBl+OBpuOBi+OCieaLoeWkp+OBmeOCiycsIGVmZmVjdHM6IHsgaG9sZDogMSwgZGVsZWc6IDIsIGFpOiAzLCBibGluZDogMSB9IH0sCiAgICAgICAgICAgIHsgdGV4dDogJ+mWouS/guiAheOBruWuieW/g+OCkuWFiOOBq+OBpOOBj+OCiycsIGVmZmVjdHM6IHsgaG9sZDogMiwgZGVsZWc6IDIsIGFpOiAyLCBibGluZDogMSB9IH0sCiAgICAgICAgICAgIHsgdGV4dDogJ+mbo+aJgOOBoOOBkeiHquWIhuOBp+aMgeOBoeOAgeS7luOCkuS7u+OBm+OCiycsIGVmZmVjdHM6IHsgaG9sZDogMSwgZGVsZWc6IDMsIGFpOiAyLCBibGluZDogMCB9IH0KICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIGlkOiAncTEwJywKICAgICAgICAgIHNlY3Rpb246IDIsCiAgICAgICAgICB0eXBlOiAnY2hvaWNlJywKICAgICAgICAgIHF1ZXN0aW9uOiAn5Lq644GL44KJ44KI44GP5oSf6Kyd44GV44KM44KL44GC44Gq44Gf44Gu6KGM5YuV44Gv77yfJywKICAgICAgICAgIG9wdGlvbnM6IFsKICAgICAgICAgICAgeyB0ZXh0OiAn5puW5pin44Gq6Kmx44KS5pW055CG44GX44Gm6YGT562L44KS56S644GZJywgZWZmZWN0czogeyBob2xkOiAxLCBkZWxlZzogMywgYWk6IDMsIGJsaW5kOiAwIH0gfSwKICAgICAgICAgICAgeyB0ZXh0OiAn55u45omL44Gu5rCX5oyB44Gh44KS5rGy44KT44Gn6KiA44GE5o+b44GI44KLJywgZWZmZWN0czogeyBob2xkOiAyLCBkZWxlZzogMiwgYWk6IDIsIGJsaW5kOiAxIH0gfSwKICAgICAgICAgICAgeyB0ZXh0OiAn5Yik5pat44KS6YCf44GP44GX44Gm5YmN44Gr6YCy44KB44KLJywgZWZmZWN0czogeyBob2xkOiAyLCBkZWxlZzogMiwgYWk6IDIsIGJsaW5kOiAxIH0gfSwKICAgICAgICAgICAgeyB0ZXh0OiAn44Kv44Kq44Oq44OG44Kj44Gu5Z+65rqW44KS5byV44GN5LiK44GS44KLJywgZWZmZWN0czogeyBob2xkOiAyLCBkZWxlZzogMSwgYWk6IDIsIGJsaW5kOiAxIH0gfQogICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgaWQ6ICdxMTEnLAogICAgICAgICAgc2VjdGlvbjogMiwKICAgICAgICAgIHR5cGU6ICdjaG9pY2UnLAogICAgICAgICAgcXVlc3Rpb246ICfjg5Tjg7zjgq/mmYLjgafjgoLltKnjgozjgavjgY/jgYTjgYLjgarjgZ/jga7nv5LmhaPjga/vvJ8nLAogICAgICAgICAgb3B0aW9uczogWwogICAgICAgICAgICB7IHRleHQ6ICflhKrlhYjluqbjgpLmr47mnJ3mm7jjgY3nm7TjgZknLCBlZmZlY3RzOiB7IGhvbGQ6IDEsIGRlbGVnOiAzLCBhaTogMywgYmxpbmQ6IDAgfSB9LAogICAgICAgICAgICB7IHRleHQ6ICfmgJ3ogIPjgpLlpJbjgavlh7rjgZfjgabmlbTnkIbjgZnjgosnLCBlZmZlY3RzOiB7IGhvbGQ6IDEsIGRlbGVnOiAyLCBhaTogMywgYmxpbmQ6IDEgfSB9LAogICAgICAgICAgICB7IHRleHQ6ICfov7fjgaPjgZ/jgonoqrDjgYvjgavkuIDluqboqbHjgZknLCBlZmZlY3RzOiB7IGhvbGQ6IDEsIGRlbGVnOiAzLCBhaTogMiwgYmxpbmQ6IDAgfSB9LAogICAgICAgICAgICB7IHRleHQ6ICflpLHmlZfjg63jgrDjgpLmrovjgZfjgabmrKHjgavnlJ/jgYvjgZknLCBlZmZlY3RzOiB7IGhvbGQ6IDEsIGRlbGVnOiAyLCBhaTogMywgYmxpbmQ6IDEgfSB9CiAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICBpZDogJ3ExMicsCiAgICAgICAgICBzZWN0aW9uOiAyLAogICAgICAgICAgdHlwZTogJ3RleHQnLAogICAgICAgICAgcXVlc3Rpb246ICfoh6rliIbjgafjga/mma7pgJrjgaDjgajmgJ3jgYbjgZHjgozjganjgIHlrp/jga/lvLfjgb/jgYvjgoLjgZfjgozjgarjgYTngrnjgpLmm7jjgYTjgabjgY/jgaDjgZXjgYTjgIInLAogICAgICAgICAgcGxhY2Vob2xkZXI6ICfkvos6IOebuOirh+OBleOCjOOCi+OBqOaVtOeQhuOBp+OBjeOCi+OAgeS7lee1hOOBv+OCkuS9nOOCi+OBruOBjOiLpuOBmOOCg+OBquOBhOOAgeepuuawl+OCkuiqreOCgOOBruOBjOaXqeOBhC4uLicKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIGlkOiAncTEzJywKICAgICAgICAgIHNlY3Rpb246IDMsCiAgICAgICAgICB0eXBlOiAnY2hvaWNlJywKICAgICAgICAgIHF1ZXN0aW9uOiAn5oSP5oCd5rG65a6a44Gn6L+344GG44Go44GN44CB5pyA5b6M44Gr6aC844KL44Gu44Gv77yfJywKICAgICAgICAgIG9wdGlvbnM6IFsKICAgICAgICAgICAgeyB0ZXh0OiAn6Ieq5YiG44Gu6YGO5Y6744Gu5oiQ5Yqf44OR44K/44O844OzJywgZWZmZWN0czogeyBob2xkOiAyLCBkZWxlZzogMSwgYWk6IDEsIGJsaW5kOiAyIH0gfSwKICAgICAgICAgICAgeyB0ZXh0OiAn6Kqw44Gr44KC6KaL44Gb44Gq44GE55u05oSf44Oh44OiJywgZWZmZWN0czogeyBob2xkOiAyLCBkZWxlZzogMSwgYWk6IDEsIGJsaW5kOiAzIH0gfSwKICAgICAgICAgICAgeyB0ZXh0OiAn5pWw5a2X44Go5LqL5a6f44KS5Lim44G544Gf5q+U6LyDJywgZWZmZWN0czogeyBob2xkOiAxLCBkZWxlZzogMiwgYWk6IDMsIGJsaW5kOiAxIH0gfSwKICAgICAgICAgICAgeyB0ZXh0OiAn56ys5LiJ6ICF6KaW54K544Gu5ZWP44GE55u044GXJywgZWZmZWN0czogeyBob2xkOiAxLCBkZWxlZzogMywgYWk6IDMsIGJsaW5kOiAwIH0gfQogICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgaWQ6ICdxMTQnLAogICAgICAgICAgc2VjdGlvbjogMywKICAgICAgICAgIHR5cGU6ICdjaG9pY2UnLAogICAgICAgICAgcXVlc3Rpb246ICfmlrDmlr3nrZbjgYzlpLHmlZfjgZfjgZ/mmYLjgIHmjK/jgorov5TjgovjgajkvZXjgYzotbfjgY3jgabjgYTjgb7jgZnjgYvvvJ8nLAogICAgICAgICAgb3B0aW9uczogWwogICAgICAgICAgICB7IHRleHQ6ICfmnIDliJ3jga7ku67oqqzjgpLmj6HjgorjgZnjgY7jgabkv67mraPjgYzpgYXjgYQnLCBlZmZlY3RzOiB7IGhvbGQ6IDIsIGRlbGVnOiAxLCBhaTogMSwgYmxpbmQ6IDMgfSB9LAogICAgICAgICAgICB7IHRleHQ6ICfmiZPjgaHmiYvjgpLlopfjgoTjgZfjgZnjgY7jgabnhKbngrnjgYzmlaPjgosnLCBlZmZlY3RzOiB7IGhvbGQ6IDIsIGRlbGVnOiAxLCBhaTogMiwgYmxpbmQ6IDIgfSB9LAogICAgICAgICAgICB7IHRleHQ6ICflkajlm7Ljga7mnJ/lvoXjgpLmi77jgYTjgZnjgY7jgabjg5bjg6zjgosnLCBlZmZlY3RzOiB7IGhvbGQ6IDMsIGRlbGVnOiAxLCBhaTogMSwgYmxpbmQ6IDMgfSB9LAogICAgICAgICAgICB7IHRleHQ6ICfmpJzoqLzmnaHku7bjgpLlhYjjgavmsbrjgoHjgovjgajmlLnlloTjgafjgY3jgosnLCBlZmZlY3RzOiB7IGhvbGQ6IDEsIGRlbGVnOiAzLCBhaTogMywgYmxpbmQ6IDAgfSB9CiAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICBpZDogJ3ExNScsCiAgICAgICAgICBzZWN0aW9uOiAzLAogICAgICAgICAgdHlwZTogJ2Nob2ljZScsCiAgICAgICAgICBxdWVzdGlvbjogJ+mgkeW8teOBo+OBpuOBhOOCi+OBruOBq+WgseOCj+OCjOOBquOBhOaZguacn+OBruWFsemAmueCueOBr++8nycsCiAgICAgICAgICBvcHRpb25zOiBbCiAgICAgICAgICAgIHsgdGV4dDogJ+aIkOaenOWfuua6luOCiOOCiuS9nOalremHj+OCkuWil+OChOOBl+OBpuOBhOOCiycsIGVmZmVjdHM6IHsgaG9sZDogMywgZGVsZWc6IDAsIGFpOiAxLCBibGluZDogMyB9IH0sCiAgICAgICAgICAgIHsgdGV4dDogJ+iqsumhjOOCiOOCiuWPr+iDveaAp+OBq+WPjeW/nOOBl+OBpuOBhOOCiycsIGVmZmVjdHM6IHsgaG9sZDogMiwgZGVsZWc6IDEsIGFpOiAyLCBibGluZDogMiB9IH0sCiAgICAgICAgICAgIHsgdGV4dDogJ+S6uuOBruiqsumhjOOCkuWFiOOBq+W8leOBjeWPl+OBkeOBmeOBjuOBpuOBhOOCiycsIGVmZmVjdHM6IHsgaG9sZDogMywgZGVsZWc6IDEsIGFpOiAxLCBibGluZDogMyB9IH0sCiAgICAgICAgICAgIHsgdGV4dDogJ+aJi+aUvuOBl+adoeS7tuOCkuaxuuOCgeOCi+OBqOS4gOawl+OBq+mAsuOCgCcsIGVmZmVjdHM6IHsgaG9sZDogMSwgZGVsZWc6IDMsIGFpOiAzLCBibGluZDogMCB9IH0KICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIGlkOiAncTE2JywKICAgICAgICAgIHNlY3Rpb246IDMsCiAgICAgICAgICB0eXBlOiAnY2hvaWNlJywKICAgICAgICAgIHF1ZXN0aW9uOiAn5Y2K5bm05b6M44Gr5ZCM44GY5oKp44G/44KS57mw44KK6L+U44GZ44Go44GX44Gf44KJ44CB5Y6f5Zug44Gv44Gp44KM44Gr6L+R44GE44Gn44GZ44GL77yfJywKICAgICAgICAgIG9wdGlvbnM6IFsKICAgICAgICAgICAgeyB0ZXh0OiAn5oqx44GI6L6844G/44Gv576O5b6z44Gg44Go5oCd44GE6L6844KT44Gn44GE44KLJywgZWZmZWN0czogeyBob2xkOiAzLCBkZWxlZzogMCwgYWk6IDEsIGJsaW5kOiAzIH0gfSwKICAgICAgICAgICAgeyB0ZXh0OiAn5pW055CG5YmN44Gr552A5omL44GX44Gm44GX44G+44GGJywgZWZmZWN0czogeyBob2xkOiAyLCBkZWxlZzogMSwgYWk6IDIsIGJsaW5kOiAyIH0gfSwKICAgICAgICAgICAgeyB0ZXh0OiAn5aKD55WM57ea44KS5byV44GP6KiA6JGJ44GM44Gq44GEJywgZWZmZWN0czogeyBob2xkOiAzLCBkZWxlZzogMSwgYWk6IDEsIGJsaW5kOiAzIH0gfSwKICAgICAgICAgICAgeyB0ZXh0OiAn5LuV57WE44G/5YyW44KS5b6M5Zue44GX44Gr44GX44Gm44GE44KLJywgZWZmZWN0czogeyBob2xkOiAyLCBkZWxlZzogMiwgYWk6IDMsIGJsaW5kOiAxIH0gfQogICAgICAgICAgXQogICAgICAgIH0KICAgICAgXTsKCiAgICAgIHZhciBxZmRTY3JlZW5zID0gewogICAgICAgIHdlbGNvbWU6IHFmZE9uZSgnW2RhdGEtcWYtZGVlcC1zY3JlZW49IndlbGNvbWUiXScpLAogICAgICAgIHF1aXo6IHFmZE9uZSgnW2RhdGEtcWYtZGVlcC1zY3JlZW49InF1aXoiXScpLAogICAgICAgIGxvYWRpbmc6IHFmZE9uZSgnW2RhdGEtcWYtZGVlcC1zY3JlZW49ImxvYWRpbmciXScpLAogICAgICAgIHJlc3VsdDogcWZkT25lKCdbZGF0YS1xZi1kZWVwLXNjcmVlbj0icmVzdWx0Il0nKQogICAgICB9OwoKICAgICAgdmFyIHFmZFVJID0gewogICAgICAgIHN0YXJ0QnV0dG9uOiBxZmRPbmUoJ1tkYXRhLXFmLWRlZXAtYWN0aW9uPSJzdGFydCJdJyksCiAgICAgICAgc2hhbGxvd1R5cGU6IHFmZE9uZSgnW2RhdGEtcWYtZGVlcC1zaGFsbG93LXR5cGVdJyksCiAgICAgICAgY291bnRlcjogcWZkT25lKCdbZGF0YS1xZi1kZWVwLWNvdW50ZXJdJyksCiAgICAgICAgcGVyY2VudDogcWZkT25lKCdbZGF0YS1xZi1kZWVwLXBlcmNlbnRdJyksCiAgICAgICAgcHJvZ3Jlc3NCYXI6IHFmZE9uZSgnW2RhdGEtcWYtZGVlcC1wcm9ncmVzc10nKSwKICAgICAgICBzZWN0aW9uTm90ZTogcWZkT25lKCdbZGF0YS1xZi1kZWVwLXNlY3Rpb24tbm90ZV0nKSwKICAgICAgICBzZWN0aW9uVGl0bGU6IHFmZE9uZSgnW2RhdGEtcWYtZGVlcC1zZWN0aW9uLXRpdGxlXScpLAogICAgICAgIHF1ZXN0aW9uQm94OiBxZmRPbmUoJ1tkYXRhLXFmLWRlZXAtcXVlc3Rpb24tYm94XScpLAogICAgICAgIHF1ZXN0aW9uVGV4dDogcWZkT25lKCdbZGF0YS1xZi1kZWVwLXF1ZXN0aW9uLXRleHRdJyksCiAgICAgICAgaW5wdXRBcmVhOiBxZmRPbmUoJ1tkYXRhLXFmLWRlZXAtaW5wdXQtYXJlYV0nKSwKICAgICAgICBzZWN0aW9uczogcWZkQWxsKCdbZGF0YS1xZi1kZWVwLXNlY10nKSwKICAgICAgICBsb2FkaW5nRmlsbDogcWZkT25lKCdbZGF0YS1xZi1kZWVwLWxvYWRpbmctZmlsbF0nKSwKICAgICAgICBsb2FkaW5nTXNnOiBxZmRPbmUoJ1tkYXRhLXFmLWRlZXAtbG9hZGluZy1tc2ddJyksCiAgICAgICAgcmVzdWx0Q2FyZDogcWZkT25lKCdbZGF0YS1xZi1kZWVwLXJlc3VsdC1jYXJkXScpCiAgICAgIH07CgogICAgICB2YXIgcWZkU3RhdGUgPSB7CiAgICAgICAgaW5kZXg6IDAsCiAgICAgICAgc2hhbGxvd1R5cGU6ICd1bmtub3duJywKICAgICAgICBhbnN3ZXJzOiBbXSwKICAgICAgICByYXc6IHsgaG9sZDogMCwgZGVsZWc6IDAsIGFpOiAwLCBibGluZDogMCB9LAogICAgICAgIHRleHRNYXA6IHt9CiAgICAgIH07CgogICAgICB2YXIgcWZkRmluYWxTY29yZXMgPSBudWxsOwogICAgICB2YXIgcWZkVHlwZSA9ICd1bmtub3duJzsKCiAgICAgIGZ1bmN0aW9uIHFmZFNob3dTY3JlZW4obmFtZSkgewogICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMocWZkU2NyZWVucyk7CiAgICAgICAgdmFyIGk7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpICs9IDEpIHsKICAgICAgICAgIHFmZFNjcmVlbnNba2V5c1tpXV0uY2xhc3NMaXN0LnJlbW92ZSgncWYtZGVlcC1hY3RpdmUnKTsKICAgICAgICB9CiAgICAgICAgcWZkU2NyZWVuc1tuYW1lXS5jbGFzc0xpc3QuYWRkKCdxZi1kZWVwLWFjdGl2ZScpOwogICAgICB9CgogICAgICBmdW5jdGlvbiBxZmRDbGFtcCh2YWx1ZSwgbWluLCBtYXgpIHsKICAgICAgICByZXR1cm4gTWF0aC5tYXgobWluLCBNYXRoLm1pbihtYXgsIHZhbHVlKSk7CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIHFmZFJlc2V0KCkgewogICAgICAgIHFmZFN0YXRlLmluZGV4ID0gMDsKICAgICAgICBxZmRTdGF0ZS5hbnN3ZXJzID0gW107CiAgICAgICAgcWZkU3RhdGUucmF3ID0geyBob2xkOiAwLCBkZWxlZzogMCwgYWk6IDAsIGJsaW5kOiAwIH07CiAgICAgICAgcWZkU3RhdGUudGV4dE1hcCA9IHt9OwogICAgICAgIHFmZFN0YXRlLnNoYWxsb3dUeXBlID0gcWZkVUkuc2hhbGxvd1R5cGUudmFsdWUgfHwgJ3Vua25vd24nOwogICAgICAgIHFmZFVJLnJlc3VsdENhcmQuY2xhc3NMaXN0LnJlbW92ZSgncWYtZGVlcC1yZXZlYWwnKTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gcWZkVXBkYXRlUHJvZ3Jlc3MoKSB7CiAgICAgICAgdmFyIGN1cnJlbnQgPSBxZmRTdGF0ZS5pbmRleCArIDE7CiAgICAgICAgdmFyIHBlcmNlbnQgPSBNYXRoLnJvdW5kKChjdXJyZW50IC8gUUZEX1FVRVNUSU9OUy5sZW5ndGgpICogMTAwKTsKICAgICAgICBxZmRVSS5jb3VudGVyLnRleHRDb250ZW50ID0gJ1EnICsgY3VycmVudCArICcgLyAnICsgUUZEX1FVRVNUSU9OUy5sZW5ndGg7CiAgICAgICAgcWZkVUkucGVyY2VudC50ZXh0Q29udGVudCA9IHBlcmNlbnQgKyAnJSc7CiAgICAgICAgcWZkVUkucHJvZ3Jlc3NCYXIuc3R5bGUud2lkdGggPSBwZXJjZW50ICsgJyUnOwoKICAgICAgICB2YXIgc2VjdGlvbiA9IFFGRF9RVUVTVElPTlNbcWZkU3RhdGUuaW5kZXhdLnNlY3Rpb247CiAgICAgICAgcWZkVUkuc2VjdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaWR4KSB7CiAgICAgICAgICBub2RlLmNsYXNzTGlzdC5yZW1vdmUoJ3FmLWRlZXAtc2VjLWFjdGl2ZScpOwogICAgICAgICAgbm9kZS5jbGFzc0xpc3QucmVtb3ZlKCdxZi1kZWVwLXNlYy1kb25lJyk7CiAgICAgICAgICBpZiAoaWR4IDwgc2VjdGlvbikgewogICAgICAgICAgICBub2RlLmNsYXNzTGlzdC5hZGQoJ3FmLWRlZXAtc2VjLWRvbmUnKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChpZHggPT09IHNlY3Rpb24pIHsKICAgICAgICAgICAgbm9kZS5jbGFzc0xpc3QuYWRkKCdxZi1kZWVwLXNlYy1hY3RpdmUnKTsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gcWZkUmVuZGVyUXVlc3Rpb24oKSB7CiAgICAgICAgdmFyIGl0ZW0gPSBRRkRfUVVFU1RJT05TW3FmZFN0YXRlLmluZGV4XTsKICAgICAgICB2YXIgc2VjID0gUUZEX1NFQ1RJT05TW2l0ZW0uc2VjdGlvbl07CgogICAgICAgIHFmZFVwZGF0ZVByb2dyZXNzKCk7CiAgICAgICAgcWZkVUkuc2VjdGlvblRpdGxlLnRleHRDb250ZW50ID0gc2VjLm5hbWU7CiAgICAgICAgcWZkVUkuc2VjdGlvbk5vdGUudGV4dENvbnRlbnQgPSBzZWMubm90ZTsKICAgICAgICBxZmRVSS5xdWVzdGlvblRleHQudGV4dENvbnRlbnQgPSBpdGVtLnF1ZXN0aW9uOwogICAgICAgIHFmZFVJLmlucHV0QXJlYS5pbm5lckhUTUwgPSAnJzsKCiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ2Nob2ljZScpIHsKICAgICAgICAgIGl0ZW0ub3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChvcHQpIHsKICAgICAgICAgICAgdmFyIGJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogICAgICAgICAgICBidXR0b24udHlwZSA9ICdidXR0b24nOwogICAgICAgICAgICBidXR0b24uY2xhc3NOYW1lID0gJ3FmLWRlZXAtYnRuIHFmLWRlZXAtYnRuLW9wdGlvbic7CiAgICAgICAgICAgIGJ1dHRvbi50ZXh0Q29udGVudCA9IG9wdC50ZXh0OwogICAgICAgICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgcWZkQW5zd2VyQ2hvaWNlKGl0ZW0sIG9wdCk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBxZmRVSS5pbnB1dEFyZWEuYXBwZW5kQ2hpbGQoYnV0dG9uKTsKICAgICAgICAgIH0pOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgdmFyIGFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpOwogICAgICAgIGFyZWEuY2xhc3NOYW1lID0gJ3FmLWRlZXAtdGV4dGFyZWEnOwogICAgICAgIGFyZWEucGxhY2Vob2xkZXIgPSBpdGVtLnBsYWNlaG9sZGVyIHx8ICfoh6rnlLHjgavlhaXlipvjgZfjgabjgY/jgaDjgZXjgYQnOwogICAgICAgIGFyZWEudmFsdWUgPSBxZmRTdGF0ZS50ZXh0TWFwW2l0ZW0uaWRdIHx8ICcnOwoKICAgICAgICB2YXIgbmV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogICAgICAgIG5leHQudHlwZSA9ICdidXR0b24nOwogICAgICAgIG5leHQuY2xhc3NOYW1lID0gJ3FmLWRlZXAtYnRuIHFmLWRlZXAtYnRuLXByaW1hcnknOwogICAgICAgIG5leHQuc3R5bGUubWFyZ2luVG9wID0gJzEwcHgnOwogICAgICAgIG5leHQudGV4dENvbnRlbnQgPSAn5qyh44G46YCy44KAJzsKICAgICAgICBuZXh0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgdmFyIHRleHQgPSBhcmVhLnZhbHVlLnRyaW0oKTsKICAgICAgICAgIHFmZEFuc3dlclRleHQoaXRlbSwgdGV4dCk7CiAgICAgICAgfSk7CgogICAgICAgIHFmZFVJLmlucHV0QXJlYS5hcHBlbmRDaGlsZChhcmVhKTsKICAgICAgICBxZmRVSS5pbnB1dEFyZWEuYXBwZW5kQ2hpbGQobmV4dCk7CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIHFmZEFwcGx5RWZmZWN0cyhlZmZlY3RzKSB7CiAgICAgICAgcWZkU3RhdGUucmF3LmhvbGQgKz0gZWZmZWN0cy5ob2xkIHx8IDA7CiAgICAgICAgcWZkU3RhdGUucmF3LmRlbGVnICs9IGVmZmVjdHMuZGVsZWcgfHwgMDsKICAgICAgICBxZmRTdGF0ZS5yYXcuYWkgKz0gZWZmZWN0cy5haSB8fCAwOwogICAgICAgIHFmZFN0YXRlLnJhdy5ibGluZCArPSBlZmZlY3RzLmJsaW5kIHx8IDA7CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIHFmZExlYXZlQW5kTmV4dChuZXh0Rm4pIHsKICAgICAgICBxZmRVSS5xdWVzdGlvbkJveC5jbGFzc0xpc3QuYWRkKCdxZi1kZWVwLWxlYXZpbmcnKTsKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHFmZFVJLnF1ZXN0aW9uQm94LmNsYXNzTGlzdC5yZW1vdmUoJ3FmLWRlZXAtbGVhdmluZycpOwogICAgICAgICAgbmV4dEZuKCk7CiAgICAgICAgfSwgMjIwKTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gcWZkQW5zd2VyQ2hvaWNlKGl0ZW0sIG9wdCkgewogICAgICAgIHFmZEFwcGx5RWZmZWN0cyhvcHQuZWZmZWN0cyk7CiAgICAgICAgcWZkU3RhdGUuYW5zd2Vycy5wdXNoKHsgaWQ6IGl0ZW0uaWQsIHR5cGU6ICdjaG9pY2UnLCB2YWx1ZTogb3B0LnRleHQgfSk7CiAgICAgICAgcWZkTGVhdmVBbmROZXh0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHFmZE1vdmVOZXh0KCk7CiAgICAgICAgfSk7CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIHFmZEFuc3dlclRleHQoaXRlbSwgdGV4dCkgewogICAgICAgIHFmZFN0YXRlLnRleHRNYXBbaXRlbS5pZF0gPSB0ZXh0OwogICAgICAgIHFmZFN0YXRlLmFuc3dlcnMucHVzaCh7IGlkOiBpdGVtLmlkLCB0eXBlOiAndGV4dCcsIHZhbHVlOiB0ZXh0IH0pOwogICAgICAgIHFmZExlYXZlQW5kTmV4dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICBxZmRNb3ZlTmV4dCgpOwogICAgICAgIH0pOwogICAgICB9CgogICAgICBmdW5jdGlvbiBxZmRNb3ZlTmV4dCgpIHsKICAgICAgICBxZmRTdGF0ZS5pbmRleCArPSAxOwogICAgICAgIGlmIChxZmRTdGF0ZS5pbmRleCA8IFFGRF9RVUVTVElPTlMubGVuZ3RoKSB7CiAgICAgICAgICBxZmRSZW5kZXJRdWVzdGlvbigpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBxZmRTaG93TG9hZGluZ1RoZW5SZXN1bHQoKTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gcWZkR2V0TWluTWF4KCkgewogICAgICAgIHZhciBtaW4gPSB7IGhvbGQ6IDAsIGRlbGVnOiAwLCBhaTogMCwgYmxpbmQ6IDAgfTsKICAgICAgICB2YXIgbWF4ID0geyBob2xkOiAwLCBkZWxlZzogMCwgYWk6IDAsIGJsaW5kOiAwIH07CgogICAgICAgIFFGRF9RVUVTVElPTlMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgaWYgKGl0ZW0udHlwZSAhPT0gJ2Nob2ljZScpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgICAgdmFyIGhvbGRWYWxzID0gaXRlbS5vcHRpb25zLm1hcChmdW5jdGlvbiAob3B0KSB7IHJldHVybiBvcHQuZWZmZWN0cy5ob2xkIHx8IDA7IH0pOwogICAgICAgICAgdmFyIGRlbGVnVmFscyA9IGl0ZW0ub3B0aW9ucy5tYXAoZnVuY3Rpb24gKG9wdCkgeyByZXR1cm4gb3B0LmVmZmVjdHMuZGVsZWcgfHwgMDsgfSk7CiAgICAgICAgICB2YXIgYWlWYWxzID0gaXRlbS5vcHRpb25zLm1hcChmdW5jdGlvbiAob3B0KSB7IHJldHVybiBvcHQuZWZmZWN0cy5haSB8fCAwOyB9KTsKICAgICAgICAgIHZhciBibGluZFZhbHMgPSBpdGVtLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHQpIHsgcmV0dXJuIG9wdC5lZmZlY3RzLmJsaW5kIHx8IDA7IH0pOwoKICAgICAgICAgIG1pbi5ob2xkICs9IE1hdGgubWluLmFwcGx5KG51bGwsIGhvbGRWYWxzKTsKICAgICAgICAgIG1pbi5kZWxlZyArPSBNYXRoLm1pbi5hcHBseShudWxsLCBkZWxlZ1ZhbHMpOwogICAgICAgICAgbWluLmFpICs9IE1hdGgubWluLmFwcGx5KG51bGwsIGFpVmFscyk7CiAgICAgICAgICBtaW4uYmxpbmQgKz0gTWF0aC5taW4uYXBwbHkobnVsbCwgYmxpbmRWYWxzKTsKCiAgICAgICAgICBtYXguaG9sZCArPSBNYXRoLm1heC5hcHBseShudWxsLCBob2xkVmFscyk7CiAgICAgICAgICBtYXguZGVsZWcgKz0gTWF0aC5tYXguYXBwbHkobnVsbCwgZGVsZWdWYWxzKTsKICAgICAgICAgIG1heC5haSArPSBNYXRoLm1heC5hcHBseShudWxsLCBhaVZhbHMpOwogICAgICAgICAgbWF4LmJsaW5kICs9IE1hdGgubWF4LmFwcGx5KG51bGwsIGJsaW5kVmFscyk7CiAgICAgICAgfSk7CgogICAgICAgIHJldHVybiB7IG1pbjogbWluLCBtYXg6IG1heCB9OwogICAgICB9CgogICAgICBmdW5jdGlvbiBxZmRUZXh0Qm9udXMoKSB7CiAgICAgICAgdmFyIGFsbFRleHQgPSBPYmplY3Qua2V5cyhxZmRTdGF0ZS50ZXh0TWFwKQogICAgICAgICAgLm1hcChmdW5jdGlvbiAoaykgeyByZXR1cm4gcWZkU3RhdGUudGV4dE1hcFtrXSB8fCAnJzsgfSkKICAgICAgICAgIC5qb2luKCcgJykKICAgICAgICAgIC50b0xvd2VyQ2FzZSgpOwoKICAgICAgICB2YXIgbGVuZ3RoU2NvcmUgPSAwOwogICAgICAgIE9iamVjdC5rZXlzKHFmZFN0YXRlLnRleHRNYXApLmZvckVhY2goZnVuY3Rpb24gKGspIHsKICAgICAgICAgIHZhciBuID0gKHFmZFN0YXRlLnRleHRNYXBba10gfHwgJycpLnRyaW0oKS5sZW5ndGg7CiAgICAgICAgICBpZiAobiA+PSA4MCkgewogICAgICAgICAgICBsZW5ndGhTY29yZSArPSAxMDsKICAgICAgICAgIH0gZWxzZSBpZiAobiA+PSA0MCkgewogICAgICAgICAgICBsZW5ndGhTY29yZSArPSA2OwogICAgICAgICAgfSBlbHNlIGlmIChuID49IDIwKSB7CiAgICAgICAgICAgIGxlbmd0aFNjb3JlICs9IDM7CiAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIHZhciBib251cyA9IHsKICAgICAgICAgIGhvbGQ6IDAsCiAgICAgICAgICBkZWxlZzogMCwKICAgICAgICAgIGFpOiAwLAogICAgICAgICAgYmxpbmQ6IDAKICAgICAgICB9OwoKICAgICAgICBmdW5jdGlvbiBoYXNBbnkod29yZHMpIHsKICAgICAgICAgIHJldHVybiB3b3Jkcy5zb21lKGZ1bmN0aW9uICh3KSB7CiAgICAgICAgICAgIHJldHVybiBhbGxUZXh0LmluZGV4T2YodykgIT09IC0xOwogICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaGFzQW55KFsn6Ieq5YiG44GnJywgJ+S7u+OBm+OCieOCjOOBquOBhCcsICfmgJbjgYQnLCAn44KE44KK55u044GZJ10pKSB7CiAgICAgICAgICBib251cy5ob2xkICs9IDg7CiAgICAgICAgICBib251cy5ibGluZCArPSA1OwogICAgICAgIH0KICAgICAgICBpZiAoaGFzQW55KFsn5Z+65rqWJywgJ+aJi+mghicsICfjg6zjg5Pjg6Xjg7wnLCAn5b255Ymy5YiG5ouFJ10pKSB7CiAgICAgICAgICBib251cy5kZWxlZyArPSA4OwogICAgICAgIH0KICAgICAgICBpZiAoaGFzQW55KFsn5LuV57WE44G/JywgJ+ODhuODs+ODl+ODrCcsICfoh6rli5XljJYnLCAn5aOB5omT44GhJywgJ+aVtOeQhiddKSkgewogICAgICAgICAgYm9udXMuYWkgKz0gODsKICAgICAgICAgIGJvbnVzLmRlbGVnICs9IDM7CiAgICAgICAgfQogICAgICAgIGlmIChoYXNBbnkoWyfjgarjgpPjgajjgarjgY8nLCAn5rCX44Gl44GE44Gf44KJJywgJ+avjuWbnicsICflvozlm57jgZcnXSkpIHsKICAgICAgICAgIGJvbnVzLmJsaW5kICs9IDk7CiAgICAgICAgfQoKICAgICAgICBib251cy5ob2xkICs9IE1hdGgubWluKDEyLCBNYXRoLnJvdW5kKGxlbmd0aFNjb3JlICogMC4yKSk7CiAgICAgICAgYm9udXMuYWkgKz0gTWF0aC5taW4oMTIsIE1hdGgucm91bmQobGVuZ3RoU2NvcmUgKiAwLjI1KSk7CiAgICAgICAgYm9udXMuZGVsZWcgKz0gTWF0aC5taW4oMTIsIE1hdGgucm91bmQobGVuZ3RoU2NvcmUgKiAwLjIpKTsKICAgICAgICBib251cy5ibGluZCArPSBNYXRoLm1pbigxMiwgTWF0aC5yb3VuZChsZW5ndGhTY29yZSAqIDAuMjUpKTsKCiAgICAgICAgcmV0dXJuIGJvbnVzOwogICAgICB9CgogICAgICBmdW5jdGlvbiBxZmRDb21wdXRlU2NvcmVzKCkgewogICAgICAgIHZhciBtaW5NYXggPSBxZmRHZXRNaW5NYXgoKTsKICAgICAgICB2YXIgYm9udXMgPSBxZmRUZXh0Qm9udXMoKTsKCiAgICAgICAgZnVuY3Rpb24gbm9ybShheGlzKSB7CiAgICAgICAgICB2YXIgcmF3ID0gcWZkU3RhdGUucmF3W2F4aXNdOwogICAgICAgICAgdmFyIG1pbiA9IG1pbk1heC5taW5bYXhpc107CiAgICAgICAgICB2YXIgbWF4ID0gbWluTWF4Lm1heFtheGlzXTsKICAgICAgICAgIHZhciByYXRpbyA9IG1heCA9PT0gbWluID8gMC41IDogKHJhdyAtIG1pbikgLyAobWF4IC0gbWluKTsKICAgICAgICAgIHZhciBiYXNlID0gTWF0aC5yb3VuZChyYXRpbyAqIDEwMCk7CiAgICAgICAgICByZXR1cm4gcWZkQ2xhbXAoYmFzZSArIGJvbnVzW2F4aXNdLCAwLCAxMDApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIGhvbGQ6IG5vcm0oJ2hvbGQnKSwKICAgICAgICAgIGRlbGVnOiBub3JtKCdkZWxlZycpLAogICAgICAgICAgYWk6IG5vcm0oJ2FpJyksCiAgICAgICAgICBibGluZDogbm9ybSgnYmxpbmQnKQogICAgICAgIH07CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIHFmZEV4dHJhY3RWb2ljZVNuaXBwZXQoKSB7CiAgICAgICAgdmFyIHRleHQgPSAnJzsKICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHFmZFN0YXRlLnRleHRNYXApOwogICAgICAgIHZhciBpOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSArPSAxKSB7CiAgICAgICAgICBpZiAoKHFmZFN0YXRlLnRleHRNYXBba2V5c1tpXV0gfHwgJycpLnRyaW0oKSkgewogICAgICAgICAgICB0ZXh0ID0gcWZkU3RhdGUudGV4dE1hcFtrZXlzW2ldXS50cmltKCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoIXRleHQpIHsKICAgICAgICAgIHJldHVybiAn44CM6Ieq5YiG44GX44GL44Gn44GN44Gq44GE44CN44GM57mw44KK6L+U44GX5Ye644KL5pmC54K544Gn44CB44GZ44Gn44Gr5qyh44Gu5oiQ6ZW344OG44O844Oe44GM6KaL44GI44Gm44GE44G+44GZ44CCJzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICfjgYLjgarjgZ/jga7oqIDokYnjgIwnICsgdGV4dC5zbGljZSgwLCA0NCkgKyAodGV4dC5sZW5ndGggPiA0NCA/ICcuLi4nIDogJycpICsgJ+OAjeOBq+OAgeagueOBo+OBk+OBruODkeOCv+ODvOODs+OBjOWHuuOBpuOBhOOBvuOBmeOAgic7CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIHFmZFJlc29sdmVQYXR0ZXJuKHNjb3JlcykgewogICAgICAgIGlmIChzY29yZXMuaG9sZCA+PSA3MCAmJiBzY29yZXMuZGVsZWcgPD0gNDUpIHsKICAgICAgICAgIHJldHVybiAnQSc7CiAgICAgICAgfQogICAgICAgIGlmIChzY29yZXMuaG9sZCA+PSA2OCAmJiBzY29yZXMuYmxpbmQgPj0gNjggJiYgc2NvcmVzLmRlbGVnID4gNDUgJiYgc2NvcmVzLmRlbGVnIDwgNzApIHsKICAgICAgICAgIHJldHVybiAnQyc7CiAgICAgICAgfQogICAgICAgIGlmIChzY29yZXMuZGVsZWcgPj0gNjUgJiYgc2NvcmVzLmFpID49IDY1ICYmIHNjb3Jlcy5ob2xkIDw9IDY1KSB7CiAgICAgICAgICByZXR1cm4gJ0QnOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJ0InOwogICAgICB9CgogICAgICBmdW5jdGlvbiBxZmRUeXBlUHJlc2NyaXB0aW9uKHR5cGUpIHsKICAgICAgICB2YXIgbWFwID0gewogICAgICAgICAgY2xhdWRlOiAn5ZOB6LOq5Z+65rqW44KSM+ihjOOBp+WbuuWumuOBl+OAgUFJ44Gr5Yid56i/44Go44OB44Kn44OD44Kv44KS5YiG5ouF44GV44Gb44KL6YGL55So44GM5pyA55+t44Gn44GZ44CCJywKICAgICAgICAgIGdlbWluaTogJ+aWsOimj+OCouOCpOODh+OCouOBr+WNs+Wun+ihjOOBm+OBmuOAgUFJ44Gn44CM5LuK6YCx44KE44KLMeOBpOOAjeOBuOWcp+e4ruOBl+OBpuOBi+OCieedgOaJi+OBl+OBpuOBj+OBoOOBleOBhOOAgicsCiAgICAgICAgICBjaGF0Z3B0OiAn5pat44KK44Gl44KJ44GE5qGI5Lu244Gv44CBQUnjgaflooPnlYznt5rjg4bjg7Pjg5fjg6zjgpLkvZzjgorjgIzmnJ/lvoXoqr/mlbTjgI3jgpLlhYjjgavnva7jgY/jga7jgYzmnInlirnjgafjgZnjgIInLAogICAgICAgICAgZ3JvazogJ+eLrOaWreOBrumAn+OBleOCkuaui+OBl+OBpOOBpOOAgUFJ44Gn6YCG6KaW54K544Os44OT44Ol44O844KSMeWbnuWFpeOCjOOCi+OBoOOBkeOBp+eyvuW6puOBjOS4iuOBjOOCiuOBvuOBmeOAgicsCiAgICAgICAgICB1bmtub3duOiAn44GC44Gq44Gf44Gu5L2c5qWt44Ot44Kw44KSM+aXpeWIhuOBoOOBkUFJ44Gr5rih44GX44CB5aeU5Lu75YCZ6KOc44KS5oq95Ye644GV44Gb44KL44Go44GT44KN44GL44KJ5aeL44KB44Gm44GP44Gg44GV44GE44CCJwogICAgICAgIH07CiAgICAgICAgcmV0dXJuIG1hcFt0eXBlXSB8fCBtYXAudW5rbm93bjsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gcWZkUGF0dGVyblRleHRzKHBhdHRlcm4sIHNjb3JlcykgewogICAgICAgIHZhciBkYXRhID0gewogICAgICAgICAgQTogewogICAgICAgICAgICB0aXRsZTogJ+e3iuW8teWei+OCquODvOODkOODvOOCreODvOODlycsCiAgICAgICAgICAgIHN1bW1hcnk6ICflk4Hos6rjgpLlrojjgovlipvjgYzpq5jjgYTkuIDmlrnjgafjgIHlrojjgovjgbvjganmirHjgYjovrzjgb/jgYzlvLfljJbjgZXjgozjgovnirbmhYvjgafjgZnjgIInLAogICAgICAgICAgICBibGluZDogJ+WuiOOCi+OBn+OCgeOBruaKseOBiOi+vOOBv+OBjOOAgee1kOaenOeahOOBq+WIpOaWreeWsuOCjOOBqOWBnOa7nuOCkuWil+OChOOBl+OBpuOBhOOBvuOBmeOAgicsCiAgICAgICAgICAgIHN0cmVuZ3RoOiAn6auY44GE5Z+65rqW5oSf6Kaa44Go6LKs5Lu75oSf44Gv44CB5YaN54++5Y+v6IO944Gq5LuV57WE44G/44Gr5aSJ44GI44KL44Go5aSn44GN44Gq6LOH55Sj44Gn44GZ44CCJywKICAgICAgICAgICAgZmlyc3Q6ICfmrKHjga4x5Lu244Gg44GR44CM5a6M5oiQ5p2h5Lu244CN44KSM+ihjOOBp+abuOOBjeOAgUFJ44Gr5Yid56i/44KS5Ye644GV44Gb44Gm44GL44KJ5L+u5q2j44GX44Gm44GP44Gg44GV44GE44CCJwogICAgICAgICAgfSwKICAgICAgICAgIEI6IHsKICAgICAgICAgICAgdGl0bGU6ICfmg4XnhrHmi6HmlaPlnovjgqLjg7Pjg4Djg7zjgrfjgrnjg4bjg6AnLAogICAgICAgICAgICBzdW1tYXJ5OiAn5Y+v6IO95oCn44KS6KaL5oqc44GP5Yqb44Gv5by344GE44Gu44Gr44CB5YSq5YWI6aCG5L2N44Gu5Zu65a6a44GM6L+944GE44Gk44GE44Gm44GE44Gq44GE54q25oWL44Gn44GZ44CCJywKICAgICAgICAgICAgYmxpbmQ6ICfoia/jgYTnnYDmg7PjgZ3jga7jgoLjga7jgafjga/jgarjgY/jgIHnnYDmiYvpoIbluo/jgYzmiJDmnpzjga7lj5bjgorjgZPjgbzjgZfjgpLnlJ/jgpPjgafjgYTjgb7jgZnjgIInLAogICAgICAgICAgICBzdHJlbmd0aDogJ+eZuuaDs+WKm+OBqOe3qOmbhuWKm+OBruS4oeaWueOBjOOBguOCiuOAgeaVtOeQhuOBleOBiOWFpeOCjOOBsOS8uOOBs+OBjOmAn+OBhOOCv+OCpOODl+OBp+OBmeOAgicsCiAgICAgICAgICAgIGZpcnN0OiAn5LuK5pel44Gu44K/44K544Kv44KSQUnjgavmuKHjgZfjgIHjgIzku4rpgLHmiJDmnpzjgavnm7TntZDjgZnjgovkuIrkvY0z44Gk44CN44Gg44GR5oq95Ye644GX44Gm44GP44Gg44GV44GE44CCJwogICAgICAgICAgfSwKICAgICAgICAgIEM6IHsKICAgICAgICAgICAgdGl0bGU6ICfosqLnjK7pgY7lpJrlnovjgrvjg6vjg5Xjg63jgrknLAogICAgICAgICAgICBzdW1tYXJ5OiAn5ZGo5Zuy44G444Gu6LKi54yu5Yqb44GM6auY44GE5YiG44CB6Ieq5YiG44Gu6LOH5rqQ44GM6KaL44GI44Gq44GE5b2i44Gn5rWB5Ye644GX44Gm44GE44KL54q25oWL44Gn44GZ44CCJywKICAgICAgICAgICAgYmxpbmQ6ICfkurrjgpLliqnjgZHjgovooYzli5XjgYzjgIHmnIDph43opoHmoYjku7bjgpLlvozlm57jgZfjgavjgZnjgovmp4vpgKDjgpLkvZzjgaPjgabjgYTjgb7jgZnjgIInLAogICAgICAgICAgICBzdHJlbmd0aDogJ+WFseaEn+WKm+OBqOmWouS/guiqv+aVtOWKm+OBr+OAgUFJ44Go5L2155So44GZ44KL44Go5pyA55+t44Gn5L+h6aC844KS56mN44G/5LiK44GS44KJ44KM44KL6LOH55Sj44Gn44GZ44CCJywKICAgICAgICAgICAgZmlyc3Q6ICfkvp3poLzov5Tkv6Hjg4bjg7Pjg5fjg6zjgpJBSeOBp+S9nOaIkOOBl+OAgeOAjOWPl+OBkeOCi+adoeS7tuOAjeOCkuWFiOOBq+mAgeOCi+mBi+eUqOOBuOWIh+OCiuabv+OBiOOBpuOBj+OBoOOBleOBhOOAgicKICAgICAgICAgIH0sCiAgICAgICAgICBEOiB7CiAgICAgICAgICAgIHRpdGxlOiAn5r2c5Zyo5Y+45Luk5aGU5Z6L44OW44Os44Kk44Kv5YmN5aScJywKICAgICAgICAgICAgc3VtbWFyeTogJ+aJi+aUvuOBmea6luWCmeOBr+aVtOOBo+OBpuOBiuOCiuOAgeaXp+e/kuaFo+OBruWQjeaui+OBoOOBkeOBjOaIkOmVt+mAn+W6puOCkuaKkeOBiOOBpuOBhOOCi+eKtuaFi+OBp+OBmeOAgicsCiAgICAgICAgICAgIGJsaW5kOiAn44Gn44GN44KL44Gu44Gr5Lu744Gb44Gq44GE5oWj5oCn44GM44CB5qyh44Gu44K544OG44O844K456e76KGM44KS6YGF44KJ44Gb44Gm44GE44G+44GZ44CCJywKICAgICAgICAgICAgc3RyZW5ndGg6ICfoqK3oqIjlipvjgajliKTmlq3lipvjgYzpq5jjgY/jgIHliIbouqtBSeOBruW9ueWJsuOCkuWumue+qeOBmeOCjOOBsOS4gOawl+OBq+aLoeW8teOBp+OBjeOBvuOBmeOAgicsCiAgICAgICAgICAgIGZpcnN0OiAn5LuK6YCx44Gu5a6a5Z6L5qWt5YuZ44KSMeOBpOmBuOOBs+OAgUFJ44Gr44CM5omL6aCG5YyW4oaS5LiL5pu444GN4oaS44K744Or44OV44OB44Kn44OD44Kv44CN44G+44Gn5aeU6K2y44GX44Gm44GP44Gg44GV44GE44CCJwogICAgICAgICAgfQogICAgICAgIH07CgogICAgICAgIHZhciBwID0gZGF0YVtwYXR0ZXJuXTsKICAgICAgICBwLmRldGFpbCA9ICfmirHjgYjovrzjgb/luqYgJyArIHNjb3Jlcy5ob2xkICsgJyAvIOWnlOS7u+ODrOODh+OCo+ODjeOCuSAnICsgc2NvcmVzLmRlbGVnICsgJyAvIEFJ5rS755So44Od44OG44Oz44K344Oj44OrICcgKyBzY29yZXMuYWkgKyAnIC8g55uy54K544Gu5rex44GVICcgKyBzY29yZXMuYmxpbmQgKyAn44CCJzsKICAgICAgICByZXR1cm4gcDsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gcWZkQmFyKGxhYmVsLCB2YWx1ZSwga2V5KSB7CiAgICAgICAgcmV0dXJuICcnICsKICAgICAgICAgICc8ZGl2IGNsYXNzPSJxZi1kZWVwLXNjb3JlIj4nICsKICAgICAgICAgICcgIDxkaXYgY2xhc3M9InFmLWRlZXAtc2NvcmUtdG9wIj48c3Bhbj4nICsgbGFiZWwgKyAnPC9zcGFuPjxzdHJvbmc+JyArIHZhbHVlICsgJyU8L3N0cm9uZz48L2Rpdj4nICsKICAgICAgICAgICcgIDxkaXYgY2xhc3M9InFmLWRlZXAtc2NvcmUtYmFyIj48ZGl2IGNsYXNzPSJxZi1kZWVwLXNjb3JlLWZpbGwiIGRhdGEtcWYtZGVlcC1maWxsPSInICsga2V5ICsgJyIgc3R5bGU9IndpZHRoOjAlIj48L2Rpdj48L2Rpdj4nICsKICAgICAgICAgICc8L2Rpdj4nOwogICAgICB9CgogICAgICBmdW5jdGlvbiBxZmRTaGFyZVRleHQocGF0dGVyblRpdGxlKSB7CiAgICAgICAgcmV0dXJuICcxNuWVj+OBrua3seWxpOiouuaWree1kOaenOOBr+OAkCcgKyBwYXR0ZXJuVGl0bGUgKyAn44CR44CC5oqx44GI6L6844G/44Gu55uy54K544GM6KaL44GI44G+44GX44Gf44CC44GC44Gq44Gf44KC6Ki65pat44GX44Gm44G/44Gm44GP44Gg44GV44GE44CCICPliIbouqtBSSAj5rex5bGk6Ki65patJzsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gcWZkUmVuZGVyUmVzdWx0KHNjb3JlcykgewogICAgICAgIHZhciBwYXR0ZXJuS2V5ID0gcWZkUmVzb2x2ZVBhdHRlcm4oc2NvcmVzKTsKICAgICAgICB2YXIgcGF0dGVybiA9IHFmZFBhdHRlcm5UZXh0cyhwYXR0ZXJuS2V5LCBzY29yZXMpOwogICAgICAgIHZhciBzaGFsbG93TGFiZWwgPSBRRkRfVFlQRV9MQUJFTFtxZmRTdGF0ZS5zaGFsbG93VHlwZV0gfHwgUUZEX1RZUEVfTEFCRUwudW5rbm93bjsKICAgICAgICB2YXIgdHlwZUFkdmljZSA9IHFmZFR5cGVQcmVzY3JpcHRpb24ocWZkU3RhdGUuc2hhbGxvd1R5cGUpOwogICAgICAgIHZhciB2b2ljZVNuaXBwZXQgPSBxZmRFeHRyYWN0Vm9pY2VTbmlwcGV0KCk7CgogICAgICAgIHZhciBwYWdlVXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7CiAgICAgICAgdmFyIHNoYXJlVGV4dCA9IHFmZFNoYXJlVGV4dChwYXR0ZXJuLnRpdGxlKTsKICAgICAgICB2YXIgeFVybCA9ICdodHRwczovL3R3aXR0ZXIuY29tL2ludGVudC90d2VldD90ZXh0PScgKyBlbmNvZGVVUklDb21wb25lbnQoc2hhcmVUZXh0KSArICcmdXJsPScgKyBlbmNvZGVVUklDb21wb25lbnQocGFnZVVybCk7CiAgICAgICAgdmFyIGxpbmVVcmwgPSAnaHR0cHM6Ly9saW5lLm1lL1IvbXNnL3RleHQvPycgKyBlbmNvZGVVUklDb21wb25lbnQoc2hhcmVUZXh0ICsgJyAnICsgcGFnZVVybCk7CgogICAgICAgIHFmZFVJLnJlc3VsdENhcmQuaW5uZXJIVE1MID0gJycgKwogICAgICAgICAgJzxkaXYgY2xhc3M9InFmLWRlZXAtcHJvZmlsZSI+JyArCiAgICAgICAgICAnICA8aDMgY2xhc3M9InFmLWRlZXAtcHJvZmlsZS10aXRsZSI+44GC44Gq44Gf44Gu5oqx44GI6L6844G/44OX44Ot44OV44Kh44Kk44OrOiAnICsgcGF0dGVybi50aXRsZSArICc8L2gzPicgKwogICAgICAgICAgJyAgPHNwYW4gY2xhc3M9InFmLWRlZXAtcGlsbCI+5rWF44GE6Ki65pat44K/44Kk44OXOiAnICsgc2hhbGxvd0xhYmVsICsgJzwvc3Bhbj4nICsKICAgICAgICAgICcgIDxzcGFuIGNsYXNzPSJxZi1kZWVwLXBpbGwiPjE25ZWP5a6M5LqGPC9zcGFuPicgKwogICAgICAgICAgJyAgPHAgY2xhc3M9InFmLWRlZXAtcmVzdWx0LWJsb2NrIj4nICsgcGF0dGVybi5zdW1tYXJ5ICsgJzwvcD4nICsKICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICc8ZGl2IGNsYXNzPSJxZi1kZWVwLWdyaWQiPicgKwogICAgICAgICAgcWZkQmFyKCfmirHjgYjovrzjgb/luqYnLCBzY29yZXMuaG9sZCwgJ2hvbGQnKSArCiAgICAgICAgICBxZmRCYXIoJ+WnlOS7u+ODrOODh+OCo+ODjeOCuScsIHNjb3Jlcy5kZWxlZywgJ2RlbGVnJykgKwogICAgICAgICAgcWZkQmFyKCdBSea0u+eUqOODneODhuODs+OCt+ODo+ODqycsIHNjb3Jlcy5haSwgJ2FpJykgKwogICAgICAgICAgcWZkQmFyKCfnm7Lngrnjga7mt7HjgZUnLCBzY29yZXMuYmxpbmQsICdibGluZCcpICsKICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICc8cCBjbGFzcz0icWYtZGVlcC1yZXN1bHQtYmxvY2siPjxzdHJvbmc+6KaL44GI44Gm44GE44Gq44GE55uy54K5Ojwvc3Ryb25nPiAnICsgcGF0dGVybi5ibGluZCArICc8L3A+JyArCiAgICAgICAgICAnPHAgY2xhc3M9InFmLWRlZXAtcmVzdWx0LWJsb2NrIj48c3Ryb25nPumaoOOCjOOBn+W8t+OBvzo8L3N0cm9uZz4gJyArIHBhdHRlcm4uc3RyZW5ndGggKyAnPC9wPicgKwogICAgICAgICAgJzxwIGNsYXNzPSJxZi1kZWVwLXJlc3VsdC1ibG9jayI+PHN0cm9uZz5BSeODkeODvOODiOODiuODvOWHpuaWueeuizo8L3N0cm9uZz4gJyArIHR5cGVBZHZpY2UgKyAnPC9wPicgKwogICAgICAgICAgJzxwIGNsYXNzPSJxZi1kZWVwLXJlc3VsdC1ibG9jayI+PHN0cm9uZz7mnIDliJ3jga7kuIDmrak6PC9zdHJvbmc+ICcgKyBwYXR0ZXJuLmZpcnN0ICsgJzwvcD4nICsKICAgICAgICAgICc8ZGl2IGNsYXNzPSJxZi1kZWVwLXdvdyI+JyArIHZvaWNlU25pcHBldCArICc8YnI+JyArIHBhdHRlcm4uZGV0YWlsICsgJzwvZGl2PicgKwogICAgICAgICAgJzxkZXRhaWxzIGNsYXNzPSJxZi1kZWVwLWRldGFpbHMiPjxzdW1tYXJ5Puips+e0sOWIhuaekOOCkumWi+OBjzwvc3VtbWFyeT48cD7jgZPjga7ntZDmnpzjga806Lu444K544Kz44Ki44Gr5Yqg44GI44CB6Ieq55Sx6KiY6L+w44Gu5paH6ISI77yI5YaF55yB44Gu5rex44GV44O744Kt44O844Ov44O844OJ77yJ44KS5Y+N5pig44GX44Gm55Sf5oiQ44GX44Gm44GE44G+44GZ44CC54K55pWw44Gu6auY5L2O44Gv5YSq5Yqj44Gn44Gv44Gq44GP44CB5LuK44Gu57WM5Za244K544K/44Kk44Or44Gu5YK+5ZCR44Gn44GZ44CCPC9wPjwvZGV0YWlscz4nICsKICAgICAgICAgICc8ZGV0YWlscyBjbGFzcz0icWYtZGVlcC1kZXRhaWxzIj48c3VtbWFyeT7jgr/jgqTjg5fliKXjgrXjg5blpInljJbjgpLopovjgos8L3N1bW1hcnk+PHA+Q2xhdWRl5Z6L44Gv5ZOB6LOq5Z+65rqW44Gu6Z2e5YWx5pyJ44CBR2VtaW5p5Z6L44Gv5YSq5YWI6aCG5L2N5pyq5Zu65a6a44CBQ2hhdEdQVOWei+OBr+Wig+eVjOe3muOBruabluaYp+OBleOAgUdyb2vlnovjga/nm7joq4fjg53jgqTjg7Pjg4jjga7mnKroqK3lrprjgYzjg5zjg4jjg6vjg43jg4Pjgq/jgavjgarjgorjgoTjgZnjgYTlgr7lkJHjgafjgZnjgII8L3A+PC9kZXRhaWxzPicgKwogICAgICAgICAgJzxwIGNsYXNzPSJxZi1kZWVwLXVyZ2VudC1ub3RlIj7jgZPjga7ntZDmnpzjga/jg5rjg7zjgrjjgpLplonjgZjjgovjgagy5bqm44Go6KaL44Gk44GL44KJ44Gq44GE5Y+v6IO95oCn44GM44GC44KK44G+44GZ44CC4pGg44CM57WQ5p6cVVJM44KS5L+d5a2Y77yI44Kz44OU44O877yJ44CN4oaSIOKRoVgvTElOReOBp+OCt+OCp+OCoiDjga7poIbjgafpgLLjgoHjgabjgY/jgaDjgZXjgYTjgII8L3A+JyArCiAgICAgICAgICAnPGRpdiBjbGFzcz0icWYtZGVlcC1zaGFyZS1ncmlkIj4nICsKICAgICAgICAgICcgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icWYtZGVlcC1idG4gcWYtZGVlcC1idG4tc2hhcmUteCIgZGF0YS1xZi1kZWVwLXNoYXJlPSJ4Ij7ikaEgWOOBp+e1kOaenOOCkuOCt+OCp+OCouOBmeOCizwvYnV0dG9uPicgKwogICAgICAgICAgJyAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJxZi1kZWVwLWJ0biBxZi1kZWVwLWJ0bi1zaGFyZS1saW5lIiBkYXRhLXFmLWRlZXAtc2hhcmU9ImxpbmUiPuKRoSBMSU5F44Gn57WQ5p6c44KS44K344Kn44Ki44GZ44KLPC9idXR0b24+JyArCiAgICAgICAgICAnICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InFmLWRlZXAtYnRuIHFmLWRlZXAtYnRuLXNoYXJlLWNvcHkiIGRhdGEtcWYtZGVlcC1zaGFyZT0iY29weSI+4pGgIOWFiOOBq+e1kOaenFVSTOOCkuS/neWtmO+8iOOCs+ODlOODvO+8iTwvYnV0dG9uPicgKwogICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgJzxkaXYgY2xhc3M9InFmLWRlZXAtY3RhIj4nICsKICAgICAgICAgICcgIDxwIGNsYXNzPSJxZi1kZWVwLWN0YS10ZXh0Ij7jgZPjgZPjgYvjgonlhYjjga/jgIHjgYLjgarjgZ/lsILnlKjjga7liIbouqtBSeOCkuiCsuOBpuOCi+OCueODhuODg+ODl+OBp+OBmeOAgjwvcD4nICsKICAgICAgICAgICcgIDxhIGNsYXNzPSJxZi1kZWVwLWJ0biBxZi1kZWVwLWJ0bi1jdGEiIGhyZWY9IiNidW5zaGluLWFpIj7liIbouqtBSeOCkuiCsuOBpuOCizwvYT4nICsKICAgICAgICAgICcgIDxkaXYgc3R5bGU9Im1hcmdpbi10b3A6MTZweDsiPjxhIGNsYXNzPSJxZi1kZWVwLWJ0biBxZi1kZWVwLWJ0bi1wcmltYXJ5IiBpZD0icWYtZGVlcC1zb3VsLWN0YSIgaHJlZj0iIyI+5YiG6LqrQUnjgpLogrLjgabjgovvvIjoh6rliIbjgpLnn6Xjgovjg6/jg7zjgq/jgpLlp4vjgoHjgovvvIk8L2E+PC9kaXY+JyArCiAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAnPHNlY3Rpb24gY2xhc3M9InFmLWRlZXAtcmVnLXNlY3Rpb24iPicgKwogICAgICAgICAgJyAgPGg0IGNsYXNzPSJxZi1kZWVwLXJlZy10aXRsZSI+6Ki65pat57WQ5p6c44KS44KC44Gj44Go5rS755So44GZ44KLPC9oND4nICsKICAgICAgICAgICcgIDxkaXYgY2xhc3M9InFmLWRlZXAtcmVnLWdyaWQiPicgKwogICAgICAgICAgJyAgICA8YXJ0aWNsZSBjbGFzcz0icWYtZGVlcC1yZWctY2FyZCI+JyArCiAgICAgICAgICAnICAgICAgPGg1IGNsYXNzPSJxZi1kZWVwLXJlZy1jYXJkLXRpdGxlIj5MSU5F44Gn5Y+X44GR5Y+W44KLPC9oNT4nICsKICAgICAgICAgICcgICAgICA8YSBjbGFzcz0icWYtZGVlcC1yZWctbGluZS1idG4iIGhyZWY9Imh0dHBzOi8vbGluZS5tZS9SL3RpL3AvQHFvdjU2NTJmIj48c3BhbiBjbGFzcz0icWYtZGVlcC1yZWctbGluZS1pY29uIj5MSU5FPC9zcGFuPkxJTkUg44Gn5Y+L44Gg44Gh44Gr44Gq44KLPC9hPicgKwogICAgICAgICAgJyAgICAgIDxwIGNsYXNzPSJxZi1kZWVwLXJlZy1zdWJ0ZXh0Ij7oqLrmlq3ntZDmnpzjga7oqbPjgZfjgYTop6PoqqzjgpJMSU5F44Gn44GK5bGK44GRPC9wPicgKwogICAgICAgICAgJyAgICA8L2FydGljbGU+JyArCiAgICAgICAgICAnICAgIDxhcnRpY2xlIGNsYXNzPSJxZi1kZWVwLXJlZy1jYXJkIj4nICsKICAgICAgICAgICcgICAgICA8aDUgY2xhc3M9InFmLWRlZXAtcmVnLWNhcmQtdGl0bGUiPuODoeODvOODq+OBp+WPl+OBkeWPluOCizwvaDU+JyArCiAgICAgICAgICAnICAgICAgPGZvcm0gY2xhc3M9InFmLWRlZXAtcmVnLWZvcm0iIGFjdGlvbj0iI0FDVElWRUNBTVBBSUdOX0ZPUk1fQUNUSU9OIiBtZXRob2Q9IlBPU1QiPicgKwogICAgICAgICAgJyAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idSIgdmFsdWU9IkFDVElWRUNBTVBBSUdOX0ZPUk1fSUQiPicgKwogICAgICAgICAgJyAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZiIgdmFsdWU9IkFDVElWRUNBTVBBSUdOX0ZPUk1fSUQiPicgKwogICAgICAgICAgJyAgICAgICAgPGlucHV0IGNsYXNzPSJxZi1kZWVwLXJlZy1pbnB1dCIgdHlwZT0iZW1haWwiIG5hbWU9ImVtYWlsIiBwbGFjZWhvbGRlcj0i44Oh44O844Or44Ki44OJ44Os44K5IiByZXF1aXJlZD4nICsKICAgICAgICAgICcgICAgICAgIDxidXR0b24gY2xhc3M9InFmLWRlZXAtcmVnLXN1Ym1pdCIgdHlwZT0ic3VibWl0Ij7jg6Hjg7zjg6vjgaflj5fjgZHlj5bjgos8L2J1dHRvbj4nICsKICAgICAgICAgICcgICAgICA8L2Zvcm0+JyArCiAgICAgICAgICAnICAgICAgPHAgY2xhc3M9InFmLWRlZXAtcmVnLXN1YnRleHQiPkFJ44OR44O844OI44OK44O85rS755So6KGT44KS54Sh5paZ44Gn44Oh44O844Or6YWN5L+hPC9wPicgKwogICAgICAgICAgJyAgICAgIDxwIGNsYXNzPSJxZi1kZWVwLXJlZy1wcml2YWN5Ij7igLsg44GE44Gk44Gn44KC6Kej6Zmk44Gn44GN44G+44GZPC9wPicgKwogICAgICAgICAgJyAgICA8L2FydGljbGU+JyArCiAgICAgICAgICAnICA8L2Rpdj4nICsKICAgICAgICAgICc8L3NlY3Rpb24+JyArCiAgICAgICAgICAnPHAgY2xhc3M9InFmLWRlZXAtbm90ZSI+44K344Kn44Ki5paH44Gr44Gv6Ki65pat44OR44K/44O844Oz44GM6Ieq5YuV5YWl5Yqb44GV44KM44G+44GZ44CC5L+d5a2Y5riI44G/44Gq44KJ44Gd44Gu44G+44G+5oqV56i/44Gn44GN44G+44GZ44CCPC9wPic7CgogICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgcWZkQWxsKCdbZGF0YS1xZi1kZWVwLWZpbGxdJykuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkgewogICAgICAgICAgICB2YXIga2V5ID0gbm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtcWYtZGVlcC1maWxsJyk7CiAgICAgICAgICAgIG5vZGUuc3R5bGUud2lkdGggPSAoc2NvcmVzW2tleV0gfHwgMCkgKyAnJSc7CiAgICAgICAgICB9KTsKICAgICAgICB9LCA4MCk7CgogICAgICAgIHFmZEFsbCgnW2RhdGEtcWYtZGVlcC1zaGFyZV0nKS5mb3JFYWNoKGZ1bmN0aW9uIChidXR0b24pIHsKICAgICAgICAgIHZhciBraW5kID0gYnV0dG9uLmdldEF0dHJpYnV0ZSgnZGF0YS1xZi1kZWVwLXNoYXJlJyk7CgogICAgICAgICAgaWYgKGtpbmQgPT09ICd4JykgewogICAgICAgICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgd2luZG93Lm9wZW4oeFVybCwgJ19ibGFuaycsICdub29wZW5lcixub3JlZmVycmVyJyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQoKICAgICAgICAgIGlmIChraW5kID09PSAnbGluZScpIHsKICAgICAgICAgICAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgIHdpbmRvdy5vcGVuKGxpbmVVcmwsICdfYmxhbmsnLCAnbm9vcGVuZXIsbm9yZWZlcnJlcicpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KCiAgICAgICAgICBpZiAoa2luZCA9PT0gJ2NvcHknKSB7CiAgICAgICAgICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICB2YXIgZG9uZSA9ICfntZDmnpxVUkzjgpLkv53lrZjjgZfjgb7jgZfjgZ/jgILmrKHjga/ikaFYL0xJTkXjgafjgrfjgqfjgqInOwogICAgICAgICAgICAgIGlmIChuYXZpZ2F0b3IuY2xpcGJvYXJkICYmIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KSB7CiAgICAgICAgICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChwYWdlVXJsKS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgYnV0dG9uLnRleHRDb250ZW50ID0gZG9uZTsKICAgICAgICAgICAgICAgIH0pWydjYXRjaCddKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgcWZkRmFsbGJhY2tDb3B5KHBhZ2VVcmwsIGJ1dHRvbiwgZG9uZSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcWZkRmFsbGJhY2tDb3B5KHBhZ2VVcmwsIGJ1dHRvbiwgZG9uZSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgdmFyIHNvdWxDdGEgPSBxZmRPbmUoJyNxZi1kZWVwLXNvdWwtY3RhJyk7CiAgICAgICAgaWYgKHNvdWxDdGEpIHsKICAgICAgICAgIHNvdWxDdGEuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIHZhciB1aWQgPSAndV8nICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiwgMTApICsgRGF0ZS5ub3coKS50b1N0cmluZygzNik7CiAgICAgICAgICAgIHRyeSB7IGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdxZlNvdWxXb3JrOmN1cnJlbnRVc2VyJywgdWlkKTsgfSBjYXRjaChpZykge30KICAgICAgICAgICAgdmFyIHBhcmFtcyA9ICc/dWlkPScgKyBlbmNvZGVVUklDb21wb25lbnQodWlkKSArICcmdHlwZT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHFmZFR5cGUpOwogICAgICAgICAgICBpZiAocWZkRmluYWxTY29yZXMpIHsKICAgICAgICAgICAgICBwYXJhbXMgKz0gJyZob2xkPScgKyAocWZkRmluYWxTY29yZXMuaG9sZERlcHRoIHx8IDApOwogICAgICAgICAgICAgIHBhcmFtcyArPSAnJmRlbGVnPScgKyAocWZkRmluYWxTY29yZXMuZGVsZWdhdGVCbG9jayB8fCAwKTsKICAgICAgICAgICAgICBwYXJhbXMgKz0gJyZhaT0nICsgKHFmZEZpbmFsU2NvcmVzLmhpZGRlblN0cmVuZ3RoIHx8IDApOwogICAgICAgICAgICAgIHBhcmFtcyArPSAnJmJsaW5kPScgKyAocWZkRmluYWxTY29yZXMuYmxpbmRQYXR0ZXJuIHx8IDApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9zb3VsLXNlc3Npb24xLycgKyBwYXJhbXM7CiAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIHFmZEZhbGxiYWNrQ29weSh0ZXh0LCBidXR0b24sIGRvbmUpIHsKICAgICAgICB2YXIgdGVtcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7CiAgICAgICAgdGVtcC52YWx1ZSA9IHRleHQ7CiAgICAgICAgcWZkQ29udGFpbmVyLmFwcGVuZENoaWxkKHRlbXApOwogICAgICAgIHRlbXAuZm9jdXMoKTsKICAgICAgICB0ZW1wLnNlbGVjdCgpOwogICAgICAgIHRyeSB7CiAgICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpOwogICAgICAgICAgYnV0dG9uLnRleHRDb250ZW50ID0gZG9uZTsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICBidXR0b24udGV4dENvbnRlbnQgPSAn44Kz44OU44O844Gr5aSx5pWX44GX44G+44GX44GfJzsKICAgICAgICB9CiAgICAgICAgdGVtcC5yZW1vdmUoKTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gcWZkU2hvd0xvYWRpbmdUaGVuUmVzdWx0KCkgewogICAgICAgIHFmZFNob3dTY3JlZW4oJ2xvYWRpbmcnKTsKICAgICAgICB2YXIgbWVzc2FnZXMgPSBbCiAgICAgICAgICAn55uy54K544KS5YiG5p6Q5LitLi4uJywKICAgICAgICAgICfmirHjgYjovrzjgb/jg5Hjgr/jg7zjg7PjgpLnhaflkIjkuK0uLi4nLAogICAgICAgICAgJ+maoOOCjOOBn+W8t+OBv+OCkuaKveWHuuS4rS4uLicsCiAgICAgICAgICAnQUnjg5Hjg7zjg4jjg4rjg7zlh6bmlrnnrovjgpLntYTjgb/nq4vjgabkuK0uLi4nCiAgICAgICAgXTsKICAgICAgICB2YXIgc3RlcCA9IDA7CiAgICAgICAgcWZkVUkubG9hZGluZ0ZpbGwuc3R5bGUud2lkdGggPSAnOCUnOwogICAgICAgIHFmZFVJLmxvYWRpbmdNc2cudGV4dENvbnRlbnQgPSBtZXNzYWdlc1swXTsKCiAgICAgICAgdmFyIHRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgewogICAgICAgICAgc3RlcCArPSAxOwogICAgICAgICAgdmFyIHJhdGlvID0gcWZkQ2xhbXAoTWF0aC5yb3VuZCgoc3RlcCAvIG1lc3NhZ2VzLmxlbmd0aCkgKiAxMDApLCAxMCwgMTAwKTsKICAgICAgICAgIHFmZFVJLmxvYWRpbmdGaWxsLnN0eWxlLndpZHRoID0gcmF0aW8gKyAnJSc7CiAgICAgICAgICBxZmRVSS5sb2FkaW5nTXNnLnRleHRDb250ZW50ID0gbWVzc2FnZXNbTWF0aC5taW4oc3RlcCwgbWVzc2FnZXMubGVuZ3RoIC0gMSldOwogICAgICAgIH0sIDg1MCk7CgogICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcik7CiAgICAgICAgICBxZmRVSS5sb2FkaW5nRmlsbC5zdHlsZS53aWR0aCA9ICcxMDAlJzsKICAgICAgICAgIHZhciBzY29yZXMgPSBxZmRDb21wdXRlU2NvcmVzKCk7CiAgICAgICAgICBxZmRGaW5hbFNjb3JlcyA9IHsgaG9sZERlcHRoOiBzY29yZXMuaG9sZCwgZGVsZWdhdGVCbG9jazogc2NvcmVzLmRlbGVnLCBoaWRkZW5TdHJlbmd0aDogc2NvcmVzLmFpLCBibGluZFBhdHRlcm46IHNjb3Jlcy5ibGluZCB9OwogICAgICAgICAgcWZkVHlwZSA9IHFmZFN0YXRlLnNoYWxsb3dUeXBlIHx8ICd1bmtub3duJzsKICAgICAgICAgIHFmZFJlbmRlclJlc3VsdChzY29yZXMpOwogICAgICAgICAgcWZkU2hvd1NjcmVlbigncmVzdWx0Jyk7CiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcWZkVUkucmVzdWx0Q2FyZC5jbGFzc0xpc3QuYWRkKCdxZi1kZWVwLXJldmVhbCcpOwogICAgICAgICAgfSwgNDApOwogICAgICAgIH0sIDM2MDApOwogICAgICB9CgogICAgICAvLyBBdXRvLXNlbGVjdCBzaGFsbG93IHR5cGUgZnJvbSBVUkwgcGFyYW0gYW5kIGF1dG8tc3RhcnQgaWYgcHJvdmlkZWQKICAgICAgaWYgKHByZXNlbGVjdGVkVHlwZSAmJiBxZmRVSS5zaGFsbG93VHlwZSkgewogICAgICAgIHZhciB2YWxpZFR5cGVzID0gWydjbGF1ZGUnLCAnZ2VtaW5pJywgJ2NoYXRncHQnLCAnZ3JvayddOwogICAgICAgIGlmICh2YWxpZFR5cGVzLmluZGV4T2YocHJlc2VsZWN0ZWRUeXBlKSAhPT0gLTEpIHsKICAgICAgICAgIHFmZFVJLnNoYWxsb3dUeXBlLnZhbHVlID0gcHJlc2VsZWN0ZWRUeXBlOwogICAgICAgIH0KICAgICAgfQoKICAgICAgcWZkVUkuc3RhcnRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgcWZkUmVzZXQoKTsKICAgICAgICBxZmRTaG93U2NyZWVuKCdxdWl6Jyk7CiAgICAgICAgcWZkUmVuZGVyUXVlc3Rpb24oKTsKICAgICAgfSk7CiAgICB9KSgpOwogIA==
