IiBUZXN0cyBmb3IgcmVnZXhwIGluIHV0ZjggZW5jb2RpbmcKCnNvdXJjZSBzaGFyZWQudmltCgpmdW5jIHM6ZXF1aXZhbGVuY2VfdGVzdCgpCiAgbGV0IHN0ciA9ICJBw4DDgcOCw4PDhMOFxIDEgsSEx43Hnsegx7rIgsimyLrhuIDhuqDhuqLhuqThuqbhuqjhuqrhuqzhuq7hurDhurLhurThurYgQsaByYPhuILhuIThuIYgQ8OHxIbEiMSKxIzGh8i74biI6p6SIETEjsSQxorhuIrhuIzhuI7huJDhuJIgRcOIw4nDisOLxJLElMSWxJjEmsiEyIbIqMmG4biU4biW4biY4bia4bic4bq44bq64bq84bq+4buA4buC4buE4buGIEbGkeG4nuqemCBHxJzEnsSgxKLGk8ekx6bHtOG4oOqeoCBIxKTEpsie4bii4bik4bim4bio4biq4rGnIEnDjMONw47Dj8SoxKrErMSuxLDGl8ePyIjIiuG4rOG4ruG7iOG7iiBKxLTJiCBLxLbGmMeo4biw4biy4bi04rGp6p2AIEzEucS7xL3Ev8WByL3huLbhuLjhuLrhuLzisaAgTeG4vuG5gOG5giBOw5HFg8WFxYfHuOG5hOG5huG5iOG5iuqepCBPw5LDk8OUw5XDlsOYxYzFjsWQxp/GoMeRx6rHrMe+yIzIjsiqyKzIrsiw4bmM4bmO4bmQ4bmS4buM4buO4buQ4buS4buU4buW4buY4bua4buc4bue4bug4buiIFDGpOG5lOG5luKxoyBRyYogUsWUxZbFmMiQyJLJjOG5mOG5muG5nOG5nuKxpOqepiBTxZrFnMWexaDImOG5oOG5ouG5pOG5puG5qOKxvuqeqCBUxaLFpMWmxqzGrsiayL7huarhuazhua7hubAgVcOZw5rDm8OcxajFqsWsxa7FsMavx5XHmcebx5PHl8iUyJbJhOG5suG5tOG5tuG5uOG5uuG7pOG7puG7qOG7quG7rOG7ruG7sCAgVsay4bm84bm+IFfFtOG6gOG6guG6hOG6huG6iCBY4bqK4bqMIFnDncW2xbjGs8iyyY7huo7hu7Lhu7Thu7bhu7ggWsW5xbvFvca14bqQ4bqS4bqU4rGrIGHDoMOhw6LDo8Okw6XEgcSDxIXHjsefx6HHu8iDyKfhto/huIHhuprhuqHhuqPhuqXhuqfhuqnhuqvhuq3huq/hurHhurPhurXhurfisaUgYsaAyZPhtazhtoDhuIPhuIXhuIcgY8OnxIfEicSLxI3GiMi84biJ6p6T6p6UIGTEj8SRyZfhta3htoHhtpHhuIvhuI3huI/huJHhuJMgZcOow6nDqsOrxJPElcSXxJnEm8iFyIfIqcmH4baS4biV4biX4biZ4bib4bid4bq54bq74bq94bq/4buB4buD4buF4buHIGbGkuG1ruG2guG4n+qemSBnxJ3En8ShxKPHpcenx7XJoOG2g+G4oeqeoSBoxKXEp8if4bij4bil4bin4bip4bir4bqW4rGo6p6VIGnDrMOtw67Dr8SpxKvErcSvx5DIiciLyajhtpbhuK3huK/hu4nhu4sgasS1x7DJiSBrxLfGmcep4baE4bix4biz4bi14rGq6p2BIGzEusS8xL7FgMWCxprhuLfhuLnhuLvhuL3isaEgbeG1r+G4v+G5geG5gyBuw7HFhMWGxYjFice54bWw4baH4bmF4bmH4bmJ4bmL6p6lIG/DssOzw7TDtcO2w7jFjcWPxZHGoceSx6vHrce/yI3Ij8iryK3Ir8ixybXhuY3huY/huZHhuZPhu43hu4/hu5Hhu5Phu5Xhu5fhu5nhu5vhu53hu5/hu6Hhu6MgcMal4bWx4bW94baI4bmV4bmXIHHJi8qgIHLFlcWXxZnIkciTyY3JveG1suG1s+G2ieG5m+G5neG5n+qepyBzxZvFncWfxaHImci/4bW04baK4bmh4bmj4bml4bmn4bmp6p6pIHTFo8WlxafGq8atyJvKiOG1teG5q+G5reG5r+G5seG6l+KxpiB1w7nDusO7w7zFqcWrxa3Fr8WxxbPHmseWxrDHlMeYx5zIlciXyonhtb7htpnhubPhubXhubfhubnhubvhu6Xhu6fhu6nhu6vhu63hu6/hu7EgdsqL4baM4bm94bm/IHfFteG6geG6g+G6heG6h+G6ieG6mCB44bqL4bqNIHnDvcO/xbfGtMizyY/huo/hupnhu7Phu7Xhu7fhu7kgesW6xbzFvsa24bW24baO4bqR4bqT4bqV4rGsIgogIGxldCBncm91cHMgPSBzcGxpdChzdHIpCiAgZm9yIGdyb3VwMSBpbiBncm91cHMKICAgICAgZm9yIGMgaW4gc3BsaXQoZ3JvdXAxLCAnXHpzJykKCSIgbmV4dCBzdGF0ZW1lbnQgY29uZmlybXMgdGhhdCBlcXVpdmFsZW5jZSBjbGFzcyBtYXRjaGVzIGV2ZXJ5CgkiIGNoYXJhY3RlciBpbiBncm91cAogICAgICAgIGNhbGwgYXNzZXJ0X21hdGNoKCdeW1s9JyAuLiBjIC4uICc9XV0qJCcsIGdyb3VwMSkKICAgICAgICBmb3IgZ3JvdXAyIGluIGdyb3VwcwogICAgICAgICAgaWYgZ3JvdXAyICE9IGdyb3VwMQoJICAgICIgbmV4dCBzdGF0ZW1lbnQgY29udmVydHMgdGhhdCBlcXVpdmFsZW5jZSBjbGFzcyBkb2Vzbid0IG1hdGNoCgkgICAgIiBjaGFyYWN0ZXIgaW4gYW55IG90aGVyIGdyb3VwCiAgICAgICAgICAgIGNhbGwgYXNzZXJ0X2VxdWFsKC0xLCBtYXRjaChncm91cDIsICdbWz0nIC4uIGMgLi4gJz1dXScpLCBjKQogICAgICAgICAgZW5kaWYKICAgICAgICBlbmRmb3IKICAgICAgZW5kZm9yCiAgZW5kZm9yCmVuZGZ1bmMKCmZ1bmMgVGVzdF9lcXVpdmFsZW5jZV9yZTEoKQogIHNldCByZT0xCiAgY2FsbCBzOmVxdWl2YWxlbmNlX3Rlc3QoKQogIHNldCByZT0wCmVuZGZ1bmMKCmZ1bmMgVGVzdF9lcXVpdmFsZW5jZV9yZTIoKQogIHNldCByZT0yCiAgY2FsbCBzOmVxdWl2YWxlbmNlX3Rlc3QoKQogIHNldCByZT0wCmVuZGZ1bmMKCmZ1bmMgczpjbGFzc2VzX3Rlc3QoKQogIGlmIGhhcygnd2luMzInKQogICAgc2V0IGlza2V5d29yZD1ALDQ4LTU3LF8sMTkyLTI1NQogIGVuZGlmCiAgc2V0IGlzcHJpbnQ9QCwxNjEtMjU1CiAgY2FsbCBhc3NlcnRfZXF1YWwoJ01vdMO2cmhlYWQnLCBtYXRjaHN0cignTW90w7ZyaGVhZCcsICdbWzpwcmludDpdXVwrJykpCgogIGxldCBhbG51bWNoYXJzID0gJycKICBsZXQgYWxwaGFjaGFycyA9ICcnCiAgbGV0IGJhY2tzcGFjZWNoYXIgPSAnJwogIGxldCBibGFua2NoYXJzID0gJycKICBsZXQgY250cmxjaGFycyA9ICcnCiAgbGV0IGRpZ2l0Y2hhcnMgPSAnJwogIGxldCBlc2NhcGVjaGFyID0gJycKICBsZXQgZ3JhcGhjaGFycyA9ICcnCiAgbGV0IGxvd2VyY2hhcnMgPSAnJwogIGxldCBwcmludGNoYXJzID0gJycKICBsZXQgcHVuY3RjaGFycyA9ICcnCiAgbGV0IHJldHVybmNoYXIgPSAnJwogIGxldCBzcGFjZWNoYXJzID0gJycKICBsZXQgdGFiY2hhciA9ICcnCiAgbGV0IHVwcGVyY2hhcnMgPSAnJwogIGxldCB4ZGlnaXRjaGFycyA9ICcnCiAgbGV0IGlkZW50Y2hhcnMgPSAnJwogIGxldCBpZGVudGNoYXJzMSA9ICcnCiAgbGV0IGt3b3JkY2hhcnMgPSAnJwogIGxldCBrd29yZGNoYXJzMSA9ICcnCiAgbGV0IGZuYW1lY2hhcnMgPSAnJwogIGxldCBmbmFtZWNoYXJzMSA9ICcnCiAgbGV0IGkgPSAxCiAgd2hpbGUgaSA8PSAyNTUKICAgIGxldCBjID0gbnIyY2hhcihpKQogICAgaWYgYyA9fiAnW1s6YWxwaGE6XV0nCiAgICAgIGxldCBhbHBoYWNoYXJzIC49IGMKICAgIGVuZGlmCiAgICBpZiBjID1+ICdbWzphbG51bTpdXScKICAgICAgbGV0IGFsbnVtY2hhcnMgLj0gYwogICAgZW5kaWYKICAgIGlmIGMgPX4gJ1tbOmJhY2tzcGFjZTpdXScKICAgICAgbGV0IGJhY2tzcGFjZWNoYXIgLj0gYwogICAgZW5kaWYKICAgIGlmIGMgPX4gJ1tbOmJsYW5rOl1dJwogICAgICBsZXQgYmxhbmtjaGFycyAuPSBjCiAgICBlbmRpZgogICAgaWYgYyA9fiAnW1s6Y250cmw6XV0nCiAgICAgIGxldCBjbnRybGNoYXJzIC49IGMKICAgIGVuZGlmCiAgICBpZiBjID1+ICdbWzpkaWdpdDpdXScKICAgICAgbGV0IGRpZ2l0Y2hhcnMgLj0gYwogICAgZW5kaWYKICAgIGlmIGMgPX4gJ1tbOmVzY2FwZTpdXScKICAgICAgbGV0IGVzY2FwZWNoYXIgLj0gYwogICAgZW5kaWYKICAgIGlmIGMgPX4gJ1tbOmdyYXBoOl1dJwogICAgICBsZXQgZ3JhcGhjaGFycyAuPSBjCiAgICBlbmRpZgogICAgaWYgYyA9fiAnW1s6bG93ZXI6XV0nCiAgICAgIGxldCBsb3dlcmNoYXJzIC49IGMKICAgIGVuZGlmCiAgICBpZiBjID1+ICdbWzpwcmludDpdXScKICAgICAgbGV0IHByaW50Y2hhcnMgLj0gYwogICAgZW5kaWYKICAgIGlmIGMgPX4gJ1tbOnB1bmN0Ol1dJwogICAgICBsZXQgcHVuY3RjaGFycyAuPSBjCiAgICBlbmRpZgogICAgaWYgYyA9fiAnW1s6cmV0dXJuOl1dJwogICAgICBsZXQgcmV0dXJuY2hhciAuPSBjCiAgICBlbmRpZgogICAgaWYgYyA9fiAnW1s6c3BhY2U6XV0nCiAgICAgIGxldCBzcGFjZWNoYXJzIC49IGMKICAgIGVuZGlmCiAgICBpZiBjID1+ICdbWzp0YWI6XV0nCiAgICAgIGxldCB0YWJjaGFyIC49IGMKICAgIGVuZGlmCiAgICBpZiBjID1+ICdbWzp1cHBlcjpdXScKICAgICAgbGV0IHVwcGVyY2hhcnMgLj0gYwogICAgZW5kaWYKICAgIGlmIGMgPX4gJ1tbOnhkaWdpdDpdXScKICAgICAgbGV0IHhkaWdpdGNoYXJzIC49IGMKICAgIGVuZGlmCiAgICBpZiBjID1+ICdbWzppZGVudDpdXScKICAgICAgbGV0IGlkZW50Y2hhcnMgLj0gYwogICAgZW5kaWYKICAgIGlmIGMgPX4gJ1xpJwogICAgICBsZXQgaWRlbnRjaGFyczEgLj0gYwogICAgZW5kaWYKICAgIGlmIGMgPX4gJ1tbOmtleXdvcmQ6XV0nCiAgICAgIGxldCBrd29yZGNoYXJzIC49IGMKICAgIGVuZGlmCiAgICBpZiBjID1+ICdcaycKICAgICAgbGV0IGt3b3JkY2hhcnMxIC49IGMKICAgIGVuZGlmCiAgICBpZiBjID1+ICdbWzpmbmFtZTpdXScKICAgICAgbGV0IGZuYW1lY2hhcnMgLj0gYwogICAgZW5kaWYKICAgIGlmIGMgPX4gJ1xmJwogICAgICBsZXQgZm5hbWVjaGFyczEgLj0gYwogICAgZW5kaWYKICAgIGxldCBpICs9IDEKICBlbmR3aGlsZQoKICBjYWxsIGFzc2VydF9lcXVhbCgnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicsIGFscGhhY2hhcnMpCiAgY2FsbCBhc3NlcnRfZXF1YWwoJzAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JywgYWxudW1jaGFycykKICBjYWxsIGFzc2VydF9lcXVhbCgiXGIiLCBiYWNrc3BhY2VjaGFyKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCJcdCAiLCBibGFua2NoYXJzKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCJceDAxXHgwMlx4MDNceDA0XHgwNVx4MDZceDA3XGJcdFxuXHgwYlxmXHJceDBlXHgwZlx4MTBceDExXHgxMlx4MTNceDE0XHgxNVx4MTZceDE3XHgxOFx4MTlceDFhXGVceDFjXHgxZFx4MWVceDFmXHg3ZiIsIGNudHJsY2hhcnMpCiAgY2FsbCBhc3NlcnRfZXF1YWwoIjAxMjM0NTY3ODkiLCBkaWdpdGNoYXJzKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCJcPEVzYz4iLCBlc2NhcGVjaGFyKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCchIiMkJSYnJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9ficsIGdyYXBoY2hhcnMpCiAgY2FsbCBhc3NlcnRfZXF1YWwoJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6wrXDn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOvw7DDscOyw7PDtMO1w7bDuMO5w7rDu8O8w73DvsO/JywgbG93ZXJjaGFycykKICBjYWxsIGFzc2VydF9lcXVhbCgnICEiIyQlJicnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+wqDCocKiwqPCpMKlwqbCp8KowqnCqsKrwqzCrcKuwq/CsMKxwrLCs8K0wrXCtsK3wrjCucK6wrvCvMK9wr7Cv8OAw4HDgsODw4TDhcOGw4fDiMOJw4rDi8OMw43DjsOPw5DDkcOSw5PDlMOVw5bDl8OYw5nDmsObw5zDncOew5/DoMOhw6LDo8Okw6XDpsOnw6jDqcOqw6vDrMOtw67Dr8Oww7HDssOzw7TDtcO2w7fDuMO5w7rDu8O8w73DvsO/JywgcHJpbnRjaGFycykKICBjYWxsIGFzc2VydF9lcXVhbCgnISIjJCUmJycoKSorLC0uLzo7PD0+P0BbXF1eX2B7fH1+JywgcHVuY3RjaGFycykKICBjYWxsIGFzc2VydF9lcXVhbCgnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVrDgMOBw4LDg8OEw4XDhsOHw4jDicOKw4vDjMONw47Dj8OQw5HDksOTw5TDlcOWw5jDmcOaw5vDnMOdw54nLCB1cHBlcmNoYXJzKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCJcciIsIHJldHVybmNoYXIpCiAgY2FsbCBhc3NlcnRfZXF1YWwoIlx0XG5ceDBiXGZcciAiLCBzcGFjZWNoYXJzKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCJcdCIsIHRhYmNoYXIpCiAgY2FsbCBhc3NlcnRfZXF1YWwoJzAxMjM0NTY3ODlBQkNERUZhYmNkZWYnLCB4ZGlnaXRjaGFycykKCiAgaWYgaGFzKCd3aW4zMicpCiAgICBsZXQgaWRlbnRjaGFyc19vayA9ICcwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXrCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDCocKiwqPCpMKlwqbCp8K1w4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/DkMORw5LDk8OUw5XDlsOYw5nDmsObw5zDncOew5/DoMOhw6LDo8Okw6XDpsOnw6jDqcOqw6vDrMOtw67Dr8Oww7HDssOzw7TDtcO2w7jDucO6w7vDvMO9w77DvycKICAgIGxldCBrd29yZGNoYXJzX29rID0gJzAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5esK1w4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/DkMORw5LDk8OUw5XDlsOXw5jDmcOaw5vDnMOdw57Dn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOvw7DDscOyw7PDtMO1w7bDt8O4w7nDusO7w7zDvcO+w78nCiAgZWxzZQogICAgbGV0IGlkZW50Y2hhcnNfb2sgPSAnMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6wrXDgMOBw4LDg8OEw4XDhsOHw4jDicOKw4vDjMONw47Dj8OQw5HDksOTw5TDlcOWw5fDmMOZw5rDm8Ocw53DnsOfw6DDocOiw6PDpMOlw6bDp8Oow6nDqsOrw6zDrcOuw6/DsMOxw7LDs8O0w7XDtsO3w7jDucO6w7vDvMO9w77DvycKICAgIGxldCBrd29yZGNoYXJzX29rID0gJzAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5esK1w4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/DkMORw5LDk8OUw5XDlsOXw5jDmcOaw5vDnMOdw57Dn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOvw7DDscOyw7PDtMO1w7bDt8O4w7nDusO7w7zDvcO+w78nCiAgZW5kaWYKCiAgaWYgaGFzKCd3aW4zMicpCiAgICBsZXQgZm5hbWVjaGFyc19vayA9ICchIyQlKywtLi8wMTIzNDU2Nzg5Oj1AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1fYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fX7CoMKhwqLCo8KkwqXCpsKnwqjCqcKqwqvCrMKtwq7Cr8KwwrHCssKzwrTCtcK2wrfCuMK5wrrCu8K8wr3CvsK/w4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/DkMORw5LDk8OUw5XDlsOXw5jDmcOaw5vDnMOdw57Dn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOvw7DDscOyw7PDtMO1w7bDt8O4w7nDusO7w7zDvcO+w78nCiAgZWxzZWlmIGhhcygnYW1pZ2EnKQogICAgbGV0IGZuYW1lY2hhcnNfb2sgPSAnJCssLS4vMDEyMzQ1Njc4OTpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5en7CoMKhwqLCo8KkwqXCpsKnwqjCqcKqwqvCrMKtwq7Cr8KwwrHCssKzwrTCtcK2wrfCuMK5wrrCu8K8wr3CvsK/w4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/DkMORw5LDk8OUw5XDlsOXw5jDmcOaw5vDnMOdw57Dn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOvw7DDscOyw7PDtMO1w7bDt8O4w7nDusO7w7zDvcO+w78nCiAgZWxzZWlmIGhhcygndm1zJykKICAgIGxldCBmbmFtZWNoYXJzX29rID0gJyMkJSssLS4vMDEyMzQ1Njc4OTo7PD5BQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltdX2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6fsKgwqHCosKjwqTCpcKmwqfCqMKpwqrCq8Kswq3CrsKvwrDCscKywrPCtMK1wrbCt8K4wrnCusK7wrzCvcK+wr/DgMOBw4LDg8OEw4XDhsOHw4jDicOKw4vDjMONw47Dj8OQw5HDksOTw5TDlcOWw5fDmMOZw5rDm8Ocw53DnsOfw6DDocOiw6PDpMOlw6bDp8Oow6nDqsOrw6zDrcOuw6/DsMOxw7LDs8O0w7XDtsO3w7jDucO6w7vDvMO9w77DvycKICBlbHNlCiAgICBsZXQgZm5hbWVjaGFyc19vayA9ICcjJCUrLC0uLzAxMjM0NTY3ODk9QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp+wqDCocKiwqPCpMKlwqbCp8KowqnCqsKrwqzCrcKuwq/CsMKxwrLCs8K0wrXCtsK3wrjCucK6wrvCvMK9wr7Cv8OAw4HDgsODw4TDhcOGw4fDiMOJw4rDi8OMw43DjsOPw5DDkcOSw5PDlMOVw5bDl8OYw5nDmsObw5zDncOew5/DoMOhw6LDo8Okw6XDpsOnw6jDqcOqw6vDrMOtw67Dr8Oww7HDssOzw7TDtcO2w7fDuMO5w7rDu8O8w73DvsO/JwogIGVuZGlmCgogIGNhbGwgYXNzZXJ0X2VxdWFsKGlkZW50Y2hhcnNfb2ssIGlkZW50Y2hhcnMpCiAgY2FsbCBhc3NlcnRfZXF1YWwoa3dvcmRjaGFyc19vaywga3dvcmRjaGFycykKICBjYWxsIGFzc2VydF9lcXVhbChmbmFtZWNoYXJzX29rLCBmbmFtZWNoYXJzKQoKICBjYWxsIGFzc2VydF9lcXVhbChpZGVudGNoYXJzMSwgaWRlbnRjaGFycykKICBjYWxsIGFzc2VydF9lcXVhbChrd29yZGNoYXJzMSwga3dvcmRjaGFycykKICBjYWxsIGFzc2VydF9lcXVhbChmbmFtZWNoYXJzMSwgZm5hbWVjaGFycykKZW5kZnVuYwoKZnVuYyBUZXN0X2NsYXNzZXNfcmUxKCkKICBzZXQgcmU9MQogIGNhbGwgczpjbGFzc2VzX3Rlc3QoKQogIHNldCByZT0wCmVuZGZ1bmMKCmZ1bmMgVGVzdF9jbGFzc2VzX3JlMigpCiAgc2V0IHJlPTIKICBjYWxsIHM6Y2xhc3Nlc190ZXN0KCkKICBzZXQgcmU9MAplbmRmdW5jCgpmdW5jIFRlc3RfcmV2ZXJzZWRfcmFuZ2UoKQogIGZvciByZSBpbiByYW5nZSgwLCAyKQogICAgZXhlICdzZXQgcmU9JyAuIHJlCiAgICBjYWxsIGFzc2VydF9mYWlscygnY2FsbCBtYXRjaCgiYWJjIGRlZiIsICJbYy1hXSIpJywgJ0U5NDQ6JywgcmUpCiAgZW5kZm9yCiAgc2V0IHJlPTAKZW5kZnVuYwoKZnVuYyBUZXN0X2xhcmdlX2NsYXNzKCkKICBzZXQgcmU9MQogIGNhbGwgYXNzZXJ0X2ZhaWxzKCdjYWxsIG1hdGNoKCJhYmMgZGVmIiwgIltcdTMwMDAtXHU0MDAwXSIpJywgJ0U5NDU6JykKICBzZXQgcmU9MgogIGNhbGwgYXNzZXJ0X2VxdWFsKDAsICdhYmMgZGVmJyA9fiMgJ1tcdTMwMDAtXHU0MDAwXScpCiAgY2FsbCBhc3NlcnRfZXF1YWwoMSwgIlx1MzA0MiIgPX4jICdbXHUzMDAwLVx1NDAwMF0nKQogIHNldCByZT0wCmVuZGZ1bmMKCmZ1bmMgVGVzdF9vcHRtYXRjaF90b29sb25nKCkKICBzZXQgcmU9MQogICIgQ2FuIG9ubHkgaGFuZGxlIGFib3V0IDgwMDAgY2hhcmFjdGVycy4KICBsZXQgcGF0ID0gJ1xcJVsnIC4uIHJlcGVhdCgneCcsIDkwMDApIC4uICddJwogIGNhbGwgYXNzZXJ0X2ZhaWxzKCdjYWxsIG1hdGNoKCJhYmMgZGVmIiwgIicgLi4gcGF0IC4uICciKScsICdFMzM5OicpCiAgc2V0IHJlPTAKZW5kZnVuYwoKIiBUZXN0IGZvciByZWdleHAgcGF0dGVybnMgd2l0aCBtdWx0aS1ieXRlIHN1cHBvcnQsIHVzaW5nIHV0Zi04LgpmdW5jIFRlc3RfbXVsdGlieXRlX2NoYXJzKCkKICAiIHRsIGlzIGEgTGlzdCBvZiBMaXN0cyB3aXRoOgogICIgICAgMjogdGVzdCBhdXRvL29sZC9uZXcgIDA6IHRlc3QgYXV0by9vbGQgIDE6IHRlc3QgYXV0by9uZXcKICAiICAgIHJlZ2V4cCBwYXR0ZXJuCiAgIiAgICB0ZXh0IHRvIHRlc3QgdGhlIHBhdHRlcm4gb24KICAiICAgIGV4cGVjdGVkIG1hdGNoIChvcHRpb25hbCkKICAiICAgIGV4cGVjdGVkIHN1Ym1hdGNoIDEgKG9wdGlvbmFsKQogICIgICAgZXhwZWN0ZWQgc3VibWF0Y2ggMiAob3B0aW9uYWwpCiAgIiAgICBldGMuCiAgIiAgV2hlbiB0aGVyZSBpcyBubyBtYXRjaCB1c2Ugb25seSB0aGUgZmlyc3QgdHdvIGl0ZW1zLgogIGxldCB0bCA9IFtdCgogICIgTXVsdGktYnl0ZSBjaGFyYWN0ZXIgdGVzdHMuCiAgY2FsbCBhZGQodGwsIFsyLCAnW1s6YWxwaGE6XVs9YT1dXVwrJywgJzg3OSBhaWHDo8OiYWl1dm5hICcsICdhaWHDo8OiYWl1dm5hJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnW1s9YT1dXVwrJywgJ2RkYcOjw6JiY2QnLCAnYcOjw6InXSkJCQkJCQkJCSIgZXF1aXZhbGVuY2UgY2xhc3NlcwogIGNhbGwgYWRkKHRsLCBbMiwgJ1te4LihIF1cKycsICfguKHguKEgb2lqYXNvaWZqb3MgaWZqb2lzaiBmIG9zaWogaiDguKHguKHguKHguKHguKEgYWJjZCcsICdvaWphc29pZmpvcyddKQogIGNhbGwgYWRkKHRsLCBbMiwgJyBbXiBdXCsnLCAnc3RhcnQg4LihYWJjZOC4oSAnLCAnIOC4oWFiY2TguKEnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdb4LihWzphbHBoYTpdWz1hPV1dXCsnLCAnODc5IGFpYcOj4Lihw6LguKFhaXV2bmEgJywgJ2FpYcOj4Lihw6LguKFhaXV2bmEnXSkKCiAgIiB0aGlzIGlzIG5vdCBhIG5vcm1hbCAiaSIgYnV0IDB4ZWMKICBjYWxsIGFkZCh0bCwgWzIsICdccFwrJywgJ8OsYScsICfDrGEnXSkKICBjYWxsIGFkZCh0bCwgWzIsICdccConLCAnYeOBgicsICdh44GCJ10pCgogICIgVGVzdCByZWNvZ25pdGlvbiBvZiBzb21lIGNoYXJhY3RlciBjbGFzc2VzCiAgY2FsbCBhZGQodGwsIFsyLCAnXGlcKycsICcmKsKoeHggJywgJ3h4J10pCiAgY2FsbCBhZGQodGwsIFsyLCAnXGZcKycsICcmKsKfZm5hbWUgJywgJ2ZuYW1lJ10pCgogICIgVGVzdCBjb21wb3NpbmcgY2hhcmFjdGVyIG1hdGNoaW5nCiAgY2FsbCBhZGQodGwsIFsyLCAnLuC4oScsICd44Lih4LmIeCB54LiheScsICd54LihJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAnLuC4oeC5iCcsICd44Lih4LmIeCB54LiheScsICd44Lih4LmIJ10pCiAgY2FsbCBhZGQodGwsIFsyLCAiXHUwNWI5IiwgIiB4XHUwNWI5ICIsICJ4XHUwNWI5Il0pCiAgY2FsbCBhZGQodGwsIFsyLCAiLlx1MDViOSIsICIgeFx1MDViOSAiLCAieFx1MDViOSJdKQogIGNhbGwgYWRkKHRsLCBbMiwgIlx1MDViOVx1MDViYiIsICIgeFx1MDViOVx1MDViYiAiLCAieFx1MDViOVx1MDViYiJdKQogIGNhbGwgYWRkKHRsLCBbMiwgIi5cdTA1YjlcdTA1YmIiLCAiIHhcdTA1YjlcdTA1YmIgIiwgInhcdTA1YjlcdTA1YmIiXSkKICBjYWxsIGFkZCh0bCwgWzIsICJcdTA1YmJcdTA1YjkiLCAiIHhcdTA1YjlcdTA1YmIgIiwgInhcdTA1YjlcdTA1YmIiXSkKICBjYWxsIGFkZCh0bCwgWzIsICIuXHUwNWJiXHUwNWI5IiwgIiB4XHUwNWI5XHUwNWJiICIsICJ4XHUwNWI5XHUwNWJiIl0pCiAgY2FsbCBhZGQodGwsIFsyLCAiXHUwNWI5IiwgIiB5XHUwNWJiIHhcdTA1YjkgIiwgInhcdTA1YjkiXSkKICBjYWxsIGFkZCh0bCwgWzIsICIuXHUwNWI5IiwgIiB5XHUwNWJiIHhcdTA1YjkgIiwgInhcdTA1YjkiXSkKICBjYWxsIGFkZCh0bCwgWzIsICJcdTA1YjkiLCAiIHlcdTA1YmJcdTA1YjkgeFx1MDViOSAiLCAieVx1MDViYlx1MDViOSJdKQogIGNhbGwgYWRkKHRsLCBbMiwgIi5cdTA1YjkiLCAiIHlcdTA1YmJcdTA1YjkgeFx1MDViOSAiLCAieVx1MDViYlx1MDViOSJdKQogIGNhbGwgYWRkKHRsLCBbMSwgIlx1MDViOVx1MDViYiIsICIgeVx1MDViOSB4XHUwNWI5XHUwNWJiICIsICJ4XHUwNWI5XHUwNWJiIl0pCiAgY2FsbCBhZGQodGwsIFsyLCAiLlx1MDViOVx1MDViYiIsICIgeVx1MDViYiB4XHUwNWI5XHUwNWJiICIsICJ4XHUwNWI5XHUwNWJiIl0pCiAgY2FsbCBhZGQodGwsIFsyLCAiYSIsICJjYVx1MDMwMHQiXSkKICBjYWxsIGFkZCh0bCwgWzIsICJjYSIsICJjYVx1MDMwMHQiXSkKICBjYWxsIGFkZCh0bCwgWzIsICJhXHUwMzAwIiwgImNhXHUwMzAwdCIsICJhXHUwMzAwIl0pCiAgY2FsbCBhZGQodGwsIFsyLCAnYVwlQycsICJjYVx1MDMwMHQiLCAiYVx1MDMwMCJdKQogIGNhbGwgYWRkKHRsLCBbMiwgJ2NhXCVDJywgImNhXHUwMzAwdCIsICJjYVx1MDMwMCJdKQogIGNhbGwgYWRkKHRsLCBbMiwgJ2NhXCVDdCcsICJjYVx1MDMwMHQiLCAiY2FcdTAzMDB0Il0pCgogICIgVGVzdCBcWgogIGNhbGwgYWRkKHRsLCBbMiwgJ8O6XFonLCAneCddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ9eZ15TXldeUXFonLCAn15nXlNeV15QnLCAn15nXlNeV15QnXSkKICBjYWxsIGFkZCh0bCwgWzIsICfXmdaw15TXlda415RcWicsICfXmdeU15XXlCcsICfXmdeU15XXlCddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ9eZ15TXldeUXFonLCAn15nWsNeU15XWuNeUJywgJ9eZ1rDXlNeV1rjXlCddKQogIGNhbGwgYWRkKHRsLCBbMiwgJ9eZ1rDXlNeV1rjXlFxaJywgJ9eZ1rDXlNeV1rjXlCcsICfXmdaw15TXlda415QnXSkKICBjYWxsIGFkZCh0bCwgWzIsICfXmdawXFonLCAn15XWsNeZ1rcnLCAn15nWtyddKQogIGNhbGwgYWRkKHRsLCBbMiwgItenXHUyMDBkXHUwNWI5eFxcWiIsICJ416dcdTIwMGRcdTA1Yjl4eSIsICLXp1x1MjAwZFx1MDViOXgiXSkKICBjYWxsIGFkZCh0bCwgWzIsICLXp1x1MjAwZFx1MDViOXhcXFoiLCAieNenXHUyMDBkeHkiLCAi16dcdTIwMGR4Il0pCiAgY2FsbCBhZGQodGwsIFsyLCAi16dcdTIwMGR4XFxaIiwgInjXp1x1MjAwZFx1MDViOXh5IiwgItenXHUyMDBkXHUwNWI5eCJdKQogIGNhbGwgYWRkKHRsLCBbMiwgItenXHUyMDBkeFxcWiIsICJ416dcdTIwMGR4eSIsICLXp1x1MjAwZHgiXSkKICBjYWxsIGFkZCh0bCwgWzIsICJcdTA1YjlcXFoiLCAieHl6Il0pCiAgY2FsbCBhZGQodGwsIFsyLCAiXFxaXHUwNWI5IiwgInh5eiJdKQogIGNhbGwgYWRkKHRsLCBbMiwgIlx1MDViOVxcWiIsICJ4eVx1MDViOXoiLCAieVx1MDViOSJdKQogIGNhbGwgYWRkKHRsLCBbMiwgIlxcWlx1MDViOSIsICJ4eVx1MDViOXoiLCAieVx1MDViOSJdKQogIGNhbGwgYWRkKHRsLCBbMSwgIlx1MDViOVxcK1xcWiIsICJ4eVx1MDViOXpcdTA1YjkgIiwgInlcdTA1Yjl6XHUwNWI5Il0pCiAgY2FsbCBhZGQodGwsIFsxLCAiXFxaXHUwNWI5XFwrIiwgInh5XHUwNWI5elx1MDViOSAiLCAieVx1MDViOXpcdTA1YjkiXSkKCiAgIiBDb21iaW5pbmcgZGlmZmVyZW50IHRlc3RzIGFuZCBmZWF0dXJlcwogIGNhbGwgYWRkKHRsLCBbMiwgJ1teWz1hPV1dXCsnLCAnZGRhw6PDomJjZCcsICdkZCddKQoKICAiIFJ1biB0aGUgdGVzdHMKICBmb3IgdCBpbiB0bAogICAgbGV0IHJlID0gdFswXQogICAgbGV0IHBhdCA9IHRbMV0KICAgIGxldCB0ZXh0ID0gdFsyXQogICAgbGV0IG1hdGNoaWR4ID0gMwogICAgZm9yIGVuZ2luZSBpbiBbMCwgMSwgMl0KICAgICAgaWYgZW5naW5lID09IDIgJiYgcmUgPT0gMCB8fCBlbmdpbmUgPT0gMSAmJiByZSA9PSAxCiAgICAgICAgY29udGludWUKICAgICAgZW5kaWYKICAgICAgbGV0ICZyZWdleHBlbmdpbmUgPSBlbmdpbmUKICAgICAgdHJ5CiAgICAgICAgbGV0IGwgPSBtYXRjaGxpc3QodGV4dCwgcGF0KQogICAgICBjYXRjaAogICAgICAgIGNhbGwgYXNzZXJ0X3JlcG9ydCgnRXJyb3IgJyAuIGVuZ2luZSAuICc6IHBhdDogXCInIC4gcGF0IC4KCQkgICAgXCAnXCIsIHRleHQ6IFwiJyAuIHRleHQgLgoJCSAgICBcICdcIiwgY2F1c2VkIGFuIGV4Y2VwdGlvbjogXCInIC4gdjpleGNlcHRpb24gLiAnXCInKQogICAgICBlbmR0cnkKICAgICAgIiBjaGVjayB0aGUgbWF0Y2ggaXRzZWxmCiAgICAgIGlmIGxlbihsKSA9PSAwICYmIGxlbih0KSA+IG1hdGNoaWR4CiAgICAgICAgY2FsbCBhc3NlcnRfcmVwb3J0KCdFcnJvciAnIC4gZW5naW5lIC4gJzogcGF0OiBcIicgLiBwYXQgLgoJCSAgICBcICdcIiwgdGV4dDogXCInIC4gdGV4dCAuCgkJICAgIFwgJ1wiLCBkaWQgbm90IG1hdGNoLCBleHBlY3RlZDogXCInIC4gdFttYXRjaGlkeF0gLiAnXCInKQogICAgICBlbHNlaWYgbGVuKGwpID4gMCAmJiBsZW4odCkgPT0gbWF0Y2hpZHgKICAgICAgICBjYWxsIGFzc2VydF9yZXBvcnQoJ0Vycm9yICcgLiBlbmdpbmUgLiAnOiBwYXQ6IFwiJyAuIHBhdCAuCgkJICAgIFwgJ1wiLCB0ZXh0OiBcIicgLiB0ZXh0IC4gJ1wiLCBtYXRjaDogXCInIC4gbFswXSAuCgkJICAgIFwgJ1wiLCBleHBlY3RlZCBubyBtYXRjaCcpCiAgICAgIGVsc2VpZiBsZW4odCkgPiBtYXRjaGlkeCAmJiBsWzBdICE9IHRbbWF0Y2hpZHhdCiAgICAgICAgY2FsbCBhc3NlcnRfcmVwb3J0KCdFcnJvciAnIC4gZW5naW5lIC4gJzogcGF0OiBcIicgLiBwYXQgLgoJCSAgICBcICdcIiwgdGV4dDogXCInIC4gdGV4dCAuICdcIiwgbWF0Y2g6IFwiJyAuIGxbMF0gLgoJCSAgICBcICdcIiwgZXhwZWN0ZWQ6IFwiJyAuIHRbbWF0Y2hpZHhdIC4gJ1wiJykKICAgICAgZWxzZQogICAgICAgICIgVGVzdCBwYXNzZWQKICAgICAgZW5kaWYKICAgICAgaWYgbGVuKGwpID4gMAogICAgICAgICIgY2hlY2sgYWxsIHRoZSBuaW5lIHN1Ym1hdGNoZXMKICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCA5KQogICAgICAgICAgaWYgbGVuKHQpIDw9IG1hdGNoaWR4ICsgaQogICAgICAgICAgICBsZXQgZSA9ICcnCiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIGxldCBlID0gdFttYXRjaGlkeCArIGldCiAgICAgICAgICBlbmRpZgogICAgICAgICAgaWYgbFtpXSAhPSBlCiAgICAgICAgICAgIGNhbGwgYXNzZXJ0X3JlcG9ydCgnRXJyb3IgJyAuIGVuZ2luZSAuICc6IHBhdDogXCInIC4gcGF0IC4KICAgICAgICAgICAgICAgICAgXCAnXCIsIHRleHQ6IFwiJyAuIHRleHQgLiAnXCIsIHN1Ym1hdGNoICcgLiBpIC4KICAgICAgICAgICAgICAgICAgXCAnOiBcIicgLiBsW2ldIC4gJ1wiLCBleHBlY3RlZDogXCInIC4gZSAuICdcIicpCiAgICAgICAgICBlbmRpZgogICAgICAgIGVuZGZvcgogICAgICAgIHVubGV0IGkKICAgICAgZW5kaWYKICAgIGVuZGZvcgogIGVuZGZvcgogIHNldCByZWdleHBlbmdpbmUmCmVuZGZ1bmMKCiIgY2hlY2sgdGhhdCAnYW1iaXdpZHRoJyBkb2VzIG5vdCBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgXHAKZnVuYyBUZXN0X2FtYml3aWR0aCgpCiAgc2V0IHJlZ2V4cGVuZ2luZT0xIGFtYml3aWR0aD1zaW5nbGUKICBjYWxsIGFzc2VydF9lcXVhbCgwLCBtYXRjaCgiXHUwMEVDIiwgJ1xwJykpCiAgc2V0IHJlZ2V4cGVuZ2luZT0xIGFtYml3aWR0aD1kb3VibGUKICBjYWxsIGFzc2VydF9lcXVhbCgwLCBtYXRjaCgiXHUwMEVDIiwgJ1xwJykpCiAgc2V0IHJlZ2V4cGVuZ2luZT0yIGFtYml3aWR0aD1zaW5nbGUKICBjYWxsIGFzc2VydF9lcXVhbCgwLCBtYXRjaCgiXHUwMEVDIiwgJ1xwJykpCiAgc2V0IHJlZ2V4cGVuZ2luZT0yIGFtYml3aWR0aD1kb3VibGUKICBjYWxsIGFzc2VydF9lcXVhbCgwLCBtYXRjaCgiXHUwMEVDIiwgJ1xwJykpCiAgc2V0IHJlZ2V4cGVuZ2luZSYgYW1iaXdpZHRoJgplbmRmdW5jCgpmdW5jIFJ1bl9yZWdleHBfaWdub3JlX2Nhc2UoKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCdpScSwJywgc3Vic3RpdHV0ZSgnaUnEsCcsICdcKFtpScSwXVwpJywgJ1wxJywgJ2cnKSkKCiAgY2FsbCBhc3NlcnRfZXF1YWwoJ2lJeCcsIHN1YnN0aXR1dGUoJ2lJxLAnLCAnXGNcKFvEsF1cKScsICd4JywgJ2cnKSkKICBjYWxsIGFzc2VydF9lcXVhbCgneHjEsCcsIHN1YnN0aXR1dGUoJ2lJxLAnLCAnXChpXGNcKScsICd4JywgJ2cnKSkKICBjYWxsIGFzc2VydF9lcXVhbCgnaUl4Jywgc3Vic3RpdHV0ZSgnaUnEsCcsICdcKMSwXGNcKScsICd4JywgJ2cnKSkKICBjYWxsIGFzc2VydF9lcXVhbCgnaUl4Jywgc3Vic3RpdHV0ZSgnaUnEsCcsICdcY1woXCV1MDEzMFwpJywgJ3gnLCAnZycpKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCdpSXgnLCBzdWJzdGl0dXRlKCdpScSwJywgJ1xjXChbXHUwMTMwXVwpJywgJ3gnLCAnZycpKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCdpSXgnLCBzdWJzdGl0dXRlKCdpScSwJywgJ1xjXChbXHUwMTJmLVx1MDEzMV1cKScsICd4JywgJ2cnKSkKZW5kZnVuYwoKZnVuYyBUZXN0X3JlZ2V4cF9pZ25vcmVfY2FzZSgpCiAgc2V0IHJlZ2V4cGVuZ2luZT0xCiAgY2FsbCBSdW5fcmVnZXhwX2lnbm9yZV9jYXNlKCkKICBzZXQgcmVnZXhwZW5naW5lPTIKICBjYWxsIFJ1bl9yZWdleHBfaWdub3JlX2Nhc2UoKQogIHNldCByZWdleHBlbmdpbmUmCmVuZGZ1bmMKCiIgVGVzdHMgZm9yIHJlZ2V4cCB3aXRoIG11bHRpLWJ5dGUgZW5jb2RpbmcgYW5kIHZhcmlvdXMgbWFnaWMgc2V0dGluZ3MKZnVuYyBSdW5fcmVnZXhwX211bHRpYnl0ZV9tYWdpYygpCiAgbGV0IHRleHQgPTw8IHRyaW0gRU5ECiAgICAxIGEgYWEgYWJiIGFiYmNjYwogICAgMiBkIGRkIGRlZSBkZWVmZmYKICAgIDMgZyBnZyBnaGggZ2hoaWlpCiAgICA0IGogamogamtrIGpra2xsbAogICAgNSBtIG1tIG1ubiBtbm5vb28KICAgIDYgeCBeYWEkIHgKICAgIDcgKGEpKGIpIGFiYmFhCiAgICA4IGF4eCBbYWJdeHgKICAgIDkg4Lir4Lih4LmIeCDguK3guKF4CiAgICBhIOC4reC4oXgg4Lir4Lih4LmIeAogICAgYiDjgaHjgqvjg6jjga8KICAgIGMgeCDCrOKCrHgKICAgIGQg5aSp5L2/eAogICAgZSD8ko2Fmbh5CiAgICBmIPySjYqvjXoKICAgIGcgYeWVt2JiCiAgICBqIDAxMjPinaR4CiAgICBrIGNvbWJpbmF0aW9ucwogICAgbCDDpMO2IMO8zrHMhMyGzIEKICBFTkQKCiAgbmV3CiAgY2FsbCBzZXRsaW5lKDEsIHRleHQpCiAgZXhlICdub3JtYWwgL2EqYlx7Mn1jXCsvZScgLi4gIlw8Q1I+eCIKICBjYWxsIGFzc2VydF9lcXVhbCgnMSBhIGFhIGFiYiBhYmJjYycsIGdldGxpbmUoJy4nKSkKICBleGUgJ25vcm1hbCAvXE1kXCplXHsyfWZcKy9lJyAuLiAiXDxDUj54IgogIGNhbGwgYXNzZXJ0X2VxdWFsKCcyIGQgZGQgZGVlIGRlZWZmJywgZ2V0bGluZSgnLicpKQogIHNldCBub21hZ2ljCiAgZXhlICdub3JtYWwgL2dcKmhcezJ9aVwrL2UnIC4uICJcPENSPngiCiAgY2FsbCBhc3NlcnRfZXF1YWwoJzMgZyBnZyBnaGggZ2hoaWknLCBnZXRsaW5lKCcuJykpCiAgZXhlICdub3JtYWwgL1xtaiprXHsyfWxcKy9lJyAuLiAiXDxDUj54IgogIGNhbGwgYXNzZXJ0X2VxdWFsKCc0IGogamogamtrIGpra2xsJywgZ2V0bGluZSgnLicpKQogIGV4ZSAnbm9ybWFsIC9cdm0qbnsyfW8rL2UnIC4uICJcPENSPngiCiAgY2FsbCBhc3NlcnRfZXF1YWwoJzUgbSBtbSBtbm4gbW5ub28nLCBnZXRsaW5lKCcuJykpCiAgZXhlICdub3JtYWwgL1xWXmFhJC8nIC4uICJcPENSPngiCiAgY2FsbCBhc3NlcnRfZXF1YWwoJzYgeCBhYSQgeCcsIGdldGxpbmUoJy4nKSkKICBzZXQgbWFnaWMKICBleGUgJ25vcm1hbCAvXHYoYSkoYilcMlwxXDEvZScgLi4gIlw8Q1I+eCIKICBjYWxsIGFzc2VydF9lcXVhbCgnNyAoYSkoYikgYWJiYScsIGdldGxpbmUoJy4nKSkKICBleGUgJ25vcm1hbCAvXFZbYWJdXChcW3h5XVwpXDEnIC4uICJcPENSPngiCiAgY2FsbCBhc3NlcnRfZXF1YWwoJzggYXh4IGFiXXh4JywgZ2V0bGluZSgnLicpKQoKICAiIHNlYXJjaCBmb3IgbXVsdGktYnl0ZSB3aXRob3V0IGNvbXBvc2luZyBjaGFyCiAgZXhlICdub3JtYWwgL+C4oScgLi4gIlw8Q1I+eCIKICBjYWxsIGFzc2VydF9lcXVhbCgnOSDguKvguKHguYh4IOC4rXgnLCBnZXRsaW5lKCcuJykpCgogICIgc2VhcmNoIGZvciBtdWx0aS1ieXRlIHdpdGggY29tcG9zaW5nIGNoYXIKICBleGUgJ25vcm1hbCAv4Lih4LmIJyAuLiAiXDxDUj54IgogIGNhbGwgYXNzZXJ0X2VxdWFsKCdhIOC4reC4oXgg4LireCcsIGdldGxpbmUoJy4nKSkKCiAgIiBmaW5kIHdvcmQgYnkgY2hhbmdlIG9mIHdvcmQgY2xhc3MKICBleGUgJ25vcm1hbCAv44GhXDzjgqvjg6hcPuOBrycgLi4gIlw8Q1I+eCIKICBjYWxsIGFzc2VydF9lcXVhbCgnYiDjgqvjg6jjga8nLCBnZXRsaW5lKCcuJykpCgogICIgVGVzdCBcJXUsIFtcdV0gYW5kIGZyaWVuZHMKICAiIGMKICBleGUgJ25vcm1hbCAvXCV1MjBhYycgLi4gIlw8Q1I+eCIKICBjYWxsIGFzc2VydF9lcXVhbCgnYyB4IMKseCcsIGdldGxpbmUoJy4nKSkKICAiIGQKICBleGUgJ25vcm1hbCAvW1x1NGY3Zlx1NTkyOV1cKycgLi4gIlw8Q1I+eCIKICBjYWxsIGFzc2VydF9lcXVhbCgnZCDkvb94JywgZ2V0bGluZSgnLicpKQogICIgZQogIGV4ZSAnbm9ybWFsIC9cJVUxMjM0NTY3OCcgLi4gIlw8Q1I+eCIKICBjYWxsIGFzc2VydF9lcXVhbCgnZSB5JywgZ2V0bGluZSgnLicpKQogICIgZgogIGV4ZSAnbm9ybWFsIC9bXFUxMjM0YWJjZFx1MTIzNFx1YWJjZF0nIC4uICJcPENSPngiCiAgY2FsbCBhc3NlcnRfZXF1YWwoJ2YgeicsIGdldGxpbmUoJy4nKSkKICAiIGcKICBleGUgJ25vcm1hbCAvXCVkMjE4NzliJyAuLiAiXDxDUj54IgogIGNhbGwgYXNzZXJ0X2VxdWFsKCdnIGFiYicsIGdldGxpbmUoJy4nKSkKCiAgIiBqIFRlc3QgYmFja3dhcmRzIHNlYXJjaCBmcm9tIGEgbXVsdGktYnl0ZSBjaGFyCiAgZXhlICJub3JtYWwgL3hcPENSPng/Llw8Q1I+eCIKICBjYWxsIGFzc2VydF9lcXVhbCgnaiAwMTLinaQnLCBnZXRsaW5lKCcuJykpCiAgIiBrCiAgbGV0IEB3PSc6JXMjY29tYltpXW5hdGlvbnMjxZPMhOG5o8yBbcylzITOscyEzIbMgSNnJwogIEB3CiAgY2FsbCBhc3NlcnRfZXF1YWwoJ2sgxZPMhOG5o8yBbcylzITOscyEzIbMgScsIGdldGxpbmUoMTgpKQoKICBjbG9zZSEKZW5kZnVuYwoKZnVuYyBUZXN0X3JlZ2V4cF9tdWx0aWJ5dGVfbWFnaWMoKQogIHNldCByZWdleHBlbmdpbmU9MQogIGNhbGwgUnVuX3JlZ2V4cF9tdWx0aWJ5dGVfbWFnaWMoKQogIHNldCByZWdleHBlbmdpbmU9MgogIGNhbGwgUnVuX3JlZ2V4cF9tdWx0aWJ5dGVfbWFnaWMoKQogIHNldCByZWdleHBlbmdpbmUmCmVuZGZ1bmMKCiIgVGVzdCBmb3IgNy4zLjE5MgoiIGNvbW1hbmQgIjpzLyBcPy8gL2ciIHNwbGl0cyBtdWx0aS1ieXRlIGNoYXJhY3RlcnMgaW50byBieXRlcwpmdW5jIFRlc3Rfc3BsaXRfbXVsdGlieXRlX3RvX2J5dGVzKCkKICBuZXcKICBjYWxsIHNldGxpbmUoMSwgJ2wgw6TDtiDDvM6xzITMhsyBJykKICBzLyBcPy8gL2cKICBjYWxsIGFzc2VydF9lcXVhbCgnIGwgw6Qgw7Ygw7wgzrHMhMyGzIEnLCBnZXRsaW5lKDEpKQogIGNsb3NlIQplbmRmdW5jCgoiIFRlc3QgZm9yIG1hdGNoc3RyKCkgd2l0aCBtdWx0aWJ5dGUgY2hhcmFjdGVycwpmdW5jIFRlc3RfbWF0Y2hzdHJfbXVsdGlieXRlKCkKICBuZXcKICBjYWxsIGFzc2VydF9lcXVhbCgn15EnLCBtYXRjaHN0cigi15DXkdeS15MiLCAiLiIsIDAsIDIpKQogIGNhbGwgYXNzZXJ0X2VxdWFsKCfXkdeSJywgbWF0Y2hzdHIoIteQ15HXkteTIiwgIi4uIiwgMCwgMikpCiAgY2FsbCBhc3NlcnRfZXF1YWwoJ9eQJywgbWF0Y2hzdHIoIteQ15HXkteTIiwgIi4iLCAwLCAwKSkKICBjYWxsIGFzc2VydF9lcXVhbCgn15InLCBtYXRjaHN0cigi15DXkdeS15MiLCAiLiIsIDQsIC0xKSkKICBjbG9zZSEKZW5kZnVuYwoKIiBUZXN0IGZvciA3LjQuNjM2CiIgQSBzZWFyY2ggd2l0aCBlbmQgb2Zmc2V0IGdldHMgc3R1Y2sgYXQgZW5kIG9mIGZpbGUuCmZ1bmMgVGVzdF9zZWFyY2hfd2l0aF9lbmRfb2Zmc2V0KCkKICBuZXcKICBjYWxsIHNldGxpbmUoMSwgWycnLCAnZG9nKGEnLCAnY2F0KCddKQogIGV4ZSAibm9ybWFsIC8oL2UrXDxDUj4iCiAgbm9ybWFsIG4iYXluCiAgY2FsbCBhc3NlcnRfZXF1YWwoImFcbmNhdCgiLCBAYSkKICBjbG9zZSEKZW5kZnVuYwoKIiBDaGVjayB0aGF0ICJeIiBtYXRjaGVzIGV2ZW4gd2hlbiB0aGUgbGluZSBzdGFydHMgd2l0aCBhIGNvbWJpbmluZyBjaGFyCmZ1bmMgVGVzdF9tYXRjaF9zdGFydF9vZl9saW5lX2NvbWJpbmluZygpCiAgbmV3CiAgY2FsbCBzZXRsaW5lKDEsIFsnJywgIlx1MDVhZSIsICcnXSkKICBleGUgIm5vcm1hbCBnZy9eXDxDUj4iCiAgY2FsbCBhc3NlcnRfZXF1YWwoMiwgZ2V0Y3VycG9zKClbMV0pCiAgYndpcGUhCmVuZGZ1bmMKCiIgQ2hlY2sgdGhhdCBbWzp1cHBlcjpdXSBtYXRjaGVzIGZvciBhdXRvbWF0aWMgZW5naW5lCmZ1bmMgVGVzdF9tYXRjaF9jaGFyX2NsYXNzX3VwcGVyKCkKICBuZXcKCiAgIiBUZXN0IDE6IFtbOnVwcGVyOl1dXHsyLFx9CiAgc2V0IHJlZ2V4cGVuZ2luZT0wCiAgY2FsbCBzZXRsaW5lKDEsIFsnMDUuINCf0JXQodCd0K8g0J4g0JPQldCg0J7Qr9ClINC80YPQty4g0JAuINCU0LDQstC40LTQtdC90LrQviwg0JwuINCa0L7QstCw0LvRjyDQuCDQkS4g0KjQtdGF0YLQtdGA0LAgLi4uJywgJzA1LiBQSkVTTkpBIE8gR0pFUk9KQUtIIG11cy4gQS4gRGF2aWRqZW5rbywgTS4gS292YWxqYSBpIEIuIFNoamVraHRqZXJhIC4uLiddKQogIGNhbGwgY3Vyc29yKDEsMSkKICBsZXQgc2VhcmNoX2NtZD0nbm9ybSAvXDxbWzp1cHBlcjpdXVx7MixcfVw+JyAuLiAiXDxDUj4iCiAgZXhlIHNlYXJjaF9jbWQKICBjYWxsIGFzc2VydF9lcXVhbCg0LCBzZWFyY2hjb3VudCgpLnRvdGFsLCAnVEVTVCAxJykKICBzZXQgcmVnZXhwZW5naW5lPTEKICBleGUgc2VhcmNoX2NtZAogIGNhbGwgYXNzZXJ0X2VxdWFsKDIsIHNlYXJjaGNvdW50KCkudG90YWwsICdURVNUIDEnKQogIHNldCByZWdleHBlbmdpbmU9MgogIGV4ZSBzZWFyY2hfY21kCiAgY2FsbCBhc3NlcnRfZXF1YWwoNCwgc2VhcmNoY291bnQoKS50b3RhbCwgJ1RFU1QgMScpCgogICIgVGVzdCAyOiBbWzp1cHBlcjpdXS5cKwogIGxldCBzZWFyY2hfY21kPSdub3JtIC9cPFtbOnVwcGVyOl1dLlwrXD4nIC4uICJcPENSPiIKICBzZXQgcmVnZXhwZW5naW5lPTAKICBleGUgc2VhcmNoX2NtZAogIGNhbGwgYXNzZXJ0X2VxdWFsKDIsIHNlYXJjaGNvdW50KCkudG90YWwsICdURVNUIDInKQogIHNldCByZWdleHBlbmdpbmU9MQogIGV4ZSBzZWFyY2hfY21kCiAgY2FsbCBhc3NlcnRfZXF1YWwoMSwgc2VhcmNoY291bnQoKS50b3RhbCwgJ1RFU1QgMicpCiAgc2V0IHJlZ2V4cGVuZ2luZT0yCiAgZXhlIHNlYXJjaF9jbWQKICBjYWxsIGFzc2VydF9lcXVhbCgyLCBzZWFyY2hjb3VudCgpLnRvdGFsLCAnVEVTVCAyJykKCiAgIiBUZXN0IDM6IFtbOmxvd2VyOl1dXCsKICBsZXQgc2VhcmNoX2NtZD0nbm9ybSAvXDxbWzpsb3dlcjpdXVwrXD4nIC4uICJcPENSPiIKICBzZXQgcmVnZXhwZW5naW5lPTAKICBleGUgc2VhcmNoX2NtZAogIGNhbGwgYXNzZXJ0X2VxdWFsKDQsIHNlYXJjaGNvdW50KCkudG90YWwsICdURVNUIDMgbG93ZXInKQogIHNldCByZWdleHBlbmdpbmU9MQogIGV4ZSBzZWFyY2hfY21kCiAgY2FsbCBhc3NlcnRfZXF1YWwoMiwgc2VhcmNoY291bnQoKS50b3RhbCwgJ1RFU1QgMyBsb3dlcicpCiAgc2V0IHJlZ2V4cGVuZ2luZT0yCiAgZXhlIHNlYXJjaF9jbWQKICBjYWxsIGFzc2VydF9lcXVhbCg0LCBzZWFyY2hjb3VudCgpLnRvdGFsLCAnVEVTVCAzIGxvd2VyJykKCiAgIiBjbGVhbiB1cAogIHNldCByZWdleHBlbmdpbmU9MAogIGJ3aXBlIQplbmRmdW5jCgpmdW5jIFRlc3RfbWF0Y2hfaW52YWxpZF9ieXRlKCkKICBjYWxsIHdyaXRlZmlsZSgwejYzMGEuNzY1ZDMwYWEwYS4yZTBhLjc5MGEuNDAzMCwgJ1hpbnZhbGlkJywgJ0QnKQogIG5ldwogIHNvdXJjZSBYaW52YWxpZAogIGJ3aXBlIQplbmRmdW5jCgpmdW5jIFRlc3RfbWF0Y2hfaWxsZWdhbF9ieXRlKCkKICAiIFRleHQgaGFzIGlsbGVnYWwgYnl0ZXMgd2hpY2ggbmVlZCB0byBiZSBzZXQgZXhwbGljaXRseQogIGxldCBsaW5lcyA9IFsibm9ybSA6c2V0IG5vXHgwMVw8Q1I+IiwgInNpbGVudCBuXHhmZiIsICJzaWxlbnQgbm9ybSA6Ylx4ZmZcPENSPiJdCiAgY2FsbCB3cml0ZWZpbGUobGluZXMsICdYcmVnZXhwJywgJ0QnKQogIGNhbGwgc3lzdGVtKEdldFZpbUNvbW1hbmQoKSAuLiAnIC1YIC1aIC1lIC1zIC1TIFhyZWdleHAgLWMgcWEhJykKZW5kZnVuYwoKZnVuYyBUZXN0X21hdGNoX3Rvb19jb21wbGljYXRlZCgpCiAgc2V0IHJlZ2V4cGVuZ2luZT0xCiAgZXhlICJub3N3YXBmaWxlIHZzcGxpdCBceGViXHhkYlx4OTkiCiAgc2lsZW50ISBidWYgXCZcenMqXHpzKjAKICBid2lwZSEKICBzZXQgcmVnZXhwZW5naW5lPTAKZW5kZnVuYwoKZnVuYyBUZXN0X2NvbWJpbmluZ19jaGFyc19pbl9jb2xsZWN0aW9uKCkKICBuZXcKICBmb3IgaSBpbiByYW5nZSgwLDIpCiAgICBleGUgInNldCByZT0iLmkKICAgIHB1dCA9WyfJlMyDJywgJ8mUJywgICfMgyAgYcyDJywgJ2FiY2QnXQogICAgOiVzL1vJlMyDXS8vCiAgICBjYWxsIGFzc2VydF9lcXVhbChbJycsICcnLCAnyZQnLCAnzIMgIGHMgycsICdhYmNkJ10sIGdldGxpbmUoMSwnJCcpKQogICAgJWQKICBlbmRmb3IKICBidyEKZW5kZnVuYwoKIiB2aW06IHNoaWZ0d2lkdGg9MiBzdHM9MiBleHBhbmR0YWIK