f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAAD8WAAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIGdvYjsKcGtncGF0aCBlbmNvZGluZy9nb2I7CnByaW9yaXR5IDc7CmltcG9ydCBidWZpbyBidWZpbyAiYnVmaW8iOwppbXBvcnQgZW5jb2RpbmcgZW5jb2RpbmcgImVuY29kaW5nIjsKaW1wb3J0IGVycm9ycyBlcnJvcnMgImVycm9ycyI7CmltcG9ydCBmbXQgZm10ICJmbXQiOwppbXBvcnQgaW8gaW8gImlvIjsKaW1wb3J0IG1hdGggbWF0aCAibWF0aCI7CmltcG9ydCBvcyBvcyAib3MiOwppbXBvcnQgcmVmbGVjdCByZWZsZWN0ICJyZWZsZWN0IjsKaW1wb3J0IHN5bmMgc3luYyAic3luYyI7CmltcG9ydCBhdG9taWMgc3luYy9hdG9taWMgInN5bmMvYXRvbWljIjsKaW1wb3J0IHVuaWNvZGUgdW5pY29kZSAidW5pY29kZSI7CmltcG9ydCB1dGY4IHVuaWNvZGUvdXRmOCAidW5pY29kZS91dGY4IjsKaW5pdCBnb2IgZW5jb2RpbmdfZ29iLi5pbXBvcnQgNyBtYXRoIG1hdGguLmltcG9ydCAxIHJ1bnRpbWUgcnVudGltZS4uaW1wb3J0IDEgdW5pY29kZSB1bmljb2RlLi5pbXBvcnQgMSBzdHJjb252IHN0cmNvbnYuLmltcG9ydCAyIHN5bmMgc3luYy4uaW1wb3J0IDIgaW8gaW8uLmltcG9ydCAzIHJlZmxlY3QgcmVmbGVjdC4uaW1wb3J0IDMgc3lzY2FsbCBzeXNjYWxsLi5pbXBvcnQgMyBieXRlcyBieXRlcy4uaW1wb3J0IDQgdGltZSB0aW1lLi5pbXBvcnQgNCBidWZpbyBidWZpby4uaW1wb3J0IDUgb3Mgb3MuLmltcG9ydCA1IGZtdCBmbXQuLmltcG9ydCA2Owp0eXBlIDx0eXBlIDEgIkNvbW1vblR5cGUiIDx0eXBlIDIgc3RydWN0IHsgTmFtZSA8dHlwZSAtMTY+OyBJZCA8dHlwZSAzICIuZW5jb2RpbmcvZ29iLnR5cGVJZCIgPHR5cGUgLTM+CiBmdW5jICh0IDx0eXBlIDM+KSAuZW5jb2RpbmcvZ29iLmdvYlR5cGUgKCkgPHR5cGUgNCAiLmVuY29kaW5nL2dvYi5nb2JUeXBlIiA8dHlwZSA1IGludGVyZmFjZSB7IC5lbmNvZGluZy9nb2IuaWQgKCkgPHR5cGUgMz47IC5lbmNvZGluZy9nb2Iuc2V0SWQgKGlkIDx0eXBlIDM+KTsgLmVuY29kaW5nL2dvYi5uYW1lICgpIDx0eXBlIC0xNj47IC5lbmNvZGluZy9nb2Iuc3RyaW5nICgpIDx0eXBlIC0xNj47IC5lbmNvZGluZy9nb2Iuc2FmZVN0cmluZyAoc2VlbiA8dHlwZSA2IG1hcCBbPHR5cGUgMz5dIDx0eXBlIC0xNT4+KSA8dHlwZSAtMTY+OyB9Pj47CiBmdW5jICh0IDx0eXBlIDM+KSAuZW5jb2RpbmcvZ29iLnN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSAzPikgLmVuY29kaW5nL2dvYi5uYW1lICgpIDx0eXBlIC0xNj47Cj47IH0+CiBmdW5jICh0IDx0eXBlIDcgKjx0eXBlIDE+PikgLmVuY29kaW5nL2dvYi5pZCAoKSA8dHlwZSAzPjsKIGZ1bmMgKHQgPHR5cGUgNz4pIC5lbmNvZGluZy9nb2Iuc2V0SWQgKGlkIDx0eXBlIDM+KTsKIGZ1bmMgKHQgPHR5cGUgNz4pIC5lbmNvZGluZy9nb2Iuc3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDc+KSAuZW5jb2RpbmcvZ29iLnNhZmVTdHJpbmcgKHNlZW4gPHR5cGUgOCBtYXAgWzx0eXBlIDM+XSA8dHlwZSAtMTU+PikgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgNz4pIC5lbmNvZGluZy9nb2IubmFtZSAoKSA8dHlwZSAtMTY+Owo+Owp0eXBlIDx0eXBlIDkgIkRlY29kZXIiIDx0eXBlIDEwIHN0cnVjdCB7IC5lbmNvZGluZy9nb2IubXV0ZXggPHR5cGUgMTEgInN5bmMuTXV0ZXgiIDx0eXBlIDEyIHN0cnVjdCB7IC5zeW5jLnN0YXRlIDx0eXBlIC0zPjsgLnN5bmMuc2VtYSA8dHlwZSAtNz47IH0+CiBmdW5jIChtIDx0eXBlIDEzICo8dHlwZSAxMT4+KSBVbmxvY2sgKCk7CiBmdW5jIChtIDx0eXBlIDEzPikgTG9jayAoKTsKPjsgLmVuY29kaW5nL2dvYi5yIDx0eXBlIDE0ICJpby5SZWFkZXIiIDx0eXBlIDE1IGludGVyZmFjZSB7IFJlYWQgKHAgPHR5cGUgMTYgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+OyAuZW5jb2RpbmcvZ29iLmJ1ZiA8dHlwZSAxNyAiLmVuY29kaW5nL2dvYi5kZWNCdWZmZXIiIDx0eXBlIDE4IHN0cnVjdCB7IC5lbmNvZGluZy9nb2IuZGF0YSA8dHlwZSAxOSBbXSA8dHlwZSAtMjA+PjsgLmVuY29kaW5nL2dvYi5vZmZzZXQgPHR5cGUgLTExPjsgfT4KIGZ1bmMgKGQgPHR5cGUgMjAgKjx0eXBlIDE3Pj4pIFJlYWQgKHAgPHR5cGUgMjEgW10gPHR5cGUgLTIwPj4pICg/IDx0eXBlIC0xMT4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChkIDx0eXBlIDIwPikgRHJvcCAobiA8dHlwZSAtMTE+KTsKIGZ1bmMgKGQgPHR5cGUgMjA+KSBTaXplIChuIDx0eXBlIC0xMT4pOwogZnVuYyAoZCA8dHlwZSAyMD4pIFJlYWRCeXRlICgpICg/IDx0eXBlIC0yMD4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChkIDx0eXBlIDIwPikgTGVuICgpIDx0eXBlIC0xMT47CiBmdW5jIChkIDx0eXBlIDIwPikgQnl0ZXMgKCkgPHR5cGUgMjIgW10gPHR5cGUgLTIwPj47CiBmdW5jIChkIDx0eXBlIDIwPikgUmVzZXQgKCk7Cj47IC5lbmNvZGluZy9nb2Iud2lyZVR5cGUgPHR5cGUgMjMgbWFwIFs8dHlwZSAzPl0gPHR5cGUgMjQgKjx0eXBlIDI1ICIuZW5jb2RpbmcvZ29iLndpcmVUeXBlIiA8dHlwZSAyNiBzdHJ1Y3QgeyBBcnJheVQgPHR5cGUgMjcgKjx0eXBlIDI4ICIuZW5jb2RpbmcvZ29iLmFycmF5VHlwZSIgPHR5cGUgMjkgc3RydWN0IHsgPyA8dHlwZSAxPjsgRWxlbSA8dHlwZSAzPjsgTGVuIDx0eXBlIC0xMT47IH0+CiBmdW5jIChhIDx0eXBlIDMwICo8dHlwZSAyOD4+KSAuZW5jb2RpbmcvZ29iLmluaXQgKGVsZW0gPHR5cGUgND4sIGxlbiA8dHlwZSAtMTE+KTsKIGZ1bmMgKGEgPHR5cGUgMzA+KSAuZW5jb2RpbmcvZ29iLnNhZmVTdHJpbmcgKHNlZW4gPHR5cGUgMzEgbWFwIFs8dHlwZSAzPl0gPHR5cGUgLTE1Pj4pIDx0eXBlIC0xNj47CiBmdW5jIChhIDx0eXBlIDMwPikgLmVuY29kaW5nL2dvYi5zdHJpbmcgKCkgPHR5cGUgLTE2PjsKPj47IFNsaWNlVCA8dHlwZSAzMiAqPHR5cGUgMzMgIi5lbmNvZGluZy9nb2Iuc2xpY2VUeXBlIiA8dHlwZSAzNCBzdHJ1Y3QgeyA/IDx0eXBlIDE+OyBFbGVtIDx0eXBlIDM+OyB9PgogZnVuYyAocyA8dHlwZSAzNSAqPHR5cGUgMzM+PikgLmVuY29kaW5nL2dvYi5pbml0IChlbGVtIDx0eXBlIDQ+KTsKIGZ1bmMgKHMgPHR5cGUgMzU+KSAuZW5jb2RpbmcvZ29iLnNhZmVTdHJpbmcgKHNlZW4gPHR5cGUgMzYgbWFwIFs8dHlwZSAzPl0gPHR5cGUgLTE1Pj4pIDx0eXBlIC0xNj47CiBmdW5jIChzIDx0eXBlIDM1PikgLmVuY29kaW5nL2dvYi5zdHJpbmcgKCkgPHR5cGUgLTE2PjsKPj47IFN0cnVjdFQgPHR5cGUgMzcgKjx0eXBlIDM4ICIuZW5jb2RpbmcvZ29iLnN0cnVjdFR5cGUiIDx0eXBlIDM5IHN0cnVjdCB7ID8gPHR5cGUgMT47IEZpZWxkIDx0eXBlIDQwIFtdIDx0eXBlIDQxICo8dHlwZSA0MiAiLmVuY29kaW5nL2dvYi5maWVsZFR5cGUiIDx0eXBlIDQzIHN0cnVjdCB7IE5hbWUgPHR5cGUgLTE2PjsgSWQgPHR5cGUgMz47IH0+Pj4+OyB9PgogZnVuYyAocyA8dHlwZSA0NCAqPHR5cGUgMzg+PikgLmVuY29kaW5nL2dvYi5zYWZlU3RyaW5nIChzZWVuIDx0eXBlIDQ1IG1hcCBbPHR5cGUgMz5dIDx0eXBlIC0xNT4+KSA8dHlwZSAtMTY+OwogZnVuYyAocyA8dHlwZSA0ND4pIC5lbmNvZGluZy9nb2Iuc3RyaW5nICgpIDx0eXBlIC0xNj47Cj4+OyBNYXBUIDx0eXBlIDQ2ICo8dHlwZSA0NyAiLmVuY29kaW5nL2dvYi5tYXBUeXBlIiA8dHlwZSA0OCBzdHJ1Y3QgeyA/IDx0eXBlIDE+OyBLZXkgPHR5cGUgMz47IEVsZW0gPHR5cGUgMz47IH0+CiBmdW5jIChtIDx0eXBlIDQ5ICo8dHlwZSA0Nz4+KSAuZW5jb2RpbmcvZ29iLmluaXQgKGtleSA8dHlwZSA0PiwgZWxlbSA8dHlwZSA0Pik7CiBmdW5jIChtIDx0eXBlIDQ5PikgLmVuY29kaW5nL2dvYi5zYWZlU3RyaW5nIChzZWVuIDx0eXBlIDUwIG1hcCBbPHR5cGUgMz5dIDx0eXBlIC0xNT4+KSA8dHlwZSAtMTY+OwogZnVuYyAobSA8dHlwZSA0OT4pIC5lbmNvZGluZy9nb2Iuc3RyaW5nICgpIDx0eXBlIC0xNj47Cj4+OyBHb2JFbmNvZGVyVCA8dHlwZSA1MSAqPHR5cGUgNTIgIi5lbmNvZGluZy9nb2IuZ29iRW5jb2RlclR5cGUiIDx0eXBlIDUzIHN0cnVjdCB7ID8gPHR5cGUgMT47IH0+CiBmdW5jIChnIDx0eXBlIDU0ICo8dHlwZSA1Mj4+KSAuZW5jb2RpbmcvZ29iLnNhZmVTdHJpbmcgKHNlZW4gPHR5cGUgNTUgbWFwIFs8dHlwZSAzPl0gPHR5cGUgLTE1Pj4pIDx0eXBlIC0xNj47CiBmdW5jIChnIDx0eXBlIDU0PikgLmVuY29kaW5nL2dvYi5zdHJpbmcgKCkgPHR5cGUgLTE2PjsKPj47IEJpbmFyeU1hcnNoYWxlclQgPHR5cGUgNTE+OyBUZXh0TWFyc2hhbGVyVCA8dHlwZSA1MT47IH0+CiBmdW5jICh3IDx0eXBlIDU2ICo8dHlwZSAyNT4+KSAuZW5jb2RpbmcvZ29iLnN0cmluZyAoKSA8dHlwZSAtMTY+Owo+Pj47IC5lbmNvZGluZy9nb2IuZGVjb2RlckNhY2hlIDx0eXBlIDU3IG1hcCBbPHR5cGUgNTggInJlZmxlY3QuVHlwZSIgPHR5cGUgNTkgaW50ZXJmYWNlIHsgQWxpZ24gKCkgPHR5cGUgLTExPjsgRmllbGRBbGlnbiAoKSA8dHlwZSAtMTE+OyBNZXRob2QgKD8gPHR5cGUgLTExPikgPHR5cGUgNjAgInJlZmxlY3QuTWV0aG9kIiA8dHlwZSA2MSBzdHJ1Y3QgeyBOYW1lIDx0eXBlIC0xNj47IFBrZ1BhdGggPHR5cGUgLTE2PjsgVHlwZSA8dHlwZSA1OD47IEZ1bmMgPHR5cGUgNjIgInJlZmxlY3QuVmFsdWUiIDx0eXBlIDYzIHN0cnVjdCB7IC5yZWZsZWN0LnR5cCA8dHlwZSA2NCAqPHR5cGUgNjUgIi5yZWZsZWN0LnJ0eXBlIiA8dHlwZSA2NiBzdHJ1Y3QgeyAucmVmbGVjdC5raW5kIDx0eXBlIC01PjsgLnJlZmxlY3QuYWxpZ24gPHR5cGUgLTE+OyAucmVmbGVjdC5maWVsZEFsaWduIDx0eXBlIC01PjsgLnJlZmxlY3QuXyA8dHlwZSAtNT47IC5yZWZsZWN0LnNpemUgPHR5cGUgLTEzPjsgLnJlZmxlY3QuaGFzaCA8dHlwZSAtNz47IC5yZWZsZWN0Lmhhc2hmbiA8dHlwZSAtMTM+OyAucmVmbGVjdC5lcXVhbGZuIDx0eXBlIC0xMz47IC5yZWZsZWN0LmdjIDx0eXBlIDY3ICJ1bnNhZmUuUG9pbnRlciIgInVuc2FmZSIgPHR5cGUgNjggKmFueT4+OyAucmVmbGVjdC5zdHJpbmcgPHR5cGUgNjkgKjx0eXBlIC0xNj4+OyA/IDx0eXBlIDcwICo8dHlwZSA3MSAiLnJlZmxlY3QudW5jb21tb25UeXBlIiA8dHlwZSA3MiBzdHJ1Y3QgeyAucmVmbGVjdC5uYW1lIDx0eXBlIDY5PjsgLnJlZmxlY3QucGtnUGF0aCA8dHlwZSA2OT47IC5yZWZsZWN0Lm1ldGhvZHMgPHR5cGUgNzMgW10gPHR5cGUgNzQgIi5yZWZsZWN0Lm1ldGhvZCIgPHR5cGUgNzUgc3RydWN0IHsgLnJlZmxlY3QubmFtZSA8dHlwZSA2OT47IC5yZWZsZWN0LnBrZ1BhdGggPHR5cGUgNjk+OyAucmVmbGVjdC5tdHlwIDx0eXBlIDc2ICo8dHlwZSA2NT4+OyAucmVmbGVjdC50eXAgPHR5cGUgNzY+OyAucmVmbGVjdC50Zm4gPHR5cGUgNjc+OyB9Pj4+OyB9PgogZnVuYyAodCA8dHlwZSA3NyAqPHR5cGUgNzE+PikgUGtnUGF0aCAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSA3Nz4pIE1ldGhvZEJ5TmFtZSAobmFtZSA8dHlwZSAtMTY+KSAobSA8dHlwZSA2MD4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAodCA8dHlwZSA3Nz4pIE51bU1ldGhvZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSA3Nz4pIE5hbWUgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgNzc+KSBNZXRob2QgKGkgPHR5cGUgLTExPikgKG0gPHR5cGUgNjA+KTsKIGZ1bmMgKHQgPHR5cGUgNzc+KSAucmVmbGVjdC51bmNvbW1vbiAoKSA8dHlwZSA3Nz47Cj4+OyAucmVmbGVjdC5wdHJUb1RoaXMgPHR5cGUgNzY+OyAucmVmbGVjdC56ZXJvIDx0eXBlIDY3PjsgfT4KIGZ1bmMgKHQgPHR5cGUgNzY+KSBGaWVsZEFsaWduICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDc2PikgLnJlZmxlY3QuY29tbW9uICgpIDx0eXBlIDc2PjsKIGZ1bmMgKHQgPHR5cGUgNzY+KSBNZXRob2QgKGkgPHR5cGUgLTExPikgKG0gPHR5cGUgNjA+KTsKIGZ1bmMgKHQgPHR5cGUgNzY+KSAucmVmbGVjdC5wdHJUbyAoKSA8dHlwZSA3Nj47CiBmdW5jICh0IDx0eXBlIDc2PikgTWV0aG9kQnlOYW1lIChuYW1lIDx0eXBlIC0xNj4pIChtIDx0eXBlIDYwPiwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jICh0IDx0eXBlIDc2PikgLnJlZmxlY3QucmF3U3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDc2PikgS2V5ICgpIDx0eXBlIDU4PjsKIGZ1bmMgKHQgPHR5cGUgNzY+KSBJbiAoaSA8dHlwZSAtMTE+KSA8dHlwZSA1OD47CiBmdW5jICh0IDx0eXBlIDc2PikgSXNWYXJpYWRpYyAoKSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSA3Nj4pIE5hbWUgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgNzY+KSBDaGFuRGlyICgpIDx0eXBlIDc4ICJyZWZsZWN0LkNoYW5EaXIiIDx0eXBlIC0xMT4KIGZ1bmMgKGQgPHR5cGUgNzg+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsKIGZ1bmMgKHQgPHR5cGUgNzY+KSBGaWVsZEJ5SW5kZXggKGluZGV4IDx0eXBlIDc5IFtdIDx0eXBlIC0xMT4+KSA8dHlwZSA4MCAicmVmbGVjdC5TdHJ1Y3RGaWVsZCIgPHR5cGUgODEgc3RydWN0IHsgTmFtZSA8dHlwZSAtMTY+OyBQa2dQYXRoIDx0eXBlIC0xNj47IFR5cGUgPHR5cGUgNTg+OyBUYWcgPHR5cGUgODIgInJlZmxlY3QuU3RydWN0VGFnIiA8dHlwZSAtMTY+CiBmdW5jICh0YWcgPHR5cGUgODI+KSBHZXQgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+Owo+OyBPZmZzZXQgPHR5cGUgLTEzPjsgSW5kZXggPHR5cGUgODMgW10gPHR5cGUgLTExPj47IEFub255bW91cyA8dHlwZSAtMTU+OyB9Pj47CiBmdW5jICh0IDx0eXBlIDc2PikgS2luZCAoKSA8dHlwZSA4NCAicmVmbGVjdC5LaW5kIiA8dHlwZSAtMTI+CiBmdW5jIChrIDx0eXBlIDg0PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj47CiBmdW5jICh0IDx0eXBlIDc2PikgTnVtTWV0aG9kICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDc2PikgT3V0IChpIDx0eXBlIC0xMT4pIDx0eXBlIDU4PjsKIGZ1bmMgKHQgPHR5cGUgNzY+KSBJbXBsZW1lbnRzICh1IDx0eXBlIDU4PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgNzY+KSBQa2dQYXRoICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDc2PikgQ29udmVydGlibGVUbyAodSA8dHlwZSA1OD4pIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDc2PikgRmllbGQgKGkgPHR5cGUgLTExPikgPHR5cGUgODA+OwogZnVuYyAodCA8dHlwZSA3Nj4pIEFsaWduICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDc2PikgRWxlbSAoKSA8dHlwZSA1OD47CiBmdW5jICh0IDx0eXBlIDc2PikgRmllbGRCeU5hbWUgKG5hbWUgPHR5cGUgLTE2PikgKD8gPHR5cGUgODA+LCA/IDx0eXBlIC0xNT4pOwogZnVuYyAodCA8dHlwZSA3Nj4pIC5yZWZsZWN0LnBvaW50ZXJzICgpIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDc2PikgRmllbGRCeU5hbWVGdW5jIChtYXRjaCA8dHlwZSA4NSAoPyA8dHlwZSAtMTY+KSA8dHlwZSAtMTU+PikgKD8gPHR5cGUgODA+LCA/IDx0eXBlIC0xNT4pOwogZnVuYyAodCA8dHlwZSA3Nj4pIEJpdHMgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgNzY+KSBOdW1JbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSA3Nj4pIE51bU91dCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSA3Nj4pIFNpemUgKCkgPHR5cGUgLTEzPjsKIGZ1bmMgKHQgPHR5cGUgNzY+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgNzY+KSBOdW1GaWVsZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSA3Nj4pIENvbXBhcmFibGUgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgNzY+KSBBc3NpZ25hYmxlVG8gKHUgPHR5cGUgNTg+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSA3Nj4pIExlbiAoKSA8dHlwZSAtMTE+Owo+PjsgLnJlZmxlY3QucHRyIDx0eXBlIDY3PjsgPyA8dHlwZSA4NiAiLnJlZmxlY3QuZmxhZyIgPHR5cGUgLTEzPgogZnVuYyAoZiA8dHlwZSA4Nj4pIC5yZWZsZWN0Lm11c3RCZSAoZXhwZWN0ZWQgPHR5cGUgODQ+KTsKIGZ1bmMgKGYgPHR5cGUgODY+KSAucmVmbGVjdC5tdXN0QmVFeHBvcnRlZCAoKTsKIGZ1bmMgKGYgPHR5cGUgODY+KSAucmVmbGVjdC5tdXN0QmVBc3NpZ25hYmxlICgpOwogZnVuYyAoZiA8dHlwZSA4Nj4pIC5yZWZsZWN0LmtpbmQgKCkgPHR5cGUgODQ+Owo+OyB9PgogZnVuYyAodiA8dHlwZSA2Mj4pIFR5cGUgKCkgPHR5cGUgNTg+OwogZnVuYyAodiA8dHlwZSA2Mj4pIE92ZXJmbG93Q29tcGxleCAoeCA8dHlwZSAtMTg+KSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSA2Mj4pIE1ldGhvZEJ5TmFtZSAobmFtZSA8dHlwZSAtMTY+KSA8dHlwZSA2Mj47CiBmdW5jICh2IDx0eXBlIDYyPikgQnl0ZXMgKCkgPHR5cGUgODcgW10gPHR5cGUgLTIwPj47CiBmdW5jICh2IDx0eXBlIDYyPikgSW50ZXJmYWNlICgpIChpIDx0eXBlIDg4IGludGVyZmFjZSB7IH0+KTsKIGZ1bmMgKHYgPHR5cGUgNjI+KSBGaWVsZEJ5TmFtZSAobmFtZSA8dHlwZSAtMTY+KSA8dHlwZSA2Mj47CiBmdW5jICh2IDx0eXBlIDYyPikgU2VuZCAoeCA8dHlwZSA2Mj4pOwogZnVuYyAodiA8dHlwZSA2Mj4pIC5yZWZsZWN0LnJlY3YgKG5iIDx0eXBlIC0xNT4pICh2YWwgPHR5cGUgNjI+LCBvayA8dHlwZSAtMTU+KTsKIGZ1bmMgKHYgPHR5cGUgNjI+KSBVaW50ICgpIDx0eXBlIC04PjsKIGZ1bmMgKHYgPHR5cGUgNjI+KSBJc1ZhbGlkICgpIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDYyPikgTnVtTWV0aG9kICgpIDx0eXBlIC0xMT47CiBmdW5jICh2IDx0eXBlIDYyPikgT3ZlcmZsb3dGbG9hdCAoeCA8dHlwZSAtMTA+KSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSA2Mj4pIE1hcEtleXMgKCkgPHR5cGUgODkgW10gPHR5cGUgNjI+PjsKIGZ1bmMgKHYgPHR5cGUgNjI+KSBNZXRob2QgKGkgPHR5cGUgLTExPikgPHR5cGUgNjI+OwogZnVuYyAodiA8dHlwZSA2Mj4pIFNldEludCAoeCA8dHlwZSAtND4pOwogZnVuYyAodiA8dHlwZSA2Mj4pIEZpZWxkIChpIDx0eXBlIC0xMT4pIDx0eXBlIDYyPjsKIGZ1bmMgKHYgPHR5cGUgNjI+KSBTZXRMZW4gKG4gPHR5cGUgLTExPik7CiBmdW5jICh2IDx0eXBlIDYyPikgVW5zYWZlQWRkciAoKSA8dHlwZSAtMTM+OwogZnVuYyAodiA8dHlwZSA2Mj4pIFNsaWNlMyAoaSA8dHlwZSAtMTE+LCBqIDx0eXBlIC0xMT4sIGsgPHR5cGUgLTExPikgPHR5cGUgNjI+OwogZnVuYyAodiA8dHlwZSA2Mj4pIENvbXBsZXggKCkgPHR5cGUgLTE4PjsKIGZ1bmMgKHYgPHR5cGUgNjI+KSBTZXRDYXAgKG4gPHR5cGUgLTExPik7CiBmdW5jICh2IDx0eXBlIDYyPikgQ2FsbFNsaWNlIChpbiA8dHlwZSA5MCBbXSA8dHlwZSA2Mj4+KSA8dHlwZSA5MSBbXSA8dHlwZSA2Mj4+OwogZnVuYyAodiA8dHlwZSA2Mj4pIEZsb2F0ICgpIDx0eXBlIC0xMD47CiBmdW5jICh2IDx0eXBlIDYyPikgLnJlZmxlY3QuYXNzaWduVG8gKGNvbnRleHQgPHR5cGUgLTE2PiwgZHN0IDx0eXBlIDY0PiwgdGFyZ2V0IDx0eXBlIDY3PikgPHR5cGUgNjI+OwogZnVuYyAodiA8dHlwZSA2Mj4pIC5yZWZsZWN0LnJ1bmVzICgpIDx0eXBlIDkyIFtdIDx0eXBlIC0yMT4+OwogZnVuYyAodiA8dHlwZSA2Mj4pIEVsZW0gKCkgPHR5cGUgNjI+OwogZnVuYyAodiA8dHlwZSA2Mj4pIEluZGV4IChpIDx0eXBlIC0xMT4pIDx0eXBlIDYyPjsKIGZ1bmMgKHYgPHR5cGUgNjI+KSBUcnlTZW5kICh4IDx0eXBlIDYyPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgNjI+KSBTZXRCb29sICh4IDx0eXBlIC0xNT4pOwogZnVuYyAodiA8dHlwZSA2Mj4pIFNldEJ5dGVzICh4IDx0eXBlIDkzIFtdIDx0eXBlIC0yMD4+KTsKIGZ1bmMgKHYgPHR5cGUgNjI+KSAucmVmbGVjdC5zZXRSdW5lcyAoeCA8dHlwZSA5NCBbXSA8dHlwZSAtMjE+Pik7CiBmdW5jICh2IDx0eXBlIDYyPikgRmllbGRCeU5hbWVGdW5jIChtYXRjaCA8dHlwZSA5NSAoPyA8dHlwZSAtMTY+KSA8dHlwZSAtMTU+PikgPHR5cGUgNjI+OwogZnVuYyAodiA8dHlwZSA2Mj4pIE92ZXJmbG93VWludCAoeCA8dHlwZSAtOD4pIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDYyPikgTWFwSW5kZXggKGtleSA8dHlwZSA2Mj4pIDx0eXBlIDYyPjsKIGZ1bmMgKHYgPHR5cGUgNjI+KSBJc05pbCAoKSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSA2Mj4pIFNldFBvaW50ZXIgKHggPHR5cGUgNjc+KTsKIGZ1bmMgKHYgPHR5cGUgNjI+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHYgPHR5cGUgNjI+KSAucmVmbGVjdC5jYWxsIChvcCA8dHlwZSAtMTY+LCBpbiA8dHlwZSA5NiBbXSA8dHlwZSA2Mj4+KSA8dHlwZSA5NyBbXSA8dHlwZSA2Mj4+OwogZnVuYyAodiA8dHlwZSA2Mj4pIEludCAoKSA8dHlwZSAtND47CiBmdW5jICh2IDx0eXBlIDYyPikgUmVjdiAoKSAoeCA8dHlwZSA2Mj4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAodiA8dHlwZSA2Mj4pIENvbnZlcnQgKHQgPHR5cGUgNTg+KSA8dHlwZSA2Mj47CiBmdW5jICh2IDx0eXBlIDYyPikgS2luZCAoKSA8dHlwZSA4ND47CiBmdW5jICh2IDx0eXBlIDYyPikgSW50ZXJmYWNlRGF0YSAoKSA8dHlwZSA5OCBbMiBdIDx0eXBlIC0xMz4+OwogZnVuYyAodiA8dHlwZSA2Mj4pIFNldE1hcEluZGV4IChrZXkgPHR5cGUgNjI+LCB2YWwgPHR5cGUgNjI+KTsKIGZ1bmMgKHYgPHR5cGUgNjI+KSBDYWxsIChpbiA8dHlwZSA5OSBbXSA8dHlwZSA2Mj4+KSA8dHlwZSAxMDAgW10gPHR5cGUgNjI+PjsKIGZ1bmMgKHYgPHR5cGUgNjI+KSBTZXQgKHggPHR5cGUgNjI+KTsKIGZ1bmMgKHYgPHR5cGUgNjI+KSBTZXRVaW50ICh4IDx0eXBlIC04Pik7CiBmdW5jICh2IDx0eXBlIDYyPikgQm9vbCAoKSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSA2Mj4pIFNsaWNlIChpIDx0eXBlIC0xMT4sIGogPHR5cGUgLTExPikgPHR5cGUgNjI+OwogZnVuYyAodiA8dHlwZSA2Mj4pIC5yZWZsZWN0LnBvaW50ZXIgKCkgPHR5cGUgNjc+OwogZnVuYyAodiA8dHlwZSA2Mj4pIFBvaW50ZXIgKCkgPHR5cGUgLTEzPjsKIGZ1bmMgKHYgPHR5cGUgNjI+KSBDYXAgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHYgPHR5cGUgNjI+KSBTZXRTdHJpbmcgKHggPHR5cGUgLTE2Pik7CiBmdW5jICh2IDx0eXBlIDYyPikgTGVuICgpIDx0eXBlIC0xMT47CiBmdW5jICh2IDx0eXBlIDYyPikgVHJ5UmVjdiAoKSAoeCA8dHlwZSA2Mj4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAodiA8dHlwZSA2Mj4pIENsb3NlICgpOwogZnVuYyAodiA8dHlwZSA2Mj4pIENhbkFkZHIgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgNjI+KSBDYW5TZXQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgNjI+KSAucmVmbGVjdC5zZW5kICh4IDx0eXBlIDYyPiwgbmIgPHR5cGUgLTE1PikgKHNlbGVjdGVkIDx0eXBlIC0xNT4pOwogZnVuYyAodiA8dHlwZSA2Mj4pIEZpZWxkQnlJbmRleCAoaW5kZXggPHR5cGUgMTAxIFtdIDx0eXBlIC0xMT4+KSA8dHlwZSA2Mj47CiBmdW5jICh2IDx0eXBlIDYyPikgT3ZlcmZsb3dJbnQgKHggPHR5cGUgLTQ+KSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSA2Mj4pIE51bUZpZWxkICgpIDx0eXBlIC0xMT47CiBmdW5jICh2IDx0eXBlIDYyPikgU2V0RmxvYXQgKHggPHR5cGUgLTEwPik7CiBmdW5jICh2IDx0eXBlIDYyPikgQ2FuSW50ZXJmYWNlICgpIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDYyPikgU2V0Q29tcGxleCAoeCA8dHlwZSAtMTg+KTsKIGZ1bmMgKHYgPHR5cGUgNjI+KSBBZGRyICgpIDx0eXBlIDYyPjsKPjsgSW5kZXggPHR5cGUgLTExPjsgfT4+OyBNZXRob2RCeU5hbWUgKD8gPHR5cGUgLTE2PikgKD8gPHR5cGUgNjA+LCA/IDx0eXBlIC0xNT4pOyBOdW1NZXRob2QgKCkgPHR5cGUgLTExPjsgTmFtZSAoKSA8dHlwZSAtMTY+OyBQa2dQYXRoICgpIDx0eXBlIC0xNj47IFNpemUgKCkgPHR5cGUgLTEzPjsgU3RyaW5nICgpIDx0eXBlIC0xNj47IC5yZWZsZWN0LnJhd1N0cmluZyAoKSA8dHlwZSAtMTY+OyBLaW5kICgpIDx0eXBlIDg0PjsgSW1wbGVtZW50cyAodSA8dHlwZSA1OD4pIDx0eXBlIC0xNT47IEFzc2lnbmFibGVUbyAodSA8dHlwZSA1OD4pIDx0eXBlIC0xNT47IENvbnZlcnRpYmxlVG8gKHUgPHR5cGUgNTg+KSA8dHlwZSAtMTU+OyBDb21wYXJhYmxlICgpIDx0eXBlIC0xNT47IEJpdHMgKCkgPHR5cGUgLTExPjsgQ2hhbkRpciAoKSA8dHlwZSA3OD47IElzVmFyaWFkaWMgKCkgPHR5cGUgLTE1PjsgRWxlbSAoKSA8dHlwZSA1OD47IEZpZWxkIChpIDx0eXBlIC0xMT4pIDx0eXBlIDgwPjsgRmllbGRCeUluZGV4IChpbmRleCA8dHlwZSAxMDIgW10gPHR5cGUgLTExPj4pIDx0eXBlIDgwPjsgRmllbGRCeU5hbWUgKG5hbWUgPHR5cGUgLTE2PikgKD8gPHR5cGUgODA+LCA/IDx0eXBlIC0xNT4pOyBGaWVsZEJ5TmFtZUZ1bmMgKG1hdGNoIDx0eXBlIDEwMyAoPyA8dHlwZSAtMTY+KSA8dHlwZSAtMTU+PikgKD8gPHR5cGUgODA+LCA/IDx0eXBlIC0xNT4pOyBJbiAoaSA8dHlwZSAtMTE+KSA8dHlwZSA1OD47IEtleSAoKSA8dHlwZSA1OD47IExlbiAoKSA8dHlwZSAtMTE+OyBOdW1GaWVsZCAoKSA8dHlwZSAtMTE+OyBOdW1JbiAoKSA8dHlwZSAtMTE+OyBOdW1PdXQgKCkgPHR5cGUgLTExPjsgT3V0IChpIDx0eXBlIC0xMT4pIDx0eXBlIDU4PjsgLnJlZmxlY3QuY29tbW9uICgpIDx0eXBlIDc2PjsgLnJlZmxlY3QudW5jb21tb24gKCkgPHR5cGUgNzA+OyB9Pj5dIDx0eXBlIDEwNCBtYXAgWzx0eXBlIDM+XSA8dHlwZSAxMDUgKjx0eXBlIDEwNiAqPHR5cGUgMTA3ICIuZW5jb2RpbmcvZ29iLmRlY0VuZ2luZSIgPHR5cGUgMTA4IHN0cnVjdCB7IC5lbmNvZGluZy9nb2IuaW5zdHIgPHR5cGUgMTA5IFtdIDx0eXBlIDExMCAiLmVuY29kaW5nL2dvYi5kZWNJbnN0ciIgPHR5cGUgMTExIHN0cnVjdCB7IC5lbmNvZGluZy9nb2Iub3AgPHR5cGUgMTEyICIuZW5jb2RpbmcvZ29iLmRlY09wIiA8dHlwZSAxMTMgKGkgPHR5cGUgMTE0ICo8dHlwZSAxMTA+Piwgc3RhdGUgPHR5cGUgMTE1ICo8dHlwZSAxMTYgIi5lbmNvZGluZy9nb2IuZGVjb2RlclN0YXRlIiA8dHlwZSAxMTcgc3RydWN0IHsgLmVuY29kaW5nL2dvYi5kZWMgPHR5cGUgMTE4ICo8dHlwZSA5Pj47IC5lbmNvZGluZy9nb2IuYiA8dHlwZSAxMTkgKjx0eXBlIDE3Pj47IC5lbmNvZGluZy9nb2IuZmllbGRudW0gPHR5cGUgLTExPjsgLmVuY29kaW5nL2dvYi5idWYgPHR5cGUgMTIwIFtdIDx0eXBlIC0yMD4+OyAuZW5jb2RpbmcvZ29iLm5leHQgPHR5cGUgMTIxICo8dHlwZSAxMTY+PjsgfT4KIGZ1bmMgKHN0YXRlIDx0eXBlIDEyMiAqPHR5cGUgMTE2Pj4pIC5lbmNvZGluZy9nb2IuZGVjb2RlVWludCAoKSAoeCA8dHlwZSAtOD4pOwogZnVuYyAoc3RhdGUgPHR5cGUgMTIyPikgLmVuY29kaW5nL2dvYi5kZWNvZGVJbnQgKCkgPHR5cGUgLTQ+Owo+PiwgdiA8dHlwZSA2Mj4pPj47IC5lbmNvZGluZy9nb2IuZmllbGQgPHR5cGUgLTExPjsgLmVuY29kaW5nL2dvYi5pbmRleCA8dHlwZSAxMjMgW10gPHR5cGUgLTExPj47IC5lbmNvZGluZy9nb2Iub3ZmbCA8dHlwZSAtMTk+OyB9Pj4+OyAuZW5jb2RpbmcvZ29iLm51bUluc3RyIDx0eXBlIC0xMT47IH0+Pj4+Pj47IC5lbmNvZGluZy9nb2IuaWdub3JlckNhY2hlIDx0eXBlIDEyNCBtYXAgWzx0eXBlIDM+XSA8dHlwZSAxMDU+PjsgLmVuY29kaW5nL2dvYi5mcmVlTGlzdCA8dHlwZSAxMTU+OyAuZW5jb2RpbmcvZ29iLmNvdW50QnVmIDx0eXBlIDEyNSBbXSA8dHlwZSAtMjA+PjsgLmVuY29kaW5nL2dvYi5lcnIgPHR5cGUgLTE5PjsgfT4KIGZ1bmMgKGRlYyA8dHlwZSAxMjYgKjx0eXBlIDk+PikgLmVuY29kaW5nL2dvYi5uZXdEZWNvZGVyU3RhdGUgKGJ1ZiA8dHlwZSAyMD4pIDx0eXBlIDExNT47CiBmdW5jIChkZWMgPHR5cGUgMTI3ICo8dHlwZSA5Pj4pIC5lbmNvZGluZy9nb2IuZnJlZURlY29kZXJTdGF0ZSAoZCA8dHlwZSAxMTU+KTsKIGZ1bmMgKGRlYyA8dHlwZSAxMjggKjx0eXBlIDk+PikgLmVuY29kaW5nL2dvYi5kZWNvZGVTaW5nbGUgKGVuZ2luZSA8dHlwZSAxMDY+LCB1dCA8dHlwZSAxMjkgKjx0eXBlIDEzMCAiLmVuY29kaW5nL2dvYi51c2VyVHlwZUluZm8iIDx0eXBlIDEzMSBzdHJ1Y3QgeyAuZW5jb2RpbmcvZ29iLnVzZXIgPHR5cGUgNTg+OyAuZW5jb2RpbmcvZ29iLmJhc2UgPHR5cGUgNTg+OyAuZW5jb2RpbmcvZ29iLmluZGlyIDx0eXBlIC0xMT47IC5lbmNvZGluZy9nb2IuZXh0ZXJuYWxFbmMgPHR5cGUgLTExPjsgLmVuY29kaW5nL2dvYi5leHRlcm5hbERlYyA8dHlwZSAtMTE+OyAuZW5jb2RpbmcvZ29iLmVuY0luZGlyIDx0eXBlIC0xPjsgLmVuY29kaW5nL2dvYi5kZWNJbmRpciA8dHlwZSAtMT47IH0+Pj4sIHZhbHVlIDx0eXBlIDYyPik7CiBmdW5jIChkZWMgPHR5cGUgMTMyICo8dHlwZSA5Pj4pIC5lbmNvZGluZy9nb2IuZGVjb2RlU3RydWN0IChlbmdpbmUgPHR5cGUgMTA2PiwgdXQgPHR5cGUgMTMzICo8dHlwZSAxMzA+PiwgdmFsdWUgPHR5cGUgNjI+KTsKIGZ1bmMgKGRlYyA8dHlwZSAxMzQgKjx0eXBlIDk+PikgLmVuY29kaW5nL2dvYi5pZ25vcmVTdHJ1Y3QgKGVuZ2luZSA8dHlwZSAxMDY+KTsKIGZ1bmMgKGRlYyA8dHlwZSAxMzUgKjx0eXBlIDk+PikgLmVuY29kaW5nL2dvYi5pZ25vcmVTaW5nbGUgKGVuZ2luZSA8dHlwZSAxMDY+KTsKIGZ1bmMgKGRlYyA8dHlwZSAxMzYgKjx0eXBlIDk+PikgLmVuY29kaW5nL2dvYi5kZWNvZGVBcnJheUhlbHBlciAoc3RhdGUgPHR5cGUgMTE1PiwgdmFsdWUgPHR5cGUgNjI+LCBlbGVtT3AgPHR5cGUgMTEyPiwgbGVuZ3RoIDx0eXBlIC0xMT4sIG92ZmwgPHR5cGUgLTE5PiwgaGVscGVyIDx0eXBlIDEzNyAiLmVuY29kaW5nL2dvYi5kZWNIZWxwZXIiIDx0eXBlIDEzOCAoc3RhdGUgPHR5cGUgMTM5ICo8dHlwZSAxMTY+PiwgdiA8dHlwZSA2Mj4sIGxlbmd0aCA8dHlwZSAtMTE+LCBvdmZsIDx0eXBlIC0xOT4pIDx0eXBlIC0xNT4+Pik7CiBmdW5jIChkZWMgPHR5cGUgMTQwICo8dHlwZSA5Pj4pIC5lbmNvZGluZy9nb2IuZGVjb2RlQXJyYXkgKGF0eXAgPHR5cGUgNTg+LCBzdGF0ZSA8dHlwZSAxMTU+LCB2YWx1ZSA8dHlwZSA2Mj4sIGVsZW1PcCA8dHlwZSAxMTI+LCBsZW5ndGggPHR5cGUgLTExPiwgb3ZmbCA8dHlwZSAtMTk+LCBoZWxwZXIgPHR5cGUgMTM3Pik7CiBmdW5jIChkZWMgPHR5cGUgMTQxICo8dHlwZSA5Pj4pIC5lbmNvZGluZy9nb2IuZGVjb2RlTWFwIChtdHlwIDx0eXBlIDU4Piwgc3RhdGUgPHR5cGUgMTE1PiwgdmFsdWUgPHR5cGUgNjI+LCBrZXlPcCA8dHlwZSAxMTI+LCBlbGVtT3AgPHR5cGUgMTEyPiwgb3ZmbCA8dHlwZSAtMTk+KTsKIGZ1bmMgKGRlYyA8dHlwZSAxNDIgKjx0eXBlIDk+PikgLmVuY29kaW5nL2dvYi5pZ25vcmVBcnJheUhlbHBlciAoc3RhdGUgPHR5cGUgMTE1PiwgZWxlbU9wIDx0eXBlIDExMj4sIGxlbmd0aCA8dHlwZSAtMTE+KTsKIGZ1bmMgKGRlYyA8dHlwZSAxNDMgKjx0eXBlIDk+PikgLmVuY29kaW5nL2dvYi5pZ25vcmVBcnJheSAoc3RhdGUgPHR5cGUgMTE1PiwgZWxlbU9wIDx0eXBlIDExMj4sIGxlbmd0aCA8dHlwZSAtMTE+KTsKIGZ1bmMgKGRlYyA8dHlwZSAxNDQgKjx0eXBlIDk+PikgLmVuY29kaW5nL2dvYi5pZ25vcmVNYXAgKHN0YXRlIDx0eXBlIDExNT4sIGtleU9wIDx0eXBlIDExMj4sIGVsZW1PcCA8dHlwZSAxMTI+KTsKIGZ1bmMgKGRlYyA8dHlwZSAxNDUgKjx0eXBlIDk+PikgLmVuY29kaW5nL2dvYi5kZWNvZGVTbGljZSAoc3RhdGUgPHR5cGUgMTE1PiwgdmFsdWUgPHR5cGUgNjI+LCBlbGVtT3AgPHR5cGUgMTEyPiwgb3ZmbCA8dHlwZSAtMTk+LCBoZWxwZXIgPHR5cGUgMTM3Pik7CiBmdW5jIChkZWMgPHR5cGUgMTQ2ICo8dHlwZSA5Pj4pIC5lbmNvZGluZy9nb2IuaWdub3JlU2xpY2UgKHN0YXRlIDx0eXBlIDExNT4sIGVsZW1PcCA8dHlwZSAxMTI+KTsKIGZ1bmMgKGRlYyA8dHlwZSAxNDcgKjx0eXBlIDk+PikgLmVuY29kaW5nL2dvYi5kZWNvZGVJbnRlcmZhY2UgKGl0eXAgPHR5cGUgNTg+LCBzdGF0ZSA8dHlwZSAxMTU+LCB2YWx1ZSA8dHlwZSA2Mj4pOwogZnVuYyAoZGVjIDx0eXBlIDE0OCAqPHR5cGUgOT4+KSAuZW5jb2RpbmcvZ29iLmlnbm9yZUludGVyZmFjZSAoc3RhdGUgPHR5cGUgMTE1Pik7CiBmdW5jIChkZWMgPHR5cGUgMTQ5ICo8dHlwZSA5Pj4pIC5lbmNvZGluZy9nb2IuZGVjb2RlR29iRGVjb2RlciAodXQgPHR5cGUgMTUwICo8dHlwZSAxMzA+Piwgc3RhdGUgPHR5cGUgMTE1PiwgdmFsdWUgPHR5cGUgNjI+KTsKIGZ1bmMgKGRlYyA8dHlwZSAxNTEgKjx0eXBlIDk+PikgLmVuY29kaW5nL2dvYi5pZ25vcmVHb2JEZWNvZGVyIChzdGF0ZSA8dHlwZSAxMTU+KTsKIGZ1bmMgKGRlYyA8dHlwZSAxNTIgKjx0eXBlIDk+PikgLmVuY29kaW5nL2dvYi5kZWNPcEZvciAod2lyZUlkIDx0eXBlIDM+LCBydCA8dHlwZSA1OD4sIG5hbWUgPHR5cGUgLTE2PiwgaW5Qcm9ncmVzcyA8dHlwZSAxNTMgbWFwIFs8dHlwZSA1OD5dIDx0eXBlIDE1NCAqPHR5cGUgMTEyPj4+KSA8dHlwZSAxNTQ+OwogZnVuYyAoZGVjIDx0eXBlIDE1NSAqPHR5cGUgOT4+KSAuZW5jb2RpbmcvZ29iLmRlY0lnbm9yZU9wRm9yICh3aXJlSWQgPHR5cGUgMz4pIDx0eXBlIDExMj47CiBmdW5jIChkZWMgPHR5cGUgMTU2ICo8dHlwZSA5Pj4pIC5lbmNvZGluZy9nb2IuZ29iRGVjb2RlT3BGb3IgKHV0IDx0eXBlIDE1NyAqPHR5cGUgMTMwPj4pIDx0eXBlIDE1ND47CiBmdW5jIChkZWMgPHR5cGUgMTU4ICo8dHlwZSA5Pj4pIC5lbmNvZGluZy9nb2IuY29tcGF0aWJsZVR5cGUgKGZyIDx0eXBlIDU4PiwgZncgPHR5cGUgMz4sIGluUHJvZ3Jlc3MgPHR5cGUgMTU5IG1hcCBbPHR5cGUgNTg+XSA8dHlwZSAzPj4pIDx0eXBlIC0xNT47CiBmdW5jIChkZWMgPHR5cGUgMTYwICo8dHlwZSA5Pj4pIC5lbmNvZGluZy9nb2IudHlwZVN0cmluZyAocmVtb3RlSWQgPHR5cGUgMz4pIDx0eXBlIC0xNj47CiBmdW5jIChkZWMgPHR5cGUgMTYxICo8dHlwZSA5Pj4pIC5lbmNvZGluZy9nb2IuY29tcGlsZVNpbmdsZSAocmVtb3RlSWQgPHR5cGUgMz4sIHV0IDx0eXBlIDE2MiAqPHR5cGUgMTMwPj4pIChlbmdpbmUgPHR5cGUgMTA2PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZGVjIDx0eXBlIDE2MyAqPHR5cGUgOT4+KSAuZW5jb2RpbmcvZ29iLmNvbXBpbGVJZ25vcmVTaW5nbGUgKHJlbW90ZUlkIDx0eXBlIDM+KSAoZW5naW5lIDx0eXBlIDEwNj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGRlYyA8dHlwZSAxNjQgKjx0eXBlIDk+PikgLmVuY29kaW5nL2dvYi5jb21waWxlRGVjIChyZW1vdGVJZCA8dHlwZSAzPiwgdXQgPHR5cGUgMTY1ICo8dHlwZSAxMzA+PikgKGVuZ2luZSA8dHlwZSAxMDY+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChkZWMgPHR5cGUgMTY2ICo8dHlwZSA5Pj4pIC5lbmNvZGluZy9nb2IuZ2V0RGVjRW5naW5lUHRyIChyZW1vdGVJZCA8dHlwZSAzPiwgdXQgPHR5cGUgMTY3ICo8dHlwZSAxMzA+PikgKGVuZ2luZVB0ciA8dHlwZSAxMDU+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChkZWMgPHR5cGUgMTY4ICo8dHlwZSA5Pj4pIC5lbmNvZGluZy9nb2IuZ2V0SWdub3JlRW5naW5lUHRyICh3aXJlSWQgPHR5cGUgMz4pIChlbmdpbmVQdHIgPHR5cGUgMTA1PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZGVjIDx0eXBlIDE2OSAqPHR5cGUgOT4+KSAuZW5jb2RpbmcvZ29iLmRlY29kZVZhbHVlICh3aXJlSWQgPHR5cGUgMz4sIHZhbHVlIDx0eXBlIDYyPik7CiBmdW5jIChkZWMgPHR5cGUgMTcwICo8dHlwZSA5Pj4pIC5lbmNvZGluZy9nb2IuZGVjb2RlSWdub3JlZFZhbHVlICh3aXJlSWQgPHR5cGUgMz4pOwogZnVuYyAoZGVjIDx0eXBlIDE3MSAqPHR5cGUgOT4+KSAuZW5jb2RpbmcvZ29iLnJlY3ZUeXBlIChpZCA8dHlwZSAzPik7CiBmdW5jIChkZWMgPHR5cGUgMTcxPikgLmVuY29kaW5nL2dvYi5yZWN2TWVzc2FnZSAoKSA8dHlwZSAtMTU+OwogZnVuYyAoZGVjIDx0eXBlIDE3MT4pIC5lbmNvZGluZy9nb2IucmVhZE1lc3NhZ2UgKG5ieXRlcyA8dHlwZSAtMTE+KTsKIGZ1bmMgKGRlYyA8dHlwZSAxNzE+KSAuZW5jb2RpbmcvZ29iLm5leHRJbnQgKCkgPHR5cGUgLTQ+OwogZnVuYyAoZGVjIDx0eXBlIDE3MT4pIC5lbmNvZGluZy9nb2IubmV4dFVpbnQgKCkgPHR5cGUgLTg+OwogZnVuYyAoZGVjIDx0eXBlIDE3MT4pIC5lbmNvZGluZy9nb2IuZGVjb2RlVHlwZVNlcXVlbmNlIChpc0ludGVyZmFjZSA8dHlwZSAtMTU+KSA8dHlwZSAzPjsKIGZ1bmMgKGRlYyA8dHlwZSAxNzE+KSBEZWNvZGUgKGUgPHR5cGUgMTcyIGludGVyZmFjZSB7IH0+KSA8dHlwZSAtMTk+OwogZnVuYyAoZGVjIDx0eXBlIDE3MT4pIERlY29kZVZhbHVlICh2IDx0eXBlIDYyPikgPHR5cGUgLTE5PjsKPjsKdHlwZSA8dHlwZSAxNzMgIkVuY29kZXIiIDx0eXBlIDE3NCBzdHJ1Y3QgeyAuZW5jb2RpbmcvZ29iLm11dGV4IDx0eXBlIDExPjsgLmVuY29kaW5nL2dvYi53IDx0eXBlIDE3NSBbXSA8dHlwZSAxNzYgImlvLldyaXRlciIgPHR5cGUgMTc3IGludGVyZmFjZSB7IFdyaXRlIChwIDx0eXBlIDE3OCBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj4+OyAuZW5jb2RpbmcvZ29iLnNlbnQgPHR5cGUgMTc5IG1hcCBbPHR5cGUgNTg+XSA8dHlwZSAzPj47IC5lbmNvZGluZy9nb2IuY291bnRTdGF0ZSA8dHlwZSAxODAgKjx0eXBlIDE4MSAiLmVuY29kaW5nL2dvYi5lbmNvZGVyU3RhdGUiIDx0eXBlIDE4MiBzdHJ1Y3QgeyAuZW5jb2RpbmcvZ29iLmVuYyA8dHlwZSAxODMgKjx0eXBlIDE3Mz4+OyAuZW5jb2RpbmcvZ29iLmIgPHR5cGUgMTg0ICo8dHlwZSAxODUgIi5lbmNvZGluZy9nb2IuZW5jQnVmZmVyIiA8dHlwZSAxODYgc3RydWN0IHsgLmVuY29kaW5nL2dvYi5kYXRhIDx0eXBlIDE4NyBbXSA8dHlwZSAtMjA+PjsgLmVuY29kaW5nL2dvYi5zY3JhdGNoIDx0eXBlIDE4OCBbNjQgXSA8dHlwZSAtMjA+PjsgfT4KIGZ1bmMgKGUgPHR5cGUgMTg5ICo8dHlwZSAxODU+PikgV3JpdGVCeXRlIChjIDx0eXBlIC0yMD4pOwogZnVuYyAoZSA8dHlwZSAxODk+KSBXcml0ZSAocCA8dHlwZSAxOTAgW10gPHR5cGUgLTIwPj4pICg/IDx0eXBlIC0xMT4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChlIDx0eXBlIDE4OT4pIFdyaXRlU3RyaW5nIChzIDx0eXBlIC0xNj4pOwogZnVuYyAoZSA8dHlwZSAxODk+KSBMZW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKGUgPHR5cGUgMTg5PikgQnl0ZXMgKCkgPHR5cGUgMTkxIFtdIDx0eXBlIC0yMD4+OwogZnVuYyAoZSA8dHlwZSAxODk+KSBSZXNldCAoKTsKPj47IC5lbmNvZGluZy9nb2Iuc2VuZFplcm8gPHR5cGUgLTE1PjsgLmVuY29kaW5nL2dvYi5maWVsZG51bSA8dHlwZSAtMTE+OyAuZW5jb2RpbmcvZ29iLmJ1ZiA8dHlwZSAxOTIgWzkgXSA8dHlwZSAtMjA+PjsgLmVuY29kaW5nL2dvYi5uZXh0IDx0eXBlIDE5MyAqPHR5cGUgMTgxPj47IH0+CiBmdW5jIChzdGF0ZSA8dHlwZSAxOTQgKjx0eXBlIDE4MT4+KSAuZW5jb2RpbmcvZ29iLmVuY29kZVVpbnQgKHggPHR5cGUgLTg+KTsKIGZ1bmMgKHN0YXRlIDx0eXBlIDE5ND4pIC5lbmNvZGluZy9nb2IuZW5jb2RlSW50IChpIDx0eXBlIC00Pik7CiBmdW5jIChzdGF0ZSA8dHlwZSAxOTQ+KSAuZW5jb2RpbmcvZ29iLnVwZGF0ZSAoaW5zdHIgPHR5cGUgMTk1ICo8dHlwZSAxOTYgIi5lbmNvZGluZy9nb2IuZW5jSW5zdHIiIDx0eXBlIDE5NyBzdHJ1Y3QgeyAuZW5jb2RpbmcvZ29iLm9wIDx0eXBlIDE5OCAiLmVuY29kaW5nL2dvYi5lbmNPcCIgPHR5cGUgMTk5IChpIDx0eXBlIDIwMCAqPHR5cGUgMTk2Pj4sIHN0YXRlIDx0eXBlIDE5ND4sIHYgPHR5cGUgNjI+KT4+OyAuZW5jb2RpbmcvZ29iLmZpZWxkIDx0eXBlIC0xMT47IC5lbmNvZGluZy9nb2IuaW5kZXggPHR5cGUgMjAxIFtdIDx0eXBlIC0xMT4+OyAuZW5jb2RpbmcvZ29iLmluZGlyIDx0eXBlIC0xMT47IH0+Pj4pOwo+PjsgLmVuY29kaW5nL2dvYi5mcmVlTGlzdCA8dHlwZSAxODA+OyAuZW5jb2RpbmcvZ29iLmJ5dGVCdWYgPHR5cGUgMTg1PjsgLmVuY29kaW5nL2dvYi5lcnIgPHR5cGUgLTE5PjsgfT4KIGZ1bmMgKGVuYyA8dHlwZSAyMDIgKjx0eXBlIDE3Mz4+KSAuZW5jb2RpbmcvZ29iLm5ld0VuY29kZXJTdGF0ZSAoYiA8dHlwZSAxODk+KSA8dHlwZSAxODA+OwogZnVuYyAoZW5jIDx0eXBlIDIwMyAqPHR5cGUgMTczPj4pIC5lbmNvZGluZy9nb2IuZnJlZUVuY29kZXJTdGF0ZSAoZSA8dHlwZSAxODA+KTsKIGZ1bmMgKGVuYyA8dHlwZSAyMDQgKjx0eXBlIDE3Mz4+KSAuZW5jb2RpbmcvZ29iLmVuY29kZVNpbmdsZSAoYiA8dHlwZSAxODk+LCBlbmdpbmUgPHR5cGUgMjA1ICo8dHlwZSAyMDYgIi5lbmNvZGluZy9nb2IuZW5jRW5naW5lIiA8dHlwZSAyMDcgc3RydWN0IHsgLmVuY29kaW5nL2dvYi5pbnN0ciA8dHlwZSAyMDggW10gPHR5cGUgMTk2Pj47IH0+Pj4sIHZhbHVlIDx0eXBlIDYyPik7CiBmdW5jIChlbmMgPHR5cGUgMjA5ICo8dHlwZSAxNzM+PikgLmVuY29kaW5nL2dvYi5lbmNvZGVTdHJ1Y3QgKGIgPHR5cGUgMTg5PiwgZW5naW5lIDx0eXBlIDIwNT4sIHZhbHVlIDx0eXBlIDYyPik7CiBmdW5jIChlbmMgPHR5cGUgMjEwICo8dHlwZSAxNzM+PikgLmVuY29kaW5nL2dvYi5lbmNvZGVBcnJheSAoYiA8dHlwZSAxODk+LCB2YWx1ZSA8dHlwZSA2Mj4sIG9wIDx0eXBlIDE5OD4sIGVsZW1JbmRpciA8dHlwZSAtMTE+LCBsZW5ndGggPHR5cGUgLTExPiwgaGVscGVyIDx0eXBlIDIxMSAiLmVuY29kaW5nL2dvYi5lbmNIZWxwZXIiIDx0eXBlIDIxMiAoc3RhdGUgPHR5cGUgMjEzICo8dHlwZSAxODE+PiwgdiA8dHlwZSA2Mj4pIDx0eXBlIC0xNT4+Pik7CiBmdW5jIChlbmMgPHR5cGUgMjE0ICo8dHlwZSAxNzM+PikgLmVuY29kaW5nL2dvYi5lbmNvZGVNYXAgKGIgPHR5cGUgMTg5PiwgbXYgPHR5cGUgNjI+LCBrZXlPcCA8dHlwZSAxOTg+LCBlbGVtT3AgPHR5cGUgMTk4Piwga2V5SW5kaXIgPHR5cGUgLTExPiwgZWxlbUluZGlyIDx0eXBlIC0xMT4pOwogZnVuYyAoZW5jIDx0eXBlIDIxNSAqPHR5cGUgMTczPj4pIC5lbmNvZGluZy9nb2IuZW5jb2RlSW50ZXJmYWNlIChiIDx0eXBlIDE4OT4sIGl2IDx0eXBlIDYyPik7CiBmdW5jIChlbmMgPHR5cGUgMjE2ICo8dHlwZSAxNzM+PikgLmVuY29kaW5nL2dvYi5lbmNvZGVHb2JFbmNvZGVyIChiIDx0eXBlIDE4OT4sIHV0IDx0eXBlIDIxNyAqPHR5cGUgMTMwPj4sIHYgPHR5cGUgNjI+KTsKIGZ1bmMgKGVuYyA8dHlwZSAyMTggKjx0eXBlIDE3Mz4+KSAuZW5jb2RpbmcvZ29iLmVuY29kZSAoYiA8dHlwZSAxODk+LCB2YWx1ZSA8dHlwZSA2Mj4sIHV0IDx0eXBlIDIxOSAqPHR5cGUgMTMwPj4pOwogZnVuYyAoZW5jIDx0eXBlIDIyMCAqPHR5cGUgMTczPj4pIC5lbmNvZGluZy9nb2Iud3JpdGVyICgpIDx0eXBlIDE3Nj47CiBmdW5jIChlbmMgPHR5cGUgMjIwPikgLmVuY29kaW5nL2dvYi5wdXNoV3JpdGVyICh3IDx0eXBlIDE3Nj4pOwogZnVuYyAoZW5jIDx0eXBlIDIyMD4pIC5lbmNvZGluZy9nb2IucG9wV3JpdGVyICgpOwogZnVuYyAoZW5jIDx0eXBlIDIyMD4pIC5lbmNvZGluZy9nb2Iuc2V0RXJyb3IgKGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGVuYyA8dHlwZSAyMjA+KSAuZW5jb2RpbmcvZ29iLndyaXRlTWVzc2FnZSAodyA8dHlwZSAxNzY+LCBiIDx0eXBlIDE4OT4pOwogZnVuYyAoZW5jIDx0eXBlIDIyMD4pIC5lbmNvZGluZy9nb2Iuc2VuZEFjdHVhbFR5cGUgKHcgPHR5cGUgMTc2Piwgc3RhdGUgPHR5cGUgMTgwPiwgdXQgPHR5cGUgMjIxICo8dHlwZSAxMzA+PiwgYWN0dWFsIDx0eXBlIDU4PikgKHNlbnQgPHR5cGUgLTE1Pik7CiBmdW5jIChlbmMgPHR5cGUgMjIwPikgLmVuY29kaW5nL2dvYi5zZW5kVHlwZSAodyA8dHlwZSAxNzY+LCBzdGF0ZSA8dHlwZSAxODA+LCBvcmlndCA8dHlwZSA1OD4pIChzZW50IDx0eXBlIC0xNT4pOwogZnVuYyAoZW5jIDx0eXBlIDIyMD4pIEVuY29kZSAoZSA8dHlwZSAyMjIgaW50ZXJmYWNlIHsgfT4pIDx0eXBlIC0xOT47CiBmdW5jIChlbmMgPHR5cGUgMjIwPikgLmVuY29kaW5nL2dvYi5zZW5kVHlwZURlc2NyaXB0b3IgKHcgPHR5cGUgMTc2Piwgc3RhdGUgPHR5cGUgMTgwPiwgdXQgPHR5cGUgMjIzICo8dHlwZSAxMzA+Pik7CiBmdW5jIChlbmMgPHR5cGUgMjIwPikgLmVuY29kaW5nL2dvYi5zZW5kVHlwZUlkIChzdGF0ZSA8dHlwZSAxODA+LCB1dCA8dHlwZSAyMjQgKjx0eXBlIDEzMD4+KTsKIGZ1bmMgKGVuYyA8dHlwZSAyMjA+KSBFbmNvZGVWYWx1ZSAodmFsdWUgPHR5cGUgNjI+KSA8dHlwZSAtMTk+Owo+Owp0eXBlIDx0eXBlIDIyNSAiR29iRGVjb2RlciIgPHR5cGUgMjI2IGludGVyZmFjZSB7IEdvYkRlY29kZSAoPyA8dHlwZSAyMjcgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47IH0+PjsKdHlwZSA8dHlwZSAyMjggIkdvYkVuY29kZXIiIDx0eXBlIDIyOSBpbnRlcmZhY2UgeyBHb2JFbmNvZGUgKCkgKD8gPHR5cGUgMjMwIFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOyB9Pj47CmZ1bmMgTmV3RGVjb2RlciAociA8dHlwZSAxND4pIDx0eXBlIDE3MT47CmZ1bmMgTmV3RW5jb2RlciAodyA8dHlwZSAxNzY+KSA8dHlwZSAyMjA+OwpmdW5jIFJlZ2lzdGVyICh2YWx1ZSA8dHlwZSAyMzEgaW50ZXJmYWNlIHsgfT4pOwpmdW5jIFJlZ2lzdGVyTmFtZSAobmFtZSA8dHlwZSAtMTY+LCB2YWx1ZSA8dHlwZSAyMzIgaW50ZXJmYWNlIHsgfT4pOwpjaGVja3N1bSA0ODE1QThGQjgzNUVCNjk2MkE5N0MwMUU0RUFCNDU3NTA1QjBERENEOwoALnN5bXRhYgAuc3RydGFiAC5zaHN0cnRhYgAuZ29fZXhwb3J0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAQAAAAAAAAAAAAAANAAAAHtYAAAAAAAAAAAAAAEAAAAAAAAAEQAAAAMAAAAAAAAAAAAAAK9YAAAmAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAADYWAAAIAAAAAQAAAACAAAABAAAABAAAAAJAAAAAwAAAAAAAAAAAAAA+FgAAAEAAAAAAAAAAAAAAAEAAAAAAAAA