f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAABIzgAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIGh0dHB0ZXN0Owpwa2dwYXRoIG5ldC9odHRwL2h0dHB0ZXN0Owpwcmlvcml0eSAxMzsKaW1wb3J0IGJ5dGVzIGJ5dGVzICJieXRlcyI7CmltcG9ydCB0bHMgY3J5cHRvL3RscyAiY3J5cHRvL3RscyI7CmltcG9ydCBmbGFnIGZsYWcgImZsYWciOwppbXBvcnQgZm10IGZtdCAiZm10IjsKaW1wb3J0IG5ldCBuZXQgIm5ldCI7CmltcG9ydCBodHRwIG5ldC9odHRwICJuZXQvaHR0cCI7CmltcG9ydCBvcyBvcyAib3MiOwppbXBvcnQgc3luYyBzeW5jICJzeW5jIjsKaW5pdCBodHRwdGVzdCBuZXRfaHR0cF9odHRwdGVzdC4uaW1wb3J0IDEzIG1hdGggbWF0aC4uaW1wb3J0IDEgcnVudGltZSBydW50aW1lLi5pbXBvcnQgMSB1bmljb2RlIHVuaWNvZGUuLmltcG9ydCAxIHN0cmNvbnYgc3RyY29udi4uaW1wb3J0IDIgc3luYyBzeW5jLi5pbXBvcnQgMiBpbyBpby4uaW1wb3J0IDMgcmFuZCBtYXRoX3JhbmQuLmltcG9ydCAzIHJlZmxlY3QgcmVmbGVjdC4uaW1wb3J0IDMgc3lzY2FsbCBzeXNjYWxsLi5pbXBvcnQgMyBiaW5hcnkgZW5jb2RpbmdfYmluYXJ5Li5pbXBvcnQgNCBieXRlcyBieXRlcy4uaW1wb3J0IDQgY2lwaGVyIGNyeXB0b19jaXBoZXIuLmltcG9ydCA0IHN5c2NhbGwgaW50ZXJuYWxfc3lzY2FsbC4uaW1wb3J0IDQgdGltZSB0aW1lLi5pbXBvcnQgNCBiYXNlNjQgZW5jb2RpbmdfYmFzZTY0Li5pbXBvcnQgNSBidWZpbyBidWZpby4uaW1wb3J0IDUgY3JjMzIgaGFzaF9jcmMzMi4uaW1wb3J0IDUgY3J5cHRvIGNyeXB0by4uaW1wb3J0IDUgZGVzIGNyeXB0b19kZXMuLmltcG9ydCA1IG9zIG9zLi5pbXBvcnQgNSBwYXRoIHBhdGguLmltcG9ydCA1IGZpbGVwYXRoIHBhdGhfZmlsZXBhdGguLmltcG9ydCA2IGZtdCBmbXQuLmltcG9ydCA2IG1kNSBjcnlwdG9fbWQ1Li5pbXBvcnQgNiBuZXQgbmV0Li5pbXBvcnQgNiBwZW0gZW5jb2RpbmdfcGVtLi5pbXBvcnQgNiBzaGExIGNyeXB0b19zaGExLi5pbXBvcnQgNiBzaGEyNTYgY3J5cHRvX3NoYTI1Ni4uaW1wb3J0IDYgc2hhNTEyIGNyeXB0b19zaGE1MTIuLmltcG9ydCA2IGJpZyBtYXRoX2JpZy4uaW1wb3J0IDcgZmxhZyBmbGFnLi5pbXBvcnQgNyBmbGF0ZSBjb21wcmVzc19mbGF0ZS4uaW1wb3J0IDcgaGV4IGVuY29kaW5nX2hleC4uaW1wb3J0IDcgaW50ZXJuYWwgbmV0X2h0dHBfaW50ZXJuYWwuLmltcG9ydCA3IGlvdXRpbCBpb19pb3V0aWwuLmltcG9ydCA3IGxvZyBsb2cuLmltcG9ydCA3IG1pbWUgbWltZS4uaW1wb3J0IDcgYXNuMSBlbmNvZGluZ19hc24xLi5pbXBvcnQgOCBkc2EgY3J5cHRvX2RzYS4uaW1wb3J0IDggZWxsaXB0aWMgY3J5cHRvX2VsbGlwdGljLi5pbXBvcnQgOCBnemlwIGNvbXByZXNzX2d6aXAuLmltcG9ydCA4IHJhbmQgY3J5cHRvX3JhbmQuLmltcG9ydCA4IHRleHRwcm90byBuZXRfdGV4dHByb3RvLi5pbXBvcnQgOCBlY2RzYSBjcnlwdG9fZWNkc2EuLmltcG9ydCA5IG11bHRpcGFydCBtaW1lX211bHRpcGFydC4uaW1wb3J0IDkgcGtpeCBjcnlwdG9feDUwOV9wa2l4Li5pbXBvcnQgOSByc2EgY3J5cHRvX3JzYS4uaW1wb3J0IDkgeDUwOSBjcnlwdG9feDUwOS4uaW1wb3J0IDEwIHRscyBjcnlwdG9fdGxzLi5pbXBvcnQgMTEgaHR0cCBuZXRfaHR0cC4uaW1wb3J0IDEyOwpjb25zdCBEZWZhdWx0UmVtb3RlQWRkciA9ICIxLjIuMy40IjsKZnVuYyBOZXdSZWNvcmRlciAoKSA8dHlwZSAxICo8dHlwZSAyICJSZXNwb25zZVJlY29yZGVyIiA8dHlwZSAzIHN0cnVjdCB7IENvZGUgPHR5cGUgLTExPjsgSGVhZGVyTWFwIDx0eXBlIDQgIm5ldC9odHRwLkhlYWRlciIgPHR5cGUgNSBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDYgW10gPHR5cGUgLTE2Pj4+CiBmdW5jIChoIDx0eXBlIDQ+KSBHZXQgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAoaCA8dHlwZSA0PikgV3JpdGUgKHcgPHR5cGUgNyAiaW8uV3JpdGVyIiAiaW8iIDx0eXBlIDggaW50ZXJmYWNlIHsgV3JpdGUgKHAgPHR5cGUgOSBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj4pIDx0eXBlIC0xOT47CiBmdW5jIChoIDx0eXBlIDQ+KSAubmV0L2h0dHAuZ2V0IChrZXkgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKGggPHR5cGUgND4pIFdyaXRlU3Vic2V0ICh3IDx0eXBlIDc+LCBleGNsdWRlIDx0eXBlIDEwIG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgLTE1Pj4pIDx0eXBlIC0xOT47CiBmdW5jIChoIDx0eXBlIDQ+KSBTZXQgKGtleSA8dHlwZSAtMTY+LCB2YWx1ZSA8dHlwZSAtMTY+KTsKIGZ1bmMgKGggPHR5cGUgND4pIC5uZXQvaHR0cC5zb3J0ZWRLZXlWYWx1ZXMgKGV4Y2x1ZGUgPHR5cGUgMTEgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAtMTU+PikgKGt2cyA8dHlwZSAxMiBbXSA8dHlwZSAxMyAiLm5ldC9odHRwLmtleVZhbHVlcyIgPHR5cGUgMTQgc3RydWN0IHsgLm5ldC9odHRwLmtleSA8dHlwZSAtMTY+OyAubmV0L2h0dHAudmFsdWVzIDx0eXBlIDE1IFtdIDx0eXBlIC0xNj4+OyB9Pj4+LCBocyA8dHlwZSAxNiAqPHR5cGUgMTcgIi5uZXQvaHR0cC5oZWFkZXJTb3J0ZXIiIDx0eXBlIDE4IHN0cnVjdCB7IC5uZXQvaHR0cC5rdnMgPHR5cGUgMTkgW10gPHR5cGUgMTM+PjsgfT4KIGZ1bmMgKHMgPHR5cGUgMjAgKjx0eXBlIDE3Pj4pIExlc3MgKGkgPHR5cGUgLTExPiwgaiA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OwogZnVuYyAocyA8dHlwZSAyMD4pIExlbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAocyA8dHlwZSAyMD4pIFN3YXAgKGkgPHR5cGUgLTExPiwgaiA8dHlwZSAtMTE+KTsKPj4pOwogZnVuYyAoaCA8dHlwZSA0PikgQWRkIChrZXkgPHR5cGUgLTE2PiwgdmFsdWUgPHR5cGUgLTE2Pik7CiBmdW5jIChoIDx0eXBlIDQ+KSAubmV0L2h0dHAuY2xvbmUgKCkgPHR5cGUgND47CiBmdW5jIChoIDx0eXBlIDQ+KSBEZWwgKGtleSA8dHlwZSAtMTY+KTsKPjsgQm9keSA8dHlwZSAyMSAqPHR5cGUgMjIgImJ5dGVzLkJ1ZmZlciIgPHR5cGUgMjMgc3RydWN0IHsgLmJ5dGVzLmJ1ZiA8dHlwZSAyNCBbXSA8dHlwZSAtMjA+PjsgLmJ5dGVzLm9mZiA8dHlwZSAtMTE+OyAuYnl0ZXMucnVuZUJ5dGVzIDx0eXBlIDI1IFs0IF0gPHR5cGUgLTIwPj47IC5ieXRlcy5ib290c3RyYXAgPHR5cGUgMjYgWzY0IF0gPHR5cGUgLTIwPj47IC5ieXRlcy5sYXN0UmVhZCA8dHlwZSAyNyAiLmJ5dGVzLnJlYWRPcCIgPHR5cGUgLTExPj47IH0+CiBmdW5jIChiIDx0eXBlIDI4ICo8dHlwZSAyMj4+KSBVbnJlYWRCeXRlICgpIDx0eXBlIC0xOT47CiBmdW5jIChiIDx0eXBlIDI4PikgVHJ1bmNhdGUgKG4gPHR5cGUgLTExPik7CiBmdW5jIChiIDx0eXBlIDI4PikgV3JpdGVTdHJpbmcgKHMgPHR5cGUgLTE2PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyOD4pIFJlYWRTdHJpbmcgKGRlbGltIDx0eXBlIC0yMD4pIChsaW5lIDx0eXBlIC0xNj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjg+KSBSZWFkQnl0ZSAoKSAoYyA8dHlwZSAtMjA+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI4PikgTmV4dCAobiA8dHlwZSAtMTE+KSA8dHlwZSAyOSBbXSA8dHlwZSAtMjA+PjsKIGZ1bmMgKGIgPHR5cGUgMjg+KSBXcml0ZVJ1bmUgKHIgPHR5cGUgLTIxPikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyOD4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoYiA8dHlwZSAyOD4pIFdyaXRlVG8gKHcgPHR5cGUgNz4pIChuIDx0eXBlIC00PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyOD4pIFJlYWRCeXRlcyAoZGVsaW0gPHR5cGUgLTIwPikgKGxpbmUgPHR5cGUgMzAgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjg+KSAuYnl0ZXMuZ3JvdyAobiA8dHlwZSAtMTE+KSA8dHlwZSAtMTE+OwogZnVuYyAoYiA8dHlwZSAyOD4pIFJlYWRSdW5lICgpIChyIDx0eXBlIC0yMT4sIHNpemUgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyOD4pIFVucmVhZFJ1bmUgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGIgPHR5cGUgMjg+KSBSZWFkIChwIDx0eXBlIDMxIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI4PikgUmVzZXQgKCk7CiBmdW5jIChiIDx0eXBlIDI4PikgLmJ5dGVzLnJlYWRTbGljZSAoZGVsaW0gPHR5cGUgLTIwPikgKGxpbmUgPHR5cGUgMzIgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjg+KSBXcml0ZUJ5dGUgKGMgPHR5cGUgLTIwPikgPHR5cGUgLTE5PjsKIGZ1bmMgKGIgPHR5cGUgMjg+KSBXcml0ZSAocCA8dHlwZSAzMyBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyOD4pIFJlYWRGcm9tIChyIDx0eXBlIDM0ICJpby5SZWFkZXIiIDx0eXBlIDM1IGludGVyZmFjZSB7IFJlYWQgKHAgPHR5cGUgMzYgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+KSAobiA8dHlwZSAtND4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjg+KSBMZW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKGIgPHR5cGUgMjg+KSBHcm93IChuIDx0eXBlIC0xMT4pOwogZnVuYyAoYiA8dHlwZSAyOD4pIEJ5dGVzICgpIDx0eXBlIDM3IFtdIDx0eXBlIC0yMD4+Owo+PjsgRmx1c2hlZCA8dHlwZSAtMTU+OyAubmV0L2h0dHAvaHR0cHRlc3Qud3JvdGVIZWFkZXIgPHR5cGUgLTE1PjsgfT4KIGZ1bmMgKHJ3IDx0eXBlIDM4ICo8dHlwZSAyPj4pIEhlYWRlciAoKSA8dHlwZSA0PjsKIGZ1bmMgKHJ3IDx0eXBlIDM4PikgV3JpdGUgKGJ1ZiA8dHlwZSAzOSBbXSA8dHlwZSAtMjA+PikgKD8gPHR5cGUgLTExPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHJ3IDx0eXBlIDM4PikgV3JpdGVIZWFkZXIgKGNvZGUgPHR5cGUgLTExPik7CiBmdW5jIChydyA8dHlwZSAzOD4pIEZsdXNoICgpOwo+PjsKZnVuYyBOZXdTZXJ2ZXIgKGhhbmRsZXIgPHR5cGUgNDAgIm5ldC9odHRwLkhhbmRsZXIiIDx0eXBlIDQxIGludGVyZmFjZSB7IFNlcnZlSFRUUCAoPyA8dHlwZSA0MiAibmV0L2h0dHAuUmVzcG9uc2VXcml0ZXIiIDx0eXBlIDQzIGludGVyZmFjZSB7IEhlYWRlciAoKSA8dHlwZSA0PjsgV3JpdGUgKD8gPHR5cGUgNDQgW10gPHR5cGUgLTIwPj4pICg/IDx0eXBlIC0xMT4sID8gPHR5cGUgLTE5Pik7IFdyaXRlSGVhZGVyICg/IDx0eXBlIC0xMT4pOyB9Pj4sID8gPHR5cGUgNDUgKjx0eXBlIDQ2ICJuZXQvaHR0cC5SZXF1ZXN0IiA8dHlwZSA0NyBzdHJ1Y3QgeyBNZXRob2QgPHR5cGUgLTE2PjsgVVJMIDx0eXBlIDQ4ICo8dHlwZSA0OSAibmV0L3VybC5VUkwiICJ1cmwiIDx0eXBlIDUwIHN0cnVjdCB7IFNjaGVtZSA8dHlwZSAtMTY+OyBPcGFxdWUgPHR5cGUgLTE2PjsgVXNlciA8dHlwZSA1MSAqPHR5cGUgNTIgIm5ldC91cmwuVXNlcmluZm8iIDx0eXBlIDUzIHN0cnVjdCB7IC5uZXQvdXJsLnVzZXJuYW1lIDx0eXBlIC0xNj47IC5uZXQvdXJsLnBhc3N3b3JkIDx0eXBlIC0xNj47IC5uZXQvdXJsLnBhc3N3b3JkU2V0IDx0eXBlIC0xNT47IH0+CiBmdW5jICh1IDx0eXBlIDU0ICo8dHlwZSA1Mj4+KSBVc2VybmFtZSAoKSA8dHlwZSAtMTY+OwogZnVuYyAodSA8dHlwZSA1ND4pIFBhc3N3b3JkICgpICg/IDx0eXBlIC0xNj4sID8gPHR5cGUgLTE1Pik7CiBmdW5jICh1IDx0eXBlIDU0PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj4+OyBIb3N0IDx0eXBlIC0xNj47IFBhdGggPHR5cGUgLTE2PjsgUmF3UXVlcnkgPHR5cGUgLTE2PjsgRnJhZ21lbnQgPHR5cGUgLTE2PjsgfT4KIGZ1bmMgKHUgPHR5cGUgNTUgKjx0eXBlIDQ5Pj4pIElzQWJzICgpIDx0eXBlIC0xNT47CiBmdW5jICh1IDx0eXBlIDU1PikgUmVxdWVzdFVSSSAoKSA8dHlwZSAtMTY+OwogZnVuYyAodSA8dHlwZSA1NT4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAodSA8dHlwZSA1NT4pIFJlc29sdmVSZWZlcmVuY2UgKHJlZiA8dHlwZSA1NT4pIDx0eXBlIDU1PjsKIGZ1bmMgKHUgPHR5cGUgNTU+KSBRdWVyeSAoKSA8dHlwZSA1NiAibmV0L3VybC5WYWx1ZXMiIDx0eXBlIDU3IG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgNTggW10gPHR5cGUgLTE2Pj4+CiBmdW5jICh2IDx0eXBlIDU2PikgR2V0IChrZXkgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKHYgPHR5cGUgNTY+KSBFbmNvZGUgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHYgPHR5cGUgNTY+KSBTZXQgKGtleSA8dHlwZSAtMTY+LCB2YWx1ZSA8dHlwZSAtMTY+KTsKIGZ1bmMgKHYgPHR5cGUgNTY+KSBBZGQgKGtleSA8dHlwZSAtMTY+LCB2YWx1ZSA8dHlwZSAtMTY+KTsKIGZ1bmMgKHYgPHR5cGUgNTY+KSBEZWwgKGtleSA8dHlwZSAtMTY+KTsKPjsKIGZ1bmMgKHUgPHR5cGUgNTU+KSBQYXJzZSAocmVmIDx0eXBlIC0xNj4pICg/IDx0eXBlIDU1PiwgPyA8dHlwZSAtMTk+KTsKPj47IFByb3RvIDx0eXBlIC0xNj47IFByb3RvTWFqb3IgPHR5cGUgLTExPjsgUHJvdG9NaW5vciA8dHlwZSAtMTE+OyBIZWFkZXIgPHR5cGUgND47IEJvZHkgPHR5cGUgNTkgImlvLlJlYWRDbG9zZXIiIDx0eXBlIDYwIGludGVyZmFjZSB7ID8gPHR5cGUgMzQ+OyA/IDx0eXBlIDYxICJpby5DbG9zZXIiIDx0eXBlIDYyIGludGVyZmFjZSB7IENsb3NlICgpIDx0eXBlIC0xOT47IH0+PjsgfT4+OyBDb250ZW50TGVuZ3RoIDx0eXBlIC00PjsgVHJhbnNmZXJFbmNvZGluZyA8dHlwZSA2MyBbXSA8dHlwZSAtMTY+PjsgQ2xvc2UgPHR5cGUgLTE1PjsgSG9zdCA8dHlwZSAtMTY+OyBGb3JtIDx0eXBlIDU2PjsgUG9zdEZvcm0gPHR5cGUgNTY+OyBNdWx0aXBhcnRGb3JtIDx0eXBlIDY0ICo8dHlwZSA2NSAibWltZS9tdWx0aXBhcnQuRm9ybSIgIm11bHRpcGFydCIgPHR5cGUgNjYgc3RydWN0IHsgVmFsdWUgPHR5cGUgNjcgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSA2OCBbXSA8dHlwZSAtMTY+Pj47IEZpbGUgPHR5cGUgNjkgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSA3MCBbXSA8dHlwZSA3MSAqPHR5cGUgNzIgIm1pbWUvbXVsdGlwYXJ0LkZpbGVIZWFkZXIiIDx0eXBlIDczIHN0cnVjdCB7IEZpbGVuYW1lIDx0eXBlIC0xNj47IEhlYWRlciA8dHlwZSA3NCAibmV0L3RleHRwcm90by5NSU1FSGVhZGVyIiAidGV4dHByb3RvIiA8dHlwZSA3NSBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDc2IFtdIDx0eXBlIC0xNj4+PgogZnVuYyAoaCA8dHlwZSA3ND4pIEdldCAoa2V5IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CiBmdW5jIChoIDx0eXBlIDc0PikgU2V0IChrZXkgPHR5cGUgLTE2PiwgdmFsdWUgPHR5cGUgLTE2Pik7CiBmdW5jIChoIDx0eXBlIDc0PikgQWRkIChrZXkgPHR5cGUgLTE2PiwgdmFsdWUgPHR5cGUgLTE2Pik7CiBmdW5jIChoIDx0eXBlIDc0PikgRGVsIChrZXkgPHR5cGUgLTE2Pik7Cj47IC5taW1lL211bHRpcGFydC5jb250ZW50IDx0eXBlIDc3IFtdIDx0eXBlIC0yMD4+OyAubWltZS9tdWx0aXBhcnQudG1wZmlsZSA8dHlwZSAtMTY+OyB9PgogZnVuYyAoZmggPHR5cGUgNzggKjx0eXBlIDcyPj4pIE9wZW4gKCkgKD8gPHR5cGUgNzkgIm1pbWUvbXVsdGlwYXJ0LkZpbGUiIDx0eXBlIDgwIGludGVyZmFjZSB7ID8gPHR5cGUgMzQ+OyA/IDx0eXBlIDgxICJpby5SZWFkZXJBdCIgPHR5cGUgODIgaW50ZXJmYWNlIHsgUmVhZEF0IChwIDx0eXBlIDgzIFtdIDx0eXBlIC0yMD4+LCBvZmYgPHR5cGUgLTQ+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PjsgPyA8dHlwZSA4NCAiaW8uU2Vla2VyIiA8dHlwZSA4NSBpbnRlcmZhY2UgeyBTZWVrIChvZmZzZXQgPHR5cGUgLTQ+LCB3aGVuY2UgPHR5cGUgLTExPikgKD8gPHR5cGUgLTQ+LCA/IDx0eXBlIC0xOT4pOyB9Pj47ID8gPHR5cGUgNjE+OyB9Pj4sID8gPHR5cGUgLTE5Pik7Cj4+Pj47IH0+CiBmdW5jIChmIDx0eXBlIDg2ICo8dHlwZSA2NT4+KSBSZW1vdmVBbGwgKCkgPHR5cGUgLTE5PjsKPj47IFRyYWlsZXIgPHR5cGUgND47IFJlbW90ZUFkZHIgPHR5cGUgLTE2PjsgUmVxdWVzdFVSSSA8dHlwZSAtMTY+OyBUTFMgPHR5cGUgODcgKjx0eXBlIDg4ICJjcnlwdG8vdGxzLkNvbm5lY3Rpb25TdGF0ZSIgPHR5cGUgODkgc3RydWN0IHsgVmVyc2lvbiA8dHlwZSAtNj47IEhhbmRzaGFrZUNvbXBsZXRlIDx0eXBlIC0xNT47IERpZFJlc3VtZSA8dHlwZSAtMTU+OyBDaXBoZXJTdWl0ZSA8dHlwZSAtNj47IE5lZ290aWF0ZWRQcm90b2NvbCA8dHlwZSAtMTY+OyBOZWdvdGlhdGVkUHJvdG9jb2xJc011dHVhbCA8dHlwZSAtMTU+OyBTZXJ2ZXJOYW1lIDx0eXBlIC0xNj47IFBlZXJDZXJ0aWZpY2F0ZXMgPHR5cGUgOTAgW10gPHR5cGUgOTEgKjx0eXBlIDkyICJjcnlwdG8veDUwOS5DZXJ0aWZpY2F0ZSIgIng1MDkiIDx0eXBlIDkzIHN0cnVjdCB7IFJhdyA8dHlwZSA5NCBbXSA8dHlwZSAtMjA+PjsgUmF3VEJTQ2VydGlmaWNhdGUgPHR5cGUgOTUgW10gPHR5cGUgLTIwPj47IFJhd1N1YmplY3RQdWJsaWNLZXlJbmZvIDx0eXBlIDk2IFtdIDx0eXBlIC0yMD4+OyBSYXdTdWJqZWN0IDx0eXBlIDk3IFtdIDx0eXBlIC0yMD4+OyBSYXdJc3N1ZXIgPHR5cGUgOTggW10gPHR5cGUgLTIwPj47IFNpZ25hdHVyZSA8dHlwZSA5OSBbXSA8dHlwZSAtMjA+PjsgU2lnbmF0dXJlQWxnb3JpdGhtIDx0eXBlIDEwMCAiY3J5cHRvL3g1MDkuU2lnbmF0dXJlQWxnb3JpdGhtIiA8dHlwZSAtMTE+PjsgUHVibGljS2V5QWxnb3JpdGhtIDx0eXBlIDEwMSAiY3J5cHRvL3g1MDkuUHVibGljS2V5QWxnb3JpdGhtIiA8dHlwZSAtMTE+PjsgUHVibGljS2V5IDx0eXBlIDEwMiBpbnRlcmZhY2UgeyB9PjsgVmVyc2lvbiA8dHlwZSAtMTE+OyBTZXJpYWxOdW1iZXIgPHR5cGUgMTAzICo8dHlwZSAxMDQgIm1hdGgvYmlnLkludCIgImJpZyIgPHR5cGUgMTA1IHN0cnVjdCB7IC5tYXRoL2JpZy5uZWcgPHR5cGUgLTE1PjsgLm1hdGgvYmlnLmFicyA8dHlwZSAxMDYgIi5tYXRoL2JpZy5uYXQiIDx0eXBlIDEwNyBbXSA8dHlwZSAxMDggIm1hdGgvYmlnLldvcmQiIDx0eXBlIC0xMz4+PgogZnVuYyAoeiA8dHlwZSAxMDY+KSAubWF0aC9iaWcubXVsICh4IDx0eXBlIDEwNj4sIHkgPHR5cGUgMTA2PikgPHR5cGUgMTA2PjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgLm1hdGgvYmlnLnNjYW4gKHIgPHR5cGUgMTA5ICJpby5SdW5lU2Nhbm5lciIgPHR5cGUgMTEwIGludGVyZmFjZSB7ID8gPHR5cGUgMTExICJpby5SdW5lUmVhZGVyIiA8dHlwZSAxMTIgaW50ZXJmYWNlIHsgUmVhZFJ1bmUgKCkgKHIgPHR5cGUgLTIxPiwgc2l6ZSA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PjsgVW5yZWFkUnVuZSAoKSA8dHlwZSAtMTk+OyB9Pj4sIGJhc2UgPHR5cGUgLTExPikgKD8gPHR5cGUgMTA2PiwgPyA8dHlwZSAtMTE+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoeiA8dHlwZSAxMDY+KSAubWF0aC9iaWcuYWRkICh4IDx0eXBlIDEwNj4sIHkgPHR5cGUgMTA2PikgPHR5cGUgMTA2PjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgLm1hdGgvYmlnLmFuZE5vdCAoeCA8dHlwZSAxMDY+LCB5IDx0eXBlIDEwNj4pIDx0eXBlIDEwNj47CiBmdW5jICh6IDx0eXBlIDEwNj4pIC5tYXRoL2JpZy5zZXRCaXQgKHggPHR5cGUgMTA2PiwgaSA8dHlwZSAtMTI+LCBiIDx0eXBlIC0xMj4pIDx0eXBlIDEwNj47CiBmdW5jICh6IDx0eXBlIDEwNj4pIC5tYXRoL2JpZy5zdWIgKHggPHR5cGUgMTA2PiwgeSA8dHlwZSAxMDY+KSA8dHlwZSAxMDY+OwogZnVuYyAoeCA8dHlwZSAxMDY+KSAubWF0aC9iaWcubW9kVyAoZCA8dHlwZSAxMDg+KSAociA8dHlwZSAxMDg+KTsKIGZ1bmMgKG4gPHR5cGUgMTA2PikgLm1hdGgvYmlnLnByb2JhYmx5UHJpbWUgKHJlcHMgPHR5cGUgLTExPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHEgPHR5cGUgMTA2PikgLm1hdGgvYmlnLmNvbnZlcnRXb3JkcyAocyA8dHlwZSAxMTMgW10gPHR5cGUgLTIwPj4sIGNoYXJzZXQgPHR5cGUgLTE2PiwgYiA8dHlwZSAxMDg+LCBuZGlnaXRzIDx0eXBlIC0xMT4sIGJiIDx0eXBlIDEwOD4sIHRhYmxlIDx0eXBlIDExNCBbXSA8dHlwZSAxMTUgIi5tYXRoL2JpZy5kaXZpc29yIiA8dHlwZSAxMTYgc3RydWN0IHsgLm1hdGgvYmlnLmJiYiA8dHlwZSAxMDY+OyAubWF0aC9iaWcubmJpdHMgPHR5cGUgLTExPjsgLm1hdGgvYmlnLm5kaWdpdHMgPHR5cGUgLTExPjsgfT4+Pik7CiBmdW5jICh4IDx0eXBlIDEwNj4pIC5tYXRoL2JpZy5zdHJpbmcgKGNoYXJzZXQgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgLm1hdGgvYmlnLmRpdlcgKHggPHR5cGUgMTA2PiwgeSA8dHlwZSAxMDg+KSAocSA8dHlwZSAxMDY+LCByIDx0eXBlIDEwOD4pOwogZnVuYyAoeiA8dHlwZSAxMDY+KSAubWF0aC9iaWcuc2hyICh4IDx0eXBlIDEwNj4sIHMgPHR5cGUgLTEyPikgPHR5cGUgMTA2PjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgLm1hdGgvYmlnLm11bFJhbmdlIChhIDx0eXBlIC04PiwgYiA8dHlwZSAtOD4pIDx0eXBlIDEwNj47CiBmdW5jICh6IDx0eXBlIDEwNj4pIC5tYXRoL2JpZy5tdWxBZGRXVyAoeCA8dHlwZSAxMDY+LCB5IDx0eXBlIDEwOD4sIHIgPHR5cGUgMTA4PikgPHR5cGUgMTA2PjsKIGZ1bmMgKHggPHR5cGUgMTA2PikgLm1hdGgvYmlnLmRlY2ltYWxTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgLm1hdGgvYmlnLmFuZCAoeCA8dHlwZSAxMDY+LCB5IDx0eXBlIDEwNj4pIDx0eXBlIDEwNj47CiBmdW5jICh6IDx0eXBlIDEwNj4pIC5tYXRoL2JpZy5iaXQgKGkgPHR5cGUgLTEyPikgPHR5cGUgLTEyPjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgLm1hdGgvYmlnLnhvciAoeCA8dHlwZSAxMDY+LCB5IDx0eXBlIDEwNj4pIDx0eXBlIDEwNj47CiBmdW5jICh6IDx0eXBlIDEwNj4pIC5tYXRoL2JpZy5zZXQgKHggPHR5cGUgMTA2PikgPHR5cGUgMTA2PjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgLm1hdGgvYmlnLnJhbmRvbSAocmFuZCA8dHlwZSAxMTcgKjx0eXBlIDExOCAibWF0aC9yYW5kLlJhbmQiICJyYW5kIiA8dHlwZSAxMTkgc3RydWN0IHsgLm1hdGgvcmFuZC5zcmMgPHR5cGUgMTIwICJtYXRoL3JhbmQuU291cmNlIiA8dHlwZSAxMjEgaW50ZXJmYWNlIHsgSW50NjMgKCkgPHR5cGUgLTQ+OyBTZWVkIChzZWVkIDx0eXBlIC00Pik7IH0+PjsgfT4KIGZ1bmMgKHIgPHR5cGUgMTIyICo8dHlwZSAxMTg+PikgRXhwRmxvYXQ2NCAoKSA8dHlwZSAtMTA+OwogZnVuYyAociA8dHlwZSAxMjI+KSBJbnQzMW4gKG4gPHR5cGUgLTM+KSA8dHlwZSAtMz47CiBmdW5jIChyIDx0eXBlIDEyMj4pIFVpbnQzMiAoKSA8dHlwZSAtNz47CiBmdW5jIChyIDx0eXBlIDEyMj4pIEludG4gKG4gPHR5cGUgLTExPikgPHR5cGUgLTExPjsKIGZ1bmMgKHIgPHR5cGUgMTIyPikgUGVybSAobiA8dHlwZSAtMTE+KSA8dHlwZSAxMjMgW10gPHR5cGUgLTExPj47CiBmdW5jIChyIDx0eXBlIDEyMj4pIE5vcm1GbG9hdDY0ICgpIDx0eXBlIC0xMD47CiBmdW5jIChyIDx0eXBlIDEyMj4pIEludDMxICgpIDx0eXBlIC0zPjsKIGZ1bmMgKHIgPHR5cGUgMTIyPikgRmxvYXQ2NCAoKSA8dHlwZSAtMTA+OwogZnVuYyAociA8dHlwZSAxMjI+KSBTZWVkIChzZWVkIDx0eXBlIC00Pik7CiBmdW5jIChyIDx0eXBlIDEyMj4pIEludCAoKSA8dHlwZSAtMTE+OwogZnVuYyAociA8dHlwZSAxMjI+KSBJbnQ2MyAoKSA8dHlwZSAtND47CiBmdW5jIChyIDx0eXBlIDEyMj4pIEludDYzbiAobiA8dHlwZSAtND4pIDx0eXBlIC00PjsKIGZ1bmMgKHIgPHR5cGUgMTIyPikgRmxvYXQzMiAoKSA8dHlwZSAtOT47Cj4+LCBsaW1pdCA8dHlwZSAxMDY+LCBuIDx0eXBlIC0xMT4pIDx0eXBlIDEwNj47CiBmdW5jICh4IDx0eXBlIDEwNj4pIC5tYXRoL2JpZy5jbXAgKHkgPHR5cGUgMTA2PikgKHIgPHR5cGUgLTExPik7CiBmdW5jICh6IDx0eXBlIDEwNj4pIC5tYXRoL2JpZy5vciAoeCA8dHlwZSAxMDY+LCB5IDx0eXBlIDEwNj4pIDx0eXBlIDEwNj47CiBmdW5jICh4IDx0eXBlIDEwNj4pIC5tYXRoL2JpZy5iaXRMZW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgLm1hdGgvYmlnLnNldFdvcmQgKHggPHR5cGUgMTA4PikgPHR5cGUgMTA2PjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgLm1hdGgvYmlnLnNldFVpbnQ2NCAoeCA8dHlwZSAtOD4pIDx0eXBlIDEwNj47CiBmdW5jICh6IDx0eXBlIDEwNj4pIC5tYXRoL2JpZy5kaXYgKHoyIDx0eXBlIDEwNj4sIHUgPHR5cGUgMTA2PiwgdiA8dHlwZSAxMDY+KSAocSA8dHlwZSAxMDY+LCByIDx0eXBlIDEwNj4pOwogZnVuYyAoeCA8dHlwZSAxMDY+KSAubWF0aC9iaWcudHJhaWxpbmdaZXJvQml0cyAoKSA8dHlwZSAtMTI+OwogZnVuYyAoeiA8dHlwZSAxMDY+KSAubWF0aC9iaWcuZXhwTk5XaW5kb3dlZCAoeCA8dHlwZSAxMDY+LCB5IDx0eXBlIDEwNj4sIG0gPHR5cGUgMTA2PikgPHR5cGUgMTA2PjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgLm1hdGgvYmlnLmRpdkxhcmdlICh1IDx0eXBlIDEwNj4sIHVJbiA8dHlwZSAxMDY+LCB2IDx0eXBlIDEwNj4pIChxIDx0eXBlIDEwNj4sIHIgPHR5cGUgMTA2Pik7CiBmdW5jICh6IDx0eXBlIDEwNj4pIC5tYXRoL2JpZy5ub3JtICgpIDx0eXBlIDEwNj47CiBmdW5jICh6IDx0eXBlIDEwNj4pIC5tYXRoL2JpZy5zZXRCeXRlcyAoYnVmIDx0eXBlIDEyNCBbXSA8dHlwZSAtMjA+PikgPHR5cGUgMTA2PjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgLm1hdGgvYmlnLm1ha2UgKG4gPHR5cGUgLTExPikgPHR5cGUgMTA2PjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgLm1hdGgvYmlnLnNobCAoeCA8dHlwZSAxMDY+LCBzIDx0eXBlIC0xMj4pIDx0eXBlIDEwNj47CiBmdW5jICh6IDx0eXBlIDEwNj4pIC5tYXRoL2JpZy5ieXRlcyAoYnVmIDx0eXBlIDEyNSBbXSA8dHlwZSAtMjA+PikgKGkgPHR5cGUgLTExPik7CiBmdW5jICh6IDx0eXBlIDEwNj4pIC5tYXRoL2JpZy5jbGVhciAoKTsKIGZ1bmMgKHogPHR5cGUgMTA2PikgLm1hdGgvYmlnLmV4cFdXICh4IDx0eXBlIDEwOD4sIHkgPHR5cGUgMTA4PikgPHR5cGUgMTA2PjsKIGZ1bmMgKHogPHR5cGUgMTA2PikgLm1hdGgvYmlnLmV4cE5OICh4IDx0eXBlIDEwNj4sIHkgPHR5cGUgMTA2PiwgbSA8dHlwZSAxMDY+KSA8dHlwZSAxMDY+Owo+OyB9PgogZnVuYyAoeiA8dHlwZSAxMjYgKjx0eXBlIDEwND4+KSBOZWcgKHggPHR5cGUgMTI2PikgPHR5cGUgMTI2PjsKIGZ1bmMgKHogPHR5cGUgMTI2PikgUXVvUmVtICh4IDx0eXBlIDEyNj4sIHkgPHR5cGUgMTI2PiwgciA8dHlwZSAxMjY+KSAoPyA8dHlwZSAxMjY+LCA/IDx0eXBlIDEyNj4pOwogZnVuYyAoeCA8dHlwZSAxMjY+KSBCeXRlcyAoKSA8dHlwZSAxMjcgW10gPHR5cGUgLTIwPj47CiBmdW5jICh6IDx0eXBlIDEyNj4pIFNldEJpdHMgKGFicyA8dHlwZSAxMjggW10gPHR5cGUgMTA4Pj4pIDx0eXBlIDEyNj47CiBmdW5jICh6IDx0eXBlIDEyNj4pIFNldEJpdCAoeCA8dHlwZSAxMjY+LCBpIDx0eXBlIC0xMT4sIGIgPHR5cGUgLTEyPikgPHR5cGUgMTI2PjsKIGZ1bmMgKHogPHR5cGUgMTI2PikgWG9yICh4IDx0eXBlIDEyNj4sIHkgPHR5cGUgMTI2PikgPHR5cGUgMTI2PjsKIGZ1bmMgKHogPHR5cGUgMTI2PikgU2V0SW50NjQgKHggPHR5cGUgLTQ+KSA8dHlwZSAxMjY+OwogZnVuYyAoeiA8dHlwZSAxMjY+KSBOb3QgKHggPHR5cGUgMTI2PikgPHR5cGUgMTI2PjsKIGZ1bmMgKHogPHR5cGUgMTI2PikgVW5tYXJzaGFsSlNPTiAodGV4dCA8dHlwZSAxMjkgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jICh6IDx0eXBlIDEyNj4pIE9yICh4IDx0eXBlIDEyNj4sIHkgPHR5cGUgMTI2PikgPHR5cGUgMTI2PjsKIGZ1bmMgKHogPHR5cGUgMTI2PikgU2V0VWludDY0ICh4IDx0eXBlIC04PikgPHR5cGUgMTI2PjsKIGZ1bmMgKHggPHR5cGUgMTI2PikgSW50NjQgKCkgPHR5cGUgLTQ+OwogZnVuYyAoeiA8dHlwZSAxMjY+KSAubWF0aC9iaWcuc2NhbiAociA8dHlwZSAxMDk+LCBiYXNlIDx0eXBlIC0xMT4pICg/IDx0eXBlIDEyNj4sID8gPHR5cGUgLTExPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHogPHR5cGUgMTI2PikgR0NEICh4IDx0eXBlIDEyNj4sIHkgPHR5cGUgMTI2PiwgYSA8dHlwZSAxMjY+LCBiIDx0eXBlIDEyNj4pIDx0eXBlIDEyNj47CiBmdW5jICh6IDx0eXBlIDEyNj4pIFJlbSAoeCA8dHlwZSAxMjY+LCB5IDx0eXBlIDEyNj4pIDx0eXBlIDEyNj47CiBmdW5jICh4IDx0eXBlIDEyNj4pIEJpdCAoaSA8dHlwZSAtMTE+KSA8dHlwZSAtMTI+OwogZnVuYyAoeCA8dHlwZSAxMjY+KSBCaXRzICgpIDx0eXBlIDEzMCBbXSA8dHlwZSAxMDg+PjsKIGZ1bmMgKHogPHR5cGUgMTI2PikgU2V0Qnl0ZXMgKGJ1ZiA8dHlwZSAxMzEgW10gPHR5cGUgLTIwPj4pIDx0eXBlIDEyNj47CiBmdW5jICh6IDx0eXBlIDEyNj4pIERpdk1vZCAoeCA8dHlwZSAxMjY+LCB5IDx0eXBlIDEyNj4sIG0gPHR5cGUgMTI2PikgKD8gPHR5cGUgMTI2PiwgPyA8dHlwZSAxMjY+KTsKIGZ1bmMgKHogPHR5cGUgMTI2PikgUnNoICh4IDx0eXBlIDEyNj4sIG4gPHR5cGUgLTEyPikgPHR5cGUgMTI2PjsKIGZ1bmMgKHggPHR5cGUgMTI2PikgQ21wICh5IDx0eXBlIDEyNj4pIChyIDx0eXBlIC0xMT4pOwogZnVuYyAoeiA8dHlwZSAxMjY+KSBTY2FuIChzIDx0eXBlIDEzMiAiZm10LlNjYW5TdGF0ZSIgPHR5cGUgMTMzIGludGVyZmFjZSB7IFJlYWRSdW5lICgpIChyIDx0eXBlIC0yMT4sIHNpemUgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyBVbnJlYWRSdW5lICgpIDx0eXBlIC0xOT47IFNraXBTcGFjZSAoKTsgVG9rZW4gKHNraXBTcGFjZSA8dHlwZSAtMTU+LCBmIDx0eXBlIDEzNCAoPyA8dHlwZSAtMjE+KSA8dHlwZSAtMTU+PikgKHRva2VuIDx0eXBlIDEzNSBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOyBXaWR0aCAoKSAod2lkIDx0eXBlIC0xMT4sIG9rIDx0eXBlIC0xNT4pOyBSZWFkIChidWYgPHR5cGUgMTM2IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PiwgY2ggPHR5cGUgLTIxPikgPHR5cGUgLTE5PjsKIGZ1bmMgKHggPHR5cGUgMTI2PikgR29iRW5jb2RlICgpICg/IDx0eXBlIDEzNyBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHggPHR5cGUgMTI2PikgUHJvYmFibHlQcmltZSAobiA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OwogZnVuYyAoeCA8dHlwZSAxMjY+KSBTaWduICgpIDx0eXBlIC0xMT47CiBmdW5jICh6IDx0eXBlIDEyNj4pIE1vZCAoeCA8dHlwZSAxMjY+LCB5IDx0eXBlIDEyNj4pIDx0eXBlIDEyNj47CiBmdW5jICh6IDx0eXBlIDEyNj4pIEV4cCAoeCA8dHlwZSAxMjY+LCB5IDx0eXBlIDEyNj4sIG0gPHR5cGUgMTI2PikgPHR5cGUgMTI2PjsKIGZ1bmMgKHggPHR5cGUgMTI2PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh6IDx0eXBlIDEyNj4pIEFicyAoeCA8dHlwZSAxMjY+KSA8dHlwZSAxMjY+OwogZnVuYyAoeiA8dHlwZSAxMjY+KSBVbm1hcnNoYWxUZXh0ICh0ZXh0IDx0eXBlIDEzOCBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHogPHR5cGUgMTI2PikgUmFuZCAocm5kIDx0eXBlIDExNz4sIG4gPHR5cGUgMTI2PikgPHR5cGUgMTI2PjsKIGZ1bmMgKHogPHR5cGUgMTI2PikgQW5kICh4IDx0eXBlIDEyNj4sIHkgPHR5cGUgMTI2PikgPHR5cGUgMTI2PjsKIGZ1bmMgKHogPHR5cGUgMTI2PikgTW9kSW52ZXJzZSAoZyA8dHlwZSAxMjY+LCBuIDx0eXBlIDEyNj4pIDx0eXBlIDEyNj47CiBmdW5jICh6IDx0eXBlIDEyNj4pIFF1byAoeCA8dHlwZSAxMjY+LCB5IDx0eXBlIDEyNj4pIDx0eXBlIDEyNj47CiBmdW5jICh6IDx0eXBlIDEyNj4pIEFkZCAoeCA8dHlwZSAxMjY+LCB5IDx0eXBlIDEyNj4pIDx0eXBlIDEyNj47CiBmdW5jICh6IDx0eXBlIDEyNj4pIExzaCAoeCA8dHlwZSAxMjY+LCBuIDx0eXBlIC0xMj4pIDx0eXBlIDEyNj47CiBmdW5jICh6IDx0eXBlIDEyNj4pIEFuZE5vdCAoeCA8dHlwZSAxMjY+LCB5IDx0eXBlIDEyNj4pIDx0eXBlIDEyNj47CiBmdW5jICh6IDx0eXBlIDEyNj4pIFNldCAoeCA8dHlwZSAxMjY+KSA8dHlwZSAxMjY+OwogZnVuYyAoeiA8dHlwZSAxMjY+KSBNdWwgKHggPHR5cGUgMTI2PiwgeSA8dHlwZSAxMjY+KSA8dHlwZSAxMjY+OwogZnVuYyAoeiA8dHlwZSAxMjY+KSBNYXJzaGFsVGV4dCAoKSAodGV4dCA8dHlwZSAxMzkgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHogPHR5cGUgMTI2PikgRGl2ICh4IDx0eXBlIDEyNj4sIHkgPHR5cGUgMTI2PikgPHR5cGUgMTI2PjsKIGZ1bmMgKHogPHR5cGUgMTI2PikgQmlub21pYWwgKG4gPHR5cGUgLTQ+LCBrIDx0eXBlIC00PikgPHR5cGUgMTI2PjsKIGZ1bmMgKHggPHR5cGUgMTI2PikgRm9ybWF0IChzIDx0eXBlIDE0MCAiZm10LlN0YXRlIiA8dHlwZSAxNDEgaW50ZXJmYWNlIHsgV3JpdGUgKGIgPHR5cGUgMTQyIFtdIDx0eXBlIC0yMD4+KSAocmV0IDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgV2lkdGggKCkgKHdpZCA8dHlwZSAtMTE+LCBvayA8dHlwZSAtMTU+KTsgUHJlY2lzaW9uICgpIChwcmVjIDx0eXBlIC0xMT4sIG9rIDx0eXBlIC0xNT4pOyBGbGFnIChjIDx0eXBlIC0xMT4pIDx0eXBlIC0xNT47IH0+PiwgY2ggPHR5cGUgLTIxPik7CiBmdW5jICh6IDx0eXBlIDEyNj4pIE11bFJhbmdlIChhIDx0eXBlIC00PiwgYiA8dHlwZSAtND4pIDx0eXBlIDEyNj47CiBmdW5jICh6IDx0eXBlIDEyNj4pIFNldFN0cmluZyAocyA8dHlwZSAtMTY+LCBiYXNlIDx0eXBlIC0xMT4pICg/IDx0eXBlIDEyNj4sID8gPHR5cGUgLTE1Pik7CiBmdW5jICh4IDx0eXBlIDEyNj4pIFVpbnQ2NCAoKSA8dHlwZSAtOD47CiBmdW5jICh6IDx0eXBlIDEyNj4pIE1hcnNoYWxKU09OICgpICg/IDx0eXBlIDE0MyBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHggPHR5cGUgMTI2PikgQml0TGVuICgpIDx0eXBlIC0xMT47CiBmdW5jICh6IDx0eXBlIDEyNj4pIEdvYkRlY29kZSAoYnVmIDx0eXBlIDE0NCBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHogPHR5cGUgMTI2PikgLm1hdGgvYmlnLmJpbmFyeUdDRCAoYSA8dHlwZSAxMjY+LCBiIDx0eXBlIDEyNj4pIDx0eXBlIDEyNj47CiBmdW5jICh6IDx0eXBlIDEyNj4pIFN1YiAoeCA8dHlwZSAxMjY+LCB5IDx0eXBlIDEyNj4pIDx0eXBlIDEyNj47Cj4+OyBJc3N1ZXIgPHR5cGUgMTQ1ICJjcnlwdG8veDUwOS9wa2l4Lk5hbWUiICJwa2l4IiA8dHlwZSAxNDYgc3RydWN0IHsgQ291bnRyeSA8dHlwZSAxNDcgW10gPHR5cGUgLTE2Pj47IE9yZ2FuaXphdGlvbiA8dHlwZSAxNDc+OyBPcmdhbml6YXRpb25hbFVuaXQgPHR5cGUgMTQ3PjsgTG9jYWxpdHkgPHR5cGUgMTQ4IFtdIDx0eXBlIC0xNj4+OyBQcm92aW5jZSA8dHlwZSAxNDg+OyBTdHJlZXRBZGRyZXNzIDx0eXBlIDE0OSBbXSA8dHlwZSAtMTY+PjsgUG9zdGFsQ29kZSA8dHlwZSAxNDk+OyBTZXJpYWxOdW1iZXIgPHR5cGUgLTE2PjsgQ29tbW9uTmFtZSA8dHlwZSAtMTY+OyBOYW1lcyA8dHlwZSAxNTAgW10gPHR5cGUgMTUxICJjcnlwdG8veDUwOS9wa2l4LkF0dHJpYnV0ZVR5cGVBbmRWYWx1ZSIgPHR5cGUgMTUyIHN0cnVjdCB7IFR5cGUgPHR5cGUgMTUzICJlbmNvZGluZy9hc24xLk9iamVjdElkZW50aWZpZXIiICJhc24xIiA8dHlwZSAxNTQgW10gPHR5cGUgLTExPj4KIGZ1bmMgKG9pIDx0eXBlIDE1Mz4pIEVxdWFsIChvdGhlciA8dHlwZSAxNTM+KSA8dHlwZSAtMTU+OwogZnVuYyAob2kgPHR5cGUgMTUzPikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj47IFZhbHVlIDx0eXBlIDE1NSBpbnRlcmZhY2UgeyB9PjsgfT4+PjsgfT4KIGZ1bmMgKG4gPHR5cGUgMTQ1PikgVG9SRE5TZXF1ZW5jZSAoKSAocmV0IDx0eXBlIDE1NiAiY3J5cHRvL3g1MDkvcGtpeC5SRE5TZXF1ZW5jZSIgPHR5cGUgMTU3IFtdIDx0eXBlIDE1OCAiY3J5cHRvL3g1MDkvcGtpeC5SZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lU0VUIiA8dHlwZSAxNTkgW10gPHR5cGUgMTUxPj4+Pj4pOwogZnVuYyAobiA8dHlwZSAxNjAgKjx0eXBlIDE0NT4+KSBGaWxsRnJvbVJETlNlcXVlbmNlIChyZG5zIDx0eXBlIDE2MSAqPHR5cGUgMTU2Pj4pOwo+OyBTdWJqZWN0IDx0eXBlIDE0NT47IE5vdEJlZm9yZSA8dHlwZSAxNjIgInRpbWUuVGltZSIgInRpbWUiIDx0eXBlIDE2MyBzdHJ1Y3QgeyAudGltZS5zZWMgPHR5cGUgLTQ+OyAudGltZS5uc2VjIDx0eXBlIC0zPjsgLnRpbWUubG9jIDx0eXBlIDE2NCAqPHR5cGUgMTY1ICJ0aW1lLkxvY2F0aW9uIiA8dHlwZSAxNjYgc3RydWN0IHsgLnRpbWUubmFtZSA8dHlwZSAtMTY+OyAudGltZS56b25lIDx0eXBlIDE2NyBbXSA8dHlwZSAxNjggIi50aW1lLnpvbmUiIDx0eXBlIDE2OSBzdHJ1Y3QgeyAudGltZS5uYW1lIDx0eXBlIC0xNj47IC50aW1lLm9mZnNldCA8dHlwZSAtMTE+OyAudGltZS5pc0RTVCA8dHlwZSAtMTU+OyB9Pj4+OyAudGltZS50eCA8dHlwZSAxNzAgW10gPHR5cGUgMTcxICIudGltZS56b25lVHJhbnMiIDx0eXBlIDE3MiBzdHJ1Y3QgeyAudGltZS53aGVuIDx0eXBlIC00PjsgLnRpbWUuaW5kZXggPHR5cGUgLTU+OyAudGltZS5pc3N0ZCA8dHlwZSAtMTU+OyAudGltZS5pc3V0YyA8dHlwZSAtMTU+OyB9Pj4+OyAudGltZS5jYWNoZVN0YXJ0IDx0eXBlIC00PjsgLnRpbWUuY2FjaGVFbmQgPHR5cGUgLTQ+OyAudGltZS5jYWNoZVpvbmUgPHR5cGUgMTczICo8dHlwZSAxNjg+PjsgfT4KIGZ1bmMgKGwgPHR5cGUgMTc0ICo8dHlwZSAxNjU+PikgLnRpbWUuZmlyc3Rab25lVXNlZCAoKSA8dHlwZSAtMTU+OwogZnVuYyAobCA8dHlwZSAxNzQ+KSAudGltZS5sb29rdXAgKHNlYyA8dHlwZSAtND4pIChuYW1lIDx0eXBlIC0xNj4sIG9mZnNldCA8dHlwZSAtMTE+LCBpc0RTVCA8dHlwZSAtMTU+LCBzdGFydCA8dHlwZSAtND4sIGVuZCA8dHlwZSAtND4pOwogZnVuYyAobCA8dHlwZSAxNzQ+KSAudGltZS5sb29rdXBOYW1lIChuYW1lIDx0eXBlIC0xNj4sIHVuaXggPHR5cGUgLTQ+KSAob2Zmc2V0IDx0eXBlIC0xMT4sIGlzRFNUIDx0eXBlIC0xNT4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAobCA8dHlwZSAxNzQ+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGwgPHR5cGUgMTc0PikgLnRpbWUuZ2V0ICgpIDx0eXBlIDE3ND47CiBmdW5jIChsIDx0eXBlIDE3ND4pIC50aW1lLmxvb2t1cEZpcnN0Wm9uZSAoKSA8dHlwZSAtMTE+Owo+PjsgfT4KIGZ1bmMgKHQgPHR5cGUgMTYyPikgQWZ0ZXIgKHUgPHR5cGUgMTYyPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMTYyPikgTWFyc2hhbFRleHQgKCkgKD8gPHR5cGUgMTc1IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAxNjI+KSBEYXRlICgpICh5ZWFyIDx0eXBlIC0xMT4sIG1vbnRoIDx0eXBlIDE3NiAidGltZS5Nb250aCIgPHR5cGUgLTExPgogZnVuYyAobSA8dHlwZSAxNzY+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPiwgZGF5IDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSAxNjI+KSAudGltZS5hYnMgKCkgPHR5cGUgLTg+OwogZnVuYyAodCA8dHlwZSAxNjI+KSBXZWVrZGF5ICgpIDx0eXBlIDE3NyAidGltZS5XZWVrZGF5IiA8dHlwZSAtMTE+CiBmdW5jIChkIDx0eXBlIDE3Nz4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+OwogZnVuYyAodCA8dHlwZSAxNjI+KSBOYW5vc2Vjb25kICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDE3OCAqPHR5cGUgMTYyPj4pIEdvYkRlY29kZSAoZGF0YSA8dHlwZSAxNzkgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jICh0IDx0eXBlIDE2Mj4pIEluIChsb2MgPHR5cGUgMTY0PikgPHR5cGUgMTYyPjsKIGZ1bmMgKHQgPHR5cGUgMTYyPikgTG9jYWwgKCkgPHR5cGUgMTYyPjsKIGZ1bmMgKHQgPHR5cGUgMTYyPikgTW9udGggKCkgPHR5cGUgMTc2PjsKIGZ1bmMgKHQgPHR5cGUgMTYyPikgSG91ciAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAxNjI+KSBNYXJzaGFsQmluYXJ5ICgpICg/IDx0eXBlIDE4MCBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgMTYyPikgVW5peE5hbm8gKCkgPHR5cGUgLTQ+OwogZnVuYyAodCA8dHlwZSAxNjI+KSBFcXVhbCAodSA8dHlwZSAxNjI+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSAxNjI+KSBGb3JtYXQgKGxheW91dCA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSAxNjI+KSBBZGREYXRlICh5ZWFycyA8dHlwZSAtMTE+LCBtb250aHMgPHR5cGUgLTExPiwgZGF5cyA8dHlwZSAtMTE+KSA8dHlwZSAxNjI+OwogZnVuYyAodCA8dHlwZSAxNjI+KSBab25lICgpIChuYW1lIDx0eXBlIC0xNj4sIG9mZnNldCA8dHlwZSAtMTE+KTsKIGZ1bmMgKHQgPHR5cGUgMTYyPikgRGF5ICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDE2Mj4pIENsb2NrICgpIChob3VyIDx0eXBlIC0xMT4sIG1pbiA8dHlwZSAtMTE+LCBzZWMgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDE2Mj4pIE1hcnNoYWxKU09OICgpICg/IDx0eXBlIDE4MSBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgMTYyPikgVVRDICgpIDx0eXBlIDE2Mj47CiBmdW5jICh0IDx0eXBlIDE2Mj4pIC50aW1lLmRhdGUgKGZ1bGwgPHR5cGUgLTE1PikgKHllYXIgPHR5cGUgLTExPiwgbW9udGggPHR5cGUgMTc2PiwgZGF5IDx0eXBlIC0xMT4sIHlkYXkgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDE2Mj4pIElzWmVybyAoKSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSAxNjI+KSBCZWZvcmUgKHUgPHR5cGUgMTYyPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMTYyPikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDE2Mj4pIFNlY29uZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAxNjI+KSBNaW51dGUgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTYyPikgU3ViICh1IDx0eXBlIDE2Mj4pIDx0eXBlIDE4MiAidGltZS5EdXJhdGlvbiIgPHR5cGUgLTQ+CiBmdW5jIChkIDx0eXBlIDE4Mj4pIFNlY29uZHMgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKGQgPHR5cGUgMTgyPikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChkIDx0eXBlIDE4Mj4pIE1pbnV0ZXMgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKGQgPHR5cGUgMTgyPikgSG91cnMgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKGQgPHR5cGUgMTgyPikgTmFub3NlY29uZHMgKCkgPHR5cGUgLTQ+Owo+OwogZnVuYyAodCA8dHlwZSAxNjI+KSBSb3VuZCAoZCA8dHlwZSAxODI+KSA8dHlwZSAxNjI+OwogZnVuYyAodCA8dHlwZSAxNjI+KSBVbml4ICgpIDx0eXBlIC00PjsKIGZ1bmMgKHQgPHR5cGUgMTc4PikgVW5tYXJzaGFsVGV4dCAoZGF0YSA8dHlwZSAxODMgW10gPHR5cGUgLTIwPj4pIChlcnIgPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDE2Mj4pIEFkZCAoZCA8dHlwZSAxODI+KSA8dHlwZSAxNjI+OwogZnVuYyAodCA8dHlwZSAxNjI+KSBUcnVuY2F0ZSAoZCA8dHlwZSAxODI+KSA8dHlwZSAxNjI+OwogZnVuYyAodCA8dHlwZSAxNjI+KSBMb2NhdGlvbiAoKSA8dHlwZSAxNjQ+OwogZnVuYyAodCA8dHlwZSAxNjI+KSBHb2JFbmNvZGUgKCkgKD8gPHR5cGUgMTg0IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAxNzg+KSBVbm1hcnNoYWxCaW5hcnkgKGRhdGEgPHR5cGUgMTg1IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAodCA8dHlwZSAxNjI+KSBJU09XZWVrICgpICh5ZWFyIDx0eXBlIC0xMT4sIHdlZWsgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDE2Mj4pIC50aW1lLmxvY2FicyAoKSAobmFtZSA8dHlwZSAtMTY+LCBvZmZzZXQgPHR5cGUgLTExPiwgYWJzIDx0eXBlIC04Pik7CiBmdW5jICh0IDx0eXBlIDE2Mj4pIFllYXJEYXkgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTYyPikgWWVhciAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAxNzg+KSBVbm1hcnNoYWxKU09OIChkYXRhIDx0eXBlIDE4NiBbXSA8dHlwZSAtMjA+PikgKGVyciA8dHlwZSAtMTk+KTsKPjsgTm90QWZ0ZXIgPHR5cGUgMTYyPjsgS2V5VXNhZ2UgPHR5cGUgMTg3ICJjcnlwdG8veDUwOS5LZXlVc2FnZSIgPHR5cGUgLTExPj47IEV4dGVuc2lvbnMgPHR5cGUgMTg4IFtdIDx0eXBlIDE4OSAiY3J5cHRvL3g1MDkvcGtpeC5FeHRlbnNpb24iIDx0eXBlIDE5MCBzdHJ1Y3QgeyBJZCA8dHlwZSAxNTM+OyBDcml0aWNhbCA8dHlwZSAtMTU+ICJhc24xOlwib3B0aW9uYWxcIiI7IFZhbHVlIDx0eXBlIDE5MSBbXSA8dHlwZSAtMjA+PjsgfT4+PjsgRXh0cmFFeHRlbnNpb25zIDx0eXBlIDE5MiBbXSA8dHlwZSAxODk+PjsgRXh0S2V5VXNhZ2UgPHR5cGUgMTkzIFtdIDx0eXBlIDE5NCAiY3J5cHRvL3g1MDkuRXh0S2V5VXNhZ2UiIDx0eXBlIC0xMT4+PjsgVW5rbm93bkV4dEtleVVzYWdlIDx0eXBlIDE5NSBbXSA8dHlwZSAxNTM+PjsgQmFzaWNDb25zdHJhaW50c1ZhbGlkIDx0eXBlIC0xNT47IElzQ0EgPHR5cGUgLTE1PjsgTWF4UGF0aExlbiA8dHlwZSAtMTE+OyBNYXhQYXRoTGVuWmVybyA8dHlwZSAtMTU+OyBTdWJqZWN0S2V5SWQgPHR5cGUgMTk2IFtdIDx0eXBlIC0yMD4+OyBBdXRob3JpdHlLZXlJZCA8dHlwZSAxOTcgW10gPHR5cGUgLTIwPj47IE9DU1BTZXJ2ZXIgPHR5cGUgMTk4IFtdIDx0eXBlIC0xNj4+OyBJc3N1aW5nQ2VydGlmaWNhdGVVUkwgPHR5cGUgMTk5IFtdIDx0eXBlIC0xNj4+OyBETlNOYW1lcyA8dHlwZSAyMDAgW10gPHR5cGUgLTE2Pj47IEVtYWlsQWRkcmVzc2VzIDx0eXBlIDIwMSBbXSA8dHlwZSAtMTY+PjsgSVBBZGRyZXNzZXMgPHR5cGUgMjAyIFtdIDx0eXBlIDIwMyAibmV0LklQIiA8dHlwZSAyMDQgW10gPHR5cGUgLTIwPj4KIGZ1bmMgKGlwIDx0eXBlIDIwMz4pIE1hcnNoYWxUZXh0ICgpICg/IDx0eXBlIDIwNSBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGlwIDx0eXBlIDIwMz4pIElzTGlua0xvY2FsTXVsdGljYXN0ICgpIDx0eXBlIC0xNT47CiBmdW5jIChpcCA8dHlwZSAyMDM+KSBJc011bHRpY2FzdCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgMjAzPikgVG80ICgpIDx0eXBlIDIwMz47CiBmdW5jIChpcCA8dHlwZSAyMDYgKjx0eXBlIDIwMz4+KSBVbm1hcnNoYWxUZXh0ICh0ZXh0IDx0eXBlIDIwNyBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGlwIDx0eXBlIDIwMz4pIFRvMTYgKCkgPHR5cGUgMjAzPjsKIGZ1bmMgKGlwIDx0eXBlIDIwMz4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoaXAgPHR5cGUgMjAzPikgSXNMaW5rTG9jYWxVbmljYXN0ICgpIDx0eXBlIC0xNT47CiBmdW5jIChpcCA8dHlwZSAyMDM+KSBJc0xvb3BiYWNrICgpIDx0eXBlIC0xNT47CiBmdW5jIChpcCA8dHlwZSAyMDM+KSBFcXVhbCAoeCA8dHlwZSAyMDM+KSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgMjAzPikgRGVmYXVsdE1hc2sgKCkgPHR5cGUgMjA4ICJuZXQuSVBNYXNrIiA8dHlwZSAyMDkgW10gPHR5cGUgLTIwPj4KIGZ1bmMgKG0gPHR5cGUgMjA4PikgU2l6ZSAoKSAob25lcyA8dHlwZSAtMTE+LCBiaXRzIDx0eXBlIC0xMT4pOwogZnVuYyAobSA8dHlwZSAyMDg+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsKIGZ1bmMgKGlwIDx0eXBlIDIwMz4pIE1hc2sgKG1hc2sgPHR5cGUgMjA4PikgPHR5cGUgMjAzPjsKIGZ1bmMgKGlwIDx0eXBlIDIwMz4pIElzVW5zcGVjaWZpZWQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGlwIDx0eXBlIDIwMz4pIElzSW50ZXJmYWNlTG9jYWxNdWx0aWNhc3QgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGlwIDx0eXBlIDIwMz4pIElzR2xvYmFsVW5pY2FzdCAoKSA8dHlwZSAtMTU+Owo+PjsgUGVybWl0dGVkRE5TRG9tYWluc0NyaXRpY2FsIDx0eXBlIC0xNT47IFBlcm1pdHRlZEROU0RvbWFpbnMgPHR5cGUgMjEwIFtdIDx0eXBlIC0xNj4+OyBDUkxEaXN0cmlidXRpb25Qb2ludHMgPHR5cGUgMjExIFtdIDx0eXBlIC0xNj4+OyBQb2xpY3lJZGVudGlmaWVycyA8dHlwZSAyMTIgW10gPHR5cGUgMTUzPj47IH0+CiBmdW5jIChjIDx0eXBlIDIxMyAqPHR5cGUgOTI+PikgQ2hlY2tTaWduYXR1cmUgKGFsZ28gPHR5cGUgMTAwPiwgc2lnbmVkIDx0eXBlIDIxNCBbXSA8dHlwZSAtMjA+Piwgc2lnbmF0dXJlIDx0eXBlIDIxND4pIChlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDIxMz4pIC5jcnlwdG8veDUwOS5zeXN0ZW1WZXJpZnkgKG9wdHMgPHR5cGUgMjE1ICo8dHlwZSAyMTYgImNyeXB0by94NTA5LlZlcmlmeU9wdGlvbnMiIDx0eXBlIDIxNyBzdHJ1Y3QgeyBETlNOYW1lIDx0eXBlIC0xNj47IEludGVybWVkaWF0ZXMgPHR5cGUgMjE4ICo8dHlwZSAyMTkgImNyeXB0by94NTA5LkNlcnRQb29sIiA8dHlwZSAyMjAgc3RydWN0IHsgLmNyeXB0by94NTA5LmJ5U3ViamVjdEtleUlkIDx0eXBlIDIyMSBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDIyMiBbXSA8dHlwZSAtMTE+Pj47IC5jcnlwdG8veDUwOS5ieU5hbWUgPHR5cGUgMjIzIG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgMjI0IFtdIDx0eXBlIC0xMT4+PjsgLmNyeXB0by94NTA5LmNlcnRzIDx0eXBlIDIyNSBbXSA8dHlwZSAyMTM+PjsgfT4KIGZ1bmMgKHMgPHR5cGUgMjI2ICo8dHlwZSAyMTk+PikgQXBwZW5kQ2VydHNGcm9tUEVNIChwZW1DZXJ0cyA8dHlwZSAyMjcgW10gPHR5cGUgLTIwPj4pIChvayA8dHlwZSAtMTU+KTsKIGZ1bmMgKHMgPHR5cGUgMjI2PikgU3ViamVjdHMgKCkgKHJlcyA8dHlwZSAyMjggW10gPHR5cGUgMjI5IFtdIDx0eXBlIC0yMD4+Pik7CiBmdW5jIChzIDx0eXBlIDIyNj4pIEFkZENlcnQgKGNlcnQgPHR5cGUgMjEzPik7CiBmdW5jIChzIDx0eXBlIDIyNj4pIC5jcnlwdG8veDUwOS5maW5kVmVyaWZpZWRQYXJlbnRzIChjZXJ0IDx0eXBlIDIxMz4pIChwYXJlbnRzIDx0eXBlIDIzMCBbXSA8dHlwZSAtMTE+PiwgZXJyQ2VydCA8dHlwZSAyMTM+LCBlcnIgPHR5cGUgLTE5Pik7Cj4+OyBSb290cyA8dHlwZSAyMTg+OyBDdXJyZW50VGltZSA8dHlwZSAxNjI+OyBLZXlVc2FnZXMgPHR5cGUgMjMxIFtdIDx0eXBlIDE5ND4+OyB9Pj4+KSAoY2hhaW5zIDx0eXBlIDIzMiBbXSA8dHlwZSAyMzMgW10gPHR5cGUgMjEzPj4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDIxMz4pIENoZWNrU2lnbmF0dXJlRnJvbSAocGFyZW50IDx0eXBlIDIxMz4pIChlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDIxMz4pIEVxdWFsIChvdGhlciA8dHlwZSAyMTM+KSA8dHlwZSAtMTU+OwogZnVuYyAoYyA8dHlwZSAyMTM+KSBWZXJpZnkgKG9wdHMgPHR5cGUgMjE2PikgKGNoYWlucyA8dHlwZSAyMzQgW10gPHR5cGUgMjM1IFtdIDx0eXBlIDIxMz4+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAyMTM+KSBWZXJpZnlIb3N0bmFtZSAoaCA8dHlwZSAtMTY+KSA8dHlwZSAtMTk+OwogZnVuYyAoYyA8dHlwZSAyMTM+KSAuY3J5cHRvL3g1MDkuaXNWYWxpZCAoY2VydFR5cGUgPHR5cGUgLTExPiwgY3VycmVudENoYWluIDx0eXBlIDIzNiBbXSA8dHlwZSAyMTM+Piwgb3B0cyA8dHlwZSAyMTU+KSA8dHlwZSAtMTk+OwogZnVuYyAoYyA8dHlwZSAyMTM+KSBDaGVja0NSTFNpZ25hdHVyZSAoY3JsIDx0eXBlIDIzNyAqPHR5cGUgMjM4ICJjcnlwdG8veDUwOS9wa2l4LkNlcnRpZmljYXRlTGlzdCIgPHR5cGUgMjM5IHN0cnVjdCB7IFRCU0NlcnRMaXN0IDx0eXBlIDI0MCAiY3J5cHRvL3g1MDkvcGtpeC5UQlNDZXJ0aWZpY2F0ZUxpc3QiIDx0eXBlIDI0MSBzdHJ1Y3QgeyBSYXcgPHR5cGUgMjQyICJlbmNvZGluZy9hc24xLlJhd0NvbnRlbnQiIDx0eXBlIDI0MyBbXSA8dHlwZSAtMjA+Pj47IFZlcnNpb24gPHR5cGUgLTExPiAiYXNuMTpcIm9wdGlvbmFsLGRlZmF1bHQ6MlwiIjsgU2lnbmF0dXJlIDx0eXBlIDI0NCAiY3J5cHRvL3g1MDkvcGtpeC5BbGdvcml0aG1JZGVudGlmaWVyIiA8dHlwZSAyNDUgc3RydWN0IHsgQWxnb3JpdGhtIDx0eXBlIDE1Mz47IFBhcmFtZXRlcnMgPHR5cGUgMjQ2ICJlbmNvZGluZy9hc24xLlJhd1ZhbHVlIiA8dHlwZSAyNDcgc3RydWN0IHsgQ2xhc3MgPHR5cGUgLTExPjsgVGFnIDx0eXBlIC0xMT47IElzQ29tcG91bmQgPHR5cGUgLTE1PjsgQnl0ZXMgPHR5cGUgMjQ4IFtdIDx0eXBlIC0yMD4+OyBGdWxsQnl0ZXMgPHR5cGUgMjQ5IFtdIDx0eXBlIC0yMD4+OyB9Pj4gImFzbjE6XCJvcHRpb25hbFwiIjsgfT4+OyBJc3N1ZXIgPHR5cGUgMTU2PjsgVGhpc1VwZGF0ZSA8dHlwZSAxNjI+OyBOZXh0VXBkYXRlIDx0eXBlIDE2Mj4gImFzbjE6XCJvcHRpb25hbFwiIjsgUmV2b2tlZENlcnRpZmljYXRlcyA8dHlwZSAyNTAgW10gPHR5cGUgMjUxICJjcnlwdG8veDUwOS9wa2l4LlJldm9rZWRDZXJ0aWZpY2F0ZSIgPHR5cGUgMjUyIHN0cnVjdCB7IFNlcmlhbE51bWJlciA8dHlwZSAxMDM+OyBSZXZvY2F0aW9uVGltZSA8dHlwZSAxNjI+OyBFeHRlbnNpb25zIDx0eXBlIDI1MyBbXSA8dHlwZSAxODk+PiAiYXNuMTpcIm9wdGlvbmFsXCIiOyB9Pj4+ICJhc24xOlwib3B0aW9uYWxcIiI7IEV4dGVuc2lvbnMgPHR5cGUgMjU0IFtdIDx0eXBlIDE4OT4+ICJhc24xOlwidGFnOjAsb3B0aW9uYWwsZXhwbGljaXRcIiI7IH0+PjsgU2lnbmF0dXJlQWxnb3JpdGhtIDx0eXBlIDI0ND47IFNpZ25hdHVyZVZhbHVlIDx0eXBlIDI1NSAiZW5jb2RpbmcvYXNuMS5CaXRTdHJpbmciIDx0eXBlIDI1NiBzdHJ1Y3QgeyBCeXRlcyA8dHlwZSAyNTcgW10gPHR5cGUgLTIwPj47IEJpdExlbmd0aCA8dHlwZSAtMTE+OyB9PgogZnVuYyAoYiA8dHlwZSAyNTU+KSBBdCAoaSA8dHlwZSAtMTE+KSA8dHlwZSAtMTE+OwogZnVuYyAoYiA8dHlwZSAyNTU+KSBSaWdodEFsaWduICgpIDx0eXBlIDI1OCBbXSA8dHlwZSAtMjA+PjsKPjsgfT4KIGZ1bmMgKGNlcnRMaXN0IDx0eXBlIDI1OSAqPHR5cGUgMjM4Pj4pIEhhc0V4cGlyZWQgKG5vdyA8dHlwZSAxNjI+KSA8dHlwZSAtMTU+Owo+PikgKGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMjEzPikgLmNyeXB0by94NTA5LmJ1aWxkQ2hhaW5zIChjYWNoZSA8dHlwZSAyNjAgbWFwIFs8dHlwZSAtMTE+XSA8dHlwZSAyNjEgW10gPHR5cGUgMjYyIFtdIDx0eXBlIDIxMz4+Pj4sIGN1cnJlbnRDaGFpbiA8dHlwZSAyNjMgW10gPHR5cGUgMjEzPj4sIG9wdHMgPHR5cGUgMjE1PikgKGNoYWlucyA8dHlwZSAyNjQgW10gPHR5cGUgMjY1IFtdIDx0eXBlIDIxMz4+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAyMTM+KSBDcmVhdGVDUkwgKHJhbmQgPHR5cGUgMzQ+LCBwcml2IDx0eXBlIDI2NiBpbnRlcmZhY2UgeyB9PiwgcmV2b2tlZENlcnRzIDx0eXBlIDI2NyBbXSA8dHlwZSAyNTE+Piwgbm93IDx0eXBlIDE2Mj4sIGV4cGlyeSA8dHlwZSAxNjI+KSAoY3JsQnl0ZXMgPHR5cGUgMjY4IFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7Cj4+PjsgVmVyaWZpZWRDaGFpbnMgPHR5cGUgMjY5IFtdIDx0eXBlIDI3MCBbXSA8dHlwZSA5MT4+PjsgVExTVW5pcXVlIDx0eXBlIDI3MSBbXSA8dHlwZSAtMjA+PjsgfT4+PjsgfT4KIGZ1bmMgKHIgPHR5cGUgMjcyICo8dHlwZSA0Nj4+KSAubmV0L2h0dHAuZXhwZWN0c0NvbnRpbnVlICgpIDx0eXBlIC0xNT47CiBmdW5jIChyIDx0eXBlIDI3Mj4pIFJlZmVyZXIgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHIgPHR5cGUgMjcyPikgUHJvdG9BdExlYXN0IChtYWpvciA8dHlwZSAtMTE+LCBtaW5vciA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OwogZnVuYyAociA8dHlwZSAyNzI+KSAubmV0L2h0dHAubXVsdGlwYXJ0UmVhZGVyICgpICg/IDx0eXBlIDI3MyAqPHR5cGUgMjc0ICJtaW1lL211bHRpcGFydC5SZWFkZXIiIDx0eXBlIDI3NSBzdHJ1Y3QgeyAubWltZS9tdWx0aXBhcnQuYnVmUmVhZGVyIDx0eXBlIDI3NiAqPHR5cGUgMjc3ICJidWZpby5SZWFkZXIiICJidWZpbyIgPHR5cGUgMjc4IHN0cnVjdCB7IC5idWZpby5idWYgPHR5cGUgMjc5IFtdIDx0eXBlIC0yMD4+OyAuYnVmaW8ucmQgPHR5cGUgMzQ+OyAuYnVmaW8uciA8dHlwZSAtMTE+OyAuYnVmaW8udyA8dHlwZSAtMTE+OyAuYnVmaW8uZXJyIDx0eXBlIC0xOT47IC5idWZpby5sYXN0Qnl0ZSA8dHlwZSAtMTE+OyAuYnVmaW8ubGFzdFJ1bmVTaXplIDx0eXBlIC0xMT47IH0+CiBmdW5jIChiIDx0eXBlIDI4MCAqPHR5cGUgMjc3Pj4pIFVucmVhZEJ5dGUgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGIgPHR5cGUgMjgwPikgUmVhZFN0cmluZyAoZGVsaW0gPHR5cGUgLTIwPikgKGxpbmUgPHR5cGUgLTE2PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyODA+KSBSZWFkQnl0ZSAoKSAoYyA8dHlwZSAtMjA+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI4MD4pIFdyaXRlVG8gKHcgPHR5cGUgNz4pIChuIDx0eXBlIC00PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyODA+KSBSZWFkQnl0ZXMgKGRlbGltIDx0eXBlIC0yMD4pIChsaW5lIDx0eXBlIDI4MSBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyODA+KSBSZWFkTGluZSAoKSAobGluZSA8dHlwZSAyODIgW10gPHR5cGUgLTIwPj4sIGlzUHJlZml4IDx0eXBlIC0xNT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjgwPikgUmVhZFJ1bmUgKCkgKHIgPHR5cGUgLTIxPiwgc2l6ZSA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI4MD4pIC5idWZpby53cml0ZUJ1ZiAodyA8dHlwZSA3PikgKD8gPHR5cGUgLTQ+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyODA+KSAuYnVmaW8uZmlsbCAoKTsKIGZ1bmMgKGIgPHR5cGUgMjgwPikgVW5yZWFkUnVuZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYiA8dHlwZSAyODA+KSBSZXNldCAociA8dHlwZSAzND4pOwogZnVuYyAoYiA8dHlwZSAyODA+KSBSZWFkU2xpY2UgKGRlbGltIDx0eXBlIC0yMD4pIChsaW5lIDx0eXBlIDI4MyBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyODA+KSBSZWFkIChwIDx0eXBlIDI4NCBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyODA+KSBCdWZmZXJlZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAoYiA8dHlwZSAyODA+KSAuYnVmaW8ucmVzZXQgKGJ1ZiA8dHlwZSAyODUgW10gPHR5cGUgLTIwPj4sIHIgPHR5cGUgMzQ+KTsKIGZ1bmMgKGIgPHR5cGUgMjgwPikgUGVlayAobiA8dHlwZSAtMTE+KSAoPyA8dHlwZSAyODYgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI4MD4pIC5idWZpby5yZWFkRXJyICgpIDx0eXBlIC0xOT47Cj4+OyAubWltZS9tdWx0aXBhcnQuY3VycmVudFBhcnQgPHR5cGUgMjg3ICo8dHlwZSAyODggIm1pbWUvbXVsdGlwYXJ0LlBhcnQiIDx0eXBlIDI4OSBzdHJ1Y3QgeyBIZWFkZXIgPHR5cGUgNzQ+OyAubWltZS9tdWx0aXBhcnQuYnVmZmVyIDx0eXBlIDIxPjsgLm1pbWUvbXVsdGlwYXJ0Lm1yIDx0eXBlIDI5MCAqPHR5cGUgMjc0Pj47IC5taW1lL211bHRpcGFydC5ieXRlc1JlYWQgPHR5cGUgLTExPjsgLm1pbWUvbXVsdGlwYXJ0LmRpc3Bvc2l0aW9uIDx0eXBlIC0xNj47IC5taW1lL211bHRpcGFydC5kaXNwb3NpdGlvblBhcmFtcyA8dHlwZSAyOTEgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAtMTY+PjsgLm1pbWUvbXVsdGlwYXJ0LnIgPHR5cGUgMzQ+OyB9PgogZnVuYyAocCA8dHlwZSAyOTIgKjx0eXBlIDI4OD4+KSBGaWxlTmFtZSAoKSA8dHlwZSAtMTY+OwogZnVuYyAocCA8dHlwZSAyOTI+KSAubWltZS9tdWx0aXBhcnQucGFyc2VDb250ZW50RGlzcG9zaXRpb24gKCk7CiBmdW5jIChwIDx0eXBlIDI5Mj4pIENsb3NlICgpIDx0eXBlIC0xOT47CiBmdW5jIChicCA8dHlwZSAyOTI+KSAubWltZS9tdWx0aXBhcnQucG9wdWxhdGVIZWFkZXJzICgpIDx0eXBlIC0xOT47CiBmdW5jIChwIDx0eXBlIDI5Mj4pIFJlYWQgKGQgPHR5cGUgMjkzIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChwIDx0eXBlIDI5Mj4pIEZvcm1OYW1lICgpIDx0eXBlIC0xNj47Cj4+OyAubWltZS9tdWx0aXBhcnQucGFydHNSZWFkIDx0eXBlIC0xMT47IC5taW1lL211bHRpcGFydC5ubCA8dHlwZSAyOTQgW10gPHR5cGUgLTIwPj47IC5taW1lL211bHRpcGFydC5ubERhc2hCb3VuZGFyeSA8dHlwZSAyOTUgW10gPHR5cGUgLTIwPj47IC5taW1lL211bHRpcGFydC5kYXNoQm91bmRhcnlEYXNoIDx0eXBlIDI5NiBbXSA8dHlwZSAtMjA+PjsgLm1pbWUvbXVsdGlwYXJ0LmRhc2hCb3VuZGFyeSA8dHlwZSAyOTcgW10gPHR5cGUgLTIwPj47IH0+CiBmdW5jIChtciA8dHlwZSAyOTggKjx0eXBlIDI3ND4+KSAubWltZS9tdWx0aXBhcnQucGVla0J1ZmZlcklzRW1wdHlQYXJ0IChwZWVrIDx0eXBlIDI5OSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHIgPHR5cGUgMjk4PikgUmVhZEZvcm0gKG1heE1lbW9yeSA8dHlwZSAtND4pIChmIDx0eXBlIDY0PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAobXIgPHR5cGUgMjk4PikgLm1pbWUvbXVsdGlwYXJ0LmlzQm91bmRhcnlEZWxpbWl0ZXJMaW5lIChsaW5lIDx0eXBlIDMwMCBbXSA8dHlwZSAtMjA+PikgKHJldCA8dHlwZSAtMTU+KTsKIGZ1bmMgKHIgPHR5cGUgMjk4PikgTmV4dFBhcnQgKCkgKD8gPHR5cGUgMjg3PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKG1yIDx0eXBlIDI5OD4pIC5taW1lL211bHRpcGFydC5pc0ZpbmFsQm91bmRhcnkgKGxpbmUgPHR5cGUgMzAxIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTU+Owo+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHIgPHR5cGUgMjcyPikgLm5ldC9odHRwLndhbnRzSHR0cDEwS2VlcEFsaXZlICgpIDx0eXBlIC0xNT47CiBmdW5jIChyIDx0eXBlIDI3Mj4pIFBhcnNlTXVsdGlwYXJ0Rm9ybSAobWF4TWVtb3J5IDx0eXBlIC00PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHIgPHR5cGUgMjcyPikgVXNlckFnZW50ICgpIDx0eXBlIC0xNj47CiBmdW5jIChyZXEgPHR5cGUgMjcyPikgLm5ldC9odHRwLndyaXRlICh3IDx0eXBlIDc+LCB1c2luZ1Byb3h5IDx0eXBlIC0xNT4sIGV4dHJhSGVhZGVycyA8dHlwZSA0PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHIgPHR5cGUgMjcyPikgQ29va2llcyAoKSA8dHlwZSAzMDIgW10gPHR5cGUgMzAzICo8dHlwZSAzMDQgIm5ldC9odHRwLkNvb2tpZSIgPHR5cGUgMzA1IHN0cnVjdCB7IE5hbWUgPHR5cGUgLTE2PjsgVmFsdWUgPHR5cGUgLTE2PjsgUGF0aCA8dHlwZSAtMTY+OyBEb21haW4gPHR5cGUgLTE2PjsgRXhwaXJlcyA8dHlwZSAxNjI+OyBSYXdFeHBpcmVzIDx0eXBlIC0xNj47IE1heEFnZSA8dHlwZSAtMTE+OyBTZWN1cmUgPHR5cGUgLTE1PjsgSHR0cE9ubHkgPHR5cGUgLTE1PjsgUmF3IDx0eXBlIC0xNj47IFVucGFyc2VkIDx0eXBlIDMwNiBbXSA8dHlwZSAtMTY+PjsgfT4KIGZ1bmMgKGMgPHR5cGUgMzA3ICo8dHlwZSAzMDQ+PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj4+PjsKIGZ1bmMgKHIgPHR5cGUgMjcyPikgV3JpdGVQcm94eSAodyA8dHlwZSA3PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHIgPHR5cGUgMjcyPikgTXVsdGlwYXJ0UmVhZGVyICgpICg/IDx0eXBlIDI3Mz4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChyIDx0eXBlIDI3Mj4pIFdyaXRlICh3IDx0eXBlIDc+KSA8dHlwZSAtMTk+OwogZnVuYyAociA8dHlwZSAyNzI+KSAubmV0L2h0dHAud2FudHNDbG9zZSAoKSA8dHlwZSAtMTU+OwogZnVuYyAociA8dHlwZSAyNzI+KSBGb3JtVmFsdWUgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAociA8dHlwZSAyNzI+KSBQYXJzZUZvcm0gKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKHIgPHR5cGUgMjcyPikgQ29va2llIChuYW1lIDx0eXBlIC0xNj4pICg/IDx0eXBlIDMwMz4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChyIDx0eXBlIDI3Mj4pIFBvc3RGb3JtVmFsdWUgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAociA8dHlwZSAyNzI+KSBBZGRDb29raWUgKGMgPHR5cGUgMzAzPik7CiBmdW5jIChyIDx0eXBlIDI3Mj4pIEZvcm1GaWxlIChrZXkgPHR5cGUgLTE2PikgKD8gPHR5cGUgNzk+LCA/IDx0eXBlIDcxPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHIgPHR5cGUgMjcyPikgLm5ldC9odHRwLmNsb3NlQm9keSAoKTsKIGZ1bmMgKHIgPHR5cGUgMjcyPikgU2V0QmFzaWNBdXRoICh1c2VybmFtZSA8dHlwZSAtMTY+LCBwYXNzd29yZCA8dHlwZSAtMTY+KTsKIGZ1bmMgKHIgPHR5cGUgMjcyPikgQmFzaWNBdXRoICgpICh1c2VybmFtZSA8dHlwZSAtMTY+LCBwYXNzd29yZCA8dHlwZSAtMTY+LCBvayA8dHlwZSAtMTU+KTsKPj4pOyB9Pj4pIDx0eXBlIDMwOCAqPHR5cGUgMzA5ICJTZXJ2ZXIiIDx0eXBlIDMxMCBzdHJ1Y3QgeyBVUkwgPHR5cGUgLTE2PjsgTGlzdGVuZXIgPHR5cGUgMzExICJuZXQuTGlzdGVuZXIiIDx0eXBlIDMxMiBpbnRlcmZhY2UgeyBBY2NlcHQgKCkgKGMgPHR5cGUgMzEzICJuZXQuQ29ubiIgPHR5cGUgMzE0IGludGVyZmFjZSB7IFJlYWQgKGIgPHR5cGUgMzE1IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IFdyaXRlIChiIDx0eXBlIDMxNiBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyBDbG9zZSAoKSA8dHlwZSAtMTk+OyBMb2NhbEFkZHIgKCkgPHR5cGUgMzE3ICJuZXQuQWRkciIgPHR5cGUgMzE4IGludGVyZmFjZSB7IE5ldHdvcmsgKCkgPHR5cGUgLTE2PjsgU3RyaW5nICgpIDx0eXBlIC0xNj47IH0+PjsgUmVtb3RlQWRkciAoKSA8dHlwZSAzMTc+OyBTZXREZWFkbGluZSAodCA8dHlwZSAxNjI+KSA8dHlwZSAtMTk+OyBTZXRSZWFkRGVhZGxpbmUgKHQgPHR5cGUgMTYyPikgPHR5cGUgLTE5PjsgU2V0V3JpdGVEZWFkbGluZSAodCA8dHlwZSAxNjI+KSA8dHlwZSAtMTk+OyB9Pj4sIGVyciA8dHlwZSAtMTk+KTsgQ2xvc2UgKCkgPHR5cGUgLTE5PjsgQWRkciAoKSA8dHlwZSAzMTc+OyB9Pj47IFRMUyA8dHlwZSAzMTkgKjx0eXBlIDMyMCAiY3J5cHRvL3Rscy5Db25maWciIDx0eXBlIDMyMSBzdHJ1Y3QgeyBSYW5kIDx0eXBlIDM0PjsgVGltZSA8dHlwZSAzMjIgKCkgPHR5cGUgMTYyPj47IENlcnRpZmljYXRlcyA8dHlwZSAzMjMgW10gPHR5cGUgMzI0ICJjcnlwdG8vdGxzLkNlcnRpZmljYXRlIiA8dHlwZSAzMjUgc3RydWN0IHsgQ2VydGlmaWNhdGUgPHR5cGUgMzI2IFtdIDx0eXBlIDMyNyBbXSA8dHlwZSAtMjA+Pj47IFByaXZhdGVLZXkgPHR5cGUgMzI4ICJjcnlwdG8uUHJpdmF0ZUtleSIgImNyeXB0byIgPHR5cGUgMzI5IGludGVyZmFjZSB7IH0+PjsgT0NTUFN0YXBsZSA8dHlwZSAzMzAgW10gPHR5cGUgLTIwPj47IExlYWYgPHR5cGUgOTE+OyB9Pj4+OyBOYW1lVG9DZXJ0aWZpY2F0ZSA8dHlwZSAzMzEgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAzMzIgKjx0eXBlIDMyND4+PjsgR2V0Q2VydGlmaWNhdGUgPHR5cGUgMzMzIChjbGllbnRIZWxsbyA8dHlwZSAzMzQgKjx0eXBlIDMzNSAiY3J5cHRvL3Rscy5DbGllbnRIZWxsb0luZm8iIDx0eXBlIDMzNiBzdHJ1Y3QgeyBDaXBoZXJTdWl0ZXMgPHR5cGUgMzM3IFtdIDx0eXBlIC02Pj47IFNlcnZlck5hbWUgPHR5cGUgLTE2PjsgU3VwcG9ydGVkQ3VydmVzIDx0eXBlIDMzOCBbXSA8dHlwZSAzMzkgImNyeXB0by90bHMuQ3VydmVJRCIgPHR5cGUgLTY+Pj47IFN1cHBvcnRlZFBvaW50cyA8dHlwZSAzNDAgW10gPHR5cGUgLTU+PjsgfT4+PikgKD8gPHR5cGUgMzMyPiwgPyA8dHlwZSAtMTk+KT47IFJvb3RDQXMgPHR5cGUgMjE4PjsgTmV4dFByb3RvcyA8dHlwZSAzNDEgW10gPHR5cGUgLTE2Pj47IFNlcnZlck5hbWUgPHR5cGUgLTE2PjsgQ2xpZW50QXV0aCA8dHlwZSAzNDIgImNyeXB0by90bHMuQ2xpZW50QXV0aFR5cGUiIDx0eXBlIC0xMT4+OyBDbGllbnRDQXMgPHR5cGUgMjE4PjsgSW5zZWN1cmVTa2lwVmVyaWZ5IDx0eXBlIC0xNT47IENpcGhlclN1aXRlcyA8dHlwZSAzNDMgW10gPHR5cGUgLTY+PjsgUHJlZmVyU2VydmVyQ2lwaGVyU3VpdGVzIDx0eXBlIC0xNT47IFNlc3Npb25UaWNrZXRzRGlzYWJsZWQgPHR5cGUgLTE1PjsgU2Vzc2lvblRpY2tldEtleSA8dHlwZSAzNDQgWzMyIF0gPHR5cGUgLTIwPj47IENsaWVudFNlc3Npb25DYWNoZSA8dHlwZSAzNDUgImNyeXB0by90bHMuQ2xpZW50U2Vzc2lvbkNhY2hlIiA8dHlwZSAzNDYgaW50ZXJmYWNlIHsgR2V0IChzZXNzaW9uS2V5IDx0eXBlIC0xNj4pIChzZXNzaW9uIDx0eXBlIDM0NyAqPHR5cGUgMzQ4ICJjcnlwdG8vdGxzLkNsaWVudFNlc3Npb25TdGF0ZSIgPHR5cGUgMzQ5IHN0cnVjdCB7IC5jcnlwdG8vdGxzLnNlc3Npb25UaWNrZXQgPHR5cGUgMzUwIFtdIDx0eXBlIC01Pj47IC5jcnlwdG8vdGxzLnZlcnMgPHR5cGUgLTY+OyAuY3J5cHRvL3Rscy5jaXBoZXJTdWl0ZSA8dHlwZSAtNj47IC5jcnlwdG8vdGxzLm1hc3RlclNlY3JldCA8dHlwZSAzNTEgW10gPHR5cGUgLTIwPj47IC5jcnlwdG8vdGxzLnNlcnZlckNlcnRpZmljYXRlcyA8dHlwZSAzNTIgW10gPHR5cGUgOTE+PjsgfT4+Piwgb2sgPHR5cGUgLTE1Pik7IFB1dCAoc2Vzc2lvbktleSA8dHlwZSAtMTY+LCBjcyA8dHlwZSAzNDc+KTsgfT4+OyBNaW5WZXJzaW9uIDx0eXBlIC02PjsgTWF4VmVyc2lvbiA8dHlwZSAtNj47IEN1cnZlUHJlZmVyZW5jZXMgPHR5cGUgMzUzIFtdIDx0eXBlIDMzOT4+OyAuY3J5cHRvL3Rscy5zZXJ2ZXJJbml0T25jZSA8dHlwZSAzNTQgInN5bmMuT25jZSIgPHR5cGUgMzU1IHN0cnVjdCB7IC5zeW5jLm0gPHR5cGUgMzU2ICJzeW5jLk11dGV4IiA8dHlwZSAzNTcgc3RydWN0IHsgLnN5bmMuc3RhdGUgPHR5cGUgLTM+OyAuc3luYy5zZW1hIDx0eXBlIC03PjsgfT4KIGZ1bmMgKG0gPHR5cGUgMzU4ICo8dHlwZSAzNTY+PikgVW5sb2NrICgpOwogZnVuYyAobSA8dHlwZSAzNTg+KSBMb2NrICgpOwo+OyAuc3luYy5kb25lIDx0eXBlIC03PjsgfT4KIGZ1bmMgKG8gPHR5cGUgMzU5ICo8dHlwZSAzNTQ+PikgRG8gKGYgPHR5cGUgMzYwICgpPik7Cj47IH0+CiBmdW5jIChjIDx0eXBlIDM2MSAqPHR5cGUgMzIwPj4pIC5jcnlwdG8vdGxzLmN1cnZlUHJlZmVyZW5jZXMgKCkgPHR5cGUgMzYyIFtdIDx0eXBlIDMzOT4+OwogZnVuYyAoYyA8dHlwZSAzNjE+KSAuY3J5cHRvL3Rscy5zZXJ2ZXJJbml0ICgpOwogZnVuYyAoYyA8dHlwZSAzNjE+KSAuY3J5cHRvL3Rscy5yYW5kICgpIDx0eXBlIDM0PjsKIGZ1bmMgKGMgPHR5cGUgMzYxPikgLmNyeXB0by90bHMubWF4VmVyc2lvbiAoKSA8dHlwZSAtNj47CiBmdW5jIChjIDx0eXBlIDM2MT4pIC5jcnlwdG8vdGxzLm11dHVhbFZlcnNpb24gKHZlcnMgPHR5cGUgLTY+KSAoPyA8dHlwZSAtNj4sID8gPHR5cGUgLTE1Pik7CiBmdW5jIChjIDx0eXBlIDM2MT4pIC5jcnlwdG8vdGxzLmNpcGhlclN1aXRlcyAoKSA8dHlwZSAzNjMgW10gPHR5cGUgLTY+PjsKIGZ1bmMgKGMgPHR5cGUgMzYxPikgLmNyeXB0by90bHMuZ2V0Q2VydGlmaWNhdGUgKGNsaWVudEhlbGxvIDx0eXBlIDMzND4pICg/IDx0eXBlIDMzMj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDM2MT4pIC5jcnlwdG8vdGxzLnRpbWUgKCkgPHR5cGUgMTYyPjsKIGZ1bmMgKGMgPHR5cGUgMzYxPikgLmNyeXB0by90bHMubWluVmVyc2lvbiAoKSA8dHlwZSAtNj47CiBmdW5jIChjIDx0eXBlIDM2MT4pIEJ1aWxkTmFtZVRvQ2VydGlmaWNhdGUgKCk7Cj4+OyBDb25maWcgPHR5cGUgMzY0ICo8dHlwZSAzNjUgIm5ldC9odHRwLlNlcnZlciIgPHR5cGUgMzY2IHN0cnVjdCB7IEFkZHIgPHR5cGUgLTE2PjsgSGFuZGxlciA8dHlwZSA0MD47IFJlYWRUaW1lb3V0IDx0eXBlIDE4Mj47IFdyaXRlVGltZW91dCA8dHlwZSAxODI+OyBNYXhIZWFkZXJCeXRlcyA8dHlwZSAtMTE+OyBUTFNDb25maWcgPHR5cGUgMzE5PjsgVExTTmV4dFByb3RvIDx0eXBlIDM2NyBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDM2OCAoPyA8dHlwZSAzNjkgKjx0eXBlIDM2NT4+LCA/IDx0eXBlIDM3MCAqPHR5cGUgMzcxICJjcnlwdG8vdGxzLkNvbm4iIDx0eXBlIDM3MiBzdHJ1Y3QgeyAuY3J5cHRvL3Rscy5jb25uIDx0eXBlIDMxMz47IC5jcnlwdG8vdGxzLmlzQ2xpZW50IDx0eXBlIC0xNT47IC5jcnlwdG8vdGxzLmhhbmRzaGFrZU11dGV4IDx0eXBlIDM1Nj47IC5jcnlwdG8vdGxzLmhhbmRzaGFrZUVyciA8dHlwZSAtMTk+OyAuY3J5cHRvL3Rscy52ZXJzIDx0eXBlIC02PjsgLmNyeXB0by90bHMuaGF2ZVZlcnMgPHR5cGUgLTE1PjsgLmNyeXB0by90bHMuY29uZmlnIDx0eXBlIDMxOT47IC5jcnlwdG8vdGxzLmhhbmRzaGFrZUNvbXBsZXRlIDx0eXBlIC0xNT47IC5jcnlwdG8vdGxzLmRpZFJlc3VtZSA8dHlwZSAtMTU+OyAuY3J5cHRvL3Rscy5jaXBoZXJTdWl0ZSA8dHlwZSAtNj47IC5jcnlwdG8vdGxzLm9jc3BSZXNwb25zZSA8dHlwZSAzNzMgW10gPHR5cGUgLTIwPj47IC5jcnlwdG8vdGxzLnBlZXJDZXJ0aWZpY2F0ZXMgPHR5cGUgMzc0IFtdIDx0eXBlIDkxPj47IC5jcnlwdG8vdGxzLnZlcmlmaWVkQ2hhaW5zIDx0eXBlIDM3NSBbXSA8dHlwZSAzNzYgW10gPHR5cGUgOTE+Pj47IC5jcnlwdG8vdGxzLnNlcnZlck5hbWUgPHR5cGUgLTE2PjsgLmNyeXB0by90bHMuZmlyc3RGaW5pc2hlZCA8dHlwZSAzNzcgWzEyIF0gPHR5cGUgLTIwPj47IC5jcnlwdG8vdGxzLmNsaWVudFByb3RvY29sIDx0eXBlIC0xNj47IC5jcnlwdG8vdGxzLmNsaWVudFByb3RvY29sRmFsbGJhY2sgPHR5cGUgLTE1PjsgLmNyeXB0by90bHMuaW4gPHR5cGUgMzc4ICIuY3J5cHRvL3Rscy5oYWxmQ29ubiIgPHR5cGUgMzc5IHN0cnVjdCB7ID8gPHR5cGUgMzU2PjsgLmNyeXB0by90bHMuZXJyIDx0eXBlIC0xOT47IC5jcnlwdG8vdGxzLnZlcnNpb24gPHR5cGUgLTY+OyAuY3J5cHRvL3Rscy5jaXBoZXIgPHR5cGUgMzgwIGludGVyZmFjZSB7IH0+OyAuY3J5cHRvL3Rscy5tYWMgPHR5cGUgMzgxICIuY3J5cHRvL3Rscy5tYWNGdW5jdGlvbiIgPHR5cGUgMzgyIGludGVyZmFjZSB7IFNpemUgKCkgPHR5cGUgLTExPjsgTUFDIChkaWdlc3RCdWYgPHR5cGUgMzgzIFtdIDx0eXBlIC0yMD4+LCBzZXEgPHR5cGUgMzgzPiwgaGVhZGVyIDx0eXBlIDM4Mz4sIGRhdGEgPHR5cGUgMzgzPikgPHR5cGUgMzg0IFtdIDx0eXBlIC0yMD4+OyB9Pj47IC5jcnlwdG8vdGxzLnNlcSA8dHlwZSAzODUgWzggXSA8dHlwZSAtMjA+PjsgLmNyeXB0by90bHMuYmZyZWUgPHR5cGUgMzg2ICo8dHlwZSAzODcgIi5jcnlwdG8vdGxzLmJsb2NrIiA8dHlwZSAzODggc3RydWN0IHsgLmNyeXB0by90bHMuZGF0YSA8dHlwZSAzODkgW10gPHR5cGUgLTIwPj47IC5jcnlwdG8vdGxzLm9mZiA8dHlwZSAtMTE+OyAuY3J5cHRvL3Rscy5saW5rIDx0eXBlIDM5MCAqPHR5cGUgMzg3Pj47IH0+CiBmdW5jIChiIDx0eXBlIDM5MSAqPHR5cGUgMzg3Pj4pIC5jcnlwdG8vdGxzLnJlc2l6ZSAobiA8dHlwZSAtMTE+KTsKIGZ1bmMgKGIgPHR5cGUgMzkxPikgUmVhZCAocCA8dHlwZSAzOTIgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMzkxPikgLmNyeXB0by90bHMucmVzZXJ2ZSAobiA8dHlwZSAtMTE+KTsKIGZ1bmMgKGIgPHR5cGUgMzkxPikgLmNyeXB0by90bHMucmVhZEZyb21VbnRpbCAociA8dHlwZSAzND4sIG4gPHR5cGUgLTExPikgPHR5cGUgLTE5PjsKPj47IC5jcnlwdG8vdGxzLm5leHRDaXBoZXIgPHR5cGUgMzkzIGludGVyZmFjZSB7IH0+OyAuY3J5cHRvL3Rscy5uZXh0TWFjIDx0eXBlIDM4MT47IC5jcnlwdG8vdGxzLmluRGlnZXN0QnVmIDx0eXBlIDM5NCBbXSA8dHlwZSAtMjA+PjsgLmNyeXB0by90bHMub3V0RGlnZXN0QnVmIDx0eXBlIDM5ND47IH0+CiBmdW5jIChoYyA8dHlwZSAzOTUgKjx0eXBlIDM3OD4+KSAuY3J5cHRvL3Rscy5kZWNyeXB0IChiIDx0eXBlIDM4Nj4pIChvayA8dHlwZSAtMTU+LCBwcmVmaXhMZW4gPHR5cGUgLTExPiwgYWxlcnRWYWx1ZSA8dHlwZSAzOTYgIi5jcnlwdG8vdGxzLmFsZXJ0IiA8dHlwZSAtNT4KIGZ1bmMgKGUgPHR5cGUgMzk2PikgRXJyb3IgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGUgPHR5cGUgMzk2PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj4pOwogZnVuYyAoaGMgPHR5cGUgMzk1PikgLmNyeXB0by90bHMuZXJyb3IgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGhjIDx0eXBlIDM5NT4pIC5jcnlwdG8vdGxzLmNoYW5nZUNpcGhlclNwZWMgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGhjIDx0eXBlIDM5NT4pIC5jcnlwdG8vdGxzLnJlc2V0U2VxICgpOwogZnVuYyAoaGMgPHR5cGUgMzk1PikgLmNyeXB0by90bHMubmV3QmxvY2sgKCkgPHR5cGUgMzg2PjsKIGZ1bmMgKGhjIDx0eXBlIDM5NT4pIC5jcnlwdG8vdGxzLnNwbGl0QmxvY2sgKGIgPHR5cGUgMzg2PiwgbiA8dHlwZSAtMTE+KSAoPyA8dHlwZSAzODY+LCA/IDx0eXBlIDM4Nj4pOwogZnVuYyAoaGMgPHR5cGUgMzk1PikgLmNyeXB0by90bHMucHJlcGFyZUNpcGhlclNwZWMgKHZlcnNpb24gPHR5cGUgLTY+LCBjaXBoZXIgPHR5cGUgMzk3IGludGVyZmFjZSB7IH0+LCBtYWMgPHR5cGUgMzgxPik7CiBmdW5jIChoYyA8dHlwZSAzOTU+KSAuY3J5cHRvL3Rscy5pbmNTZXEgKCk7CiBmdW5jIChoYyA8dHlwZSAzOTU+KSAuY3J5cHRvL3Rscy5lbmNyeXB0IChiIDx0eXBlIDM4Nj4sIGV4cGxpY2l0SVZMZW4gPHR5cGUgLTExPikgKD8gPHR5cGUgLTE1PiwgPyA8dHlwZSAzOTY+KTsKIGZ1bmMgKGhjIDx0eXBlIDM5NT4pIC5jcnlwdG8vdGxzLnNldEVycm9yTG9ja2VkIChlcnIgPHR5cGUgLTE5PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGhjIDx0eXBlIDM5NT4pIC5jcnlwdG8vdGxzLmZyZWVCbG9jayAoYiA8dHlwZSAzODY+KTsKPjsgLmNyeXB0by90bHMub3V0IDx0eXBlIDM3OD47IC5jcnlwdG8vdGxzLnJhd0lucHV0IDx0eXBlIDM4Nj47IC5jcnlwdG8vdGxzLmlucHV0IDx0eXBlIDM4Nj47IC5jcnlwdG8vdGxzLmhhbmQgPHR5cGUgMjI+OyAuY3J5cHRvL3Rscy50bXAgPHR5cGUgMzk4IFsxNiBdIDx0eXBlIC0yMD4+OyB9PgogZnVuYyAoYyA8dHlwZSAzOTkgKjx0eXBlIDM3MT4+KSAuY3J5cHRvL3Rscy5kZWNyeXB0VGlja2V0IChlbmNyeXB0ZWQgPHR5cGUgNDAwIFtdIDx0eXBlIC0yMD4+KSAoPyA8dHlwZSA0MDEgKjx0eXBlIDQwMiAiLmNyeXB0by90bHMuc2Vzc2lvblN0YXRlIiA8dHlwZSA0MDMgc3RydWN0IHsgLmNyeXB0by90bHMudmVycyA8dHlwZSAtNj47IC5jcnlwdG8vdGxzLmNpcGhlclN1aXRlIDx0eXBlIC02PjsgLmNyeXB0by90bHMubWFzdGVyU2VjcmV0IDx0eXBlIDQwNCBbXSA8dHlwZSAtMjA+PjsgLmNyeXB0by90bHMuY2VydGlmaWNhdGVzIDx0eXBlIDQwNSBbXSA8dHlwZSA0MDYgW10gPHR5cGUgLTIwPj4+OyB9PgogZnVuYyAocyA8dHlwZSA0MDcgKjx0eXBlIDQwMj4+KSAuY3J5cHRvL3Rscy5lcXVhbCAoaSA8dHlwZSA0MDggaW50ZXJmYWNlIHsgfT4pIDx0eXBlIC0xNT47CiBmdW5jIChzIDx0eXBlIDQwNz4pIC5jcnlwdG8vdGxzLm1hcnNoYWwgKCkgPHR5cGUgNDA5IFtdIDx0eXBlIC0yMD4+OwogZnVuYyAocyA8dHlwZSA0MDc+KSAuY3J5cHRvL3Rscy51bm1hcnNoYWwgKGRhdGEgPHR5cGUgNDEwIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTU+Owo+PiwgPyA8dHlwZSAtMTU+KTsKIGZ1bmMgKGMgPHR5cGUgMzk5PikgLmNyeXB0by90bHMucmVhZEhhbmRzaGFrZSAoKSAoPyA8dHlwZSA0MTEgaW50ZXJmYWNlIHsgfT4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDM5OT4pIE9DU1BSZXNwb25zZSAoKSA8dHlwZSA0MTIgW10gPHR5cGUgLTIwPj47CiBmdW5jIChjIDx0eXBlIDM5OT4pIC5jcnlwdG8vdGxzLndyaXRlUmVjb3JkICh0eXAgPHR5cGUgNDEzICIuY3J5cHRvL3Rscy5yZWNvcmRUeXBlIiA8dHlwZSAtNT4+LCBkYXRhIDx0eXBlIDQxNCBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAzOTk+KSBDbG9zZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYyA8dHlwZSAzOTk+KSBTZXREZWFkbGluZSAodCA8dHlwZSAxNjI+KSA8dHlwZSAtMTk+OwogZnVuYyAoYyA8dHlwZSAzOTk+KSAuY3J5cHRvL3Rscy50cnlDaXBoZXJTdWl0ZSAoaWQgPHR5cGUgLTY+LCBzdXBwb3J0ZWRDaXBoZXJTdWl0ZXMgPHR5cGUgNDE1IFtdIDx0eXBlIC02Pj4sIHZlcnNpb24gPHR5cGUgLTY+LCBlbGxpcHRpY09rIDx0eXBlIC0xNT4sIGVjZHNhT2sgPHR5cGUgLTE1PikgPHR5cGUgNDE2ICo8dHlwZSA0MTcgIi5jcnlwdG8vdGxzLmNpcGhlclN1aXRlIiA8dHlwZSA0MTggc3RydWN0IHsgLmNyeXB0by90bHMuaWQgPHR5cGUgLTY+OyAuY3J5cHRvL3Rscy5rZXlMZW4gPHR5cGUgLTExPjsgLmNyeXB0by90bHMubWFjTGVuIDx0eXBlIC0xMT47IC5jcnlwdG8vdGxzLml2TGVuIDx0eXBlIC0xMT47IC5jcnlwdG8vdGxzLmthIDx0eXBlIDQxOSAodmVyc2lvbiA8dHlwZSAtNj4pIDx0eXBlIDQyMCAiLmNyeXB0by90bHMua2V5QWdyZWVtZW50IiA8dHlwZSA0MjEgaW50ZXJmYWNlIHsgLmNyeXB0by90bHMuZ2VuZXJhdGVTZXJ2ZXJLZXlFeGNoYW5nZSAoPyA8dHlwZSAzMTk+LCA/IDx0eXBlIDMzMj4sID8gPHR5cGUgNDIyICo8dHlwZSA0MjMgIi5jcnlwdG8vdGxzLmNsaWVudEhlbGxvTXNnIiA8dHlwZSA0MjQgc3RydWN0IHsgLmNyeXB0by90bHMucmF3IDx0eXBlIDQyNSBbXSA8dHlwZSAtMjA+PjsgLmNyeXB0by90bHMudmVycyA8dHlwZSAtNj47IC5jcnlwdG8vdGxzLnJhbmRvbSA8dHlwZSA0MjYgW10gPHR5cGUgLTIwPj47IC5jcnlwdG8vdGxzLnNlc3Npb25JZCA8dHlwZSA0MjcgW10gPHR5cGUgLTIwPj47IC5jcnlwdG8vdGxzLmNpcGhlclN1aXRlcyA8dHlwZSA0MjggW10gPHR5cGUgLTY+PjsgLmNyeXB0by90bHMuY29tcHJlc3Npb25NZXRob2RzIDx0eXBlIDQyOSBbXSA8dHlwZSAtNT4+OyAuY3J5cHRvL3Rscy5uZXh0UHJvdG9OZWcgPHR5cGUgLTE1PjsgLmNyeXB0by90bHMuc2VydmVyTmFtZSA8dHlwZSAtMTY+OyAuY3J5cHRvL3Rscy5vY3NwU3RhcGxpbmcgPHR5cGUgLTE1PjsgLmNyeXB0by90bHMuc3VwcG9ydGVkQ3VydmVzIDx0eXBlIDQzMCBbXSA8dHlwZSAzMzk+PjsgLmNyeXB0by90bHMuc3VwcG9ydGVkUG9pbnRzIDx0eXBlIDQzMSBbXSA8dHlwZSAtNT4+OyAuY3J5cHRvL3Rscy50aWNrZXRTdXBwb3J0ZWQgPHR5cGUgLTE1PjsgLmNyeXB0by90bHMuc2Vzc2lvblRpY2tldCA8dHlwZSA0MzIgW10gPHR5cGUgLTU+PjsgLmNyeXB0by90bHMuc2lnbmF0dXJlQW5kSGFzaGVzIDx0eXBlIDQzMyBbXSA8dHlwZSA0MzQgIi5jcnlwdG8vdGxzLnNpZ25hdHVyZUFuZEhhc2giIDx0eXBlIDQzNSBzdHJ1Y3QgeyAuY3J5cHRvL3Rscy5oYXNoIDx0eXBlIC01PjsgLmNyeXB0by90bHMuc2lnbmF0dXJlIDx0eXBlIC01PjsgfT4+PjsgLmNyeXB0by90bHMuc2VjdXJlUmVuZWdvdGlhdGlvbiA8dHlwZSAtMTU+OyAuY3J5cHRvL3Rscy5hbHBuUHJvdG9jb2xzIDx0eXBlIDQzNiBbXSA8dHlwZSAtMTY+PjsgfT4KIGZ1bmMgKG0gPHR5cGUgNDM3ICo8dHlwZSA0MjM+PikgLmNyeXB0by90bHMuZXF1YWwgKGkgPHR5cGUgNDM4IGludGVyZmFjZSB7IH0+KSA8dHlwZSAtMTU+OwogZnVuYyAobSA8dHlwZSA0Mzc+KSAuY3J5cHRvL3Rscy5tYXJzaGFsICgpIDx0eXBlIDQzOSBbXSA8dHlwZSAtMjA+PjsKIGZ1bmMgKG0gPHR5cGUgNDM3PikgLmNyeXB0by90bHMudW5tYXJzaGFsIChkYXRhIDx0eXBlIDQ0MCBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE1PjsKPj4sID8gPHR5cGUgNDQxICo8dHlwZSA0NDIgIi5jcnlwdG8vdGxzLnNlcnZlckhlbGxvTXNnIiA8dHlwZSA0NDMgc3RydWN0IHsgLmNyeXB0by90bHMucmF3IDx0eXBlIDQ0NCBbXSA8dHlwZSAtMjA+PjsgLmNyeXB0by90bHMudmVycyA8dHlwZSAtNj47IC5jcnlwdG8vdGxzLnJhbmRvbSA8dHlwZSA0NDUgW10gPHR5cGUgLTIwPj47IC5jcnlwdG8vdGxzLnNlc3Npb25JZCA8dHlwZSA0NDYgW10gPHR5cGUgLTIwPj47IC5jcnlwdG8vdGxzLmNpcGhlclN1aXRlIDx0eXBlIC02PjsgLmNyeXB0by90bHMuY29tcHJlc3Npb25NZXRob2QgPHR5cGUgLTU+OyAuY3J5cHRvL3Rscy5uZXh0UHJvdG9OZWcgPHR5cGUgLTE1PjsgLmNyeXB0by90bHMubmV4dFByb3RvcyA8dHlwZSA0NDcgW10gPHR5cGUgLTE2Pj47IC5jcnlwdG8vdGxzLm9jc3BTdGFwbGluZyA8dHlwZSAtMTU+OyAuY3J5cHRvL3Rscy50aWNrZXRTdXBwb3J0ZWQgPHR5cGUgLTE1PjsgLmNyeXB0by90bHMuc2VjdXJlUmVuZWdvdGlhdGlvbiA8dHlwZSAtMTU+OyAuY3J5cHRvL3Rscy5hbHBuUHJvdG9jb2wgPHR5cGUgLTE2PjsgfT4KIGZ1bmMgKG0gPHR5cGUgNDQ4ICo8dHlwZSA0NDI+PikgLmNyeXB0by90bHMuZXF1YWwgKGkgPHR5cGUgNDQ5IGludGVyZmFjZSB7IH0+KSA8dHlwZSAtMTU+OwogZnVuYyAobSA8dHlwZSA0NDg+KSAuY3J5cHRvL3Rscy5tYXJzaGFsICgpIDx0eXBlIDQ1MCBbXSA8dHlwZSAtMjA+PjsKIGZ1bmMgKG0gPHR5cGUgNDQ4PikgLmNyeXB0by90bHMudW5tYXJzaGFsIChkYXRhIDx0eXBlIDQ1MSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE1PjsKPj4pICg/IDx0eXBlIDQ1MiAqPHR5cGUgNDUzICIuY3J5cHRvL3Rscy5zZXJ2ZXJLZXlFeGNoYW5nZU1zZyIgPHR5cGUgNDU0IHN0cnVjdCB7IC5jcnlwdG8vdGxzLnJhdyA8dHlwZSA0NTUgW10gPHR5cGUgLTIwPj47IC5jcnlwdG8vdGxzLmtleSA8dHlwZSA0NTYgW10gPHR5cGUgLTIwPj47IH0+CiBmdW5jIChtIDx0eXBlIDQ1NyAqPHR5cGUgNDUzPj4pIC5jcnlwdG8vdGxzLmVxdWFsIChpIDx0eXBlIDQ1OCBpbnRlcmZhY2UgeyB9PikgPHR5cGUgLTE1PjsKIGZ1bmMgKG0gPHR5cGUgNDU3PikgLmNyeXB0by90bHMubWFyc2hhbCAoKSA8dHlwZSA0NTkgW10gPHR5cGUgLTIwPj47CiBmdW5jIChtIDx0eXBlIDQ1Nz4pIC5jcnlwdG8vdGxzLnVubWFyc2hhbCAoZGF0YSA8dHlwZSA0NjAgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xNT47Cj4+LCA/IDx0eXBlIC0xOT4pOyAuY3J5cHRvL3Rscy5wcm9jZXNzQ2xpZW50S2V5RXhjaGFuZ2UgKD8gPHR5cGUgMzE5PiwgPyA8dHlwZSAzMzI+LCA/IDx0eXBlIDQ2MSAqPHR5cGUgNDYyICIuY3J5cHRvL3Rscy5jbGllbnRLZXlFeGNoYW5nZU1zZyIgPHR5cGUgNDYzIHN0cnVjdCB7IC5jcnlwdG8vdGxzLnJhdyA8dHlwZSA0NjQgW10gPHR5cGUgLTIwPj47IC5jcnlwdG8vdGxzLmNpcGhlcnRleHQgPHR5cGUgNDY1IFtdIDx0eXBlIC0yMD4+OyB9PgogZnVuYyAobSA8dHlwZSA0NjYgKjx0eXBlIDQ2Mj4+KSAuY3J5cHRvL3Rscy5lcXVhbCAoaSA8dHlwZSA0NjcgaW50ZXJmYWNlIHsgfT4pIDx0eXBlIC0xNT47CiBmdW5jIChtIDx0eXBlIDQ2Nj4pIC5jcnlwdG8vdGxzLm1hcnNoYWwgKCkgPHR5cGUgNDY4IFtdIDx0eXBlIC0yMD4+OwogZnVuYyAobSA8dHlwZSA0NjY+KSAuY3J5cHRvL3Rscy51bm1hcnNoYWwgKGRhdGEgPHR5cGUgNDY5IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTU+Owo+PiwgPyA8dHlwZSAtNj4pICg/IDx0eXBlIDQ3MCBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsgLmNyeXB0by90bHMucHJvY2Vzc1NlcnZlcktleUV4Y2hhbmdlICg/IDx0eXBlIDMxOT4sID8gPHR5cGUgNDIyPiwgPyA8dHlwZSA0NDE+LCA/IDx0eXBlIDkxPiwgPyA8dHlwZSA0NTI+KSA8dHlwZSAtMTk+OyAuY3J5cHRvL3Rscy5nZW5lcmF0ZUNsaWVudEtleUV4Y2hhbmdlICg/IDx0eXBlIDMxOT4sID8gPHR5cGUgNDIyPiwgPyA8dHlwZSA5MT4pICg/IDx0eXBlIDQ3MSBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSA0NjE+LCA/IDx0eXBlIC0xOT4pOyB9Pj4+OyAuY3J5cHRvL3Rscy5mbGFncyA8dHlwZSAtMTE+OyAuY3J5cHRvL3Rscy5jaXBoZXIgPHR5cGUgNDcyIChrZXkgPHR5cGUgNDczIFtdIDx0eXBlIC0yMD4+LCBpdiA8dHlwZSA0NzM+LCBpc1JlYWQgPHR5cGUgLTE1PikgPHR5cGUgNDc0IGludGVyZmFjZSB7IH0+PjsgLmNyeXB0by90bHMubWFjIDx0eXBlIDQ3NSAodmVyc2lvbiA8dHlwZSAtNj4sIG1hY0tleSA8dHlwZSA0NzYgW10gPHR5cGUgLTIwPj4pIDx0eXBlIDM4MT4+OyAuY3J5cHRvL3Rscy5hZWFkIDx0eXBlIDQ3NyAoa2V5IDx0eXBlIDQ3OCBbXSA8dHlwZSAtMjA+PiwgZml4ZWROb25jZSA8dHlwZSA0Nzg+KSA8dHlwZSA0NzkgImNyeXB0by9jaXBoZXIuQUVBRCIgImNpcGhlciIgPHR5cGUgNDgwIGludGVyZmFjZSB7IE5vbmNlU2l6ZSAoKSA8dHlwZSAtMTE+OyBPdmVyaGVhZCAoKSA8dHlwZSAtMTE+OyBTZWFsIChkc3QgPHR5cGUgNDgxIFtdIDx0eXBlIC0yMD4+LCBub25jZSA8dHlwZSA0ODE+LCBwbGFpbnRleHQgPHR5cGUgNDgxPiwgZGF0YSA8dHlwZSA0ODE+KSA8dHlwZSA0ODIgW10gPHR5cGUgLTIwPj47IE9wZW4gKGRzdCA8dHlwZSA0ODMgW10gPHR5cGUgLTIwPj4sIG5vbmNlIDx0eXBlIDQ4Mz4sIGNpcGhlcnRleHQgPHR5cGUgNDgzPiwgZGF0YSA8dHlwZSA0ODM+KSAoPyA8dHlwZSA0ODQgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7IH0+Pj47IH0+Pj47CiBmdW5jIChjIDx0eXBlIDM5OT4pIENvbm5lY3Rpb25TdGF0ZSAoKSA8dHlwZSA4OD47CiBmdW5jIChjIDx0eXBlIDM5OT4pIEhhbmRzaGFrZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYyA8dHlwZSAzOTk+KSAuY3J5cHRvL3Rscy5lbmNyeXB0VGlja2V0IChzdGF0ZSA8dHlwZSA0MDE+KSAoPyA8dHlwZSA0ODUgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDM5OT4pIFJlbW90ZUFkZHIgKCkgPHR5cGUgMzE3PjsKIGZ1bmMgKGMgPHR5cGUgMzk5PikgUmVhZCAoYiA8dHlwZSA0ODYgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMzk5PikgVmVyaWZ5SG9zdG5hbWUgKGhvc3QgPHR5cGUgLTE2PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMzk5PikgV3JpdGUgKGIgPHR5cGUgNDg3IFtdIDx0eXBlIC0yMD4+KSAoPyA8dHlwZSAtMTE+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAzOTk+KSAuY3J5cHRvL3Rscy5jbGllbnRIYW5kc2hha2UgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMzk5PikgLmNyeXB0by90bHMucmVhZFJlY29yZCAod2FudCA8dHlwZSA0MTM+KSA8dHlwZSAtMTk+OwogZnVuYyAoYyA8dHlwZSAzOTk+KSBTZXRXcml0ZURlYWRsaW5lICh0IDx0eXBlIDE2Mj4pIDx0eXBlIC0xOT47CiBmdW5jIChjIDx0eXBlIDM5OT4pIExvY2FsQWRkciAoKSA8dHlwZSAzMTc+OwogZnVuYyAoYyA8dHlwZSAzOTk+KSAuY3J5cHRvL3Rscy5zZXJ2ZXJIYW5kc2hha2UgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMzk5PikgLmNyeXB0by90bHMuc2VuZEFsZXJ0TG9ja2VkIChlcnIgPHR5cGUgMzk2PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMzk5PikgLmNyeXB0by90bHMuc2VuZEFsZXJ0IChlcnIgPHR5cGUgMzk2PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMzk5PikgU2V0UmVhZERlYWRsaW5lICh0IDx0eXBlIDE2Mj4pIDx0eXBlIC0xOT47Cj4+LCA/IDx0eXBlIDQwPik+PjsgQ29ublN0YXRlIDx0eXBlIDQ4OCAoPyA8dHlwZSAzMTM+LCA/IDx0eXBlIDQ4OSAibmV0L2h0dHAuQ29ublN0YXRlIiA8dHlwZSAtMTE+CiBmdW5jIChjIDx0eXBlIDQ4OT4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+KT47IEVycm9yTG9nIDx0eXBlIDQ5MCAqPHR5cGUgNDkxICJsb2cuTG9nZ2VyIiAibG9nIiA8dHlwZSA0OTIgc3RydWN0IHsgLmxvZy5tdSA8dHlwZSAzNTY+OyAubG9nLnByZWZpeCA8dHlwZSAtMTY+OyAubG9nLmZsYWcgPHR5cGUgLTExPjsgLmxvZy5vdXQgPHR5cGUgNz47IC5sb2cuYnVmIDx0eXBlIDQ5MyBbXSA8dHlwZSAtMjA+PjsgfT4KIGZ1bmMgKGwgPHR5cGUgNDk0ICo8dHlwZSA0OTE+PikgUHJpbnRmIChmb3JtYXQgPHR5cGUgLTE2PiwgdiAuLi48dHlwZSA0OTUgaW50ZXJmYWNlIHsgfT4pOwogZnVuYyAobCA8dHlwZSA0OTQ+KSBGYXRhbCAodiAuLi48dHlwZSA0OTYgaW50ZXJmYWNlIHsgfT4pOwogZnVuYyAobCA8dHlwZSA0OTQ+KSBQcmludGxuICh2IC4uLjx0eXBlIDQ5NyBpbnRlcmZhY2UgeyB9Pik7CiBmdW5jIChsIDx0eXBlIDQ5ND4pIFByZWZpeCAoKSA8dHlwZSAtMTY+OwogZnVuYyAobCA8dHlwZSA0OTQ+KSBQcmludCAodiAuLi48dHlwZSA0OTggaW50ZXJmYWNlIHsgfT4pOwogZnVuYyAobCA8dHlwZSA0OTQ+KSBTZXRQcmVmaXggKHByZWZpeCA8dHlwZSAtMTY+KTsKIGZ1bmMgKGwgPHR5cGUgNDk0PikgT3V0cHV0IChjYWxsZGVwdGggPHR5cGUgLTExPiwgcyA8dHlwZSAtMTY+KSA8dHlwZSAtMTk+OwogZnVuYyAobCA8dHlwZSA0OTQ+KSBQYW5pY2YgKGZvcm1hdCA8dHlwZSAtMTY+LCB2IC4uLjx0eXBlIDQ5OSBpbnRlcmZhY2UgeyB9Pik7CiBmdW5jIChsIDx0eXBlIDQ5ND4pIC5sb2cuZm9ybWF0SGVhZGVyIChidWYgPHR5cGUgNTAwICo8dHlwZSA1MDEgW10gPHR5cGUgLTIwPj4+LCB0IDx0eXBlIDE2Mj4sIGZpbGUgPHR5cGUgLTE2PiwgbGluZSA8dHlwZSAtMTE+KTsKIGZ1bmMgKGwgPHR5cGUgNDk0PikgRmF0YWxsbiAodiAuLi48dHlwZSA1MDIgaW50ZXJmYWNlIHsgfT4pOwogZnVuYyAobCA8dHlwZSA0OTQ+KSBTZXRGbGFncyAoZmxhZyA8dHlwZSAtMTE+KTsKIGZ1bmMgKGwgPHR5cGUgNDk0PikgUGFuaWNsbiAodiAuLi48dHlwZSA1MDMgaW50ZXJmYWNlIHsgfT4pOwogZnVuYyAobCA8dHlwZSA0OTQ+KSBGbGFncyAoKSA8dHlwZSAtMTE+OwogZnVuYyAobCA8dHlwZSA0OTQ+KSBQYW5pYyAodiAuLi48dHlwZSA1MDQgaW50ZXJmYWNlIHsgfT4pOwogZnVuYyAobCA8dHlwZSA0OTQ+KSBGYXRhbGYgKGZvcm1hdCA8dHlwZSAtMTY+LCB2IC4uLjx0eXBlIDUwNSBpbnRlcmZhY2UgeyB9Pik7Cj4+OyAubmV0L2h0dHAuZGlzYWJsZUtlZXBBbGl2ZXMgPHR5cGUgLTM+OyB9PgogZnVuYyAoc3J2IDx0eXBlIDUwNiAqPHR5cGUgMzY1Pj4pIC5uZXQvaHR0cC5pbml0aWFsTGltaXRlZFJlYWRlclNpemUgKCkgPHR5cGUgLTQ+OwogZnVuYyAoc3J2IDx0eXBlIDUwNj4pIC5uZXQvaHR0cC5tYXhIZWFkZXJCeXRlcyAoKSA8dHlwZSAtMTE+OwogZnVuYyAocyA8dHlwZSA1MDY+KSAubmV0L2h0dHAuZG9LZWVwQWxpdmVzICgpIDx0eXBlIC0xNT47CiBmdW5jIChzcnYgPHR5cGUgNTA2PikgU2VydmUgKGwgPHR5cGUgMzExPikgPHR5cGUgLTE5PjsKIGZ1bmMgKHNydiA8dHlwZSA1MDY+KSAubmV0L2h0dHAubmV3Q29ubiAocndjIDx0eXBlIDMxMz4pIChjIDx0eXBlIDUwNyAqPHR5cGUgNTA4ICIubmV0L2h0dHAuY29ubiIgPHR5cGUgNTA5IHN0cnVjdCB7IC5uZXQvaHR0cC5yZW1vdGVBZGRyIDx0eXBlIC0xNj47IC5uZXQvaHR0cC5zZXJ2ZXIgPHR5cGUgNTA2PjsgLm5ldC9odHRwLnJ3YyA8dHlwZSAzMTM+OyAubmV0L2h0dHAudyA8dHlwZSA3PjsgLm5ldC9odHRwLndlcnIgPHR5cGUgLTE5PjsgLm5ldC9odHRwLnNyIDx0eXBlIDUxMCAiLm5ldC9odHRwLmxpdmVTd2l0Y2hSZWFkZXIiIDx0eXBlIDUxMSBzdHJ1Y3QgeyA/IDx0eXBlIDM1Nj47IC5uZXQvaHR0cC5yIDx0eXBlIDM0PjsgfT4KIGZ1bmMgKHNyIDx0eXBlIDUxMiAqPHR5cGUgNTEwPj4pIFJlYWQgKHAgPHR5cGUgNTEzIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7Cj47IC5uZXQvaHR0cC5sciA8dHlwZSA1MTQgKjx0eXBlIDUxNSAiaW8uTGltaXRlZFJlYWRlciIgPHR5cGUgNTE2IHN0cnVjdCB7IFIgPHR5cGUgMzQ+OyBOIDx0eXBlIC00PjsgfT4KIGZ1bmMgKGwgPHR5cGUgNTE3ICo8dHlwZSA1MTU+PikgUmVhZCAocCA8dHlwZSA1MTggW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKPj47IC5uZXQvaHR0cC5idWYgPHR5cGUgNTE5ICo8dHlwZSA1MjAgImJ1ZmlvLlJlYWRXcml0ZXIiIDx0eXBlIDUyMSBzdHJ1Y3QgeyA/IDx0eXBlIDI3Nj47ID8gPHR5cGUgNTIyICo8dHlwZSA1MjMgImJ1ZmlvLldyaXRlciIgPHR5cGUgNTI0IHN0cnVjdCB7IC5idWZpby5lcnIgPHR5cGUgLTE5PjsgLmJ1ZmlvLmJ1ZiA8dHlwZSA1MjUgW10gPHR5cGUgLTIwPj47IC5idWZpby5uIDx0eXBlIC0xMT47IC5idWZpby53ciA8dHlwZSA3PjsgfT4KIGZ1bmMgKGIgPHR5cGUgNTI2ICo8dHlwZSA1MjM+PikgUmVhZEZyb20gKHIgPHR5cGUgMzQ+KSAobiA8dHlwZSAtND4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgNTI2PikgV3JpdGVTdHJpbmcgKHMgPHR5cGUgLTE2PikgKD8gPHR5cGUgLTExPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgNTI2PikgV3JpdGVSdW5lIChyIDx0eXBlIC0yMT4pIChzaXplIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgNTI2PikgV3JpdGVCeXRlIChjIDx0eXBlIC0yMD4pIDx0eXBlIC0xOT47CiBmdW5jIChiIDx0eXBlIDUyNj4pIFdyaXRlIChwIDx0eXBlIDUyNyBbXSA8dHlwZSAtMjA+PikgKG5uIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgNTI2PikgRmx1c2ggKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGIgPHR5cGUgNTI2PikgQXZhaWxhYmxlICgpIDx0eXBlIC0xMT47CiBmdW5jIChiIDx0eXBlIDUyNj4pIC5idWZpby5mbHVzaCAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYiA8dHlwZSA1MjY+KSBCdWZmZXJlZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAoYiA8dHlwZSA1MjY+KSBSZXNldCAodyA8dHlwZSA3Pik7Cj4+OyB9Pj4+OyAubmV0L2h0dHAudGxzU3RhdGUgPHR5cGUgODc+OyAubmV0L2h0dHAubXUgPHR5cGUgMzU2PjsgLm5ldC9odHRwLmNsaWVudEdvbmUgPHR5cGUgLTE1PjsgLm5ldC9odHRwLmNsb3NlTm90aWZ5YyA8dHlwZSA1MjggY2hhbiA8dHlwZSAtMTU+PjsgLm5ldC9odHRwLmhpamFja2VkdiA8dHlwZSAtMTU+OyB9PgogZnVuYyAoYyA8dHlwZSA1MjkgKjx0eXBlIDUwOD4+KSAubmV0L2h0dHAuc2V0U3RhdGUgKG5jIDx0eXBlIDMxMz4sIHN0YXRlIDx0eXBlIDQ4OT4pOwogZnVuYyAoYyA8dHlwZSA1Mjk+KSAubmV0L2h0dHAuY2xvc2UgKCk7CiBmdW5jIChjIDx0eXBlIDUyOT4pIC5uZXQvaHR0cC5oaWphY2tlZCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoYyA8dHlwZSA1Mjk+KSAubmV0L2h0dHAuY2xvc2VXcml0ZUFuZFdhaXQgKCk7CiBmdW5jIChjIDx0eXBlIDUyOT4pIC5uZXQvaHR0cC5zZXJ2ZSAoKTsKIGZ1bmMgKGMgPHR5cGUgNTI5PikgLm5ldC9odHRwLnJlYWRSZXF1ZXN0ICgpICh3IDx0eXBlIDUzMCAqPHR5cGUgNTMxICIubmV0L2h0dHAucmVzcG9uc2UiIDx0eXBlIDUzMiBzdHJ1Y3QgeyAubmV0L2h0dHAuY29ubiA8dHlwZSA1Mjk+OyAubmV0L2h0dHAucmVxIDx0eXBlIDQ1PjsgLm5ldC9odHRwLndyb3RlSGVhZGVyIDx0eXBlIC0xNT47IC5uZXQvaHR0cC53cm90ZUNvbnRpbnVlIDx0eXBlIC0xNT47IC5uZXQvaHR0cC53IDx0eXBlIDUyMj47IC5uZXQvaHR0cC5jdyA8dHlwZSA1MzMgIi5uZXQvaHR0cC5jaHVua1dyaXRlciIgPHR5cGUgNTM0IHN0cnVjdCB7IC5uZXQvaHR0cC5yZXMgPHR5cGUgNTM1ICo8dHlwZSA1MzE+PjsgLm5ldC9odHRwLmhlYWRlciA8dHlwZSA0PjsgLm5ldC9odHRwLndyb3RlSGVhZGVyIDx0eXBlIC0xNT47IC5uZXQvaHR0cC5jaHVua2luZyA8dHlwZSAtMTU+OyB9PgogZnVuYyAoY3cgPHR5cGUgNTM2ICo8dHlwZSA1MzM+PikgLm5ldC9odHRwLndyaXRlSGVhZGVyIChwIDx0eXBlIDUzNyBbXSA8dHlwZSAtMjA+Pik7CiBmdW5jIChjdyA8dHlwZSA1MzY+KSAubmV0L2h0dHAuY2xvc2UgKCk7CiBmdW5jIChjdyA8dHlwZSA1MzY+KSBXcml0ZSAocCA8dHlwZSA1MzggW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGN3IDx0eXBlIDUzNj4pIC5uZXQvaHR0cC5mbHVzaCAoKTsKPjsgLm5ldC9odHRwLnN3IDx0eXBlIDUzOSAqPHR5cGUgNTQwICIubmV0L2h0dHAuc3dpdGNoV3JpdGVyIiA8dHlwZSA1NDEgc3RydWN0IHsgPyA8dHlwZSA3PjsgfT4+PjsgLm5ldC9odHRwLmhhbmRsZXJIZWFkZXIgPHR5cGUgND47IC5uZXQvaHR0cC5jYWxsZWRIZWFkZXIgPHR5cGUgLTE1PjsgLm5ldC9odHRwLndyaXR0ZW4gPHR5cGUgLTQ+OyAubmV0L2h0dHAuY29udGVudExlbmd0aCA8dHlwZSAtND47IC5uZXQvaHR0cC5zdGF0dXMgPHR5cGUgLTExPjsgLm5ldC9odHRwLmNsb3NlQWZ0ZXJSZXBseSA8dHlwZSAtMTU+OyAubmV0L2h0dHAucmVxdWVzdEJvZHlMaW1pdEhpdCA8dHlwZSAtMTU+OyAubmV0L2h0dHAuaGFuZGxlckRvbmUgPHR5cGUgLTE1PjsgLm5ldC9odHRwLmRhdGVCdWYgPHR5cGUgNTQyIFsyOSBdIDx0eXBlIC0yMD4+OyAubmV0L2h0dHAuY2xlbkJ1ZiA8dHlwZSA1NDMgWzEwIF0gPHR5cGUgLTIwPj47IH0+CiBmdW5jICh3IDx0eXBlIDU0NCAqPHR5cGUgNTMxPj4pIC5uZXQvaHR0cC5maW5pc2hSZXF1ZXN0ICgpOwogZnVuYyAodyA8dHlwZSA1NDQ+KSBXcml0ZVN0cmluZyAoZGF0YSA8dHlwZSAtMTY+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jICh3IDx0eXBlIDU0ND4pIEZsdXNoICgpOwogZnVuYyAodyA8dHlwZSA1NDQ+KSAubmV0L2h0dHAud3JpdGUgKGxlbkRhdGEgPHR5cGUgLTExPiwgZGF0YUIgPHR5cGUgNTQ1IFtdIDx0eXBlIC0yMD4+LCBkYXRhUyA8dHlwZSAtMTY+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jICh3IDx0eXBlIDU0ND4pIC5uZXQvaHR0cC5yZXF1ZXN0VG9vTGFyZ2UgKCk7CiBmdW5jICh3IDx0eXBlIDU0ND4pIC5uZXQvaHR0cC5ib2R5QWxsb3dlZCAoKSA8dHlwZSAtMTU+OwogZnVuYyAodyA8dHlwZSA1NDQ+KSBXcml0ZSAoZGF0YSA8dHlwZSA1NDYgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHcgPHR5cGUgNTQ0PikgQ2xvc2VOb3RpZnkgKCkgPHR5cGUgNTQ3IGNoYW4gPC0gPHR5cGUgLTE1Pj47CiBmdW5jICh3IDx0eXBlIDU0ND4pIFJlYWRGcm9tIChzcmMgPHR5cGUgMzQ+KSAobiA8dHlwZSAtND4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHcgPHR5cGUgNTQ0PikgSGlqYWNrICgpIChyd2MgPHR5cGUgMzEzPiwgYnVmIDx0eXBlIDUxOT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHcgPHR5cGUgNTQ0PikgLm5ldC9odHRwLnNlbmRFeHBlY3RhdGlvbkZhaWxlZCAoKTsKIGZ1bmMgKHcgPHR5cGUgNTQ0PikgLm5ldC9odHRwLm5lZWRzU25pZmYgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHcgPHR5cGUgNTQ0PikgSGVhZGVyICgpIDx0eXBlIDQ+OwogZnVuYyAodyA8dHlwZSA1NDQ+KSBXcml0ZUhlYWRlciAoY29kZSA8dHlwZSAtMTE+KTsKPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgNTI5PikgLm5ldC9odHRwLm5vdGVDbGllbnRHb25lICgpOwogZnVuYyAoYyA8dHlwZSA1Mjk+KSAubmV0L2h0dHAuaGlqYWNrICgpIChyd2MgPHR5cGUgMzEzPiwgYnVmIDx0eXBlIDUxOT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgNTI5PikgLm5ldC9odHRwLmZpbmFsRmx1c2ggKCk7CiBmdW5jIChjIDx0eXBlIDUyOT4pIC5uZXQvaHR0cC5jbG9zZU5vdGlmeSAoKSA8dHlwZSA1NDggY2hhbiA8LSA8dHlwZSAtMTU+PjsKPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHNydiA8dHlwZSA1MDY+KSBMaXN0ZW5BbmRTZXJ2ZVRMUyAoY2VydEZpbGUgPHR5cGUgLTE2Piwga2V5RmlsZSA8dHlwZSAtMTY+KSA8dHlwZSAtMTk+OwogZnVuYyAocyA8dHlwZSA1MDY+KSAubmV0L2h0dHAubG9nZiAoZm9ybWF0IDx0eXBlIC0xNj4sIGFyZ3MgLi4uPHR5cGUgNTQ5IGludGVyZmFjZSB7IH0+KTsKIGZ1bmMgKHMgPHR5cGUgNTA2PikgU2V0S2VlcEFsaXZlc0VuYWJsZWQgKHYgPHR5cGUgLTE1Pik7CiBmdW5jIChzcnYgPHR5cGUgNTA2PikgTGlzdGVuQW5kU2VydmUgKCkgPHR5cGUgLTE5PjsKPj47IC5uZXQvaHR0cC9odHRwdGVzdC53ZyA8dHlwZSA1NTAgInN5bmMuV2FpdEdyb3VwIiA8dHlwZSA1NTEgc3RydWN0IHsgLnN5bmMubSA8dHlwZSAzNTY+OyAuc3luYy5jb3VudGVyIDx0eXBlIC0zPjsgLnN5bmMud2FpdGVycyA8dHlwZSAtMz47IC5zeW5jLnNlbWEgPHR5cGUgNTUyICo8dHlwZSAtNz4+OyB9PgogZnVuYyAod2cgPHR5cGUgNTUzICo8dHlwZSA1NTA+PikgV2FpdCAoKTsKIGZ1bmMgKHdnIDx0eXBlIDU1Mz4pIERvbmUgKCk7CiBmdW5jICh3ZyA8dHlwZSA1NTM+KSBBZGQgKGRlbHRhIDx0eXBlIC0xMT4pOwo+OyB9PgogZnVuYyAocyA8dHlwZSA1NTQgKjx0eXBlIDMwOT4+KSBTdGFydCAoKTsKIGZ1bmMgKHMgPHR5cGUgNTU0PikgU3RhcnRUTFMgKCk7CiBmdW5jIChzIDx0eXBlIDU1ND4pIC5uZXQvaHR0cC9odHRwdGVzdC53cmFwSGFuZGxlciAoKTsKIGZ1bmMgKHMgPHR5cGUgNTU0PikgQ2xvc2UgKCk7CiBmdW5jIChzIDx0eXBlIDU1ND4pIENsb3NlQ2xpZW50Q29ubmVjdGlvbnMgKCk7Cj4+OwpmdW5jIE5ld1RMU1NlcnZlciAoaGFuZGxlciA8dHlwZSA0MD4pIDx0eXBlIDMwOD47CmZ1bmMgTmV3VW5zdGFydGVkU2VydmVyIChoYW5kbGVyIDx0eXBlIDQwPikgPHR5cGUgMzA4PjsKdHlwZSA8dHlwZSAyPjsKdHlwZSA8dHlwZSAzMDk+OwpjaGVja3N1bSBDMDBFOUVCNDIwQTBFRkM4QzFGNTk2NDc4Q0VEQUM5QjZDRUU4RDlBOwoALnN5bXRhYgAuc3RydGFiAC5zaHN0cnRhYgAuZ29fZXhwb3J0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAAAAAAAAAAAADQAAADJzQAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAAAAAAAAAAAAD9zQAAJgAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAJM4AACAAAAAEAAAAAgAAAAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAAETOAAABAAAAAAAAAAAAAAABAAAAAAAAAA==