data:text/html;base64,PGh0bWw+CjxoZWFkPgogIDxzdHlsZT4KICAgIHBvbHlsaW5lIHsKICAgICAgc3Ryb2tlLXdpZHRoOiAzOwogICAgICBzdHJva2U6IGJsYWNrOwogICAgICBzdHJva2Utb3BhY2l0eTogMTsKICAgIH0KICA8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgogIDxzdmcgd2lkdGg9IjkwMCIgaGVpZ2h0PSI5MDAiIGlkPSJzdmciIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNkZGQiPjwvc3ZnPgogIDxzY3JpcHQ+CiAgICBmdW5jdGlvbiBjcmVhdGVQYXRoKGJsb29kQWxjb2hvbCwgc3RhcnRYLCBzdGFydFkpIHsKICAgICAgbGV0IHggPSBzdGFydFg7CiAgICAgIGxldCB5ID0gc3RhcnRZOwogICAgICBsZXQgYW5nbGUgPSAwOwogICAgICBsZXQgcmFkaXVzID0gMTsKCiAgICAgIGNvbnN0IHBvaW50cyA9IFt7IHgsIHkgfV07CgogICAgICBmdW5jdGlvbiBpc091dE9mQm91bmRzKHgsIHkpIHsKICAgICAgICByZXR1cm4geCA8IHN0YXJ0WCAtIDcwIHx8IHggPj0gc3RhcnRYICsgNzAgfHwgeSA8IHN0YXJ0WSAtIDcwIHx8IHkgPj0gc3RhcnRZICsgNzA7CiAgICAgIH0KCiAgICAgIHdoaWxlICghaXNPdXRPZkJvdW5kcyh4LCB5KSkgewogICAgICAgIGFuZ2xlICs9ICguMTUgKyBibG9vZEFsY29ob2wgKiBNYXRoLnJhbmRvbSgpICogMC4wNSkgJSAoMiAqIE1hdGguUEkpOwogICAgICAgIHJhZGl1cyA9IE1hdGgucG93KGFuZ2xlLCAxLjA5KTsKLy8gICAgICAgIHJhZGl1cyA9IDIgKiBhbmdsZTsKLy8gICAgICAgICAgcmFkaXVzICs9IDE7CgogICAgICAgIGNvbnN0IGR4ID0gTWF0aC5jb3MoYW5nbGUpICogcmFkaXVzOwogICAgICAgIGNvbnN0IGR5ID0gTWF0aC5zaW4oYW5nbGUpICogcmFkaXVzOwoKICAgICAgICB4ID0gc3RhcnRYICsgZHg7CiAgICAgICAgeSA9IHN0YXJ0WSArIGR5OwoKICAgICAgICBwb2ludHMucHVzaCh7IHgsIHkgfSk7CiAgICAgIH0KCiAgICAgIHJldHVybiBwb2ludHM7CiAgICB9CgpmdW5jdGlvbiBkcmF3UGF0aChwb2ludHMsIHN2ZykgewogIGZ1bmN0aW9uIHBvaW50VG9DdWJpY0JlemllcihpKSB7CiAgICBpZiAoaSA8IHBvaW50cy5sZW5ndGggLSAxKSB7CiAgICAgIGNvbnN0IHgxID0gcG9pbnRzW2ldLng7CiAgICAgIGNvbnN0IHkxID0gcG9pbnRzW2ldLnk7CiAgICAgIGNvbnN0IHgyID0gcG9pbnRzW2kgKyAxXS54OwogICAgICBjb25zdCB5MiA9IHBvaW50c1tpICsgMV0ueTsKICAgICAgY29uc3QgeGMxID0gKHgxICsgeDIpIC8gMjsKICAgICAgY29uc3QgeWMxID0gKHkxICsgeTIpIC8gMjsKICAgICAgY29uc3QgeGMyID0gKHhjMSArIHgyKSAvIDI7CiAgICAgIGNvbnN0IHljMiA9ICh5YzEgKyB5MikgLyAyOwogICAgICByZXR1cm4gYEMgJHt4YzF9LCR7eWMxfSAke3hjMX0sJHt5YzF9ICR7eGMyfSwke3ljMn1gOwogICAgfQogICAgcmV0dXJuICcnOwogIH0KCiAgY29uc3QgZCA9IGBNICR7cG9pbnRzWzBdLnh9LCR7cG9pbnRzWzBdLnl9IGAgKyBwb2ludHMuc2xpY2UoMSkubWFwKChfLCBpKSA9PiBwb2ludFRvQ3ViaWNCZXppZXIoaSkpLmpvaW4oJyAnKTsKICBjb25zdCBwYXRoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdwYXRoJyk7CiAgcGF0aC5zZXRBdHRyaWJ1dGUoJ2QnLCBkKTsKICBwYXRoLnNldEF0dHJpYnV0ZSgnZmlsbCcsICdub25lJyk7CiAgcGF0aC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsICdibGFjaycpOwogIHBhdGguc2V0QXR0cmlidXRlKCdzdHJva2Utd2lkdGgnLCAnMycpOwogIHN2Zy5hcHBlbmRDaGlsZChwYXRoKTsKfQoKICAgIGNvbnN0IHN2ZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdmcnKTsKICAgIGNvbnN0IGdyaWRSb3dzID0gNTsKICAgIGNvbnN0IGdyaWRDb2x1bW5zID0gNTsKICAgIGNvbnN0IGNlbGxTaXplID0gMTgwOwogICAgY29uc3QgdG90YWxDZWxscyA9IGdyaWRSb3dzICogZ3JpZENvbHVtbnM7CgogICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgZ3JpZFJvd3M7IHJvdysrKSB7CiAgICAgIGZvciAobGV0IGNvbCA9IDA7IGNvbCA8IGdyaWRDb2x1bW5zOyBjb2wrKykgewogICAgICAgIGNvbnN0IHN0YXJ0WCA9IGNvbCAqIGNlbGxTaXplICsgOTA7CiAgICAgICAgY29uc3Qgc3RhcnRZID0gcm93ICogY2VsbFNpemUgKyA5MDsKICAgICAgICBjb25zdCBjZWxsSW5kZXggPSByb3cgKiBncmlkQ29sdW1ucyArIGNvbDsKICAgICAgICBjb25zdCBibG9vZEFsY29ob2wgPSBjZWxsSW5kZXggLyAodG90YWxDZWxscyAtIDEpICogNzA7IC8vIENvbXB1dGUgYmxvb2QgYWxjb2hvbCBsZXZlbCBiYXNlZCBvbiBjZWxsIGluZGV4CiAgICAgICAgY29uc3QgcGF0aFBvaW50cyA9IGNyZWF0ZVBhdGgoYmxvb2RBbGNvaG9sLCBzdGFydFgsIHN0YXJ0WSk7CiAgICAgICAgZHJhd1BhdGgocGF0aFBvaW50cywgc3ZnKTsKICAgICAgfQogICAgfQogIDwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4=