f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAABALgAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIHBhcnNlcjsKcGtncGF0aCBnby9wYXJzZXI7CnByaW9yaXR5IDEwOwppbXBvcnQgYnl0ZXMgYnl0ZXMgImJ5dGVzIjsKaW1wb3J0IGVycm9ycyBlcnJvcnMgImVycm9ycyI7CmltcG9ydCBmbXQgZm10ICJmbXQiOwppbXBvcnQgYXN0IGdvL2FzdCAiZ28vYXN0IjsKaW1wb3J0IHNjYW5uZXIgZ28vc2Nhbm5lciAiZ28vc2Nhbm5lciI7CmltcG9ydCB0b2tlbiBnby90b2tlbiAiZ28vdG9rZW4iOwppbXBvcnQgaW8gaW8gImlvIjsKaW1wb3J0IGlvdXRpbCBpby9pb3V0aWwgImlvL2lvdXRpbCI7CmltcG9ydCBvcyBvcyAib3MiOwppbXBvcnQgZmlsZXBhdGggcGF0aC9maWxlcGF0aCAicGF0aC9maWxlcGF0aCI7CmltcG9ydCBzdHJjb252IHN0cmNvbnYgInN0cmNvbnYiOwppbXBvcnQgc3RyaW5ncyBzdHJpbmdzICJzdHJpbmdzIjsKaW1wb3J0IHVuaWNvZGUgdW5pY29kZSAidW5pY29kZSI7CmluaXQgcGFyc2VyIGdvX3BhcnNlci4uaW1wb3J0IDEwIG1hdGggbWF0aC4uaW1wb3J0IDEgcnVudGltZSBydW50aW1lLi5pbXBvcnQgMSB1bmljb2RlIHVuaWNvZGUuLmltcG9ydCAxIHN0cmNvbnYgc3RyY29udi4uaW1wb3J0IDIgc3luYyBzeW5jLi5pbXBvcnQgMiBpbyBpby4uaW1wb3J0IDMgcmVmbGVjdCByZWZsZWN0Li5pbXBvcnQgMyBzeXNjYWxsIHN5c2NhbGwuLmltcG9ydCAzIGJ5dGVzIGJ5dGVzLi5pbXBvcnQgNCB0aW1lIHRpbWUuLmltcG9ydCA0IG9zIG9zLi5pbXBvcnQgNSBmaWxlcGF0aCBwYXRoX2ZpbGVwYXRoLi5pbXBvcnQgNiBmbXQgZm10Li5pbXBvcnQgNiBpb3V0aWwgaW9faW91dGlsLi5pbXBvcnQgNyB0b2tlbiBnb190b2tlbi4uaW1wb3J0IDcgc2Nhbm5lciBnb19zY2FubmVyLi5pbXBvcnQgOCBhc3QgZ29fYXN0Li5pbXBvcnQgOTsKY29uc3QgQWxsRXJyb3JzIDx0eXBlIDEgIk1vZGUiIDx0eXBlIC0xMj4+ID0gMzIgOwpjb25zdCBEZWNsYXJhdGlvbkVycm9ycyA8dHlwZSAxPiA9IDE2IDsKY29uc3QgSW1wb3J0c09ubHkgPHR5cGUgMT4gPSAyIDsKdHlwZSA8dHlwZSAxPjsKY29uc3QgUGFja2FnZUNsYXVzZU9ubHkgPHR5cGUgMT4gPSAxIDsKY29uc3QgUGFyc2VDb21tZW50cyA8dHlwZSAxPiA9IDQgOwpmdW5jIFBhcnNlRGlyIChmc2V0IDx0eXBlIDIgKjx0eXBlIDMgImdvL3Rva2VuLkZpbGVTZXQiIDx0eXBlIDQgc3RydWN0IHsgLmdvL3Rva2VuLm11dGV4IDx0eXBlIDUgInN5bmMuUldNdXRleCIgInN5bmMiIDx0eXBlIDYgc3RydWN0IHsgLnN5bmMudyA8dHlwZSA3ICJzeW5jLk11dGV4IiA8dHlwZSA4IHN0cnVjdCB7IC5zeW5jLnN0YXRlIDx0eXBlIC0zPjsgLnN5bmMuc2VtYSA8dHlwZSAtNz47IH0+CiBmdW5jIChtIDx0eXBlIDkgKjx0eXBlIDc+PikgVW5sb2NrICgpOwogZnVuYyAobSA8dHlwZSA5PikgTG9jayAoKTsKPjsgLnN5bmMud3JpdGVyU2VtIDx0eXBlIC03PjsgLnN5bmMucmVhZGVyU2VtIDx0eXBlIC03PjsgLnN5bmMucmVhZGVyQ291bnQgPHR5cGUgLTM+OyAuc3luYy5yZWFkZXJXYWl0IDx0eXBlIC0zPjsgfT4KIGZ1bmMgKHJ3IDx0eXBlIDEwICo8dHlwZSA1Pj4pIFJVbmxvY2sgKCk7CiBmdW5jIChydyA8dHlwZSAxMD4pIFVubG9jayAoKTsKIGZ1bmMgKHJ3IDx0eXBlIDEwPikgUkxvY2tlciAoKSA8dHlwZSAxMSAic3luYy5Mb2NrZXIiIDx0eXBlIDEyIGludGVyZmFjZSB7IExvY2sgKCk7IFVubG9jayAoKTsgfT4+OwogZnVuYyAocncgPHR5cGUgMTA+KSBSTG9jayAoKTsKIGZ1bmMgKHJ3IDx0eXBlIDEwPikgTG9jayAoKTsKPjsgLmdvL3Rva2VuLmJhc2UgPHR5cGUgLTExPjsgLmdvL3Rva2VuLmZpbGVzIDx0eXBlIDEzIFtdIDx0eXBlIDE0ICo8dHlwZSAxNSAiZ28vdG9rZW4uRmlsZSIgPHR5cGUgMTYgc3RydWN0IHsgLmdvL3Rva2VuLnNldCA8dHlwZSAxNyAqPHR5cGUgMz4+OyAuZ28vdG9rZW4ubmFtZSA8dHlwZSAtMTY+OyAuZ28vdG9rZW4uYmFzZSA8dHlwZSAtMTE+OyAuZ28vdG9rZW4uc2l6ZSA8dHlwZSAtMTE+OyAuZ28vdG9rZW4ubGluZXMgPHR5cGUgMTggW10gPHR5cGUgLTExPj47IC5nby90b2tlbi5pbmZvcyA8dHlwZSAxOSBbXSA8dHlwZSAyMCAiLmdvL3Rva2VuLmxpbmVJbmZvIiA8dHlwZSAyMSBzdHJ1Y3QgeyBPZmZzZXQgPHR5cGUgLTExPjsgRmlsZW5hbWUgPHR5cGUgLTE2PjsgTGluZSA8dHlwZSAtMTE+OyB9Pj4+OyB9PgogZnVuYyAoZiA8dHlwZSAyMiAqPHR5cGUgMTU+PikgTmFtZSAoKSA8dHlwZSAtMTY+OwogZnVuYyAoZiA8dHlwZSAyMj4pIFBvc2l0aW9uRm9yIChwIDx0eXBlIDIzICJnby90b2tlbi5Qb3MiIDx0eXBlIC0xMT4KIGZ1bmMgKHAgPHR5cGUgMjM+KSBJc1ZhbGlkICgpIDx0eXBlIC0xNT47Cj4sIGFkanVzdGVkIDx0eXBlIC0xNT4pIChwb3MgPHR5cGUgMjQgImdvL3Rva2VuLlBvc2l0aW9uIiA8dHlwZSAyNSBzdHJ1Y3QgeyBGaWxlbmFtZSA8dHlwZSAtMTY+OyBPZmZzZXQgPHR5cGUgLTExPjsgTGluZSA8dHlwZSAtMTE+OyBDb2x1bW4gPHR5cGUgLTExPjsgfT4KIGZ1bmMgKHBvcyA8dHlwZSAyNiAqPHR5cGUgMjQ+PikgSXNWYWxpZCAoKSA8dHlwZSAtMTU+OwogZnVuYyAocG9zIDx0eXBlIDI0PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj4pOwogZnVuYyAoZiA8dHlwZSAyMj4pIFBvcyAob2Zmc2V0IDx0eXBlIC0xMT4pIDx0eXBlIDIzPjsKIGZ1bmMgKGYgPHR5cGUgMjI+KSAuZ28vdG9rZW4ucG9zaXRpb24gKHAgPHR5cGUgMjM+LCBhZGp1c3RlZCA8dHlwZSAtMTU+KSAocG9zIDx0eXBlIDI0Pik7CiBmdW5jIChmIDx0eXBlIDIyPikgTWVyZ2VMaW5lIChsaW5lIDx0eXBlIC0xMT4pOwogZnVuYyAoZiA8dHlwZSAyMj4pIFNldExpbmVzRm9yQ29udGVudCAoY29udGVudCA8dHlwZSAyNyBbXSA8dHlwZSAtMjA+Pik7CiBmdW5jIChmIDx0eXBlIDIyPikgU2V0TGluZXMgKGxpbmVzIDx0eXBlIDI4IFtdIDx0eXBlIC0xMT4+KSA8dHlwZSAtMTU+OwogZnVuYyAoZiA8dHlwZSAyMj4pIEFkZExpbmUgKG9mZnNldCA8dHlwZSAtMTE+KTsKIGZ1bmMgKGYgPHR5cGUgMjI+KSBQb3NpdGlvbiAocCA8dHlwZSAyMz4pIChwb3MgPHR5cGUgMjQ+KTsKIGZ1bmMgKGYgPHR5cGUgMjI+KSBMaW5lIChwIDx0eXBlIDIzPikgPHR5cGUgLTExPjsKIGZ1bmMgKGYgPHR5cGUgMjI+KSBTaXplICgpIDx0eXBlIC0xMT47CiBmdW5jIChmIDx0eXBlIDIyPikgT2Zmc2V0IChwIDx0eXBlIDIzPikgPHR5cGUgLTExPjsKIGZ1bmMgKGYgPHR5cGUgMjI+KSAuZ28vdG9rZW4udW5wYWNrIChvZmZzZXQgPHR5cGUgLTExPiwgYWRqdXN0ZWQgPHR5cGUgLTE1PikgKGZpbGVuYW1lIDx0eXBlIC0xNj4sIGxpbmUgPHR5cGUgLTExPiwgY29sdW1uIDx0eXBlIC0xMT4pOwogZnVuYyAoZiA8dHlwZSAyMj4pIExpbmVDb3VudCAoKSA8dHlwZSAtMTE+OwogZnVuYyAoZiA8dHlwZSAyMj4pIEFkZExpbmVJbmZvIChvZmZzZXQgPHR5cGUgLTExPiwgZmlsZW5hbWUgPHR5cGUgLTE2PiwgbGluZSA8dHlwZSAtMTE+KTsKIGZ1bmMgKGYgPHR5cGUgMjI+KSBCYXNlICgpIDx0eXBlIC0xMT47Cj4+PjsgLmdvL3Rva2VuLmxhc3QgPHR5cGUgMTQ+OyB9PgogZnVuYyAocyA8dHlwZSAxNz4pIC5nby90b2tlbi5maWxlIChwIDx0eXBlIDIzPikgPHR5cGUgMTQ+OwogZnVuYyAocyA8dHlwZSAxNz4pIFdyaXRlIChlbmNvZGUgPHR5cGUgMjkgKD8gPHR5cGUgMzAgaW50ZXJmYWNlIHsgfT4pIDx0eXBlIC0xOT4+KSA8dHlwZSAtMTk+OwogZnVuYyAocyA8dHlwZSAxNz4pIEFkZEZpbGUgKGZpbGVuYW1lIDx0eXBlIC0xNj4sIGJhc2UgPHR5cGUgLTExPiwgc2l6ZSA8dHlwZSAtMTE+KSA8dHlwZSAxND47CiBmdW5jIChzIDx0eXBlIDE3PikgUG9zaXRpb25Gb3IgKHAgPHR5cGUgMjM+LCBhZGp1c3RlZCA8dHlwZSAtMTU+KSAocG9zIDx0eXBlIDI0Pik7CiBmdW5jIChzIDx0eXBlIDE3PikgUG9zaXRpb24gKHAgPHR5cGUgMjM+KSAocG9zIDx0eXBlIDI0Pik7CiBmdW5jIChzIDx0eXBlIDE3PikgSXRlcmF0ZSAoZiA8dHlwZSAzMSAoPyA8dHlwZSAxND4pIDx0eXBlIC0xNT4+KTsKIGZ1bmMgKHMgPHR5cGUgMTc+KSBSZWFkIChkZWNvZGUgPHR5cGUgMzIgKD8gPHR5cGUgMzMgaW50ZXJmYWNlIHsgfT4pIDx0eXBlIC0xOT4+KSA8dHlwZSAtMTk+OwogZnVuYyAocyA8dHlwZSAxNz4pIEJhc2UgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHMgPHR5cGUgMTc+KSBGaWxlIChwIDx0eXBlIDIzPikgKGYgPHR5cGUgMTQ+KTsKPj4sIHBhdGggPHR5cGUgLTE2PiwgZmlsdGVyIDx0eXBlIDM0ICg/IDx0eXBlIDM1ICJvcy5GaWxlSW5mbyIgPHR5cGUgMzYgaW50ZXJmYWNlIHsgTmFtZSAoKSA8dHlwZSAtMTY+OyBTaXplICgpIDx0eXBlIC00PjsgTW9kZSAoKSA8dHlwZSAzNyAib3MuRmlsZU1vZGUiIDx0eXBlIC03PgogZnVuYyAobSA8dHlwZSAzNz4pIElzUmVndWxhciAoKSA8dHlwZSAtMTU+OwogZnVuYyAobSA8dHlwZSAzNz4pIFBlcm0gKCkgPHR5cGUgMzc+OwogZnVuYyAobSA8dHlwZSAzNz4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAobSA8dHlwZSAzNz4pIElzRGlyICgpIDx0eXBlIC0xNT47Cj47IE1vZFRpbWUgKCkgPHR5cGUgMzggInRpbWUuVGltZSIgInRpbWUiIDx0eXBlIDM5IHN0cnVjdCB7IC50aW1lLnNlYyA8dHlwZSAtND47IC50aW1lLm5zZWMgPHR5cGUgLTM+OyAudGltZS5sb2MgPHR5cGUgNDAgKjx0eXBlIDQxICJ0aW1lLkxvY2F0aW9uIiA8dHlwZSA0MiBzdHJ1Y3QgeyAudGltZS5uYW1lIDx0eXBlIC0xNj47IC50aW1lLnpvbmUgPHR5cGUgNDMgW10gPHR5cGUgNDQgIi50aW1lLnpvbmUiIDx0eXBlIDQ1IHN0cnVjdCB7IC50aW1lLm5hbWUgPHR5cGUgLTE2PjsgLnRpbWUub2Zmc2V0IDx0eXBlIC0xMT47IC50aW1lLmlzRFNUIDx0eXBlIC0xNT47IH0+Pj47IC50aW1lLnR4IDx0eXBlIDQ2IFtdIDx0eXBlIDQ3ICIudGltZS56b25lVHJhbnMiIDx0eXBlIDQ4IHN0cnVjdCB7IC50aW1lLndoZW4gPHR5cGUgLTQ+OyAudGltZS5pbmRleCA8dHlwZSAtNT47IC50aW1lLmlzc3RkIDx0eXBlIC0xNT47IC50aW1lLmlzdXRjIDx0eXBlIC0xNT47IH0+Pj47IC50aW1lLmNhY2hlU3RhcnQgPHR5cGUgLTQ+OyAudGltZS5jYWNoZUVuZCA8dHlwZSAtND47IC50aW1lLmNhY2hlWm9uZSA8dHlwZSA0OSAqPHR5cGUgNDQ+PjsgfT4KIGZ1bmMgKGwgPHR5cGUgNTAgKjx0eXBlIDQxPj4pIC50aW1lLmZpcnN0Wm9uZVVzZWQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGwgPHR5cGUgNTA+KSAudGltZS5sb29rdXBOYW1lIChuYW1lIDx0eXBlIC0xNj4sIHVuaXggPHR5cGUgLTQ+KSAob2Zmc2V0IDx0eXBlIC0xMT4sIGlzRFNUIDx0eXBlIC0xNT4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAobCA8dHlwZSA1MD4pIC50aW1lLmxvb2t1cCAoc2VjIDx0eXBlIC00PikgKG5hbWUgPHR5cGUgLTE2Piwgb2Zmc2V0IDx0eXBlIC0xMT4sIGlzRFNUIDx0eXBlIC0xNT4sIHN0YXJ0IDx0eXBlIC00PiwgZW5kIDx0eXBlIC00Pik7CiBmdW5jIChsIDx0eXBlIDUwPikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChsIDx0eXBlIDUwPikgLnRpbWUubG9va3VwRmlyc3Rab25lICgpIDx0eXBlIC0xMT47CiBmdW5jIChsIDx0eXBlIDUwPikgLnRpbWUuZ2V0ICgpIDx0eXBlIDUwPjsKPj47IH0+CiBmdW5jICh0IDx0eXBlIDM4PikgQWZ0ZXIgKHUgPHR5cGUgMzg+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSAzOD4pIE1hcnNoYWxUZXh0ICgpICg/IDx0eXBlIDUxIFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAzOD4pIERhdGUgKCkgKHllYXIgPHR5cGUgLTExPiwgbW9udGggPHR5cGUgNTIgInRpbWUuTW9udGgiIDx0eXBlIC0xMT4KIGZ1bmMgKG0gPHR5cGUgNTI+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPiwgZGF5IDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSAzOD4pIC50aW1lLmFicyAoKSA8dHlwZSAtOD47CiBmdW5jICh0IDx0eXBlIDM4PikgV2Vla2RheSAoKSA8dHlwZSA1MyAidGltZS5XZWVrZGF5IiA8dHlwZSAtMTE+CiBmdW5jIChkIDx0eXBlIDUzPikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj47CiBmdW5jICh0IDx0eXBlIDM4PikgTmFub3NlY29uZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSA1NCAqPHR5cGUgMzg+PikgR29iRGVjb2RlIChkYXRhIDx0eXBlIDU1IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAodCA8dHlwZSAzOD4pIEluIChsb2MgPHR5cGUgNDA+KSA8dHlwZSAzOD47CiBmdW5jICh0IDx0eXBlIDM4PikgTG9jYWwgKCkgPHR5cGUgMzg+OwogZnVuYyAodCA8dHlwZSAzOD4pIE1vbnRoICgpIDx0eXBlIDUyPjsKIGZ1bmMgKHQgPHR5cGUgMzg+KSBIb3VyICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDM4PikgTWFyc2hhbEJpbmFyeSAoKSAoPyA8dHlwZSA1NiBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgMzg+KSBVbml4TmFubyAoKSA8dHlwZSAtND47CiBmdW5jICh0IDx0eXBlIDM4PikgRXF1YWwgKHUgPHR5cGUgMzg+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSAzOD4pIEZvcm1hdCAobGF5b3V0IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDM4PikgQWRkRGF0ZSAoeWVhcnMgPHR5cGUgLTExPiwgbW9udGhzIDx0eXBlIC0xMT4sIGRheXMgPHR5cGUgLTExPikgPHR5cGUgMzg+OwogZnVuYyAodCA8dHlwZSAzOD4pIFpvbmUgKCkgKG5hbWUgPHR5cGUgLTE2Piwgb2Zmc2V0IDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSAzOD4pIERheSAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAzOD4pIENsb2NrICgpIChob3VyIDx0eXBlIC0xMT4sIG1pbiA8dHlwZSAtMTE+LCBzZWMgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDM4PikgTWFyc2hhbEpTT04gKCkgKD8gPHR5cGUgNTcgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDM4PikgVVRDICgpIDx0eXBlIDM4PjsKIGZ1bmMgKHQgPHR5cGUgMzg+KSAudGltZS5kYXRlIChmdWxsIDx0eXBlIC0xNT4pICh5ZWFyIDx0eXBlIC0xMT4sIG1vbnRoIDx0eXBlIDUyPiwgZGF5IDx0eXBlIC0xMT4sIHlkYXkgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDM4PikgSXNaZXJvICgpIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDM4PikgQmVmb3JlICh1IDx0eXBlIDM4PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMzg+KSBTZWNvbmQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMzg+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMzg+KSBNaW51dGUgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMzg+KSBSb3VuZCAoZCA8dHlwZSA1OCAidGltZS5EdXJhdGlvbiIgPHR5cGUgLTQ+CiBmdW5jIChkIDx0eXBlIDU4PikgU2Vjb25kcyAoKSA8dHlwZSAtMTA+OwogZnVuYyAoZCA8dHlwZSA1OD4pIE1pbnV0ZXMgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKGQgPHR5cGUgNTg+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGQgPHR5cGUgNTg+KSBIb3VycyAoKSA8dHlwZSAtMTA+OwogZnVuYyAoZCA8dHlwZSA1OD4pIE5hbm9zZWNvbmRzICgpIDx0eXBlIC00PjsKPikgPHR5cGUgMzg+OwogZnVuYyAodCA8dHlwZSAzOD4pIFN1YiAodSA8dHlwZSAzOD4pIDx0eXBlIDU4PjsKIGZ1bmMgKHQgPHR5cGUgNTQ+KSBVbm1hcnNoYWxUZXh0IChkYXRhIDx0eXBlIDU5IFtdIDx0eXBlIC0yMD4+KSAoZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAzOD4pIFVuaXggKCkgPHR5cGUgLTQ+OwogZnVuYyAodCA8dHlwZSAzOD4pIFRydW5jYXRlIChkIDx0eXBlIDU4PikgPHR5cGUgMzg+OwogZnVuYyAodCA8dHlwZSAzOD4pIEFkZCAoZCA8dHlwZSA1OD4pIDx0eXBlIDM4PjsKIGZ1bmMgKHQgPHR5cGUgMzg+KSBHb2JFbmNvZGUgKCkgKD8gPHR5cGUgNjAgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDM4PikgTG9jYXRpb24gKCkgPHR5cGUgNDA+OwogZnVuYyAodCA8dHlwZSA1ND4pIFVubWFyc2hhbEJpbmFyeSAoZGF0YSA8dHlwZSA2MSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHQgPHR5cGUgMzg+KSBJU09XZWVrICgpICh5ZWFyIDx0eXBlIC0xMT4sIHdlZWsgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDM4PikgLnRpbWUubG9jYWJzICgpIChuYW1lIDx0eXBlIC0xNj4sIG9mZnNldCA8dHlwZSAtMTE+LCBhYnMgPHR5cGUgLTg+KTsKIGZ1bmMgKHQgPHR5cGUgMzg+KSBZZWFyICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDM4PikgWWVhckRheSAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSA1ND4pIFVubWFyc2hhbEpTT04gKGRhdGEgPHR5cGUgNjIgW10gPHR5cGUgLTIwPj4pIChlcnIgPHR5cGUgLTE5Pik7Cj47IElzRGlyICgpIDx0eXBlIC0xNT47IFN5cyAoKSA8dHlwZSA2MyBpbnRlcmZhY2UgeyB9PjsgfT4+KSA8dHlwZSAtMTU+PiwgbW9kZSA8dHlwZSAxPikgKHBrZ3MgPHR5cGUgNjQgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSA2NSAqPHR5cGUgNjYgImdvL2FzdC5QYWNrYWdlIiA8dHlwZSA2NyBzdHJ1Y3QgeyBOYW1lIDx0eXBlIC0xNj47IFNjb3BlIDx0eXBlIDY4ICo8dHlwZSA2OSAiZ28vYXN0LlNjb3BlIiA8dHlwZSA3MCBzdHJ1Y3QgeyBPdXRlciA8dHlwZSA3MSAqPHR5cGUgNjk+PjsgT2JqZWN0cyA8dHlwZSA3MiBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDczICo8dHlwZSA3NCAiZ28vYXN0Lk9iamVjdCIgPHR5cGUgNzUgc3RydWN0IHsgS2luZCA8dHlwZSA3NiAiZ28vYXN0Lk9iaktpbmQiIDx0eXBlIC0xMT4KIGZ1bmMgKGtpbmQgPHR5cGUgNzY+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsgTmFtZSA8dHlwZSAtMTY+OyBEZWNsIDx0eXBlIDc3IGludGVyZmFjZSB7IH0+OyBEYXRhIDx0eXBlIDc4IGludGVyZmFjZSB7IH0+OyBUeXBlIDx0eXBlIDc5IGludGVyZmFjZSB7IH0+OyB9PgogZnVuYyAob2JqIDx0eXBlIDgwICo8dHlwZSA3ND4+KSBQb3MgKCkgPHR5cGUgMjM+Owo+Pj47IH0+CiBmdW5jIChzIDx0eXBlIDgxICo8dHlwZSA2OT4+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHMgPHR5cGUgODE+KSBJbnNlcnQgKG9iaiA8dHlwZSA3Mz4pIChhbHQgPHR5cGUgNzM+KTsKIGZ1bmMgKHMgPHR5cGUgODE+KSBMb29rdXAgKG5hbWUgPHR5cGUgLTE2PikgPHR5cGUgNzM+Owo+PjsgSW1wb3J0cyA8dHlwZSA4MiBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDczPj47IEZpbGVzIDx0eXBlIDgzIG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgODQgKjx0eXBlIDg1ICJnby9hc3QuRmlsZSIgPHR5cGUgODYgc3RydWN0IHsgRG9jIDx0eXBlIDg3ICo8dHlwZSA4OCAiZ28vYXN0LkNvbW1lbnRHcm91cCIgPHR5cGUgODkgc3RydWN0IHsgTGlzdCA8dHlwZSA5MCBbXSA8dHlwZSA5MSAqPHR5cGUgOTIgImdvL2FzdC5Db21tZW50IiA8dHlwZSA5MyBzdHJ1Y3QgeyBTbGFzaCA8dHlwZSAyMz47IFRleHQgPHR5cGUgLTE2PjsgfT4KIGZ1bmMgKGMgPHR5cGUgOTQgKjx0eXBlIDkyPj4pIEVuZCAoKSA8dHlwZSAyMz47CiBmdW5jIChjIDx0eXBlIDk0PikgUG9zICgpIDx0eXBlIDIzPjsKPj4+OyB9PgogZnVuYyAoZyA8dHlwZSA5NSAqPHR5cGUgODg+PikgRW5kICgpIDx0eXBlIDIzPjsKIGZ1bmMgKGcgPHR5cGUgOTU+KSBQb3MgKCkgPHR5cGUgMjM+OwogZnVuYyAoZyA8dHlwZSA5NT4pIFRleHQgKCkgPHR5cGUgLTE2PjsKPj47IFBhY2thZ2UgPHR5cGUgMjM+OyBOYW1lIDx0eXBlIDk2ICo8dHlwZSA5NyAiZ28vYXN0LklkZW50IiA8dHlwZSA5OCBzdHJ1Y3QgeyBOYW1lUG9zIDx0eXBlIDIzPjsgTmFtZSA8dHlwZSAtMTY+OyBPYmogPHR5cGUgNzM+OyB9PgogZnVuYyAoeCA8dHlwZSA5OSAqPHR5cGUgOTc+PikgRW5kICgpIDx0eXBlIDIzPjsKIGZ1bmMgKGlkIDx0eXBlIDk5PikgSXNFeHBvcnRlZCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaWQgPHR5cGUgOTk+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHggPHR5cGUgOTk+KSBQb3MgKCkgPHR5cGUgMjM+OwogZnVuYyAoPyA8dHlwZSA5OT4pIC5nby9hc3QuZXhwck5vZGUgKCk7Cj4+OyBEZWNscyA8dHlwZSAxMDAgW10gPHR5cGUgMTAxICJnby9hc3QuRGVjbCIgPHR5cGUgMTAyIGludGVyZmFjZSB7ID8gPHR5cGUgMTAzICJnby9hc3QuTm9kZSIgPHR5cGUgMTA0IGludGVyZmFjZSB7IFBvcyAoKSA8dHlwZSAyMz47IEVuZCAoKSA8dHlwZSAyMz47IH0+PjsgLmdvL2FzdC5kZWNsTm9kZSAoKTsgfT4+PjsgU2NvcGUgPHR5cGUgNjg+OyBJbXBvcnRzIDx0eXBlIDEwNSBbXSA8dHlwZSAxMDYgKjx0eXBlIDEwNyAiZ28vYXN0LkltcG9ydFNwZWMiIDx0eXBlIDEwOCBzdHJ1Y3QgeyBEb2MgPHR5cGUgODc+OyBOYW1lIDx0eXBlIDk2PjsgUGF0aCA8dHlwZSAxMDkgKjx0eXBlIDExMCAiZ28vYXN0LkJhc2ljTGl0IiA8dHlwZSAxMTEgc3RydWN0IHsgVmFsdWVQb3MgPHR5cGUgMjM+OyBLaW5kIDx0eXBlIDExMiAiZ28vdG9rZW4uVG9rZW4iIDx0eXBlIC0xMT4KIGZ1bmMgKG9wIDx0eXBlIDExMj4pIFByZWNlZGVuY2UgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHRvayA8dHlwZSAxMTI+KSBJc0xpdGVyYWwgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHRvayA8dHlwZSAxMTI+KSBJc09wZXJhdG9yICgpIDx0eXBlIC0xNT47CiBmdW5jICh0b2sgPHR5cGUgMTEyPikgSXNLZXl3b3JkICgpIDx0eXBlIC0xNT47CiBmdW5jICh0b2sgPHR5cGUgMTEyPikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj47IFZhbHVlIDx0eXBlIC0xNj47IH0+CiBmdW5jICh4IDx0eXBlIDExMyAqPHR5cGUgMTEwPj4pIEVuZCAoKSA8dHlwZSAyMz47CiBmdW5jICh4IDx0eXBlIDExMz4pIFBvcyAoKSA8dHlwZSAyMz47CiBmdW5jICg/IDx0eXBlIDExMz4pIC5nby9hc3QuZXhwck5vZGUgKCk7Cj4+OyBDb21tZW50IDx0eXBlIDg3PjsgRW5kUG9zIDx0eXBlIDIzPjsgfT4KIGZ1bmMgKHMgPHR5cGUgMTE0ICo8dHlwZSAxMDc+PikgRW5kICgpIDx0eXBlIDIzPjsKIGZ1bmMgKHMgPHR5cGUgMTE0PikgUG9zICgpIDx0eXBlIDIzPjsKIGZ1bmMgKD8gPHR5cGUgMTE0PikgLmdvL2FzdC5zcGVjTm9kZSAoKTsKPj4+OyBVbnJlc29sdmVkIDx0eXBlIDExNSBbXSA8dHlwZSA5Nj4+OyBDb21tZW50cyA8dHlwZSAxMTYgW10gPHR5cGUgODc+PjsgfT4KIGZ1bmMgKGYgPHR5cGUgMTE3ICo8dHlwZSA4NT4+KSBFbmQgKCkgPHR5cGUgMjM+OwogZnVuYyAoZiA8dHlwZSAxMTc+KSBQb3MgKCkgPHR5cGUgMjM+Owo+Pj47IH0+CiBmdW5jIChwIDx0eXBlIDExOCAqPHR5cGUgNjY+PikgRW5kICgpIDx0eXBlIDIzPjsKIGZ1bmMgKHAgPHR5cGUgMTE4PikgUG9zICgpIDx0eXBlIDIzPjsKPj4+LCBmaXJzdCA8dHlwZSAtMTk+KTsKZnVuYyBQYXJzZUV4cHIgKHggPHR5cGUgLTE2PikgKD8gPHR5cGUgMTE5ICJnby9hc3QuRXhwciIgPHR5cGUgMTIwIGludGVyZmFjZSB7ID8gPHR5cGUgMTAzPjsgLmdvL2FzdC5leHByTm9kZSAoKTsgfT4+LCA/IDx0eXBlIC0xOT4pOwpmdW5jIFBhcnNlRmlsZSAoZnNldCA8dHlwZSAyPiwgZmlsZW5hbWUgPHR5cGUgLTE2Piwgc3JjIDx0eXBlIDEyMSBpbnRlcmZhY2UgeyB9PiwgbW9kZSA8dHlwZSAxPikgKGYgPHR5cGUgODQ+LCBlcnIgPHR5cGUgLTE5Pik7CmNvbnN0IFNwdXJpb3VzRXJyb3JzIDx0eXBlIDE+ID0gMzIgOwpjb25zdCBUcmFjZSA8dHlwZSAxPiA9IDggOwpjaGVja3N1bSBDNkVERTQ4RTEzRTA4OTA0QjgzODIxRUFGNjA3MkVERDU4NkUzNTU4OwoALnN5bXRhYgAuc3RydGFiAC5zaHN0cnRhYgAuZ29fZXhwb3J0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAAAAAAAAAAAADQAAADBLQAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAAAAAAAAAAAAD1LQAAJgAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAHC4AACAAAAAEAAAAAgAAAAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAADwuAAABAAAAAAAAAAAAAAABAAAAAAAAAA==