f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAABsKQAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIGJpZzsKcGtncGF0aCBtYXRoL2JpZzsKcHJpb3JpdHkgNzsKaW1wb3J0IGJpbmFyeSBlbmNvZGluZy9iaW5hcnkgImVuY29kaW5nL2JpbmFyeSI7CmltcG9ydCBlcnJvcnMgZXJyb3JzICJlcnJvcnMiOwppbXBvcnQgZm10IGZtdCAiZm10IjsKaW1wb3J0IGlvIGlvICJpbyI7CmltcG9ydCBtYXRoIG1hdGggIm1hdGgiOwppbXBvcnQgcmFuZCBtYXRoL3JhbmQgIm1hdGgvcmFuZCI7CmltcG9ydCBzdHJpbmdzIHN0cmluZ3MgInN0cmluZ3MiOwppbXBvcnQgc3luYyBzeW5jICJzeW5jIjsKaW5pdCBiaWcgbWF0aF9iaWcuLmltcG9ydCA3IG1hdGggbWF0aC4uaW1wb3J0IDEgcnVudGltZSBydW50aW1lLi5pbXBvcnQgMSB1bmljb2RlIHVuaWNvZGUuLmltcG9ydCAxIHN0cmNvbnYgc3RyY29udi4uaW1wb3J0IDIgc3luYyBzeW5jLi5pbXBvcnQgMiBpbyBpby4uaW1wb3J0IDMgcmFuZCBtYXRoX3JhbmQuLmltcG9ydCAzIHJlZmxlY3QgcmVmbGVjdC4uaW1wb3J0IDMgc3lzY2FsbCBzeXNjYWxsLi5pbXBvcnQgMyBiaW5hcnkgZW5jb2RpbmdfYmluYXJ5Li5pbXBvcnQgNCB0aW1lIHRpbWUuLmltcG9ydCA0IG9zIG9zLi5pbXBvcnQgNSBmbXQgZm10Li5pbXBvcnQgNjsKdHlwZSA8dHlwZSAxICJJbnQiIDx0eXBlIDIgc3RydWN0IHsgLm1hdGgvYmlnLm5lZyA8dHlwZSAtMTU+OyAubWF0aC9iaWcuYWJzIDx0eXBlIDMgIi5tYXRoL2JpZy5uYXQiIDx0eXBlIDQgW10gPHR5cGUgNSAiV29yZCIgPHR5cGUgLTEzPj4+CiBmdW5jICh6IDx0eXBlIDM+KSAubWF0aC9iaWcuY2xlYXIgKCk7CiBmdW5jICh6IDx0eXBlIDM+KSAubWF0aC9iaWcubm9ybSAoKSA8dHlwZSAzPjsKIGZ1bmMgKHogPHR5cGUgMz4pIC5tYXRoL2JpZy5tYWtlIChuIDx0eXBlIC0xMT4pIDx0eXBlIDM+OwogZnVuYyAoeiA8dHlwZSAzPikgLm1hdGgvYmlnLnNldFdvcmQgKHggPHR5cGUgNT4pIDx0eXBlIDM+OwogZnVuYyAoeiA8dHlwZSAzPikgLm1hdGgvYmlnLnNldFVpbnQ2NCAoeCA8dHlwZSAtOD4pIDx0eXBlIDM+OwogZnVuYyAoeiA8dHlwZSAzPikgLm1hdGgvYmlnLnNldCAoeCA8dHlwZSAzPikgPHR5cGUgMz47CiBmdW5jICh6IDx0eXBlIDM+KSAubWF0aC9iaWcuYWRkICh4IDx0eXBlIDM+LCB5IDx0eXBlIDM+KSA8dHlwZSAzPjsKIGZ1bmMgKHogPHR5cGUgMz4pIC5tYXRoL2JpZy5zdWIgKHggPHR5cGUgMz4sIHkgPHR5cGUgMz4pIDx0eXBlIDM+OwogZnVuYyAoeCA8dHlwZSAzPikgLm1hdGgvYmlnLmNtcCAoeSA8dHlwZSAzPikgKHIgPHR5cGUgLTExPik7CiBmdW5jICh6IDx0eXBlIDM+KSAubWF0aC9iaWcubXVsQWRkV1cgKHggPHR5cGUgMz4sIHkgPHR5cGUgNT4sIHIgPHR5cGUgNT4pIDx0eXBlIDM+OwogZnVuYyAoeiA8dHlwZSAzPikgLm1hdGgvYmlnLm11bCAoeCA8dHlwZSAzPiwgeSA8dHlwZSAzPikgPHR5cGUgMz47CiBmdW5jICh6IDx0eXBlIDM+KSAubWF0aC9iaWcubXVsUmFuZ2UgKGEgPHR5cGUgLTg+LCBiIDx0eXBlIC04PikgPHR5cGUgMz47CiBmdW5jICh6IDx0eXBlIDM+KSAubWF0aC9iaWcuZGl2VyAoeCA8dHlwZSAzPiwgeSA8dHlwZSA1PikgKHEgPHR5cGUgMz4sIHIgPHR5cGUgNT4pOwogZnVuYyAoeiA8dHlwZSAzPikgLm1hdGgvYmlnLmRpdiAoejIgPHR5cGUgMz4sIHUgPHR5cGUgMz4sIHYgPHR5cGUgMz4pIChxIDx0eXBlIDM+LCByIDx0eXBlIDM+KTsKIGZ1bmMgKHogPHR5cGUgMz4pIC5tYXRoL2JpZy5kaXZMYXJnZSAodSA8dHlwZSAzPiwgdUluIDx0eXBlIDM+LCB2IDx0eXBlIDM+KSAocSA8dHlwZSAzPiwgciA8dHlwZSAzPik7CiBmdW5jICh4IDx0eXBlIDM+KSAubWF0aC9iaWcuYml0TGVuICgpIDx0eXBlIC0xMT47CiBmdW5jICh6IDx0eXBlIDM+KSAubWF0aC9iaWcuc2NhbiAociA8dHlwZSA2ICJpby5SdW5lU2Nhbm5lciIgPHR5cGUgNyBpbnRlcmZhY2UgeyA/IDx0eXBlIDggImlvLlJ1bmVSZWFkZXIiIDx0eXBlIDkgaW50ZXJmYWNlIHsgUmVhZFJ1bmUgKCkgKHIgPHR5cGUgLTIxPiwgc2l6ZSA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PjsgVW5yZWFkUnVuZSAoKSA8dHlwZSAtMTk+OyB9Pj4sIGJhc2UgPHR5cGUgLTExPikgKD8gPHR5cGUgMz4sID8gPHR5cGUgLTExPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHggPHR5cGUgMz4pIC5tYXRoL2JpZy5kZWNpbWFsU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh4IDx0eXBlIDM+KSAubWF0aC9iaWcuc3RyaW5nIChjaGFyc2V0IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CiBmdW5jIChxIDx0eXBlIDM+KSAubWF0aC9iaWcuY29udmVydFdvcmRzIChzIDx0eXBlIDEwIFtdIDx0eXBlIC0yMD4+LCBjaGFyc2V0IDx0eXBlIC0xNj4sIGIgPHR5cGUgNT4sIG5kaWdpdHMgPHR5cGUgLTExPiwgYmIgPHR5cGUgNT4sIHRhYmxlIDx0eXBlIDExIFtdIDx0eXBlIDEyICIubWF0aC9iaWcuZGl2aXNvciIgPHR5cGUgMTMgc3RydWN0IHsgLm1hdGgvYmlnLmJiYiA8dHlwZSAzPjsgLm1hdGgvYmlnLm5iaXRzIDx0eXBlIC0xMT47IC5tYXRoL2JpZy5uZGlnaXRzIDx0eXBlIC0xMT47IH0+Pj4pOwogZnVuYyAoeiA8dHlwZSAzPikgLm1hdGgvYmlnLmV4cFdXICh4IDx0eXBlIDU+LCB5IDx0eXBlIDU+KSA8dHlwZSAzPjsKIGZ1bmMgKHggPHR5cGUgMz4pIC5tYXRoL2JpZy50cmFpbGluZ1plcm9CaXRzICgpIDx0eXBlIC0xMj47CiBmdW5jICh6IDx0eXBlIDM+KSAubWF0aC9iaWcuc2hsICh4IDx0eXBlIDM+LCBzIDx0eXBlIC0xMj4pIDx0eXBlIDM+OwogZnVuYyAoeiA8dHlwZSAzPikgLm1hdGgvYmlnLnNociAoeCA8dHlwZSAzPiwgcyA8dHlwZSAtMTI+KSA8dHlwZSAzPjsKIGZ1bmMgKHogPHR5cGUgMz4pIC5tYXRoL2JpZy5zZXRCaXQgKHggPHR5cGUgMz4sIGkgPHR5cGUgLTEyPiwgYiA8dHlwZSAtMTI+KSA8dHlwZSAzPjsKIGZ1bmMgKHogPHR5cGUgMz4pIC5tYXRoL2JpZy5iaXQgKGkgPHR5cGUgLTEyPikgPHR5cGUgLTEyPjsKIGZ1bmMgKHogPHR5cGUgMz4pIC5tYXRoL2JpZy5hbmQgKHggPHR5cGUgMz4sIHkgPHR5cGUgMz4pIDx0eXBlIDM+OwogZnVuYyAoeiA8dHlwZSAzPikgLm1hdGgvYmlnLmFuZE5vdCAoeCA8dHlwZSAzPiwgeSA8dHlwZSAzPikgPHR5cGUgMz47CiBmdW5jICh6IDx0eXBlIDM+KSAubWF0aC9iaWcub3IgKHggPHR5cGUgMz4sIHkgPHR5cGUgMz4pIDx0eXBlIDM+OwogZnVuYyAoeiA8dHlwZSAzPikgLm1hdGgvYmlnLnhvciAoeCA8dHlwZSAzPiwgeSA8dHlwZSAzPikgPHR5cGUgMz47CiBmdW5jICh4IDx0eXBlIDM+KSAubWF0aC9iaWcubW9kVyAoZCA8dHlwZSA1PikgKHIgPHR5cGUgNT4pOwogZnVuYyAoeiA8dHlwZSAzPikgLm1hdGgvYmlnLnJhbmRvbSAocmFuZCA8dHlwZSAxNCAqPHR5cGUgMTUgIm1hdGgvcmFuZC5SYW5kIiA8dHlwZSAxNiBzdHJ1Y3QgeyAubWF0aC9yYW5kLnNyYyA8dHlwZSAxNyAibWF0aC9yYW5kLlNvdXJjZSIgPHR5cGUgMTggaW50ZXJmYWNlIHsgSW50NjMgKCkgPHR5cGUgLTQ+OyBTZWVkIChzZWVkIDx0eXBlIC00Pik7IH0+PjsgfT4KIGZ1bmMgKHIgPHR5cGUgMTkgKjx0eXBlIDE1Pj4pIEV4cEZsb2F0NjQgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKHIgPHR5cGUgMTk+KSBJbnQzMW4gKG4gPHR5cGUgLTM+KSA8dHlwZSAtMz47CiBmdW5jIChyIDx0eXBlIDE5PikgVWludDMyICgpIDx0eXBlIC03PjsKIGZ1bmMgKHIgPHR5cGUgMTk+KSBQZXJtIChuIDx0eXBlIC0xMT4pIDx0eXBlIDIwIFtdIDx0eXBlIC0xMT4+OwogZnVuYyAociA8dHlwZSAxOT4pIEludG4gKG4gPHR5cGUgLTExPikgPHR5cGUgLTExPjsKIGZ1bmMgKHIgPHR5cGUgMTk+KSBOb3JtRmxvYXQ2NCAoKSA8dHlwZSAtMTA+OwogZnVuYyAociA8dHlwZSAxOT4pIEludDMxICgpIDx0eXBlIC0zPjsKIGZ1bmMgKHIgPHR5cGUgMTk+KSBGbG9hdDY0ICgpIDx0eXBlIC0xMD47CiBmdW5jIChyIDx0eXBlIDE5PikgU2VlZCAoc2VlZCA8dHlwZSAtND4pOwogZnVuYyAociA8dHlwZSAxOT4pIEludCAoKSA8dHlwZSAtMTE+OwogZnVuYyAociA8dHlwZSAxOT4pIEludDYzICgpIDx0eXBlIC00PjsKIGZ1bmMgKHIgPHR5cGUgMTk+KSBJbnQ2M24gKG4gPHR5cGUgLTQ+KSA8dHlwZSAtND47CiBmdW5jIChyIDx0eXBlIDE5PikgRmxvYXQzMiAoKSA8dHlwZSAtOT47Cj4+LCBsaW1pdCA8dHlwZSAzPiwgbiA8dHlwZSAtMTE+KSA8dHlwZSAzPjsKIGZ1bmMgKHogPHR5cGUgMz4pIC5tYXRoL2JpZy5leHBOTiAoeCA8dHlwZSAzPiwgeSA8dHlwZSAzPiwgbSA8dHlwZSAzPikgPHR5cGUgMz47CiBmdW5jICh6IDx0eXBlIDM+KSAubWF0aC9iaWcuZXhwTk5XaW5kb3dlZCAoeCA8dHlwZSAzPiwgeSA8dHlwZSAzPiwgbSA8dHlwZSAzPikgPHR5cGUgMz47CiBmdW5jIChuIDx0eXBlIDM+KSAubWF0aC9iaWcucHJvYmFibHlQcmltZSAocmVwcyA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OwogZnVuYyAoeiA8dHlwZSAzPikgLm1hdGgvYmlnLmJ5dGVzIChidWYgPHR5cGUgMjEgW10gPHR5cGUgLTIwPj4pIChpIDx0eXBlIC0xMT4pOwogZnVuYyAoeiA8dHlwZSAzPikgLm1hdGgvYmlnLnNldEJ5dGVzIChidWYgPHR5cGUgMjIgW10gPHR5cGUgLTIwPj4pIDx0eXBlIDM+Owo+OyB9PgogZnVuYyAoeCA8dHlwZSAyMyAqPHR5cGUgMT4+KSBTaWduICgpIDx0eXBlIC0xMT47CiBmdW5jICh6IDx0eXBlIDIzPikgU2V0SW50NjQgKHggPHR5cGUgLTQ+KSA8dHlwZSAyMz47CiBmdW5jICh6IDx0eXBlIDIzPikgU2V0VWludDY0ICh4IDx0eXBlIC04PikgPHR5cGUgMjM+OwogZnVuYyAoeiA8dHlwZSAyMz4pIFNldCAoeCA8dHlwZSAyMz4pIDx0eXBlIDIzPjsKIGZ1bmMgKHggPHR5cGUgMjM+KSBCaXRzICgpIDx0eXBlIDI0IFtdIDx0eXBlIDU+PjsKIGZ1bmMgKHogPHR5cGUgMjM+KSBTZXRCaXRzIChhYnMgPHR5cGUgMjUgW10gPHR5cGUgNT4+KSA8dHlwZSAyMz47CiBmdW5jICh6IDx0eXBlIDIzPikgQWJzICh4IDx0eXBlIDIzPikgPHR5cGUgMjM+OwogZnVuYyAoeiA8dHlwZSAyMz4pIE5lZyAoeCA8dHlwZSAyMz4pIDx0eXBlIDIzPjsKIGZ1bmMgKHogPHR5cGUgMjM+KSBBZGQgKHggPHR5cGUgMjM+LCB5IDx0eXBlIDIzPikgPHR5cGUgMjM+OwogZnVuYyAoeiA8dHlwZSAyMz4pIFN1YiAoeCA8dHlwZSAyMz4sIHkgPHR5cGUgMjM+KSA8dHlwZSAyMz47CiBmdW5jICh6IDx0eXBlIDIzPikgTXVsICh4IDx0eXBlIDIzPiwgeSA8dHlwZSAyMz4pIDx0eXBlIDIzPjsKIGZ1bmMgKHogPHR5cGUgMjM+KSBNdWxSYW5nZSAoYSA8dHlwZSAtND4sIGIgPHR5cGUgLTQ+KSA8dHlwZSAyMz47CiBmdW5jICh6IDx0eXBlIDIzPikgQmlub21pYWwgKG4gPHR5cGUgLTQ+LCBrIDx0eXBlIC00PikgPHR5cGUgMjM+OwogZnVuYyAoeiA8dHlwZSAyMz4pIFF1byAoeCA8dHlwZSAyMz4sIHkgPHR5cGUgMjM+KSA8dHlwZSAyMz47CiBmdW5jICh6IDx0eXBlIDIzPikgUmVtICh4IDx0eXBlIDIzPiwgeSA8dHlwZSAyMz4pIDx0eXBlIDIzPjsKIGZ1bmMgKHogPHR5cGUgMjM+KSBRdW9SZW0gKHggPHR5cGUgMjM+LCB5IDx0eXBlIDIzPiwgciA8dHlwZSAyMz4pICg/IDx0eXBlIDIzPiwgPyA8dHlwZSAyMz4pOwogZnVuYyAoeiA8dHlwZSAyMz4pIERpdiAoeCA8dHlwZSAyMz4sIHkgPHR5cGUgMjM+KSA8dHlwZSAyMz47CiBmdW5jICh6IDx0eXBlIDIzPikgTW9kICh4IDx0eXBlIDIzPiwgeSA8dHlwZSAyMz4pIDx0eXBlIDIzPjsKIGZ1bmMgKHogPHR5cGUgMjM+KSBEaXZNb2QgKHggPHR5cGUgMjM+LCB5IDx0eXBlIDIzPiwgbSA8dHlwZSAyMz4pICg/IDx0eXBlIDIzPiwgPyA8dHlwZSAyMz4pOwogZnVuYyAoeCA8dHlwZSAyMz4pIENtcCAoeSA8dHlwZSAyMz4pIChyIDx0eXBlIC0xMT4pOwogZnVuYyAoeCA8dHlwZSAyMz4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoeCA8dHlwZSAyMz4pIEZvcm1hdCAocyA8dHlwZSAyNiAiZm10LlN0YXRlIiA8dHlwZSAyNyBpbnRlcmZhY2UgeyBXcml0ZSAoYiA8dHlwZSAyOCBbXSA8dHlwZSAtMjA+PikgKHJldCA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IFdpZHRoICgpICh3aWQgPHR5cGUgLTExPiwgb2sgPHR5cGUgLTE1Pik7IFByZWNpc2lvbiAoKSAocHJlYyA8dHlwZSAtMTE+LCBvayA8dHlwZSAtMTU+KTsgRmxhZyAoYyA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OyB9Pj4sIGNoIDx0eXBlIC0yMT4pOwogZnVuYyAoeiA8dHlwZSAyMz4pIC5tYXRoL2JpZy5zY2FuIChyIDx0eXBlIDY+LCBiYXNlIDx0eXBlIC0xMT4pICg/IDx0eXBlIDIzPiwgPyA8dHlwZSAtMTE+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoeiA8dHlwZSAyMz4pIFNjYW4gKHMgPHR5cGUgMjkgImZtdC5TY2FuU3RhdGUiIDx0eXBlIDMwIGludGVyZmFjZSB7IFJlYWRSdW5lICgpIChyIDx0eXBlIC0yMT4sIHNpemUgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyBVbnJlYWRSdW5lICgpIDx0eXBlIC0xOT47IFNraXBTcGFjZSAoKTsgVG9rZW4gKHNraXBTcGFjZSA8dHlwZSAtMTU+LCBmIDx0eXBlIDMxICg/IDx0eXBlIC0yMT4pIDx0eXBlIC0xNT4+KSAodG9rZW4gPHR5cGUgMzIgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsgV2lkdGggKCkgKHdpZCA8dHlwZSAtMTE+LCBvayA8dHlwZSAtMTU+KTsgUmVhZCAoYnVmIDx0eXBlIDMzIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PiwgY2ggPHR5cGUgLTIxPikgPHR5cGUgLTE5PjsKIGZ1bmMgKHggPHR5cGUgMjM+KSBJbnQ2NCAoKSA8dHlwZSAtND47CiBmdW5jICh4IDx0eXBlIDIzPikgVWludDY0ICgpIDx0eXBlIC04PjsKIGZ1bmMgKHogPHR5cGUgMjM+KSBTZXRTdHJpbmcgKHMgPHR5cGUgLTE2PiwgYmFzZSA8dHlwZSAtMTE+KSAoPyA8dHlwZSAyMz4sID8gPHR5cGUgLTE1Pik7CiBmdW5jICh6IDx0eXBlIDIzPikgU2V0Qnl0ZXMgKGJ1ZiA8dHlwZSAzNCBbXSA8dHlwZSAtMjA+PikgPHR5cGUgMjM+OwogZnVuYyAoeCA8dHlwZSAyMz4pIEJ5dGVzICgpIDx0eXBlIDM1IFtdIDx0eXBlIC0yMD4+OwogZnVuYyAoeCA8dHlwZSAyMz4pIEJpdExlbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAoeiA8dHlwZSAyMz4pIEV4cCAoeCA8dHlwZSAyMz4sIHkgPHR5cGUgMjM+LCBtIDx0eXBlIDIzPikgPHR5cGUgMjM+OwogZnVuYyAoeiA8dHlwZSAyMz4pIEdDRCAoeCA8dHlwZSAyMz4sIHkgPHR5cGUgMjM+LCBhIDx0eXBlIDIzPiwgYiA8dHlwZSAyMz4pIDx0eXBlIDIzPjsKIGZ1bmMgKHogPHR5cGUgMjM+KSAubWF0aC9iaWcuYmluYXJ5R0NEIChhIDx0eXBlIDIzPiwgYiA8dHlwZSAyMz4pIDx0eXBlIDIzPjsKIGZ1bmMgKHggPHR5cGUgMjM+KSBQcm9iYWJseVByaW1lIChuIDx0eXBlIC0xMT4pIDx0eXBlIC0xNT47CiBmdW5jICh6IDx0eXBlIDIzPikgUmFuZCAocm5kIDx0eXBlIDE0PiwgbiA8dHlwZSAyMz4pIDx0eXBlIDIzPjsKIGZ1bmMgKHogPHR5cGUgMjM+KSBNb2RJbnZlcnNlIChnIDx0eXBlIDIzPiwgbiA8dHlwZSAyMz4pIDx0eXBlIDIzPjsKIGZ1bmMgKHogPHR5cGUgMjM+KSBMc2ggKHggPHR5cGUgMjM+LCBuIDx0eXBlIC0xMj4pIDx0eXBlIDIzPjsKIGZ1bmMgKHogPHR5cGUgMjM+KSBSc2ggKHggPHR5cGUgMjM+LCBuIDx0eXBlIC0xMj4pIDx0eXBlIDIzPjsKIGZ1bmMgKHggPHR5cGUgMjM+KSBCaXQgKGkgPHR5cGUgLTExPikgPHR5cGUgLTEyPjsKIGZ1bmMgKHogPHR5cGUgMjM+KSBTZXRCaXQgKHggPHR5cGUgMjM+LCBpIDx0eXBlIC0xMT4sIGIgPHR5cGUgLTEyPikgPHR5cGUgMjM+OwogZnVuYyAoeiA8dHlwZSAyMz4pIEFuZCAoeCA8dHlwZSAyMz4sIHkgPHR5cGUgMjM+KSA8dHlwZSAyMz47CiBmdW5jICh6IDx0eXBlIDIzPikgQW5kTm90ICh4IDx0eXBlIDIzPiwgeSA8dHlwZSAyMz4pIDx0eXBlIDIzPjsKIGZ1bmMgKHogPHR5cGUgMjM+KSBPciAoeCA8dHlwZSAyMz4sIHkgPHR5cGUgMjM+KSA8dHlwZSAyMz47CiBmdW5jICh6IDx0eXBlIDIzPikgWG9yICh4IDx0eXBlIDIzPiwgeSA8dHlwZSAyMz4pIDx0eXBlIDIzPjsKIGZ1bmMgKHogPHR5cGUgMjM+KSBOb3QgKHggPHR5cGUgMjM+KSA8dHlwZSAyMz47CiBmdW5jICh4IDx0eXBlIDIzPikgR29iRW5jb2RlICgpICg/IDx0eXBlIDM2IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoeiA8dHlwZSAyMz4pIEdvYkRlY29kZSAoYnVmIDx0eXBlIDM3IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAoeiA8dHlwZSAyMz4pIE1hcnNoYWxKU09OICgpICg/IDx0eXBlIDM4IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoeiA8dHlwZSAyMz4pIFVubWFyc2hhbEpTT04gKHRleHQgPHR5cGUgMzkgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jICh6IDx0eXBlIDIzPikgTWFyc2hhbFRleHQgKCkgKHRleHQgPHR5cGUgNDAgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHogPHR5cGUgMjM+KSBVbm1hcnNoYWxUZXh0ICh0ZXh0IDx0eXBlIDQxIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+Owo+Owpjb25zdCBNYXhCYXNlID0gMzYnIDsKZnVuYyBOZXdJbnQgKHggPHR5cGUgLTQ+KSA8dHlwZSAyMz47CmZ1bmMgTmV3UmF0IChhIDx0eXBlIC00PiwgYiA8dHlwZSAtND4pIDx0eXBlIDQyICo8dHlwZSA0MyAiUmF0IiA8dHlwZSA0NCBzdHJ1Y3QgeyAubWF0aC9iaWcuYSA8dHlwZSAxPjsgLm1hdGgvYmlnLmIgPHR5cGUgMT47IH0+CiBmdW5jICh6IDx0eXBlIDQ1ICo8dHlwZSA0Mz4+KSBTZXRGbG9hdDY0IChmIDx0eXBlIC0xMD4pIDx0eXBlIDQ1PjsKIGZ1bmMgKHggPHR5cGUgNDU+KSBGbG9hdDMyICgpIChmIDx0eXBlIC05PiwgZXhhY3QgPHR5cGUgLTE1Pik7CiBmdW5jICh4IDx0eXBlIDQ1PikgRmxvYXQ2NCAoKSAoZiA8dHlwZSAtMTA+LCBleGFjdCA8dHlwZSAtMTU+KTsKIGZ1bmMgKHogPHR5cGUgNDU+KSBTZXRGcmFjIChhIDx0eXBlIDIzPiwgYiA8dHlwZSAyMz4pIDx0eXBlIDQ1PjsKIGZ1bmMgKHogPHR5cGUgNDU+KSBTZXRGcmFjNjQgKGEgPHR5cGUgLTQ+LCBiIDx0eXBlIC00PikgPHR5cGUgNDU+OwogZnVuYyAoeiA8dHlwZSA0NT4pIFNldEludCAoeCA8dHlwZSAyMz4pIDx0eXBlIDQ1PjsKIGZ1bmMgKHogPHR5cGUgNDU+KSBTZXRJbnQ2NCAoeCA8dHlwZSAtND4pIDx0eXBlIDQ1PjsKIGZ1bmMgKHogPHR5cGUgNDU+KSBTZXQgKHggPHR5cGUgNDU+KSA8dHlwZSA0NT47CiBmdW5jICh6IDx0eXBlIDQ1PikgQWJzICh4IDx0eXBlIDQ1PikgPHR5cGUgNDU+OwogZnVuYyAoeiA8dHlwZSA0NT4pIE5lZyAoeCA8dHlwZSA0NT4pIDx0eXBlIDQ1PjsKIGZ1bmMgKHogPHR5cGUgNDU+KSBJbnYgKHggPHR5cGUgNDU+KSA8dHlwZSA0NT47CiBmdW5jICh4IDx0eXBlIDQ1PikgU2lnbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAoeCA8dHlwZSA0NT4pIElzSW50ICgpIDx0eXBlIC0xNT47CiBmdW5jICh4IDx0eXBlIDQ1PikgTnVtICgpIDx0eXBlIDIzPjsKIGZ1bmMgKHggPHR5cGUgNDU+KSBEZW5vbSAoKSA8dHlwZSAyMz47CiBmdW5jICh6IDx0eXBlIDQ1PikgLm1hdGgvYmlnLm5vcm0gKCkgPHR5cGUgNDU+OwogZnVuYyAoeCA8dHlwZSA0NT4pIENtcCAoeSA8dHlwZSA0NT4pIDx0eXBlIC0xMT47CiBmdW5jICh6IDx0eXBlIDQ1PikgQWRkICh4IDx0eXBlIDQ1PiwgeSA8dHlwZSA0NT4pIDx0eXBlIDQ1PjsKIGZ1bmMgKHogPHR5cGUgNDU+KSBTdWIgKHggPHR5cGUgNDU+LCB5IDx0eXBlIDQ1PikgPHR5cGUgNDU+OwogZnVuYyAoeiA8dHlwZSA0NT4pIE11bCAoeCA8dHlwZSA0NT4sIHkgPHR5cGUgNDU+KSA8dHlwZSA0NT47CiBmdW5jICh6IDx0eXBlIDQ1PikgUXVvICh4IDx0eXBlIDQ1PiwgeSA8dHlwZSA0NT4pIDx0eXBlIDQ1PjsKIGZ1bmMgKHogPHR5cGUgNDU+KSBTY2FuIChzIDx0eXBlIDI5PiwgY2ggPHR5cGUgLTIxPikgPHR5cGUgLTE5PjsKIGZ1bmMgKHogPHR5cGUgNDU+KSBTZXRTdHJpbmcgKHMgPHR5cGUgLTE2PikgKD8gPHR5cGUgNDU+LCA/IDx0eXBlIC0xNT4pOwogZnVuYyAoeCA8dHlwZSA0NT4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoeCA8dHlwZSA0NT4pIFJhdFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoeCA8dHlwZSA0NT4pIEZsb2F0U3RyaW5nIChwcmVjIDx0eXBlIC0xMT4pIDx0eXBlIC0xNj47CiBmdW5jICh4IDx0eXBlIDQ1PikgR29iRW5jb2RlICgpICg/IDx0eXBlIDQ2IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoeiA8dHlwZSA0NT4pIEdvYkRlY29kZSAoYnVmIDx0eXBlIDQ3IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAociA8dHlwZSA0NT4pIE1hcnNoYWxUZXh0ICgpICh0ZXh0IDx0eXBlIDQ4IFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChyIDx0eXBlIDQ1PikgVW5tYXJzaGFsVGV4dCAodGV4dCA8dHlwZSA0OSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKPj47CnR5cGUgPHR5cGUgNDM+Owp0eXBlIDx0eXBlIDU+OwpjaGVja3N1bSA3NkIyN0QxMUREQzcyQkZFMjQyNDgxRDEwNDM3MTIxOEExRjk1OEIzOwoALnN5bXRhYgAuc3RydGFiAC5zaHN0cnRhYgAuZ29fZXhwb3J0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAAAAAAAAAAAADQAAADtKAAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAAAAAAAAAAAAAhKQAAJgAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAASCkAACAAAAAEAAAAAgAAAAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAAGgpAAABAAAAAAAAAAAAAAABAAAAAAAAAA==