I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSAiZ2VuaWNvbnYuaCIKCmludCBtYWluKHZvaWQpCnsKICBjaGFyICAgICAgIGFjQnVmWzEyOF07CiAgY2hhciAgICAgICAqaW5idWYgPSAi9MXT1CAtINDSz9fF0svBIjsgLy8gS09JOC1SIHN0cmluZy4KICBzaXplX3QgICAgIGluYnl0ZXNsZWZ0ID0gc3RybGVuKCBpbmJ1ZiApOwogIGNoYXIgICAgICAgKm91dGJ1ZiA9ICZhY0J1ZjsKICBzaXplX3QgICAgIG91dGJ5dGVzbGVmdCA9IHNpemVvZiggYWNCdWYgKTsKICBpY29udl90ICAgIGljOwoKICAvLyBLT0k4IC0+IHN5c3RlbSBjcC4KCiAgaWMgPSBpY29udl9vcGVuKCAiIiwgIktPSTgtUiIgKTsKICBpZiAoIGljID09IChpY29udl90KSgtMSkgKQogIHsKICAgIHB1dHMoICJpY29udl9vcGVuKCkgZmFpbCIgKTsKICAgIHJldHVybiAxOwogIH0KCiAgaWNvbnYoIGljLCAmaW5idWYsICZpbmJ5dGVzbGVmdCwgJm91dGJ1ZiwgJm91dGJ5dGVzbGVmdCApOwogIHByaW50ZiggIktPSTgtUiB0byBzeXN0ZW0gY3AuOiAlc1xuIiwgJmFjQnVmICk7CgogIGljb252X2Nsb3NlKCBpYyApOwoKICAvLyBTeXN0ZW0gY3AuIC0+IFVURi04IC0+IHN5c3RlbSBjcC4KCiAgLy8gU3lzdGVtIGNwLiAtPiBVVEYtOCBieSBTdHJVVEY4TmV3KCkuCiAgaW5idWYgPSBTdHJVVEY4TmV3KCAxLCAmYWNCdWYsIHN0cmxlbiggJmFjQnVmICkgKTsKCiAgLy8gVVRGLTggLT4gc3lzdGVtIGNwLiBieSBTdHJVVEY4KCkuCiAgaWYgKCBTdHJVVEY4KCAwLCAmYWNCdWYsIHNpemVvZihhY0J1ZiksIGluYnVmLCBzdHJsZW4oIGluYnVmICkgKSA9PSAtMSApCiAgICBwdXRzKCAiU3RyVVRGOCgpIGZhaWxlZCIgKTsKICBlbHNlCiAgICBwcmludGYoICJzeXN0ZW0gY3AuIC0+IFVURi04IC0+IHN5c3RlbSBjcC46ICVzXG4iLCAmYWNCdWYgKTsKCiAgZnJlZSggaW5idWYgKTsKCiAgLy8gVW5sb2FkIHVzZWQgRExMLgogIGljb252X2NsZWFuKCk7CgogIHB1dHMoICJEb25lLiIgKTsKICByZXR1cm4gMDsKfQo=