I2luY2x1ZGUgPGN0eXBlLmg+CiNpbmNsdWRlIDxsb2NhbGUuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCgpzdGF0aWMgaW50IGRvX3Rlc3QgKGxvY2FsZV90IGwpOwoKaW50Cm1haW4gKHZvaWQpCnsKICBsb2NhbGVfdCBsOwogIGxvY2FsZV90IGwyOwogIGludCByZXN1bHQ7CgogIGwgPSBuZXdsb2NhbGUgKDEgPDwgTENfQUxMLCAiZGVfREUuSVNPLTg4NTktMSIsIE5VTEwpOwogIGlmIChsID09IE5VTEwpCiAgICB7CiAgICAgIHByaW50ZiAoIm5ld2xvY2FsZSBmYWlsZWQ6ICVtXG4iKTsKICAgICAgZXhpdCAoRVhJVF9GQUlMVVJFKTsKICAgIH0KICBwdXRzICgiUnVubmluZyB0ZXN0cyBvZiBjcmVhdGVkIGxvY2FsZSIpOwogIHJlc3VsdCA9IGRvX3Rlc3QgKGwpOwoKICBsMiA9IGR1cGxvY2FsZSAobCk7CiAgaWYgKGwyID09IE5VTEwpCiAgICB7CiAgICAgIHByaW50ZiAoImR1cGxvY2FsZSBmYWlsZWQ6ICVtXG4iKTsKICAgICAgZXhpdCAoRVhJVF9GQUlMVVJFKTsKICAgIH0KICBmcmVlbG9jYWxlIChsKTsKICBwdXRzICgiUnVubmluZyB0ZXN0cyBvZiBkdXBsaWNhdGVkIGxvY2FsZSIpOwogIHJlc3VsdCB8PSBkb190ZXN0IChsMik7CgogIHJldHVybiByZXN1bHQ7Cn0KCgpzdGF0aWMgY29uc3QgY2hhciBzdHJbXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIEFCQ0RFRiBnaGlqa2xtbm9wcXJzdHV2d3h5euTE9tb83CI7CnN0YXRpYyBjb25zdCBjaGFyIGV4ZFtdID0gIjExMTExMTExMTEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIjsKc3RhdGljIGNvbnN0IGNoYXIgZXhhW10gPSAiMDAwMDAwMDAwMDExMTExMTAxMTExMTEwMTExMTExMTExMTExMTExMTExMTExMTExMTEiOwpzdGF0aWMgY29uc3QgY2hhciBleHhbXSA9ICIxMTExMTExMTExMTExMTExMDExMTExMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCI7CgoKc3RhdGljIGludApkb190ZXN0IChsb2NhbGVfdCBsKQp7CiAgaW50IHJlc3VsdCA9IDA7CnNpemVfdCBuOwoKI2RlZmluZSBET19URVNUKFRFU1QsIFJFUykgXAogIGZvciAobiA9IDA7IG4gPCBzaXplb2YgKHN0cikgLSAxOyArK24pCQkJCSAgICAgIFwKICAgIGlmICgnMCcgKyAoVEVTVCAoc3RyW25dLCBsKSAhPSAwKSAhPSBSRVNbbl0pCQkJICAgICAgXAogICAgICB7CQkJCQkJCQkJICAgICAgXAoJcHJpbnRmICgiJXMoJWMpIGZhaWxlZFxuIiwgI1RFU1QsIHN0cltuXSk7CQkJICAgICAgXAoJcmVzdWx0ID0gMTsJCQkJCQkJICAgICAgXAogICAgICB9CgogIERPX1RFU1QgKGlzZGlnaXRfbCwgZXhkKTsKICBET19URVNUIChpc2FscGhhX2wsIGV4YSk7CiAgRE9fVEVTVCAoaXN4ZGlnaXRfbCwgZXh4KTsKCiAgcmV0dXJuIHJlc3VsdDsKfQo=