3NCUbh7cABzRyEMEXAcGCAozSuxvUTf75ms · data · 2.7c767379.chunk.js_5
{
"2.7c767379.chunk.js_5": "base64:b2RlLG4uZ2V0TkFGPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPVtdLG49MTw8dCsxLGk9ZS5jbG9uZSgpO2kuY21wbigxKT49MDspe3ZhciBvO2lmKGkuaXNPZGQoKSl7dmFyIGE9aS5hbmRsbihuLTEpO289YT4obj4+MSktMT8obj4+MSktYTphLGkuaXN1Ym4obyl9ZWxzZSBvPTA7ci5wdXNoKG8pO2Zvcih2YXIgcz0wIT09aS5jbXBuKDApJiYwPT09aS5hbmRsbihuLTEpP3QrMToxLHU9MTt1PHM7dSsrKXIucHVzaCgwKTtpLml1c2hybihzKX1yZXR1cm4gcn0sbi5nZXRKU0Y9ZnVuY3Rpb24oZSx0KXt2YXIgcj1bW10sW11dO2U9ZS5jbG9uZSgpLHQ9dC5jbG9uZSgpO2Zvcih2YXIgbj0wLGk9MDtlLmNtcG4oLW4pPjB8fHQuY21wbigtaSk+MDspe3ZhciBvLGEscyx1PWUuYW5kbG4oMykrbiYzLGM9dC5hbmRsbigzKStpJjM7Mz09PXUmJih1PS0xKSwzPT09YyYmKGM9LTEpLG89MD09PSgxJnUpPzA6MyE9PShzPWUuYW5kbG4oNykrbiY3KSYmNSE9PXN8fDIhPT1jP3U6LXUsclswXS5wdXNoKG8pLGE9MD09PSgxJmMpPzA6MyE9PShzPXQuYW5kbG4oNykraSY3KSYmNSE9PXN8fDIhPT11P2M6LWMsclsxXS5wdXNoKGEpLDIqbj09PW8rMSYmKG49MS1uKSwyKmk9PT1hKzEmJihpPTEtaSksZS5pdXNocm4oMSksdC5pdXNocm4oMSl9cmV0dXJuIHJ9LG4uY2FjaGVkUHJvcGVydHk9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPSJfIit0O2UucHJvdG90eXBlW3RdPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXNbbl0/dGhpc1tuXTp0aGlzW25dPXIuY2FsbCh0aGlzKX19LG4ucGFyc2VCeXRlcz1mdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBlP24udG9BcnJheShlLCJoZXgiKTplfSxuLmludEZyb21MRT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IGkoZSwiaGV4IiwibGUiKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE3KSxpPXIoNTQpLG89cig1MCksYT1yKDk0KSgic3JjIikscz1yKDczNyksdT0oIiIrcykuc3BsaXQoInRvU3RyaW5nIik7cigyNykuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbihlKXtyZXR1cm4gcy5jYWxsKGUpfSwoZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLHMpe3ZhciBjPSJmdW5jdGlvbiI9PXR5cGVvZiByO2MmJihvKHIsIm5hbWUiKXx8aShyLCJuYW1lIix0KSksZVt0XSE9PXImJihjJiYobyhyLGEpfHxpKHIsYSxlW3RdPyIiK2VbdF06dS5qb2luKFN0cmluZyh0KSkpKSxlPT09bj9lW3RdPXI6cz9lW3RdP2VbdF09cjppKGUsdCxyKTooZGVsZXRlIGVbdF0saShlLHQscikpKX0pKEZ1bmN0aW9uLnByb3RvdHlwZSwidG9TdHJpbmciLGZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMmJnRoaXNbYV18fHMuY2FsbCh0aGlzKX0pfSxmdW5jdGlvbihlLHQpe3ZhciByPXt9Lmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiByLmNhbGwoZSx0KX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE0NSksaT1yKDcxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG4oaShlKSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig2KTtyKDg5KSxyKDM0OCkscigzNDkpLHIoMTApLG4ucmFuZG9tJiZuLnJhbmRvbS5nZXRCeXRlcz9lLmV4cG9ydHM9bi5yYW5kb206ZnVuY3Rpb24odCl7dmFyIHI9e30saT1uZXcgQXJyYXkoNCksbz1uLnV0aWwuY3JlYXRlQnVmZmVyKCk7ZnVuY3Rpb24gYSgpe3ZhciBlPW4ucHJuZy5jcmVhdGUocik7cmV0dXJuIGUuZ2V0Qnl0ZXM9ZnVuY3Rpb24odCxyKXtyZXR1cm4gZS5nZW5lcmF0ZSh0LHIpfSxlLmdldEJ5dGVzU3luYz1mdW5jdGlvbih0KXtyZXR1cm4gZS5nZW5lcmF0ZSh0KX0sZX1yLmZvcm1hdEtleT1mdW5jdGlvbihlKXt2YXIgdD1uLnV0aWwuY3JlYXRlQnVmZmVyKGUpO3JldHVybihlPW5ldyBBcnJheSg0KSlbMF09dC5nZXRJbnQzMigpLGVbMV09dC5nZXRJbnQzMigpLGVbMl09dC5nZXRJbnQzMigpLGVbM109dC5nZXRJbnQzMigpLG4uYWVzLl9leHBhbmRLZXkoZSwhMSl9LHIuZm9ybWF0U2VlZD1mdW5jdGlvbihlKXt2YXIgdD1uLnV0aWwuY3JlYXRlQnVmZmVyKGUpO3JldHVybihlPW5ldyBBcnJheSg0KSlbMF09dC5nZXRJbnQzMigpLGVbMV09dC5nZXRJbnQzMigpLGVbMl09dC5nZXRJbnQzMigpLGVbM109dC5nZXRJbnQzMigpLGV9LHIuY2lwaGVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4uYWVzLl91cGRhdGVCbG9jayhlLHQsaSwhMSksby5wdXRJbnQzMihpWzBdKSxvLnB1dEludDMyKGlbMV0pLG8ucHV0SW50MzIoaVsyXSksby5wdXRJbnQzMihpWzNdKSxvLmdldEJ5dGVzKCl9LHIuaW5jcmVtZW50PWZ1bmN0aW9uKGUpe3JldHVybisrZVszXSxlfSxyLm1kPW4ubWQuc2hhMjU2O3ZhciBzPWEoKSx1PW51bGwsYz1uLnV0aWwuZ2xvYmFsU2NvcGUsZj1jLmNyeXB0b3x8Yy5tc0NyeXB0bztpZihmJiZmLmdldFJhbmRvbVZhbHVlcyYmKHU9ZnVuY3Rpb24oZSl7cmV0dXJuIGYuZ2V0UmFuZG9tVmFsdWVzKGUpfSksbi5vcHRpb25zLnVzZVB1cmVKYXZhU2NyaXB0fHwhbi51dGlsLmlzTm9kZWpzJiYhdSl7aWYoInVuZGVmaW5lZCI9PT10eXBlb2Ygd2luZG93fHx3aW5kb3cuZG9jdW1lbnQscy5jb2xsZWN0SW50KCtuZXcgRGF0ZSwzMiksInVuZGVmaW5lZCIhPT10eXBlb2YgbmF2aWdhdG9yKXt2YXIgbD0iIjtmb3IodmFyIGggaW4gbmF2aWdhdG9yKXRyeXsic3RyaW5nIj09dHlwZW9mIG5hdmlnYXRvcltoXSYmKGwrPW5hdmlnYXRvcltoXSl9Y2F0Y2gocCl7fXMuY29sbGVjdChsKSxsPW51bGx9dCYmKHQoKS5tb3VzZW1vdmUoZnVuY3Rpb24oZSl7cy5jb2xsZWN0SW50KGUuY2xpZW50WCwxNikscy5jb2xsZWN0SW50KGUuY2xpZW50WSwxNil9KSx0KCkua2V5cHJlc3MoZnVuY3Rpb24oZSl7cy5jb2xsZWN0SW50KGUuY2hhckNvZGUsOCl9KSl9aWYobi5yYW5kb20pZm9yKHZhciBoIGluIHMpbi5yYW5kb21baF09c1toXTtlbHNlIG4ucmFuZG9tPXM7bi5yYW5kb20uY3JlYXRlSW5zdGFuY2U9YSxlLmV4cG9ydHM9bi5yYW5kb219KCJ1bmRlZmluZWQiIT09dHlwZW9mIGpRdWVyeT9qUXVlcnk6bnVsbCl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE3MykoIndrcyIpLGk9cig0MDIpLG89cigzMykuU3ltYm9sLGE9cig3MjIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbltlXXx8KG5bZV09YSYmb1tlXXx8KGE/bzppKSgiU3ltYm9sLiIrZSkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjgpLGk9cig5Myk7ZS5leHBvcnRzPXIoMjkpP2Z1bmN0aW9uKGUsdCxyKXtyZXR1cm4gbi5mKGUsdCxpKDEscikpfTpmdW5jdGlvbihlLHQscil7cmV0dXJuIGVbdF09cixlfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDE0KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hIWUmJm4oZnVuY3Rpb24oKXt0P2UuY2FsbChudWxsLGZ1bmN0aW9uKCl7fSwxKTplLmNhbGwobnVsbCl9KX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig0NyksaT1yKDcpO2Z1bmN0aW9uIG8oZSx0KXtyZXR1cm4gNTUyOTY9PT0oNjQ1MTImZS5jaGFyQ29kZUF0KHQpKSYmKCEodDwwfHx0KzE+PWUubGVuZ3RoKSYmNTYzMjA9PT0oNjQ1MTImZS5jaGFyQ29kZUF0KHQrMSkpKX1mdW5jdGlvbiBhKGUpe3JldHVybihlPj4+MjR8ZT4+PjgmNjUyODB8ZTw8OCYxNjcxMTY4MHwoMjU1JmUpPDwyNCk+Pj4wfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIDE9PT1lLmxlbmd0aD8iMCIrZTplfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIDc9PT1lLmxlbmd0aD8iMCIrZTo2PT09ZS5sZW5ndGg/IjAwIitlOjU9PT1lLmxlbmd0aD8iMDAwIitlOjQ9PT1lLmxlbmd0aD8iMDAwMCIrZTozPT09ZS5sZW5ndGg/IjAwMDAwIitlOjI9PT1lLmxlbmd0aD8iMDAwMDAwIitlOjE9PT1lLmxlbmd0aD8iMDAwMDAwMCIrZTplfXQuaW5oZXJpdHM9aSx0LnRvQXJyYXk9ZnVuY3Rpb24oZSx0KXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlLnNsaWNlKCk7aWYoIWUpcmV0dXJuW107dmFyIHI9W107aWYoInN0cmluZyI9PT10eXBlb2YgZSlpZih0KXtpZigiaGV4Ij09PXQpZm9yKChlPWUucmVwbGFjZSgvW15hLXowLTldKy9naSwiIikpLmxlbmd0aCUyIT09MCYmKGU9IjAiK2UpLGk9MDtpPGUubGVuZ3RoO2krPTIpci5wdXNoKHBhcnNlSW50KGVbaV0rZVtpKzFdLDE2KSl9ZWxzZSBmb3IodmFyIG49MCxpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBhPWUuY2hhckNvZGVBdChpKTthPDEyOD9yW24rK109YTphPDIwNDg/KHJbbisrXT1hPj42fDE5MixyW24rK109NjMmYXwxMjgpOm8oZSxpKT8oYT02NTUzNisoKDEwMjMmYSk8PDEwKSsoMTAyMyZlLmNoYXJDb2RlQXQoKytpKSkscltuKytdPWE+PjE4fDI0MCxyW24rK109YT4+MTImNjN8MTI4LHJbbisrXT1hPj42JjYzfDEyOCxyW24rK109NjMmYXwxMjgpOihyW24rK109YT4+MTJ8MjI0LHJbbisrXT1hPj42JjYzfDEyOCxyW24rK109NjMmYXwxMjgpfWVsc2UgZm9yKGk9MDtpPGUubGVuZ3RoO2krKylyW2ldPTB8ZVtpXTtyZXR1cm4gcn0sdC50b0hleD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9IiIscj0wO3I8ZS5sZW5ndGg7cisrKXQrPXMoZVtyXS50b1N0cmluZygxNikpO3JldHVybiB0fSx0Lmh0b25sPWEsdC50b0hleDMyPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPSIiLG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIGk9ZVtuXTsibGl0dGxlIj09PXQmJihpPWEoaSkpLHIrPXUoaS50b1N0cmluZygxNikpfXJldHVybiByfSx0Lnplcm8yPXMsdC56ZXJvOD11LHQuam9pbjMyPWZ1bmN0aW9uKGUsdCxyLGkpe3ZhciBvPXItdDtuKG8lND09PTApO2Zvcih2YXIgYT1uZXcgQXJyYXkoby80KSxzPTAsdT10O3M8YS5sZW5ndGg7cysrLHUrPTQpe3ZhciBjO2M9ImJpZyI9PT1pP2VbdV08PDI0fGVbdSsxXTw8MTZ8ZVt1KzJdPDw4fGVbdSszXTplW3UrM108PDI0fGVbdSsyXTw8MTZ8ZVt1KzFdPDw4fGVbdV0sYVtzXT1jPj4+MH1yZXR1cm4gYX0sdC5zcGxpdDMyPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPW5ldyBBcnJheSg0KmUubGVuZ3RoKSxuPTAsaT0wO248ZS5sZW5ndGg7bisrLGkrPTQpe3ZhciBvPWVbbl07ImJpZyI9PT10PyhyW2ldPW8+Pj4yNCxyW2krMV09bz4+PjE2JjI1NSxyW2krMl09bz4+PjgmMjU1LHJbaSszXT0yNTUmbyk6KHJbaSszXT1vPj4+MjQscltpKzJdPW8+Pj4xNiYyNTUscltpKzFdPW8+Pj44JjI1NSxyW2ldPTI1NSZvKX1yZXR1cm4gcn0sdC5yb3RyMzI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT4+PnR8ZTw8MzItdH0sdC5yb3RsMzI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZTw8dHxlPj4+MzItdH0sdC5zdW0zMj1mdW5jdGlvbihlLHQpe3JldHVybiBlK3Q+Pj4wfSx0LnN1bTMyXzM9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlK3Qrcj4+PjB9LHQuc3VtMzJfND1mdW5jdGlvbihlLHQscixuKXtyZXR1cm4gZSt0K3Irbj4+PjB9LHQuc3VtMzJfNT1mdW5jdGlvbihlLHQscixuLGkpe3JldHVybiBlK3QrcituK2k+Pj4wfSx0LnN1bTY0PWZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBpPWVbdF0sbz1uK2VbdCsxXT4+PjAsYT0obzxuPzE6MCkrcitpO2VbdF09YT4+PjAsZVt0KzFdPW99LHQuc3VtNjRfaGk9ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuKHQrbj4+PjA8dD8xOjApK2Urcj4+PjB9LHQuc3VtNjRfbG89ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIHQrbj4+PjB9LHQuc3VtNjRfNF9oaT1mdW5jdGlvbihlLHQscixuLGksbyxhLHMpe3ZhciB1PTAsYz10O3JldHVybiB1Kz0oYz1jK24+Pj4wKTx0PzE6MCx1Kz0oYz1jK28+Pj4wKTxvPzE6MCxlK3IraSthKyh1Kz0oYz1jK3M+Pj4wKTxzPzE6MCk+Pj4wfSx0LnN1bTY0XzRfbG89ZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzKXtyZXR1cm4gdCtuK28rcz4+PjB9LHQuc3VtNjRfNV9oaT1mdW5jdGlvbihlLHQscixuLGksbyxhLHMsdSxjKXt2YXIgZj0wLGw9dDtyZXR1cm4gZis9KGw9bCtuPj4+MCk8dD8xOjAsZis9KGw9bCtvPj4+MCk8bz8xOjAsZis9KGw9bCtzPj4+MCk8cz8xOjAsZStyK2krYSt1KyhmKz0obD1sK2M+Pj4wKTxjPzE6MCk+Pj4wfSx0LnN1bTY0XzVfbG89ZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzLHUsYyl7cmV0dXJuIHQrbitvK3MrYz4+PjB9LHQucm90cjY0X2hpPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4odDw8MzItcnxlPj4+cik+Pj4wfSx0LnJvdHI2NF9sbz1mdW5jdGlvbihlLHQscil7cmV0dXJuKGU8PDMyLXJ8dD4+PnIpPj4+MH0sdC5zaHI2NF9oaT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU+Pj5yfSx0LnNocjY0X2xvPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4oZTw8MzItcnx0Pj4+cik+Pj4wfX0sZnVuY3Rpb24oZSx0KXt2YXIgcj17fS5oYXNPd25Qcm9wZXJ0eTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gci5jYWxsKGUsdCl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig1OSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtpZihuKGUpLHZvaWQgMD09PXQpcmV0dXJuIGU7c3dpdGNoKHIpe2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIGUuY2FsbCh0LHIpfTtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKHIsbil7cmV0dXJuIGUuY2FsbCh0LHIsbil9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24ocixuLGkpe3JldHVybiBlLmNhbGwodCxyLG4saSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHQsYXJndW1lbnRzKX19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBUeXBlRXJyb3IoZSsiIGlzIG5vdCBhIGZ1bmN0aW9uISIpO3JldHVybiBlfX0sZnVuY3Rpb24oZSx0KXt2YXIgcj1NYXRoLmNlaWwsbj1NYXRoLmZsb29yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaXNOYU4oZT0rZSk/MDooZT4wP246cikoZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNDYpLGk9cig5Myksbz1yKDUxKSxhPXIoODIpLHM9cig1MCksdT1yKDQxNiksYz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO3QuZj1yKDI5KT9jOmZ1bmN0aW9uKGUsdCl7aWYoZT1vKGUpLHQ9YSh0LCEwKSx1KXRyeXtyZXR1cm4gYyhlLHQpfWNhdGNoKHIpe31pZihzKGUsdCkpcmV0dXJuIGkoIW4uZi5jYWxsKGUsdCksZVt0XSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyKSxpPXIoMjcpLG89cigxNCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9KGkuT2JqZWN0fHx7fSlbZV18fE9iamVjdFtlXSxhPXt9O2FbZV09dChyKSxuKG4uUytuLkYqbyhmdW5jdGlvbigpe3IoMSl9KSwiT2JqZWN0IixhKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDU4KSxpPXIoMTQ1KSxvPXIoMzYpLGE9cigyMykscz1yKDQzNik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9MT09ZSx1PTI9PWUsYz0zPT1lLGY9ND09ZSxsPTY9PWUsaD01PT1lfHxsLHA9dHx8cztyZXR1cm4gZnVuY3Rpb24odCxzLGQpe2Zvcih2YXIgeSxnLHY9byh0KSxtPWkodiksYj1uKHMsZCwzKSxfPWEobS5sZW5ndGgpLFM9MCxFPXI/cCh0LF8pOnU/cCh0LDApOnZvaWQgMDtfPlM7UysrKWlmKChofHxTIGluIG0pJiYoZz1iKHk9bVtTXSxTLHYpLGUpKWlmKHIpRVtTXT1nO2Vsc2UgaWYoZylzd2l0Y2goZSl7Y2FzZSAzOnJldHVybiEwO2Nhc2UgNTpyZXR1cm4geTtjYXNlIDY6cmV0dXJuIFM7Y2FzZSAyOkUucHVzaCh5KX1lbHNlIGlmKGYpcmV0dXJuITE7cmV0dXJuIGw/LTE6Y3x8Zj9mOkV9fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDcxKSxpPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsbz1ufHxpfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpO2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig2KTtyKDEwKSxyKDkwKTt2YXIgaT1lLmV4cG9ydHM9bi5hc24xPW4uYXNuMXx8e307ZnVuY3Rpb24gbyhlLHQscil7aWYocj50KXt2YXIgbj1uZXcgRXJyb3IoIlRvbyBmZXcgYnl0ZXMgdG8gcGFyc2UgREVSLiIpO3Rocm93IG4uYXZhaWxhYmxlPWUubGVuZ3RoKCksbi5yZW1haW5pbmc9dCxuLnJlcXVlc3RlZD1yLG59fWkuQ2xhc3M9e1VOSVZFUlNBTDowLEFQUExJQ0FUSU9OOjY0LENPTlRFWFRfU1BFQ0lGSUM6MTI4LFBSSVZBVEU6MTkyfSxpLlR5cGU9e05PTkU6MCxCT09MRUFOOjEsSU5URUdFUjoyLEJJVFNUUklORzozLE9DVEVUU1RSSU5HOjQsTlVMTDo1LE9JRDo2LE9ERVNDOjcsRVhURVJOQUw6OCxSRUFMOjksRU5VTUVSQVRFRDoxMCxFTUJFRERFRDoxMSxVVEY4OjEyLFJPSUQ6MTMsU0VRVUVOQ0U6MTYsU0VUOjE3LFBSSU5UQUJMRVNUUklORzoxOSxJQTVTVFJJTkc6MjIsVVRDVElNRToyMyxHRU5FUkFMSVpFRFRJTUU6MjQsQk1QU1RSSU5HOjMwfSxpLmNyZWF0ZT1mdW5jdGlvbihlLHQscixvLGEpe2lmKG4udXRpbC5pc0FycmF5KG8pKXtmb3IodmFyIHM9W10sdT0wO3U8by5sZW5ndGg7Kyt1KXZvaWQgMCE9PW9bdV0mJnMucHVzaChvW3VdKTtvPXN9dmFyIGM9e3RhZ0NsYXNzOmUsdHlwZTp0LGNvbnN0cnVjdGVkOnIsY29tcG9zZWQ6cnx8bi51dGlsLmlzQXJyYXkobyksdmFsdWU6b307cmV0dXJuIGEmJiJiaXRTdHJpbmdDb250ZW50cyJpbiBhJiYoYy5iaXRTdHJpbmdDb250ZW50cz1hLmJpdFN0cmluZ0NvbnRlbnRzLGMub3JpZ2luYWw9aS5jb3B5KGMpKSxjfSxpLmNvcHk9ZnVuY3Rpb24oZSx0KXt2YXIgcjtpZihuLnV0aWwuaXNBcnJheShlKSl7cj1bXTtmb3IodmFyIG89MDtvPGUubGVuZ3RoOysrbylyLnB1c2goaS5jb3B5KGVbb10sdCkpO3JldHVybiByfXJldHVybiJzdHJpbmciPT09dHlwZW9mIGU/ZToocj17dGFnQ2xhc3M6ZS50YWdDbGFzcyx0eXBlOmUudHlwZSxjb25zdHJ1Y3RlZDplLmNvbnN0cnVjdGVkLGNvbXBvc2VkOmUuY29tcG9zZWQsdmFsdWU6aS5jb3B5KGUudmFsdWUsdCl9LHQmJiF0LmV4Y2x1ZGVCaXRTdHJpbmdDb250ZW50cyYmKHIuYml0U3RyaW5nQ29udGVudHM9ZS5iaXRTdHJpbmdDb250ZW50cykscil9LGkuZXF1YWxzPWZ1bmN0aW9uKGUsdCxyKXtpZihuLnV0aWwuaXNBcnJheShlKSl7aWYoIW4udXRpbC5pc0FycmF5KHQpKXJldHVybiExO2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBvPTA7bzxlLmxlbmd0aDsrK28paWYoIWkuZXF1YWxzKGVbb10sdFtvXSkpcmV0dXJuITE7cmV0dXJuITB9aWYodHlwZW9mIGUhPT10eXBlb2YgdClyZXR1cm4hMTtpZigic3RyaW5nIj09PXR5cGVvZiBlKXJldHVybiBlPT09dDt2YXIgYT1lLnRhZ0NsYXNzPT09dC50YWdDbGFzcyYmZS50eXBlPT09dC50eXBlJiZlLmNvbnN0cnVjdGVkPT09dC5jb25zdHJ1Y3RlZCYmZS5jb21wb3NlZD09PXQuY29tcG9zZWQmJmkuZXF1YWxzKGUudmFsdWUsdC52YWx1ZSk7cmV0dXJuIHImJnIuaW5jbHVkZUJpdFN0cmluZ0NvbnRlbnRzJiYoYT1hJiZlLmJpdFN0cmluZ0NvbnRlbnRzPT09dC5iaXRTdHJpbmdDb250ZW50cyksYX0saS5nZXRCZXJWYWx1ZUxlbmd0aD1mdW5jdGlvbihlKXt2YXIgdD1lLmdldEJ5dGUoKTtpZigxMjghPT10KXJldHVybiAxMjgmdD9lLmdldEludCgoMTI3JnQpPDwzKTp0fTt2YXIgYT1mdW5jdGlvbihlLHQpe3ZhciByPWUuZ2V0Qnl0ZSgpO2lmKDEyOCE9PXIpe3ZhciBuO2lmKDEyOCZyKXt2YXIgaT0xMjcmcjtvKGUsLS10LGkpLG49ZS5nZXRJbnQoaTw8Myl9ZWxzZSBuPXI7aWYobjwwKXRocm93IG5ldyBFcnJvcigiTmVnYXRpdmUgbGVuZ3RoOiAiK24pO3JldHVybiBufX07aS5mcm9tRGVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PXtzdHJpY3Q6ITAsZGVjb2RlQml0U3RyaW5nczohMH0pLCJib29sZWFuIj09PXR5cGVvZiB0JiYodD17c3RyaWN0OnQsZGVjb2RlQml0U3RyaW5nczohMH0pLCJzdHJpY3QiaW4gdHx8KHQuc3RyaWN0PSEwKSwiZGVjb2RlQml0U3RyaW5ncyJpbiB0fHwodC5kZWNvZGVCaXRTdHJpbmdzPSEwKSwic3RyaW5nIj09PXR5cGVvZiBlJiYoZT1uLnV0aWwuY3JlYXRlQnVmZmVyKGUpKSxmdW5jdGlvbiBlKHQscixuLHMpe3ZhciB1O28odCxyLDIpO3ZhciBjPXQuZ2V0Qnl0ZSgpO3ItLTt2YXIgZj0xOTImYzt2YXIgbD0zMSZjO3U9dC5sZW5ndGgoKTt2YXIgaD1hKHQscik7ci09dS10Lmxlbmd0aCgpO2lmKHZvaWQgMCE9PWgmJmg+cil7aWYocy5zdHJpY3Qpe3ZhciBwPW5ldyBFcnJvcigiVG9vIGZldyBieXRlcyB0byByZWFkIEFTTi4xIHZhbHVlLiIpO3Rocm93IHAuYXZhaWxhYmxlPXQubGVuZ3RoKCkscC5yZW1haW5pbmc9cixwLnJlcXVlc3RlZD1oLHB9aD1yfXZhciBkO3ZhciB5O3ZhciBnPTMyPT09KDMyJmMpO2lmKGcpaWYoZD1bXSx2b2lkIDA9PT1oKWZvcig7Oyl7aWYobyh0LHIsMiksdC5ieXRlcygyKT09PVN0cmluZy5mcm9tQ2hhckNvZGUoMCwwKSl7dC5nZXRCeXRlcygyKSxyLT0yO2JyZWFrfXU9dC5sZW5ndGgoKSxkLnB1c2goZSh0LHIsbisxLHMpKSxyLT11LXQubGVuZ3RoKCl9ZWxzZSBmb3IoO2g+MDspdT10Lmxlbmd0aCgpLGQucHVzaChlKHQsaCxuKzEscykpLHItPXUtdC5sZW5ndGgoKSxoLT11LXQubGVuZ3RoKCk7dm9pZCAwPT09ZCYmZj09PWkuQ2xhc3MuVU5JVkVSU0FMJiZsPT09aS5UeXBlLkJJVFNUUklORyYmKHk9dC5ieXRlcyhoKSk7aWYodm9pZCAwPT09ZCYmcy5kZWNvZGVCaXRTdHJpbmdzJiZmPT09aS5DbGFzcy5VTklWRVJTQUwmJmw9PT1pLlR5cGUuQklUU1RSSU5HJiZoPjEpe3ZhciB2PXQucmVhZCxtPXIsYj0wO2lmKGw9PT1pLlR5cGUuQklUU1RSSU5HJiYobyh0LHIsMSksYj10LmdldEJ5dGUoKSxyLS0pLDA9PT1iKXRyeXt1PXQubGVuZ3RoKCk7dmFyIF89e3ZlcmJvc2U6cy52ZXJib3NlLHN0cmljdDohMCxkZWNvZGVCaXRTdHJpbmdzOiEwfSxTPWUodCxyLG4rMSxfKSxFPXUtdC5sZW5ndGgoKTtyLT1FLGw9PWkuVHlwZS5CSVRTVFJJTkcmJkUrKzt2YXIgdz1TLnRhZ0NsYXNzO0UhPT1ofHx3IT09aS5DbGFzcy5VTklWRVJTQUwmJnchPT1pLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUN8fChkPVtTXSl9Y2F0Y2goQSl7fXZvaWQgMD09PWQmJih0LnJlYWQ9dixyPW0pfWlmKHZvaWQgMD09PWQpe2lmKHZvaWQgMD09PWgpe2lmKHMuc3RyaWN0KXRocm93IG5ldyBFcnJvcigiTm9uLWNvbnN0cnVjdGVkIEFTTi4xIG9iamVjdCBvZiBpbmRlZmluaXRlIGxlbmd0aC4iKTtoPXJ9aWYobD09PWkuVHlwZS5CTVBTVFJJTkcpZm9yKGQ9IiI7aD4wO2gtPTIpbyh0LHIsMiksZCs9U3RyaW5nLmZyb21DaGFyQ29kZSh0LmdldEludDE2KCkpLHItPTI7ZWxzZSBkPXQuZ2V0Qnl0ZXMoaCl9dmFyIFQ9dm9pZCAwPT09eT9udWxsOntiaXRTdHJpbmdDb250ZW50czp5fTtyZXR1cm4gaS5jcmVhdGUoZixsLGcsZCxUKX0oZSxlLmxlbmd0aCgpLDAsdCl9LGkudG9EZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpLHI9ZS50YWdDbGFzc3xlLnR5cGUsbz1uLnV0aWwuY3JlYXRlQnVmZmVyKCksYT0hMTtpZigiYml0U3RyaW5nQ29udGVudHMiaW4gZSYmKGE9ITAsZS5vcmlnaW5hbCYmKGE9aS5lcXVhbHMoZSxlLm9yaWdpbmFsKSkpLGEpby5wdXRCeXRlcyhlLmJpdFN0cmluZ0NvbnRlbnRzKTtlbHNlIGlmKGUuY29tcG9zZWQpe2UuY29uc3RydWN0ZWQ/cnw9MzI6by5wdXRCeXRlKDApO2Zvcih2YXIgcz0wO3M8ZS52YWx1ZS5sZW5ndGg7KytzKXZvaWQgMCE9PWUudmFsdWVbc10mJm8ucHV0QnVmZmVyKGkudG9EZXIoZS52YWx1ZVtzXSkpfWVsc2UgaWYoZS50eXBlPT09aS5UeXBlLkJNUFNUUklORylmb3Iocz0wO3M8ZS52YWx1ZS5sZW5ndGg7KytzKW8ucHV0SW50MTYoZS52YWx1ZS5jaGFyQ29kZUF0KHMpKTtlbHNlIGUudHlwZT09PWkuVHlwZS5JTlRFR0VSJiZlLnZhbHVlLmxlbmd0aD4xJiYoMD09PWUudmFsdWUuY2hhckNvZGVBdCgwKSYmMD09PSgxMjgmZS52YWx1ZS5jaGFyQ29kZUF0KDEpKXx8MjU1PT09ZS52YWx1ZS5jaGFyQ29kZUF0KDApJiYxMjg9PT0oMTI4JmUudmFsdWUuY2hhckNvZGVBdCgxKSkpP28ucHV0Qnl0ZXMoZS52YWx1ZS5zdWJzdHIoMSkpOm8ucHV0Qnl0ZXMoZS52YWx1ZSk7aWYodC5wdXRCeXRlKHIpLG8ubGVuZ3RoKCk8PTEyNyl0LnB1dEJ5dGUoMTI3Jm8ubGVuZ3RoKCkpO2Vsc2V7dmFyIHU9by5sZW5ndGgoKSxjPSIiO2Rve2MrPVN0cmluZy5mcm9tQ2hhckNvZGUoMjU1JnUpLHU+Pj49OH13aGlsZSh1PjApO3QucHV0Qnl0ZSgxMjh8Yy5sZW5ndGgpO2ZvcihzPWMubGVuZ3RoLTE7cz49MDstLXMpdC5wdXRCeXRlKGMuY2hhckNvZGVBdChzKSl9cmV0dXJuIHQucHV0QnVmZmVyKG8pLHR9LGkub2lkVG9EZXI9ZnVuY3Rpb24oZSl7dmFyIHQscixpLG8sYT1lLnNwbGl0KCIuIikscz1uLnV0aWwuY3JlYXRlQnVmZmVyKCk7cy5wdXRCeXRlKDQwKnBhcnNlSW50KGFbMF0sMTApK3BhcnNlSW50KGFbMV0sMTApKTtmb3IodmFyIHU9Mjt1PGEubGVuZ3RoOysrdSl7dD0hMCxyPVtdLGk9cGFyc2VJbnQoYVt1XSwxMCk7ZG97bz0xMjcmaSxpPj4+PTcsdHx8KG98PTEyOCksci5wdXNoKG8pLHQ9ITF9d2hpbGUoaT4wKTtmb3IodmFyIGM9ci5sZW5ndGgtMTtjPj0wOy0tYylzLnB1dEJ5dGUocltjXSl9cmV0dXJuIHN9LGkuZGVyVG9PaWQ9ZnVuY3Rpb24oZSl7dmFyIHQ7InN0cmluZyI9PT10eXBlb2YgZSYmKGU9bi51dGlsLmNyZWF0ZUJ1ZmZlcihlKSk7dmFyIHI9ZS5nZXRCeXRlKCk7dD1NYXRoLmZsb29yKHIvNDApKyIuIityJTQwO2Zvcih2YXIgaT0wO2UubGVuZ3RoKCk+MDspaTw8PTcsMTI4JihyPWUuZ2V0Qnl0ZSgpKT9pKz0xMjcmcjoodCs9Ii4iKyhpK3IpLGk9MCk7cmV0dXJuIHR9LGkudXRjVGltZVRvRGF0ZT1mdW5jdGlvbihlKXt2YXIgdD1uZXcgRGF0ZSxyPXBhcnNlSW50KGUuc3Vic3RyKDAsMiksMTApO3I9cj49NTA/MTkwMCtyOjJlMytyO3ZhciBuPXBhcnNlSW50KGUuc3Vic3RyKDIsMiksMTApLTEsaT1wYXJzZUludChlLnN1YnN0cig0LDIpLDEwKSxvPXBhcnNlSW50KGUuc3Vic3RyKDYsMiksMTApLGE9cGFyc2VJbnQoZS5zdWJzdHIoOCwyKSwxMCkscz0wO2lmKGUubGVuZ3RoPjExKXt2YXIgdT1lLmNoYXJBdCgxMCksYz0xMDsiKyIhPT11JiYiLSIhPT11JiYocz1wYXJzZUludChlLnN1YnN0cigxMCwyKSwxMCksYys9Mil9aWYodC5zZXRVVENGdWxsWWVhcihyLG4saSksdC5zZXRVVENIb3VycyhvLGEscywwKSxjJiYoIisiPT09KHU9ZS5jaGFyQXQoYykpfHwiLSI9PT11KSl7dmFyIGY9NjAqcGFyc2VJbnQoZS5zdWJzdHIoYysxLDIpLDEwKStwYXJzZUludChlLnN1YnN0cihjKzQsMiksMTApO2YqPTZlNCwiKyI9PT11P3Quc2V0VGltZSgrdC1mKTp0LnNldFRpbWUoK3QrZil9cmV0dXJuIHR9LGkuZ2VuZXJhbGl6ZWRUaW1lVG9EYXRlPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBEYXRlLHI9cGFyc2VJbnQoZS5zdWJzdHIoMCw0KSwxMCksbj1wYXJzZUludChlLnN1YnN0cig0LDIpLDEwKS0xLGk9cGFyc2VJbnQoZS5zdWJzdHIoNiwyKSwxMCksbz1wYXJzZUludChlLnN1YnN0cig4LDIpLDEwKSxhPXBhcnNlSW50KGUuc3Vic3RyKDEwLDIpLDEwKSxzPXBhcnNlSW50KGUuc3Vic3RyKDEyLDIpLDEwKSx1PTAsYz0wLGY9ITE7IloiPT09ZS5jaGFyQXQoZS5sZW5ndGgtMSkmJihmPSEwKTt2YXIgbD1lLmxlbmd0aC01LGg9ZS5jaGFyQXQobCk7IisiIT09aCYmIi0iIT09aHx8KGM9NjAqcGFyc2VJbnQoZS5zdWJzdHIobCsxLDIpLDEwKStwYXJzZUludChlLnN1YnN0cihsKzQsMiksMTApLGMqPTZlNCwiKyI9PT1oJiYoYyo9LTEpLGY9ITApO3JldHVybiIuIj09PWUuY2hhckF0KDE0KSYmKHU9MWUzKnBhcnNlRmxvYXQoZS5zdWJzdHIoMTQpLDEwKSksZj8odC5zZXRVVENGdWxsWWVhcihyLG4saSksdC5zZXRVVENIb3VycyhvLGEscyx1KSx0LnNldFRpbWUoK3QrYykpOih0LnNldEZ1bGxZZWFyKHIsbixpKSx0LnNldEhvdXJzKG8sYSxzLHUpKSx0fSxpLmRhdGVUb1V0Y1RpbWU9ZnVuY3Rpb24oZSl7aWYoInN0cmluZyI9PT10eXBlb2YgZSlyZXR1cm4gZTt2YXIgdD0iIixyPVtdO3IucHVzaCgoIiIrZS5nZXRVVENGdWxsWWVhcigpKS5zdWJzdHIoMikpLHIucHVzaCgiIisoZS5nZXRVVENNb250aCgpKzEpKSxyLnB1c2goIiIrZS5nZXRVVENEYXRlKCkpLHIucHVzaCgiIitlLmdldFVUQ0hvdXJzKCkpLHIucHVzaCgiIitlLmdldFVUQ01pbnV0ZXMoKSksci5wdXNoKCIiK2UuZ2V0VVRDU2Vjb25kcygpKTtmb3IodmFyIG49MDtuPHIubGVuZ3RoOysrbilyW25dLmxlbmd0aDwyJiYodCs9IjAiKSx0Kz1yW25dO3JldHVybiB0Kz0iWiJ9LGkuZGF0ZVRvR2VuZXJhbGl6ZWRUaW1lPWZ1bmN0aW9uKGUpe2lmKCJzdHJpbmciPT09dHlwZW9mIGUpcmV0dXJuIGU7dmFyIHQ9IiIscj1bXTtyLnB1c2goIiIrZS5nZXRVVENGdWxsWWVhcigpKSxyLnB1c2goIiIrKGUuZ2V0VVRDTW9udGgoKSsxKSksci5wdXNoKCIiK2UuZ2V0VVRDRGF0ZSgpKSxyLnB1c2goIiIrZS5nZXRVVENIb3VycygpKSxyLnB1c2goIiIrZS5nZXRVVENNaW51dGVzKCkpLHIucHVzaCgiIitlLmdldFVUQ1NlY29uZHMoKSk7Zm9yKHZhciBuPTA7bjxyLmxlbmd0aDsrK24pcltuXS5sZW5ndGg8MiYmKHQrPSIwIiksdCs9cltuXTtyZXR1cm4gdCs9IloifSxpLmludGVnZXJUb0Rlcj1mdW5jdGlvbihlKXt2YXIgdD1uLnV0aWwuY3JlYXRlQnVmZmVyKCk7aWYoZT49LTEyOCYmZTwxMjgpcmV0dXJuIHQucHV0U2lnbmVkSW50KGUsOCk7aWYoZT49LTMyNzY4JiZlPDMyNzY4KXJldHVybiB0LnB1dFNpZ25lZEludChlLDE2KTtpZihlPj0tODM4ODYwOCYmZTw4Mzg4NjA4KXJldHVybiB0LnB1dFNpZ25lZEludChlLDI0KTtpZihlPj0tMjE0NzQ4MzY0OCYmZTwyMTQ3NDgzNjQ4KXJldHVybiB0LnB1dFNpZ25lZEludChlLDMyKTt2YXIgcj1uZXcgRXJyb3IoIkludGVnZXIgdG9vIGxhcmdlOyBtYXggaXMgMzItYml0cy4iKTt0aHJvdyByLmludGVnZXI9ZSxyfSxpLmRlclRvSW50ZWdlcj1mdW5jdGlvbihlKXsic3RyaW5nIj09PXR5cGVvZiBlJiYoZT1uLnV0aWwuY3JlYXRlQnVmZmVyKGUpKTt2YXIgdD04KmUubGVuZ3RoKCk7aWYodD4zMil0aHJvdyBuZXcgRXJyb3IoIkludGVnZXIgdG9vIGxhcmdlOyBtYXggaXMgMzItYml0cy4iKTtyZXR1cm4gZS5nZXRTaWduZWRJbnQodCl9LGkudmFsaWRhdGU9ZnVuY3Rpb24oZSx0LHIsbyl7dmFyIGE9ITE7aWYoZS50YWdDbGFzcyE9PXQudGFnQ2xhc3MmJiJ1bmRlZmluZWQiIT09dHlwZW9mIHQudGFnQ2xhc3N8fGUudHlwZSE9PXQudHlwZSYmInVuZGVmaW5lZCIhPT10eXBlb2YgdC50eXBlKW8mJihlLnRhZ0NsYXNzIT09dC50YWdDbGFzcyYmby5wdXNoKCJbIit0Lm5hbWUrJ10gRXhwZWN0ZWQgdGFnIGNsYXNzICInK3QudGFnQ2xhc3MrJyIsIGdvdCAiJytlLnRhZ0NsYXNzKyciJyksZS50eXBlIT09dC50eXBlJiZvLnB1c2goIlsiK3QubmFtZSsnXSBFeHBlY3RlZCB0eXBlICInK3QudHlwZSsnIiwgZ290ICInK2UudHlwZSsnIicpKTtlbHNlIGlmKGUuY29uc3RydWN0ZWQ9PT10LmNvbnN0cnVjdGVkfHwidW5kZWZpbmVkIj09PXR5cGVvZiB0LmNvbnN0cnVjdGVkKXtpZihhPSEwLHQudmFsdWUmJm4udXRpbC5pc0FycmF5KHQudmFsdWUpKWZvcih2YXIgcz0wLHU9MDthJiZ1PHQudmFsdWUubGVuZ3RoOysrdSlhPXQudmFsdWVbdV0ub3B0aW9uYWx8fCExLGUudmFsdWVbc10mJigoYT1pLnZhbGlkYXRlKGUudmFsdWVbc10sdC52YWx1ZVt1XSxyLG8pKT8rK3M6dC52YWx1ZVt1XS5vcHRpb25hbCYmKGE9ITApKSwhYSYmbyYmby5wdXNoKCJbIit0Lm5hbWUrJ10gVGFnIGNsYXNzICInK3QudGFnQ2xhc3MrJyIsIHR5cGUgIicrdC50eXBlKyciIGV4cGVjdGVkIHZhbHVlIGxlbmd0aCAiJyt0LnZhbHVlLmxlbmd0aCsnIiwgZ290ICInK2UudmFsdWUubGVuZ3RoKyciJyk7aWYoYSYmcilpZih0LmNhcHR1cmUmJihyW3QuY2FwdHVyZV09ZS52YWx1ZSksdC5jYXB0dXJlQXNuMSYmKHJbdC5jYXB0dXJlQXNuMV09ZSksdC5jYXB0dXJlQml0U3RyaW5nQ29udGVudHMmJiJiaXRTdHJpbmdDb250ZW50cyJpbiBlJiYoclt0LmNhcHR1cmVCaXRTdHJpbmdDb250ZW50c109ZS5iaXRTdHJpbmdDb250ZW50cyksdC5jYXB0dXJlQml0U3RyaW5nVmFsdWUmJiJiaXRTdHJpbmdDb250ZW50cyJpbiBlKWlmKGUuYml0U3RyaW5nQ29udGVudHMubGVuZ3RoPDIpclt0LmNhcHR1cmVCaXRTdHJpbmdWYWx1ZV09IiI7ZWxzZXtpZigwIT09ZS5iaXRTdHJpbmdDb250ZW50cy5jaGFyQ29kZUF0KDApKXRocm93IG5ldyBFcnJvcigiY2FwdHVyZUJpdFN0cmluZ1ZhbHVlIG9ubHkgc3VwcG9ydGVkIGZvciB6ZXJvIHVudXNlZCBiaXRzIik7clt0LmNhcHR1cmVCaXRTdHJpbmdWYWx1ZV09ZS5iaXRTdHJpbmdDb250ZW50cy5zbGljZSgxKX19ZWxzZSBvJiZvLnB1c2goIlsiK3QubmFtZSsnXSBFeHBlY3RlZCBjb25zdHJ1Y3RlZCAiJyt0LmNvbnN0cnVjdGVkKyciLCBnb3QgIicrZS5jb25zdHJ1Y3RlZCsnIicpO3JldHVybiBhfTt2YXIgcz0vW15cXHUwMDAwLVxcdTAwZmZdLztpLnByZXR0eVByaW50PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbz0iIjtyPXJ8fDIsKHQ9dHx8MCk+MCYmKG8rPSJcbiIpO2Zvcih2YXIgYT0iIix1PTA7dTx0KnI7Kyt1KWErPSIgIjtzd2l0Y2gobys9YSsiVGFnOiAiLGUudGFnQ2xhc3Mpe2Nhc2UgaS5DbGFzcy5VTklWRVJTQUw6bys9IlVuaXZlcnNhbDoiO2JyZWFrO2Nhc2UgaS5DbGFzcy5BUFBMSUNBVElPTjpvKz0iQXBwbGljYXRpb246IjticmVhaztjYXNlIGkuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQzpvKz0iQ29udGV4dC1TcGVjaWZpYzoiO2JyZWFrO2Nhc2UgaS5DbGFzcy5QUklWQVRFOm8rPSJQcml2YXRlOiJ9aWYoZS50YWdDbGFzcz09PWkuQ2xhc3MuVU5JVkVSU0FMKXN3aXRjaChvKz1lLnR5cGUsZS50eXBlKXtjYXNlIGkuVHlwZS5OT05FOm8rPSIgKE5vbmUpIjticmVhaztjYXNlIGkuVHlwZS5CT09MRUFOOm8rPSIgKEJvb2xlYW4pIjticmVhaztjYXNlIGkuVHlwZS5JTlRFR0VSOm8rPSIgKEludGVnZXIpIjticmVhaztjYXNlIGkuVHlwZS5CSVRTVFJJTkc6bys9IiAoQml0IHN0cmluZykiO2JyZWFrO2Nhc2UgaS5UeXBlLk9DVEVUU1RSSU5HOm8rPSIgKE9jdGV0IHN0cmluZykiO2JyZWFrO2Nhc2UgaS5UeXBlLk5VTEw6bys9IiAoTnVsbCkiO2JyZWFrO2Nhc2UgaS5UeXBlLk9JRDpvKz0iIChPYmplY3QgSWRlbnRpZmllcikiO2JyZWFrO2Nhc2UgaS5UeXBlLk9ERVNDOm8rPSIgKE9iamVjdCBEZXNjcmlwdG9yKSI7YnJlYWs7Y2FzZSBpLlR5cGUuRVhURVJOQUw6bys9IiAoRXh0ZXJuYWwgb3IgSW5zdGFuY2Ugb2YpIjticmVhaztjYXNlIGkuVHlwZS5SRUFMOm8rPSIgKFJlYWwpIjticmVhaztjYXNlIGkuVHlwZS5FTlVNRVJBVEVEOm8rPSIgKEVudW1lcmF0ZWQpIjticmVhaztjYXNlIGkuVHlwZS5FTUJFRERFRDpvKz0iIChFbWJlZGRlZCBQRFYpIjticmVhaztjYXNlIGkuVHlwZS5VVEY4Om8rPSIgKFVURjgpIjticmVhaztjYXNlIGkuVHlwZS5ST0lEOm8rPSIgKFJlbGF0aXZlIE9iamVjdCBJZGVudGlmaWVyKSI7YnJlYWs7Y2FzZSBpLlR5cGUuU0VRVUVOQ0U6bys9IiAoU2VxdWVuY2UpIjticmVhaztjYXNlIGkuVHlwZS5TRVQ6bys9IiAoU2V0KSI7YnJlYWs7Y2FzZSBpLlR5cGUuUFJJTlRBQkxFU1RSSU5HOm8rPSIgKFByaW50YWJsZSBTdHJpbmcpIjticmVhaztjYXNlIGkuVHlwZS5JQTVTdHJpbmc6bys9IiAoSUE1U3RyaW5nIChBU0NJSSkpIjticmVhaztjYXNlIGkuVHlwZS5VVENUSU1FOm8rPSIgKFVUQyB0aW1lKSI7YnJlYWs7Y2FzZSBpLlR5cGUuR0VORVJBTElaRURUSU1FOm8rPSIgKEdlbmVyYWxpemVkIHRpbWUpIjticmVhaztjYXNlIGkuVHlwZS5CTVBTVFJJTkc6bys9IiAoQk1QIFN0cmluZykifWVsc2Ugbys9ZS50eXBlO2lmKG8rPSJcbiIsbys9YSsiQ29uc3RydWN0ZWQ6ICIrZS5jb25zdHJ1Y3RlZCsiXG4iLGUuY29tcG9zZWQpe3ZhciBjPTAsZj0iIjtmb3IodT0wO3U8ZS52YWx1ZS5sZW5ndGg7Kyt1KXZvaWQgMCE9PWUudmFsdWVbdV0mJihjKz0xLGYrPWkucHJldHR5UHJpbnQoZS52YWx1ZVt1XSx0KzEsciksdSsxPGUudmFsdWUubGVuZ3RoJiYoZis9IiwiKSk7bys9YSsiU3ViIHZhbHVlczogIitjK2Z9ZWxzZXtpZihvKz1hKyJWYWx1ZTogIixlLnR5cGU9PT1pLlR5cGUuT0lEKXt2YXIgbD1pLmRlclRvT2lkKGUudmFsdWUpO28rPWwsbi5wa2kmJm4ucGtpLm9pZHMmJmwgaW4gbi5wa2kub2lkcyYmKG8rPSIgKCIrbi5wa2kub2lkc1tsXSsiKSAiKX1pZihlLnR5cGU9PT1pLlR5cGUuSU5URUdFUil0cnl7bys9aS5kZXJUb0ludGVnZXIoZS52YWx1ZSl9Y2F0Y2gocCl7bys9IjB4IituLnV0aWwuYnl0ZXNUb0hleChlLnZhbHVlKX1lbHNlIGlmKGUudHlwZT09PWkuVHlwZS5CSVRTVFJJTkcpe2lmKGUudmFsdWUubGVuZ3RoPjE/bys9IjB4IituLnV0aWwuYnl0ZXNUb0hleChlLnZhbHVlLnNsaWNlKDEpKTpvKz0iKG5vbmUpIixlLnZhbHVlLmxlbmd0aD4wKXt2YXIgaD1lLnZhbHVlLmNoYXJDb2RlQXQoMCk7MT09aD9vKz0iICgxIHVudXNlZCBiaXQgc2hvd24pIjpoPjEmJihvKz0iICgiK2grIiB1bnVzZWQgYml0cyBzaG93bikiKX19ZWxzZSBlLnR5cGU9PT1pLlR5cGUuT0NURVRTVFJJTkc/KHMudGVzdChlLnZhbHVlKXx8KG8rPSIoIitlLnZhbHVlKyIpICIpLG8rPSIweCIrbi51dGlsLmJ5dGVzVG9IZXgoZS52YWx1ZSkpOmUudHlwZT09PWkuVHlwZS5VVEY4P28rPW4udXRpbC5kZWNvZGVVdGY4KGUudmFsdWUpOmUudHlwZT09PWkuVHlwZS5QUklOVEFCTEVTVFJJTkd8fGUudHlwZT09PWkuVHlwZS5JQTVTdHJpbmc/bys9ZS52YWx1ZTpzLnRlc3QoZS52YWx1ZSk/bys9IjB4IituLnV0aWwuYnl0ZXNUb0hleChlLnZhbHVlKTowPT09ZS52YWx1ZS5sZW5ndGg/bys9IltudWxsXSI6bys9ZS52YWx1ZX1yZXR1cm4gb319LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDYpO2UuZXhwb3J0cz1uLm1kPW4ubWR8fHt9LG4ubWQuYWxnb3JpdGhtcz1uLm1kLmFsZ29yaXRobXN8fHt9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1yKDE2NSksaT1yKDc5KSxvPWZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIGV8fGUgaW5zdGFuY2VvZiBTdHJpbmd9LGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBVaW50OEFycmF5fTt0Ll9mcm9tSW49ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSk/bi5iYXNlNThEZWNvZGUoZSk6YShlKT9lOlVpbnQ4QXJyYXkuZnJvbShlKX0sdC5fZnJvbVJhd0luPWZ1bmN0aW9uKGUpe3JldHVybiBvKGUpP2kuc3RyaW5nVG9CeXRlcyhlKTphKGUpP2U6VWludDhBcnJheS5mcm9tKGUpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiEhZSgpfWNhdGNoKHQpe3JldHVybiEwfX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE0MCksaT1yKDE3NCk7ZS5leHBvcnRzPXIoMTA4KT9mdW5jdGlvbihlLHQscil7cmV0dXJuIG4uZihlLHQsaSgxLHIpKX06ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlW3RdPXIsZX19LGZ1bmN0aW9uKGUsdCl7dmFyIHI9e30udG9TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByLmNhbGwoZSkuc2xpY2UoOCwtMSl9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZih2b2lkIDA9PWUpdGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgIitlKTtyZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7aWYocigyOSkpe3ZhciBuPXIoOTUpLGk9cigxNyksbz1yKDE0KSxhPXIoMikscz1yKDE4OCksdT1yKDI3NCksYz1yKDU4KSxmPXIoMTEzKSxsPXIoOTMpLGg9cig1NCkscD1yKDExNCksZD1yKDYwKSx5PXIoMjMpLGc9cig0NDgpLHY9cig5NiksbT1yKDgyKSxiPXIoNTApLF89cigxNDcpLFM9cigxMyksRT1yKDM2KSx3PXIoMjY3KSxUPXIoOTcpLEE9cig5OSksQz1yKDk4KS5mLHg9cigyNjkpLEk9cig5NCksaz1yKDIxKSxPPXIoNjMpLE49cigxNzkpLFA9cigxNDkpLFI9cig0MzkpLEI9cigxNDgpLE09cigxODIpLEw9cigxMTIpLEQ9cigyNzApLGo9cig0MzgpLFU9cigyOCksRj1yKDYxKSxWPVUuZixxPUYuZixLPWkuUmFuZ2VFcnJvcix6PWkuVHlwZUVycm9yLEc9aS5VaW50OEFycmF5LEg9QXJyYXkucHJvdG90eXBlLFc9dS5BcnJheUJ1ZmZlcixZPXUuRGF0YVZpZXcsWD1PKDApLFE9TygyKSwkPU8oMyksWj1PKDQpLEo9Tyg1KSxlZT1PKDYpLHRlPU4oITApLHJlPU4oITEpLG5lPVIudmFsdWVzLGllPVIua2V5cyxvZT1SLmVudHJpZXMsYWU9SC5sYXN0SW5kZXhPZixzZT1ILnJlZHVjZSx1ZT1ILnJlZHVjZVJpZ2h0LGNlPUguam9pbixmZT1ILnNvcnQsbGU9SC5zbGljZSxoZT1ILnRvU3RyaW5nLHBlPUgudG9Mb2NhbGVTdHJpbmcsZGU9aygiaXRlcmF0b3IiKSx5ZT1rKCJ0b1N0cmluZ1RhZyIpLGdlPUkoInR5cGVkX2NvbnN0cnVjdG9yIiksdmU9SSgiZGVmX2NvbnN0cnVjdG9yIiksbWU9cy5DT05TVFIsYmU9cy5UWVBFRCxfZT1zLlZJRVcsU2U9TygxLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIENlKFAoZSxlW3ZlXSksdCl9KSxFZT1vKGZ1bmN0aW9uKCl7cmV0dXJuIDE9PT1uZXcgRyhuZXcgVWludDE2QXJyYXkoWzFdKS5idWZmZXIpWzBdfSksd2U9ISFHJiYhIUcucHJvdG90eXBlLnNldCYmbyhmdW5jdGlvbigpe25ldyBHKDEpLnNldCh7fSl9KSxUZT1mdW5jdGlvbihlLHQpe3ZhciByPWQoZSk7aWYocjwwfHxyJXQpdGhyb3cgSygiV3Jvbmcgb2Zmc2V0ISIpO3JldHVybiByfSxBZT1mdW5jdGlvbihlKXtpZihTKGUpJiZiZSBpbiBlKXJldHVybiBlO3Rocm93IHooZSsiIGlzIG5vdCBhIHR5cGVkIGFycmF5ISIpfSxDZT1mdW5jdGlvbihlLHQpe2lmKCEoUyhlKSYmZ2UgaW4gZSkpdGhyb3cgeigiSXQgaXMgbm90IGEgdHlwZWQgYXJyYXkgY29uc3RydWN0b3IhIik7cmV0dXJuIG5ldyBlKHQpfSx4ZT1mdW5jdGlvbihlLHQpe3JldHVybiBJZShQKGUsZVt2ZV0pLHQpfSxJZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wLG49dC5sZW5ndGgsaT1DZShlLG4pO24+cjspaVtyXT10W3IrK107cmV0dXJuIGl9LGtlPWZ1bmN0aW9uKGUsdCxyKXtWKGUsdCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rbcl19fSl9LE9lPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbixpLG8sYSxzPUUoZSksdT1hcmd1bWVudHMubGVuZ3RoLGY9dT4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsbD12b2lkIDAhPT1mLGg9eChzKTtpZih2b2lkIDAhPWgmJiF3KGgpKXtmb3IoYT1oLmNhbGwocyksbj1bXSx0PTA7IShvPWEubmV4dCgpKS5kb25lO3QrKyluLnB1c2goby52YWx1ZSk7cz1ufWZvcihsJiZ1PjImJihmPWMoZixhcmd1bWVudHNbMl0sMikpLHQ9MCxyPXkocy5sZW5ndGgpLGk9Q2UodGhpcyxyKTtyPnQ7dCsrKWlbdF09bD9mKHNbdF0sdCk6c1t0XTtyZXR1cm4gaX0sTmU9ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCx0PWFyZ3VtZW50cy5sZW5ndGgscj1DZSh0aGlzLHQpO3Q+ZTspcltlXT1hcmd1bWVudHNbZSsrXTtyZXR1cm4gcn0sUGU9ISFHJiZvKGZ1bmN0aW9uKCl7cGUuY2FsbChuZXcgRygxKSl9KSxSZT1mdW5jdGlvbigpe3JldHVybiBwZS5hcHBseShQZT9sZS5jYWxsKEFlKHRoaXMpKTpBZSh0aGlzKSxhcmd1bWVudHMpfSxCZT17Y29weVdpdGhpbjpmdW5jdGlvbihlLHQpe3JldHVybiBqLmNhbGwoQWUodGhpcyksZSx0LGFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwKX0sZXZlcnk6ZnVuY3Rpb24oZSl7cmV0dXJuIFooQWUodGhpcyksZSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9LGZpbGw6ZnVuY3Rpb24oZSl7cmV0dXJuIEQuYXBwbHkoQWUodGhpcyksYXJndW1lbnRzKX0sZmlsdGVyOmZ1bmN0aW9uKGUpe3JldHVybiB4ZSh0aGlzLFEoQWUodGhpcyksZSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCkpfSxmaW5kOmZ1bmN0aW9uKGUpe3JldHVybiBKKEFlKHRoaXMpLGUsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSxmaW5kSW5kZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGVlKEFlKHRoaXMpLGUsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSxmb3JFYWNoOmZ1bmN0aW9uKGUpe1goQWUodGhpcyksZSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9LGluZGV4T2Y6ZnVuY3Rpb24oZSl7cmV0dXJuIHJlKEFlKHRoaXMpLGU="
}
Changelog:
{
"2020.04.17 15:39": "base64:b2RlLG4uZ2V0TkFGPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPVtdLG49MTw8dCsxLGk9ZS5jbG9uZSgpO2kuY21wbigxKT49MDspe3ZhciBvO2lmKGkuaXNPZGQoKSl7dmFyIGE9aS5hbmRsbihuLTEpO289YT4obj4+MSktMT8obj4+MSktYTphLGkuaXN1Ym4obyl9ZWxzZSBvPTA7ci5wdXNoKG8pO2Zvcih2YXIgcz0wIT09aS5jbXBuKDApJiYwPT09aS5hbmRsbihuLTEpP3QrMToxLHU9MTt1PHM7dSsrKXIucHVzaCgwKTtpLml1c2hybihzKX1yZXR1cm4gcn0sbi5nZXRKU0Y9ZnVuY3Rpb24oZSx0KXt2YXIgcj1bW10sW11dO2U9ZS5jbG9uZSgpLHQ9dC5jbG9uZSgpO2Zvcih2YXIgbj0wLGk9MDtlLmNtcG4oLW4pPjB8fHQuY21wbigtaSk+MDspe3ZhciBvLGEscyx1PWUuYW5kbG4oMykrbiYzLGM9dC5hbmRsbigzKStpJjM7Mz09PXUmJih1PS0xKSwzPT09YyYmKGM9LTEpLG89MD09PSgxJnUpPzA6MyE9PShzPWUuYW5kbG4oNykrbiY3KSYmNSE9PXN8fDIhPT1jP3U6LXUsclswXS5wdXNoKG8pLGE9MD09PSgxJmMpPzA6MyE9PShzPXQuYW5kbG4oNykraSY3KSYmNSE9PXN8fDIhPT11P2M6LWMsclsxXS5wdXNoKGEpLDIqbj09PW8rMSYmKG49MS1uKSwyKmk9PT1hKzEmJihpPTEtaSksZS5pdXNocm4oMSksdC5pdXNocm4oMSl9cmV0dXJuIHJ9LG4uY2FjaGVkUHJvcGVydHk9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPSJfIit0O2UucHJvdG90eXBlW3RdPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXNbbl0/dGhpc1tuXTp0aGlzW25dPXIuY2FsbCh0aGlzKX19LG4ucGFyc2VCeXRlcz1mdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBlP24udG9BcnJheShlLCJoZXgiKTplfSxuLmludEZyb21MRT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IGkoZSwiaGV4IiwibGUiKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE3KSxpPXIoNTQpLG89cig1MCksYT1yKDk0KSgic3JjIikscz1yKDczNyksdT0oIiIrcykuc3BsaXQoInRvU3RyaW5nIik7cigyNykuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbihlKXtyZXR1cm4gcy5jYWxsKGUpfSwoZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLHMpe3ZhciBjPSJmdW5jdGlvbiI9PXR5cGVvZiByO2MmJihvKHIsIm5hbWUiKXx8aShyLCJuYW1lIix0KSksZVt0XSE9PXImJihjJiYobyhyLGEpfHxpKHIsYSxlW3RdPyIiK2VbdF06dS5qb2luKFN0cmluZyh0KSkpKSxlPT09bj9lW3RdPXI6cz9lW3RdP2VbdF09cjppKGUsdCxyKTooZGVsZXRlIGVbdF0saShlLHQscikpKX0pKEZ1bmN0aW9uLnByb3RvdHlwZSwidG9TdHJpbmciLGZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMmJnRoaXNbYV18fHMuY2FsbCh0aGlzKX0pfSxmdW5jdGlvbihlLHQpe3ZhciByPXt9Lmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiByLmNhbGwoZSx0KX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE0NSksaT1yKDcxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG4oaShlKSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig2KTtyKDg5KSxyKDM0OCkscigzNDkpLHIoMTApLG4ucmFuZG9tJiZuLnJhbmRvbS5nZXRCeXRlcz9lLmV4cG9ydHM9bi5yYW5kb206ZnVuY3Rpb24odCl7dmFyIHI9e30saT1uZXcgQXJyYXkoNCksbz1uLnV0aWwuY3JlYXRlQnVmZmVyKCk7ZnVuY3Rpb24gYSgpe3ZhciBlPW4ucHJuZy5jcmVhdGUocik7cmV0dXJuIGUuZ2V0Qnl0ZXM9ZnVuY3Rpb24odCxyKXtyZXR1cm4gZS5nZW5lcmF0ZSh0LHIpfSxlLmdldEJ5dGVzU3luYz1mdW5jdGlvbih0KXtyZXR1cm4gZS5nZW5lcmF0ZSh0KX0sZX1yLmZvcm1hdEtleT1mdW5jdGlvbihlKXt2YXIgdD1uLnV0aWwuY3JlYXRlQnVmZmVyKGUpO3JldHVybihlPW5ldyBBcnJheSg0KSlbMF09dC5nZXRJbnQzMigpLGVbMV09dC5nZXRJbnQzMigpLGVbMl09dC5nZXRJbnQzMigpLGVbM109dC5nZXRJbnQzMigpLG4uYWVzLl9leHBhbmRLZXkoZSwhMSl9LHIuZm9ybWF0U2VlZD1mdW5jdGlvbihlKXt2YXIgdD1uLnV0aWwuY3JlYXRlQnVmZmVyKGUpO3JldHVybihlPW5ldyBBcnJheSg0KSlbMF09dC5nZXRJbnQzMigpLGVbMV09dC5nZXRJbnQzMigpLGVbMl09dC5nZXRJbnQzMigpLGVbM109dC5nZXRJbnQzMigpLGV9LHIuY2lwaGVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4uYWVzLl91cGRhdGVCbG9jayhlLHQsaSwhMSksby5wdXRJbnQzMihpWzBdKSxvLnB1dEludDMyKGlbMV0pLG8ucHV0SW50MzIoaVsyXSksby5wdXRJbnQzMihpWzNdKSxvLmdldEJ5dGVzKCl9LHIuaW5jcmVtZW50PWZ1bmN0aW9uKGUpe3JldHVybisrZVszXSxlfSxyLm1kPW4ubWQuc2hhMjU2O3ZhciBzPWEoKSx1PW51bGwsYz1uLnV0aWwuZ2xvYmFsU2NvcGUsZj1jLmNyeXB0b3x8Yy5tc0NyeXB0bztpZihmJiZmLmdldFJhbmRvbVZhbHVlcyYmKHU9ZnVuY3Rpb24oZSl7cmV0dXJuIGYuZ2V0UmFuZG9tVmFsdWVzKGUpfSksbi5vcHRpb25zLnVzZVB1cmVKYXZhU2NyaXB0fHwhbi51dGlsLmlzTm9kZWpzJiYhdSl7aWYoInVuZGVmaW5lZCI9PT10eXBlb2Ygd2luZG93fHx3aW5kb3cuZG9jdW1lbnQscy5jb2xsZWN0SW50KCtuZXcgRGF0ZSwzMiksInVuZGVmaW5lZCIhPT10eXBlb2YgbmF2aWdhdG9yKXt2YXIgbD0iIjtmb3IodmFyIGggaW4gbmF2aWdhdG9yKXRyeXsic3RyaW5nIj09dHlwZW9mIG5hdmlnYXRvcltoXSYmKGwrPW5hdmlnYXRvcltoXSl9Y2F0Y2gocCl7fXMuY29sbGVjdChsKSxsPW51bGx9dCYmKHQoKS5tb3VzZW1vdmUoZnVuY3Rpb24oZSl7cy5jb2xsZWN0SW50KGUuY2xpZW50WCwxNikscy5jb2xsZWN0SW50KGUuY2xpZW50WSwxNil9KSx0KCkua2V5cHJlc3MoZnVuY3Rpb24oZSl7cy5jb2xsZWN0SW50KGUuY2hhckNvZGUsOCl9KSl9aWYobi5yYW5kb20pZm9yKHZhciBoIGluIHMpbi5yYW5kb21baF09c1toXTtlbHNlIG4ucmFuZG9tPXM7bi5yYW5kb20uY3JlYXRlSW5zdGFuY2U9YSxlLmV4cG9ydHM9bi5yYW5kb219KCJ1bmRlZmluZWQiIT09dHlwZW9mIGpRdWVyeT9qUXVlcnk6bnVsbCl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE3MykoIndrcyIpLGk9cig0MDIpLG89cigzMykuU3ltYm9sLGE9cig3MjIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbltlXXx8KG5bZV09YSYmb1tlXXx8KGE/bzppKSgiU3ltYm9sLiIrZSkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjgpLGk9cig5Myk7ZS5leHBvcnRzPXIoMjkpP2Z1bmN0aW9uKGUsdCxyKXtyZXR1cm4gbi5mKGUsdCxpKDEscikpfTpmdW5jdGlvbihlLHQscil7cmV0dXJuIGVbdF09cixlfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDE0KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hIWUmJm4oZnVuY3Rpb24oKXt0P2UuY2FsbChudWxsLGZ1bmN0aW9uKCl7fSwxKTplLmNhbGwobnVsbCl9KX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig0NyksaT1yKDcpO2Z1bmN0aW9uIG8oZSx0KXtyZXR1cm4gNTUyOTY9PT0oNjQ1MTImZS5jaGFyQ29kZUF0KHQpKSYmKCEodDwwfHx0KzE+PWUubGVuZ3RoKSYmNTYzMjA9PT0oNjQ1MTImZS5jaGFyQ29kZUF0KHQrMSkpKX1mdW5jdGlvbiBhKGUpe3JldHVybihlPj4+MjR8ZT4+PjgmNjUyODB8ZTw8OCYxNjcxMTY4MHwoMjU1JmUpPDwyNCk+Pj4wfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIDE9PT1lLmxlbmd0aD8iMCIrZTplfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIDc9PT1lLmxlbmd0aD8iMCIrZTo2PT09ZS5sZW5ndGg/IjAwIitlOjU9PT1lLmxlbmd0aD8iMDAwIitlOjQ9PT1lLmxlbmd0aD8iMDAwMCIrZTozPT09ZS5sZW5ndGg/IjAwMDAwIitlOjI9PT1lLmxlbmd0aD8iMDAwMDAwIitlOjE9PT1lLmxlbmd0aD8iMDAwMDAwMCIrZTplfXQuaW5oZXJpdHM9aSx0LnRvQXJyYXk9ZnVuY3Rpb24oZSx0KXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlLnNsaWNlKCk7aWYoIWUpcmV0dXJuW107dmFyIHI9W107aWYoInN0cmluZyI9PT10eXBlb2YgZSlpZih0KXtpZigiaGV4Ij09PXQpZm9yKChlPWUucmVwbGFjZSgvW15hLXowLTldKy9naSwiIikpLmxlbmd0aCUyIT09MCYmKGU9IjAiK2UpLGk9MDtpPGUubGVuZ3RoO2krPTIpci5wdXNoKHBhcnNlSW50KGVbaV0rZVtpKzFdLDE2KSl9ZWxzZSBmb3IodmFyIG49MCxpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBhPWUuY2hhckNvZGVBdChpKTthPDEyOD9yW24rK109YTphPDIwNDg/KHJbbisrXT1hPj42fDE5MixyW24rK109NjMmYXwxMjgpOm8oZSxpKT8oYT02NTUzNisoKDEwMjMmYSk8PDEwKSsoMTAyMyZlLmNoYXJDb2RlQXQoKytpKSkscltuKytdPWE+PjE4fDI0MCxyW24rK109YT4+MTImNjN8MTI4LHJbbisrXT1hPj42JjYzfDEyOCxyW24rK109NjMmYXwxMjgpOihyW24rK109YT4+MTJ8MjI0LHJbbisrXT1hPj42JjYzfDEyOCxyW24rK109NjMmYXwxMjgpfWVsc2UgZm9yKGk9MDtpPGUubGVuZ3RoO2krKylyW2ldPTB8ZVtpXTtyZXR1cm4gcn0sdC50b0hleD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9IiIscj0wO3I8ZS5sZW5ndGg7cisrKXQrPXMoZVtyXS50b1N0cmluZygxNikpO3JldHVybiB0fSx0Lmh0b25sPWEsdC50b0hleDMyPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPSIiLG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIGk9ZVtuXTsibGl0dGxlIj09PXQmJihpPWEoaSkpLHIrPXUoaS50b1N0cmluZygxNikpfXJldHVybiByfSx0Lnplcm8yPXMsdC56ZXJvOD11LHQuam9pbjMyPWZ1bmN0aW9uKGUsdCxyLGkpe3ZhciBvPXItdDtuKG8lND09PTApO2Zvcih2YXIgYT1uZXcgQXJyYXkoby80KSxzPTAsdT10O3M8YS5sZW5ndGg7cysrLHUrPTQpe3ZhciBjO2M9ImJpZyI9PT1pP2VbdV08PDI0fGVbdSsxXTw8MTZ8ZVt1KzJdPDw4fGVbdSszXTplW3UrM108PDI0fGVbdSsyXTw8MTZ8ZVt1KzFdPDw4fGVbdV0sYVtzXT1jPj4+MH1yZXR1cm4gYX0sdC5zcGxpdDMyPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPW5ldyBBcnJheSg0KmUubGVuZ3RoKSxuPTAsaT0wO248ZS5sZW5ndGg7bisrLGkrPTQpe3ZhciBvPWVbbl07ImJpZyI9PT10PyhyW2ldPW8+Pj4yNCxyW2krMV09bz4+PjE2JjI1NSxyW2krMl09bz4+PjgmMjU1LHJbaSszXT0yNTUmbyk6KHJbaSszXT1vPj4+MjQscltpKzJdPW8+Pj4xNiYyNTUscltpKzFdPW8+Pj44JjI1NSxyW2ldPTI1NSZvKX1yZXR1cm4gcn0sdC5yb3RyMzI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT4+PnR8ZTw8MzItdH0sdC5yb3RsMzI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZTw8dHxlPj4+MzItdH0sdC5zdW0zMj1mdW5jdGlvbihlLHQpe3JldHVybiBlK3Q+Pj4wfSx0LnN1bTMyXzM9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlK3Qrcj4+PjB9LHQuc3VtMzJfND1mdW5jdGlvbihlLHQscixuKXtyZXR1cm4gZSt0K3Irbj4+PjB9LHQuc3VtMzJfNT1mdW5jdGlvbihlLHQscixuLGkpe3JldHVybiBlK3QrcituK2k+Pj4wfSx0LnN1bTY0PWZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBpPWVbdF0sbz1uK2VbdCsxXT4+PjAsYT0obzxuPzE6MCkrcitpO2VbdF09YT4+PjAsZVt0KzFdPW99LHQuc3VtNjRfaGk9ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuKHQrbj4+PjA8dD8xOjApK2Urcj4+PjB9LHQuc3VtNjRfbG89ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIHQrbj4+PjB9LHQuc3VtNjRfNF9oaT1mdW5jdGlvbihlLHQscixuLGksbyxhLHMpe3ZhciB1PTAsYz10O3JldHVybiB1Kz0oYz1jK24+Pj4wKTx0PzE6MCx1Kz0oYz1jK28+Pj4wKTxvPzE6MCxlK3IraSthKyh1Kz0oYz1jK3M+Pj4wKTxzPzE6MCk+Pj4wfSx0LnN1bTY0XzRfbG89ZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzKXtyZXR1cm4gdCtuK28rcz4+PjB9LHQuc3VtNjRfNV9oaT1mdW5jdGlvbihlLHQscixuLGksbyxhLHMsdSxjKXt2YXIgZj0wLGw9dDtyZXR1cm4gZis9KGw9bCtuPj4+MCk8dD8xOjAsZis9KGw9bCtvPj4+MCk8bz8xOjAsZis9KGw9bCtzPj4+MCk8cz8xOjAsZStyK2krYSt1KyhmKz0obD1sK2M+Pj4wKTxjPzE6MCk+Pj4wfSx0LnN1bTY0XzVfbG89ZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzLHUsYyl7cmV0dXJuIHQrbitvK3MrYz4+PjB9LHQucm90cjY0X2hpPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4odDw8MzItcnxlPj4+cik+Pj4wfSx0LnJvdHI2NF9sbz1mdW5jdGlvbihlLHQscil7cmV0dXJuKGU8PDMyLXJ8dD4+PnIpPj4+MH0sdC5zaHI2NF9oaT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU+Pj5yfSx0LnNocjY0X2xvPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4oZTw8MzItcnx0Pj4+cik+Pj4wfX0sZnVuY3Rpb24oZSx0KXt2YXIgcj17fS5oYXNPd25Qcm9wZXJ0eTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gci5jYWxsKGUsdCl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig1OSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtpZihuKGUpLHZvaWQgMD09PXQpcmV0dXJuIGU7c3dpdGNoKHIpe2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIGUuY2FsbCh0LHIpfTtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKHIsbil7cmV0dXJuIGUuY2FsbCh0LHIsbil9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24ocixuLGkpe3JldHVybiBlLmNhbGwodCxyLG4saSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHQsYXJndW1lbnRzKX19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBUeXBlRXJyb3IoZSsiIGlzIG5vdCBhIGZ1bmN0aW9uISIpO3JldHVybiBlfX0sZnVuY3Rpb24oZSx0KXt2YXIgcj1NYXRoLmNlaWwsbj1NYXRoLmZsb29yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaXNOYU4oZT0rZSk/MDooZT4wP246cikoZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNDYpLGk9cig5Myksbz1yKDUxKSxhPXIoODIpLHM9cig1MCksdT1yKDQxNiksYz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO3QuZj1yKDI5KT9jOmZ1bmN0aW9uKGUsdCl7aWYoZT1vKGUpLHQ9YSh0LCEwKSx1KXRyeXtyZXR1cm4gYyhlLHQpfWNhdGNoKHIpe31pZihzKGUsdCkpcmV0dXJuIGkoIW4uZi5jYWxsKGUsdCksZVt0XSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyKSxpPXIoMjcpLG89cigxNCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9KGkuT2JqZWN0fHx7fSlbZV18fE9iamVjdFtlXSxhPXt9O2FbZV09dChyKSxuKG4uUytuLkYqbyhmdW5jdGlvbigpe3IoMSl9KSwiT2JqZWN0IixhKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDU4KSxpPXIoMTQ1KSxvPXIoMzYpLGE9cigyMykscz1yKDQzNik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9MT09ZSx1PTI9PWUsYz0zPT1lLGY9ND09ZSxsPTY9PWUsaD01PT1lfHxsLHA9dHx8cztyZXR1cm4gZnVuY3Rpb24odCxzLGQpe2Zvcih2YXIgeSxnLHY9byh0KSxtPWkodiksYj1uKHMsZCwzKSxfPWEobS5sZW5ndGgpLFM9MCxFPXI/cCh0LF8pOnU/cCh0LDApOnZvaWQgMDtfPlM7UysrKWlmKChofHxTIGluIG0pJiYoZz1iKHk9bVtTXSxTLHYpLGUpKWlmKHIpRVtTXT1nO2Vsc2UgaWYoZylzd2l0Y2goZSl7Y2FzZSAzOnJldHVybiEwO2Nhc2UgNTpyZXR1cm4geTtjYXNlIDY6cmV0dXJuIFM7Y2FzZSAyOkUucHVzaCh5KX1lbHNlIGlmKGYpcmV0dXJuITE7cmV0dXJuIGw/LTE6Y3x8Zj9mOkV9fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDcxKSxpPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsbz1ufHxpfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpO2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig2KTtyKDEwKSxyKDkwKTt2YXIgaT1lLmV4cG9ydHM9bi5hc24xPW4uYXNuMXx8e307ZnVuY3Rpb24gbyhlLHQscil7aWYocj50KXt2YXIgbj1uZXcgRXJyb3IoIlRvbyBmZXcgYnl0ZXMgdG8gcGFyc2UgREVSLiIpO3Rocm93IG4uYXZhaWxhYmxlPWUubGVuZ3RoKCksbi5yZW1haW5pbmc9dCxuLnJlcXVlc3RlZD1yLG59fWkuQ2xhc3M9e1VOSVZFUlNBTDowLEFQUExJQ0FUSU9OOjY0LENPTlRFWFRfU1BFQ0lGSUM6MTI4LFBSSVZBVEU6MTkyfSxpLlR5cGU9e05PTkU6MCxCT09MRUFOOjEsSU5URUdFUjoyLEJJVFNUUklORzozLE9DVEVUU1RSSU5HOjQsTlVMTDo1LE9JRDo2LE9ERVNDOjcsRVhURVJOQUw6OCxSRUFMOjksRU5VTUVSQVRFRDoxMCxFTUJFRERFRDoxMSxVVEY4OjEyLFJPSUQ6MTMsU0VRVUVOQ0U6MTYsU0VUOjE3LFBSSU5UQUJMRVNUUklORzoxOSxJQTVTVFJJTkc6MjIsVVRDVElNRToyMyxHRU5FUkFMSVpFRFRJTUU6MjQsQk1QU1RSSU5HOjMwfSxpLmNyZWF0ZT1mdW5jdGlvbihlLHQscixvLGEpe2lmKG4udXRpbC5pc0FycmF5KG8pKXtmb3IodmFyIHM9W10sdT0wO3U8by5sZW5ndGg7Kyt1KXZvaWQgMCE9PW9bdV0mJnMucHVzaChvW3VdKTtvPXN9dmFyIGM9e3RhZ0NsYXNzOmUsdHlwZTp0LGNvbnN0cnVjdGVkOnIsY29tcG9zZWQ6cnx8bi51dGlsLmlzQXJyYXkobyksdmFsdWU6b307cmV0dXJuIGEmJiJiaXRTdHJpbmdDb250ZW50cyJpbiBhJiYoYy5iaXRTdHJpbmdDb250ZW50cz1hLmJpdFN0cmluZ0NvbnRlbnRzLGMub3JpZ2luYWw9aS5jb3B5KGMpKSxjfSxpLmNvcHk9ZnVuY3Rpb24oZSx0KXt2YXIgcjtpZihuLnV0aWwuaXNBcnJheShlKSl7cj1bXTtmb3IodmFyIG89MDtvPGUubGVuZ3RoOysrbylyLnB1c2goaS5jb3B5KGVbb10sdCkpO3JldHVybiByfXJldHVybiJzdHJpbmciPT09dHlwZW9mIGU/ZToocj17dGFnQ2xhc3M6ZS50YWdDbGFzcyx0eXBlOmUudHlwZSxjb25zdHJ1Y3RlZDplLmNvbnN0cnVjdGVkLGNvbXBvc2VkOmUuY29tcG9zZWQsdmFsdWU6aS5jb3B5KGUudmFsdWUsdCl9LHQmJiF0LmV4Y2x1ZGVCaXRTdHJpbmdDb250ZW50cyYmKHIuYml0U3RyaW5nQ29udGVudHM9ZS5iaXRTdHJpbmdDb250ZW50cykscil9LGkuZXF1YWxzPWZ1bmN0aW9uKGUsdCxyKXtpZihuLnV0aWwuaXNBcnJheShlKSl7aWYoIW4udXRpbC5pc0FycmF5KHQpKXJldHVybiExO2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBvPTA7bzxlLmxlbmd0aDsrK28paWYoIWkuZXF1YWxzKGVbb10sdFtvXSkpcmV0dXJuITE7cmV0dXJuITB9aWYodHlwZW9mIGUhPT10eXBlb2YgdClyZXR1cm4hMTtpZigic3RyaW5nIj09PXR5cGVvZiBlKXJldHVybiBlPT09dDt2YXIgYT1lLnRhZ0NsYXNzPT09dC50YWdDbGFzcyYmZS50eXBlPT09dC50eXBlJiZlLmNvbnN0cnVjdGVkPT09dC5jb25zdHJ1Y3RlZCYmZS5jb21wb3NlZD09PXQuY29tcG9zZWQmJmkuZXF1YWxzKGUudmFsdWUsdC52YWx1ZSk7cmV0dXJuIHImJnIuaW5jbHVkZUJpdFN0cmluZ0NvbnRlbnRzJiYoYT1hJiZlLmJpdFN0cmluZ0NvbnRlbnRzPT09dC5iaXRTdHJpbmdDb250ZW50cyksYX0saS5nZXRCZXJWYWx1ZUxlbmd0aD1mdW5jdGlvbihlKXt2YXIgdD1lLmdldEJ5dGUoKTtpZigxMjghPT10KXJldHVybiAxMjgmdD9lLmdldEludCgoMTI3JnQpPDwzKTp0fTt2YXIgYT1mdW5jdGlvbihlLHQpe3ZhciByPWUuZ2V0Qnl0ZSgpO2lmKDEyOCE9PXIpe3ZhciBuO2lmKDEyOCZyKXt2YXIgaT0xMjcmcjtvKGUsLS10LGkpLG49ZS5nZXRJbnQoaTw8Myl9ZWxzZSBuPXI7aWYobjwwKXRocm93IG5ldyBFcnJvcigiTmVnYXRpdmUgbGVuZ3RoOiAiK24pO3JldHVybiBufX07aS5mcm9tRGVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PXtzdHJpY3Q6ITAsZGVjb2RlQml0U3RyaW5nczohMH0pLCJib29sZWFuIj09PXR5cGVvZiB0JiYodD17c3RyaWN0OnQsZGVjb2RlQml0U3RyaW5nczohMH0pLCJzdHJpY3QiaW4gdHx8KHQuc3RyaWN0PSEwKSwiZGVjb2RlQml0U3RyaW5ncyJpbiB0fHwodC5kZWNvZGVCaXRTdHJpbmdzPSEwKSwic3RyaW5nIj09PXR5cGVvZiBlJiYoZT1uLnV0aWwuY3JlYXRlQnVmZmVyKGUpKSxmdW5jdGlvbiBlKHQscixuLHMpe3ZhciB1O28odCxyLDIpO3ZhciBjPXQuZ2V0Qnl0ZSgpO3ItLTt2YXIgZj0xOTImYzt2YXIgbD0zMSZjO3U9dC5sZW5ndGgoKTt2YXIgaD1hKHQscik7ci09dS10Lmxlbmd0aCgpO2lmKHZvaWQgMCE9PWgmJmg+cil7aWYocy5zdHJpY3Qpe3ZhciBwPW5ldyBFcnJvcigiVG9vIGZldyBieXRlcyB0byByZWFkIEFTTi4xIHZhbHVlLiIpO3Rocm93IHAuYXZhaWxhYmxlPXQubGVuZ3RoKCkscC5yZW1haW5pbmc9cixwLnJlcXVlc3RlZD1oLHB9aD1yfXZhciBkO3ZhciB5O3ZhciBnPTMyPT09KDMyJmMpO2lmKGcpaWYoZD1bXSx2b2lkIDA9PT1oKWZvcig7Oyl7aWYobyh0LHIsMiksdC5ieXRlcygyKT09PVN0cmluZy5mcm9tQ2hhckNvZGUoMCwwKSl7dC5nZXRCeXRlcygyKSxyLT0yO2JyZWFrfXU9dC5sZW5ndGgoKSxkLnB1c2goZSh0LHIsbisxLHMpKSxyLT11LXQubGVuZ3RoKCl9ZWxzZSBmb3IoO2g+MDspdT10Lmxlbmd0aCgpLGQucHVzaChlKHQsaCxuKzEscykpLHItPXUtdC5sZW5ndGgoKSxoLT11LXQubGVuZ3RoKCk7dm9pZCAwPT09ZCYmZj09PWkuQ2xhc3MuVU5JVkVSU0FMJiZsPT09aS5UeXBlLkJJVFNUUklORyYmKHk9dC5ieXRlcyhoKSk7aWYodm9pZCAwPT09ZCYmcy5kZWNvZGVCaXRTdHJpbmdzJiZmPT09aS5DbGFzcy5VTklWRVJTQUwmJmw9PT1pLlR5cGUuQklUU1RSSU5HJiZoPjEpe3ZhciB2PXQucmVhZCxtPXIsYj0wO2lmKGw9PT1pLlR5cGUuQklUU1RSSU5HJiYobyh0LHIsMSksYj10LmdldEJ5dGUoKSxyLS0pLDA9PT1iKXRyeXt1PXQubGVuZ3RoKCk7dmFyIF89e3ZlcmJvc2U6cy52ZXJib3NlLHN0cmljdDohMCxkZWNvZGVCaXRTdHJpbmdzOiEwfSxTPWUodCxyLG4rMSxfKSxFPXUtdC5sZW5ndGgoKTtyLT1FLGw9PWkuVHlwZS5CSVRTVFJJTkcmJkUrKzt2YXIgdz1TLnRhZ0NsYXNzO0UhPT1ofHx3IT09aS5DbGFzcy5VTklWRVJTQUwmJnchPT1pLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUN8fChkPVtTXSl9Y2F0Y2goQSl7fXZvaWQgMD09PWQmJih0LnJlYWQ9dixyPW0pfWlmKHZvaWQgMD09PWQpe2lmKHZvaWQgMD09PWgpe2lmKHMuc3RyaWN0KXRocm93IG5ldyBFcnJvcigiTm9uLWNvbnN0cnVjdGVkIEFTTi4xIG9iamVjdCBvZiBpbmRlZmluaXRlIGxlbmd0aC4iKTtoPXJ9aWYobD09PWkuVHlwZS5CTVBTVFJJTkcpZm9yKGQ9IiI7aD4wO2gtPTIpbyh0LHIsMiksZCs9U3RyaW5nLmZyb21DaGFyQ29kZSh0LmdldEludDE2KCkpLHItPTI7ZWxzZSBkPXQuZ2V0Qnl0ZXMoaCl9dmFyIFQ9dm9pZCAwPT09eT9udWxsOntiaXRTdHJpbmdDb250ZW50czp5fTtyZXR1cm4gaS5jcmVhdGUoZixsLGcsZCxUKX0oZSxlLmxlbmd0aCgpLDAsdCl9LGkudG9EZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9bi51dGlsLmNyZWF0ZUJ1ZmZlcigpLHI9ZS50YWdDbGFzc3xlLnR5cGUsbz1uLnV0aWwuY3JlYXRlQnVmZmVyKCksYT0hMTtpZigiYml0U3RyaW5nQ29udGVudHMiaW4gZSYmKGE9ITAsZS5vcmlnaW5hbCYmKGE9aS5lcXVhbHMoZSxlLm9yaWdpbmFsKSkpLGEpby5wdXRCeXRlcyhlLmJpdFN0cmluZ0NvbnRlbnRzKTtlbHNlIGlmKGUuY29tcG9zZWQpe2UuY29uc3RydWN0ZWQ/cnw9MzI6by5wdXRCeXRlKDApO2Zvcih2YXIgcz0wO3M8ZS52YWx1ZS5sZW5ndGg7KytzKXZvaWQgMCE9PWUudmFsdWVbc10mJm8ucHV0QnVmZmVyKGkudG9EZXIoZS52YWx1ZVtzXSkpfWVsc2UgaWYoZS50eXBlPT09aS5UeXBlLkJNUFNUUklORylmb3Iocz0wO3M8ZS52YWx1ZS5sZW5ndGg7KytzKW8ucHV0SW50MTYoZS52YWx1ZS5jaGFyQ29kZUF0KHMpKTtlbHNlIGUudHlwZT09PWkuVHlwZS5JTlRFR0VSJiZlLnZhbHVlLmxlbmd0aD4xJiYoMD09PWUudmFsdWUuY2hhckNvZGVBdCgwKSYmMD09PSgxMjgmZS52YWx1ZS5jaGFyQ29kZUF0KDEpKXx8MjU1PT09ZS52YWx1ZS5jaGFyQ29kZUF0KDApJiYxMjg9PT0oMTI4JmUudmFsdWUuY2hhckNvZGVBdCgxKSkpP28ucHV0Qnl0ZXMoZS52YWx1ZS5zdWJzdHIoMSkpOm8ucHV0Qnl0ZXMoZS52YWx1ZSk7aWYodC5wdXRCeXRlKHIpLG8ubGVuZ3RoKCk8PTEyNyl0LnB1dEJ5dGUoMTI3Jm8ubGVuZ3RoKCkpO2Vsc2V7dmFyIHU9by5sZW5ndGgoKSxjPSIiO2Rve2MrPVN0cmluZy5mcm9tQ2hhckNvZGUoMjU1JnUpLHU+Pj49OH13aGlsZSh1PjApO3QucHV0Qnl0ZSgxMjh8Yy5sZW5ndGgpO2ZvcihzPWMubGVuZ3RoLTE7cz49MDstLXMpdC5wdXRCeXRlKGMuY2hhckNvZGVBdChzKSl9cmV0dXJuIHQucHV0QnVmZmVyKG8pLHR9LGkub2lkVG9EZXI9ZnVuY3Rpb24oZSl7dmFyIHQscixpLG8sYT1lLnNwbGl0KCIuIikscz1uLnV0aWwuY3JlYXRlQnVmZmVyKCk7cy5wdXRCeXRlKDQwKnBhcnNlSW50KGFbMF0sMTApK3BhcnNlSW50KGFbMV0sMTApKTtmb3IodmFyIHU9Mjt1PGEubGVuZ3RoOysrdSl7dD0hMCxyPVtdLGk9cGFyc2VJbnQoYVt1XSwxMCk7ZG97bz0xMjcmaSxpPj4+PTcsdHx8KG98PTEyOCksci5wdXNoKG8pLHQ9ITF9d2hpbGUoaT4wKTtmb3IodmFyIGM9ci5sZW5ndGgtMTtjPj0wOy0tYylzLnB1dEJ5dGUocltjXSl9cmV0dXJuIHN9LGkuZGVyVG9PaWQ9ZnVuY3Rpb24oZSl7dmFyIHQ7InN0cmluZyI9PT10eXBlb2YgZSYmKGU9bi51dGlsLmNyZWF0ZUJ1ZmZlcihlKSk7dmFyIHI9ZS5nZXRCeXRlKCk7dD1NYXRoLmZsb29yKHIvNDApKyIuIityJTQwO2Zvcih2YXIgaT0wO2UubGVuZ3RoKCk+MDspaTw8PTcsMTI4JihyPWUuZ2V0Qnl0ZSgpKT9pKz0xMjcmcjoodCs9Ii4iKyhpK3IpLGk9MCk7cmV0dXJuIHR9LGkudXRjVGltZVRvRGF0ZT1mdW5jdGlvbihlKXt2YXIgdD1uZXcgRGF0ZSxyPXBhcnNlSW50KGUuc3Vic3RyKDAsMiksMTApO3I9cj49NTA/MTkwMCtyOjJlMytyO3ZhciBuPXBhcnNlSW50KGUuc3Vic3RyKDIsMiksMTApLTEsaT1wYXJzZUludChlLnN1YnN0cig0LDIpLDEwKSxvPXBhcnNlSW50KGUuc3Vic3RyKDYsMiksMTApLGE9cGFyc2VJbnQoZS5zdWJzdHIoOCwyKSwxMCkscz0wO2lmKGUubGVuZ3RoPjExKXt2YXIgdT1lLmNoYXJBdCgxMCksYz0xMDsiKyIhPT11JiYiLSIhPT11JiYocz1wYXJzZUludChlLnN1YnN0cigxMCwyKSwxMCksYys9Mil9aWYodC5zZXRVVENGdWxsWWVhcihyLG4saSksdC5zZXRVVENIb3VycyhvLGEscywwKSxjJiYoIisiPT09KHU9ZS5jaGFyQXQoYykpfHwiLSI9PT11KSl7dmFyIGY9NjAqcGFyc2VJbnQoZS5zdWJzdHIoYysxLDIpLDEwKStwYXJzZUludChlLnN1YnN0cihjKzQsMiksMTApO2YqPTZlNCwiKyI9PT11P3Quc2V0VGltZSgrdC1mKTp0LnNldFRpbWUoK3QrZil9cmV0dXJuIHR9LGkuZ2VuZXJhbGl6ZWRUaW1lVG9EYXRlPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBEYXRlLHI9cGFyc2VJbnQoZS5zdWJzdHIoMCw0KSwxMCksbj1wYXJzZUludChlLnN1YnN0cig0LDIpLDEwKS0xLGk9cGFyc2VJbnQoZS5zdWJzdHIoNiwyKSwxMCksbz1wYXJzZUludChlLnN1YnN0cig4LDIpLDEwKSxhPXBhcnNlSW50KGUuc3Vic3RyKDEwLDIpLDEwKSxzPXBhcnNlSW50KGUuc3Vic3RyKDEyLDIpLDEwKSx1PTAsYz0wLGY9ITE7IloiPT09ZS5jaGFyQXQoZS5sZW5ndGgtMSkmJihmPSEwKTt2YXIgbD1lLmxlbmd0aC01LGg9ZS5jaGFyQXQobCk7IisiIT09aCYmIi0iIT09aHx8KGM9NjAqcGFyc2VJbnQoZS5zdWJzdHIobCsxLDIpLDEwKStwYXJzZUludChlLnN1YnN0cihsKzQsMiksMTApLGMqPTZlNCwiKyI9PT1oJiYoYyo9LTEpLGY9ITApO3JldHVybiIuIj09PWUuY2hhckF0KDE0KSYmKHU9MWUzKnBhcnNlRmxvYXQoZS5zdWJzdHIoMTQpLDEwKSksZj8odC5zZXRVVENGdWxsWWVhcihyLG4saSksdC5zZXRVVENIb3VycyhvLGEscyx1KSx0LnNldFRpbWUoK3QrYykpOih0LnNldEZ1bGxZZWFyKHIsbixpKSx0LnNldEhvdXJzKG8sYSxzLHUpKSx0fSxpLmRhdGVUb1V0Y1RpbWU9ZnVuY3Rpb24oZSl7aWYoInN0cmluZyI9PT10eXBlb2YgZSlyZXR1cm4gZTt2YXIgdD0iIixyPVtdO3IucHVzaCgoIiIrZS5nZXRVVENGdWxsWWVhcigpKS5zdWJzdHIoMikpLHIucHVzaCgiIisoZS5nZXRVVENNb250aCgpKzEpKSxyLnB1c2goIiIrZS5nZXRVVENEYXRlKCkpLHIucHVzaCgiIitlLmdldFVUQ0hvdXJzKCkpLHIucHVzaCgiIitlLmdldFVUQ01pbnV0ZXMoKSksci5wdXNoKCIiK2UuZ2V0VVRDU2Vjb25kcygpKTtmb3IodmFyIG49MDtuPHIubGVuZ3RoOysrbilyW25dLmxlbmd0aDwyJiYodCs9IjAiKSx0Kz1yW25dO3JldHVybiB0Kz0iWiJ9LGkuZGF0ZVRvR2VuZXJhbGl6ZWRUaW1lPWZ1bmN0aW9uKGUpe2lmKCJzdHJpbmciPT09dHlwZW9mIGUpcmV0dXJuIGU7dmFyIHQ9IiIscj1bXTtyLnB1c2goIiIrZS5nZXRVVENGdWxsWWVhcigpKSxyLnB1c2goIiIrKGUuZ2V0VVRDTW9udGgoKSsxKSksci5wdXNoKCIiK2UuZ2V0VVRDRGF0ZSgpKSxyLnB1c2goIiIrZS5nZXRVVENIb3VycygpKSxyLnB1c2goIiIrZS5nZXRVVENNaW51dGVzKCkpLHIucHVzaCgiIitlLmdldFVUQ1NlY29uZHMoKSk7Zm9yKHZhciBuPTA7bjxyLmxlbmd0aDsrK24pcltuXS5sZW5ndGg8MiYmKHQrPSIwIiksdCs9cltuXTtyZXR1cm4gdCs9IloifSxpLmludGVnZXJUb0Rlcj1mdW5jdGlvbihlKXt2YXIgdD1uLnV0aWwuY3JlYXRlQnVmZmVyKCk7aWYoZT49LTEyOCYmZTwxMjgpcmV0dXJuIHQucHV0U2lnbmVkSW50KGUsOCk7aWYoZT49LTMyNzY4JiZlPDMyNzY4KXJldHVybiB0LnB1dFNpZ25lZEludChlLDE2KTtpZihlPj0tODM4ODYwOCYmZTw4Mzg4NjA4KXJldHVybiB0LnB1dFNpZ25lZEludChlLDI0KTtpZihlPj0tMjE0NzQ4MzY0OCYmZTwyMTQ3NDgzNjQ4KXJldHVybiB0LnB1dFNpZ25lZEludChlLDMyKTt2YXIgcj1uZXcgRXJyb3IoIkludGVnZXIgdG9vIGxhcmdlOyBtYXggaXMgMzItYml0cy4iKTt0aHJvdyByLmludGVnZXI9ZSxyfSxpLmRlclRvSW50ZWdlcj1mdW5jdGlvbihlKXsic3RyaW5nIj09PXR5cGVvZiBlJiYoZT1uLnV0aWwuY3JlYXRlQnVmZmVyKGUpKTt2YXIgdD04KmUubGVuZ3RoKCk7aWYodD4zMil0aHJvdyBuZXcgRXJyb3IoIkludGVnZXIgdG9vIGxhcmdlOyBtYXggaXMgMzItYml0cy4iKTtyZXR1cm4gZS5nZXRTaWduZWRJbnQodCl9LGkudmFsaWRhdGU9ZnVuY3Rpb24oZSx0LHIsbyl7dmFyIGE9ITE7aWYoZS50YWdDbGFzcyE9PXQudGFnQ2xhc3MmJiJ1bmRlZmluZWQiIT09dHlwZW9mIHQudGFnQ2xhc3N8fGUudHlwZSE9PXQudHlwZSYmInVuZGVmaW5lZCIhPT10eXBlb2YgdC50eXBlKW8mJihlLnRhZ0NsYXNzIT09dC50YWdDbGFzcyYmby5wdXNoKCJbIit0Lm5hbWUrJ10gRXhwZWN0ZWQgdGFnIGNsYXNzICInK3QudGFnQ2xhc3MrJyIsIGdvdCAiJytlLnRhZ0NsYXNzKyciJyksZS50eXBlIT09dC50eXBlJiZvLnB1c2goIlsiK3QubmFtZSsnXSBFeHBlY3RlZCB0eXBlICInK3QudHlwZSsnIiwgZ290ICInK2UudHlwZSsnIicpKTtlbHNlIGlmKGUuY29uc3RydWN0ZWQ9PT10LmNvbnN0cnVjdGVkfHwidW5kZWZpbmVkIj09PXR5cGVvZiB0LmNvbnN0cnVjdGVkKXtpZihhPSEwLHQudmFsdWUmJm4udXRpbC5pc0FycmF5KHQudmFsdWUpKWZvcih2YXIgcz0wLHU9MDthJiZ1PHQudmFsdWUubGVuZ3RoOysrdSlhPXQudmFsdWVbdV0ub3B0aW9uYWx8fCExLGUudmFsdWVbc10mJigoYT1pLnZhbGlkYXRlKGUudmFsdWVbc10sdC52YWx1ZVt1XSxyLG8pKT8rK3M6dC52YWx1ZVt1XS5vcHRpb25hbCYmKGE9ITApKSwhYSYmbyYmby5wdXNoKCJbIit0Lm5hbWUrJ10gVGFnIGNsYXNzICInK3QudGFnQ2xhc3MrJyIsIHR5cGUgIicrdC50eXBlKyciIGV4cGVjdGVkIHZhbHVlIGxlbmd0aCAiJyt0LnZhbHVlLmxlbmd0aCsnIiwgZ290ICInK2UudmFsdWUubGVuZ3RoKyciJyk7aWYoYSYmcilpZih0LmNhcHR1cmUmJihyW3QuY2FwdHVyZV09ZS52YWx1ZSksdC5jYXB0dXJlQXNuMSYmKHJbdC5jYXB0dXJlQXNuMV09ZSksdC5jYXB0dXJlQml0U3RyaW5nQ29udGVudHMmJiJiaXRTdHJpbmdDb250ZW50cyJpbiBlJiYoclt0LmNhcHR1cmVCaXRTdHJpbmdDb250ZW50c109ZS5iaXRTdHJpbmdDb250ZW50cyksdC5jYXB0dXJlQml0U3RyaW5nVmFsdWUmJiJiaXRTdHJpbmdDb250ZW50cyJpbiBlKWlmKGUuYml0U3RyaW5nQ29udGVudHMubGVuZ3RoPDIpclt0LmNhcHR1cmVCaXRTdHJpbmdWYWx1ZV09IiI7ZWxzZXtpZigwIT09ZS5iaXRTdHJpbmdDb250ZW50cy5jaGFyQ29kZUF0KDApKXRocm93IG5ldyBFcnJvcigiY2FwdHVyZUJpdFN0cmluZ1ZhbHVlIG9ubHkgc3VwcG9ydGVkIGZvciB6ZXJvIHVudXNlZCBiaXRzIik7clt0LmNhcHR1cmVCaXRTdHJpbmdWYWx1ZV09ZS5iaXRTdHJpbmdDb250ZW50cy5zbGljZSgxKX19ZWxzZSBvJiZvLnB1c2goIlsiK3QubmFtZSsnXSBFeHBlY3RlZCBjb25zdHJ1Y3RlZCAiJyt0LmNvbnN0cnVjdGVkKyciLCBnb3QgIicrZS5jb25zdHJ1Y3RlZCsnIicpO3JldHVybiBhfTt2YXIgcz0vW15cXHUwMDAwLVxcdTAwZmZdLztpLnByZXR0eVByaW50PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbz0iIjtyPXJ8fDIsKHQ9dHx8MCk+MCYmKG8rPSJcbiIpO2Zvcih2YXIgYT0iIix1PTA7dTx0KnI7Kyt1KWErPSIgIjtzd2l0Y2gobys9YSsiVGFnOiAiLGUudGFnQ2xhc3Mpe2Nhc2UgaS5DbGFzcy5VTklWRVJTQUw6bys9IlVuaXZlcnNhbDoiO2JyZWFrO2Nhc2UgaS5DbGFzcy5BUFBMSUNBVElPTjpvKz0iQXBwbGljYXRpb246IjticmVhaztjYXNlIGkuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQzpvKz0iQ29udGV4dC1TcGVjaWZpYzoiO2JyZWFrO2Nhc2UgaS5DbGFzcy5QUklWQVRFOm8rPSJQcml2YXRlOiJ9aWYoZS50YWdDbGFzcz09PWkuQ2xhc3MuVU5JVkVSU0FMKXN3aXRjaChvKz1lLnR5cGUsZS50eXBlKXtjYXNlIGkuVHlwZS5OT05FOm8rPSIgKE5vbmUpIjticmVhaztjYXNlIGkuVHlwZS5CT09MRUFOOm8rPSIgKEJvb2xlYW4pIjticmVhaztjYXNlIGkuVHlwZS5JTlRFR0VSOm8rPSIgKEludGVnZXIpIjticmVhaztjYXNlIGkuVHlwZS5CSVRTVFJJTkc6bys9IiAoQml0IHN0cmluZykiO2JyZWFrO2Nhc2UgaS5UeXBlLk9DVEVUU1RSSU5HOm8rPSIgKE9jdGV0IHN0cmluZykiO2JyZWFrO2Nhc2UgaS5UeXBlLk5VTEw6bys9IiAoTnVsbCkiO2JyZWFrO2Nhc2UgaS5UeXBlLk9JRDpvKz0iIChPYmplY3QgSWRlbnRpZmllcikiO2JyZWFrO2Nhc2UgaS5UeXBlLk9ERVNDOm8rPSIgKE9iamVjdCBEZXNjcmlwdG9yKSI7YnJlYWs7Y2FzZSBpLlR5cGUuRVhURVJOQUw6bys9IiAoRXh0ZXJuYWwgb3IgSW5zdGFuY2Ugb2YpIjticmVhaztjYXNlIGkuVHlwZS5SRUFMOm8rPSIgKFJlYWwpIjticmVhaztjYXNlIGkuVHlwZS5FTlVNRVJBVEVEOm8rPSIgKEVudW1lcmF0ZWQpIjticmVhaztjYXNlIGkuVHlwZS5FTUJFRERFRDpvKz0iIChFbWJlZGRlZCBQRFYpIjticmVhaztjYXNlIGkuVHlwZS5VVEY4Om8rPSIgKFVURjgpIjticmVhaztjYXNlIGkuVHlwZS5ST0lEOm8rPSIgKFJlbGF0aXZlIE9iamVjdCBJZGVudGlmaWVyKSI7YnJlYWs7Y2FzZSBpLlR5cGUuU0VRVUVOQ0U6bys9IiAoU2VxdWVuY2UpIjticmVhaztjYXNlIGkuVHlwZS5TRVQ6bys9IiAoU2V0KSI7YnJlYWs7Y2FzZSBpLlR5cGUuUFJJTlRBQkxFU1RSSU5HOm8rPSIgKFByaW50YWJsZSBTdHJpbmcpIjticmVhaztjYXNlIGkuVHlwZS5JQTVTdHJpbmc6bys9IiAoSUE1U3RyaW5nIChBU0NJSSkpIjticmVhaztjYXNlIGkuVHlwZS5VVENUSU1FOm8rPSIgKFVUQyB0aW1lKSI7YnJlYWs7Y2FzZSBpLlR5cGUuR0VORVJBTElaRURUSU1FOm8rPSIgKEdlbmVyYWxpemVkIHRpbWUpIjticmVhaztjYXNlIGkuVHlwZS5CTVBTVFJJTkc6bys9IiAoQk1QIFN0cmluZykifWVsc2Ugbys9ZS50eXBlO2lmKG8rPSJcbiIsbys9YSsiQ29uc3RydWN0ZWQ6ICIrZS5jb25zdHJ1Y3RlZCsiXG4iLGUuY29tcG9zZWQpe3ZhciBjPTAsZj0iIjtmb3IodT0wO3U8ZS52YWx1ZS5sZW5ndGg7Kyt1KXZvaWQgMCE9PWUudmFsdWVbdV0mJihjKz0xLGYrPWkucHJldHR5UHJpbnQoZS52YWx1ZVt1XSx0KzEsciksdSsxPGUudmFsdWUubGVuZ3RoJiYoZis9IiwiKSk7bys9YSsiU3ViIHZhbHVlczogIitjK2Z9ZWxzZXtpZihvKz1hKyJWYWx1ZTogIixlLnR5cGU9PT1pLlR5cGUuT0lEKXt2YXIgbD1pLmRlclRvT2lkKGUudmFsdWUpO28rPWwsbi5wa2kmJm4ucGtpLm9pZHMmJmwgaW4gbi5wa2kub2lkcyYmKG8rPSIgKCIrbi5wa2kub2lkc1tsXSsiKSAiKX1pZihlLnR5cGU9PT1pLlR5cGUuSU5URUdFUil0cnl7bys9aS5kZXJUb0ludGVnZXIoZS52YWx1ZSl9Y2F0Y2gocCl7bys9IjB4IituLnV0aWwuYnl0ZXNUb0hleChlLnZhbHVlKX1lbHNlIGlmKGUudHlwZT09PWkuVHlwZS5CSVRTVFJJTkcpe2lmKGUudmFsdWUubGVuZ3RoPjE/bys9IjB4IituLnV0aWwuYnl0ZXNUb0hleChlLnZhbHVlLnNsaWNlKDEpKTpvKz0iKG5vbmUpIixlLnZhbHVlLmxlbmd0aD4wKXt2YXIgaD1lLnZhbHVlLmNoYXJDb2RlQXQoMCk7MT09aD9vKz0iICgxIHVudXNlZCBiaXQgc2hvd24pIjpoPjEmJihvKz0iICgiK2grIiB1bnVzZWQgYml0cyBzaG93bikiKX19ZWxzZSBlLnR5cGU9PT1pLlR5cGUuT0NURVRTVFJJTkc/KHMudGVzdChlLnZhbHVlKXx8KG8rPSIoIitlLnZhbHVlKyIpICIpLG8rPSIweCIrbi51dGlsLmJ5dGVzVG9IZXgoZS52YWx1ZSkpOmUudHlwZT09PWkuVHlwZS5VVEY4P28rPW4udXRpbC5kZWNvZGVVdGY4KGUudmFsdWUpOmUudHlwZT09PWkuVHlwZS5QUklOVEFCTEVTVFJJTkd8fGUudHlwZT09PWkuVHlwZS5JQTVTdHJpbmc/bys9ZS52YWx1ZTpzLnRlc3QoZS52YWx1ZSk/bys9IjB4IituLnV0aWwuYnl0ZXNUb0hleChlLnZhbHVlKTowPT09ZS52YWx1ZS5sZW5ndGg/bys9IltudWxsXSI6bys9ZS52YWx1ZX1yZXR1cm4gb319LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDYpO2UuZXhwb3J0cz1uLm1kPW4ubWR8fHt9LG4ubWQuYWxnb3JpdGhtcz1uLm1kLmFsZ29yaXRobXN8fHt9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1yKDE2NSksaT1yKDc5KSxvPWZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIGV8fGUgaW5zdGFuY2VvZiBTdHJpbmd9LGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBVaW50OEFycmF5fTt0Ll9mcm9tSW49ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSk/bi5iYXNlNThEZWNvZGUoZSk6YShlKT9lOlVpbnQ4QXJyYXkuZnJvbShlKX0sdC5fZnJvbVJhd0luPWZ1bmN0aW9uKGUpe3JldHVybiBvKGUpP2kuc3RyaW5nVG9CeXRlcyhlKTphKGUpP2U6VWludDhBcnJheS5mcm9tKGUpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiEhZSgpfWNhdGNoKHQpe3JldHVybiEwfX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE0MCksaT1yKDE3NCk7ZS5leHBvcnRzPXIoMTA4KT9mdW5jdGlvbihlLHQscil7cmV0dXJuIG4uZihlLHQsaSgxLHIpKX06ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlW3RdPXIsZX19LGZ1bmN0aW9uKGUsdCl7dmFyIHI9e30udG9TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByLmNhbGwoZSkuc2xpY2UoOCwtMSl9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZih2b2lkIDA9PWUpdGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgIitlKTtyZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7aWYocigyOSkpe3ZhciBuPXIoOTUpLGk9cigxNyksbz1yKDE0KSxhPXIoMikscz1yKDE4OCksdT1yKDI3NCksYz1yKDU4KSxmPXIoMTEzKSxsPXIoOTMpLGg9cig1NCkscD1yKDExNCksZD1yKDYwKSx5PXIoMjMpLGc9cig0NDgpLHY9cig5NiksbT1yKDgyKSxiPXIoNTApLF89cigxNDcpLFM9cigxMyksRT1yKDM2KSx3PXIoMjY3KSxUPXIoOTcpLEE9cig5OSksQz1yKDk4KS5mLHg9cigyNjkpLEk9cig5NCksaz1yKDIxKSxPPXIoNjMpLE49cigxNzkpLFA9cigxNDkpLFI9cig0MzkpLEI9cigxNDgpLE09cigxODIpLEw9cigxMTIpLEQ9cigyNzApLGo9cig0MzgpLFU9cigyOCksRj1yKDYxKSxWPVUuZixxPUYuZixLPWkuUmFuZ2VFcnJvcix6PWkuVHlwZUVycm9yLEc9aS5VaW50OEFycmF5LEg9QXJyYXkucHJvdG90eXBlLFc9dS5BcnJheUJ1ZmZlcixZPXUuRGF0YVZpZXcsWD1PKDApLFE9TygyKSwkPU8oMyksWj1PKDQpLEo9Tyg1KSxlZT1PKDYpLHRlPU4oITApLHJlPU4oITEpLG5lPVIudmFsdWVzLGllPVIua2V5cyxvZT1SLmVudHJpZXMsYWU9SC5sYXN0SW5kZXhPZixzZT1ILnJlZHVjZSx1ZT1ILnJlZHVjZVJpZ2h0LGNlPUguam9pbixmZT1ILnNvcnQsbGU9SC5zbGljZSxoZT1ILnRvU3RyaW5nLHBlPUgudG9Mb2NhbGVTdHJpbmcsZGU9aygiaXRlcmF0b3IiKSx5ZT1rKCJ0b1N0cmluZ1RhZyIpLGdlPUkoInR5cGVkX2NvbnN0cnVjdG9yIiksdmU9SSgiZGVmX2NvbnN0cnVjdG9yIiksbWU9cy5DT05TVFIsYmU9cy5UWVBFRCxfZT1zLlZJRVcsU2U9TygxLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIENlKFAoZSxlW3ZlXSksdCl9KSxFZT1vKGZ1bmN0aW9uKCl7cmV0dXJuIDE9PT1uZXcgRyhuZXcgVWludDE2QXJyYXkoWzFdKS5idWZmZXIpWzBdfSksd2U9ISFHJiYhIUcucHJvdG90eXBlLnNldCYmbyhmdW5jdGlvbigpe25ldyBHKDEpLnNldCh7fSl9KSxUZT1mdW5jdGlvbihlLHQpe3ZhciByPWQoZSk7aWYocjwwfHxyJXQpdGhyb3cgSygiV3Jvbmcgb2Zmc2V0ISIpO3JldHVybiByfSxBZT1mdW5jdGlvbihlKXtpZihTKGUpJiZiZSBpbiBlKXJldHVybiBlO3Rocm93IHooZSsiIGlzIG5vdCBhIHR5cGVkIGFycmF5ISIpfSxDZT1mdW5jdGlvbihlLHQpe2lmKCEoUyhlKSYmZ2UgaW4gZSkpdGhyb3cgeigiSXQgaXMgbm90IGEgdHlwZWQgYXJyYXkgY29uc3RydWN0b3IhIik7cmV0dXJuIG5ldyBlKHQpfSx4ZT1mdW5jdGlvbihlLHQpe3JldHVybiBJZShQKGUsZVt2ZV0pLHQpfSxJZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wLG49dC5sZW5ndGgsaT1DZShlLG4pO24+cjspaVtyXT10W3IrK107cmV0dXJuIGl9LGtlPWZ1bmN0aW9uKGUsdCxyKXtWKGUsdCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rbcl19fSl9LE9lPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbixpLG8sYSxzPUUoZSksdT1hcmd1bWVudHMubGVuZ3RoLGY9dT4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsbD12b2lkIDAhPT1mLGg9eChzKTtpZih2b2lkIDAhPWgmJiF3KGgpKXtmb3IoYT1oLmNhbGwocyksbj1bXSx0PTA7IShvPWEubmV4dCgpKS5kb25lO3QrKyluLnB1c2goby52YWx1ZSk7cz1ufWZvcihsJiZ1PjImJihmPWMoZixhcmd1bWVudHNbMl0sMikpLHQ9MCxyPXkocy5sZW5ndGgpLGk9Q2UodGhpcyxyKTtyPnQ7dCsrKWlbdF09bD9mKHNbdF0sdCk6c1t0XTtyZXR1cm4gaX0sTmU9ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCx0PWFyZ3VtZW50cy5sZW5ndGgscj1DZSh0aGlzLHQpO3Q+ZTspcltlXT1hcmd1bWVudHNbZSsrXTtyZXR1cm4gcn0sUGU9ISFHJiZvKGZ1bmN0aW9uKCl7cGUuY2FsbChuZXcgRygxKSl9KSxSZT1mdW5jdGlvbigpe3JldHVybiBwZS5hcHBseShQZT9sZS5jYWxsKEFlKHRoaXMpKTpBZSh0aGlzKSxhcmd1bWVudHMpfSxCZT17Y29weVdpdGhpbjpmdW5jdGlvbihlLHQpe3JldHVybiBqLmNhbGwoQWUodGhpcyksZSx0LGFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwKX0sZXZlcnk6ZnVuY3Rpb24oZSl7cmV0dXJuIFooQWUodGhpcyksZSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9LGZpbGw6ZnVuY3Rpb24oZSl7cmV0dXJuIEQuYXBwbHkoQWUodGhpcyksYXJndW1lbnRzKX0sZmlsdGVyOmZ1bmN0aW9uKGUpe3JldHVybiB4ZSh0aGlzLFEoQWUodGhpcyksZSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCkpfSxmaW5kOmZ1bmN0aW9uKGUpe3JldHVybiBKKEFlKHRoaXMpLGUsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSxmaW5kSW5kZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGVlKEFlKHRoaXMpLGUsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSxmb3JFYWNoOmZ1bmN0aW9uKGUpe1goQWUodGhpcyksZSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9LGluZGV4T2Y6ZnVuY3Rpb24oZSl7cmV0dXJuIHJlKEFlKHRoaXMpLGU="
}