ADHD CONSOLE
COPY THE DATA URI BELOW
PASTE INTO YOUR BROWSER
AND START PLAYING
data:text/html;base64,PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CjxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEuMCxtYXhpbXVtLXNjYWxlPTEuMCxtaW5pbXVtLXNjYWxlPTEuMCx1c2VyLXNjYWxhYmxlPW5vLHZpZXdwb3J0LWZpdD1jb3ZlciI+CjxtZXRhIG5hbWU9ImFwcGxlLW1vYmlsZS13ZWItYXBwLWNhcGFibGUiIGNvbnRlbnQ9InllcyI+PG1ldGEgbmFtZT0iYXBwbGUtbW9iaWxlLXdlYi1hcHAtc3RhdHVzLWJhci1zdHlsZSIgY29udGVudD0iYmxhY2stdHJhbnNsdWNlbnQiPgo8dGl0bGU+QURIRDwvdGl0bGU+CjxzdHlsZT4KKnttYXJnaW46MDtwYWRkaW5nOjA7Ym94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDstd2Via2l0LXRvdWNoLWNhbGxvdXQ6bm9uZTt0b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9ufQpodG1sLGJvZHl7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmZpeGVkO2luc2V0OjA7dG91Y2gtYWN0aW9uOm5vbmU7dXNlci1zZWxlY3Q6bm9uZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmV9CmJvZHl7Zm9udC1mYW1pbHk6c3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sc2Fucy1zZXJpZjtiYWNrZ3JvdW5kOiMxYTFhMjJ9Ci5kZXNrdG9wLXdyYXB7cG9zaXRpb246Zml4ZWQ7aW5zZXQ6MDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9Ci5kZXNrdG9wLXN1cmZhY2V7ZGlzcGxheTpub25lfQouZGV2aWNle3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtvdmVyZmxvdzpoaWRkZW47CiAgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTc4ZGVnLCNlOGU0ZGUgMCUsI2RkZDhkMCAyNSUsI2Q4ZDNjYiA1MCUsI2Q0Y2ZjNiA3NSUsI2QwY2JjMiAxMDAlKX0KLmRldmljZTo6YmVmb3Jle2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDtiYWNrZ3JvdW5kOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsdHJhbnNwYXJlbnQgMXB4LHJnYmEoMjU1LDI1NSwyNTUsLjAzKSAxcHgscmdiYSgyNTUsMjU1LDI1NSwuMDMpIDJweCk7cG9pbnRlci1ldmVudHM6bm9uZTt6LWluZGV4OjB9Ci5kZXZpY2U6OmFmdGVye2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDtvcGFjaXR5Oi4zNTtiYWNrZ3JvdW5kOnVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB2aWV3Qm94PScwIDAgMjU2IDI1NicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ2ZpbHRlciBpZD0nbiclM0UlM0NmZVR1cmJ1bGVuY2UgdHlwZT0nZnJhY3RhbE5vaXNlJyBiYXNlRnJlcXVlbmN5PScuOScgbnVtT2N0YXZlcz0nNCcgc3RpdGNoVGlsZXM9J3N0aXRjaCcvJTNFJTNDL2ZpbHRlciUzRSUzQ3JlY3Qgd2lkdGg9JzI1NicgaGVpZ2h0PScyNTYnIGZpbHRlcj0ndXJsKCUyM24pJyBvcGFjaXR5PScuMDYnLyUzRSUzQy9zdmclM0UiKTtwb2ludGVyLWV2ZW50czpub25lO3otaW5kZXg6MH0KQG1lZGlhKG1pbi13aWR0aDo1MDBweCl7CiAgYm9keXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxNDVkZWcsIzJhMmEzNSwjMWExYTIyLCMxNTE1MjApfQogIC5kZXNrdG9wLXN1cmZhY2V7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpmaXhlZDtpbnNldDowO2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgNTAlIDQwJSwjMmEyYTM1LCMxNTE1MjApO3BvaW50ZXItZXZlbnRzOm5vbmV9CiAgLmRlc2t0b3Atc3VyZmFjZTo6YmVmb3Jle2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDtvcGFjaXR5Oi40O2JhY2tncm91bmQ6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHZpZXdCb3g9JzAgMCAyNTYgMjU2JyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDZmlsdGVyIGlkPSduJyUzRSUzQ2ZlVHVyYnVsZW5jZSB0eXBlPSdmcmFjdGFsTm9pc2UnIGJhc2VGcmVxdWVuY3k9Jy42NScgbnVtT2N0YXZlcz0nMycgc3RpdGNoVGlsZXM9J3N0aXRjaCcvJTNFJTNDL2ZpbHRlciUzRSUzQ3JlY3Qgd2lkdGg9JzI1NicgaGVpZ2h0PScyNTYnIGZpbHRlcj0ndXJsKCUyM24pJyBvcGFjaXR5PScuMDgnLyUzRSUzQy9zdmclM0UiKX0KICAuZGV2aWNle3dpZHRoOjM5MHB4O2hlaWdodDo3NjBweDttYXgtaGVpZ2h0Ojk1dmg7Ym9yZGVyLXJhZGl1czoyOHB4O2JveC1zaGFkb3c6MCA4cHggMzBweCByZ2JhKDAsMCwwLC40KSwwIDMwcHggODBweCByZ2JhKDAsMCwwLC4zKSwwIDAgMCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuMDUpLGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwuMTUpO292ZXJmbG93OmhpZGRlbn0KfQpAbWVkaWEobWluLXdpZHRoOjUwMHB4KSBhbmQgKG1heC1oZWlnaHQ6NjAwcHgpey5kZXZpY2V7aGVpZ2h0Ojk1dmg7d2lkdGg6MzQwcHh9fQoudG9wLXN0cmlwe2ZsZXgtc2hyaW5rOjA7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOm1heChlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCksOHB4KSAxOHB4IDJweDt6LWluZGV4OjJ9Ci5icmFuZC1ibG9ja3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4fQoubGVkLWhvdXNpbmd7d2lkdGg6MTJweDtoZWlnaHQ6MTJweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxNDVkZWcsI2M4YzRiYywjYjhiNGFjKTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDJweCByZ2JhKDAsMCwwLC4xNSksMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC40KTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9Ci5sZWQtZG90e3dpZHRoOjZweDtoZWlnaHQ6NnB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgMzUlLCM2ZjYsIzBhMCk7Ym94LXNoYWRvdzowIDAgNHB4IHJnYmEoMCwyNTUsMCwuNCk7YW5pbWF0aW9uOmxlZGcgM3MgZWFzZS1pbi1vdXQgaW5maW5pdGV9CkBrZXlmcmFtZXMgbGVkZ3swJSwxMDAle2JveC1zaGFkb3c6MCAwIDRweCByZ2JhKDAsMjU1LDAsLjQpfTUwJXtib3gtc2hhZG93OjAgMCAycHggcmdiYSgwLDI1NSwwLC4yKX19Ci5icmFuZC10ZXh0e2ZvbnQtZmFtaWx5OidDb3VyaWVyIE5ldycsbW9ub3NwYWNlO2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTNweDtjb2xvcjojNTU1O2xldHRlci1zcGFjaW5nOjRweH0KLmJyYW5kLXN1Yntmb250LWZhbWlseTonQ291cmllciBOZXcnLG1vbm9zcGFjZTtmb250LXNpemU6NS41cHg7Y29sb3I6Izk5OTtsZXR0ZXItc3BhY2luZzoxLjVweDttYXJnaW4tdG9wOjFweH0KLnNjcmVlbi1zZWN0aW9ue2ZsZXgtc2hyaW5rOjA7cGFkZGluZzo2cHggMTRweCA2cHg7ei1pbmRleDoyfQouc2NyZWVuLWJlemVse2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDE4MGRlZywjMjIyLCMxYTFhMWEpO2JvcmRlci1yYWRpdXM6MTZweDtwYWRkaW5nOjZweDtwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2hhZG93OjAgMnB4IDhweCByZ2JhKDAsMCwwLC4yNSksMCA4cHggMjRweCByZ2JhKDAsMCwwLC4xNSksaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC4wNCl9Ci5zY3JlZW4tYmV6ZWw6OmJlZm9yZSwuc2NyZWVuLWJlemVsOjphZnRlcntjb250ZW50OicnO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjVweDtoZWlnaHQ6NXB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA0MCUgNDAlLCMyYTJhMzYsIzE2MTYxZSk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuNSksMCAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjAzKTt0b3A6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpfQouc2NyZWVuLWJlemVsOjpiZWZvcmV7bGVmdDozcHh9LnNjcmVlbi1iZXplbDo6YWZ0ZXJ7cmlnaHQ6M3B4fQouc2NyZWVuLWdsYXNze3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7YXNwZWN0LXJhdGlvOjUvNDtib3JkZXItcmFkaXVzOjEycHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6IzExMTtib3gtc2hhZG93Omluc2V0IDAgMCAzMHB4IHJnYmEoMCwwLDAsLjYpLGluc2V0IDAgMnB4IDRweCByZ2JhKDAsMCwwLC40KX0KLnNjcmVlbi1nbGFzczo6YmVmb3Jle2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0xMCU7bGVmdDotMjAlO3dpZHRoOjYwJTtoZWlnaHQ6NDAlO2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGVsbGlwc2UscmdiYSgyNTUsMjU1LDI1NSwuMDMpIDAlLHRyYW5zcGFyZW50IDcwJSk7dHJhbnNmb3JtOnJvdGF0ZSgtMTVkZWcpO3BvaW50ZXItZXZlbnRzOm5vbmU7ei1pbmRleDoyMH0KY2FudmFze3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2ltYWdlLXJlbmRlcmluZzpwaXhlbGF0ZWQ7ei1pbmRleDoxfQouY29udHJvbHMtc2VjdGlvbntmbGV4OjE7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3otaW5kZXg6MjtwYWRkaW5nOjAgMTRweDttaW4taGVpZ2h0OjA7Z2FwOjRweH0KLmNvbnRyb2xzLW1haW57ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcn0KLmRwYWR7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTE1cHg7aGVpZ2h0OjExNXB4O2ZsZXgtc2hyaW5rOjB9Ci5kcGFkOjpiZWZvcmV7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDoxNHB4O2JvcmRlci1yYWRpdXM6NTAlO2JveC1zaGFkb3c6MCA2cHggMTRweCByZ2JhKDAsMCwwLC4xMik7cG9pbnRlci1ldmVudHM6bm9uZX0KLmRwYWQtYXJte3Bvc2l0aW9uOmFic29sdXRlO2N1cnNvcjpwb2ludGVyO3otaW5kZXg6MjtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxODBkZWcsI2ZmN2IzYSAwJSwjZjA2YTI4IDQwJSwjZTU1ZDFlIDEwMCUpO2JveC1zaGFkb3c6MCAzcHggMCAjYjg0NjFhLDAgNHB4IDhweCByZ2JhKDAsMCwwLC4yKSxpbnNldCAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjMpLGluc2V0IDAgLTFweCAycHggcmdiYSgwLDAsMCwuMTUpfQouZHBhZC1hcm06YWN0aXZle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDE4MGRlZywjZmY4ODQ0LCNmMDcwMzApO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDFweCk7Ym94LXNoYWRvdzowIDFweCAwICNiODQ2MWEsaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC4yKX0KLmRwYWQtY2VudGVye3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpO3dpZHRoOjM0cHg7aGVpZ2h0OjM0cHg7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTQ1ZGVnLCNmMDcwMzAsI2UwNTgxOCk7Ym9yZGVyLXJhZGl1czo1MCU7ei1pbmRleDozO2JveC1zaGFkb3c6aW5zZXQgMCAycHggNHB4IHJnYmEoMjU1LDI1NSwyNTUsLjIpLGluc2V0IDAgLTJweCA0cHggcmdiYSgwLDAsMCwuMiksMCAycHggNnB4IHJnYmEoMCwwLDAsLjE1KX0KLmQtdXB7d2lkdGg6MzRweDtoZWlnaHQ6NDBweDt0b3A6MDtsZWZ0OjUwJTttYXJnaW4tbGVmdDotMTdweDtib3JkZXItcmFkaXVzOjZweCA2cHggMCAwfQouZC1kb3due3dpZHRoOjM0cHg7aGVpZ2h0OjQwcHg7Ym90dG9tOjA7bGVmdDo1MCU7bWFyZ2luLWxlZnQ6LTE3cHg7Ym9yZGVyLXJhZGl1czowIDAgNnB4IDZweH0KLmQtbGVmdHt3aWR0aDo0MHB4O2hlaWdodDozNHB4O2xlZnQ6MDt0b3A6NTAlO21hcmdpbi10b3A6LTE3cHg7Ym9yZGVyLXJhZGl1czo2cHggMCAwIDZweH0KLmQtcmlnaHR7d2lkdGg6NDBweDtoZWlnaHQ6MzRweDtyaWdodDowO3RvcDo1MCU7bWFyZ2luLXRvcDotMTdweDtib3JkZXItcmFkaXVzOjAgNnB4IDZweCAwfQouZHBhZC1hcm06OmFmdGVye2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7b3BhY2l0eTouMzV9Ci5kLXVwOjphZnRlcntib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOjZweCBzb2xpZCAjZmZmO3RvcDo4cHg7bGVmdDo1MCU7bWFyZ2luLWxlZnQ6LTVweH0KLmQtZG93bjo6YWZ0ZXJ7Ym9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcDo2cHggc29saWQgI2ZmZjtib3R0b206OHB4O2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi01cHh9Ci5kLWxlZnQ6OmFmdGVye2JvcmRlci10b3A6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDo2cHggc29saWQgI2ZmZjtsZWZ0OjEwcHg7dG9wOjUwJTttYXJnaW4tdG9wOi01cHh9Ci5kLXJpZ2h0OjphZnRlcntib3JkZXItdG9wOjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItbGVmdDo2cHggc29saWQgI2ZmZjtyaWdodDoxMHB4O3RvcDo1MCU7bWFyZ2luLXRvcDotNXB4fQouYWItc2VjdGlvbntmbGV4LXNocmluazowfQouYWItcm93e2Rpc3BsYXk6ZmxleDtnYXA6OHB4O3RyYW5zZm9ybTpyb3RhdGUoLTI1ZGVnKX0KLmFiLWNvbHt0ZXh0LWFsaWduOmNlbnRlcn0KLmFiLXJpbmd7d2lkdGg6NTJweDtoZWlnaHQ6NTJweDtib3JkZXItcmFkaXVzOjUwJTtwYWRkaW5nOjNweDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxNDVkZWcsI2FhYSwjODg4KTtib3gtc2hhZG93OjAgM3B4IDhweCByZ2JhKDAsMCwwLC4yKSxpbnNldCAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjMpfQouYWItYnRue3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7Ym9yZGVyLXJhZGl1czo1MCU7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7Zm9udC1mYW1pbHk6J0NvdXJpZXIgTmV3Jyxtb25vc3BhY2U7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMXB4O2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDE1NWRlZywjM2EzYTNhIDAlLCMyMjIgNDAlLCMxYTFhMWEgMTAwJSk7Ym94LXNoYWRvdzppbnNldCAwIDJweCA0cHggcmdiYSgyNTUsMjU1LDI1NSwuMDgpLGluc2V0IDAgLTNweCA2cHggcmdiYSgwLDAsMCwuNCk7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVufQouYWItYnRuOjpiZWZvcmV7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6M3B4O2xlZnQ6MTUlO3dpZHRoOjcwJTtoZWlnaHQ6MzUlO2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDE4MGRlZyxyZ2JhKDI1NSwyNTUsMjU1LC4xMiksdHJhbnNwYXJlbnQpO3BvaW50ZXItZXZlbnRzOm5vbmV9Ci5hYi1idG46YWN0aXZle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDE1NWRlZywjNDQ0LCMyYTJhMmEpO2JveC1zaGFkb3c6aW5zZXQgMCAzcHggNnB4IHJnYmEoMCwwLDAsLjUpfQouYWItbGJse2ZvbnQtZmFtaWx5OidDb3VyaWVyIE5ldycsbW9ub3NwYWNlO2ZvbnQtc2l6ZTo3cHg7Y29sb3I6Izk5OTttYXJnaW4tdG9wOjVweDtmb250LXdlaWdodDo3MDA7dHJhbnNmb3JtOnJvdGF0ZSgyNWRlZyl9Ci5tZW51LXJvd3tkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDoxMnB4O3BhZGRpbmc6NHB4IDAgMH0KLm1lbnUtY29se3RleHQtYWxpZ246Y2VudGVyfQoubWVudS1waWxse3dpZHRoOjU2cHg7aGVpZ2h0OjIwcHg7Ym9yZGVyLXJhZGl1czoxMHB4O2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDE4MGRlZywjNmE2YTcyLCM1NTU1NjApO2JveC1zaGFkb3c6MCAzcHggMCAjNDQ0NDQ4LDAgNHB4IDhweCByZ2JhKDAsMCwwLC4xNSksaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC4xKX0KLm1lbnUtcGlsbDphY3RpdmV7Ym94LXNoYWRvdzowIDFweCAwICM0NDQ0NDg7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMnB4KX0KLm1lbnUtbGJse2ZvbnQtZmFtaWx5OidDb3VyaWVyIE5ldycsbW9ub3NwYWNlO2ZvbnQtc2l6ZTo2cHg7Y29sb3I6Izk5OTttYXJnaW4tdG9wOjRweDtsZXR0ZXItc3BhY2luZzoxcHg7Zm9udC13ZWlnaHQ6NzAwfQouaG9tZS1waWxse3dpZHRoOjQ0cHg7aGVpZ2h0OjIwcHg7Ym9yZGVyLXJhZGl1czoxMHB4O2JvcmRlcjoycHggc29saWQgcmdiYSgwLDAsMCwuMTUpO2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDE4MGRlZywjZmY3YjNhLCNlMDU1MjApO2JveC1zaGFkb3c6MCAzcHggMCAjYTAzYTEwLDAgNHB4IDhweCByZ2JhKDAsMCwwLC4xNSk7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfQouaG9tZS1waWxsOmFjdGl2ZXtib3gtc2hhZG93OjAgMXB4IDAgI2EwM2ExMDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgycHgpfQouaG9tZS1waWxsLWlubmVye3dpZHRoOjEycHg7aGVpZ2h0OjdweDtib3JkZXItcmFkaXVzOjNweDtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjQ1KX0KLnNwZWFrZXItc2VjdGlvbntwYWRkaW5nOjRweCAxOHB4IDA7ei1pbmRleDoyfQouc3BlYWtlci1ncmlke2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDYsNnB4KTtncmlkLXRlbXBsYXRlLXJvd3M6cmVwZWF0KDQsNnB4KTtnYXA6M3B4O3dpZHRoOmZpdC1jb250ZW50fQouc3AtZG90e3dpZHRoOjVweDtoZWlnaHQ6NXB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDE0NWRlZywjYjhiNGFjLCNjOGM0YmMpO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjI1KSwwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjMpfQouYm90dG9tLXN0cmlwe2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzoycHggMThweCBtYXgoZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pLDZweCk7ei1pbmRleDoyfQouYm90LWxlZnR7Zm9udC1mYW1pbHk6J0NvdXJpZXIgTmV3Jyxtb25vc3BhY2U7Zm9udC1zaXplOjVweDtjb2xvcjojYWFhO2xldHRlci1zcGFjaW5nOjJweH0KLmJvdC1yaWdodHtmb250LWZhbWlseTonQ291cmllciBOZXcnLG1vbm9zcGFjZTtmb250LXNpemU6NC41cHg7Y29sb3I6I2JiYjtsZXR0ZXItc3BhY2luZzoxcHh9Cjwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+CjxkaXYgY2xhc3M9ImRlc2t0b3Atd3JhcCI+CjxkaXYgY2xhc3M9ImRlc2t0b3Atc3VyZmFjZSI+PC9kaXY+CjxkaXYgY2xhc3M9ImRldmljZSI+CjxkaXYgY2xhc3M9InRvcC1zdHJpcCI+PGRpdiBjbGFzcz0iYnJhbmQtYmxvY2siPjxkaXYgY2xhc3M9ImxlZC1ob3VzaW5nIj48ZGl2IGNsYXNzPSJsZWQtZG90Ij48L2Rpdj48L2Rpdj48ZGl2PjxkaXYgY2xhc3M9ImJyYW5kLXRleHQiPkFESEQ8L2Rpdj48ZGl2IGNsYXNzPSJicmFuZC1zdWIiPkFMTCBEQVkgSFlQRVIgRFJJVkU8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4KPGRpdiBjbGFzcz0ic2NyZWVuLXNlY3Rpb24iPjxkaXYgY2xhc3M9InNjcmVlbi1iZXplbCI+PGRpdiBjbGFzcz0ic2NyZWVuLWdsYXNzIj48Y2FudmFzIGlkPSJnYyI+PC9jYW52YXM+PC9kaXY+PC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9ImNvbnRyb2xzLXNlY3Rpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRyb2xzLW1haW4iPgogICAgPGRpdiBjbGFzcz0iZHBhZCI+PGRpdiBjbGFzcz0iZHBhZC1jZW50ZXIiPjwvZGl2PjxkaXYgY2xhc3M9ImRwYWQtYXJtIGQtdXAiIGlkPSJkdSI+PC9kaXY+PGRpdiBjbGFzcz0iZHBhZC1hcm0gZC1kb3duIiBpZD0iZGQiPjwvZGl2PjxkaXYgY2xhc3M9ImRwYWQtYXJtIGQtbGVmdCIgaWQ9ImRsIj48L2Rpdj48ZGl2IGNsYXNzPSJkcGFkLWFybSBkLXJpZ2h0IiBpZD0iZHIiPjwvZGl2PjwvZGl2PgogICAgPGRpdiBjbGFzcz0iYWItc2VjdGlvbiI+PGRpdiBjbGFzcz0iYWItcm93Ij4KICAgICAgPGRpdiBjbGFzcz0iYWItY29sIj48ZGl2IGNsYXNzPSJhYi1yaW5nIj48YnV0dG9uIGNsYXNzPSJhYi1idG4iIGlkPSJiQiI+QjwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9ImFiLWxibCI+QjwvZGl2PjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJhYi1jb2wiPjxkaXYgY2xhc3M9ImFiLXJpbmciPjxidXR0b24gY2xhc3M9ImFiLWJ0biIgaWQ9ImJBIj5BPC9idXR0b24+PC9kaXY+PGRpdiBjbGFzcz0iYWItbGJsIj5BPC9kaXY+PC9kaXY+CiAgICA8L2Rpdj48L2Rpdj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJtZW51LXJvdyI+CiAgICA8ZGl2IGNsYXNzPSJtZW51LWNvbCI+PGRpdiBjbGFzcz0ibWVudS1waWxsIiBpZD0ibVNlbCI+PC9kaXY+PGRpdiBjbGFzcz0ibWVudS1sYmwiPlNFTEVDVDwvZGl2PjwvZGl2PgogICAgPGRpdiBjbGFzcz0ibWVudS1jb2wiPjxkaXYgY2xhc3M9Im1lbnUtcGlsbCIgaWQ9Im1TdCI+PC9kaXY+PGRpdiBjbGFzcz0ibWVudS1sYmwiPlNUQVJUPC9kaXY+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJtZW51LWNvbCI+PGJ1dHRvbiBjbGFzcz0iaG9tZS1waWxsIiBpZD0iaG9tZUJ0biI+PGRpdiBjbGFzcz0iaG9tZS1waWxsLWlubmVyIj48L2Rpdj48L2J1dHRvbj48ZGl2IGNsYXNzPSJtZW51LWxibCI+SE9NRTwvZGl2PjwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ic3BlYWtlci1zZWN0aW9uIj48ZGl2IGNsYXNzPSJzcGVha2VyLWdyaWQiIGlkPSJzcGtyIj48L2Rpdj48L2Rpdj4KPGRpdiBjbGFzcz0iYm90dG9tLXN0cmlwIj48c3BhbiBjbGFzcz0iYm90LWxlZnQiPkhZUEVSRk9DVVPihKI8L3NwYW4+PHNwYW4gY2xhc3M9ImJvdC1yaWdodCI+TU9ERUwgQURIRC0wMTwvc3Bhbj48L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8c2NyaXB0Pgpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdnZXN0dXJlc3RhcnQnLGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKX0pOwpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdnZXN0dXJlY2hhbmdlJyxmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCl9KTsKZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZ2VzdHVyZWVuZCcsZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpfSk7CmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RibGNsaWNrJyxmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCl9KTsKZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJyxmdW5jdGlvbihlKXtpZihlLnRvdWNoZXMubGVuZ3RoPjEpZS5wcmV2ZW50RGVmYXVsdCgpfSx7cGFzc2l2ZTpmYWxzZX0pOwooZnVuY3Rpb24oKXt2YXIgZz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3BrcicpO2Zvcih2YXIgaT0wO2k8MjQ7aSsrKXt2YXIgZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtkLmNsYXNzTmFtZT0nc3AtZG90JztnLmFwcGVuZENoaWxkKGQpfX0pKCk7Cgp2YXIgY3Y9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2djJyksYz1jdi5nZXRDb250ZXh0KCcyZCcpOwpjdi53aWR0aD0yNDA7Y3YuaGVpZ2h0PTE5MjsKdmFyIFc9MjQwLEg9MTkyLEY9JzcwMCAnOwp2YXIgU1RBVEU9J2Jvb3QnLGJvb3RUPTAsYm9vdFBoYXNlPTAsbWVudVNlbD0wOwp2YXIgaW5wdXQ9e3U6MCxkOjAsbDowLHI6MCxhOjAsYjowLHN0YXJ0OjAsaG9tZTowfTsKdmFyIHN0YXJzPVtdO2Zvcih2YXIgaT0wO2k8NDA7aSsrKXN0YXJzLnB1c2goe3g6TWF0aC5yYW5kb20oKSpXLHk6TWF0aC5yYW5kb20oKSpILHM6TWF0aC5yYW5kb20oKSouNisuMixiOk1hdGgucmFuZG9tKCkqNixzcDpNYXRoLnJhbmRvbSgpKi4wMisuMDA1fSk7CnZhciBwYXJ0aWNsZXM9W107CmZ1bmN0aW9uIGRyYXdTdGFycyhhKXtzdGFycy5mb3JFYWNoKGZ1bmN0aW9uKHMpe3MuYis9cy5zcDtjLmZpbGxTdHlsZT0ncmdiYSgyNTUsMjU1LDI1NSwnKyhNYXRoLnNpbihzLmIpKi4zKy4yKSphKycpJztjLmZpbGxSZWN0KHMueCxzLnkscy5zLHMucyl9KX0KZnVuY3Rpb24gYWRkUCh4LHksbixjb2xzKXtmb3IodmFyIGk9MDtpPG47aSsrKXBhcnRpY2xlcy5wdXNoKHt4OngseTp5LHZ4OihNYXRoLnJhbmRvbSgpLS41KSo0LHZ5OihNYXRoLnJhbmRvbSgpLS41KSo0LGxpZmU6MTgsY29sb3I6Y29sc1tpJWNvbHMubGVuZ3RoXX0pfQpmdW5jdGlvbiBkcmF3UCgpe3BhcnRpY2xlcy5mb3JFYWNoKGZ1bmN0aW9uKHApe3AueCs9cC52eDtwLnkrPXAudnk7cC52eCo9Ljk0O3AudnkqPS45NDtwLmxpZmUtLTtjLmdsb2JhbEFscGhhPXAubGlmZS8xODtjLmZpbGxTdHlsZT1wLmNvbG9yO2MuZmlsbFJlY3QocC54LTEscC55LTEsMiwyKTtjLmdsb2JhbEFscGhhPTF9KTtwYXJ0aWNsZXM9cGFydGljbGVzLmZpbHRlcihmdW5jdGlvbihwKXtyZXR1cm4gcC5saWZlPjB9KX0KCnZhciBnYW1lcz1bCiAge25hbWU6J0hZUEVSIEJMT0NLUycsZ2VucmU6J1BVWlpMRScsY29sb3I6JyM0OGRiZmInLGljb246ZnVuY3Rpb24oeCx5KXtjLmZpbGxTdHlsZT0nIzQ4ZGJmYic7Yy5maWxsUmVjdCh4LHksOCw4KTtjLmZpbGxSZWN0KHgrOSx5LDgsOCk7Yy5maWxsUmVjdCh4LHkrOSw4LDgpO2MuZmlsbFJlY3QoeCs5LHkrOSw4LDgpfX0sCiAge25hbWU6J1NFUk9UT05JTiBTTkFLRScsZ2VucmU6J0FSQ0FERScsY29sb3I6JyM1NWVmYzQnLGljb246ZnVuY3Rpb24oeCx5KXtjLmZpbGxTdHlsZT0nIzU1ZWZjNCc7Zm9yKHZhciBpPTA7aTw0O2krKyljLmZpbGxSZWN0KHgraSo1LHkrOCw0LDQpO2MuZmlsbFN0eWxlPScjZmZmJztjLmZpbGxSZWN0KHgseSs2LDQsNil9fSwKICB7bmFtZTonRE9QQU1JTkUgQlJFQUtFUicsZ2VucmU6J0FDVElPTicsY29sb3I6JyNmZDc5YTgnLGljb246ZnVuY3Rpb24oeCx5KXt2YXIgY2w9WycjZmY2YjZiJywnI2ZlY2E1NycsJyM0OGRiZmInXTtmb3IodmFyIGk9MDtpPDM7aSsrKXtjLmZpbGxTdHlsZT1jbFtpXTtjLmZpbGxSZWN0KHgseStpKjUsMTgsNCl9fX0sCiAge25hbWU6J0ZPQ1VTIEZJUkUnLGdlbnJlOidTSE9PVEVSJyxjb2xvcjonI2ZlY2E1NycsaWNvbjpmdW5jdGlvbih4LHkpe2MuZmlsbFN0eWxlPScjZmVjYTU3Jzt2YXIgYT1bWzAsMCwxLDAsMF0sWzAsMSwxLDEsMF0sWzEsMCwxLDAsMV1dO2Zvcih2YXIgcj0wO3I8YS5sZW5ndGg7cisrKWZvcih2YXIgY289MDtjbzxhW3JdLmxlbmd0aDtjbysrKWlmKGFbcl1bY29dKWMuZmlsbFJlY3QoeCtjbyo0LHkrcio0LDMsMyl9fQpdOwp2YXIgUkM9WycjZmY2YjZiJywnI2ZlY2E1NycsJyM0OGRiZmInLCcjNTVlZmM0J107CgovLyA9PT09PT09PT09PT09PT09PT09PSBCT09UID09PT09PT09PT09PT09PT09PT09CmZ1bmN0aW9uIGRyYXdCb290KCl7CiAgYy5maWxsU3R5bGU9JyMwYTBjMTQnO2MuZmlsbFJlY3QoMCwwLFcsSCk7ZHJhd1N0YXJzKDEpO2Jvb3RUKys7CiAgaWYoYm9vdFBoYXNlPT09MCl7CiAgICB2YXIgYT1NYXRoLm1pbigxLGJvb3RULzQwKTtjLmdsb2JhbEFscGhhPWE7CiAgICBjLmZvbnQ9RisnMjhweCAiQ291cmllciBOZXciLG1vbm9zcGFjZSc7Yy50ZXh0QWxpZ249J2NlbnRlcic7CiAgICB2YXIgdD0nQURIRCcsdHc9Yy5tZWFzdXJlVGV4dCh0KS53aWR0aCxzeD0xMjAtdHcvMjsKICAgIGZvcih2YXIgaT0wO2k8NDtpKyspe2MuZmlsbFN0eWxlPVJDW2ldO2MuZmlsbFRleHQodFtpXSxzeCtjLm1lYXN1cmVUZXh0KHQuc3Vic3RyaW5nKDAsaSkpLndpZHRoKzgsOTIpfQogICAgYy5mb250PSc0MDAgNnB4ICJDb3VyaWVyIE5ldyIsbW9ub3NwYWNlJztjLmZpbGxTdHlsZT0ncmdiYSgyNTUsMjU1LDI1NSwuNCknO2MuZmlsbFRleHQoJ0FMTCBEQVkgSFlQRVIgRFJJVkUnLDEyMCwxMDgpOwogICAgaWYoYm9vdFQ+MzApe3ZhciBidz1NYXRoLm1pbig4MCwoYm9vdFQtMzApKjIpO2MuZmlsbFN0eWxlPSdyZ2JhKDI1NSwyNTUsMjU1LC4wOCknO2MuZmlsbFJlY3QoODAsMTI1LDgwLDMpO2MuZmlsbFN0eWxlPScjZmY3YjNhJztjLmZpbGxSZWN0KDgwLDEyNSxidywzKTtpZihNYXRoLnJhbmRvbSgpPi41KWFkZFAoODArYncsMTI2LDEsUkMpfQogICAgYy5nbG9iYWxBbHBoYT0xO2lmKGJvb3RUPjgwKXtib290UGhhc2U9MTtib290VD0wfQogIH1lbHNlewogICAgYy5mb250PUYrJzI4cHggIkNvdXJpZXIgTmV3Iixtb25vc3BhY2UnO2MudGV4dEFsaWduPSdjZW50ZXInOwogICAgdmFyIHQ9J0FESEQnLHR3PWMubWVhc3VyZVRleHQodCkud2lkdGgsc3g9MTIwLXR3LzI7CiAgICBmb3IodmFyIGk9MDtpPDQ7aSsrKXtjLmZpbGxTdHlsZT1SQ1tpXTtjLmZpbGxUZXh0KHRbaV0sc3grYy5tZWFzdXJlVGV4dCh0LnN1YnN0cmluZygwLGkpKS53aWR0aCs4LDgyKX0KICAgIGMuZm9udD0nNDAwIDZweCAiQ291cmllciBOZXciLG1vbm9zcGFjZSc7Yy5maWxsU3R5bGU9J3JnYmEoMjU1LDI1NSwyNTUsLjMpJztjLmZpbGxUZXh0KCdBTEwgREFZIEhZUEVSIERSSVZFJywxMjAsOTgpOwogICAgaWYoTWF0aC5mbG9vcihib290VC8yNSklMj09PTApe2MuZm9udD1GKyc4cHggIkNvdXJpZXIgTmV3Iixtb25vc3BhY2UnO2MuZmlsbFN0eWxlPScjZmY3YjNhJztjLmZpbGxUZXh0KCdQUkVTUyBTVEFSVCcsMTIwLDEzMCl9CiAgICBjLmZvbnQ9JzQwMCA1cHggIkNvdXJpZXIgTmV3Iixtb25vc3BhY2UnO2MuZmlsbFN0eWxlPSdyZ2JhKDI1NSwyNTUsMjU1LC4xMiknO2MuZmlsbFRleHQoJ3YxLjAgLy8gNCBHQU1FUycsMTIwLDE3MCk7CiAgfQogIGRyYXdQKCk7Cn0KCi8vID09PT09PT09PT09PT09PT09PT09IE1FTlUgPT09PT09PT09PT09PT09PT09PT0KZnVuY3Rpb24gZHJhd01lbnUoKXsKICBjLmZpbGxTdHlsZT0nIzBhMGMxNCc7Yy5maWxsUmVjdCgwLDAsVyxIKTtkcmF3U3RhcnMoLjUpOwogIGMuZm9udD1GKycxMHB4ICJDb3VyaWVyIE5ldyIsbW9ub3NwYWNlJztjLnRleHRBbGlnbj0nbGVmdCc7dmFyIGh4PTEwOwogIGZvcih2YXIgaT0wO2k8NDtpKyspe2MuZmlsbFN0eWxlPVJDW2ldO2MuZmlsbFRleHQoJ0FESEQnW2ldLGh4LDE2KTtoeCs9Yy5tZWFzdXJlVGV4dCgnQURIRCdbaV0pLndpZHRoKzF9CiAgYy5mb250PSc0MDAgNXB4ICJDb3VyaWVyIE5ldyIsbW9ub3NwYWNlJztjLmZpbGxTdHlsZT0ncmdiYSgyNTUsMjU1LDI1NSwuMiknO2MuZmlsbFRleHQoJ1NFTEVDVCBDQVJUUklER0UnLGh4KzYsMTYpOwogIHZhciBncmFkPWMuY3JlYXRlTGluZWFyR3JhZGllbnQoMTAsMjIsMjMwLDIyKTtncmFkLmFkZENvbG9yU3RvcCgwLCcjZmY2YjZiJyk7Z3JhZC5hZGRDb2xvclN0b3AoLjMzLCcjZmVjYTU3Jyk7Z3JhZC5hZGRDb2xvclN0b3AoLjY2LCcjNDhkYmZiJyk7Z3JhZC5hZGRDb2xvclN0b3AoMSwnIzU1ZWZjNCcpOwogIGMuZmlsbFN0eWxlPWdyYWQ7Yy5maWxsUmVjdCgxMCwyMCwyMjAsMSk7CiAgZ2FtZXMuZm9yRWFjaChmdW5jdGlvbihnLGkpewogICAgdmFyIHk9MzIraSozOCxzPWk9PT1tZW51U2VsOwogICAgaWYocyl7Yy5maWxsU3R5bGU9J3JnYmEoMjU1LDI1NSwyNTUsLjAzKSc7Yy5maWxsUmVjdCg2LHktNCwyMjgsMzYpO2Muc3Ryb2tlU3R5bGU9Zy5jb2xvcjtjLmdsb2JhbEFscGhhPS4zO2Muc3Ryb2tlUmVjdCg2LjUseS0zLjUsMjI3LDM1KTtjLmdsb2JhbEFscGhhPTE7Yy5maWxsU3R5bGU9Zy5jb2xvcjtjLmZpbGxSZWN0KDYseS00LDIsMzYpfQogICAgZy5pY29uKDE0LHkrNCk7CiAgICBjLmZvbnQ9RisnOHB4ICJDb3VyaWVyIE5ldyIsbW9ub3NwYWNlJztjLmZpbGxTdHlsZT1zPycjZmZmJzoncmdiYSgyNTUsMjU1LDI1NSwuNCknO2MudGV4dEFsaWduPSdsZWZ0JztjLmZpbGxUZXh0KGcubmFtZSw0MCx5KzEwKTsKICAgIGMuZm9udD0nNDAwIDVweCAiQ291cmllciBOZXciLG1vbm9zcGFjZSc7Yy5maWxsU3R5bGU9cz9nLmNvbG9yOidyZ2JhKDI1NSwyNTUsMjU1LC4xNSknO2MuZmlsbFRleHQoZy5nZW5yZSw0MCx5KzIwKTsKICAgIGlmKHMpe2MuZmlsbFN0eWxlPWcuY29sb3I7Yy5mb250PUYrJzEwcHggIkNvdXJpZXIgTmV3Iixtb25vc3BhY2UnO2MudGV4dEFsaWduPSdyaWdodCc7Yy5maWxsVGV4dCgnPicsMjMwLHkrMTQpfQogIH0pOwogIGMuZm9udD0nNDAwIDVweCAiQ291cmllciBOZXciLG1vbm9zcGFjZSc7Yy50ZXh0QWxpZ249J2NlbnRlcic7Yy5maWxsU3R5bGU9J3JnYmEoMjU1LDI1NSwyNTUsLjEyKSc7Yy5maWxsVGV4dCgnRC1QQUQgPSBTRUxFQ1QgIC8gIEEgPSBQTEFZICAvICBIT01FID0gQkFDSycsMTIwLDE4Nik7CiAgZHJhd1AoKTsKfQoKLy8gPT09PT09PT09PT09PT09PT09PT0gVEVUUklTID09PT09PT09PT09PT09PT09PT09CnZhciB0ZXQ9e307CnRldC5TSEFQRVM9W1tbMSwxLDEsMV1dLFtbMSwxXSxbMSwxXV0sW1swLDEsMF0sWzEsMSwxXV0sW1sxLDAsMF0sWzEsMSwxXV0sW1swLDAsMV0sWzEsMSwxXV0sW1sxLDEsMF0sWzAsMSwxXV0sW1swLDEsMV0sWzEsMSwwXV1dOwp0ZXQuQz1be2Y6JyM0OGRiZmInLGg6JyM3YWU4ZmYnLHM6JyMyYTlhYzAnfSx7ZjonI2ZlY2E1NycsaDonI2ZmZTA4MCcsczonI2M4YTAzMCd9LHtmOicjYTI5YmZlJyxoOicjYzRiZmZmJyxzOicjN2E3MmQwJ30se2Y6JyNmZjZiNmInLGg6JyNmZjlhOWEnLHM6JyNkMDQwNDAnfSx7ZjonI2ZmOWZmMycsaDonI2ZmYzBmOCcsczonI2QwNzBjMCd9LHtmOicjNTVlZmM0JyxoOicjODBmZmRhJyxzOicjMzBjMDkwJ30se2Y6JyNmZDc5YTgnLGg6JyNmZjk5YzAnLHM6JyNkMDUwODAnfV07CnRldC5TWj05O3RldC5DT0xTPTEwO3RldC5ST1dTPTIwO3RldC5PWD00O3RldC5PWT00O3RldC5TSURFPXRldC5DT0xTKnRldC5TWit0ZXQuT1grMTA7CmZ1bmN0aW9uIHRldEluaXQoKXt0ZXQuYm9hcmQ9W107Zm9yKHZhciByPTA7cjx0ZXQuUk9XUztyKyspe3RldC5ib2FyZFtyXT1bXTtmb3IodmFyIGM9MDtjPHRldC5DT0xTO2MrKyl0ZXQuYm9hcmRbcl1bY109LTF9dGV0LnNjb3JlPTA7dGV0LmxldmVsPTE7dGV0LmxpbmVzPTA7dGV0LmRyb3A9MDt0ZXQuc3BlZWQ9MzY7dGV0Lm92ZXI9ZmFsc2U7dGV0LnBhdXNlZD1mYWxzZTt0ZXQuc2hrPTA7dGV0Lm54dD1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqNyk7dGV0U3Bhd24oKX0KZnVuY3Rpb24gdGV0U3Bhd24oKXt0ZXQuY1Q9dGV0Lm54dDt0ZXQubnh0PU1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSo3KTt0ZXQuY3VyPXRldC5TSEFQRVNbdGV0LmNUXS5tYXAoZnVuY3Rpb24ocil7cmV0dXJuIHIuc2xpY2UoKX0pO3RldC5jWD1NYXRoLmZsb29yKCh0ZXQuQ09MUy10ZXQuY3VyWzBdLmxlbmd0aCkvMik7dGV0LmNZPTA7aWYodGV0SGl0KHRldC5jWCx0ZXQuY1ksdGV0LmN1cikpdGV0Lm92ZXI9dHJ1ZX0KZnVuY3Rpb24gdGV0SGl0KHB4LHB5LHApe2Zvcih2YXIgcj0wO3I8cC5sZW5ndGg7cisrKWZvcih2YXIgY289MDtjbzxwW3JdLmxlbmd0aDtjbysrKWlmKHBbcl1bY29dKXt2YXIgbng9cHgrY28sbnk9cHkrcjtpZihueDwwfHxueD49dGV0LkNPTFN8fG55Pj10ZXQuUk9XUylyZXR1cm4gdHJ1ZTtpZihueT49MCYmdGV0LmJvYXJkW255XVtueF0+PTApcmV0dXJuIHRydWV9cmV0dXJuIGZhbHNlfQpmdW5jdGlvbiB0ZXRNZXJnZSgpe2Zvcih2YXIgcj0wO3I8dGV0LmN1ci5sZW5ndGg7cisrKWZvcih2YXIgY289MDtjbzx0ZXQuY3VyW3JdLmxlbmd0aDtjbysrKWlmKHRldC5jdXJbcl1bY29dJiZ0ZXQuY1krcj49MCl0ZXQuYm9hcmRbdGV0LmNZK3JdW3RldC5jWCtjb109dGV0LmNUfQpmdW5jdGlvbiB0ZXRDbGVhcigpe3ZhciBjbD0wO2Zvcih2YXIgcj10ZXQuUk9XUy0xO3I+PTA7ci0tKWlmKHRldC5ib2FyZFtyXS5ldmVyeShmdW5jdGlvbih2KXtyZXR1cm4gdj49MH0pKXt0ZXQuYm9hcmQuc3BsaWNlKHIsMSk7dmFyIG5yPVtdO2Zvcih2YXIgaT0wO2k8dGV0LkNPTFM7aSsrKW5yLnB1c2goLTEpO3RldC5ib2FyZC51bnNoaWZ0KG5yKTtjbCsrO3IrK31pZihjbCl7dGV0LnNjb3JlKz1bMCwxMDAsMzAwLDUwMCw4MDBdW2NsXSp0ZXQubGV2ZWw7dGV0LmxpbmVzKz1jbDt0ZXQubGV2ZWw9TWF0aC5mbG9vcih0ZXQubGluZXMvMTApKzE7dGV0LnNwZWVkPU1hdGgubWF4KDMsMzYtdGV0LmxldmVsKjMpO3RldC5zaGs9Y2w+Mj8xMjo2fX0KZnVuY3Rpb24gdGV0Um90KCl7dmFyIHI9dGV0LmN1clswXS5tYXAoZnVuY3Rpb24oXyxpKXtyZXR1cm4gdGV0LmN1ci5tYXAoZnVuY3Rpb24ocm93KXtyZXR1cm4gcm93W2ldfSkucmV2ZXJzZSgpfSk7dmFyIGs9WzAsLTEsMSwtMiwyXTtmb3IodmFyIGk9MDtpPGsubGVuZ3RoO2krKylpZighdGV0SGl0KHRldC5jWCtrW2ldLHRldC5jWSxyKSl7dGV0LmN1cj1yO3RldC5jWCs9a1tpXTtyZXR1cm59fQpmdW5jdGlvbiB0ZXRNb3ZlKGQpe2lmKCF0ZXRIaXQodGV0LmNYK2QsdGV0LmNZLHRldC5jdXIpKXRldC5jWCs9ZH0KZnVuY3Rpb24gdGV0RHJvcCgpe3ZhciBkPTA7d2hpbGUoIXRldEhpdCh0ZXQuY1gsdGV0LmNZKzEsdGV0LmN1cikpe3RldC5jWSsrO2QrK310ZXQuc2NvcmUrPWQqMjt0ZXRNZXJnZSgpO3RldENsZWFyKCk7dGV0U3Bhd24oKX0KZnVuY3Rpb24gdGV0VGljaygpe2lmKHRldC5vdmVyfHx0ZXQucGF1c2VkKXJldHVybjt0ZXQuZHJvcCsrO2lmKHRldC5kcm9wPj10ZXQuc3BlZWQpe3RldC5kcm9wPTA7aWYoIXRldEhpdCh0ZXQuY1gsdGV0LmNZKzEsdGV0LmN1cikpdGV0LmNZKys7ZWxzZXt0ZXRNZXJnZSgpO3RldENsZWFyKCk7dGV0U3Bhd24oKX19fQpmdW5jdGlvbiB0ZXREcmF3KCl7CiAgdmFyIHNrPXRldC5zaGs+MD9NYXRoLnNpbih0ZXQuc2hrKjIpKih0ZXQuc2hrLzQpOjA7Yy5zYXZlKCk7Yy50cmFuc2xhdGUoc2ssMCk7aWYodGV0LnNoaz4wKXRldC5zaGstLTsKICBjLmZpbGxTdHlsZT0nIzBhMGMxMic7Yy5maWxsUmVjdCgwLDAsVyxIKTtjLmZpbGxTdHlsZT0nIzBjMGUxNic7Yy5maWxsUmVjdCh0ZXQuT1gsdGV0Lk9ZLHRldC5DT0xTKnRldC5TWix0ZXQuUk9XUyp0ZXQuU1opOwogIGMuZ2xvYmFsQWxwaGE9LjA0O2Muc3Ryb2tlU3R5bGU9JyNmZmYnO2Zvcih2YXIgcj0wO3I8PXRldC5ST1dTO3IrKyl7Yy5iZWdpblBhdGgoKTtjLm1vdmVUbyh0ZXQuT1gsdGV0Lk9ZK3IqdGV0LlNaKTtjLmxpbmVUbyh0ZXQuT1grdGV0LkNPTFMqdGV0LlNaLHRldC5PWStyKnRldC5TWik7Yy5zdHJva2UoKX1mb3IodmFyIGNvPTA7Y288PXRldC5DT0xTO2NvKyspe2MuYmVnaW5QYXRoKCk7Yy5tb3ZlVG8odGV0Lk9YK2NvKnRldC5TWix0ZXQuT1kpO2MubGluZVRvKHRldC5PWCtjbyp0ZXQuU1osdGV0Lk9ZK3RldC5ST1dTKnRldC5TWik7Yy5zdHJva2UoKX1jLmdsb2JhbEFscGhhPTE7CiAgZm9yKHZhciByPTA7cjx0ZXQuUk9XUztyKyspZm9yKHZhciBjbz0wO2NvPHRldC5DT0xTO2NvKyspaWYodGV0LmJvYXJkW3JdW2NvXT49MCl0ZXRCbGsoY28scix0ZXQuYm9hcmRbcl1bY29dKTsKICBpZih0ZXQuY3VyJiYhdGV0Lm92ZXIpe3ZhciBneT10ZXQuY1k7d2hpbGUoIXRldEhpdCh0ZXQuY1gsZ3krMSx0ZXQuY3VyKSlneSsrO2Zvcih2YXIgcj0wO3I8dGV0LmN1ci5sZW5ndGg7cisrKWZvcih2YXIgY289MDtjbzx0ZXQuY3VyW3JdLmxlbmd0aDtjbysrKWlmKHRldC5jdXJbcl1bY29dJiZneStyPj0wKXt2YXIgYng9dGV0Lk9YKyh0ZXQuY1grY28pKnRldC5TWixieT10ZXQuT1krKGd5K3IpKnRldC5TWjtjLnN0cm9rZVN0eWxlPXRldC5DW3RldC5jVF0uZjtjLmdsb2JhbEFscGhhPS4yO2Muc3Ryb2tlUmVjdChieCsuNSxieSsuNSx0ZXQuU1otMix0ZXQuU1otMik7Yy5nbG9iYWxBbHBoYT0xfQogIGZvcih2YXIgcj0wO3I8dGV0LmN1ci5sZW5ndGg7cisrKWZvcih2YXIgY289MDtjbzx0ZXQuY3VyW3JdLmxlbmd0aDtjbysrKWlmKHRldC5jdXJbcl1bY29dJiZ0ZXQuY1krcj49MCl0ZXRCbGsodGV0LmNYK2NvLHRldC5jWStyLHRldC5jVCl9CiAgdmFyIHN4PXRldC5TSURFO2MuZm9udD1GKyc4cHggQXJpYWwnO2MuZmlsbFN0eWxlPSdyZ2JhKDI1NSwyNTUsMjU1LC42KSc7Yy50ZXh0QWxpZ249J2xlZnQnO2MuZmlsbFRleHQoJ0hZUEVSIEJMT0NLUycsc3gsMTQpOwogIGMuZm9udD0nNjAwIDZweCBBcmlhbCc7Yy5maWxsU3R5bGU9J3JnYmEoMjU1LDI1NSwyNTUsLjI1KSc7Yy5maWxsVGV4dCgnU0NPUkUnLHN4LDMwKTtjLmZpbGxTdHlsZT0nI2ZlY2E1Nyc7Yy5mb250PUYrJzEwcHggQXJpYWwnO2MuZmlsbFRleHQoU3RyaW5nKHRldC5zY29yZSksc3gsNDIpOwogIGMuZmlsbFN0eWxlPSdyZ2JhKDI1NSwyNTUsMjU1LC4yNSknO2MuZm9udD0nNjAwIDZweCBBcmlhbCc7Yy5maWxsVGV4dCgnTEVWRUwnLHN4LDU4KTtjLmZpbGxTdHlsZT0nIzQ4ZGJmYic7Yy5mb250PUYrJzEwcHggQXJpYWwnO2MuZmlsbFRleHQoU3RyaW5nKHRldC5sZXZlbCksc3gsNzApOwogIGMuZmlsbFN0eWxlPSdyZ2JhKDI1NSwyNTUsMjU1LC4yNSknO2MuZm9udD0nNjAwIDZweCBBcmlhbCc7Yy5maWxsVGV4dCgnTElORVMnLHN4LDg2KTtjLmZpbGxTdHlsZT0nIzU1ZWZjNCc7Yy5mb250PUYrJzEwcHggQXJpYWwnO2MuZmlsbFRleHQoU3RyaW5nKHRldC5saW5lcyksc3gsOTgpOwogIGMuZmlsbFN0eWxlPSdyZ2JhKDI1NSwyNTUsMjU1LC4yNSknO2MuZm9udD0nNjAwIDZweCBBcmlhbCc7Yy5maWxsVGV4dCgnTkVYVCcsc3gsMTE2KTsKICBpZighdGV0Lm92ZXIpe3ZhciBucD10ZXQuU0hBUEVTW3RldC5ueHRdO2Zvcih2YXIgcj0wO3I8bnAubGVuZ3RoO3IrKylmb3IodmFyIGNvPTA7Y288bnBbcl0ubGVuZ3RoO2NvKyspaWYobnBbcl1bY29dKXt2YXIgYng9c3grY28qdGV0LlNaKzIsYnk9MTIwK3IqdGV0LlNaO2MuZmlsbFN0eWxlPXRldC5DW3RldC5ueHRdLmY7Yy5maWxsUmVjdChieCxieSx0ZXQuU1otMSx0ZXQuU1otMSl9fQogIGlmKHRldC5vdmVyKXtjLmZpbGxTdHlsZT0ncmdiYSgxMCwxMiwxOCwuOTIpJztjLmZpbGxSZWN0KDAsMCxXLEgpO2MuZm9udD1GKycxNHB4IEFyaWFsJztjLmZpbGxTdHlsZT0nI2VmNDQ0NCc7Yy50ZXh0QWxpZ249J2NlbnRlcic7Yy5maWxsVGV4dCgnR0FNRSBPVkVSJyxXLzIsSC8yLTEyKTtjLmZvbnQ9RisnMTBweCBBcmlhbCc7Yy5maWxsU3R5bGU9JyNmZWNhNTcnO2MuZmlsbFRleHQodGV0LnNjb3JlLFcvMixILzIrNik7Yy5mb250PSc2MDAgN3B4IEFyaWFsJztjLmZpbGxTdHlsZT0ncmdiYSgyNTUsMjU1LDI1NSwuMyknO2MuZmlsbFRleHQoJ1NUQVJUIFRPIFJFVFJZJyxXLzIsSC8yKzIyKX0KICBpZih0ZXQucGF1c2VkJiYhdGV0Lm92ZXIpe2MuZmlsbFN0eWxlPSdyZ2JhKDEwLDEyLDE4LC44OCknO2MuZmlsbFJlY3QoMCwwLFcsSCk7Yy5mb250PUYrJzE0cHggQXJpYWwnO2MuZmlsbFN0eWxlPSdyZ2JhKDI1NSwyNTUsMjU1LC42KSc7Yy50ZXh0QWxpZ249J2NlbnRlcic7Yy5maWxsVGV4dCgnUEFVU0VEJyxXLzIsSC8yKX0KICBjLnJlc3RvcmUoKTsKfQpmdW5jdGlvbiB0ZXRCbGsoeCx5LHQpe3ZhciBieD10ZXQuT1greCp0ZXQuU1osYnk9dGV0Lk9ZK3kqdGV0LlNaLGNsPXRldC5DW3RdO2MuZmlsbFN0eWxlPWNsLmY7Yy5maWxsUmVjdChieCxieSx0ZXQuU1otMSx0ZXQuU1otMSk7Yy5maWxsU3R5bGU9Y2wuaDtjLmZpbGxSZWN0KGJ4KzEsYnkrMSx0ZXQuU1otMywxKTtjLmZpbGxSZWN0KGJ4KzEsYnkrMSwxLHRldC5TWi0zKTtjLmZpbGxTdHlsZT1jbC5zO2MuZmlsbFJlY3QoYngrdGV0LlNaLTIsYnkrMSwxLHRldC5TWi0yKTtjLmZpbGxSZWN0KGJ4KzEsYnkrdGV0LlNaLTIsdGV0LlNaLTIsMSl9CmZ1bmN0aW9uIHRldElucHV0KGJ0bil7aWYodGV0Lm92ZXIpe2lmKGJ0bj09PSdzdGFydCcpdGV0SW5pdCgpO3JldHVybn1pZihidG49PT0nc3RhcnQnKXRldC5wYXVzZWQ9IXRldC5wYXVzZWQ7aWYodGV0LnBhdXNlZClyZXR1cm47aWYoYnRuPT09J3UnfHxidG49PT0nYScpdGV0Um90KCk7aWYoYnRuPT09J2InKXRldERyb3AoKX0KdmFyIHRldEhvbGRJPW51bGw7ZnVuY3Rpb24gdGV0SG9sZFN0YXJ0KGZuKXtmbigpO3RldEhvbGRJPXNldEludGVydmFsKGZuLDcwKX1mdW5jdGlvbiB0ZXRIb2xkU3RvcCgpe2NsZWFySW50ZXJ2YWwodGV0SG9sZEkpfQoKLy8gPT09PT09PT09PT09PT09PT09PT0gU05BS0UgPT09PT09PT09PT09PT09PT09PT0KdmFyIHNuaz17fTsKZnVuY3Rpb24gc25rSW5pdCgpe3Nuay5ib2R5PVt7eDoxMix5Ojl9LHt4OjExLHk6OX0se3g6MTAseTo5fV07c25rLmRpcj17eDoxLHk6MH07c25rLm5kPXt4OjEseTowfTtzbmsuc2NvcmU9MDtzbmsuaGk9c25rLmhpfHwwO3Nuay5zcGQ9NjtzbmsudGljaz0wO3Nuay5hbGl2ZT10cnVlO3Nuay50cmFpbD1bXTtzbmtGb29kKCl9CmZ1bmN0aW9uIHNua0Zvb2QoKXt2YXIgcDtkb3twPXt4Ok1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoyNCkseTpNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMTkpfX13aGlsZShzbmsuYm9keS5zb21lKGZ1bmN0aW9uKHMpe3JldHVybiBzLng9PT1wLngmJnMueT09PXAueX0pKTtzbmsuZm9vZD1wO3Nuay5mb29kLmE9MH0KZnVuY3Rpb24gc25rVGljaygpe2lmKCFzbmsuYWxpdmUpcmV0dXJuO3Nuay50aWNrKys7aWYoc25rLnRpY2s8c25rLnNwZClyZXR1cm47c25rLnRpY2s9MDtzbmsuZGlyPXNuay5uZDt2YXIgaD17eDooc25rLmJvZHlbMF0ueCtzbmsuZGlyLngrMjQpJTI0LHk6KHNuay5ib2R5WzBdLnkrc25rLmRpci55KzE5KSUxOX07aWYoc25rLmJvZHkuc29tZShmdW5jdGlvbihzKXtyZXR1cm4gcy54PT09aC54JiZzLnk9PT1oLnl9KSl7c25rLmFsaXZlPWZhbHNlO2lmKHNuay5zY29yZT5zbmsuaGkpc25rLmhpPXNuay5zY29yZTthZGRQKGgueCo5KzEyKzQsaC55KjkrMTArNCwxMCxbJyNmZjZiNmInXSk7cmV0dXJufXZhciB0YWlsPXNuay5ib2R5W3Nuay5ib2R5Lmxlbmd0aC0xXTtzbmsudHJhaWwucHVzaCh7eDp0YWlsLngqOSsxMis0LHk6dGFpbC55KjkrMTArNCxsaWZlOjh9KTtzbmsuYm9keS51bnNoaWZ0KGgpO2lmKGgueD09PXNuay5mb29kLngmJmgueT09PXNuay5mb29kLnkpe3Nuay5zY29yZSs9MTA7c25rLnNwZD1NYXRoLm1heCgyLDYtTWF0aC5mbG9vcihzbmsuc2NvcmUvMzApKTthZGRQKHNuay5mb29kLngqOSsxMis0LHNuay5mb29kLnkqOSsxMCs0LDUsWycjZmVjYTU3JywnIzU1ZWZjNCcsJyNmZjlmZjMnXSk7c25rRm9vZCgpfWVsc2Ugc25rLmJvZHkucG9wKCl9CmZ1bmN0aW9uIHNua0RyYXcoKXt2YXIgRz05LE9YPTEyLE9ZPTEwO2MuZmlsbFN0eWxlPScjMGEwYzEyJztjLmZpbGxSZWN0KDAsMCxXLEgpO2Muc3Ryb2tlU3R5bGU9J3JnYmEoMjU1LDI1NSwyNTUsLjAzKSc7Yy5zdHJva2VSZWN0KE9YLS41LE9ZLS41LDI0KkcrMSwxOSpHKzEpOwpjLmZvbnQ9RisnN3B4IEFyaWFsJztjLnRleHRBbGlnbj0nbGVmdCc7Yy5maWxsU3R5bGU9J3JnYmEoMjU1LDI1NSwyNTUsLjUpJztjLmZpbGxUZXh0KCdTRVJPVE9OSU4gU05BS0UnLE9YLE9ZLTIpO2MudGV4dEFsaWduPSdyaWdodCc7Yy5maWxsU3R5bGU9JyNmZWNhNTcnO2MuZmlsbFRleHQoJ1NDT1JFOicrc25rLnNjb3JlLE9YKzI0KkcsT1ktMik7CnNuay50cmFpbC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QubGlmZS0tO2MuZmlsbFN0eWxlPSdyZ2JhKDg1LDIzOSwxOTYsJysodC5saWZlLzEyKSsnKSc7Yy5maWxsUmVjdCh0LngtMSx0LnktMSwyLDIpfSk7c25rLnRyYWlsPXNuay50cmFpbC5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQubGlmZT4wfSk7CnNuay5mb29kLmErPS4wODt2YXIgZnA9TWF0aC5zaW4oc25rLmZvb2QuYSkqLjMrLjcsZng9T1grc25rLmZvb2QueCpHLGZ5PU9ZK3Nuay5mb29kLnkqRztjLmZpbGxTdHlsZT0ncmdiYSgyNTQsMjAyLDg3LCcrZnArJyknO2MuZmlsbFJlY3QoZngsZnksRy0xLEctMSk7CnZhciBCQz1bJyM1NWVmYzQnLCcjMDBiODk0JywnIzQ4ZGJmYicsJyM4MWVjZWMnLCcjYTI5YmZlJ107CnNuay5ib2R5LmZvckVhY2goZnVuY3Rpb24ocyxpKXt2YXIgc3g9T1grcy54Kkcsc3k9T1krcy55Kkc7aWYoaT09PTApe2MuZmlsbFN0eWxlPScjZmZmJztjLmZpbGxSZWN0KHN4LHN5LEctMSxHLTEpO2MuZmlsbFN0eWxlPScjNTVlZmM0JztjLmZpbGxSZWN0KHN4KzEsc3krMSxHLTMsRy0zKTtjLmZpbGxTdHlsZT0nIzBhMGMxMic7Yy5maWxsUmVjdChzeCsyK3Nuay5kaXIueCoyLHN5KzIrc25rLmRpci55KjIsMiwyKTtjLmZpbGxSZWN0KHN4K0ctNStzbmsuZGlyLngqMixzeSsyK3Nuay5kaXIueSoyLDIsMil9ZWxzZXtjLmZpbGxTdHlsZT1CQ1tpJUJDLmxlbmd0aF07Yy5maWxsUmVjdChzeCsxLHN5KzEsRy0zLEctMyl9fSk7CmMudGV4dEFsaWduPSdsZWZ0JztjLmZpbGxTdHlsZT0ncmdiYSgyNTUsMjU1LDI1NSwuMiknO2MuZm9udD0nNjAwIDVweCBBcmlhbCc7Yy5maWxsVGV4dCgnSEk6JytzbmsuaGkrJyAgTEVOOicrc25rLmJvZHkubGVuZ3RoLE9YLE9ZKzE5KkcrOCk7CmlmKCFzbmsuYWxpdmUpe2MuZmlsbFN0eWxlPSdyZ2JhKDEwLDEyLDE4LC44OCknO2MuZmlsbFJlY3QoMCwwLFcsSCk7Yy5mb250PUYrJzE0cHggQXJpYWwnO2MuZmlsbFN0eWxlPScjZmY2YjZiJztjLnRleHRBbGlnbj0nY2VudGVyJztjLmZpbGxUZXh0KCdHQU1FIE9WRVInLFcvMixILzItOCk7Yy5mb250PUYrJzEwcHggQXJpYWwnO2MuZmlsbFN0eWxlPScjZmVjYTU3JztjLmZpbGxUZXh0KCdTQ09SRTogJytzbmsuc2NvcmUsVy8yLEgvMis4KTtjLmZvbnQ9JzYwMCA3cHggQXJpYWwnO2MuZmlsbFN0eWxlPSdyZ2JhKDI1NSwyNTUsMjU1LC4zKSc7Yy5maWxsVGV4dCgnU1RBUlQgVE8gUkVUUlknLFcvMixILzIrMjQpfQpkcmF3UCgpOwp9CmZ1bmN0aW9uIHNua0lucHV0KGJ0bil7aWYoIXNuay5hbGl2ZSYmYnRuPT09J3N0YXJ0Jyl7c25rSW5pdCgpO3JldHVybn12YXIgZD1zbmsuZGlyO2lmKGJ0bj09PSd1JyYmZC55IT09MSlzbmsubmQ9e3g6MCx5Oi0xfTtpZihidG49PT0nZCcmJmQueSE9PS0xKXNuay5uZD17eDowLHk6MX07aWYoYnRuPT09J2wnJiZkLnghPT0xKXNuay5uZD17eDotMSx5OjB9O2lmKGJ0bj09PSdyJyYmZC54IT09LTEpc25rLm5kPXt4OjEseTowfTtpZihidG49PT0nYSd8fGJ0bj09PSdiJyl7c25rLnNwZD0xO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtzbmsuc3BkPU1hdGgubWF4KDIsNi1NYXRoLmZsb29yKHNuay5zY29yZS8zMCkpfSwxODApfX0KCi8vID09PT09PT09PT09PT09PT09PT09IEJSRUFLT1VUID09PT09PT09PT09PT09PT09PT09CnZhciBicms9e307CmZ1bmN0aW9uIGJya0luaXQoKXticmsucHg9Vy8yLTE3O2Jyay5ieD1XLzI7YnJrLmJ5PTE3ODticmsuYmR4PTEuMjticmsuYmR5PS0xLjg7YnJrLnNjb3JlPTA7YnJrLmxpdmVzPTM7YnJrLmNvbWJvPTA7YnJrLmxhdW5jaGVkPWZhbHNlO2Jyay5vdmVyPWZhbHNlO2Jyay5icmlja3M9W107dmFyIFJDMj1bJyNmZjZiNmInLCcjZmQ3OWE4JywnI2EyOWJmZScsJyM0OGRiZmInLCcjNTVlZmM0JywnI2ZlY2E1NyddO2Zvcih2YXIgcj0wO3I8NjtyKyspZm9yKHZhciBjbz0wO2NvPDEwO2NvKyspYnJrLmJyaWNrcy5wdXNoKHt4OmNvKjIzKzMseTpyKjgrMTgsdzoyMixoOjcsaHA6cjwyPzI6MSxjb2xvcjpSQzJbcl19KX0KZnVuY3Rpb24gYnJrVGljaygpe2lmKGJyay5vdmVyfHwhYnJrLmxhdW5jaGVkKXJldHVybjticmsuYngrPWJyay5iZHg7YnJrLmJ5Kz1icmsuYmR5O2lmKGJyay5ieDw9Mnx8YnJrLmJ4Pj1XLTIpYnJrLmJkeD0tYnJrLmJkeDtpZihicmsuYnk8PTIpYnJrLmJkeT1NYXRoLmFicyhicmsuYmR5KTtpZihicmsuYnk+PTE3OC0yJiZicmsuYnk8PTE4MyYmYnJrLmJ4Pj1icmsucHgmJmJyay5ieDw9YnJrLnB4KzM0KXticmsuYmR5PS1NYXRoLmFicyhicmsuYmR5KTticmsuYmR4PSgoYnJrLmJ4LWJyay5weCkvMzQtLjUpKjMuNTt2YXIgc3A9TWF0aC5zcXJ0KGJyay5iZHgqYnJrLmJkeCticmsuYmR5KmJyay5iZHkpO2lmKHNwPjMpe2Jyay5iZHgqPTMvc3A7YnJrLmJkeSo9My9zcH1icmsuY29tYm89MH1pZihicmsuYnk+MjAwKXticmsubGl2ZXMtLTticmsuY29tYm89MDtpZihicmsubGl2ZXM8PTApYnJrLm92ZXI9dHJ1ZTtlbHNle2Jyay5sYXVuY2hlZD1mYWxzZTticmsuYng9YnJrLnB4KzE3O2Jyay5ieT0xNzA7YnJrLmJkeD0xLjI7YnJrLmJkeT0tMS44fX1icmsuYnJpY2tzLmZvckVhY2goZnVuY3Rpb24oYil7aWYoYi5ocDw9MClyZXR1cm47aWYoYnJrLmJ4KzI+Yi54JiZicmsuYngtMjxiLngrYi53JiZicmsuYnkrMj5iLnkmJmJyay5ieS0yPGIueStiLmgpe2IuaHAtLTtpZihiLmhwPD0wKXticmsuY29tYm8rKzticmsuc2NvcmUrPTEwKmJyay5jb21ibzthZGRQKGIueCtiLncvMixiLnkrYi5oLzIsNCxbYi5jb2xvcl0pfWlmKGJyay5ieDxiLnh8fGJyay5ieD5iLngrYi53KWJyay5iZHg9LWJyay5iZHg7ZWxzZSBicmsuYmR5PS1icmsuYmR5fX0pO2lmKGJyay5icmlja3MuZXZlcnkoZnVuY3Rpb24oYil7cmV0dXJuIGIuaHA8PTB9KSlicmsub3Zlcj10cnVlO2lmKCFicmsubGF1bmNoZWQpe2Jyay5ieD1icmsucHgrMTc7YnJrLmJ5PTE3MH19CmZ1bmN0aW9uIGJya0RyYXcoKXtjLmZpbGxTdHlsZT0nIzBhMGMxMic7Yy5maWxsUmVjdCgwLDAsVyxIKTtjLmZvbnQ9RisnN3B4IEFyaWFsJztjLnRleHRBbGlnbj0nbGVmdCc7Yy5maWxsU3R5bGU9J3JnYmEoMjU1LDI1NSwyNTUsLjUpJztjLmZpbGxUZXh0KCdET1BBTUlORSBCUkVBS0VSJyw0LDEwKTtjLnRleHRBbGlnbj0ncmlnaHQnO2MuZmlsbFN0eWxlPScjZmVjYTU3JztjLmZpbGxUZXh0KCdTQ09SRTonK2Jyay5zY29yZSwyMzYsMTApOwpmb3IodmFyIGk9MDtpPGJyay5saXZlcztpKyspe2MuZmlsbFN0eWxlPScjZWY0NDQ0JztjLmJlZ2luUGF0aCgpO2MuYXJjKDgraSoxMiwxODcsMywwLE1hdGguUEkqMik7Yy5maWxsKCl9CmJyay5icmlja3MuZm9yRWFjaChmdW5jdGlvbihiKXtpZihiLmhwPD0wKXJldHVybjtjLmdsb2JhbEFscGhhPWIuaHA+MT8xOi43NTtjLmZpbGxTdHlsZT1iLmNvbG9yO2MuZmlsbFJlY3QoYi54LGIueSxiLncsYi5oKTtjLmZpbGxTdHlsZT0ncmdiYSgyNTUsMjU1LDI1NSwuMTgpJztjLmZpbGxSZWN0KGIueCsxLGIueSsxLGIudy0yLDEpO2MuZ2xvYmFsQWxwaGE9MX0pOwpjLmZpbGxTdHlsZT0nI2ZmZic7Yy5maWxsUmVjdChicmsucHgsMTc4LDM0LDUpO2MuZmlsbFN0eWxlPSdyZ2JhKDI1NSwyNTUsMjU1LC4yKSc7Yy5maWxsUmVjdChicmsucHgrMiwxNzksMzAsMSk7CmMuZmlsbFN0eWxlPScjZmZmJztjLmZpbGxSZWN0KGJyay5ieC0yLGJyay5ieS0yLDQsNCk7CmlmKGJyay5jb21ibz4xKXtjLmZvbnQ9RisnMTBweCBBcmlhbCc7Yy5maWxsU3R5bGU9JyNmZWNhNTcnO2MudGV4dEFsaWduPSdjZW50ZXInO2MuZ2xvYmFsQWxwaGE9LjY7Yy5maWxsVGV4dCgneCcrYnJrLmNvbWJvLDEyMCwxMDApO2MuZ2xvYmFsQWxwaGE9MX0KaWYoYnJrLm92ZXIpe2MuZmlsbFN0eWxlPSdyZ2JhKDEwLDEyLDE4LC45MiknO2MuZmlsbFJlY3QoMCwwLFcsSCk7Yy50ZXh0QWxpZ249J2NlbnRlcic7Yy5mb250PUYrJzE0cHggQXJpYWwnO3ZhciB3PWJyay5icmlja3MuZXZlcnkoZnVuY3Rpb24oYil7cmV0dXJuIGIuaHA8PTB9KTtjLmZpbGxTdHlsZT13PycjNTVlZmM0JzonI2ZmNmI2Yic7Yy5maWxsVGV4dCh3PydZT1UgV0lOJzonR0FNRSBPVkVSJywxMjAsODgpO2MuZm9udD1GKycxMHB4IEFyaWFsJztjLmZpbGxTdHlsZT0nI2ZlY2E1Nyc7Yy5maWxsVGV4dChicmsuc2NvcmUsMTIwLDEwNik7Yy5mb250PSc2MDAgN3B4IEFyaWFsJztjLmZpbGxTdHlsZT0ncmdiYSgyNTUsMjU1LDI1NSwuMyknO2MuZmlsbFRleHQoJ1NUQVJUIFRPIFJFVFJZJywxMjAsMTIyKX0KZWxzZSBpZighYnJrLmxhdW5jaGVkKXtjLmZvbnQ9JzYwMCA3cHggQXJpYWwnO2MuZmlsbFN0eWxlPSdyZ2JhKDI1NSwyNTUsMjU1LC4yKSc7Yy50ZXh0QWxpZ249J2NlbnRlcic7Yy5maWxsVGV4dCgnUFJFU1MgQSBUTyBMQVVOQ0gnLDEyMCwxNjApfQpkcmF3UCgpOwp9CnZhciBicmtMSD1mYWxzZSxicmtSSD1mYWxzZTsKZnVuY3Rpb24gYnJrTXYoKXtpZihicmtMSClicmsucHg9TWF0aC5tYXgoMCxicmsucHgtMyk7aWYoYnJrUkgpYnJrLnB4PU1hdGgubWluKFctMzQsYnJrLnB4KzMpO2lmKCFicmsubGF1bmNoZWQpYnJrLmJ4PWJyay5weCsxN30KZnVuY3Rpb24gYnJrSW5wdXQoYnRuKXtpZihicmsub3ZlciYmYnRuPT09J3N0YXJ0Jyl7YnJrSW5pdCgpO3JldHVybn1pZihidG49PT0nYSd8fGJ0bj09PSdzdGFydCcpe2lmKCFicmsubGF1bmNoZWQmJiFicmsub3Zlcil7YnJrLmxhdW5jaGVkPXRydWU7YnJrLmJkeD0oTWF0aC5yYW5kb20oKS0uNSkqMjticmsuYmR5PS0yLjJ9fX0KCi8vID09PT09PT09PT09PT09PT09PT09IElOVkFERVJTID09PT09PT09PT09PT09PT09PT09CnZhciBpbnY9e307CnZhciBBMT1bWzAsMCwxLDAsMCwxLDAsMF0sWzAsMCwwLDEsMSwwLDAsMF0sWzAsMCwxLDEsMSwxLDAsMF0sWzAsMSwxLDAsMCwxLDEsMF0sWzEsMSwxLDEsMSwxLDEsMV0sWzEsMCwxLDEsMSwxLDAsMV0sWzEsMCwxLDAsMCwxLDAsMV0sWzAsMCwwLDEsMSwwLDAsMF1dOwp2YXIgQTI9W1swLDEsMCwwLDAsMCwxLDBdLFswLDAsMSwwLDAsMSwwLDBdLFswLDEsMSwxLDEsMSwxLDBdLFsxLDEsMCwxLDEsMCwxLDFdLFsxLDEsMSwxLDEsMSwxLDFdLFswLDEsMSwxLDEsMSwxLDBdLFswLDEsMCwwLDAsMCwxLDBdLFswLDAsMSwwLDAsMSwwLDBdXTsKdmFyIFNIUD1bWzAsMCwwLDEsMCwwLDBdLFswLDAsMSwxLDEsMCwwXSxbMCwwLDEsMSwxLDAsMF0sWzEsMSwxLDEsMSwxLDFdLFsxLDEsMSwxLDEsMSwxXV07CnZhciBBQz1bJyNmZjZiNmInLCcjZmVjYTU3JywnI2ZmOWZmMycsJyM0OGRiZmInLCcjNTVlZmM0J107CmZ1bmN0aW9uIGRzKHNwcix4LHkscyxjbHIpe2MuZmlsbFN0eWxlPWNscjtmb3IodmFyIHI9MDtyPHNwci5sZW5ndGg7cisrKWZvcih2YXIgY289MDtjbzxzcHJbcl0ubGVuZ3RoO2NvKyspaWYoc3ByW3JdW2NvXSljLmZpbGxSZWN0KHgrY28qcyx5K3IqcyxzLHMpfQpmdW5jdGlvbiBpbnZJbml0KCl7aW52LnBsPXt4OlcvMi03LHk6MTcyfTtpbnYuYnVsPVtdO2ludi5hYj1bXTtpbnYuc2M9MDtpbnYud2F2PTE7aW52Lmxpdj0zO2ludi5tZD0xO2ludi5tdD0wO2ludi5tcz0yMDtpbnYuZ289ZmFsc2U7aW52LnN0YXJzPVtdO2Zvcih2YXIgaT0wO2k8MzU7aSsrKWludi5zdGFycy5wdXNoKHt4Ok1hdGgucmFuZG9tKCkqVyx5Ok1hdGgucmFuZG9tKCkqSCxiOk1hdGgucmFuZG9tKCkqNixzOk1hdGgucmFuZG9tKCkqLjgrLjN9KTtpbnZTcGF3bigpfQpmdW5jdGlvbiBpbnZTcGF3bigpe2ludi5hbGk9W107dmFyIHJvd3M9TWF0aC5taW4oMytNYXRoLmZsb29yKGludi53YXYvMiksNSksY29scz1NYXRoLm1pbig2K2ludi53YXYsOSk7Zm9yKHZhciByPTA7cjxyb3dzO3IrKylmb3IodmFyIGNvPTA7Y288Y29scztjbysrKWludi5hbGkucHVzaCh7eDoxMitjbyoyMix5OjE4K3IqMTUsdHlwZTpyPHJvd3MvMj8xOjIsYWxpdmU6dHJ1ZSxjb2xvcjpBQ1tyJUFDLmxlbmd0aF19KTtpbnYubXM9TWF0aC5tYXgoNSwyMC1pbnYud2F2KjIpfQpmdW5jdGlvbiBpbnZTaG9vdCgpe2lmKGludi5idWwubGVuZ3RoPDMmJiFpbnYuZ28paW52LmJ1bC5wdXNoKHt4Omludi5wbC54KzYseTppbnYucGwueS0yfSl9CnZhciBpbnZMSD1mYWxzZSxpbnZSSD1mYWxzZTsKZnVuY3Rpb24gaW52VGljaygpe2lmKGludi5nbylyZXR1cm47aWYoaW52TEgpaW52LnBsLng9TWF0aC5tYXgoMixpbnYucGwueC0yLjUpO2lmKGludlJIKWludi5wbC54PU1hdGgubWluKFctMTYsaW52LnBsLngrMi41KTtmb3IodmFyIGk9MDtpPGludi5idWwubGVuZ3RoO2krKylpbnYuYnVsW2ldLnktPTQ7aW52LmJ1bD1pbnYuYnVsLmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4gYi55Pi01fSk7Zm9yKHZhciBpPTA7aTxpbnYuYWIubGVuZ3RoO2krKylpbnYuYWJbaV0ueSs9MjtpbnYuYWI9aW52LmFiLmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4gYi55PDIwMH0pO2ludi5tdCsrO2lmKGludi5tdD49aW52Lm1zKXtpbnYubXQ9MDt2YXIgZWRnZT1mYWxzZTtpbnYuYWxpLmZvckVhY2goZnVuY3Rpb24oYSl7aWYoIWEuYWxpdmUpcmV0dXJuO2EueCs9aW52Lm1kKjM7aWYoYS54PDJ8fGEueD5XLTE4KWVkZ2U9dHJ1ZX0pO2lmKGVkZ2Upe2ludi5tZD0taW52Lm1kO2ludi5hbGkuZm9yRWFjaChmdW5jdGlvbihhKXtpZihhLmFsaXZlKWEueSs9Nn0pfXZhciBhbGl2ZT1pbnYuYWxpLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYS5hbGl2ZX0pO2lmKGFsaXZlLmxlbmd0aCYmTWF0aC5yYW5kb20oKTwuMjUraW52LndhdiouMDQpe3ZhciBzPWFsaXZlW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSphbGl2ZS5sZW5ndGgpXTtpbnYuYWIucHVzaCh7eDpzLngrNCx5OnMueSs4fSl9fWludi5idWwuZm9yRWFjaChmdW5jdGlvbihiKXtpbnYuYWxpLmZvckVhY2goZnVuY3Rpb24oYSl7aWYoIWEuYWxpdmUpcmV0dXJuO2lmKGIueD5hLngmJmIueDxhLngrMTYmJmIueT5hLnkmJmIueTxhLnkrMTIpe2EuYWxpdmU9ZmFsc2U7Yi55PS05OTtpbnYuc2MrPWEudHlwZT09PTE/MjA6MTA7YWRkUChhLngrOCxhLnkrNiw2LFthLmNvbG9yXSl9fSl9KTtpbnYuYWIuZm9yRWFjaChmdW5jdGlvbihiKXtpZihiLng+aW52LnBsLngmJmIueDxpbnYucGwueCsxNCYmYi55Pmludi5wbC55JiZiLnk8aW52LnBsLnkrMTApe2ludi5saXYtLTtiLnk9OTk5O2FkZFAoaW52LnBsLngrNyxpbnYucGwueSs1LDgsWycjZmY2YjZiJ10pO2lmKGludi5saXY8PTApaW52LmdvPXRydWV9fSk7aWYoaW52LmFsaS5zb21lKGZ1bmN0aW9uKGEpe3JldHVybiBhLmFsaXZlJiZhLnk+MTYwfSkpaW52LmdvPXRydWU7aWYoaW52LmFsaS5ldmVyeShmdW5jdGlvbihhKXtyZXR1cm4hYS5hbGl2ZX0pKXtpbnYud2F2Kys7aW52U3Bhd24oKX19CmZ1bmN0aW9uIGludkRyYXcoKXtjLmZpbGxTdHlsZT0nIzA2MDgxMCc7Yy5maWxsUmVjdCgwLDAsVyxIKTtpbnYuc3RhcnMuZm9yRWFjaChmdW5jdGlvbihzKXtzLmIrPS4wMTU7Yy5maWxsU3R5bGU9J3JnYmEoMjU1LDI1NSwyNTUsJysoTWF0aC5zaW4ocy5iKSouMysuMTUpKycpJztjLmZpbGxSZWN0KHMueCxzLnkscy5zLHMucyl9KTsKYy5mb250PUYrJzdweCBBcmlhbCc7Yy50ZXh0QWxpZ249J2xlZnQnO2MuZmlsbFN0eWxlPSdyZ2JhKDI1NSwyNTUsMjU1LC41KSc7Yy5maWxsVGV4dCgnRk9DVVMgRklSRScsNCwxMCk7Yy50ZXh0QWxpZ249J3JpZ2h0JztjLmZpbGxTdHlsZT0nI2ZlY2E1Nyc7Yy5maWxsVGV4dCgnU0NPUkU6JytpbnYuc2MrJyBXQVZFOicraW52LndhdiwyMzYsMTApOwpmb3IodmFyIGk9MDtpPGludi5saXY7aSsrKWRzKFNIUCw0K2kqMTQsMTgyLDEuMiwncmdiYSgyNTUsMTA3LDEwNywuNiknKTsKaW52LmFsaS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2lmKCFhLmFsaXZlKXJldHVybjtkcyhhLnR5cGU9PT0xP0ExOkEyLGEueCxhLnksMixhLmNvbG9yKX0pOwpkcyhTSFAsaW52LnBsLngsaW52LnBsLnksMiwnIzQ4ZGJmYicpO2lmKE1hdGgucmFuZG9tKCk+LjQpe2MuZmlsbFN0eWxlPScjZmVjYTU3JztjLmZpbGxSZWN0KGludi5wbC54KzUsaW52LnBsLnkrMTAsNCxNYXRoLnJhbmRvbSgpKjMrMSl9Cmludi5idWwuZm9yRWFjaChmdW5jdGlvbihiKXtjLmZpbGxTdHlsZT0nI2ZlY2E1Nyc7Yy5maWxsUmVjdChiLngsYi55LDIsNil9KTtjLmZpbGxTdHlsZT0nI2ZmNmI2Yic7aW52LmFiLmZvckVhY2goZnVuY3Rpb24oYil7Yy5maWxsUmVjdChiLngsYi55LDIsNCl9KTsKaWYoaW52LmdvKXtjLmZpbGxTdHlsZT0ncmdiYSg2LDgsMTYsLjkyKSc7Yy5maWxsUmVjdCgwLDAsVyxIKTtjLnRleHRBbGlnbj0nY2VudGVyJztjLmZvbnQ9RisnMTRweCBBcmlhbCc7Yy5maWxsU3R5bGU9JyNmZjZiNmInO2MuZmlsbFRleHQoJ0dBTUUgT1ZFUicsMTIwLDg1KTtjLmZvbnQ9RisnMTBweCBBcmlhbCc7Yy5maWxsU3R5bGU9JyNmZWNhNTcnO2MuZmlsbFRleHQoJ1NDT1JFOiAnK2ludi5zYywxMjAsMTAzKTtjLmZvbnQ9JzYwMCA3cHggQXJpYWwnO2MuZmlsbFN0eWxlPSdyZ2JhKDI1NSwyNTUsMjU1LC4zKSc7Yy5maWxsVGV4dCgnU1RBUlQgVE8gUkVUUlknLDEyMCwxMTkpfQpkcmF3UCgpOwp9CmZ1bmN0aW9uIGludklucHV0KGJ0bil7aWYoaW52LmdvJiZidG49PT0nc3RhcnQnKXtpbnZJbml0KCk7cmV0dXJufWlmKGJ0bj09PSdhJ3x8YnRuPT09J2InfHxidG49PT0ndScpaW52U2hvb3QoKX0KCi8vID09PT09PT09PT09PT09PT09PT09IE1BSU4gTE9PUCA9PT09PT09PT09PT09PT09PT09PQpmdW5jdGlvbiBtYWluTG9vcCgpewogIGlmKFNUQVRFPT09J2Jvb3QnKWRyYXdCb290KCk7CiAgZWxzZSBpZihTVEFURT09PSdtZW51JylkcmF3TWVudSgpOwogIGVsc2UgaWYoU1RBVEU9PT0ndGV0cmlzJyl7dGV0VGljaygpO3RldERyYXcoKX0KICBlbHNlIGlmKFNUQVRFPT09J3NuYWtlJyl7c25rVGljaygpO3Nua0RyYXcoKX0KICBlbHNlIGlmKFNUQVRFPT09J2JyZWFrb3V0Jyl7YnJrTXYoKTticmtUaWNrKCk7YnJrRHJhdygpfQogIGVsc2UgaWYoU1RBVEU9PT0naW52YWRlcnMnKXtpbnZUaWNrKCk7aW52RHJhdygpfQogIHJlcXVlc3RBbmltYXRpb25GcmFtZShtYWluTG9vcCk7Cn0KbWFpbkxvb3AoKTsKCi8vID09PT09PT09PT09PT09PT09PT09IElOUFVUID09PT09PT09PT09PT09PT09PT09CmZ1bmN0aW9uIG9uQnRuKGJ0bil7CiAgaWYoU1RBVEU9PT0nYm9vdCcpe2lmKGJ0bj09PSdzdGFydCd8fGJ0bj09PSdhJyl7U1RBVEU9J21lbnUnO2FkZFAoMTIwLDEzMCwyMCxSQyl9O3JldHVybn0KICBpZihTVEFURT09PSdtZW51Jyl7aWYoYnRuPT09J3UnKW1lbnVTZWw9TWF0aC5tYXgoMCxtZW51U2VsLTEpO2lmKGJ0bj09PSdkJyltZW51U2VsPU1hdGgubWluKDMsbWVudVNlbCsxKTtpZihidG49PT0nYSd8fGJ0bj09PSdzdGFydCcpe3ZhciBnPVsndGV0cmlzJywnc25ha2UnLCdicmVha291dCcsJ2ludmFkZXJzJ11bbWVudVNlbF07U1RBVEU9ZztpZihnPT09J3RldHJpcycpdGV0SW5pdCgpO2lmKGc9PT0nc25ha2UnKXNua0luaXQoKTtpZihnPT09J2JyZWFrb3V0JylicmtJbml0KCk7aWYoZz09PSdpbnZhZGVycycpaW52SW5pdCgpO2FkZFAoMTIwLDk2LDE1LFtnYW1lc1ttZW51U2VsXS5jb2xvciwnI2ZmZiddKX1yZXR1cm59CiAgaWYoYnRuPT09J2hvbWUnKXtTVEFURT0nbWVudSc7cmV0dXJufQogIGlmKFNUQVRFPT09J3RldHJpcycpdGV0SW5wdXQoYnRuKTsKICBpZihTVEFURT09PSdzbmFrZScpc25rSW5wdXQoYnRuKTsKICBpZihTVEFURT09PSdicmVha291dCcpYnJrSW5wdXQoYnRuKTsKICBpZihTVEFURT09PSdpbnZhZGVycycpaW52SW5wdXQoYnRuKTsKfQoKdmFyIGJpbmQ9ZnVuY3Rpb24oaWQsZm4pe2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO2ZuKCl9KX07CnZhciB1YmluZD1mdW5jdGlvbihpZCxmbil7dmFyIGVsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtbJ3BvaW50ZXJ1cCcsJ3BvaW50ZXJsZWF2ZScsJ3BvaW50ZXJjYW5jZWwnXS5mb3JFYWNoKGZ1bmN0aW9uKGV2KXtlbC5hZGRFdmVudExpc3RlbmVyKGV2LGZuKX0pfTsKYmluZCgnYkEnLGZ1bmN0aW9uKCl7b25CdG4oJ2EnKX0pO2JpbmQoJ2JCJyxmdW5jdGlvbigpe29uQnRuKCdiJyl9KTsKYmluZCgnbVN0JyxmdW5jdGlvbigpe29uQnRuKCdzdGFydCcpfSk7YmluZCgnbVNlbCcsZnVuY3Rpb24oKXtvbkJ0bignc2VsZWN0Jyl9KTsKYmluZCgnaG9tZUJ0bicsZnVuY3Rpb24oKXtvbkJ0bignaG9tZScpfSk7CgovLyBELXBhZCB3aXRoIGhvbGQKdmFyIGhvbGRJPW51bGw7ZnVuY3Rpb24gaG9sZFN0YXJ0KGZuKXtmbigpO2hvbGRJPXNldEludGVydmFsKGZuLDcwKX1mdW5jdGlvbiBob2xkU3RvcCgpe2NsZWFySW50ZXJ2YWwoaG9sZEkpfQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHUnKS5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpOwogIGlmKFNUQVRFPT09J3RldHJpcycpe29uQnRuKCd1Jyl9CiAgZWxzZSBpZihTVEFURT09PSdicmVha291dCcpe30KICBlbHNlIGlmKFNUQVRFPT09J2ludmFkZXJzJyl7b25CdG4oJ3UnKX0KICBlbHNle29uQnRuKCd1Jyl9Cn0pOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGQnKS5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpOwogIGlmKFNUQVRFPT09J3RldHJpcycpe2hvbGRTdGFydChmdW5jdGlvbigpe2lmKCF0ZXRIaXQodGV0LmNYLHRldC5jWSsxLHRldC5jdXIpKXt0ZXQuY1krKzt0ZXQuc2NvcmUrK319KX0KICBlbHNle29uQnRuKCdkJyl9Cn0pO3ViaW5kKCdkZCcsaG9sZFN0b3ApOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGwnKS5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpOwogIGlmKFNUQVRFPT09J3RldHJpcycpe2hvbGRTdGFydChmdW5jdGlvbigpe3RldE1vdmUoLTEpfSl9CiAgZWxzZSBpZihTVEFURT09PSdicmVha291dCcpe2Jya0xIPXRydWV9CiAgZWxzZSBpZihTVEFURT09PSdpbnZhZGVycycpe2ludkxIPXRydWV9CiAgZWxzZXtvbkJ0bignbCcpfQp9KTt1YmluZCgnZGwnLGZ1bmN0aW9uKCl7aG9sZFN0b3AoKTticmtMSD1mYWxzZTtpbnZMSD1mYWxzZX0pOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHInKS5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpOwogIGlmKFNUQVRFPT09J3RldHJpcycpe2hvbGRTdGFydChmdW5jdGlvbigpe3RldE1vdmUoMSl9KX0KICBlbHNlIGlmKFNUQVRFPT09J2JyZWFrb3V0Jyl7YnJrUkg9dHJ1ZX0KICBlbHNlIGlmKFNUQVRFPT09J2ludmFkZXJzJyl7aW52Ukg9dHJ1ZX0KICBlbHNle29uQnRuKCdyJyl9Cn0pO3ViaW5kKCdkcicsZnVuY3Rpb24oKXtob2xkU3RvcCgpO2Jya1JIPWZhbHNlO2ludlJIPWZhbHNlfSk7CgovLyBLZXlib2FyZApkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJyxmdW5jdGlvbihlKXsKICBpZihlLmtleT09PSdBcnJvd1VwJylvbkJ0bigndScpO2lmKGUua2V5PT09J0Fycm93RG93bicpe29uQnRuKCdkJyk7aWYoU1RBVEU9PT0ndGV0cmlzJyYmIXRldEhpdCh0ZXQuY1gsdGV0LmNZKzEsdGV0LmN1cikpe3RldC5jWSsrO3RldC5zY29yZSsrfX0KICBpZihlLmtleT09PSdBcnJvd0xlZnQnKXtvbkJ0bignbCcpO2lmKFNUQVRFPT09J2JyZWFrb3V0JylicmtMSD10cnVlO2lmKFNUQVRFPT09J2ludmFkZXJzJylpbnZMSD10cnVlfQogIGlmKGUua2V5PT09J0Fycm93UmlnaHQnKXtvbkJ0bigncicpO2lmKFNUQVRFPT09J2JyZWFrb3V0JylicmtSSD10cnVlO2lmKFNUQVRFPT09J2ludmFkZXJzJylpbnZSSD10cnVlfQogIGlmKGUua2V5PT09JyAnKW9uQnRuKCdhJyk7aWYoZS5rZXk9PT0nRW50ZXInKW9uQnRuKCdzdGFydCcpO2lmKGUua2V5PT09J0VzY2FwZSd8fGUua2V5PT09J0JhY2tzcGFjZScpb25CdG4oJ2hvbWUnKTsKfSk7CmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJyxmdW5jdGlvbihlKXsKICBpZihlLmtleT09PSdBcnJvd0xlZnQnKXticmtMSD1mYWxzZTtpbnZMSD1mYWxzZX1pZihlLmtleT09PSdBcnJvd1JpZ2h0Jyl7YnJrUkg9ZmFsc2U7aW52Ukg9ZmFsc2V9Cn0pOwo8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==
THEN PASTE INTO YOUR BROWSER ADDRESS BAR & GO
X