f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAADkdQAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIHg1MDk7CnBrZ3BhdGggY3J5cHRvL3g1MDk7CnByaW9yaXR5IDEwOwppbXBvcnQgYnl0ZXMgYnl0ZXMgImJ5dGVzIjsKaW1wb3J0IGNyeXB0byBjcnlwdG8gImNyeXB0byI7CmltcG9ydCBhZXMgY3J5cHRvL2FlcyAiY3J5cHRvL2FlcyI7CmltcG9ydCBjaXBoZXIgY3J5cHRvL2NpcGhlciAiY3J5cHRvL2NpcGhlciI7CmltcG9ydCBkZXMgY3J5cHRvL2RlcyAiY3J5cHRvL2RlcyI7CmltcG9ydCBkc2EgY3J5cHRvL2RzYSAiY3J5cHRvL2RzYSI7CmltcG9ydCBlY2RzYSBjcnlwdG8vZWNkc2EgImNyeXB0by9lY2RzYSI7CmltcG9ydCBlbGxpcHRpYyBjcnlwdG8vZWxsaXB0aWMgImNyeXB0by9lbGxpcHRpYyI7CmltcG9ydCBtZDUgY3J5cHRvL21kNSAiY3J5cHRvL21kNSI7CmltcG9ydCByc2EgY3J5cHRvL3JzYSAiY3J5cHRvL3JzYSI7CmltcG9ydCBzaGExIGNyeXB0by9zaGExICJjcnlwdG8vc2hhMSI7CmltcG9ydCBzaGEyNTYgY3J5cHRvL3NoYTI1NiAiY3J5cHRvL3NoYTI1NiI7CmltcG9ydCBzaGE1MTIgY3J5cHRvL3NoYTUxMiAiY3J5cHRvL3NoYTUxMiI7CmltcG9ydCBwa2l4IGNyeXB0by94NTA5L3BraXggImNyeXB0by94NTA5L3BraXgiOwppbXBvcnQgYXNuMSBlbmNvZGluZy9hc24xICJlbmNvZGluZy9hc24xIjsKaW1wb3J0IGhleCBlbmNvZGluZy9oZXggImVuY29kaW5nL2hleCI7CmltcG9ydCBwZW0gZW5jb2RpbmcvcGVtICJlbmNvZGluZy9wZW0iOwppbXBvcnQgZXJyb3JzIGVycm9ycyAiZXJyb3JzIjsKaW1wb3J0IGZtdCBmbXQgImZtdCI7CmltcG9ydCBpbyBpbyAiaW8iOwppbXBvcnQgaW91dGlsIGlvL2lvdXRpbCAiaW8vaW91dGlsIjsKaW1wb3J0IGJpZyBtYXRoL2JpZyAibWF0aC9iaWciOwppbXBvcnQgbmV0IG5ldCAibmV0IjsKaW1wb3J0IHJ1bnRpbWUgcnVudGltZSAicnVudGltZSI7CmltcG9ydCBzdHJjb252IHN0cmNvbnYgInN0cmNvbnYiOwppbXBvcnQgc3RyaW5ncyBzdHJpbmdzICJzdHJpbmdzIjsKaW1wb3J0IHN5bmMgc3luYyAic3luYyI7CmltcG9ydCB0aW1lIHRpbWUgInRpbWUiOwppbXBvcnQgdXRmOCB1bmljb2RlL3V0ZjggInVuaWNvZGUvdXRmOCI7CmluaXQgeDUwOSBjcnlwdG9feDUwOS4uaW1wb3J0IDEwIG1hdGggbWF0aC4uaW1wb3J0IDEgcnVudGltZSBydW50aW1lLi5pbXBvcnQgMSB1bmljb2RlIHVuaWNvZGUuLmltcG9ydCAxIHN0cmNvbnYgc3RyY29udi4uaW1wb3J0IDIgc3luYyBzeW5jLi5pbXBvcnQgMiBpbyBpby4uaW1wb3J0IDMgcmFuZCBtYXRoX3JhbmQuLmltcG9ydCAzIHJlZmxlY3QgcmVmbGVjdC4uaW1wb3J0IDMgc3lzY2FsbCBzeXNjYWxsLi5pbXBvcnQgMyBiaW5hcnkgZW5jb2RpbmdfYmluYXJ5Li5pbXBvcnQgNCBieXRlcyBieXRlcy4uaW1wb3J0IDQgY2lwaGVyIGNyeXB0b19jaXBoZXIuLmltcG9ydCA0IHN5c2NhbGwgaW50ZXJuYWxfc3lzY2FsbC4uaW1wb3J0IDQgdGltZSB0aW1lLi5pbXBvcnQgNCBiYXNlNjQgZW5jb2RpbmdfYmFzZTY0Li5pbXBvcnQgNSBidWZpbyBidWZpby4uaW1wb3J0IDUgY3J5cHRvIGNyeXB0by4uaW1wb3J0IDUgZGVzIGNyeXB0b19kZXMuLmltcG9ydCA1IG9zIG9zLi5pbXBvcnQgNSBmaWxlcGF0aCBwYXRoX2ZpbGVwYXRoLi5pbXBvcnQgNiBmbXQgZm10Li5pbXBvcnQgNiBtZDUgY3J5cHRvX21kNS4uaW1wb3J0IDYgbmV0IG5ldC4uaW1wb3J0IDYgcGVtIGVuY29kaW5nX3BlbS4uaW1wb3J0IDYgc2hhMSBjcnlwdG9fc2hhMS4uaW1wb3J0IDYgc2hhMjU2IGNyeXB0b19zaGEyNTYuLmltcG9ydCA2IHNoYTUxMiBjcnlwdG9fc2hhNTEyLi5pbXBvcnQgNiBiaWcgbWF0aF9iaWcuLmltcG9ydCA3IGhleCBlbmNvZGluZ19oZXguLmltcG9ydCA3IGlvdXRpbCBpb19pb3V0aWwuLmltcG9ydCA3IGFzbjEgZW5jb2RpbmdfYXNuMS4uaW1wb3J0IDggZHNhIGNyeXB0b19kc2EuLmltcG9ydCA4IGVsbGlwdGljIGNyeXB0b19lbGxpcHRpYy4uaW1wb3J0IDggcmFuZCBjcnlwdG9fcmFuZC4uaW1wb3J0IDggZWNkc2EgY3J5cHRvX2VjZHNhLi5pbXBvcnQgOSBwa2l4IGNyeXB0b194NTA5X3BraXguLmltcG9ydCA5IHJzYSBjcnlwdG9fcnNhLi5pbXBvcnQgOTsKY29uc3QgQ0FOb3RBdXRob3JpemVkRm9yVGhpc05hbWUgPHR5cGUgMSAiSW52YWxpZFJlYXNvbiIgPHR5cGUgLTExPj4gPSAyIDsKdHlwZSA8dHlwZSAyICJDZXJ0UG9vbCIgPHR5cGUgMyBzdHJ1Y3QgeyAuY3J5cHRvL3g1MDkuYnlTdWJqZWN0S2V5SWQgPHR5cGUgNCBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDUgW10gPHR5cGUgLTExPj4+OyAuY3J5cHRvL3g1MDkuYnlOYW1lIDx0eXBlIDYgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSA3IFtdIDx0eXBlIC0xMT4+PjsgLmNyeXB0by94NTA5LmNlcnRzIDx0eXBlIDggW10gPHR5cGUgOSAqPHR5cGUgMTAgIkNlcnRpZmljYXRlIiA8dHlwZSAxMSBzdHJ1Y3QgeyBSYXcgPHR5cGUgMTIgW10gPHR5cGUgLTIwPj47IFJhd1RCU0NlcnRpZmljYXRlIDx0eXBlIDEzIFtdIDx0eXBlIC0yMD4+OyBSYXdTdWJqZWN0UHVibGljS2V5SW5mbyA8dHlwZSAxNCBbXSA8dHlwZSAtMjA+PjsgUmF3U3ViamVjdCA8dHlwZSAxNSBbXSA8dHlwZSAtMjA+PjsgUmF3SXNzdWVyIDx0eXBlIDE2IFtdIDx0eXBlIC0yMD4+OyBTaWduYXR1cmUgPHR5cGUgMTcgW10gPHR5cGUgLTIwPj47IFNpZ25hdHVyZUFsZ29yaXRobSA8dHlwZSAxOCAiU2lnbmF0dXJlQWxnb3JpdGhtIiA8dHlwZSAtMTE+PjsgUHVibGljS2V5QWxnb3JpdGhtIDx0eXBlIDE5ICJQdWJsaWNLZXlBbGdvcml0aG0iIDx0eXBlIC0xMT4+OyBQdWJsaWNLZXkgPHR5cGUgMjAgaW50ZXJmYWNlIHsgfT47IFZlcnNpb24gPHR5cGUgLTExPjsgU2VyaWFsTnVtYmVyIDx0eXBlIDIxICo8dHlwZSAyMiAibWF0aC9iaWcuSW50IiA8dHlwZSAyMyBzdHJ1Y3QgeyAubWF0aC9iaWcubmVnIDx0eXBlIC0xNT47IC5tYXRoL2JpZy5hYnMgPHR5cGUgMjQgIi5tYXRoL2JpZy5uYXQiIDx0eXBlIDI1IFtdIDx0eXBlIDI2ICJtYXRoL2JpZy5Xb3JkIiA8dHlwZSAtMTM+Pj4KIGZ1bmMgKHogPHR5cGUgMjQ+KSAubWF0aC9iaWcubXVsICh4IDx0eXBlIDI0PiwgeSA8dHlwZSAyND4pIDx0eXBlIDI0PjsKIGZ1bmMgKHogPHR5cGUgMjQ+KSAubWF0aC9iaWcuc2NhbiAociA8dHlwZSAyNyAiaW8uUnVuZVNjYW5uZXIiIDx0eXBlIDI4IGludGVyZmFjZSB7ID8gPHR5cGUgMjkgImlvLlJ1bmVSZWFkZXIiIDx0eXBlIDMwIGludGVyZmFjZSB7IFJlYWRSdW5lICgpIChyIDx0eXBlIC0yMT4sIHNpemUgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj47IFVucmVhZFJ1bmUgKCkgPHR5cGUgLTE5PjsgfT4+LCBiYXNlIDx0eXBlIC0xMT4pICg/IDx0eXBlIDI0PiwgPyA8dHlwZSAtMTE+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoeiA8dHlwZSAyND4pIC5tYXRoL2JpZy5hZGQgKHggPHR5cGUgMjQ+LCB5IDx0eXBlIDI0PikgPHR5cGUgMjQ+OwogZnVuYyAoeiA8dHlwZSAyND4pIC5tYXRoL2JpZy5hbmROb3QgKHggPHR5cGUgMjQ+LCB5IDx0eXBlIDI0PikgPHR5cGUgMjQ+OwogZnVuYyAoeiA8dHlwZSAyND4pIC5tYXRoL2JpZy5zZXRCaXQgKHggPHR5cGUgMjQ+LCBpIDx0eXBlIC0xMj4sIGIgPHR5cGUgLTEyPikgPHR5cGUgMjQ+OwogZnVuYyAoeiA8dHlwZSAyND4pIC5tYXRoL2JpZy5zdWIgKHggPHR5cGUgMjQ+LCB5IDx0eXBlIDI0PikgPHR5cGUgMjQ+OwogZnVuYyAoeCA8dHlwZSAyND4pIC5tYXRoL2JpZy5tb2RXIChkIDx0eXBlIDI2PikgKHIgPHR5cGUgMjY+KTsKIGZ1bmMgKG4gPHR5cGUgMjQ+KSAubWF0aC9iaWcucHJvYmFibHlQcmltZSAocmVwcyA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OwogZnVuYyAocSA8dHlwZSAyND4pIC5tYXRoL2JpZy5jb252ZXJ0V29yZHMgKHMgPHR5cGUgMzEgW10gPHR5cGUgLTIwPj4sIGNoYXJzZXQgPHR5cGUgLTE2PiwgYiA8dHlwZSAyNj4sIG5kaWdpdHMgPHR5cGUgLTExPiwgYmIgPHR5cGUgMjY+LCB0YWJsZSA8dHlwZSAzMiBbXSA8dHlwZSAzMyAiLm1hdGgvYmlnLmRpdmlzb3IiIDx0eXBlIDM0IHN0cnVjdCB7IC5tYXRoL2JpZy5iYmIgPHR5cGUgMjQ+OyAubWF0aC9iaWcubmJpdHMgPHR5cGUgLTExPjsgLm1hdGgvYmlnLm5kaWdpdHMgPHR5cGUgLTExPjsgfT4+Pik7CiBmdW5jICh4IDx0eXBlIDI0PikgLm1hdGgvYmlnLnN0cmluZyAoY2hhcnNldCA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAoeiA8dHlwZSAyND4pIC5tYXRoL2JpZy5kaXZXICh4IDx0eXBlIDI0PiwgeSA8dHlwZSAyNj4pIChxIDx0eXBlIDI0PiwgciA8dHlwZSAyNj4pOwogZnVuYyAoeiA8dHlwZSAyND4pIC5tYXRoL2JpZy5zaHIgKHggPHR5cGUgMjQ+LCBzIDx0eXBlIC0xMj4pIDx0eXBlIDI0PjsKIGZ1bmMgKHogPHR5cGUgMjQ+KSAubWF0aC9iaWcubXVsUmFuZ2UgKGEgPHR5cGUgLTg+LCBiIDx0eXBlIC04PikgPHR5cGUgMjQ+OwogZnVuYyAoeiA8dHlwZSAyND4pIC5tYXRoL2JpZy5tdWxBZGRXVyAoeCA8dHlwZSAyND4sIHkgPHR5cGUgMjY+LCByIDx0eXBlIDI2PikgPHR5cGUgMjQ+OwogZnVuYyAoeCA8dHlwZSAyND4pIC5tYXRoL2JpZy5kZWNpbWFsU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh6IDx0eXBlIDI0PikgLm1hdGgvYmlnLmFuZCAoeCA8dHlwZSAyND4sIHkgPHR5cGUgMjQ+KSA8dHlwZSAyND47CiBmdW5jICh6IDx0eXBlIDI0PikgLm1hdGgvYmlnLmJpdCAoaSA8dHlwZSAtMTI+KSA8dHlwZSAtMTI+OwogZnVuYyAoeiA8dHlwZSAyND4pIC5tYXRoL2JpZy54b3IgKHggPHR5cGUgMjQ+LCB5IDx0eXBlIDI0PikgPHR5cGUgMjQ+OwogZnVuYyAoeiA8dHlwZSAyND4pIC5tYXRoL2JpZy5zZXQgKHggPHR5cGUgMjQ+KSA8dHlwZSAyND47CiBmdW5jICh6IDx0eXBlIDI0PikgLm1hdGgvYmlnLnJhbmRvbSAocmFuZCA8dHlwZSAzNSAqPHR5cGUgMzYgIm1hdGgvcmFuZC5SYW5kIiAicmFuZCIgPHR5cGUgMzcgc3RydWN0IHsgLm1hdGgvcmFuZC5zcmMgPHR5cGUgMzggIm1hdGgvcmFuZC5Tb3VyY2UiIDx0eXBlIDM5IGludGVyZmFjZSB7IEludDYzICgpIDx0eXBlIC00PjsgU2VlZCAoc2VlZCA8dHlwZSAtND4pOyB9Pj47IH0+CiBmdW5jIChyIDx0eXBlIDQwICo8dHlwZSAzNj4+KSBFeHBGbG9hdDY0ICgpIDx0eXBlIC0xMD47CiBmdW5jIChyIDx0eXBlIDQwPikgSW50MzFuIChuIDx0eXBlIC0zPikgPHR5cGUgLTM+OwogZnVuYyAociA8dHlwZSA0MD4pIFVpbnQzMiAoKSA8dHlwZSAtNz47CiBmdW5jIChyIDx0eXBlIDQwPikgSW50biAobiA8dHlwZSAtMTE+KSA8dHlwZSAtMTE+OwogZnVuYyAociA8dHlwZSA0MD4pIFBlcm0gKG4gPHR5cGUgLTExPikgPHR5cGUgNDEgW10gPHR5cGUgLTExPj47CiBmdW5jIChyIDx0eXBlIDQwPikgTm9ybUZsb2F0NjQgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKHIgPHR5cGUgNDA+KSBJbnQzMSAoKSA8dHlwZSAtMz47CiBmdW5jIChyIDx0eXBlIDQwPikgRmxvYXQ2NCAoKSA8dHlwZSAtMTA+OwogZnVuYyAociA8dHlwZSA0MD4pIFNlZWQgKHNlZWQgPHR5cGUgLTQ+KTsKIGZ1bmMgKHIgPHR5cGUgNDA+KSBJbnQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHIgPHR5cGUgNDA+KSBJbnQ2MyAoKSA8dHlwZSAtND47CiBmdW5jIChyIDx0eXBlIDQwPikgSW50NjNuIChuIDx0eXBlIC00PikgPHR5cGUgLTQ+OwogZnVuYyAociA8dHlwZSA0MD4pIEZsb2F0MzIgKCkgPHR5cGUgLTk+Owo+PiwgbGltaXQgPHR5cGUgMjQ+LCBuIDx0eXBlIC0xMT4pIDx0eXBlIDI0PjsKIGZ1bmMgKHggPHR5cGUgMjQ+KSAubWF0aC9iaWcuY21wICh5IDx0eXBlIDI0PikgKHIgPHR5cGUgLTExPik7CiBmdW5jICh6IDx0eXBlIDI0PikgLm1hdGgvYmlnLm9yICh4IDx0eXBlIDI0PiwgeSA8dHlwZSAyND4pIDx0eXBlIDI0PjsKIGZ1bmMgKHggPHR5cGUgMjQ+KSAubWF0aC9iaWcuYml0TGVuICgpIDx0eXBlIC0xMT47CiBmdW5jICh6IDx0eXBlIDI0PikgLm1hdGgvYmlnLnNldFdvcmQgKHggPHR5cGUgMjY+KSA8dHlwZSAyND47CiBmdW5jICh6IDx0eXBlIDI0PikgLm1hdGgvYmlnLmRpdiAoejIgPHR5cGUgMjQ+LCB1IDx0eXBlIDI0PiwgdiA8dHlwZSAyND4pIChxIDx0eXBlIDI0PiwgciA8dHlwZSAyND4pOwogZnVuYyAoeiA8dHlwZSAyND4pIC5tYXRoL2JpZy5zZXRVaW50NjQgKHggPHR5cGUgLTg+KSA8dHlwZSAyND47CiBmdW5jICh4IDx0eXBlIDI0PikgLm1hdGgvYmlnLnRyYWlsaW5nWmVyb0JpdHMgKCkgPHR5cGUgLTEyPjsKIGZ1bmMgKHogPHR5cGUgMjQ+KSAubWF0aC9iaWcuZGl2TGFyZ2UgKHUgPHR5cGUgMjQ+LCB1SW4gPHR5cGUgMjQ+LCB2IDx0eXBlIDI0PikgKHEgPHR5cGUgMjQ+LCByIDx0eXBlIDI0Pik7CiBmdW5jICh6IDx0eXBlIDI0PikgLm1hdGgvYmlnLmV4cE5OV2luZG93ZWQgKHggPHR5cGUgMjQ+LCB5IDx0eXBlIDI0PiwgbSA8dHlwZSAyND4pIDx0eXBlIDI0PjsKIGZ1bmMgKHogPHR5cGUgMjQ+KSAubWF0aC9iaWcubm9ybSAoKSA8dHlwZSAyND47CiBmdW5jICh6IDx0eXBlIDI0PikgLm1hdGgvYmlnLnNldEJ5dGVzIChidWYgPHR5cGUgNDIgW10gPHR5cGUgLTIwPj4pIDx0eXBlIDI0PjsKIGZ1bmMgKHogPHR5cGUgMjQ+KSAubWF0aC9iaWcuc2hsICh4IDx0eXBlIDI0PiwgcyA8dHlwZSAtMTI+KSA8dHlwZSAyND47CiBmdW5jICh6IDx0eXBlIDI0PikgLm1hdGgvYmlnLm1ha2UgKG4gPHR5cGUgLTExPikgPHR5cGUgMjQ+OwogZnVuYyAoeiA8dHlwZSAyND4pIC5tYXRoL2JpZy5jbGVhciAoKTsKIGZ1bmMgKHogPHR5cGUgMjQ+KSAubWF0aC9iaWcuYnl0ZXMgKGJ1ZiA8dHlwZSA0MyBbXSA8dHlwZSAtMjA+PikgKGkgPHR5cGUgLTExPik7CiBmdW5jICh6IDx0eXBlIDI0PikgLm1hdGgvYmlnLmV4cFdXICh4IDx0eXBlIDI2PiwgeSA8dHlwZSAyNj4pIDx0eXBlIDI0PjsKIGZ1bmMgKHogPHR5cGUgMjQ+KSAubWF0aC9iaWcuZXhwTk4gKHggPHR5cGUgMjQ+LCB5IDx0eXBlIDI0PiwgbSA8dHlwZSAyND4pIDx0eXBlIDI0PjsKPjsgfT4KIGZ1bmMgKHogPHR5cGUgNDQgKjx0eXBlIDIyPj4pIE5lZyAoeCA8dHlwZSA0ND4pIDx0eXBlIDQ0PjsKIGZ1bmMgKHogPHR5cGUgNDQ+KSBRdW9SZW0gKHggPHR5cGUgNDQ+LCB5IDx0eXBlIDQ0PiwgciA8dHlwZSA0ND4pICg/IDx0eXBlIDQ0PiwgPyA8dHlwZSA0ND4pOwogZnVuYyAoeCA8dHlwZSA0ND4pIEJ5dGVzICgpIDx0eXBlIDQ1IFtdIDx0eXBlIC0yMD4+OwogZnVuYyAoeiA8dHlwZSA0ND4pIFNldEJpdHMgKGFicyA8dHlwZSA0NiBbXSA8dHlwZSAyNj4+KSA8dHlwZSA0ND47CiBmdW5jICh6IDx0eXBlIDQ0PikgU2V0Qml0ICh4IDx0eXBlIDQ0PiwgaSA8dHlwZSAtMTE+LCBiIDx0eXBlIC0xMj4pIDx0eXBlIDQ0PjsKIGZ1bmMgKHogPHR5cGUgNDQ+KSBYb3IgKHggPHR5cGUgNDQ+LCB5IDx0eXBlIDQ0PikgPHR5cGUgNDQ+OwogZnVuYyAoeiA8dHlwZSA0ND4pIFNldEludDY0ICh4IDx0eXBlIC00PikgPHR5cGUgNDQ+OwogZnVuYyAoeiA8dHlwZSA0ND4pIE5vdCAoeCA8dHlwZSA0ND4pIDx0eXBlIDQ0PjsKIGZ1bmMgKHogPHR5cGUgNDQ+KSBVbm1hcnNoYWxKU09OICh0ZXh0IDx0eXBlIDQ3IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAoeiA8dHlwZSA0ND4pIE9yICh4IDx0eXBlIDQ0PiwgeSA8dHlwZSA0ND4pIDx0eXBlIDQ0PjsKIGZ1bmMgKHogPHR5cGUgNDQ+KSBTZXRVaW50NjQgKHggPHR5cGUgLTg+KSA8dHlwZSA0ND47CiBmdW5jICh4IDx0eXBlIDQ0PikgSW50NjQgKCkgPHR5cGUgLTQ+OwogZnVuYyAoeiA8dHlwZSA0ND4pIC5tYXRoL2JpZy5zY2FuIChyIDx0eXBlIDI3PiwgYmFzZSA8dHlwZSAtMTE+KSAoPyA8dHlwZSA0ND4sID8gPHR5cGUgLTExPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHogPHR5cGUgNDQ+KSBHQ0QgKHggPHR5cGUgNDQ+LCB5IDx0eXBlIDQ0PiwgYSA8dHlwZSA0ND4sIGIgPHR5cGUgNDQ+KSA8dHlwZSA0ND47CiBmdW5jICh6IDx0eXBlIDQ0PikgUmVtICh4IDx0eXBlIDQ0PiwgeSA8dHlwZSA0ND4pIDx0eXBlIDQ0PjsKIGZ1bmMgKHggPHR5cGUgNDQ+KSBCaXQgKGkgPHR5cGUgLTExPikgPHR5cGUgLTEyPjsKIGZ1bmMgKHggPHR5cGUgNDQ+KSBCaXRzICgpIDx0eXBlIDQ4IFtdIDx0eXBlIDI2Pj47CiBmdW5jICh6IDx0eXBlIDQ0PikgU2V0Qnl0ZXMgKGJ1ZiA8dHlwZSA0OSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgNDQ+OwogZnVuYyAoeiA8dHlwZSA0ND4pIERpdk1vZCAoeCA8dHlwZSA0ND4sIHkgPHR5cGUgNDQ+LCBtIDx0eXBlIDQ0PikgKD8gPHR5cGUgNDQ+LCA/IDx0eXBlIDQ0Pik7CiBmdW5jICh6IDx0eXBlIDQ0PikgUnNoICh4IDx0eXBlIDQ0PiwgbiA8dHlwZSAtMTI+KSA8dHlwZSA0ND47CiBmdW5jICh4IDx0eXBlIDQ0PikgQ21wICh5IDx0eXBlIDQ0PikgKHIgPHR5cGUgLTExPik7CiBmdW5jICh6IDx0eXBlIDQ0PikgU2NhbiAocyA8dHlwZSA1MCAiZm10LlNjYW5TdGF0ZSIgPHR5cGUgNTEgaW50ZXJmYWNlIHsgUmVhZFJ1bmUgKCkgKHIgPHR5cGUgLTIxPiwgc2l6ZSA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IFVucmVhZFJ1bmUgKCkgPHR5cGUgLTE5PjsgU2tpcFNwYWNlICgpOyBUb2tlbiAoc2tpcFNwYWNlIDx0eXBlIC0xNT4sIGYgPHR5cGUgNTIgKD8gPHR5cGUgLTIxPikgPHR5cGUgLTE1Pj4pICh0b2tlbiA8dHlwZSA1MyBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOyBXaWR0aCAoKSAod2lkIDx0eXBlIC0xMT4sIG9rIDx0eXBlIC0xNT4pOyBSZWFkIChidWYgPHR5cGUgNTQgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+LCBjaCA8dHlwZSAtMjE+KSA8dHlwZSAtMTk+OwogZnVuYyAoeCA8dHlwZSA0ND4pIEdvYkVuY29kZSAoKSAoPyA8dHlwZSA1NSBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHggPHR5cGUgNDQ+KSBQcm9iYWJseVByaW1lIChuIDx0eXBlIC0xMT4pIDx0eXBlIC0xNT47CiBmdW5jICh4IDx0eXBlIDQ0PikgU2lnbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAoeiA8dHlwZSA0ND4pIE1vZCAoeCA8dHlwZSA0ND4sIHkgPHR5cGUgNDQ+KSA8dHlwZSA0ND47CiBmdW5jICh6IDx0eXBlIDQ0PikgRXhwICh4IDx0eXBlIDQ0PiwgeSA8dHlwZSA0ND4sIG0gPHR5cGUgNDQ+KSA8dHlwZSA0ND47CiBmdW5jICh4IDx0eXBlIDQ0PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh6IDx0eXBlIDQ0PikgQWJzICh4IDx0eXBlIDQ0PikgPHR5cGUgNDQ+OwogZnVuYyAoeiA8dHlwZSA0ND4pIFVubWFyc2hhbFRleHQgKHRleHQgPHR5cGUgNTYgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jICh6IDx0eXBlIDQ0PikgUmFuZCAocm5kIDx0eXBlIDM1PiwgbiA8dHlwZSA0ND4pIDx0eXBlIDQ0PjsKIGZ1bmMgKHogPHR5cGUgNDQ+KSBBbmQgKHggPHR5cGUgNDQ+LCB5IDx0eXBlIDQ0PikgPHR5cGUgNDQ+OwogZnVuYyAoeiA8dHlwZSA0ND4pIE1vZEludmVyc2UgKGcgPHR5cGUgNDQ+LCBuIDx0eXBlIDQ0PikgPHR5cGUgNDQ+OwogZnVuYyAoeiA8dHlwZSA0ND4pIFF1byAoeCA8dHlwZSA0ND4sIHkgPHR5cGUgNDQ+KSA8dHlwZSA0ND47CiBmdW5jICh6IDx0eXBlIDQ0PikgQWRkICh4IDx0eXBlIDQ0PiwgeSA8dHlwZSA0ND4pIDx0eXBlIDQ0PjsKIGZ1bmMgKHogPHR5cGUgNDQ+KSBMc2ggKHggPHR5cGUgNDQ+LCBuIDx0eXBlIC0xMj4pIDx0eXBlIDQ0PjsKIGZ1bmMgKHogPHR5cGUgNDQ+KSBBbmROb3QgKHggPHR5cGUgNDQ+LCB5IDx0eXBlIDQ0PikgPHR5cGUgNDQ+OwogZnVuYyAoeiA8dHlwZSA0ND4pIFNldCAoeCA8dHlwZSA0ND4pIDx0eXBlIDQ0PjsKIGZ1bmMgKHogPHR5cGUgNDQ+KSBNdWwgKHggPHR5cGUgNDQ+LCB5IDx0eXBlIDQ0PikgPHR5cGUgNDQ+OwogZnVuYyAoeiA8dHlwZSA0ND4pIE1hcnNoYWxUZXh0ICgpICh0ZXh0IDx0eXBlIDU3IFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jICh6IDx0eXBlIDQ0PikgRGl2ICh4IDx0eXBlIDQ0PiwgeSA8dHlwZSA0ND4pIDx0eXBlIDQ0PjsKIGZ1bmMgKHogPHR5cGUgNDQ+KSBCaW5vbWlhbCAobiA8dHlwZSAtND4sIGsgPHR5cGUgLTQ+KSA8dHlwZSA0ND47CiBmdW5jICh4IDx0eXBlIDQ0PikgRm9ybWF0IChzIDx0eXBlIDU4ICJmbXQuU3RhdGUiIDx0eXBlIDU5IGludGVyZmFjZSB7IFdyaXRlIChiIDx0eXBlIDYwIFtdIDx0eXBlIC0yMD4+KSAocmV0IDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgV2lkdGggKCkgKHdpZCA8dHlwZSAtMTE+LCBvayA8dHlwZSAtMTU+KTsgUHJlY2lzaW9uICgpIChwcmVjIDx0eXBlIC0xMT4sIG9rIDx0eXBlIC0xNT4pOyBGbGFnIChjIDx0eXBlIC0xMT4pIDx0eXBlIC0xNT47IH0+PiwgY2ggPHR5cGUgLTIxPik7CiBmdW5jICh6IDx0eXBlIDQ0PikgTXVsUmFuZ2UgKGEgPHR5cGUgLTQ+LCBiIDx0eXBlIC00PikgPHR5cGUgNDQ+OwogZnVuYyAoeiA8dHlwZSA0ND4pIFNldFN0cmluZyAocyA8dHlwZSAtMTY+LCBiYXNlIDx0eXBlIC0xMT4pICg/IDx0eXBlIDQ0PiwgPyA8dHlwZSAtMTU+KTsKIGZ1bmMgKHggPHR5cGUgNDQ+KSBVaW50NjQgKCkgPHR5cGUgLTg+OwogZnVuYyAoeiA8dHlwZSA0ND4pIE1hcnNoYWxKU09OICgpICg/IDx0eXBlIDYxIFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoeiA8dHlwZSA0ND4pIEdvYkRlY29kZSAoYnVmIDx0eXBlIDYyIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAoeCA8dHlwZSA0ND4pIEJpdExlbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAoeiA8dHlwZSA0ND4pIC5tYXRoL2JpZy5iaW5hcnlHQ0QgKGEgPHR5cGUgNDQ+LCBiIDx0eXBlIDQ0PikgPHR5cGUgNDQ+OwogZnVuYyAoeiA8dHlwZSA0ND4pIFN1YiAoeCA8dHlwZSA0ND4sIHkgPHR5cGUgNDQ+KSA8dHlwZSA0ND47Cj4+OyBJc3N1ZXIgPHR5cGUgNjMgImNyeXB0by94NTA5L3BraXguTmFtZSIgPHR5cGUgNjQgc3RydWN0IHsgQ291bnRyeSA8dHlwZSA2NSBbXSA8dHlwZSAtMTY+PjsgT3JnYW5pemF0aW9uIDx0eXBlIDY1PjsgT3JnYW5pemF0aW9uYWxVbml0IDx0eXBlIDY1PjsgTG9jYWxpdHkgPHR5cGUgNjYgW10gPHR5cGUgLTE2Pj47IFByb3ZpbmNlIDx0eXBlIDY2PjsgU3RyZWV0QWRkcmVzcyA8dHlwZSA2NyBbXSA8dHlwZSAtMTY+PjsgUG9zdGFsQ29kZSA8dHlwZSA2Nz47IFNlcmlhbE51bWJlciA8dHlwZSAtMTY+OyBDb21tb25OYW1lIDx0eXBlIC0xNj47IE5hbWVzIDx0eXBlIDY4IFtdIDx0eXBlIDY5ICJjcnlwdG8veDUwOS9wa2l4LkF0dHJpYnV0ZVR5cGVBbmRWYWx1ZSIgPHR5cGUgNzAgc3RydWN0IHsgVHlwZSA8dHlwZSA3MSAiZW5jb2RpbmcvYXNuMS5PYmplY3RJZGVudGlmaWVyIiA8dHlwZSA3MiBbXSA8dHlwZSAtMTE+PgogZnVuYyAob2kgPHR5cGUgNzE+KSBFcXVhbCAob3RoZXIgPHR5cGUgNzE+KSA8dHlwZSAtMTU+OwogZnVuYyAob2kgPHR5cGUgNzE+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsgVmFsdWUgPHR5cGUgNzMgaW50ZXJmYWNlIHsgfT47IH0+Pj47IH0+CiBmdW5jIChuIDx0eXBlIDYzPikgVG9SRE5TZXF1ZW5jZSAoKSAocmV0IDx0eXBlIDc0ICJjcnlwdG8veDUwOS9wa2l4LlJETlNlcXVlbmNlIiA8dHlwZSA3NSBbXSA8dHlwZSA3NiAiY3J5cHRvL3g1MDkvcGtpeC5SZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lU0VUIiA8dHlwZSA3NyBbXSA8dHlwZSA2OT4+Pj4+KTsKIGZ1bmMgKG4gPHR5cGUgNzggKjx0eXBlIDYzPj4pIEZpbGxGcm9tUkROU2VxdWVuY2UgKHJkbnMgPHR5cGUgNzkgKjx0eXBlIDc0Pj4pOwo+OyBTdWJqZWN0IDx0eXBlIDYzPjsgTm90QmVmb3JlIDx0eXBlIDgwICJ0aW1lLlRpbWUiIDx0eXBlIDgxIHN0cnVjdCB7IC50aW1lLnNlYyA8dHlwZSAtND47IC50aW1lLm5zZWMgPHR5cGUgLTM+OyAudGltZS5sb2MgPHR5cGUgODIgKjx0eXBlIDgzICJ0aW1lLkxvY2F0aW9uIiA8dHlwZSA4NCBzdHJ1Y3QgeyAudGltZS5uYW1lIDx0eXBlIC0xNj47IC50aW1lLnpvbmUgPHR5cGUgODUgW10gPHR5cGUgODYgIi50aW1lLnpvbmUiIDx0eXBlIDg3IHN0cnVjdCB7IC50aW1lLm5hbWUgPHR5cGUgLTE2PjsgLnRpbWUub2Zmc2V0IDx0eXBlIC0xMT47IC50aW1lLmlzRFNUIDx0eXBlIC0xNT47IH0+Pj47IC50aW1lLnR4IDx0eXBlIDg4IFtdIDx0eXBlIDg5ICIudGltZS56b25lVHJhbnMiIDx0eXBlIDkwIHN0cnVjdCB7IC50aW1lLndoZW4gPHR5cGUgLTQ+OyAudGltZS5pbmRleCA8dHlwZSAtNT47IC50aW1lLmlzc3RkIDx0eXBlIC0xNT47IC50aW1lLmlzdXRjIDx0eXBlIC0xNT47IH0+Pj47IC50aW1lLmNhY2hlU3RhcnQgPHR5cGUgLTQ+OyAudGltZS5jYWNoZUVuZCA8dHlwZSAtND47IC50aW1lLmNhY2hlWm9uZSA8dHlwZSA5MSAqPHR5cGUgODY+PjsgfT4KIGZ1bmMgKGwgPHR5cGUgOTIgKjx0eXBlIDgzPj4pIC50aW1lLmZpcnN0Wm9uZVVzZWQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGwgPHR5cGUgOTI+KSAudGltZS5sb29rdXAgKHNlYyA8dHlwZSAtND4pIChuYW1lIDx0eXBlIC0xNj4sIG9mZnNldCA8dHlwZSAtMTE+LCBpc0RTVCA8dHlwZSAtMTU+LCBzdGFydCA8dHlwZSAtND4sIGVuZCA8dHlwZSAtND4pOwogZnVuYyAobCA8dHlwZSA5Mj4pIC50aW1lLmxvb2t1cE5hbWUgKG5hbWUgPHR5cGUgLTE2PiwgdW5peCA8dHlwZSAtND4pIChvZmZzZXQgPHR5cGUgLTExPiwgaXNEU1QgPHR5cGUgLTE1Piwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jIChsIDx0eXBlIDkyPikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChsIDx0eXBlIDkyPikgLnRpbWUuZ2V0ICgpIDx0eXBlIDkyPjsKIGZ1bmMgKGwgPHR5cGUgOTI+KSAudGltZS5sb29rdXBGaXJzdFpvbmUgKCkgPHR5cGUgLTExPjsKPj47IH0+CiBmdW5jICh0IDx0eXBlIDgwPikgQWZ0ZXIgKHUgPHR5cGUgODA+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSA4MD4pIE1hcnNoYWxUZXh0ICgpICg/IDx0eXBlIDkzIFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSA4MD4pIERhdGUgKCkgKHllYXIgPHR5cGUgLTExPiwgbW9udGggPHR5cGUgOTQgInRpbWUuTW9udGgiIDx0eXBlIC0xMT4KIGZ1bmMgKG0gPHR5cGUgOTQ+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPiwgZGF5IDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSA4MD4pIC50aW1lLmFicyAoKSA8dHlwZSAtOD47CiBmdW5jICh0IDx0eXBlIDgwPikgV2Vla2RheSAoKSA8dHlwZSA5NSAidGltZS5XZWVrZGF5IiA8dHlwZSAtMTE+CiBmdW5jIChkIDx0eXBlIDk1PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj47CiBmdW5jICh0IDx0eXBlIDgwPikgTmFub3NlY29uZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSA5NiAqPHR5cGUgODA+PikgR29iRGVjb2RlIChkYXRhIDx0eXBlIDk3IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAodCA8dHlwZSA4MD4pIEluIChsb2MgPHR5cGUgODI+KSA8dHlwZSA4MD47CiBmdW5jICh0IDx0eXBlIDgwPikgTG9jYWwgKCkgPHR5cGUgODA+OwogZnVuYyAodCA8dHlwZSA4MD4pIE1vbnRoICgpIDx0eXBlIDk0PjsKIGZ1bmMgKHQgPHR5cGUgODA+KSBIb3VyICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDgwPikgTWFyc2hhbEJpbmFyeSAoKSAoPyA8dHlwZSA5OCBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgODA+KSBVbml4TmFubyAoKSA8dHlwZSAtND47CiBmdW5jICh0IDx0eXBlIDgwPikgRXF1YWwgKHUgPHR5cGUgODA+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSA4MD4pIEZvcm1hdCAobGF5b3V0IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDgwPikgQWRkRGF0ZSAoeWVhcnMgPHR5cGUgLTExPiwgbW9udGhzIDx0eXBlIC0xMT4sIGRheXMgPHR5cGUgLTExPikgPHR5cGUgODA+OwogZnVuYyAodCA8dHlwZSA4MD4pIFpvbmUgKCkgKG5hbWUgPHR5cGUgLTE2Piwgb2Zmc2V0IDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSA4MD4pIERheSAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSA4MD4pIENsb2NrICgpIChob3VyIDx0eXBlIC0xMT4sIG1pbiA8dHlwZSAtMTE+LCBzZWMgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDgwPikgTWFyc2hhbEpTT04gKCkgKD8gPHR5cGUgOTkgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDgwPikgVVRDICgpIDx0eXBlIDgwPjsKIGZ1bmMgKHQgPHR5cGUgODA+KSAudGltZS5kYXRlIChmdWxsIDx0eXBlIC0xNT4pICh5ZWFyIDx0eXBlIC0xMT4sIG1vbnRoIDx0eXBlIDk0PiwgZGF5IDx0eXBlIC0xMT4sIHlkYXkgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDgwPikgSXNaZXJvICgpIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDgwPikgQmVmb3JlICh1IDx0eXBlIDgwPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgODA+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgODA+KSBTZWNvbmQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgODA+KSBNaW51dGUgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgODA+KSBTdWIgKHUgPHR5cGUgODA+KSA8dHlwZSAxMDAgInRpbWUuRHVyYXRpb24iIDx0eXBlIC00PgogZnVuYyAoZCA8dHlwZSAxMDA+KSBTZWNvbmRzICgpIDx0eXBlIC0xMD47CiBmdW5jIChkIDx0eXBlIDEwMD4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoZCA8dHlwZSAxMDA+KSBNaW51dGVzICgpIDx0eXBlIC0xMD47CiBmdW5jIChkIDx0eXBlIDEwMD4pIEhvdXJzICgpIDx0eXBlIC0xMD47CiBmdW5jIChkIDx0eXBlIDEwMD4pIE5hbm9zZWNvbmRzICgpIDx0eXBlIC00PjsKPjsKIGZ1bmMgKHQgPHR5cGUgODA+KSBSb3VuZCAoZCA8dHlwZSAxMDA+KSA8dHlwZSA4MD47CiBmdW5jICh0IDx0eXBlIDgwPikgVW5peCAoKSA8dHlwZSAtND47CiBmdW5jICh0IDx0eXBlIDk2PikgVW5tYXJzaGFsVGV4dCAoZGF0YSA8dHlwZSAxMDEgW10gPHR5cGUgLTIwPj4pIChlcnIgPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDgwPikgQWRkIChkIDx0eXBlIDEwMD4pIDx0eXBlIDgwPjsKIGZ1bmMgKHQgPHR5cGUgODA+KSBUcnVuY2F0ZSAoZCA8dHlwZSAxMDA+KSA8dHlwZSA4MD47CiBmdW5jICh0IDx0eXBlIDgwPikgTG9jYXRpb24gKCkgPHR5cGUgODI+OwogZnVuYyAodCA8dHlwZSA4MD4pIEdvYkVuY29kZSAoKSAoPyA8dHlwZSAxMDIgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDk2PikgVW5tYXJzaGFsQmluYXJ5IChkYXRhIDx0eXBlIDEwMyBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHQgPHR5cGUgODA+KSBJU09XZWVrICgpICh5ZWFyIDx0eXBlIC0xMT4sIHdlZWsgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDgwPikgLnRpbWUubG9jYWJzICgpIChuYW1lIDx0eXBlIC0xNj4sIG9mZnNldCA8dHlwZSAtMTE+LCBhYnMgPHR5cGUgLTg+KTsKIGZ1bmMgKHQgPHR5cGUgODA+KSBZZWFyRGF5ICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDgwPikgWWVhciAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSA5Nj4pIFVubWFyc2hhbEpTT04gKGRhdGEgPHR5cGUgMTA0IFtdIDx0eXBlIC0yMD4+KSAoZXJyIDx0eXBlIC0xOT4pOwo+OyBOb3RBZnRlciA8dHlwZSA4MD47IEtleVVzYWdlIDx0eXBlIDEwNSAiS2V5VXNhZ2UiIDx0eXBlIC0xMT4+OyBFeHRlbnNpb25zIDx0eXBlIDEwNiBbXSA8dHlwZSAxMDcgImNyeXB0by94NTA5L3BraXguRXh0ZW5zaW9uIiA8dHlwZSAxMDggc3RydWN0IHsgSWQgPHR5cGUgNzE+OyBDcml0aWNhbCA8dHlwZSAtMTU+ICJhc24xOlwib3B0aW9uYWxcIiI7IFZhbHVlIDx0eXBlIDEwOSBbXSA8dHlwZSAtMjA+PjsgfT4+PjsgRXh0cmFFeHRlbnNpb25zIDx0eXBlIDExMCBbXSA8dHlwZSAxMDc+PjsgRXh0S2V5VXNhZ2UgPHR5cGUgMTExIFtdIDx0eXBlIDExMiAiRXh0S2V5VXNhZ2UiIDx0eXBlIC0xMT4+PjsgVW5rbm93bkV4dEtleVVzYWdlIDx0eXBlIDExMyBbXSA8dHlwZSA3MT4+OyBCYXNpY0NvbnN0cmFpbnRzVmFsaWQgPHR5cGUgLTE1PjsgSXNDQSA8dHlwZSAtMTU+OyBNYXhQYXRoTGVuIDx0eXBlIC0xMT47IE1heFBhdGhMZW5aZXJvIDx0eXBlIC0xNT47IFN1YmplY3RLZXlJZCA8dHlwZSAxMTQgW10gPHR5cGUgLTIwPj47IEF1dGhvcml0eUtleUlkIDx0eXBlIDExNSBbXSA8dHlwZSAtMjA+PjsgT0NTUFNlcnZlciA8dHlwZSAxMTYgW10gPHR5cGUgLTE2Pj47IElzc3VpbmdDZXJ0aWZpY2F0ZVVSTCA8dHlwZSAxMTcgW10gPHR5cGUgLTE2Pj47IEROU05hbWVzIDx0eXBlIDExOCBbXSA8dHlwZSAtMTY+PjsgRW1haWxBZGRyZXNzZXMgPHR5cGUgMTE5IFtdIDx0eXBlIC0xNj4+OyBJUEFkZHJlc3NlcyA8dHlwZSAxMjAgW10gPHR5cGUgMTIxICJuZXQuSVAiIDx0eXBlIDEyMiBbXSA8dHlwZSAtMjA+PgogZnVuYyAoaXAgPHR5cGUgMTIxPikgTWFyc2hhbFRleHQgKCkgKD8gPHR5cGUgMTIzIFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoaXAgPHR5cGUgMTIxPikgSXNMaW5rTG9jYWxNdWx0aWNhc3QgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGlwIDx0eXBlIDEyMT4pIElzTXVsdGljYXN0ICgpIDx0eXBlIC0xNT47CiBmdW5jIChpcCA8dHlwZSAxMjE+KSBUbzQgKCkgPHR5cGUgMTIxPjsKIGZ1bmMgKGlwIDx0eXBlIDEyNCAqPHR5cGUgMTIxPj4pIFVubWFyc2hhbFRleHQgKHRleHQgPHR5cGUgMTI1IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAoaXAgPHR5cGUgMTIxPikgVG8xNiAoKSA8dHlwZSAxMjE+OwogZnVuYyAoaXAgPHR5cGUgMTIxPikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChpcCA8dHlwZSAxMjE+KSBJc0xpbmtMb2NhbFVuaWNhc3QgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGlwIDx0eXBlIDEyMT4pIElzTG9vcGJhY2sgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGlwIDx0eXBlIDEyMT4pIEVxdWFsICh4IDx0eXBlIDEyMT4pIDx0eXBlIC0xNT47CiBmdW5jIChpcCA8dHlwZSAxMjE+KSBEZWZhdWx0TWFzayAoKSA8dHlwZSAxMjYgIm5ldC5JUE1hc2siIDx0eXBlIDEyNyBbXSA8dHlwZSAtMjA+PgogZnVuYyAobSA8dHlwZSAxMjY+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKG0gPHR5cGUgMTI2PikgU2l6ZSAoKSAob25lcyA8dHlwZSAtMTE+LCBiaXRzIDx0eXBlIC0xMT4pOwo+OwogZnVuYyAoaXAgPHR5cGUgMTIxPikgTWFzayAobWFzayA8dHlwZSAxMjY+KSA8dHlwZSAxMjE+OwogZnVuYyAoaXAgPHR5cGUgMTIxPikgSXNVbnNwZWNpZmllZCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgMTIxPikgSXNJbnRlcmZhY2VMb2NhbE11bHRpY2FzdCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgMTIxPikgSXNHbG9iYWxVbmljYXN0ICgpIDx0eXBlIC0xNT47Cj4+OyBQZXJtaXR0ZWRETlNEb21haW5zQ3JpdGljYWwgPHR5cGUgLTE1PjsgUGVybWl0dGVkRE5TRG9tYWlucyA8dHlwZSAxMjggW10gPHR5cGUgLTE2Pj47IENSTERpc3RyaWJ1dGlvblBvaW50cyA8dHlwZSAxMjkgW10gPHR5cGUgLTE2Pj47IFBvbGljeUlkZW50aWZpZXJzIDx0eXBlIDEzMCBbXSA8dHlwZSA3MT4+OyB9PgogZnVuYyAoYyA8dHlwZSAxMzEgKjx0eXBlIDEwPj4pIC5jcnlwdG8veDUwOS5zeXN0ZW1WZXJpZnkgKG9wdHMgPHR5cGUgMTMyICo8dHlwZSAxMzMgIlZlcmlmeU9wdGlvbnMiIDx0eXBlIDEzNCBzdHJ1Y3QgeyBETlNOYW1lIDx0eXBlIC0xNj47IEludGVybWVkaWF0ZXMgPHR5cGUgMTM1ICo8dHlwZSAyPj47IFJvb3RzIDx0eXBlIDEzNT47IEN1cnJlbnRUaW1lIDx0eXBlIDgwPjsgS2V5VXNhZ2VzIDx0eXBlIDEzNiBbXSA8dHlwZSAxMTI+PjsgfT4+PikgKGNoYWlucyA8dHlwZSAxMzcgW10gPHR5cGUgMTM4IFtdIDx0eXBlIDEzOSAqPHR5cGUgMTA+Pj4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDE0MCAqPHR5cGUgMTA+PikgLmNyeXB0by94NTA5LmlzVmFsaWQgKGNlcnRUeXBlIDx0eXBlIC0xMT4sIGN1cnJlbnRDaGFpbiA8dHlwZSAxNDEgW10gPHR5cGUgMTQyICo8dHlwZSAxMD4+Piwgb3B0cyA8dHlwZSAxNDMgKjx0eXBlIDEzMz4+KSA8dHlwZSAtMTk+OwogZnVuYyAoYyA8dHlwZSAxNDQgKjx0eXBlIDEwPj4pIFZlcmlmeSAob3B0cyA8dHlwZSAxMzM+KSAoY2hhaW5zIDx0eXBlIDE0NSBbXSA8dHlwZSAxNDYgW10gPHR5cGUgMTQ3ICo8dHlwZSAxMD4+Pj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMTQ4ICo8dHlwZSAxMD4+KSAuY3J5cHRvL3g1MDkuYnVpbGRDaGFpbnMgKGNhY2hlIDx0eXBlIDE0OSBtYXAgWzx0eXBlIC0xMT5dIDx0eXBlIDE1MCBbXSA8dHlwZSAxNTEgW10gPHR5cGUgMTUyICo8dHlwZSAxMD4+Pj4+LCBjdXJyZW50Q2hhaW4gPHR5cGUgMTUzIFtdIDx0eXBlIDE1NCAqPHR5cGUgMTA+Pj4sIG9wdHMgPHR5cGUgMTQzPikgKGNoYWlucyA8dHlwZSAxNTUgW10gPHR5cGUgMTU2IFtdIDx0eXBlIDE1NyAqPHR5cGUgMTA+Pj4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDE1OCAqPHR5cGUgMTA+PikgVmVyaWZ5SG9zdG5hbWUgKGggPHR5cGUgLTE2PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGMgPHR5cGUgMTU5ICo8dHlwZSAxMD4+KSBFcXVhbCAob3RoZXIgPHR5cGUgMTU5PikgPHR5cGUgLTE1PjsKIGZ1bmMgKGMgPHR5cGUgMTU5PikgQ2hlY2tTaWduYXR1cmVGcm9tIChwYXJlbnQgPHR5cGUgMTU5PikgKGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMTU5PikgQ2hlY2tTaWduYXR1cmUgKGFsZ28gPHR5cGUgMTg+LCBzaWduZWQgPHR5cGUgMTYwIFtdIDx0eXBlIC0yMD4+LCBzaWduYXR1cmUgPHR5cGUgMTYwPikgKGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMTU5PikgQ2hlY2tDUkxTaWduYXR1cmUgKGNybCA8dHlwZSAxNjEgKjx0eXBlIDE2MiAiY3J5cHRvL3g1MDkvcGtpeC5DZXJ0aWZpY2F0ZUxpc3QiIDx0eXBlIDE2MyBzdHJ1Y3QgeyBUQlNDZXJ0TGlzdCA8dHlwZSAxNjQgImNyeXB0by94NTA5L3BraXguVEJTQ2VydGlmaWNhdGVMaXN0IiA8dHlwZSAxNjUgc3RydWN0IHsgUmF3IDx0eXBlIDE2NiAiZW5jb2RpbmcvYXNuMS5SYXdDb250ZW50IiA8dHlwZSAxNjcgW10gPHR5cGUgLTIwPj4+OyBWZXJzaW9uIDx0eXBlIC0xMT4gImFzbjE6XCJvcHRpb25hbCxkZWZhdWx0OjJcIiI7IFNpZ25hdHVyZSA8dHlwZSAxNjggImNyeXB0by94NTA5L3BraXguQWxnb3JpdGhtSWRlbnRpZmllciIgPHR5cGUgMTY5IHN0cnVjdCB7IEFsZ29yaXRobSA8dHlwZSA3MT47IFBhcmFtZXRlcnMgPHR5cGUgMTcwICJlbmNvZGluZy9hc24xLlJhd1ZhbHVlIiA8dHlwZSAxNzEgc3RydWN0IHsgQ2xhc3MgPHR5cGUgLTExPjsgVGFnIDx0eXBlIC0xMT47IElzQ29tcG91bmQgPHR5cGUgLTE1PjsgQnl0ZXMgPHR5cGUgMTcyIFtdIDx0eXBlIC0yMD4+OyBGdWxsQnl0ZXMgPHR5cGUgMTczIFtdIDx0eXBlIC0yMD4+OyB9Pj4gImFzbjE6XCJvcHRpb25hbFwiIjsgfT4+OyBJc3N1ZXIgPHR5cGUgNzQ+OyBUaGlzVXBkYXRlIDx0eXBlIDgwPjsgTmV4dFVwZGF0ZSA8dHlwZSA4MD4gImFzbjE6XCJvcHRpb25hbFwiIjsgUmV2b2tlZENlcnRpZmljYXRlcyA8dHlwZSAxNzQgW10gPHR5cGUgMTc1ICJjcnlwdG8veDUwOS9wa2l4LlJldm9rZWRDZXJ0aWZpY2F0ZSIgPHR5cGUgMTc2IHN0cnVjdCB7IFNlcmlhbE51bWJlciA8dHlwZSAyMT47IFJldm9jYXRpb25UaW1lIDx0eXBlIDgwPjsgRXh0ZW5zaW9ucyA8dHlwZSAxNzcgW10gPHR5cGUgMTA3Pj4gImFzbjE6XCJvcHRpb25hbFwiIjsgfT4+PiAiYXNuMTpcIm9wdGlvbmFsXCIiOyBFeHRlbnNpb25zIDx0eXBlIDE3OCBbXSA8dHlwZSAxMDc+PiAiYXNuMTpcInRhZzowLG9wdGlvbmFsLGV4cGxpY2l0XCIiOyB9Pj47IFNpZ25hdHVyZUFsZ29yaXRobSA8dHlwZSAxNjg+OyBTaWduYXR1cmVWYWx1ZSA8dHlwZSAxNzkgImVuY29kaW5nL2FzbjEuQml0U3RyaW5nIiA8dHlwZSAxODAgc3RydWN0IHsgQnl0ZXMgPHR5cGUgMTgxIFtdIDx0eXBlIC0yMD4+OyBCaXRMZW5ndGggPHR5cGUgLTExPjsgfT4KIGZ1bmMgKGIgPHR5cGUgMTc5PikgQXQgKGkgPHR5cGUgLTExPikgPHR5cGUgLTExPjsKIGZ1bmMgKGIgPHR5cGUgMTc5PikgUmlnaHRBbGlnbiAoKSA8dHlwZSAxODIgW10gPHR5cGUgLTIwPj47Cj47IH0+CiBmdW5jIChjZXJ0TGlzdCA8dHlwZSAxODMgKjx0eXBlIDE2Mj4+KSBIYXNFeHBpcmVkIChub3cgPHR5cGUgODA+KSA8dHlwZSAtMTU+Owo+PikgKGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMTU5PikgQ3JlYXRlQ1JMIChyYW5kIDx0eXBlIDE4NCAiaW8uUmVhZGVyIiA8dHlwZSAxODUgaW50ZXJmYWNlIHsgUmVhZCAocCA8dHlwZSAxODYgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+LCBwcml2IDx0eXBlIDE4NyBpbnRlcmZhY2UgeyB9PiwgcmV2b2tlZENlcnRzIDx0eXBlIDE4OCBbXSA8dHlwZSAxNzU+Piwgbm93IDx0eXBlIDgwPiwgZXhwaXJ5IDx0eXBlIDgwPikgKGNybEJ5dGVzIDx0eXBlIDE4OSBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOwo+Pj47IH0+CiBmdW5jIChzIDx0eXBlIDEzNT4pIC5jcnlwdG8veDUwOS5maW5kVmVyaWZpZWRQYXJlbnRzIChjZXJ0IDx0eXBlIDE5MCAqPHR5cGUgMTA+PikgKHBhcmVudHMgPHR5cGUgMTkxIFtdIDx0eXBlIC0xMT4+LCBlcnJDZXJ0IDx0eXBlIDE5MiAqPHR5cGUgMTA+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAocyA8dHlwZSAxMzU+KSBBZGRDZXJ0IChjZXJ0IDx0eXBlIDE5MyAqPHR5cGUgMTA+Pik7CiBmdW5jIChzIDx0eXBlIDEzNT4pIEFwcGVuZENlcnRzRnJvbVBFTSAocGVtQ2VydHMgPHR5cGUgMTk0IFtdIDx0eXBlIC0yMD4+KSAob2sgPHR5cGUgLTE1Pik7CiBmdW5jIChzIDx0eXBlIDEzNT4pIFN1YmplY3RzICgpIChyZXMgPHR5cGUgMTk1IFtdIDx0eXBlIDE5NiBbXSA8dHlwZSAtMjA+Pj4pOwo+Owp0eXBlIDx0eXBlIDEwPjsKdHlwZSA8dHlwZSAxOTcgIkNlcnRpZmljYXRlSW52YWxpZEVycm9yIiA8dHlwZSAxOTggc3RydWN0IHsgQ2VydCA8dHlwZSAxOTkgKjx0eXBlIDEwPj47IFJlYXNvbiA8dHlwZSAxPjsgfT4KIGZ1bmMgKGUgPHR5cGUgMTk3PikgRXJyb3IgKCkgPHR5cGUgLTE2PjsKPjsKdHlwZSA8dHlwZSAyMDAgIkNlcnRpZmljYXRlUmVxdWVzdCIgPHR5cGUgMjAxIHN0cnVjdCB7IFJhdyA8dHlwZSAyMDIgW10gPHR5cGUgLTIwPj47IFJhd1RCU0NlcnRpZmljYXRlUmVxdWVzdCA8dHlwZSAyMDMgW10gPHR5cGUgLTIwPj47IFJhd1N1YmplY3RQdWJsaWNLZXlJbmZvIDx0eXBlIDIwNCBbXSA8dHlwZSAtMjA+PjsgUmF3U3ViamVjdCA8dHlwZSAyMDUgW10gPHR5cGUgLTIwPj47IFZlcnNpb24gPHR5cGUgLTExPjsgU2lnbmF0dXJlIDx0eXBlIDIwNiBbXSA8dHlwZSAtMjA+PjsgU2lnbmF0dXJlQWxnb3JpdGhtIDx0eXBlIDE4PjsgUHVibGljS2V5QWxnb3JpdGhtIDx0eXBlIDE5PjsgUHVibGljS2V5IDx0eXBlIDIwNyBpbnRlcmZhY2UgeyB9PjsgU3ViamVjdCA8dHlwZSA2Mz47IEF0dHJpYnV0ZXMgPHR5cGUgMjA4IFtdIDx0eXBlIDIwOSAiY3J5cHRvL3g1MDkvcGtpeC5BdHRyaWJ1dGVUeXBlQW5kVmFsdWVTRVQiIDx0eXBlIDIxMCBzdHJ1Y3QgeyBUeXBlIDx0eXBlIDcxPjsgVmFsdWUgPHR5cGUgMjExIFtdIDx0eXBlIDIxMiBbXSA8dHlwZSA2OT4+PiAiYXNuMTpcInNldFwiIjsgfT4+PjsgRXh0ZW5zaW9ucyA8dHlwZSAyMTMgW10gPHR5cGUgMTA3Pj47IEV4dHJhRXh0ZW5zaW9ucyA8dHlwZSAyMTQgW10gPHR5cGUgMTA3Pj47IEROU05hbWVzIDx0eXBlIDIxNSBbXSA8dHlwZSAtMTY+PjsgRW1haWxBZGRyZXNzZXMgPHR5cGUgMjE2IFtdIDx0eXBlIC0xNj4+OyBJUEFkZHJlc3NlcyA8dHlwZSAyMTcgW10gPHR5cGUgMTIxPj47IH0+PjsKdHlwZSA8dHlwZSAyMTggIkNvbnN0cmFpbnRWaW9sYXRpb25FcnJvciIgPHR5cGUgMjE5IHN0cnVjdCB7IH0+CiBmdW5jICg/IDx0eXBlIDIxOD4pIEVycm9yICgpIDx0eXBlIC0xNj47Cj47CmZ1bmMgQ3JlYXRlQ2VydGlmaWNhdGUgKHJhbmQgPHR5cGUgMTg0PiwgdGVtcGxhdGUgPHR5cGUgMTU5PiwgcGFyZW50IDx0eXBlIDE1OT4sIHB1YiA8dHlwZSAyMjAgaW50ZXJmYWNlIHsgfT4sIHByaXYgPHR5cGUgMjIxIGludGVyZmFjZSB7IH0+KSAoY2VydCA8dHlwZSAyMjIgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKZnVuYyBDcmVhdGVDZXJ0aWZpY2F0ZVJlcXVlc3QgKHJhbmQgPHR5cGUgMTg0PiwgdGVtcGxhdGUgPHR5cGUgMjIzICo8dHlwZSAyMDA+PiwgcHJpdiA8dHlwZSAyMjQgaW50ZXJmYWNlIHsgfT4pIChjc3IgPHR5cGUgMjI1IFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7CmNvbnN0IERTQSA8dHlwZSAxOT4gPSAyIDsKY29uc3QgRFNBV2l0aFNIQTEgPHR5cGUgMTg+ID0gNyA7CmNvbnN0IERTQVdpdGhTSEEyNTYgPHR5cGUgMTg+ID0gOCA7CmZ1bmMgRGVjcnlwdFBFTUJsb2NrIChiIDx0eXBlIDIyNiAqPHR5cGUgMjI3ICJlbmNvZGluZy9wZW0uQmxvY2siIDx0eXBlIDIyOCBzdHJ1Y3QgeyBUeXBlIDx0eXBlIC0xNj47IEhlYWRlcnMgPHR5cGUgMjI5IG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgLTE2Pj47IEJ5dGVzIDx0eXBlIDIzMCBbXSA8dHlwZSAtMjA+PjsgfT4+PiwgcGFzc3dvcmQgPHR5cGUgMjMxIFtdIDx0eXBlIC0yMD4+KSAoPyA8dHlwZSAyMzIgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CmNvbnN0IEVDRFNBIDx0eXBlIDE5PiA9IDMgOwpjb25zdCBFQ0RTQVdpdGhTSEExIDx0eXBlIDE4PiA9IDkgOwpjb25zdCBFQ0RTQVdpdGhTSEEyNTYgPHR5cGUgMTg+ID0gMTAgOwpjb25zdCBFQ0RTQVdpdGhTSEEzODQgPHR5cGUgMTg+ID0gMTEgOwpjb25zdCBFQ0RTQVdpdGhTSEE1MTIgPHR5cGUgMTg+ID0gMTIgOwpmdW5jIEVuY3J5cHRQRU1CbG9jayAocmFuZCA8dHlwZSAxODQ+LCBibG9ja1R5cGUgPHR5cGUgLTE2PiwgZGF0YSA8dHlwZSAyMzMgW10gPHR5cGUgLTIwPj4sIHBhc3N3b3JkIDx0eXBlIDIzMz4sIGFsZyA8dHlwZSAyMzQgIlBFTUNpcGhlciIgPHR5cGUgLTExPj4pICg/IDx0eXBlIDIyNj4sID8gPHR5cGUgLTE5Pik7CnZhciBFcnJVbnN1cHBvcnRlZEFsZ29yaXRobSA8dHlwZSAtMTk+Owpjb25zdCBFeHBpcmVkIDx0eXBlIDE+ID0gMSA7CnR5cGUgPHR5cGUgMTEyPjsKY29uc3QgRXh0S2V5VXNhZ2VBbnkgPHR5cGUgMTEyPiA9IDAgOwpjb25zdCBFeHRLZXlVc2FnZUNsaWVudEF1dGggPHR5cGUgMTEyPiA9IDIgOwpjb25zdCBFeHRLZXlVc2FnZUNvZGVTaWduaW5nIDx0eXBlIDExMj4gPSAzIDsKY29uc3QgRXh0S2V5VXNhZ2VFbWFpbFByb3RlY3Rpb24gPHR5cGUgMTEyPiA9IDQgOwpjb25zdCBFeHRLZXlVc2FnZUlQU0VDRW5kU3lzdGVtIDx0eXBlIDExMj4gPSA1IDsKY29uc3QgRXh0S2V5VXNhZ2VJUFNFQ1R1bm5lbCA8dHlwZSAxMTI+ID0gNiA7CmNvbnN0IEV4dEtleVVzYWdlSVBTRUNVc2VyIDx0eXBlIDExMj4gPSA3IDsKY29uc3QgRXh0S2V5VXNhZ2VNaWNyb3NvZnRTZXJ2ZXJHYXRlZENyeXB0byA8dHlwZSAxMTI+ID0gMTAgOwpjb25zdCBFeHRLZXlVc2FnZU5ldHNjYXBlU2VydmVyR2F0ZWRDcnlwdG8gPHR5cGUgMTEyPiA9IDExIDsKY29uc3QgRXh0S2V5VXNhZ2VPQ1NQU2lnbmluZyA8dHlwZSAxMTI+ID0gOSA7CmNvbnN0IEV4dEtleVVzYWdlU2VydmVyQXV0aCA8dHlwZSAxMTI+ID0gMSA7CmNvbnN0IEV4dEtleVVzYWdlVGltZVN0YW1waW5nIDx0eXBlIDExMj4gPSA4IDsKdHlwZSA8dHlwZSAyMzUgIkhvc3RuYW1lRXJyb3IiIDx0eXBlIDIzNiBzdHJ1Y3QgeyBDZXJ0aWZpY2F0ZSA8dHlwZSAyMzcgKjx0eXBlIDEwPj47IEhvc3QgPHR5cGUgLTE2PjsgfT4KIGZ1bmMgKGggPHR5cGUgMjM1PikgRXJyb3IgKCkgPHR5cGUgLTE2PjsKPjsKY29uc3QgSW5jb21wYXRpYmxlVXNhZ2UgPHR5cGUgMT4gPSA0IDsKdmFyIEluY29ycmVjdFBhc3N3b3JkRXJyb3IgPHR5cGUgLTE5PjsKdHlwZSA8dHlwZSAxPjsKZnVuYyBJc0VuY3J5cHRlZFBFTUJsb2NrIChiIDx0eXBlIDIyNj4pIDx0eXBlIC0xNT47CnR5cGUgPHR5cGUgMTA1PjsKY29uc3QgS2V5VXNhZ2VDUkxTaWduIDx0eXBlIDEwNT4gPSA2NCA7CmNvbnN0IEtleVVzYWdlQ2VydFNpZ24gPHR5cGUgMTA1PiA9IDMyIDsKY29uc3QgS2V5VXNhZ2VDb250ZW50Q29tbWl0bWVudCA8dHlwZSAxMDU+ID0gMiA7CmNvbnN0IEtleVVzYWdlRGF0YUVuY2lwaGVybWVudCA8dHlwZSAxMDU+ID0gOCA7CmNvbnN0IEtleVVzYWdlRGVjaXBoZXJPbmx5IDx0eXBlIDEwNT4gPSAyNTYgOwpjb25zdCBLZXlVc2FnZURpZ2l0YWxTaWduYXR1cmUgPHR5cGUgMTA1PiA9IDEgOwpjb25zdCBLZXlVc2FnZUVuY2lwaGVyT25seSA8dHlwZSAxMDU+ID0gMTI4IDsKY29uc3QgS2V5VXNhZ2VLZXlBZ3JlZW1lbnQgPHR5cGUgMTA1PiA9IDE2IDsKY29uc3QgS2V5VXNhZ2VLZXlFbmNpcGhlcm1lbnQgPHR5cGUgMTA1PiA9IDQgOwpjb25zdCBNRDJXaXRoUlNBIDx0eXBlIDE4PiA9IDEgOwpjb25zdCBNRDVXaXRoUlNBIDx0eXBlIDE4PiA9IDIgOwpmdW5jIE1hcnNoYWxFQ1ByaXZhdGVLZXkgKGtleSA8dHlwZSAyMzggKjx0eXBlIDIzOSAiY3J5cHRvL2VjZHNhLlByaXZhdGVLZXkiIDx0eXBlIDI0MCBzdHJ1Y3QgeyA/IDx0eXBlIDI0MSAiY3J5cHRvL2VjZHNhLlB1YmxpY0tleSIgPHR5cGUgMjQyIHN0cnVjdCB7ID8gPHR5cGUgMjQzICJjcnlwdG8vZWxsaXB0aWMuQ3VydmUiIDx0eXBlIDI0NCBpbnRlcmZhY2UgeyBQYXJhbXMgKCkgPHR5cGUgMjQ1ICo8dHlwZSAyNDYgImNyeXB0by9lbGxpcHRpYy5DdXJ2ZVBhcmFtcyIgPHR5cGUgMjQ3IHN0cnVjdCB7IFAgPHR5cGUgMjE+OyBOIDx0eXBlIDIxPjsgQiA8dHlwZSAyMT47IEd4IDx0eXBlIDIxPjsgR3kgPHR5cGUgMjE+OyBCaXRTaXplIDx0eXBlIC0xMT47IH0+CiBmdW5jIChjdXJ2ZSA8dHlwZSAyNDggKjx0eXBlIDI0Nj4+KSBQYXJhbXMgKCkgPHR5cGUgMjQ4PjsKIGZ1bmMgKGN1cnZlIDx0eXBlIDI0OD4pIC5jcnlwdG8vZWxsaXB0aWMuYWRkSmFjb2JpYW4gKHgxIDx0eXBlIDIxPiwgeTEgPHR5cGUgMjE+LCB6MSA8dHlwZSAyMT4sIHgyIDx0eXBlIDIxPiwgeTIgPHR5cGUgMjE+LCB6MiA8dHlwZSAyMT4pICg/IDx0eXBlIDIxPiwgPyA8dHlwZSAyMT4sID8gPHR5cGUgMjE+KTsKIGZ1bmMgKGN1cnZlIDx0eXBlIDI0OD4pIFNjYWxhck11bHQgKEJ4IDx0eXBlIDIxPiwgQnkgPHR5cGUgMjE+LCBrIDx0eXBlIDI0OSBbXSA8dHlwZSAtMjA+PikgKD8gPHR5cGUgMjE+LCA/IDx0eXBlIDIxPik7CiBmdW5jIChjdXJ2ZSA8dHlwZSAyNDg+KSBEb3VibGUgKHgxIDx0eXBlIDIxPiwgeTEgPHR5cGUgMjE+KSAoPyA8dHlwZSAyMT4sID8gPHR5cGUgMjE+KTsKIGZ1bmMgKGN1cnZlIDx0eXBlIDI0OD4pIFNjYWxhckJhc2VNdWx0IChrIDx0eXBlIDI1MCBbXSA8dHlwZSAtMjA+PikgKD8gPHR5cGUgMjE+LCA/IDx0eXBlIDIxPik7CiBmdW5jIChjdXJ2ZSA8dHlwZSAyNDg+KSBBZGQgKHgxIDx0eXBlIDIxPiwgeTEgPHR5cGUgMjE+LCB4MiA8dHlwZSAyMT4sIHkyIDx0eXBlIDIxPikgKD8gPHR5cGUgMjE+LCA/IDx0eXBlIDIxPik7CiBmdW5jIChjdXJ2ZSA8dHlwZSAyNDg+KSBJc09uQ3VydmUgKHggPHR5cGUgMjE+LCB5IDx0eXBlIDIxPikgPHR5cGUgLTE1PjsKIGZ1bmMgKGN1cnZlIDx0eXBlIDI0OD4pIC5jcnlwdG8vZWxsaXB0aWMuZG91YmxlSmFjb2JpYW4gKHggPHR5cGUgMjE+LCB5IDx0eXBlIDIxPiwgeiA8dHlwZSAyMT4pICg/IDx0eXBlIDIxPiwgPyA8dHlwZSAyMT4sID8gPHR5cGUgMjE+KTsKIGZ1bmMgKGN1cnZlIDx0eXBlIDI0OD4pIC5jcnlwdG8vZWxsaXB0aWMuYWZmaW5lRnJvbUphY29iaWFuICh4IDx0eXBlIDIxPiwgeSA8dHlwZSAyMT4sIHogPHR5cGUgMjE+KSAoeE91dCA8dHlwZSAyMT4sIHlPdXQgPHR5cGUgMjE+KTsKPj47IElzT25DdXJ2ZSAoeCA8dHlwZSAyMT4sIHkgPHR5cGUgMjE+KSA8dHlwZSAtMTU+OyBBZGQgKHgxIDx0eXBlIDIxPiwgeTEgPHR5cGUgMjE+LCB4MiA8dHlwZSAyMT4sIHkyIDx0eXBlIDIxPikgKHggPHR5cGUgMjE+LCB5IDx0eXBlIDIxPik7IERvdWJsZSAoeDEgPHR5cGUgMjE+LCB5MSA8dHlwZSAyMT4pICh4IDx0eXBlIDIxPiwgeSA8dHlwZSAyMT4pOyBTY2FsYXJNdWx0ICh4MSA8dHlwZSAyMT4sIHkxIDx0eXBlIDIxPiwgayA8dHlwZSAyNTEgW10gPHR5cGUgLTIwPj4pICh4IDx0eXBlIDIxPiwgeSA8dHlwZSAyMT4pOyBTY2FsYXJCYXNlTXVsdCAoayA8dHlwZSAyNTIgW10gPHR5cGUgLTIwPj4pICh4IDx0eXBlIDIxPiwgeSA8dHlwZSAyMT4pOyB9Pj47IFggPHR5cGUgMjE+OyBZIDx0eXBlIDIxPjsgfT4+OyBEIDx0eXBlIDIxPjsgfT4KIGZ1bmMgKHByaXYgPHR5cGUgMjUzICo8dHlwZSAyMzk+PikgUHVibGljICgpIDx0eXBlIDI1NCAiY3J5cHRvLlB1YmxpY0tleSIgPHR5cGUgMjU1IGludGVyZmFjZSB7IH0+PjsKIGZ1bmMgKHByaXYgPHR5cGUgMjUzPikgU2lnbiAocmFuZCA8dHlwZSAxODQ+LCBtc2cgPHR5cGUgMjU2IFtdIDx0eXBlIC0yMD4+LCBvcHRzIDx0eXBlIDI1NyAiY3J5cHRvLlNpZ25lck9wdHMiIDx0eXBlIDI1OCBpbnRlcmZhY2UgeyBIYXNoRnVuYyAoKSA8dHlwZSAyNTkgImNyeXB0by5IYXNoIiA8dHlwZSAtMTI+CiBmdW5jIChoIDx0eXBlIDI1OT4pIEhhc2hGdW5jICgpIDx0eXBlIDI1OT47CiBmdW5jIChoIDx0eXBlIDI1OT4pIEF2YWlsYWJsZSAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaCA8dHlwZSAyNTk+KSBOZXcgKCkgPHR5cGUgMjYwICJoYXNoLkhhc2giICJoYXNoIiA8dHlwZSAyNjEgaW50ZXJmYWNlIHsgPyA8dHlwZSAyNjIgImlvLldyaXRlciIgPHR5cGUgMjYzIGludGVyZmFjZSB7IFdyaXRlIChwIDx0eXBlIDI2NCBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj47IFN1bSAoYiA8dHlwZSAyNjUgW10gPHR5cGUgLTIwPj4pIDx0eXBlIDI2NiBbXSA8dHlwZSAtMjA+PjsgUmVzZXQgKCk7IFNpemUgKCkgPHR5cGUgLTExPjsgQmxvY2tTaXplICgpIDx0eXBlIC0xMT47IH0+PjsKIGZ1bmMgKGggPHR5cGUgMjU5PikgU2l6ZSAoKSA8dHlwZSAtMTE+Owo+OyB9Pj4pICg/IDx0eXBlIDI2NyBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKPj4pICg/IDx0eXBlIDI2OCBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKZnVuYyBNYXJzaGFsUEtDUzFQcml2YXRlS2V5IChrZXkgPHR5cGUgMjY5ICo8dHlwZSAyNzAgImNyeXB0by9yc2EuUHJpdmF0ZUtleSIgPHR5cGUgMjcxIHN0cnVjdCB7ID8gPHR5cGUgMjcyICJjcnlwdG8vcnNhLlB1YmxpY0tleSIgPHR5cGUgMjczIHN0cnVjdCB7IE4gPHR5cGUgMjE+OyBFIDx0eXBlIC0xMT47IH0+PjsgRCA8dHlwZSAyMT47IFByaW1lcyA8dHlwZSAyNzQgW10gPHR5cGUgMjE+PjsgUHJlY29tcHV0ZWQgPHR5cGUgMjc1ICJjcnlwdG8vcnNhLlByZWNvbXB1dGVkVmFsdWVzIiA8dHlwZSAyNzYgc3RydWN0IHsgRHAgPHR5cGUgMjE+OyBEcSA8dHlwZSAyMT47IFFpbnYgPHR5cGUgMjE+OyBDUlRWYWx1ZXMgPHR5cGUgMjc3IFtdIDx0eXBlIDI3OCAiY3J5cHRvL3JzYS5DUlRWYWx1ZSIgPHR5cGUgMjc5IHN0cnVjdCB7IEV4cCA8dHlwZSAyMT47IENvZWZmIDx0eXBlIDIxPjsgUiA8dHlwZSAyMT47IH0+Pj47IH0+PjsgfT4KIGZ1bmMgKHByaXYgPHR5cGUgMjgwICo8dHlwZSAyNzA+PikgUHVibGljICgpIDx0eXBlIDI1ND47CiBmdW5jIChwcml2IDx0eXBlIDI4MD4pIFByZWNvbXB1dGUgKCk7CiBmdW5jIChwcml2IDx0eXBlIDI4MD4pIFZhbGlkYXRlICgpIDx0eXBlIC0xOT47CiBmdW5jIChwcml2IDx0eXBlIDI4MD4pIFNpZ24gKHJhbmQgPHR5cGUgMTg0PiwgbXNnIDx0eXBlIDI4MSBbXSA8dHlwZSAtMjA+Piwgb3B0cyA8dHlwZSAyNTc+KSAoPyA8dHlwZSAyODIgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7Cj4+KSA8dHlwZSAyODMgW10gPHR5cGUgLTIwPj47CmZ1bmMgTWFyc2hhbFBLSVhQdWJsaWNLZXkgKHB1YiA8dHlwZSAyODQgaW50ZXJmYWNlIHsgfT4pICg/IDx0eXBlIDI4NSBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKZnVuYyBOZXdDZXJ0UG9vbCAoKSA8dHlwZSAxMzU+Owpjb25zdCBOb3RBdXRob3JpemVkVG9TaWduIDx0eXBlIDE+ID0gMCA7CnR5cGUgPHR5cGUgMjM0PjsKY29uc3QgUEVNQ2lwaGVyM0RFUyA8dHlwZSAyMzQ+ID0gMiA7CmNvbnN0IFBFTUNpcGhlckFFUzEyOCA8dHlwZSAyMzQ+ID0gMyA7CmNvbnN0IFBFTUNpcGhlckFFUzE5MiA8dHlwZSAyMzQ+ID0gNCA7CmNvbnN0IFBFTUNpcGhlckFFUzI1NiA8dHlwZSAyMzQ+ID0gNSA7CmNvbnN0IFBFTUNpcGhlckRFUyA8dHlwZSAyMzQ+ID0gMSA7CmZ1bmMgUGFyc2VDUkwgKGNybEJ5dGVzIDx0eXBlIDI4NiBbXSA8dHlwZSAtMjA+PikgKGNlcnRMaXN0IDx0eXBlIDE2MT4sIGVyciA8dHlwZSAtMTk+KTsKZnVuYyBQYXJzZUNlcnRpZmljYXRlIChhc24xRGF0YSA8dHlwZSAyODcgW10gPHR5cGUgLTIwPj4pICg/IDx0eXBlIDE1OT4sID8gPHR5cGUgLTE5Pik7CmZ1bmMgUGFyc2VDZXJ0aWZpY2F0ZVJlcXVlc3QgKGFzbjFEYXRhIDx0eXBlIDI4OCBbXSA8dHlwZSAtMjA+PikgKD8gPHR5cGUgMjIzPiwgPyA8dHlwZSAtMTk+KTsKZnVuYyBQYXJzZUNlcnRpZmljYXRlcyAoYXNuMURhdGEgPHR5cGUgMjg5IFtdIDx0eXBlIC0yMD4+KSAoPyA8dHlwZSAyOTAgW10gPHR5cGUgMTU5Pj4sID8gPHR5cGUgLTE5Pik7CmZ1bmMgUGFyc2VERVJDUkwgKGRlckJ5dGVzIDx0eXBlIDI5MSBbXSA8dHlwZSAtMjA+PikgKGNlcnRMaXN0IDx0eXBlIDE2MT4sIGVyciA8dHlwZSAtMTk+KTsKZnVuYyBQYXJzZUVDUHJpdmF0ZUtleSAoZGVyIDx0eXBlIDI5MiBbXSA8dHlwZSAtMjA+PikgKGtleSA8dHlwZSAyMzg+LCBlcnIgPHR5cGUgLTE5Pik7CmZ1bmMgUGFyc2VQS0NTMVByaXZhdGVLZXkgKGRlciA8dHlwZSAyOTMgW10gPHR5cGUgLTIwPj4pIChrZXkgPHR5cGUgMjY5PiwgZXJyIDx0eXBlIC0xOT4pOwpmdW5jIFBhcnNlUEtDUzhQcml2YXRlS2V5IChkZXIgPHR5cGUgMjk0IFtdIDx0eXBlIC0yMD4+KSAoa2V5IDx0eXBlIDI5NSBpbnRlcmZhY2UgeyB9PiwgZXJyIDx0eXBlIC0xOT4pOwpmdW5jIFBhcnNlUEtJWFB1YmxpY0tleSAoZGVyQnl0ZXMgPHR5cGUgMjk2IFtdIDx0eXBlIC0yMD4+KSAocHViIDx0eXBlIDI5NyBpbnRlcmZhY2UgeyB9PiwgZXJyIDx0eXBlIC0xOT4pOwp0eXBlIDx0eXBlIDE5PjsKY29uc3QgUlNBIDx0eXBlIDE5PiA9IDEgOwpjb25zdCBTSEExV2l0aFJTQSA8dHlwZSAxOD4gPSAzIDsKY29uc3QgU0hBMjU2V2l0aFJTQSA8dHlwZSAxOD4gPSA0IDsKY29uc3QgU0hBMzg0V2l0aFJTQSA8dHlwZSAxOD4gPSA1IDsKY29uc3QgU0hBNTEyV2l0aFJTQSA8dHlwZSAxOD4gPSA2IDsKdHlwZSA8dHlwZSAxOD47CnR5cGUgPHR5cGUgMjk4ICJTeXN0ZW1Sb290c0Vycm9yIiA8dHlwZSAyOTkgc3RydWN0IHsgfT4KIGZ1bmMgKD8gPHR5cGUgMjk4PikgRXJyb3IgKCkgPHR5cGUgLTE2PjsKPjsKY29uc3QgVG9vTWFueUludGVybWVkaWF0ZXMgPHR5cGUgMT4gPSAzIDsKdHlwZSA8dHlwZSAzMDAgIlVuaGFuZGxlZENyaXRpY2FsRXh0ZW5zaW9uIiA8dHlwZSAzMDEgc3RydWN0IHsgfT4KIGZ1bmMgKGggPHR5cGUgMzAwPikgRXJyb3IgKCkgPHR5cGUgLTE2PjsKPjsKdHlwZSA8dHlwZSAzMDIgIlVua25vd25BdXRob3JpdHlFcnJvciIgPHR5cGUgMzAzIHN0cnVjdCB7IC5jcnlwdG8veDUwOS5jZXJ0IDx0eXBlIDMwNCAqPHR5cGUgMTA+PjsgLmNyeXB0by94NTA5LmhpbnRFcnIgPHR5cGUgLTE5PjsgLmNyeXB0by94NTA5LmhpbnRDZXJ0IDx0eXBlIDMwNSAqPHR5cGUgMTA+PjsgfT4KIGZ1bmMgKGUgPHR5cGUgMzAyPikgRXJyb3IgKCkgPHR5cGUgLTE2PjsKPjsKY29uc3QgVW5rbm93blB1YmxpY0tleUFsZ29yaXRobSA8dHlwZSAxOT4gPSAwIDsKY29uc3QgVW5rbm93blNpZ25hdHVyZUFsZ29yaXRobSA8dHlwZSAxOD4gPSAwIDsKdHlwZSA8dHlwZSAxMzM+OwpjaGVja3N1bSBDOTdCODg3NjIwQ0IwMTM5N0RBQTQ0MTRDM0I3NTM5REFGMjI2NEIxOwoALnN5bXRhYgAuc3RydGFiAC5zaHN0cnRhYgAuZ29fZXhwb3J0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAABAAAAAAAAAAAAAAA0AAAAZHUAAAAAAAAAAAAAAQAAAAAAAAARAAAAAwAAAAAAAAAAAAAAmHUAACYAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAMB1AAAgAAAABAAAAAIAAAAEAAAAEAAAAAkAAAADAAAAAAAAAAAAAADgdQAAAQAAAAAAAAAAAAAAAQAAAAAAAAA=