# liblouis Table for Post-Translation Editing
#
#  Based on the Linux screenreader BRLTTY, copyright (C) 1999-2006 by
#  The BRLTTY Team
#
#  Copyright (C) 2004, 2005, 2006
#  ViewPlus Technologies, Inc. www.viewplus.com
#  and
#  JJB Software, Inc. www.jjb-software.com
#  All rights reserved
#
#  This file is free software; you can redistribute it and/or modify it
#   under the terms of the Lesser or Library GNU General Public License 
#  as published by the
#  Free Software Foundation; either version 3, or (at your option) any
#  later version.
# 
#  This file is distributed in the hope that it will be useful, but
#  WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
#  Library GNU General Public License for more details.
#
#  You should have received a copy of the Library GNU General Public 
#  License along with this program; see the file COPYING.  If not, write 
#  to
#  the Free Software Foundation, 51 Franklin Street, Fifth Floor,
#  Boston, MA 02110-1301, USA.
#
#  Maintained by John J. Boyer john.boyer@jjb-software.com
# Updated 6-18-08 by Mike Sivill <mike.sivill@viewplus.com>
include chardefs.cti
repeated \s 0
always \ee\s`4 456-256
always \ee\s`1 6
always \ee\s`3 456-25
always \ee\s`2 456-23
always `7\s\eb 12356
always \ee\s`7 23456
always "\s 0
always \s,\s 6-0
context "\eb"[]$l"\ee" @56
context "\eb"[]","$l"\ee" @56

pass2 @1b-12 ?
pass2 @1b-15 ?
pass2 @1b-12-4-4 @4
