static std::vector<char> readFile(const char* filename)
{
std::ifstream file;
file.open(filename, std::ios::in);
if(!file.good())
throw std::runtime_error("Cannot open input file.");
file >> std::noskipws;
file.exceptions(std::ios::failbit | std::ios::badbit);
try
{
std::vector<char> result;
std::copy(std::istream_iterator<char>(file), std::istream_iterator<char>(), std::back_inserter(result));
return result;
}
catch(std::ios_base::failure& e)
{
throw std::runtime_error("I/O error when reading the input file.");
}
}
c3RhdGljIHN0ZDo6dmVjdG9yPGNoYXI+IHJlYWRGaWxlKGNvbnN0IGNoYXIqIGZpbGVuYW1lKQp7CiAgc3RkOjppZnN0cmVhbSBmaWxlOwogIGZpbGUub3BlbihmaWxlbmFtZSwgc3RkOjppb3M6OmluKTsKICBpZighZmlsZS5nb29kKCkpCiAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIkNhbm5vdCBvcGVuIGlucHV0IGZpbGUuIik7CgogIGZpbGUgPj4gc3RkOjpub3NraXB3czsKICBmaWxlLmV4Y2VwdGlvbnMoc3RkOjppb3M6OmZhaWxiaXQgfCBzdGQ6Omlvczo6YmFkYml0KTsKICB0cnkKICB7CiAgICBzdGQ6OnZlY3RvcjxjaGFyPiByZXN1bHQ7CiAgICBzdGQ6OmNvcHkoc3RkOjppc3RyZWFtX2l0ZXJhdG9yPGNoYXI+KGZpbGUpLCBzdGQ6OmlzdHJlYW1faXRlcmF0b3I8Y2hhcj4oKSwgc3RkOjpiYWNrX2luc2VydGVyKHJlc3VsdCkpOwogICAgcmV0dXJuIHJlc3VsdDsKICB9CiAgY2F0Y2goc3RkOjppb3NfYmFzZTo6ZmFpbHVyZSYgZSkKICB7CiAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIkkvTyBlcnJvciB3aGVuIHJlYWRpbmcgdGhlIGlucHV0IGZpbGUuIik7CiAgfQp9