f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAAAQLAAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIGJ1aWxkOwpwa2dwYXRoIGdvL2J1aWxkOwpwcmlvcml0eSAxMTsKaW1wb3J0IGJ1ZmlvIGJ1ZmlvICJidWZpbyI7CmltcG9ydCBieXRlcyBieXRlcyAiYnl0ZXMiOwppbXBvcnQgZXJyb3JzIGVycm9ycyAiZXJyb3JzIjsKaW1wb3J0IGZtdCBmbXQgImZtdCI7CmltcG9ydCBhc3QgZ28vYXN0ICJnby9hc3QiOwppbXBvcnQgZG9jIGdvL2RvYyAiZ28vZG9jIjsKaW1wb3J0IHBhcnNlciBnby9wYXJzZXIgImdvL3BhcnNlciI7CmltcG9ydCB0b2tlbiBnby90b2tlbiAiZ28vdG9rZW4iOwppbXBvcnQgaW8gaW8gImlvIjsKaW1wb3J0IGlvdXRpbCBpby9pb3V0aWwgImlvL2lvdXRpbCI7CmltcG9ydCBsb2cgbG9nICJsb2ciOwppbXBvcnQgb3Mgb3MgIm9zIjsKaW1wb3J0IHBhdGggcGF0aCAicGF0aCI7CmltcG9ydCBmaWxlcGF0aCBwYXRoL2ZpbGVwYXRoICJwYXRoL2ZpbGVwYXRoIjsKaW1wb3J0IHJ1bnRpbWUgcnVudGltZSAicnVudGltZSI7CmltcG9ydCBzb3J0IHNvcnQgInNvcnQiOwppbXBvcnQgc3RyY29udiBzdHJjb252ICJzdHJjb252IjsKaW1wb3J0IHN0cmluZ3Mgc3RyaW5ncyAic3RyaW5ncyI7CmltcG9ydCB1bmljb2RlIHVuaWNvZGUgInVuaWNvZGUiOwppbXBvcnQgdXRmOCB1bmljb2RlL3V0ZjggInVuaWNvZGUvdXRmOCI7CmluaXQgYnVpbGQgZ29fYnVpbGQuLmltcG9ydCAxMSBtYXRoIG1hdGguLmltcG9ydCAxIHJ1bnRpbWUgcnVudGltZS4uaW1wb3J0IDEgdW5pY29kZSB1bmljb2RlLi5pbXBvcnQgMSBzdHJjb252IHN0cmNvbnYuLmltcG9ydCAyIHN5bmMgc3luYy4uaW1wb3J0IDIgaW8gaW8uLmltcG9ydCAzIHJlZmxlY3QgcmVmbGVjdC4uaW1wb3J0IDMgc3lzY2FsbCBzeXNjYWxsLi5pbXBvcnQgMyBieXRlcyBieXRlcy4uaW1wb3J0IDQgdGltZSB0aW1lLi5pbXBvcnQgNCBidWZpbyBidWZpby4uaW1wb3J0IDUgb3Mgb3MuLmltcG9ydCA1IHBhdGggcGF0aC4uaW1wb3J0IDUgc3ludGF4IHJlZ2V4cF9zeW50YXguLmltcG9ydCA1IGZpbGVwYXRoIHBhdGhfZmlsZXBhdGguLmltcG9ydCA2IGZtdCBmbXQuLmltcG9ydCA2IHJlZ2V4cCByZWdleHAuLmltcG9ydCA2IGlvdXRpbCBpb19pb3V0aWwuLmltcG9ydCA3IGxvZyBsb2cuLmltcG9ydCA3IHBhcnNlIHRleHRfdGVtcGxhdGVfcGFyc2UuLmltcG9ydCA3IHRva2VuIGdvX3Rva2VuLi5pbXBvcnQgNyBzY2FubmVyIGdvX3NjYW5uZXIuLmltcG9ydCA4IHRlbXBsYXRlIHRleHRfdGVtcGxhdGUuLmltcG9ydCA4IGFzdCBnb19hc3QuLmltcG9ydCA5IGRvYyBnb19kb2MuLmltcG9ydCAxMCBwYXJzZXIgZ29fcGFyc2VyLi5pbXBvcnQgMTA7CmNvbnN0IEFsbG93QmluYXJ5IDx0eXBlIDEgIkltcG9ydE1vZGUiIDx0eXBlIC0xMj4+ID0gMiA7CmZ1bmMgQXJjaENoYXIgKGdvYXJjaCA8dHlwZSAtMTY+KSAoPyA8dHlwZSAtMTY+LCA/IDx0eXBlIC0xOT4pOwp0eXBlIDx0eXBlIDIgIkNvbnRleHQiIDx0eXBlIDMgc3RydWN0IHsgR09BUkNIIDx0eXBlIC0xNj47IEdPT1MgPHR5cGUgLTE2PjsgR09ST09UIDx0eXBlIC0xNj47IEdPUEFUSCA8dHlwZSAtMTY+OyBDZ29FbmFibGVkIDx0eXBlIC0xNT47IFVzZUFsbEZpbGVzIDx0eXBlIC0xNT47IENvbXBpbGVyIDx0eXBlIC0xNj47IEJ1aWxkVGFncyA8dHlwZSA0IFtdIDx0eXBlIC0xNj4+OyBSZWxlYXNlVGFncyA8dHlwZSA1IFtdIDx0eXBlIC0xNj4+OyBJbnN0YWxsU3VmZml4IDx0eXBlIC0xNj47IEpvaW5QYXRoIDx0eXBlIDYgKGVsZW0gLi4uPHR5cGUgLTE2PikgPHR5cGUgLTE2Pj47IFNwbGl0UGF0aExpc3QgPHR5cGUgNyAobGlzdCA8dHlwZSAtMTY+KSA8dHlwZSA4IFtdIDx0eXBlIC0xNj4+PjsgSXNBYnNQYXRoIDx0eXBlIDkgKHBhdGggPHR5cGUgLTE2PikgPHR5cGUgLTE1Pj47IElzRGlyIDx0eXBlIDEwIChwYXRoIDx0eXBlIC0xNj4pIDx0eXBlIC0xNT4+OyBIYXNTdWJkaXIgPHR5cGUgMTEgKHJvb3QgPHR5cGUgLTE2PiwgZGlyIDx0eXBlIC0xNj4pIChyZWwgPHR5cGUgLTE2Piwgb2sgPHR5cGUgLTE1Pik+OyBSZWFkRGlyIDx0eXBlIDEyIChkaXIgPHR5cGUgLTE2PikgKGZpIDx0eXBlIDEzIFtdIDx0eXBlIDE0ICJvcy5GaWxlSW5mbyIgPHR5cGUgMTUgaW50ZXJmYWNlIHsgTmFtZSAoKSA8dHlwZSAtMTY+OyBTaXplICgpIDx0eXBlIC00PjsgTW9kZSAoKSA8dHlwZSAxNiAib3MuRmlsZU1vZGUiIDx0eXBlIC03PgogZnVuYyAobSA8dHlwZSAxNj4pIFBlcm0gKCkgPHR5cGUgMTY+OwogZnVuYyAobSA8dHlwZSAxNj4pIElzUmVndWxhciAoKSA8dHlwZSAtMTU+OwogZnVuYyAobSA8dHlwZSAxNj4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAobSA8dHlwZSAxNj4pIElzRGlyICgpIDx0eXBlIC0xNT47Cj47IE1vZFRpbWUgKCkgPHR5cGUgMTcgInRpbWUuVGltZSIgInRpbWUiIDx0eXBlIDE4IHN0cnVjdCB7IC50aW1lLnNlYyA8dHlwZSAtND47IC50aW1lLm5zZWMgPHR5cGUgLTM+OyAudGltZS5sb2MgPHR5cGUgMTkgKjx0eXBlIDIwICJ0aW1lLkxvY2F0aW9uIiA8dHlwZSAyMSBzdHJ1Y3QgeyAudGltZS5uYW1lIDx0eXBlIC0xNj47IC50aW1lLnpvbmUgPHR5cGUgMjIgW10gPHR5cGUgMjMgIi50aW1lLnpvbmUiIDx0eXBlIDI0IHN0cnVjdCB7IC50aW1lLm5hbWUgPHR5cGUgLTE2PjsgLnRpbWUub2Zmc2V0IDx0eXBlIC0xMT47IC50aW1lLmlzRFNUIDx0eXBlIC0xNT47IH0+Pj47IC50aW1lLnR4IDx0eXBlIDI1IFtdIDx0eXBlIDI2ICIudGltZS56b25lVHJhbnMiIDx0eXBlIDI3IHN0cnVjdCB7IC50aW1lLndoZW4gPHR5cGUgLTQ+OyAudGltZS5pbmRleCA8dHlwZSAtNT47IC50aW1lLmlzc3RkIDx0eXBlIC0xNT47IC50aW1lLmlzdXRjIDx0eXBlIC0xNT47IH0+Pj47IC50aW1lLmNhY2hlU3RhcnQgPHR5cGUgLTQ+OyAudGltZS5jYWNoZUVuZCA8dHlwZSAtND47IC50aW1lLmNhY2hlWm9uZSA8dHlwZSAyOCAqPHR5cGUgMjM+PjsgfT4KIGZ1bmMgKGwgPHR5cGUgMjkgKjx0eXBlIDIwPj4pIC50aW1lLmZpcnN0Wm9uZVVzZWQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGwgPHR5cGUgMjk+KSAudGltZS5sb29rdXAgKHNlYyA8dHlwZSAtND4pIChuYW1lIDx0eXBlIC0xNj4sIG9mZnNldCA8dHlwZSAtMTE+LCBpc0RTVCA8dHlwZSAtMTU+LCBzdGFydCA8dHlwZSAtND4sIGVuZCA8dHlwZSAtND4pOwogZnVuYyAobCA8dHlwZSAyOT4pIC50aW1lLmxvb2t1cE5hbWUgKG5hbWUgPHR5cGUgLTE2PiwgdW5peCA8dHlwZSAtND4pIChvZmZzZXQgPHR5cGUgLTExPiwgaXNEU1QgPHR5cGUgLTE1Piwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jIChsIDx0eXBlIDI5PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChsIDx0eXBlIDI5PikgLnRpbWUuZ2V0ICgpIDx0eXBlIDI5PjsKIGZ1bmMgKGwgPHR5cGUgMjk+KSAudGltZS5sb29rdXBGaXJzdFpvbmUgKCkgPHR5cGUgLTExPjsKPj47IH0+CiBmdW5jICh0IDx0eXBlIDE3PikgQWZ0ZXIgKHUgPHR5cGUgMTc+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSAxNz4pIE1hcnNoYWxUZXh0ICgpICg/IDx0eXBlIDMwIFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAxNz4pIERhdGUgKCkgKHllYXIgPHR5cGUgLTExPiwgbW9udGggPHR5cGUgMzEgInRpbWUuTW9udGgiIDx0eXBlIC0xMT4KIGZ1bmMgKG0gPHR5cGUgMzE+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPiwgZGF5IDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSAxNz4pIC50aW1lLmFicyAoKSA8dHlwZSAtOD47CiBmdW5jICh0IDx0eXBlIDE3PikgV2Vla2RheSAoKSA8dHlwZSAzMiAidGltZS5XZWVrZGF5IiA8dHlwZSAtMTE+CiBmdW5jIChkIDx0eXBlIDMyPikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj47CiBmdW5jICh0IDx0eXBlIDE3PikgTmFub3NlY29uZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAzMyAqPHR5cGUgMTc+PikgR29iRGVjb2RlIChkYXRhIDx0eXBlIDM0IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAodCA8dHlwZSAxNz4pIEluIChsb2MgPHR5cGUgMTk+KSA8dHlwZSAxNz47CiBmdW5jICh0IDx0eXBlIDE3PikgTG9jYWwgKCkgPHR5cGUgMTc+OwogZnVuYyAodCA8dHlwZSAxNz4pIE1vbnRoICgpIDx0eXBlIDMxPjsKIGZ1bmMgKHQgPHR5cGUgMTc+KSBIb3VyICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDE3PikgTWFyc2hhbEJpbmFyeSAoKSAoPyA8dHlwZSAzNSBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgMTc+KSBVbml4TmFubyAoKSA8dHlwZSAtND47CiBmdW5jICh0IDx0eXBlIDE3PikgRXF1YWwgKHUgPHR5cGUgMTc+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSAxNz4pIEZvcm1hdCAobGF5b3V0IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDE3PikgQWRkRGF0ZSAoeWVhcnMgPHR5cGUgLTExPiwgbW9udGhzIDx0eXBlIC0xMT4sIGRheXMgPHR5cGUgLTExPikgPHR5cGUgMTc+OwogZnVuYyAodCA8dHlwZSAxNz4pIFpvbmUgKCkgKG5hbWUgPHR5cGUgLTE2Piwgb2Zmc2V0IDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSAxNz4pIERheSAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAxNz4pIENsb2NrICgpIChob3VyIDx0eXBlIC0xMT4sIG1pbiA8dHlwZSAtMTE+LCBzZWMgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDE3PikgTWFyc2hhbEpTT04gKCkgKD8gPHR5cGUgMzYgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDE3PikgVVRDICgpIDx0eXBlIDE3PjsKIGZ1bmMgKHQgPHR5cGUgMTc+KSAudGltZS5kYXRlIChmdWxsIDx0eXBlIC0xNT4pICh5ZWFyIDx0eXBlIC0xMT4sIG1vbnRoIDx0eXBlIDMxPiwgZGF5IDx0eXBlIC0xMT4sIHlkYXkgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDE3PikgSXNaZXJvICgpIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDE3PikgQmVmb3JlICh1IDx0eXBlIDE3PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMTc+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMTc+KSBTZWNvbmQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTc+KSBNaW51dGUgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTc+KSBTdWIgKHUgPHR5cGUgMTc+KSA8dHlwZSAzNyAidGltZS5EdXJhdGlvbiIgPHR5cGUgLTQ+CiBmdW5jIChkIDx0eXBlIDM3PikgU2Vjb25kcyAoKSA8dHlwZSAtMTA+OwogZnVuYyAoZCA8dHlwZSAzNz4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoZCA8dHlwZSAzNz4pIE1pbnV0ZXMgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKGQgPHR5cGUgMzc+KSBIb3VycyAoKSA8dHlwZSAtMTA+OwogZnVuYyAoZCA8dHlwZSAzNz4pIE5hbm9zZWNvbmRzICgpIDx0eXBlIC00PjsKPjsKIGZ1bmMgKHQgPHR5cGUgMTc+KSBSb3VuZCAoZCA8dHlwZSAzNz4pIDx0eXBlIDE3PjsKIGZ1bmMgKHQgPHR5cGUgMTc+KSBVbml4ICgpIDx0eXBlIC00PjsKIGZ1bmMgKHQgPHR5cGUgMzM+KSBVbm1hcnNoYWxUZXh0IChkYXRhIDx0eXBlIDM4IFtdIDx0eXBlIC0yMD4+KSAoZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAxNz4pIEFkZCAoZCA8dHlwZSAzNz4pIDx0eXBlIDE3PjsKIGZ1bmMgKHQgPHR5cGUgMTc+KSBUcnVuY2F0ZSAoZCA8dHlwZSAzNz4pIDx0eXBlIDE3PjsKIGZ1bmMgKHQgPHR5cGUgMTc+KSBMb2NhdGlvbiAoKSA8dHlwZSAxOT47CiBmdW5jICh0IDx0eXBlIDE3PikgR29iRW5jb2RlICgpICg/IDx0eXBlIDM5IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAzMz4pIFVubWFyc2hhbEJpbmFyeSAoZGF0YSA8dHlwZSA0MCBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHQgPHR5cGUgMTc+KSBJU09XZWVrICgpICh5ZWFyIDx0eXBlIC0xMT4sIHdlZWsgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDE3PikgLnRpbWUubG9jYWJzICgpIChuYW1lIDx0eXBlIC0xNj4sIG9mZnNldCA8dHlwZSAtMTE+LCBhYnMgPHR5cGUgLTg+KTsKIGZ1bmMgKHQgPHR5cGUgMTc+KSBZZWFyRGF5ICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDE3PikgWWVhciAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAzMz4pIFVubWFyc2hhbEpTT04gKGRhdGEgPHR5cGUgNDEgW10gPHR5cGUgLTIwPj4pIChlcnIgPHR5cGUgLTE5Pik7Cj47IElzRGlyICgpIDx0eXBlIC0xNT47IFN5cyAoKSA8dHlwZSA0MiBpbnRlcmZhY2UgeyB9PjsgfT4+PiwgZXJyIDx0eXBlIC0xOT4pPjsgT3BlbkZpbGUgPHR5cGUgNDMgKHBhdGggPHR5cGUgLTE2PikgKHIgPHR5cGUgNDQgImlvLlJlYWRDbG9zZXIiIDx0eXBlIDQ1IGludGVyZmFjZSB7ID8gPHR5cGUgNDYgImlvLlJlYWRlciIgPHR5cGUgNDcgaW50ZXJmYWNlIHsgUmVhZCAocCA8dHlwZSA0OCBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj47ID8gPHR5cGUgNDkgImlvLkNsb3NlciIgPHR5cGUgNTAgaW50ZXJmYWNlIHsgQ2xvc2UgKCkgPHR5cGUgLTE5PjsgfT4+OyB9Pj4sIGVyciA8dHlwZSAtMTk+KT47IH0+CiBmdW5jIChjdHh0IDx0eXBlIDUxICo8dHlwZSAyPj4pIC5nby9idWlsZC5qb2luUGF0aCAoZWxlbSAuLi48dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAoY3R4dCA8dHlwZSA1MT4pIC5nby9idWlsZC5zcGxpdFBhdGhMaXN0IChzIDx0eXBlIC0xNj4pIDx0eXBlIDUyIFtdIDx0eXBlIC0xNj4+OwogZnVuYyAoY3R4dCA8dHlwZSA1MT4pIC5nby9idWlsZC5pc0Fic1BhdGggKHBhdGggPHR5cGUgLTE2PikgPHR5cGUgLTE1PjsKIGZ1bmMgKGN0eHQgPHR5cGUgNTE+KSAuZ28vYnVpbGQuaXNEaXIgKHBhdGggPHR5cGUgLTE2PikgPHR5cGUgLTE1PjsKIGZ1bmMgKGN0eHQgPHR5cGUgNTE+KSAuZ28vYnVpbGQuaGFzU3ViZGlyIChyb290IDx0eXBlIC0xNj4sIGRpciA8dHlwZSAtMTY+KSAocmVsIDx0eXBlIC0xNj4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAoY3R4dCA8dHlwZSA1MT4pIC5nby9idWlsZC5yZWFkRGlyIChwYXRoIDx0eXBlIC0xNj4pICg/IDx0eXBlIDUzIFtdIDx0eXBlIDE0Pj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChjdHh0IDx0eXBlIDUxPikgLmdvL2J1aWxkLm9wZW5GaWxlIChwYXRoIDx0eXBlIC0xNj4pICg/IDx0eXBlIDQ0PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGN0eHQgPHR5cGUgNTE+KSAuZ28vYnVpbGQuaXNGaWxlIChwYXRoIDx0eXBlIC0xNj4pIDx0eXBlIC0xNT47CiBmdW5jIChjdHh0IDx0eXBlIDUxPikgLmdvL2J1aWxkLmdvcGF0aCAoKSA8dHlwZSA1NCBbXSA8dHlwZSAtMTY+PjsKIGZ1bmMgKGN0eHQgPHR5cGUgNTE+KSBTcmNEaXJzICgpIDx0eXBlIDU1IFtdIDx0eXBlIC0xNj4+OwogZnVuYyAoY3R4dCA8dHlwZSA1MT4pIEltcG9ydERpciAoZGlyIDx0eXBlIC0xNj4sIG1vZGUgPHR5cGUgMT4pICg/IDx0eXBlIDU2ICo8dHlwZSA1NyAiUGFja2FnZSIgPHR5cGUgNTggc3RydWN0IHsgRGlyIDx0eXBlIC0xNj47IE5hbWUgPHR5cGUgLTE2PjsgSW1wb3J0Q29tbWVudCA8dHlwZSAtMTY+OyBEb2MgPHR5cGUgLTE2PjsgSW1wb3J0UGF0aCA8dHlwZSAtMTY+OyBSb290IDx0eXBlIC0xNj47IFNyY1Jvb3QgPHR5cGUgLTE2PjsgUGtnUm9vdCA8dHlwZSAtMTY+OyBCaW5EaXIgPHR5cGUgLTE2PjsgR29yb290IDx0eXBlIC0xNT47IFBrZ09iaiA8dHlwZSAtMTY+OyBBbGxUYWdzIDx0eXBlIDU5IFtdIDx0eXBlIC0xNj4+OyBDb25mbGljdERpciA8dHlwZSAtMTY+OyBHb0ZpbGVzIDx0eXBlIDYwIFtdIDx0eXBlIC0xNj4+OyBDZ29GaWxlcyA8dHlwZSA2MSBbXSA8dHlwZSAtMTY+PjsgSWdub3JlZEdvRmlsZXMgPHR5cGUgNjIgW10gPHR5cGUgLTE2Pj47IENGaWxlcyA8dHlwZSA2MyBbXSA8dHlwZSAtMTY+PjsgQ1hYRmlsZXMgPHR5cGUgNjQgW10gPHR5cGUgLTE2Pj47IE1GaWxlcyA8dHlwZSA2NSBbXSA8dHlwZSAtMTY+PjsgSEZpbGVzIDx0eXBlIDY2IFtdIDx0eXBlIC0xNj4+OyBTRmlsZXMgPHR5cGUgNjcgW10gPHR5cGUgLTE2Pj47IFN3aWdGaWxlcyA8dHlwZSA2OCBbXSA8dHlwZSAtMTY+PjsgU3dpZ0NYWEZpbGVzIDx0eXBlIDY5IFtdIDx0eXBlIC0xNj4+OyBTeXNvRmlsZXMgPHR5cGUgNzAgW10gPHR5cGUgLTE2Pj47IENnb0NGTEFHUyA8dHlwZSA3MSBbXSA8dHlwZSAtMTY+PjsgQ2dvQ1BQRkxBR1MgPHR5cGUgNzIgW10gPHR5cGUgLTE2Pj47IENnb0NYWEZMQUdTIDx0eXBlIDczIFtdIDx0eXBlIC0xNj4+OyBDZ29MREZMQUdTIDx0eXBlIDc0IFtdIDx0eXBlIC0xNj4+OyBDZ29Qa2dDb25maWcgPHR5cGUgNzUgW10gPHR5cGUgLTE2Pj47IEltcG9ydHMgPHR5cGUgNzYgW10gPHR5cGUgLTE2Pj47IEltcG9ydFBvcyA8dHlwZSA3NyBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDc4IFtdIDx0eXBlIDc5ICJnby90b2tlbi5Qb3NpdGlvbiIgPHR5cGUgODAgc3RydWN0IHsgRmlsZW5hbWUgPHR5cGUgLTE2PjsgT2Zmc2V0IDx0eXBlIC0xMT47IExpbmUgPHR5cGUgLTExPjsgQ29sdW1uIDx0eXBlIC0xMT47IH0+CiBmdW5jIChwb3MgPHR5cGUgODEgKjx0eXBlIDc5Pj4pIElzVmFsaWQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHBvcyA8dHlwZSA3OT4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+Pj47IFRlc3RHb0ZpbGVzIDx0eXBlIDgyIFtdIDx0eXBlIC0xNj4+OyBUZXN0SW1wb3J0cyA8dHlwZSA4MyBbXSA8dHlwZSAtMTY+PjsgVGVzdEltcG9ydFBvcyA8dHlwZSA4NCBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDg1IFtdIDx0eXBlIDc5Pj4+OyBYVGVzdEdvRmlsZXMgPHR5cGUgODYgW10gPHR5cGUgLTE2Pj47IFhUZXN0SW1wb3J0cyA8dHlwZSA4NyBbXSA8dHlwZSAtMTY+PjsgWFRlc3RJbXBvcnRQb3MgPHR5cGUgODggbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSA4OSBbXSA8dHlwZSA3OT4+PjsgfT4KIGZ1bmMgKHAgPHR5cGUgOTAgKjx0eXBlIDU3Pj4pIElzQ29tbWFuZCAoKSA8dHlwZSAtMTU+Owo+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGN0eHQgPHR5cGUgNTE+KSBJbXBvcnQgKHBhdGggPHR5cGUgLTE2Piwgc3JjRGlyIDx0eXBlIC0xNj4sIG1vZGUgPHR5cGUgMT4pICg/IDx0eXBlIDU2PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGN0eHQgPHR5cGUgNTE+KSBNYXRjaEZpbGUgKGRpciA8dHlwZSAtMTY+LCBuYW1lIDx0eXBlIC0xNj4pIChtYXRjaCA8dHlwZSAtMTU+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjdHh0IDx0eXBlIDUxPikgLmdvL2J1aWxkLm1hdGNoRmlsZSAoZGlyIDx0eXBlIC0xNj4sIG5hbWUgPHR5cGUgLTE2PiwgcmV0dXJuSW1wb3J0cyA8dHlwZSAtMTU+LCBhbGxUYWdzIDx0eXBlIDkxIG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgLTE1Pj4pIChtYXRjaCA8dHlwZSAtMTU+LCBkYXRhIDx0eXBlIDkyIFtdIDx0eXBlIC0yMD4+LCBmaWxlbmFtZSA8dHlwZSAtMTY+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjdHh0IDx0eXBlIDUxPikgLmdvL2J1aWxkLnNob3VsZEJ1aWxkIChjb250ZW50IDx0eXBlIDkzIFtdIDx0eXBlIC0yMD4+LCBhbGxUYWdzIDx0eXBlIDk0IG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgLTE1Pj4pIDx0eXBlIC0xNT47CiBmdW5jIChjdHh0IDx0eXBlIDUxPikgLmdvL2J1aWxkLnNhdmVDZ28gKGZpbGVuYW1lIDx0eXBlIC0xNj4sIGRpIDx0eXBlIDU2PiwgY2cgPHR5cGUgOTUgKjx0eXBlIDk2ICJnby9hc3QuQ29tbWVudEdyb3VwIiA8dHlwZSA5NyBzdHJ1Y3QgeyBMaXN0IDx0eXBlIDk4IFtdIDx0eXBlIDk5ICo8dHlwZSAxMDAgImdvL2FzdC5Db21tZW50IiA8dHlwZSAxMDEgc3RydWN0IHsgU2xhc2ggPHR5cGUgMTAyICJnby90b2tlbi5Qb3MiIDx0eXBlIC0xMT4KIGZ1bmMgKHAgPHR5cGUgMTAyPikgSXNWYWxpZCAoKSA8dHlwZSAtMTU+Owo+OyBUZXh0IDx0eXBlIC0xNj47IH0+CiBmdW5jIChjIDx0eXBlIDEwMyAqPHR5cGUgMTAwPj4pIEVuZCAoKSA8dHlwZSAxMDI+OwogZnVuYyAoYyA8dHlwZSAxMDM+KSBQb3MgKCkgPHR5cGUgMTAyPjsKPj4+OyB9PgogZnVuYyAoZyA8dHlwZSAxMDQgKjx0eXBlIDk2Pj4pIEVuZCAoKSA8dHlwZSAxMDI+OwogZnVuYyAoZyA8dHlwZSAxMDQ+KSBQb3MgKCkgPHR5cGUgMTAyPjsKIGZ1bmMgKGcgPHR5cGUgMTA0PikgVGV4dCAoKSA8dHlwZSAtMTY+Owo+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGN0eHQgPHR5cGUgNTE+KSAuZ28vYnVpbGQubWF0Y2ggKG5hbWUgPHR5cGUgLTE2PiwgYWxsVGFncyA8dHlwZSAxMDUgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAtMTU+PikgPHR5cGUgLTE1PjsKIGZ1bmMgKGN0eHQgPHR5cGUgNTE+KSAuZ28vYnVpbGQuZ29vZE9TQXJjaEZpbGUgKG5hbWUgPHR5cGUgLTE2PiwgYWxsVGFncyA8dHlwZSAxMDYgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAtMTU+PikgPHR5cGUgLTE1PjsKPjsKdmFyIERlZmF1bHQgPHR5cGUgMj47CmNvbnN0IEZpbmRPbmx5IDx0eXBlIDE+ID0gMSA7CmZ1bmMgSW1wb3J0IChwYXRoIDx0eXBlIC0xNj4sIHNyY0RpciA8dHlwZSAtMTY+LCBtb2RlIDx0eXBlIDE+KSAoPyA8dHlwZSA1Nj4sID8gPHR5cGUgLTE5Pik7CmNvbnN0IEltcG9ydENvbW1lbnQgPHR5cGUgMT4gPSA0IDsKZnVuYyBJbXBvcnREaXIgKGRpciA8dHlwZSAtMTY+LCBtb2RlIDx0eXBlIDE+KSAoPyA8dHlwZSA1Nj4sID8gPHR5cGUgLTE5Pik7CnR5cGUgPHR5cGUgMT47CmZ1bmMgSXNMb2NhbEltcG9ydCAocGF0aCA8dHlwZSAtMTY+KSA8dHlwZSAtMTU+Owp0eXBlIDx0eXBlIDEwNyAiTXVsdGlwbGVQYWNrYWdlRXJyb3IiIDx0eXBlIDEwOCBzdHJ1Y3QgeyBEaXIgPHR5cGUgLTE2PjsgUGFja2FnZXMgPHR5cGUgMTA5IFtdIDx0eXBlIC0xNj4+OyBGaWxlcyA8dHlwZSAxMTAgW10gPHR5cGUgLTE2Pj47IH0+CiBmdW5jIChlIDx0eXBlIDExMSAqPHR5cGUgMTA3Pj4pIEVycm9yICgpIDx0eXBlIC0xNj47Cj47CnR5cGUgPHR5cGUgMTEyICJOb0dvRXJyb3IiIDx0eXBlIDExMyBzdHJ1Y3QgeyBEaXIgPHR5cGUgLTE2PjsgfT4KIGZ1bmMgKGUgPHR5cGUgMTE0ICo8dHlwZSAxMTI+PikgRXJyb3IgKCkgPHR5cGUgLTE2PjsKPjsKdHlwZSA8dHlwZSA1Nz47CnZhciBUb29sRGlyIDx0eXBlIC0xNj47CmNoZWNrc3VtIEI2QkU1NDUwNDBBMjg1QkZBQkNBRjhDNTUyMzdGQTk0REM2Mjk0MDQ7CgAuc3ltdGFiAC5zdHJ0YWIALnNoc3RydGFiAC5nb19leHBvcnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAABAAAAAAAAAAAAAAA0AAAAjysAAAAAAAAAAAAAAQAAAAAAAAARAAAAAwAAAAAAAAAAAAAAwysAACYAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAOwrAAAgAAAABAAAAAIAAAAEAAAAEAAAAAkAAAADAAAAAAAAAAAAAAAMLAAAAQAAAAAAAAAAAAAAAQAAAAAAAAA=