f0VMRgEBAQAAAAAAAAAAAAEAAwABAAAAAAAAAAAAAACwKQAAAAAAADQAAAAAACgABQACAHYxOwpwYWNrYWdlIHJlZmxlY3Q7CnBrZ3BhdGggcmVmbGVjdDsKcHJpb3JpdHkgMzsKaW1wb3J0IG1hdGggbWF0aCAibWF0aCI7CmltcG9ydCBydW50aW1lIHJ1bnRpbWUgInJ1bnRpbWUiOwppbXBvcnQgc3RyY29udiBzdHJjb252ICJzdHJjb252IjsKaW1wb3J0IHN5bmMgc3luYyAic3luYyI7CmltcG9ydCB1bnNhZmUgdW5zYWZlICJ1bnNhZmUiOwppbml0IHJlZmxlY3QgcmVmbGVjdC4uaW1wb3J0IDMgbWF0aCBtYXRoLi5pbXBvcnQgMSBydW50aW1lIHJ1bnRpbWUuLmltcG9ydCAxIHN0cmNvbnYgc3RyY29udi4uaW1wb3J0IDI7CmZ1bmMgQXBwZW5kIChzIDx0eXBlIDEgIlZhbHVlIiA8dHlwZSAyIHN0cnVjdCB7IC5yZWZsZWN0LnR5cCA8dHlwZSAzICo8dHlwZSA0ICIucmVmbGVjdC5jb21tb25UeXBlIiA8dHlwZSA1IHN0cnVjdCB7IC5yZWZsZWN0LmtpbmQgPHR5cGUgLTU+OyAucmVmbGVjdC5hbGlnbiA8dHlwZSAtMT47IC5yZWZsZWN0LmZpZWxkQWxpZ24gPHR5cGUgLTU+OyAucmVmbGVjdC5fIDx0eXBlIC01PjsgLnJlZmxlY3Quc2l6ZSA8dHlwZSAtMTM+OyAucmVmbGVjdC5oYXNoIDx0eXBlIC03PjsgLnJlZmxlY3QuaGFzaGZuIDx0eXBlIDYgKD8gPHR5cGUgNyAidW5zYWZlLlBvaW50ZXIiIDx0eXBlIDggKmFueT4+LCA/IDx0eXBlIC0xMz4pPjsgLnJlZmxlY3QuZXF1YWxmbiA8dHlwZSA5ICg/IDx0eXBlIDc+LCA/IDx0eXBlIDc+LCA/IDx0eXBlIC0xMz4pPjsgLnJlZmxlY3Quc3RyaW5nIDx0eXBlIDEwICo8dHlwZSAtMTY+PjsgPyA8dHlwZSAxMSAqPHR5cGUgMTIgIi5yZWZsZWN0LnVuY29tbW9uVHlwZSIgPHR5cGUgMTMgc3RydWN0IHsgLnJlZmxlY3QubmFtZSA8dHlwZSAxNCAqPHR5cGUgLTE2Pj47IC5yZWZsZWN0LnBrZ1BhdGggPHR5cGUgMTUgKjx0eXBlIC0xNj4+OyAucmVmbGVjdC5tZXRob2RzIDx0eXBlIDE2IFtdIDx0eXBlIDE3ICIucmVmbGVjdC5tZXRob2QiIDx0eXBlIDE4IHN0cnVjdCB7IC5yZWZsZWN0Lm5hbWUgPHR5cGUgMTkgKjx0eXBlIC0xNj4+OyAucmVmbGVjdC5wa2dQYXRoIDx0eXBlIDIwICo8dHlwZSAtMTY+PjsgLnJlZmxlY3QubXR5cCA8dHlwZSAyMSAqPHR5cGUgMjIgIi5yZWZsZWN0LnJ1bnRpbWVUeXBlIiA8dHlwZSA0Pj4+OyAucmVmbGVjdC50eXAgPHR5cGUgMjE+OyAucmVmbGVjdC50Zm4gPHR5cGUgNz47IH0+Pj47IH0+CiBmdW5jICh0IDx0eXBlIDIzICo8dHlwZSAxMj4+KSAucmVmbGVjdC51bmNvbW1vbiAoKSA8dHlwZSAyMz47CiBmdW5jICh0IDx0eXBlIDIzPikgUGtnUGF0aCAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSAyMz4pIE5hbWUgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMjM+KSBNZXRob2QgKGkgPHR5cGUgLTExPikgKG0gPHR5cGUgMjQgIk1ldGhvZCIgPHR5cGUgMjUgc3RydWN0IHsgTmFtZSA8dHlwZSAtMTY+OyBQa2dQYXRoIDx0eXBlIC0xNj47IFR5cGUgPHR5cGUgMjYgIlR5cGUiIDx0eXBlIDI3IGludGVyZmFjZSB7IEFsaWduICgpIDx0eXBlIC0xMT47IEZpZWxkQWxpZ24gKCkgPHR5cGUgLTExPjsgTWV0aG9kICg/IDx0eXBlIC0xMT4pIDx0eXBlIDI0PjsgTWV0aG9kQnlOYW1lICg/IDx0eXBlIC0xNj4pICg/IDx0eXBlIDI0PiwgPyA8dHlwZSAtMTU+KTsgTnVtTWV0aG9kICgpIDx0eXBlIC0xMT47IE5hbWUgKCkgPHR5cGUgLTE2PjsgUGtnUGF0aCAoKSA8dHlwZSAtMTY+OyBTaXplICgpIDx0eXBlIC0xMz47IFN0cmluZyAoKSA8dHlwZSAtMTY+OyAucmVmbGVjdC5yYXdTdHJpbmcgKCkgPHR5cGUgLTE2PjsgS2luZCAoKSA8dHlwZSAyOCAiS2luZCIgPHR5cGUgLTEyPgogZnVuYyAoayA8dHlwZSAyOD4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+OyBJbXBsZW1lbnRzICh1IDx0eXBlIDI2PikgPHR5cGUgLTE1PjsgQXNzaWduYWJsZVRvICh1IDx0eXBlIDI2PikgPHR5cGUgLTE1PjsgQml0cyAoKSA8dHlwZSAtMTE+OyBDaGFuRGlyICgpIDx0eXBlIDI5ICJDaGFuRGlyIiA8dHlwZSAtMTE+CiBmdW5jIChkIDx0eXBlIDI5PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj47IElzVmFyaWFkaWMgKCkgPHR5cGUgLTE1PjsgRWxlbSAoKSA8dHlwZSAyNj47IEZpZWxkIChpIDx0eXBlIC0xMT4pIDx0eXBlIDMwICJTdHJ1Y3RGaWVsZCIgPHR5cGUgMzEgc3RydWN0IHsgTmFtZSA8dHlwZSAtMTY+OyBQa2dQYXRoIDx0eXBlIC0xNj47IFR5cGUgPHR5cGUgMjY+OyBUYWcgPHR5cGUgMzIgIlN0cnVjdFRhZyIgPHR5cGUgLTE2PgogZnVuYyAodGFnIDx0eXBlIDMyPikgR2V0IChrZXkgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKPjsgT2Zmc2V0IDx0eXBlIC0xMz47IEluZGV4IDx0eXBlIDMzIFtdIDx0eXBlIC0xMT4+OyBBbm9ueW1vdXMgPHR5cGUgLTE1PjsgfT4+OyBGaWVsZEJ5SW5kZXggKGluZGV4IDx0eXBlIDM0IFtdIDx0eXBlIC0xMT4+KSA8dHlwZSAzMD47IEZpZWxkQnlOYW1lIChuYW1lIDx0eXBlIC0xNj4pICg/IDx0eXBlIDMwPiwgPyA8dHlwZSAtMTU+KTsgRmllbGRCeU5hbWVGdW5jIChtYXRjaCA8dHlwZSAzNSAoPyA8dHlwZSAtMTY+KSA8dHlwZSAtMTU+PikgKD8gPHR5cGUgMzA+LCA/IDx0eXBlIC0xNT4pOyBJbiAoaSA8dHlwZSAtMTE+KSA8dHlwZSAyNj47IEtleSAoKSA8dHlwZSAyNj47IExlbiAoKSA8dHlwZSAtMTE+OyBOdW1GaWVsZCAoKSA8dHlwZSAtMTE+OyBOdW1JbiAoKSA8dHlwZSAtMTE+OyBOdW1PdXQgKCkgPHR5cGUgLTExPjsgT3V0IChpIDx0eXBlIC0xMT4pIDx0eXBlIDI2PjsgLnJlZmxlY3QucnVudGltZVR5cGUgKCkgPHR5cGUgMzYgKjx0eXBlIDIyPj47IC5yZWZsZWN0LmNvbW1vbiAoKSA8dHlwZSAzNyAqPHR5cGUgND4+OyAucmVmbGVjdC51bmNvbW1vbiAoKSA8dHlwZSAzOCAqPHR5cGUgMTI+PjsgfT4+OyBGdW5jIDx0eXBlIDE+OyBJbmRleCA8dHlwZSAtMTE+OyB9Pj4pOwogZnVuYyAodCA8dHlwZSAyMz4pIE51bU1ldGhvZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAyMz4pIE1ldGhvZEJ5TmFtZSAobmFtZSA8dHlwZSAtMTY+KSAobSA8dHlwZSAyND4sIG9rIDx0eXBlIC0xNT4pOwo+PjsgLnJlZmxlY3QucHRyVG9UaGlzIDx0eXBlIDIxPjsgfT4KIGZ1bmMgKHQgPHR5cGUgMzkgKjx0eXBlIDQ+PikgLnJlZmxlY3QudG9UeXBlICgpIDx0eXBlIDI2PjsKIGZ1bmMgKHQgPHR5cGUgMzk+KSAucmVmbGVjdC5yYXdTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMzk+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMzk+KSBTaXplICgpIDx0eXBlIC0xMz47CiBmdW5jICh0IDx0eXBlIDM5PikgQml0cyAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAzOT4pIEFsaWduICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDM5PikgRmllbGRBbGlnbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAzOT4pIEtpbmQgKCkgPHR5cGUgMjg+OwogZnVuYyAodCA8dHlwZSAzOT4pIC5yZWZsZWN0LmNvbW1vbiAoKSA8dHlwZSAzOT47CiBmdW5jICh0IDx0eXBlIDM5PikgTnVtTWV0aG9kICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDM5PikgTWV0aG9kIChpIDx0eXBlIC0xMT4pIChtIDx0eXBlIDI0Pik7CiBmdW5jICh0IDx0eXBlIDM5PikgTWV0aG9kQnlOYW1lIChuYW1lIDx0eXBlIC0xNj4pIChtIDx0eXBlIDI0Piwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jICh0IDx0eXBlIDM5PikgUGtnUGF0aCAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSAzOT4pIE5hbWUgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMzk+KSBDaGFuRGlyICgpIDx0eXBlIDI5PjsKIGZ1bmMgKHQgPHR5cGUgMzk+KSBJc1ZhcmlhZGljICgpIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDM5PikgRWxlbSAoKSA8dHlwZSAyNj47CiBmdW5jICh0IDx0eXBlIDM5PikgRmllbGQgKGkgPHR5cGUgLTExPikgPHR5cGUgMzA+OwogZnVuYyAodCA8dHlwZSAzOT4pIEZpZWxkQnlJbmRleCAoaW5kZXggPHR5cGUgNDAgW10gPHR5cGUgLTExPj4pIDx0eXBlIDMwPjsKIGZ1bmMgKHQgPHR5cGUgMzk+KSBGaWVsZEJ5TmFtZSAobmFtZSA8dHlwZSAtMTY+KSAoPyA8dHlwZSAzMD4sID8gPHR5cGUgLTE1Pik7CiBmdW5jICh0IDx0eXBlIDM5PikgRmllbGRCeU5hbWVGdW5jIChtYXRjaCA8dHlwZSA0MSAoPyA8dHlwZSAtMTY+KSA8dHlwZSAtMTU+PikgKD8gPHR5cGUgMzA+LCA/IDx0eXBlIC0xNT4pOwogZnVuYyAodCA8dHlwZSAzOT4pIEluIChpIDx0eXBlIC0xMT4pIDx0eXBlIDI2PjsKIGZ1bmMgKHQgPHR5cGUgMzk+KSBLZXkgKCkgPHR5cGUgMjY+OwogZnVuYyAodCA8dHlwZSAzOT4pIExlbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAzOT4pIE51bUZpZWxkICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDM5PikgTnVtSW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMzk+KSBOdW1PdXQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMzk+KSBPdXQgKGkgPHR5cGUgLTExPikgPHR5cGUgMjY+OwogZnVuYyAodCA8dHlwZSAzOT4pIC5yZWZsZWN0LnJ1bnRpbWVUeXBlICgpIDx0eXBlIDIxPjsKIGZ1bmMgKGN0IDx0eXBlIDM5PikgLnJlZmxlY3QucHRyVG8gKCkgPHR5cGUgMzk+OwogZnVuYyAodCA8dHlwZSAzOT4pIEltcGxlbWVudHMgKHUgPHR5cGUgMjY+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSAzOT4pIEFzc2lnbmFibGVUbyAodSA8dHlwZSAyNj4pIDx0eXBlIC0xNT47Cj4+OyAucmVmbGVjdC52YWwgPHR5cGUgNz47ID8gPHR5cGUgNDIgIi5yZWZsZWN0LmZsYWciIDx0eXBlIC0xMz4KIGZ1bmMgKGYgPHR5cGUgNDI+KSAucmVmbGVjdC5raW5kICgpIDx0eXBlIDI4PjsKIGZ1bmMgKGYgPHR5cGUgNDI+KSAucmVmbGVjdC5tdXN0QmUgKGV4cGVjdGVkIDx0eXBlIDI4Pik7CiBmdW5jIChmIDx0eXBlIDQyPikgLnJlZmxlY3QubXVzdEJlRXhwb3J0ZWQgKCk7CiBmdW5jIChmIDx0eXBlIDQyPikgLnJlZmxlY3QubXVzdEJlQXNzaWduYWJsZSAoKTsKPjsgfT4KIGZ1bmMgKHYgPHR5cGUgMT4pIC5yZWZsZWN0Lml3b3JkICgpIDx0eXBlIDQzICIucmVmbGVjdC5pd29yZCIgPHR5cGUgNz4+OwogZnVuYyAodiA8dHlwZSAxPikgQWRkciAoKSA8dHlwZSAxPjsKIGZ1bmMgKHYgPHR5cGUgMT4pIEJvb2wgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgMT4pIEJ5dGVzICgpIDx0eXBlIDQ0IFtdIDx0eXBlIC0yMD4+OwogZnVuYyAodiA8dHlwZSAxPikgQ2FuQWRkciAoKSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSAxPikgQ2FuU2V0ICgpIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDE+KSBDYWxsIChpbiA8dHlwZSA0NSBbXSA8dHlwZSAxPj4pIDx0eXBlIDQ2IFtdIDx0eXBlIDE+PjsKIGZ1bmMgKHYgPHR5cGUgMT4pIENhbGxTbGljZSAoaW4gPHR5cGUgNDcgW10gPHR5cGUgMT4+KSA8dHlwZSA0OCBbXSA8dHlwZSAxPj47CiBmdW5jICh2IDx0eXBlIDE+KSAucmVmbGVjdC5jYWxsIChtZXRob2QgPHR5cGUgLTE2PiwgaW4gPHR5cGUgNDkgW10gPHR5cGUgMT4+KSA8dHlwZSA1MCBbXSA8dHlwZSAxPj47CiBmdW5jICh2IDx0eXBlIDE+KSBDYXAgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHYgPHR5cGUgMT4pIENsb3NlICgpOwogZnVuYyAodiA8dHlwZSAxPikgQ29tcGxleCAoKSA8dHlwZSAtMTg+OwogZnVuYyAodiA8dHlwZSAxPikgRWxlbSAoKSA8dHlwZSAxPjsKIGZ1bmMgKHYgPHR5cGUgMT4pIEZpZWxkIChpIDx0eXBlIC0xMT4pIDx0eXBlIDE+OwogZnVuYyAodiA8dHlwZSAxPikgRmllbGRCeUluZGV4IChpbmRleCA8dHlwZSA1MSBbXSA8dHlwZSAtMTE+PikgPHR5cGUgMT47CiBmdW5jICh2IDx0eXBlIDE+KSBGaWVsZEJ5TmFtZSAobmFtZSA8dHlwZSAtMTY+KSA8dHlwZSAxPjsKIGZ1bmMgKHYgPHR5cGUgMT4pIEZpZWxkQnlOYW1lRnVuYyAobWF0Y2ggPHR5cGUgNTIgKD8gPHR5cGUgLTE2PikgPHR5cGUgLTE1Pj4pIDx0eXBlIDE+OwogZnVuYyAodiA8dHlwZSAxPikgRmxvYXQgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKHYgPHR5cGUgMT4pIEluZGV4IChpIDx0eXBlIC0xMT4pIDx0eXBlIDE+OwogZnVuYyAodiA8dHlwZSAxPikgSW50ICgpIDx0eXBlIC00PjsKIGZ1bmMgKHYgPHR5cGUgMT4pIENhbkludGVyZmFjZSAoKSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSAxPikgSW50ZXJmYWNlICgpIChpIDx0eXBlIDUzIGludGVyZmFjZSB7IH0+KTsKIGZ1bmMgKHYgPHR5cGUgMT4pIEludGVyZmFjZURhdGEgKCkgPHR5cGUgNTQgWzIgXSA8dHlwZSAtMTM+PjsKIGZ1bmMgKHYgPHR5cGUgMT4pIElzTmlsICgpIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDE+KSBJc1ZhbGlkICgpIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDE+KSBLaW5kICgpIDx0eXBlIDI4PjsKIGZ1bmMgKHYgPHR5cGUgMT4pIExlbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAodiA8dHlwZSAxPikgTWFwSW5kZXggKGtleSA8dHlwZSAxPikgPHR5cGUgMT47CiBmdW5jICh2IDx0eXBlIDE+KSBNYXBLZXlzICgpIDx0eXBlIDU1IFtdIDx0eXBlIDE+PjsKIGZ1bmMgKHYgPHR5cGUgMT4pIE1ldGhvZCAoaSA8dHlwZSAtMTE+KSA8dHlwZSAxPjsKIGZ1bmMgKHYgPHR5cGUgMT4pIE51bU1ldGhvZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodiA8dHlwZSAxPikgTWV0aG9kQnlOYW1lIChuYW1lIDx0eXBlIC0xNj4pIDx0eXBlIDE+OwogZnVuYyAodiA8dHlwZSAxPikgTnVtRmllbGQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHYgPHR5cGUgMT4pIE92ZXJmbG93Q29tcGxleCAoeCA8dHlwZSAtMTg+KSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSAxPikgT3ZlcmZsb3dGbG9hdCAoeCA8dHlwZSAtMTA+KSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSAxPikgT3ZlcmZsb3dJbnQgKHggPHR5cGUgLTQ+KSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSAxPikgT3ZlcmZsb3dVaW50ICh4IDx0eXBlIC04PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgMT4pIFBvaW50ZXIgKCkgPHR5cGUgLTEzPjsKIGZ1bmMgKHYgPHR5cGUgMT4pIFJlY3YgKCkgKHggPHR5cGUgMT4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAodiA8dHlwZSAxPikgLnJlZmxlY3QucmVjdiAobmIgPHR5cGUgLTE1PikgKHZhbCA8dHlwZSAxPiwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jICh2IDx0eXBlIDE+KSBTZW5kICh4IDx0eXBlIDE+KTsKIGZ1bmMgKHYgPHR5cGUgMT4pIC5yZWZsZWN0LnNlbmQgKHggPHR5cGUgMT4sIG5iIDx0eXBlIC0xNT4pIChzZWxlY3RlZCA8dHlwZSAtMTU+KTsKIGZ1bmMgKHYgPHR5cGUgMT4pIFNldCAoeCA8dHlwZSAxPik7CiBmdW5jICh2IDx0eXBlIDE+KSBTZXRCb29sICh4IDx0eXBlIC0xNT4pOwogZnVuYyAodiA8dHlwZSAxPikgU2V0Qnl0ZXMgKHggPHR5cGUgNTYgW10gPHR5cGUgLTIwPj4pOwogZnVuYyAodiA8dHlwZSAxPikgU2V0Q29tcGxleCAoeCA8dHlwZSAtMTg+KTsKIGZ1bmMgKHYgPHR5cGUgMT4pIFNldEZsb2F0ICh4IDx0eXBlIC0xMD4pOwogZnVuYyAodiA8dHlwZSAxPikgU2V0SW50ICh4IDx0eXBlIC00Pik7CiBmdW5jICh2IDx0eXBlIDE+KSBTZXRMZW4gKG4gPHR5cGUgLTExPik7CiBmdW5jICh2IDx0eXBlIDE+KSBTZXRNYXBJbmRleCAoa2V5IDx0eXBlIDE+LCB2YWwgPHR5cGUgMT4pOwogZnVuYyAodiA8dHlwZSAxPikgU2V0VWludCAoeCA8dHlwZSAtOD4pOwogZnVuYyAodiA8dHlwZSAxPikgU2V0UG9pbnRlciAoeCA8dHlwZSA3Pik7CiBmdW5jICh2IDx0eXBlIDE+KSBTZXRTdHJpbmcgKHggPHR5cGUgLTE2Pik7CiBmdW5jICh2IDx0eXBlIDE+KSBTbGljZSAoYmVnIDx0eXBlIC0xMT4sIGVuZCA8dHlwZSAtMTE+KSA8dHlwZSAxPjsKIGZ1bmMgKHYgPHR5cGUgMT4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAodiA8dHlwZSAxPikgVHJ5UmVjdiAoKSAoeCA8dHlwZSAxPiwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jICh2IDx0eXBlIDE+KSBUcnlTZW5kICh4IDx0eXBlIDE+KSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSAxPikgVHlwZSAoKSA8dHlwZSAyNj47CiBmdW5jICh2IDx0eXBlIDE+KSBVaW50ICgpIDx0eXBlIC04PjsKIGZ1bmMgKHYgPHR5cGUgMT4pIFVuc2FmZUFkZHIgKCkgPHR5cGUgLTEzPjsKIGZ1bmMgKHYgPHR5cGUgMT4pIC5yZWZsZWN0LmFzc2lnblRvIChjb250ZXh0IDx0eXBlIC0xNj4sIGRzdCA8dHlwZSAzPiwgdGFyZ2V0IDx0eXBlIDU3ICo8dHlwZSA1OCBpbnRlcmZhY2UgeyB9Pj4pIDx0eXBlIDE+Owo+LCB4IC4uLjx0eXBlIDE+KSA8dHlwZSAxPjsKZnVuYyBBcHBlbmRTbGljZSAocyA8dHlwZSAxPiwgdCA8dHlwZSAxPikgPHR5cGUgMT47CmNvbnN0IEFycmF5IDx0eXBlIDI4PiA9IDE3IDsKY29uc3QgQm9vbCA8dHlwZSAyOD4gPSAxIDsKY29uc3QgQm90aERpciA8dHlwZSAyOT4gPSAzIDsKY29uc3QgQ2hhbiA8dHlwZSAyOD4gPSAxOCA7CnR5cGUgPHR5cGUgMjk+Owpjb25zdCBDb21wbGV4MTI4IDx0eXBlIDI4PiA9IDE2IDsKY29uc3QgQ29tcGxleDY0IDx0eXBlIDI4PiA9IDE1IDsKZnVuYyBDb3B5IChkc3QgPHR5cGUgMT4sIHNyYyA8dHlwZSAxPikgPHR5cGUgLTExPjsKZnVuYyBEZWVwRXF1YWwgKGExIDx0eXBlIDU5IGludGVyZmFjZSB7IH0+LCBhMiA8dHlwZSA1OT4pIDx0eXBlIC0xNT47CmNvbnN0IEZsb2F0MzIgPHR5cGUgMjg+ID0gMTMgOwpjb25zdCBGbG9hdDY0IDx0eXBlIDI4PiA9IDE0IDsKY29uc3QgRnVuYyA8dHlwZSAyOD4gPSAxOSA7CmZ1bmMgSW5kaXJlY3QgKHYgPHR5cGUgMT4pIDx0eXBlIDE+Owpjb25zdCBJbnQgPHR5cGUgMjg+ID0gMiA7CmNvbnN0IEludDE2IDx0eXBlIDI4PiA9IDQgOwpjb25zdCBJbnQzMiA8dHlwZSAyOD4gPSA1IDsKY29uc3QgSW50NjQgPHR5cGUgMjg+ID0gNiA7CmNvbnN0IEludDggPHR5cGUgMjg+ID0gMyA7CmNvbnN0IEludGVyZmFjZSA8dHlwZSAyOD4gPSAyMCA7CmNvbnN0IEludmFsaWQgPHR5cGUgMjg+ID0gMCA7CnR5cGUgPHR5cGUgMjg+OwpmdW5jIE1ha2VDaGFuICh0eXAgPHR5cGUgMjY+LCBidWZmZXIgPHR5cGUgLTExPikgPHR5cGUgMT47CmZ1bmMgTWFrZU1hcCAodHlwIDx0eXBlIDI2PikgPHR5cGUgMT47CmZ1bmMgTWFrZVNsaWNlICh0eXAgPHR5cGUgMjY+LCBsZW4gPHR5cGUgLTExPiwgY2FwIDx0eXBlIC0xMT4pIDx0eXBlIDE+Owpjb25zdCBNYXAgPHR5cGUgMjg+ID0gMjEgOwp0eXBlIDx0eXBlIDI0PjsKZnVuYyBNZXRob2QkZXF1YWwgKGtleTEgPHR5cGUgOD4sIGtleTIgPHR5cGUgOD4sIGtleV9zaXplIDx0eXBlIC0xMz4pIDx0eXBlIC0xNT47CmZ1bmMgTWV0aG9kJGhhc2ggKGtleSA8dHlwZSA4Piwga2V5X3NpemUgPHR5cGUgLTEzPikgPHR5cGUgLTEzPjsKZnVuYyBOZXcgKHR5cCA8dHlwZSAyNj4pIDx0eXBlIDE+OwpmdW5jIE5ld0F0ICh0eXAgPHR5cGUgMjY+LCBwIDx0eXBlIDc+KSA8dHlwZSAxPjsKY29uc3QgUHRyIDx0eXBlIDI4PiA9IDIyIDsKZnVuYyBQdHJUbyAodCA8dHlwZSAyNj4pIDx0eXBlIDI2PjsKY29uc3QgUmVjdkRpciA8dHlwZSAyOT4gPSAxIDsKY29uc3QgU2VuZERpciA8dHlwZSAyOT4gPSAyIDsKY29uc3QgU2xpY2UgPHR5cGUgMjg+ID0gMjMgOwp0eXBlIDx0eXBlIDYwICJTbGljZUhlYWRlciIgPHR5cGUgNjEgc3RydWN0IHsgRGF0YSA8dHlwZSAtMTM+OyBMZW4gPHR5cGUgLTExPjsgQ2FwIDx0eXBlIC0xMT47IH0+PjsKY29uc3QgU3RyaW5nIDx0eXBlIDI4PiA9IDI0IDsKdHlwZSA8dHlwZSA2MiAiU3RyaW5nSGVhZGVyIiA8dHlwZSA2MyBzdHJ1Y3QgeyBEYXRhIDx0eXBlIC0xMz47IExlbiA8dHlwZSAtMTE+OyB9Pj47CmNvbnN0IFN0cnVjdCA8dHlwZSAyOD4gPSAyNSA7CnR5cGUgPHR5cGUgMzA+Owp0eXBlIDx0eXBlIDMyPjsKdHlwZSA8dHlwZSAyNj47CmZ1bmMgVHlwZU9mIChpIDx0eXBlIDY0IGludGVyZmFjZSB7IH0+KSA8dHlwZSAyNj47CmNvbnN0IFVpbnQgPHR5cGUgMjg+ID0gNyA7CmNvbnN0IFVpbnQxNiA8dHlwZSAyOD4gPSA5IDsKY29uc3QgVWludDMyIDx0eXBlIDI4PiA9IDEwIDsKY29uc3QgVWludDY0IDx0eXBlIDI4PiA9IDExIDsKY29uc3QgVWludDggPHR5cGUgMjg+ID0gOCA7CmNvbnN0IFVpbnRwdHIgPHR5cGUgMjg+ID0gMTIgOwpjb25zdCBVbnNhZmVQb2ludGVyIDx0eXBlIDI4PiA9IDI2IDsKdHlwZSA8dHlwZSAxPjsKdHlwZSA8dHlwZSA2NSAiVmFsdWVFcnJvciIgPHR5cGUgNjYgc3RydWN0IHsgTWV0aG9kIDx0eXBlIC0xNj47IEtpbmQgPHR5cGUgMjg+OyB9PgogZnVuYyAoZSA8dHlwZSA2NyAqPHR5cGUgNjU+PikgRXJyb3IgKCkgPHR5cGUgLTE2PjsKPjsKZnVuYyBWYWx1ZUVycm9yJGVxdWFsIChrZXkxIDx0eXBlIDg+LCBrZXkyIDx0eXBlIDg+LCBrZXlfc2l6ZSA8dHlwZSAtMTM+KSA8dHlwZSAtMTU+OwpmdW5jIFZhbHVlRXJyb3IkaGFzaCAoa2V5IDx0eXBlIDg+LCBrZXlfc2l6ZSA8dHlwZSAtMTM+KSA8dHlwZSAtMTM+OwpmdW5jIFZhbHVlT2YgKGkgPHR5cGUgNjggaW50ZXJmYWNlIHsgfT4pIDx0eXBlIDE+OwpmdW5jIFplcm8gKHR5cCA8dHlwZSAyNj4pIDx0eXBlIDE+OwpjaGVja3N1bSBERDc3MjA3OTZFOTFEOUQyNEVEMTJCNzVCREVBMkE3MTRENDdCMDk1OwoALnN5bXRhYgAuc3RydGFiAC5zaHN0cnRhYgAuZ29fZXhwb3J0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAQAAAAAAAAAAAAAANAAAADIpAAAAAAAAAAAAAAEAAAAAAAAAEQAAAAMAAAAAAAAAAAAAAGYpAAAmAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAACMKQAAIAAAAAQAAAACAAAABAAAABAAAAAJAAAAAwAAAAAAAAAAAAAArCkAAAEAAAAAAAAAAAAAAAEAAAAAAAAA