f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAACALgAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIHJlZmxlY3Q7CnBrZ3BhdGggcmVmbGVjdDsKcHJpb3JpdHkgMzsKaW1wb3J0IG1hdGggbWF0aCAibWF0aCI7CmltcG9ydCBydW50aW1lIHJ1bnRpbWUgInJ1bnRpbWUiOwppbXBvcnQgc3RyY29udiBzdHJjb252ICJzdHJjb252IjsKaW1wb3J0IHN5bmMgc3luYyAic3luYyI7CmltcG9ydCB1bnNhZmUgdW5zYWZlICJ1bnNhZmUiOwppbml0IHJlZmxlY3QgcmVmbGVjdC4uaW1wb3J0IDMgbWF0aCBtYXRoLi5pbXBvcnQgMSBydW50aW1lIHJ1bnRpbWUuLmltcG9ydCAxIHN0cmNvbnYgc3RyY29udi4uaW1wb3J0IDIgc3luYyBzeW5jLi5pbXBvcnQgMjsKZnVuYyBBcHBlbmQgKHMgPHR5cGUgMSAiVmFsdWUiIDx0eXBlIDIgc3RydWN0IHsgLnJlZmxlY3QudHlwIDx0eXBlIDMgKjx0eXBlIDQgIi5yZWZsZWN0LnJ0eXBlIiA8dHlwZSA1IHN0cnVjdCB7IC5yZWZsZWN0LmtpbmQgPHR5cGUgLTU+OyAucmVmbGVjdC5hbGlnbiA8dHlwZSAtMT47IC5yZWZsZWN0LmZpZWxkQWxpZ24gPHR5cGUgLTU+OyAucmVmbGVjdC5fIDx0eXBlIC01PjsgLnJlZmxlY3Quc2l6ZSA8dHlwZSAtMTM+OyAucmVmbGVjdC5oYXNoIDx0eXBlIC03PjsgLnJlZmxlY3QuaGFzaGZuIDx0eXBlIC0xMz47IC5yZWZsZWN0LmVxdWFsZm4gPHR5cGUgLTEzPjsgLnJlZmxlY3QuZ2MgPHR5cGUgNiAidW5zYWZlLlBvaW50ZXIiIDx0eXBlIDcgKmFueT4+OyAucmVmbGVjdC5zdHJpbmcgPHR5cGUgOCAqPHR5cGUgLTE2Pj47ID8gPHR5cGUgOSAqPHR5cGUgMTAgIi5yZWZsZWN0LnVuY29tbW9uVHlwZSIgPHR5cGUgMTEgc3RydWN0IHsgLnJlZmxlY3QubmFtZSA8dHlwZSAxMiAqPHR5cGUgLTE2Pj47IC5yZWZsZWN0LnBrZ1BhdGggPHR5cGUgMTMgKjx0eXBlIC0xNj4+OyAucmVmbGVjdC5tZXRob2RzIDx0eXBlIDE0IFtdIDx0eXBlIDE1ICIucmVmbGVjdC5tZXRob2QiIDx0eXBlIDE2IHN0cnVjdCB7IC5yZWZsZWN0Lm5hbWUgPHR5cGUgMTcgKjx0eXBlIC0xNj4+OyAucmVmbGVjdC5wa2dQYXRoIDx0eXBlIDE4ICo8dHlwZSAtMTY+PjsgLnJlZmxlY3QubXR5cCA8dHlwZSAxOSAqPHR5cGUgND4+OyAucmVmbGVjdC50eXAgPHR5cGUgMTk+OyAucmVmbGVjdC50Zm4gPHR5cGUgNj47IH0+Pj47IH0+CiBmdW5jICh0IDx0eXBlIDIwICo8dHlwZSAxMD4+KSAucmVmbGVjdC51bmNvbW1vbiAoKSA8dHlwZSAyMD47CiBmdW5jICh0IDx0eXBlIDIwPikgUGtnUGF0aCAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSAyMD4pIE5hbWUgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMjA+KSBNZXRob2QgKGkgPHR5cGUgLTExPikgKG0gPHR5cGUgMjEgIk1ldGhvZCIgPHR5cGUgMjIgc3RydWN0IHsgTmFtZSA8dHlwZSAtMTY+OyBQa2dQYXRoIDx0eXBlIC0xNj47IFR5cGUgPHR5cGUgMjMgIlR5cGUiIDx0eXBlIDI0IGludGVyZmFjZSB7IEFsaWduICgpIDx0eXBlIC0xMT47IEZpZWxkQWxpZ24gKCkgPHR5cGUgLTExPjsgTWV0aG9kICg/IDx0eXBlIC0xMT4pIDx0eXBlIDIxPjsgTWV0aG9kQnlOYW1lICg/IDx0eXBlIC0xNj4pICg/IDx0eXBlIDIxPiwgPyA8dHlwZSAtMTU+KTsgTnVtTWV0aG9kICgpIDx0eXBlIC0xMT47IE5hbWUgKCkgPHR5cGUgLTE2PjsgUGtnUGF0aCAoKSA8dHlwZSAtMTY+OyBTaXplICgpIDx0eXBlIC0xMz47IFN0cmluZyAoKSA8dHlwZSAtMTY+OyAucmVmbGVjdC5yYXdTdHJpbmcgKCkgPHR5cGUgLTE2PjsgS2luZCAoKSA8dHlwZSAyNSAiS2luZCIgPHR5cGUgLTEyPgogZnVuYyAoayA8dHlwZSAyNT4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+OyBJbXBsZW1lbnRzICh1IDx0eXBlIDIzPikgPHR5cGUgLTE1PjsgQXNzaWduYWJsZVRvICh1IDx0eXBlIDIzPikgPHR5cGUgLTE1PjsgQ29udmVydGlibGVUbyAodSA8dHlwZSAyMz4pIDx0eXBlIC0xNT47IENvbXBhcmFibGUgKCkgPHR5cGUgLTE1PjsgQml0cyAoKSA8dHlwZSAtMTE+OyBDaGFuRGlyICgpIDx0eXBlIDI2ICJDaGFuRGlyIiA8dHlwZSAtMTE+CiBmdW5jIChkIDx0eXBlIDI2PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj47IElzVmFyaWFkaWMgKCkgPHR5cGUgLTE1PjsgRWxlbSAoKSA8dHlwZSAyMz47IEZpZWxkIChpIDx0eXBlIC0xMT4pIDx0eXBlIDI3ICJTdHJ1Y3RGaWVsZCIgPHR5cGUgMjggc3RydWN0IHsgTmFtZSA8dHlwZSAtMTY+OyBQa2dQYXRoIDx0eXBlIC0xNj47IFR5cGUgPHR5cGUgMjM+OyBUYWcgPHR5cGUgMjkgIlN0cnVjdFRhZyIgPHR5cGUgLTE2PgogZnVuYyAodGFnIDx0eXBlIDI5PikgR2V0IChrZXkgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKPjsgT2Zmc2V0IDx0eXBlIC0xMz47IEluZGV4IDx0eXBlIDMwIFtdIDx0eXBlIC0xMT4+OyBBbm9ueW1vdXMgPHR5cGUgLTE1PjsgfT4+OyBGaWVsZEJ5SW5kZXggKGluZGV4IDx0eXBlIDMxIFtdIDx0eXBlIC0xMT4+KSA8dHlwZSAyNz47IEZpZWxkQnlOYW1lIChuYW1lIDx0eXBlIC0xNj4pICg/IDx0eXBlIDI3PiwgPyA8dHlwZSAtMTU+KTsgRmllbGRCeU5hbWVGdW5jIChtYXRjaCA8dHlwZSAzMiAoPyA8dHlwZSAtMTY+KSA8dHlwZSAtMTU+PikgKD8gPHR5cGUgMjc+LCA/IDx0eXBlIC0xNT4pOyBJbiAoaSA8dHlwZSAtMTE+KSA8dHlwZSAyMz47IEtleSAoKSA8dHlwZSAyMz47IExlbiAoKSA8dHlwZSAtMTE+OyBOdW1GaWVsZCAoKSA8dHlwZSAtMTE+OyBOdW1JbiAoKSA8dHlwZSAtMTE+OyBOdW1PdXQgKCkgPHR5cGUgLTExPjsgT3V0IChpIDx0eXBlIC0xMT4pIDx0eXBlIDIzPjsgLnJlZmxlY3QuY29tbW9uICgpIDx0eXBlIDMzICo8dHlwZSA0Pj47IC5yZWZsZWN0LnVuY29tbW9uICgpIDx0eXBlIDM0ICo8dHlwZSAxMD4+OyB9Pj47IEZ1bmMgPHR5cGUgMT47IEluZGV4IDx0eXBlIC0xMT47IH0+Pik7CiBmdW5jICh0IDx0eXBlIDIwPikgTnVtTWV0aG9kICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDIwPikgTWV0aG9kQnlOYW1lIChuYW1lIDx0eXBlIC0xNj4pIChtIDx0eXBlIDIxPiwgb2sgPHR5cGUgLTE1Pik7Cj4+OyAucmVmbGVjdC5wdHJUb1RoaXMgPHR5cGUgMzUgKjx0eXBlIDQ+PjsgLnJlZmxlY3QuemVybyA8dHlwZSA2PjsgfT4KIGZ1bmMgKHQgPHR5cGUgMTk+KSAucmVmbGVjdC5yYXdTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMTk+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMTk+KSBTaXplICgpIDx0eXBlIC0xMz47CiBmdW5jICh0IDx0eXBlIDE5PikgQml0cyAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAxOT4pIEFsaWduICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDE5PikgRmllbGRBbGlnbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAxOT4pIEtpbmQgKCkgPHR5cGUgMjU+OwogZnVuYyAodCA8dHlwZSAxOT4pIC5yZWZsZWN0LnBvaW50ZXJzICgpIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDE5PikgLnJlZmxlY3QuY29tbW9uICgpIDx0eXBlIDE5PjsKIGZ1bmMgKHQgPHR5cGUgMTk+KSBOdW1NZXRob2QgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTk+KSBNZXRob2QgKGkgPHR5cGUgLTExPikgKG0gPHR5cGUgMjE+KTsKIGZ1bmMgKHQgPHR5cGUgMTk+KSBNZXRob2RCeU5hbWUgKG5hbWUgPHR5cGUgLTE2PikgKG0gPHR5cGUgMjE+LCBvayA8dHlwZSAtMTU+KTsKIGZ1bmMgKHQgPHR5cGUgMTk+KSBQa2dQYXRoICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDE5PikgTmFtZSAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSAxOT4pIENoYW5EaXIgKCkgPHR5cGUgMjY+OwogZnVuYyAodCA8dHlwZSAxOT4pIElzVmFyaWFkaWMgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMTk+KSBFbGVtICgpIDx0eXBlIDIzPjsKIGZ1bmMgKHQgPHR5cGUgMTk+KSBGaWVsZCAoaSA8dHlwZSAtMTE+KSA8dHlwZSAyNz47CiBmdW5jICh0IDx0eXBlIDE5PikgRmllbGRCeUluZGV4IChpbmRleCA8dHlwZSAzNiBbXSA8dHlwZSAtMTE+PikgPHR5cGUgMjc+OwogZnVuYyAodCA8dHlwZSAxOT4pIEZpZWxkQnlOYW1lIChuYW1lIDx0eXBlIC0xNj4pICg/IDx0eXBlIDI3PiwgPyA8dHlwZSAtMTU+KTsKIGZ1bmMgKHQgPHR5cGUgMTk+KSBGaWVsZEJ5TmFtZUZ1bmMgKG1hdGNoIDx0eXBlIDM3ICg/IDx0eXBlIC0xNj4pIDx0eXBlIC0xNT4+KSAoPyA8dHlwZSAyNz4sID8gPHR5cGUgLTE1Pik7CiBmdW5jICh0IDx0eXBlIDE5PikgSW4gKGkgPHR5cGUgLTExPikgPHR5cGUgMjM+OwogZnVuYyAodCA8dHlwZSAxOT4pIEtleSAoKSA8dHlwZSAyMz47CiBmdW5jICh0IDx0eXBlIDE5PikgTGVuICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDE5PikgTnVtRmllbGQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTk+KSBOdW1JbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAxOT4pIE51bU91dCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAxOT4pIE91dCAoaSA8dHlwZSAtMTE+KSA8dHlwZSAyMz47CiBmdW5jICh0IDx0eXBlIDE5PikgLnJlZmxlY3QucHRyVG8gKCkgPHR5cGUgMTk+OwogZnVuYyAodCA8dHlwZSAxOT4pIEltcGxlbWVudHMgKHUgPHR5cGUgMjM+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSAxOT4pIEFzc2lnbmFibGVUbyAodSA8dHlwZSAyMz4pIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDE5PikgQ29udmVydGlibGVUbyAodSA8dHlwZSAyMz4pIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDE5PikgQ29tcGFyYWJsZSAoKSA8dHlwZSAtMTU+Owo+PjsgLnJlZmxlY3QucHRyIDx0eXBlIDY+OyA/IDx0eXBlIDM4ICIucmVmbGVjdC5mbGFnIiA8dHlwZSAtMTM+CiBmdW5jIChmIDx0eXBlIDM4PikgLnJlZmxlY3Qua2luZCAoKSA8dHlwZSAyNT47CiBmdW5jIChmIDx0eXBlIDM4PikgLnJlZmxlY3QubXVzdEJlIChleHBlY3RlZCA8dHlwZSAyNT4pOwogZnVuYyAoZiA8dHlwZSAzOD4pIC5yZWZsZWN0Lm11c3RCZUV4cG9ydGVkICgpOwogZnVuYyAoZiA8dHlwZSAzOD4pIC5yZWZsZWN0Lm11c3RCZUFzc2lnbmFibGUgKCk7Cj47IH0+CiBmdW5jICh2IDx0eXBlIDE+KSAucmVmbGVjdC5wb2ludGVyICgpIDx0eXBlIDY+OwogZnVuYyAodiA8dHlwZSAxPikgQWRkciAoKSA8dHlwZSAxPjsKIGZ1bmMgKHYgPHR5cGUgMT4pIEJvb2wgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgMT4pIEJ5dGVzICgpIDx0eXBlIDM5IFtdIDx0eXBlIC0yMD4+OwogZnVuYyAodiA8dHlwZSAxPikgLnJlZmxlY3QucnVuZXMgKCkgPHR5cGUgNDAgW10gPHR5cGUgLTIxPj47CiBmdW5jICh2IDx0eXBlIDE+KSBDYW5BZGRyICgpIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDE+KSBDYW5TZXQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgMT4pIENhbGwgKGluIDx0eXBlIDQxIFtdIDx0eXBlIDE+PikgPHR5cGUgNDIgW10gPHR5cGUgMT4+OwogZnVuYyAodiA8dHlwZSAxPikgQ2FsbFNsaWNlIChpbiA8dHlwZSA0MyBbXSA8dHlwZSAxPj4pIDx0eXBlIDQ0IFtdIDx0eXBlIDE+PjsKIGZ1bmMgKHYgPHR5cGUgMT4pIC5yZWZsZWN0LmNhbGwgKG9wIDx0eXBlIC0xNj4sIGluIDx0eXBlIDQ1IFtdIDx0eXBlIDE+PikgPHR5cGUgNDYgW10gPHR5cGUgMT4+OwogZnVuYyAodiA8dHlwZSAxPikgQ2FwICgpIDx0eXBlIC0xMT47CiBmdW5jICh2IDx0eXBlIDE+KSBDbG9zZSAoKTsKIGZ1bmMgKHYgPHR5cGUgMT4pIENvbXBsZXggKCkgPHR5cGUgLTE4PjsKIGZ1bmMgKHYgPHR5cGUgMT4pIEVsZW0gKCkgPHR5cGUgMT47CiBmdW5jICh2IDx0eXBlIDE+KSBGaWVsZCAoaSA8dHlwZSAtMTE+KSA8dHlwZSAxPjsKIGZ1bmMgKHYgPHR5cGUgMT4pIEZpZWxkQnlJbmRleCAoaW5kZXggPHR5cGUgNDcgW10gPHR5cGUgLTExPj4pIDx0eXBlIDE+OwogZnVuYyAodiA8dHlwZSAxPikgRmllbGRCeU5hbWUgKG5hbWUgPHR5cGUgLTE2PikgPHR5cGUgMT47CiBmdW5jICh2IDx0eXBlIDE+KSBGaWVsZEJ5TmFtZUZ1bmMgKG1hdGNoIDx0eXBlIDQ4ICg/IDx0eXBlIC0xNj4pIDx0eXBlIC0xNT4+KSA8dHlwZSAxPjsKIGZ1bmMgKHYgPHR5cGUgMT4pIEZsb2F0ICgpIDx0eXBlIC0xMD47CiBmdW5jICh2IDx0eXBlIDE+KSBJbmRleCAoaSA8dHlwZSAtMTE+KSA8dHlwZSAxPjsKIGZ1bmMgKHYgPHR5cGUgMT4pIEludCAoKSA8dHlwZSAtND47CiBmdW5jICh2IDx0eXBlIDE+KSBDYW5JbnRlcmZhY2UgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgMT4pIEludGVyZmFjZSAoKSAoaSA8dHlwZSA0OSBpbnRlcmZhY2UgeyB9Pik7CiBmdW5jICh2IDx0eXBlIDE+KSBJbnRlcmZhY2VEYXRhICgpIDx0eXBlIDUwIFsyIF0gPHR5cGUgLTEzPj47CiBmdW5jICh2IDx0eXBlIDE+KSBJc05pbCAoKSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSAxPikgSXNWYWxpZCAoKSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSAxPikgS2luZCAoKSA8dHlwZSAyNT47CiBmdW5jICh2IDx0eXBlIDE+KSBMZW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHYgPHR5cGUgMT4pIE1hcEluZGV4IChrZXkgPHR5cGUgMT4pIDx0eXBlIDE+OwogZnVuYyAodiA8dHlwZSAxPikgTWFwS2V5cyAoKSA8dHlwZSA1MSBbXSA8dHlwZSAxPj47CiBmdW5jICh2IDx0eXBlIDE+KSBNZXRob2QgKGkgPHR5cGUgLTExPikgPHR5cGUgMT47CiBmdW5jICh2IDx0eXBlIDE+KSBOdW1NZXRob2QgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHYgPHR5cGUgMT4pIE1ldGhvZEJ5TmFtZSAobmFtZSA8dHlwZSAtMTY+KSA8dHlwZSAxPjsKIGZ1bmMgKHYgPHR5cGUgMT4pIE51bUZpZWxkICgpIDx0eXBlIC0xMT47CiBmdW5jICh2IDx0eXBlIDE+KSBPdmVyZmxvd0NvbXBsZXggKHggPHR5cGUgLTE4PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgMT4pIE92ZXJmbG93RmxvYXQgKHggPHR5cGUgLTEwPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgMT4pIE92ZXJmbG93SW50ICh4IDx0eXBlIC00PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgMT4pIE92ZXJmbG93VWludCAoeCA8dHlwZSAtOD4pIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDE+KSBQb2ludGVyICgpIDx0eXBlIC0xMz47CiBmdW5jICh2IDx0eXBlIDE+KSBSZWN2ICgpICh4IDx0eXBlIDE+LCBvayA8dHlwZSAtMTU+KTsKIGZ1bmMgKHYgPHR5cGUgMT4pIC5yZWZsZWN0LnJlY3YgKG5iIDx0eXBlIC0xNT4pICh2YWwgPHR5cGUgMT4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAodiA8dHlwZSAxPikgU2VuZCAoeCA8dHlwZSAxPik7CiBmdW5jICh2IDx0eXBlIDE+KSAucmVmbGVjdC5zZW5kICh4IDx0eXBlIDE+LCBuYiA8dHlwZSAtMTU+KSAoc2VsZWN0ZWQgPHR5cGUgLTE1Pik7CiBmdW5jICh2IDx0eXBlIDE+KSBTZXQgKHggPHR5cGUgMT4pOwogZnVuYyAodiA8dHlwZSAxPikgU2V0Qm9vbCAoeCA8dHlwZSAtMTU+KTsKIGZ1bmMgKHYgPHR5cGUgMT4pIFNldEJ5dGVzICh4IDx0eXBlIDUyIFtdIDx0eXBlIC0yMD4+KTsKIGZ1bmMgKHYgPHR5cGUgMT4pIC5yZWZsZWN0LnNldFJ1bmVzICh4IDx0eXBlIDUzIFtdIDx0eXBlIC0yMT4+KTsKIGZ1bmMgKHYgPHR5cGUgMT4pIFNldENvbXBsZXggKHggPHR5cGUgLTE4Pik7CiBmdW5jICh2IDx0eXBlIDE+KSBTZXRGbG9hdCAoeCA8dHlwZSAtMTA+KTsKIGZ1bmMgKHYgPHR5cGUgMT4pIFNldEludCAoeCA8dHlwZSAtND4pOwogZnVuYyAodiA8dHlwZSAxPikgU2V0TGVuIChuIDx0eXBlIC0xMT4pOwogZnVuYyAodiA8dHlwZSAxPikgU2V0Q2FwIChuIDx0eXBlIC0xMT4pOwogZnVuYyAodiA8dHlwZSAxPikgU2V0TWFwSW5kZXggKGtleSA8dHlwZSAxPiwgdmFsIDx0eXBlIDE+KTsKIGZ1bmMgKHYgPHR5cGUgMT4pIFNldFVpbnQgKHggPHR5cGUgLTg+KTsKIGZ1bmMgKHYgPHR5cGUgMT4pIFNldFBvaW50ZXIgKHggPHR5cGUgNj4pOwogZnVuYyAodiA8dHlwZSAxPikgU2V0U3RyaW5nICh4IDx0eXBlIC0xNj4pOwogZnVuYyAodiA8dHlwZSAxPikgU2xpY2UgKGkgPHR5cGUgLTExPiwgaiA8dHlwZSAtMTE+KSA8dHlwZSAxPjsKIGZ1bmMgKHYgPHR5cGUgMT4pIFNsaWNlMyAoaSA8dHlwZSAtMTE+LCBqIDx0eXBlIC0xMT4sIGsgPHR5cGUgLTExPikgPHR5cGUgMT47CiBmdW5jICh2IDx0eXBlIDE+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHYgPHR5cGUgMT4pIFRyeVJlY3YgKCkgKHggPHR5cGUgMT4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAodiA8dHlwZSAxPikgVHJ5U2VuZCAoeCA8dHlwZSAxPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgMT4pIFR5cGUgKCkgPHR5cGUgMjM+OwogZnVuYyAodiA8dHlwZSAxPikgVWludCAoKSA8dHlwZSAtOD47CiBmdW5jICh2IDx0eXBlIDE+KSBVbnNhZmVBZGRyICgpIDx0eXBlIC0xMz47CiBmdW5jICh2IDx0eXBlIDE+KSAucmVmbGVjdC5hc3NpZ25UbyAoY29udGV4dCA8dHlwZSAtMTY+LCBkc3QgPHR5cGUgMz4sIHRhcmdldCA8dHlwZSA2PikgPHR5cGUgMT47CiBmdW5jICh2IDx0eXBlIDE+KSBDb252ZXJ0ICh0IDx0eXBlIDIzPikgPHR5cGUgMT47Cj4sIHggLi4uPHR5cGUgMT4pIDx0eXBlIDE+OwpmdW5jIEFwcGVuZFNsaWNlIChzIDx0eXBlIDE+LCB0IDx0eXBlIDE+KSA8dHlwZSAxPjsKY29uc3QgQXJyYXkgPHR5cGUgMjU+ID0gMTcgOwpjb25zdCBCb29sIDx0eXBlIDI1PiA9IDEgOwpjb25zdCBCb3RoRGlyIDx0eXBlIDI2PiA9IDMgOwpjb25zdCBDaGFuIDx0eXBlIDI1PiA9IDE4IDsKdHlwZSA8dHlwZSAyNj47CmZ1bmMgQ2hhbk9mIChkaXIgPHR5cGUgMjY+LCB0IDx0eXBlIDIzPikgPHR5cGUgMjM+Owpjb25zdCBDb21wbGV4MTI4IDx0eXBlIDI1PiA9IDE2IDsKY29uc3QgQ29tcGxleDY0IDx0eXBlIDI1PiA9IDE1IDsKZnVuYyBDb3B5IChkc3QgPHR5cGUgMT4sIHNyYyA8dHlwZSAxPikgPHR5cGUgLTExPjsKZnVuYyBEZWVwRXF1YWwgKGExIDx0eXBlIDU0IGludGVyZmFjZSB7IH0+LCBhMiA8dHlwZSA1ND4pIDx0eXBlIC0xNT47CmZ1bmMgRkZJQ2FsbGJhY2tHbyAocmVzdWx0cyA8dHlwZSA2PiwgcGFyYW1zIDx0eXBlIDY+LCBpbXBsIDx0eXBlIDU1ICo8dHlwZSA1NiAiLnJlZmxlY3QubWFrZUZ1bmNJbXBsIiA8dHlwZSA1NyBzdHJ1Y3QgeyAucmVmbGVjdC5jb2RlIDx0eXBlIC0xMz47IC5yZWZsZWN0LmZmaV9jaWYgPHR5cGUgNj47IC5yZWZsZWN0LmZmaV9mdW4gPHR5cGUgNTggKD8gPHR5cGUgNj4sID8gPHR5cGUgNj4pPjsgLnJlZmxlY3QudHlwIDx0eXBlIDU5ICo8dHlwZSA2MCAiLnJlZmxlY3QuZnVuY1R5cGUiIDx0eXBlIDYxIHN0cnVjdCB7ID8gPHR5cGUgND4gInJlZmxlY3Q6XCJmdW5jXCIiOyAucmVmbGVjdC5kb3Rkb3Rkb3QgPHR5cGUgLTE1PjsgLnJlZmxlY3QuaW4gPHR5cGUgNjIgW10gPHR5cGUgMz4+OyAucmVmbGVjdC5vdXQgPHR5cGUgNjMgW10gPHR5cGUgMz4+OyB9Pj4+OyAucmVmbGVjdC5mbiA8dHlwZSA2NCAoPyA8dHlwZSA2NSBbXSA8dHlwZSAxPj4pIDx0eXBlIDY2IFtdIDx0eXBlIDE+Pj47IC5yZWZsZWN0Lm1ldGhvZCA8dHlwZSAtMTE+OyAucmVmbGVjdC5yY3ZyIDx0eXBlIDE+OyB9PgogZnVuYyAoYyA8dHlwZSA2NyAqPHR5cGUgNTY+PikgLnJlZmxlY3QuY2FsbCAoaW4gPHR5cGUgNjggW10gPHR5cGUgMT4+KSA8dHlwZSA2OSBbXSA8dHlwZSAxPj47Cj4+KTsKY29uc3QgRmxvYXQzMiA8dHlwZSAyNT4gPSAxMyA7CmNvbnN0IEZsb2F0NjQgPHR5cGUgMjU+ID0gMTQgOwpjb25zdCBGdW5jIDx0eXBlIDI1PiA9IDE5IDsKZnVuYyBJbmRpcmVjdCAodiA8dHlwZSAxPikgPHR5cGUgMT47CmNvbnN0IEludCA8dHlwZSAyNT4gPSAyIDsKY29uc3QgSW50MTYgPHR5cGUgMjU+ID0gNCA7CmNvbnN0IEludDMyIDx0eXBlIDI1PiA9IDUgOwpjb25zdCBJbnQ2NCA8dHlwZSAyNT4gPSA2IDsKY29uc3QgSW50OCA8dHlwZSAyNT4gPSAzIDsKY29uc3QgSW50ZXJmYWNlIDx0eXBlIDI1PiA9IDIwIDsKY29uc3QgSW52YWxpZCA8dHlwZSAyNT4gPSAwIDsKdHlwZSA8dHlwZSAyNT47CmZ1bmMgTWFrZUNoYW4gKHR5cCA8dHlwZSAyMz4sIGJ1ZmZlciA8dHlwZSAtMTE+KSA8dHlwZSAxPjsKZnVuYyBNYWtlRnVuYyAodHlwIDx0eXBlIDIzPiwgZm4gPHR5cGUgNzAgKGFyZ3MgPHR5cGUgNzEgW10gPHR5cGUgMT4+KSAocmVzdWx0cyA8dHlwZSA3MiBbXSA8dHlwZSAxPj4pPikgPHR5cGUgMT47CmZ1bmMgTWFrZU1hcCAodHlwIDx0eXBlIDIzPikgPHR5cGUgMT47CmZ1bmMgTWFrZVNsaWNlICh0eXAgPHR5cGUgMjM+LCBsZW4gPHR5cGUgLTExPiwgY2FwIDx0eXBlIC0xMT4pIDx0eXBlIDE+Owpjb25zdCBNYXAgPHR5cGUgMjU+ID0gMjEgOwpmdW5jIE1hcE9mIChrZXkgPHR5cGUgMjM+LCBlbGVtIDx0eXBlIDIzPikgPHR5cGUgMjM+Owp0eXBlIDx0eXBlIDIxPjsKZnVuYyBOZXcgKHR5cCA8dHlwZSAyMz4pIDx0eXBlIDE+OwpmdW5jIE5ld0F0ICh0eXAgPHR5cGUgMjM+LCBwIDx0eXBlIDY+KSA8dHlwZSAxPjsKY29uc3QgUHRyIDx0eXBlIDI1PiA9IDIyIDsKZnVuYyBQdHJUbyAodCA8dHlwZSAyMz4pIDx0eXBlIDIzPjsKY29uc3QgUmVjdkRpciA8dHlwZSAyNj4gPSAxIDsKZnVuYyBTZWxlY3QgKGNhc2VzIDx0eXBlIDczIFtdIDx0eXBlIDc0ICJTZWxlY3RDYXNlIiA8dHlwZSA3NSBzdHJ1Y3QgeyBEaXIgPHR5cGUgNzYgIlNlbGVjdERpciIgPHR5cGUgLTExPj47IENoYW4gPHR5cGUgMT47IFNlbmQgPHR5cGUgMT47IH0+Pj4pIChjaG9zZW4gPHR5cGUgLTExPiwgcmVjdiA8dHlwZSAxPiwgcmVjdk9LIDx0eXBlIC0xNT4pOwp0eXBlIDx0eXBlIDc0PjsKY29uc3QgU2VsZWN0RGVmYXVsdCA8dHlwZSA3Nj4gPSAzIDsKdHlwZSA8dHlwZSA3Nj47CmNvbnN0IFNlbGVjdFJlY3YgPHR5cGUgNzY+ID0gMiA7CmNvbnN0IFNlbGVjdFNlbmQgPHR5cGUgNzY+ID0gMSA7CmNvbnN0IFNlbmREaXIgPHR5cGUgMjY+ID0gMiA7CmNvbnN0IFNsaWNlIDx0eXBlIDI1PiA9IDIzIDsKdHlwZSA8dHlwZSA3NyAiU2xpY2VIZWFkZXIiIDx0eXBlIDc4IHN0cnVjdCB7IERhdGEgPHR5cGUgLTEzPjsgTGVuIDx0eXBlIC0xMT47IENhcCA8dHlwZSAtMTE+OyB9Pj47CmZ1bmMgU2xpY2VPZiAodCA8dHlwZSAyMz4pIDx0eXBlIDIzPjsKY29uc3QgU3RyaW5nIDx0eXBlIDI1PiA9IDI0IDsKdHlwZSA8dHlwZSA3OSAiU3RyaW5nSGVhZGVyIiA8dHlwZSA4MCBzdHJ1Y3QgeyBEYXRhIDx0eXBlIC0xMz47IExlbiA8dHlwZSAtMTE+OyB9Pj47CmNvbnN0IFN0cnVjdCA8dHlwZSAyNT4gPSAyNSA7CnR5cGUgPHR5cGUgMjc+Owp0eXBlIDx0eXBlIDI5PjsKdHlwZSA8dHlwZSAyMz47CmZ1bmMgVHlwZU9mIChpIDx0eXBlIDgxIGludGVyZmFjZSB7IH0+KSA8dHlwZSAyMz47CmNvbnN0IFVpbnQgPHR5cGUgMjU+ID0gNyA7CmNvbnN0IFVpbnQxNiA8dHlwZSAyNT4gPSA5IDsKY29uc3QgVWludDMyIDx0eXBlIDI1PiA9IDEwIDsKY29uc3QgVWludDY0IDx0eXBlIDI1PiA9IDExIDsKY29uc3QgVWludDggPHR5cGUgMjU+ID0gOCA7CmNvbnN0IFVpbnRwdHIgPHR5cGUgMjU+ID0gMTIgOwpjb25zdCBVbnNhZmVQb2ludGVyIDx0eXBlIDI1PiA9IDI2IDsKdHlwZSA8dHlwZSAxPjsKdHlwZSA8dHlwZSA4MiAiVmFsdWVFcnJvciIgPHR5cGUgODMgc3RydWN0IHsgTWV0aG9kIDx0eXBlIC0xNj47IEtpbmQgPHR5cGUgMjU+OyB9PgogZnVuYyAoZSA8dHlwZSA4NCAqPHR5cGUgODI+PikgRXJyb3IgKCkgPHR5cGUgLTE2PjsKPjsKZnVuYyBWYWx1ZU9mIChpIDx0eXBlIDg1IGludGVyZmFjZSB7IH0+KSA8dHlwZSAxPjsKZnVuYyBaZXJvICh0eXAgPHR5cGUgMjM+KSA8dHlwZSAxPjsKY2hlY2tzdW0gNEYzMDZFNEE0RDdFMDFGQzQ4OEZDMDQzQjNGRTNDNDQxRTA5MzhCNTsKAC5zeW10YWIALnN0cnRhYgAuc2hzdHJ0YWIALmdvX2V4cG9ydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAABAAAAAAAAAAAAAAA0AAAAAS4AAAAAAAAAAAAAAQAAAAAAAAARAAAAAwAAAAAAAAAAAAAANS4AACYAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAFwuAAAgAAAABAAAAAIAAAAEAAAAEAAAAAkAAAADAAAAAAAAAAAAAAB8LgAAAQAAAAAAAAAAAAAAAQAAAAAAAAA=