Data compression via textual substitution