% copyright: Copyright (c) Juan M. Aguirregabiria 1997, 2008
% title: Hyphenation patterns for Basque.
% version: June 2008
% notice: >
%     This file is part of the hyph-utf8 package.
%     See http://www.hyphenation.org for more information on the package,
%     and http://tp.lc.ehu.es/jma/basque.html for details on Basque hyphenation.
% licence: >
%     Permission is hereby granted, free of charge, to any person obtaining
%     a copy of this file and any associated documentation
%     (the "Data Files") to deal in the Data Files
%     without restriction, including without limitation the rights to use,
%     copy, modify, merge, publish, distribute, and/or sell copies of
%     the Data Files, and to permit persons to whom the Data Files
%     are furnished to do so, provided that
%     (a) this copyright and permission notice appear with all copies 
%     of the Data Files,
%     (b) this copyright and permission notice appear in associated 
%     documentation, and
%     (c) there is clear notice in each modified Data File
%     as well as in the documentation associated with the Data File(s)
%     that the data has been modified.
%
%     THE DATA FILES ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
%     ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
%     WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
%     NONINFRINGEMENT OF THIRD PARTY RIGHTS.
%     IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
%     NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
%     DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
%     DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
%     TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
%     PERFORMANCE OF THE DATA FILES OR SOFTWARE.
%
%     Except as contained in this notice, the name of a copyright holder
%     shall not be used in advertising or otherwise to promote the sale,
%     use or other dealings in these Data Files without prior
%     written authorization of the copyright holder.
% changes:
%     - >
%         February 1997 Patterns created by Juan M. Aguirregabiria, based on the
%         shyphen.sh script for Spanish by Julio Sanchez, September 1991.
%     - >
%         June 2008 Generating script rewritten in Ruby and adapted for native
%         UTF-8 TeX engines, patterns renamed from bahyph.tex to
%         hyph-eu.tex and added to the hyph-utf8 package.  Functionality should
%         not change apart from adding ñ by default.
% ==========================================
%
% Open vowels: a e o
% Closed vowels: i u
% Consonants: b c d f g j k l m n ñ p q r s t v w x y z
%
% Some of the patterns below represent combinations that never
% happen in Basque. Would they happen, they would be hyphenated
% according to the rules.
%
