Demo wird geladen … Falls dieser Text bleibt, wird JavaScript auf dieser Seite blockiert oder verzögert (Caching-/Optimierungs-Plugin).
CihmdW5jdGlvbiAoKSB7CiBmdW5jdGlvbiBrelN0YXJ0KCkgewogIHZhciBob3N0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2t6LWRjYi1kZW1vJyk7CiAgaWYgKCFob3N0IHx8IGhvc3Quc2hhZG93Um9vdCkgcmV0dXJuOwogIHRyeSB7CiAgaWYgKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna3otZGNiLWZvbnRzJykpIHsKICAgIHZhciBsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpOwogICAgbC5pZCA9ICdrei1kY2ItZm9udHMnOyBsLnJlbCA9ICdzdHlsZXNoZWV0JzsKICAgIGwuaHJlZiA9ICdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PU1vbnRzZXJyYXQ6d2dodEA0MDA7NjAwOzcwMCZmYW1pbHk9SW50ZXI6d2dodEA0MDA7NTAwOzYwMCZmYW1pbHk9TGF0bzppdGFsLHdnaHRAMCw1MDA7MCw3MDA7MCw5MDA7MSw5MDAmZGlzcGxheT1zd2FwJzsKICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobCk7CiAgfQogIHZhciByb290ID0gaG9zdC5hdHRhY2hTaGFkb3coeyBtb2RlOiAnb3BlbicgfSk7CgogIHZhciBUID0gJyMyRTY3ODInOwogIHZhciBDU1MgPSAnOmhvc3R7YWxsOmluaXRpYWw7ZGlzcGxheTpibG9ja30qe2JveC1zaXppbmc6Ym9yZGVyLWJveH1idXR0b257Zm9udDppbmhlcml0O2N1cnNvcjpwb2ludGVyfXB7bWFyZ2luOjB9JyArCiAgICAnLnd7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzRhNWY2Yjtmb250LWZhbWlseTpNb250c2VycmF0LHN5c3RlbS11aSxzYW5zLXNlcmlmfScgKwogICAgJy5te2Rpc3BsYXk6ZmxleDtnYXA6NTZweDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwYWRkaW5nOjI4cHggMjRweCAxMHB4O2ZsZXgtd3JhcDp3cmFwfScgKwogICAgJy5wbnttYXgtd2lkdGg6NDcwcHg7ZmxleDoxIDEgMzQwcHg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MjJweH0nICsKICAgICcudG9we2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDoxNnB4fScgKwogICAgJy5lYntmb250OjYwMCAxNXB4LzEuMyBNb250c2VycmF0LHNhbnMtc2VyaWY7Y29sb3I6JyArIFQgKyAnfScgKwogICAgJ2gxe21hcmdpbjoxMnB4IDAgMDtmb250OjcwMCAzOHB4LzEuMTIgTW9udHNlcnJhdCxzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0uMDFlbTtjb2xvcjonICsgVCArICd9JyArCiAgICAnLmxne2Rpc3BsYXk6ZmxleDtmbGV4Om5vbmU7Ym9yZGVyOjJweCBzb2xpZCAnICsgVCArICc7Ym9yZGVyLXJhZGl1czo5OTlweDtvdmVyZmxvdzpoaWRkZW59JyArCiAgICAnLmxnIGJ1dHRvbntmb250OjcwMCAxMnB4LzEgTW9udHNlcnJhdCxzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi4wOGVtO3BhZGRpbmc6OXB4IDE0cHg7Ym9yZGVyOjA7YmFja2dyb3VuZDojZmZmO2NvbG9yOicgKyBUICsgJ30nICsKICAgICcubGcgYnV0dG9uLm9ue2JhY2tncm91bmQ6JyArIFQgKyAnO2NvbG9yOiNmZmZ9JyArCiAgICAnLmludHJve2ZvbnQ6NDAwIDE3cHgvMS42IE1vbnRzZXJyYXQsc2Fucy1zZXJpZn0nICsKICAgICcuY2FyZHtwYWRkaW5nOjIycHggMjRweDtib3JkZXI6MXB4IHNvbGlkICNkZGU1ZTk7Ym9yZGVyLXJhZGl1czoyMHB4fScgKwogICAgJy5zaXtmb250OjYwMCAxMnB4LzEgTW9udHNlcnJhdCxzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi4wOGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtjb2xvcjonICsgVCArICd9JyArCiAgICAnLnRpbnR7bWFyZ2luLXRvcDoxMnB4O3BhZGRpbmc6MTZweCAxOHB4O2JvcmRlci1yYWRpdXM6MTRweDtiYWNrZ3JvdW5kOiNlOGYxZjR9JyArCiAgICAnLnN0e2ZvbnQ6NzAwIDE5cHgvMS4yNSBNb250c2VycmF0LHNhbnMtc2VyaWY7Y29sb3I6IzFkM2E0OH0uc2x7bWFyZ2luLXRvcDo4cHg7Zm9udDo0MDAgMTVweC8xLjYgTW9udHNlcnJhdCxzYW5zLXNlcmlmfScgKwogICAgJy5kb3Rze21hcmdpbi10b3A6MTZweDtkaXNwbGF5OmZsZXg7Z2FwOjdweH0uZG90cyBidXR0b257d2lkdGg6MTJweDtoZWlnaHQ6NnB4O2JvcmRlci1yYWRpdXM6M3B4O2JvcmRlcjowO3BhZGRpbmc6MDtiYWNrZ3JvdW5kOiNkZGU1ZTk7dHJhbnNpdGlvbjp3aWR0aCAuMnN9JyArCiAgICAnLmRvdHMgYnV0dG9uLmR7YmFja2dyb3VuZDojOGZiMGMwfS5kb3RzIGJ1dHRvbi5vbnt3aWR0aDozMHB4O2JhY2tncm91bmQ6JyArIFQgKyAnfScgKwogICAgJy5yb3d7ZGlzcGxheTpmbGV4O2dhcDo4cHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwfS5sYntmb250OjYwMCAxMXB4LzEgTW9udHNlcnJhdCxzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi4xZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2NvbG9yOicgKyBUICsgJzt3aWR0aDo3MHB4fScgKwogICAgJy5zZ3tmb250OjYwMCAxM3B4LzEgTW9udHNlcnJhdCxzYW5zLXNlcmlmO3BhZGRpbmc6MTBweCAxNnB4O2JvcmRlci1yYWRpdXM6OTk5cHg7Ym9yZGVyOjJweCBzb2xpZCAjZGRlNWU5O2JhY2tncm91bmQ6I2ZmZjtjb2xvcjonICsgVCArICd9JyArCiAgICAnLnNnLm9ue2JvcmRlci1jb2xvcjonICsgVCArICc7YmFja2dyb3VuZDonICsgVCArICc7Y29sb3I6I2ZmZn0nICsKICAgICcucGx7cGFkZGluZzoxNnB4IDI0cHg7Ym9yZGVyLXJhZGl1czo5OTlweDtib3JkZXI6MnB4IHNvbGlkICcgKyBUICsgJztiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOicgKyBUICsgJztmb250OjcwMCAxNHB4LzEgTW9udHNlcnJhdCxzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi4xMmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0nICsKICAgICcucGw6aG92ZXJ7YmFja2dyb3VuZDojZThmMWY0fS5wbC5wcntiYWNrZ3JvdW5kOicgKyBUICsgJztjb2xvcjojZmZmO3BhZGRpbmc6MTZweCAzMHB4fS5wbC5wcjpob3ZlcntiYWNrZ3JvdW5kOiMyNDU0NmJ9JyArCiAgICAnLmZ0e2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDo2cHggMjRweDtmbGV4LXdyYXA6d3JhcDtwYWRkaW5nOjEwcHggMjRweCAyMnB4O2ZvbnQ6NDAwIDEzcHgvMS41IE1vbnRzZXJyYXQsc2Fucy1zZXJpZjt0ZXh0LWFsaWduOmNlbnRlcn0uZnQgYntjb2xvcjonICsgVCArICc7Zm9udC13ZWlnaHQ6NjAwfScgKwogICAgJy5kdntmbGV4Om5vbmU7cG9zaXRpb246cmVsYXRpdmV9LmR2aXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7dHJhbnNmb3JtLW9yaWdpbjp0b3AgbGVmdDt3aWR0aDo0MTRweDtoZWlnaHQ6ODc0cHg7cGFkZGluZzoxMnB4O2JvcmRlci1yYWRpdXM6NjJweDtiYWNrZ3JvdW5kOiMxYzFjMWU7Ym94LXNoYWRvdzowIDAgMCAycHggIzNhM2EzYywwIDMwcHggNjBweCByZ2JhKDI5LDU4LDcyLC4yNSl9JyArCiAgICAnLnNjcntwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDozOTBweDtoZWlnaHQ6ODUwcHg7Ym9yZGVyLXJhZGl1czo1MHB4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOiNmZmY7Zm9udC1mYW1pbHk6SW50ZXIsc3lzdGVtLXVpLHNhbnMtc2VyaWY7Y29sb3I6IzFhMWExZn0nICsKICAgICcuc2J7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3JpZ2h0OjA7dG9wOjA7aGVpZ2h0OjU0cHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOjAgMzRweCAwIDQwcHg7Zm9udDo2MDAgMTVweCBJbnRlcixzYW5zLXNlcmlmO3otaW5kZXg6M30nICsKICAgICcuaXNse3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6NTAlO3RvcDoxMXB4O3dpZHRoOjEyMnB4O2hlaWdodDozNXB4O21hcmdpbi1sZWZ0Oi02MXB4O2JvcmRlci1yYWRpdXM6MjBweDtiYWNrZ3JvdW5kOiMwMDA7ei1pbmRleDo0fScgKwogICAgJy5iYXR7d2lkdGg6MjVweDtoZWlnaHQ6MTJweDtib3JkZXI6MS41cHggc29saWQgY3VycmVudENvbG9yO2JvcmRlci1yYWRpdXM6NHB4O3BhZGRpbmc6MS41cHg7b3BhY2l0eTouOX0uYmF0IGl7ZGlzcGxheTpibG9jaztoZWlnaHQ6MTAwJTt3aWR0aDo3NSU7YmFja2dyb3VuZDpjdXJyZW50Q29sb3I7Ym9yZGVyLXJhZGl1czoxLjVweH0nICsKICAgICcuaG9tZXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjUwJTtib3R0b206OHB4O3dpZHRoOjEzNHB4O2hlaWdodDo1cHg7bWFyZ2luLWxlZnQ6LTY3cHg7Ym9yZGVyLXJhZGl1czozcHg7YmFja2dyb3VuZDojMWExYTFmO3otaW5kZXg6M30nICsKICAgICcuYm9keXtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDo1NHB4IDAgMCAwO292ZXJmbG93LXk6YXV0bztzY3JvbGxiYXItd2lkdGg6bm9uZX0uYm9keTo6LXdlYmtpdC1zY3JvbGxiYXJ7ZGlzcGxheTpub25lfScgKwogICAgJy5wZ3ttaW4taGVpZ2h0OjEwMCV9JyArCiAgICAnLnN0YXJze3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudCgxLjVweCAxLjVweCBhdCAxMiUgMTglLCNmZmYgNTAlLHRyYW5zcGFyZW50IDUyJSkscmFkaWFsLWdyYWRpZW50KDFweCAxcHggYXQgMjglIDYyJSwjZmZmIDUwJSx0cmFuc3BhcmVudCA1MiUpLHJhZGlhbC1ncmFkaWVudCgxLjVweCAxLjVweCBhdCA0NiUgMTIlLCNmZmYgNTAlLHRyYW5zcGFyZW50IDUyJSkscmFkaWFsLWdyYWRpZW50KDFweCAxcHggYXQgNjQlIDQ0JSwjY2ZjOGZmIDUwJSx0cmFuc3BhcmVudCA1MiUpLHJhZGlhbC1ncmFkaWVudCgycHggMnB4IGF0IDg0JSAxNiUsI2ZmZiA1MCUsdHJhbnNwYXJlbnQgNTIlKSxyYWRpYWwtZ3JhZGllbnQoMXB4IDFweCBhdCA5MiUgNTglLCNmZmYgNTAlLHRyYW5zcGFyZW50IDUyJSkscmFkaWFsLWdyYWRpZW50KDEuNXB4IDEuNXB4IGF0IDclIDgyJSwjY2ZjOGZmIDUwJSx0cmFuc3BhcmVudCA1MiUpLHJhZGlhbC1ncmFkaWVudCgxcHggMXB4IGF0IDM4JSA5MCUsI2ZmZiA1MCUsdHJhbnNwYXJlbnQgNTIlKSxyYWRpYWwtZ3JhZGllbnQoMTIwJSA5MCUgYXQgNzUlIDIwJSwjNWEyZmIwIDAlLCMyNDE2NWEgNDIlLCMwZDBhMjQgMTAwJSl9JyArCiAgICAnLnBsYXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMzUlIDMwJSwjZmZjNDhhIDAlLCNlMjU3MmMgNTUlLCM1ZTFhM2EgMTAwJSk7Ym94LXNoYWRvdzowIDAgNzBweCByZ2JhKDI1NSwxMjAsNjAsLjQ1KX0nICsKICAgICcucmluZ3twb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtib3JkZXI6MnB4IHNvbGlkIHJnYmEoMjU1LDIxNCwxNjAsLjU1KTt0cmFuc2Zvcm06cm90YXRlKC0xNGRlZyl9JyArCiAgICAnLmdvbGR7Zm9udC1mYW1pbHk6TGF0byxzYW5zLXNlcmlmO2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjkwMDtsaW5lLWhlaWdodDouOTtsZXR0ZXItc3BhY2luZzouMDJlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCNmZmY2ZDYgMCUsI2ZmYzIzZCA1NSUsI2UwOGExMiAxMDAlKTstd2Via2l0LWJhY2tncm91bmQtY2xpcDp0ZXh0O2JhY2tncm91bmQtY2xpcDp0ZXh0O2NvbG9yOnRyYW5zcGFyZW50fScgKwogICAgJy5hcmVuYXtmb250OjcwMCAxNXB4LzEgTGF0byxzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi41MmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtjb2xvcjojY2ZjOGZmfScgKwogICAgJy5jb2lue2ZsZXg6bm9uZTtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMzUlIDMwJSwjZmZmMWI4IDAlLCNmZmMyM2QgNDUlLCNkOThhMGYgMTAwJSk7Ym9yZGVyOjJweCBzb2xpZCAjYTg2ODBhO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgNHB4IHJnYmEoMjU1LDIzNiwxNzAsLjU1KSwwIDRweCAxMnB4IHJnYmEoMCwwLDAsLjM1KTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Zm9udC1mYW1pbHk6TGF0byxzYW5zLXNlcmlmO2ZvbnQtd2VpZ2h0OjkwMDtjb2xvcjojOWE1YzA2fScgKwogICAgJy52aXB7ZmxleDpub25lO2JvcmRlci1yYWRpdXM6MTBweDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsIzdiNGRmZiwjM2ExZjhmKTtib3JkZXI6MXB4IHNvbGlkICNmZmMyM2Q7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZvbnQ6aXRhbGljIDkwMCAxNHB4LzEgTGF0byxzYW5zLXNlcmlmO2NvbG9yOiNmZmMyM2R9JyArCiAgICAnLmJhcntoZWlnaHQ6OXB4O2JvcmRlci1yYWRpdXM6NHB4O2JhY2tncm91bmQ6I2VjZWNmMH0nICsKICAgICcucGt7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTJweDt3aWR0aDoxMDAlO3BhZGRpbmc6OHB4IDEwcHggOHB4IDhweDtib3JkZXItcmFkaXVzOjEycHg7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wNSk7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4xKTtjb2xvcjojZmZmO3RleHQtYWxpZ246bGVmdH0nICsKICAgICcucGsub257YmFja2dyb3VuZDpyZ2JhKDI1NSwxOTQsNjEsLjEpO2JvcmRlci1jb2xvcjojZmZjMjNkfS5wayAubntmb250OjYwMCAxNnB4LzEuMSBJbnRlcixzYW5zLXNlcmlmfS5wayAudHtmb250OjQwMCAxMS41cHgvMS4yIEludGVyLHNhbnMtc2VyaWY7Y29sb3I6I2ZmYzIzZDttYXJnaW4tdG9wOjRweH0nICsKICAgICcucHIye3BhZGRpbmc6MTBweCAxMnB4O2JvcmRlci1yYWRpdXM6OHB4O2JhY2tncm91bmQ6I2ZmYzIzZDtjb2xvcjojMWExNTMwO2ZvbnQ6NjAwIDE0cHgvMSBJbnRlcixzYW5zLXNlcmlmfScgKwogICAgJy5taHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjlweDtwYWRkaW5nOjEzcHggMjBweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWNlY2YwO2ZvbnQ6NjAwIDEzcHgvMSBJbnRlcixzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi4xNGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0ubWggaXt3aWR0aDoxOHB4O2hlaWdodDoxOHB4O2JvcmRlcjoxcHggc29saWQgI2Q1ZDdlMjtib3JkZXItcmFkaXVzOjVweH0nICsKICAgICcuZ2J0bnt3aWR0aDoxMDAlO3BhZGRpbmc6MTdweDttaW4taGVpZ2h0OjU2cHg7Ym9yZGVyLXJhZGl1czo4cHg7Ym9yZGVyOjFweCBzb2xpZCAjMjBBNDRCO2JhY2tncm91bmQ6cmdiYSgzMiwxNjQsNzUsLjEyKTtjb2xvcjojMGU2YjMwO2ZvbnQ6NTAwIDE2cHggSW50ZXIsc2Fucy1zZXJpZn0uZ2J0bjpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMzIsMTY0LDc1LC4yMil9JyArCiAgICAnLm1idG57d2lkdGg6MTAwJTtwYWRkaW5nOjE2cHg7bWluLWhlaWdodDo1NHB4O2JvcmRlci1yYWRpdXM6OHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbWIpO2JhY2tncm91bmQ6dmFyKC0tbWIpO2NvbG9yOiNmZmY7Zm9udDo1MDAgMTVweCBJbnRlcixzYW5zLXNlcmlmfS5tYnRuOmhvdmVye29wYWNpdHk6Ljl9JyArCiAgICAnLmNidG57d2lkdGg6MTAwJTtwYWRkaW5nOjE0cHg7bWluLWhlaWdodDo0OHB4O2JvcmRlci1yYWRpdXM6OHB4O2JvcmRlcjoxcHggc29saWQgI2RjZGNlMjtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzRiNGI1NTtmb250OjQwMCAxNHB4IEludGVyLHNhbnMtc2VyaWZ9JyArCiAgICAnLm11e2NvbG9yOiM2YjZiNzZ9LmV1e3dpZHRoOjI3cHg7aGVpZ2h0OjM5cHg7Ym9yZGVyOjJweCBzb2xpZCAjOGE4YTk0O2JvcmRlci1yYWRpdXM6NHB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmb250OjkwMCAxNXB4IExhdG8sc2Fucy1zZXJpZjtjb2xvcjojRTk1ODBDfScgKwogICAgJy5mbGR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDtwYWRkaW5nOjE0cHggMTVweDtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kOiNmZmY7Zm9udDo1MDAgMThweC8xLjIgSW50ZXIsc2Fucy1zZXJpZn0uZmxkIC5jY3tjb2xvcjojOGE4YTk0fS5mbGQgLnZ7bGV0dGVyLXNwYWNpbmc6LjA4ZW19JyArCiAgICAnLmN1cnt3aWR0aDoycHg7aGVpZ2h0OjIwcHg7YW5pbWF0aW9uOmt6YiAxLjFzIHN0ZXBzKDEsZW5kKSBpbmZpbml0ZX0nICsKICAgICcua3B7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMywxZnIpO2dhcDo5cHh9LmtwIGJ1dHRvbnttaW4taGVpZ2h0OjUwcHg7Ym9yZGVyLXJhZGl1czo4cHg7Ym9yZGVyOjFweCBzb2xpZCAjZTBlMGU2O2JhY2tncm91bmQ6I2ZhZmFmYztjb2xvcjojMWExYTFmO2ZvbnQ6NDAwIDIwcHggSW50ZXIsc2Fucy1zZXJpZn0ua3AgYnV0dG9uOmhvdmVye2JhY2tncm91bmQ6I2YwZjBmNH0nICsKICAgICcudGJ7ZmxleDoxO2FzcGVjdC1yYXRpbzoxLzEuMTU7Ym9yZGVyLXJhZGl1czo4cHg7YmFja2dyb3VuZDojZjZmNmY5O2JvcmRlcjoxcHggc29saWQgI2RlZGVkZjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Zm9udDo1MDAgMjRweCBJbnRlcixzYW5zLXNlcmlmfScgKwogICAgJy5rdntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjE0cHg7cGFkZGluZzoxMXB4IDA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2VjZWNmMDtmb250OjQwMCAxM3B4IEludGVyLHNhbnMtc2VyaWY7dGV4dC1hbGlnbjpyaWdodH0ua3Ygc3BhbjpmaXJzdC1jaGlsZHtjb2xvcjojNmI2Yjc2O3RleHQtYWxpZ246bGVmdH0nICsKICAgICcuc3Bpbnt3aWR0aDozOHB4O2hlaWdodDozOHB4O2JvcmRlci1yYWRpdXM6NTAlO2JvcmRlcjoycHggc29saWQgI2UzZTNlODtib3JkZXItdG9wLWNvbG9yOnZhcigtLW1iKTthbmltYXRpb246a3pzIC45cyBsaW5lYXIgaW5maW5pdGV9JyArCiAgICAnLnNtc3twb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjEwcHg7cmlnaHQ6MTBweDt0b3A6NTJweDt6LWluZGV4OjU7ZGlzcGxheTpmbGV4O2dhcDoxMXB4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7cGFkZGluZzoxMnB4IDEzcHg7Ym9yZGVyLXJhZGl1czoyMnB4O2JhY2tncm91bmQ6cmdiYSgyNDYsMjQ2LDI0OCwuOTQpOy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOmJsdXIoMjBweCk7YmFja2Ryb3AtZmlsdGVyOmJsdXIoMjBweCk7Ym94LXNoYWRvdzowIDEwcHggMzBweCByZ2JhKDAsMCwwLC4yMik7Y29sb3I6IzFhMWExZjt0ZXh0LWFsaWduOmxlZnQ7Ym9yZGVyOjA7d2lkdGg6YXV0bztmb250LWZhbWlseTpJbnRlcixzeXN0ZW0tdWksc2Fucy1zZXJpZn0nICsKICAgICcuc21zLmlue2FuaW1hdGlvbjprenNtcyAuNDVzIGN1YmljLWJlemllciguMiwuOSwuMywxKX0uc21zaXt3aWR0aDozOHB4O2hlaWdodDozOHB4O2ZsZXg6bm9uZTtib3JkZXItcmFkaXVzOjlweDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxODBkZWcsIzVhZjU3NSwjMjBjNjNjKTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LnNtc2kgaXt3aWR0aDoyMnB4O2hlaWdodDoxN3B4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6I2ZmZjtkaXNwbGF5OmJsb2NrfScgKwogICAgJy5zbXNoe2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6OHB4O2ZvbnQ6NjAwIDE0cHgvMS4yIEludGVyLHNhbnMtc2VyaWZ9LnNtc2ggc3Bhbntmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjEyLjVweDtjb2xvcjojOGE4YTk0fS5zbXN0e21hcmdpbi10b3A6MnB4O2ZvbnQ6NDAwIDEzLjVweC8xLjM1IEludGVyLHNhbnMtc2VyaWY7Y29sb3I6IzJhMmEzMDtkaXNwbGF5Oi13ZWJraXQtYm94Oy13ZWJraXQtbGluZS1jbGFtcDo1Oy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDtvdmVyZmxvdzpoaWRkZW59JyArCiAgICAnQGtleWZyYW1lcyBrenNtc3tmcm9te3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMzAlKTtvcGFjaXR5OjB9dG97dHJhbnNmb3JtOm5vbmU7b3BhY2l0eToxfX0nICsKICAgICdAa2V5ZnJhbWVzIGt6c3t0b3t0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fUBrZXlmcmFtZXMga3piezAlLDEwMCV7b3BhY2l0eTouMn01MCV7b3BhY2l0eToxfX0nICsKICAgICdAbWVkaWEgKG1heC13aWR0aDo2NDBweCl7aDF7Zm9udC1zaXplOjMwcHh9Lm17Z2FwOjMycHh9fSc7CgogIHZhciBNTk9TID0gewogICAgdGVsZWtvbTogeyBuYW1lOiAnVGVsZWtvbScsIG1hcms6ICdUIMK3wrfCtycsIHJpZ2h0OiAnVGltZW91dDogMTU6MDAnLCBvZmZlckN0YTogJ1dlaXRlcicsIG1ub0N0YTogJ1phaGx1bmdzcGZsaWNodGlnIGJlc3RlbGxlbicsIHRhbkxlbjogNCwgdGFuSGludDogJ0RlciBJZGVudGlmaWthdGlvbnNjb2RlIGJlc3RlaHQgYXVzIDQgWmlmZmVybiAoei4gQi4gNDQzMikuJywgYnJhbmQ6ICcjRTIwMDc0JywgaGI6ICcjRTIwMDc0JywgaGY6ICcjZmZmJywgaGw6ICcjYzAwMDYyJywgbWs6ICcjZmZmJyB9LAogICAgdm9kYWZvbmU6IHsgbmFtZTogJ1ZvZGFmb25lJywgbWFyazogJ3ZvZGFmb25lJywgcmlnaHQ6ICcwMTYyIDY1OSAzNzQ0Jywgb2ZmZXJDdGE6ICdaYWhsdW5nc3BmbGljaHRpZyBiZXN0ZWxsZW4nLCBtbm9DdGE6ICdaYWhsdW5nc3BmbGljaHRpZyBiZXN0ZWxsZW4nLCB0YW5MZW46IDQsIHRhbkhpbnQ6ICdCZWlzcGllbDogMTIzNCcsIGJyYW5kOiAnI0U2MDAwMCcsIGhiOiAnI2ZmZicsIGhmOiAnIzFhMWExZicsIGhsOiAnI2VjZWNmMCcsIG1rOiAnI0U2MDAwMCcgfSwKICAgIG8yOiB7IG5hbWU6ICdvMicsIG1hcms6ICdPMicsIHJpZ2h0OiAnMDE3NiA2ODM4OTY5OCcsIG9mZmVyQ3RhOiAnS29zdGVucGZsaWNodGlnIGJlc3RlbGxlbicsIG1ub0N0YTogJ0Jlc3TDpHRpZ2VuJywgdGFuTGVuOiA1LCB0YW5IaW50OiAnRGllIFRyYW5zYWt0aW9uc251bW1lciBtdXNzIGF1cyA1IFppZmZlcm4gYmVzdGVoZW4uJywgYnJhbmQ6ICcjMDAxOUE1JywgaGI6ICcjMDAyRTZEJywgaGY6ICcjZmZmJywgaGw6ICcjMDAxZjRkJywgbWs6ICcjZmZmJyB9CiAgfTsKICB2YXIgRkxPV1MgPSB7CiAgICB0ZWxla29tOiB7IGNsaWNrOiBbJ2FkJywgJ3Nob3AnLCAnb2ZmZXInLCAncmVkaXJlY3QnLCAnY29uZmlybScsICdhY2Nlc3MnXSwgdGFuOiBbJ2FkJywgJ3Nob3AnLCAnb2ZmZXInLCAncmVkaXJlY3QnLCAndGFuJywgJ2FjY2VzcyddIH0sCiAgICB2b2RhZm9uZTogeyBjbGljazogWydhZCcsICdzaG9wJywgJ29mZmVyJywgJ3JlZGlyZWN0JywgJ2xvZ2luJywgJ2NvbmZpcm0nLCAnc3VjY2VzcycsICdhY2Nlc3MnXSwgdGFuOiBbJ2FkJywgJ3Nob3AnLCAnb2ZmZXInLCAncmVkaXJlY3QnLCAndGFuJywgJ3N1Y2Nlc3MnLCAnYWNjZXNzJ10gfSwKICAgIG8yOiB7IGNsaWNrOiBbJ2FkJywgJ3Nob3AnLCAnb2ZmZXInLCAncmVkaXJlY3QnLCAnY29uZmlybScsICdhY2Nlc3MnXSwgdGFuOiBbJ2FkJywgJ3Nob3AnLCAnb2ZmZXInLCAncmVkaXJlY3QnLCAndGFuJywgJ2FjY2VzcyddIH0KICB9OwogIHZhciBPVFAgPSB7CiAgICB0ZWxla29tOiB7IGNsaWNrOiBbJ2FkJywgJ3Nob3AnLCAnb2ZmZXInLCAnaWRlbnRpZnknLCAnYWNjZXNzJ10sIHRhbjogWydhZCcsICdzaG9wJywgJ29mZmVyJywgJ3B0YW4nLCAnYWNjZXNzJ10gfSwKICAgIHZvZGFmb25lOiB7IGNsaWNrOiBbJ2FkJywgJ3Nob3AnLCAnb2ZmZXInLCAnaWRlbnRpZnknLCAnYWNjZXNzJ10sIHRhbjogWydhZCcsICdzaG9wJywgJ29mZmVyJywgJ3B0YW4nLCAnYWNjZXNzJ10gfSwKICAgIG8yOiB7IGNsaWNrOiBbJ2FkJywgJ3Nob3AnLCAnb2ZmZXInLCAnaWRlbnRpZnknLCAncmVkaXJlY3QnLCAnY29uZmlybScsICdhY2Nlc3MnXSwgdGFuOiBbJ2FkJywgJ3Nob3AnLCAnb2ZmZXInLCAncmVkaXJlY3QnLCAndGFuJywgJ2FjY2VzcyddIH0KICB9OwogIHZhciBQQUNLUyA9IFsKICAgIHsgaWQ6ICcxMDAnLCBzdWI6IGZhbHNlLCBjb2luczogJzEwMCcsIHByaWNlOiAnMCw5OSDigqwnLCB0YWc6ICdTdGFydGVycGFrZXQnLCBidG46ICcxMDAgQ29pbnMnIH0sCiAgICB7IGlkOiAnNTUwJywgc3ViOiBmYWxzZSwgY29pbnM6ICc1NTAnLCBwcmljZTogJzQsOTkg4oKsJywgdGFnOiAnQmVsaWVidCDCtyArMTAgJSBCb251cycsIGJ0bjogJzU1MCBDb2lucycgfSwKICAgIHsgaWQ6ICcxMjAwJywgc3ViOiBmYWxzZSwgY29pbnM6ICcxLjIwMCcsIHByaWNlOiAnOSw5OSDigqwnLCB0YWc6ICdCZXN0ZXIgV2VydCDCtyArMjAgJSBCb251cycsIGJ0bjogJzEuMjAwIENvaW5zJyB9LAogICAgeyBpZDogJ3ZpcHcnLCBzdWI6IHRydWUsIGNvaW5zOiAnVklQLVBhc3MgV29jaGUnLCBwcmljZTogJzIsOTkg4oKsJywgcGVyOiAnV29jaGUnLCBldmVyeTogJ3fDtmNoZW50bGljaCcsIHRhZzogJ1fDtmNoZW50bGljaCBrw7xuZGJhcicsIGJ0bjogJ1ZJUCAyLDk5IOKCrC9Xby4nIH0sCiAgICB7IGlkOiAndmlwbScsIHN1YjogdHJ1ZSwgY29pbnM6ICdWSVAtUGFzcyBNb25hdCcsIHByaWNlOiAnNyw5OSDigqwnLCBwZXI6ICdNb25hdCcsIGV2ZXJ5OiAnbW9uYXRsaWNoJywgdGFnOiAnTW9uYXRsaWNoIGvDvG5kYmFyJywgYnRuOiAnVklQIDcsOTkg4oKsL01vbi4nIH0KICBdOwogIHZhciBMSU5FUyA9IHsKICAgIGVuOiB7CiAgICAgIGFkOiBbJ1RoZSBiYW5uZXIgc3RhcnRzIGl0JywgJ0EgZ2FtZSBhZCBpbiBhIG5ld3MgZmVlZC4gT25lIHRhcCBsZWFkcyBzdHJhaWdodCBpbnRvIHRoZSBpbi1nYW1lIHNob3AsIG5vIGFjY291bnQgb3IgY2FyZCBuZWVkZWQuJ10sCiAgICAgIHNob3A6IFsnUGljayBhIHByb2R1Y3QnLCAnT25lLW9mZiBjb2luIHBhY2tzIGFuZCBhIFZJUCBzdWJzY3JpcHRpb24gc2lkZSBieSBzaWRlLiBCb3RoIGFyZSBwYWlkIGJ5IHBob25lIGJpbGwuJ10sCiAgICAgIG9mZmVyOiBbJ1lvdXIgcGFnZSwgeW91ciBwcmljZScsICdQcm9kdWN0LCBwcmljZSBhbmQgYmlsbGluZyBpbnRlcnZhbCBpbiBvbmUgdmlldy4gT25lIGJ1dHRvbiwgYW5kIHRoZSBsZWdhbCBsaW5rcyByaWdodCB1bmRlcm5lYXRoIGl0LiddLAogICAgICBvZmZlclRhbjogWydZb3VyIHBhZ2UsIHByaWNlIGFuZCBudW1iZXInLCAnT24gV2lGaSB0aGVyZSBpcyBubyBuZXR3b3JrIHRvIHJlYWQgdGhlIG51bWJlciBmcm9tLCBzbyB0aGUgdXNlciB0eXBlcyBpdCBoZXJlLCBvbiB5b3VyIG93biBwYWdlLCBiZWZvcmUgdGhlIGhhbmQtb3Zlci4gUHJpY2UsIGludGVydmFsIGFuZCBsZWdhbCBsaW5rcyBzdGF5IGluIHZpZXcuJ10sCiAgICAgIHJlZGlyZWN0OiBbJ0hMUiBsb29rdXAsIHRoZW4gaGFuZC1vdmVyJywgJ091ciBBUEkgY2hlY2tzIHdoaWNoIG9wZXJhdG9yIHRoZSBudW1iZXIgYmVsb25ncyB0byBhbmQgc2VuZHMgdGhlIHVzZXIgdG8gdGhlIHJpZ2h0IG9uZS4gT24gbW9iaWxlIGRhdGEgdGhlIG51bWJlciBpcyB0aGVuIHJlY29nbmlzZWQgYXV0b21hdGljYWxseS4nXSwKICAgICAgbG9naW46IFsnT25lLXRhcCBuZXR3b3JrIGxvZ2luJywgJ1ZvZGFmb25lIHZlcmlmaWVzIHRoZSBwaG9uZSBvdmVyIHRoZSBtb2JpbGUgbmV0d29yay4gTm90aGluZyBpcyB0eXBlZC4nXSwKICAgICAgdGFuOiBbJ1RoZSBvcGVyYXRvciBhc2tzIGZvciB0aGUgY29kZScsICdUaGUgVEFOIHNlbnQgYnkgU01TIGlzIGVudGVyZWQgb24gdGhlIG9wZXJhdG9yIHBhZ2UuIFByaWNlIGFuZCBpbnRlcnZhbCBhcmUgc2hvd24gYWdhaW4uIFRoaXMgaXMgd2hlcmUgdGhlIHNhbGUgaGFwcGVucy4nXSwKICAgICAgY29uZmlybTogWydUaGUgb3BlcmF0b3IgYXNrcycsICdDb250cmFjdCBwYXJ0bmVyLCBzZXJ2aWNlLCBwcmljZSBhbmQgdGVybSwgdGhlbiB0aGUgdXNlciBhY3RpdmVseSBjb25maXJtcy4gVGhpcyBpcyB3aGVyZSB0aGUgc2FsZSBoYXBwZW5zLiddLAogICAgICBzdWNjZXNzOiBbJ1BheW1lbnQgY29uZmlybWVkJywgJ1ZvZGFmb25lIGNvbmZpcm1zIHRoZSBhbW91bnQgYmVmb3JlIGhhbmRpbmcgdGhlIHVzZXIgYmFjay4nXSwKICAgICAgYWNjZXNzOiBbJ1N0cmFpZ2h0IGludG8gdGhlIHNlcnZpY2UnLCAnVGhlIHVzZXIgaXMgYmFjayB3aXRoIHlvdSwgb25lIHRhcCBmcm9tIGFjY2VzcywgYW5kIGNhbiB1bmRvIHRoZSBwdXJjaGFzZSBmcm9tIHRoZSBzYW1lIHNjcmVlbi4nXSwKICAgICAgb2ZmZXJDbGljazogWydZb3VyIHBhZ2UgaXMgdGhlIG9yZGVyIHBhZ2UnLCAnRm9yIG9uZS1vZmYgcHVyY2hhc2VzIFRlbGVrb20gYW5kIFZvZGFmb25lIHNob3cgbm8gb3BlcmF0b3IgcGFnZSwgc28geW91ciBidXR0b24gcGxhY2VzIHRoZSBiaW5kaW5nIG9yZGVyLiBQcmljZSBhbmQgbGVnYWwgbGlua3Mgc2l0IHJpZ2h0IG5leHQgdG8gaXQuJ10sCiAgICAgIG9mZmVyVGFuUDogWydZb3VyIHBhZ2UsIHByaWNlIGFuZCBudW1iZXInLCAnT24gV2lGaSB0aGVyZSBpcyBubyBuZXR3b3JrIHRvIHJlYWQgdGhlIG51bWJlciBmcm9tLCBzbyB0aGUgdXNlciB0eXBlcyBpdCBoZXJlLCBvbiB5b3VyIG93biBwYWdlLiBUaGUgb3BlcmF0b3IgdGhlbiBzZW5kcyBhIFBJTiBieSBTTVMuJ10sCiAgICAgIGlkZW50aWZ5OiBbJ1NpbGVudCBpZGVudGlmaWNhdGlvbicsICdUaGUgYnJvd3NlciBwYXNzZXMgYnJpZWZseSB0aHJvdWdoIG91ciBnYXRld2F5IGFuZCB0aGUgb3BlcmF0b3IgcmVjb2duaXNlcyB0aGUgdXNlciBmcm9tIHRoZSBtb2JpbGUgZGF0YSBjb25uZWN0aW9uLiBOb3RoaW5nIGlzIHR5cGVkLiBUaGlzIHN0ZXAgaXMgdGhlIHNhbWUgZm9yIGV2ZXJ5IG9wZXJhdG9yLiddLAogICAgICBpZGVudGlmeVQ6ICcgVGVsZWtvbSB0aGVuIGJvb2tzIHRoZSBhbW91bnQgZGlyZWN0bHksIHdpdGggbm8gb3BlcmF0b3IgcGFnZS4nLAogICAgICBpZGVudGlmeVY6ICcgVm9kYWZvbmUgdGhlbiByZXNlcnZlcyB0aGUgYW1vdW50IGZvciBwcmVwYWlkIHVzZXJzIG9yIGJvb2tzIGl0IGZvciBwb3N0cGFpZCB1c2Vycywgd2l0aCBubyBvcGVyYXRvciBwYWdlLicsCiAgICAgIGlkZW50aWZ5TzogJyBUZWxlZsOzbmljYSB0aGVuIGFza3MgZm9yIGl0cyBvd24gY29uZmlybWF0aW9uIHBhZ2UuJywKICAgICAgcHRhbjogWydUaGUgUElOLCBvbiB5b3VyIHBhZ2UnLCAnVGhlIHVzZXIgZW50ZXJzIHRoZSBQSU4gZnJvbSB0aGUgU01TIG9uIHlvdXIgb3duIHBhZ2UuIFRlbGVrb20gYW5kIFZvZGFmb25lIHNob3cgbm8gb3BlcmF0b3IgcGFnZSBpbiB0aGlzIGZsb3cuIFRoZSBidXR0b24gcGxhY2VzIHRoZSBiaW5kaW5nIG9yZGVyLiddLAogICAgICByZWRpcmVjdE8yOiBbJ1RlbGVmw7NuaWNhIHdhbnRzIGl0cyBvd24gcGFnZScsICdUaGUgZ2F0ZXdheSByZXR1cm5zIGEgcmVkaXJlY3QgVVJMIGFuZCB0aGUgdXNlciBpcyBzZW50IHRvIG8yIHRvIGF1dGhvcmlzZS4gbzIgbWF5IHdhaXZlIHRoaXMgZm9yIHNob3BzIGl0IHRydXN0cywgc28gdGhlIGludGVncmF0aW9uIGNoZWNrcyBmb3IgYSByZWRpcmVjdCB3aXRoIGV2ZXJ5IG9wZXJhdG9yLiddCiAgICB9LAogICAgZGU6IHsKICAgICAgYWQ6IFsnRGFzIEJhbm5lciBzdGFydGV0IGRlbiBLYXVmJywgJ0VpbmUgU3BpZWxlLUFuemVpZ2UgaW4gZWluZW0gTmV3cy1GZWVkLiBFaW4gVGlwcCBmw7xocnQgZGlyZWt0IGluIGRlbiBTaG9wIGltIFNwaWVsLCBvaG5lIEtvbnRvIHVuZCBvaG5lIEthcnRlLiddLAogICAgICBzaG9wOiBbJ1Byb2R1a3Qgd8OkaGxlbicsICdFaW5tYWxpZ2UgQ29pbi1QYWtldGUgdW5kIGVpbiBWSVAtQWJvIG5lYmVuZWluYW5kZXIuIEJlaWRlcyB3aXJkIMO8YmVyIGRpZSBIYW5keXJlY2hudW5nIGJlemFobHQuJ10sCiAgICAgIG9mZmVyOiBbJ0locmUgU2VpdGUsIElociBQcmVpcycsICdQcm9kdWt0LCBQcmVpcyB1bmQgQWJyZWNobnVuZ3NpbnRlcnZhbGwgYXVmIGVpbmVuIEJsaWNrLiBFaW4gQnV0dG9uLCBkaWUgUGZsaWNodGxpbmtzIGRpcmVrdCBkYXJ1bnRlci4nXSwKICAgICAgb2ZmZXJUYW46IFsnSWhyZSBTZWl0ZSwgUHJlaXMgdW5kIE51bW1lcicsICdJbSBXTEFOIGthbm4gZGllIE51bW1lciBuaWNodCBhdXRvbWF0aXNjaCBnZWxlc2VuIHdlcmRlbi4gRGVyIE51dHplciBnaWJ0IHNpZSBoaWVyIGF1ZiBJaHJlciBTZWl0ZSBlaW4sIHZvciBkZXIgV2VpdGVybGVpdHVuZy4gUHJlaXMsIEludGVydmFsbCB1bmQgUGZsaWNodGxpbmtzIGJsZWliZW4gc2ljaHRiYXIuJ10sCiAgICAgIHJlZGlyZWN0OiBbJ0hMUi1BYmZyYWdlLCBkYW5uIFdlaXRlcmxlaXR1bmcnLCAnVW5zZXJlIEFQSSBwcsO8ZnQsIHp1IHdlbGNoZW0gTmV0emJldHJlaWJlciBkaWUgTnVtbWVyIGdlaMO2cnQsIHVuZCBsZWl0ZXQgenVtIHJpY2h0aWdlbiB3ZWl0ZXIuIEltIE1vYmlsZnVua25ldHogd2lyZCBkaWUgTnVtbWVyIGRhbm4gYXV0b21hdGlzY2ggZXJrYW5udC4nXSwKICAgICAgbG9naW46IFsnTmV0ei1Mb2dpbiBtaXQgZWluZW0gVGlwcCcsICdWb2RhZm9uZSBwcsO8ZnQgZGFzIEdlcsOkdCDDvGJlciBkYXMgTW9iaWxmdW5rbmV0ei4gRXMgbXVzcyBuaWNodHMgZWluZ2VnZWJlbiB3ZXJkZW4uJ10sCiAgICAgIHRhbjogWydEZXIgTmV0emJldHJlaWJlciBmcmFndCBuYWNoIGRlbSBDb2RlJywgJ0RpZSBUQU4gYXVzIGRlciBTTVMgd2lyZCBhdWYgZGVyIFNlaXRlIGRlcyBOZXR6YmV0cmVpYmVycyBlaW5nZWdlYmVuLiBQcmVpcyB1bmQgSW50ZXJ2YWxsIHdlcmRlbiBlcm5ldXQgYW5nZXplaWd0LiBIaWVyIHdpcmQgZGVyIEthdWYgYXVzZ2Vsw7ZzdC4nXSwKICAgICAgY29uZmlybTogWydEZXIgTmV0emJldHJlaWJlciBmcmFndCBuYWNoJywgJ1ZlcnRyYWdzcGFydG5lciwgRGllbnN0LCBQcmVpcyB1bmQgTGF1ZnplaXQsIGRhbm4gYmVzdMOkdGlndCBkZXIgTnV0emVyIGFrdGl2LiBIaWVyIHdpcmQgZGVyIEthdWYgYXVzZ2Vsw7ZzdC4nXSwKICAgICAgc3VjY2VzczogWydaYWhsdW5nIGJlc3TDpHRpZ3QnLCAnVm9kYWZvbmUgYmVzdMOkdGlndCBkZW4gQmV0cmFnLCBiZXZvciBkZXIgTnV0emVyIHp1csO8Y2tnZWxlaXRldCB3aXJkLiddLAogICAgICBhY2Nlc3M6IFsnRGlyZWt0IHp1bSBEaWVuc3QnLCAnRGVyIE51dHplciBpc3QgenVyw7xjayBiZWltIEFuYmlldGVyLCBlaW5lbiBUaXBwIHZvbSBadWdhbmcgZW50ZmVybnQuJ10sCiAgICAgIG9mZmVyQ2xpY2s6IFsnSWhyZSBTZWl0ZSBpc3QgZGllIEJlc3RlbGxzZWl0ZScsICdCZWkgRWlubWFsa8OkdWZlbiB6ZWlnZW4gVGVsZWtvbSB1bmQgVm9kYWZvbmUga2VpbmUgZWlnZW5lIFNlaXRlLiBJaHIgQnV0dG9uIGzDtnN0IGRpZSB2ZXJiaW5kbGljaGUgQmVzdGVsbHVuZyBhdXMsIFByZWlzIHVuZCBQZmxpY2h0bGlua3Mgc3RlaGVuIGRpcmVrdCBkYW5lYmVuLiddLAogICAgICBvZmZlclRhblA6IFsnSWhyZSBTZWl0ZSwgUHJlaXMgdW5kIE51bW1lcicsICdJbSBXTEFOIGthbm4gZGllIE51bW1lciBuaWNodCBhdXRvbWF0aXNjaCBnZWxlc2VuIHdlcmRlbi4gRGVyIE51dHplciBnaWJ0IHNpZSBoaWVyIGF1ZiBJaHJlciBTZWl0ZSBlaW4uIERlciBOZXR6YmV0cmVpYmVyIHNjaGlja3QgZGFubiBlaW5lIFBJTiBwZXIgU01TLiddLAogICAgICBpZGVudGlmeTogWydTdGlsbGUgSWRlbnRpZml6aWVydW5nJywgJ0RlciBCcm93c2VyIGzDpHVmdCBrdXJ6IMO8YmVyIHVuc2VyIEdhdGV3YXksIHVuZCBkZXIgTmV0emJldHJlaWJlciBlcmtlbm50IGRlbiBOdXR6ZXIgYW4gZGVyIG1vYmlsZW4gRGF0ZW52ZXJiaW5kdW5nLiBFcyB3aXJkIG5pY2h0cyBlaW5nZWdlYmVuLiBEaWVzZXIgU2Nocml0dCBpc3QgYmVpIGFsbGVuIE5ldHpiZXRyZWliZXJuIGdsZWljaC4nXSwKICAgICAgaWRlbnRpZnlUOiAnIFRlbGVrb20gYnVjaHQgZGVuIEJldHJhZyBkYW5hY2ggZGlyZWt0LCBvaG5lIGVpZ2VuZSBTZWl0ZS4nLAogICAgICBpZGVudGlmeVY6ICcgVm9kYWZvbmUgcmVzZXJ2aWVydCBkZW4gQmV0cmFnIGRhbmFjaCBiZWkgUHJlcGFpZC1LdW5kZW4gb2RlciBidWNodCBpaG4gYmVpIFZlcnRyYWdza3VuZGVuLCBvaG5lIGVpZ2VuZSBTZWl0ZS4nLAogICAgICBpZGVudGlmeU86ICcgVGVsZWbDs25pY2EgdmVybGFuZ3QgZGFuYWNoIGVpbmUgZWlnZW5lIEJlc3TDpHRpZ3VuZ3NzZWl0ZS4nLAogICAgICBwdGFuOiBbJ0RpZSBQSU4gYXVmIElocmVyIFNlaXRlJywgJ0RlciBOdXR6ZXIgZ2lidCBkaWUgUElOIGF1cyBkZXIgU01TIGF1ZiBJaHJlciBlaWdlbmVuIFNlaXRlIGVpbi4gVGVsZWtvbSB1bmQgVm9kYWZvbmUgemVpZ2VuIGluIGRpZXNlbSBBYmxhdWYga2VpbmUgZWlnZW5lIFNlaXRlLiBEZXIgQnV0dG9uIGzDtnN0IGRpZSB2ZXJiaW5kbGljaGUgQmVzdGVsbHVuZyBhdXMuJ10sCiAgICAgIHJlZGlyZWN0TzI6IFsnVGVsZWbDs25pY2EgdmVybGFuZ3QgZWluZSBlaWdlbmUgU2VpdGUnLCAnRGFzIEdhdGV3YXkgbGllZmVydCBlaW5lIFdlaXRlcmxlaXR1bmdzLVVSTCwgdW5kIGRlciBOdXR6ZXIgYmVzdMOkdGlndCBiZWkgbzIuIG8yIGthbm4gZGFyYXVmIGJlaSB2ZXJ0cmF1ZW5zd8O8cmRpZ2VuIFNob3BzIHZlcnppY2h0ZW4sIGRhaGVyIHByw7xmdCBkaWUgSW50ZWdyYXRpb24gYmVpIGplZGVtIE5ldHpiZXRyZWliZXIgYXVmIGVpbmUgV2VpdGVybGVpdHVuZy4nXQogICAgfQogIH07CiAgdmFyIFVJID0gewogICAgZW46IHsgZWI6ICdEaXJlY3QgQ2FycmllciBCaWxsaW5nIMK3IEdlcm1hbnknLCB0aXRsZTogJ1BheSB3aXRoIHRoZSBwaG9uZSBiaWxsOiB0cnkgdGhlIGZsb3cnLCBpbnRybzogJ0NsaWNrIHRocm91Z2ggYSByZWFsIEdlcm1hbiBwYXltZW50IGZsb3csIGZyb20gYmFubmVyIHRvIGFjY2Vzcy4gU3dpdGNoIHByb2R1Y3QsIG9wZXJhdG9yIGFuZCBuZXR3b3JrIHRvIHNlZSBlYWNoIHZhcmlhbnQuJywgc3RlcDogJ1N0ZXAgJTEgb2YgJTInLCBwcm9kdWN0OiAnUHJvZHVjdCcsIGNhcnJpZXI6ICdDYXJyaWVyJywgbmV0d29yazogJ05ldHdvcmsnLCBtb2JpbGU6ICdNb2JpbGUgZGF0YScsIHdpZmk6ICdXaUZpIMK3IFRBTicsIG5leHQ6ICdOZXh0JywgYmFjazogJ0JhY2snLCByZXN0YXJ0OiAnUmVzdGFydCcsIGZvb3Q6ICdUYXAgdGhlIHBob25lIG9yIHVzZSBOZXh0LiBUaGUgcGhvbmUgc2NyZWVucyBhcmUgc2hvd24gaW4gR2VybWFuLCBhcyB1c2VycyBzZWUgdGhlbS4nLCBtZDogJ21vYmlsZSBkYXRhJywgd3Q6ICdXaUZpLCBXRUIgVEFOJywgb25lb2ZmOiAnb25lLW9mZicsIHBlcjogeyBXb2NoZTogJ3dlZWsnLCBNb25hdDogJ21vbnRoJyB9IH0sCiAgICBkZTogeyBlYjogJ0RpcmVjdCBDYXJyaWVyIEJpbGxpbmcgwrcgRGV1dHNjaGxhbmQnLCB0aXRsZTogJ0JlemFobGVuIMO8YmVyIGRpZSBIYW5keXJlY2hudW5nOiBBYmxhdWYgdGVzdGVuJywgaW50cm86ICdLbGlja2VuIFNpZSBzaWNoIGR1cmNoIGVpbmVuIGVjaHRlbiBkZXV0c2NoZW4gQmV6YWhsYWJsYXVmLCB2b20gQmFubmVyIGJpcyB6dW0gWnVnYW5nLiBXZWNoc2VsbiBTaWUgUHJvZHVrdCwgTmV0emJldHJlaWJlciB1bmQgVmVyYmluZHVuZywgdW0gamVkZSBWYXJpYW50ZSB6dSBzZWhlbi4nLCBzdGVwOiAnU2Nocml0dCAlMSB2b24gJTInLCBwcm9kdWN0OiAnUHJvZHVrdCcsIGNhcnJpZXI6ICdOZXR6JywgbmV0d29yazogJ1ZlcmJpbmR1bmcnLCBtb2JpbGU6ICdNb2JpbGZ1bmsnLCB3aWZpOiAnV0xBTiDCtyBUQU4nLCBuZXh0OiAnV2VpdGVyJywgYmFjazogJ1p1csO8Y2snLCByZXN0YXJ0OiAnTmV1IHN0YXJ0ZW4nLCBmb290OiAnVGlwcGVuIFNpZSBhdWYgZGFzIEhhbmR5IG9kZXIgbnV0emVuIFNpZSDigJ5XZWl0ZXLigJwuJywgbWQ6ICdNb2JpbGZ1bmsnLCB3dDogJ1dMQU4sIFdFQi1UQU4nLCBvbmVvZmY6ICdlaW5tYWxpZycsIHBlcjogeyBXb2NoZTogJ1dvY2hlJywgTW9uYXQ6ICdNb25hdCcgfSB9CiAgfTsKCiAgdmFyIFMgPSB7IGxhbmc6ICdlbicsIHBhY2s6ICc1NTAnLCBtbm86ICd0ZWxla29tJywgbW9kZTogJ2NsaWNrJywgaTogMCwgbnVtOiAnJywgdGFuOiAnJyB9OwogIHZhciB0aW1lciA9IG51bGwsIHNtc1RpbWVyID0gbnVsbDsKICBmdW5jdGlvbiBzbXNJZHgoKSB7IHZhciBsID0gbGlzdCgpLCBqID0gbC5pbmRleE9mKCdzdWNjZXNzJyk7IHJldHVybiBqID4gLTEgPyBqIDogbC5pbmRleE9mKCdhY2Nlc3MnKTsgfQoKICBmdW5jdGlvbiBsaXN0KCkgeyByZXR1cm4gKHBrKCkuc3ViID8gRkxPV1MgOiBPVFApW1MubW5vXVtTLm1vZGVdOyB9CiAgZnVuY3Rpb24ga2luZCgpIHsgcmV0dXJuIGxpc3QoKVtTLmldOyB9CiAgZnVuY3Rpb24gcGsoKSB7IGZvciAodmFyIGogPSAwOyBqIDwgUEFDS1MubGVuZ3RoOyBqKyspIGlmIChQQUNLU1tqXS5pZCA9PT0gUy5wYWNrKSByZXR1cm4gUEFDS1Nbal07IH0KICBmdW5jdGlvbiBzZXQocCkgeyBmb3IgKHZhciBrIGluIHApIFNba10gPSBwW2tdOyByZW5kZXIoKTsgfQogIGZ1bmN0aW9uIGdvKGkpIHsKICAgIGNsZWFyVGltZW91dCh0aW1lcik7CiAgICB2YXIgbiA9IE1hdGgubWF4KDAsIE1hdGgubWluKGksIGxpc3QoKS5sZW5ndGggLSAxKSk7CiAgICB2YXIgbmsgPSBsaXN0KClbbl07CiAgICBpZiAobiA+IFMuaSAmJiAobiA9PT0gc21zSWR4KCkgfHwgbmsgPT09ICd0YW4nIHx8IG5rID09PSAncHRhbicpKSB7CiAgICAgIGNsZWFyVGltZW91dChzbXNUaW1lcik7CiAgICAgIFMuc21zID0gbiA9PT0gc21zSWR4KCkgPyAnb2snIDogJ3Bpbic7IFMuc21zTmV3ID0gdHJ1ZTsKICAgICAgc21zVGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgc2V0KHsgc21zOiBmYWxzZSB9KTsgfSwgNjAwMCk7CiAgICB9IGVsc2UgaWYgKG4gIT09IFMuaSkgeyBjbGVhclRpbWVvdXQoc21zVGltZXIpOyBTLnNtcyA9IGZhbHNlOyB9CiAgICBzZXQoeyBpOiBuIH0pOwogICAgaWYgKG5rID09PSAncmVkaXJlY3QnKSB0aW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBnbyhuICsgMSk7IH0sIDE2MDApOwogICAgaWYgKG5rID09PSAnaWRlbnRpZnknKSB0aW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBnbyhuICsgMSk7IH0sIDIyMDApOwoKICB9CiAgZnVuY3Rpb24gcmVzdGFydChwKSB7IGNsZWFyVGltZW91dCh0aW1lcik7IGNsZWFyVGltZW91dChzbXNUaW1lcik7IHAgPSBwIHx8IHt9OyBwLnNtcyA9IGZhbHNlOyBwLmkgPSAwOyBwLm51bSA9ICcnOyBwLnRhbiA9ICcnOyBzZXQocCk7IH0KICBmdW5jdGlvbiBudW1TdGVwKCkgeyByZXR1cm4ga2luZCgpID09PSAnb2ZmZXInICYmIFMubW9kZSA9PT0gJ3Rhbic7IH0KICBmdW5jdGlvbiBhZHZhbmNlKCkgewogICAgdmFyIGxlbiA9IE1OT1NbUy5tbm9dLnRhbkxlbjsKICAgIGlmIChudW1TdGVwKCkgJiYgUy5udW0ubGVuZ3RoIDwgMTEpIHJldHVybiBzZXQoeyBudW06ICcxNTE2NzE0MjI0MicgfSk7CiAgICBpZiAoKGtpbmQoKSA9PT0gJ3RhbicgfHwga2luZCgpID09PSAncHRhbicpICYmIFMudGFuLmxlbmd0aCA8IGxlbikgcmV0dXJuIHNldCh7IHRhbjogJzQ0MzIxJy5zbGljZSgwLCBsZW4pIH0pOwogICAgZ28oUy5pICsgMSk7CiAgfQogIGZ1bmN0aW9uIHByZXNzKHYpIHsKICAgIHZhciBsZW4gPSBNTk9TW1MubW5vXS50YW5MZW47CiAgICBpZiAoa2luZCgpICE9PSAndGFuJyAmJiBraW5kKCkgIT09ICdwdGFuJykgcmV0dXJuOwogICAgaWYgKHYgPT09ICdkZWwnKSBzZXQoeyB0YW46IFMudGFuLnNsaWNlKDAsIC0xKSB9KTsKICAgIGVsc2UgaWYgKFMudGFuLmxlbmd0aCA8IGxlbikgc2V0KHsgdGFuOiBTLnRhbiArIHYgfSk7CiAgfQoKICBmdW5jdGlvbiBjb2luKHN6KSB7IHJldHVybiAnPHNwYW4gY2xhc3M9ImNvaW4iIHN0eWxlPSJ3aWR0aDonICsgc3ogKyAncHg7aGVpZ2h0OicgKyBzeiArICdweDtmb250LXNpemU6JyArIE1hdGgucm91bmQoc3ogKiAuNDIpICsgJ3B4Ij7imIU8L3NwYW4+JzsgfQogIGZ1bmN0aW9uIGNvaW5zKHN6LCBvKSB7IHJldHVybiAnPHNwYW4gc3R5bGU9ImRpc3BsYXk6ZmxleCI+JyArIGNvaW4oc3opICsgJzxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDotJyArIG8gKyAncHg7bWFyZ2luLXRvcDotJyArIE1hdGgucm91bmQobyAqIC42KSArICdweCI+JyArIGNvaW4oc3opICsgJzwvc3Bhbj48c3BhbiBzdHlsZT0ibWFyZ2luLWxlZnQ6LScgKyBvICsgJ3B4Ij4nICsgY29pbihzeikgKyAnPC9zcGFuPjwvc3Bhbj4nOyB9CiAgZnVuY3Rpb24gcGxhbmV0KHN6LCByLCBiKSB7IHJldHVybiAnPHNwYW4gY2xhc3M9InBsYSIgc3R5bGU9InJpZ2h0OicgKyByICsgJ3B4O2JvdHRvbTonICsgYiArICdweDt3aWR0aDonICsgc3ogKyAncHg7aGVpZ2h0OicgKyBzeiArICdweCI+PC9zcGFuPjxzcGFuIGNsYXNzPSJyaW5nIiBzdHlsZT0icmlnaHQ6JyArIChyIC0gc3ogKiAuMjUpICsgJ3B4O2JvdHRvbTonICsgKGIgKyBzeiAqIC40MikgKyAncHg7d2lkdGg6JyArIHN6ICogMS41ICsgJ3B4O2hlaWdodDonICsgc3ogKiAuMjIgKyAncHgiPjwvc3Bhbj4nOyB9CiAgZnVuY3Rpb24gdGl0bGUocykgeyByZXR1cm4gJzxzcGFuIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDonICsgTWF0aC5yb3VuZChzICogLjEyKSArICdweCI+PHNwYW4gY2xhc3M9ImdvbGQiIHN0eWxlPSJmb250LXNpemU6JyArIHMgKyAncHgiPlN0YXJmYWxsPC9zcGFuPjxzcGFuIGNsYXNzPSJhcmVuYSIgc3R5bGU9ImZvbnQtc2l6ZTonICsgTWF0aC5yb3VuZChzICogLjMpICsgJ3B4Ij5BcmVuYTwvc3Bhbj48L3NwYW4+JzsgfQogIGZ1bmN0aW9uIGdycChkKSB7IHJldHVybiBkLnJlcGxhY2UoLyhcZHs0fSkoPz1cZCkvLCAnJDEgJykucmVwbGFjZSgvXihcZHs0fSBcZHszfSkoPz1cZCkvLCAnJDEgJyk7IH0KICBmdW5jdGlvbiBrZXlwYWQoKSB7CiAgICB2YXIgayA9IFsnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycsICc4JywgJzknLCAnJywgJzAnLCAnZGVsJ10sIGggPSAnPGRpdiBjbGFzcz0ia3AiPic7CiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGsubGVuZ3RoOyBqKyspIGggKz0ga1tqXSA9PT0gJycgPyAnPHNwYW4+PC9zcGFuPicgOiAnPGJ1dHRvbiBkYXRhLWE9ImtleSIgZGF0YS12PSInICsga1tqXSArICciPicgKyAoa1tqXSA9PT0gJ2RlbCcgPyAn4oyrJyA6IGtbal0pICsgJzwvYnV0dG9uPic7CiAgICByZXR1cm4gaCArICc8L2Rpdj4nOwogIH0KICBmdW5jdGlvbiB6YWhsKGJpZykgewogICAgcmV0dXJuICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo5cHgiPjxkaXYgY2xhc3M9ImV1IicgKyAoYmlnID8gJycgOiAnIHN0eWxlPSJ3aWR0aDoyMnB4O2hlaWdodDozMnB4O2JvcmRlci1jb2xvcjojRTk1ODBDO2ZvbnQtc2l6ZToxMnB4IicpICsgJz7igqw8L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTpMYXRvLHNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MS4xNCI+PGRpdiBzdHlsZT0iZm9udC13ZWlnaHQ6OTAwO2ZvbnQtc2l6ZTonICsgKGJpZyA/IDE3IDogMTQpICsgJ3B4O2NvbG9yOicgKyAoYmlnID8gJyM4YThhOTQnIDogJyNFOTU4MEMnKSArICciPlphaGwgZWluZmFjaDwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtd2VpZ2h0OjUwMDtmb250LXNpemU6JyArIChiaWcgPyAxMi41IDogMTAuNSkgKyAncHg7Y29sb3I6IzhhOGE5NCI+cGVyIEhhbmR5cmVjaG51bmc8L2Rpdj48L2Rpdj48L2Rpdj4nOwogIH0KCiAgZnVuY3Rpb24gc2NyZWVuKCkgewogICAgdmFyIGsgPSBraW5kKCksIG0gPSBNTk9TW1MubW5vXSwgcCA9IHBrKCk7CiAgICB2YXIgY2hhcmdlID0gcC5zdWIgPyBwLnByaWNlICsgJyBwcm8gJyArIHAucGVyICsgJyAoQWJvbm5lbWVudCknIDogcC5wcmljZSArICcgKEVpbm1hbHphaGx1bmcpJzsKICAgIHZhciBwbGFpbiA9IFMubnVtLmxlbmd0aCA+PSA2ID8gJys0OSAnICsgZ3JwKFMubnVtKSA6ICcrNDkgMTUxNiA3MTQgMjI0Mic7CiAgICBpZiAoayA9PT0gJ2FkJykgcmV0dXJuICc8ZGl2IGNsYXNzPSJwZyIgc3R5bGU9ImJhY2tncm91bmQ6I2YzZjNmNSI+JyArCiAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3BhZGRpbmc6MTRweCAxOHB4O2JhY2tncm91bmQ6I2ZmZjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTZlNmVhIj48c3BhbiBzdHlsZT0iZm9udDo3MDAgMTlweC8xIExhdG8sc2Fucy1zZXJpZiI+VGFnZXNibGljazwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udDo0MDAgMTJweCBJbnRlcixzYW5zLXNlcmlmO2NvbG9yOiM4YThhOTQiPlNwb3J0IMK3IEt1bHR1ciDCtyBEaWdpdGFsPC9zcGFuPjwvZGl2PicgKwogICAgICAnPGRpdiBzdHlsZT0icGFkZGluZzoxOHB4IDE4cHggOHB4O2JhY2tncm91bmQ6I2ZmZiI+PGRpdiBzdHlsZT0iZm9udDo1MDAgMTAuNXB4LzEgSW50ZXIsc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzouMWVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtjb2xvcjojOGE4YTk0Ij5EaWdpdGFsPC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luLXRvcDo4cHg7Zm9udDo2MDAgMTlweC8xLjMgSW50ZXIsc2Fucy1zZXJpZiI+RGllIG1laXN0Z2VzcGllbHRlbiBNb2JpbGUgR2FtZXMgaW0gSGVyYnN0PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOjE0cHggMCA2cHg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6OHB4Ij48c3BhbiBjbGFzcz0iYmFyIj48L3NwYW4+PHNwYW4gY2xhc3M9ImJhciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJiYXIiIHN0eWxlPSJ3aWR0aDo3MCUiPjwvc3Bhbj48L2Rpdj48L2Rpdj4nICsKICAgICAgJzxkaXYgc3R5bGU9Im1hcmdpbjoxNHB4IDE0cHggMDtib3JkZXItcmFkaXVzOjEycHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6IzE1MTIyYjtjb2xvcjojZmZmO2JveC1zaGFkb3c6MCA2cHggMjBweCByZ2JhKDIxLDE4LDQzLC4xOCkiPicgKwogICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3BhZGRpbmc6OHB4IDEycHg7Zm9udDo1MDAgOS41cHgvMSBJbnRlcixzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi4xMmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtjb2xvcjojYTlhM2Q2Ij48c3Bhbj5BbnplaWdlPC9zcGFuPjxzcGFuPlN0YXJmYWxsIEFyZW5hPC9zcGFuPjwvZGl2PicgKwogICAgICAnPGRpdiBjbGFzcz0ic3RhcnMiIHN0eWxlPSJhc3BlY3QtcmF0aW86Ni81O3BhZGRpbmc6MjJweCAyMHB4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW4iPicgKyBwbGFuZXQoMTkwLCAtNTAsIC02MCkgKyB0aXRsZSg1MCkgKwogICAgICAnPHNwYW4gc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjE4cHg7dG9wOjIwcHg7dHJhbnNmb3JtOnJvdGF0ZSg4ZGVnKTtwYWRkaW5nOjEwcHggMTJweDtib3JkZXItcmFkaXVzOjEwcHg7YmFja2dyb3VuZDojZmZjMjNkO2NvbG9yOiMxYTE1MzA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjNweDtib3gtc2hhZG93OjAgNnB4IDE4cHggcmdiYSgwLDAsMCwuNCkiPjxzcGFuIHN0eWxlPSJmb250OjkwMCAyMHB4LzEgTGF0byxzYW5zLXNlcmlmIj41NTA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQ6NzAwIDEwcHgvMSBMYXRvLHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LjE0ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlIj5Db2luczwvc3Bhbj48L3NwYW4+JyArCiAgICAgICc8c3BhbiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtZW5kO2dhcDoxNHB4Ij4nICsgY29pbnMoNDQsIDE2KSArICc8c3BhbiBzdHlsZT0iZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6NXB4Ij48c3BhbiBzdHlsZT0iZm9udDo3MDAgMTFweC8xIExhdG8sc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzouMTZlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Y29sb3I6I2NmYzhmZiI+TmV1OiBWSVAtUGFzczwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udDo5MDAgMTdweC8xLjEgTGF0byxzYW5zLXNlcmlmIj5hYiAyLDk5IOKCrCBwcm8gV29jaGU8L3NwYW4+PC9zcGFuPjwvc3Bhbj48L2Rpdj4nICsKICAgICAgJzxkaXYgc3R5bGU9InBhZGRpbmc6MTRweCAxNHB4IDE2cHg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MTBweCI+PGRpdiBzdHlsZT0iZm9udDo2MDAgMTdweC8xLjI1IEludGVyLHNhbnMtc2VyaWYiPjU1MCBDb2lucyBmw7xyIDQsOTkg4oKsPC9kaXY+PGRpdiBzdHlsZT0iZm9udDo0MDAgMTIuNXB4LzEuNDUgSW50ZXIsc2Fucy1zZXJpZjtjb2xvcjojYzljNWVhIj5Db2lucyBvZGVyIFZJUC1QYXNzLCBvaG5lIEtyZWRpdGthcnRlLiBFaW5mYWNoIMO8YmVyIGRpZSBIYW5keXJlY2hudW5nIGJlemFobGVuLjwvZGl2PicgKwogICAgICAnPGJ1dHRvbiBkYXRhLWE9Im5leHQiIHN0eWxlPSJwYWRkaW5nOjE0cHg7bWluLWhlaWdodDo1MHB4O2JvcmRlci1yYWRpdXM6OHB4O2JvcmRlcjowO2JhY2tncm91bmQ6I2ZmYzIzZDtjb2xvcjojMWExNTMwO2ZvbnQ6NjAwIDE1cHggSW50ZXIsc2Fucy1zZXJpZiI+SmV0enQgQ29pbnMgaG9sZW48L2J1dHRvbj48L2Rpdj48L2Rpdj4nICsKICAgICAgJzxkaXYgc3R5bGU9InBhZGRpbmc6MThweDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo4cHgiPjxzcGFuIGNsYXNzPSJiYXIiIHN0eWxlPSJiYWNrZ3JvdW5kOiNlM2UzZTgiPjwvc3Bhbj48c3BhbiBjbGFzcz0iYmFyIiBzdHlsZT0iYmFja2dyb3VuZDojZTNlM2U4O3dpZHRoOjgyJSI+PC9zcGFuPjwvZGl2PjwvZGl2Pic7CgogICAgaWYgKGsgPT09ICdzaG9wJykgewogICAgICB2YXIgYyA9ICcnLCB2ID0gJyc7CiAgICAgIFBBQ0tTLmZvckVhY2goZnVuY3Rpb24gKHEpIHsKICAgICAgICB2YXIgb24gPSBxLmlkID09PSBwLmlkID8gJyBvbicgOiAnJzsKICAgICAgICBpZiAoIXEuc3ViKSBjICs9ICc8YnV0dG9uIGNsYXNzPSJwaycgKyBvbiArICciIGRhdGEtYT0icGljayIgZGF0YS12PSInICsgcS5pZCArICciPjxzcGFuIHN0eWxlPSJ3aWR0aDo0NnB4O2hlaWdodDo0NnB4O2ZsZXg6bm9uZTtib3JkZXItcmFkaXVzOjEwcHg7YmFja2dyb3VuZDpyZ2JhKDI1NSwxOTQsNjEsLjEpO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlciI+JyArIGNvaW4oMzApICsgJzwvc3Bhbj48c3BhbiBzdHlsZT0iZmxleDoxIj48ZGl2IGNsYXNzPSJuIj4nICsgcS5jb2lucyArICcgQ29pbnM8L2Rpdj48ZGl2IGNsYXNzPSJ0Ij4nICsgcS50YWcgKyAnPC9kaXY+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcjIiPicgKyBxLnByaWNlICsgJzwvc3Bhbj48L2J1dHRvbj4nOwogICAgICAgIGVsc2UgdiArPSAnPGJ1dHRvbiBjbGFzcz0icGsnICsgb24gKyAnIiBkYXRhLWE9InBpY2siIGRhdGEtdj0iJyArIHEuaWQgKyAnIj48c3BhbiBjbGFzcz0idmlwIiBzdHlsZT0id2lkdGg6NDZweDtoZWlnaHQ6NDZweCI+VklQPC9zcGFuPjxzcGFuIHN0eWxlPSJmbGV4OjEiPjxkaXYgY2xhc3M9Im4iPicgKyBxLmNvaW5zICsgJzwvZGl2PjxkaXYgY2xhc3M9InQiPicgKyBxLnRhZyArICc8L2Rpdj48L3NwYW4+PHNwYW4gY2xhc3M9InByMiI+JyArIHEucHJpY2UgKyAnLycgKyAocS5wZXIgPT09ICdXb2NoZScgPyAnV28uJyA6ICdNb24uJykgKyAnPC9zcGFuPjwvYnV0dG9uPic7CiAgICAgIH0pOwogICAgICByZXR1cm4gJzxkaXYgY2xhc3M9InBnIiBzdHlsZT0iYmFja2dyb3VuZDojMTUxMjJiO2NvbG9yOiNmZmYiPicgKwogICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3BhZGRpbmc6MTNweCAxOHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjA4KSI+PHNwYW4gc3R5bGU9ImZvbnQ6NzAwIDE2cHgvMSBMYXRvLHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LjA0ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlIj5TdGFyZmFsbCBBcmVuYTwvc3Bhbj48c3BhbiBzdHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O3BhZGRpbmc6NnB4IDEwcHg7Ym9yZGVyLXJhZGl1czoxNHB4O2JhY2tncm91bmQ6cmdiYSgyNTUsMTk0LDYxLC4xNCk7Zm9udDo2MDAgMTIuNXB4LzEgSW50ZXIsc2Fucy1zZXJpZjtjb2xvcjojZmZjMjNkIj48c3BhbiBzdHlsZT0id2lkdGg6MTBweDtoZWlnaHQ6MTBweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOiNmZmMyM2QiPjwvc3Bhbj4xMjA8L3NwYW4+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9InN0YXJzIiBzdHlsZT0iYXNwZWN0LXJhdGlvOjE2Lzc7cGFkZGluZzoxOHB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXIiPicgKyBwbGFuZXQoMTMwLCAtMzAsIC01MCkgKyB0aXRsZSgzNCkgKyAnPC9kaXY+JyArCiAgICAgICAgJzxkaXYgc3R5bGU9InBhZGRpbmc6MTZweCAxNnB4IDIycHgiPjxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpiYXNlbGluZTtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbiI+PHNwYW4gc3R5bGU9ImZvbnQ6NjAwIDE2cHggSW50ZXIsc2Fucy1zZXJpZiI+Q29pbnM8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQ6NDAwIDExLjVweCBJbnRlcixzYW5zLXNlcmlmO2NvbG9yOiNhOWEzZDYiPkVpbm1hbHphaGx1bmc8L3NwYW4+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgc3R5bGU9Im1hcmdpbi10b3A6MTBweDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo4cHgiPicgKyBjICsgJzwvZGl2PicgKwogICAgICAgICc8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOjE2cHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmJhc2VsaW5lO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuIj48c3BhbiBzdHlsZT0iZm9udDo2MDAgMTZweCBJbnRlcixzYW5zLXNlcmlmIj5WSVAtUGFzczwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udDo0MDAgMTEuNXB4IEludGVyLHNhbnMtc2VyaWY7Y29sb3I6I2E5YTNkNiI+QWJvLCBqZWRlcnplaXQga8O8bmRiYXI8L3NwYW4+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgc3R5bGU9Im1hcmdpbi10b3A6MTBweDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo4cHgiPicgKyB2ICsgJzwvZGl2PicgKwogICAgICAgICc8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOjE2cHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDo4cHg7Zm9udDo0MDAgMTEuNXB4IEludGVyLHNhbnMtc2VyaWY7Y29sb3I6I2E5YTNkNiI+PHNwYW4gc3R5bGU9IndpZHRoOjE2cHg7aGVpZ2h0OjIycHg7Ym9yZGVyOjEuNXB4IHNvbGlkICNhOWEzZDY7Ym9yZGVyLXJhZGl1czozcHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZvbnQ6OTAwIDEwcHggTGF0byxzYW5zLXNlcmlmO2NvbG9yOiNmZmMyM2QiPuKCrDwvc3Bhbj5CZXphaGx1bmcgcGVyIEhhbmR5cmVjaG51bmc8L2Rpdj48L2Rpdj48L2Rpdj4nOwogICAgfQoKICAgIGlmIChrID09PSAnb2ZmZXInKSB7CiAgICAgIHZhciBhc2sgPSBudW1TdGVwKCk7CiAgICAgIHZhciBjdGEgPSAhcC5zdWIgJiYgUy5tbm8gIT09ICdvMicgPyAoUy5tb2RlID09PSAndGFuJyA/ICdQSU4gYW5mb3JkZXJuJyA6ICdaYWhsdW5nc3BmbGljaHRpZyBiZXN0ZWxsZW4nKSA6IG0ub2ZmZXJDdGE7CiAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0icGciPjxkaXYgY2xhc3M9Im1oIj48aT48L2k+U3RhcmZhbGwgQXJlbmE8L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0ic3RhcnMiIHN0eWxlPSJhc3BlY3QtcmF0aW86MTYvMTA7cGFkZGluZzoyMHB4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW4iPicgKyBwbGFuZXQoMTcwLCAtNDYsIC02MCkgKyB0aXRsZSgzMCkgKwogICAgICAgICc8c3BhbiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTRweCI+JyArIChwLnN1YiA/ICc8c3BhbiBjbGFzcz0idmlwIiBzdHlsZT0id2lkdGg6NzBweDtoZWlnaHQ6NzBweDtib3JkZXItcmFkaXVzOjE2cHg7Ym9yZGVyLXdpZHRoOjJweDtmb250LXNpemU6MjJweDtib3gtc2hhZG93OjAgNnB4IDE4cHggcmdiYSgwLDAsMCwuNCkiPlZJUDwvc3Bhbj4nIDogY29pbnMoNTIsIDIwKSkgKwogICAgICAgICc8c3BhbiBzdHlsZT0iZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6NXB4Ij48c3BhbiBzdHlsZT0iZm9udDo5MDAgMjZweC8xIExhdG8sc2Fucy1zZXJpZjtjb2xvcjojZmZmO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZSI+JyArIChwLnN1YiA/ICdWSVAtUGFzcycgOiBwLmNvaW5zICsgJyBDb2lucycpICsgJzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udDo3MDAgMTFweC8xIExhdG8sc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzouMTZlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Y29sb3I6I2ZmYzIzZCI+JyArIChwLnN1YiA/IHAucHJpY2UgKyAnIHBybyAnICsgcC5wZXIgOiAnRWlubWFsaWcgJyArIHAucHJpY2UpICsgJzwvc3Bhbj48L3NwYW4+PC9zcGFuPjwvZGl2PicgKwogICAgICAgICc8ZGl2IHN0eWxlPSJwYWRkaW5nOjIycHggMjBweCAzNHB4Ij48ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PGRpdiBzdHlsZT0iZm9udDo2MDAgMTlweC8xLjI1IEludGVyLHNhbnMtc2VyaWYiPicgKyAocC5zdWIgPyAnTnVyICcgKyBwLnByaWNlICsgJyBwcm8gJyArIHAucGVyIDogcC5jb2lucyArICcgQ29pbnMgZsO8ciAnICsgcC5wcmljZSkgKyAnPC9kaXY+PGRpdiBjbGFzcz0ibXUiIHN0eWxlPSJtYXJnaW4tdG9wOjNweDtmb250OjQwMCAxNC41cHgvMS40IEludGVyLHNhbnMtc2VyaWYiPicgKyAocC5zdWIgPyBwLmV2ZXJ5ICsgJyBrw7xuZGJhciwga2VpbmUgTWluZGVzdGxhdWZ6ZWl0JyA6ICdFaW5tYWx6YWhsdW5nLCBrZWluIEFibycpICsgJzwvZGl2PjwvZGl2PicgKwogICAgICAgIChhc2sgPyAnPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDoxOHB4O3BhZGRpbmc6MTZweDtib3JkZXItcmFkaXVzOjEwcHg7YmFja2dyb3VuZDojZmFmYWZjO2JvcmRlcjoxcHggc29saWQgI2U2ZTZlYyI+PGRpdiBzdHlsZT0iZm9udDo1MDAgMTMuNXB4LzEuMyBJbnRlcixzYW5zLXNlcmlmIj5IYW5keW51bW1lciBlaW5nZWJlbjwvZGl2PjxwIGNsYXNzPSJtdSIgc3R5bGU9Im1hcmdpbjo2cHggMCAxMnB4O2ZvbnQ6NDAwIDExLjVweC8xLjUgSW50ZXIsc2Fucy1zZXJpZiI+U2llIGJlZmluZGVuIHNpY2ggaW0gV0xBTiwgZGFoZXIga2FubiBJaHJlIE1vYmlsZnVua251bW1lciBuaWNodCBhdXRvbWF0aXNjaCBlcmthbm50IHdlcmRlbi4gU2llIGVyaGFsdGVuIGFuc2NobGllw59lbmQgJyArICghcC5zdWIgJiYgUy5tbm8gIT09ICdvMicgPyAnZWluZSBQSU4nIDogJ2VpbmUgVEFOJykgKyAnIHBlciBTTVMuPC9wPjxkaXYgY2xhc3M9ImZsZCIgc3R5bGU9ImJvcmRlcjoxcHggc29saWQgIzIwQTQ0QiI+PHNwYW4gY2xhc3M9ImNjIj4rNDk8L3NwYW4+PHNwYW4gY2xhc3M9InYiPicgKyBncnAoUy5udW0pICsgJzwvc3Bhbj48c3BhbiBjbGFzcz0iY3VyIiBzdHlsZT0iYmFja2dyb3VuZDojMjBBNDRCIj48L3NwYW4+PC9kaXY+PC9kaXY+JyA6ICcnKSArCiAgICAgICAgJzxidXR0b24gY2xhc3M9ImdidG4iIGRhdGEtYT0ibmV4dCIgc3R5bGU9Im1hcmdpbjoyMHB4IDAgMTRweDtvcGFjaXR5OicgKyAoYXNrICYmIFMubnVtLmxlbmd0aCA8IDYgPyAuNDUgOiAxKSArICciPicgKyBjdGEgKyAnPC9idXR0b24+JyArCiAgICAgICAgJzxwIGNsYXNzPSJtdSIgc3R5bGU9Im1hcmdpbi1ib3R0b206MjRweDtmb250OjQwMCAxMnB4LzEuNiBJbnRlcixzYW5zLXNlcmlmO3RleHQtYWxpZ246Y2VudGVyIj5FcyBnZWx0ZW4gdW5zZXJlIDx1IHN0eWxlPSJjb2xvcjojMGU2YjMwIj5BR0I8L3U+LiBJaG5lbiBzdGVodCBlaW4gZ2VzZXR6bGljaGVzIDx1IHN0eWxlPSJjb2xvcjojMGU2YjMwIj5XaWRlcnJ1ZnNyZWNodDwvdT4genUuPC9wPicgKwogICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTNweDtwYWRkaW5nLXRvcDoyMHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNlY2VjZjAiPicgKyB6YWhsKHRydWUpICsKICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDoxNnB4O2ZsZXgtd3JhcDp3cmFwO2p1c3RpZnktY29udGVudDpjZW50ZXI7Zm9udDo3MDAgMTJweCBMYXRvLHNhbnMtc2VyaWYiPjxzcGFuIHN0eWxlPSJjb2xvcjojRTIwMDc0Ij5UIMK3wrfCtzwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6I0U2MDAwMCI+dm9kYWZvbmU8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiMwMDE5QTUiPlRlbGVmw7NuaWNhPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojNmE5ZTIyIj5mcmVlbmV0PC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pic7CiAgICB9CgogICAgaWYgKGsgPT09ICdpZGVudGlmeScpIHJldHVybiAnPGRpdiBjbGFzcz0icGciIHN0eWxlPSJkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDoxOHB4O3BhZGRpbmc6MCA0MHB4O3RleHQtYWxpZ246Y2VudGVyO21pbi1oZWlnaHQ6NzYwcHgiPjxkaXYgY2xhc3M9InNwaW4iIHN0eWxlPSJib3JkZXItdG9wLWNvbG9yOiMyMEE0NEIiPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQ6NTAwIDE2cHgvMS4zIEludGVyLHNhbnMtc2VyaWYiPicgKyAoUy5tbm8gPT09ICdvMicgPyAnTW9iaWxmdW5rbnVtbWVyIHdpcmQgZXJrYW5udCcgOiAnWmFobHVuZyB3aXJkIHZlcmFyYmVpdGV0JykgKyAnPC9kaXY+PHAgY2xhc3M9Im11IiBzdHlsZT0iZm9udDo0MDAgMTIuNXB4LzEuNTUgSW50ZXIsc2Fucy1zZXJpZiI+SWhyZSBNb2JpbGZ1bmtudW1tZXIgd2lyZCBhdXRvbWF0aXNjaCDDvGJlciBkYXMgTmV0eiBlcmthbm50LiBCaXR0ZSBzY2hsaWXDn2VuIFNpZSBkaWVzZXMgRmVuc3RlciBuaWNodC48L3A+PGRpdiBzdHlsZT0ibWFyZ2luLXRvcDo4cHg7Zm9udDo0MDAgMTAuNXB4IEludGVyLHNhbnMtc2VyaWY7Y29sb3I6IzlhOWFhNCI+U2ljaGVyZSBWZXJiaW5kdW5nIMK3IFphaGx1bmdzZ2F0ZXdheTwvZGl2PjwvZGl2Pic7CgogICAgaWYgKGsgPT09ICdwdGFuJykgewogICAgICB2YXIgcGIgPSAnJzsKICAgICAgZm9yICh2YXIgcSA9IDA7IHEgPCBtLnRhbkxlbjsgcSsrKSBwYiArPSAnPGRpdiBjbGFzcz0idGIiIHN0eWxlPSJib3JkZXItY29sb3I6JyArIChxID09PSBTLnRhbi5sZW5ndGggPyAnIzIwQTQ0QicgOiAnI2RlZGVkZicpICsgJyI+JyArIChTLnRhbltxXSB8fCAnJykgKyAnPC9kaXY+JzsKICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJwZyIgc3R5bGU9ImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW4iPjxkaXYgY2xhc3M9Im1oIj48aT48L2k+U3RhcmZhbGwgQXJlbmE8L2Rpdj48ZGl2IHN0eWxlPSJwYWRkaW5nOjIycHggMThweCAyNHB4O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleDoxIj4nICsKICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTJweDtwYWRkaW5nOjEycHg7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6I2ZhZmFmYztib3JkZXI6MXB4IHNvbGlkICNlNmU2ZWMiPicgKyBjb2luKDM0KSArICc8ZGl2IHN0eWxlPSJmbGV4OjEiPjxkaXYgc3R5bGU9ImZvbnQ6NjAwIDE0cHgvMS4yIEludGVyLHNhbnMtc2VyaWYiPicgKyBwLmNvaW5zICsgJyBDb2luczwvZGl2PjxkaXYgY2xhc3M9Im11IiBzdHlsZT0ibWFyZ2luLXRvcDozcHg7Zm9udDo0MDAgMTJweCBJbnRlcixzYW5zLXNlcmlmIj5FaW5tYWx6YWhsdW5nLCBrZWluIEFibzwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQ6NjAwIDE1cHggSW50ZXIsc2Fucy1zZXJpZiI+JyArIHAucHJpY2UgKyAnPC9kaXY+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgc3R5bGU9Im1hcmdpbi10b3A6MjBweDtmb250OjYwMCAxOXB4LzEuMjUgSW50ZXIsc2Fucy1zZXJpZiI+UElOIGVpbmdlYmVuPC9kaXY+PHAgc3R5bGU9Im1hcmdpbjo4cHggMDtmb250OjQwMCAxMi41cHgvMS41NSBJbnRlcixzYW5zLXNlcmlmO2NvbG9yOiM0YjRiNTUiPldpciBoYWJlbiBlaW5lIFNNUyBtaXQgSWhyZXIgUElOIGFuICcgKyBwbGFpbiArICcgZ2VzY2hpY2t0LiBNaXQgZGVyIFBJTiBiZXN0w6R0aWdlbiBTaWUgZGVuIEthdWY6IDxzdHJvbmc+JyArIGNoYXJnZSArICc8L3N0cm9uZz4uPC9wPjxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206MTRweDtmb250OjQwMCAxMS41cHggSW50ZXIsc2Fucy1zZXJpZjtjb2xvcjojOGE4YTk0Ij5EaWUgUElOIGJlc3RlaHQgYXVzICcgKyBtLnRhbkxlbiArICcgWmlmZmVybi48L2Rpdj4nICsKICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDo5cHgiPicgKyBwYiArICc8L2Rpdj48YnV0dG9uIGNsYXNzPSJnYnRuIiBkYXRhLWE9Im5leHQiIHN0eWxlPSJtYXJnaW46MTZweCAwIDhweDtvcGFjaXR5OicgKyAoUy50YW4ubGVuZ3RoID09PSBtLnRhbkxlbiA/IDEgOiAuNDUpICsgJyI+WmFobHVuZ3NwZmxpY2h0aWcgYmVzdGVsbGVuPC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iY2J0biIgZGF0YS1hPSJyZXNldCI+QWJicmVjaGVuPC9idXR0b24+JyArCiAgICAgICAgJzxwIGNsYXNzPSJtdSIgc3R5bGU9Im1hcmdpbi10b3A6MTBweDtmb250OjQwMCAxMS41cHgvMS42IEludGVyLHNhbnMtc2VyaWY7dGV4dC1hbGlnbjpjZW50ZXIiPkVzIGdlbHRlbiB1bnNlcmUgPHUgc3R5bGU9ImNvbG9yOiMwZTZiMzAiPkFHQjwvdT4uIElobmVuIHN0ZWh0IGVpbiBnZXNldHpsaWNoZXMgPHUgc3R5bGU9ImNvbG9yOiMwZTZiMzAiPldpZGVycnVmc3JlY2h0PC91PiB6dS48L3A+PGRpdiBzdHlsZT0ibWFyZ2luLXRvcDphdXRvO3BhZGRpbmctdG9wOjE2cHgiPicgKyBrZXlwYWQoKSArICc8L2Rpdj48L2Rpdj48L2Rpdj4nOwogICAgfQoKICAgIGlmIChrID09PSAncmVkaXJlY3QnKSByZXR1cm4gJzxkaXYgY2xhc3M9InBnIiBzdHlsZT0iZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6MThweDtwYWRkaW5nOjAgNDBweDt0ZXh0LWFsaWduOmNlbnRlcjttaW4taGVpZ2h0Ojc2MHB4Ij48ZGl2IGNsYXNzPSJzcGluIj48L2Rpdj48ZGl2IHN0eWxlPSJmb250OjUwMCAxNnB4LzEuMyBJbnRlcixzYW5zLXNlcmlmIj5XZWl0ZXJsZWl0dW5nIHp1ICcgKyBtLm5hbWUgKyAnPC9kaXY+PHAgY2xhc3M9Im11IiBzdHlsZT0iZm9udDo0MDAgMTIuNXB4LzEuNTUgSW50ZXIsc2Fucy1zZXJpZiI+JyArIChTLm1vZGUgPT09ICdjbGljaycgPyAocC5zdWIgPyAnSWhyZSBNb2JpbGZ1bmtudW1tZXIgd2lyZCB2b20gTmV0eiBhdXRvbWF0aXNjaCBlcmthbm50LiBCaXR0ZSBzY2hsaWXDn2VuIFNpZSBkaWVzZXMgRmVuc3RlciBuaWNodC4nIDogJ1NpZSB3ZXJkZW4genVyIFNlaXRlIElocmVzIE1vYmlsZnVua2FuYmlldGVycyB3ZWl0ZXJnZWxlaXRldCwgdW0gZGllIFphaGx1bmcgenUgYmVzdMOkdGlnZW4uJykgOiAnU2llIHdlcmRlbiB6dXIgU2VpdGUgSWhyZXMgTW9iaWxmdW5rYW5iaWV0ZXJzIHdlaXRlcmdlbGVpdGV0LCB1bSBkaWUgVEFOIGF1cyBkZXIgU01TIGVpbnp1Z2ViZW4uJykgKyAnPC9wPjwvZGl2Pic7CgogICAgaWYgKGsgPT09ICdhY2Nlc3MnKSByZXR1cm4gJzxkaXYgY2xhc3M9InBnIiBzdHlsZT0iZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbiI+PGRpdiBjbGFzcz0ibWgiPjxpPjwvaT5TdGFyZmFsbCBBcmVuYTwvZGl2PicgKwogICAgICAnPGRpdiBjbGFzcz0ic3RhcnMiIHN0eWxlPSJhc3BlY3QtcmF0aW86MTYvMTA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6MTJweCI+JyArIHBsYW5ldCgxNTAsIC01MCwgLTYwKSArICc8c3BhbiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7Zm9udDo3MDAgMTFweC8xIExhdG8sc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzouMmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtjb2xvcjojY2ZjOGZmIj5TdGFyZmFsbCBBcmVuYTwvc3Bhbj48c3BhbiBjbGFzcz0iZ29sZCIgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZTo0MHB4Ij4nICsgKHAuc3ViID8gJ1ZJUCBha3RpdicgOiAnKycgKyBwLmNvaW5zICsgJyBDb2lucycpICsgJzwvc3Bhbj48L2Rpdj4nICsKICAgICAgJzxkaXYgc3R5bGU9InBhZGRpbmc6MjRweCAyMHB4IDMwcHg7dGV4dC1hbGlnbjpjZW50ZXIiPjxkaXYgc3R5bGU9ImZvbnQ6NjAwIDE4cHgvMS4zNSBJbnRlcixzYW5zLXNlcmlmIj5IZXJ6bGljaGVuIEdsw7xja3d1bnNjaC48YnI+SWhyIEthdWYgd2FyIGVyZm9sZ3JlaWNoLjwvZGl2PjxwIGNsYXNzPSJtdSIgc3R5bGU9Im1hcmdpbjoxMnB4IDAgMjBweDtmb250OjQwMCAxM3B4LzEuNTUgSW50ZXIsc2Fucy1zZXJpZiI+JyArCiAgICAgIChwLnN1YiA/ICdJaHIgVklQLVBhc3MgaXN0IGFrdGl2IHVuZCB2ZXJsw6RuZ2VydCBzaWNoICcgKyBwLmV2ZXJ5ICsgJyBmw7xyICcgKyBwLnByaWNlICsgJywgYmlzIFNpZSBrw7xuZGlnZW4uIEtsaWNrZW4gU2llIGF1ZiDigJ5adW0gU3BpZWzigJwsIHVtIHdlaXRlcnp1c3BpZWxlbi4nIDogJ0locmUgJyArIHAuY29pbnMgKyAnIENvaW5zIHdlcmRlbiBJaHJlbSBTcGllbGVya29udG8gZ3V0Z2VzY2hyaWViZW4uIEtsaWNrZW4gU2llIGF1ZiDigJ5adW0gU3BpZWzigJwsIHVtIHdlaXRlcnp1c3BpZWxlbi4nKSArICc8L3A+JyArCiAgICAgICc8YnV0dG9uIGNsYXNzPSJnYnRuIiBkYXRhLWE9InJlc2V0IiBzdHlsZT0iZm9udC1zaXplOjE3cHgiPlp1bSBTcGllbDwvYnV0dG9uPjxwIGNsYXNzPSJtdSIgc3R5bGU9Im1hcmdpbjoyMnB4IDAgOHB4O2ZvbnQ6NDAwIDEycHgvMS41NSBJbnRlcixzYW5zLXNlcmlmIj5XZW5uIFNpZSBkZW4gS2F1ZiByw7xja2fDpG5naWcgbWFjaGVuIG3DtmNodGVuLCBrbGlja2VuIFNpZSBiaXR0ZSBmb2xnZW5kZW4gQnV0dG9uLjwvcD48YnV0dG9uIGRhdGEtYT0icmVzZXQiIHN0eWxlPSJwYWRkaW5nOjhweCA0cHg7YmFja2dyb3VuZDpub25lO2JvcmRlcjowO2NvbG9yOiMwZTZiMzA7Zm9udDo0MDAgMTIuNXB4IEludGVyLHNhbnMtc2VyaWY7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSI+U3Rvcm5pZXJlbjwvYnV0dG9uPjwvZGl2PicgKwogICAgICAnPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDphdXRvO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kO3BhZGRpbmc6MTZweCAyMHB4IDMwcHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2VjZWNmMDtmb250OjQwMCAxMS41cHggSW50ZXIsc2Fucy1zZXJpZjtjb2xvcjojMGU2YjMwIj48c3Bhbj5JbXByZXNzdW08L3NwYW4+PHNwYW4+SGlsZmU8L3NwYW4+PHNwYW4+RGF0ZW5zY2h1dHo8L3NwYW4+PC9kaXY+PC9kaXY+JzsKCiAgICB2YXIgaHIgPSBrID09PSAndGFuJyAmJiBTLm51bS5sZW5ndGggPj0gNiA/IHBsYWluIDogbS5yaWdodCwgaW5uZXIgPSAnJzsKICAgIGlmIChrID09PSAnbG9naW4nKSBpbm5lciA9ICc8ZGl2IHN0eWxlPSJwYWRkaW5nOjI2cHggMThweCAzMHB4Ij48ZGl2IHN0eWxlPSJmb250OjYwMCAxN3B4IEludGVyLHNhbnMtc2VyaWYiPkxvZ2luPC9kaXY+PHAgc3R5bGU9Im1hcmdpbjoxMnB4IDAgMjJweDtmb250OjQwMCAxM3B4LzEuNTUgSW50ZXIsc2Fucy1zZXJpZjtjb2xvcjojNGI0YjU1Ij5EcsO8Y2tlIGRlbiB1bnRlbnN0ZWhlbmRlbiBCdXR0b24gdW0gYXV0b21hdGlzY2ggw7xiZXIgZGFzIE5ldHp3ZXJrIGF1dGhlbnRpZml6aWVydCB6dSB3ZXJkZW4uPC9wPjxidXR0b24gY2xhc3M9Im1idG4iIGRhdGEtYT0ibmV4dCI+V2VpdGVyPC9idXR0b24+PC9kaXY+JzsKICAgIGlmIChrID09PSAndGFuJykgewogICAgICB2YXIgYm94ZXMgPSAnJzsKICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBtLnRhbkxlbjsgaisrKSBib3hlcyArPSAnPGRpdiBjbGFzcz0idGIiPicgKyAoUy50YW5bal0gfHwgJycpICsgJzwvZGl2Pic7CiAgICAgIGlubmVyID0gJzxkaXYgc3R5bGU9InBhZGRpbmc6MjJweCAxOHB4IDI0cHg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4OjEiPjxkaXYgc3R5bGU9ImZvbnQ6NjAwIDE5cHgvMS4yNSBJbnRlcixzYW5zLXNlcmlmIj5CZXN0w6R0aWd1bmdzY29kZSBlaW5nZWJlbjwvZGl2PjxwIHN0eWxlPSJtYXJnaW46OHB4IDA7Zm9udDo0MDAgMTIuNXB4LzEuNTUgSW50ZXIsc2Fucy1zZXJpZjtjb2xvcjojNGI0YjU1Ij5XaXIgaGFiZW4gZWluZSBTTVMgbWl0IGVpbmVtIEJlc3TDpHRpZ3VuZ3Njb2RlIGFuIGZvbGdlbmRlIEhhbmR5bnVtbWVyIGdlc2NoaWNrdDogJyArIHBsYWluICsgJy4gRGFtaXQgYmVzdMOkdGlnZW4gU2llIGRlbiBLYXVmOiAnICsgY2hhcmdlICsgJy48L3A+PGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxNnB4O2ZvbnQ6NDAwIDExLjVweCBJbnRlcixzYW5zLXNlcmlmO2NvbG9yOiM4YThhOTQiPicgKyBtLnRhbkhpbnQgKyAnPC9kaXY+JyArCiAgICAgICAgJzxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6OXB4Ij4nICsgYm94ZXMgKyAnPC9kaXY+PGJ1dHRvbiBjbGFzcz0ibWJ0biIgZGF0YS1hPSJuZXh0IiBzdHlsZT0ibWFyZ2luOjE2cHggMCA4cHg7b3BhY2l0eTonICsgKFMudGFuLmxlbmd0aCA9PT0gbS50YW5MZW4gPyAxIDogLjQ1KSArICciPicgKyBtLm1ub0N0YSArICc8L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJjYnRuIiBkYXRhLWE9InJlc2V0Ij5BYmJyZWNoZW48L2J1dHRvbj48ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOmF1dG87cGFkZGluZy10b3A6MThweCI+JyArIGtleXBhZCgpICsgJzwvZGl2PjwvZGl2Pic7CiAgICB9CiAgICBpZiAoayA9PT0gJ2NvbmZpcm0nKSBpbm5lciA9ICc8ZGl2IHN0eWxlPSJwYWRkaW5nOjIycHggMThweCAyOHB4Ij48c3BhbiBzdHlsZT0iZm9udDo1MDAgMTFweC8xIEludGVyLHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LjA4ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2NvbG9yOiM2YjZiNzYiPlZlcnRyYWdzcGFydG5lciB1bmQgTGVpc3R1bmc8L3NwYW4+PGRpdiBzdHlsZT0ibWFyZ2luLXRvcDoxNHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNlY2VjZjAiPicgKwogICAgICAnPGRpdiBjbGFzcz0ia3YiPjxzcGFuPkFuYmlldGVyPC9zcGFuPjxzcGFuPlN0YXJmYWxsIEdhbWVzIEdtYkgsIEhhbWJ1cmc8L3NwYW4+PC9kaXY+JyArCiAgICAgICc8ZGl2IGNsYXNzPSJrdiI+PHNwYW4+U2VydmljZTwvc3Bhbj48c3Bhbj4nICsgKHAuc3ViID8gJ1N0YXJmYWxsIEFyZW5hICcgKyBwLmNvaW5zICsgJyAoQWJvKScgOiAnU3RhcmZhbGwgQXJlbmEg4oCTICcgKyBwLmNvaW5zICsgJyBDb2lucycpICsgJzwvc3Bhbj48L2Rpdj4nICsKICAgICAgJzxkaXYgY2xhc3M9Imt2Ij48c3Bhbj4nICsgKHAuc3ViID8gJ0Fiby1QcmVpcycgOiAnUHJlaXMnKSArICc8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OjYwMCI+JyArIChwLnN1YiA/IHAucHJpY2UgKyAnIHBybyAnICsgcC5wZXIgKyAnIChpbmtsLiBNd1N0LiknIDogcC5wcmljZSArICcgZWlubWFsaWcgKGlua2wuIE13U3QuKScpICsgJzwvc3Bhbj48L2Rpdj4nICsKICAgICAgJzxkaXYgY2xhc3M9Imt2Ij48c3Bhbj5MYXVmemVpdDwvc3Bhbj48c3Bhbj4nICsgKHAuc3ViID8gJ2JpcyBhdWYgV2lkZXJydWYsICcgKyBwLmV2ZXJ5IDogJ0Vpbm1hbGthdWYsIGtlaW4gQWJvbm5lbWVudCcpICsgJzwvc3Bhbj48L2Rpdj48L2Rpdj4nICsKICAgICAgJzxkaXYgc3R5bGU9Im1hcmdpbi10b3A6MjBweDtwYWRkaW5nLXRvcDoxNHB4O2JvcmRlci10b3A6MnB4IHNvbGlkIHZhcigtLW1iKSI+PGRpdiBzdHlsZT0iZm9udDo1MDAgMTRweC8xLjMgSW50ZXIsc2Fucy1zZXJpZjtjb2xvcjp2YXIoLS1tYikiPjEuIElocmUgQmVzdMOkdGlndW5nPC9kaXY+PHAgc3R5bGU9Im1hcmdpbi10b3A6MTBweDtmb250OjQwMCAxMi41cHgvMS42IEludGVyLHNhbnMtc2VyaWY7Y29sb3I6IzRiNGI1NSI+QmVzdMOkdGlnZW4gU2llIGRpZSBBYnJlY2hudW5nIMO8YmVyIElocmUgTW9iaWxmdW5rbnVtbWVyIGR1cmNoIEtsaWNrIGF1ZiDigJ4nICsgbS5tbm9DdGEgKyAn4oCcOiA8c3Ryb25nPicgKyBjaGFyZ2UgKyAnPC9zdHJvbmc+LjwvcD48L2Rpdj4nICsKICAgICAgJzxidXR0b24gY2xhc3M9Im1idG4iIGRhdGEtYT0ibmV4dCIgc3R5bGU9Im1hcmdpbjoxOHB4IDAgOXB4Ij4nICsgbS5tbm9DdGEgKyAnPC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iY2J0biIgZGF0YS1hPSJyZXNldCI+QWJicmVjaGVuPC9idXR0b24+PC9kaXY+JzsKICAgIGlmIChrID09PSAnc3VjY2VzcycpIGlubmVyID0gJzxkaXYgc3R5bGU9ImZsZXg6MTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDoxMnB4O3BhZGRpbmc6NDBweCAzMHB4O3RleHQtYWxpZ246Y2VudGVyIj48ZGl2IHN0eWxlPSJ3aWR0aDo1NnB4O2hlaWdodDo1NnB4O2JvcmRlci1yYWRpdXM6NTAlO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbWIpO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmb250OjQwMCAyNHB4IEludGVyLHNhbnMtc2VyaWY7Y29sb3I6dmFyKC0tbWIpIj7inJM8L2Rpdj48ZGl2IHN0eWxlPSJmb250OjYwMCAyMXB4LzEuMjUgSW50ZXIsc2Fucy1zZXJpZiI+WmFobHVuZyBlcmZvbGdyZWljaDwvZGl2PjxwIGNsYXNzPSJtdSIgc3R5bGU9ImZvbnQ6NDAwIDEzcHgvMS41NSBJbnRlcixzYW5zLXNlcmlmIj5XaXIgaGFiZW4gRGVpbmUgWmFobHVuZyDDvGJlciAnICsgcC5wcmljZSArICcgZXJoYWx0ZW4uPC9wPjxidXR0b24gY2xhc3M9Im1idG4iIGRhdGEtYT0ibmV4dCIgc3R5bGU9Im1hcmdpbi10b3A6MThweDtib3JkZXItcmFkaXVzOjI2cHgiPldlaXRlcjwvYnV0dG9uPjwvZGl2Pic7CiAgICByZXR1cm4gJzxkaXYgY2xhc3M9InBnIiBzdHlsZT0iZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbiI+PGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6MTJweDtwYWRkaW5nOjEzcHggMThweDtiYWNrZ3JvdW5kOicgKyBtLmhiICsgJztjb2xvcjonICsgbS5oZiArICc7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgJyArIG0uaGwgKyAnIj48c3BhbiBzdHlsZT0iZm9udDo3MDAgMTdweC8xIExhdG8sc2Fucy1zZXJpZjtjb2xvcjonICsgbS5tayArICciPicgKyBtLm1hcmsgKyAnPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250OjUwMCAxMi41cHgvMSBJbnRlcixzYW5zLXNlcmlmIj4nICsgaHIgKyAnPC9zcGFuPjwvZGl2PicgKwogICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OXB4O3BhZGRpbmc6MTNweCAxOHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlY2VjZjAiPicgKyB6YWhsKGZhbHNlKSArICc8c3BhbiBzdHlsZT0ibWFyZ2luLWxlZnQ6YXV0bztmb250OjQwMCAxMHB4IEludGVyLHNhbnMtc2VyaWY7Y29sb3I6IzlhOWFhNCI+U2VpdGUgZGVzIE5ldHpiZXRyZWliZXJzPC9zcGFuPjwvZGl2PicgKyBpbm5lciArICc8L2Rpdj4nOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyKCkgewogICAgdmFyIHUgPSBVSVtTLmxhbmddLCBMID0gTElORVNbUy5sYW5nXSwgayA9IGtpbmQoKSwgbSA9IE1OT1NbUy5tbm9dLCBwID0gcGsoKSwgbHMgPSBsaXN0KCk7CiAgICB2YXIgb3RwID0gIXAuc3ViLCB0diA9IG90cCAmJiBTLm1ubyAhPT0gJ28yJzsKICAgIHZhciBsbiA9IChrID09PSAnb2ZmZXInICYmIFMubW9kZSA9PT0gJ3RhbicpID8gKHR2ID8gTC5vZmZlclRhblAgOiBMLm9mZmVyVGFuKSA6IChrID09PSAnb2ZmZXInICYmIHR2KSA/IEwub2ZmZXJDbGljayA6IChrID09PSAncmVkaXJlY3QnICYmIG90cCkgPyBMLnJlZGlyZWN0TzIgOiBMW2tdOwogICAgaWYgKGsgPT09ICdpZGVudGlmeScpIGxuID0gW2xuWzBdLCBsblsxXSArIExbeyB0ZWxla29tOiAnaWRlbnRpZnlUJywgdm9kYWZvbmU6ICdpZGVudGlmeVYnLCBvMjogJ2lkZW50aWZ5TycgfVtTLm1ub11dXTsKICAgIGlmIChTLmkgPT09IHNtc0lkeCgpKSBsbiA9IFtsblswXSwgbG5bMV0gKyAoUy5sYW5nID09PSAnZGUnID8gJyBHbGVpY2h6ZWl0aWcgdmVyc2NoaWNrdCBkZXIgTmV0emJldHJlaWJlciBhdXRvbWF0aXNjaCBlaW5lIEJlc3TDpHRpZ3VuZ3MtU01TLicgOiAnIEF0IHRoZSBzYW1lIHRpbWUgdGhlIG9wZXJhdG9yIGF1dG9tYXRpY2FsbHkgc2VuZHMgYSBjb25maXJtYXRpb24gU01TLicpXTsKICAgIHZhciBzbXNUeHQgPSBwLnN1YiA/ICdJaHIgQWJvOiBTdGFyZmFsbCBBcmVuYSAnICsgcC5jb2lucyArICcsICcgKyBwLnByaWNlICsgJyBwcm8gJyArIHAucGVyICsgJywgYmlzIGF1ZiBXaWRlcnJ1Zi4gQWJyZWNobnVuZyDDvGJlciBJaHJlIE1vYmlsZnVua3JlY2hudW5nLiBLw7xuZGlndW5nOiBteS5rYW56YXJvby5jb20nIDogJ0lociBLYXVmOiBTdGFyZmFsbCBBcmVuYSDigJMgJyArIHAuY29pbnMgKyAnIENvaW5zIGbDvHIgJyArIHAucHJpY2UgKyAnIChlaW5tYWxpZykuIEFicmVjaG51bmcgw7xiZXIgSWhyZSBNb2JpbGZ1bmtyZWNobnVuZy4gRnJhZ2VuOiBoZWxwQGthbnphcm9vLmNvbSc7CiAgICBpZiAoUy5zbXMgPT09ICdwaW4nKSBzbXNUeHQgPSAobS50YW5MZW4gPT09IDUgPyAnSWhyZSBUQU46ICcgOiAnSWhyZSBQSU46ICcpICsgJzQ0MzIxJy5zbGljZSgwLCBtLnRhbkxlbikgKyAnLiBEYW1pdCBiZXN0w6R0aWdlbiBTaWUgSWhyZW4gS2F1ZiBiZWkgU3RhcmZhbGwgQXJlbmE6ICcgKyAocC5zdWIgPyBwLnByaWNlICsgJyBwcm8gJyArIHAucGVyIDogcC5wcmljZSArICcgZWlubWFsaWcnKSArICcuIEdlYmVuIFNpZSBkZW4gQ29kZSBuaWNodCB3ZWl0ZXIuJzsKICAgIHZhciBzbXNIdG1sID0gUy5zbXMgPyAnPGJ1dHRvbiBjbGFzcz0ic21zJyArIChTLnNtc05ldyA/ICcgaW4nIDogJycpICsgJyIgZGF0YS1hPSJzbXN4Ij48c3BhbiBjbGFzcz0ic21zaSI+PGk+PC9pPjwvc3Bhbj48c3BhbiBzdHlsZT0iZmxleDoxO21pbi13aWR0aDowIj48c3BhbiBjbGFzcz0ic21zaCI+JyArIG0ubmFtZSArICc8c3Bhbj5qZXR6dDwvc3Bhbj48L3NwYW4+PHNwYW4gY2xhc3M9InNtc3QiPicgKyBzbXNUeHQgKyAnPC9zcGFuPjwvc3Bhbj48L2J1dHRvbj4nIDogJyc7CiAgICBTLnNtc05ldyA9IGZhbHNlOwogICAgdmFyIHNjID0gTWF0aC5tYXgoMC41NSwgTWF0aC5taW4oMSwgKHdpbmRvdy5pbm5lckhlaWdodCAtIDcwKSAvIDg3NCkpOwogICAgdmFyIGRvdHMgPSAnJzsKICAgIGZvciAodmFyIGogPSAwOyBqIDwgbHMubGVuZ3RoOyBqKyspIGRvdHMgKz0gJzxidXR0b24gZGF0YS1hPSJnbyIgZGF0YS12PSInICsgaiArICciIGNsYXNzPSInICsgKGogPT09IFMuaSA/ICdvbicgOiBqIDwgUy5pID8gJ2QnIDogJycpICsgJyI+PC9idXR0b24+JzsKICAgIHZhciBwYWNrcyA9ICcnOwogICAgUEFDS1MuZm9yRWFjaChmdW5jdGlvbiAocSkgeyBwYWNrcyArPSAnPGJ1dHRvbiBjbGFzcz0ic2cnICsgKHEuaWQgPT09IFMucGFjayA/ICcgb24nIDogJycpICsgJyIgZGF0YS1hPSJwYWNrIiBkYXRhLXY9IicgKyBxLmlkICsgJyI+JyArIHEuYnRuICsgJzwvYnV0dG9uPic7IH0pOwogICAgdmFyIHNnID0gZnVuY3Rpb24gKGEsIHYsIG9uLCB0KSB7IHJldHVybiAnPGJ1dHRvbiBjbGFzcz0ic2cnICsgKG9uID8gJyBvbicgOiAnJykgKyAnIiBkYXRhLWE9IicgKyBhICsgJyIgZGF0YS12PSInICsgdiArICciPicgKyB0ICsgJzwvYnV0dG9uPic7IH07CiAgICB2YXIgZGFyayA9IGsgPT09ICdzaG9wJzsKICAgIHZhciBrZWVwID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcuYm9keScpLCBzdCA9IGtlZXAgJiYga2VlcC5kYXRhc2V0LmsgPT09IGsgPyBrZWVwLnNjcm9sbFRvcCA6IDA7CiAgICByb290LmlubmVySFRNTCA9ICc8c3R5bGU+JyArIENTUyArICc8L3N0eWxlPjxkaXYgY2xhc3M9InciPjxkaXYgY2xhc3M9Im0iPjxkaXYgY2xhc3M9InBuIj4nICsKICAgICAgJzxkaXYgY2xhc3M9InRvcCI+PGRpdj48ZGl2IGNsYXNzPSJlYiI+JyArIHUuZWIgKyAnPC9kaXY+PGgxPicgKyB1LnRpdGxlICsgJzwvaDE+PC9kaXY+PGRpdiBjbGFzcz0ibGciPjxidXR0b24gZGF0YS1hPSJsYW5nIiBkYXRhLXY9ImVuIiBjbGFzcz0iJyArIChTLmxhbmcgPT09ICdlbicgPyAnb24nIDogJycpICsgJyI+RU48L2J1dHRvbj48YnV0dG9uIGRhdGEtYT0ibGFuZyIgZGF0YS12PSJkZSIgY2xhc3M9IicgKyAoUy5sYW5nID09PSAnZGUnID8gJ29uJyA6ICcnKSArICciPkRFPC9idXR0b24+PC9kaXY+PC9kaXY+JyArCiAgICAgICc8cCBjbGFzcz0iaW50cm8iPicgKyB1LmludHJvICsgJzwvcD4nICsKICAgICAgJzxkaXYgY2xhc3M9ImNhcmQiPjxkaXYgY2xhc3M9InNpIj4nICsgdS5zdGVwLnJlcGxhY2UoJyUxJywgUy5pICsgMSkucmVwbGFjZSgnJTInLCBscy5sZW5ndGgpICsgJzwvZGl2PjxkaXYgY2xhc3M9InRpbnQiPjxkaXYgY2xhc3M9InN0Ij4nICsgbG5bMF0gKyAnPC9kaXY+PHAgY2xhc3M9InNsIj4nICsgbG5bMV0gKyAnPC9wPjwvZGl2PjxkaXYgY2xhc3M9ImRvdHMiPicgKyBkb3RzICsgJzwvZGl2PjwvZGl2PicgKwogICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MTJweCI+PGRpdiBjbGFzcz0icm93Ij48c3BhbiBjbGFzcz0ibGIiPicgKyB1LnByb2R1Y3QgKyAnPC9zcGFuPicgKyBwYWNrcyArICc8L2Rpdj4nICsKICAgICAgJzxkaXYgY2xhc3M9InJvdyI+PHNwYW4gY2xhc3M9ImxiIj4nICsgdS5jYXJyaWVyICsgJzwvc3Bhbj4nICsgc2coJ21ubycsICd0ZWxla29tJywgUy5tbm8gPT09ICd0ZWxla29tJywgJ1RlbGVrb20nKSArIHNnKCdtbm8nLCAndm9kYWZvbmUnLCBTLm1ubyA9PT0gJ3ZvZGFmb25lJywgJ1ZvZGFmb25lJykgKyBzZygnbW5vJywgJ28yJywgUy5tbm8gPT09ICdvMicsICdvMicpICsgJzwvZGl2PicgKwogICAgICAnPGRpdiBjbGFzcz0icm93Ij48c3BhbiBjbGFzcz0ibGIiPicgKyB1Lm5ldHdvcmsgKyAnPC9zcGFuPicgKyBzZygnbW9kZScsICdjbGljaycsIFMubW9kZSA9PT0gJ2NsaWNrJywgdS5tb2JpbGUpICsgc2coJ21vZGUnLCAndGFuJywgUy5tb2RlID09PSAndGFuJywgdS53aWZpKSArICc8L2Rpdj48L2Rpdj4nICsKICAgICAgJzxkaXYgY2xhc3M9InJvdyIgc3R5bGU9ImdhcDoxMHB4Ij48YnV0dG9uIGNsYXNzPSJwbCBwciIgZGF0YS1hPSJuZXh0Ij4nICsgdS5uZXh0ICsgJzwvYnV0dG9uPjxidXR0b24gY2xhc3M9InBsIiBkYXRhLWE9InByZXYiPicgKyB1LmJhY2sgKyAnPC9idXR0b24+PGJ1dHRvbiBjbGFzcz0icGwiIGRhdGEtYT0icmVzZXQiPicgKyB1LnJlc3RhcnQgKyAnPC9idXR0b24+PC9kaXY+PC9kaXY+JyArCiAgICAgICc8ZGl2IGNsYXNzPSJkdiIgc3R5bGU9IndpZHRoOicgKyBNYXRoLnJvdW5kKDQxNCAqIHNjKSArICdweDtoZWlnaHQ6JyArIE1hdGgucm91bmQoODc0ICogc2MpICsgJ3B4Ij48ZGl2IGNsYXNzPSJkdmkiIHN0eWxlPSJ0cmFuc2Zvcm06c2NhbGUoJyArIHNjLnRvRml4ZWQoMykgKyAnKSI+PGRpdiBjbGFzcz0ic2NyIiBzdHlsZT0iLS1tYjonICsgbS5icmFuZCArICc7YmFja2dyb3VuZDonICsgKGRhcmsgPyAnIzE1MTIyYicgOiAnI2ZmZicpICsgJyI+JyArCiAgICAgICc8ZGl2IGNsYXNzPSJzYiIgc3R5bGU9ImNvbG9yOicgKyAoZGFyayA/ICcjZmZmJyA6ICcjMWExYTFmJykgKyAnIj48c3Bhbj45OjQxPC9zcGFuPjxzcGFuIGNsYXNzPSJiYXQiPjxpPjwvaT48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iaXNsIj48L2Rpdj4nICsgc21zSHRtbCArCiAgICAgICc8ZGl2IGNsYXNzPSJib2R5IiBkYXRhLWs9IicgKyBrICsgJyI+JyArIHNjcmVlbigpICsgJzwvZGl2PjxkaXYgY2xhc3M9ImhvbWUiIHN0eWxlPSJiYWNrZ3JvdW5kOicgKyAoZGFyayA/ICcjZmZmJyA6ICcjMWExYTFmJykgKyAnIj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nICsKICAgICAgJzxkaXYgY2xhc3M9ImZ0Ij48Yj4nICsgbS5uYW1lICsgJyDCtyAnICsgKFMubW9kZSA9PT0gJ2NsaWNrJyA/IHUubWQgOiB1Lnd0KSArICcgwrcgJyArIChwLnN1YiA/IHAuY29pbnMgKyAnIMK3ICcgKyBwLnByaWNlICsgJyAvICcgKyB1LnBlcltwLnBlcl0gOiBwLmNvaW5zICsgJyBDb2lucyDCtyAnICsgcC5wcmljZSArICcgJyArIHUub25lb2ZmKSArICc8L2I+PHNwYW4+JyArIHUuZm9vdCArICc8L3NwYW4+PC9kaXY+PC9kaXY+JzsKICAgIHZhciBuYiA9IHJvb3QucXVlcnlTZWxlY3RvcignLmJvZHknKTsgaWYgKG5iICYmIHN0KSBuYi5zY3JvbGxUb3AgPSBzdDsKICAgIHZhciBjdXIgPSByb290LnF1ZXJ5U2VsZWN0b3IoJy5jdXInKTsgaWYgKGN1ciAmJiBTLm1vZGUgPT09ICd0YW4nICYmIGsgPT09ICdvZmZlcicpIGN1ci5zdHlsZS5kaXNwbGF5ID0gUy5udW0ubGVuZ3RoID49IDExID8gJ25vbmUnIDogJyc7CiAgfQoKICByb290LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHsKICAgIHZhciBiID0gZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtYV0nKTsgaWYgKCFiKSByZXR1cm47CiAgICB2YXIgYSA9IGIuZ2V0QXR0cmlidXRlKCdkYXRhLWEnKSwgdiA9IGIuZ2V0QXR0cmlidXRlKCdkYXRhLXYnKTsKICAgIGlmIChhID09PSAnbmV4dCcpIGFkdmFuY2UoKTsKICAgIGVsc2UgaWYgKGEgPT09ICdwcmV2JykgZ28oUy5pIC0gMSk7CiAgICBlbHNlIGlmIChhID09PSAncmVzZXQnKSByZXN0YXJ0KCk7CiAgICBlbHNlIGlmIChhID09PSAnZ28nKSBnbygrdik7CiAgICBlbHNlIGlmIChhID09PSAnbGFuZycpIHNldCh7IGxhbmc6IHYgfSk7CiAgICBlbHNlIGlmIChhID09PSAncGFjaycpIHsgUy5wYWNrID0gdjsgZ28oTWF0aC5taW4oUy5pLCBsaXN0KCkubGVuZ3RoIC0gMSkpOyB9CiAgICBlbHNlIGlmIChhID09PSAncGljaycpIHsgUy5wYWNrID0gdjsgZ28oUy5pICsgMSk7IH0KICAgIGVsc2UgaWYgKGEgPT09ICdtbm8nKSByZXN0YXJ0KHsgbW5vOiB2IH0pOwogICAgZWxzZSBpZiAoYSA9PT0gJ21vZGUnKSByZXN0YXJ0KHsgbW9kZTogdiB9KTsKICAgIGVsc2UgaWYgKGEgPT09ICdrZXknKSBwcmVzcyh2KTsKICAgIGVsc2UgaWYgKGEgPT09ICdzbXN4JykgeyBjbGVhclRpbWVvdXQoc21zVGltZXIpOyBzZXQoeyBzbXM6IGZhbHNlIH0pOyB9CiAgfSk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlbmRlcik7CiAgaG9zdC50YWJJbmRleCA9IDA7CiAgaG9zdC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24gKGUpIHsKICAgIGlmIChlLmtleSA9PT0gJ0Fycm93UmlnaHQnKSBhZHZhbmNlKCk7CiAgICBpZiAoZS5rZXkgPT09ICdBcnJvd0xlZnQnKSBnbyhTLmkgLSAxKTsKICB9KTsKICByZW5kZXIoKTsKICB9IGNhdGNoIChlcnIpIHsKICAgIHZhciBtc2cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna3otZGNiLW1zZycpOwogICAgaWYgKG1zZykgbXNnLnRleHRDb250ZW50ID0gJ0RlbW8tRmVobGVyOiAnICsgKGVyciAmJiBlcnIubWVzc2FnZSA/IGVyci5tZXNzYWdlIDogZXJyKTsKICB9CiB9CiBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnKSBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywga3pTdGFydCk7IGVsc2Uga3pTdGFydCgpOwp9KSgpOwo=