f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAABQFAAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIHN5bnRheDsKcGtncGF0aCByZWdleHAvc3ludGF4Owpwcmlvcml0eSA1OwppbXBvcnQgYnl0ZXMgYnl0ZXMgImJ5dGVzIjsKaW1wb3J0IHNvcnQgc29ydCAic29ydCI7CmltcG9ydCBzdHJjb252IHN0cmNvbnYgInN0cmNvbnYiOwppbXBvcnQgc3RyaW5ncyBzdHJpbmdzICJzdHJpbmdzIjsKaW1wb3J0IHVuaWNvZGUgdW5pY29kZSAidW5pY29kZSI7CmltcG9ydCB1dGY4IHVuaWNvZGUvdXRmOCAidW5pY29kZS91dGY4IjsKaW5pdCBzeW50YXggcmVnZXhwX3N5bnRheC4uaW1wb3J0IDUgbWF0aCBtYXRoLi5pbXBvcnQgMSBydW50aW1lIHJ1bnRpbWUuLmltcG9ydCAxIHVuaWNvZGUgdW5pY29kZS4uaW1wb3J0IDEgc3RyY29udiBzdHJjb252Li5pbXBvcnQgMiBzeW5jIHN5bmMuLmltcG9ydCAyIGlvIGlvLi5pbXBvcnQgMyBieXRlcyBieXRlcy4uaW1wb3J0IDQ7CmNvbnN0IENsYXNzTkwgPHR5cGUgMSAiRmxhZ3MiIDx0eXBlIC02Pj4gPSA0IDsKZnVuYyBDb21waWxlIChyZSA8dHlwZSAyICo8dHlwZSAzICJSZWdleHAiIDx0eXBlIDQgc3RydWN0IHsgT3AgPHR5cGUgNSAiT3AiIDx0eXBlIC01Pj47IEZsYWdzIDx0eXBlIDE+OyBTdWIgPHR5cGUgNiBbXSA8dHlwZSA3ICo8dHlwZSAzPj4+OyBTdWIwIDx0eXBlIDggWzEgXSA8dHlwZSA5ICo8dHlwZSAzPj4+OyBSdW5lIDx0eXBlIDEwIFtdIDx0eXBlIC0yMT4+OyBSdW5lMCA8dHlwZSAxMSBbMiBdIDx0eXBlIC0yMT4+OyBNaW4gPHR5cGUgLTExPjsgTWF4IDx0eXBlIC0xMT47IENhcCA8dHlwZSAtMTE+OyBOYW1lIDx0eXBlIC0xNj47IH0+CiBmdW5jICh4IDx0eXBlIDEyICo8dHlwZSAzPj4pIEVxdWFsICh5IDx0eXBlIDEyPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHJlIDx0eXBlIDEyPikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChyZSA8dHlwZSAxMj4pIE1heENhcCAoKSA8dHlwZSAtMTE+OwogZnVuYyAocmUgPHR5cGUgMTI+KSBDYXBOYW1lcyAoKSA8dHlwZSAxMyBbXSA8dHlwZSAtMTY+PjsKIGZ1bmMgKHJlIDx0eXBlIDEyPikgLnJlZ2V4cC9zeW50YXguY2FwTmFtZXMgKG5hbWVzIDx0eXBlIDE0IFtdIDx0eXBlIC0xNj4+KTsKIGZ1bmMgKHJlIDx0eXBlIDEyPikgU2ltcGxpZnkgKCkgPHR5cGUgMTI+Owo+PikgKD8gPHR5cGUgMTUgKjx0eXBlIDE2ICJQcm9nIiA8dHlwZSAxNyBzdHJ1Y3QgeyBJbnN0IDx0eXBlIDE4IFtdIDx0eXBlIDE5ICJJbnN0IiA8dHlwZSAyMCBzdHJ1Y3QgeyBPcCA8dHlwZSAyMSAiSW5zdE9wIiA8dHlwZSAtNT4KIGZ1bmMgKGkgPHR5cGUgMjE+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsgT3V0IDx0eXBlIC03PjsgQXJnIDx0eXBlIC03PjsgUnVuZSA8dHlwZSAyMiBbXSA8dHlwZSAtMjE+PjsgfT4KIGZ1bmMgKGkgPHR5cGUgMjMgKjx0eXBlIDE5Pj4pIC5yZWdleHAvc3ludGF4Lm9wICgpIDx0eXBlIDIxPjsKIGZ1bmMgKGkgPHR5cGUgMjM+KSBNYXRjaFJ1bmUgKHIgPHR5cGUgLTIxPikgPHR5cGUgLTE1PjsKIGZ1bmMgKGkgPHR5cGUgMjM+KSBNYXRjaFJ1bmVQb3MgKHIgPHR5cGUgLTIxPikgPHR5cGUgLTExPjsKIGZ1bmMgKGkgPHR5cGUgMjM+KSBNYXRjaEVtcHR5V2lkdGggKGJlZm9yZSA8dHlwZSAtMjE+LCBhZnRlciA8dHlwZSAtMjE+KSA8dHlwZSAtMTU+OwogZnVuYyAoaSA8dHlwZSAyMz4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+PjsgU3RhcnQgPHR5cGUgLTExPjsgTnVtQ2FwIDx0eXBlIC0xMT47IH0+CiBmdW5jIChwIDx0eXBlIDI0ICo8dHlwZSAxNj4+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHAgPHR5cGUgMjQ+KSAucmVnZXhwL3N5bnRheC5za2lwTm9wIChwYyA8dHlwZSAtNz4pICg/IDx0eXBlIDIzPiwgPyA8dHlwZSAtNz4pOwogZnVuYyAocCA8dHlwZSAyND4pIFByZWZpeCAoKSAocHJlZml4IDx0eXBlIC0xNj4sIGNvbXBsZXRlIDx0eXBlIC0xNT4pOwogZnVuYyAocCA8dHlwZSAyND4pIFN0YXJ0Q29uZCAoKSA8dHlwZSAyNSAiRW1wdHlPcCIgPHR5cGUgLTU+PjsKPj4sID8gPHR5cGUgLTE5Pik7CmNvbnN0IERvdE5MIDx0eXBlIDE+ID0gOCA7CmNvbnN0IEVtcHR5QmVnaW5MaW5lIDx0eXBlIDI1PiA9IDEgOwpjb25zdCBFbXB0eUJlZ2luVGV4dCA8dHlwZSAyNT4gPSA0IDsKY29uc3QgRW1wdHlFbmRMaW5lIDx0eXBlIDI1PiA9IDIgOwpjb25zdCBFbXB0eUVuZFRleHQgPHR5cGUgMjU+ID0gOCA7CmNvbnN0IEVtcHR5Tm9Xb3JkQm91bmRhcnkgPHR5cGUgMjU+ID0gMzIgOwp0eXBlIDx0eXBlIDI1PjsKZnVuYyBFbXB0eU9wQ29udGV4dCAocjEgPHR5cGUgLTIxPiwgcjIgPHR5cGUgLTIxPikgPHR5cGUgMjU+Owpjb25zdCBFbXB0eVdvcmRCb3VuZGFyeSA8dHlwZSAyNT4gPSAxNiA7CmNvbnN0IEVyckludGVybmFsRXJyb3IgPHR5cGUgMjYgIkVycm9yQ29kZSIgPHR5cGUgLTE2PgogZnVuYyAoZSA8dHlwZSAyNj4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+ID0gInJlZ2V4cC9zeW50YXg6IGludGVybmFsIGVycm9yIjsKY29uc3QgRXJySW52YWxpZENoYXJDbGFzcyA8dHlwZSAyNj4gPSAiaW52YWxpZCBjaGFyYWN0ZXIgY2xhc3MiOwpjb25zdCBFcnJJbnZhbGlkQ2hhclJhbmdlIDx0eXBlIDI2PiA9ICJpbnZhbGlkIGNoYXJhY3RlciBjbGFzcyByYW5nZSI7CmNvbnN0IEVyckludmFsaWRFc2NhcGUgPHR5cGUgMjY+ID0gImludmFsaWQgZXNjYXBlIHNlcXVlbmNlIjsKY29uc3QgRXJySW52YWxpZE5hbWVkQ2FwdHVyZSA8dHlwZSAyNj4gPSAiaW52YWxpZCBuYW1lZCBjYXB0dXJlIjsKY29uc3QgRXJySW52YWxpZFBlcmxPcCA8dHlwZSAyNj4gPSAiaW52YWxpZCBvciB1bnN1cHBvcnRlZCBQZXJsIHN5bnRheCI7CmNvbnN0IEVyckludmFsaWRSZXBlYXRPcCA8dHlwZSAyNj4gPSAiaW52YWxpZCBuZXN0ZWQgcmVwZXRpdGlvbiBvcGVyYXRvciI7CmNvbnN0IEVyckludmFsaWRSZXBlYXRTaXplIDx0eXBlIDI2PiA9ICJpbnZhbGlkIHJlcGVhdCBjb3VudCI7CmNvbnN0IEVyckludmFsaWRVVEY4IDx0eXBlIDI2PiA9ICJpbnZhbGlkIFVURi04IjsKY29uc3QgRXJyTWlzc2luZ0JyYWNrZXQgPHR5cGUgMjY+ID0gIm1pc3NpbmcgY2xvc2luZyBdIjsKY29uc3QgRXJyTWlzc2luZ1BhcmVuIDx0eXBlIDI2PiA9ICJtaXNzaW5nIGNsb3NpbmcgKSI7CmNvbnN0IEVyck1pc3NpbmdSZXBlYXRBcmd1bWVudCA8dHlwZSAyNj4gPSAibWlzc2luZyBhcmd1bWVudCB0byByZXBldGl0aW9uIG9wZXJhdG9yIjsKY29uc3QgRXJyVHJhaWxpbmdCYWNrc2xhc2ggPHR5cGUgMjY+ID0gInRyYWlsaW5nIGJhY2tzbGFzaCBhdCBlbmQgb2YgZXhwcmVzc2lvbiI7CmNvbnN0IEVyclVuZXhwZWN0ZWRQYXJlbiA8dHlwZSAyNj4gPSAidW5leHBlY3RlZCApIjsKdHlwZSA8dHlwZSAyNyAiRXJyb3IiIDx0eXBlIDI4IHN0cnVjdCB7IENvZGUgPHR5cGUgMjY+OyBFeHByIDx0eXBlIC0xNj47IH0+CiBmdW5jIChlIDx0eXBlIDI5ICo8dHlwZSAyNz4+KSBFcnJvciAoKSA8dHlwZSAtMTY+Owo+Owp0eXBlIDx0eXBlIDI2PjsKdHlwZSA8dHlwZSAxPjsKY29uc3QgRm9sZENhc2UgPHR5cGUgMT4gPSAxIDsKdHlwZSA8dHlwZSAxOT47CmNvbnN0IEluc3RBbHQgPHR5cGUgMjE+ID0gMCA7CmNvbnN0IEluc3RBbHRNYXRjaCA8dHlwZSAyMT4gPSAxIDsKY29uc3QgSW5zdENhcHR1cmUgPHR5cGUgMjE+ID0gMiA7CmNvbnN0IEluc3RFbXB0eVdpZHRoIDx0eXBlIDIxPiA9IDMgOwpjb25zdCBJbnN0RmFpbCA8dHlwZSAyMT4gPSA1IDsKY29uc3QgSW5zdE1hdGNoIDx0eXBlIDIxPiA9IDQgOwpjb25zdCBJbnN0Tm9wIDx0eXBlIDIxPiA9IDYgOwp0eXBlIDx0eXBlIDIxPjsKY29uc3QgSW5zdFJ1bmUgPHR5cGUgMjE+ID0gNyA7CmNvbnN0IEluc3RSdW5lMSA8dHlwZSAyMT4gPSA4IDsKY29uc3QgSW5zdFJ1bmVBbnkgPHR5cGUgMjE+ID0gOSA7CmNvbnN0IEluc3RSdW5lQW55Tm90TkwgPHR5cGUgMjE+ID0gMTAgOwpmdW5jIElzV29yZENoYXIgKHIgPHR5cGUgLTIxPikgPHR5cGUgLTE1PjsKY29uc3QgTGl0ZXJhbCA8dHlwZSAxPiA9IDIgOwpjb25zdCBNYXRjaE5MIDx0eXBlIDE+ID0gMTIgOwpjb25zdCBOb25HcmVlZHkgPHR5cGUgMT4gPSAzMiA7CmNvbnN0IE9uZUxpbmUgPHR5cGUgMT4gPSAxNiA7CnR5cGUgPHR5cGUgNT47CmNvbnN0IE9wQWx0ZXJuYXRlIDx0eXBlIDU+ID0gMTkgOwpjb25zdCBPcEFueUNoYXIgPHR5cGUgNT4gPSA2IDsKY29uc3QgT3BBbnlDaGFyTm90TkwgPHR5cGUgNT4gPSA1IDsKY29uc3QgT3BCZWdpbkxpbmUgPHR5cGUgNT4gPSA3IDsKY29uc3QgT3BCZWdpblRleHQgPHR5cGUgNT4gPSA5IDsKY29uc3QgT3BDYXB0dXJlIDx0eXBlIDU+ID0gMTMgOwpjb25zdCBPcENoYXJDbGFzcyA8dHlwZSA1PiA9IDQgOwpjb25zdCBPcENvbmNhdCA8dHlwZSA1PiA9IDE4IDsKY29uc3QgT3BFbXB0eU1hdGNoIDx0eXBlIDU+ID0gMiA7CmNvbnN0IE9wRW5kTGluZSA8dHlwZSA1PiA9IDggOwpjb25zdCBPcEVuZFRleHQgPHR5cGUgNT4gPSAxMCA7CmNvbnN0IE9wTGl0ZXJhbCA8dHlwZSA1PiA9IDMgOwpjb25zdCBPcE5vTWF0Y2ggPHR5cGUgNT4gPSAxIDsKY29uc3QgT3BOb1dvcmRCb3VuZGFyeSA8dHlwZSA1PiA9IDEyIDsKY29uc3QgT3BQbHVzIDx0eXBlIDU+ID0gMTUgOwpjb25zdCBPcFF1ZXN0IDx0eXBlIDU+ID0gMTYgOwpjb25zdCBPcFJlcGVhdCA8dHlwZSA1PiA9IDE3IDsKY29uc3QgT3BTdGFyIDx0eXBlIDU+ID0gMTQgOwpjb25zdCBPcFdvcmRCb3VuZGFyeSA8dHlwZSA1PiA9IDExIDsKY29uc3QgUE9TSVggPHR5cGUgMT4gPSAwIDsKZnVuYyBQYXJzZSAocyA8dHlwZSAtMTY+LCBmbGFncyA8dHlwZSAxPikgKD8gPHR5cGUgMzAgKjx0eXBlIDM+PiwgPyA8dHlwZSAtMTk+KTsKY29uc3QgUGVybCA8dHlwZSAxPiA9IDIxMiA7CmNvbnN0IFBlcmxYIDx0eXBlIDE+ID0gNjQgOwp0eXBlIDx0eXBlIDE2PjsKdHlwZSA8dHlwZSAzPjsKY29uc3QgU2ltcGxlIDx0eXBlIDE+ID0gNTEyIDsKY29uc3QgVW5pY29kZUdyb3VwcyA8dHlwZSAxPiA9IDEyOCA7CmNvbnN0IFdhc0RvbGxhciA8dHlwZSAxPiA9IDI1NiA7CmNoZWNrc3VtIEI1OTIyNDIxNDczOTdBNkI4MTU5NTQ4NUVFMDE1QjkyQkVFOUFFQ0E7CgAuc3ltdGFiAC5zdHJ0YWIALnNoc3RydGFiAC5nb19leHBvcnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAQAAAAAAAAAAAAAANAAAANETAAAAAAAAAAAAAAEAAAAAAAAAEQAAAAMAAAAAAAAAAAAAAAUUAAAmAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAAAsFAAAIAAAAAQAAAACAAAABAAAABAAAAAJAAAAAwAAAAAAAAAAAAAATBQAAAEAAAAAAAAAAAAAAAEAAAAAAAAA