f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAADEEAAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIGZvcm1hdDsKcGtncGF0aCBnby9mb3JtYXQ7CnByaW9yaXR5IDExOwppbXBvcnQgYnl0ZXMgYnl0ZXMgImJ5dGVzIjsKaW1wb3J0IGZtdCBmbXQgImZtdCI7CmltcG9ydCBhc3QgZ28vYXN0ICJnby9hc3QiOwppbXBvcnQgcGFyc2VyIGdvL3BhcnNlciAiZ28vcGFyc2VyIjsKaW1wb3J0IHByaW50ZXIgZ28vcHJpbnRlciAiZ28vcHJpbnRlciI7CmltcG9ydCB0b2tlbiBnby90b2tlbiAiZ28vdG9rZW4iOwppbXBvcnQgaW8gaW8gImlvIjsKaW1wb3J0IHN0cmluZ3Mgc3RyaW5ncyAic3RyaW5ncyI7CmluaXQgbWF0aCBtYXRoLi5pbXBvcnQgMSBydW50aW1lIHJ1bnRpbWUuLmltcG9ydCAxIHVuaWNvZGUgdW5pY29kZS4uaW1wb3J0IDEgc3RyY29udiBzdHJjb252Li5pbXBvcnQgMiBzeW5jIHN5bmMuLmltcG9ydCAyIGlvIGlvLi5pbXBvcnQgMyByZWZsZWN0IHJlZmxlY3QuLmltcG9ydCAzIHN5c2NhbGwgc3lzY2FsbC4uaW1wb3J0IDMgYnl0ZXMgYnl0ZXMuLmltcG9ydCA0IHRpbWUgdGltZS4uaW1wb3J0IDQgb3Mgb3MuLmltcG9ydCA1IHRhYndyaXRlciB0ZXh0X3RhYndyaXRlci4uaW1wb3J0IDUgZmlsZXBhdGggcGF0aF9maWxlcGF0aC4uaW1wb3J0IDYgZm10IGZtdC4uaW1wb3J0IDYgaW91dGlsIGlvX2lvdXRpbC4uaW1wb3J0IDcgdG9rZW4gZ29fdG9rZW4uLmltcG9ydCA3IHNjYW5uZXIgZ29fc2Nhbm5lci4uaW1wb3J0IDggYXN0IGdvX2FzdC4uaW1wb3J0IDkgcGFyc2VyIGdvX3BhcnNlci4uaW1wb3J0IDEwIHByaW50ZXIgZ29fcHJpbnRlci4uaW1wb3J0IDEwOwpmdW5jIE5vZGUgKGRzdCA8dHlwZSAxICJpby5Xcml0ZXIiIDx0eXBlIDIgaW50ZXJmYWNlIHsgV3JpdGUgKHAgPHR5cGUgMyBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj4sIGZzZXQgPHR5cGUgNCAqPHR5cGUgNSAiZ28vdG9rZW4uRmlsZVNldCIgPHR5cGUgNiBzdHJ1Y3QgeyAuZ28vdG9rZW4ubXV0ZXggPHR5cGUgNyAic3luYy5SV011dGV4IiAic3luYyIgPHR5cGUgOCBzdHJ1Y3QgeyAuc3luYy53IDx0eXBlIDkgInN5bmMuTXV0ZXgiIDx0eXBlIDEwIHN0cnVjdCB7IC5zeW5jLnN0YXRlIDx0eXBlIC0zPjsgLnN5bmMuc2VtYSA8dHlwZSAtNz47IH0+CiBmdW5jIChtIDx0eXBlIDExICo8dHlwZSA5Pj4pIFVubG9jayAoKTsKIGZ1bmMgKG0gPHR5cGUgMTE+KSBMb2NrICgpOwo+OyAuc3luYy53cml0ZXJTZW0gPHR5cGUgLTc+OyAuc3luYy5yZWFkZXJTZW0gPHR5cGUgLTc+OyAuc3luYy5yZWFkZXJDb3VudCA8dHlwZSAtMz47IC5zeW5jLnJlYWRlcldhaXQgPHR5cGUgLTM+OyB9PgogZnVuYyAocncgPHR5cGUgMTIgKjx0eXBlIDc+PikgUlVubG9jayAoKTsKIGZ1bmMgKHJ3IDx0eXBlIDEyPikgVW5sb2NrICgpOwogZnVuYyAocncgPHR5cGUgMTI+KSBSTG9ja2VyICgpIDx0eXBlIDEzICJzeW5jLkxvY2tlciIgPHR5cGUgMTQgaW50ZXJmYWNlIHsgTG9jayAoKTsgVW5sb2NrICgpOyB9Pj47CiBmdW5jIChydyA8dHlwZSAxMj4pIFJMb2NrICgpOwogZnVuYyAocncgPHR5cGUgMTI+KSBMb2NrICgpOwo+OyAuZ28vdG9rZW4uYmFzZSA8dHlwZSAtMTE+OyAuZ28vdG9rZW4uZmlsZXMgPHR5cGUgMTUgW10gPHR5cGUgMTYgKjx0eXBlIDE3ICJnby90b2tlbi5GaWxlIiA8dHlwZSAxOCBzdHJ1Y3QgeyAuZ28vdG9rZW4uc2V0IDx0eXBlIDE5ICo8dHlwZSA1Pj47IC5nby90b2tlbi5uYW1lIDx0eXBlIC0xNj47IC5nby90b2tlbi5iYXNlIDx0eXBlIC0xMT47IC5nby90b2tlbi5zaXplIDx0eXBlIC0xMT47IC5nby90b2tlbi5saW5lcyA8dHlwZSAyMCBbXSA8dHlwZSAtMTE+PjsgLmdvL3Rva2VuLmluZm9zIDx0eXBlIDIxIFtdIDx0eXBlIDIyICIuZ28vdG9rZW4ubGluZUluZm8iIDx0eXBlIDIzIHN0cnVjdCB7IE9mZnNldCA8dHlwZSAtMTE+OyBGaWxlbmFtZSA8dHlwZSAtMTY+OyBMaW5lIDx0eXBlIC0xMT47IH0+Pj47IH0+CiBmdW5jIChmIDx0eXBlIDI0ICo8dHlwZSAxNz4+KSBOYW1lICgpIDx0eXBlIC0xNj47CiBmdW5jIChmIDx0eXBlIDI0PikgUG9zaXRpb25Gb3IgKHAgPHR5cGUgMjUgImdvL3Rva2VuLlBvcyIgPHR5cGUgLTExPgogZnVuYyAocCA8dHlwZSAyNT4pIElzVmFsaWQgKCkgPHR5cGUgLTE1PjsKPiwgYWRqdXN0ZWQgPHR5cGUgLTE1PikgKHBvcyA8dHlwZSAyNiAiZ28vdG9rZW4uUG9zaXRpb24iIDx0eXBlIDI3IHN0cnVjdCB7IEZpbGVuYW1lIDx0eXBlIC0xNj47IE9mZnNldCA8dHlwZSAtMTE+OyBMaW5lIDx0eXBlIC0xMT47IENvbHVtbiA8dHlwZSAtMTE+OyB9PgogZnVuYyAocG9zIDx0eXBlIDI4ICo8dHlwZSAyNj4+KSBJc1ZhbGlkICgpIDx0eXBlIC0xNT47CiBmdW5jIChwb3MgPHR5cGUgMjY+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPik7CiBmdW5jIChmIDx0eXBlIDI0PikgUG9zIChvZmZzZXQgPHR5cGUgLTExPikgPHR5cGUgMjU+OwogZnVuYyAoZiA8dHlwZSAyND4pIC5nby90b2tlbi5wb3NpdGlvbiAocCA8dHlwZSAyNT4sIGFkanVzdGVkIDx0eXBlIC0xNT4pIChwb3MgPHR5cGUgMjY+KTsKIGZ1bmMgKGYgPHR5cGUgMjQ+KSBNZXJnZUxpbmUgKGxpbmUgPHR5cGUgLTExPik7CiBmdW5jIChmIDx0eXBlIDI0PikgU2V0TGluZXNGb3JDb250ZW50IChjb250ZW50IDx0eXBlIDI5IFtdIDx0eXBlIC0yMD4+KTsKIGZ1bmMgKGYgPHR5cGUgMjQ+KSBTZXRMaW5lcyAobGluZXMgPHR5cGUgMzAgW10gPHR5cGUgLTExPj4pIDx0eXBlIC0xNT47CiBmdW5jIChmIDx0eXBlIDI0PikgQWRkTGluZSAob2Zmc2V0IDx0eXBlIC0xMT4pOwogZnVuYyAoZiA8dHlwZSAyND4pIFBvc2l0aW9uIChwIDx0eXBlIDI1PikgKHBvcyA8dHlwZSAyNj4pOwogZnVuYyAoZiA8dHlwZSAyND4pIExpbmUgKHAgPHR5cGUgMjU+KSA8dHlwZSAtMTE+OwogZnVuYyAoZiA8dHlwZSAyND4pIFNpemUgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKGYgPHR5cGUgMjQ+KSBPZmZzZXQgKHAgPHR5cGUgMjU+KSA8dHlwZSAtMTE+OwogZnVuYyAoZiA8dHlwZSAyND4pIC5nby90b2tlbi51bnBhY2sgKG9mZnNldCA8dHlwZSAtMTE+LCBhZGp1c3RlZCA8dHlwZSAtMTU+KSAoZmlsZW5hbWUgPHR5cGUgLTE2PiwgbGluZSA8dHlwZSAtMTE+LCBjb2x1bW4gPHR5cGUgLTExPik7CiBmdW5jIChmIDx0eXBlIDI0PikgTGluZUNvdW50ICgpIDx0eXBlIC0xMT47CiBmdW5jIChmIDx0eXBlIDI0PikgQWRkTGluZUluZm8gKG9mZnNldCA8dHlwZSAtMTE+LCBmaWxlbmFtZSA8dHlwZSAtMTY+LCBsaW5lIDx0eXBlIC0xMT4pOwogZnVuYyAoZiA8dHlwZSAyND4pIEJhc2UgKCkgPHR5cGUgLTExPjsKPj4+OyAuZ28vdG9rZW4ubGFzdCA8dHlwZSAxNj47IH0+CiBmdW5jIChzIDx0eXBlIDE5PikgLmdvL3Rva2VuLmZpbGUgKHAgPHR5cGUgMjU+KSA8dHlwZSAxNj47CiBmdW5jIChzIDx0eXBlIDE5PikgV3JpdGUgKGVuY29kZSA8dHlwZSAzMSAoPyA8dHlwZSAzMiBpbnRlcmZhY2UgeyB9PikgPHR5cGUgLTE5Pj4pIDx0eXBlIC0xOT47CiBmdW5jIChzIDx0eXBlIDE5PikgQWRkRmlsZSAoZmlsZW5hbWUgPHR5cGUgLTE2PiwgYmFzZSA8dHlwZSAtMTE+LCBzaXplIDx0eXBlIC0xMT4pIDx0eXBlIDE2PjsKIGZ1bmMgKHMgPHR5cGUgMTk+KSBQb3NpdGlvbkZvciAocCA8dHlwZSAyNT4sIGFkanVzdGVkIDx0eXBlIC0xNT4pIChwb3MgPHR5cGUgMjY+KTsKIGZ1bmMgKHMgPHR5cGUgMTk+KSBQb3NpdGlvbiAocCA8dHlwZSAyNT4pIChwb3MgPHR5cGUgMjY+KTsKIGZ1bmMgKHMgPHR5cGUgMTk+KSBJdGVyYXRlIChmIDx0eXBlIDMzICg/IDx0eXBlIDE2PikgPHR5cGUgLTE1Pj4pOwogZnVuYyAocyA8dHlwZSAxOT4pIFJlYWQgKGRlY29kZSA8dHlwZSAzNCAoPyA8dHlwZSAzNSBpbnRlcmZhY2UgeyB9PikgPHR5cGUgLTE5Pj4pIDx0eXBlIC0xOT47CiBmdW5jIChzIDx0eXBlIDE5PikgQmFzZSAoKSA8dHlwZSAtMTE+OwogZnVuYyAocyA8dHlwZSAxOT4pIEZpbGUgKHAgPHR5cGUgMjU+KSAoZiA8dHlwZSAxNj4pOwo+Piwgbm9kZSA8dHlwZSAzNiBpbnRlcmZhY2UgeyB9PikgPHR5cGUgLTE5PjsKZnVuYyBTb3VyY2UgKHNyYyA8dHlwZSAzNyBbXSA8dHlwZSAtMjA+PikgKD8gPHR5cGUgMzggW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CmNoZWNrc3VtIDc2RTBBQTUwNzFGMDFENjRGOTI4RjlEOTU4QUIxQkExMjc5MTU3N0U7CgAuc3ltdGFiAC5zdHJ0YWIALnNoc3RydGFiAC5nb19leHBvcnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAAAAAAAAAAAADQAAABEEAAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAAAAAAAAAAAAB4EAAAJgAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAoBAAACAAAAAEAAAAAgAAAAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAAMAQAAABAAAAAAAAAAAAAAABAAAAAAAAAA==