f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAAAQQgAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIGpzb247CnBrZ3BhdGggZW5jb2RpbmcvanNvbjsKcHJpb3JpdHkgNzsKaW1wb3J0IGJ5dGVzIGJ5dGVzICJieXRlcyI7CmltcG9ydCBlbmNvZGluZyBlbmNvZGluZyAiZW5jb2RpbmciOwppbXBvcnQgYmFzZTY0IGVuY29kaW5nL2Jhc2U2NCAiZW5jb2RpbmcvYmFzZTY0IjsKaW1wb3J0IGVycm9ycyBlcnJvcnMgImVycm9ycyI7CmltcG9ydCBmbXQgZm10ICJmbXQiOwppbXBvcnQgaW8gaW8gImlvIjsKaW1wb3J0IG1hdGggbWF0aCAibWF0aCI7CmltcG9ydCByZWZsZWN0IHJlZmxlY3QgInJlZmxlY3QiOwppbXBvcnQgcnVudGltZSBydW50aW1lICJydW50aW1lIjsKaW1wb3J0IHNvcnQgc29ydCAic29ydCI7CmltcG9ydCBzdHJjb252IHN0cmNvbnYgInN0cmNvbnYiOwppbXBvcnQgc3RyaW5ncyBzdHJpbmdzICJzdHJpbmdzIjsKaW1wb3J0IHN5bmMgc3luYyAic3luYyI7CmltcG9ydCB1bmljb2RlIHVuaWNvZGUgInVuaWNvZGUiOwppbXBvcnQgdXRmMTYgdW5pY29kZS91dGYxNiAidW5pY29kZS91dGYxNiI7CmltcG9ydCB1dGY4IHVuaWNvZGUvdXRmOCAidW5pY29kZS91dGY4IjsKaW5pdCBqc29uIGVuY29kaW5nX2pzb24uLmltcG9ydCA3IG1hdGggbWF0aC4uaW1wb3J0IDEgcnVudGltZSBydW50aW1lLi5pbXBvcnQgMSB1bmljb2RlIHVuaWNvZGUuLmltcG9ydCAxIHN0cmNvbnYgc3RyY29udi4uaW1wb3J0IDIgc3luYyBzeW5jLi5pbXBvcnQgMiBpbyBpby4uaW1wb3J0IDMgcmVmbGVjdCByZWZsZWN0Li5pbXBvcnQgMyBzeXNjYWxsIHN5c2NhbGwuLmltcG9ydCAzIGJ5dGVzIGJ5dGVzLi5pbXBvcnQgNCB0aW1lIHRpbWUuLmltcG9ydCA0IGJhc2U2NCBlbmNvZGluZ19iYXNlNjQuLmltcG9ydCA1IG9zIG9zLi5pbXBvcnQgNSBmbXQgZm10Li5pbXBvcnQgNjsKZnVuYyBDb21wYWN0IChkc3QgPHR5cGUgMSAqPHR5cGUgMiAiYnl0ZXMuQnVmZmVyIiA8dHlwZSAzIHN0cnVjdCB7IC5ieXRlcy5idWYgPHR5cGUgNCBbXSA8dHlwZSAtMjA+PjsgLmJ5dGVzLm9mZiA8dHlwZSAtMTE+OyAuYnl0ZXMucnVuZUJ5dGVzIDx0eXBlIDUgWzQgXSA8dHlwZSAtMjA+PjsgLmJ5dGVzLmJvb3RzdHJhcCA8dHlwZSA2IFs2NCBdIDx0eXBlIC0yMD4+OyAuYnl0ZXMubGFzdFJlYWQgPHR5cGUgNyAiLmJ5dGVzLnJlYWRPcCIgPHR5cGUgLTExPj47IH0+CiBmdW5jIChiIDx0eXBlIDggKjx0eXBlIDI+PikgVW5yZWFkQnl0ZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYiA8dHlwZSA4PikgVHJ1bmNhdGUgKG4gPHR5cGUgLTExPik7CiBmdW5jIChiIDx0eXBlIDg+KSBXcml0ZVN0cmluZyAocyA8dHlwZSAtMTY+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDg+KSBSZWFkU3RyaW5nIChkZWxpbSA8dHlwZSAtMjA+KSAobGluZSA8dHlwZSAtMTY+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDg+KSBSZWFkQnl0ZSAoKSAoYyA8dHlwZSAtMjA+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDg+KSBOZXh0IChuIDx0eXBlIC0xMT4pIDx0eXBlIDkgW10gPHR5cGUgLTIwPj47CiBmdW5jIChiIDx0eXBlIDg+KSBXcml0ZVJ1bmUgKHIgPHR5cGUgLTIxPikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSA4PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChiIDx0eXBlIDg+KSBXcml0ZVRvICh3IDx0eXBlIDEwICJpby5Xcml0ZXIiIDx0eXBlIDExIGludGVyZmFjZSB7IFdyaXRlIChwIDx0eXBlIDEyIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PikgKG4gPHR5cGUgLTQ+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDg+KSBSZWFkQnl0ZXMgKGRlbGltIDx0eXBlIC0yMD4pIChsaW5lIDx0eXBlIDEzIFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDg+KSAuYnl0ZXMuZ3JvdyAobiA8dHlwZSAtMTE+KSA8dHlwZSAtMTE+OwogZnVuYyAoYiA8dHlwZSA4PikgUmVhZFJ1bmUgKCkgKHIgPHR5cGUgLTIxPiwgc2l6ZSA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDg+KSBVbnJlYWRSdW5lICgpIDx0eXBlIC0xOT47CiBmdW5jIChiIDx0eXBlIDg+KSBSZWFkIChwIDx0eXBlIDE0IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDg+KSBSZXNldCAoKTsKIGZ1bmMgKGIgPHR5cGUgOD4pIC5ieXRlcy5yZWFkU2xpY2UgKGRlbGltIDx0eXBlIC0yMD4pIChsaW5lIDx0eXBlIDE1IFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDg+KSBXcml0ZUJ5dGUgKGMgPHR5cGUgLTIwPikgPHR5cGUgLTE5PjsKIGZ1bmMgKGIgPHR5cGUgOD4pIFdyaXRlIChwIDx0eXBlIDE2IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDg+KSBSZWFkRnJvbSAociA8dHlwZSAxNyAiaW8uUmVhZGVyIiA8dHlwZSAxOCBpbnRlcmZhY2UgeyBSZWFkIChwIDx0eXBlIDE5IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PikgKG4gPHR5cGUgLTQ+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDg+KSBMZW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKGIgPHR5cGUgOD4pIEdyb3cgKG4gPHR5cGUgLTExPik7CiBmdW5jIChiIDx0eXBlIDg+KSBCeXRlcyAoKSA8dHlwZSAyMCBbXSA8dHlwZSAtMjA+PjsKPj4sIHNyYyA8dHlwZSAyMSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKdHlwZSA8dHlwZSAyMiAiRGVjb2RlciIgPHR5cGUgMjMgc3RydWN0IHsgLmVuY29kaW5nL2pzb24uciA8dHlwZSAxNz47IC5lbmNvZGluZy9qc29uLmJ1ZiA8dHlwZSAyNCBbXSA8dHlwZSAtMjA+PjsgLmVuY29kaW5nL2pzb24uZCA8dHlwZSAyNSAiLmVuY29kaW5nL2pzb24uZGVjb2RlU3RhdGUiIDx0eXBlIDI2IHN0cnVjdCB7IC5lbmNvZGluZy9qc29uLmRhdGEgPHR5cGUgMjcgW10gPHR5cGUgLTIwPj47IC5lbmNvZGluZy9qc29uLm9mZiA8dHlwZSAtMTE+OyAuZW5jb2RpbmcvanNvbi5zY2FuIDx0eXBlIDI4ICIuZW5jb2RpbmcvanNvbi5zY2FubmVyIiA8dHlwZSAyOSBzdHJ1Y3QgeyAuZW5jb2RpbmcvanNvbi5zdGVwIDx0eXBlIDMwICg/IDx0eXBlIDMxICo8dHlwZSAyOD4+LCA/IDx0eXBlIC0xMT4pIDx0eXBlIC0xMT4+OyAuZW5jb2RpbmcvanNvbi5lbmRUb3AgPHR5cGUgLTE1PjsgLmVuY29kaW5nL2pzb24ucGFyc2VTdGF0ZSA8dHlwZSAzMiBbXSA8dHlwZSAtMTE+PjsgLmVuY29kaW5nL2pzb24uZXJyIDx0eXBlIC0xOT47IC5lbmNvZGluZy9qc29uLnJlZG8gPHR5cGUgLTE1PjsgLmVuY29kaW5nL2pzb24ucmVkb0NvZGUgPHR5cGUgLTExPjsgLmVuY29kaW5nL2pzb24ucmVkb1N0YXRlIDx0eXBlIDMzICg/IDx0eXBlIDM0ICo8dHlwZSAyOD4+LCA/IDx0eXBlIC0xMT4pIDx0eXBlIC0xMT4+OyAuZW5jb2RpbmcvanNvbi5ieXRlcyA8dHlwZSAtND47IH0+CiBmdW5jIChzIDx0eXBlIDM1ICo8dHlwZSAyOD4+KSAuZW5jb2RpbmcvanNvbi5yZXNldCAoKTsKIGZ1bmMgKHMgPHR5cGUgMzU+KSAuZW5jb2RpbmcvanNvbi5lb2YgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHMgPHR5cGUgMzU+KSAuZW5jb2RpbmcvanNvbi5wdXNoUGFyc2VTdGF0ZSAocCA8dHlwZSAtMTE+KTsKIGZ1bmMgKHMgPHR5cGUgMzU+KSAuZW5jb2RpbmcvanNvbi5wb3BQYXJzZVN0YXRlICgpOwogZnVuYyAocyA8dHlwZSAzNT4pIC5lbmNvZGluZy9qc29uLmVycm9yIChjIDx0eXBlIC0xMT4sIGNvbnRleHQgPHR5cGUgLTE2PikgPHR5cGUgLTExPjsKIGZ1bmMgKHMgPHR5cGUgMzU+KSAuZW5jb2RpbmcvanNvbi51bmRvIChzY2FuQ29kZSA8dHlwZSAtMTE+KTsKPjsgLmVuY29kaW5nL2pzb24ubmV4dHNjYW4gPHR5cGUgMjg+OyAuZW5jb2RpbmcvanNvbi5zYXZlZEVycm9yIDx0eXBlIC0xOT47IC5lbmNvZGluZy9qc29uLnVzZU51bWJlciA8dHlwZSAtMTU+OyB9PgogZnVuYyAoZCA8dHlwZSAzNiAqPHR5cGUgMjU+PikgLmVuY29kaW5nL2pzb24udW5tYXJzaGFsICh2IDx0eXBlIDM3IGludGVyZmFjZSB7IH0+KSAoZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZCA8dHlwZSAzOCAqPHR5cGUgMjU+PikgLmVuY29kaW5nL2pzb24uaW5pdCAoZGF0YSA8dHlwZSAzOSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgMzg+OwogZnVuYyAoZCA8dHlwZSAzOD4pIC5lbmNvZGluZy9qc29uLmVycm9yIChlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChkIDx0eXBlIDM4PikgLmVuY29kaW5nL2pzb24uc2F2ZUVycm9yIChlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChkIDx0eXBlIDM4PikgLmVuY29kaW5nL2pzb24ubmV4dCAoKSA8dHlwZSA0MCBbXSA8dHlwZSAtMjA+PjsKIGZ1bmMgKGQgPHR5cGUgMzg+KSAuZW5jb2RpbmcvanNvbi5zY2FuV2hpbGUgKG9wIDx0eXBlIC0xMT4pIDx0eXBlIC0xMT47CiBmdW5jIChkIDx0eXBlIDM4PikgLmVuY29kaW5nL2pzb24udmFsdWUgKHYgPHR5cGUgNDEgInJlZmxlY3QuVmFsdWUiIDx0eXBlIDQyIHN0cnVjdCB7IC5yZWZsZWN0LnR5cCA8dHlwZSA0MyAqPHR5cGUgNDQgIi5yZWZsZWN0LnJ0eXBlIiA8dHlwZSA0NSBzdHJ1Y3QgeyAucmVmbGVjdC5raW5kIDx0eXBlIC01PjsgLnJlZmxlY3QuYWxpZ24gPHR5cGUgLTE+OyAucmVmbGVjdC5maWVsZEFsaWduIDx0eXBlIC01PjsgLnJlZmxlY3QuXyA8dHlwZSAtNT47IC5yZWZsZWN0LnNpemUgPHR5cGUgLTEzPjsgLnJlZmxlY3QuaGFzaCA8dHlwZSAtNz47IC5yZWZsZWN0Lmhhc2hmbiA8dHlwZSAtMTM+OyAucmVmbGVjdC5lcXVhbGZuIDx0eXBlIC0xMz47IC5yZWZsZWN0LmdjIDx0eXBlIDQ2ICJ1bnNhZmUuUG9pbnRlciIgInVuc2FmZSIgPHR5cGUgNDcgKmFueT4+OyAucmVmbGVjdC5zdHJpbmcgPHR5cGUgNDggKjx0eXBlIC0xNj4+OyA/IDx0eXBlIDQ5ICo8dHlwZSA1MCAiLnJlZmxlY3QudW5jb21tb25UeXBlIiA8dHlwZSA1MSBzdHJ1Y3QgeyAucmVmbGVjdC5uYW1lIDx0eXBlIDQ4PjsgLnJlZmxlY3QucGtnUGF0aCA8dHlwZSA0OD47IC5yZWZsZWN0Lm1ldGhvZHMgPHR5cGUgNTIgW10gPHR5cGUgNTMgIi5yZWZsZWN0Lm1ldGhvZCIgPHR5cGUgNTQgc3RydWN0IHsgLnJlZmxlY3QubmFtZSA8dHlwZSA0OD47IC5yZWZsZWN0LnBrZ1BhdGggPHR5cGUgNDg+OyAucmVmbGVjdC5tdHlwIDx0eXBlIDU1ICo8dHlwZSA0ND4+OyAucmVmbGVjdC50eXAgPHR5cGUgNTU+OyAucmVmbGVjdC50Zm4gPHR5cGUgNDY+OyB9Pj4+OyB9PgogZnVuYyAodCA8dHlwZSA1NiAqPHR5cGUgNTA+PikgUGtnUGF0aCAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSA1Nj4pIE1ldGhvZEJ5TmFtZSAobmFtZSA8dHlwZSAtMTY+KSAobSA8dHlwZSA1NyAicmVmbGVjdC5NZXRob2QiIDx0eXBlIDU4IHN0cnVjdCB7IE5hbWUgPHR5cGUgLTE2PjsgUGtnUGF0aCA8dHlwZSAtMTY+OyBUeXBlIDx0eXBlIDU5ICJyZWZsZWN0LlR5cGUiIDx0eXBlIDYwIGludGVyZmFjZSB7IEFsaWduICgpIDx0eXBlIC0xMT47IEZpZWxkQWxpZ24gKCkgPHR5cGUgLTExPjsgTWV0aG9kICg/IDx0eXBlIC0xMT4pIDx0eXBlIDU3PjsgTWV0aG9kQnlOYW1lICg/IDx0eXBlIC0xNj4pICg/IDx0eXBlIDU3PiwgPyA8dHlwZSAtMTU+KTsgTnVtTWV0aG9kICgpIDx0eXBlIC0xMT47IE5hbWUgKCkgPHR5cGUgLTE2PjsgUGtnUGF0aCAoKSA8dHlwZSAtMTY+OyBTaXplICgpIDx0eXBlIC0xMz47IFN0cmluZyAoKSA8dHlwZSAtMTY+OyAucmVmbGVjdC5yYXdTdHJpbmcgKCkgPHR5cGUgLTE2PjsgS2luZCAoKSA8dHlwZSA2MSAicmVmbGVjdC5LaW5kIiA8dHlwZSAtMTI+CiBmdW5jIChrIDx0eXBlIDYxPikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj47IEltcGxlbWVudHMgKHUgPHR5cGUgNTk+KSA8dHlwZSAtMTU+OyBBc3NpZ25hYmxlVG8gKHUgPHR5cGUgNTk+KSA8dHlwZSAtMTU+OyBDb252ZXJ0aWJsZVRvICh1IDx0eXBlIDU5PikgPHR5cGUgLTE1PjsgQ29tcGFyYWJsZSAoKSA8dHlwZSAtMTU+OyBCaXRzICgpIDx0eXBlIC0xMT47IENoYW5EaXIgKCkgPHR5cGUgNjIgInJlZmxlY3QuQ2hhbkRpciIgPHR5cGUgLTExPgogZnVuYyAoZCA8dHlwZSA2Mj4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+OyBJc1ZhcmlhZGljICgpIDx0eXBlIC0xNT47IEVsZW0gKCkgPHR5cGUgNTk+OyBGaWVsZCAoaSA8dHlwZSAtMTE+KSA8dHlwZSA2MyAicmVmbGVjdC5TdHJ1Y3RGaWVsZCIgPHR5cGUgNjQgc3RydWN0IHsgTmFtZSA8dHlwZSAtMTY+OyBQa2dQYXRoIDx0eXBlIC0xNj47IFR5cGUgPHR5cGUgNTk+OyBUYWcgPHR5cGUgNjUgInJlZmxlY3QuU3RydWN0VGFnIiA8dHlwZSAtMTY+CiBmdW5jICh0YWcgPHR5cGUgNjU+KSBHZXQgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+Owo+OyBPZmZzZXQgPHR5cGUgLTEzPjsgSW5kZXggPHR5cGUgNjYgW10gPHR5cGUgLTExPj47IEFub255bW91cyA8dHlwZSAtMTU+OyB9Pj47IEZpZWxkQnlJbmRleCAoaW5kZXggPHR5cGUgNjcgW10gPHR5cGUgLTExPj4pIDx0eXBlIDYzPjsgRmllbGRCeU5hbWUgKG5hbWUgPHR5cGUgLTE2PikgKD8gPHR5cGUgNjM+LCA/IDx0eXBlIC0xNT4pOyBGaWVsZEJ5TmFtZUZ1bmMgKG1hdGNoIDx0eXBlIDY4ICg/IDx0eXBlIC0xNj4pIDx0eXBlIC0xNT4+KSAoPyA8dHlwZSA2Mz4sID8gPHR5cGUgLTE1Pik7IEluIChpIDx0eXBlIC0xMT4pIDx0eXBlIDU5PjsgS2V5ICgpIDx0eXBlIDU5PjsgTGVuICgpIDx0eXBlIC0xMT47IE51bUZpZWxkICgpIDx0eXBlIC0xMT47IE51bUluICgpIDx0eXBlIC0xMT47IE51bU91dCAoKSA8dHlwZSAtMTE+OyBPdXQgKGkgPHR5cGUgLTExPikgPHR5cGUgNTk+OyAucmVmbGVjdC5jb21tb24gKCkgPHR5cGUgNTU+OyAucmVmbGVjdC51bmNvbW1vbiAoKSA8dHlwZSA1Nj47IH0+PjsgRnVuYyA8dHlwZSA0MT47IEluZGV4IDx0eXBlIC0xMT47IH0+Piwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jICh0IDx0eXBlIDU2PikgTnVtTWV0aG9kICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDU2PikgTmFtZSAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSA1Nj4pIE1ldGhvZCAoaSA8dHlwZSAtMTE+KSAobSA8dHlwZSA1Nz4pOwogZnVuYyAodCA8dHlwZSA1Nj4pIC5yZWZsZWN0LnVuY29tbW9uICgpIDx0eXBlIDU2PjsKPj47IC5yZWZsZWN0LnB0clRvVGhpcyA8dHlwZSA1NT47IC5yZWZsZWN0Lnplcm8gPHR5cGUgNDY+OyB9PgogZnVuYyAodCA8dHlwZSA1NT4pIEZpZWxkQWxpZ24gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgNTU+KSAucmVmbGVjdC5jb21tb24gKCkgPHR5cGUgNTU+OwogZnVuYyAodCA8dHlwZSA1NT4pIE1ldGhvZCAoaSA8dHlwZSAtMTE+KSAobSA8dHlwZSA1Nz4pOwogZnVuYyAodCA8dHlwZSA1NT4pIC5yZWZsZWN0LnB0clRvICgpIDx0eXBlIDU1PjsKIGZ1bmMgKHQgPHR5cGUgNTU+KSBNZXRob2RCeU5hbWUgKG5hbWUgPHR5cGUgLTE2PikgKG0gPHR5cGUgNTc+LCBvayA8dHlwZSAtMTU+KTsKIGZ1bmMgKHQgPHR5cGUgNTU+KSAucmVmbGVjdC5yYXdTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgNTU+KSBLZXkgKCkgPHR5cGUgNTk+OwogZnVuYyAodCA8dHlwZSA1NT4pIEluIChpIDx0eXBlIC0xMT4pIDx0eXBlIDU5PjsKIGZ1bmMgKHQgPHR5cGUgNTU+KSBJc1ZhcmlhZGljICgpIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDU1PikgTmFtZSAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSA1NT4pIENoYW5EaXIgKCkgPHR5cGUgNjI+OwogZnVuYyAodCA8dHlwZSA1NT4pIEZpZWxkQnlJbmRleCAoaW5kZXggPHR5cGUgNjkgW10gPHR5cGUgLTExPj4pIDx0eXBlIDYzPjsKIGZ1bmMgKHQgPHR5cGUgNTU+KSBLaW5kICgpIDx0eXBlIDYxPjsKIGZ1bmMgKHQgPHR5cGUgNTU+KSBOdW1NZXRob2QgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgNTU+KSBPdXQgKGkgPHR5cGUgLTExPikgPHR5cGUgNTk+OwogZnVuYyAodCA8dHlwZSA1NT4pIEltcGxlbWVudHMgKHUgPHR5cGUgNTk+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSA1NT4pIFBrZ1BhdGggKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgNTU+KSBDb252ZXJ0aWJsZVRvICh1IDx0eXBlIDU5PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgNTU+KSBGaWVsZCAoaSA8dHlwZSAtMTE+KSA8dHlwZSA2Mz47CiBmdW5jICh0IDx0eXBlIDU1PikgQWxpZ24gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgNTU+KSBFbGVtICgpIDx0eXBlIDU5PjsKIGZ1bmMgKHQgPHR5cGUgNTU+KSBGaWVsZEJ5TmFtZSAobmFtZSA8dHlwZSAtMTY+KSAoPyA8dHlwZSA2Mz4sID8gPHR5cGUgLTE1Pik7CiBmdW5jICh0IDx0eXBlIDU1PikgLnJlZmxlY3QucG9pbnRlcnMgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgNTU+KSBGaWVsZEJ5TmFtZUZ1bmMgKG1hdGNoIDx0eXBlIDcwICg/IDx0eXBlIC0xNj4pIDx0eXBlIC0xNT4+KSAoPyA8dHlwZSA2Mz4sID8gPHR5cGUgLTE1Pik7CiBmdW5jICh0IDx0eXBlIDU1PikgQml0cyAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSA1NT4pIE51bUluICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDU1PikgTnVtT3V0ICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDU1PikgU2l6ZSAoKSA8dHlwZSAtMTM+OwogZnVuYyAodCA8dHlwZSA1NT4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSA1NT4pIE51bUZpZWxkICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDU1PikgQ29tcGFyYWJsZSAoKSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSA1NT4pIEFzc2lnbmFibGVUbyAodSA8dHlwZSA1OT4pIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDU1PikgTGVuICgpIDx0eXBlIC0xMT47Cj4+OyAucmVmbGVjdC5wdHIgPHR5cGUgNDY+OyA/IDx0eXBlIDcxICIucmVmbGVjdC5mbGFnIiA8dHlwZSAtMTM+CiBmdW5jIChmIDx0eXBlIDcxPikgLnJlZmxlY3QubXVzdEJlIChleHBlY3RlZCA8dHlwZSA2MT4pOwogZnVuYyAoZiA8dHlwZSA3MT4pIC5yZWZsZWN0Lm11c3RCZUV4cG9ydGVkICgpOwogZnVuYyAoZiA8dHlwZSA3MT4pIC5yZWZsZWN0Lm11c3RCZUFzc2lnbmFibGUgKCk7CiBmdW5jIChmIDx0eXBlIDcxPikgLnJlZmxlY3Qua2luZCAoKSA8dHlwZSA2MT47Cj47IH0+CiBmdW5jICh2IDx0eXBlIDQxPikgVHlwZSAoKSA8dHlwZSA1OT47CiBmdW5jICh2IDx0eXBlIDQxPikgT3ZlcmZsb3dDb21wbGV4ICh4IDx0eXBlIC0xOD4pIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDQxPikgTWV0aG9kQnlOYW1lIChuYW1lIDx0eXBlIC0xNj4pIDx0eXBlIDQxPjsKIGZ1bmMgKHYgPHR5cGUgNDE+KSBCeXRlcyAoKSA8dHlwZSA3MiBbXSA8dHlwZSAtMjA+PjsKIGZ1bmMgKHYgPHR5cGUgNDE+KSBJbnRlcmZhY2UgKCkgKGkgPHR5cGUgNzMgaW50ZXJmYWNlIHsgfT4pOwogZnVuYyAodiA8dHlwZSA0MT4pIEZpZWxkQnlOYW1lIChuYW1lIDx0eXBlIC0xNj4pIDx0eXBlIDQxPjsKIGZ1bmMgKHYgPHR5cGUgNDE+KSBTZW5kICh4IDx0eXBlIDQxPik7CiBmdW5jICh2IDx0eXBlIDQxPikgLnJlZmxlY3QucmVjdiAobmIgPHR5cGUgLTE1PikgKHZhbCA8dHlwZSA0MT4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAodiA8dHlwZSA0MT4pIFVpbnQgKCkgPHR5cGUgLTg+OwogZnVuYyAodiA8dHlwZSA0MT4pIElzVmFsaWQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgNDE+KSBOdW1NZXRob2QgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHYgPHR5cGUgNDE+KSBPdmVyZmxvd0Zsb2F0ICh4IDx0eXBlIC0xMD4pIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDQxPikgTWFwS2V5cyAoKSA8dHlwZSA3NCBbXSA8dHlwZSA0MT4+OwogZnVuYyAodiA8dHlwZSA0MT4pIE1ldGhvZCAoaSA8dHlwZSAtMTE+KSA8dHlwZSA0MT47CiBmdW5jICh2IDx0eXBlIDQxPikgU2V0SW50ICh4IDx0eXBlIC00Pik7CiBmdW5jICh2IDx0eXBlIDQxPikgRmllbGQgKGkgPHR5cGUgLTExPikgPHR5cGUgNDE+OwogZnVuYyAodiA8dHlwZSA0MT4pIFNldExlbiAobiA8dHlwZSAtMTE+KTsKIGZ1bmMgKHYgPHR5cGUgNDE+KSBVbnNhZmVBZGRyICgpIDx0eXBlIC0xMz47CiBmdW5jICh2IDx0eXBlIDQxPikgU2xpY2UzIChpIDx0eXBlIC0xMT4sIGogPHR5cGUgLTExPiwgayA8dHlwZSAtMTE+KSA8dHlwZSA0MT47CiBmdW5jICh2IDx0eXBlIDQxPikgQ29tcGxleCAoKSA8dHlwZSAtMTg+OwogZnVuYyAodiA8dHlwZSA0MT4pIFNldENhcCAobiA8dHlwZSAtMTE+KTsKIGZ1bmMgKHYgPHR5cGUgNDE+KSBDYWxsU2xpY2UgKGluIDx0eXBlIDc1IFtdIDx0eXBlIDQxPj4pIDx0eXBlIDc2IFtdIDx0eXBlIDQxPj47CiBmdW5jICh2IDx0eXBlIDQxPikgRmxvYXQgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKHYgPHR5cGUgNDE+KSAucmVmbGVjdC5hc3NpZ25UbyAoY29udGV4dCA8dHlwZSAtMTY+LCBkc3QgPHR5cGUgNDM+LCB0YXJnZXQgPHR5cGUgNDY+KSA8dHlwZSA0MT47CiBmdW5jICh2IDx0eXBlIDQxPikgLnJlZmxlY3QucnVuZXMgKCkgPHR5cGUgNzcgW10gPHR5cGUgLTIxPj47CiBmdW5jICh2IDx0eXBlIDQxPikgRWxlbSAoKSA8dHlwZSA0MT47CiBmdW5jICh2IDx0eXBlIDQxPikgSW5kZXggKGkgPHR5cGUgLTExPikgPHR5cGUgNDE+OwogZnVuYyAodiA8dHlwZSA0MT4pIFRyeVNlbmQgKHggPHR5cGUgNDE+KSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSA0MT4pIFNldEJvb2wgKHggPHR5cGUgLTE1Pik7CiBmdW5jICh2IDx0eXBlIDQxPikgU2V0Qnl0ZXMgKHggPHR5cGUgNzggW10gPHR5cGUgLTIwPj4pOwogZnVuYyAodiA8dHlwZSA0MT4pIC5yZWZsZWN0LnNldFJ1bmVzICh4IDx0eXBlIDc5IFtdIDx0eXBlIC0yMT4+KTsKIGZ1bmMgKHYgPHR5cGUgNDE+KSBGaWVsZEJ5TmFtZUZ1bmMgKG1hdGNoIDx0eXBlIDgwICg/IDx0eXBlIC0xNj4pIDx0eXBlIC0xNT4+KSA8dHlwZSA0MT47CiBmdW5jICh2IDx0eXBlIDQxPikgT3ZlcmZsb3dVaW50ICh4IDx0eXBlIC04PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgNDE+KSBNYXBJbmRleCAoa2V5IDx0eXBlIDQxPikgPHR5cGUgNDE+OwogZnVuYyAodiA8dHlwZSA0MT4pIElzTmlsICgpIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDQxPikgU2V0UG9pbnRlciAoeCA8dHlwZSA0Nj4pOwogZnVuYyAodiA8dHlwZSA0MT4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAodiA8dHlwZSA0MT4pIC5yZWZsZWN0LmNhbGwgKG9wIDx0eXBlIC0xNj4sIGluIDx0eXBlIDgxIFtdIDx0eXBlIDQxPj4pIDx0eXBlIDgyIFtdIDx0eXBlIDQxPj47CiBmdW5jICh2IDx0eXBlIDQxPikgSW50ICgpIDx0eXBlIC00PjsKIGZ1bmMgKHYgPHR5cGUgNDE+KSBSZWN2ICgpICh4IDx0eXBlIDQxPiwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jICh2IDx0eXBlIDQxPikgQ29udmVydCAodCA8dHlwZSA1OT4pIDx0eXBlIDQxPjsKIGZ1bmMgKHYgPHR5cGUgNDE+KSBLaW5kICgpIDx0eXBlIDYxPjsKIGZ1bmMgKHYgPHR5cGUgNDE+KSBJbnRlcmZhY2VEYXRhICgpIDx0eXBlIDgzIFsyIF0gPHR5cGUgLTEzPj47CiBmdW5jICh2IDx0eXBlIDQxPikgU2V0TWFwSW5kZXggKGtleSA8dHlwZSA0MT4sIHZhbCA8dHlwZSA0MT4pOwogZnVuYyAodiA8dHlwZSA0MT4pIENhbGwgKGluIDx0eXBlIDg0IFtdIDx0eXBlIDQxPj4pIDx0eXBlIDg1IFtdIDx0eXBlIDQxPj47CiBmdW5jICh2IDx0eXBlIDQxPikgU2V0ICh4IDx0eXBlIDQxPik7CiBmdW5jICh2IDx0eXBlIDQxPikgU2V0VWludCAoeCA8dHlwZSAtOD4pOwogZnVuYyAodiA8dHlwZSA0MT4pIEJvb2wgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgNDE+KSBTbGljZSAoaSA8dHlwZSAtMTE+LCBqIDx0eXBlIC0xMT4pIDx0eXBlIDQxPjsKIGZ1bmMgKHYgPHR5cGUgNDE+KSAucmVmbGVjdC5wb2ludGVyICgpIDx0eXBlIDQ2PjsKIGZ1bmMgKHYgPHR5cGUgNDE+KSBQb2ludGVyICgpIDx0eXBlIC0xMz47CiBmdW5jICh2IDx0eXBlIDQxPikgQ2FwICgpIDx0eXBlIC0xMT47CiBmdW5jICh2IDx0eXBlIDQxPikgU2V0U3RyaW5nICh4IDx0eXBlIC0xNj4pOwogZnVuYyAodiA8dHlwZSA0MT4pIExlbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAodiA8dHlwZSA0MT4pIFRyeVJlY3YgKCkgKHggPHR5cGUgNDE+LCBvayA8dHlwZSAtMTU+KTsKIGZ1bmMgKHYgPHR5cGUgNDE+KSBDbG9zZSAoKTsKIGZ1bmMgKHYgPHR5cGUgNDE+KSBDYW5BZGRyICgpIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDQxPikgQ2FuU2V0ICgpIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDQxPikgLnJlZmxlY3Quc2VuZCAoeCA8dHlwZSA0MT4sIG5iIDx0eXBlIC0xNT4pIChzZWxlY3RlZCA8dHlwZSAtMTU+KTsKIGZ1bmMgKHYgPHR5cGUgNDE+KSBGaWVsZEJ5SW5kZXggKGluZGV4IDx0eXBlIDg2IFtdIDx0eXBlIC0xMT4+KSA8dHlwZSA0MT47CiBmdW5jICh2IDx0eXBlIDQxPikgT3ZlcmZsb3dJbnQgKHggPHR5cGUgLTQ+KSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSA0MT4pIE51bUZpZWxkICgpIDx0eXBlIC0xMT47CiBmdW5jICh2IDx0eXBlIDQxPikgU2V0RmxvYXQgKHggPHR5cGUgLTEwPik7CiBmdW5jICh2IDx0eXBlIDQxPikgQ2FuSW50ZXJmYWNlICgpIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDQxPikgU2V0Q29tcGxleCAoeCA8dHlwZSAtMTg+KTsKIGZ1bmMgKHYgPHR5cGUgNDE+KSBBZGRyICgpIDx0eXBlIDQxPjsKPik7CiBmdW5jIChkIDx0eXBlIDM4PikgLmVuY29kaW5nL2pzb24udmFsdWVRdW90ZWQgKCkgPHR5cGUgODcgaW50ZXJmYWNlIHsgfT47CiBmdW5jIChkIDx0eXBlIDM4PikgLmVuY29kaW5nL2pzb24uaW5kaXJlY3QgKHYgPHR5cGUgNDE+LCBkZWNvZGluZ051bGwgPHR5cGUgLTE1PikgKD8gPHR5cGUgODggIlVubWFyc2hhbGVyIiA8dHlwZSA4OSBpbnRlcmZhY2UgeyBVbm1hcnNoYWxKU09OICg/IDx0eXBlIDkwIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OyB9Pj4sID8gPHR5cGUgOTEgImVuY29kaW5nLlRleHRVbm1hcnNoYWxlciIgPHR5cGUgOTIgaW50ZXJmYWNlIHsgVW5tYXJzaGFsVGV4dCAodGV4dCA8dHlwZSA5MyBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsgfT4+LCA/IDx0eXBlIDQxPik7CiBmdW5jIChkIDx0eXBlIDM4PikgLmVuY29kaW5nL2pzb24uYXJyYXkgKHYgPHR5cGUgNDE+KTsKIGZ1bmMgKGQgPHR5cGUgMzg+KSAuZW5jb2RpbmcvanNvbi5vYmplY3QgKHYgPHR5cGUgNDE+KTsKIGZ1bmMgKGQgPHR5cGUgMzg+KSAuZW5jb2RpbmcvanNvbi5saXRlcmFsICh2IDx0eXBlIDQxPik7CiBmdW5jIChkIDx0eXBlIDM4PikgLmVuY29kaW5nL2pzb24uY29udmVydE51bWJlciAocyA8dHlwZSAtMTY+KSAoPyA8dHlwZSA5NCBpbnRlcmZhY2UgeyB9PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGQgPHR5cGUgMzg+KSAuZW5jb2RpbmcvanNvbi5saXRlcmFsU3RvcmUgKGl0ZW0gPHR5cGUgOTUgW10gPHR5cGUgLTIwPj4sIHYgPHR5cGUgNDE+LCBmcm9tUXVvdGVkIDx0eXBlIC0xNT4pOwogZnVuYyAoZCA8dHlwZSAzOD4pIC5lbmNvZGluZy9qc29uLnZhbHVlSW50ZXJmYWNlICgpIDx0eXBlIDk2IGludGVyZmFjZSB7IH0+OwogZnVuYyAoZCA8dHlwZSAzOD4pIC5lbmNvZGluZy9qc29uLmFycmF5SW50ZXJmYWNlICgpIDx0eXBlIDk3IFtdIDx0eXBlIDk4IGludGVyZmFjZSB7IH0+PjsKIGZ1bmMgKGQgPHR5cGUgMzg+KSAuZW5jb2RpbmcvanNvbi5vYmplY3RJbnRlcmZhY2UgKCkgPHR5cGUgOTkgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAxMDAgaW50ZXJmYWNlIHsgfT4+OwogZnVuYyAoZCA8dHlwZSAzOD4pIC5lbmNvZGluZy9qc29uLmxpdGVyYWxJbnRlcmZhY2UgKCkgPHR5cGUgMTAxIGludGVyZmFjZSB7IH0+Owo+OyAuZW5jb2RpbmcvanNvbi5zY2FuIDx0eXBlIDI4PjsgLmVuY29kaW5nL2pzb24uZXJyIDx0eXBlIC0xOT47IH0+CiBmdW5jIChkZWMgPHR5cGUgMTAyICo8dHlwZSAyMj4+KSBVc2VOdW1iZXIgKCk7CiBmdW5jIChkZWMgPHR5cGUgMTAyPikgRGVjb2RlICh2IDx0eXBlIDEwMyBpbnRlcmZhY2UgeyB9PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGRlYyA8dHlwZSAxMDI+KSBCdWZmZXJlZCAoKSA8dHlwZSAxNz47CiBmdW5jIChkZWMgPHR5cGUgMTAyPikgLmVuY29kaW5nL2pzb24ucmVhZFZhbHVlICgpICg/IDx0eXBlIC0xMT4sID8gPHR5cGUgLTE5Pik7Cj47CnR5cGUgPHR5cGUgMTA0ICJFbmNvZGVyIiA8dHlwZSAxMDUgc3RydWN0IHsgLmVuY29kaW5nL2pzb24udyA8dHlwZSAxMD47IC5lbmNvZGluZy9qc29uLmVyciA8dHlwZSAtMTk+OyB9PgogZnVuYyAoZW5jIDx0eXBlIDEwNiAqPHR5cGUgMTA0Pj4pIEVuY29kZSAodiA8dHlwZSAxMDcgaW50ZXJmYWNlIHsgfT4pIDx0eXBlIC0xOT47Cj47CmZ1bmMgSFRNTEVzY2FwZSAoZHN0IDx0eXBlIDE+LCBzcmMgPHR5cGUgMTA4IFtdIDx0eXBlIC0yMD4+KTsKZnVuYyBJbmRlbnQgKGRzdCA8dHlwZSAxPiwgc3JjIDx0eXBlIDEwOSBbXSA8dHlwZSAtMjA+PiwgcHJlZml4IDx0eXBlIC0xNj4sIGluZGVudCA8dHlwZSAtMTY+KSA8dHlwZSAtMTk+Owp0eXBlIDx0eXBlIDExMCAiSW52YWxpZFVURjhFcnJvciIgPHR5cGUgMTExIHN0cnVjdCB7IFMgPHR5cGUgLTE2PjsgfT4KIGZ1bmMgKGUgPHR5cGUgMTEyICo8dHlwZSAxMTA+PikgRXJyb3IgKCkgPHR5cGUgLTE2PjsKPjsKdHlwZSA8dHlwZSAxMTMgIkludmFsaWRVbm1hcnNoYWxFcnJvciIgPHR5cGUgMTE0IHN0cnVjdCB7IFR5cGUgPHR5cGUgNTk+OyB9PgogZnVuYyAoZSA8dHlwZSAxMTUgKjx0eXBlIDExMz4+KSBFcnJvciAoKSA8dHlwZSAtMTY+Owo+OwpmdW5jIE1hcnNoYWwgKHYgPHR5cGUgMTE2IGludGVyZmFjZSB7IH0+KSAoPyA8dHlwZSAxMTcgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CmZ1bmMgTWFyc2hhbEluZGVudCAodiA8dHlwZSAxMTggaW50ZXJmYWNlIHsgfT4sIHByZWZpeCA8dHlwZSAtMTY+LCBpbmRlbnQgPHR5cGUgLTE2PikgKD8gPHR5cGUgMTE5IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwp0eXBlIDx0eXBlIDEyMCAiTWFyc2hhbGVyIiA8dHlwZSAxMjEgaW50ZXJmYWNlIHsgTWFyc2hhbEpTT04gKCkgKD8gPHR5cGUgMTIyIFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOyB9Pj47CnR5cGUgPHR5cGUgMTIzICJNYXJzaGFsZXJFcnJvciIgPHR5cGUgMTI0IHN0cnVjdCB7IFR5cGUgPHR5cGUgNTk+OyBFcnIgPHR5cGUgLTE5PjsgfT4KIGZ1bmMgKGUgPHR5cGUgMTI1ICo8dHlwZSAxMjM+PikgRXJyb3IgKCkgPHR5cGUgLTE2PjsKPjsKZnVuYyBOZXdEZWNvZGVyIChyIDx0eXBlIDE3PikgPHR5cGUgMTAyPjsKZnVuYyBOZXdFbmNvZGVyICh3IDx0eXBlIDEwPikgPHR5cGUgMTA2PjsKdHlwZSA8dHlwZSAxMjYgIk51bWJlciIgPHR5cGUgLTE2PgogZnVuYyAobiA8dHlwZSAxMjY+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKG4gPHR5cGUgMTI2PikgRmxvYXQ2NCAoKSAoPyA8dHlwZSAtMTA+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAobiA8dHlwZSAxMjY+KSBJbnQ2NCAoKSAoPyA8dHlwZSAtND4sID8gPHR5cGUgLTE5Pik7Cj47CnR5cGUgPHR5cGUgMTI3ICJSYXdNZXNzYWdlIiA8dHlwZSAxMjggW10gPHR5cGUgLTIwPj4KIGZ1bmMgKG0gPHR5cGUgMTI5ICo8dHlwZSAxMjc+PikgTWFyc2hhbEpTT04gKCkgKD8gPHR5cGUgMTMwIFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAobSA8dHlwZSAxMjk+KSBVbm1hcnNoYWxKU09OIChkYXRhIDx0eXBlIDEzMSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKPjsKdHlwZSA8dHlwZSAxMzIgIlN5bnRheEVycm9yIiA8dHlwZSAxMzMgc3RydWN0IHsgLmVuY29kaW5nL2pzb24ubXNnIDx0eXBlIC0xNj47IE9mZnNldCA8dHlwZSAtND47IH0+CiBmdW5jIChlIDx0eXBlIDEzNCAqPHR5cGUgMTMyPj4pIEVycm9yICgpIDx0eXBlIC0xNj47Cj47CmZ1bmMgVW5tYXJzaGFsIChkYXRhIDx0eXBlIDEzNSBbXSA8dHlwZSAtMjA+PiwgdiA8dHlwZSAxMzYgaW50ZXJmYWNlIHsgfT4pIDx0eXBlIC0xOT47CnR5cGUgPHR5cGUgMTM3ICJVbm1hcnNoYWxGaWVsZEVycm9yIiA8dHlwZSAxMzggc3RydWN0IHsgS2V5IDx0eXBlIC0xNj47IFR5cGUgPHR5cGUgNTk+OyBGaWVsZCA8dHlwZSA2Mz47IH0+CiBmdW5jIChlIDx0eXBlIDEzOSAqPHR5cGUgMTM3Pj4pIEVycm9yICgpIDx0eXBlIC0xNj47Cj47CnR5cGUgPHR5cGUgMTQwICJVbm1hcnNoYWxUeXBlRXJyb3IiIDx0eXBlIDE0MSBzdHJ1Y3QgeyBWYWx1ZSA8dHlwZSAtMTY+OyBUeXBlIDx0eXBlIDU5PjsgfT4KIGZ1bmMgKGUgPHR5cGUgMTQyICo8dHlwZSAxNDA+PikgRXJyb3IgKCkgPHR5cGUgLTE2PjsKPjsKdHlwZSA8dHlwZSA4OD47CnR5cGUgPHR5cGUgMTQzICJVbnN1cHBvcnRlZFR5cGVFcnJvciIgPHR5cGUgMTQ0IHN0cnVjdCB7IFR5cGUgPHR5cGUgNTk+OyB9PgogZnVuYyAoZSA8dHlwZSAxNDUgKjx0eXBlIDE0Mz4+KSBFcnJvciAoKSA8dHlwZSAtMTY+Owo+Owp0eXBlIDx0eXBlIDE0NiAiVW5zdXBwb3J0ZWRWYWx1ZUVycm9yIiA8dHlwZSAxNDcgc3RydWN0IHsgVmFsdWUgPHR5cGUgNDE+OyBTdHIgPHR5cGUgLTE2PjsgfT4KIGZ1bmMgKGUgPHR5cGUgMTQ4ICo8dHlwZSAxNDY+PikgRXJyb3IgKCkgPHR5cGUgLTE2PjsKPjsKY2hlY2tzdW0gRUI4QzJDMUUyQUZBNTRDMkUzOTU3MTlFODkyMjRDMEFCNUY4QjgzRTsKAC5zeW10YWIALnN0cnRhYgAuc2hzdHJ0YWIALmdvX2V4cG9ydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAQAAAAAAAAAAAAAANAAAAJBBAAAAAAAAAAAAAAEAAAAAAAAAEQAAAAMAAAAAAAAAAAAAAMRBAAAmAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAADsQQAAIAAAAAQAAAACAAAABAAAABAAAAAJAAAAAwAAAAAAAAAAAAAADEIAAAEAAAAAAAAAAAAAAAEAAAAAAAAA