static Pair lastVoiceOutputEndBeforeTimestamp(long timestamp) null on exception { temp ReversedLinesFileReader reader = reversedLinesFileReader(cereprocLog()); S s; while ((s = r.readLine()) != null) { if (!isProperlyQuoted(s)) continue; Map map = safeUnstructMap(dropUntilSpace(s)); if (!eq(map.get("action"), "End talking")) continue; long timestamp2 = parseLong(beforeSpace(s)); S textSaid = (S) map.get("text"); ret pair(timestamp2, textSaid); } null; }