import sys

def clean_log(file):
    rline = None
    tid = None
    with open(file, 'r') as log:
        for line in log:
            if rline == None:
                elems = line.split()
                if len(elems) >= 4 and elems[3].endswith("return"):
                    rline = line
                    tid = elems[0]
                else:
                    print(line, end='')
            elif line.startswith(tid):
                elems = line.split()
                if elems[1] == "virtual" or elems[1] == "static":
                    # good return
                    print(rline, end='')
                    print(line, end='')
                    rline = None
                    tid = None
                else:
                    # bad return
                    badret = rline.split()[3]
                    newret = "(" + badret + ")"
                    print(rline.replace(badret, newret), end='')
                    print(line, end='')
                    rline = None
                    tid = None
            else:
                # line from a different thread
                # note: cleaner currently doesn't support multiple bad returns in different threads
                print(line, end='');
                
            
if __name__ == "__main__":
    clean_log(sys.argv[1])
