f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAAAYZgAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIHRlbXBsYXRlOwpwa2dwYXRoIHRleHQvdGVtcGxhdGU7CnByaW9yaXR5IDg7CmltcG9ydCBieXRlcyBieXRlcyAiYnl0ZXMiOwppbXBvcnQgZXJyb3JzIGVycm9ycyAiZXJyb3JzIjsKaW1wb3J0IGZtdCBmbXQgImZtdCI7CmltcG9ydCBpbyBpbyAiaW8iOwppbXBvcnQgaW91dGlsIGlvL2lvdXRpbCAiaW8vaW91dGlsIjsKaW1wb3J0IHVybCBuZXQvdXJsICJuZXQvdXJsIjsKaW1wb3J0IGZpbGVwYXRoIHBhdGgvZmlsZXBhdGggInBhdGgvZmlsZXBhdGgiOwppbXBvcnQgcmVmbGVjdCByZWZsZWN0ICJyZWZsZWN0IjsKaW1wb3J0IHJ1bnRpbWUgcnVudGltZSAicnVudGltZSI7CmltcG9ydCBzb3J0IHNvcnQgInNvcnQiOwppbXBvcnQgc3RyaW5ncyBzdHJpbmdzICJzdHJpbmdzIjsKaW1wb3J0IHBhcnNlIHRleHQvdGVtcGxhdGUvcGFyc2UgInRleHQvdGVtcGxhdGUvcGFyc2UiOwppbXBvcnQgdW5pY29kZSB1bmljb2RlICJ1bmljb2RlIjsKaW1wb3J0IHV0ZjggdW5pY29kZS91dGY4ICJ1bmljb2RlL3V0ZjgiOwppbml0IHRlbXBsYXRlIHRleHRfdGVtcGxhdGUuLmltcG9ydCA4IG1hdGggbWF0aC4uaW1wb3J0IDEgcnVudGltZSBydW50aW1lLi5pbXBvcnQgMSB1bmljb2RlIHVuaWNvZGUuLmltcG9ydCAxIHN0cmNvbnYgc3RyY29udi4uaW1wb3J0IDIgc3luYyBzeW5jLi5pbXBvcnQgMiBpbyBpby4uaW1wb3J0IDMgcmVmbGVjdCByZWZsZWN0Li5pbXBvcnQgMyBzeXNjYWxsIHN5c2NhbGwuLmltcG9ydCAzIGJ5dGVzIGJ5dGVzLi5pbXBvcnQgNCB0aW1lIHRpbWUuLmltcG9ydCA0IG9zIG9zLi5pbXBvcnQgNSBmaWxlcGF0aCBwYXRoX2ZpbGVwYXRoLi5pbXBvcnQgNiBmbXQgZm10Li5pbXBvcnQgNiBpb3V0aWwgaW9faW91dGlsLi5pbXBvcnQgNyBwYXJzZSB0ZXh0X3RlbXBsYXRlX3BhcnNlLi5pbXBvcnQgNzsKdHlwZSA8dHlwZSAxICJGdW5jTWFwIiA8dHlwZSAyIG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgMyBpbnRlcmZhY2UgeyB9Pj4+OwpmdW5jIEhUTUxFc2NhcGUgKHcgPHR5cGUgNCAiaW8uV3JpdGVyIiA8dHlwZSA1IGludGVyZmFjZSB7IFdyaXRlIChwIDx0eXBlIDYgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+LCBiIDx0eXBlIDcgW10gPHR5cGUgLTIwPj4pOwpmdW5jIEhUTUxFc2NhcGVTdHJpbmcgKHMgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKZnVuYyBIVE1MRXNjYXBlciAoYXJncyAuLi48dHlwZSA4IGludGVyZmFjZSB7IH0+KSA8dHlwZSAtMTY+OwpmdW5jIEpTRXNjYXBlICh3IDx0eXBlIDQ+LCBiIDx0eXBlIDkgW10gPHR5cGUgLTIwPj4pOwpmdW5jIEpTRXNjYXBlU3RyaW5nIChzIDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CmZ1bmMgSlNFc2NhcGVyIChhcmdzIC4uLjx0eXBlIDEwIGludGVyZmFjZSB7IH0+KSA8dHlwZSAtMTY+OwpmdW5jIE11c3QgKHQgPHR5cGUgMTEgKjx0eXBlIDEyICJUZW1wbGF0ZSIgPHR5cGUgMTMgc3RydWN0IHsgLnRleHQvdGVtcGxhdGUubmFtZSA8dHlwZSAtMTY+OyA/IDx0eXBlIDE0ICo8dHlwZSAxNSAidGV4dC90ZW1wbGF0ZS9wYXJzZS5UcmVlIiA8dHlwZSAxNiBzdHJ1Y3QgeyBOYW1lIDx0eXBlIC0xNj47IFBhcnNlTmFtZSA8dHlwZSAtMTY+OyBSb290IDx0eXBlIDE3ICo8dHlwZSAxOCAidGV4dC90ZW1wbGF0ZS9wYXJzZS5MaXN0Tm9kZSIgPHR5cGUgMTkgc3RydWN0IHsgPyA8dHlwZSAyMCAidGV4dC90ZW1wbGF0ZS9wYXJzZS5Ob2RlVHlwZSIgPHR5cGUgLTExPgogZnVuYyAodCA8dHlwZSAyMD4pIFR5cGUgKCkgPHR5cGUgMjA+Owo+OyA/IDx0eXBlIDIxICJ0ZXh0L3RlbXBsYXRlL3BhcnNlLlBvcyIgPHR5cGUgLTExPgogZnVuYyAocCA8dHlwZSAyMT4pIFBvc2l0aW9uICgpIDx0eXBlIDIxPjsKPjsgLnRleHQvdGVtcGxhdGUvcGFyc2UudHIgPHR5cGUgMjIgKjx0eXBlIDE1Pj47IE5vZGVzIDx0eXBlIDIzIFtdIDx0eXBlIDI0ICJ0ZXh0L3RlbXBsYXRlL3BhcnNlLk5vZGUiIDx0eXBlIDI1IGludGVyZmFjZSB7IFR5cGUgKCkgPHR5cGUgMjA+OyBTdHJpbmcgKCkgPHR5cGUgLTE2PjsgQ29weSAoKSA8dHlwZSAyND47IFBvc2l0aW9uICgpIDx0eXBlIDIxPjsgLnRleHQvdGVtcGxhdGUvcGFyc2UudHJlZSAoKSA8dHlwZSAyMj47IH0+Pj47IH0+CiBmdW5jIChsIDx0eXBlIDI2ICo8dHlwZSAxOD4+KSBDb3B5TGlzdCAoKSA8dHlwZSAyNj47CiBmdW5jIChsIDx0eXBlIDI2PikgLnRleHQvdGVtcGxhdGUvcGFyc2UuYXBwZW5kIChuIDx0eXBlIDI0Pik7CiBmdW5jIChsIDx0eXBlIDI2PikgQ29weSAoKSA8dHlwZSAyND47CiBmdW5jIChsIDx0eXBlIDI2PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChsIDx0eXBlIDI2PikgLnRleHQvdGVtcGxhdGUvcGFyc2UudHJlZSAoKSA8dHlwZSAyMj47Cj4+OyAudGV4dC90ZW1wbGF0ZS9wYXJzZS50ZXh0IDx0eXBlIC0xNj47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLmZ1bmNzIDx0eXBlIDI3IFtdIDx0eXBlIDI4IG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgMjkgaW50ZXJmYWNlIHsgfT4+PjsgLnRleHQvdGVtcGxhdGUvcGFyc2UubGV4IDx0eXBlIDMwICo8dHlwZSAzMSAiLnRleHQvdGVtcGxhdGUvcGFyc2UubGV4ZXIiIDx0eXBlIDMyIHN0cnVjdCB7IC50ZXh0L3RlbXBsYXRlL3BhcnNlLm5hbWUgPHR5cGUgLTE2PjsgLnRleHQvdGVtcGxhdGUvcGFyc2UuaW5wdXQgPHR5cGUgLTE2PjsgLnRleHQvdGVtcGxhdGUvcGFyc2UubGVmdERlbGltIDx0eXBlIC0xNj47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLnJpZ2h0RGVsaW0gPHR5cGUgLTE2PjsgLnRleHQvdGVtcGxhdGUvcGFyc2Uuc3RhdGUgPHR5cGUgMzMgIi50ZXh0L3RlbXBsYXRlL3BhcnNlLnN0YXRlRm4iIDx0eXBlIDM0ICg/IDx0eXBlIDM1ICo8dHlwZSAzMT4+KSA8dHlwZSAzMz4+PjsgLnRleHQvdGVtcGxhdGUvcGFyc2UucG9zIDx0eXBlIDIxPjsgLnRleHQvdGVtcGxhdGUvcGFyc2Uuc3RhcnQgPHR5cGUgMjE+OyAudGV4dC90ZW1wbGF0ZS9wYXJzZS53aWR0aCA8dHlwZSAyMT47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLmxhc3RQb3MgPHR5cGUgMjE+OyAudGV4dC90ZW1wbGF0ZS9wYXJzZS5pdGVtcyA8dHlwZSAzNiBjaGFuIDx0eXBlIDM3ICIudGV4dC90ZW1wbGF0ZS9wYXJzZS5pdGVtIiA8dHlwZSAzOCBzdHJ1Y3QgeyAudGV4dC90ZW1wbGF0ZS9wYXJzZS50eXAgPHR5cGUgMzkgIi50ZXh0L3RlbXBsYXRlL3BhcnNlLml0ZW1UeXBlIiA8dHlwZSAtMTE+PjsgLnRleHQvdGVtcGxhdGUvcGFyc2UucG9zIDx0eXBlIDIxPjsgLnRleHQvdGVtcGxhdGUvcGFyc2UudmFsIDx0eXBlIC0xNj47IH0+CiBmdW5jIChpIDx0eXBlIDM3PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj4+OyAudGV4dC90ZW1wbGF0ZS9wYXJzZS5wYXJlbkRlcHRoIDx0eXBlIC0xMT47IH0+CiBmdW5jIChsIDx0eXBlIDQwICo8dHlwZSAzMT4+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5ydW4gKCk7CiBmdW5jIChsIDx0eXBlIDQwPikgLnRleHQvdGVtcGxhdGUvcGFyc2UuYXRUZXJtaW5hdG9yICgpIDx0eXBlIC0xNT47CiBmdW5jIChsIDx0eXBlIDQwPikgLnRleHQvdGVtcGxhdGUvcGFyc2UuZW1pdCAodCA8dHlwZSAzOT4pOwogZnVuYyAobCA8dHlwZSA0MD4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLnNjYW5OdW1iZXIgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGwgPHR5cGUgNDA+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5pZ25vcmUgKCk7CiBmdW5jIChsIDx0eXBlIDQwPikgLnRleHQvdGVtcGxhdGUvcGFyc2UuZXJyb3JmIChmb3JtYXQgPHR5cGUgLTE2PiwgYXJncyAuLi48dHlwZSA0MSBpbnRlcmZhY2UgeyB9PikgPHR5cGUgMzM+OwogZnVuYyAobCA8dHlwZSA0MD4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLmJhY2t1cCAoKTsKIGZ1bmMgKGwgPHR5cGUgNDA+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5saW5lTnVtYmVyICgpIDx0eXBlIC0xMT47CiBmdW5jIChsIDx0eXBlIDQwPikgLnRleHQvdGVtcGxhdGUvcGFyc2UucGVlayAoKSA8dHlwZSAtMjE+OwogZnVuYyAobCA8dHlwZSA0MD4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLm5leHQgKCkgPHR5cGUgLTIxPjsKIGZ1bmMgKGwgPHR5cGUgNDA+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5uZXh0SXRlbSAoKSA8dHlwZSAzNz47CiBmdW5jIChsIDx0eXBlIDQwPikgLnRleHQvdGVtcGxhdGUvcGFyc2UuYWNjZXB0ICh2YWxpZCA8dHlwZSAtMTY+KSA8dHlwZSAtMTU+OwogZnVuYyAobCA8dHlwZSA0MD4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLmFjY2VwdFJ1biAodmFsaWQgPHR5cGUgLTE2Pik7Cj4+OyAudGV4dC90ZW1wbGF0ZS9wYXJzZS50b2tlbiA8dHlwZSA0MiBbMyBdIDx0eXBlIDM3Pj47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLnBlZWtDb3VudCA8dHlwZSAtMTE+OyAudGV4dC90ZW1wbGF0ZS9wYXJzZS52YXJzIDx0eXBlIDQzIFtdIDx0eXBlIC0xNj4+OyB9PgogZnVuYyAodCA8dHlwZSA0NCAqPHR5cGUgMTU+PikgLnRleHQvdGVtcGxhdGUvcGFyc2UubmV3U3RyaW5nIChwb3MgPHR5cGUgMjE+LCBvcmlnIDx0eXBlIC0xNj4sIHRleHQgPHR5cGUgLTE2PikgPHR5cGUgNDUgKjx0eXBlIDQ2ICJ0ZXh0L3RlbXBsYXRlL3BhcnNlLlN0cmluZ05vZGUiIDx0eXBlIDQ3IHN0cnVjdCB7ID8gPHR5cGUgMjA+OyA/IDx0eXBlIDIxPjsgLnRleHQvdGVtcGxhdGUvcGFyc2UudHIgPHR5cGUgNDQ+OyBRdW90ZWQgPHR5cGUgLTE2PjsgVGV4dCA8dHlwZSAtMTY+OyB9PgogZnVuYyAocyA8dHlwZSA0OCAqPHR5cGUgNDY+PikgQ29weSAoKSA8dHlwZSAyND47CiBmdW5jIChzIDx0eXBlIDQ4PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChzIDx0eXBlIDQ4PikgLnRleHQvdGVtcGxhdGUvcGFyc2UudHJlZSAoKSA8dHlwZSA0ND47Cj4+OwogZnVuYyAodCA8dHlwZSA0ND4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLmNvbW1hbmQgKCkgPHR5cGUgNDkgKjx0eXBlIDUwICJ0ZXh0L3RlbXBsYXRlL3BhcnNlLkNvbW1hbmROb2RlIiA8dHlwZSA1MSBzdHJ1Y3QgeyA/IDx0eXBlIDIwPjsgPyA8dHlwZSAyMT47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRyIDx0eXBlIDQ0PjsgQXJncyA8dHlwZSA1MiBbXSA8dHlwZSAyND4+OyB9PgogZnVuYyAoYyA8dHlwZSA1MyAqPHR5cGUgNTA+PikgLnRleHQvdGVtcGxhdGUvcGFyc2UuYXBwZW5kIChhcmcgPHR5cGUgMjQ+KTsKIGZ1bmMgKGMgPHR5cGUgNTM+KSBDb3B5ICgpIDx0eXBlIDI0PjsKIGZ1bmMgKGMgPHR5cGUgNTM+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGMgPHR5cGUgNTM+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS50cmVlICgpIDx0eXBlIDQ0PjsKPj47CiBmdW5jICh0IDx0eXBlIDQ0PikgLnRleHQvdGVtcGxhdGUvcGFyc2UudGVtcGxhdGVDb250cm9sICgpIDx0eXBlIDI0PjsKIGZ1bmMgKHQgPHR5cGUgNDQ+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5hY3Rpb24gKCkgKG4gPHR5cGUgMjQ+KTsKIGZ1bmMgKHQgPHR5cGUgNDQ+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5wZWVrICgpIDx0eXBlIDM3PjsKIGZ1bmMgKHQgPHR5cGUgNDQ+KSBQYXJzZSAodGV4dCA8dHlwZSAtMTY+LCBsZWZ0RGVsaW0gPHR5cGUgLTE2PiwgcmlnaHREZWxpbSA8dHlwZSAtMTY+LCB0cmVlU2V0IDx0eXBlIDU0IG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgNDQ+PiwgZnVuY3MgLi4uPHR5cGUgNTUgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSA1NiBpbnRlcmZhY2UgeyB9Pj4pICh0cmVlIDx0eXBlIDQ0PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSA0ND4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLmJhY2t1cDMgKHQyIDx0eXBlIDM3PiwgdDEgPHR5cGUgMzc+KTsKIGZ1bmMgKHQgPHR5cGUgNDQ+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5zdGFydFBhcnNlIChmdW5jcyA8dHlwZSA1NyBbXSA8dHlwZSA1OCBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDU5IGludGVyZmFjZSB7IH0+Pj4sIGxleCA8dHlwZSAzMD4pOwogZnVuYyAodCA8dHlwZSA0ND4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLm5ld0RvdCAocG9zIDx0eXBlIDIxPikgPHR5cGUgNjAgKjx0eXBlIDYxICJ0ZXh0L3RlbXBsYXRlL3BhcnNlLkRvdE5vZGUiIDx0eXBlIDYyIHN0cnVjdCB7ID8gPHR5cGUgMjA+OyA/IDx0eXBlIDIxPjsgLnRleHQvdGVtcGxhdGUvcGFyc2UudHIgPHR5cGUgNDQ+OyB9PgogZnVuYyAoZCA8dHlwZSA2MyAqPHR5cGUgNjE+PikgQ29weSAoKSA8dHlwZSAyND47CiBmdW5jIChkIDx0eXBlIDYzPikgVHlwZSAoKSA8dHlwZSAyMD47CiBmdW5jIChkIDx0eXBlIDYzPikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChkIDx0eXBlIDYzPikgLnRleHQvdGVtcGxhdGUvcGFyc2UudHJlZSAoKSA8dHlwZSA0ND47Cj4+OwogZnVuYyAodCA8dHlwZSA0ND4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLmVycm9yIChlcnIgPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDQ0PikgLnRleHQvdGVtcGxhdGUvcGFyc2UubmV4dE5vblNwYWNlICgpICh0b2tlbiA8dHlwZSAzNz4pOwogZnVuYyAodCA8dHlwZSA0ND4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLm5leHQgKCkgPHR5cGUgMzc+OwogZnVuYyAodCA8dHlwZSA0ND4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLmJhY2t1cCAoKTsKIGZ1bmMgKHQgPHR5cGUgNDQ+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5oYXNGdW5jdGlvbiAobmFtZSA8dHlwZSAtMTY+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSA0ND4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLm5ld1RlbXBsYXRlIChwb3MgPHR5cGUgMjE+LCBsaW5lIDx0eXBlIC0xMT4sIG5hbWUgPHR5cGUgLTE2PiwgcGlwZSA8dHlwZSA2NCAqPHR5cGUgNjUgInRleHQvdGVtcGxhdGUvcGFyc2UuUGlwZU5vZGUiIDx0eXBlIDY2IHN0cnVjdCB7ID8gPHR5cGUgMjA+OyA/IDx0eXBlIDIxPjsgLnRleHQvdGVtcGxhdGUvcGFyc2UudHIgPHR5cGUgNDQ+OyBMaW5lIDx0eXBlIC0xMT47IERlY2wgPHR5cGUgNjcgW10gPHR5cGUgNjggKjx0eXBlIDY5ICJ0ZXh0L3RlbXBsYXRlL3BhcnNlLlZhcmlhYmxlTm9kZSIgPHR5cGUgNzAgc3RydWN0IHsgPyA8dHlwZSAyMD47ID8gPHR5cGUgMjE+OyAudGV4dC90ZW1wbGF0ZS9wYXJzZS50ciA8dHlwZSA0ND47IElkZW50IDx0eXBlIDcxIFtdIDx0eXBlIC0xNj4+OyB9PgogZnVuYyAodiA8dHlwZSA3MiAqPHR5cGUgNjk+PikgQ29weSAoKSA8dHlwZSAyND47CiBmdW5jICh2IDx0eXBlIDcyPikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh2IDx0eXBlIDcyPikgLnRleHQvdGVtcGxhdGUvcGFyc2UudHJlZSAoKSA8dHlwZSA0ND47Cj4+PjsgQ21kcyA8dHlwZSA3MyBbXSA8dHlwZSA0OT4+OyB9PgogZnVuYyAocCA8dHlwZSA3NCAqPHR5cGUgNjU+PikgLnRleHQvdGVtcGxhdGUvcGFyc2UuYXBwZW5kIChjb21tYW5kIDx0eXBlIDQ5Pik7CiBmdW5jIChwIDx0eXBlIDc0PikgQ29weSAoKSA8dHlwZSAyND47CiBmdW5jIChwIDx0eXBlIDc0PikgQ29weVBpcGUgKCkgPHR5cGUgNzQ+OwogZnVuYyAocCA8dHlwZSA3ND4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAocCA8dHlwZSA3ND4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRyZWUgKCkgPHR5cGUgNDQ+Owo+PikgPHR5cGUgNzUgKjx0eXBlIDc2ICJ0ZXh0L3RlbXBsYXRlL3BhcnNlLlRlbXBsYXRlTm9kZSIgPHR5cGUgNzcgc3RydWN0IHsgPyA8dHlwZSAyMD47ID8gPHR5cGUgMjE+OyAudGV4dC90ZW1wbGF0ZS9wYXJzZS50ciA8dHlwZSA0ND47IExpbmUgPHR5cGUgLTExPjsgTmFtZSA8dHlwZSAtMTY+OyBQaXBlIDx0eXBlIDY0PjsgfT4KIGZ1bmMgKHQgPHR5cGUgNzggKjx0eXBlIDc2Pj4pIENvcHkgKCkgPHR5cGUgMjQ+OwogZnVuYyAodCA8dHlwZSA3OD4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSA3OD4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRyZWUgKCkgPHR5cGUgNDQ+Owo+PjsKIGZ1bmMgKHQgPHR5cGUgNDQ+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5uZXdGaWVsZCAocG9zIDx0eXBlIDIxPiwgaWRlbnQgPHR5cGUgLTE2PikgPHR5cGUgNzkgKjx0eXBlIDgwICJ0ZXh0L3RlbXBsYXRlL3BhcnNlLkZpZWxkTm9kZSIgPHR5cGUgODEgc3RydWN0IHsgPyA8dHlwZSAyMD47ID8gPHR5cGUgMjE+OyAudGV4dC90ZW1wbGF0ZS9wYXJzZS50ciA8dHlwZSA0ND47IElkZW50IDx0eXBlIDgyIFtdIDx0eXBlIC0xNj4+OyB9PgogZnVuYyAoZiA8dHlwZSA4MyAqPHR5cGUgODA+PikgQ29weSAoKSA8dHlwZSAyND47CiBmdW5jIChmIDx0eXBlIDgzPikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChmIDx0eXBlIDgzPikgLnRleHQvdGVtcGxhdGUvcGFyc2UudHJlZSAoKSA8dHlwZSA0ND47Cj4+OwogZnVuYyAodCA8dHlwZSA0ND4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLmVuZENvbnRyb2wgKCkgPHR5cGUgMjQ+OwogZnVuYyAodCA8dHlwZSA0ND4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLmVsc2VDb250cm9sICgpIDx0eXBlIDI0PjsKIGZ1bmMgKHQgPHR5cGUgNDQ+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5wYXJzZURlZmluaXRpb24gKHRyZWVTZXQgPHR5cGUgODQgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSA0ND4+KTsKIGZ1bmMgKHQgPHR5cGUgNDQ+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5waXBlbGluZSAoY29udGV4dCA8dHlwZSAtMTY+KSAocGlwZSA8dHlwZSA2ND4pOwogZnVuYyAodCA8dHlwZSA0ND4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLmV4cGVjdE9uZU9mIChleHBlY3RlZDEgPHR5cGUgMzk+LCBleHBlY3RlZDIgPHR5cGUgMzk+LCBjb250ZXh0IDx0eXBlIC0xNj4pIDx0eXBlIDM3PjsKIGZ1bmMgKHQgPHR5cGUgNDQ+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS51c2VWYXIgKHBvcyA8dHlwZSAyMT4sIG5hbWUgPHR5cGUgLTE2PikgPHR5cGUgMjQ+OwogZnVuYyAodCA8dHlwZSA0ND4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLmFkZCAodHJlZVNldCA8dHlwZSA4NSBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDQ0Pj4pOwogZnVuYyAodCA8dHlwZSA0ND4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLnBlZWtOb25TcGFjZSAoKSAodG9rZW4gPHR5cGUgMzc+KTsKIGZ1bmMgKHQgPHR5cGUgNDQ+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5uZXdQaXBlbGluZSAocG9zIDx0eXBlIDIxPiwgbGluZSA8dHlwZSAtMTE+LCBkZWNsIDx0eXBlIDg2IFtdIDx0eXBlIDY4Pj4pIDx0eXBlIDY0PjsKIGZ1bmMgKHQgPHR5cGUgNDQ+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS51bmV4cGVjdGVkICh0b2tlbiA8dHlwZSAzNz4sIGNvbnRleHQgPHR5cGUgLTE2Pik7CiBmdW5jICh0IDx0eXBlIDQ0PikgLnRleHQvdGVtcGxhdGUvcGFyc2UuaXRlbUxpc3QgKCkgKGxpc3QgPHR5cGUgMTc+LCBuZXh0IDx0eXBlIDI0Pik7CiBmdW5jICh0IDx0eXBlIDQ0PikgLnRleHQvdGVtcGxhdGUvcGFyc2UubmV3UmFuZ2UgKHBvcyA8dHlwZSAyMT4sIGxpbmUgPHR5cGUgLTExPiwgcGlwZSA8dHlwZSA2ND4sIGxpc3QgPHR5cGUgMTc+LCBlbHNlTGlzdCA8dHlwZSAxNz4pIDx0eXBlIDg3ICo8dHlwZSA4OCAidGV4dC90ZW1wbGF0ZS9wYXJzZS5SYW5nZU5vZGUiIDx0eXBlIDg5IHN0cnVjdCB7ID8gPHR5cGUgOTAgInRleHQvdGVtcGxhdGUvcGFyc2UuQnJhbmNoTm9kZSIgPHR5cGUgOTEgc3RydWN0IHsgPyA8dHlwZSAyMD47ID8gPHR5cGUgMjE+OyAudGV4dC90ZW1wbGF0ZS9wYXJzZS50ciA8dHlwZSA0ND47IExpbmUgPHR5cGUgLTExPjsgUGlwZSA8dHlwZSA2ND47IExpc3QgPHR5cGUgMTc+OyBFbHNlTGlzdCA8dHlwZSAxNz47IH0+CiBmdW5jIChiIDx0eXBlIDkyICo8dHlwZSA5MD4+KSBDb3B5ICgpIDx0eXBlIDI0PjsKIGZ1bmMgKGIgPHR5cGUgOTI+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGIgPHR5cGUgOTI+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS50cmVlICgpIDx0eXBlIDQ0PjsKPjsgfT4KIGZ1bmMgKHIgPHR5cGUgOTMgKjx0eXBlIDg4Pj4pIENvcHkgKCkgPHR5cGUgMjQ+Owo+PjsKIGZ1bmMgKHQgPHR5cGUgNDQ+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5uZXdXaXRoIChwb3MgPHR5cGUgMjE+LCBsaW5lIDx0eXBlIC0xMT4sIHBpcGUgPHR5cGUgNjQ+LCBsaXN0IDx0eXBlIDE3PiwgZWxzZUxpc3QgPHR5cGUgMTc+KSA8dHlwZSA5NCAqPHR5cGUgOTUgInRleHQvdGVtcGxhdGUvcGFyc2UuV2l0aE5vZGUiIDx0eXBlIDk2IHN0cnVjdCB7ID8gPHR5cGUgOTA+OyB9PgogZnVuYyAodyA8dHlwZSA5NyAqPHR5cGUgOTU+PikgQ29weSAoKSA8dHlwZSAyND47Cj4+OwogZnVuYyAodCA8dHlwZSA0ND4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLm5ld051bWJlciAocG9zIDx0eXBlIDIxPiwgdGV4dCA8dHlwZSAtMTY+LCB0eXAgPHR5cGUgMzk+KSAoPyA8dHlwZSA5OCAqPHR5cGUgOTkgInRleHQvdGVtcGxhdGUvcGFyc2UuTnVtYmVyTm9kZSIgPHR5cGUgMTAwIHN0cnVjdCB7ID8gPHR5cGUgMjA+OyA/IDx0eXBlIDIxPjsgLnRleHQvdGVtcGxhdGUvcGFyc2UudHIgPHR5cGUgNDQ+OyBJc0ludCA8dHlwZSAtMTU+OyBJc1VpbnQgPHR5cGUgLTE1PjsgSXNGbG9hdCA8dHlwZSAtMTU+OyBJc0NvbXBsZXggPHR5cGUgLTE1PjsgSW50NjQgPHR5cGUgLTQ+OyBVaW50NjQgPHR5cGUgLTg+OyBGbG9hdDY0IDx0eXBlIC0xMD47IENvbXBsZXgxMjggPHR5cGUgLTE4PjsgVGV4dCA8dHlwZSAtMTY+OyB9PgogZnVuYyAobiA8dHlwZSAxMDEgKjx0eXBlIDk5Pj4pIENvcHkgKCkgPHR5cGUgMjQ+OwogZnVuYyAobiA8dHlwZSAxMDE+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5zaW1wbGlmeUNvbXBsZXggKCk7CiBmdW5jIChuIDx0eXBlIDEwMT4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAobiA8dHlwZSAxMDE+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS50cmVlICgpIDx0eXBlIDQ0PjsKPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDQ0PikgLnRleHQvdGVtcGxhdGUvcGFyc2UubmV3Q29tbWFuZCAocG9zIDx0eXBlIDIxPikgPHR5cGUgNDk+OwogZnVuYyAodCA8dHlwZSA0ND4pIENvcHkgKCkgPHR5cGUgNDQ+OwogZnVuYyAodCA8dHlwZSA0ND4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLm5ld0FjdGlvbiAocG9zIDx0eXBlIDIxPiwgbGluZSA8dHlwZSAtMTE+LCBwaXBlIDx0eXBlIDY0PikgPHR5cGUgMTAyICo8dHlwZSAxMDMgInRleHQvdGVtcGxhdGUvcGFyc2UuQWN0aW9uTm9kZSIgPHR5cGUgMTA0IHN0cnVjdCB7ID8gPHR5cGUgMjA+OyA/IDx0eXBlIDIxPjsgLnRleHQvdGVtcGxhdGUvcGFyc2UudHIgPHR5cGUgNDQ+OyBMaW5lIDx0eXBlIC0xMT47IFBpcGUgPHR5cGUgNjQ+OyB9PgogZnVuYyAoYSA8dHlwZSAxMDUgKjx0eXBlIDEwMz4+KSBDb3B5ICgpIDx0eXBlIDI0PjsKIGZ1bmMgKGEgPHR5cGUgMTA1PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChhIDx0eXBlIDEwNT4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRyZWUgKCkgPHR5cGUgNDQ+Owo+PjsKIGZ1bmMgKHQgPHR5cGUgNDQ+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5uZXdUZXh0IChwb3MgPHR5cGUgMjE+LCB0ZXh0IDx0eXBlIC0xNj4pIDx0eXBlIDEwNiAqPHR5cGUgMTA3ICJ0ZXh0L3RlbXBsYXRlL3BhcnNlLlRleHROb2RlIiA8dHlwZSAxMDggc3RydWN0IHsgPyA8dHlwZSAyMD47ID8gPHR5cGUgMjE+OyAudGV4dC90ZW1wbGF0ZS9wYXJzZS50ciA8dHlwZSA0ND47IFRleHQgPHR5cGUgMTA5IFtdIDx0eXBlIC0yMD4+OyB9PgogZnVuYyAodCA8dHlwZSAxMTAgKjx0eXBlIDEwNz4+KSBDb3B5ICgpIDx0eXBlIDI0PjsKIGZ1bmMgKHQgPHR5cGUgMTEwPikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDExMD4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRyZWUgKCkgPHR5cGUgNDQ+Owo+PjsKIGZ1bmMgKHQgPHR5cGUgNDQ+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5uZXdCb29sIChwb3MgPHR5cGUgMjE+LCB0cnVlIDx0eXBlIC0xNT4pIDx0eXBlIDExMSAqPHR5cGUgMTEyICJ0ZXh0L3RlbXBsYXRlL3BhcnNlLkJvb2xOb2RlIiA8dHlwZSAxMTMgc3RydWN0IHsgPyA8dHlwZSAyMD47ID8gPHR5cGUgMjE+OyAudGV4dC90ZW1wbGF0ZS9wYXJzZS50ciA8dHlwZSA0ND47IFRydWUgPHR5cGUgLTE1PjsgfT4KIGZ1bmMgKGIgPHR5cGUgMTE0ICo8dHlwZSAxMTI+PikgQ29weSAoKSA8dHlwZSAyND47CiBmdW5jIChiIDx0eXBlIDExND4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoYiA8dHlwZSAxMTQ+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS50cmVlICgpIDx0eXBlIDQ0PjsKPj47CiBmdW5jICh0IDx0eXBlIDQ0PikgLnRleHQvdGVtcGxhdGUvcGFyc2Uud2l0aENvbnRyb2wgKCkgPHR5cGUgMjQ+OwogZnVuYyAodCA8dHlwZSA0ND4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLmlmQ29udHJvbCAoKSA8dHlwZSAyND47CiBmdW5jICh0IDx0eXBlIDQ0PikgLnRleHQvdGVtcGxhdGUvcGFyc2UucmFuZ2VDb250cm9sICgpIDx0eXBlIDI0PjsKIGZ1bmMgKHQgPHR5cGUgNDQ+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS50ZXJtICgpIDx0eXBlIDI0PjsKIGZ1bmMgKHQgPHR5cGUgNDQ+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5uZXdOaWwgKHBvcyA8dHlwZSAyMT4pIDx0eXBlIDExNSAqPHR5cGUgMTE2ICJ0ZXh0L3RlbXBsYXRlL3BhcnNlLk5pbE5vZGUiIDx0eXBlIDExNyBzdHJ1Y3QgeyA/IDx0eXBlIDIwPjsgPyA8dHlwZSAyMT47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRyIDx0eXBlIDQ0PjsgfT4KIGZ1bmMgKG4gPHR5cGUgMTE4ICo8dHlwZSAxMTY+PikgQ29weSAoKSA8dHlwZSAyND47CiBmdW5jIChuIDx0eXBlIDExOD4pIFR5cGUgKCkgPHR5cGUgMjA+OwogZnVuYyAobiA8dHlwZSAxMTg+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKG4gPHR5cGUgMTE4PikgLnRleHQvdGVtcGxhdGUvcGFyc2UudHJlZSAoKSA8dHlwZSA0ND47Cj4+OwogZnVuYyAodCA8dHlwZSA0ND4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLm5ld0VuZCAocG9zIDx0eXBlIDIxPikgPHR5cGUgMTE5ICo8dHlwZSAxMjAgIi50ZXh0L3RlbXBsYXRlL3BhcnNlLmVuZE5vZGUiIDx0eXBlIDEyMSBzdHJ1Y3QgeyA/IDx0eXBlIDIwPjsgPyA8dHlwZSAyMT47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRyIDx0eXBlIDQ0PjsgfT4KIGZ1bmMgKGUgPHR5cGUgMTIyICo8dHlwZSAxMjA+PikgQ29weSAoKSA8dHlwZSAyND47CiBmdW5jIChlIDx0eXBlIDEyMj4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoZSA8dHlwZSAxMjI+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS50cmVlICgpIDx0eXBlIDQ0PjsKPj47CiBmdW5jICh0IDx0eXBlIDQ0PikgLnRleHQvdGVtcGxhdGUvcGFyc2UucGFyc2VDb250cm9sIChhbGxvd0Vsc2VJZiA8dHlwZSAtMTU+LCBjb250ZXh0IDx0eXBlIC0xNj4pIChwb3MgPHR5cGUgMjE+LCBsaW5lIDx0eXBlIC0xMT4sIHBpcGUgPHR5cGUgNjQ+LCBsaXN0IDx0eXBlIDE3PiwgZWxzZUxpc3QgPHR5cGUgMTc+KTsKIGZ1bmMgKHQgPHR5cGUgNDQ+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5vcGVyYW5kICgpIDx0eXBlIDI0PjsKIGZ1bmMgKHQgPHR5cGUgNDQ+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5lcnJvcmYgKGZvcm1hdCA8dHlwZSAtMTY+LCBhcmdzIC4uLjx0eXBlIDEyMyBpbnRlcmZhY2UgeyB9Pik7CiBmdW5jICh0IDx0eXBlIDQ0PikgLnRleHQvdGVtcGxhdGUvcGFyc2UucmVjb3ZlciAoZXJycCA8dHlwZSAxMjQgKjx0eXBlIC0xOT4+KTsKIGZ1bmMgKHQgPHR5cGUgNDQ+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5uZXdMaXN0IChwb3MgPHR5cGUgMjE+KSA8dHlwZSAxNz47CiBmdW5jICh0IDx0eXBlIDQ0PikgLnRleHQvdGVtcGxhdGUvcGFyc2UubmV3RWxzZSAocG9zIDx0eXBlIDIxPiwgbGluZSA8dHlwZSAtMTE+KSA8dHlwZSAxMjUgKjx0eXBlIDEyNiAiLnRleHQvdGVtcGxhdGUvcGFyc2UuZWxzZU5vZGUiIDx0eXBlIDEyNyBzdHJ1Y3QgeyA/IDx0eXBlIDIwPjsgPyA8dHlwZSAyMT47IC50ZXh0L3RlbXBsYXRlL3BhcnNlLnRyIDx0eXBlIDQ0PjsgTGluZSA8dHlwZSAtMTE+OyB9PgogZnVuYyAoZSA8dHlwZSAxMjggKjx0eXBlIDEyNj4+KSBDb3B5ICgpIDx0eXBlIDI0PjsKIGZ1bmMgKGUgPHR5cGUgMTI4PikgVHlwZSAoKSA8dHlwZSAyMD47CiBmdW5jIChlIDx0eXBlIDEyOD4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoZSA8dHlwZSAxMjg+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS50cmVlICgpIDx0eXBlIDQ0PjsKPj47CiBmdW5jICh0IDx0eXBlIDQ0PikgLnRleHQvdGVtcGxhdGUvcGFyc2UubmV3SWYgKHBvcyA8dHlwZSAyMT4sIGxpbmUgPHR5cGUgLTExPiwgcGlwZSA8dHlwZSA2ND4sIGxpc3QgPHR5cGUgMTc+LCBlbHNlTGlzdCA8dHlwZSAxNz4pIDx0eXBlIDEyOSAqPHR5cGUgMTMwICJ0ZXh0L3RlbXBsYXRlL3BhcnNlLklmTm9kZSIgPHR5cGUgMTMxIHN0cnVjdCB7ID8gPHR5cGUgOTA+OyB9PgogZnVuYyAoaSA8dHlwZSAxMzIgKjx0eXBlIDEzMD4+KSBDb3B5ICgpIDx0eXBlIDI0PjsKPj47CiBmdW5jICh0IDx0eXBlIDQ0PikgLnRleHQvdGVtcGxhdGUvcGFyc2UuZXhwZWN0IChleHBlY3RlZCA8dHlwZSAzOT4sIGNvbnRleHQgPHR5cGUgLTE2PikgPHR5cGUgMzc+OwogZnVuYyAodCA8dHlwZSA0ND4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLnN0b3BQYXJzZSAoKTsKIGZ1bmMgKHQgPHR5cGUgNDQ+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5wYXJzZSAodHJlZVNldCA8dHlwZSAxMzMgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSA0ND4+KSAobmV4dCA8dHlwZSAyND4pOwogZnVuYyAodCA8dHlwZSA0ND4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLmJhY2t1cDIgKHQxIDx0eXBlIDM3Pik7CiBmdW5jICh0IDx0eXBlIDQ0PikgLnRleHQvdGVtcGxhdGUvcGFyc2UudGV4dE9yQWN0aW9uICgpIDx0eXBlIDI0PjsKIGZ1bmMgKHQgPHR5cGUgNDQ+KSAudGV4dC90ZW1wbGF0ZS9wYXJzZS5wb3BWYXJzIChuIDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSA0ND4pIEVycm9yQ29udGV4dCAobiA8dHlwZSAyND4pIChsb2NhdGlvbiA8dHlwZSAtMTY+LCBjb250ZXh0IDx0eXBlIC0xNj4pOwogZnVuYyAodCA8dHlwZSA0ND4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLm5ld0NoYWluIChwb3MgPHR5cGUgMjE+LCBub2RlIDx0eXBlIDI0PikgPHR5cGUgMTM0ICo8dHlwZSAxMzUgInRleHQvdGVtcGxhdGUvcGFyc2UuQ2hhaW5Ob2RlIiA8dHlwZSAxMzYgc3RydWN0IHsgPyA8dHlwZSAyMD47ID8gPHR5cGUgMjE+OyAudGV4dC90ZW1wbGF0ZS9wYXJzZS50ciA8dHlwZSA0ND47IE5vZGUgPHR5cGUgMjQ+OyBGaWVsZCA8dHlwZSAxMzcgW10gPHR5cGUgLTE2Pj47IH0+CiBmdW5jIChjIDx0eXBlIDEzOCAqPHR5cGUgMTM1Pj4pIENvcHkgKCkgPHR5cGUgMjQ+OwogZnVuYyAoYyA8dHlwZSAxMzg+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGMgPHR5cGUgMTM4PikgQWRkIChmaWVsZCA8dHlwZSAtMTY+KTsKIGZ1bmMgKGMgPHR5cGUgMTM4PikgLnRleHQvdGVtcGxhdGUvcGFyc2UudHJlZSAoKSA8dHlwZSA0ND47Cj4+OwogZnVuYyAodCA8dHlwZSA0ND4pIC50ZXh0L3RlbXBsYXRlL3BhcnNlLm5ld1ZhcmlhYmxlIChwb3MgPHR5cGUgMjE+LCBpZGVudCA8dHlwZSAtMTY+KSA8dHlwZSA2OD47Cj4+OyA/IDx0eXBlIDEzOSAqPHR5cGUgMTQwICIudGV4dC90ZW1wbGF0ZS5jb21tb24iIDx0eXBlIDE0MSBzdHJ1Y3QgeyAudGV4dC90ZW1wbGF0ZS50bXBsIDx0eXBlIDE0MiBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDE0MyAqPHR5cGUgMTI+Pj47IC50ZXh0L3RlbXBsYXRlLnBhcnNlRnVuY3MgPHR5cGUgMT47IC50ZXh0L3RlbXBsYXRlLmV4ZWNGdW5jcyA8dHlwZSAxNDQgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAxNDUgInJlZmxlY3QuVmFsdWUiIDx0eXBlIDE0NiBzdHJ1Y3QgeyAucmVmbGVjdC50eXAgPHR5cGUgMTQ3ICo8dHlwZSAxNDggIi5yZWZsZWN0LnJ0eXBlIiA8dHlwZSAxNDkgc3RydWN0IHsgLnJlZmxlY3Qua2luZCA8dHlwZSAtNT47IC5yZWZsZWN0LmFsaWduIDx0eXBlIC0xPjsgLnJlZmxlY3QuZmllbGRBbGlnbiA8dHlwZSAtNT47IC5yZWZsZWN0Ll8gPHR5cGUgLTU+OyAucmVmbGVjdC5zaXplIDx0eXBlIC0xMz47IC5yZWZsZWN0Lmhhc2ggPHR5cGUgLTc+OyAucmVmbGVjdC5oYXNoZm4gPHR5cGUgLTEzPjsgLnJlZmxlY3QuZXF1YWxmbiA8dHlwZSAtMTM+OyAucmVmbGVjdC5nYyA8dHlwZSAxNTAgInVuc2FmZS5Qb2ludGVyIiAidW5zYWZlIiA8dHlwZSAxNTEgKmFueT4+OyAucmVmbGVjdC5zdHJpbmcgPHR5cGUgMTUyICo8dHlwZSAtMTY+PjsgPyA8dHlwZSAxNTMgKjx0eXBlIDE1NCAiLnJlZmxlY3QudW5jb21tb25UeXBlIiA8dHlwZSAxNTUgc3RydWN0IHsgLnJlZmxlY3QubmFtZSA8dHlwZSAxNTI+OyAucmVmbGVjdC5wa2dQYXRoIDx0eXBlIDE1Mj47IC5yZWZsZWN0Lm1ldGhvZHMgPHR5cGUgMTU2IFtdIDx0eXBlIDE1NyAiLnJlZmxlY3QubWV0aG9kIiA8dHlwZSAxNTggc3RydWN0IHsgLnJlZmxlY3QubmFtZSA8dHlwZSAxNTI+OyAucmVmbGVjdC5wa2dQYXRoIDx0eXBlIDE1Mj47IC5yZWZsZWN0Lm10eXAgPHR5cGUgMTU5ICo8dHlwZSAxNDg+PjsgLnJlZmxlY3QudHlwIDx0eXBlIDE1OT47IC5yZWZsZWN0LnRmbiA8dHlwZSAxNTA+OyB9Pj4+OyB9PgogZnVuYyAodCA8dHlwZSAxNjAgKjx0eXBlIDE1ND4+KSBQa2dQYXRoICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDE2MD4pIE1ldGhvZEJ5TmFtZSAobmFtZSA8dHlwZSAtMTY+KSAobSA8dHlwZSAxNjEgInJlZmxlY3QuTWV0aG9kIiA8dHlwZSAxNjIgc3RydWN0IHsgTmFtZSA8dHlwZSAtMTY+OyBQa2dQYXRoIDx0eXBlIC0xNj47IFR5cGUgPHR5cGUgMTYzICJyZWZsZWN0LlR5cGUiIDx0eXBlIDE2NCBpbnRlcmZhY2UgeyBBbGlnbiAoKSA8dHlwZSAtMTE+OyBGaWVsZEFsaWduICgpIDx0eXBlIC0xMT47IE1ldGhvZCAoPyA8dHlwZSAtMTE+KSA8dHlwZSAxNjE+OyBNZXRob2RCeU5hbWUgKD8gPHR5cGUgLTE2PikgKD8gPHR5cGUgMTYxPiwgPyA8dHlwZSAtMTU+KTsgTnVtTWV0aG9kICgpIDx0eXBlIC0xMT47IE5hbWUgKCkgPHR5cGUgLTE2PjsgUGtnUGF0aCAoKSA8dHlwZSAtMTY+OyBTaXplICgpIDx0eXBlIC0xMz47IFN0cmluZyAoKSA8dHlwZSAtMTY+OyAucmVmbGVjdC5yYXdTdHJpbmcgKCkgPHR5cGUgLTE2PjsgS2luZCAoKSA8dHlwZSAxNjUgInJlZmxlY3QuS2luZCIgPHR5cGUgLTEyPgogZnVuYyAoayA8dHlwZSAxNjU+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsgSW1wbGVtZW50cyAodSA8dHlwZSAxNjM+KSA8dHlwZSAtMTU+OyBBc3NpZ25hYmxlVG8gKHUgPHR5cGUgMTYzPikgPHR5cGUgLTE1PjsgQ29udmVydGlibGVUbyAodSA8dHlwZSAxNjM+KSA8dHlwZSAtMTU+OyBDb21wYXJhYmxlICgpIDx0eXBlIC0xNT47IEJpdHMgKCkgPHR5cGUgLTExPjsgQ2hhbkRpciAoKSA8dHlwZSAxNjYgInJlZmxlY3QuQ2hhbkRpciIgPHR5cGUgLTExPgogZnVuYyAoZCA8dHlwZSAxNjY+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsgSXNWYXJpYWRpYyAoKSA8dHlwZSAtMTU+OyBFbGVtICgpIDx0eXBlIDE2Mz47IEZpZWxkIChpIDx0eXBlIC0xMT4pIDx0eXBlIDE2NyAicmVmbGVjdC5TdHJ1Y3RGaWVsZCIgPHR5cGUgMTY4IHN0cnVjdCB7IE5hbWUgPHR5cGUgLTE2PjsgUGtnUGF0aCA8dHlwZSAtMTY+OyBUeXBlIDx0eXBlIDE2Mz47IFRhZyA8dHlwZSAxNjkgInJlZmxlY3QuU3RydWN0VGFnIiA8dHlwZSAtMTY+CiBmdW5jICh0YWcgPHR5cGUgMTY5PikgR2V0IChrZXkgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKPjsgT2Zmc2V0IDx0eXBlIC0xMz47IEluZGV4IDx0eXBlIDE3MCBbXSA8dHlwZSAtMTE+PjsgQW5vbnltb3VzIDx0eXBlIC0xNT47IH0+PjsgRmllbGRCeUluZGV4IChpbmRleCA8dHlwZSAxNzEgW10gPHR5cGUgLTExPj4pIDx0eXBlIDE2Nz47IEZpZWxkQnlOYW1lIChuYW1lIDx0eXBlIC0xNj4pICg/IDx0eXBlIDE2Nz4sID8gPHR5cGUgLTE1Pik7IEZpZWxkQnlOYW1lRnVuYyAobWF0Y2ggPHR5cGUgMTcyICg/IDx0eXBlIC0xNj4pIDx0eXBlIC0xNT4+KSAoPyA8dHlwZSAxNjc+LCA/IDx0eXBlIC0xNT4pOyBJbiAoaSA8dHlwZSAtMTE+KSA8dHlwZSAxNjM+OyBLZXkgKCkgPHR5cGUgMTYzPjsgTGVuICgpIDx0eXBlIC0xMT47IE51bUZpZWxkICgpIDx0eXBlIC0xMT47IE51bUluICgpIDx0eXBlIC0xMT47IE51bU91dCAoKSA8dHlwZSAtMTE+OyBPdXQgKGkgPHR5cGUgLTExPikgPHR5cGUgMTYzPjsgLnJlZmxlY3QuY29tbW9uICgpIDx0eXBlIDE1OT47IC5yZWZsZWN0LnVuY29tbW9uICgpIDx0eXBlIDE2MD47IH0+PjsgRnVuYyA8dHlwZSAxNDU+OyBJbmRleCA8dHlwZSAtMTE+OyB9Pj4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAodCA8dHlwZSAxNjA+KSBOdW1NZXRob2QgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTYwPikgTmFtZSAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSAxNjA+KSBNZXRob2QgKGkgPHR5cGUgLTExPikgKG0gPHR5cGUgMTYxPik7CiBmdW5jICh0IDx0eXBlIDE2MD4pIC5yZWZsZWN0LnVuY29tbW9uICgpIDx0eXBlIDE2MD47Cj4+OyAucmVmbGVjdC5wdHJUb1RoaXMgPHR5cGUgMTU5PjsgLnJlZmxlY3QuemVybyA8dHlwZSAxNTA+OyB9PgogZnVuYyAodCA8dHlwZSAxNTk+KSBGaWVsZEFsaWduICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDE1OT4pIC5yZWZsZWN0LmNvbW1vbiAoKSA8dHlwZSAxNTk+OwogZnVuYyAodCA8dHlwZSAxNTk+KSBNZXRob2QgKGkgPHR5cGUgLTExPikgKG0gPHR5cGUgMTYxPik7CiBmdW5jICh0IDx0eXBlIDE1OT4pIC5yZWZsZWN0LnB0clRvICgpIDx0eXBlIDE1OT47CiBmdW5jICh0IDx0eXBlIDE1OT4pIE1ldGhvZEJ5TmFtZSAobmFtZSA8dHlwZSAtMTY+KSAobSA8dHlwZSAxNjE+LCBvayA8dHlwZSAtMTU+KTsKIGZ1bmMgKHQgPHR5cGUgMTU5PikgLnJlZmxlY3QucmF3U3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDE1OT4pIEtleSAoKSA8dHlwZSAxNjM+OwogZnVuYyAodCA8dHlwZSAxNTk+KSBJbiAoaSA8dHlwZSAtMTE+KSA8dHlwZSAxNjM+OwogZnVuYyAodCA8dHlwZSAxNTk+KSBJc1ZhcmlhZGljICgpIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDE1OT4pIE5hbWUgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMTU5PikgQ2hhbkRpciAoKSA8dHlwZSAxNjY+OwogZnVuYyAodCA8dHlwZSAxNTk+KSBGaWVsZEJ5SW5kZXggKGluZGV4IDx0eXBlIDE3MyBbXSA8dHlwZSAtMTE+PikgPHR5cGUgMTY3PjsKIGZ1bmMgKHQgPHR5cGUgMTU5PikgS2luZCAoKSA8dHlwZSAxNjU+OwogZnVuYyAodCA8dHlwZSAxNTk+KSBOdW1NZXRob2QgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTU5PikgT3V0IChpIDx0eXBlIC0xMT4pIDx0eXBlIDE2Mz47CiBmdW5jICh0IDx0eXBlIDE1OT4pIEltcGxlbWVudHMgKHUgPHR5cGUgMTYzPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMTU5PikgUGtnUGF0aCAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSAxNTk+KSBDb252ZXJ0aWJsZVRvICh1IDx0eXBlIDE2Mz4pIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDE1OT4pIEZpZWxkIChpIDx0eXBlIC0xMT4pIDx0eXBlIDE2Nz47CiBmdW5jICh0IDx0eXBlIDE1OT4pIEFsaWduICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDE1OT4pIEVsZW0gKCkgPHR5cGUgMTYzPjsKIGZ1bmMgKHQgPHR5cGUgMTU5PikgRmllbGRCeU5hbWUgKG5hbWUgPHR5cGUgLTE2PikgKD8gPHR5cGUgMTY3PiwgPyA8dHlwZSAtMTU+KTsKIGZ1bmMgKHQgPHR5cGUgMTU5PikgLnJlZmxlY3QucG9pbnRlcnMgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMTU5PikgRmllbGRCeU5hbWVGdW5jIChtYXRjaCA8dHlwZSAxNzQgKD8gPHR5cGUgLTE2PikgPHR5cGUgLTE1Pj4pICg/IDx0eXBlIDE2Nz4sID8gPHR5cGUgLTE1Pik7CiBmdW5jICh0IDx0eXBlIDE1OT4pIEJpdHMgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTU5PikgTnVtSW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTU5PikgTnVtT3V0ICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDE1OT4pIFNpemUgKCkgPHR5cGUgLTEzPjsKIGZ1bmMgKHQgPHR5cGUgMTU5PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDE1OT4pIE51bUZpZWxkICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDE1OT4pIENvbXBhcmFibGUgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMTU5PikgQXNzaWduYWJsZVRvICh1IDx0eXBlIDE2Mz4pIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDE1OT4pIExlbiAoKSA8dHlwZSAtMTE+Owo+PjsgLnJlZmxlY3QucHRyIDx0eXBlIDE1MD47ID8gPHR5cGUgMTc1ICIucmVmbGVjdC5mbGFnIiA8dHlwZSAtMTM+CiBmdW5jIChmIDx0eXBlIDE3NT4pIC5yZWZsZWN0Lm11c3RCZSAoZXhwZWN0ZWQgPHR5cGUgMTY1Pik7CiBmdW5jIChmIDx0eXBlIDE3NT4pIC5yZWZsZWN0Lm11c3RCZUV4cG9ydGVkICgpOwogZnVuYyAoZiA8dHlwZSAxNzU+KSAucmVmbGVjdC5tdXN0QmVBc3NpZ25hYmxlICgpOwogZnVuYyAoZiA8dHlwZSAxNzU+KSAucmVmbGVjdC5raW5kICgpIDx0eXBlIDE2NT47Cj47IH0+CiBmdW5jICh2IDx0eXBlIDE0NT4pIFR5cGUgKCkgPHR5cGUgMTYzPjsKIGZ1bmMgKHYgPHR5cGUgMTQ1PikgT3ZlcmZsb3dDb21wbGV4ICh4IDx0eXBlIC0xOD4pIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDE0NT4pIE1ldGhvZEJ5TmFtZSAobmFtZSA8dHlwZSAtMTY+KSA8dHlwZSAxNDU+OwogZnVuYyAodiA8dHlwZSAxNDU+KSBCeXRlcyAoKSA8dHlwZSAxNzYgW10gPHR5cGUgLTIwPj47CiBmdW5jICh2IDx0eXBlIDE0NT4pIEludGVyZmFjZSAoKSAoaSA8dHlwZSAxNzcgaW50ZXJmYWNlIHsgfT4pOwogZnVuYyAodiA8dHlwZSAxNDU+KSBGaWVsZEJ5TmFtZSAobmFtZSA8dHlwZSAtMTY+KSA8dHlwZSAxNDU+OwogZnVuYyAodiA8dHlwZSAxNDU+KSBTZW5kICh4IDx0eXBlIDE0NT4pOwogZnVuYyAodiA8dHlwZSAxNDU+KSAucmVmbGVjdC5yZWN2IChuYiA8dHlwZSAtMTU+KSAodmFsIDx0eXBlIDE0NT4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAodiA8dHlwZSAxNDU+KSBVaW50ICgpIDx0eXBlIC04PjsKIGZ1bmMgKHYgPHR5cGUgMTQ1PikgSXNWYWxpZCAoKSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSAxNDU+KSBOdW1NZXRob2QgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHYgPHR5cGUgMTQ1PikgT3ZlcmZsb3dGbG9hdCAoeCA8dHlwZSAtMTA+KSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSAxNDU+KSBNYXBLZXlzICgpIDx0eXBlIDE3OCBbXSA8dHlwZSAxNDU+PjsKIGZ1bmMgKHYgPHR5cGUgMTQ1PikgTWV0aG9kIChpIDx0eXBlIC0xMT4pIDx0eXBlIDE0NT47CiBmdW5jICh2IDx0eXBlIDE0NT4pIFNldEludCAoeCA8dHlwZSAtND4pOwogZnVuYyAodiA8dHlwZSAxNDU+KSBGaWVsZCAoaSA8dHlwZSAtMTE+KSA8dHlwZSAxNDU+OwogZnVuYyAodiA8dHlwZSAxNDU+KSBTZXRMZW4gKG4gPHR5cGUgLTExPik7CiBmdW5jICh2IDx0eXBlIDE0NT4pIFVuc2FmZUFkZHIgKCkgPHR5cGUgLTEzPjsKIGZ1bmMgKHYgPHR5cGUgMTQ1PikgU2xpY2UzIChpIDx0eXBlIC0xMT4sIGogPHR5cGUgLTExPiwgayA8dHlwZSAtMTE+KSA8dHlwZSAxNDU+OwogZnVuYyAodiA8dHlwZSAxNDU+KSBDb21wbGV4ICgpIDx0eXBlIC0xOD47CiBmdW5jICh2IDx0eXBlIDE0NT4pIFNldENhcCAobiA8dHlwZSAtMTE+KTsKIGZ1bmMgKHYgPHR5cGUgMTQ1PikgQ2FsbFNsaWNlIChpbiA8dHlwZSAxNzkgW10gPHR5cGUgMTQ1Pj4pIDx0eXBlIDE4MCBbXSA8dHlwZSAxNDU+PjsKIGZ1bmMgKHYgPHR5cGUgMTQ1PikgRmxvYXQgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKHYgPHR5cGUgMTQ1PikgLnJlZmxlY3QuYXNzaWduVG8gKGNvbnRleHQgPHR5cGUgLTE2PiwgZHN0IDx0eXBlIDE0Nz4sIHRhcmdldCA8dHlwZSAxNTA+KSA8dHlwZSAxNDU+OwogZnVuYyAodiA8dHlwZSAxNDU+KSAucmVmbGVjdC5ydW5lcyAoKSA8dHlwZSAxODEgW10gPHR5cGUgLTIxPj47CiBmdW5jICh2IDx0eXBlIDE0NT4pIEVsZW0gKCkgPHR5cGUgMTQ1PjsKIGZ1bmMgKHYgPHR5cGUgMTQ1PikgSW5kZXggKGkgPHR5cGUgLTExPikgPHR5cGUgMTQ1PjsKIGZ1bmMgKHYgPHR5cGUgMTQ1PikgVHJ5U2VuZCAoeCA8dHlwZSAxNDU+KSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSAxNDU+KSBTZXRCb29sICh4IDx0eXBlIC0xNT4pOwogZnVuYyAodiA8dHlwZSAxNDU+KSBTZXRCeXRlcyAoeCA8dHlwZSAxODIgW10gPHR5cGUgLTIwPj4pOwogZnVuYyAodiA8dHlwZSAxNDU+KSAucmVmbGVjdC5zZXRSdW5lcyAoeCA8dHlwZSAxODMgW10gPHR5cGUgLTIxPj4pOwogZnVuYyAodiA8dHlwZSAxNDU+KSBGaWVsZEJ5TmFtZUZ1bmMgKG1hdGNoIDx0eXBlIDE4NCAoPyA8dHlwZSAtMTY+KSA8dHlwZSAtMTU+PikgPHR5cGUgMTQ1PjsKIGZ1bmMgKHYgPHR5cGUgMTQ1PikgT3ZlcmZsb3dVaW50ICh4IDx0eXBlIC04PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgMTQ1PikgTWFwSW5kZXggKGtleSA8dHlwZSAxNDU+KSA8dHlwZSAxNDU+OwogZnVuYyAodiA8dHlwZSAxNDU+KSBJc05pbCAoKSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSAxNDU+KSBTZXRQb2ludGVyICh4IDx0eXBlIDE1MD4pOwogZnVuYyAodiA8dHlwZSAxNDU+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHYgPHR5cGUgMTQ1PikgLnJlZmxlY3QuY2FsbCAob3AgPHR5cGUgLTE2PiwgaW4gPHR5cGUgMTg1IFtdIDx0eXBlIDE0NT4+KSA8dHlwZSAxODYgW10gPHR5cGUgMTQ1Pj47CiBmdW5jICh2IDx0eXBlIDE0NT4pIEludCAoKSA8dHlwZSAtND47CiBmdW5jICh2IDx0eXBlIDE0NT4pIFJlY3YgKCkgKHggPHR5cGUgMTQ1Piwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jICh2IDx0eXBlIDE0NT4pIENvbnZlcnQgKHQgPHR5cGUgMTYzPikgPHR5cGUgMTQ1PjsKIGZ1bmMgKHYgPHR5cGUgMTQ1PikgS2luZCAoKSA8dHlwZSAxNjU+OwogZnVuYyAodiA8dHlwZSAxNDU+KSBJbnRlcmZhY2VEYXRhICgpIDx0eXBlIDE4NyBbMiBdIDx0eXBlIC0xMz4+OwogZnVuYyAodiA8dHlwZSAxNDU+KSBTZXRNYXBJbmRleCAoa2V5IDx0eXBlIDE0NT4sIHZhbCA8dHlwZSAxNDU+KTsKIGZ1bmMgKHYgPHR5cGUgMTQ1PikgQ2FsbCAoaW4gPHR5cGUgMTg4IFtdIDx0eXBlIDE0NT4+KSA8dHlwZSAxODkgW10gPHR5cGUgMTQ1Pj47CiBmdW5jICh2IDx0eXBlIDE0NT4pIFNldCAoeCA8dHlwZSAxNDU+KTsKIGZ1bmMgKHYgPHR5cGUgMTQ1PikgU2V0VWludCAoeCA8dHlwZSAtOD4pOwogZnVuYyAodiA8dHlwZSAxNDU+KSBCb29sICgpIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDE0NT4pIFNsaWNlIChpIDx0eXBlIC0xMT4sIGogPHR5cGUgLTExPikgPHR5cGUgMTQ1PjsKIGZ1bmMgKHYgPHR5cGUgMTQ1PikgLnJlZmxlY3QucG9pbnRlciAoKSA8dHlwZSAxNTA+OwogZnVuYyAodiA8dHlwZSAxNDU+KSBQb2ludGVyICgpIDx0eXBlIC0xMz47CiBmdW5jICh2IDx0eXBlIDE0NT4pIENhcCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodiA8dHlwZSAxNDU+KSBTZXRTdHJpbmcgKHggPHR5cGUgLTE2Pik7CiBmdW5jICh2IDx0eXBlIDE0NT4pIExlbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAodiA8dHlwZSAxNDU+KSBUcnlSZWN2ICgpICh4IDx0eXBlIDE0NT4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAodiA8dHlwZSAxNDU+KSBDbG9zZSAoKTsKIGZ1bmMgKHYgPHR5cGUgMTQ1PikgQ2FuQWRkciAoKSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSAxNDU+KSBDYW5TZXQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgMTQ1PikgLnJlZmxlY3Quc2VuZCAoeCA8dHlwZSAxNDU+LCBuYiA8dHlwZSAtMTU+KSAoc2VsZWN0ZWQgPHR5cGUgLTE1Pik7CiBmdW5jICh2IDx0eXBlIDE0NT4pIEZpZWxkQnlJbmRleCAoaW5kZXggPHR5cGUgMTkwIFtdIDx0eXBlIC0xMT4+KSA8dHlwZSAxNDU+OwogZnVuYyAodiA8dHlwZSAxNDU+KSBPdmVyZmxvd0ludCAoeCA8dHlwZSAtND4pIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDE0NT4pIE51bUZpZWxkICgpIDx0eXBlIC0xMT47CiBmdW5jICh2IDx0eXBlIDE0NT4pIFNldEZsb2F0ICh4IDx0eXBlIC0xMD4pOwogZnVuYyAodiA8dHlwZSAxNDU+KSBDYW5JbnRlcmZhY2UgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgMTQ1PikgU2V0Q29tcGxleCAoeCA8dHlwZSAtMTg+KTsKIGZ1bmMgKHYgPHR5cGUgMTQ1PikgQWRkciAoKSA8dHlwZSAxNDU+Owo+PjsgfT4+PjsgLnRleHQvdGVtcGxhdGUubGVmdERlbGltIDx0eXBlIC0xNj47IC50ZXh0L3RlbXBsYXRlLnJpZ2h0RGVsaW0gPHR5cGUgLTE2PjsgfT4KIGZ1bmMgKHQgPHR5cGUgMTkxICo8dHlwZSAxMj4+KSBFeGVjdXRlVGVtcGxhdGUgKHdyIDx0eXBlIDQ+LCBuYW1lIDx0eXBlIC0xNj4sIGRhdGEgPHR5cGUgMTkyIGludGVyZmFjZSB7IH0+KSA8dHlwZSAtMTk+OwogZnVuYyAodCA8dHlwZSAxOTMgKjx0eXBlIDEyPj4pIEV4ZWN1dGUgKHdyIDx0eXBlIDQ+LCBkYXRhIDx0eXBlIDE5NCBpbnRlcmZhY2UgeyB9PikgKGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgMTk1ICo8dHlwZSAxMj4+KSBQYXJzZUZpbGVzIChmaWxlbmFtZXMgLi4uPHR5cGUgLTE2PikgKD8gPHR5cGUgMTk2ICo8dHlwZSAxMj4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAxOTcgKjx0eXBlIDEyPj4pIFBhcnNlR2xvYiAocGF0dGVybiA8dHlwZSAtMTY+KSAoPyA8dHlwZSAxOTggKjx0eXBlIDEyPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDE5OSAqPHR5cGUgMTI+PikgTmFtZSAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSAxOTk+KSBOZXcgKG5hbWUgPHR5cGUgLTE2PikgPHR5cGUgMTk5PjsKIGZ1bmMgKHQgPHR5cGUgMTk5PikgLnRleHQvdGVtcGxhdGUuaW5pdCAoKTsKIGZ1bmMgKHQgPHR5cGUgMTk5PikgQ2xvbmUgKCkgKD8gPHR5cGUgMTk5PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgMTk5PikgLnRleHQvdGVtcGxhdGUuY29weSAoYyA8dHlwZSAxMzk+KSA8dHlwZSAxOTk+OwogZnVuYyAodCA8dHlwZSAxOTk+KSBBZGRQYXJzZVRyZWUgKG5hbWUgPHR5cGUgLTE2PiwgdHJlZSA8dHlwZSAxND4pICg/IDx0eXBlIDE5OT4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDE5OT4pIFRlbXBsYXRlcyAoKSA8dHlwZSAyMDAgW10gPHR5cGUgMTk5Pj47CiBmdW5jICh0IDx0eXBlIDE5OT4pIERlbGltcyAobGVmdCA8dHlwZSAtMTY+LCByaWdodCA8dHlwZSAtMTY+KSA8dHlwZSAxOTk+OwogZnVuYyAodCA8dHlwZSAxOTk+KSBGdW5jcyAoZnVuY01hcCA8dHlwZSAxPikgPHR5cGUgMTk5PjsKIGZ1bmMgKHQgPHR5cGUgMTk5PikgTG9va3VwIChuYW1lIDx0eXBlIC0xNj4pIDx0eXBlIDE5OT47CiBmdW5jICh0IDx0eXBlIDE5OT4pIFBhcnNlICh0ZXh0IDx0eXBlIC0xNj4pICg/IDx0eXBlIDE5OT4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDE5OT4pIC50ZXh0L3RlbXBsYXRlLmFzc29jaWF0ZSAobmV3IDx0eXBlIDE5OT4sIHRyZWUgPHR5cGUgMTQ+KSAoPyA8dHlwZSAtMTU+LCA/IDx0eXBlIC0xOT4pOwo+PiwgZXJyIDx0eXBlIC0xOT4pIDx0eXBlIDIwMSAqPHR5cGUgMTI+PjsKZnVuYyBOZXcgKG5hbWUgPHR5cGUgLTE2PikgPHR5cGUgMTk5PjsKZnVuYyBQYXJzZUZpbGVzIChmaWxlbmFtZXMgLi4uPHR5cGUgLTE2PikgKD8gPHR5cGUgMjAyICo8dHlwZSAxMj4+LCA/IDx0eXBlIC0xOT4pOwpmdW5jIFBhcnNlR2xvYiAocGF0dGVybiA8dHlwZSAtMTY+KSAoPyA8dHlwZSAyMDMgKjx0eXBlIDEyPj4sID8gPHR5cGUgLTE5Pik7CnR5cGUgPHR5cGUgMTI+OwpmdW5jIFVSTFF1ZXJ5RXNjYXBlciAoYXJncyAuLi48dHlwZSAyMDQgaW50ZXJmYWNlIHsgfT4pIDx0eXBlIC0xNj47CmNoZWNrc3VtIDhFMEEzQTgyOEJEQTNGRDFBMzc4MjhGMzQzNzc1RjA4QUI4RTFGQzg7CgAuc3ltdGFiAC5zdHJ0YWIALnNoc3RydGFiAC5nb19leHBvcnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAABAAAAAAAAAAAAAAA0AAAAmmUAAAAAAAAAAAAAAQAAAAAAAAARAAAAAwAAAAAAAAAAAAAAzmUAACYAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAPRlAAAgAAAABAAAAAIAAAAEAAAAEAAAAAkAAAADAAAAAAAAAAAAAAAUZgAAAQAAAAAAAAAAAAAAAQAAAAAAAAA=