f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAAB4JQAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIGRzYTsKcGtncGF0aCBjcnlwdG8vZHNhOwpwcmlvcml0eSA4OwppbXBvcnQgZXJyb3JzIGVycm9ycyAiZXJyb3JzIjsKaW1wb3J0IGlvIGlvICJpbyI7CmltcG9ydCBiaWcgbWF0aC9iaWcgIm1hdGgvYmlnIjsKaW5pdCBkc2EgY3J5cHRvX2RzYS4uaW1wb3J0IDggbWF0aCBtYXRoLi5pbXBvcnQgMSBydW50aW1lIHJ1bnRpbWUuLmltcG9ydCAxIHVuaWNvZGUgdW5pY29kZS4uaW1wb3J0IDEgc3RyY29udiBzdHJjb252Li5pbXBvcnQgMiBzeW5jIHN5bmMuLmltcG9ydCAyIGlvIGlvLi5pbXBvcnQgMyByYW5kIG1hdGhfcmFuZC4uaW1wb3J0IDMgcmVmbGVjdCByZWZsZWN0Li5pbXBvcnQgMyBzeXNjYWxsIHN5c2NhbGwuLmltcG9ydCAzIGJpbmFyeSBlbmNvZGluZ19iaW5hcnkuLmltcG9ydCA0IHRpbWUgdGltZS4uaW1wb3J0IDQgb3Mgb3MuLmltcG9ydCA1IGZtdCBmbXQuLmltcG9ydCA2IGJpZyBtYXRoX2JpZy4uaW1wb3J0IDc7CnZhciBFcnJJbnZhbGlkUHVibGljS2V5IDx0eXBlIC0xOT47CmZ1bmMgR2VuZXJhdGVLZXkgKHByaXYgPHR5cGUgMSAqPHR5cGUgMiAiUHJpdmF0ZUtleSIgPHR5cGUgMyBzdHJ1Y3QgeyA/IDx0eXBlIDQgIlB1YmxpY0tleSIgPHR5cGUgNSBzdHJ1Y3QgeyA/IDx0eXBlIDYgIlBhcmFtZXRlcnMiIDx0eXBlIDcgc3RydWN0IHsgUCA8dHlwZSA4ICo8dHlwZSA5ICJtYXRoL2JpZy5JbnQiIDx0eXBlIDEwIHN0cnVjdCB7IC5tYXRoL2JpZy5uZWcgPHR5cGUgLTE1PjsgLm1hdGgvYmlnLmFicyA8dHlwZSAxMSAiLm1hdGgvYmlnLm5hdCIgPHR5cGUgMTIgW10gPHR5cGUgMTMgIm1hdGgvYmlnLldvcmQiIDx0eXBlIC0xMz4+PgogZnVuYyAoeiA8dHlwZSAxMT4pIC5tYXRoL2JpZy5tdWwgKHggPHR5cGUgMTE+LCB5IDx0eXBlIDExPikgPHR5cGUgMTE+OwogZnVuYyAoeiA8dHlwZSAxMT4pIC5tYXRoL2JpZy5zY2FuIChyIDx0eXBlIDE0ICJpby5SdW5lU2Nhbm5lciIgPHR5cGUgMTUgaW50ZXJmYWNlIHsgPyA8dHlwZSAxNiAiaW8uUnVuZVJlYWRlciIgPHR5cGUgMTcgaW50ZXJmYWNlIHsgUmVhZFJ1bmUgKCkgKHIgPHR5cGUgLTIxPiwgc2l6ZSA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PjsgVW5yZWFkUnVuZSAoKSA8dHlwZSAtMTk+OyB9Pj4sIGJhc2UgPHR5cGUgLTExPikgKD8gPHR5cGUgMTE+LCA/IDx0eXBlIC0xMT4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh6IDx0eXBlIDExPikgLm1hdGgvYmlnLmFkZCAoeCA8dHlwZSAxMT4sIHkgPHR5cGUgMTE+KSA8dHlwZSAxMT47CiBmdW5jICh6IDx0eXBlIDExPikgLm1hdGgvYmlnLmFuZE5vdCAoeCA8dHlwZSAxMT4sIHkgPHR5cGUgMTE+KSA8dHlwZSAxMT47CiBmdW5jICh6IDx0eXBlIDExPikgLm1hdGgvYmlnLnNldEJpdCAoeCA8dHlwZSAxMT4sIGkgPHR5cGUgLTEyPiwgYiA8dHlwZSAtMTI+KSA8dHlwZSAxMT47CiBmdW5jICh6IDx0eXBlIDExPikgLm1hdGgvYmlnLnN1YiAoeCA8dHlwZSAxMT4sIHkgPHR5cGUgMTE+KSA8dHlwZSAxMT47CiBmdW5jICh4IDx0eXBlIDExPikgLm1hdGgvYmlnLm1vZFcgKGQgPHR5cGUgMTM+KSAociA8dHlwZSAxMz4pOwogZnVuYyAobiA8dHlwZSAxMT4pIC5tYXRoL2JpZy5wcm9iYWJseVByaW1lIChyZXBzIDx0eXBlIC0xMT4pIDx0eXBlIC0xNT47CiBmdW5jIChxIDx0eXBlIDExPikgLm1hdGgvYmlnLmNvbnZlcnRXb3JkcyAocyA8dHlwZSAxOCBbXSA8dHlwZSAtMjA+PiwgY2hhcnNldCA8dHlwZSAtMTY+LCBiIDx0eXBlIDEzPiwgbmRpZ2l0cyA8dHlwZSAtMTE+LCBiYiA8dHlwZSAxMz4sIHRhYmxlIDx0eXBlIDE5IFtdIDx0eXBlIDIwICIubWF0aC9iaWcuZGl2aXNvciIgPHR5cGUgMjEgc3RydWN0IHsgLm1hdGgvYmlnLmJiYiA8dHlwZSAxMT47IC5tYXRoL2JpZy5uYml0cyA8dHlwZSAtMTE+OyAubWF0aC9iaWcubmRpZ2l0cyA8dHlwZSAtMTE+OyB9Pj4+KTsKIGZ1bmMgKHggPHR5cGUgMTE+KSAubWF0aC9iaWcuc3RyaW5nIChjaGFyc2V0IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CiBmdW5jICh6IDx0eXBlIDExPikgLm1hdGgvYmlnLmRpdlcgKHggPHR5cGUgMTE+LCB5IDx0eXBlIDEzPikgKHEgPHR5cGUgMTE+LCByIDx0eXBlIDEzPik7CiBmdW5jICh6IDx0eXBlIDExPikgLm1hdGgvYmlnLnNociAoeCA8dHlwZSAxMT4sIHMgPHR5cGUgLTEyPikgPHR5cGUgMTE+OwogZnVuYyAoeiA8dHlwZSAxMT4pIC5tYXRoL2JpZy5tdWxSYW5nZSAoYSA8dHlwZSAtOD4sIGIgPHR5cGUgLTg+KSA8dHlwZSAxMT47CiBmdW5jICh6IDx0eXBlIDExPikgLm1hdGgvYmlnLm11bEFkZFdXICh4IDx0eXBlIDExPiwgeSA8dHlwZSAxMz4sIHIgPHR5cGUgMTM+KSA8dHlwZSAxMT47CiBmdW5jICh6IDx0eXBlIDExPikgLm1hdGgvYmlnLmFuZCAoeCA8dHlwZSAxMT4sIHkgPHR5cGUgMTE+KSA8dHlwZSAxMT47CiBmdW5jICh4IDx0eXBlIDExPikgLm1hdGgvYmlnLmRlY2ltYWxTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHogPHR5cGUgMTE+KSAubWF0aC9iaWcueG9yICh4IDx0eXBlIDExPiwgeSA8dHlwZSAxMT4pIDx0eXBlIDExPjsKIGZ1bmMgKHogPHR5cGUgMTE+KSAubWF0aC9iaWcuYml0IChpIDx0eXBlIC0xMj4pIDx0eXBlIC0xMj47CiBmdW5jICh6IDx0eXBlIDExPikgLm1hdGgvYmlnLnNldCAoeCA8dHlwZSAxMT4pIDx0eXBlIDExPjsKIGZ1bmMgKHogPHR5cGUgMTE+KSAubWF0aC9iaWcucmFuZG9tIChyYW5kIDx0eXBlIDIyICo8dHlwZSAyMyAibWF0aC9yYW5kLlJhbmQiICJyYW5kIiA8dHlwZSAyNCBzdHJ1Y3QgeyAubWF0aC9yYW5kLnNyYyA8dHlwZSAyNSAibWF0aC9yYW5kLlNvdXJjZSIgPHR5cGUgMjYgaW50ZXJmYWNlIHsgSW50NjMgKCkgPHR5cGUgLTQ+OyBTZWVkIChzZWVkIDx0eXBlIC00Pik7IH0+PjsgfT4KIGZ1bmMgKHIgPHR5cGUgMjcgKjx0eXBlIDIzPj4pIEV4cEZsb2F0NjQgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKHIgPHR5cGUgMjc+KSBJbnQzMW4gKG4gPHR5cGUgLTM+KSA8dHlwZSAtMz47CiBmdW5jIChyIDx0eXBlIDI3PikgVWludDMyICgpIDx0eXBlIC03PjsKIGZ1bmMgKHIgPHR5cGUgMjc+KSBJbnRuIChuIDx0eXBlIC0xMT4pIDx0eXBlIC0xMT47CiBmdW5jIChyIDx0eXBlIDI3PikgUGVybSAobiA8dHlwZSAtMTE+KSA8dHlwZSAyOCBbXSA8dHlwZSAtMTE+PjsKIGZ1bmMgKHIgPHR5cGUgMjc+KSBOb3JtRmxvYXQ2NCAoKSA8dHlwZSAtMTA+OwogZnVuYyAociA8dHlwZSAyNz4pIEludDMxICgpIDx0eXBlIC0zPjsKIGZ1bmMgKHIgPHR5cGUgMjc+KSBGbG9hdDY0ICgpIDx0eXBlIC0xMD47CiBmdW5jIChyIDx0eXBlIDI3PikgU2VlZCAoc2VlZCA8dHlwZSAtND4pOwogZnVuYyAociA8dHlwZSAyNz4pIEludCAoKSA8dHlwZSAtMTE+OwogZnVuYyAociA8dHlwZSAyNz4pIEludDYzICgpIDx0eXBlIC00PjsKIGZ1bmMgKHIgPHR5cGUgMjc+KSBJbnQ2M24gKG4gPHR5cGUgLTQ+KSA8dHlwZSAtND47CiBmdW5jIChyIDx0eXBlIDI3PikgRmxvYXQzMiAoKSA8dHlwZSAtOT47Cj4+LCBsaW1pdCA8dHlwZSAxMT4sIG4gPHR5cGUgLTExPikgPHR5cGUgMTE+OwogZnVuYyAoeiA8dHlwZSAxMT4pIC5tYXRoL2JpZy5vciAoeCA8dHlwZSAxMT4sIHkgPHR5cGUgMTE+KSA8dHlwZSAxMT47CiBmdW5jICh4IDx0eXBlIDExPikgLm1hdGgvYmlnLmNtcCAoeSA8dHlwZSAxMT4pIChyIDx0eXBlIC0xMT4pOwogZnVuYyAoeCA8dHlwZSAxMT4pIC5tYXRoL2JpZy5iaXRMZW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHogPHR5cGUgMTE+KSAubWF0aC9iaWcuc2V0V29yZCAoeCA8dHlwZSAxMz4pIDx0eXBlIDExPjsKIGZ1bmMgKHogPHR5cGUgMTE+KSAubWF0aC9iaWcuc2V0VWludDY0ICh4IDx0eXBlIC04PikgPHR5cGUgMTE+OwogZnVuYyAoeiA8dHlwZSAxMT4pIC5tYXRoL2JpZy5kaXYgKHoyIDx0eXBlIDExPiwgdSA8dHlwZSAxMT4sIHYgPHR5cGUgMTE+KSAocSA8dHlwZSAxMT4sIHIgPHR5cGUgMTE+KTsKIGZ1bmMgKHggPHR5cGUgMTE+KSAubWF0aC9iaWcudHJhaWxpbmdaZXJvQml0cyAoKSA8dHlwZSAtMTI+OwogZnVuYyAoeiA8dHlwZSAxMT4pIC5tYXRoL2JpZy5leHBOTldpbmRvd2VkICh4IDx0eXBlIDExPiwgeSA8dHlwZSAxMT4sIG0gPHR5cGUgMTE+KSA8dHlwZSAxMT47CiBmdW5jICh6IDx0eXBlIDExPikgLm1hdGgvYmlnLmRpdkxhcmdlICh1IDx0eXBlIDExPiwgdUluIDx0eXBlIDExPiwgdiA8dHlwZSAxMT4pIChxIDx0eXBlIDExPiwgciA8dHlwZSAxMT4pOwogZnVuYyAoeiA8dHlwZSAxMT4pIC5tYXRoL2JpZy5ub3JtICgpIDx0eXBlIDExPjsKIGZ1bmMgKHogPHR5cGUgMTE+KSAubWF0aC9iaWcuc2V0Qnl0ZXMgKGJ1ZiA8dHlwZSAyOSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgMTE+OwogZnVuYyAoeiA8dHlwZSAxMT4pIC5tYXRoL2JpZy5tYWtlIChuIDx0eXBlIC0xMT4pIDx0eXBlIDExPjsKIGZ1bmMgKHogPHR5cGUgMTE+KSAubWF0aC9iaWcuc2hsICh4IDx0eXBlIDExPiwgcyA8dHlwZSAtMTI+KSA8dHlwZSAxMT47CiBmdW5jICh6IDx0eXBlIDExPikgLm1hdGgvYmlnLmJ5dGVzIChidWYgPHR5cGUgMzAgW10gPHR5cGUgLTIwPj4pIChpIDx0eXBlIC0xMT4pOwogZnVuYyAoeiA8dHlwZSAxMT4pIC5tYXRoL2JpZy5jbGVhciAoKTsKIGZ1bmMgKHogPHR5cGUgMTE+KSAubWF0aC9iaWcuZXhwV1cgKHggPHR5cGUgMTM+LCB5IDx0eXBlIDEzPikgPHR5cGUgMTE+OwogZnVuYyAoeiA8dHlwZSAxMT4pIC5tYXRoL2JpZy5leHBOTiAoeCA8dHlwZSAxMT4sIHkgPHR5cGUgMTE+LCBtIDx0eXBlIDExPikgPHR5cGUgMTE+Owo+OyB9PgogZnVuYyAoeiA8dHlwZSAzMSAqPHR5cGUgOT4+KSBOZWcgKHggPHR5cGUgMzE+KSA8dHlwZSAzMT47CiBmdW5jICh6IDx0eXBlIDMxPikgUXVvUmVtICh4IDx0eXBlIDMxPiwgeSA8dHlwZSAzMT4sIHIgPHR5cGUgMzE+KSAoPyA8dHlwZSAzMT4sID8gPHR5cGUgMzE+KTsKIGZ1bmMgKHggPHR5cGUgMzE+KSBCeXRlcyAoKSA8dHlwZSAzMiBbXSA8dHlwZSAtMjA+PjsKIGZ1bmMgKHogPHR5cGUgMzE+KSBTZXRCaXRzIChhYnMgPHR5cGUgMzMgW10gPHR5cGUgMTM+PikgPHR5cGUgMzE+OwogZnVuYyAoeiA8dHlwZSAzMT4pIFNldEJpdCAoeCA8dHlwZSAzMT4sIGkgPHR5cGUgLTExPiwgYiA8dHlwZSAtMTI+KSA8dHlwZSAzMT47CiBmdW5jICh6IDx0eXBlIDMxPikgWG9yICh4IDx0eXBlIDMxPiwgeSA8dHlwZSAzMT4pIDx0eXBlIDMxPjsKIGZ1bmMgKHogPHR5cGUgMzE+KSBTZXRJbnQ2NCAoeCA8dHlwZSAtND4pIDx0eXBlIDMxPjsKIGZ1bmMgKHogPHR5cGUgMzE+KSBOb3QgKHggPHR5cGUgMzE+KSA8dHlwZSAzMT47CiBmdW5jICh6IDx0eXBlIDMxPikgVW5tYXJzaGFsSlNPTiAodGV4dCA8dHlwZSAzNCBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHogPHR5cGUgMzE+KSBPciAoeCA8dHlwZSAzMT4sIHkgPHR5cGUgMzE+KSA8dHlwZSAzMT47CiBmdW5jICh6IDx0eXBlIDMxPikgU2V0VWludDY0ICh4IDx0eXBlIC04PikgPHR5cGUgMzE+OwogZnVuYyAoeCA8dHlwZSAzMT4pIEludDY0ICgpIDx0eXBlIC00PjsKIGZ1bmMgKHogPHR5cGUgMzE+KSAubWF0aC9iaWcuc2NhbiAociA8dHlwZSAxND4sIGJhc2UgPHR5cGUgLTExPikgKD8gPHR5cGUgMzE+LCA/IDx0eXBlIC0xMT4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh6IDx0eXBlIDMxPikgR0NEICh4IDx0eXBlIDMxPiwgeSA8dHlwZSAzMT4sIGEgPHR5cGUgMzE+LCBiIDx0eXBlIDMxPikgPHR5cGUgMzE+OwogZnVuYyAoeiA8dHlwZSAzMT4pIFJlbSAoeCA8dHlwZSAzMT4sIHkgPHR5cGUgMzE+KSA8dHlwZSAzMT47CiBmdW5jICh4IDx0eXBlIDMxPikgQml0IChpIDx0eXBlIC0xMT4pIDx0eXBlIC0xMj47CiBmdW5jICh4IDx0eXBlIDMxPikgQml0cyAoKSA8dHlwZSAzNSBbXSA8dHlwZSAxMz4+OwogZnVuYyAoeiA8dHlwZSAzMT4pIFNldEJ5dGVzIChidWYgPHR5cGUgMzYgW10gPHR5cGUgLTIwPj4pIDx0eXBlIDMxPjsKIGZ1bmMgKHogPHR5cGUgMzE+KSBEaXZNb2QgKHggPHR5cGUgMzE+LCB5IDx0eXBlIDMxPiwgbSA8dHlwZSAzMT4pICg/IDx0eXBlIDMxPiwgPyA8dHlwZSAzMT4pOwogZnVuYyAoeiA8dHlwZSAzMT4pIFJzaCAoeCA8dHlwZSAzMT4sIG4gPHR5cGUgLTEyPikgPHR5cGUgMzE+OwogZnVuYyAoeCA8dHlwZSAzMT4pIENtcCAoeSA8dHlwZSAzMT4pIChyIDx0eXBlIC0xMT4pOwogZnVuYyAoeiA8dHlwZSAzMT4pIFNjYW4gKHMgPHR5cGUgMzcgImZtdC5TY2FuU3RhdGUiICJmbXQiIDx0eXBlIDM4IGludGVyZmFjZSB7IFJlYWRSdW5lICgpIChyIDx0eXBlIC0yMT4sIHNpemUgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyBVbnJlYWRSdW5lICgpIDx0eXBlIC0xOT47IFNraXBTcGFjZSAoKTsgVG9rZW4gKHNraXBTcGFjZSA8dHlwZSAtMTU+LCBmIDx0eXBlIDM5ICg/IDx0eXBlIC0yMT4pIDx0eXBlIC0xNT4+KSAodG9rZW4gPHR5cGUgNDAgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsgV2lkdGggKCkgKHdpZCA8dHlwZSAtMTE+LCBvayA8dHlwZSAtMTU+KTsgUmVhZCAoYnVmIDx0eXBlIDQxIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PiwgY2ggPHR5cGUgLTIxPikgPHR5cGUgLTE5PjsKIGZ1bmMgKHggPHR5cGUgMzE+KSBHb2JFbmNvZGUgKCkgKD8gPHR5cGUgNDIgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh4IDx0eXBlIDMxPikgUHJvYmFibHlQcmltZSAobiA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OwogZnVuYyAoeCA8dHlwZSAzMT4pIFNpZ24gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHogPHR5cGUgMzE+KSBNb2QgKHggPHR5cGUgMzE+LCB5IDx0eXBlIDMxPikgPHR5cGUgMzE+OwogZnVuYyAoeiA8dHlwZSAzMT4pIEV4cCAoeCA8dHlwZSAzMT4sIHkgPHR5cGUgMzE+LCBtIDx0eXBlIDMxPikgPHR5cGUgMzE+OwogZnVuYyAoeCA8dHlwZSAzMT4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoeiA8dHlwZSAzMT4pIEFicyAoeCA8dHlwZSAzMT4pIDx0eXBlIDMxPjsKIGZ1bmMgKHogPHR5cGUgMzE+KSBVbm1hcnNoYWxUZXh0ICh0ZXh0IDx0eXBlIDQzIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAoeiA8dHlwZSAzMT4pIFJhbmQgKHJuZCA8dHlwZSAyMj4sIG4gPHR5cGUgMzE+KSA8dHlwZSAzMT47CiBmdW5jICh6IDx0eXBlIDMxPikgQW5kICh4IDx0eXBlIDMxPiwgeSA8dHlwZSAzMT4pIDx0eXBlIDMxPjsKIGZ1bmMgKHogPHR5cGUgMzE+KSBNb2RJbnZlcnNlIChnIDx0eXBlIDMxPiwgbiA8dHlwZSAzMT4pIDx0eXBlIDMxPjsKIGZ1bmMgKHogPHR5cGUgMzE+KSBRdW8gKHggPHR5cGUgMzE+LCB5IDx0eXBlIDMxPikgPHR5cGUgMzE+OwogZnVuYyAoeiA8dHlwZSAzMT4pIEFkZCAoeCA8dHlwZSAzMT4sIHkgPHR5cGUgMzE+KSA8dHlwZSAzMT47CiBmdW5jICh6IDx0eXBlIDMxPikgTHNoICh4IDx0eXBlIDMxPiwgbiA8dHlwZSAtMTI+KSA8dHlwZSAzMT47CiBmdW5jICh6IDx0eXBlIDMxPikgQW5kTm90ICh4IDx0eXBlIDMxPiwgeSA8dHlwZSAzMT4pIDx0eXBlIDMxPjsKIGZ1bmMgKHogPHR5cGUgMzE+KSBTZXQgKHggPHR5cGUgMzE+KSA8dHlwZSAzMT47CiBmdW5jICh6IDx0eXBlIDMxPikgTWFyc2hhbFRleHQgKCkgKHRleHQgPHR5cGUgNDQgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHogPHR5cGUgMzE+KSBNdWwgKHggPHR5cGUgMzE+LCB5IDx0eXBlIDMxPikgPHR5cGUgMzE+OwogZnVuYyAoeiA8dHlwZSAzMT4pIERpdiAoeCA8dHlwZSAzMT4sIHkgPHR5cGUgMzE+KSA8dHlwZSAzMT47CiBmdW5jICh6IDx0eXBlIDMxPikgQmlub21pYWwgKG4gPHR5cGUgLTQ+LCBrIDx0eXBlIC00PikgPHR5cGUgMzE+OwogZnVuYyAoeCA8dHlwZSAzMT4pIEZvcm1hdCAocyA8dHlwZSA0NSAiZm10LlN0YXRlIiA8dHlwZSA0NiBpbnRlcmZhY2UgeyBXcml0ZSAoYiA8dHlwZSA0NyBbXSA8dHlwZSAtMjA+PikgKHJldCA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IFdpZHRoICgpICh3aWQgPHR5cGUgLTExPiwgb2sgPHR5cGUgLTE1Pik7IFByZWNpc2lvbiAoKSAocHJlYyA8dHlwZSAtMTE+LCBvayA8dHlwZSAtMTU+KTsgRmxhZyAoYyA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OyB9Pj4sIGNoIDx0eXBlIC0yMT4pOwogZnVuYyAoeiA8dHlwZSAzMT4pIE11bFJhbmdlIChhIDx0eXBlIC00PiwgYiA8dHlwZSAtND4pIDx0eXBlIDMxPjsKIGZ1bmMgKHogPHR5cGUgMzE+KSBTZXRTdHJpbmcgKHMgPHR5cGUgLTE2PiwgYmFzZSA8dHlwZSAtMTE+KSAoPyA8dHlwZSAzMT4sID8gPHR5cGUgLTE1Pik7CiBmdW5jICh4IDx0eXBlIDMxPikgVWludDY0ICgpIDx0eXBlIC04PjsKIGZ1bmMgKHogPHR5cGUgMzE+KSBNYXJzaGFsSlNPTiAoKSAoPyA8dHlwZSA0OCBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHggPHR5cGUgMzE+KSBCaXRMZW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHogPHR5cGUgMzE+KSBHb2JEZWNvZGUgKGJ1ZiA8dHlwZSA0OSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHogPHR5cGUgMzE+KSAubWF0aC9iaWcuYmluYXJ5R0NEIChhIDx0eXBlIDMxPiwgYiA8dHlwZSAzMT4pIDx0eXBlIDMxPjsKIGZ1bmMgKHogPHR5cGUgMzE+KSBTdWIgKHggPHR5cGUgMzE+LCB5IDx0eXBlIDMxPikgPHR5cGUgMzE+Owo+PjsgUSA8dHlwZSA4PjsgRyA8dHlwZSA4PjsgfT4+OyBZIDx0eXBlIDg+OyB9Pj47IFggPHR5cGUgOD47IH0+Pj4sIHJhbmQgPHR5cGUgNTAgImlvLlJlYWRlciIgPHR5cGUgNTEgaW50ZXJmYWNlIHsgUmVhZCAocCA8dHlwZSA1MiBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj4pIDx0eXBlIC0xOT47CmZ1bmMgR2VuZXJhdGVQYXJhbWV0ZXJzIChwYXJhbXMgPHR5cGUgNTMgKjx0eXBlIDY+PiwgcmFuZCA8dHlwZSA1MD4sIHNpemVzIDx0eXBlIDU0ICJQYXJhbWV0ZXJTaXplcyIgPHR5cGUgLTExPj4pIChlcnIgPHR5cGUgLTE5Pik7CmNvbnN0IEwxMDI0TjE2MCA8dHlwZSA1ND4gPSAwIDsKY29uc3QgTDIwNDhOMjI0IDx0eXBlIDU0PiA9IDEgOwpjb25zdCBMMjA0OE4yNTYgPHR5cGUgNTQ+ID0gMiA7CmNvbnN0IEwzMDcyTjI1NiA8dHlwZSA1ND4gPSAzIDsKdHlwZSA8dHlwZSA1ND47CnR5cGUgPHR5cGUgNj47CnR5cGUgPHR5cGUgMj47CnR5cGUgPHR5cGUgND47CmZ1bmMgU2lnbiAocmFuZCA8dHlwZSA1MD4sIHByaXYgPHR5cGUgMT4sIGhhc2ggPHR5cGUgNTUgW10gPHR5cGUgLTIwPj4pIChyIDx0eXBlIDg+LCBzIDx0eXBlIDg+LCBlcnIgPHR5cGUgLTE5Pik7CmZ1bmMgVmVyaWZ5IChwdWIgPHR5cGUgNTYgKjx0eXBlIDQ+PiwgaGFzaCA8dHlwZSA1NyBbXSA8dHlwZSAtMjA+PiwgciA8dHlwZSA4PiwgcyA8dHlwZSA4PikgPHR5cGUgLTE1PjsKY2hlY2tzdW0gMzYxRTcxOTI4RDdDQkZFMDg1RkQ2ODlGQzJFRkEwREUwQzYzNEFEQTsKAC5zeW10YWIALnN0cnRhYgAuc2hzdHJ0YWIALmdvX2V4cG9ydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAQAAAAAAAAAAAAAANAAAAPgkAAAAAAAAAAAAAAEAAAAAAAAAEQAAAAMAAAAAAAAAAAAAACwlAAAmAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAABUJQAAIAAAAAQAAAACAAAABAAAABAAAAAJAAAAAwAAAAAAAAAAAAAAdCUAAAEAAAAAAAAAAAAAAAEAAAAAAAAA