f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAABcKgAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIHF1aWNrOwpwa2dwYXRoIHRlc3RpbmcvcXVpY2s7CnByaW9yaXR5IDg7CmltcG9ydCBmbGFnIGZsYWcgImZsYWciOwppbXBvcnQgZm10IGZtdCAiZm10IjsKaW1wb3J0IG1hdGggbWF0aCAibWF0aCI7CmltcG9ydCByYW5kIG1hdGgvcmFuZCAibWF0aC9yYW5kIjsKaW1wb3J0IHJlZmxlY3QgcmVmbGVjdCAicmVmbGVjdCI7CmltcG9ydCBzdHJpbmdzIHN0cmluZ3MgInN0cmluZ3MiOwppbml0IHF1aWNrIHRlc3RpbmdfcXVpY2suLmltcG9ydCA4IG1hdGggbWF0aC4uaW1wb3J0IDEgcnVudGltZSBydW50aW1lLi5pbXBvcnQgMSB1bmljb2RlIHVuaWNvZGUuLmltcG9ydCAxIHN0cmNvbnYgc3RyY29udi4uaW1wb3J0IDIgc3luYyBzeW5jLi5pbXBvcnQgMiBpbyBpby4uaW1wb3J0IDMgcmFuZCBtYXRoX3JhbmQuLmltcG9ydCAzIHJlZmxlY3QgcmVmbGVjdC4uaW1wb3J0IDMgc3lzY2FsbCBzeXNjYWxsLi5pbXBvcnQgMyB0aW1lIHRpbWUuLmltcG9ydCA0IG9zIG9zLi5pbXBvcnQgNSBmbXQgZm10Li5pbXBvcnQgNiBmbGFnIGZsYWcuLmltcG9ydCA3OwpmdW5jIENoZWNrIChmIDx0eXBlIDEgaW50ZXJmYWNlIHsgfT4sIGNvbmZpZyA8dHlwZSAyICo8dHlwZSAzICJDb25maWciIDx0eXBlIDQgc3RydWN0IHsgTWF4Q291bnQgPHR5cGUgLTExPjsgTWF4Q291bnRTY2FsZSA8dHlwZSAtMTA+OyBSYW5kIDx0eXBlIDUgKjx0eXBlIDYgIm1hdGgvcmFuZC5SYW5kIiA8dHlwZSA3IHN0cnVjdCB7IC5tYXRoL3JhbmQuc3JjIDx0eXBlIDggIm1hdGgvcmFuZC5Tb3VyY2UiIDx0eXBlIDkgaW50ZXJmYWNlIHsgSW50NjMgKCkgPHR5cGUgLTQ+OyBTZWVkIChzZWVkIDx0eXBlIC00Pik7IH0+PjsgfT4KIGZ1bmMgKHIgPHR5cGUgMTAgKjx0eXBlIDY+PikgRXhwRmxvYXQ2NCAoKSA8dHlwZSAtMTA+OwogZnVuYyAociA8dHlwZSAxMD4pIEludDMxbiAobiA8dHlwZSAtMz4pIDx0eXBlIC0zPjsKIGZ1bmMgKHIgPHR5cGUgMTA+KSBVaW50MzIgKCkgPHR5cGUgLTc+OwogZnVuYyAociA8dHlwZSAxMD4pIFBlcm0gKG4gPHR5cGUgLTExPikgPHR5cGUgMTEgW10gPHR5cGUgLTExPj47CiBmdW5jIChyIDx0eXBlIDEwPikgSW50biAobiA8dHlwZSAtMTE+KSA8dHlwZSAtMTE+OwogZnVuYyAociA8dHlwZSAxMD4pIE5vcm1GbG9hdDY0ICgpIDx0eXBlIC0xMD47CiBmdW5jIChyIDx0eXBlIDEwPikgSW50MzEgKCkgPHR5cGUgLTM+OwogZnVuYyAociA8dHlwZSAxMD4pIEZsb2F0NjQgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKHIgPHR5cGUgMTA+KSBTZWVkIChzZWVkIDx0eXBlIC00Pik7CiBmdW5jIChyIDx0eXBlIDEwPikgSW50ICgpIDx0eXBlIC0xMT47CiBmdW5jIChyIDx0eXBlIDEwPikgSW50NjMgKCkgPHR5cGUgLTQ+OwogZnVuYyAociA8dHlwZSAxMD4pIEludDYzbiAobiA8dHlwZSAtND4pIDx0eXBlIC00PjsKIGZ1bmMgKHIgPHR5cGUgMTA+KSBGbG9hdDMyICgpIDx0eXBlIC05PjsKPj47IFZhbHVlcyA8dHlwZSAxMiAoPyA8dHlwZSAxMyBbXSA8dHlwZSAxNCAicmVmbGVjdC5WYWx1ZSIgPHR5cGUgMTUgc3RydWN0IHsgLnJlZmxlY3QudHlwIDx0eXBlIDE2ICo8dHlwZSAxNyAiLnJlZmxlY3QucnR5cGUiIDx0eXBlIDE4IHN0cnVjdCB7IC5yZWZsZWN0LmtpbmQgPHR5cGUgLTU+OyAucmVmbGVjdC5hbGlnbiA8dHlwZSAtMT47IC5yZWZsZWN0LmZpZWxkQWxpZ24gPHR5cGUgLTU+OyAucmVmbGVjdC5fIDx0eXBlIC01PjsgLnJlZmxlY3Quc2l6ZSA8dHlwZSAtMTM+OyAucmVmbGVjdC5oYXNoIDx0eXBlIC03PjsgLnJlZmxlY3QuaGFzaGZuIDx0eXBlIC0xMz47IC5yZWZsZWN0LmVxdWFsZm4gPHR5cGUgLTEzPjsgLnJlZmxlY3QuZ2MgPHR5cGUgMTkgInVuc2FmZS5Qb2ludGVyIiAidW5zYWZlIiA8dHlwZSAyMCAqYW55Pj47IC5yZWZsZWN0LnN0cmluZyA8dHlwZSAyMSAqPHR5cGUgLTE2Pj47ID8gPHR5cGUgMjIgKjx0eXBlIDIzICIucmVmbGVjdC51bmNvbW1vblR5cGUiIDx0eXBlIDI0IHN0cnVjdCB7IC5yZWZsZWN0Lm5hbWUgPHR5cGUgMjE+OyAucmVmbGVjdC5wa2dQYXRoIDx0eXBlIDIxPjsgLnJlZmxlY3QubWV0aG9kcyA8dHlwZSAyNSBbXSA8dHlwZSAyNiAiLnJlZmxlY3QubWV0aG9kIiA8dHlwZSAyNyBzdHJ1Y3QgeyAucmVmbGVjdC5uYW1lIDx0eXBlIDIxPjsgLnJlZmxlY3QucGtnUGF0aCA8dHlwZSAyMT47IC5yZWZsZWN0Lm10eXAgPHR5cGUgMjggKjx0eXBlIDE3Pj47IC5yZWZsZWN0LnR5cCA8dHlwZSAyOD47IC5yZWZsZWN0LnRmbiA8dHlwZSAxOT47IH0+Pj47IH0+CiBmdW5jICh0IDx0eXBlIDI5ICo8dHlwZSAyMz4+KSBQa2dQYXRoICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDI5PikgTWV0aG9kQnlOYW1lIChuYW1lIDx0eXBlIC0xNj4pIChtIDx0eXBlIDMwICJyZWZsZWN0Lk1ldGhvZCIgPHR5cGUgMzEgc3RydWN0IHsgTmFtZSA8dHlwZSAtMTY+OyBQa2dQYXRoIDx0eXBlIC0xNj47IFR5cGUgPHR5cGUgMzIgInJlZmxlY3QuVHlwZSIgPHR5cGUgMzMgaW50ZXJmYWNlIHsgQWxpZ24gKCkgPHR5cGUgLTExPjsgRmllbGRBbGlnbiAoKSA8dHlwZSAtMTE+OyBNZXRob2QgKD8gPHR5cGUgLTExPikgPHR5cGUgMzA+OyBNZXRob2RCeU5hbWUgKD8gPHR5cGUgLTE2PikgKD8gPHR5cGUgMzA+LCA/IDx0eXBlIC0xNT4pOyBOdW1NZXRob2QgKCkgPHR5cGUgLTExPjsgTmFtZSAoKSA8dHlwZSAtMTY+OyBQa2dQYXRoICgpIDx0eXBlIC0xNj47IFNpemUgKCkgPHR5cGUgLTEzPjsgU3RyaW5nICgpIDx0eXBlIC0xNj47IC5yZWZsZWN0LnJhd1N0cmluZyAoKSA8dHlwZSAtMTY+OyBLaW5kICgpIDx0eXBlIDM0ICJyZWZsZWN0LktpbmQiIDx0eXBlIC0xMj4KIGZ1bmMgKGsgPHR5cGUgMzQ+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsgSW1wbGVtZW50cyAodSA8dHlwZSAzMj4pIDx0eXBlIC0xNT47IEFzc2lnbmFibGVUbyAodSA8dHlwZSAzMj4pIDx0eXBlIC0xNT47IENvbnZlcnRpYmxlVG8gKHUgPHR5cGUgMzI+KSA8dHlwZSAtMTU+OyBDb21wYXJhYmxlICgpIDx0eXBlIC0xNT47IEJpdHMgKCkgPHR5cGUgLTExPjsgQ2hhbkRpciAoKSA8dHlwZSAzNSAicmVmbGVjdC5DaGFuRGlyIiA8dHlwZSAtMTE+CiBmdW5jIChkIDx0eXBlIDM1PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj47IElzVmFyaWFkaWMgKCkgPHR5cGUgLTE1PjsgRWxlbSAoKSA8dHlwZSAzMj47IEZpZWxkIChpIDx0eXBlIC0xMT4pIDx0eXBlIDM2ICJyZWZsZWN0LlN0cnVjdEZpZWxkIiA8dHlwZSAzNyBzdHJ1Y3QgeyBOYW1lIDx0eXBlIC0xNj47IFBrZ1BhdGggPHR5cGUgLTE2PjsgVHlwZSA8dHlwZSAzMj47IFRhZyA8dHlwZSAzOCAicmVmbGVjdC5TdHJ1Y3RUYWciIDx0eXBlIC0xNj4KIGZ1bmMgKHRhZyA8dHlwZSAzOD4pIEdldCAoa2V5IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47Cj47IE9mZnNldCA8dHlwZSAtMTM+OyBJbmRleCA8dHlwZSAzOSBbXSA8dHlwZSAtMTE+PjsgQW5vbnltb3VzIDx0eXBlIC0xNT47IH0+PjsgRmllbGRCeUluZGV4IChpbmRleCA8dHlwZSA0MCBbXSA8dHlwZSAtMTE+PikgPHR5cGUgMzY+OyBGaWVsZEJ5TmFtZSAobmFtZSA8dHlwZSAtMTY+KSAoPyA8dHlwZSAzNj4sID8gPHR5cGUgLTE1Pik7IEZpZWxkQnlOYW1lRnVuYyAobWF0Y2ggPHR5cGUgNDEgKD8gPHR5cGUgLTE2PikgPHR5cGUgLTE1Pj4pICg/IDx0eXBlIDM2PiwgPyA8dHlwZSAtMTU+KTsgSW4gKGkgPHR5cGUgLTExPikgPHR5cGUgMzI+OyBLZXkgKCkgPHR5cGUgMzI+OyBMZW4gKCkgPHR5cGUgLTExPjsgTnVtRmllbGQgKCkgPHR5cGUgLTExPjsgTnVtSW4gKCkgPHR5cGUgLTExPjsgTnVtT3V0ICgpIDx0eXBlIC0xMT47IE91dCAoaSA8dHlwZSAtMTE+KSA8dHlwZSAzMj47IC5yZWZsZWN0LmNvbW1vbiAoKSA8dHlwZSAyOD47IC5yZWZsZWN0LnVuY29tbW9uICgpIDx0eXBlIDI5PjsgfT4+OyBGdW5jIDx0eXBlIDE0PjsgSW5kZXggPHR5cGUgLTExPjsgfT4+LCBvayA8dHlwZSAtMTU+KTsKIGZ1bmMgKHQgPHR5cGUgMjk+KSBOdW1NZXRob2QgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMjk+KSBOYW1lICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDI5PikgTWV0aG9kIChpIDx0eXBlIC0xMT4pIChtIDx0eXBlIDMwPik7CiBmdW5jICh0IDx0eXBlIDI5PikgLnJlZmxlY3QudW5jb21tb24gKCkgPHR5cGUgMjk+Owo+PjsgLnJlZmxlY3QucHRyVG9UaGlzIDx0eXBlIDI4PjsgLnJlZmxlY3QuemVybyA8dHlwZSAxOT47IH0+CiBmdW5jICh0IDx0eXBlIDI4PikgRmllbGRBbGlnbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAyOD4pIC5yZWZsZWN0LmNvbW1vbiAoKSA8dHlwZSAyOD47CiBmdW5jICh0IDx0eXBlIDI4PikgTWV0aG9kIChpIDx0eXBlIC0xMT4pIChtIDx0eXBlIDMwPik7CiBmdW5jICh0IDx0eXBlIDI4PikgLnJlZmxlY3QucHRyVG8gKCkgPHR5cGUgMjg+OwogZnVuYyAodCA8dHlwZSAyOD4pIE1ldGhvZEJ5TmFtZSAobmFtZSA8dHlwZSAtMTY+KSAobSA8dHlwZSAzMD4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAodCA8dHlwZSAyOD4pIC5yZWZsZWN0LnJhd1N0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSAyOD4pIEtleSAoKSA8dHlwZSAzMj47CiBmdW5jICh0IDx0eXBlIDI4PikgSW4gKGkgPHR5cGUgLTExPikgPHR5cGUgMzI+OwogZnVuYyAodCA8dHlwZSAyOD4pIElzVmFyaWFkaWMgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMjg+KSBOYW1lICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDI4PikgQ2hhbkRpciAoKSA8dHlwZSAzNT47CiBmdW5jICh0IDx0eXBlIDI4PikgRmllbGRCeUluZGV4IChpbmRleCA8dHlwZSA0MiBbXSA8dHlwZSAtMTE+PikgPHR5cGUgMzY+OwogZnVuYyAodCA8dHlwZSAyOD4pIEtpbmQgKCkgPHR5cGUgMzQ+OwogZnVuYyAodCA8dHlwZSAyOD4pIE51bU1ldGhvZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAyOD4pIE91dCAoaSA8dHlwZSAtMTE+KSA8dHlwZSAzMj47CiBmdW5jICh0IDx0eXBlIDI4PikgSW1wbGVtZW50cyAodSA8dHlwZSAzMj4pIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDI4PikgUGtnUGF0aCAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSAyOD4pIENvbnZlcnRpYmxlVG8gKHUgPHR5cGUgMzI+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSAyOD4pIEZpZWxkIChpIDx0eXBlIC0xMT4pIDx0eXBlIDM2PjsKIGZ1bmMgKHQgPHR5cGUgMjg+KSBBbGlnbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAyOD4pIEVsZW0gKCkgPHR5cGUgMzI+OwogZnVuYyAodCA8dHlwZSAyOD4pIEZpZWxkQnlOYW1lIChuYW1lIDx0eXBlIC0xNj4pICg/IDx0eXBlIDM2PiwgPyA8dHlwZSAtMTU+KTsKIGZ1bmMgKHQgPHR5cGUgMjg+KSAucmVmbGVjdC5wb2ludGVycyAoKSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSAyOD4pIEZpZWxkQnlOYW1lRnVuYyAobWF0Y2ggPHR5cGUgNDMgKD8gPHR5cGUgLTE2PikgPHR5cGUgLTE1Pj4pICg/IDx0eXBlIDM2PiwgPyA8dHlwZSAtMTU+KTsKIGZ1bmMgKHQgPHR5cGUgMjg+KSBCaXRzICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDI4PikgTnVtSW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMjg+KSBOdW1PdXQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMjg+KSBTaXplICgpIDx0eXBlIC0xMz47CiBmdW5jICh0IDx0eXBlIDI4PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDI4PikgTnVtRmllbGQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMjg+KSBDb21wYXJhYmxlICgpIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDI4PikgQXNzaWduYWJsZVRvICh1IDx0eXBlIDMyPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMjg+KSBMZW4gKCkgPHR5cGUgLTExPjsKPj47IC5yZWZsZWN0LnB0ciA8dHlwZSAxOT47ID8gPHR5cGUgNDQgIi5yZWZsZWN0LmZsYWciIDx0eXBlIC0xMz4KIGZ1bmMgKGYgPHR5cGUgNDQ+KSAucmVmbGVjdC5tdXN0QmUgKGV4cGVjdGVkIDx0eXBlIDM0Pik7CiBmdW5jIChmIDx0eXBlIDQ0PikgLnJlZmxlY3QubXVzdEJlRXhwb3J0ZWQgKCk7CiBmdW5jIChmIDx0eXBlIDQ0PikgLnJlZmxlY3QubXVzdEJlQXNzaWduYWJsZSAoKTsKIGZ1bmMgKGYgPHR5cGUgNDQ+KSAucmVmbGVjdC5raW5kICgpIDx0eXBlIDM0PjsKPjsgfT4KIGZ1bmMgKHYgPHR5cGUgMTQ+KSBUeXBlICgpIDx0eXBlIDMyPjsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBPdmVyZmxvd0NvbXBsZXggKHggPHR5cGUgLTE4PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBNZXRob2RCeU5hbWUgKG5hbWUgPHR5cGUgLTE2PikgPHR5cGUgMTQ+OwogZnVuYyAodiA8dHlwZSAxND4pIEJ5dGVzICgpIDx0eXBlIDQ1IFtdIDx0eXBlIC0yMD4+OwogZnVuYyAodiA8dHlwZSAxND4pIEludGVyZmFjZSAoKSAoaSA8dHlwZSA0NiBpbnRlcmZhY2UgeyB9Pik7CiBmdW5jICh2IDx0eXBlIDE0PikgRmllbGRCeU5hbWUgKG5hbWUgPHR5cGUgLTE2PikgPHR5cGUgMTQ+OwogZnVuYyAodiA8dHlwZSAxND4pIFNlbmQgKHggPHR5cGUgMTQ+KTsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSAucmVmbGVjdC5yZWN2IChuYiA8dHlwZSAtMTU+KSAodmFsIDx0eXBlIDE0Piwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jICh2IDx0eXBlIDE0PikgVWludCAoKSA8dHlwZSAtOD47CiBmdW5jICh2IDx0eXBlIDE0PikgSXNWYWxpZCAoKSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSAxND4pIE51bU1ldGhvZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodiA8dHlwZSAxND4pIE92ZXJmbG93RmxvYXQgKHggPHR5cGUgLTEwPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBNYXBLZXlzICgpIDx0eXBlIDQ3IFtdIDx0eXBlIDE0Pj47CiBmdW5jICh2IDx0eXBlIDE0PikgTWV0aG9kIChpIDx0eXBlIC0xMT4pIDx0eXBlIDE0PjsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBTZXRJbnQgKHggPHR5cGUgLTQ+KTsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBGaWVsZCAoaSA8dHlwZSAtMTE+KSA8dHlwZSAxND47CiBmdW5jICh2IDx0eXBlIDE0PikgU2V0TGVuIChuIDx0eXBlIC0xMT4pOwogZnVuYyAodiA8dHlwZSAxND4pIFVuc2FmZUFkZHIgKCkgPHR5cGUgLTEzPjsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBTbGljZTMgKGkgPHR5cGUgLTExPiwgaiA8dHlwZSAtMTE+LCBrIDx0eXBlIC0xMT4pIDx0eXBlIDE0PjsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBDb21wbGV4ICgpIDx0eXBlIC0xOD47CiBmdW5jICh2IDx0eXBlIDE0PikgU2V0Q2FwIChuIDx0eXBlIC0xMT4pOwogZnVuYyAodiA8dHlwZSAxND4pIENhbGxTbGljZSAoaW4gPHR5cGUgNDggW10gPHR5cGUgMTQ+PikgPHR5cGUgNDkgW10gPHR5cGUgMTQ+PjsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBGbG9hdCAoKSA8dHlwZSAtMTA+OwogZnVuYyAodiA8dHlwZSAxND4pIC5yZWZsZWN0LmFzc2lnblRvIChjb250ZXh0IDx0eXBlIC0xNj4sIGRzdCA8dHlwZSAxNj4sIHRhcmdldCA8dHlwZSAxOT4pIDx0eXBlIDE0PjsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSAucmVmbGVjdC5ydW5lcyAoKSA8dHlwZSA1MCBbXSA8dHlwZSAtMjE+PjsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBFbGVtICgpIDx0eXBlIDE0PjsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBJbmRleCAoaSA8dHlwZSAtMTE+KSA8dHlwZSAxND47CiBmdW5jICh2IDx0eXBlIDE0PikgVHJ5U2VuZCAoeCA8dHlwZSAxND4pIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDE0PikgU2V0Qm9vbCAoeCA8dHlwZSAtMTU+KTsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBTZXRCeXRlcyAoeCA8dHlwZSA1MSBbXSA8dHlwZSAtMjA+Pik7CiBmdW5jICh2IDx0eXBlIDE0PikgLnJlZmxlY3Quc2V0UnVuZXMgKHggPHR5cGUgNTIgW10gPHR5cGUgLTIxPj4pOwogZnVuYyAodiA8dHlwZSAxND4pIEZpZWxkQnlOYW1lRnVuYyAobWF0Y2ggPHR5cGUgNTMgKD8gPHR5cGUgLTE2PikgPHR5cGUgLTE1Pj4pIDx0eXBlIDE0PjsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBPdmVyZmxvd1VpbnQgKHggPHR5cGUgLTg+KSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSAxND4pIE1hcEluZGV4IChrZXkgPHR5cGUgMTQ+KSA8dHlwZSAxND47CiBmdW5jICh2IDx0eXBlIDE0PikgSXNOaWwgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBTZXRQb2ludGVyICh4IDx0eXBlIDE5Pik7CiBmdW5jICh2IDx0eXBlIDE0PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh2IDx0eXBlIDE0PikgLnJlZmxlY3QuY2FsbCAob3AgPHR5cGUgLTE2PiwgaW4gPHR5cGUgNTQgW10gPHR5cGUgMTQ+PikgPHR5cGUgNTUgW10gPHR5cGUgMTQ+PjsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBJbnQgKCkgPHR5cGUgLTQ+OwogZnVuYyAodiA8dHlwZSAxND4pIFJlY3YgKCkgKHggPHR5cGUgMTQ+LCBvayA8dHlwZSAtMTU+KTsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBDb252ZXJ0ICh0IDx0eXBlIDMyPikgPHR5cGUgMTQ+OwogZnVuYyAodiA8dHlwZSAxND4pIEtpbmQgKCkgPHR5cGUgMzQ+OwogZnVuYyAodiA8dHlwZSAxND4pIEludGVyZmFjZURhdGEgKCkgPHR5cGUgNTYgWzIgXSA8dHlwZSAtMTM+PjsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBTZXRNYXBJbmRleCAoa2V5IDx0eXBlIDE0PiwgdmFsIDx0eXBlIDE0Pik7CiBmdW5jICh2IDx0eXBlIDE0PikgQ2FsbCAoaW4gPHR5cGUgNTcgW10gPHR5cGUgMTQ+PikgPHR5cGUgNTggW10gPHR5cGUgMTQ+PjsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBTZXQgKHggPHR5cGUgMTQ+KTsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBTZXRVaW50ICh4IDx0eXBlIC04Pik7CiBmdW5jICh2IDx0eXBlIDE0PikgQm9vbCAoKSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSAxND4pIFNsaWNlIChpIDx0eXBlIC0xMT4sIGogPHR5cGUgLTExPikgPHR5cGUgMTQ+OwogZnVuYyAodiA8dHlwZSAxND4pIC5yZWZsZWN0LnBvaW50ZXIgKCkgPHR5cGUgMTk+OwogZnVuYyAodiA8dHlwZSAxND4pIFBvaW50ZXIgKCkgPHR5cGUgLTEzPjsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBDYXAgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBTZXRTdHJpbmcgKHggPHR5cGUgLTE2Pik7CiBmdW5jICh2IDx0eXBlIDE0PikgTGVuICgpIDx0eXBlIC0xMT47CiBmdW5jICh2IDx0eXBlIDE0PikgVHJ5UmVjdiAoKSAoeCA8dHlwZSAxND4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAodiA8dHlwZSAxND4pIENsb3NlICgpOwogZnVuYyAodiA8dHlwZSAxND4pIENhbkFkZHIgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBDYW5TZXQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSAucmVmbGVjdC5zZW5kICh4IDx0eXBlIDE0PiwgbmIgPHR5cGUgLTE1PikgKHNlbGVjdGVkIDx0eXBlIC0xNT4pOwogZnVuYyAodiA8dHlwZSAxND4pIEZpZWxkQnlJbmRleCAoaW5kZXggPHR5cGUgNTkgW10gPHR5cGUgLTExPj4pIDx0eXBlIDE0PjsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBPdmVyZmxvd0ludCAoeCA8dHlwZSAtND4pIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDE0PikgTnVtRmllbGQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBTZXRGbG9hdCAoeCA8dHlwZSAtMTA+KTsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBDYW5JbnRlcmZhY2UgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgMTQ+KSBTZXRDb21wbGV4ICh4IDx0eXBlIC0xOD4pOwogZnVuYyAodiA8dHlwZSAxND4pIEFkZHIgKCkgPHR5cGUgMTQ+Owo+PiwgPyA8dHlwZSA1Pik+OyB9PgogZnVuYyAoYyA8dHlwZSA2MCAqPHR5cGUgMz4+KSAudGVzdGluZy9xdWljay5nZXRSYW5kICgpIDx0eXBlIDU+OwogZnVuYyAoYyA8dHlwZSA2MD4pIC50ZXN0aW5nL3F1aWNrLmdldE1heENvdW50ICgpIChtYXhDb3VudCA8dHlwZSAtMTE+KTsKPj4pIChlcnIgPHR5cGUgLTE5Pik7CmZ1bmMgQ2hlY2tFcXVhbCAoZiA8dHlwZSA2MSBpbnRlcmZhY2UgeyB9PiwgZyA8dHlwZSA2MT4sIGNvbmZpZyA8dHlwZSAyPikgKGVyciA8dHlwZSAtMTk+KTsKdHlwZSA8dHlwZSA2MiAiQ2hlY2tFcXVhbEVycm9yIiA8dHlwZSA2MyBzdHJ1Y3QgeyA/IDx0eXBlIDY0ICJDaGVja0Vycm9yIiA8dHlwZSA2NSBzdHJ1Y3QgeyBDb3VudCA8dHlwZSAtMTE+OyBJbiA8dHlwZSA2NiBbXSA8dHlwZSA2NyBpbnRlcmZhY2UgeyB9Pj47IH0+CiBmdW5jIChzIDx0eXBlIDY4ICo8dHlwZSA2ND4+KSBFcnJvciAoKSA8dHlwZSAtMTY+Owo+OyBPdXQxIDx0eXBlIDY5IFtdIDx0eXBlIDcwIGludGVyZmFjZSB7IH0+PjsgT3V0MiA8dHlwZSA3MSBbXSA8dHlwZSA3MiBpbnRlcmZhY2UgeyB9Pj47IH0+CiBmdW5jIChzIDx0eXBlIDczICo8dHlwZSA2Mj4+KSBFcnJvciAoKSA8dHlwZSAtMTY+Owo+Owp0eXBlIDx0eXBlIDY0PjsKdHlwZSA8dHlwZSAzPjsKdHlwZSA8dHlwZSA3NCAiR2VuZXJhdG9yIiA8dHlwZSA3NSBpbnRlcmZhY2UgeyBHZW5lcmF0ZSAocmFuZCA8dHlwZSA1Piwgc2l6ZSA8dHlwZSAtMTE+KSA8dHlwZSAxND47IH0+PjsKdHlwZSA8dHlwZSA3NiAiU2V0dXBFcnJvciIgPHR5cGUgLTE2PgogZnVuYyAocyA8dHlwZSA3Nj4pIEVycm9yICgpIDx0eXBlIC0xNj47Cj47CmZ1bmMgVmFsdWUgKHQgPHR5cGUgMzI+LCByYW5kIDx0eXBlIDU+KSAodmFsdWUgPHR5cGUgMTQ+LCBvayA8dHlwZSAtMTU+KTsKY2hlY2tzdW0gQjU3Q0Y4QjJCQjc1Q0YzRDU4OThCNDJEQkU4RjczODNFRUYzRTRBRjsKAC5zeW10YWIALnN0cnRhYgAuc2hzdHJ0YWIALmdvX2V4cG9ydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAAAAAAAAAAAADQAAADeKQAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAAAAAAAAAAAAASKgAAJgAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAOCoAACAAAAAEAAAAAgAAAAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAAFgqAAABAAAAAAAAAAAAAAABAAAAAAAAAA==