f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAAA0MQAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIGd6aXA7CnBrZ3BhdGggY29tcHJlc3MvZ3ppcDsKcHJpb3JpdHkgODsKaW1wb3J0IGJ1ZmlvIGJ1ZmlvICJidWZpbyI7CmltcG9ydCBmbGF0ZSBjb21wcmVzcy9mbGF0ZSAiY29tcHJlc3MvZmxhdGUiOwppbXBvcnQgZXJyb3JzIGVycm9ycyAiZXJyb3JzIjsKaW1wb3J0IGZtdCBmbXQgImZtdCI7CmltcG9ydCBoYXNoIGhhc2ggImhhc2giOwppbXBvcnQgY3JjMzIgaGFzaC9jcmMzMiAiaGFzaC9jcmMzMiI7CmltcG9ydCBpbyBpbyAiaW8iOwppbXBvcnQgdGltZSB0aW1lICJ0aW1lIjsKaW5pdCBnemlwIGNvbXByZXNzX2d6aXAuLmltcG9ydCA4IG1hdGggbWF0aC4uaW1wb3J0IDEgcnVudGltZSBydW50aW1lLi5pbXBvcnQgMSB1bmljb2RlIHVuaWNvZGUuLmltcG9ydCAxIHN0cmNvbnYgc3RyY29udi4uaW1wb3J0IDIgc3luYyBzeW5jLi5pbXBvcnQgMiBpbyBpby4uaW1wb3J0IDMgcmVmbGVjdCByZWZsZWN0Li5pbXBvcnQgMyBzeXNjYWxsIHN5c2NhbGwuLmltcG9ydCAzIGJ5dGVzIGJ5dGVzLi5pbXBvcnQgNCB0aW1lIHRpbWUuLmltcG9ydCA0IGJ1ZmlvIGJ1ZmlvLi5pbXBvcnQgNSBjcmMzMiBoYXNoX2NyYzMyLi5pbXBvcnQgNSBvcyBvcy4uaW1wb3J0IDUgZm10IGZtdC4uaW1wb3J0IDYgZmxhdGUgY29tcHJlc3NfZmxhdGUuLmltcG9ydCA3Owpjb25zdCBCZXN0Q29tcHJlc3Npb24gPSA5IDsKY29uc3QgQmVzdFNwZWVkID0gMSA7CmNvbnN0IERlZmF1bHRDb21wcmVzc2lvbiA9IC0xIDsKdmFyIEVyckNoZWNrc3VtIDx0eXBlIC0xOT47CnZhciBFcnJIZWFkZXIgPHR5cGUgLTE5PjsKdHlwZSA8dHlwZSAxICJIZWFkZXIiIDx0eXBlIDIgc3RydWN0IHsgQ29tbWVudCA8dHlwZSAtMTY+OyBFeHRyYSA8dHlwZSAzIFtdIDx0eXBlIC0yMD4+OyBNb2RUaW1lIDx0eXBlIDQgInRpbWUuVGltZSIgPHR5cGUgNSBzdHJ1Y3QgeyAudGltZS5zZWMgPHR5cGUgLTQ+OyAudGltZS5uc2VjIDx0eXBlIC0zPjsgLnRpbWUubG9jIDx0eXBlIDYgKjx0eXBlIDcgInRpbWUuTG9jYXRpb24iIDx0eXBlIDggc3RydWN0IHsgLnRpbWUubmFtZSA8dHlwZSAtMTY+OyAudGltZS56b25lIDx0eXBlIDkgW10gPHR5cGUgMTAgIi50aW1lLnpvbmUiIDx0eXBlIDExIHN0cnVjdCB7IC50aW1lLm5hbWUgPHR5cGUgLTE2PjsgLnRpbWUub2Zmc2V0IDx0eXBlIC0xMT47IC50aW1lLmlzRFNUIDx0eXBlIC0xNT47IH0+Pj47IC50aW1lLnR4IDx0eXBlIDEyIFtdIDx0eXBlIDEzICIudGltZS56b25lVHJhbnMiIDx0eXBlIDE0IHN0cnVjdCB7IC50aW1lLndoZW4gPHR5cGUgLTQ+OyAudGltZS5pbmRleCA8dHlwZSAtNT47IC50aW1lLmlzc3RkIDx0eXBlIC0xNT47IC50aW1lLmlzdXRjIDx0eXBlIC0xNT47IH0+Pj47IC50aW1lLmNhY2hlU3RhcnQgPHR5cGUgLTQ+OyAudGltZS5jYWNoZUVuZCA8dHlwZSAtND47IC50aW1lLmNhY2hlWm9uZSA8dHlwZSAxNSAqPHR5cGUgMTA+PjsgfT4KIGZ1bmMgKGwgPHR5cGUgMTYgKjx0eXBlIDc+PikgLnRpbWUuZmlyc3Rab25lVXNlZCAoKSA8dHlwZSAtMTU+OwogZnVuYyAobCA8dHlwZSAxNj4pIC50aW1lLmxvb2t1cE5hbWUgKG5hbWUgPHR5cGUgLTE2PiwgdW5peCA8dHlwZSAtND4pIChvZmZzZXQgPHR5cGUgLTExPiwgaXNEU1QgPHR5cGUgLTE1Piwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jIChsIDx0eXBlIDE2PikgLnRpbWUubG9va3VwIChzZWMgPHR5cGUgLTQ+KSAobmFtZSA8dHlwZSAtMTY+LCBvZmZzZXQgPHR5cGUgLTExPiwgaXNEU1QgPHR5cGUgLTE1Piwgc3RhcnQgPHR5cGUgLTQ+LCBlbmQgPHR5cGUgLTQ+KTsKIGZ1bmMgKGwgPHR5cGUgMTY+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGwgPHR5cGUgMTY+KSAudGltZS5sb29rdXBGaXJzdFpvbmUgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKGwgPHR5cGUgMTY+KSAudGltZS5nZXQgKCkgPHR5cGUgMTY+Owo+PjsgfT4KIGZ1bmMgKHQgPHR5cGUgND4pIE1hcnNoYWxUZXh0ICgpICg/IDx0eXBlIDE3IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSA0PikgQWZ0ZXIgKHUgPHR5cGUgND4pIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDQ+KSBEYXRlICgpICh5ZWFyIDx0eXBlIC0xMT4sIG1vbnRoIDx0eXBlIDE4ICJ0aW1lLk1vbnRoIiA8dHlwZSAtMTE+CiBmdW5jIChtIDx0eXBlIDE4PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj4sIGRheSA8dHlwZSAtMTE+KTsKIGZ1bmMgKHQgPHR5cGUgND4pIC50aW1lLmFicyAoKSA8dHlwZSAtOD47CiBmdW5jICh0IDx0eXBlIDQ+KSBXZWVrZGF5ICgpIDx0eXBlIDE5ICJ0aW1lLldlZWtkYXkiIDx0eXBlIC0xMT4KIGZ1bmMgKGQgPHR5cGUgMTk+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsKIGZ1bmMgKHQgPHR5cGUgND4pIE5hbm9zZWNvbmQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMjAgKjx0eXBlIDQ+PikgR29iRGVjb2RlIChkYXRhIDx0eXBlIDIxIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAodCA8dHlwZSA0PikgSW4gKGxvYyA8dHlwZSA2PikgPHR5cGUgND47CiBmdW5jICh0IDx0eXBlIDQ+KSBMb2NhbCAoKSA8dHlwZSA0PjsKIGZ1bmMgKHQgPHR5cGUgND4pIE1vbnRoICgpIDx0eXBlIDE4PjsKIGZ1bmMgKHQgPHR5cGUgND4pIEhvdXIgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgND4pIE1hcnNoYWxCaW5hcnkgKCkgKD8gPHR5cGUgMjIgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDQ+KSBVbml4TmFubyAoKSA8dHlwZSAtND47CiBmdW5jICh0IDx0eXBlIDQ+KSBFcXVhbCAodSA8dHlwZSA0PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgND4pIEZvcm1hdCAobGF5b3V0IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDQ+KSBab25lICgpIChuYW1lIDx0eXBlIC0xNj4sIG9mZnNldCA8dHlwZSAtMTE+KTsKIGZ1bmMgKHQgPHR5cGUgND4pIEFkZERhdGUgKHllYXJzIDx0eXBlIC0xMT4sIG1vbnRocyA8dHlwZSAtMTE+LCBkYXlzIDx0eXBlIC0xMT4pIDx0eXBlIDQ+OwogZnVuYyAodCA8dHlwZSA0PikgRGF5ICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDQ+KSBNYXJzaGFsSlNPTiAoKSAoPyA8dHlwZSAyMyBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgND4pIFVUQyAoKSA8dHlwZSA0PjsKIGZ1bmMgKHQgPHR5cGUgND4pIENsb2NrICgpIChob3VyIDx0eXBlIC0xMT4sIG1pbiA8dHlwZSAtMTE+LCBzZWMgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDQ+KSAudGltZS5kYXRlIChmdWxsIDx0eXBlIC0xNT4pICh5ZWFyIDx0eXBlIC0xMT4sIG1vbnRoIDx0eXBlIDE4PiwgZGF5IDx0eXBlIC0xMT4sIHlkYXkgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDQ+KSBJc1plcm8gKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgND4pIEJlZm9yZSAodSA8dHlwZSA0PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgND4pIFNlY29uZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSA0PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDQ+KSBNaW51dGUgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgND4pIFJvdW5kIChkIDx0eXBlIDI0ICJ0aW1lLkR1cmF0aW9uIiA8dHlwZSAtND4KIGZ1bmMgKGQgPHR5cGUgMjQ+KSBTZWNvbmRzICgpIDx0eXBlIC0xMD47CiBmdW5jIChkIDx0eXBlIDI0PikgTWludXRlcyAoKSA8dHlwZSAtMTA+OwogZnVuYyAoZCA8dHlwZSAyND4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoZCA8dHlwZSAyND4pIEhvdXJzICgpIDx0eXBlIC0xMD47CiBmdW5jIChkIDx0eXBlIDI0PikgTmFub3NlY29uZHMgKCkgPHR5cGUgLTQ+Owo+KSA8dHlwZSA0PjsKIGZ1bmMgKHQgPHR5cGUgND4pIFN1YiAodSA8dHlwZSA0PikgPHR5cGUgMjQ+OwogZnVuYyAodCA8dHlwZSAyMD4pIFVubWFyc2hhbFRleHQgKGRhdGEgPHR5cGUgMjUgW10gPHR5cGUgLTIwPj4pIChlcnIgPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDQ+KSBVbml4ICgpIDx0eXBlIC00PjsKIGZ1bmMgKHQgPHR5cGUgND4pIFRydW5jYXRlIChkIDx0eXBlIDI0PikgPHR5cGUgND47CiBmdW5jICh0IDx0eXBlIDQ+KSBBZGQgKGQgPHR5cGUgMjQ+KSA8dHlwZSA0PjsKIGZ1bmMgKHQgPHR5cGUgND4pIEdvYkVuY29kZSAoKSAoPyA8dHlwZSAyNiBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgND4pIExvY2F0aW9uICgpIDx0eXBlIDY+OwogZnVuYyAodCA8dHlwZSAyMD4pIFVubWFyc2hhbEJpbmFyeSAoZGF0YSA8dHlwZSAyNyBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHQgPHR5cGUgND4pIElTT1dlZWsgKCkgKHllYXIgPHR5cGUgLTExPiwgd2VlayA8dHlwZSAtMTE+KTsKIGZ1bmMgKHQgPHR5cGUgND4pIC50aW1lLmxvY2FicyAoKSAobmFtZSA8dHlwZSAtMTY+LCBvZmZzZXQgPHR5cGUgLTExPiwgYWJzIDx0eXBlIC04Pik7CiBmdW5jICh0IDx0eXBlIDQ+KSBZZWFyICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDQ+KSBZZWFyRGF5ICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDIwPikgVW5tYXJzaGFsSlNPTiAoZGF0YSA8dHlwZSAyOCBbXSA8dHlwZSAtMjA+PikgKGVyciA8dHlwZSAtMTk+KTsKPjsgTmFtZSA8dHlwZSAtMTY+OyBPUyA8dHlwZSAtMjA+OyB9Pj47CmZ1bmMgTmV3UmVhZGVyIChyIDx0eXBlIDI5ICJpby5SZWFkZXIiIDx0eXBlIDMwIGludGVyZmFjZSB7IFJlYWQgKHAgPHR5cGUgMzEgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+KSAoPyA8dHlwZSAzMiAqPHR5cGUgMzMgIlJlYWRlciIgPHR5cGUgMzQgc3RydWN0IHsgPyA8dHlwZSAxPjsgLmNvbXByZXNzL2d6aXAuciA8dHlwZSAzNSAiY29tcHJlc3MvZmxhdGUuUmVhZGVyIiA8dHlwZSAzNiBpbnRlcmZhY2UgeyA/IDx0eXBlIDI5PjsgPyA8dHlwZSAzNyAiaW8uQnl0ZVJlYWRlciIgPHR5cGUgMzggaW50ZXJmYWNlIHsgUmVhZEJ5dGUgKCkgKGMgPHR5cGUgLTIwPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj47IH0+PjsgLmNvbXByZXNzL2d6aXAuZGVjb21wcmVzc29yIDx0eXBlIDM5ICJpby5SZWFkQ2xvc2VyIiA8dHlwZSA0MCBpbnRlcmZhY2UgeyA/IDx0eXBlIDI5PjsgPyA8dHlwZSA0MSAiaW8uQ2xvc2VyIiA8dHlwZSA0MiBpbnRlcmZhY2UgeyBDbG9zZSAoKSA8dHlwZSAtMTk+OyB9Pj47IH0+PjsgLmNvbXByZXNzL2d6aXAuZGlnZXN0IDx0eXBlIDQzICJoYXNoLkhhc2gzMiIgPHR5cGUgNDQgaW50ZXJmYWNlIHsgPyA8dHlwZSA0NSAiaGFzaC5IYXNoIiA8dHlwZSA0NiBpbnRlcmZhY2UgeyA/IDx0eXBlIDQ3ICJpby5Xcml0ZXIiIDx0eXBlIDQ4IGludGVyZmFjZSB7IFdyaXRlIChwIDx0eXBlIDQ5IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PjsgU3VtIChiIDx0eXBlIDUwIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSA1MSBbXSA8dHlwZSAtMjA+PjsgUmVzZXQgKCk7IFNpemUgKCkgPHR5cGUgLTExPjsgQmxvY2tTaXplICgpIDx0eXBlIC0xMT47IH0+PjsgU3VtMzIgKCkgPHR5cGUgLTc+OyB9Pj47IC5jb21wcmVzcy9nemlwLnNpemUgPHR5cGUgLTc+OyAuY29tcHJlc3MvZ3ppcC5mbGcgPHR5cGUgLTIwPjsgLmNvbXByZXNzL2d6aXAuYnVmIDx0eXBlIDUyIFs1MTIgXSA8dHlwZSAtMjA+PjsgLmNvbXByZXNzL2d6aXAuZXJyIDx0eXBlIC0xOT47IC5jb21wcmVzcy9nemlwLm11bHRpc3RyZWFtIDx0eXBlIC0xNT47IH0+CiBmdW5jICh6IDx0eXBlIDUzICo8dHlwZSAzMz4+KSBSZXNldCAociA8dHlwZSAyOT4pIDx0eXBlIC0xOT47CiBmdW5jICh6IDx0eXBlIDUzPikgTXVsdGlzdHJlYW0gKG9rIDx0eXBlIC0xNT4pOwogZnVuYyAoeiA8dHlwZSA1Mz4pIC5jb21wcmVzcy9nemlwLnJlYWRTdHJpbmcgKCkgKD8gPHR5cGUgLTE2PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHogPHR5cGUgNTM+KSAuY29tcHJlc3MvZ3ppcC5yZWFkMiAoKSAoPyA8dHlwZSAtNz4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh6IDx0eXBlIDUzPikgLmNvbXByZXNzL2d6aXAucmVhZEhlYWRlciAoc2F2ZSA8dHlwZSAtMTU+KSA8dHlwZSAtMTk+OwogZnVuYyAoeiA8dHlwZSA1Mz4pIFJlYWQgKHAgPHR5cGUgNTQgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHogPHR5cGUgNTM+KSBDbG9zZSAoKSA8dHlwZSAtMTk+Owo+PiwgPyA8dHlwZSAtMTk+KTsKZnVuYyBOZXdXcml0ZXIgKHcgPHR5cGUgNDc+KSA8dHlwZSA1NSAqPHR5cGUgNTYgIldyaXRlciIgPHR5cGUgNTcgc3RydWN0IHsgPyA8dHlwZSAxPjsgLmNvbXByZXNzL2d6aXAudyA8dHlwZSA0Nz47IC5jb21wcmVzcy9nemlwLmxldmVsIDx0eXBlIC0xMT47IC5jb21wcmVzcy9nemlwLndyb3RlSGVhZGVyIDx0eXBlIC0xNT47IC5jb21wcmVzcy9nemlwLmNvbXByZXNzb3IgPHR5cGUgNTggKjx0eXBlIDU5ICJjb21wcmVzcy9mbGF0ZS5Xcml0ZXIiIDx0eXBlIDYwIHN0cnVjdCB7IC5jb21wcmVzcy9mbGF0ZS5kIDx0eXBlIDYxICIuY29tcHJlc3MvZmxhdGUuY29tcHJlc3NvciIgPHR5cGUgNjIgc3RydWN0IHsgPyA8dHlwZSA2MyAiLmNvbXByZXNzL2ZsYXRlLmNvbXByZXNzaW9uTGV2ZWwiIDx0eXBlIDY0IHN0cnVjdCB7IC5jb21wcmVzcy9mbGF0ZS5nb29kIDx0eXBlIC0xMT47IC5jb21wcmVzcy9mbGF0ZS5sYXp5IDx0eXBlIC0xMT47IC5jb21wcmVzcy9mbGF0ZS5uaWNlIDx0eXBlIC0xMT47IC5jb21wcmVzcy9mbGF0ZS5jaGFpbiA8dHlwZSAtMTE+OyAuY29tcHJlc3MvZmxhdGUuZmFzdFNraXBIYXNoaW5nIDx0eXBlIC0xMT47IH0+PjsgLmNvbXByZXNzL2ZsYXRlLncgPHR5cGUgNjUgKjx0eXBlIDY2ICIuY29tcHJlc3MvZmxhdGUuaHVmZm1hbkJpdFdyaXRlciIgPHR5cGUgNjcgc3RydWN0IHsgLmNvbXByZXNzL2ZsYXRlLncgPHR5cGUgNDc+OyAuY29tcHJlc3MvZmxhdGUuYml0cyA8dHlwZSAtNz47IC5jb21wcmVzcy9mbGF0ZS5uYml0cyA8dHlwZSAtNz47IC5jb21wcmVzcy9mbGF0ZS5ieXRlcyA8dHlwZSA2OCBbNjQgXSA8dHlwZSAtMjA+PjsgLmNvbXByZXNzL2ZsYXRlLm5ieXRlcyA8dHlwZSAtMTE+OyAuY29tcHJlc3MvZmxhdGUubGl0ZXJhbEZyZXEgPHR5cGUgNjkgW10gPHR5cGUgLTM+PjsgLmNvbXByZXNzL2ZsYXRlLm9mZnNldEZyZXEgPHR5cGUgNzAgW10gPHR5cGUgLTM+PjsgLmNvbXByZXNzL2ZsYXRlLmNvZGVnZW4gPHR5cGUgNzEgW10gPHR5cGUgLTU+PjsgLmNvbXByZXNzL2ZsYXRlLmNvZGVnZW5GcmVxIDx0eXBlIDcyIFtdIDx0eXBlIC0zPj47IC5jb21wcmVzcy9mbGF0ZS5saXRlcmFsRW5jb2RpbmcgPHR5cGUgNzMgKjx0eXBlIDc0ICIuY29tcHJlc3MvZmxhdGUuaHVmZm1hbkVuY29kZXIiIDx0eXBlIDc1IHN0cnVjdCB7IC5jb21wcmVzcy9mbGF0ZS5jb2RlQml0cyA8dHlwZSA3NiBbXSA8dHlwZSAtNT4+OyAuY29tcHJlc3MvZmxhdGUuY29kZSA8dHlwZSA3NyBbXSA8dHlwZSAtNj4+OyB9PgogZnVuYyAoaCA8dHlwZSA3OCAqPHR5cGUgNzQ+PikgLmNvbXByZXNzL2ZsYXRlLmJpdENvdW50cyAobGlzdCA8dHlwZSA3OSBbXSA8dHlwZSA4MCAiLmNvbXByZXNzL2ZsYXRlLmxpdGVyYWxOb2RlIiA8dHlwZSA4MSBzdHJ1Y3QgeyAuY29tcHJlc3MvZmxhdGUubGl0ZXJhbCA8dHlwZSAtNj47IC5jb21wcmVzcy9mbGF0ZS5mcmVxIDx0eXBlIC0zPjsgfT4+PiwgbWF4Qml0cyA8dHlwZSAtMz4pIDx0eXBlIDgyIFtdIDx0eXBlIC0zPj47CiBmdW5jIChoIDx0eXBlIDc4PikgLmNvbXByZXNzL2ZsYXRlLmFzc2lnbkVuY29kaW5nQW5kU2l6ZSAoYml0Q291bnQgPHR5cGUgODMgW10gPHR5cGUgLTM+PiwgbGlzdCA8dHlwZSA4NCBbXSA8dHlwZSA4MD4+KTsKIGZ1bmMgKGggPHR5cGUgNzg+KSAuY29tcHJlc3MvZmxhdGUuYml0TGVuZ3RoIChmcmVxIDx0eXBlIDg1IFtdIDx0eXBlIC0zPj4pIDx0eXBlIC00PjsKIGZ1bmMgKGggPHR5cGUgNzg+KSAuY29tcHJlc3MvZmxhdGUuZ2VuZXJhdGUgKGZyZXEgPHR5cGUgODYgW10gPHR5cGUgLTM+PiwgbWF4Qml0cyA8dHlwZSAtMz4pOwo+PjsgLmNvbXByZXNzL2ZsYXRlLm9mZnNldEVuY29kaW5nIDx0eXBlIDczPjsgLmNvbXByZXNzL2ZsYXRlLmNvZGVnZW5FbmNvZGluZyA8dHlwZSA3Mz47IC5jb21wcmVzcy9mbGF0ZS5lcnIgPHR5cGUgLTE5PjsgfT4KIGZ1bmMgKHcgPHR5cGUgODcgKjx0eXBlIDY2Pj4pIC5jb21wcmVzcy9mbGF0ZS53cml0ZUJsb2NrICh0b2tlbnMgPHR5cGUgODggW10gPHR5cGUgODkgIi5jb21wcmVzcy9mbGF0ZS50b2tlbiIgPHR5cGUgLTc+CiBmdW5jICh0IDx0eXBlIDg5PikgLmNvbXByZXNzL2ZsYXRlLmxlbmd0aCAoKSA8dHlwZSAtNz47CiBmdW5jICh0IDx0eXBlIDg5PikgLmNvbXByZXNzL2ZsYXRlLnR5cCAoKSA8dHlwZSAtNz47CiBmdW5jICh0IDx0eXBlIDg5PikgLmNvbXByZXNzL2ZsYXRlLmxpdGVyYWwgKCkgPHR5cGUgLTc+OwogZnVuYyAodCA8dHlwZSA4OT4pIC5jb21wcmVzcy9mbGF0ZS5vZmZzZXQgKCkgPHR5cGUgLTc+Owo+PiwgZW9mIDx0eXBlIC0xNT4sIGlucHV0IDx0eXBlIDkwIFtdIDx0eXBlIC0yMD4+KTsKIGZ1bmMgKHcgPHR5cGUgODc+KSAuY29tcHJlc3MvZmxhdGUud3JpdGVCeXRlcyAoYnl0ZXMgPHR5cGUgOTEgW10gPHR5cGUgLTIwPj4pOwogZnVuYyAodyA8dHlwZSA4Nz4pIC5jb21wcmVzcy9mbGF0ZS53cml0ZUR5bmFtaWNIZWFkZXIgKG51bUxpdGVyYWxzIDx0eXBlIC0xMT4sIG51bU9mZnNldHMgPHR5cGUgLTExPiwgbnVtQ29kZWdlbnMgPHR5cGUgLTExPiwgaXNFb2YgPHR5cGUgLTE1Pik7CiBmdW5jICh3IDx0eXBlIDg3PikgLmNvbXByZXNzL2ZsYXRlLndyaXRlQml0cyAoYiA8dHlwZSAtMz4sIG5iIDx0eXBlIC0zPik7CiBmdW5jICh3IDx0eXBlIDg3PikgLmNvbXByZXNzL2ZsYXRlLmdlbmVyYXRlQ29kZWdlbiAobnVtTGl0ZXJhbHMgPHR5cGUgLTExPiwgbnVtT2Zmc2V0cyA8dHlwZSAtMTE+KTsKIGZ1bmMgKHcgPHR5cGUgODc+KSAuY29tcHJlc3MvZmxhdGUud3JpdGVDb2RlIChjb2RlIDx0eXBlIDczPiwgbGl0ZXJhbCA8dHlwZSAtNz4pOwogZnVuYyAodyA8dHlwZSA4Nz4pIC5jb21wcmVzcy9mbGF0ZS5yZXNldCAod3JpdGVyIDx0eXBlIDQ3Pik7CiBmdW5jICh3IDx0eXBlIDg3PikgLmNvbXByZXNzL2ZsYXRlLndyaXRlRml4ZWRIZWFkZXIgKGlzRW9mIDx0eXBlIC0xNT4pOwogZnVuYyAodyA8dHlwZSA4Nz4pIC5jb21wcmVzcy9mbGF0ZS5mbHVzaEJpdHMgKCk7CiBmdW5jICh3IDx0eXBlIDg3PikgLmNvbXByZXNzL2ZsYXRlLndyaXRlU3RvcmVkSGVhZGVyIChsZW5ndGggPHR5cGUgLTExPiwgaXNFb2YgPHR5cGUgLTE1Pik7CiBmdW5jICh3IDx0eXBlIDg3PikgLmNvbXByZXNzL2ZsYXRlLmZsdXNoICgpOwo+PjsgLmNvbXByZXNzL2ZsYXRlLmZpbGwgPHR5cGUgOTIgKD8gPHR5cGUgOTMgKjx0eXBlIDYxPj4sID8gPHR5cGUgOTQgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xMT4+OyAuY29tcHJlc3MvZmxhdGUuc3RlcCA8dHlwZSA5NSAoPyA8dHlwZSA5Mz4pPjsgLmNvbXByZXNzL2ZsYXRlLnN5bmMgPHR5cGUgLTE1PjsgLmNvbXByZXNzL2ZsYXRlLmNoYWluSGVhZCA8dHlwZSAtMTE+OyAuY29tcHJlc3MvZmxhdGUuaGFzaEhlYWQgPHR5cGUgOTYgW10gPHR5cGUgLTExPj47IC5jb21wcmVzcy9mbGF0ZS5oYXNoUHJldiA8dHlwZSA5NyBbXSA8dHlwZSAtMTE+PjsgLmNvbXByZXNzL2ZsYXRlLmhhc2hPZmZzZXQgPHR5cGUgLTExPjsgLmNvbXByZXNzL2ZsYXRlLmluZGV4IDx0eXBlIC0xMT47IC5jb21wcmVzcy9mbGF0ZS53aW5kb3cgPHR5cGUgOTggW10gPHR5cGUgLTIwPj47IC5jb21wcmVzcy9mbGF0ZS53aW5kb3dFbmQgPHR5cGUgLTExPjsgLmNvbXByZXNzL2ZsYXRlLmJsb2NrU3RhcnQgPHR5cGUgLTExPjsgLmNvbXByZXNzL2ZsYXRlLmJ5dGVBdmFpbGFibGUgPHR5cGUgLTE1PjsgLmNvbXByZXNzL2ZsYXRlLnRva2VucyA8dHlwZSA5OSBbXSA8dHlwZSA4OT4+OyAuY29tcHJlc3MvZmxhdGUubGVuZ3RoIDx0eXBlIC0xMT47IC5jb21wcmVzcy9mbGF0ZS5vZmZzZXQgPHR5cGUgLTExPjsgLmNvbXByZXNzL2ZsYXRlLmhhc2ggPHR5cGUgLTExPjsgLmNvbXByZXNzL2ZsYXRlLm1heEluc2VydEluZGV4IDx0eXBlIC0xMT47IC5jb21wcmVzcy9mbGF0ZS5lcnIgPHR5cGUgLTE5PjsgfT4KIGZ1bmMgKGQgPHR5cGUgMTAwICo8dHlwZSA2MT4+KSAuY29tcHJlc3MvZmxhdGUud3JpdGVCbG9jayAodG9rZW5zIDx0eXBlIDEwMSBbXSA8dHlwZSA4OT4+LCBpbmRleCA8dHlwZSAtMTE+LCBlb2YgPHR5cGUgLTE1PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGQgPHR5cGUgMTAwPikgLmNvbXByZXNzL2ZsYXRlLnN0b3JlICgpOwogZnVuYyAoZCA8dHlwZSAxMDA+KSAuY29tcHJlc3MvZmxhdGUuc3luY0ZsdXNoICgpIDx0eXBlIC0xOT47CiBmdW5jIChkIDx0eXBlIDEwMD4pIC5jb21wcmVzcy9mbGF0ZS5maWxsRGVmbGF0ZSAoYiA8dHlwZSAxMDIgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xMT47CiBmdW5jIChkIDx0eXBlIDEwMD4pIC5jb21wcmVzcy9mbGF0ZS5yZXNldCAodyA8dHlwZSA0Nz4pOwogZnVuYyAoZCA8dHlwZSAxMDA+KSAuY29tcHJlc3MvZmxhdGUud3JpdGUgKGIgPHR5cGUgMTAzIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChkIDx0eXBlIDEwMD4pIC5jb21wcmVzcy9mbGF0ZS5maWxsU3RvcmUgKGIgPHR5cGUgMTA0IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTE+OwogZnVuYyAoZCA8dHlwZSAxMDA+KSAuY29tcHJlc3MvZmxhdGUuY2xvc2UgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGQgPHR5cGUgMTAwPikgLmNvbXByZXNzL2ZsYXRlLmluaXQgKHcgPHR5cGUgNDc+LCBsZXZlbCA8dHlwZSAtMTE+KSAoZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZCA8dHlwZSAxMDA+KSAuY29tcHJlc3MvZmxhdGUuZmluZE1hdGNoIChwb3MgPHR5cGUgLTExPiwgcHJldkhlYWQgPHR5cGUgLTExPiwgcHJldkxlbmd0aCA8dHlwZSAtMTE+LCBsb29rYWhlYWQgPHR5cGUgLTExPikgKGxlbmd0aCA8dHlwZSAtMTE+LCBvZmZzZXQgPHR5cGUgLTExPiwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jIChkIDx0eXBlIDEwMD4pIC5jb21wcmVzcy9mbGF0ZS5kZWZsYXRlICgpOwogZnVuYyAoZCA8dHlwZSAxMDA+KSAuY29tcHJlc3MvZmxhdGUuaW5pdERlZmxhdGUgKCk7CiBmdW5jIChkIDx0eXBlIDEwMD4pIC5jb21wcmVzcy9mbGF0ZS53cml0ZVN0b3JlZEJsb2NrIChidWYgPHR5cGUgMTA1IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+Owo+OyAuY29tcHJlc3MvZmxhdGUuZGljdCA8dHlwZSAxMDYgW10gPHR5cGUgLTIwPj47IH0+CiBmdW5jICh3IDx0eXBlIDEwNyAqPHR5cGUgNTk+PikgV3JpdGUgKGRhdGEgPHR5cGUgMTA4IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jICh3IDx0eXBlIDEwNz4pIEZsdXNoICgpIDx0eXBlIC0xOT47CiBmdW5jICh3IDx0eXBlIDEwNz4pIENsb3NlICgpIDx0eXBlIC0xOT47CiBmdW5jICh3IDx0eXBlIDEwNz4pIFJlc2V0IChkc3QgPHR5cGUgNDc+KTsKPj47IC5jb21wcmVzcy9nemlwLmRpZ2VzdCA8dHlwZSA0Mz47IC5jb21wcmVzcy9nemlwLnNpemUgPHR5cGUgLTc+OyAuY29tcHJlc3MvZ3ppcC5jbG9zZWQgPHR5cGUgLTE1PjsgLmNvbXByZXNzL2d6aXAuYnVmIDx0eXBlIDEwOSBbMTAgXSA8dHlwZSAtMjA+PjsgLmNvbXByZXNzL2d6aXAuZXJyIDx0eXBlIC0xOT47IH0+CiBmdW5jICh6IDx0eXBlIDExMCAqPHR5cGUgNTY+PikgLmNvbXByZXNzL2d6aXAuaW5pdCAodyA8dHlwZSA0Nz4sIGxldmVsIDx0eXBlIC0xMT4pOwogZnVuYyAoeiA8dHlwZSAxMTA+KSBSZXNldCAodyA8dHlwZSA0Nz4pOwogZnVuYyAoeiA8dHlwZSAxMTA+KSAuY29tcHJlc3MvZ3ppcC53cml0ZUJ5dGVzIChiIDx0eXBlIDExMSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHogPHR5cGUgMTEwPikgLmNvbXByZXNzL2d6aXAud3JpdGVTdHJpbmcgKHMgPHR5cGUgLTE2PikgKGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHogPHR5cGUgMTEwPikgV3JpdGUgKHAgPHR5cGUgMTEyIFtdIDx0eXBlIC0yMD4+KSAoPyA8dHlwZSAtMTE+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoeiA8dHlwZSAxMTA+KSBGbHVzaCAoKSA8dHlwZSAtMTk+OwogZnVuYyAoeiA8dHlwZSAxMTA+KSBDbG9zZSAoKSA8dHlwZSAtMTk+Owo+PjsKZnVuYyBOZXdXcml0ZXJMZXZlbCAodyA8dHlwZSA0Nz4sIGxldmVsIDx0eXBlIC0xMT4pICg/IDx0eXBlIDU1PiwgPyA8dHlwZSAtMTk+KTsKY29uc3QgTm9Db21wcmVzc2lvbiA9IDAgOwp0eXBlIDx0eXBlIDMzPjsKdHlwZSA8dHlwZSA1Nj47CmNoZWNrc3VtIDU1NjMwRkQzMkEwNTI1ODhCOTkzNjZCQkYyNUEyQzE5RjlDOTJGOEI7CgAuc3ltdGFiAC5zdHJ0YWIALnNoc3RydGFiAC5nb19leHBvcnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAAAAAAAAAAAADQAAAC0MAAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAAAAAAAAAAAADoMAAAJgAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAEDEAACAAAAAEAAAAAgAAAAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAADAxAAABAAAAAAAAAAAAAAABAAAAAAAAAA==