Index: trunk/CHANGELOG
===================================================================
--- trunk/CHANGELOG	(revision 760)
+++ trunk/CHANGELOG	(revision 761)
@@ -10,7 +10,10 @@
 # = Bugfix
 ! = Update/Change
 
-------------------------------------- 2.7.0 -------------------------------------
+------------------------------------- 2.7.0 -------------------------------------
+24-Mar-2008 Thomas Hornik
+#	search: great speed-up with large pages - requires PHP >= 4.3.3; small speed-up for PHP < 4.3.3
+#	FCK-Editor: loads large pages faster
 23-Mar-2008 Matthias Gallas
 ! 	Updated form modul for valid output, removed all javascript (Big thanks to BerndJM)
 17-Mar-2008 Thomas Hornik
Index: trunk/wb/upgrade-script.php
===================================================================
--- trunk/wb/upgrade-script.php	(revision 760)
+++ trunk/wb/upgrade-script.php	(revision 761)
@@ -281,11 +281,13 @@
 // cfg_search_description - whether to search in page-description (true/false), def: true [only used while searching title/link/description/keywords]
 // cfg_search_keywords - whether to search in page-keywords (true/false), def: true [only used while searching title/link/description/keywords]
 // cfg_enable_old_search - use old search-method, too (true/false), def: true [use old method as fallback]
+// cfg_enable_flush - use "ob_flush();flush();" after every page on result page. Will speedup response of result page, but may break template
 $cfg = array(
 	'cfg_show_description' => 'true',
 	'cfg_search_description' => 'true',
 	'cfg_search_keywords' => 'true',
-	'cfg_enable_old_search' => 'true'
+	'cfg_enable_old_search' => 'true',
+	'cfg_enable_flush' => 'false'
 );
 foreach($cfg as $key=>$value) {
 	db_add_search_key_value($key, $value);
Index: trunk/wb/framework/functions-utf8.php
===================================================================
--- trunk/wb/framework/functions-utf8.php	(revision 760)
+++ trunk/wb/framework/functions-utf8.php	(revision 761)
@@ -24,7 +24,7 @@
 */
 
 /*
- * A large part of this file is based on 'utf8.php' from the DokuWiki-project.
+ * A part of this file is based on 'utf8.php' from the DokuWiki-project.
  * (http://www.splitbrain.org/projects/dokuwiki):
  **
  * UTF8 helper functions
@@ -33,6 +33,9 @@
  **
  * modified for use with Website Baker
  * from thorn, Jan. 2008
+ *
+ * most of the original functions appeared to be to slow with large strings, so i replaced them with my own ones
+ * thorn, Mar. 2008
  */
 
 // Functions we use in Website Baker:
@@ -48,6 +51,7 @@
 /*
  * check for mb_string support
  */
+//define('UTF8_NOMBSTRING',1); // uncomment this to forbid use of mb_string-functions
 if(!defined('UTF8_MBSTRING')){
   if(function_exists('mb_substr') && !defined('UTF8_NOMBSTRING')){
     define('UTF8_MBSTRING',1);
@@ -73,23 +77,6 @@
 }
 
 /*
- * Strips all highbyte chars
- *
- * Returns a pure ASCII7 string
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- */
-function utf8_strip($str){
-  $ascii = '';
-  for($i=0; $i<strlen($str); $i++){
-    if(ord($str{$i}) <128){
-      $ascii .= $str{$i};
-    }
-  }
-  return $ascii;
-}
-
-/*
  * Tries to detect if a string is in Unicode encoding
  *
  * @author <bmorel@ssi.fr>
@@ -114,214 +101,6 @@
 }
 
 /*
- * Unicode aware replacement for strlen()
- *
- * utf8_decode() converts characters that are not in ISO-8859-1
- * to '?', which, for the purpose of counting, is alright - It's
- * even faster than mb_strlen.
- *
- * @author <chernyshevsky at hotmail dot com>
- * @see    strlen()
- * @see    utf8_decode()
- */
-function utf8_strlen($string){
-  return strlen(utf8_decode($string));
-}
-
-/*
- * UTF-8 aware alternative to substr
- *
- * Return part of a string given character offset (and optionally length)
- *
- * @author Harry Fuecks <hfuecks@gmail.com>
- * @author Chris Smith <chris@jalakai.co.uk>
- * @param string
- * @param integer number of UTF-8 characters offset (from left)
- * @param integer (optional) length in UTF-8 characters from offset
- * @return mixed string or false if failure
- */
-function utf8_substr($str, $offset, $length = null) {
-    if(UTF8_MBSTRING){
-        if( $length === null ){
-            return mb_substr($str, $offset);
-        }else{
-            return mb_substr($str, $offset, $length);
-        }
-    }
-
-    /*
-     * Notes:
-     *
-     * no mb string support, so we'll use pcre regex's with 'u' flag
-     * pcre only supports repetitions of less than 65536, in order to accept up to MAXINT values for
-     * offset and length, we'll repeat a group of 65535 characters when needed (ok, up to MAXINT-65536)
-     *
-     * substr documentation states false can be returned in some cases (e.g. offset > string length)
-     * mb_substr never returns false, it will return an empty string instead.
-     *
-     * calculating the number of characters in the string is a relatively expensive operation, so
-     * we only carry it out when necessary. It isn't necessary for +ve offsets and no specified length
-     */
-
-    // cast parameters to appropriate types to avoid multiple notices/warnings
-    $str = (string)$str;                          // generates E_NOTICE for PHP4 objects, but not PHP5 objects
-    $offset = (int)$offset;
-    if (!is_null($length)) $length = (int)$length;
-
-    // handle trivial cases
-    if ($length === 0) return '';
-    if ($offset < 0 && $length < 0 && $length < $offset) return '';
-
-    $offset_pattern = '';
-    $length_pattern = '';
-
-    // normalise -ve offsets (we could use a tail anchored pattern, but they are horribly slow!)
-    if ($offset < 0) {
-      $strlen = strlen(utf8_decode($str));        // see notes
-      $offset = $strlen + $offset;
-      if ($offset < 0) $offset = 0;
-    }
-
-    // establish a pattern for offset, a non-captured group equal in length to offset
-    if ($offset > 0) {
-      $Ox = (int)($offset/65535);
-      $Oy = $offset%65535;
-
-      if ($Ox) $offset_pattern = '(?:.{65535}){'.$Ox.'}';
-      $offset_pattern = '^(?:'.$offset_pattern.'.{'.$Oy.'})';
-    } else {
-      $offset_pattern = '^';                      // offset == 0; just anchor the pattern
-    }
-
-    // establish a pattern for length
-    if (is_null($length)) {
-      $length_pattern = '(.*)$';                  // the rest of the string
-    } else {
-
-      if (!isset($strlen)) $strlen = strlen(utf8_decode($str));    // see notes
-      if ($offset > $strlen) return '';           // another trivial case
-
-      if ($length > 0) {
-
-        $length = min($strlen-$offset, $length);  // reduce any length that would go passed the end of the string
-
-        $Lx = (int)($length/65535);
-        $Ly = $length%65535;
-
-        // +ve length requires ... a captured group of length characters
-        if ($Lx) $length_pattern = '(?:.{65535}){'.$Lx.'}';
-        $length_pattern = '('.$length_pattern.'.{'.$Ly.'})';
-
-      } else if ($length < 0) {
-
-        if ($length < ($offset - $strlen)) return '';
-
-        $Lx = (int)((-$length)/65535);
-        $Ly = (-$length)%65535;
-
-        // -ve length requires ... capture everything except a group of -length characters
-        //                         anchored at the tail-end of the string
-        if ($Lx) $length_pattern = '(?:.{65535}){'.$Lx.'}';
-        $length_pattern = '(.*)(?:'.$length_pattern.'.{'.$Ly.'})$';
-      }
-    }
-
-    if (!preg_match('#'.$offset_pattern.$length_pattern.'#us',$str,$match)) return '';
-    return $match[1];
-}
-
-/*
- * Unicode aware replacement for substr_replace()
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- * @see    substr_replace()
- */
-function utf8_substr_replace($string, $replacement, $start , $length=0 ){
-  $ret = '';
-  if($start>0) $ret .= utf8_substr($string, 0, $start);
-  $ret .= $replacement;
-  $ret .= utf8_substr($string, $start+$length);
-  return $ret;
-}
-
-/*
- * Unicode aware replacement for ltrim()
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- * @see    ltrim()
- * @return string
- */
-function utf8_ltrim($str,$charlist=''){
-  if($charlist == '') return ltrim($str);
-
-  //quote charlist for use in a characterclass
-  $charlist = preg_replace('!([\\\\\\-\\]\\[/])!','\\\${1}',$charlist);
-
-  return preg_replace('/^['.$charlist.']+/u','',$str);
-}
-
-/*
- * Unicode aware replacement for rtrim()
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- * @see    rtrim()
- * @return string
- */
-function  utf8_rtrim($str,$charlist=''){
-  if($charlist == '') return rtrim($str);
-
-  //quote charlist for use in a characterclass
-  $charlist = preg_replace('!([\\\\\\-\\]\\[/])!','\\\${1}',$charlist);
-
-  return preg_replace('/['.$charlist.']+$/u','',$str);
-}
-
-/*
- * Unicode aware replacement for trim()
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- * @see    trim()
- * @return string
- */
-function  utf8_trim($str,$charlist='') {
-  if($charlist == '') return trim($str);
-
-  return utf8_ltrim(utf8_rtrim($str,$charlist),$charlist);
-}
-
-/*
- * This is a unicode aware replacement for strtolower()
- *
- * Uses mb_string extension if available
- *
- * @author Leo Feyer <leo@typolight.org>
- * @see    strtolower()
- * @see    utf8_strtoupper()
- */
-function utf8_strtolower($string){
-  if(UTF8_MBSTRING) return mb_strtolower($string,'utf-8');
-
-  global $UTF8_UPPER_TO_LOWER;
-  return strtr($string,$UTF8_UPPER_TO_LOWER);
-}
-
-/*
- * This is a unicode aware replacement for strtoupper()
- *
- * Uses mb_string extension if available
- *
- * @author Leo Feyer <leo@typolight.org>
- * @see    strtoupper()
- * @see    utf8_strtoupper()
- */
-function utf8_strtoupper($string){
-  if(UTF8_MBSTRING) return mb_strtoupper($string,'utf-8');
-
-  global $UTF8_LOWER_TO_UPPER;
-  return strtr($string,$UTF8_LOWER_TO_UPPER);
-}
-
-/*
  * Romanize a non-latin string
  *
  * @author Andreas Gohr <andi@splitbrain.org>
@@ -356,501 +135,81 @@
 }
 
 /*
- * This is an Unicode aware replacement for strpos
- *
- * @author Leo Feyer <leo@typolight.org>
- * @see    strpos()
- * @param  string
- * @param  string
- * @param  integer
- * @return integer
+ * added functions - thorn
  */
-function utf8_strpos($haystack, $needle, $offset=0){
-    $comp = 0;
-    $length = null;
 
-    while (is_null($length) || $length < $offset) {
-        $pos = strpos($haystack, $needle, $offset + $comp);
-
-        if ($pos === false)
-            return false;
-
-        $length = utf8_strlen(substr($haystack, 0, $pos));
-
-        if ($length < $offset)
-            $comp = $pos - $length;
-    }
-
-    return $length;
-}
-
 /*
- * Encodes UTF-8 characters to HTML entities
- *
- * @author Tom N Harris <tnharris@whoopdedo.org>
- * @author <vpribish at shopping dot com>
- * @link   http://www.php.net/manual/en/function.utf8-decode.php
+ * faster replacement for utf8_entities_to_umlauts()
+ * not all features of utf8_entities_to_umlauts() --> utf8_unhtml() are supported!
+ * @author thorn
  */
-function utf8_tohtml ($str) {
-    $ret = '';
-    foreach (utf8_to_unicode($str) as $cp) {
-        if ($cp < 0x80)
-            $ret .= chr($cp);
-        //elseif ($cp < 0x100)
-        //    $ret .= "&#$cp;";
-        else
-            $ret .= "&#$cp;";
-        //    $ret .= '&#x'.dechex($cp).';';
-    }
-    return $ret;
+function utf8_fast_entities_to_umlauts($str) {
+	if(UTF8_MBSTRING) {
+		// we need this for use with mb_convert_encoding
+		$str = str_replace(array('&amp;','&gt;','&lt;','&quot;','&#39;','&nbsp;'), array('&amp;amp;','&amp;gt;','&amp;lt;','&amp;quot;','&amp;#39;','&amp;nbsp;'), $str);
+		// we need two mb_convert_encoding()-calls - is this a bug?
+		// mb_convert_encoding("ö&ouml;", 'UTF-8', 'HTML-ENTITIES'); // with string in utf-8-encoding doesn't work. Result: "Ã¶ö"
+		// Work-around: convert all umlauts to entities first ("ö&ouml;"->"&ouml;&ouml;"), then all entities to umlauts ("&ouml;&ouml;"->"öö")
+		return(mb_convert_encoding(mb_convert_encoding($str, 'HTML-ENTITIES', 'UTF-8'),'UTF-8', 'HTML-ENTITIES'));
+	} else {
+		global $named_entities;global $numbered_entities;
+		$str = str_replace($named_entities, $numbered_entities, $str);
+		$str = preg_replace("/&#([0-9]+);/e", "code_to_utf8($1)", $str);
+	}
+	return($str);
 }
-
-/*
- * Decodes HTML entities to UTF-8 characters
- *
- * Convert any &#..; entity to a codepoint,
- * The entities flag defaults to only decoding numeric entities.
- * Pass HTML_ENTITIES and named entities, including &amp; &lt; etc.
- * are handled as well. Avoids the problem that would occur if you
- * had to decode "&amp;#38;&#38;amp;#38;"
- *
- * unhtmlspecialchars(utf8_unhtml($s)) -> "&#38;&#38;"
- * utf8_unhtml(unhtmlspecialchars($s)) -> "&&amp#38;"
- * what it should be                   -> "&#38;&amp#38;"
- *
- * @author Tom N Harris <tnharris@whoopdedo.org>
- * @param  string  $str      UTF-8 encoded string
- * @param  boolean $entities Flag controlling decoding of named entities.
- * @return UTF-8 encoded string with numeric (and named) entities replaced.
- */
-function utf8_unhtml($str, $entities=null) {
-    static $decoder = null;
-    if (is_null($decoder))
-      $decoder = new utf8_entity_decoder();
-    if (is_null($entities))
-        return preg_replace_callback('/(&#([Xx])?([0-9A-Za-z]+);)/m',
-                                     'utf8_decode_numeric', $str);
-    else
-        return preg_replace_callback('/&(#)?([Xx])?([0-9A-Za-z]+);/m',
-                                     array(&$decoder, 'decode'), $str);
+// support-function for utf8_fast_entities_to_umlauts()
+function code_to_utf8($num) {
+	if ($num <= 0x7F) {
+		return chr($num);
+	} elseif ($num <= 0x7FF) {
+		return chr(($num >> 6) + 192) . chr(($num & 63) + 128);
+	} elseif ($num <= 0xFFFF) {
+		 return chr(($num >> 12) + 224) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128);
+	} elseif ($num <= 0x1FFFFF) {
+		return chr(($num >> 18) + 240) . chr((($num >> 12) & 63) + 128) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128);
+	}
+	return "?";
 }
-function utf8_decode_numeric($ent) {
-    switch ($ent[2]) {
-      case 'X':
-      case 'x':
-          $cp = hexdec($ent[3]);
-          break;
-      default:
-          $cp = intval($ent[3]);
-          break;
-    }
-    return unicode_to_utf8(array($cp));
-}
-class utf8_entity_decoder {
-    var $table;
-    function utf8_entity_decoder() {
-        $table = get_html_translation_table(HTML_ENTITIES);
-        $table = array_flip($table);
-        $this->table = array_map(array(&$this,'makeutf8'), $table);
-    }
-    function makeutf8($c) {
-        return unicode_to_utf8(array(ord($c)));
-    }
-    function decode($ent) {
-        if ($ent[1] == '#') {
-            return utf8_decode_numeric($ent);
-        } elseif (array_key_exists($ent[0],$this->table)) {
-            return $this->table[$ent[0]];
-        } else {
-            return $ent[0];
-        }
-    }
-}
 
 /*
- * Takes an UTF-8 string and returns an array of ints representing the
- * Unicode characters. Astral planes are supported ie. the ints in the
- * output can be > 0xFFFF. Occurrances of the BOM are ignored. Surrogates
- * are not allowed.
- *
- * If $strict is set to true the function returns false if the input
- * string isn't a valid UTF-8 octet sequence and raises a PHP error at
- * level E_USER_WARNING
- *
- * Note: this function has been modified slightly in this library to
- * trigger errors on encountering bad bytes
- *
- * @author <hsivonen@iki.fi>
- * @author Harry Fuecks <hfuecks@gmail.com>
- * @param  string  UTF-8 encoded string
- * @param  boolean Check for invalid sequences?
- * @return mixed array of unicode code points or false if UTF-8 invalid
- * @see    unicode_to_utf8
- * @link   http://hsivonen.iki.fi/php-utf8/
- * @link   http://sourceforge.net/projects/phputf8/
+ * faster replacement for utf8_umlauts_to_entities()
+ * not all features of utf8_umlauts_to_entities() --> utf8_tohtml() are supported!
+ * @author thorn
  */
-function utf8_to_unicode($str,$strict=false) {
-    $mState = 0;     // cached expected number of octets after the current octet
-                     // until the beginning of the next UTF8 character sequence
-    $mUcs4  = 0;     // cached Unicode character
-    $mBytes = 1;     // cached expected number of octets in the current sequence
-
-    $out = array();
-
-    $len = strlen($str);
-
-    for($i = 0; $i < $len; $i++) {
-
-        $in = ord($str{$i});
-
-        if ( $mState == 0) {
-
-            // When mState is zero we expect either a US-ASCII character or a
-            // multi-octet sequence.
-            if (0 == (0x80 & ($in))) {
-                // US-ASCII, pass straight through.
-                $out[] = $in;
-                $mBytes = 1;
-
-            } else if (0xC0 == (0xE0 & ($in))) {
-                // First octet of 2 octet sequence
-                $mUcs4 = ($in);
-                $mUcs4 = ($mUcs4 & 0x1F) << 6;
-                $mState = 1;
-                $mBytes = 2;
-
-            } else if (0xE0 == (0xF0 & ($in))) {
-                // First octet of 3 octet sequence
-                $mUcs4 = ($in);
-                $mUcs4 = ($mUcs4 & 0x0F) << 12;
-                $mState = 2;
-                $mBytes = 3;
-
-            } else if (0xF0 == (0xF8 & ($in))) {
-                // First octet of 4 octet sequence
-                $mUcs4 = ($in);
-                $mUcs4 = ($mUcs4 & 0x07) << 18;
-                $mState = 3;
-                $mBytes = 4;
-
-            } else if (0xF8 == (0xFC & ($in))) {
-                /* First octet of 5 octet sequence.
-                 *
-                 * This is illegal because the encoded codepoint must be either
-                 * (a) not the shortest form or
-                 * (b) outside the Unicode range of 0-0x10FFFF.
-                 * Rather than trying to resynchronize, we will carry on until the end
-                 * of the sequence and let the later error handling code catch it.
-                 */
-                $mUcs4 = ($in);
-                $mUcs4 = ($mUcs4 & 0x03) << 24;
-                $mState = 4;
-                $mBytes = 5;
-
-            } else if (0xFC == (0xFE & ($in))) {
-                // First octet of 6 octet sequence, see comments for 5 octet sequence.
-                $mUcs4 = ($in);
-                $mUcs4 = ($mUcs4 & 1) << 30;
-                $mState = 5;
-                $mBytes = 6;
-
-            } elseif($strict) {
-                /* Current octet is neither in the US-ASCII range nor a legal first
-                 * octet of a multi-octet sequence.
-                 */
-                trigger_error(
-                        'utf8_to_unicode: Illegal sequence identifier '.
-                            'in UTF-8 at byte '.$i,
-                        E_USER_WARNING
-                    );
-                return false;
-
-            }
-
-        } else {
-
-            // When mState is non-zero, we expect a continuation of the multi-octet
-            // sequence
-            if (0x80 == (0xC0 & ($in))) {
-
-                // Legal continuation.
-                $shift = ($mState - 1) * 6;
-                $tmp = $in;
-                $tmp = ($tmp & 0x0000003F) << $shift;
-                $mUcs4 |= $tmp;
-
-                /*
-                 * End of the multi-octet sequence. mUcs4 now contains the final
-                 * Unicode codepoint to be output
-                 */
-                if (0 == --$mState) {
-
-                    /*
-                     * Check for illegal sequences and codepoints.
-                     */
-                    // From Unicode 3.1, non-shortest form is illegal
-                    if (((2 == $mBytes) && ($mUcs4 < 0x0080)) ||
-                        ((3 == $mBytes) && ($mUcs4 < 0x0800)) ||
-                        ((4 == $mBytes) && ($mUcs4 < 0x10000)) ||
-                        (4 < $mBytes) ||
-                        // From Unicode 3.2, surrogate characters are illegal
-                        (($mUcs4 & 0xFFFFF800) == 0xD800) ||
-                        // Codepoints outside the Unicode range are illegal
-                        ($mUcs4 > 0x10FFFF)) {
-
-                        if($strict){
-                            trigger_error(
-                                    'utf8_to_unicode: Illegal sequence or codepoint '.
-                                        'in UTF-8 at byte '.$i,
-                                    E_USER_WARNING
-                                );
-
-                            return false;
-                        }
-
-                    }
-
-                    if (0xFEFF != $mUcs4) {
-                        // BOM is legal but we don't want to output it
-                        $out[] = $mUcs4;
-                    }
-
-                    //initialize UTF8 cache
-                    $mState = 0;
-                    $mUcs4  = 0;
-                    $mBytes = 1;
-                }
-
-            } elseif($strict) {
-                /*
-                 *((0xC0 & (*in) != 0x80) && (mState != 0))
-                 * Incomplete multi-octet sequence.
-                 */
-                trigger_error(
-                        'utf8_to_unicode: Incomplete multi-octet '.
-                        '   sequence in UTF-8 at byte '.$i,
-                        E_USER_WARNING
-                    );
-
-                return false;
-            }
-        }
-    }
-    return $out;
+function utf8_fast_umlauts_to_entities($string, $named_entities=true) {
+	if(UTF8_MBSTRING)
+		return(mb_convert_encoding($string, 'HTML-ENTITIES', 'UTF-8'));
+	else {
+		global $named_entities;global $numbered_entities;
+		$new = "";
+		$i=0;
+		$len=strlen($string);
+		if($len==0) return $string;
+		do {
+			if(ord($string{$i}) <= 127) $ud = $string{$i++};
+			elseif(ord($string{$i}) <= 223) $ud = (ord($string{$i++})-192)*64 + (ord($string{$i++})-128);
+			elseif(ord($string{$i}) <= 239) $ud = (ord($string{$i++})-224)*4096 + (ord($string{$i++})-128)*64 + (ord($string{$i++})-128);
+			elseif(ord($string{$i}) <= 247) $ud = (ord($string{$i++})-240)*262144 + (ord($string{$i++})-128)*4096 + (ord($string{$i++})-128)*64 + (ord($string{$i++})-128);
+			else $ud = ord($string{$i++}); // error!
+			if($ud > 127) {
+				$new .= "&#$ud;";
+			} else {
+				$new .= $ud;
+			}
+		} while($i < $len);
+		$string = $new;
+		if($named_entities)
+			$string = str_replace($numbered_entities, $named_entities, $string);
+	}
+	return($string);
 }
 
 /*
- * Takes an array of ints representing the Unicode characters and returns
- * a UTF-8 string. Astral planes are supported ie. the ints in the
- * input can be > 0xFFFF. Occurrances of the BOM are ignored. Surrogates
- * are not allowed.
- *
- * If $strict is set to true the function returns false if the input
- * array contains ints that represent surrogates or are outside the
- * Unicode range and raises a PHP error at level E_USER_WARNING
- *
- * Note: this function has been modified slightly in this library to use
- * output buffering to concatenate the UTF-8 string (faster) as well as
- * reference the array by it's keys
- *
- * @param  array of unicode code points representing a string
- * @param  boolean Check for invalid sequences?
- * @return mixed UTF-8 string or false if array contains invalid code points
- * @author <hsivonen@iki.fi>
- * @author Harry Fuecks <hfuecks@gmail.com>
- * @see    utf8_to_unicode
- * @link   http://hsivonen.iki.fi/php-utf8/
- * @link   http://sourceforge.net/projects/phputf8/
- */
-function unicode_to_utf8($arr,$strict=false) {
-    if (!is_array($arr)) return '';
-    ob_start();
-
-    foreach (array_keys($arr) as $k) {
-
-        # ASCII range (including control chars)
-        if ( ($arr[$k] >= 0) && ($arr[$k] <= 0x007f) ) {
-
-            echo chr($arr[$k]);
-
-        # 2 byte sequence
-        } else if ($arr[$k] <= 0x07ff) {
-
-            echo chr(0xc0 | ($arr[$k] >> 6));
-            echo chr(0x80 | ($arr[$k] & 0x003f));
-
-        # Byte order mark (skip)
-        } else if($arr[$k] == 0xFEFF) {
-
-            // nop -- zap the BOM
-
-        # Test for illegal surrogates
-        } else if ($arr[$k] >= 0xD800 && $arr[$k] <= 0xDFFF) {
-
-            // found a surrogate
-            if($strict){
-                trigger_error(
-                    'unicode_to_utf8: Illegal surrogate '.
-                        'at index: '.$k.', value: '.$arr[$k],
-                    E_USER_WARNING
-                    );
-                return false;
-            }
-
-        # 3 byte sequence
-        } else if ($arr[$k] <= 0xffff) {
-
-            echo chr(0xe0 | ($arr[$k] >> 12));
-            echo chr(0x80 | (($arr[$k] >> 6) & 0x003f));
-            echo chr(0x80 | ($arr[$k] & 0x003f));
-
-        # 4 byte sequence
-        } else if ($arr[$k] <= 0x10ffff) {
-
-            echo chr(0xf0 | ($arr[$k] >> 18));
-            echo chr(0x80 | (($arr[$k] >> 12) & 0x3f));
-            echo chr(0x80 | (($arr[$k] >> 6) & 0x3f));
-            echo chr(0x80 | ($arr[$k] & 0x3f));
-
-        } elseif($strict) {
-
-            trigger_error(
-                'unicode_to_utf8: Codepoint out of Unicode range '.
-                    'at index: '.$k.', value: '.$arr[$k],
-                E_USER_WARNING
-                );
-
-            // out of range
-            return false;
-        }
-    }
-
-    $result = ob_get_contents();
-    ob_end_clean();
-    return $result;
-}
-
-/*
- * Replace bad bytes with an alternative character
- *
- * ASCII character is recommended for replacement char
- *
- * PCRE Pattern to locate bad bytes in a UTF-8 string
- * Comes from W3 FAQ: Multilingual Forms
- * Note: modified to include full ASCII range including control chars
- *
- * @author Harry Fuecks <hfuecks@gmail.com>
- * @see http://www.w3.org/International/questions/qa-forms-utf-8
- * @param string to search
- * @param string to replace bad bytes with (defaults to '?') - use ASCII
- * @return string
- */
-function utf8_bad_replace($str, $replace = '') {
-    $UTF8_BAD =
-     '([\x00-\x7F]'.                          # ASCII (including control chars)
-     '|[\xC2-\xDF][\x80-\xBF]'.               # non-overlong 2-byte
-     '|\xE0[\xA0-\xBF][\x80-\xBF]'.           # excluding overlongs
-     '|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}'.    # straight 3-byte
-     '|\xED[\x80-\x9F][\x80-\xBF]'.           # excluding surrogates
-     '|\xF0[\x90-\xBF][\x80-\xBF]{2}'.        # planes 1-3
-     '|[\xF1-\xF3][\x80-\xBF]{3}'.            # planes 4-15
-     '|\xF4[\x80-\x8F][\x80-\xBF]{2}'.        # plane 16
-     '|(.{1}))';                              # invalid byte
-    ob_start();
-    while (preg_match('/'.$UTF8_BAD.'/S', $str, $matches)) {
-        if ( !isset($matches[2])) {
-            echo $matches[0];
-        } else {
-            echo $replace;
-        }
-        $str = substr($str,strlen($matches[0]));
-    }
-    $result = ob_get_contents();
-    ob_end_clean();
-    return $result;
-}
-
-/*
- * URL-Encode a filename to allow unicodecharacters
- *
- * Slashes are not encoded
- *
- * When the second parameter is true the string will
- * be encoded only if non ASCII characters are detected -
- * This makes it safe to run it multiple times on the
- * same string (default is true)
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- * @see    urlencode
- */
-function utf8_encodeFN($file,$safe=true){
-  if($safe && preg_match('#^[a-zA-Z0-9/_\-.%]+$#',$file)){
-    return $file;
-  }
-  $file = urlencode($file);
-  $file = str_replace('%2F','/',$file);
-  return $file;
-}
-
-/*
- * URL-Decode a filename
- *
- * This is just a wrapper around urldecode
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- * @see    urldecode
- */
-function utf8_decodeFN($file){
-  $file = urldecode($file);
-  return $file;
-}
-
-/*
- * Moved some functions from framework/functions.php to here - thorn
- */
-
-/*
- * Decode HTML entities to UTF-8 characters
- * 
- * Will replace all numeric and named entities, except
- * &gt; &lt; &apos; &quot; &#39; &nbsp;
- * 
- * @param  string UTF-8 or ASCII encoded string
- * @return string UTF-8 encoded string with numeric and named entities replaced.
- */
-function utf8_entities_to_umlauts($str) {
-	global $named_to_numbered_entities;
-	// we have to prevent "&#39;" from beeing decoded
-	$str = str_replace("&#39;", "&_#39;", $str);
-	$str = strtr($str, $named_to_numbered_entities);
-	$str = utf8_unhtml($str);
-	$str = str_replace("&_#39;", "&#39;", $str);
-
-	return($str);
-}
-
-/*
- * Encode UTF-8 characters to HTML entities
- *
- * Will replace all UTF-8 encoded characters to numeric/named entities
- *
- * @param  string UTF-8 encoded string
- * @param  bool Replace numbered by named entities
- * @return string ASCII encoded string with all UTF-8 characters replaced by numeric/named entities
- */
-function utf8_umlauts_to_entities($str, $named_entities=true) {
-	global $numbered_to_named_entities;
-	$str = utf8_tohtml($str);
-	if($named_entities)
-		$str = strtr($str, $numbered_to_named_entities);
-	return($str);
-}
-
-/*
  * Converts from various charsets to UTF-8
  *
  * Will convert a string from various charsets to UTF-8.
- * HTML-entities will be converted, too.
+ * HTML-entities may be converted, too.
  * In case of error the returned string is unchanged, and a message is emitted.
  * Supported charsets are:
  * direct: iso_8859_1 iso_8859_2 iso_8859_3 iso_8859_4 iso_8859_5
@@ -862,8 +221,9 @@
  * @param  string  The charset to convert from, defaults to DEFAULT_CHARSET
  * @return string  A string in UTF-8-encoding, with all entities decoded, too.
  *                 String is unchanged in case of error.
+ * @author thorn
  */
-function charset_to_utf8($str, $charset_in=DEFAULT_CHARSET) {
+function charset_to_utf8($str, $charset_in=DEFAULT_CHARSET, $decode_entities=true) {
 	global $iso_8859_2_to_utf8, $iso_8859_3_to_utf8, $iso_8859_4_to_utf8, $iso_8859_5_to_utf8, $iso_8859_6_to_utf8, $iso_8859_7_to_utf8, $iso_8859_8_to_utf8, $iso_8859_9_to_utf8, $iso_8859_10_to_utf8, $iso_8859_11_to_utf8;
 	$charset_in = strtoupper($charset_in);
 	if ($charset_in == "") { $charset_in = 'UTF-8'; }
@@ -882,8 +242,8 @@
 	// check if we have UTF-8 or a plain ASCII string
 	if($charset_in == 'UTF-8' || utf8_isASCII($str)) {
 		// we have utf-8. Just replace HTML-entities and return
-		if(preg_match('/&[#0-9a-zA-Z]+;/',$str))
-			return(utf8_entities_to_umlauts($str));
+		if($decode_entities && preg_match('/&[#0-9a-zA-Z]+;/',$str))
+			return(utf8_fast_entities_to_umlauts($str));
 		else // nothing to do
 			return($str);
 	}
@@ -920,10 +280,8 @@
 	}
 	if($converted) {
 		// we have utf-8, now replace HTML-entities and return
-		if(preg_match('/&[#0-9a-zA-Z]+;/',$str))
-			$str = utf8_entities_to_umlauts($str);
-		// just to be sure, replace bad characters
-		$str = utf8_bad_replace($str, '?');
+		if($decode_entities && preg_match('/&[#0-9a-zA-Z]+;/',$str))
+			$str = utf8_fast_entities_to_umlauts($str);
 		return($str);
 	}
 	
@@ -940,7 +298,7 @@
  * Converts from UTF-8 to various charsets
  *
  * Will convert a string from UTF-8 to various charsets.
- * HTML-entities will be converted, too.
+ * HTML-entities will not! be converted.
  * In case of error the returned string is unchanged, and a message is emitted.
  * Supported charsets are:
  * direct: iso_8859_1 iso_8859_2 iso_8859_3 iso_8859_4 iso_8859_5
@@ -952,6 +310,7 @@
  * @param  string  The charset to convert to, defaults to DEFAULT_CHARSET
  * @return string  A string in a supported encoding, with all entities decoded, too.
  *                 String is unchanged in case of error.
+ * @author thorn
  */
 function utf8_to_charset($str, $charset_out=DEFAULT_CHARSET) {
 	global $utf8_to_iso_8859_2, $utf8_to_iso_8859_3, $utf8_to_iso_8859_4, $utf8_to_iso_8859_5, $utf8_to_iso_8859_6, $utf8_to_iso_8859_7, $utf8_to_iso_8859_8, $utf8_to_iso_8859_9, $utf8_to_iso_8859_10, $utf8_to_iso_8859_11;
@@ -968,9 +327,10 @@
 		return($str);
 	}
 	
+	// the string comes from charset_to_utf8(), so we can skip this
 	// replace HTML-entities first
-	if(preg_match('/&[#0-9a-zA-Z]+;/',$str))
-		$str = utf8_entities_to_umlauts($str);
+	//if(preg_match('/&[#0-9a-zA-Z]+;/',$str))
+	//	$str = utf8_entities_to_umlauts($str);
 	
 	// check if we need to convert
 	if($charset_out == 'UTF-8' || utf8_isASCII($str)) {
@@ -1030,6 +390,7 @@
  *
  * @param  string  Filename to convert (all encodings from charset_to_utf8() are allowed)
  * @return string  ASCII encoded string, to use as filename in wb's page_filename() and media_filename
+ * @author thorn
  */
 function entities_to_7bit($str) {
 	// convert to UTF-8
@@ -1042,7 +403,7 @@
 	$str = utf8_romanize($str);
 	// missed some? - Many UTF-8-chars can't be romanized
 	// convert to HTML-entities, and replace entites by hex-numbers
-	$str = utf8_umlauts_to_entities($str, false);
+	$str = utf8_fast_umlauts_to_entities($str, false);
 	$str = str_replace('&#39;', '&apos;', $str);
 	$str = preg_replace('/&#([0-9]+);/e', "dechex('$1')",  $str);
 	// maybe there are some &gt; &lt; &apos; &quot; &amp; &nbsp; left, replace them too
@@ -1057,20 +418,11 @@
  * 
  * Will replace all numeric and named entities except
  * &gt; &lt; &apos; &quot; &#39; &nbsp;
- * In case of error the returned string is unchanged, and a message is emitted.
- * Supported charsets are:
- * direct: iso_8859_1 iso_8859_2 iso_8859_3 iso_8859_4 iso_8859_5
- *         iso_8859_6 iso_8859_7 iso_8859_8 iso_8859_9 iso_8859_10 iso_8859_11
- * mb_convert_encoding: all wb charsets (except those from 'direct'); but not GB2312
- * iconv:  all wb charsets (except those from 'direct')
- * 
- * @param  string  A string in DEFAULT_CHARSET encoding
- * @return string  A string in $charset_out encoding with numeric and named entities replaced.
- *         The string is unchanged in case of error. 
+ * @author thorn
  */
 function entities_to_umlauts2($string, $charset_out=DEFAULT_CHARSET) {
-	$string = charset_to_utf8($string, DEFAULT_CHARSET);
-	//if(utf8_check($string)) // this is to much time-consuming
+	$string = charset_to_utf8($string, DEFAULT_CHARSET, true);
+	//if(utf8_check($string)) // this check is to much time-consuming (this may fail only if AddDefaultCharset is set)
 		$string = utf8_to_charset($string, $charset_out);
 	return ($string);
 }
@@ -1079,21 +431,12 @@
  * Convert a string from mixed html-entities/umlauts to pure ASCII with HTML-entities
  * 
  * Will convert a string in $charset_in encoding to a pure ASCII string with HTML-entities.
- * In case of error the returned string is unchanged, and a message is emitted.
- * Supported charsets are:
- * direct: iso_8859_1 iso_8859_2 iso_8859_3 iso_8859_4 iso_8859_5
- *         iso_8859_6 iso_8859_7 iso_8859_8 iso_8859_9 iso_8859_10 iso_8859_11
- * mb_convert_encoding: all wb charsets (except those from 'direct'); but not GB2312
- * iconv:  all wb charsets (except those from 'direct')
- * 
- * @param  string  A string in $charset_in encoding
- * @return string  A string in ASCII encoding with numeric and named entities.
- *         The string is unchanged in case of error. 
+ * @author thorn
  */
 function umlauts_to_entities2($string, $charset_in=DEFAULT_CHARSET) {
-	$string = charset_to_utf8($string, $charset_in);
-	//if(utf8_check($string)) // this is to much time-consuming
-		$string = utf8_umlauts_to_entities($string);
+	$string = charset_to_utf8($string, $charset_in, false);
+	//if(utf8_check($string)) // this check is to much time-consuming (this may fail only if AddDefaultCharset is set)
+		$string = utf8_fast_umlauts_to_entities($string, false);
 	return($string);
 }
 
Index: trunk/wb/framework/charsets_table.php
===================================================================
--- trunk/wb/framework/charsets_table.php	(revision 760)
+++ trunk/wb/framework/charsets_table.php	(revision 761)
@@ -392,114 +392,62 @@
 );
 
 // nicht enthalten &gt; &lt; &apos; &#39; &quot; &amp; &nbsp;
-global $named_to_numbered_entities;
-$named_to_numbered_entities=array(
-	'&Aacute;'=>'&#193;','&aacute;'=>'&#225;',
-	'&Acirc;'=>'&#194;','&acirc;'=>'&#226;','&acute;'=>'&#180;','&AElig;'=>'&#198;','&aelig;'=>'&#230;',
-	'&Agrave;'=>'&#192;','&agrave;'=>'&#224;','&alefsym;'=>'&#8501;','&Alpha;'=>'&#913;','&alpha;'=>'&#945;',
-	'&and;'=>'&#8743;','&ang;'=>'&#8736;','&Aring;'=>'&#197;','&aring;'=>'&#229;',
-	'&asymp;'=>'&#8776;','&Atilde;'=>'&#195;','&atilde;'=>'&#227;','&Auml;'=>'&#196;','&auml;'=>'&#228;',
-	'&bdquo;'=>'&#8222;','&Beta;'=>'&#914;','&beta;'=>'&#946;','&brvbar;'=>'&#166;','&bull;'=>'&#8226;',
-	'&cap;'=>'&#8745;','&Ccedil;'=>'&#199;','&ccedil;'=>'&#231;','&cedil;'=>'&#184;','&cent;'=>'&#162;',
-	'&Chi;'=>'&#935;','&chi;'=>'&#967;','&circ;'=>'&#710;','&clubs;'=>'&#9827;','&cong;'=>'&#8773;',
-	'&copy;'=>'&#169;','&crarr;'=>'&#8629;','&cup;'=>'&#8746;','&curren;'=>'&#164;','&Dagger;'=>'&#8225;',
-	'&dagger;'=>'&#8224;','&dArr;'=>'&#8659;','&darr;'=>'&#8595;','&deg;'=>'&#176;','&Delta;'=>'&#916;',
-	'&delta;'=>'&#948;','&diams;'=>'&v#9830;','&divide;'=>'&#247;','&Eacute;'=>'&#201;','&eacute;'=>'&#233;',
-	'&Ecirc;'=>'&#202;','&ecirc;'=>'&#234;','&Egrave;'=>'&#200;','&egrave;'=>'&#232;','&empty;'=>'&#8709;',
-	'&emsp;'=>'&#8195;','&ensp;'=>'&#8194;','&Epsilon;'=>'&#917;','&epsilon;'=>'&#949;','&equiv;'=>'&#8801;',
-	'&Eta;'=>'&#919;','&eta;'=>'&#951;','&ETH;'=>'&#208;','&eth;'=>'&#240;','&Euml;'=>'&#203;','&euml;'=>'&#235;',
-	'&euro;'=>'&#8364;','&exist;'=>'&#8707;','&fnof;'=>'&#402;','&forall;'=>'&#8704;','&frac12;'=>'&#189;',
-	'&frac14;'=>'&#188;','&frac34;'=>'&#190;','&frasl;'=>'&#8260;','&Gamma;'=>'&#915;','&gamma;'=>'&#947;',
-	'&ge;'=>'&#8805;','&hArr;'=>'&#8660;','&harr;'=>'&#8596;','&hearts;'=>'&#9829;',
-	'&hellip;'=>'&#8230;','&Iacute;'=>'&#205;','&iacute;'=>'&#237;','&Icirc;'=>'&#206;','&icirc;'=>'&#238;',
-	'&iexcl;'=>'&#161;','&Igrave;'=>'&#204;','&igrave;'=>'&#236;','&image;'=>'&#8465;','&infin;'=>'&#8734;',
-	'&int;'=>'&#8747;','&Iota;'=>'&#921;','&iota;'=>'&#953;','&iquest;'=>'&#191;','&isin;'=>'&#8712;',
-	'&Iuml;'=>'&#207;','&iuml;'=>'&#239;','&Kappa;'=>'&#922;','&kappa;'=>'&#954;','&Lambda;'=>'&#923;',
-	'&lambda;'=>'&#955;','&lang;'=>'&#9001;','&laquo;'=>'&#171;','&lArr;'=>'&#8656;','&larr;'=>'&#8592;',
-	'&lceil;'=>'&#8968;','&ldquo;'=>'&#8220;','&le;'=>'&#8804;','&lfloor;'=>'&#8970;','&lowast;'=>'&#8727;',
-	'&loz;'=>'&#9674;','&lrm;'=>'&#8206;','&lsaquo;'=>'&#8249;','&lsquo;'=>'&#8216;',
-	'&macr;'=>'&#175;','&mdash;'=>'&#8212;','&micro;'=>'&#181;','&middot;'=>'&#183;','&minus;'=>'&#8722;',
-	'&Mu;'=>'&#924;','&mu;'=>'&#956;','&nabla;'=>'&#8711;','&ndash;'=>'&#8211;',
-	'&ne;'=>'&#8800;','&ni;'=>'&#8715;','&not;'=>'&#172;','&notin;'=>'&#8713;','&nsub;'=>'&#8836;',
-	'&Ntilde;'=>'&#209;','&ntilde;'=>'&#241;','&Nu;'=>'&#925;','&nu;'=>'&#957;','&Oacute;'=>'&#211;',
-	'&oacute;'=>'&#243;','&Ocirc;'=>'&#212;','&ocirc;'=>'&#244;','&OElig;'=>'&#338;','&oelig;'=>'&#339;',
-	'&Ograve;'=>'&#210;','&ograve;'=>'&#242;','&oline;'=>'&#8254;','&Omega;'=>'&#937;','&omega;'=>'&#969;',
-	'&Omicron;'=>'&#927;','&omicron;'=>'&#959;','&oplus;'=>'&#8853;','&or;'=>'&#8744;','&ordf;'=>'&#170;',
-	'&ordm;'=>'&#186;','&Oslash;'=>'&#216;','&oslash;'=>'&#248;','&Otilde;'=>'&#213;','&otilde;'=>'&#245;',
-	'&otimes;'=>'&#8855;','&Ouml;'=>'&#214;','&ouml;'=>'&#246;','&para;'=>'&#182;','&part;'=>'&#8706;',
-	'&permil;'=>'&#8240;','&perp;'=>'&#8869;','&Phi;'=>'&#934;','&phi;'=>'&#966;','&Pi;'=>'&#928;',
-	'&pi;'=>'&#960;','&piv;'=>'&#982;','&plusmn;'=>'&#177;','&pound;'=>'&#163;','&Prime;'=>'&#8243;',
-	'&prime;'=>'&#8242;','&prod;'=>'&#8719;','&prop;'=>'&#8733;','&Psi;'=>'&#936;','&psi;'=>'&#968;',
-	'&radic;'=>'&#8730;','&rang;'=>'&#9002;','&raquo;'=>'&#187;','&rArr;'=>'&#8658;',
-	'&rarr;'=>'&#8594;','&rceil;'=>'&#8969;','&rdquo;'=>'&#8221;','&real;'=>'&#8476;','&reg;'=>'&#174;',
-	'&rfloor;'=>'&#8971;','&Rho;'=>'&#929;','&rho;'=>'&#961;','&rlm;'=>'&#8207;','&rsaquo;'=>'&#8250;',
-	'&rsquo;'=>'&#8217;','&sbquo;'=>'&#8218;','&Scaron;'=>'&#352;','&scaron;'=>'&#353;','&sdot;'=>'&#8901;',
-	'&sect;'=>'&#167;','&shy;'=>'&#173;','&Sigma;'=>'&#931;','&sigma;'=>'&#963;','&sigmaf;'=>'&#962;',
-	'&sim;'=>'&#8764;','&spades;'=>'&#9824;','&sub;'=>'&#8834;','&sube;'=>'&#8838;','&sum;'=>'&#8721;',
-	'&sup;'=>'&#8835;','&sup1;'=>'&#185;','&sup2;'=>'&#178;','&sup3;'=>'&#179;','&supe;'=>'&#8839;',
-	'&szlig;'=>'&#223;','&Tau;'=>'&#932;','&tau;'=>'&#964;','&there4;'=>'&#8756;','&Theta;'=>'&#920;',
-	'&theta;'=>'&#952;','&thetasym;'=>'&#977;','&thinsp;'=>'&#8201;','&THORN;'=>'&#222;','&thorn;'=>'&#254;',
-	'&tilde;'=>'&#732;','&times;'=>'&#215;','&trade;'=>'&#8482;','&Uacute;'=>'&#218;','&uacute;'=>'&#250;',
-	'&uArr;'=>'&#8657;','&uarr;'=>'&#8593;','&Ucirc;'=>'&#219;','&ucirc;'=>'&#251;','&Ugrave;'=>'&#217;',
-	'&ugrave;'=>'&#249;','&uml;'=>'&#168;','&upsih;'=>'&#978;','&Upsilon;'=>'&#933;','&upsilon;'=>'&#965;',
-	'&Uuml;'=>'&#220;','&uuml;'=>'&#252;','&weierp;'=>'&#8472;','&Xi;'=>'&#926;','&xi;'=>'&#958;',
-	'&Yacute;'=>'&#221;','&yacute;'=>'&#253;','&yen;'=>'&#165;','&Yuml;'=>'&#376;','&yuml;'=>'&#255;',
-	'&Zeta;'=>'&#918;','&zeta;'=>'&#950;','&zwj;'=>'&#8205;','&zwnj;'=>'&#8204;'
+global $named_entities;
+$named_entities=array(
+'&Aacute;','&aacute;','&Acirc;','&acirc;','&acute;','&AElig;','&aelig;','&Agrave;','&agrave;','&alefsym;',
+'&Alpha;','&alpha;','&and;','&ang;','&Aring;','&aring;','&asymp;','&Atilde;','&atilde;','&Auml;',
+'&auml;','&bdquo;','&Beta;','&beta;','&brvbar;','&bull;','&cap;','&Ccedil;','&ccedil;','&cedil;',
+'&cent;','&Chi;','&chi;','&circ;','&clubs;','&cong;','&copy;','&crarr;','&cup;','&curren;',
+'&Dagger;','&dagger;','&dArr;','&darr;','&deg;','&Delta;','&delta;','&diams;','&divide;','&Eacute;',
+'&eacute;','&Ecirc;','&ecirc;','&Egrave;','&egrave;','&empty;','&emsp;','&ensp;','&Epsilon;','&epsilon;',
+'&equiv;','&Eta;','&eta;','&ETH;','&eth;','&Euml;','&euml;','&euro;','&exist;','&fnof;',
+'&forall;','&frac12;','&frac14;','&frac34;','&frasl;','&Gamma;','&gamma;','&ge;','&hArr;','&harr;',
+'&hearts;','&hellip;','&Iacute;','&iacute;','&Icirc;','&icirc;','&iexcl;','&Igrave;','&igrave;','&image;',
+'&infin;','&int;','&Iota;','&iota;','&iquest;','&isin;','&Iuml;','&iuml;','&Kappa;','&kappa;',
+'&Lambda;','&lambda;','&lang;','&laquo;','&lArr;','&larr;','&lceil;','&ldquo;','&le;','&lfloor;',
+'&lowast;','&loz;','&lrm;','&lsaquo;','&lsquo;','&macr;','&mdash;','&micro;','&middot;','&minus;',
+'&Mu;','&mu;','&nabla;','&ndash;','&ne;','&ni;','&not;','&notin;','&nsub;','&Ntilde;',
+'&ntilde;','&Nu;','&nu;','&Oacute;','&oacute;','&Ocirc;','&ocirc;','&OElig;','&oelig;','&Ograve;',
+'&ograve;','&oline;','&Omega;','&omega;','&Omicron;','&omicron;','&oplus;','&or;','&ordf;','&ordm;',
+'&Oslash;','&oslash;','&Otilde;','&otilde;','&otimes;','&Ouml;','&ouml;','&para;','&part;','&permil;',
+'&perp;','&Phi;','&phi;','&Pi;','&pi;','&piv;','&plusmn;','&pound;','&Prime;','&prime;',
+'&prod;','&prop;','&Psi;','&psi;','&radic;','&rang;','&raquo;','&rArr;','&rarr;','&rceil;',
+'&rdquo;','&real;','&reg;','&rfloor;','&Rho;','&rho;','&rlm;','&rsaquo;','&rsquo;','&sbquo;',
+'&Scaron;','&scaron;','&sdot;','&sect;','&shy;','&Sigma;','&sigma;','&sigmaf;','&sim;','&spades;',
+'&sub;','&sube;','&sum;','&sup;','&sup1;','&sup2;','&sup3;','&supe;','&szlig;','&Tau;',
+'&tau;','&there4;','&Theta;','&theta;','&thetasym;','&thinsp;','&THORN;','&thorn;','&tilde;','&times;',
+'&trade;','&Uacute;','&uacute;','&uArr;','&uarr;','&Ucirc;','&ucirc;','&Ugrave;','&ugrave;','&uml;',
+'&upsih;','&Upsilon;','&upsilon;','&Uuml;','&uuml;','&weierp;','&Xi;','&xi;','&Yacute;','&yacute;',
+'&yen;','&Yuml;','&yuml;','&Zeta;','&zeta;','&zwj;','&zwnj;'
 );
+
 // nicht enthalten &gt; &lt; &apos; &#39; &quot; &amp; &nbsp;
-global $numbered_to_named_entities;
-$numbered_to_named_entities=array(
-	'&#193;'=>'&Aacute;','&#225;'=>'&aacute;','&#194;'=>'&Acirc;','&#226;'=>'&acirc;','&#180;'=>'&acute;',
-	'&#198;'=>'&AElig;','&#230;'=>'&aelig;','&#192;'=>'&Agrave;','&#224;'=>'&agrave;','&#8501;'=>'&alefsym;',
-	'&#913;'=>'&Alpha;','&#945;'=>'&alpha;','&#8743;'=>'&and;','&#8736;'=>'&ang;',
-	'&#197;'=>'&Aring;','&#229;'=>'&aring;','&#8776;'=>'&asymp;','&#195;'=>'&Atilde;',
-	'&#227;'=>'&atilde;','&#196;'=>'&Auml;','&#228;'=>'&auml;','&#8222;'=>'&bdquo;','&#914;'=>'&Beta;',
-	'&#946;'=>'&beta;','&#166;'=>'&brvbar;','&#8226;'=>'&bull;','&#8745;'=>'&cap;','&#199;'=>'&Ccedil;',
-	'&#231;'=>'&ccedil;','&#184;'=>'&cedil;','&#162;'=>'&cent;','&#935;'=>'&Chi;','&#967;'=>'&chi;',
-	'&#710;'=>'&circ;','&#9827;'=>'&clubs;','&#8773;'=>'&cong;','&#169;'=>'&copy;','&#8629;'=>'&crarr;',
-	'&#8746;'=>'&cup;','&#164;'=>'&curren;','&#8225;'=>'&Dagger;','&#8224;'=>'&dagger;','&#8659;'=>'&dArr;',
-	'&#8595;'=>'&darr;','&#176;'=>'&deg;','&#916;'=>'&Delta;','&#948;'=>'&delta;','&v#9830;'=>'&diams;',
-	'&#247;'=>'&divide;','&#201;'=>'&Eacute;','&#233;'=>'&eacute;','&#202;'=>'&Ecirc;','&#234;'=>'&ecirc;',
-	'&#200;'=>'&Egrave;','&#232;'=>'&egrave;','&#8709;'=>'&empty;','&#8195;'=>'&emsp;','&#8194;'=>'&ensp;',
-	'&#917;'=>'&Epsilon;','&#949;'=>'&epsilon;','&#8801;'=>'&equiv;','&#919;'=>'&Eta;','&#951;'=>'&eta;',
-	'&#208;'=>'&ETH;','&#240;'=>'&eth;','&#203;'=>'&Euml;','&#235;'=>'&euml;','&#8364;'=>'&euro;',
-	'&#8707;'=>'&exist;','&#402;'=>'&fnof;','&#8704;'=>'&forall;','&#189;'=>'&frac12;','&#188;'=>'&frac14;',
-	'&#190;'=>'&frac34;','&#8260;'=>'&frasl;','&#915;'=>'&Gamma;','&#947;'=>'&gamma;','&#8805;'=>'&ge;',
-	'&#8660;'=>'&hArr;','&#8596;'=>'&harr;','&#9829;'=>'&hearts;','&#8230;'=>'&hellip;',
-	'&#205;'=>'&Iacute;','&#237;'=>'&iacute;','&#206;'=>'&Icirc;','&#238;'=>'&icirc;','&#161;'=>'&iexcl;',
-	'&#204;'=>'&Igrave;','&#236;'=>'&igrave;','&#8465;'=>'&image;','&#8734;'=>'&infin;','&#8747;'=>'&int;',
-	'&#921;'=>'&Iota;','&#953;'=>'&iota;','&#191;'=>'&iquest;','&#8712;'=>'&isin;','&#207;'=>'&Iuml;',
-	'&#239;'=>'&iuml;','&#922;'=>'&Kappa;','&#954;'=>'&kappa;','&#923;'=>'&Lambda;','&#955;'=>'&lambda;',
-	'&#9001;'=>'&lang;','&#171;'=>'&laquo;','&#8656;'=>'&lArr;','&#8592;'=>'&larr;','&#8968;'=>'&lceil;',
-	'&#8220;'=>'&ldquo;','&#8804;'=>'&le;','&#8970;'=>'&lfloor;','&#8727;'=>'&lowast;','&#9674;'=>'&loz;',
-	'&#8206;'=>'&lrm;','&#8249;'=>'&lsaquo;','&#8216;'=>'&lsquo;','&#175;'=>'&macr;',
-	'&#8212;'=>'&mdash;','&#181;'=>'&micro;','&#183;'=>'&middot;','&#8722;'=>'&minus;','&#924;'=>'&Mu;',
-	'&#956;'=>'&mu;','&#8711;'=>'&nabla;','&#8211;'=>'&ndash;','&#8800;'=>'&ne;',
-	'&#8715;'=>'&ni;','&#172;'=>'&not;','&#8713;'=>'&notin;','&#8836;'=>'&nsub;','&#209;'=>'&Ntilde;',
-	'&#241;'=>'&ntilde;','&#925;'=>'&Nu;','&#957;'=>'&nu;','&#211;'=>'&Oacute;','&#243;'=>'&oacute;',
-	'&#212;'=>'&Ocirc;','&#244;'=>'&ocirc;','&#338;'=>'&OElig;','&#339;'=>'&oelig;','&#210;'=>'&Ograve;',
-	'&#242;'=>'&ograve;','&#8254;'=>'&oline;','&#937;'=>'&Omega;','&#969;'=>'&omega;','&#927;'=>'&Omicron;',
-	'&#959;'=>'&omicron;','&#8853;'=>'&oplus;','&#8744;'=>'&or;','&#170;'=>'&ordf;','&#186;'=>'&ordm;',
-	'&#216;'=>'&Oslash;','&#248;'=>'&oslash;','&#213;'=>'&Otilde;','&#245;'=>'&otilde;','&#8855;'=>'&otimes;',
-	'&#214;'=>'&Ouml;','&#246;'=>'&ouml;','&#182;'=>'&para;','&#8706;'=>'&part;','&#8240;'=>'&permil;',
-	'&#8869;'=>'&perp;','&#934;'=>'&Phi;','&#966;'=>'&phi;','&#928;'=>'&Pi;','&#960;'=>'&pi;','&#982;'=>'&piv;',
-	'&#177;'=>'&plusmn;','&#163;'=>'&pound;','&#8243;'=>'&Prime;','&#8242;'=>'&prime;','&#8719;'=>'&prod;',
-	'&#8733;'=>'&prop;','&#936;'=>'&Psi;','&#968;'=>'&psi;','&#8730;'=>'&radic;',
-	'&#9002;'=>'&rang;','&#187;'=>'&raquo;','&#8658;'=>'&rArr;','&#8594;'=>'&rarr;','&#8969;'=>'&rceil;',
-	'&#8221;'=>'&rdquo;','&#8476;'=>'&real;','&#174;'=>'&reg;','&#8971;'=>'&rfloor;','&#929;'=>'&Rho;',
-	'&#961;'=>'&rho;','&#8207;'=>'&rlm;','&#8250;'=>'&rsaquo;','&#8217;'=>'&rsquo;','&#8218;'=>'&sbquo;',
-	'&#352;'=>'&Scaron;','&#353;'=>'&scaron;','&#8901;'=>'&sdot;','&#167;'=>'&sect;','&#173;'=>'&shy;',
-	'&#931;'=>'&Sigma;','&#963;'=>'&sigma;','&#962;'=>'&sigmaf;','&#8764;'=>'&sim;','&#9824;'=>'&spades;',
-	'&#8834;'=>'&sub;','&#8838;'=>'&sube;','&#8721;'=>'&sum;','&#8835;'=>'&sup;','&#185;'=>'&sup1;',
-	'&#178;'=>'&sup2;','&#179;'=>'&sup3;','&#8839;'=>'&supe;','&#223;'=>'&szlig;','&#932;'=>'&Tau;',
-	'&#964;'=>'&tau;','&#8756;'=>'&there4;','&#920;'=>'&Theta;','&#952;'=>'&theta;','&#977;'=>'&thetasym;',
-	'&#8201;'=>'&thinsp;','&#222;'=>'&THORN;','&#254;'=>'&thorn;','&#732;'=>'&tilde;','&#215;'=>'&times;',
-	'&#8482;'=>'&trade;','&#218;'=>'&Uacute;','&#250;'=>'&uacute;','&#8657;'=>'&uArr;','&#8593;'=>'&uarr;',
-	'&#219;'=>'&Ucirc;','&#251;'=>'&ucirc;','&#217;'=>'&Ugrave;','&#249;'=>'&ugrave;','&#168;'=>'&uml;',
-	'&#978;'=>'&upsih;','&#933;'=>'&Upsilon;','&#965;'=>'&upsilon;','&#220;'=>'&Uuml;','&#252;'=>'&uuml;',
-	'&#8472;'=>'&weierp;','&#926;'=>'&Xi;','&#958;'=>'&xi;','&#221;'=>'&Yacute;','&#253;'=>'&yacute;',
-	'&#165;'=>'&yen;','&#376;'=>'&Yuml;','&#255;'=>'&yuml;','&#918;'=>'&Zeta;','&#950;'=>'&zeta;','&#8205;'=>'&zwj;',
-	'&#8204;'=>'&zwnj;'
+global $numbered_entities;
+$numbered_entities=array(
+'&#193;','&#225;','&#194;','&#226;','&#180;','&#198;','&#230;','&#192;','&#224;','&#8501;',
+'&#913;','&#945;','&#8743;','&#8736;','&#197;','&#229;','&#8776;','&#195;','&#227;','&#196;',
+'&#228;','&#8222;','&#914;','&#946;','&#166;','&#8226;','&#8745;','&#199;','&#231;','&#184;',
+'&#162;','&#935;','&#967;','&#710;','&#9827;','&#8773;','&#169;','&#8629;','&#8746;','&#164;',
+'&#8225;','&#8224;','&#8659;','&#8595;','&#176;','&#916;','&#948;','&#9830;','&#247;','&#201;',
+'&#233;','&#202;','&#234;','&#200;','&#232;','&#8709;','&#8195;','&#8194;','&#917;','&#949;',
+'&#8801;','&#919;','&#951;','&#208;','&#240;','&#203;','&#235;','&#8364;','&#8707;','&#402;',
+'&#8704;','&#189;','&#188;','&#190;','&#8260;','&#915;','&#947;','&#8805;','&#8660;','&#8596;',
+'&#9829;','&#8230;','&#205;','&#237;','&#206;','&#238;','&#161;','&#204;','&#236;','&#8465;',
+'&#8734;','&#8747;','&#921;','&#953;','&#191;','&#8712;','&#207;','&#239;','&#922;','&#954;',
+'&#923;','&#955;','&#9001;','&#171;','&#8656;','&#8592;','&#8968;','&#8220;','&#8804;','&#8970;',
+'&#8727;','&#9674;','&#8206;','&#8249;','&#8216;','&#175;','&#8212;','&#181;','&#183;','&#8722;',
+'&#924;','&#956;','&#8711;','&#8211;','&#8800;','&#8715;','&#172;','&#8713;','&#8836;','&#209;',
+'&#241;','&#925;','&#957;','&#211;','&#243;','&#212;','&#244;','&#338;','&#339;','&#210;','&#242;',
+'&#8254;','&#937;','&#969;','&#927;','&#959;','&#8853;','&#8744;','&#170;','&#186;','&#216;','&#248;',
+'&#213;','&#245;','&#8855;','&#214;','&#246;','&#182;','&#8706;','&#8240;','&#8869;','&#934;','&#966;',
+'&#928;','&#960;','&#982;','&#177;','&#163;','&#8243;','&#8242;','&#8719;','&#8733;','&#936;','&#968;',
+'&#8730;','&#9002;','&#187;','&#8658;','&#8594;','&#8969;','&#8221;','&#8476;','&#174;','&#8971;','&#929;',
+'&#961;','&#8207;','&#8250;','&#8217;','&#8218;','&#352;','&#353;','&#8901;','&#167;','&#173;','&#931;',
+'&#963;','&#962;','&#8764;','&#9824;','&#8834;','&#8838;','&#8721;','&#8835;','&#185;','&#178;','&#179;',
+'&#8839;','&#223;','&#932;','&#964;','&#8756;','&#920;','&#952;','&#977;','&#8201;','&#222;','&#254;',
+'&#732;','&#215;','&#8482;','&#218;','&#250;','&#8657;','&#8593;','&#219;','&#251;','&#217;','&#249;',
+'&#168;','&#978;','&#933;','&#965;','&#220;','&#252;','&#8472;','&#926;','&#958;','&#221;','&#253;',
+'&#165;','&#376;','&#255;','&#918;','&#950;','&#8205;','&#8204;'
 );
 
 /*
@@ -514,408 +462,6 @@
  * from thorn, Jan. 2008
  */
 
-// only needed if no mb_string available
-// extended - thorn
-if(!UTF8_MBSTRING){
-  /**
-   * UTF-8 Case lookup table
-   *
-   * This lookuptable defines the upper case letters to their correspponding
-   * lower case letter in UTF-8
-   *
-   * @author Andreas Gohr <andi@splitbrain.org>
-   * @author thorn <thorn@nettest.thekk.de>
-   */
-	global $UTF8_LOWER_TO_UPPER;
-	$UTF8_LOWER_TO_UPPER = array(
-		"\x61"=>"\x41","\x62"=>"\x42","\x63"=>"\x43","\x64"=>"\x44",
-		"\x65"=>"\x45","\x66"=>"\x46","\x67"=>"\x47","\x68"=>"\x48",
-		"\x69"=>"\x49","\x6a"=>"\x4a","\x6b"=>"\x4b","\x6c"=>"\x4c",
-		"\x6d"=>"\x4d","\x6e"=>"\x4e","\x6f"=>"\x4f","\x70"=>"\x50",
-		"\x71"=>"\x51","\x72"=>"\x52","\x73"=>"\x53","\x74"=>"\x54",
-		"\x75"=>"\x55","\x76"=>"\x56","\x77"=>"\x57","\x78"=>"\x58",
-		"\x79"=>"\x59","\x7a"=>"\x5a","\xc2\xb5"=>"\xce\x9c","\xc3\xa0"=>"\xc3\x80",
-		"\xc3\xa1"=>"\xc3\x81","\xc3\xa2"=>"\xc3\x82","\xc3\xa3"=>"\xc3\x83","\xc3\xa4"=>"\xc3\x84",
-		"\xc3\xa5"=>"\xc3\x85","\xc3\xa6"=>"\xc3\x86","\xc3\xa7"=>"\xc3\x87","\xc3\xa8"=>"\xc3\x88",
-		"\xc3\xa9"=>"\xc3\x89","\xc3\xaa"=>"\xc3\x8a","\xc3\xab"=>"\xc3\x8b","\xc3\xac"=>"\xc3\x8c",
-		"\xc3\xad"=>"\xc3\x8d","\xc3\xae"=>"\xc3\x8e","\xc3\xaf"=>"\xc3\x8f","\xc3\xb0"=>"\xc3\x90",
-		"\xc3\xb1"=>"\xc3\x91","\xc3\xb2"=>"\xc3\x92","\xc3\xb3"=>"\xc3\x93","\xc3\xb4"=>"\xc3\x94",
-		"\xc3\xb5"=>"\xc3\x95","\xc3\xb6"=>"\xc3\x96","\xc3\xb8"=>"\xc3\x98","\xc3\xb9"=>"\xc3\x99",
-		"\xc3\xba"=>"\xc3\x9a","\xc3\xbb"=>"\xc3\x9b","\xc3\xbc"=>"\xc3\x9c","\xc3\xbd"=>"\xc3\x9d",
-		"\xc3\xbe"=>"\xc3\x9e","\xc3\xbf"=>"\xc5\xb8","\xc4\x81"=>"\xc4\x80","\xc4\x83"=>"\xc4\x82",
-		"\xc4\x85"=>"\xc4\x84","\xc4\x87"=>"\xc4\x86","\xc4\x89"=>"\xc4\x88","\xc4\x8b"=>"\xc4\x8a",
-		"\xc4\x8d"=>"\xc4\x8c","\xc4\x8f"=>"\xc4\x8e","\xc4\x91"=>"\xc4\x90","\xc4\x93"=>"\xc4\x92",
-		"\xc4\x95"=>"\xc4\x94","\xc4\x97"=>"\xc4\x96","\xc4\x99"=>"\xc4\x98","\xc4\x9b"=>"\xc4\x9a",
-		"\xc4\x9d"=>"\xc4\x9c","\xc4\x9f"=>"\xc4\x9e","\xc4\xa1"=>"\xc4\xa0","\xc4\xa3"=>"\xc4\xa2",
-		"\xc4\xa5"=>"\xc4\xa4","\xc4\xa7"=>"\xc4\xa6","\xc4\xa9"=>"\xc4\xa8","\xc4\xab"=>"\xc4\xaa",
-		"\xc4\xad"=>"\xc4\xac","\xc4\xaf"=>"\xc4\xae","\xc4\xb1"=>"\x49","\xc4\xb3"=>"\xc4\xb2",
-		"\xc4\xb5"=>"\xc4\xb4","\xc4\xb7"=>"\xc4\xb6","\xc4\xba"=>"\xc4\xb9","\xc4\xbc"=>"\xc4\xbb",
-		"\xc4\xbe"=>"\xc4\xbd","\xc5\x80"=>"\xc4\xbf","\xc5\x82"=>"\xc5\x81","\xc5\x84"=>"\xc5\x83",
-		"\xc5\x86"=>"\xc5\x85","\xc5\x88"=>"\xc5\x87","\xc5\x8b"=>"\xc5\x8a","\xc5\x8d"=>"\xc5\x8c",
-		"\xc5\x8f"=>"\xc5\x8e","\xc5\x91"=>"\xc5\x90","\xc5\x93"=>"\xc5\x92","\xc5\x95"=>"\xc5\x94",
-		"\xc5\x97"=>"\xc5\x96","\xc5\x99"=>"\xc5\x98","\xc5\x9b"=>"\xc5\x9a","\xc5\x9d"=>"\xc5\x9c",
-		"\xc5\x9f"=>"\xc5\x9e","\xc5\xa1"=>"\xc5\xa0","\xc5\xa3"=>"\xc5\xa2","\xc5\xa5"=>"\xc5\xa4",
-		"\xc5\xa7"=>"\xc5\xa6","\xc5\xa9"=>"\xc5\xa8","\xc5\xab"=>"\xc5\xaa","\xc5\xad"=>"\xc5\xac",
-		"\xc5\xaf"=>"\xc5\xae","\xc5\xb1"=>"\xc5\xb0","\xc5\xb3"=>"\xc5\xb2","\xc5\xb5"=>"\xc5\xb4",
-		"\xc5\xb7"=>"\xc5\xb6","\xc5\xba"=>"\xc5\xb9","\xc5\xbc"=>"\xc5\xbb","\xc5\xbe"=>"\xc5\xbd",
-		"\xc5\xbf"=>"\x53","\xc6\x83"=>"\xc6\x82","\xc6\x85"=>"\xc6\x84","\xc6\x88"=>"\xc6\x87",
-		"\xc6\x8c"=>"\xc6\x8b","\xc6\x92"=>"\xc6\x91","\xc6\x95"=>"\xc7\xb6","\xc6\x99"=>"\xc6\x98",
-		"\xc6\xa1"=>"\xc6\xa0","\xc6\xa3"=>"\xc6\xa2","\xc6\xa5"=>"\xc6\xa4","\xc6\xa8"=>"\xc6\xa7",
-		"\xc6\xad"=>"\xc6\xac","\xc6\xb0"=>"\xc6\xaf","\xc6\xb4"=>"\xc6\xb3","\xc6\xb6"=>"\xc6\xb5",
-		"\xc6\xb9"=>"\xc6\xb8","\xc6\xbd"=>"\xc6\xbc","\xc6\xbf"=>"\xc7\xb7","\xc7\x85"=>"\xc7\x84",
-		"\xc7\x86"=>"\xc7\x84","\xc7\x88"=>"\xc7\x87","\xc7\x89"=>"\xc7\x87","\xc7\x8b"=>"\xc7\x8a",
-		"\xc7\x8c"=>"\xc7\x8a","\xc7\x8e"=>"\xc7\x8d","\xc7\x90"=>"\xc7\x8f","\xc7\x92"=>"\xc7\x91",
-		"\xc7\x94"=>"\xc7\x93","\xc7\x96"=>"\xc7\x95","\xc7\x98"=>"\xc7\x97","\xc7\x9a"=>"\xc7\x99",
-		"\xc7\x9c"=>"\xc7\x9b","\xc7\x9d"=>"\xc6\x8e","\xc7\x9f"=>"\xc7\x9e","\xc7\xa1"=>"\xc7\xa0",
-		"\xc7\xa3"=>"\xc7\xa2","\xc7\xa5"=>"\xc7\xa4","\xc7\xa7"=>"\xc7\xa6","\xc7\xa9"=>"\xc7\xa8",
-		"\xc7\xab"=>"\xc7\xaa","\xc7\xad"=>"\xc7\xac","\xc7\xaf"=>"\xc7\xae","\xc7\xb2"=>"\xc7\xb1",
-		"\xc7\xb3"=>"\xc7\xb1","\xc7\xb5"=>"\xc7\xb4","\xc7\xb9"=>"\xc7\xb8","\xc7\xbb"=>"\xc7\xba",
-		"\xc7\xbd"=>"\xc7\xbc","\xc7\xbf"=>"\xc7\xbe","\xc8\x81"=>"\xc8\x80","\xc8\x83"=>"\xc8\x82",
-		"\xc8\x85"=>"\xc8\x84","\xc8\x87"=>"\xc8\x86","\xc8\x89"=>"\xc8\x88","\xc8\x8b"=>"\xc8\x8a",
-		"\xc8\x8d"=>"\xc8\x8c","\xc8\x8f"=>"\xc8\x8e","\xc8\x91"=>"\xc8\x90","\xc8\x93"=>"\xc8\x92",
-		"\xc8\x95"=>"\xc8\x94","\xc8\x97"=>"\xc8\x96","\xc8\x99"=>"\xc8\x98","\xc8\x9b"=>"\xc8\x9a",
-		"\xc8\x9d"=>"\xc8\x9c","\xc8\x9f"=>"\xc8\x9e","\xc8\xa3"=>"\xc8\xa2","\xc8\xa5"=>"\xc8\xa4",
-		"\xc8\xa7"=>"\xc8\xa6","\xc8\xa9"=>"\xc8\xa8","\xc8\xab"=>"\xc8\xaa","\xc8\xad"=>"\xc8\xac",
-		"\xc8\xaf"=>"\xc8\xae","\xc8\xb1"=>"\xc8\xb0","\xc8\xb3"=>"\xc8\xb2","\xc9\x93"=>"\xc6\x81",
-		"\xc9\x94"=>"\xc6\x86","\xc9\x96"=>"\xc6\x89","\xc9\x97"=>"\xc6\x8a","\xc9\x99"=>"\xc6\x8f",
-		"\xc9\x9b"=>"\xc6\x90","\xc9\xa0"=>"\xc6\x93","\xc9\xa3"=>"\xc6\x94","\xc9\xa8"=>"\xc6\x97",
-		"\xc9\xa9"=>"\xc6\x96","\xc9\xaf"=>"\xc6\x9c","\xc9\xb2"=>"\xc6\x9d","\xc9\xb5"=>"\xc6\x9f",
-		"\xca\x80"=>"\xc6\xa6","\xca\x83"=>"\xc6\xa9","\xca\x88"=>"\xc6\xae","\xca\x8a"=>"\xc6\xb1",
-		"\xca\x8b"=>"\xc6\xb2","\xca\x92"=>"\xc6\xb7","\xcd\x85"=>"\xce\x99","\xce\xac"=>"\xce\x86",
-		"\xce\xad"=>"\xce\x88","\xce\xae"=>"\xce\x89","\xce\xaf"=>"\xce\x8a","\xce\xb1"=>"\xce\x91",
-		"\xce\xb2"=>"\xce\x92","\xce\xb3"=>"\xce\x93","\xce\xb4"=>"\xce\x94","\xce\xb5"=>"\xce\x95",
-		"\xce\xb6"=>"\xce\x96","\xce\xb7"=>"\xce\x97","\xce\xb8"=>"\xce\x98","\xce\xb9"=>"\xce\x99",
-		"\xce\xba"=>"\xce\x9a","\xce\xbb"=>"\xce\x9b","\xce\xbc"=>"\xce\x9c","\xce\xbd"=>"\xce\x9d",
-		"\xce\xbe"=>"\xce\x9e","\xce\xbf"=>"\xce\x9f","\xcf\x80"=>"\xce\xa0","\xcf\x81"=>"\xce\xa1",
-		"\xcf\x82"=>"\xce\xa3","\xcf\x83"=>"\xce\xa3","\xcf\x84"=>"\xce\xa4","\xcf\x85"=>"\xce\xa5",
-		"\xcf\x86"=>"\xce\xa6","\xcf\x87"=>"\xce\xa7","\xcf\x88"=>"\xce\xa8","\xcf\x89"=>"\xce\xa9",
-		"\xcf\x8a"=>"\xce\xaa","\xcf\x8b"=>"\xce\xab","\xcf\x8c"=>"\xce\x8c","\xcf\x8d"=>"\xce\x8e",
-		"\xcf\x8e"=>"\xce\x8f","\xcf\x90"=>"\xce\x92","\xcf\x91"=>"\xce\x98","\xcf\x95"=>"\xce\xa6",
-		"\xcf\x96"=>"\xce\xa0","\xcf\x9b"=>"\xcf\x9a","\xcf\x9d"=>"\xcf\x9c","\xcf\x9f"=>"\xcf\x9e",
-		"\xcf\xa1"=>"\xcf\xa0","\xcf\xa3"=>"\xcf\xa2","\xcf\xa5"=>"\xcf\xa4","\xcf\xa7"=>"\xcf\xa6",
-		"\xcf\xa9"=>"\xcf\xa8","\xcf\xab"=>"\xcf\xaa","\xcf\xad"=>"\xcf\xac","\xcf\xaf"=>"\xcf\xae",
-		"\xcf\xb0"=>"\xce\x9a","\xcf\xb1"=>"\xce\xa1","\xcf\xb2"=>"\xce\xa3","\xcf\xb5"=>"\xce\x95",
-		"\xd0\xb0"=>"\xd0\x90","\xd0\xb1"=>"\xd0\x91","\xd0\xb2"=>"\xd0\x92","\xd0\xb3"=>"\xd0\x93",
-		"\xd0\xb4"=>"\xd0\x94","\xd0\xb5"=>"\xd0\x95","\xd0\xb6"=>"\xd0\x96","\xd0\xb7"=>"\xd0\x97",
-		"\xd0\xb8"=>"\xd0\x98","\xd0\xb9"=>"\xd0\x99","\xd0\xba"=>"\xd0\x9a","\xd0\xbb"=>"\xd0\x9b",
-		"\xd0\xbc"=>"\xd0\x9c","\xd0\xbd"=>"\xd0\x9d","\xd0\xbe"=>"\xd0\x9e","\xd0\xbf"=>"\xd0\x9f",
-		"\xd1\x80"=>"\xd0\xa0","\xd1\x81"=>"\xd0\xa1","\xd1\x82"=>"\xd0\xa2","\xd1\x83"=>"\xd0\xa3",
-		"\xd1\x84"=>"\xd0\xa4","\xd1\x85"=>"\xd0\xa5","\xd1\x86"=>"\xd0\xa6","\xd1\x87"=>"\xd0\xa7",
-		"\xd1\x88"=>"\xd0\xa8","\xd1\x89"=>"\xd0\xa9","\xd1\x8a"=>"\xd0\xaa","\xd1\x8b"=>"\xd0\xab",
-		"\xd1\x8c"=>"\xd0\xac","\xd1\x8d"=>"\xd0\xad","\xd1\x8e"=>"\xd0\xae","\xd1\x8f"=>"\xd0\xaf",
-		"\xd1\x90"=>"\xd0\x80","\xd1\x91"=>"\xd0\x81","\xd1\x92"=>"\xd0\x82","\xd1\x93"=>"\xd0\x83",
-		"\xd1\x94"=>"\xd0\x84","\xd1\x95"=>"\xd0\x85","\xd1\x96"=>"\xd0\x86","\xd1\x97"=>"\xd0\x87",
-		"\xd1\x98"=>"\xd0\x88","\xd1\x99"=>"\xd0\x89","\xd1\x9a"=>"\xd0\x8a","\xd1\x9b"=>"\xd0\x8b",
-		"\xd1\x9c"=>"\xd0\x8c","\xd1\x9d"=>"\xd0\x8d","\xd1\x9e"=>"\xd0\x8e","\xd1\x9f"=>"\xd0\x8f",
-		"\xd1\xa1"=>"\xd1\xa0","\xd1\xa3"=>"\xd1\xa2","\xd1\xa5"=>"\xd1\xa4","\xd1\xa7"=>"\xd1\xa6",
-		"\xd1\xa9"=>"\xd1\xa8","\xd1\xab"=>"\xd1\xaa","\xd1\xad"=>"\xd1\xac","\xd1\xaf"=>"\xd1\xae",
-		"\xd1\xb1"=>"\xd1\xb0","\xd1\xb3"=>"\xd1\xb2","\xd1\xb5"=>"\xd1\xb4","\xd1\xb7"=>"\xd1\xb6",
-		"\xd1\xb9"=>"\xd1\xb8","\xd1\xbb"=>"\xd1\xba","\xd1\xbd"=>"\xd1\xbc","\xd1\xbf"=>"\xd1\xbe",
-		"\xd2\x81"=>"\xd2\x80","\xd2\x8d"=>"\xd2\x8c","\xd2\x8f"=>"\xd2\x8e","\xd2\x91"=>"\xd2\x90",
-		"\xd2\x93"=>"\xd2\x92","\xd2\x95"=>"\xd2\x94","\xd2\x97"=>"\xd2\x96","\xd2\x99"=>"\xd2\x98",
-		"\xd2\x9b"=>"\xd2\x9a","\xd2\x9d"=>"\xd2\x9c","\xd2\x9f"=>"\xd2\x9e","\xd2\xa1"=>"\xd2\xa0",
-		"\xd2\xa3"=>"\xd2\xa2","\xd2\xa5"=>"\xd2\xa4","\xd2\xa7"=>"\xd2\xa6","\xd2\xa9"=>"\xd2\xa8",
-		"\xd2\xab"=>"\xd2\xaa","\xd2\xad"=>"\xd2\xac","\xd2\xaf"=>"\xd2\xae","\xd2\xb1"=>"\xd2\xb0",
-		"\xd2\xb3"=>"\xd2\xb2","\xd2\xb5"=>"\xd2\xb4","\xd2\xb7"=>"\xd2\xb6","\xd2\xb9"=>"\xd2\xb8",
-		"\xd2\xbb"=>"\xd2\xba","\xd2\xbd"=>"\xd2\xbc","\xd2\xbf"=>"\xd2\xbe","\xd3\x82"=>"\xd3\x81",
-		"\xd3\x84"=>"\xd3\x83","\xd3\x88"=>"\xd3\x87","\xd3\x8c"=>"\xd3\x8b","\xd3\x91"=>"\xd3\x90",
-		"\xd3\x93"=>"\xd3\x92","\xd3\x95"=>"\xd3\x94","\xd3\x97"=>"\xd3\x96","\xd3\x99"=>"\xd3\x98",
-		"\xd3\x9b"=>"\xd3\x9a","\xd3\x9d"=>"\xd3\x9c","\xd3\x9f"=>"\xd3\x9e","\xd3\xa1"=>"\xd3\xa0",
-		"\xd3\xa3"=>"\xd3\xa2","\xd3\xa5"=>"\xd3\xa4","\xd3\xa7"=>"\xd3\xa6","\xd3\xa9"=>"\xd3\xa8",
-		"\xd3\xab"=>"\xd3\xaa","\xd3\xad"=>"\xd3\xac","\xd3\xaf"=>"\xd3\xae","\xd3\xb1"=>"\xd3\xb0",
-		"\xd3\xb3"=>"\xd3\xb2","\xd3\xb5"=>"\xd3\xb4","\xd3\xb9"=>"\xd3\xb8","\xd5\xa1"=>"\xd4\xb1",
-		"\xd5\xa2"=>"\xd4\xb2","\xd5\xa3"=>"\xd4\xb3","\xd5\xa4"=>"\xd4\xb4","\xd5\xa5"=>"\xd4\xb5",
-		"\xd5\xa6"=>"\xd4\xb6","\xd5\xa7"=>"\xd4\xb7","\xd5\xa8"=>"\xd4\xb8","\xd5\xa9"=>"\xd4\xb9",
-		"\xd5\xaa"=>"\xd4\xba","\xd5\xab"=>"\xd4\xbb","\xd5\xac"=>"\xd4\xbc","\xd5\xad"=>"\xd4\xbd",
-		"\xd5\xae"=>"\xd4\xbe","\xd5\xaf"=>"\xd4\xbf","\xd5\xb0"=>"\xd5\x80","\xd5\xb1"=>"\xd5\x81",
-		"\xd5\xb2"=>"\xd5\x82","\xd5\xb3"=>"\xd5\x83","\xd5\xb4"=>"\xd5\x84","\xd5\xb5"=>"\xd5\x85",
-		"\xd5\xb6"=>"\xd5\x86","\xd5\xb7"=>"\xd5\x87","\xd5\xb8"=>"\xd5\x88","\xd5\xb9"=>"\xd5\x89",
-		"\xd5\xba"=>"\xd5\x8a","\xd5\xbb"=>"\xd5\x8b","\xd5\xbc"=>"\xd5\x8c","\xd5\xbd"=>"\xd5\x8d",
-		"\xd5\xbe"=>"\xd5\x8e","\xd5\xbf"=>"\xd5\x8f","\xd6\x80"=>"\xd5\x90","\xd6\x81"=>"\xd5\x91",
-		"\xd6\x82"=>"\xd5\x92","\xd6\x83"=>"\xd5\x93","\xd6\x84"=>"\xd5\x94","\xd6\x85"=>"\xd5\x95",
-		"\xd6\x86"=>"\xd5\x96","\xe1\xb8\x81"=>"\xe1\xb8\x80","\xe1\xb8\x83"=>"\xe1\xb8\x82","\xe1\xb8\x85"=>"\xe1\xb8\x84",
-		"\xe1\xb8\x87"=>"\xe1\xb8\x86","\xe1\xb8\x89"=>"\xe1\xb8\x88","\xe1\xb8\x8b"=>"\xe1\xb8\x8a","\xe1\xb8\x8d"=>"\xe1\xb8\x8c",
-		"\xe1\xb8\x8f"=>"\xe1\xb8\x8e","\xe1\xb8\x91"=>"\xe1\xb8\x90","\xe1\xb8\x93"=>"\xe1\xb8\x92","\xe1\xb8\x95"=>"\xe1\xb8\x94",
-		"\xe1\xb8\x97"=>"\xe1\xb8\x96","\xe1\xb8\x99"=>"\xe1\xb8\x98","\xe1\xb8\x9b"=>"\xe1\xb8\x9a","\xe1\xb8\x9d"=>"\xe1\xb8\x9c",
-		"\xe1\xb8\x9f"=>"\xe1\xb8\x9e","\xe1\xb8\xa1"=>"\xe1\xb8\xa0","\xe1\xb8\xa3"=>"\xe1\xb8\xa2","\xe1\xb8\xa5"=>"\xe1\xb8\xa4",
-		"\xe1\xb8\xa7"=>"\xe1\xb8\xa6","\xe1\xb8\xa9"=>"\xe1\xb8\xa8","\xe1\xb8\xab"=>"\xe1\xb8\xaa","\xe1\xb8\xad"=>"\xe1\xb8\xac",
-		"\xe1\xb8\xaf"=>"\xe1\xb8\xae","\xe1\xb8\xb1"=>"\xe1\xb8\xb0","\xe1\xb8\xb3"=>"\xe1\xb8\xb2","\xe1\xb8\xb5"=>"\xe1\xb8\xb4",
-		"\xe1\xb8\xb7"=>"\xe1\xb8\xb6","\xe1\xb8\xb9"=>"\xe1\xb8\xb8","\xe1\xb8\xbb"=>"\xe1\xb8\xba","\xe1\xb8\xbd"=>"\xe1\xb8\xbc",
-		"\xe1\xb8\xbf"=>"\xe1\xb8\xbe","\xe1\xb9\x81"=>"\xe1\xb9\x80","\xe1\xb9\x83"=>"\xe1\xb9\x82","\xe1\xb9\x85"=>"\xe1\xb9\x84",
-		"\xe1\xb9\x87"=>"\xe1\xb9\x86","\xe1\xb9\x89"=>"\xe1\xb9\x88","\xe1\xb9\x8b"=>"\xe1\xb9\x8a","\xe1\xb9\x8d"=>"\xe1\xb9\x8c",
-		"\xe1\xb9\x8f"=>"\xe1\xb9\x8e","\xe1\xb9\x91"=>"\xe1\xb9\x90","\xe1\xb9\x93"=>"\xe1\xb9\x92","\xe1\xb9\x95"=>"\xe1\xb9\x94",
-		"\xe1\xb9\x97"=>"\xe1\xb9\x96","\xe1\xb9\x99"=>"\xe1\xb9\x98","\xe1\xb9\x9b"=>"\xe1\xb9\x9a","\xe1\xb9\x9d"=>"\xe1\xb9\x9c",
-		"\xe1\xb9\x9f"=>"\xe1\xb9\x9e","\xe1\xb9\xa1"=>"\xe1\xb9\xa0","\xe1\xb9\xa3"=>"\xe1\xb9\xa2","\xe1\xb9\xa5"=>"\xe1\xb9\xa4",
-		"\xe1\xb9\xa7"=>"\xe1\xb9\xa6","\xe1\xb9\xa9"=>"\xe1\xb9\xa8","\xe1\xb9\xab"=>"\xe1\xb9\xaa","\xe1\xb9\xad"=>"\xe1\xb9\xac",
-		"\xe1\xb9\xaf"=>"\xe1\xb9\xae","\xe1\xb9\xb1"=>"\xe1\xb9\xb0","\xe1\xb9\xb3"=>"\xe1\xb9\xb2","\xe1\xb9\xb5"=>"\xe1\xb9\xb4",
-		"\xe1\xb9\xb7"=>"\xe1\xb9\xb6","\xe1\xb9\xb9"=>"\xe1\xb9\xb8","\xe1\xb9\xbb"=>"\xe1\xb9\xba","\xe1\xb9\xbd"=>"\xe1\xb9\xbc",
-		"\xe1\xb9\xbf"=>"\xe1\xb9\xbe","\xe1\xba\x81"=>"\xe1\xba\x80","\xe1\xba\x83"=>"\xe1\xba\x82","\xe1\xba\x85"=>"\xe1\xba\x84",
-		"\xe1\xba\x87"=>"\xe1\xba\x86","\xe1\xba\x89"=>"\xe1\xba\x88","\xe1\xba\x8b"=>"\xe1\xba\x8a","\xe1\xba\x8d"=>"\xe1\xba\x8c",
-		"\xe1\xba\x8f"=>"\xe1\xba\x8e","\xe1\xba\x91"=>"\xe1\xba\x90","\xe1\xba\x93"=>"\xe1\xba\x92","\xe1\xba\x95"=>"\xe1\xba\x94",
-		"\xe1\xba\x9b"=>"\xe1\xb9\xa0","\xe1\xba\xa1"=>"\xe1\xba\xa0","\xe1\xba\xa3"=>"\xe1\xba\xa2","\xe1\xba\xa5"=>"\xe1\xba\xa4",
-		"\xe1\xba\xa7"=>"\xe1\xba\xa6","\xe1\xba\xa9"=>"\xe1\xba\xa8","\xe1\xba\xab"=>"\xe1\xba\xaa","\xe1\xba\xad"=>"\xe1\xba\xac",
-		"\xe1\xba\xaf"=>"\xe1\xba\xae","\xe1\xba\xb1"=>"\xe1\xba\xb0","\xe1\xba\xb3"=>"\xe1\xba\xb2","\xe1\xba\xb5"=>"\xe1\xba\xb4",
-		"\xe1\xba\xb7"=>"\xe1\xba\xb6","\xe1\xba\xb9"=>"\xe1\xba\xb8","\xe1\xba\xbb"=>"\xe1\xba\xba","\xe1\xba\xbd"=>"\xe1\xba\xbc",
-		"\xe1\xba\xbf"=>"\xe1\xba\xbe","\xe1\xbb\x81"=>"\xe1\xbb\x80","\xe1\xbb\x83"=>"\xe1\xbb\x82","\xe1\xbb\x85"=>"\xe1\xbb\x84",
-		"\xe1\xbb\x87"=>"\xe1\xbb\x86","\xe1\xbb\x89"=>"\xe1\xbb\x88","\xe1\xbb\x8b"=>"\xe1\xbb\x8a","\xe1\xbb\x8d"=>"\xe1\xbb\x8c",
-		"\xe1\xbb\x8f"=>"\xe1\xbb\x8e","\xe1\xbb\x91"=>"\xe1\xbb\x90","\xe1\xbb\x93"=>"\xe1\xbb\x92","\xe1\xbb\x95"=>"\xe1\xbb\x94",
-		"\xe1\xbb\x97"=>"\xe1\xbb\x96","\xe1\xbb\x99"=>"\xe1\xbb\x98","\xe1\xbb\x9b"=>"\xe1\xbb\x9a","\xe1\xbb\x9d"=>"\xe1\xbb\x9c",
-		"\xe1\xbb\x9f"=>"\xe1\xbb\x9e","\xe1\xbb\xa1"=>"\xe1\xbb\xa0","\xe1\xbb\xa3"=>"\xe1\xbb\xa2","\xe1\xbb\xa5"=>"\xe1\xbb\xa4",
-		"\xe1\xbb\xa7"=>"\xe1\xbb\xa6","\xe1\xbb\xa9"=>"\xe1\xbb\xa8","\xe1\xbb\xab"=>"\xe1\xbb\xaa","\xe1\xbb\xad"=>"\xe1\xbb\xac",
-		"\xe1\xbb\xaf"=>"\xe1\xbb\xae","\xe1\xbb\xb1"=>"\xe1\xbb\xb0","\xe1\xbb\xb3"=>"\xe1\xbb\xb2","\xe1\xbb\xb5"=>"\xe1\xbb\xb4",
-		"\xe1\xbb\xb7"=>"\xe1\xbb\xb6","\xe1\xbb\xb9"=>"\xe1\xbb\xb8","\xe1\xbc\x80"=>"\xe1\xbc\x88","\xe1\xbc\x81"=>"\xe1\xbc\x89",
-		"\xe1\xbc\x82"=>"\xe1\xbc\x8a","\xe1\xbc\x83"=>"\xe1\xbc\x8b","\xe1\xbc\x84"=>"\xe1\xbc\x8c","\xe1\xbc\x85"=>"\xe1\xbc\x8d",
-		"\xe1\xbc\x86"=>"\xe1\xbc\x8e","\xe1\xbc\x87"=>"\xe1\xbc\x8f","\xe1\xbc\x90"=>"\xe1\xbc\x98","\xe1\xbc\x91"=>"\xe1\xbc\x99",
-		"\xe1\xbc\x92"=>"\xe1\xbc\x9a","\xe1\xbc\x93"=>"\xe1\xbc\x9b","\xe1\xbc\x94"=>"\xe1\xbc\x9c","\xe1\xbc\x95"=>"\xe1\xbc\x9d",
-		"\xe1\xbc\xa0"=>"\xe1\xbc\xa8","\xe1\xbc\xa1"=>"\xe1\xbc\xa9","\xe1\xbc\xa2"=>"\xe1\xbc\xaa","\xe1\xbc\xa3"=>"\xe1\xbc\xab",
-		"\xe1\xbc\xa4"=>"\xe1\xbc\xac","\xe1\xbc\xa5"=>"\xe1\xbc\xad","\xe1\xbc\xa6"=>"\xe1\xbc\xae","\xe1\xbc\xa7"=>"\xe1\xbc\xaf",
-		"\xe1\xbc\xb0"=>"\xe1\xbc\xb8","\xe1\xbc\xb1"=>"\xe1\xbc\xb9","\xe1\xbc\xb2"=>"\xe1\xbc\xba","\xe1\xbc\xb3"=>"\xe1\xbc\xbb",
-		"\xe1\xbc\xb4"=>"\xe1\xbc\xbc","\xe1\xbc\xb5"=>"\xe1\xbc\xbd","\xe1\xbc\xb6"=>"\xe1\xbc\xbe","\xe1\xbc\xb7"=>"\xe1\xbc\xbf",
-		"\xe1\xbd\x80"=>"\xe1\xbd\x88","\xe1\xbd\x81"=>"\xe1\xbd\x89","\xe1\xbd\x82"=>"\xe1\xbd\x8a","\xe1\xbd\x83"=>"\xe1\xbd\x8b",
-		"\xe1\xbd\x84"=>"\xe1\xbd\x8c","\xe1\xbd\x85"=>"\xe1\xbd\x8d","\xe1\xbd\x91"=>"\xe1\xbd\x99","\xe1\xbd\x93"=>"\xe1\xbd\x9b",
-		"\xe1\xbd\x95"=>"\xe1\xbd\x9d","\xe1\xbd\x97"=>"\xe1\xbd\x9f","\xe1\xbd\xa0"=>"\xe1\xbd\xa8","\xe1\xbd\xa1"=>"\xe1\xbd\xa9",
-		"\xe1\xbd\xa2"=>"\xe1\xbd\xaa","\xe1\xbd\xa3"=>"\xe1\xbd\xab","\xe1\xbd\xa4"=>"\xe1\xbd\xac","\xe1\xbd\xa5"=>"\xe1\xbd\xad",
-		"\xe1\xbd\xa6"=>"\xe1\xbd\xae","\xe1\xbd\xa7"=>"\xe1\xbd\xaf","\xe1\xbd\xb0"=>"\xe1\xbe\xba","\xe1\xbd\xb1"=>"\xe1\xbe\xbb",
-		"\xe1\xbd\xb2"=>"\xe1\xbf\x88","\xe1\xbd\xb3"=>"\xe1\xbf\x89","\xe1\xbd\xb4"=>"\xe1\xbf\x8a","\xe1\xbd\xb5"=>"\xe1\xbf\x8b",
-		"\xe1\xbd\xb6"=>"\xe1\xbf\x9a","\xe1\xbd\xb7"=>"\xe1\xbf\x9b","\xe1\xbd\xb8"=>"\xe1\xbf\xb8","\xe1\xbd\xb9"=>"\xe1\xbf\xb9",
-		"\xe1\xbd\xba"=>"\xe1\xbf\xaa","\xe1\xbd\xbb"=>"\xe1\xbf\xab","\xe1\xbd\xbc"=>"\xe1\xbf\xba","\xe1\xbd\xbd"=>"\xe1\xbf\xbb",
-		"\xe1\xbe\x80"=>"\xe1\xbe\x88","\xe1\xbe\x81"=>"\xe1\xbe\x89","\xe1\xbe\x82"=>"\xe1\xbe\x8a","\xe1\xbe\x83"=>"\xe1\xbe\x8b",
-		"\xe1\xbe\x84"=>"\xe1\xbe\x8c","\xe1\xbe\x85"=>"\xe1\xbe\x8d","\xe1\xbe\x86"=>"\xe1\xbe\x8e","\xe1\xbe\x87"=>"\xe1\xbe\x8f",
-		"\xe1\xbe\x90"=>"\xe1\xbe\x98","\xe1\xbe\x91"=>"\xe1\xbe\x99","\xe1\xbe\x92"=>"\xe1\xbe\x9a","\xe1\xbe\x93"=>"\xe1\xbe\x9b",
-		"\xe1\xbe\x94"=>"\xe1\xbe\x9c","\xe1\xbe\x95"=>"\xe1\xbe\x9d","\xe1\xbe\x96"=>"\xe1\xbe\x9e","\xe1\xbe\x97"=>"\xe1\xbe\x9f",
-		"\xe1\xbe\xa0"=>"\xe1\xbe\xa8","\xe1\xbe\xa1"=>"\xe1\xbe\xa9","\xe1\xbe\xa2"=>"\xe1\xbe\xaa","\xe1\xbe\xa3"=>"\xe1\xbe\xab",
-		"\xe1\xbe\xa4"=>"\xe1\xbe\xac","\xe1\xbe\xa5"=>"\xe1\xbe\xad","\xe1\xbe\xa6"=>"\xe1\xbe\xae","\xe1\xbe\xa7"=>"\xe1\xbe\xaf",
-		"\xe1\xbe\xb0"=>"\xe1\xbe\xb8","\xe1\xbe\xb1"=>"\xe1\xbe\xb9","\xe1\xbe\xb3"=>"\xe1\xbe\xbc","\xe1\xbe\xbe"=>"\xce\x99",
-		"\xe1\xbf\x83"=>"\xe1\xbf\x8c","\xe1\xbf\x90"=>"\xe1\xbf\x98","\xe1\xbf\x91"=>"\xe1\xbf\x99","\xe1\xbf\xa0"=>"\xe1\xbf\xa8",
-		"\xe1\xbf\xa1"=>"\xe1\xbf\xa9","\xe1\xbf\xa5"=>"\xe1\xbf\xac","\xe1\xbf\xb3"=>"\xe1\xbf\xbc","\xe2\x85\xb0"=>"\xe2\x85\xa0",
-		"\xe2\x85\xb1"=>"\xe2\x85\xa1","\xe2\x85\xb2"=>"\xe2\x85\xa2","\xe2\x85\xb3"=>"\xe2\x85\xa3","\xe2\x85\xb4"=>"\xe2\x85\xa4",
-		"\xe2\x85\xb5"=>"\xe2\x85\xa5","\xe2\x85\xb6"=>"\xe2\x85\xa6","\xe2\x85\xb7"=>"\xe2\x85\xa7","\xe2\x85\xb8"=>"\xe2\x85\xa8",
-		"\xe2\x85\xb9"=>"\xe2\x85\xa9","\xe2\x85\xba"=>"\xe2\x85\xaa","\xe2\x85\xbb"=>"\xe2\x85\xab","\xe2\x85\xbc"=>"\xe2\x85\xac",
-		"\xe2\x85\xbd"=>"\xe2\x85\xad","\xe2\x85\xbe"=>"\xe2\x85\xae","\xe2\x85\xbf"=>"\xe2\x85\xaf","\xe2\x93\x90"=>"\xe2\x92\xb6",
-		"\xe2\x93\x91"=>"\xe2\x92\xb7","\xe2\x93\x92"=>"\xe2\x92\xb8","\xe2\x93\x93"=>"\xe2\x92\xb9","\xe2\x93\x94"=>"\xe2\x92\xba",
-		"\xe2\x93\x95"=>"\xe2\x92\xbb","\xe2\x93\x96"=>"\xe2\x92\xbc","\xe2\x93\x97"=>"\xe2\x92\xbd","\xe2\x93\x98"=>"\xe2\x92\xbe",
-		"\xe2\x93\x99"=>"\xe2\x92\xbf","\xe2\x93\x9a"=>"\xe2\x93\x80","\xe2\x93\x9b"=>"\xe2\x93\x81","\xe2\x93\x9c"=>"\xe2\x93\x82",
-		"\xe2\x93\x9d"=>"\xe2\x93\x83","\xe2\x93\x9e"=>"\xe2\x93\x84","\xe2\x93\x9f"=>"\xe2\x93\x85","\xe2\x93\xa0"=>"\xe2\x93\x86",
-		"\xe2\x93\xa1"=>"\xe2\x93\x87","\xe2\x93\xa2"=>"\xe2\x93\x88","\xe2\x93\xa3"=>"\xe2\x93\x89","\xe2\x93\xa4"=>"\xe2\x93\x8a",
-		"\xe2\x93\xa5"=>"\xe2\x93\x8b","\xe2\x93\xa6"=>"\xe2\x93\x8c","\xe2\x93\xa7"=>"\xe2\x93\x8d","\xe2\x93\xa8"=>"\xe2\x93\x8e",
-		"\xe2\x93\xa9"=>"\xe2\x93\x8f","\xef\xbd\x81"=>"\xef\xbc\xa1","\xef\xbd\x82"=>"\xef\xbc\xa2","\xef\xbd\x83"=>"\xef\xbc\xa3",
-		"\xef\xbd\x84"=>"\xef\xbc\xa4","\xef\xbd\x85"=>"\xef\xbc\xa5","\xef\xbd\x86"=>"\xef\xbc\xa6","\xef\xbd\x87"=>"\xef\xbc\xa7",
-		"\xef\xbd\x88"=>"\xef\xbc\xa8","\xef\xbd\x89"=>"\xef\xbc\xa9","\xef\xbd\x8a"=>"\xef\xbc\xaa","\xef\xbd\x8b"=>"\xef\xbc\xab",
-		"\xef\xbd\x8c"=>"\xef\xbc\xac","\xef\xbd\x8d"=>"\xef\xbc\xad","\xef\xbd\x8e"=>"\xef\xbc\xae","\xef\xbd\x8f"=>"\xef\xbc\xaf",
-		"\xef\xbd\x90"=>"\xef\xbc\xb0","\xef\xbd\x91"=>"\xef\xbc\xb1","\xef\xbd\x92"=>"\xef\xbc\xb2","\xef\xbd\x93"=>"\xef\xbc\xb3",
-		"\xef\xbd\x94"=>"\xef\xbc\xb4","\xef\xbd\x95"=>"\xef\xbc\xb5","\xef\xbd\x96"=>"\xef\xbc\xb6","\xef\xbd\x97"=>"\xef\xbc\xb7",
-		"\xef\xbd\x98"=>"\xef\xbc\xb8","\xef\xbd\x99"=>"\xef\xbc\xb9","\xef\xbd\x9a"=>"\xef\xbc\xba","\xf0\x90\x90\xa8"=>"\xf0\x90\x90\x80",
-		"\xf0\x90\x90\xa9"=>"\xf0\x90\x90\x81","\xf0\x90\x90\xaa"=>"\xf0\x90\x90\x82","\xf0\x90\x90\xab"=>"\xf0\x90\x90\x83","\xf0\x90\x90\xac"=>"\xf0\x90\x90\x84",
-		"\xf0\x90\x90\xad"=>"\xf0\x90\x90\x85","\xf0\x90\x90\xae"=>"\xf0\x90\x90\x86","\xf0\x90\x90\xaf"=>"\xf0\x90\x90\x87","\xf0\x90\x90\xb0"=>"\xf0\x90\x90\x88",
-		"\xf0\x90\x90\xb1"=>"\xf0\x90\x90\x89","\xf0\x90\x90\xb2"=>"\xf0\x90\x90\x8a","\xf0\x90\x90\xb3"=>"\xf0\x90\x90\x8b","\xf0\x90\x90\xb4"=>"\xf0\x90\x90\x8c",
-		"\xf0\x90\x90\xb5"=>"\xf0\x90\x90\x8d","\xf0\x90\x90\xb6"=>"\xf0\x90\x90\x8e","\xf0\x90\x90\xb7"=>"\xf0\x90\x90\x8f","\xf0\x90\x90\xb8"=>"\xf0\x90\x90\x90",
-		"\xf0\x90\x90\xb9"=>"\xf0\x90\x90\x91","\xf0\x90\x90\xba"=>"\xf0\x90\x90\x92","\xf0\x90\x90\xbb"=>"\xf0\x90\x90\x93","\xf0\x90\x90\xbc"=>"\xf0\x90\x90\x94",
-		"\xf0\x90\x90\xbd"=>"\xf0\x90\x90\x95","\xf0\x90\x90\xbe"=>"\xf0\x90\x90\x96","\xf0\x90\x90\xbf"=>"\xf0\x90\x90\x97","\xf0\x90\x91\x80"=>"\xf0\x90\x90\x98",
-		"\xf0\x90\x91\x81"=>"\xf0\x90\x90\x99","\xf0\x90\x91\x82"=>"\xf0\x90\x90\x9a","\xf0\x90\x91\x83"=>"\xf0\x90\x90\x9b","\xf0\x90\x91\x84"=>"\xf0\x90\x90\x9c",
-		"\xf0\x90\x91\x85"=>"\xf0\x90\x90\x9d","\xf0\x90\x91\x86"=>"\xf0\x90\x90\x9e","\xf0\x90\x91\x87"=>"\xf0\x90\x90\x9f","\xf0\x90\x91\x88"=>"\xf0\x90\x90\xa0",
-		"\xf0\x90\x91\x89"=>"\xf0\x90\x90\xa1","\xf0\x90\x91\x8a"=>"\xf0\x90\x90\xa2","\xf0\x90\x91\x8b"=>"\xf0\x90\x90\xa3","\xf0\x90\x91\x8c"=>"\xf0\x90\x90\xa4",
-		"\xf0\x90\x91\x8d"=>"\xf0\x90\x90\xa5","\xc3\x9f"=>"\x53\x53","\xef\xac\x80"=>"\x46\x46","\xef\xac\x81"=>"\x46\x49",
-		"\xef\xac\x82"=>"\x46\x4c","\xef\xac\x83"=>"\x46\x46\x49","\xef\xac\x84"=>"\x46\x46\x4c","\xef\xac\x85"=>"\x53\x54",
-		"\xef\xac\x86"=>"\x53\x54"
-	);
-  /**
-   * UTF-8 Case lookup table
-   *
-   * This lookuptable defines the lower case letters to their correspponding
-   * upper case letter in UTF-8
-   *
-   * @author Andreas Gohr <andi@splitbrain.org>
-   * @author thorn <thorn@nettest.thekk.de>
-   */
-	global $UTF8_UPPER_TO_LOWER;
-	$UTF8_UPPER_TO_LOWER = array(
-		"\x41"=>"\x61","\x42"=>"\x62","\x43"=>"\x63","\x44"=>"\x64",
-		"\x45"=>"\x65","\x46"=>"\x66","\x47"=>"\x67","\x48"=>"\x68",
-		"\x49"=>"\x69","\x4a"=>"\x6a","\x4b"=>"\x6b","\x4c"=>"\x6c",
-		"\x4d"=>"\x6d","\x4e"=>"\x6e","\x4f"=>"\x6f","\x50"=>"\x70",
-		"\x51"=>"\x71","\x52"=>"\x72","\x53"=>"\x73","\x54"=>"\x74",
-		"\x55"=>"\x75","\x56"=>"\x76","\x57"=>"\x77","\x58"=>"\x78",
-		"\x59"=>"\x79","\x5a"=>"\x7a","\xc3\x80"=>"\xc3\xa0","\xc3\x81"=>"\xc3\xa1",
-		"\xc3\x82"=>"\xc3\xa2","\xc3\x83"=>"\xc3\xa3","\xc3\x84"=>"\xc3\xa4","\xc3\x85"=>"\xc3\xa5",
-		"\xc3\x86"=>"\xc3\xa6","\xc3\x87"=>"\xc3\xa7","\xc3\x88"=>"\xc3\xa8","\xc3\x89"=>"\xc3\xa9",
-		"\xc3\x8a"=>"\xc3\xaa","\xc3\x8b"=>"\xc3\xab","\xc3\x8c"=>"\xc3\xac","\xc3\x8d"=>"\xc3\xad",
-		"\xc3\x8e"=>"\xc3\xae","\xc3\x8f"=>"\xc3\xaf","\xc3\x90"=>"\xc3\xb0","\xc3\x91"=>"\xc3\xb1",
-		"\xc3\x92"=>"\xc3\xb2","\xc3\x93"=>"\xc3\xb3","\xc3\x94"=>"\xc3\xb4","\xc3\x95"=>"\xc3\xb5",
-		"\xc3\x96"=>"\xc3\xb6","\xc3\x98"=>"\xc3\xb8","\xc3\x99"=>"\xc3\xb9","\xc3\x9a"=>"\xc3\xba",
-		"\xc3\x9b"=>"\xc3\xbb","\xc3\x9c"=>"\xc3\xbc","\xc3\x9d"=>"\xc3\xbd","\xc3\x9e"=>"\xc3\xbe",
-		"\xc4\x80"=>"\xc4\x81","\xc4\x82"=>"\xc4\x83","\xc4\x84"=>"\xc4\x85","\xc4\x86"=>"\xc4\x87",
-		"\xc4\x88"=>"\xc4\x89","\xc4\x8a"=>"\xc4\x8b","\xc4\x8c"=>"\xc4\x8d","\xc4\x8e"=>"\xc4\x8f",
-		"\xc4\x90"=>"\xc4\x91","\xc4\x92"=>"\xc4\x93","\xc4\x94"=>"\xc4\x95","\xc4\x96"=>"\xc4\x97",
-		"\xc4\x98"=>"\xc4\x99","\xc4\x9a"=>"\xc4\x9b","\xc4\x9c"=>"\xc4\x9d","\xc4\x9e"=>"\xc4\x9f",
-		"\xc4\xa0"=>"\xc4\xa1","\xc4\xa2"=>"\xc4\xa3","\xc4\xa4"=>"\xc4\xa5","\xc4\xa6"=>"\xc4\xa7",
-		"\xc4\xa8"=>"\xc4\xa9","\xc4\xaa"=>"\xc4\xab","\xc4\xac"=>"\xc4\xad","\xc4\xae"=>"\xc4\xaf",
-		"\xc4\xb0"=>"\x69","\xc4\xb2"=>"\xc4\xb3","\xc4\xb4"=>"\xc4\xb5","\xc4\xb6"=>"\xc4\xb7",
-		"\xc4\xb9"=>"\xc4\xba","\xc4\xbb"=>"\xc4\xbc","\xc4\xbd"=>"\xc4\xbe","\xc4\xbf"=>"\xc5\x80",
-		"\xc5\x81"=>"\xc5\x82","\xc5\x83"=>"\xc5\x84","\xc5\x85"=>"\xc5\x86","\xc5\x87"=>"\xc5\x88",
-		"\xc5\x8a"=>"\xc5\x8b","\xc5\x8c"=>"\xc5\x8d","\xc5\x8e"=>"\xc5\x8f","\xc5\x90"=>"\xc5\x91",
-		"\xc5\x92"=>"\xc5\x93","\xc5\x94"=>"\xc5\x95","\xc5\x96"=>"\xc5\x97","\xc5\x98"=>"\xc5\x99",
-		"\xc5\x9a"=>"\xc5\x9b","\xc5\x9c"=>"\xc5\x9d","\xc5\x9e"=>"\xc5\x9f","\xc5\xa0"=>"\xc5\xa1",
-		"\xc5\xa2"=>"\xc5\xa3","\xc5\xa4"=>"\xc5\xa5","\xc5\xa6"=>"\xc5\xa7","\xc5\xa8"=>"\xc5\xa9",
-		"\xc5\xaa"=>"\xc5\xab","\xc5\xac"=>"\xc5\xad","\xc5\xae"=>"\xc5\xaf","\xc5\xb0"=>"\xc5\xb1",
-		"\xc5\xb2"=>"\xc5\xb3","\xc5\xb4"=>"\xc5\xb5","\xc5\xb6"=>"\xc5\xb7","\xc5\xb8"=>"\xc3\xbf",
-		"\xc5\xb9"=>"\xc5\xba","\xc5\xbb"=>"\xc5\xbc","\xc5\xbd"=>"\xc5\xbe","\xc6\x81"=>"\xc9\x93",
-		"\xc6\x82"=>"\xc6\x83","\xc6\x84"=>"\xc6\x85","\xc6\x86"=>"\xc9\x94","\xc6\x87"=>"\xc6\x88",
-		"\xc6\x89"=>"\xc9\x96","\xc6\x8a"=>"\xc9\x97","\xc6\x8b"=>"\xc6\x8c","\xc6\x8e"=>"\xc7\x9d",
-		"\xc6\x8f"=>"\xc9\x99","\xc6\x90"=>"\xc9\x9b","\xc6\x91"=>"\xc6\x92","\xc6\x93"=>"\xc9\xa0",
-		"\xc6\x94"=>"\xc9\xa3","\xc6\x96"=>"\xc9\xa9","\xc6\x97"=>"\xc9\xa8","\xc6\x98"=>"\xc6\x99",
-		"\xc6\x9c"=>"\xc9\xaf","\xc6\x9d"=>"\xc9\xb2","\xc6\x9f"=>"\xc9\xb5","\xc6\xa0"=>"\xc6\xa1",
-		"\xc6\xa2"=>"\xc6\xa3","\xc6\xa4"=>"\xc6\xa5","\xc6\xa6"=>"\xca\x80","\xc6\xa7"=>"\xc6\xa8",
-		"\xc6\xa9"=>"\xca\x83","\xc6\xac"=>"\xc6\xad","\xc6\xae"=>"\xca\x88","\xc6\xaf"=>"\xc6\xb0",
-		"\xc6\xb1"=>"\xca\x8a","\xc6\xb2"=>"\xca\x8b","\xc6\xb3"=>"\xc6\xb4","\xc6\xb5"=>"\xc6\xb6",
-		"\xc6\xb7"=>"\xca\x92","\xc6\xb8"=>"\xc6\xb9","\xc6\xbc"=>"\xc6\xbd","\xc7\x84"=>"\xc7\x86",
-		"\xc7\x85"=>"\xc7\x86","\xc7\x87"=>"\xc7\x89","\xc7\x88"=>"\xc7\x89","\xc7\x8a"=>"\xc7\x8c",
-		"\xc7\x8b"=>"\xc7\x8c","\xc7\x8d"=>"\xc7\x8e","\xc7\x8f"=>"\xc7\x90","\xc7\x91"=>"\xc7\x92",
-		"\xc7\x93"=>"\xc7\x94","\xc7\x95"=>"\xc7\x96","\xc7\x97"=>"\xc7\x98","\xc7\x99"=>"\xc7\x9a",
-		"\xc7\x9b"=>"\xc7\x9c","\xc7\x9e"=>"\xc7\x9f","\xc7\xa0"=>"\xc7\xa1","\xc7\xa2"=>"\xc7\xa3",
-		"\xc7\xa4"=>"\xc7\xa5","\xc7\xa6"=>"\xc7\xa7","\xc7\xa8"=>"\xc7\xa9","\xc7\xaa"=>"\xc7\xab",
-		"\xc7\xac"=>"\xc7\xad","\xc7\xae"=>"\xc7\xaf","\xc7\xb1"=>"\xc7\xb3","\xc7\xb2"=>"\xc7\xb3",
-		"\xc7\xb4"=>"\xc7\xb5","\xc7\xb6"=>"\xc6\x95","\xc7\xb7"=>"\xc6\xbf","\xc7\xb8"=>"\xc7\xb9",
-		"\xc7\xba"=>"\xc7\xbb","\xc7\xbc"=>"\xc7\xbd","\xc7\xbe"=>"\xc7\xbf","\xc8\x80"=>"\xc8\x81",
-		"\xc8\x82"=>"\xc8\x83","\xc8\x84"=>"\xc8\x85","\xc8\x86"=>"\xc8\x87","\xc8\x88"=>"\xc8\x89",
-		"\xc8\x8a"=>"\xc8\x8b","\xc8\x8c"=>"\xc8\x8d","\xc8\x8e"=>"\xc8\x8f","\xc8\x90"=>"\xc8\x91",
-		"\xc8\x92"=>"\xc8\x93","\xc8\x94"=>"\xc8\x95","\xc8\x96"=>"\xc8\x97","\xc8\x98"=>"\xc8\x99",
-		"\xc8\x9a"=>"\xc8\x9b","\xc8\x9c"=>"\xc8\x9d","\xc8\x9e"=>"\xc8\x9f","\xc8\xa2"=>"\xc8\xa3",
-		"\xc8\xa4"=>"\xc8\xa5","\xc8\xa6"=>"\xc8\xa7","\xc8\xa8"=>"\xc8\xa9","\xc8\xaa"=>"\xc8\xab",
-		"\xc8\xac"=>"\xc8\xad","\xc8\xae"=>"\xc8\xaf","\xc8\xb0"=>"\xc8\xb1","\xc8\xb2"=>"\xc8\xb3",
-		"\xce\x86"=>"\xce\xac","\xce\x88"=>"\xce\xad","\xce\x89"=>"\xce\xae","\xce\x8a"=>"\xce\xaf",
-		"\xce\x8c"=>"\xcf\x8c","\xce\x8e"=>"\xcf\x8d","\xce\x8f"=>"\xcf\x8e","\xce\x91"=>"\xce\xb1",
-		"\xce\x92"=>"\xce\xb2","\xce\x93"=>"\xce\xb3","\xce\x94"=>"\xce\xb4","\xce\x95"=>"\xce\xb5",
-		"\xce\x96"=>"\xce\xb6","\xce\x97"=>"\xce\xb7","\xce\x98"=>"\xce\xb8","\xce\x99"=>"\xce\xb9",
-		"\xce\x9a"=>"\xce\xba","\xce\x9b"=>"\xce\xbb","\xce\x9c"=>"\xce\xbc","\xce\x9d"=>"\xce\xbd",
-		"\xce\x9e"=>"\xce\xbe","\xce\x9f"=>"\xce\xbf","\xce\xa0"=>"\xcf\x80","\xce\xa1"=>"\xcf\x81",
-		"\xce\xa3"=>"\xcf\x83","\xce\xa4"=>"\xcf\x84","\xce\xa5"=>"\xcf\x85","\xce\xa6"=>"\xcf\x86",
-		"\xce\xa7"=>"\xcf\x87","\xce\xa8"=>"\xcf\x88","\xce\xa9"=>"\xcf\x89","\xce\xaa"=>"\xcf\x8a",
-		"\xce\xab"=>"\xcf\x8b","\xcf\x9a"=>"\xcf\x9b","\xcf\x9c"=>"\xcf\x9d","\xcf\x9e"=>"\xcf\x9f",
-		"\xcf\xa0"=>"\xcf\xa1","\xcf\xa2"=>"\xcf\xa3","\xcf\xa4"=>"\xcf\xa5","\xcf\xa6"=>"\xcf\xa7",
-		"\xcf\xa8"=>"\xcf\xa9","\xcf\xaa"=>"\xcf\xab","\xcf\xac"=>"\xcf\xad","\xcf\xae"=>"\xcf\xaf",
-		"\xcf\xb4"=>"\xce\xb8","\xd0\x80"=>"\xd1\x90","\xd0\x81"=>"\xd1\x91","\xd0\x82"=>"\xd1\x92",
-		"\xd0\x83"=>"\xd1\x93","\xd0\x84"=>"\xd1\x94","\xd0\x85"=>"\xd1\x95","\xd0\x86"=>"\xd1\x96",
-		"\xd0\x87"=>"\xd1\x97","\xd0\x88"=>"\xd1\x98","\xd0\x89"=>"\xd1\x99","\xd0\x8a"=>"\xd1\x9a",
-		"\xd0\x8b"=>"\xd1\x9b","\xd0\x8c"=>"\xd1\x9c","\xd0\x8d"=>"\xd1\x9d","\xd0\x8e"=>"\xd1\x9e",
-		"\xd0\x8f"=>"\xd1\x9f","\xd0\x90"=>"\xd0\xb0","\xd0\x91"=>"\xd0\xb1","\xd0\x92"=>"\xd0\xb2",
-		"\xd0\x93"=>"\xd0\xb3","\xd0\x94"=>"\xd0\xb4","\xd0\x95"=>"\xd0\xb5","\xd0\x96"=>"\xd0\xb6",
-		"\xd0\x97"=>"\xd0\xb7","\xd0\x98"=>"\xd0\xb8","\xd0\x99"=>"\xd0\xb9","\xd0\x9a"=>"\xd0\xba",
-		"\xd0\x9b"=>"\xd0\xbb","\xd0\x9c"=>"\xd0\xbc","\xd0\x9d"=>"\xd0\xbd","\xd0\x9e"=>"\xd0\xbe",
-		"\xd0\x9f"=>"\xd0\xbf","\xd0\xa0"=>"\xd1\x80","\xd0\xa1"=>"\xd1\x81","\xd0\xa2"=>"\xd1\x82",
-		"\xd0\xa3"=>"\xd1\x83","\xd0\xa4"=>"\xd1\x84","\xd0\xa5"=>"\xd1\x85","\xd0\xa6"=>"\xd1\x86",
-		"\xd0\xa7"=>"\xd1\x87","\xd0\xa8"=>"\xd1\x88","\xd0\xa9"=>"\xd1\x89","\xd0\xaa"=>"\xd1\x8a",
-		"\xd0\xab"=>"\xd1\x8b","\xd0\xac"=>"\xd1\x8c","\xd0\xad"=>"\xd1\x8d","\xd0\xae"=>"\xd1\x8e",
-		"\xd0\xaf"=>"\xd1\x8f","\xd1\xa0"=>"\xd1\xa1","\xd1\xa2"=>"\xd1\xa3","\xd1\xa4"=>"\xd1\xa5",
-		"\xd1\xa6"=>"\xd1\xa7","\xd1\xa8"=>"\xd1\xa9","\xd1\xaa"=>"\xd1\xab","\xd1\xac"=>"\xd1\xad",
-		"\xd1\xae"=>"\xd1\xaf","\xd1\xb0"=>"\xd1\xb1","\xd1\xb2"=>"\xd1\xb3","\xd1\xb4"=>"\xd1\xb5",
-		"\xd1\xb6"=>"\xd1\xb7","\xd1\xb8"=>"\xd1\xb9","\xd1\xba"=>"\xd1\xbb","\xd1\xbc"=>"\xd1\xbd",
-		"\xd1\xbe"=>"\xd1\xbf","\xd2\x80"=>"\xd2\x81","\xd2\x8c"=>"\xd2\x8d","\xd2\x8e"=>"\xd2\x8f",
-		"\xd2\x90"=>"\xd2\x91","\xd2\x92"=>"\xd2\x93","\xd2\x94"=>"\xd2\x95","\xd2\x96"=>"\xd2\x97",
-		"\xd2\x98"=>"\xd2\x99","\xd2\x9a"=>"\xd2\x9b","\xd2\x9c"=>"\xd2\x9d","\xd2\x9e"=>"\xd2\x9f",
-		"\xd2\xa0"=>"\xd2\xa1","\xd2\xa2"=>"\xd2\xa3","\xd2\xa4"=>"\xd2\xa5","\xd2\xa6"=>"\xd2\xa7",
-		"\xd2\xa8"=>"\xd2\xa9","\xd2\xaa"=>"\xd2\xab","\xd2\xac"=>"\xd2\xad","\xd2\xae"=>"\xd2\xaf",
-		"\xd2\xb0"=>"\xd2\xb1","\xd2\xb2"=>"\xd2\xb3","\xd2\xb4"=>"\xd2\xb5","\xd2\xb6"=>"\xd2\xb7",
-		"\xd2\xb8"=>"\xd2\xb9","\xd2\xba"=>"\xd2\xbb","\xd2\xbc"=>"\xd2\xbd","\xd2\xbe"=>"\xd2\xbf",
-		"\xd3\x81"=>"\xd3\x82","\xd3\x83"=>"\xd3\x84","\xd3\x87"=>"\xd3\x88","\xd3\x8b"=>"\xd3\x8c",
-		"\xd3\x90"=>"\xd3\x91","\xd3\x92"=>"\xd3\x93","\xd3\x94"=>"\xd3\x95","\xd3\x96"=>"\xd3\x97",
-		"\xd3\x98"=>"\xd3\x99","\xd3\x9a"=>"\xd3\x9b","\xd3\x9c"=>"\xd3\x9d","\xd3\x9e"=>"\xd3\x9f",
-		"\xd3\xa0"=>"\xd3\xa1","\xd3\xa2"=>"\xd3\xa3","\xd3\xa4"=>"\xd3\xa5","\xd3\xa6"=>"\xd3\xa7",
-		"\xd3\xa8"=>"\xd3\xa9","\xd3\xaa"=>"\xd3\xab","\xd3\xac"=>"\xd3\xad","\xd3\xae"=>"\xd3\xaf",
-		"\xd3\xb0"=>"\xd3\xb1","\xd3\xb2"=>"\xd3\xb3","\xd3\xb4"=>"\xd3\xb5","\xd3\xb8"=>"\xd3\xb9",
-		"\xd4\xb1"=>"\xd5\xa1","\xd4\xb2"=>"\xd5\xa2","\xd4\xb3"=>"\xd5\xa3","\xd4\xb4"=>"\xd5\xa4",
-		"\xd4\xb5"=>"\xd5\xa5","\xd4\xb6"=>"\xd5\xa6","\xd4\xb7"=>"\xd5\xa7","\xd4\xb8"=>"\xd5\xa8",
-		"\xd4\xb9"=>"\xd5\xa9","\xd4\xba"=>"\xd5\xaa","\xd4\xbb"=>"\xd5\xab","\xd4\xbc"=>"\xd5\xac",
-		"\xd4\xbd"=>"\xd5\xad","\xd4\xbe"=>"\xd5\xae","\xd4\xbf"=>"\xd5\xaf","\xd5\x80"=>"\xd5\xb0",
-		"\xd5\x81"=>"\xd5\xb1","\xd5\x82"=>"\xd5\xb2","\xd5\x83"=>"\xd5\xb3","\xd5\x84"=>"\xd5\xb4",
-		"\xd5\x85"=>"\xd5\xb5","\xd5\x86"=>"\xd5\xb6","\xd5\x87"=>"\xd5\xb7","\xd5\x88"=>"\xd5\xb8",
-		"\xd5\x89"=>"\xd5\xb9","\xd5\x8a"=>"\xd5\xba","\xd5\x8b"=>"\xd5\xbb","\xd5\x8c"=>"\xd5\xbc",
-		"\xd5\x8d"=>"\xd5\xbd","\xd5\x8e"=>"\xd5\xbe","\xd5\x8f"=>"\xd5\xbf","\xd5\x90"=>"\xd6\x80",
-		"\xd5\x91"=>"\xd6\x81","\xd5\x92"=>"\xd6\x82","\xd5\x93"=>"\xd6\x83","\xd5\x94"=>"\xd6\x84",
-		"\xd5\x95"=>"\xd6\x85","\xd5\x96"=>"\xd6\x86","\xe1\xb8\x80"=>"\xe1\xb8\x81","\xe1\xb8\x82"=>"\xe1\xb8\x83",
-		"\xe1\xb8\x84"=>"\xe1\xb8\x85","\xe1\xb8\x86"=>"\xe1\xb8\x87","\xe1\xb8\x88"=>"\xe1\xb8\x89","\xe1\xb8\x8a"=>"\xe1\xb8\x8b",
-		"\xe1\xb8\x8c"=>"\xe1\xb8\x8d","\xe1\xb8\x8e"=>"\xe1\xb8\x8f","\xe1\xb8\x90"=>"\xe1\xb8\x91","\xe1\xb8\x92"=>"\xe1\xb8\x93",
-		"\xe1\xb8\x94"=>"\xe1\xb8\x95","\xe1\xb8\x96"=>"\xe1\xb8\x97","\xe1\xb8\x98"=>"\xe1\xb8\x99","\xe1\xb8\x9a"=>"\xe1\xb8\x9b",
-		"\xe1\xb8\x9c"=>"\xe1\xb8\x9d","\xe1\xb8\x9e"=>"\xe1\xb8\x9f","\xe1\xb8\xa0"=>"\xe1\xb8\xa1","\xe1\xb8\xa2"=>"\xe1\xb8\xa3",
-		"\xe1\xb8\xa4"=>"\xe1\xb8\xa5","\xe1\xb8\xa6"=>"\xe1\xb8\xa7","\xe1\xb8\xa8"=>"\xe1\xb8\xa9","\xe1\xb8\xaa"=>"\xe1\xb8\xab",
-		"\xe1\xb8\xac"=>"\xe1\xb8\xad","\xe1\xb8\xae"=>"\xe1\xb8\xaf","\xe1\xb8\xb0"=>"\xe1\xb8\xb1","\xe1\xb8\xb2"=>"\xe1\xb8\xb3",
-		"\xe1\xb8\xb4"=>"\xe1\xb8\xb5","\xe1\xb8\xb6"=>"\xe1\xb8\xb7","\xe1\xb8\xb8"=>"\xe1\xb8\xb9","\xe1\xb8\xba"=>"\xe1\xb8\xbb",
-		"\xe1\xb8\xbc"=>"\xe1\xb8\xbd","\xe1\xb8\xbe"=>"\xe1\xb8\xbf","\xe1\xb9\x80"=>"\xe1\xb9\x81","\xe1\xb9\x82"=>"\xe1\xb9\x83",
-		"\xe1\xb9\x84"=>"\xe1\xb9\x85","\xe1\xb9\x86"=>"\xe1\xb9\x87","\xe1\xb9\x88"=>"\xe1\xb9\x89","\xe1\xb9\x8a"=>"\xe1\xb9\x8b",
-		"\xe1\xb9\x8c"=>"\xe1\xb9\x8d","\xe1\xb9\x8e"=>"\xe1\xb9\x8f","\xe1\xb9\x90"=>"\xe1\xb9\x91","\xe1\xb9\x92"=>"\xe1\xb9\x93",
-		"\xe1\xb9\x94"=>"\xe1\xb9\x95","\xe1\xb9\x96"=>"\xe1\xb9\x97","\xe1\xb9\x98"=>"\xe1\xb9\x99","\xe1\xb9\x9a"=>"\xe1\xb9\x9b",
-		"\xe1\xb9\x9c"=>"\xe1\xb9\x9d","\xe1\xb9\x9e"=>"\xe1\xb9\x9f","\xe1\xb9\xa0"=>"\xe1\xb9\xa1","\xe1\xb9\xa2"=>"\xe1\xb9\xa3",
-		"\xe1\xb9\xa4"=>"\xe1\xb9\xa5","\xe1\xb9\xa6"=>"\xe1\xb9\xa7","\xe1\xb9\xa8"=>"\xe1\xb9\xa9","\xe1\xb9\xaa"=>"\xe1\xb9\xab",
-		"\xe1\xb9\xac"=>"\xe1\xb9\xad","\xe1\xb9\xae"=>"\xe1\xb9\xaf","\xe1\xb9\xb0"=>"\xe1\xb9\xb1","\xe1\xb9\xb2"=>"\xe1\xb9\xb3",
-		"\xe1\xb9\xb4"=>"\xe1\xb9\xb5","\xe1\xb9\xb6"=>"\xe1\xb9\xb7","\xe1\xb9\xb8"=>"\xe1\xb9\xb9","\xe1\xb9\xba"=>"\xe1\xb9\xbb",
-		"\xe1\xb9\xbc"=>"\xe1\xb9\xbd","\xe1\xb9\xbe"=>"\xe1\xb9\xbf","\xe1\xba\x80"=>"\xe1\xba\x81","\xe1\xba\x82"=>"\xe1\xba\x83",
-		"\xe1\xba\x84"=>"\xe1\xba\x85","\xe1\xba\x86"=>"\xe1\xba\x87","\xe1\xba\x88"=>"\xe1\xba\x89","\xe1\xba\x8a"=>"\xe1\xba\x8b",
-		"\xe1\xba\x8c"=>"\xe1\xba\x8d","\xe1\xba\x8e"=>"\xe1\xba\x8f","\xe1\xba\x90"=>"\xe1\xba\x91","\xe1\xba\x92"=>"\xe1\xba\x93",
-		"\xe1\xba\x94"=>"\xe1\xba\x95","\xe1\xba\xa0"=>"\xe1\xba\xa1","\xe1\xba\xa2"=>"\xe1\xba\xa3","\xe1\xba\xa4"=>"\xe1\xba\xa5",
-		"\xe1\xba\xa6"=>"\xe1\xba\xa7","\xe1\xba\xa8"=>"\xe1\xba\xa9","\xe1\xba\xaa"=>"\xe1\xba\xab","\xe1\xba\xac"=>"\xe1\xba\xad",
-		"\xe1\xba\xae"=>"\xe1\xba\xaf","\xe1\xba\xb0"=>"\xe1\xba\xb1","\xe1\xba\xb2"=>"\xe1\xba\xb3","\xe1\xba\xb4"=>"\xe1\xba\xb5",
-		"\xe1\xba\xb6"=>"\xe1\xba\xb7","\xe1\xba\xb8"=>"\xe1\xba\xb9","\xe1\xba\xba"=>"\xe1\xba\xbb","\xe1\xba\xbc"=>"\xe1\xba\xbd",
-		"\xe1\xba\xbe"=>"\xe1\xba\xbf","\xe1\xbb\x80"=>"\xe1\xbb\x81","\xe1\xbb\x82"=>"\xe1\xbb\x83","\xe1\xbb\x84"=>"\xe1\xbb\x85",
-		"\xe1\xbb\x86"=>"\xe1\xbb\x87","\xe1\xbb\x88"=>"\xe1\xbb\x89","\xe1\xbb\x8a"=>"\xe1\xbb\x8b","\xe1\xbb\x8c"=>"\xe1\xbb\x8d",
-		"\xe1\xbb\x8e"=>"\xe1\xbb\x8f","\xe1\xbb\x90"=>"\xe1\xbb\x91","\xe1\xbb\x92"=>"\xe1\xbb\x93","\xe1\xbb\x94"=>"\xe1\xbb\x95",
-		"\xe1\xbb\x96"=>"\xe1\xbb\x97","\xe1\xbb\x98"=>"\xe1\xbb\x99","\xe1\xbb\x9a"=>"\xe1\xbb\x9b","\xe1\xbb\x9c"=>"\xe1\xbb\x9d",
-		"\xe1\xbb\x9e"=>"\xe1\xbb\x9f","\xe1\xbb\xa0"=>"\xe1\xbb\xa1","\xe1\xbb\xa2"=>"\xe1\xbb\xa3","\xe1\xbb\xa4"=>"\xe1\xbb\xa5",
-		"\xe1\xbb\xa6"=>"\xe1\xbb\xa7","\xe1\xbb\xa8"=>"\xe1\xbb\xa9","\xe1\xbb\xaa"=>"\xe1\xbb\xab","\xe1\xbb\xac"=>"\xe1\xbb\xad",
-		"\xe1\xbb\xae"=>"\xe1\xbb\xaf","\xe1\xbb\xb0"=>"\xe1\xbb\xb1","\xe1\xbb\xb2"=>"\xe1\xbb\xb3","\xe1\xbb\xb4"=>"\xe1\xbb\xb5",
-		"\xe1\xbb\xb6"=>"\xe1\xbb\xb7","\xe1\xbb\xb8"=>"\xe1\xbb\xb9","\xe1\xbc\x88"=>"\xe1\xbc\x80","\xe1\xbc\x89"=>"\xe1\xbc\x81",
-		"\xe1\xbc\x8a"=>"\xe1\xbc\x82","\xe1\xbc\x8b"=>"\xe1\xbc\x83","\xe1\xbc\x8c"=>"\xe1\xbc\x84","\xe1\xbc\x8d"=>"\xe1\xbc\x85",
-		"\xe1\xbc\x8e"=>"\xe1\xbc\x86","\xe1\xbc\x8f"=>"\xe1\xbc\x87","\xe1\xbc\x98"=>"\xe1\xbc\x90","\xe1\xbc\x99"=>"\xe1\xbc\x91",
-		"\xe1\xbc\x9a"=>"\xe1\xbc\x92","\xe1\xbc\x9b"=>"\xe1\xbc\x93","\xe1\xbc\x9c"=>"\xe1\xbc\x94","\xe1\xbc\x9d"=>"\xe1\xbc\x95",
-		"\xe1\xbc\xa8"=>"\xe1\xbc\xa0","\xe1\xbc\xa9"=>"\xe1\xbc\xa1","\xe1\xbc\xaa"=>"\xe1\xbc\xa2","\xe1\xbc\xab"=>"\xe1\xbc\xa3",
-		"\xe1\xbc\xac"=>"\xe1\xbc\xa4","\xe1\xbc\xad"=>"\xe1\xbc\xa5","\xe1\xbc\xae"=>"\xe1\xbc\xa6","\xe1\xbc\xaf"=>"\xe1\xbc\xa7",
-		"\xe1\xbc\xb8"=>"\xe1\xbc\xb0","\xe1\xbc\xb9"=>"\xe1\xbc\xb1","\xe1\xbc\xba"=>"\xe1\xbc\xb2","\xe1\xbc\xbb"=>"\xe1\xbc\xb3",
-		"\xe1\xbc\xbc"=>"\xe1\xbc\xb4","\xe1\xbc\xbd"=>"\xe1\xbc\xb5","\xe1\xbc\xbe"=>"\xe1\xbc\xb6","\xe1\xbc\xbf"=>"\xe1\xbc\xb7",
-		"\xe1\xbd\x88"=>"\xe1\xbd\x80","\xe1\xbd\x89"=>"\xe1\xbd\x81","\xe1\xbd\x8a"=>"\xe1\xbd\x82","\xe1\xbd\x8b"=>"\xe1\xbd\x83",
-		"\xe1\xbd\x8c"=>"\xe1\xbd\x84","\xe1\xbd\x8d"=>"\xe1\xbd\x85","\xe1\xbd\x99"=>"\xe1\xbd\x91","\xe1\xbd\x9b"=>"\xe1\xbd\x93",
-		"\xe1\xbd\x9d"=>"\xe1\xbd\x95","\xe1\xbd\x9f"=>"\xe1\xbd\x97","\xe1\xbd\xa8"=>"\xe1\xbd\xa0","\xe1\xbd\xa9"=>"\xe1\xbd\xa1",
-		"\xe1\xbd\xaa"=>"\xe1\xbd\xa2","\xe1\xbd\xab"=>"\xe1\xbd\xa3","\xe1\xbd\xac"=>"\xe1\xbd\xa4","\xe1\xbd\xad"=>"\xe1\xbd\xa5",
-		"\xe1\xbd\xae"=>"\xe1\xbd\xa6","\xe1\xbd\xaf"=>"\xe1\xbd\xa7","\xe1\xbe\x88"=>"\xe1\xbe\x80","\xe1\xbe\x89"=>"\xe1\xbe\x81",
-		"\xe1\xbe\x8a"=>"\xe1\xbe\x82","\xe1\xbe\x8b"=>"\xe1\xbe\x83","\xe1\xbe\x8c"=>"\xe1\xbe\x84","\xe1\xbe\x8d"=>"\xe1\xbe\x85",
-		"\xe1\xbe\x8e"=>"\xe1\xbe\x86","\xe1\xbe\x8f"=>"\xe1\xbe\x87","\xe1\xbe\x98"=>"\xe1\xbe\x90","\xe1\xbe\x99"=>"\xe1\xbe\x91",
-		"\xe1\xbe\x9a"=>"\xe1\xbe\x92","\xe1\xbe\x9b"=>"\xe1\xbe\x93","\xe1\xbe\x9c"=>"\xe1\xbe\x94","\xe1\xbe\x9d"=>"\xe1\xbe\x95",
-		"\xe1\xbe\x9e"=>"\xe1\xbe\x96","\xe1\xbe\x9f"=>"\xe1\xbe\x97","\xe1\xbe\xa8"=>"\xe1\xbe\xa0","\xe1\xbe\xa9"=>"\xe1\xbe\xa1",
-		"\xe1\xbe\xaa"=>"\xe1\xbe\xa2","\xe1\xbe\xab"=>"\xe1\xbe\xa3","\xe1\xbe\xac"=>"\xe1\xbe\xa4","\xe1\xbe\xad"=>"\xe1\xbe\xa5",
-		"\xe1\xbe\xae"=>"\xe1\xbe\xa6","\xe1\xbe\xaf"=>"\xe1\xbe\xa7","\xe1\xbe\xb8"=>"\xe1\xbe\xb0","\xe1\xbe\xb9"=>"\xe1\xbe\xb1",
-		"\xe1\xbe\xba"=>"\xe1\xbd\xb0","\xe1\xbe\xbb"=>"\xe1\xbd\xb1","\xe1\xbe\xbc"=>"\xe1\xbe\xb3","\xe1\xbf\x88"=>"\xe1\xbd\xb2",
-		"\xe1\xbf\x89"=>"\xe1\xbd\xb3","\xe1\xbf\x8a"=>"\xe1\xbd\xb4","\xe1\xbf\x8b"=>"\xe1\xbd\xb5","\xe1\xbf\x8c"=>"\xe1\xbf\x83",
-		"\xe1\xbf\x98"=>"\xe1\xbf\x90","\xe1\xbf\x99"=>"\xe1\xbf\x91","\xe1\xbf\x9a"=>"\xe1\xbd\xb6","\xe1\xbf\x9b"=>"\xe1\xbd\xb7",
-		"\xe1\xbf\xa8"=>"\xe1\xbf\xa0","\xe1\xbf\xa9"=>"\xe1\xbf\xa1","\xe1\xbf\xaa"=>"\xe1\xbd\xba","\xe1\xbf\xab"=>"\xe1\xbd\xbb",
-		"\xe1\xbf\xac"=>"\xe1\xbf\xa5","\xe1\xbf\xb8"=>"\xe1\xbd\xb8","\xe1\xbf\xb9"=>"\xe1\xbd\xb9","\xe1\xbf\xba"=>"\xe1\xbd\xbc",
-		"\xe1\xbf\xbb"=>"\xe1\xbd\xbd","\xe1\xbf\xbc"=>"\xe1\xbf\xb3","\xe2\x84\xa6"=>"\xcf\x89","\xe2\x84\xaa"=>"\x6b",
-		"\xe2\x84\xab"=>"\xc3\xa5","\xe2\x85\xa0"=>"\xe2\x85\xb0","\xe2\x85\xa1"=>"\xe2\x85\xb1","\xe2\x85\xa2"=>"\xe2\x85\xb2",
-		"\xe2\x85\xa3"=>"\xe2\x85\xb3","\xe2\x85\xa4"=>"\xe2\x85\xb4","\xe2\x85\xa5"=>"\xe2\x85\xb5","\xe2\x85\xa6"=>"\xe2\x85\xb6",
-		"\xe2\x85\xa7"=>"\xe2\x85\xb7","\xe2\x85\xa8"=>"\xe2\x85\xb8","\xe2\x85\xa9"=>"\xe2\x85\xb9","\xe2\x85\xaa"=>"\xe2\x85\xba",
-		"\xe2\x85\xab"=>"\xe2\x85\xbb","\xe2\x85\xac"=>"\xe2\x85\xbc","\xe2\x85\xad"=>"\xe2\x85\xbd","\xe2\x85\xae"=>"\xe2\x85\xbe",
-		"\xe2\x85\xaf"=>"\xe2\x85\xbf","\xe2\x92\xb6"=>"\xe2\x93\x90","\xe2\x92\xb7"=>"\xe2\x93\x91","\xe2\x92\xb8"=>"\xe2\x93\x92",
-		"\xe2\x92\xb9"=>"\xe2\x93\x93","\xe2\x92\xba"=>"\xe2\x93\x94","\xe2\x92\xbb"=>"\xe2\x93\x95","\xe2\x92\xbc"=>"\xe2\x93\x96",
-		"\xe2\x92\xbd"=>"\xe2\x93\x97","\xe2\x92\xbe"=>"\xe2\x93\x98","\xe2\x92\xbf"=>"\xe2\x93\x99","\xe2\x93\x80"=>"\xe2\x93\x9a",
-		"\xe2\x93\x81"=>"\xe2\x93\x9b","\xe2\x93\x82"=>"\xe2\x93\x9c","\xe2\x93\x83"=>"\xe2\x93\x9d","\xe2\x93\x84"=>"\xe2\x93\x9e",
-		"\xe2\x93\x85"=>"\xe2\x93\x9f","\xe2\x93\x86"=>"\xe2\x93\xa0","\xe2\x93\x87"=>"\xe2\x93\xa1","\xe2\x93\x88"=>"\xe2\x93\xa2",
-		"\xe2\x93\x89"=>"\xe2\x93\xa3","\xe2\x93\x8a"=>"\xe2\x93\xa4","\xe2\x93\x8b"=>"\xe2\x93\xa5","\xe2\x93\x8c"=>"\xe2\x93\xa6",
-		"\xe2\x93\x8d"=>"\xe2\x93\xa7","\xe2\x93\x8e"=>"\xe2\x93\xa8","\xe2\x93\x8f"=>"\xe2\x93\xa9","\xef\xbc\xa1"=>"\xef\xbd\x81",
-		"\xef\xbc\xa2"=>"\xef\xbd\x82","\xef\xbc\xa3"=>"\xef\xbd\x83","\xef\xbc\xa4"=>"\xef\xbd\x84","\xef\xbc\xa5"=>"\xef\xbd\x85",
-		"\xef\xbc\xa6"=>"\xef\xbd\x86","\xef\xbc\xa7"=>"\xef\xbd\x87","\xef\xbc\xa8"=>"\xef\xbd\x88","\xef\xbc\xa9"=>"\xef\xbd\x89",
-		"\xef\xbc\xaa"=>"\xef\xbd\x8a","\xef\xbc\xab"=>"\xef\xbd\x8b","\xef\xbc\xac"=>"\xef\xbd\x8c","\xef\xbc\xad"=>"\xef\xbd\x8d",
-		"\xef\xbc\xae"=>"\xef\xbd\x8e","\xef\xbc\xaf"=>"\xef\xbd\x8f","\xef\xbc\xb0"=>"\xef\xbd\x90","\xef\xbc\xb1"=>"\xef\xbd\x91",
-		"\xef\xbc\xb2"=>"\xef\xbd\x92","\xef\xbc\xb3"=>"\xef\xbd\x93","\xef\xbc\xb4"=>"\xef\xbd\x94","\xef\xbc\xb5"=>"\xef\xbd\x95",
-		"\xef\xbc\xb6"=>"\xef\xbd\x96","\xef\xbc\xb7"=>"\xef\xbd\x97","\xef\xbc\xb8"=>"\xef\xbd\x98","\xef\xbc\xb9"=>"\xef\xbd\x99",
-		"\xef\xbc\xba"=>"\xef\xbd\x9a","\xf0\x90\x90\x80"=>"\xf0\x90\x90\xa8","\xf0\x90\x90\x81"=>"\xf0\x90\x90\xa9","\xf0\x90\x90\x82"=>"\xf0\x90\x90\xaa",
-		"\xf0\x90\x90\x83"=>"\xf0\x90\x90\xab","\xf0\x90\x90\x84"=>"\xf0\x90\x90\xac","\xf0\x90\x90\x85"=>"\xf0\x90\x90\xad","\xf0\x90\x90\x86"=>"\xf0\x90\x90\xae",
-		"\xf0\x90\x90\x87"=>"\xf0\x90\x90\xaf","\xf0\x90\x90\x88"=>"\xf0\x90\x90\xb0","\xf0\x90\x90\x89"=>"\xf0\x90\x90\xb1","\xf0\x90\x90\x8a"=>"\xf0\x90\x90\xb2",
-		"\xf0\x90\x90\x8b"=>"\xf0\x90\x90\xb3","\xf0\x90\x90\x8c"=>"\xf0\x90\x90\xb4","\xf0\x90\x90\x8d"=>"\xf0\x90\x90\xb5","\xf0\x90\x90\x8e"=>"\xf0\x90\x90\xb6",
-		"\xf0\x90\x90\x8f"=>"\xf0\x90\x90\xb7","\xf0\x90\x90\x90"=>"\xf0\x90\x90\xb8","\xf0\x90\x90\x91"=>"\xf0\x90\x90\xb9","\xf0\x90\x90\x92"=>"\xf0\x90\x90\xba",
-		"\xf0\x90\x90\x93"=>"\xf0\x90\x90\xbb","\xf0\x90\x90\x94"=>"\xf0\x90\x90\xbc","\xf0\x90\x90\x95"=>"\xf0\x90\x90\xbd","\xf0\x90\x90\x96"=>"\xf0\x90\x90\xbe",
-		"\xf0\x90\x90\x97"=>"\xf0\x90\x90\xbf","\xf0\x90\x90\x98"=>"\xf0\x90\x91\x80","\xf0\x90\x90\x99"=>"\xf0\x90\x91\x81","\xf0\x90\x90\x9a"=>"\xf0\x90\x91\x82",
-		"\xf0\x90\x90\x9b"=>"\xf0\x90\x91\x83","\xf0\x90\x90\x9c"=>"\xf0\x90\x91\x84","\xf0\x90\x90\x9d"=>"\xf0\x90\x91\x85","\xf0\x90\x90\x9e"=>"\xf0\x90\x91\x86",
-		"\xf0\x90\x90\x9f"=>"\xf0\x90\x91\x87","\xf0\x90\x90\xa0"=>"\xf0\x90\x91\x88","\xf0\x90\x90\xa1"=>"\xf0\x90\x91\x89","\xf0\x90\x90\xa2"=>"\xf0\x90\x91\x8a",
-		"\xf0\x90\x90\xa3"=>"\xf0\x90\x91\x8b","\xf0\x90\x90\xa4"=>"\xf0\x90\x91\x8c","\xf0\x90\x90\xa5"=>"\xf0\x90\x91\x8d"
-	);
-}; // end of case lookup tables
-
 /**
  * UTF-8 array of common special characters
  *
Index: trunk/wb/framework/frontend.functions.php
===================================================================
--- trunk/wb/framework/frontend.functions.php	(revision 760)
+++ trunk/wb/framework/frontend.functions.php	(revision 761)
@@ -80,17 +80,15 @@
 	$string = strtr($string, $string_ul_umlauts);
 	// special-feature: '|' means word-boundary (\b). Searching for 'the|' will find 'the', but not 'thema'.
 	$string = strtr($string, array('\\|'=>'\b'));
-	
 	// the highlighting
 	// match $string, but not inside <style>...</style>, <script>...</script>, <!--...--> or HTML-Tags
 	// split $string into pieces - "cut away" styles, scripts, comments, HTML-tags and eMail-addresses
 	// for HTML-Tags use <(?:[^<]|<.*>)*> which will match strings like <input ... value="<b>value</b>" >
-	$matches = preg_split("/(<style.*<\/style>|<script.*<\/script>|<!--.*-->|<(?:[^<]|<.*>)*>|\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b)/iUs",$foo,-1,(PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY));
+	$matches = preg_split("/(<style.*<\/style>|<script.*<\/script>|<!--.*-->|<(?:[^<]|<.*>)*>|\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,8}\b)/iUs",$foo,-1,(PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY));
 	if(is_array($matches) && $matches != array()) {
 		$foo = "";
-		$string = strtr($string, array('&lt;'=>'<', '&gt;'=>'>', '&amp;'=>'&', '&quot;'=>'"', '&#39;'=>'\'', '&nbsp;'=>"\xC2\xA0"));
 		foreach($matches as $match) {
-			if($match{0}!="<" && !preg_match('/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i', $match)) {
+			if($match{0}!="<" && !preg_match('/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,8}$/i', $match)) {
 				$match = strtr($match, array('&lt;'=>'<', '&gt;'=>'>', '&amp;'=>'&', '&quot;'=>'"', '&#39;'=>'\'', '&nbsp;'=>"\xC2\xA0"));
 				$match = preg_replace('/('.$string.')/iS', '_span class=_highlight__$1_/span_',$match);
 				$match = strtr($match, array('<'=>'&lt;', '>'=>'&gt;', '&'=>'&amp;', '"'=>'&quot;', '\''=>'&#39;', "\xC2\xA0"=>'&nbsp;'));
Index: trunk/wb/search/search.php
===================================================================
--- trunk/wb/search/search.php	(revision 760)
+++ trunk/wb/search/search.php	(revision 761)
@@ -23,8 +23,13 @@
 
 */
 
-// most of this is still the same code as in 2.6.7, but rearranged heavily
+// we have to do some cleanup here, ASAP!
 
+// this is for testing only
+$overall_start_time = microtime(true);
+//xdebug_start_trace();
+//xdebug_enable();
+
 if(!defined('WB_URL')) { 
 	header('Location: index.php');
 	exit(0);
@@ -39,9 +44,6 @@
 	return;
 }
 
-// this is for timing-tests only
-//$overall_start_time = microtime(true);
-
 // search-module-extension: get helper-functions
 require_once(WB_PATH.'/search/search_modext.php');
 // search-module-extension: Get "search.php" for each module, if present
@@ -115,9 +117,9 @@
 //   in wb/modules/wysiwyg/save.php anymore, too. Change that back to $text=strip_tags($content);
 
 // Get search string
-$search_normal_string = 'unset';
-$search_entities_string = 'unset';
-$search_display_string = '';
+$search_normal_string = 'unset'; // for regex
+$search_entities_string = 'unset'; // for SQL's LIKE
+$search_display_string = ''; // for displaying
 $string = '';
 if(isset($_REQUEST['string'])) {
 	if ($match!='exact') {
@@ -127,18 +129,19 @@
 	}
 	// redo possible magic quotes
 	$string = $wb->strip_slashes($string);
-	$string = htmlspecialchars($string);
-	$search_display_string = $string;
-	$string = addslashes($string);
+	$string = trim($string);
 	// remove some bad chars
-	$string = preg_replace("/(^|\s+)([.])+(?=\s+|$)/", "", $string);
+	$string = preg_replace('/(^|\s+)[|.]+(?=\s+|$)/', '', $string);
+	$search_display_string = htmlspecialchars($string);
+	// convert string to utf-8
+	$string = entities_to_umlauts($string, 'UTF-8');
+	$search_entities_string = addslashes(umlauts_to_entities(htmlspecialchars($string)));
 	// mySQL needs four backslashes to match one in LIKE comparisons)
-	$string = str_replace('\\\\', '\\\\\\\\', $string);
-	$string = trim($string);
-	// convert a copy of $string to HTML-ENTITIES
-	$string_entities = umlauts_to_entities($string);
-	$search_normal_string = $string;
-	$search_entities_string = $string_entities;
+	$search_entities_string = str_replace('\\\\', '\\\\\\\\', $search_entities_string);
+	// quote ' " and /  -we need quoted / for regex
+	$search_url_string = $string;
+	$string = preg_quote($string);
+	$search_normal_string = str_replace(array('\'','"','/'), array('\\\'','\"','\/'), $string);
 }
 
 // Get list of usernames and display names
@@ -190,6 +193,11 @@
 } else { $fetch_cfg_enable_old_search['value'] = 'true'; }
 if($fetch_cfg_enable_old_search['value'] == 'false') { $cfg_enable_old_search = false;
 } else { $cfg_enable_old_search = true; }
+$query = $database->query("SELECT value FROM ".TABLE_PREFIX."search WHERE name = 'cfg_enable_flush' LIMIT 1");
+if($query->numRows() > 0) { $fetch_cfg_enable_flush = $query->fetchRow();
+} else { $fetch_cfg_enable_flush['value'] = 'false'; }
+if($fetch_cfg_enable_flush['value'] == 'false') { $cfg_enable_flush = false;
+} else { $cfg_enable_flush = true; }
 // Replace vars in search settings with values
 $vars = array('[SEARCH_STRING]', '[WB_URL]', '[PAGE_EXTENSION]', '[TEXT_RESULTS_FOR]');
 $values = array($search_display_string, WB_URL, PAGE_EXTENSION, $TEXT['RESULTS_FOR']);
@@ -240,12 +248,10 @@
 	$exact_string=$search_entities_string;
 	$search_entities_array[]=$exact_string;
 }	
-// make an extra copy of $string_entities for use in a regex
+// make an extra copy of search-string for use in a regex and another one for url
 require_once(WB_PATH.'/search/search_convert.php');
 $search_words = array();
-foreach ($search_entities_array AS $str) {
-	$str = entities_to_umlauts($str, 'UTF-8');
-	$str = preg_quote($str, '/');
+foreach ($search_normal_array AS $str) {
 	$str = strtr($str, $string_ul_umlauts);
 	// special-feature: '|' means word-boundary (\b). Searching for 'the|' will find the, but not thema.
 	// this doesn't work correctly for unicode-chars: '|test' will work, but '|über' not.
@@ -252,6 +258,7 @@
 	$str = strtr($str, array('\\|'=>'\b'));
 	$search_words[] = $str;
 }
+$search_url_array=explode(' ', $search_url_string);
 
 // Do extra vars/values replacement
 $vars = array('[SEARCH_STRING]', '[WB_URL]', '[PAGE_EXTENSION]', '[TEXT_SEARCH]', '[TEXT_ALL_WORDS]', '[TEXT_ANY_WORDS]', '[TEXT_EXACT_MATCH]', '[TEXT_MATCH]', '[TEXT_MATCHING]', '[ALL_CHECKED]', '[ANY_CHECKED]', '[EXACT_CHECKED]', '[REFERRER_ID]', '[SEARCH_PATH]');
@@ -304,8 +311,6 @@
 	// and even if setlocale() is set, it won't work for multi-linguale sites.
 	// Use the search-module-extension instead.
 	// This is somewhat slower than the orginial method.
-	// CHANGES WITH V1.3: before V1.3 we called [module]-search() for a given page only once and searched in all [module]-sections on this page;
-	// since V1.3 we call [module]-search() for very single section.
 	$seen_pages = array(); // seen pages per module.
 	$pages_listed = array(); // seen pages.
 	foreach($sorted_modules AS $module_name) {
@@ -326,8 +331,6 @@
 		");
 		if($sections_query->numRows() > 0) {
 			while($res = $sections_query->fetchRow()) {
-				// TODO: add a "section is searchable: yes/no" config-element into "Manage Sections" - ???
-				//       and show this section only if section is searchable
 				// Only show this section if it is not "out of publication-date"
 				$now = time();
 				if( !( $now<$res['publ_end'] && ($now>$res['publ_start'] || $res['publ_start']==0) ||
@@ -348,9 +351,10 @@
 					'users' => $users,
 					'search_words' => $search_words, // needed for preg_match_all
 					'search_match' => $match,
-					'search_url_array' => $search_normal_array, // needed for url-string only
+					'search_url_array' => $search_url_array, // needed for url-string only
 					'results_loop_string' => $fetch_results_loop['value'],
-					'default_max_excerpt' => $search_max_excerpt
+					'default_max_excerpt' => $search_max_excerpt,
+					'enable_flush' => $cfg_enable_flush
 				);
 				// Only show this page if we are allowed to see it
 				if($admin->page_is_visible($res) == false) {
@@ -400,9 +404,10 @@
 				'users' => $users,
 				'search_words' => $search_words, // needed for preg_match_all
 				'search_match' => $match,
-				'search_url_array' => $search_normal_array, // needed for url-string only
+				'search_url_array' => $search_url_array, // needed for url-string only
 				'results_loop_string' => $fetch_results_loop['value'],
-				'default_max_excerpt' => $max_excerpt_num
+				'default_max_excerpt' => $max_excerpt_num,
+				'enable_flush' => $cfg_enable_flush
 			);
 			// Only show this page if we are allowed to see it
 			if($admin->page_is_visible($page) == false) {
@@ -630,7 +635,9 @@
 // Show search footer
 echo $search_footer;
 
-//$overall_end_time = microtime(true); // for testing only
-//$time=$overall_end_time-$overall_start_time; print "<br />Timings - Overall: $time<br />";
+$overall_end_time = microtime(true); // for testing only
+$time=$overall_end_time-$overall_start_time; print "<br />Timings - Overall: $time<br />";
+//xdebug_stop_trace();
+//echo "<hr />"."peak memory-usage: ".xdebug_peak_memory_usage()."<br />"."time: ".xdebug_time_index()."<br />";
 
 ?>
Index: trunk/wb/search/search_convert.php
===================================================================
--- trunk/wb/search/search_convert.php	(revision 760)
+++ trunk/wb/search/search_convert.php	(revision 761)
@@ -33,1451 +33,1437 @@
 	exit(0);
 }
 
-//htmlspecialchars_decode
-$string_htmlspecialchars_decode=array(
-	"&lt;"=>"<", "&gt;"=>">", "&amp;"=>"&", "&quot;"=>"\"", "&#39;"=>"\'"
-);
-//htmlspecialchars_decode
-$string_htmlspecialchars_encode=array(
-	"<"=>"&lt;", ">"=>"&gt;", "&"=>"&amp;", "\""=>"&quot;", "\'"=>"&#39;"
-);
-
-//convert some bad characters
-$string_conv_all=array(
-	"!"=>" ","_"=>" ","="=>" ","+"=>" "
-);
-
 //umlauts to '(upper|lower)' for preg_match()
 //this is UTF-8-encoded
 $string_ul_umlauts = array(
-	"\xc2\xb5" => "(\xc2\xb5|\xce\x9c)",
-	"\xc3\xa0" => "(\xc3\xa0|\xc3\x80)",
-	"\xc3\xa1" => "(\xc3\xa1|\xc3\x81)",
-	"\xc3\xa2" => "(\xc3\xa2|\xc3\x82)",
-	"\xc3\xa3" => "(\xc3\xa3|\xc3\x83)",
-	"\xc3\xa4" => "(\xc3\xa4|\xc3\x84)",
-	"\xc3\xa5" => "(\xc3\xa5|\xc3\x85|\xe2\x84\xab)",
-	"\xc3\xa6" => "(\xc3\xa6|\xc3\x86)",
-	"\xc3\xa7" => "(\xc3\xa7|\xc3\x87)",
-	"\xc3\xa8" => "(\xc3\xa8|\xc3\x88)",
-	"\xc3\xa9" => "(\xc3\xa9|\xc3\x89)",
-	"\xc3\xaa" => "(\xc3\xaa|\xc3\x8a)",
-	"\xc3\xab" => "(\xc3\xab|\xc3\x8b)",
-	"\xc3\xac" => "(\xc3\xac|\xc3\x8c)",
-	"\xc3\xad" => "(\xc3\xad|\xc3\x8d)",
-	"\xc3\xae" => "(\xc3\xae|\xc3\x8e)",
-	"\xc3\xaf" => "(\xc3\xaf|\xc3\x8f)",
-	"\xc3\xb0" => "(\xc3\xb0|\xc3\x90)",
-	"\xc3\xb1" => "(\xc3\xb1|\xc3\x91)",
-	"\xc3\xb2" => "(\xc3\xb2|\xc3\x92)",
-	"\xc3\xb3" => "(\xc3\xb3|\xc3\x93)",
-	"\xc3\xb4" => "(\xc3\xb4|\xc3\x94)",
-	"\xc3\xb5" => "(\xc3\xb5|\xc3\x95)",
-	"\xc3\xb6" => "(\xc3\xb6|\xc3\x96)",
-	"\xc3\xb8" => "(\xc3\xb8|\xc3\x98)",
-	"\xc3\xb9" => "(\xc3\xb9|\xc3\x99)",
-	"\xc3\xba" => "(\xc3\xba|\xc3\x9a)",
-	"\xc3\xbb" => "(\xc3\xbb|\xc3\x9b)",
-	"\xc3\xbc" => "(\xc3\xbc|\xc3\x9c)",
-	"\xc3\xbd" => "(\xc3\xbd|\xc3\x9d)",
-	"\xc3\xbe" => "(\xc3\xbe|\xc3\x9e)",
-	"\xc3\xbf" => "(\xc3\xbf|\xc5\xb8)",
-	"\xc4\x81" => "(\xc4\x81|\xc4\x80)",
-	"\xc4\x83" => "(\xc4\x83|\xc4\x82)",
-	"\xc4\x85" => "(\xc4\x85|\xc4\x84)",
-	"\xc4\x87" => "(\xc4\x87|\xc4\x86)",
-	"\xc4\x89" => "(\xc4\x89|\xc4\x88)",
-	"\xc4\x8b" => "(\xc4\x8b|\xc4\x8a)",
-	"\xc4\x8d" => "(\xc4\x8d|\xc4\x8c)",
-	"\xc4\x8f" => "(\xc4\x8f|\xc4\x8e)",
-	"\xc4\x91" => "(\xc4\x91|\xc4\x90)",
-	"\xc4\x93" => "(\xc4\x93|\xc4\x92)",
-	"\xc4\x95" => "(\xc4\x95|\xc4\x94)",
-	"\xc4\x97" => "(\xc4\x97|\xc4\x96)",
-	"\xc4\x99" => "(\xc4\x99|\xc4\x98)",
-	"\xc4\x9b" => "(\xc4\x9b|\xc4\x9a)",
-	"\xc4\x9d" => "(\xc4\x9d|\xc4\x9c)",
-	"\xc4\x9f" => "(\xc4\x9f|\xc4\x9e)",
-	"\xc4\xa1" => "(\xc4\xa1|\xc4\xa0)",
-	"\xc4\xa3" => "(\xc4\xa3|\xc4\xa2)",
-	"\xc4\xa5" => "(\xc4\xa5|\xc4\xa4)",
-	"\xc4\xa7" => "(\xc4\xa7|\xc4\xa6)",
-	"\xc4\xa9" => "(\xc4\xa9|\xc4\xa8)",
-	"\xc4\xab" => "(\xc4\xab|\xc4\xaa)",
-	"\xc4\xad" => "(\xc4\xad|\xc4\xac)",
-	"\xc4\xaf" => "(\xc4\xaf|\xc4\xae)",
-	"\xc4\xb1" => "(\xc4\xb1|I)",
-	"\xc4\xb3" => "(\xc4\xb3|\xc4\xb2)",
-	"\xc4\xb5" => "(\xc4\xb5|\xc4\xb4)",
-	"\xc4\xb7" => "(\xc4\xb7|\xc4\xb6)",
-	"\xc4\xba" => "(\xc4\xba|\xc4\xb9)",
-	"\xc4\xbc" => "(\xc4\xbc|\xc4\xbb)",
-	"\xc4\xbe" => "(\xc4\xbe|\xc4\xbd)",
-	"\xc5\x80" => "(\xc5\x80|\xc4\xbf)",
-	"\xc5\x82" => "(\xc5\x82|\xc5\x81)",
-	"\xc5\x84" => "(\xc5\x84|\xc5\x83)",
-	"\xc5\x86" => "(\xc5\x86|\xc5\x85)",
-	"\xc5\x88" => "(\xc5\x88|\xc5\x87)",
-	"\xc5\x8b" => "(\xc5\x8b|\xc5\x8a)",
-	"\xc5\x8d" => "(\xc5\x8d|\xc5\x8c)",
-	"\xc5\x8f" => "(\xc5\x8f|\xc5\x8e)",
-	"\xc5\x91" => "(\xc5\x91|\xc5\x90)",
-	"\xc5\x93" => "(\xc5\x93|\xc5\x92)",
-	"\xc5\x95" => "(\xc5\x95|\xc5\x94)",
-	"\xc5\x97" => "(\xc5\x97|\xc5\x96)",
-	"\xc5\x99" => "(\xc5\x99|\xc5\x98)",
-	"\xc5\x9b" => "(\xc5\x9b|\xc5\x9a)",
-	"\xc5\x9d" => "(\xc5\x9d|\xc5\x9c)",
-	"\xc5\x9f" => "(\xc5\x9f|\xc5\x9e)",
-	"\xc5\xa1" => "(\xc5\xa1|\xc5\xa0)",
-	"\xc5\xa3" => "(\xc5\xa3|\xc5\xa2)",
-	"\xc5\xa5" => "(\xc5\xa5|\xc5\xa4)",
-	"\xc5\xa7" => "(\xc5\xa7|\xc5\xa6)",
-	"\xc5\xa9" => "(\xc5\xa9|\xc5\xa8)",
-	"\xc5\xab" => "(\xc5\xab|\xc5\xaa)",
-	"\xc5\xad" => "(\xc5\xad|\xc5\xac)",
-	"\xc5\xaf" => "(\xc5\xaf|\xc5\xae)",
-	"\xc5\xb1" => "(\xc5\xb1|\xc5\xb0)",
-	"\xc5\xb3" => "(\xc5\xb3|\xc5\xb2)",
-	"\xc5\xb5" => "(\xc5\xb5|\xc5\xb4)",
-	"\xc5\xb7" => "(\xc5\xb7|\xc5\xb6)",
-	"\xc5\xba" => "(\xc5\xba|\xc5\xb9)",
-	"\xc5\xbc" => "(\xc5\xbc|\xc5\xbb)",
-	"\xc5\xbe" => "(\xc5\xbe|\xc5\xbd)",
-	"\xc5\xbf" => "(\xc5\xbf|S)",
-	"\xc6\x83" => "(\xc6\x83|\xc6\x82)",
-	"\xc6\x85" => "(\xc6\x85|\xc6\x84)",
-	"\xc6\x88" => "(\xc6\x88|\xc6\x87)",
-	"\xc6\x8c" => "(\xc6\x8c|\xc6\x8b)",
-	"\xc6\x92" => "(\xc6\x92|\xc6\x91)",
-	"\xc6\x95" => "(\xc6\x95|\xc7\xb6)",
-	"\xc6\x99" => "(\xc6\x99|\xc6\x98)",
-	"\xc6\xa1" => "(\xc6\xa1|\xc6\xa0)",
-	"\xc6\xa3" => "(\xc6\xa3|\xc6\xa2)",
-	"\xc6\xa5" => "(\xc6\xa5|\xc6\xa4)",
-	"\xc6\xa8" => "(\xc6\xa8|\xc6\xa7)",
-	"\xc6\xad" => "(\xc6\xad|\xc6\xac)",
-	"\xc6\xb0" => "(\xc6\xb0|\xc6\xaf)",
-	"\xc6\xb4" => "(\xc6\xb4|\xc6\xb3)",
-	"\xc6\xb6" => "(\xc6\xb6|\xc6\xb5)",
-	"\xc6\xb9" => "(\xc6\xb9|\xc6\xb8)",
-	"\xc6\xbd" => "(\xc6\xbd|\xc6\xbc)",
-	"\xc6\xbf" => "(\xc6\xbf|\xc7\xb7)",
-	"\xc7\x86" => "(\xc7\x86|\xc7\x84|\xc7\x85)",
-	"\xc7\x89" => "(\xc7\x89|\xc7\x87|\xc7\x88)",
-	"\xc7\x8c" => "(\xc7\x8c|\xc7\x8a|\xc7\x8b)",
-	"\xc7\x8e" => "(\xc7\x8e|\xc7\x8d)",
-	"\xc7\x90" => "(\xc7\x90|\xc7\x8f)",
-	"\xc7\x92" => "(\xc7\x92|\xc7\x91)",
-	"\xc7\x94" => "(\xc7\x94|\xc7\x93)",
-	"\xc7\x96" => "(\xc7\x96|\xc7\x95)",
-	"\xc7\x98" => "(\xc7\x98|\xc7\x97)",
-	"\xc7\x9a" => "(\xc7\x9a|\xc7\x99)",
-	"\xc7\x9c" => "(\xc7\x9c|\xc7\x9b)",
-	"\xc7\x9d" => "(\xc7\x9d|\xc6\x8e)",
-	"\xc7\x9f" => "(\xc7\x9f|\xc7\x9e)",
-	"\xc7\xa1" => "(\xc7\xa1|\xc7\xa0)",
-	"\xc7\xa3" => "(\xc7\xa3|\xc7\xa2)",
-	"\xc7\xa5" => "(\xc7\xa5|\xc7\xa4)",
-	"\xc7\xa7" => "(\xc7\xa7|\xc7\xa6)",
-	"\xc7\xa9" => "(\xc7\xa9|\xc7\xa8)",
-	"\xc7\xab" => "(\xc7\xab|\xc7\xaa)",
-	"\xc7\xad" => "(\xc7\xad|\xc7\xac)",
-	"\xc7\xaf" => "(\xc7\xaf|\xc7\xae)",
-	"\xc7\xb2" => "(\xc7\xb2|\xc7\xb1|\xc7\xb3)",
-	"\xc7\xb3" => "(\xc7\xb3|\xc7\xb1|\xc7\xb2)",
-	"\xc7\xb5" => "(\xc7\xb5|\xc7\xb4)",
-	"\xc7\xb9" => "(\xc7\xb9|\xc7\xb8)",
-	"\xc7\xbb" => "(\xc7\xbb|\xc7\xba)",
-	"\xc7\xbd" => "(\xc7\xbd|\xc7\xbc)",
-	"\xc7\xbf" => "(\xc7\xbf|\xc7\xbe)",
-	"\xc8\x81" => "(\xc8\x81|\xc8\x80)",
-	"\xc8\x83" => "(\xc8\x83|\xc8\x82)",
-	"\xc8\x85" => "(\xc8\x85|\xc8\x84)",
-	"\xc8\x87" => "(\xc8\x87|\xc8\x86)",
-	"\xc8\x89" => "(\xc8\x89|\xc8\x88)",
-	"\xc8\x8b" => "(\xc8\x8b|\xc8\x8a)",
-	"\xc8\x8d" => "(\xc8\x8d|\xc8\x8c)",
-	"\xc8\x8f" => "(\xc8\x8f|\xc8\x8e)",
-	"\xc8\x91" => "(\xc8\x91|\xc8\x90)",
-	"\xc8\x93" => "(\xc8\x93|\xc8\x92)",
-	"\xc8\x95" => "(\xc8\x95|\xc8\x94)",
-	"\xc8\x97" => "(\xc8\x97|\xc8\x96)",
-	"\xc8\x99" => "(\xc8\x99|\xc8\x98)",
-	"\xc8\x9b" => "(\xc8\x9b|\xc8\x9a)",
-	"\xc8\x9d" => "(\xc8\x9d|\xc8\x9c)",
-	"\xc8\x9f" => "(\xc8\x9f|\xc8\x9e)",
-	"\xc8\xa3" => "(\xc8\xa3|\xc8\xa2)",
-	"\xc8\xa5" => "(\xc8\xa5|\xc8\xa4)",
-	"\xc8\xa7" => "(\xc8\xa7|\xc8\xa6)",
-	"\xc8\xa9" => "(\xc8\xa9|\xc8\xa8)",
-	"\xc8\xab" => "(\xc8\xab|\xc8\xaa)",
-	"\xc8\xad" => "(\xc8\xad|\xc8\xac)",
-	"\xc8\xaf" => "(\xc8\xaf|\xc8\xae)",
-	"\xc8\xb1" => "(\xc8\xb1|\xc8\xb0)",
-	"\xc8\xb3" => "(\xc8\xb3|\xc8\xb2)",
-	"\xc9\x93" => "(\xc9\x93|\xc6\x81)",
-	"\xc9\x94" => "(\xc9\x94|\xc6\x86)",
-	"\xc9\x96" => "(\xc9\x96|\xc6\x89)",
-	"\xc9\x97" => "(\xc9\x97|\xc6\x8a)",
-	"\xc9\x99" => "(\xc9\x99|\xc6\x8f)",
-	"\xc9\x9b" => "(\xc9\x9b|\xc6\x90)",
-	"\xc9\xa0" => "(\xc9\xa0|\xc6\x93)",
-	"\xc9\xa3" => "(\xc9\xa3|\xc6\x94)",
-	"\xc9\xa8" => "(\xc9\xa8|\xc6\x97)",
-	"\xc9\xa9" => "(\xc9\xa9|\xc6\x96)",
-	"\xc9\xaf" => "(\xc9\xaf|\xc6\x9c)",
-	"\xc9\xb2" => "(\xc9\xb2|\xc6\x9d)",
-	"\xc9\xb5" => "(\xc9\xb5|\xc6\x9f)",
-	"\xca\x80" => "(\xca\x80|\xc6\xa6)",
-	"\xca\x83" => "(\xca\x83|\xc6\xa9)",
-	"\xca\x88" => "(\xca\x88|\xc6\xae)",
-	"\xca\x8a" => "(\xca\x8a|\xc6\xb1)",
-	"\xca\x8b" => "(\xca\x8b|\xc6\xb2)",
-	"\xca\x92" => "(\xca\x92|\xc6\xb7)",
-	"\xcd\x85" => "(\xcd\x85|\xce\x99)",
-	"\xce\xac" => "(\xce\xac|\xce\x86)",
-	"\xce\xad" => "(\xce\xad|\xce\x88)",
-	"\xce\xae" => "(\xce\xae|\xce\x89)",
-	"\xce\xaf" => "(\xce\xaf|\xce\x8a)",
-	"\xce\xb1" => "(\xce\xb1|\xce\x91)",
-	"\xce\xb2" => "(\xce\xb2|\xce\x92)",
-	"\xce\xb3" => "(\xce\xb3|\xce\x93)",
-	"\xce\xb4" => "(\xce\xb4|\xce\x94)",
-	"\xce\xb5" => "(\xce\xb5|\xce\x95)",
-	"\xce\xb6" => "(\xce\xb6|\xce\x96)",
-	"\xce\xb7" => "(\xce\xb7|\xce\x97)",
-	"\xce\xb8" => "(\xce\xb8|\xce\x98|\xcf\xb4)",
-	"\xce\xb9" => "(\xce\xb9|\xce\x99)",
-	"\xce\xba" => "(\xce\xba|\xce\x9a)",
-	"\xce\xbb" => "(\xce\xbb|\xce\x9b)",
-	"\xce\xbc" => "(\xce\xbc|\xce\x9c)",
-	"\xce\xbd" => "(\xce\xbd|\xce\x9d)",
-	"\xce\xbe" => "(\xce\xbe|\xce\x9e)",
-	"\xce\xbf" => "(\xce\xbf|\xce\x9f)",
-	"\xcf\x80" => "(\xcf\x80|\xce\xa0)",
-	"\xcf\x81" => "(\xcf\x81|\xce\xa1)",
-	"\xcf\x82" => "(\xcf\x82|\xce\xa3)",
-	"\xcf\x83" => "(\xcf\x83|\xce\xa3)",
-	"\xcf\x84" => "(\xcf\x84|\xce\xa4)",
-	"\xcf\x85" => "(\xcf\x85|\xce\xa5)",
-	"\xcf\x86" => "(\xcf\x86|\xce\xa6)",
-	"\xcf\x87" => "(\xcf\x87|\xce\xa7)",
-	"\xcf\x88" => "(\xcf\x88|\xce\xa8)",
-	"\xcf\x89" => "(\xcf\x89|\xce\xa9|\xe2\x84\xa6)",
-	"\xcf\x8a" => "(\xcf\x8a|\xce\xaa)",
-	"\xcf\x8b" => "(\xcf\x8b|\xce\xab)",
-	"\xcf\x8c" => "(\xcf\x8c|\xce\x8c)",
-	"\xcf\x8d" => "(\xcf\x8d|\xce\x8e)",
-	"\xcf\x8e" => "(\xcf\x8e|\xce\x8f)",
-	"\xcf\x90" => "(\xcf\x90|\xce\x92)",
-	"\xcf\x91" => "(\xcf\x91|\xce\x98)",
-	"\xcf\x95" => "(\xcf\x95|\xce\xa6)",
-	"\xcf\x96" => "(\xcf\x96|\xce\xa0)",
-	"\xcf\x9b" => "(\xcf\x9b|\xcf\x9a)",
-	"\xcf\x9d" => "(\xcf\x9d|\xcf\x9c)",
-	"\xcf\x9f" => "(\xcf\x9f|\xcf\x9e)",
-	"\xcf\xa1" => "(\xcf\xa1|\xcf\xa0)",
-	"\xcf\xa3" => "(\xcf\xa3|\xcf\xa2)",
-	"\xcf\xa5" => "(\xcf\xa5|\xcf\xa4)",
-	"\xcf\xa7" => "(\xcf\xa7|\xcf\xa6)",
-	"\xcf\xa9" => "(\xcf\xa9|\xcf\xa8)",
-	"\xcf\xab" => "(\xcf\xab|\xcf\xaa)",
-	"\xcf\xad" => "(\xcf\xad|\xcf\xac)",
-	"\xcf\xaf" => "(\xcf\xaf|\xcf\xae)",
-	"\xcf\xb0" => "(\xcf\xb0|\xce\x9a)",
-	"\xcf\xb1" => "(\xcf\xb1|\xce\xa1)",
-	"\xcf\xb2" => "(\xcf\xb2|\xce\xa3)",
-	"\xcf\xb5" => "(\xcf\xb5|\xce\x95)",
-	"\xd0\xb0" => "(\xd0\xb0|\xd0\x90)",
-	"\xd0\xb1" => "(\xd0\xb1|\xd0\x91)",
-	"\xd0\xb2" => "(\xd0\xb2|\xd0\x92)",
-	"\xd0\xb3" => "(\xd0\xb3|\xd0\x93)",
-	"\xd0\xb4" => "(\xd0\xb4|\xd0\x94)",
-	"\xd0\xb5" => "(\xd0\xb5|\xd0\x95)",
-	"\xd0\xb6" => "(\xd0\xb6|\xd0\x96)",
-	"\xd0\xb7" => "(\xd0\xb7|\xd0\x97)",
-	"\xd0\xb8" => "(\xd0\xb8|\xd0\x98)",
-	"\xd0\xb9" => "(\xd0\xb9|\xd0\x99)",
-	"\xd0\xba" => "(\xd0\xba|\xd0\x9a)",
-	"\xd0\xbb" => "(\xd0\xbb|\xd0\x9b)",
-	"\xd0\xbc" => "(\xd0\xbc|\xd0\x9c)",
-	"\xd0\xbd" => "(\xd0\xbd|\xd0\x9d)",
-	"\xd0\xbe" => "(\xd0\xbe|\xd0\x9e)",
-	"\xd0\xbf" => "(\xd0\xbf|\xd0\x9f)",
-	"\xd1\x80" => "(\xd1\x80|\xd0\xa0)",
-	"\xd1\x81" => "(\xd1\x81|\xd0\xa1)",
-	"\xd1\x82" => "(\xd1\x82|\xd0\xa2)",
-	"\xd1\x83" => "(\xd1\x83|\xd0\xa3)",
-	"\xd1\x84" => "(\xd1\x84|\xd0\xa4)",
-	"\xd1\x85" => "(\xd1\x85|\xd0\xa5)",
-	"\xd1\x86" => "(\xd1\x86|\xd0\xa6)",
-	"\xd1\x87" => "(\xd1\x87|\xd0\xa7)",
-	"\xd1\x88" => "(\xd1\x88|\xd0\xa8)",
-	"\xd1\x89" => "(\xd1\x89|\xd0\xa9)",
-	"\xd1\x8a" => "(\xd1\x8a|\xd0\xaa)",
-	"\xd1\x8b" => "(\xd1\x8b|\xd0\xab)",
-	"\xd1\x8c" => "(\xd1\x8c|\xd0\xac)",
-	"\xd1\x8d" => "(\xd1\x8d|\xd0\xad)",
-	"\xd1\x8e" => "(\xd1\x8e|\xd0\xae)",
-	"\xd1\x8f" => "(\xd1\x8f|\xd0\xaf)",
-	"\xd1\x90" => "(\xd1\x90|\xd0\x80)",
-	"\xd1\x91" => "(\xd1\x91|\xd0\x81)",
-	"\xd1\x92" => "(\xd1\x92|\xd0\x82)",
-	"\xd1\x93" => "(\xd1\x93|\xd0\x83)",
-	"\xd1\x94" => "(\xd1\x94|\xd0\x84)",
-	"\xd1\x95" => "(\xd1\x95|\xd0\x85)",
-	"\xd1\x96" => "(\xd1\x96|\xd0\x86)",
-	"\xd1\x97" => "(\xd1\x97|\xd0\x87)",
-	"\xd1\x98" => "(\xd1\x98|\xd0\x88)",
-	"\xd1\x99" => "(\xd1\x99|\xd0\x89)",
-	"\xd1\x9a" => "(\xd1\x9a|\xd0\x8a)",
-	"\xd1\x9b" => "(\xd1\x9b|\xd0\x8b)",
-	"\xd1\x9c" => "(\xd1\x9c|\xd0\x8c)",
-	"\xd1\x9d" => "(\xd1\x9d|\xd0\x8d)",
-	"\xd1\x9e" => "(\xd1\x9e|\xd0\x8e)",
-	"\xd1\x9f" => "(\xd1\x9f|\xd0\x8f)",
-	"\xd1\xa1" => "(\xd1\xa1|\xd1\xa0)",
-	"\xd1\xa3" => "(\xd1\xa3|\xd1\xa2)",
-	"\xd1\xa5" => "(\xd1\xa5|\xd1\xa4)",
-	"\xd1\xa7" => "(\xd1\xa7|\xd1\xa6)",
-	"\xd1\xa9" => "(\xd1\xa9|\xd1\xa8)",
-	"\xd1\xab" => "(\xd1\xab|\xd1\xaa)",
-	"\xd1\xad" => "(\xd1\xad|\xd1\xac)",
-	"\xd1\xaf" => "(\xd1\xaf|\xd1\xae)",
-	"\xd1\xb1" => "(\xd1\xb1|\xd1\xb0)",
-	"\xd1\xb3" => "(\xd1\xb3|\xd1\xb2)",
-	"\xd1\xb5" => "(\xd1\xb5|\xd1\xb4)",
-	"\xd1\xb7" => "(\xd1\xb7|\xd1\xb6)",
-	"\xd1\xb9" => "(\xd1\xb9|\xd1\xb8)",
-	"\xd1\xbb" => "(\xd1\xbb|\xd1\xba)",
-	"\xd1\xbd" => "(\xd1\xbd|\xd1\xbc)",
-	"\xd1\xbf" => "(\xd1\xbf|\xd1\xbe)",
-	"\xd2\x81" => "(\xd2\x81|\xd2\x80)",
-	"\xd2\x8d" => "(\xd2\x8d|\xd2\x8c)",
-	"\xd2\x8f" => "(\xd2\x8f|\xd2\x8e)",
-	"\xd2\x91" => "(\xd2\x91|\xd2\x90)",
-	"\xd2\x93" => "(\xd2\x93|\xd2\x92)",
-	"\xd2\x95" => "(\xd2\x95|\xd2\x94)",
-	"\xd2\x97" => "(\xd2\x97|\xd2\x96)",
-	"\xd2\x99" => "(\xd2\x99|\xd2\x98)",
-	"\xd2\x9b" => "(\xd2\x9b|\xd2\x9a)",
-	"\xd2\x9d" => "(\xd2\x9d|\xd2\x9c)",
-	"\xd2\x9f" => "(\xd2\x9f|\xd2\x9e)",
-	"\xd2\xa1" => "(\xd2\xa1|\xd2\xa0)",
-	"\xd2\xa3" => "(\xd2\xa3|\xd2\xa2)",
-	"\xd2\xa5" => "(\xd2\xa5|\xd2\xa4)",
-	"\xd2\xa7" => "(\xd2\xa7|\xd2\xa6)",
-	"\xd2\xa9" => "(\xd2\xa9|\xd2\xa8)",
-	"\xd2\xab" => "(\xd2\xab|\xd2\xaa)",
-	"\xd2\xad" => "(\xd2\xad|\xd2\xac)",
-	"\xd2\xaf" => "(\xd2\xaf|\xd2\xae)",
-	"\xd2\xb1" => "(\xd2\xb1|\xd2\xb0)",
-	"\xd2\xb3" => "(\xd2\xb3|\xd2\xb2)",
-	"\xd2\xb5" => "(\xd2\xb5|\xd2\xb4)",
-	"\xd2\xb7" => "(\xd2\xb7|\xd2\xb6)",
-	"\xd2\xb9" => "(\xd2\xb9|\xd2\xb8)",
-	"\xd2\xbb" => "(\xd2\xbb|\xd2\xba)",
-	"\xd2\xbd" => "(\xd2\xbd|\xd2\xbc)",
-	"\xd2\xbf" => "(\xd2\xbf|\xd2\xbe)",
-	"\xd3\x82" => "(\xd3\x82|\xd3\x81)",
-	"\xd3\x84" => "(\xd3\x84|\xd3\x83)",
-	"\xd3\x88" => "(\xd3\x88|\xd3\x87)",
-	"\xd3\x8c" => "(\xd3\x8c|\xd3\x8b)",
-	"\xd3\x91" => "(\xd3\x91|\xd3\x90)",
-	"\xd3\x93" => "(\xd3\x93|\xd3\x92)",
-	"\xd3\x95" => "(\xd3\x95|\xd3\x94)",
-	"\xd3\x97" => "(\xd3\x97|\xd3\x96)",
-	"\xd3\x99" => "(\xd3\x99|\xd3\x98)",
-	"\xd3\x9b" => "(\xd3\x9b|\xd3\x9a)",
-	"\xd3\x9d" => "(\xd3\x9d|\xd3\x9c)",
-	"\xd3\x9f" => "(\xd3\x9f|\xd3\x9e)",
-	"\xd3\xa1" => "(\xd3\xa1|\xd3\xa0)",
-	"\xd3\xa3" => "(\xd3\xa3|\xd3\xa2)",
-	"\xd3\xa5" => "(\xd3\xa5|\xd3\xa4)",
-	"\xd3\xa7" => "(\xd3\xa7|\xd3\xa6)",
-	"\xd3\xa9" => "(\xd3\xa9|\xd3\xa8)",
-	"\xd3\xab" => "(\xd3\xab|\xd3\xaa)",
-	"\xd3\xad" => "(\xd3\xad|\xd3\xac)",
-	"\xd3\xaf" => "(\xd3\xaf|\xd3\xae)",
-	"\xd3\xb1" => "(\xd3\xb1|\xd3\xb0)",
-	"\xd3\xb3" => "(\xd3\xb3|\xd3\xb2)",
-	"\xd3\xb5" => "(\xd3\xb5|\xd3\xb4)",
-	"\xd3\xb9" => "(\xd3\xb9|\xd3\xb8)",
-	"\xd5\xa1" => "(\xd5\xa1|\xd4\xb1)",
-	"\xd5\xa2" => "(\xd5\xa2|\xd4\xb2)",
-	"\xd5\xa3" => "(\xd5\xa3|\xd4\xb3)",
-	"\xd5\xa4" => "(\xd5\xa4|\xd4\xb4)",
-	"\xd5\xa5" => "(\xd5\xa5|\xd4\xb5)",
-	"\xd5\xa6" => "(\xd5\xa6|\xd4\xb6)",
-	"\xd5\xa7" => "(\xd5\xa7|\xd4\xb7)",
-	"\xd5\xa8" => "(\xd5\xa8|\xd4\xb8)",
-	"\xd5\xa9" => "(\xd5\xa9|\xd4\xb9)",
-	"\xd5\xaa" => "(\xd5\xaa|\xd4\xba)",
-	"\xd5\xab" => "(\xd5\xab|\xd4\xbb)",
-	"\xd5\xac" => "(\xd5\xac|\xd4\xbc)",
-	"\xd5\xad" => "(\xd5\xad|\xd4\xbd)",
-	"\xd5\xae" => "(\xd5\xae|\xd4\xbe)",
-	"\xd5\xaf" => "(\xd5\xaf|\xd4\xbf)",
-	"\xd5\xb0" => "(\xd5\xb0|\xd5\x80)",
-	"\xd5\xb1" => "(\xd5\xb1|\xd5\x81)",
-	"\xd5\xb2" => "(\xd5\xb2|\xd5\x82)",
-	"\xd5\xb3" => "(\xd5\xb3|\xd5\x83)",
-	"\xd5\xb4" => "(\xd5\xb4|\xd5\x84)",
-	"\xd5\xb5" => "(\xd5\xb5|\xd5\x85)",
-	"\xd5\xb6" => "(\xd5\xb6|\xd5\x86)",
-	"\xd5\xb7" => "(\xd5\xb7|\xd5\x87)",
-	"\xd5\xb8" => "(\xd5\xb8|\xd5\x88)",
-	"\xd5\xb9" => "(\xd5\xb9|\xd5\x89)",
-	"\xd5\xba" => "(\xd5\xba|\xd5\x8a)",
-	"\xd5\xbb" => "(\xd5\xbb|\xd5\x8b)",
-	"\xd5\xbc" => "(\xd5\xbc|\xd5\x8c)",
-	"\xd5\xbd" => "(\xd5\xbd|\xd5\x8d)",
-	"\xd5\xbe" => "(\xd5\xbe|\xd5\x8e)",
-	"\xd5\xbf" => "(\xd5\xbf|\xd5\x8f)",
-	"\xd6\x80" => "(\xd6\x80|\xd5\x90)",
-	"\xd6\x81" => "(\xd6\x81|\xd5\x91)",
-	"\xd6\x82" => "(\xd6\x82|\xd5\x92)",
-	"\xd6\x83" => "(\xd6\x83|\xd5\x93)",
-	"\xd6\x84" => "(\xd6\x84|\xd5\x94)",
-	"\xd6\x85" => "(\xd6\x85|\xd5\x95)",
-	"\xd6\x86" => "(\xd6\x86|\xd5\x96)",
-	"\xe1\xb8\x81" => "(\xe1\xb8\x81|\xe1\xb8\x80)",
-	"\xe1\xb8\x83" => "(\xe1\xb8\x83|\xe1\xb8\x82)",
-	"\xe1\xb8\x85" => "(\xe1\xb8\x85|\xe1\xb8\x84)",
-	"\xe1\xb8\x87" => "(\xe1\xb8\x87|\xe1\xb8\x86)",
-	"\xe1\xb8\x89" => "(\xe1\xb8\x89|\xe1\xb8\x88)",
-	"\xe1\xb8\x8b" => "(\xe1\xb8\x8b|\xe1\xb8\x8a)",
-	"\xe1\xb8\x8d" => "(\xe1\xb8\x8d|\xe1\xb8\x8c)",
-	"\xe1\xb8\x8f" => "(\xe1\xb8\x8f|\xe1\xb8\x8e)",
-	"\xe1\xb8\x91" => "(\xe1\xb8\x91|\xe1\xb8\x90)",
-	"\xe1\xb8\x93" => "(\xe1\xb8\x93|\xe1\xb8\x92)",
-	"\xe1\xb8\x95" => "(\xe1\xb8\x95|\xe1\xb8\x94)",
-	"\xe1\xb8\x97" => "(\xe1\xb8\x97|\xe1\xb8\x96)",
-	"\xe1\xb8\x99" => "(\xe1\xb8\x99|\xe1\xb8\x98)",
-	"\xe1\xb8\x9b" => "(\xe1\xb8\x9b|\xe1\xb8\x9a)",
-	"\xe1\xb8\x9d" => "(\xe1\xb8\x9d|\xe1\xb8\x9c)",
-	"\xe1\xb8\x9f" => "(\xe1\xb8\x9f|\xe1\xb8\x9e)",
-	"\xe1\xb8\xa1" => "(\xe1\xb8\xa1|\xe1\xb8\xa0)",
-	"\xe1\xb8\xa3" => "(\xe1\xb8\xa3|\xe1\xb8\xa2)",
-	"\xe1\xb8\xa5" => "(\xe1\xb8\xa5|\xe1\xb8\xa4)",
-	"\xe1\xb8\xa7" => "(\xe1\xb8\xa7|\xe1\xb8\xa6)",
-	"\xe1\xb8\xa9" => "(\xe1\xb8\xa9|\xe1\xb8\xa8)",
-	"\xe1\xb8\xab" => "(\xe1\xb8\xab|\xe1\xb8\xaa)",
-	"\xe1\xb8\xad" => "(\xe1\xb8\xad|\xe1\xb8\xac)",
-	"\xe1\xb8\xaf" => "(\xe1\xb8\xaf|\xe1\xb8\xae)",
-	"\xe1\xb8\xb1" => "(\xe1\xb8\xb1|\xe1\xb8\xb0)",
-	"\xe1\xb8\xb3" => "(\xe1\xb8\xb3|\xe1\xb8\xb2)",
-	"\xe1\xb8\xb5" => "(\xe1\xb8\xb5|\xe1\xb8\xb4)",
-	"\xe1\xb8\xb7" => "(\xe1\xb8\xb7|\xe1\xb8\xb6)",
-	"\xe1\xb8\xb9" => "(\xe1\xb8\xb9|\xe1\xb8\xb8)",
-	"\xe1\xb8\xbb" => "(\xe1\xb8\xbb|\xe1\xb8\xba)",
-	"\xe1\xb8\xbd" => "(\xe1\xb8\xbd|\xe1\xb8\xbc)",
-	"\xe1\xb8\xbf" => "(\xe1\xb8\xbf|\xe1\xb8\xbe)",
-	"\xe1\xb9\x81" => "(\xe1\xb9\x81|\xe1\xb9\x80)",
-	"\xe1\xb9\x83" => "(\xe1\xb9\x83|\xe1\xb9\x82)",
-	"\xe1\xb9\x85" => "(\xe1\xb9\x85|\xe1\xb9\x84)",
-	"\xe1\xb9\x87" => "(\xe1\xb9\x87|\xe1\xb9\x86)",
-	"\xe1\xb9\x89" => "(\xe1\xb9\x89|\xe1\xb9\x88)",
-	"\xe1\xb9\x8b" => "(\xe1\xb9\x8b|\xe1\xb9\x8a)",
-	"\xe1\xb9\x8d" => "(\xe1\xb9\x8d|\xe1\xb9\x8c)",
-	"\xe1\xb9\x8f" => "(\xe1\xb9\x8f|\xe1\xb9\x8e)",
-	"\xe1\xb9\x91" => "(\xe1\xb9\x91|\xe1\xb9\x90)",
-	"\xe1\xb9\x93" => "(\xe1\xb9\x93|\xe1\xb9\x92)",
-	"\xe1\xb9\x95" => "(\xe1\xb9\x95|\xe1\xb9\x94)",
-	"\xe1\xb9\x97" => "(\xe1\xb9\x97|\xe1\xb9\x96)",
-	"\xe1\xb9\x99" => "(\xe1\xb9\x99|\xe1\xb9\x98)",
-	"\xe1\xb9\x9b" => "(\xe1\xb9\x9b|\xe1\xb9\x9a)",
-	"\xe1\xb9\x9d" => "(\xe1\xb9\x9d|\xe1\xb9\x9c)",
-	"\xe1\xb9\x9f" => "(\xe1\xb9\x9f|\xe1\xb9\x9e)",
-	"\xe1\xb9\xa1" => "(\xe1\xb9\xa1|\xe1\xb9\xa0)",
-	"\xe1\xb9\xa3" => "(\xe1\xb9\xa3|\xe1\xb9\xa2)",
-	"\xe1\xb9\xa5" => "(\xe1\xb9\xa5|\xe1\xb9\xa4)",
-	"\xe1\xb9\xa7" => "(\xe1\xb9\xa7|\xe1\xb9\xa6)",
-	"\xe1\xb9\xa9" => "(\xe1\xb9\xa9|\xe1\xb9\xa8)",
-	"\xe1\xb9\xab" => "(\xe1\xb9\xab|\xe1\xb9\xaa)",
-	"\xe1\xb9\xad" => "(\xe1\xb9\xad|\xe1\xb9\xac)",
-	"\xe1\xb9\xaf" => "(\xe1\xb9\xaf|\xe1\xb9\xae)",
-	"\xe1\xb9\xb1" => "(\xe1\xb9\xb1|\xe1\xb9\xb0)",
-	"\xe1\xb9\xb3" => "(\xe1\xb9\xb3|\xe1\xb9\xb2)",
-	"\xe1\xb9\xb5" => "(\xe1\xb9\xb5|\xe1\xb9\xb4)",
-	"\xe1\xb9\xb7" => "(\xe1\xb9\xb7|\xe1\xb9\xb6)",
-	"\xe1\xb9\xb9" => "(\xe1\xb9\xb9|\xe1\xb9\xb8)",
-	"\xe1\xb9\xbb" => "(\xe1\xb9\xbb|\xe1\xb9\xba)",
-	"\xe1\xb9\xbd" => "(\xe1\xb9\xbd|\xe1\xb9\xbc)",
-	"\xe1\xb9\xbf" => "(\xe1\xb9\xbf|\xe1\xb9\xbe)",
-	"\xe1\xba\x81" => "(\xe1\xba\x81|\xe1\xba\x80)",
-	"\xe1\xba\x83" => "(\xe1\xba\x83|\xe1\xba\x82)",
-	"\xe1\xba\x85" => "(\xe1\xba\x85|\xe1\xba\x84)",
-	"\xe1\xba\x87" => "(\xe1\xba\x87|\xe1\xba\x86)",
-	"\xe1\xba\x89" => "(\xe1\xba\x89|\xe1\xba\x88)",
-	"\xe1\xba\x8b" => "(\xe1\xba\x8b|\xe1\xba\x8a)",
-	"\xe1\xba\x8d" => "(\xe1\xba\x8d|\xe1\xba\x8c)",
-	"\xe1\xba\x8f" => "(\xe1\xba\x8f|\xe1\xba\x8e)",
-	"\xe1\xba\x91" => "(\xe1\xba\x91|\xe1\xba\x90)",
-	"\xe1\xba\x93" => "(\xe1\xba\x93|\xe1\xba\x92)",
-	"\xe1\xba\x95" => "(\xe1\xba\x95|\xe1\xba\x94)",
-	"\xe1\xba\x9b" => "(\xe1\xba\x9b|\xe1\xb9\xa0)",
-	"\xe1\xba\xa1" => "(\xe1\xba\xa1|\xe1\xba\xa0)",
-	"\xe1\xba\xa3" => "(\xe1\xba\xa3|\xe1\xba\xa2)",
-	"\xe1\xba\xa5" => "(\xe1\xba\xa5|\xe1\xba\xa4)",
-	"\xe1\xba\xa7" => "(\xe1\xba\xa7|\xe1\xba\xa6)",
-	"\xe1\xba\xa9" => "(\xe1\xba\xa9|\xe1\xba\xa8)",
-	"\xe1\xba\xab" => "(\xe1\xba\xab|\xe1\xba\xaa)",
-	"\xe1\xba\xad" => "(\xe1\xba\xad|\xe1\xba\xac)",
-	"\xe1\xba\xaf" => "(\xe1\xba\xaf|\xe1\xba\xae)",
-	"\xe1\xba\xb1" => "(\xe1\xba\xb1|\xe1\xba\xb0)",
-	"\xe1\xba\xb3" => "(\xe1\xba\xb3|\xe1\xba\xb2)",
-	"\xe1\xba\xb5" => "(\xe1\xba\xb5|\xe1\xba\xb4)",
-	"\xe1\xba\xb7" => "(\xe1\xba\xb7|\xe1\xba\xb6)",
-	"\xe1\xba\xb9" => "(\xe1\xba\xb9|\xe1\xba\xb8)",
-	"\xe1\xba\xbb" => "(\xe1\xba\xbb|\xe1\xba\xba)",
-	"\xe1\xba\xbd" => "(\xe1\xba\xbd|\xe1\xba\xbc)",
-	"\xe1\xba\xbf" => "(\xe1\xba\xbf|\xe1\xba\xbe)",
-	"\xe1\xbb\x81" => "(\xe1\xbb\x81|\xe1\xbb\x80)",
-	"\xe1\xbb\x83" => "(\xe1\xbb\x83|\xe1\xbb\x82)",
-	"\xe1\xbb\x85" => "(\xe1\xbb\x85|\xe1\xbb\x84)",
-	"\xe1\xbb\x87" => "(\xe1\xbb\x87|\xe1\xbb\x86)",
-	"\xe1\xbb\x89" => "(\xe1\xbb\x89|\xe1\xbb\x88)",
-	"\xe1\xbb\x8b" => "(\xe1\xbb\x8b|\xe1\xbb\x8a)",
-	"\xe1\xbb\x8d" => "(\xe1\xbb\x8d|\xe1\xbb\x8c)",
-	"\xe1\xbb\x8f" => "(\xe1\xbb\x8f|\xe1\xbb\x8e)",
-	"\xe1\xbb\x91" => "(\xe1\xbb\x91|\xe1\xbb\x90)",
-	"\xe1\xbb\x93" => "(\xe1\xbb\x93|\xe1\xbb\x92)",
-	"\xe1\xbb\x95" => "(\xe1\xbb\x95|\xe1\xbb\x94)",
-	"\xe1\xbb\x97" => "(\xe1\xbb\x97|\xe1\xbb\x96)",
-	"\xe1\xbb\x99" => "(\xe1\xbb\x99|\xe1\xbb\x98)",
-	"\xe1\xbb\x9b" => "(\xe1\xbb\x9b|\xe1\xbb\x9a)",
-	"\xe1\xbb\x9d" => "(\xe1\xbb\x9d|\xe1\xbb\x9c)",
-	"\xe1\xbb\x9f" => "(\xe1\xbb\x9f|\xe1\xbb\x9e)",
-	"\xe1\xbb\xa1" => "(\xe1\xbb\xa1|\xe1\xbb\xa0)",
-	"\xe1\xbb\xa3" => "(\xe1\xbb\xa3|\xe1\xbb\xa2)",
-	"\xe1\xbb\xa5" => "(\xe1\xbb\xa5|\xe1\xbb\xa4)",
-	"\xe1\xbb\xa7" => "(\xe1\xbb\xa7|\xe1\xbb\xa6)",
-	"\xe1\xbb\xa9" => "(\xe1\xbb\xa9|\xe1\xbb\xa8)",
-	"\xe1\xbb\xab" => "(\xe1\xbb\xab|\xe1\xbb\xaa)",
-	"\xe1\xbb\xad" => "(\xe1\xbb\xad|\xe1\xbb\xac)",
-	"\xe1\xbb\xaf" => "(\xe1\xbb\xaf|\xe1\xbb\xae)",
-	"\xe1\xbb\xb1" => "(\xe1\xbb\xb1|\xe1\xbb\xb0)",
-	"\xe1\xbb\xb3" => "(\xe1\xbb\xb3|\xe1\xbb\xb2)",
-	"\xe1\xbb\xb5" => "(\xe1\xbb\xb5|\xe1\xbb\xb4)",
-	"\xe1\xbb\xb7" => "(\xe1\xbb\xb7|\xe1\xbb\xb6)",
-	"\xe1\xbb\xb9" => "(\xe1\xbb\xb9|\xe1\xbb\xb8)",
-	"\xe1\xbc\x80" => "(\xe1\xbc\x80|\xe1\xbc\x88)",
-	"\xe1\xbc\x81" => "(\xe1\xbc\x81|\xe1\xbc\x89)",
-	"\xe1\xbc\x82" => "(\xe1\xbc\x82|\xe1\xbc\x8a)",
-	"\xe1\xbc\x83" => "(\xe1\xbc\x83|\xe1\xbc\x8b)",
-	"\xe1\xbc\x84" => "(\xe1\xbc\x84|\xe1\xbc\x8c)",
-	"\xe1\xbc\x85" => "(\xe1\xbc\x85|\xe1\xbc\x8d)",
-	"\xe1\xbc\x86" => "(\xe1\xbc\x86|\xe1\xbc\x8e)",
-	"\xe1\xbc\x87" => "(\xe1\xbc\x87|\xe1\xbc\x8f)",
-	"\xe1\xbc\x90" => "(\xe1\xbc\x90|\xe1\xbc\x98)",
-	"\xe1\xbc\x91" => "(\xe1\xbc\x91|\xe1\xbc\x99)",
-	"\xe1\xbc\x92" => "(\xe1\xbc\x92|\xe1\xbc\x9a)",
-	"\xe1\xbc\x93" => "(\xe1\xbc\x93|\xe1\xbc\x9b)",
-	"\xe1\xbc\x94" => "(\xe1\xbc\x94|\xe1\xbc\x9c)",
-	"\xe1\xbc\x95" => "(\xe1\xbc\x95|\xe1\xbc\x9d)",
-	"\xe1\xbc\xa0" => "(\xe1\xbc\xa0|\xe1\xbc\xa8)",
-	"\xe1\xbc\xa1" => "(\xe1\xbc\xa1|\xe1\xbc\xa9)",
-	"\xe1\xbc\xa2" => "(\xe1\xbc\xa2|\xe1\xbc\xaa)",
-	"\xe1\xbc\xa3" => "(\xe1\xbc\xa3|\xe1\xbc\xab)",
-	"\xe1\xbc\xa4" => "(\xe1\xbc\xa4|\xe1\xbc\xac)",
-	"\xe1\xbc\xa5" => "(\xe1\xbc\xa5|\xe1\xbc\xad)",
-	"\xe1\xbc\xa6" => "(\xe1\xbc\xa6|\xe1\xbc\xae)",
-	"\xe1\xbc\xa7" => "(\xe1\xbc\xa7|\xe1\xbc\xaf)",
-	"\xe1\xbc\xb0" => "(\xe1\xbc\xb0|\xe1\xbc\xb8)",
-	"\xe1\xbc\xb1" => "(\xe1\xbc\xb1|\xe1\xbc\xb9)",
-	"\xe1\xbc\xb2" => "(\xe1\xbc\xb2|\xe1\xbc\xba)",
-	"\xe1\xbc\xb3" => "(\xe1\xbc\xb3|\xe1\xbc\xbb)",
-	"\xe1\xbc\xb4" => "(\xe1\xbc\xb4|\xe1\xbc\xbc)",
-	"\xe1\xbc\xb5" => "(\xe1\xbc\xb5|\xe1\xbc\xbd)",
-	"\xe1\xbc\xb6" => "(\xe1\xbc\xb6|\xe1\xbc\xbe)",
-	"\xe1\xbc\xb7" => "(\xe1\xbc\xb7|\xe1\xbc\xbf)",
-	"\xe1\xbd\x80" => "(\xe1\xbd\x80|\xe1\xbd\x88)",
-	"\xe1\xbd\x81" => "(\xe1\xbd\x81|\xe1\xbd\x89)",
-	"\xe1\xbd\x82" => "(\xe1\xbd\x82|\xe1\xbd\x8a)",
-	"\xe1\xbd\x83" => "(\xe1\xbd\x83|\xe1\xbd\x8b)",
-	"\xe1\xbd\x84" => "(\xe1\xbd\x84|\xe1\xbd\x8c)",
-	"\xe1\xbd\x85" => "(\xe1\xbd\x85|\xe1\xbd\x8d)",
-	"\xe1\xbd\x91" => "(\xe1\xbd\x91|\xe1\xbd\x99)",
-	"\xe1\xbd\x93" => "(\xe1\xbd\x93|\xe1\xbd\x9b)",
-	"\xe1\xbd\x95" => "(\xe1\xbd\x95|\xe1\xbd\x9d)",
-	"\xe1\xbd\x97" => "(\xe1\xbd\x97|\xe1\xbd\x9f)",
-	"\xe1\xbd\xa0" => "(\xe1\xbd\xa0|\xe1\xbd\xa8)",
-	"\xe1\xbd\xa1" => "(\xe1\xbd\xa1|\xe1\xbd\xa9)",
-	"\xe1\xbd\xa2" => "(\xe1\xbd\xa2|\xe1\xbd\xaa)",
-	"\xe1\xbd\xa3" => "(\xe1\xbd\xa3|\xe1\xbd\xab)",
-	"\xe1\xbd\xa4" => "(\xe1\xbd\xa4|\xe1\xbd\xac)",
-	"\xe1\xbd\xa5" => "(\xe1\xbd\xa5|\xe1\xbd\xad)",
-	"\xe1\xbd\xa6" => "(\xe1\xbd\xa6|\xe1\xbd\xae)",
-	"\xe1\xbd\xa7" => "(\xe1\xbd\xa7|\xe1\xbd\xaf)",
-	"\xe1\xbd\xb0" => "(\xe1\xbd\xb0|\xe1\xbe\xba)",
-	"\xe1\xbd\xb1" => "(\xe1\xbd\xb1|\xe1\xbe\xbb)",
-	"\xe1\xbd\xb2" => "(\xe1\xbd\xb2|\xe1\xbf\x88)",
-	"\xe1\xbd\xb3" => "(\xe1\xbd\xb3|\xe1\xbf\x89)",
-	"\xe1\xbd\xb4" => "(\xe1\xbd\xb4|\xe1\xbf\x8a)",
-	"\xe1\xbd\xb5" => "(\xe1\xbd\xb5|\xe1\xbf\x8b)",
-	"\xe1\xbd\xb6" => "(\xe1\xbd\xb6|\xe1\xbf\x9a)",
-	"\xe1\xbd\xb7" => "(\xe1\xbd\xb7|\xe1\xbf\x9b)",
-	"\xe1\xbd\xb8" => "(\xe1\xbd\xb8|\xe1\xbf\xb8)",
-	"\xe1\xbd\xb9" => "(\xe1\xbd\xb9|\xe1\xbf\xb9)",
-	"\xe1\xbd\xba" => "(\xe1\xbd\xba|\xe1\xbf\xaa)",
-	"\xe1\xbd\xbb" => "(\xe1\xbd\xbb|\xe1\xbf\xab)",
-	"\xe1\xbd\xbc" => "(\xe1\xbd\xbc|\xe1\xbf\xba)",
-	"\xe1\xbd\xbd" => "(\xe1\xbd\xbd|\xe1\xbf\xbb)",
-	"\xe1\xbe\x80" => "(\xe1\xbe\x80|\xe1\xbe\x88)",
-	"\xe1\xbe\x81" => "(\xe1\xbe\x81|\xe1\xbe\x89)",
-	"\xe1\xbe\x82" => "(\xe1\xbe\x82|\xe1\xbe\x8a)",
-	"\xe1\xbe\x83" => "(\xe1\xbe\x83|\xe1\xbe\x8b)",
-	"\xe1\xbe\x84" => "(\xe1\xbe\x84|\xe1\xbe\x8c)",
-	"\xe1\xbe\x85" => "(\xe1\xbe\x85|\xe1\xbe\x8d)",
-	"\xe1\xbe\x86" => "(\xe1\xbe\x86|\xe1\xbe\x8e)",
-	"\xe1\xbe\x87" => "(\xe1\xbe\x87|\xe1\xbe\x8f)",
-	"\xe1\xbe\x90" => "(\xe1\xbe\x90|\xe1\xbe\x98)",
-	"\xe1\xbe\x91" => "(\xe1\xbe\x91|\xe1\xbe\x99)",
-	"\xe1\xbe\x92" => "(\xe1\xbe\x92|\xe1\xbe\x9a)",
-	"\xe1\xbe\x93" => "(\xe1\xbe\x93|\xe1\xbe\x9b)",
-	"\xe1\xbe\x94" => "(\xe1\xbe\x94|\xe1\xbe\x9c)",
-	"\xe1\xbe\x95" => "(\xe1\xbe\x95|\xe1\xbe\x9d)",
-	"\xe1\xbe\x96" => "(\xe1\xbe\x96|\xe1\xbe\x9e)",
-	"\xe1\xbe\x97" => "(\xe1\xbe\x97|\xe1\xbe\x9f)",
-	"\xe1\xbe\xa0" => "(\xe1\xbe\xa0|\xe1\xbe\xa8)",
-	"\xe1\xbe\xa1" => "(\xe1\xbe\xa1|\xe1\xbe\xa9)",
-	"\xe1\xbe\xa2" => "(\xe1\xbe\xa2|\xe1\xbe\xaa)",
-	"\xe1\xbe\xa3" => "(\xe1\xbe\xa3|\xe1\xbe\xab)",
-	"\xe1\xbe\xa4" => "(\xe1\xbe\xa4|\xe1\xbe\xac)",
-	"\xe1\xbe\xa5" => "(\xe1\xbe\xa5|\xe1\xbe\xad)",
-	"\xe1\xbe\xa6" => "(\xe1\xbe\xa6|\xe1\xbe\xae)",
-	"\xe1\xbe\xa7" => "(\xe1\xbe\xa7|\xe1\xbe\xaf)",
-	"\xe1\xbe\xb0" => "(\xe1\xbe\xb0|\xe1\xbe\xb8)",
-	"\xe1\xbe\xb1" => "(\xe1\xbe\xb1|\xe1\xbe\xb9)",
-	"\xe1\xbe\xb3" => "(\xe1\xbe\xb3|\xe1\xbe\xbc)",
-	"\xe1\xbe\xbe" => "(\xe1\xbe\xbe|\xce\x99)",
-	"\xe1\xbf\x83" => "(\xe1\xbf\x83|\xe1\xbf\x8c)",
-	"\xe1\xbf\x90" => "(\xe1\xbf\x90|\xe1\xbf\x98)",
-	"\xe1\xbf\x91" => "(\xe1\xbf\x91|\xe1\xbf\x99)",
-	"\xe1\xbf\xa0" => "(\xe1\xbf\xa0|\xe1\xbf\xa8)",
-	"\xe1\xbf\xa1" => "(\xe1\xbf\xa1|\xe1\xbf\xa9)",
-	"\xe1\xbf\xa5" => "(\xe1\xbf\xa5|\xe1\xbf\xac)",
-	"\xe1\xbf\xb3" => "(\xe1\xbf\xb3|\xe1\xbf\xbc)",
-	"\xe2\x85\xb0" => "(\xe2\x85\xb0|\xe2\x85\xa0)",
-	"\xe2\x85\xb1" => "(\xe2\x85\xb1|\xe2\x85\xa1)",
-	"\xe2\x85\xb2" => "(\xe2\x85\xb2|\xe2\x85\xa2)",
-	"\xe2\x85\xb3" => "(\xe2\x85\xb3|\xe2\x85\xa3)",
-	"\xe2\x85\xb4" => "(\xe2\x85\xb4|\xe2\x85\xa4)",
-	"\xe2\x85\xb5" => "(\xe2\x85\xb5|\xe2\x85\xa5)",
-	"\xe2\x85\xb6" => "(\xe2\x85\xb6|\xe2\x85\xa6)",
-	"\xe2\x85\xb7" => "(\xe2\x85\xb7|\xe2\x85\xa7)",
-	"\xe2\x85\xb8" => "(\xe2\x85\xb8|\xe2\x85\xa8)",
-	"\xe2\x85\xb9" => "(\xe2\x85\xb9|\xe2\x85\xa9)",
-	"\xe2\x85\xba" => "(\xe2\x85\xba|\xe2\x85\xaa)",
-	"\xe2\x85\xbb" => "(\xe2\x85\xbb|\xe2\x85\xab)",
-	"\xe2\x85\xbc" => "(\xe2\x85\xbc|\xe2\x85\xac)",
-	"\xe2\x85\xbd" => "(\xe2\x85\xbd|\xe2\x85\xad)",
-	"\xe2\x85\xbe" => "(\xe2\x85\xbe|\xe2\x85\xae)",
-	"\xe2\x85\xbf" => "(\xe2\x85\xbf|\xe2\x85\xaf)",
-	"\xe2\x93\x90" => "(\xe2\x93\x90|\xe2\x92\xb6)",
-	"\xe2\x93\x91" => "(\xe2\x93\x91|\xe2\x92\xb7)",
-	"\xe2\x93\x92" => "(\xe2\x93\x92|\xe2\x92\xb8)",
-	"\xe2\x93\x93" => "(\xe2\x93\x93|\xe2\x92\xb9)",
-	"\xe2\x93\x94" => "(\xe2\x93\x94|\xe2\x92\xba)",
-	"\xe2\x93\x95" => "(\xe2\x93\x95|\xe2\x92\xbb)",
-	"\xe2\x93\x96" => "(\xe2\x93\x96|\xe2\x92\xbc)",
-	"\xe2\x93\x97" => "(\xe2\x93\x97|\xe2\x92\xbd)",
-	"\xe2\x93\x98" => "(\xe2\x93\x98|\xe2\x92\xbe)",
-	"\xe2\x93\x99" => "(\xe2\x93\x99|\xe2\x92\xbf)",
-	"\xe2\x93\x9a" => "(\xe2\x93\x9a|\xe2\x93\x80)",
-	"\xe2\x93\x9b" => "(\xe2\x93\x9b|\xe2\x93\x81)",
-	"\xe2\x93\x9c" => "(\xe2\x93\x9c|\xe2\x93\x82)",
-	"\xe2\x93\x9d" => "(\xe2\x93\x9d|\xe2\x93\x83)",
-	"\xe2\x93\x9e" => "(\xe2\x93\x9e|\xe2\x93\x84)",
-	"\xe2\x93\x9f" => "(\xe2\x93\x9f|\xe2\x93\x85)",
-	"\xe2\x93\xa0" => "(\xe2\x93\xa0|\xe2\x93\x86)",
-	"\xe2\x93\xa1" => "(\xe2\x93\xa1|\xe2\x93\x87)",
-	"\xe2\x93\xa2" => "(\xe2\x93\xa2|\xe2\x93\x88)",
-	"\xe2\x93\xa3" => "(\xe2\x93\xa3|\xe2\x93\x89)",
-	"\xe2\x93\xa4" => "(\xe2\x93\xa4|\xe2\x93\x8a)",
-	"\xe2\x93\xa5" => "(\xe2\x93\xa5|\xe2\x93\x8b)",
-	"\xe2\x93\xa6" => "(\xe2\x93\xa6|\xe2\x93\x8c)",
-	"\xe2\x93\xa7" => "(\xe2\x93\xa7|\xe2\x93\x8d)",
-	"\xe2\x93\xa8" => "(\xe2\x93\xa8|\xe2\x93\x8e)",
-	"\xe2\x93\xa9" => "(\xe2\x93\xa9|\xe2\x93\x8f)",
-	"\xef\xbd\x81" => "(\xef\xbd\x81|\xef\xbc\xa1)",
-	"\xef\xbd\x82" => "(\xef\xbd\x82|\xef\xbc\xa2)",
-	"\xef\xbd\x83" => "(\xef\xbd\x83|\xef\xbc\xa3)",
-	"\xef\xbd\x84" => "(\xef\xbd\x84|\xef\xbc\xa4)",
-	"\xef\xbd\x85" => "(\xef\xbd\x85|\xef\xbc\xa5)",
-	"\xef\xbd\x86" => "(\xef\xbd\x86|\xef\xbc\xa6)",
-	"\xef\xbd\x87" => "(\xef\xbd\x87|\xef\xbc\xa7)",
-	"\xef\xbd\x88" => "(\xef\xbd\x88|\xef\xbc\xa8)",
-	"\xef\xbd\x89" => "(\xef\xbd\x89|\xef\xbc\xa9)",
-	"\xef\xbd\x8a" => "(\xef\xbd\x8a|\xef\xbc\xaa)",
-	"\xef\xbd\x8b" => "(\xef\xbd\x8b|\xef\xbc\xab)",
-	"\xef\xbd\x8c" => "(\xef\xbd\x8c|\xef\xbc\xac)",
-	"\xef\xbd\x8d" => "(\xef\xbd\x8d|\xef\xbc\xad)",
-	"\xef\xbd\x8e" => "(\xef\xbd\x8e|\xef\xbc\xae)",
-	"\xef\xbd\x8f" => "(\xef\xbd\x8f|\xef\xbc\xaf)",
-	"\xef\xbd\x90" => "(\xef\xbd\x90|\xef\xbc\xb0)",
-	"\xef\xbd\x91" => "(\xef\xbd\x91|\xef\xbc\xb1)",
-	"\xef\xbd\x92" => "(\xef\xbd\x92|\xef\xbc\xb2)",
-	"\xef\xbd\x93" => "(\xef\xbd\x93|\xef\xbc\xb3)",
-	"\xef\xbd\x94" => "(\xef\xbd\x94|\xef\xbc\xb4)",
-	"\xef\xbd\x95" => "(\xef\xbd\x95|\xef\xbc\xb5)",
-	"\xef\xbd\x96" => "(\xef\xbd\x96|\xef\xbc\xb6)",
-	"\xef\xbd\x97" => "(\xef\xbd\x97|\xef\xbc\xb7)",
-	"\xef\xbd\x98" => "(\xef\xbd\x98|\xef\xbc\xb8)",
-	"\xef\xbd\x99" => "(\xef\xbd\x99|\xef\xbc\xb9)",
-	"\xef\xbd\x9a" => "(\xef\xbd\x9a|\xef\xbc\xba)",
-	"\xf0\x90\x90\xa8" => "(\xf0\x90\x90\xa8|\xf0\x90\x90\x80)",
-	"\xf0\x90\x90\xa9" => "(\xf0\x90\x90\xa9|\xf0\x90\x90\x81)",
-	"\xf0\x90\x90\xaa" => "(\xf0\x90\x90\xaa|\xf0\x90\x90\x82)",
-	"\xf0\x90\x90\xab" => "(\xf0\x90\x90\xab|\xf0\x90\x90\x83)",
-	"\xf0\x90\x90\xac" => "(\xf0\x90\x90\xac|\xf0\x90\x90\x84)",
-	"\xf0\x90\x90\xad" => "(\xf0\x90\x90\xad|\xf0\x90\x90\x85)",
-	"\xf0\x90\x90\xae" => "(\xf0\x90\x90\xae|\xf0\x90\x90\x86)",
-	"\xf0\x90\x90\xaf" => "(\xf0\x90\x90\xaf|\xf0\x90\x90\x87)",
-	"\xf0\x90\x90\xb0" => "(\xf0\x90\x90\xb0|\xf0\x90\x90\x88)",
-	"\xf0\x90\x90\xb1" => "(\xf0\x90\x90\xb1|\xf0\x90\x90\x89)",
-	"\xf0\x90\x90\xb2" => "(\xf0\x90\x90\xb2|\xf0\x90\x90\x8a)",
-	"\xf0\x90\x90\xb3" => "(\xf0\x90\x90\xb3|\xf0\x90\x90\x8b)",
-	"\xf0\x90\x90\xb4" => "(\xf0\x90\x90\xb4|\xf0\x90\x90\x8c)",
-	"\xf0\x90\x90\xb5" => "(\xf0\x90\x90\xb5|\xf0\x90\x90\x8d)",
-	"\xf0\x90\x90\xb6" => "(\xf0\x90\x90\xb6|\xf0\x90\x90\x8e)",
-	"\xf0\x90\x90\xb7" => "(\xf0\x90\x90\xb7|\xf0\x90\x90\x8f)",
-	"\xf0\x90\x90\xb8" => "(\xf0\x90\x90\xb8|\xf0\x90\x90\x90)",
-	"\xf0\x90\x90\xb9" => "(\xf0\x90\x90\xb9|\xf0\x90\x90\x91)",
-	"\xf0\x90\x90\xba" => "(\xf0\x90\x90\xba|\xf0\x90\x90\x92)",
-	"\xf0\x90\x90\xbb" => "(\xf0\x90\x90\xbb|\xf0\x90\x90\x93)",
-	"\xf0\x90\x90\xbc" => "(\xf0\x90\x90\xbc|\xf0\x90\x90\x94)",
-	"\xf0\x90\x90\xbd" => "(\xf0\x90\x90\xbd|\xf0\x90\x90\x95)",
-	"\xf0\x90\x90\xbe" => "(\xf0\x90\x90\xbe|\xf0\x90\x90\x96)",
-	"\xf0\x90\x90\xbf" => "(\xf0\x90\x90\xbf|\xf0\x90\x90\x97)",
-	"\xf0\x90\x91\x80" => "(\xf0\x90\x91\x80|\xf0\x90\x90\x98)",
-	"\xf0\x90\x91\x81" => "(\xf0\x90\x91\x81|\xf0\x90\x90\x99)",
-	"\xf0\x90\x91\x82" => "(\xf0\x90\x91\x82|\xf0\x90\x90\x9a)",
-	"\xf0\x90\x91\x83" => "(\xf0\x90\x91\x83|\xf0\x90\x90\x9b)",
-	"\xf0\x90\x91\x84" => "(\xf0\x90\x91\x84|\xf0\x90\x90\x9c)",
-	"\xf0\x90\x91\x85" => "(\xf0\x90\x91\x85|\xf0\x90\x90\x9d)",
-	"\xf0\x90\x91\x86" => "(\xf0\x90\x91\x86|\xf0\x90\x90\x9e)",
-	"\xf0\x90\x91\x87" => "(\xf0\x90\x91\x87|\xf0\x90\x90\x9f)",
-	"\xf0\x90\x91\x88" => "(\xf0\x90\x91\x88|\xf0\x90\x90\xa0)",
-	"\xf0\x90\x91\x89" => "(\xf0\x90\x91\x89|\xf0\x90\x90\xa1)",
-	"\xf0\x90\x91\x8a" => "(\xf0\x90\x91\x8a|\xf0\x90\x90\xa2)",
-	"\xf0\x90\x91\x8b" => "(\xf0\x90\x91\x8b|\xf0\x90\x90\xa3)",
-	"\xf0\x90\x91\x8c" => "(\xf0\x90\x91\x8c|\xf0\x90\x90\xa4)",
-	"\xf0\x90\x91\x8d" => "(\xf0\x90\x91\x8d|\xf0\x90\x90\xa5)",
-	"\xc3\x80" => "(\xc3\x80|\xc3\xa0)",
-	"\xc3\x81" => "(\xc3\x81|\xc3\xa1)",
-	"\xc3\x82" => "(\xc3\x82|\xc3\xa2)",
-	"\xc3\x83" => "(\xc3\x83|\xc3\xa3)",
-	"\xc3\x84" => "(\xc3\x84|\xc3\xa4)",
-	"\xc3\x85" => "(\xc3\x85|\xc3\xa5)",
-	"\xc3\x86" => "(\xc3\x86|\xc3\xa6)",
-	"\xc3\x87" => "(\xc3\x87|\xc3\xa7)",
-	"\xc3\x88" => "(\xc3\x88|\xc3\xa8)",
-	"\xc3\x89" => "(\xc3\x89|\xc3\xa9)",
-	"\xc3\x8a" => "(\xc3\x8a|\xc3\xaa)",
-	"\xc3\x8b" => "(\xc3\x8b|\xc3\xab)",
-	"\xc3\x8c" => "(\xc3\x8c|\xc3\xac)",
-	"\xc3\x8d" => "(\xc3\x8d|\xc3\xad)",
-	"\xc3\x8e" => "(\xc3\x8e|\xc3\xae)",
-	"\xc3\x8f" => "(\xc3\x8f|\xc3\xaf)",
-	"\xc3\x90" => "(\xc3\x90|\xc3\xb0)",
-	"\xc3\x91" => "(\xc3\x91|\xc3\xb1)",
-	"\xc3\x92" => "(\xc3\x92|\xc3\xb2)",
-	"\xc3\x93" => "(\xc3\x93|\xc3\xb3)",
-	"\xc3\x94" => "(\xc3\x94|\xc3\xb4)",
-	"\xc3\x95" => "(\xc3\x95|\xc3\xb5)",
-	"\xc3\x96" => "(\xc3\x96|\xc3\xb6)",
-	"\xc3\x98" => "(\xc3\x98|\xc3\xb8)",
-	"\xc3\x99" => "(\xc3\x99|\xc3\xb9)",
-	"\xc3\x9a" => "(\xc3\x9a|\xc3\xba)",
-	"\xc3\x9b" => "(\xc3\x9b|\xc3\xbb)",
-	"\xc3\x9c" => "(\xc3\x9c|\xc3\xbc)",
-	"\xc3\x9d" => "(\xc3\x9d|\xc3\xbd)",
-	"\xc3\x9e" => "(\xc3\x9e|\xc3\xbe)",
-	"\xc4\x80" => "(\xc4\x80|\xc4\x81)",
-	"\xc4\x82" => "(\xc4\x82|\xc4\x83)",
-	"\xc4\x84" => "(\xc4\x84|\xc4\x85)",
-	"\xc4\x86" => "(\xc4\x86|\xc4\x87)",
-	"\xc4\x88" => "(\xc4\x88|\xc4\x89)",
-	"\xc4\x8a" => "(\xc4\x8a|\xc4\x8b)",
-	"\xc4\x8c" => "(\xc4\x8c|\xc4\x8d)",
-	"\xc4\x8e" => "(\xc4\x8e|\xc4\x8f)",
-	"\xc4\x90" => "(\xc4\x90|\xc4\x91)",
-	"\xc4\x92" => "(\xc4\x92|\xc4\x93)",
-	"\xc4\x94" => "(\xc4\x94|\xc4\x95)",
-	"\xc4\x96" => "(\xc4\x96|\xc4\x97)",
-	"\xc4\x98" => "(\xc4\x98|\xc4\x99)",
-	"\xc4\x9a" => "(\xc4\x9a|\xc4\x9b)",
-	"\xc4\x9c" => "(\xc4\x9c|\xc4\x9d)",
-	"\xc4\x9e" => "(\xc4\x9e|\xc4\x9f)",
-	"\xc4\xa0" => "(\xc4\xa0|\xc4\xa1)",
-	"\xc4\xa2" => "(\xc4\xa2|\xc4\xa3)",
-	"\xc4\xa4" => "(\xc4\xa4|\xc4\xa5)",
-	"\xc4\xa6" => "(\xc4\xa6|\xc4\xa7)",
-	"\xc4\xa8" => "(\xc4\xa8|\xc4\xa9)",
-	"\xc4\xaa" => "(\xc4\xaa|\xc4\xab)",
-	"\xc4\xac" => "(\xc4\xac|\xc4\xad)",
-	"\xc4\xae" => "(\xc4\xae|\xc4\xaf)",
-	"\xc4\xb0" => "(\xc4\xb0|i)",
-	"\xc4\xb2" => "(\xc4\xb2|\xc4\xb3)",
-	"\xc4\xb4" => "(\xc4\xb4|\xc4\xb5)",
-	"\xc4\xb6" => "(\xc4\xb6|\xc4\xb7)",
-	"\xc4\xb9" => "(\xc4\xb9|\xc4\xba)",
-	"\xc4\xbb" => "(\xc4\xbb|\xc4\xbc)",
-	"\xc4\xbd" => "(\xc4\xbd|\xc4\xbe)",
-	"\xc4\xbf" => "(\xc4\xbf|\xc5\x80)",
-	"\xc5\x81" => "(\xc5\x81|\xc5\x82)",
-	"\xc5\x83" => "(\xc5\x83|\xc5\x84)",
-	"\xc5\x85" => "(\xc5\x85|\xc5\x86)",
-	"\xc5\x87" => "(\xc5\x87|\xc5\x88)",
-	"\xc5\x8a" => "(\xc5\x8a|\xc5\x8b)",
-	"\xc5\x8c" => "(\xc5\x8c|\xc5\x8d)",
-	"\xc5\x8e" => "(\xc5\x8e|\xc5\x8f)",
-	"\xc5\x90" => "(\xc5\x90|\xc5\x91)",
-	"\xc5\x92" => "(\xc5\x92|\xc5\x93)",
-	"\xc5\x94" => "(\xc5\x94|\xc5\x95)",
-	"\xc5\x96" => "(\xc5\x96|\xc5\x97)",
-	"\xc5\x98" => "(\xc5\x98|\xc5\x99)",
-	"\xc5\x9a" => "(\xc5\x9a|\xc5\x9b)",
-	"\xc5\x9c" => "(\xc5\x9c|\xc5\x9d)",
-	"\xc5\x9e" => "(\xc5\x9e|\xc5\x9f)",
-	"\xc5\xa0" => "(\xc5\xa0|\xc5\xa1)",
-	"\xc5\xa2" => "(\xc5\xa2|\xc5\xa3)",
-	"\xc5\xa4" => "(\xc5\xa4|\xc5\xa5)",
-	"\xc5\xa6" => "(\xc5\xa6|\xc5\xa7)",
-	"\xc5\xa8" => "(\xc5\xa8|\xc5\xa9)",
-	"\xc5\xaa" => "(\xc5\xaa|\xc5\xab)",
-	"\xc5\xac" => "(\xc5\xac|\xc5\xad)",
-	"\xc5\xae" => "(\xc5\xae|\xc5\xaf)",
-	"\xc5\xb0" => "(\xc5\xb0|\xc5\xb1)",
-	"\xc5\xb2" => "(\xc5\xb2|\xc5\xb3)",
-	"\xc5\xb4" => "(\xc5\xb4|\xc5\xb5)",
-	"\xc5\xb6" => "(\xc5\xb6|\xc5\xb7)",
-	"\xc5\xb8" => "(\xc5\xb8|\xc3\xbf)",
-	"\xc5\xb9" => "(\xc5\xb9|\xc5\xba)",
-	"\xc5\xbb" => "(\xc5\xbb|\xc5\xbc)",
-	"\xc5\xbd" => "(\xc5\xbd|\xc5\xbe)",
-	"\xc6\x81" => "(\xc6\x81|\xc9\x93)",
-	"\xc6\x82" => "(\xc6\x82|\xc6\x83)",
-	"\xc6\x84" => "(\xc6\x84|\xc6\x85)",
-	"\xc6\x86" => "(\xc6\x86|\xc9\x94)",
-	"\xc6\x87" => "(\xc6\x87|\xc6\x88)",
-	"\xc6\x89" => "(\xc6\x89|\xc9\x96)",
-	"\xc6\x8a" => "(\xc6\x8a|\xc9\x97)",
-	"\xc6\x8b" => "(\xc6\x8b|\xc6\x8c)",
-	"\xc6\x8e" => "(\xc6\x8e|\xc7\x9d)",
-	"\xc6\x8f" => "(\xc6\x8f|\xc9\x99)",
-	"\xc6\x90" => "(\xc6\x90|\xc9\x9b)",
-	"\xc6\x91" => "(\xc6\x91|\xc6\x92)",
-	"\xc6\x93" => "(\xc6\x93|\xc9\xa0)",
-	"\xc6\x94" => "(\xc6\x94|\xc9\xa3)",
-	"\xc6\x96" => "(\xc6\x96|\xc9\xa9)",
-	"\xc6\x97" => "(\xc6\x97|\xc9\xa8)",
-	"\xc6\x98" => "(\xc6\x98|\xc6\x99)",
-	"\xc6\x9c" => "(\xc6\x9c|\xc9\xaf)",
-	"\xc6\x9d" => "(\xc6\x9d|\xc9\xb2)",
-	"\xc6\x9f" => "(\xc6\x9f|\xc9\xb5)",
-	"\xc6\xa0" => "(\xc6\xa0|\xc6\xa1)",
-	"\xc6\xa2" => "(\xc6\xa2|\xc6\xa3)",
-	"\xc6\xa4" => "(\xc6\xa4|\xc6\xa5)",
-	"\xc6\xa6" => "(\xc6\xa6|\xca\x80)",
-	"\xc6\xa7" => "(\xc6\xa7|\xc6\xa8)",
-	"\xc6\xa9" => "(\xc6\xa9|\xca\x83)",
-	"\xc6\xac" => "(\xc6\xac|\xc6\xad)",
-	"\xc6\xae" => "(\xc6\xae|\xca\x88)",
-	"\xc6\xaf" => "(\xc6\xaf|\xc6\xb0)",
-	"\xc6\xb1" => "(\xc6\xb1|\xca\x8a)",
-	"\xc6\xb2" => "(\xc6\xb2|\xca\x8b)",
-	"\xc6\xb3" => "(\xc6\xb3|\xc6\xb4)",
-	"\xc6\xb5" => "(\xc6\xb5|\xc6\xb6)",
-	"\xc6\xb7" => "(\xc6\xb7|\xca\x92)",
-	"\xc6\xb8" => "(\xc6\xb8|\xc6\xb9)",
-	"\xc6\xbc" => "(\xc6\xbc|\xc6\xbd)",
-	"\xc7\x84" => "(\xc7\x84|\xc7\x86|\xc7\x85)",
-	"\xc7\x85" => "(\xc7\x85|\xc7\x84|\xc7\x86)",
-	"\xc7\x87" => "(\xc7\x87|\xc7\x89|\xc7\x88)",
-	"\xc7\x88" => "(\xc7\x88|\xc7\x87|\xc7\x89)",
-	"\xc7\x8a" => "(\xc7\x8a|\xc7\x8c|\xc7\x8b)",
-	"\xc7\x8b" => "(\xc7\x8b|\xc7\x8a|\xc7\x8c)",
-	"\xc7\x8d" => "(\xc7\x8d|\xc7\x8e)",
-	"\xc7\x8f" => "(\xc7\x8f|\xc7\x90)",
-	"\xc7\x91" => "(\xc7\x91|\xc7\x92)",
-	"\xc7\x93" => "(\xc7\x93|\xc7\x94)",
-	"\xc7\x95" => "(\xc7\x95|\xc7\x96)",
-	"\xc7\x97" => "(\xc7\x97|\xc7\x98)",
-	"\xc7\x99" => "(\xc7\x99|\xc7\x9a)",
-	"\xc7\x9b" => "(\xc7\x9b|\xc7\x9c)",
-	"\xc7\x9e" => "(\xc7\x9e|\xc7\x9f)",
-	"\xc7\xa0" => "(\xc7\xa0|\xc7\xa1)",
-	"\xc7\xa2" => "(\xc7\xa2|\xc7\xa3)",
-	"\xc7\xa4" => "(\xc7\xa4|\xc7\xa5)",
-	"\xc7\xa6" => "(\xc7\xa6|\xc7\xa7)",
-	"\xc7\xa8" => "(\xc7\xa8|\xc7\xa9)",
-	"\xc7\xaa" => "(\xc7\xaa|\xc7\xab)",
-	"\xc7\xac" => "(\xc7\xac|\xc7\xad)",
-	"\xc7\xae" => "(\xc7\xae|\xc7\xaf)",
-	"\xc7\xb1" => "(\xc7\xb1|\xc7\xb3|\xc7\xb2)",
-	"\xc7\xb4" => "(\xc7\xb4|\xc7\xb5)",
-	"\xc7\xb6" => "(\xc7\xb6|\xc6\x95)",
-	"\xc7\xb7" => "(\xc7\xb7|\xc6\xbf)",
-	"\xc7\xb8" => "(\xc7\xb8|\xc7\xb9)",
-	"\xc7\xba" => "(\xc7\xba|\xc7\xbb)",
-	"\xc7\xbc" => "(\xc7\xbc|\xc7\xbd)",
-	"\xc7\xbe" => "(\xc7\xbe|\xc7\xbf)",
-	"\xc8\x80" => "(\xc8\x80|\xc8\x81)",
-	"\xc8\x82" => "(\xc8\x82|\xc8\x83)",
-	"\xc8\x84" => "(\xc8\x84|\xc8\x85)",
-	"\xc8\x86" => "(\xc8\x86|\xc8\x87)",
-	"\xc8\x88" => "(\xc8\x88|\xc8\x89)",
-	"\xc8\x8a" => "(\xc8\x8a|\xc8\x8b)",
-	"\xc8\x8c" => "(\xc8\x8c|\xc8\x8d)",
-	"\xc8\x8e" => "(\xc8\x8e|\xc8\x8f)",
-	"\xc8\x90" => "(\xc8\x90|\xc8\x91)",
-	"\xc8\x92" => "(\xc8\x92|\xc8\x93)",
-	"\xc8\x94" => "(\xc8\x94|\xc8\x95)",
-	"\xc8\x96" => "(\xc8\x96|\xc8\x97)",
-	"\xc8\x98" => "(\xc8\x98|\xc8\x99)",
-	"\xc8\x9a" => "(\xc8\x9a|\xc8\x9b)",
-	"\xc8\x9c" => "(\xc8\x9c|\xc8\x9d)",
-	"\xc8\x9e" => "(\xc8\x9e|\xc8\x9f)",
-	"\xc8\xa2" => "(\xc8\xa2|\xc8\xa3)",
-	"\xc8\xa4" => "(\xc8\xa4|\xc8\xa5)",
-	"\xc8\xa6" => "(\xc8\xa6|\xc8\xa7)",
-	"\xc8\xa8" => "(\xc8\xa8|\xc8\xa9)",
-	"\xc8\xaa" => "(\xc8\xaa|\xc8\xab)",
-	"\xc8\xac" => "(\xc8\xac|\xc8\xad)",
-	"\xc8\xae" => "(\xc8\xae|\xc8\xaf)",
-	"\xc8\xb0" => "(\xc8\xb0|\xc8\xb1)",
-	"\xc8\xb2" => "(\xc8\xb2|\xc8\xb3)",
-	"\xce\x86" => "(\xce\x86|\xce\xac)",
-	"\xce\x88" => "(\xce\x88|\xce\xad)",
-	"\xce\x89" => "(\xce\x89|\xce\xae)",
-	"\xce\x8a" => "(\xce\x8a|\xce\xaf)",
-	"\xce\x8c" => "(\xce\x8c|\xcf\x8c)",
-	"\xce\x8e" => "(\xce\x8e|\xcf\x8d)",
-	"\xce\x8f" => "(\xce\x8f|\xcf\x8e)",
-	"\xce\x91" => "(\xce\x91|\xce\xb1)",
-	"\xce\x92" => "(\xce\x92|\xce\xb2|\xcf\x90)",
-	"\xce\x93" => "(\xce\x93|\xce\xb3)",
-	"\xce\x94" => "(\xce\x94|\xce\xb4)",
-	"\xce\x95" => "(\xce\x95|\xce\xb5|\xcf\xb5)",
-	"\xce\x96" => "(\xce\x96|\xce\xb6)",
-	"\xce\x97" => "(\xce\x97|\xce\xb7)",
-	"\xce\x98" => "(\xce\x98|\xce\xb8|\xcf\x91)",
-	"\xce\x99" => "(\xce\x99|\xce\xb9|\xcd\x85|\xe1\xbe\xbe)",
-	"\xce\x9a" => "(\xce\x9a|\xce\xba|\xcf\xb0)",
-	"\xce\x9b" => "(\xce\x9b|\xce\xbb)",
-	"\xce\x9c" => "(\xce\x9c|\xce\xbc|\xc2\xb5)",
-	"\xce\x9d" => "(\xce\x9d|\xce\xbd)",
-	"\xce\x9e" => "(\xce\x9e|\xce\xbe)",
-	"\xce\x9f" => "(\xce\x9f|\xce\xbf)",
-	"\xce\xa0" => "(\xce\xa0|\xcf\x80|\xcf\x96)",
-	"\xce\xa1" => "(\xce\xa1|\xcf\x81|\xcf\xb1)",
-	"\xce\xa3" => "(\xce\xa3|\xcf\x83|\xcf\x82|\xcf\xb2)",
-	"\xce\xa4" => "(\xce\xa4|\xcf\x84)",
-	"\xce\xa5" => "(\xce\xa5|\xcf\x85)",
-	"\xce\xa6" => "(\xce\xa6|\xcf\x86|\xcf\x95)",
-	"\xce\xa7" => "(\xce\xa7|\xcf\x87)",
-	"\xce\xa8" => "(\xce\xa8|\xcf\x88)",
-	"\xce\xa9" => "(\xce\xa9|\xcf\x89)",
-	"\xce\xaa" => "(\xce\xaa|\xcf\x8a)",
-	"\xce\xab" => "(\xce\xab|\xcf\x8b)",
-	"\xcf\x9a" => "(\xcf\x9a|\xcf\x9b)",
-	"\xcf\x9c" => "(\xcf\x9c|\xcf\x9d)",
-	"\xcf\x9e" => "(\xcf\x9e|\xcf\x9f)",
-	"\xcf\xa0" => "(\xcf\xa0|\xcf\xa1)",
-	"\xcf\xa2" => "(\xcf\xa2|\xcf\xa3)",
-	"\xcf\xa4" => "(\xcf\xa4|\xcf\xa5)",
-	"\xcf\xa6" => "(\xcf\xa6|\xcf\xa7)",
-	"\xcf\xa8" => "(\xcf\xa8|\xcf\xa9)",
-	"\xcf\xaa" => "(\xcf\xaa|\xcf\xab)",
-	"\xcf\xac" => "(\xcf\xac|\xcf\xad)",
-	"\xcf\xae" => "(\xcf\xae|\xcf\xaf)",
-	"\xcf\xb4" => "(\xcf\xb4|\xce\xb8)",
-	"\xd0\x80" => "(\xd0\x80|\xd1\x90)",
-	"\xd0\x81" => "(\xd0\x81|\xd1\x91)",
-	"\xd0\x82" => "(\xd0\x82|\xd1\x92)",
-	"\xd0\x83" => "(\xd0\x83|\xd1\x93)",
-	"\xd0\x84" => "(\xd0\x84|\xd1\x94)",
-	"\xd0\x85" => "(\xd0\x85|\xd1\x95)",
-	"\xd0\x86" => "(\xd0\x86|\xd1\x96)",
-	"\xd0\x87" => "(\xd0\x87|\xd1\x97)",
-	"\xd0\x88" => "(\xd0\x88|\xd1\x98)",
-	"\xd0\x89" => "(\xd0\x89|\xd1\x99)",
-	"\xd0\x8a" => "(\xd0\x8a|\xd1\x9a)",
-	"\xd0\x8b" => "(\xd0\x8b|\xd1\x9b)",
-	"\xd0\x8c" => "(\xd0\x8c|\xd1\x9c)",
-	"\xd0\x8d" => "(\xd0\x8d|\xd1\x9d)",
-	"\xd0\x8e" => "(\xd0\x8e|\xd1\x9e)",
-	"\xd0\x8f" => "(\xd0\x8f|\xd1\x9f)",
-	"\xd0\x90" => "(\xd0\x90|\xd0\xb0)",
-	"\xd0\x91" => "(\xd0\x91|\xd0\xb1)",
-	"\xd0\x92" => "(\xd0\x92|\xd0\xb2)",
-	"\xd0\x93" => "(\xd0\x93|\xd0\xb3)",
-	"\xd0\x94" => "(\xd0\x94|\xd0\xb4)",
-	"\xd0\x95" => "(\xd0\x95|\xd0\xb5)",
-	"\xd0\x96" => "(\xd0\x96|\xd0\xb6)",
-	"\xd0\x97" => "(\xd0\x97|\xd0\xb7)",
-	"\xd0\x98" => "(\xd0\x98|\xd0\xb8)",
-	"\xd0\x99" => "(\xd0\x99|\xd0\xb9)",
-	"\xd0\x9a" => "(\xd0\x9a|\xd0\xba)",
-	"\xd0\x9b" => "(\xd0\x9b|\xd0\xbb)",
-	"\xd0\x9c" => "(\xd0\x9c|\xd0\xbc)",
-	"\xd0\x9d" => "(\xd0\x9d|\xd0\xbd)",
-	"\xd0\x9e" => "(\xd0\x9e|\xd0\xbe)",
-	"\xd0\x9f" => "(\xd0\x9f|\xd0\xbf)",
-	"\xd0\xa0" => "(\xd0\xa0|\xd1\x80)",
-	"\xd0\xa1" => "(\xd0\xa1|\xd1\x81)",
-	"\xd0\xa2" => "(\xd0\xa2|\xd1\x82)",
-	"\xd0\xa3" => "(\xd0\xa3|\xd1\x83)",
-	"\xd0\xa4" => "(\xd0\xa4|\xd1\x84)",
-	"\xd0\xa5" => "(\xd0\xa5|\xd1\x85)",
-	"\xd0\xa6" => "(\xd0\xa6|\xd1\x86)",
-	"\xd0\xa7" => "(\xd0\xa7|\xd1\x87)",
-	"\xd0\xa8" => "(\xd0\xa8|\xd1\x88)",
-	"\xd0\xa9" => "(\xd0\xa9|\xd1\x89)",
-	"\xd0\xaa" => "(\xd0\xaa|\xd1\x8a)",
-	"\xd0\xab" => "(\xd0\xab|\xd1\x8b)",
-	"\xd0\xac" => "(\xd0\xac|\xd1\x8c)",
-	"\xd0\xad" => "(\xd0\xad|\xd1\x8d)",
-	"\xd0\xae" => "(\xd0\xae|\xd1\x8e)",
-	"\xd0\xaf" => "(\xd0\xaf|\xd1\x8f)",
-	"\xd1\xa0" => "(\xd1\xa0|\xd1\xa1)",
-	"\xd1\xa2" => "(\xd1\xa2|\xd1\xa3)",
-	"\xd1\xa4" => "(\xd1\xa4|\xd1\xa5)",
-	"\xd1\xa6" => "(\xd1\xa6|\xd1\xa7)",
-	"\xd1\xa8" => "(\xd1\xa8|\xd1\xa9)",
-	"\xd1\xaa" => "(\xd1\xaa|\xd1\xab)",
-	"\xd1\xac" => "(\xd1\xac|\xd1\xad)",
-	"\xd1\xae" => "(\xd1\xae|\xd1\xaf)",
-	"\xd1\xb0" => "(\xd1\xb0|\xd1\xb1)",
-	"\xd1\xb2" => "(\xd1\xb2|\xd1\xb3)",
-	"\xd1\xb4" => "(\xd1\xb4|\xd1\xb5)",
-	"\xd1\xb6" => "(\xd1\xb6|\xd1\xb7)",
-	"\xd1\xb8" => "(\xd1\xb8|\xd1\xb9)",
-	"\xd1\xba" => "(\xd1\xba|\xd1\xbb)",
-	"\xd1\xbc" => "(\xd1\xbc|\xd1\xbd)",
-	"\xd1\xbe" => "(\xd1\xbe|\xd1\xbf)",
-	"\xd2\x80" => "(\xd2\x80|\xd2\x81)",
-	"\xd2\x8c" => "(\xd2\x8c|\xd2\x8d)",
-	"\xd2\x8e" => "(\xd2\x8e|\xd2\x8f)",
-	"\xd2\x90" => "(\xd2\x90|\xd2\x91)",
-	"\xd2\x92" => "(\xd2\x92|\xd2\x93)",
-	"\xd2\x94" => "(\xd2\x94|\xd2\x95)",
-	"\xd2\x96" => "(\xd2\x96|\xd2\x97)",
-	"\xd2\x98" => "(\xd2\x98|\xd2\x99)",
-	"\xd2\x9a" => "(\xd2\x9a|\xd2\x9b)",
-	"\xd2\x9c" => "(\xd2\x9c|\xd2\x9d)",
-	"\xd2\x9e" => "(\xd2\x9e|\xd2\x9f)",
-	"\xd2\xa0" => "(\xd2\xa0|\xd2\xa1)",
-	"\xd2\xa2" => "(\xd2\xa2|\xd2\xa3)",
-	"\xd2\xa4" => "(\xd2\xa4|\xd2\xa5)",
-	"\xd2\xa6" => "(\xd2\xa6|\xd2\xa7)",
-	"\xd2\xa8" => "(\xd2\xa8|\xd2\xa9)",
-	"\xd2\xaa" => "(\xd2\xaa|\xd2\xab)",
-	"\xd2\xac" => "(\xd2\xac|\xd2\xad)",
-	"\xd2\xae" => "(\xd2\xae|\xd2\xaf)",
-	"\xd2\xb0" => "(\xd2\xb0|\xd2\xb1)",
-	"\xd2\xb2" => "(\xd2\xb2|\xd2\xb3)",
-	"\xd2\xb4" => "(\xd2\xb4|\xd2\xb5)",
-	"\xd2\xb6" => "(\xd2\xb6|\xd2\xb7)",
-	"\xd2\xb8" => "(\xd2\xb8|\xd2\xb9)",
-	"\xd2\xba" => "(\xd2\xba|\xd2\xbb)",
-	"\xd2\xbc" => "(\xd2\xbc|\xd2\xbd)",
-	"\xd2\xbe" => "(\xd2\xbe|\xd2\xbf)",
-	"\xd3\x81" => "(\xd3\x81|\xd3\x82)",
-	"\xd3\x83" => "(\xd3\x83|\xd3\x84)",
-	"\xd3\x87" => "(\xd3\x87|\xd3\x88)",
-	"\xd3\x8b" => "(\xd3\x8b|\xd3\x8c)",
-	"\xd3\x90" => "(\xd3\x90|\xd3\x91)",
-	"\xd3\x92" => "(\xd3\x92|\xd3\x93)",
-	"\xd3\x94" => "(\xd3\x94|\xd3\x95)",
-	"\xd3\x96" => "(\xd3\x96|\xd3\x97)",
-	"\xd3\x98" => "(\xd3\x98|\xd3\x99)",
-	"\xd3\x9a" => "(\xd3\x9a|\xd3\x9b)",
-	"\xd3\x9c" => "(\xd3\x9c|\xd3\x9d)",
-	"\xd3\x9e" => "(\xd3\x9e|\xd3\x9f)",
-	"\xd3\xa0" => "(\xd3\xa0|\xd3\xa1)",
-	"\xd3\xa2" => "(\xd3\xa2|\xd3\xa3)",
-	"\xd3\xa4" => "(\xd3\xa4|\xd3\xa5)",
-	"\xd3\xa6" => "(\xd3\xa6|\xd3\xa7)",
-	"\xd3\xa8" => "(\xd3\xa8|\xd3\xa9)",
-	"\xd3\xaa" => "(\xd3\xaa|\xd3\xab)",
-	"\xd3\xac" => "(\xd3\xac|\xd3\xad)",
-	"\xd3\xae" => "(\xd3\xae|\xd3\xaf)",
-	"\xd3\xb0" => "(\xd3\xb0|\xd3\xb1)",
-	"\xd3\xb2" => "(\xd3\xb2|\xd3\xb3)",
-	"\xd3\xb4" => "(\xd3\xb4|\xd3\xb5)",
-	"\xd3\xb8" => "(\xd3\xb8|\xd3\xb9)",
-	"\xd4\xb1" => "(\xd4\xb1|\xd5\xa1)",
-	"\xd4\xb2" => "(\xd4\xb2|\xd5\xa2)",
-	"\xd4\xb3" => "(\xd4\xb3|\xd5\xa3)",
-	"\xd4\xb4" => "(\xd4\xb4|\xd5\xa4)",
-	"\xd4\xb5" => "(\xd4\xb5|\xd5\xa5)",
-	"\xd4\xb6" => "(\xd4\xb6|\xd5\xa6)",
-	"\xd4\xb7" => "(\xd4\xb7|\xd5\xa7)",
-	"\xd4\xb8" => "(\xd4\xb8|\xd5\xa8)",
-	"\xd4\xb9" => "(\xd4\xb9|\xd5\xa9)",
-	"\xd4\xba" => "(\xd4\xba|\xd5\xaa)",
-	"\xd4\xbb" => "(\xd4\xbb|\xd5\xab)",
-	"\xd4\xbc" => "(\xd4\xbc|\xd5\xac)",
-	"\xd4\xbd" => "(\xd4\xbd|\xd5\xad)",
-	"\xd4\xbe" => "(\xd4\xbe|\xd5\xae)",
-	"\xd4\xbf" => "(\xd4\xbf|\xd5\xaf)",
-	"\xd5\x80" => "(\xd5\x80|\xd5\xb0)",
-	"\xd5\x81" => "(\xd5\x81|\xd5\xb1)",
-	"\xd5\x82" => "(\xd5\x82|\xd5\xb2)",
-	"\xd5\x83" => "(\xd5\x83|\xd5\xb3)",
-	"\xd5\x84" => "(\xd5\x84|\xd5\xb4)",
-	"\xd5\x85" => "(\xd5\x85|\xd5\xb5)",
-	"\xd5\x86" => "(\xd5\x86|\xd5\xb6)",
-	"\xd5\x87" => "(\xd5\x87|\xd5\xb7)",
-	"\xd5\x88" => "(\xd5\x88|\xd5\xb8)",
-	"\xd5\x89" => "(\xd5\x89|\xd5\xb9)",
-	"\xd5\x8a" => "(\xd5\x8a|\xd5\xba)",
-	"\xd5\x8b" => "(\xd5\x8b|\xd5\xbb)",
-	"\xd5\x8c" => "(\xd5\x8c|\xd5\xbc)",
-	"\xd5\x8d" => "(\xd5\x8d|\xd5\xbd)",
-	"\xd5\x8e" => "(\xd5\x8e|\xd5\xbe)",
-	"\xd5\x8f" => "(\xd5\x8f|\xd5\xbf)",
-	"\xd5\x90" => "(\xd5\x90|\xd6\x80)",
-	"\xd5\x91" => "(\xd5\x91|\xd6\x81)",
-	"\xd5\x92" => "(\xd5\x92|\xd6\x82)",
-	"\xd5\x93" => "(\xd5\x93|\xd6\x83)",
-	"\xd5\x94" => "(\xd5\x94|\xd6\x84)",
-	"\xd5\x95" => "(\xd5\x95|\xd6\x85)",
-	"\xd5\x96" => "(\xd5\x96|\xd6\x86)",
-	"\xe1\xb8\x80" => "(\xe1\xb8\x80|\xe1\xb8\x81)",
-	"\xe1\xb8\x82" => "(\xe1\xb8\x82|\xe1\xb8\x83)",
-	"\xe1\xb8\x84" => "(\xe1\xb8\x84|\xe1\xb8\x85)",
-	"\xe1\xb8\x86" => "(\xe1\xb8\x86|\xe1\xb8\x87)",
-	"\xe1\xb8\x88" => "(\xe1\xb8\x88|\xe1\xb8\x89)",
-	"\xe1\xb8\x8a" => "(\xe1\xb8\x8a|\xe1\xb8\x8b)",
-	"\xe1\xb8\x8c" => "(\xe1\xb8\x8c|\xe1\xb8\x8d)",
-	"\xe1\xb8\x8e" => "(\xe1\xb8\x8e|\xe1\xb8\x8f)",
-	"\xe1\xb8\x90" => "(\xe1\xb8\x90|\xe1\xb8\x91)",
-	"\xe1\xb8\x92" => "(\xe1\xb8\x92|\xe1\xb8\x93)",
-	"\xe1\xb8\x94" => "(\xe1\xb8\x94|\xe1\xb8\x95)",
-	"\xe1\xb8\x96" => "(\xe1\xb8\x96|\xe1\xb8\x97)",
-	"\xe1\xb8\x98" => "(\xe1\xb8\x98|\xe1\xb8\x99)",
-	"\xe1\xb8\x9a" => "(\xe1\xb8\x9a|\xe1\xb8\x9b)",
-	"\xe1\xb8\x9c" => "(\xe1\xb8\x9c|\xe1\xb8\x9d)",
-	"\xe1\xb8\x9e" => "(\xe1\xb8\x9e|\xe1\xb8\x9f)",
-	"\xe1\xb8\xa0" => "(\xe1\xb8\xa0|\xe1\xb8\xa1)",
-	"\xe1\xb8\xa2" => "(\xe1\xb8\xa2|\xe1\xb8\xa3)",
-	"\xe1\xb8\xa4" => "(\xe1\xb8\xa4|\xe1\xb8\xa5)",
-	"\xe1\xb8\xa6" => "(\xe1\xb8\xa6|\xe1\xb8\xa7)",
-	"\xe1\xb8\xa8" => "(\xe1\xb8\xa8|\xe1\xb8\xa9)",
-	"\xe1\xb8\xaa" => "(\xe1\xb8\xaa|\xe1\xb8\xab)",
-	"\xe1\xb8\xac" => "(\xe1\xb8\xac|\xe1\xb8\xad)",
-	"\xe1\xb8\xae" => "(\xe1\xb8\xae|\xe1\xb8\xaf)",
-	"\xe1\xb8\xb0" => "(\xe1\xb8\xb0|\xe1\xb8\xb1)",
-	"\xe1\xb8\xb2" => "(\xe1\xb8\xb2|\xe1\xb8\xb3)",
-	"\xe1\xb8\xb4" => "(\xe1\xb8\xb4|\xe1\xb8\xb5)",
-	"\xe1\xb8\xb6" => "(\xe1\xb8\xb6|\xe1\xb8\xb7)",
-	"\xe1\xb8\xb8" => "(\xe1\xb8\xb8|\xe1\xb8\xb9)",
-	"\xe1\xb8\xba" => "(\xe1\xb8\xba|\xe1\xb8\xbb)",
-	"\xe1\xb8\xbc" => "(\xe1\xb8\xbc|\xe1\xb8\xbd)",
-	"\xe1\xb8\xbe" => "(\xe1\xb8\xbe|\xe1\xb8\xbf)",
-	"\xe1\xb9\x80" => "(\xe1\xb9\x80|\xe1\xb9\x81)",
-	"\xe1\xb9\x82" => "(\xe1\xb9\x82|\xe1\xb9\x83)",
-	"\xe1\xb9\x84" => "(\xe1\xb9\x84|\xe1\xb9\x85)",
-	"\xe1\xb9\x86" => "(\xe1\xb9\x86|\xe1\xb9\x87)",
-	"\xe1\xb9\x88" => "(\xe1\xb9\x88|\xe1\xb9\x89)",
-	"\xe1\xb9\x8a" => "(\xe1\xb9\x8a|\xe1\xb9\x8b)",
-	"\xe1\xb9\x8c" => "(\xe1\xb9\x8c|\xe1\xb9\x8d)",
-	"\xe1\xb9\x8e" => "(\xe1\xb9\x8e|\xe1\xb9\x8f)",
-	"\xe1\xb9\x90" => "(\xe1\xb9\x90|\xe1\xb9\x91)",
-	"\xe1\xb9\x92" => "(\xe1\xb9\x92|\xe1\xb9\x93)",
-	"\xe1\xb9\x94" => "(\xe1\xb9\x94|\xe1\xb9\x95)",
-	"\xe1\xb9\x96" => "(\xe1\xb9\x96|\xe1\xb9\x97)",
-	"\xe1\xb9\x98" => "(\xe1\xb9\x98|\xe1\xb9\x99)",
-	"\xe1\xb9\x9a" => "(\xe1\xb9\x9a|\xe1\xb9\x9b)",
-	"\xe1\xb9\x9c" => "(\xe1\xb9\x9c|\xe1\xb9\x9d)",
-	"\xe1\xb9\x9e" => "(\xe1\xb9\x9e|\xe1\xb9\x9f)",
-	"\xe1\xb9\xa0" => "(\xe1\xb9\xa0|\xe1\xb9\xa1|\xe1\xba\x9b)",
-	"\xe1\xb9\xa2" => "(\xe1\xb9\xa2|\xe1\xb9\xa3)",
-	"\xe1\xb9\xa4" => "(\xe1\xb9\xa4|\xe1\xb9\xa5)",
-	"\xe1\xb9\xa6" => "(\xe1\xb9\xa6|\xe1\xb9\xa7)",
-	"\xe1\xb9\xa8" => "(\xe1\xb9\xa8|\xe1\xb9\xa9)",
-	"\xe1\xb9\xaa" => "(\xe1\xb9\xaa|\xe1\xb9\xab)",
-	"\xe1\xb9\xac" => "(\xe1\xb9\xac|\xe1\xb9\xad)",
-	"\xe1\xb9\xae" => "(\xe1\xb9\xae|\xe1\xb9\xaf)",
-	"\xe1\xb9\xb0" => "(\xe1\xb9\xb0|\xe1\xb9\xb1)",
-	"\xe1\xb9\xb2" => "(\xe1\xb9\xb2|\xe1\xb9\xb3)",
-	"\xe1\xb9\xb4" => "(\xe1\xb9\xb4|\xe1\xb9\xb5)",
-	"\xe1\xb9\xb6" => "(\xe1\xb9\xb6|\xe1\xb9\xb7)",
-	"\xe1\xb9\xb8" => "(\xe1\xb9\xb8|\xe1\xb9\xb9)",
-	"\xe1\xb9\xba" => "(\xe1\xb9\xba|\xe1\xb9\xbb)",
-	"\xe1\xb9\xbc" => "(\xe1\xb9\xbc|\xe1\xb9\xbd)",
-	"\xe1\xb9\xbe" => "(\xe1\xb9\xbe|\xe1\xb9\xbf)",
-	"\xe1\xba\x80" => "(\xe1\xba\x80|\xe1\xba\x81)",
-	"\xe1\xba\x82" => "(\xe1\xba\x82|\xe1\xba\x83)",
-	"\xe1\xba\x84" => "(\xe1\xba\x84|\xe1\xba\x85)",
-	"\xe1\xba\x86" => "(\xe1\xba\x86|\xe1\xba\x87)",
-	"\xe1\xba\x88" => "(\xe1\xba\x88|\xe1\xba\x89)",
-	"\xe1\xba\x8a" => "(\xe1\xba\x8a|\xe1\xba\x8b)",
-	"\xe1\xba\x8c" => "(\xe1\xba\x8c|\xe1\xba\x8d)",
-	"\xe1\xba\x8e" => "(\xe1\xba\x8e|\xe1\xba\x8f)",
-	"\xe1\xba\x90" => "(\xe1\xba\x90|\xe1\xba\x91)",
-	"\xe1\xba\x92" => "(\xe1\xba\x92|\xe1\xba\x93)",
-	"\xe1\xba\x94" => "(\xe1\xba\x94|\xe1\xba\x95)",
-	"\xe1\xba\xa0" => "(\xe1\xba\xa0|\xe1\xba\xa1)",
-	"\xe1\xba\xa2" => "(\xe1\xba\xa2|\xe1\xba\xa3)",
-	"\xe1\xba\xa4" => "(\xe1\xba\xa4|\xe1\xba\xa5)",
-	"\xe1\xba\xa6" => "(\xe1\xba\xa6|\xe1\xba\xa7)",
-	"\xe1\xba\xa8" => "(\xe1\xba\xa8|\xe1\xba\xa9)",
-	"\xe1\xba\xaa" => "(\xe1\xba\xaa|\xe1\xba\xab)",
-	"\xe1\xba\xac" => "(\xe1\xba\xac|\xe1\xba\xad)",
-	"\xe1\xba\xae" => "(\xe1\xba\xae|\xe1\xba\xaf)",
-	"\xe1\xba\xb0" => "(\xe1\xba\xb0|\xe1\xba\xb1)",
-	"\xe1\xba\xb2" => "(\xe1\xba\xb2|\xe1\xba\xb3)",
-	"\xe1\xba\xb4" => "(\xe1\xba\xb4|\xe1\xba\xb5)",
-	"\xe1\xba\xb6" => "(\xe1\xba\xb6|\xe1\xba\xb7)",
-	"\xe1\xba\xb8" => "(\xe1\xba\xb8|\xe1\xba\xb9)",
-	"\xe1\xba\xba" => "(\xe1\xba\xba|\xe1\xba\xbb)",
-	"\xe1\xba\xbc" => "(\xe1\xba\xbc|\xe1\xba\xbd)",
-	"\xe1\xba\xbe" => "(\xe1\xba\xbe|\xe1\xba\xbf)",
-	"\xe1\xbb\x80" => "(\xe1\xbb\x80|\xe1\xbb\x81)",
-	"\xe1\xbb\x82" => "(\xe1\xbb\x82|\xe1\xbb\x83)",
-	"\xe1\xbb\x84" => "(\xe1\xbb\x84|\xe1\xbb\x85)",
-	"\xe1\xbb\x86" => "(\xe1\xbb\x86|\xe1\xbb\x87)",
-	"\xe1\xbb\x88" => "(\xe1\xbb\x88|\xe1\xbb\x89)",
-	"\xe1\xbb\x8a" => "(\xe1\xbb\x8a|\xe1\xbb\x8b)",
-	"\xe1\xbb\x8c" => "(\xe1\xbb\x8c|\xe1\xbb\x8d)",
-	"\xe1\xbb\x8e" => "(\xe1\xbb\x8e|\xe1\xbb\x8f)",
-	"\xe1\xbb\x90" => "(\xe1\xbb\x90|\xe1\xbb\x91)",
-	"\xe1\xbb\x92" => "(\xe1\xbb\x92|\xe1\xbb\x93)",
-	"\xe1\xbb\x94" => "(\xe1\xbb\x94|\xe1\xbb\x95)",
-	"\xe1\xbb\x96" => "(\xe1\xbb\x96|\xe1\xbb\x97)",
-	"\xe1\xbb\x98" => "(\xe1\xbb\x98|\xe1\xbb\x99)",
-	"\xe1\xbb\x9a" => "(\xe1\xbb\x9a|\xe1\xbb\x9b)",
-	"\xe1\xbb\x9c" => "(\xe1\xbb\x9c|\xe1\xbb\x9d)",
-	"\xe1\xbb\x9e" => "(\xe1\xbb\x9e|\xe1\xbb\x9f)",
-	"\xe1\xbb\xa0" => "(\xe1\xbb\xa0|\xe1\xbb\xa1)",
-	"\xe1\xbb\xa2" => "(\xe1\xbb\xa2|\xe1\xbb\xa3)",
-	"\xe1\xbb\xa4" => "(\xe1\xbb\xa4|\xe1\xbb\xa5)",
-	"\xe1\xbb\xa6" => "(\xe1\xbb\xa6|\xe1\xbb\xa7)",
-	"\xe1\xbb\xa8" => "(\xe1\xbb\xa8|\xe1\xbb\xa9)",
-	"\xe1\xbb\xaa" => "(\xe1\xbb\xaa|\xe1\xbb\xab)",
-	"\xe1\xbb\xac" => "(\xe1\xbb\xac|\xe1\xbb\xad)",
-	"\xe1\xbb\xae" => "(\xe1\xbb\xae|\xe1\xbb\xaf)",
-	"\xe1\xbb\xb0" => "(\xe1\xbb\xb0|\xe1\xbb\xb1)",
-	"\xe1\xbb\xb2" => "(\xe1\xbb\xb2|\xe1\xbb\xb3)",
-	"\xe1\xbb\xb4" => "(\xe1\xbb\xb4|\xe1\xbb\xb5)",
-	"\xe1\xbb\xb6" => "(\xe1\xbb\xb6|\xe1\xbb\xb7)",
-	"\xe1\xbb\xb8" => "(\xe1\xbb\xb8|\xe1\xbb\xb9)",
-	"\xe1\xbc\x88" => "(\xe1\xbc\x88|\xe1\xbc\x80)",
-	"\xe1\xbc\x89" => "(\xe1\xbc\x89|\xe1\xbc\x81)",
-	"\xe1\xbc\x8a" => "(\xe1\xbc\x8a|\xe1\xbc\x82)",
-	"\xe1\xbc\x8b" => "(\xe1\xbc\x8b|\xe1\xbc\x83)",
-	"\xe1\xbc\x8c" => "(\xe1\xbc\x8c|\xe1\xbc\x84)",
-	"\xe1\xbc\x8d" => "(\xe1\xbc\x8d|\xe1\xbc\x85)",
-	"\xe1\xbc\x8e" => "(\xe1\xbc\x8e|\xe1\xbc\x86)",
-	"\xe1\xbc\x8f" => "(\xe1\xbc\x8f|\xe1\xbc\x87)",
-	"\xe1\xbc\x98" => "(\xe1\xbc\x98|\xe1\xbc\x90)",
-	"\xe1\xbc\x99" => "(\xe1\xbc\x99|\xe1\xbc\x91)",
-	"\xe1\xbc\x9a" => "(\xe1\xbc\x9a|\xe1\xbc\x92)",
-	"\xe1\xbc\x9b" => "(\xe1\xbc\x9b|\xe1\xbc\x93)",
-	"\xe1\xbc\x9c" => "(\xe1\xbc\x9c|\xe1\xbc\x94)",
-	"\xe1\xbc\x9d" => "(\xe1\xbc\x9d|\xe1\xbc\x95)",
-	"\xe1\xbc\xa8" => "(\xe1\xbc\xa8|\xe1\xbc\xa0)",
-	"\xe1\xbc\xa9" => "(\xe1\xbc\xa9|\xe1\xbc\xa1)",
-	"\xe1\xbc\xaa" => "(\xe1\xbc\xaa|\xe1\xbc\xa2)",
-	"\xe1\xbc\xab" => "(\xe1\xbc\xab|\xe1\xbc\xa3)",
-	"\xe1\xbc\xac" => "(\xe1\xbc\xac|\xe1\xbc\xa4)",
-	"\xe1\xbc\xad" => "(\xe1\xbc\xad|\xe1\xbc\xa5)",
-	"\xe1\xbc\xae" => "(\xe1\xbc\xae|\xe1\xbc\xa6)",
-	"\xe1\xbc\xaf" => "(\xe1\xbc\xaf|\xe1\xbc\xa7)",
-	"\xe1\xbc\xb8" => "(\xe1\xbc\xb8|\xe1\xbc\xb0)",
-	"\xe1\xbc\xb9" => "(\xe1\xbc\xb9|\xe1\xbc\xb1)",
-	"\xe1\xbc\xba" => "(\xe1\xbc\xba|\xe1\xbc\xb2)",
-	"\xe1\xbc\xbb" => "(\xe1\xbc\xbb|\xe1\xbc\xb3)",
-	"\xe1\xbc\xbc" => "(\xe1\xbc\xbc|\xe1\xbc\xb4)",
-	"\xe1\xbc\xbd" => "(\xe1\xbc\xbd|\xe1\xbc\xb5)",
-	"\xe1\xbc\xbe" => "(\xe1\xbc\xbe|\xe1\xbc\xb6)",
-	"\xe1\xbc\xbf" => "(\xe1\xbc\xbf|\xe1\xbc\xb7)",
-	"\xe1\xbd\x88" => "(\xe1\xbd\x88|\xe1\xbd\x80)",
-	"\xe1\xbd\x89" => "(\xe1\xbd\x89|\xe1\xbd\x81)",
-	"\xe1\xbd\x8a" => "(\xe1\xbd\x8a|\xe1\xbd\x82)",
-	"\xe1\xbd\x8b" => "(\xe1\xbd\x8b|\xe1\xbd\x83)",
-	"\xe1\xbd\x8c" => "(\xe1\xbd\x8c|\xe1\xbd\x84)",
-	"\xe1\xbd\x8d" => "(\xe1\xbd\x8d|\xe1\xbd\x85)",
-	"\xe1\xbd\x99" => "(\xe1\xbd\x99|\xe1\xbd\x91)",
-	"\xe1\xbd\x9b" => "(\xe1\xbd\x9b|\xe1\xbd\x93)",
-	"\xe1\xbd\x9d" => "(\xe1\xbd\x9d|\xe1\xbd\x95)",
-	"\xe1\xbd\x9f" => "(\xe1\xbd\x9f|\xe1\xbd\x97)",
-	"\xe1\xbd\xa8" => "(\xe1\xbd\xa8|\xe1\xbd\xa0)",
-	"\xe1\xbd\xa9" => "(\xe1\xbd\xa9|\xe1\xbd\xa1)",
-	"\xe1\xbd\xaa" => "(\xe1\xbd\xaa|\xe1\xbd\xa2)",
-	"\xe1\xbd\xab" => "(\xe1\xbd\xab|\xe1\xbd\xa3)",
-	"\xe1\xbd\xac" => "(\xe1\xbd\xac|\xe1\xbd\xa4)",
-	"\xe1\xbd\xad" => "(\xe1\xbd\xad|\xe1\xbd\xa5)",
-	"\xe1\xbd\xae" => "(\xe1\xbd\xae|\xe1\xbd\xa6)",
-	"\xe1\xbd\xaf" => "(\xe1\xbd\xaf|\xe1\xbd\xa7)",
-	"\xe1\xbe\x88" => "(\xe1\xbe\x88|\xe1\xbe\x80)",
-	"\xe1\xbe\x89" => "(\xe1\xbe\x89|\xe1\xbe\x81)",
-	"\xe1\xbe\x8a" => "(\xe1\xbe\x8a|\xe1\xbe\x82)",
-	"\xe1\xbe\x8b" => "(\xe1\xbe\x8b|\xe1\xbe\x83)",
-	"\xe1\xbe\x8c" => "(\xe1\xbe\x8c|\xe1\xbe\x84)",
-	"\xe1\xbe\x8d" => "(\xe1\xbe\x8d|\xe1\xbe\x85)",
-	"\xe1\xbe\x8e" => "(\xe1\xbe\x8e|\xe1\xbe\x86)",
-	"\xe1\xbe\x8f" => "(\xe1\xbe\x8f|\xe1\xbe\x87)",
-	"\xe1\xbe\x98" => "(\xe1\xbe\x98|\xe1\xbe\x90)",
-	"\xe1\xbe\x99" => "(\xe1\xbe\x99|\xe1\xbe\x91)",
-	"\xe1\xbe\x9a" => "(\xe1\xbe\x9a|\xe1\xbe\x92)",
-	"\xe1\xbe\x9b" => "(\xe1\xbe\x9b|\xe1\xbe\x93)",
-	"\xe1\xbe\x9c" => "(\xe1\xbe\x9c|\xe1\xbe\x94)",
-	"\xe1\xbe\x9d" => "(\xe1\xbe\x9d|\xe1\xbe\x95)",
-	"\xe1\xbe\x9e" => "(\xe1\xbe\x9e|\xe1\xbe\x96)",
-	"\xe1\xbe\x9f" => "(\xe1\xbe\x9f|\xe1\xbe\x97)",
-	"\xe1\xbe\xa8" => "(\xe1\xbe\xa8|\xe1\xbe\xa0)",
-	"\xe1\xbe\xa9" => "(\xe1\xbe\xa9|\xe1\xbe\xa1)",
-	"\xe1\xbe\xaa" => "(\xe1\xbe\xaa|\xe1\xbe\xa2)",
-	"\xe1\xbe\xab" => "(\xe1\xbe\xab|\xe1\xbe\xa3)",
-	"\xe1\xbe\xac" => "(\xe1\xbe\xac|\xe1\xbe\xa4)",
-	"\xe1\xbe\xad" => "(\xe1\xbe\xad|\xe1\xbe\xa5)",
-	"\xe1\xbe\xae" => "(\xe1\xbe\xae|\xe1\xbe\xa6)",
-	"\xe1\xbe\xaf" => "(\xe1\xbe\xaf|\xe1\xbe\xa7)",
-	"\xe1\xbe\xb8" => "(\xe1\xbe\xb8|\xe1\xbe\xb0)",
-	"\xe1\xbe\xb9" => "(\xe1\xbe\xb9|\xe1\xbe\xb1)",
-	"\xe1\xbe\xba" => "(\xe1\xbe\xba|\xe1\xbd\xb0)",
-	"\xe1\xbe\xbb" => "(\xe1\xbe\xbb|\xe1\xbd\xb1)",
-	"\xe1\xbe\xbc" => "(\xe1\xbe\xbc|\xe1\xbe\xb3)",
-	"\xe1\xbf\x88" => "(\xe1\xbf\x88|\xe1\xbd\xb2)",
-	"\xe1\xbf\x89" => "(\xe1\xbf\x89|\xe1\xbd\xb3)",
-	"\xe1\xbf\x8a" => "(\xe1\xbf\x8a|\xe1\xbd\xb4)",
-	"\xe1\xbf\x8b" => "(\xe1\xbf\x8b|\xe1\xbd\xb5)",
-	"\xe1\xbf\x8c" => "(\xe1\xbf\x8c|\xe1\xbf\x83)",
-	"\xe1\xbf\x98" => "(\xe1\xbf\x98|\xe1\xbf\x90)",
-	"\xe1\xbf\x99" => "(\xe1\xbf\x99|\xe1\xbf\x91)",
-	"\xe1\xbf\x9a" => "(\xe1\xbf\x9a|\xe1\xbd\xb6)",
-	"\xe1\xbf\x9b" => "(\xe1\xbf\x9b|\xe1\xbd\xb7)",
-	"\xe1\xbf\xa8" => "(\xe1\xbf\xa8|\xe1\xbf\xa0)",
-	"\xe1\xbf\xa9" => "(\xe1\xbf\xa9|\xe1\xbf\xa1)",
-	"\xe1\xbf\xaa" => "(\xe1\xbf\xaa|\xe1\xbd\xba)",
-	"\xe1\xbf\xab" => "(\xe1\xbf\xab|\xe1\xbd\xbb)",
-	"\xe1\xbf\xac" => "(\xe1\xbf\xac|\xe1\xbf\xa5)",
-	"\xe1\xbf\xb8" => "(\xe1\xbf\xb8|\xe1\xbd\xb8)",
-	"\xe1\xbf\xb9" => "(\xe1\xbf\xb9|\xe1\xbd\xb9)",
-	"\xe1\xbf\xba" => "(\xe1\xbf\xba|\xe1\xbd\xbc)",
-	"\xe1\xbf\xbb" => "(\xe1\xbf\xbb|\xe1\xbd\xbd)",
-	"\xe1\xbf\xbc" => "(\xe1\xbf\xbc|\xe1\xbf\xb3)",
-	"\xe2\x84\xa6" => "(\xe2\x84\xa6|\xcf\x89)",
-	"\xe2\x84\xaa" => "(\xe2\x84\xaa|k)",
-	"\xe2\x84\xab" => "(\xe2\x84\xab|\xc3\xa5)",
-	"\xe2\x85\xa0" => "(\xe2\x85\xa0|\xe2\x85\xb0)",
-	"\xe2\x85\xa1" => "(\xe2\x85\xa1|\xe2\x85\xb1)",
-	"\xe2\x85\xa2" => "(\xe2\x85\xa2|\xe2\x85\xb2)",
-	"\xe2\x85\xa3" => "(\xe2\x85\xa3|\xe2\x85\xb3)",
-	"\xe2\x85\xa4" => "(\xe2\x85\xa4|\xe2\x85\xb4)",
-	"\xe2\x85\xa5" => "(\xe2\x85\xa5|\xe2\x85\xb5)",
-	"\xe2\x85\xa6" => "(\xe2\x85\xa6|\xe2\x85\xb6)",
-	"\xe2\x85\xa7" => "(\xe2\x85\xa7|\xe2\x85\xb7)",
-	"\xe2\x85\xa8" => "(\xe2\x85\xa8|\xe2\x85\xb8)",
-	"\xe2\x85\xa9" => "(\xe2\x85\xa9|\xe2\x85\xb9)",
-	"\xe2\x85\xaa" => "(\xe2\x85\xaa|\xe2\x85\xba)",
-	"\xe2\x85\xab" => "(\xe2\x85\xab|\xe2\x85\xbb)",
-	"\xe2\x85\xac" => "(\xe2\x85\xac|\xe2\x85\xbc)",
-	"\xe2\x85\xad" => "(\xe2\x85\xad|\xe2\x85\xbd)",
-	"\xe2\x85\xae" => "(\xe2\x85\xae|\xe2\x85\xbe)",
-	"\xe2\x85\xaf" => "(\xe2\x85\xaf|\xe2\x85\xbf)",
-	"\xe2\x92\xb6" => "(\xe2\x92\xb6|\xe2\x93\x90)",
-	"\xe2\x92\xb7" => "(\xe2\x92\xb7|\xe2\x93\x91)",
-	"\xe2\x92\xb8" => "(\xe2\x92\xb8|\xe2\x93\x92)",
-	"\xe2\x92\xb9" => "(\xe2\x92\xb9|\xe2\x93\x93)",
-	"\xe2\x92\xba" => "(\xe2\x92\xba|\xe2\x93\x94)",
-	"\xe2\x92\xbb" => "(\xe2\x92\xbb|\xe2\x93\x95)",
-	"\xe2\x92\xbc" => "(\xe2\x92\xbc|\xe2\x93\x96)",
-	"\xe2\x92\xbd" => "(\xe2\x92\xbd|\xe2\x93\x97)",
-	"\xe2\x92\xbe" => "(\xe2\x92\xbe|\xe2\x93\x98)",
-	"\xe2\x92\xbf" => "(\xe2\x92\xbf|\xe2\x93\x99)",
-	"\xe2\x93\x80" => "(\xe2\x93\x80|\xe2\x93\x9a)",
-	"\xe2\x93\x81" => "(\xe2\x93\x81|\xe2\x93\x9b)",
-	"\xe2\x93\x82" => "(\xe2\x93\x82|\xe2\x93\x9c)",
-	"\xe2\x93\x83" => "(\xe2\x93\x83|\xe2\x93\x9d)",
-	"\xe2\x93\x84" => "(\xe2\x93\x84|\xe2\x93\x9e)",
-	"\xe2\x93\x85" => "(\xe2\x93\x85|\xe2\x93\x9f)",
-	"\xe2\x93\x86" => "(\xe2\x93\x86|\xe2\x93\xa0)",
-	"\xe2\x93\x87" => "(\xe2\x93\x87|\xe2\x93\xa1)",
-	"\xe2\x93\x88" => "(\xe2\x93\x88|\xe2\x93\xa2)",
-	"\xe2\x93\x89" => "(\xe2\x93\x89|\xe2\x93\xa3)",
-	"\xe2\x93\x8a" => "(\xe2\x93\x8a|\xe2\x93\xa4)",
-	"\xe2\x93\x8b" => "(\xe2\x93\x8b|\xe2\x93\xa5)",
-	"\xe2\x93\x8c" => "(\xe2\x93\x8c|\xe2\x93\xa6)",
-	"\xe2\x93\x8d" => "(\xe2\x93\x8d|\xe2\x93\xa7)",
-	"\xe2\x93\x8e" => "(\xe2\x93\x8e|\xe2\x93\xa8)",
-	"\xe2\x93\x8f" => "(\xe2\x93\x8f|\xe2\x93\xa9)",
-	"\xef\xbc\xa1" => "(\xef\xbc\xa1|\xef\xbd\x81)",
-	"\xef\xbc\xa2" => "(\xef\xbc\xa2|\xef\xbd\x82)",
-	"\xef\xbc\xa3" => "(\xef\xbc\xa3|\xef\xbd\x83)",
-	"\xef\xbc\xa4" => "(\xef\xbc\xa4|\xef\xbd\x84)",
-	"\xef\xbc\xa5" => "(\xef\xbc\xa5|\xef\xbd\x85)",
-	"\xef\xbc\xa6" => "(\xef\xbc\xa6|\xef\xbd\x86)",
-	"\xef\xbc\xa7" => "(\xef\xbc\xa7|\xef\xbd\x87)",
-	"\xef\xbc\xa8" => "(\xef\xbc\xa8|\xef\xbd\x88)",
-	"\xef\xbc\xa9" => "(\xef\xbc\xa9|\xef\xbd\x89)",
-	"\xef\xbc\xaa" => "(\xef\xbc\xaa|\xef\xbd\x8a)",
-	"\xef\xbc\xab" => "(\xef\xbc\xab|\xef\xbd\x8b)",
-	"\xef\xbc\xac" => "(\xef\xbc\xac|\xef\xbd\x8c)",
-	"\xef\xbc\xad" => "(\xef\xbc\xad|\xef\xbd\x8d)",
-	"\xef\xbc\xae" => "(\xef\xbc\xae|\xef\xbd\x8e)",
-	"\xef\xbc\xaf" => "(\xef\xbc\xaf|\xef\xbd\x8f)",
-	"\xef\xbc\xb0" => "(\xef\xbc\xb0|\xef\xbd\x90)",
-	"\xef\xbc\xb1" => "(\xef\xbc\xb1|\xef\xbd\x91)",
-	"\xef\xbc\xb2" => "(\xef\xbc\xb2|\xef\xbd\x92)",
-	"\xef\xbc\xb3" => "(\xef\xbc\xb3|\xef\xbd\x93)",
-	"\xef\xbc\xb4" => "(\xef\xbc\xb4|\xef\xbd\x94)",
-	"\xef\xbc\xb5" => "(\xef\xbc\xb5|\xef\xbd\x95)",
-	"\xef\xbc\xb6" => "(\xef\xbc\xb6|\xef\xbd\x96)",
-	"\xef\xbc\xb7" => "(\xef\xbc\xb7|\xef\xbd\x97)",
-	"\xef\xbc\xb8" => "(\xef\xbc\xb8|\xef\xbd\x98)",
-	"\xef\xbc\xb9" => "(\xef\xbc\xb9|\xef\xbd\x99)",
-	"\xef\xbc\xba" => "(\xef\xbc\xba|\xef\xbd\x9a)",
-	"\xf0\x90\x90\x80" => "(\xf0\x90\x90\x80|\xf0\x90\x90\xa8)",
-	"\xf0\x90\x90\x81" => "(\xf0\x90\x90\x81|\xf0\x90\x90\xa9)",
-	"\xf0\x90\x90\x82" => "(\xf0\x90\x90\x82|\xf0\x90\x90\xaa)",
-	"\xf0\x90\x90\x83" => "(\xf0\x90\x90\x83|\xf0\x90\x90\xab)",
-	"\xf0\x90\x90\x84" => "(\xf0\x90\x90\x84|\xf0\x90\x90\xac)",
-	"\xf0\x90\x90\x85" => "(\xf0\x90\x90\x85|\xf0\x90\x90\xad)",
-	"\xf0\x90\x90\x86" => "(\xf0\x90\x90\x86|\xf0\x90\x90\xae)",
-	"\xf0\x90\x90\x87" => "(\xf0\x90\x90\x87|\xf0\x90\x90\xaf)",
-	"\xf0\x90\x90\x88" => "(\xf0\x90\x90\x88|\xf0\x90\x90\xb0)",
-	"\xf0\x90\x90\x89" => "(\xf0\x90\x90\x89|\xf0\x90\x90\xb1)",
-	"\xf0\x90\x90\x8a" => "(\xf0\x90\x90\x8a|\xf0\x90\x90\xb2)",
-	"\xf0\x90\x90\x8b" => "(\xf0\x90\x90\x8b|\xf0\x90\x90\xb3)",
-	"\xf0\x90\x90\x8c" => "(\xf0\x90\x90\x8c|\xf0\x90\x90\xb4)",
-	"\xf0\x90\x90\x8d" => "(\xf0\x90\x90\x8d|\xf0\x90\x90\xb5)",
-	"\xf0\x90\x90\x8e" => "(\xf0\x90\x90\x8e|\xf0\x90\x90\xb6)",
-	"\xf0\x90\x90\x8f" => "(\xf0\x90\x90\x8f|\xf0\x90\x90\xb7)",
-	"\xf0\x90\x90\x90" => "(\xf0\x90\x90\x90|\xf0\x90\x90\xb8)",
-	"\xf0\x90\x90\x91" => "(\xf0\x90\x90\x91|\xf0\x90\x90\xb9)",
-	"\xf0\x90\x90\x92" => "(\xf0\x90\x90\x92|\xf0\x90\x90\xba)",
-	"\xf0\x90\x90\x93" => "(\xf0\x90\x90\x93|\xf0\x90\x90\xbb)",
-	"\xf0\x90\x90\x94" => "(\xf0\x90\x90\x94|\xf0\x90\x90\xbc)",
-	"\xf0\x90\x90\x95" => "(\xf0\x90\x90\x95|\xf0\x90\x90\xbd)",
-	"\xf0\x90\x90\x96" => "(\xf0\x90\x90\x96|\xf0\x90\x90\xbe)",
-	"\xf0\x90\x90\x97" => "(\xf0\x90\x90\x97|\xf0\x90\x90\xbf)",
-	"\xf0\x90\x90\x98" => "(\xf0\x90\x90\x98|\xf0\x90\x91\x80)",
-	"\xf0\x90\x90\x99" => "(\xf0\x90\x90\x99|\xf0\x90\x91\x81)",
-	"\xf0\x90\x90\x9a" => "(\xf0\x90\x90\x9a|\xf0\x90\x91\x82)",
-	"\xf0\x90\x90\x9b" => "(\xf0\x90\x90\x9b|\xf0\x90\x91\x83)",
-	"\xf0\x90\x90\x9c" => "(\xf0\x90\x90\x9c|\xf0\x90\x91\x84)",
-	"\xf0\x90\x90\x9d" => "(\xf0\x90\x90\x9d|\xf0\x90\x91\x85)",
-	"\xf0\x90\x90\x9e" => "(\xf0\x90\x90\x9e|\xf0\x90\x91\x86)",
-	"\xf0\x90\x90\x9f" => "(\xf0\x90\x90\x9f|\xf0\x90\x91\x87)",
-	"\xf0\x90\x90\xa0" => "(\xf0\x90\x90\xa0|\xf0\x90\x91\x88)",
-	"\xf0\x90\x90\xa1" => "(\xf0\x90\x90\xa1|\xf0\x90\x91\x89)",
-	"\xf0\x90\x90\xa2" => "(\xf0\x90\x90\xa2|\xf0\x90\x91\x8a)",
-	"\xf0\x90\x90\xa3" => "(\xf0\x90\x90\xa3|\xf0\x90\x91\x8b)",
-	"\xf0\x90\x90\xa4" => "(\xf0\x90\x90\xa4|\xf0\x90\x91\x8c)",
-	"\xf0\x90\x90\xa5" => "(\xf0\x90\x90\xa5|\xf0\x90\x91\x8d)",
-	"i" => "(i|\xc4\xb0|I)",
-	"I" => "(I|\xc4\xb1|i)",
-	"k" => "(k|\xe2\x84\xaa|K)",
-	"S" => "(S|\xc5\xbf|s)"
+	"\xc2\xb5" => "(?:\xc2\xb5|\xce\x9c)",
+	"\xc3\xa0" => "(?:\xc3\xa0|\xc3\x80)",
+	"\xc3\xa1" => "(?:\xc3\xa1|\xc3\x81)",
+	"\xc3\xa2" => "(?:\xc3\xa2|\xc3\x82)",
+	"\xc3\xa3" => "(?:\xc3\xa3|\xc3\x83)",
+	"\xc3\xa4" => "(?:\xc3\xa4|\xc3\x84)",
+	"\xc3\xa5" => "(?:\xc3\xa5|\xc3\x85|\xe2\x84\xab)",
+	"\xc3\xa6" => "(?:\xc3\xa6|\xc3\x86)",
+	"\xc3\xa7" => "(?:\xc3\xa7|\xc3\x87)",
+	"\xc3\xa8" => "(?:\xc3\xa8|\xc3\x88)",
+	"\xc3\xa9" => "(?:\xc3\xa9|\xc3\x89)",
+	"\xc3\xaa" => "(?:\xc3\xaa|\xc3\x8a)",
+	"\xc3\xab" => "(?:\xc3\xab|\xc3\x8b)",
+	"\xc3\xac" => "(?:\xc3\xac|\xc3\x8c)",
+	"\xc3\xad" => "(?:\xc3\xad|\xc3\x8d)",
+	"\xc3\xae" => "(?:\xc3\xae|\xc3\x8e)",
+	"\xc3\xaf" => "(?:\xc3\xaf|\xc3\x8f)",
+	"\xc3\xb0" => "(?:\xc3\xb0|\xc3\x90)",
+	"\xc3\xb1" => "(?:\xc3\xb1|\xc3\x91)",
+	"\xc3\xb2" => "(?:\xc3\xb2|\xc3\x92)",
+	"\xc3\xb3" => "(?:\xc3\xb3|\xc3\x93)",
+	"\xc3\xb4" => "(?:\xc3\xb4|\xc3\x94)",
+	"\xc3\xb5" => "(?:\xc3\xb5|\xc3\x95)",
+	"\xc3\xb6" => "(?:\xc3\xb6|\xc3\x96)",
+	"\xc3\xb8" => "(?:\xc3\xb8|\xc3\x98)",
+	"\xc3\xb9" => "(?:\xc3\xb9|\xc3\x99)",
+	"\xc3\xba" => "(?:\xc3\xba|\xc3\x9a)",
+	"\xc3\xbb" => "(?:\xc3\xbb|\xc3\x9b)",
+	"\xc3\xbc" => "(?:\xc3\xbc|\xc3\x9c)",
+	"\xc3\xbd" => "(?:\xc3\xbd|\xc3\x9d)",
+	"\xc3\xbe" => "(?:\xc3\xbe|\xc3\x9e)",
+	"\xc3\xbf" => "(?:\xc3\xbf|\xc5\xb8)",
+	"\xc4\x81" => "(?:\xc4\x81|\xc4\x80)",
+	"\xc4\x83" => "(?:\xc4\x83|\xc4\x82)",
+	"\xc4\x85" => "(?:\xc4\x85|\xc4\x84)",
+	"\xc4\x87" => "(?:\xc4\x87|\xc4\x86)",
+	"\xc4\x89" => "(?:\xc4\x89|\xc4\x88)",
+	"\xc4\x8b" => "(?:\xc4\x8b|\xc4\x8a)",
+	"\xc4\x8d" => "(?:\xc4\x8d|\xc4\x8c)",
+	"\xc4\x8f" => "(?:\xc4\x8f|\xc4\x8e)",
+	"\xc4\x91" => "(?:\xc4\x91|\xc4\x90)",
+	"\xc4\x93" => "(?:\xc4\x93|\xc4\x92)",
+	"\xc4\x95" => "(?:\xc4\x95|\xc4\x94)",
+	"\xc4\x97" => "(?:\xc4\x97|\xc4\x96)",
+	"\xc4\x99" => "(?:\xc4\x99|\xc4\x98)",
+	"\xc4\x9b" => "(?:\xc4\x9b|\xc4\x9a)",
+	"\xc4\x9d" => "(?:\xc4\x9d|\xc4\x9c)",
+	"\xc4\x9f" => "(?:\xc4\x9f|\xc4\x9e)",
+	"\xc4\xa1" => "(?:\xc4\xa1|\xc4\xa0)",
+	"\xc4\xa3" => "(?:\xc4\xa3|\xc4\xa2)",
+	"\xc4\xa5" => "(?:\xc4\xa5|\xc4\xa4)",
+	"\xc4\xa7" => "(?:\xc4\xa7|\xc4\xa6)",
+	"\xc4\xa9" => "(?:\xc4\xa9|\xc4\xa8)",
+	"\xc4\xab" => "(?:\xc4\xab|\xc4\xaa)",
+	"\xc4\xad" => "(?:\xc4\xad|\xc4\xac)",
+	"\xc4\xaf" => "(?:\xc4\xaf|\xc4\xae)",
+	"\xc4\xb1" => "(?:\xc4\xb1|I)",
+	"\xc4\xb3" => "(?:\xc4\xb3|\xc4\xb2)",
+	"\xc4\xb5" => "(?:\xc4\xb5|\xc4\xb4)",
+	"\xc4\xb7" => "(?:\xc4\xb7|\xc4\xb6)",
+	"\xc4\xba" => "(?:\xc4\xba|\xc4\xb9)",
+	"\xc4\xbc" => "(?:\xc4\xbc|\xc4\xbb)",
+	"\xc4\xbe" => "(?:\xc4\xbe|\xc4\xbd)",
+	"\xc5\x80" => "(?:\xc5\x80|\xc4\xbf)",
+	"\xc5\x82" => "(?:\xc5\x82|\xc5\x81)",
+	"\xc5\x84" => "(?:\xc5\x84|\xc5\x83)",
+	"\xc5\x86" => "(?:\xc5\x86|\xc5\x85)",
+	"\xc5\x88" => "(?:\xc5\x88|\xc5\x87)",
+	"\xc5\x8b" => "(?:\xc5\x8b|\xc5\x8a)",
+	"\xc5\x8d" => "(?:\xc5\x8d|\xc5\x8c)",
+	"\xc5\x8f" => "(?:\xc5\x8f|\xc5\x8e)",
+	"\xc5\x91" => "(?:\xc5\x91|\xc5\x90)",
+	"\xc5\x93" => "(?:\xc5\x93|\xc5\x92)",
+	"\xc5\x95" => "(?:\xc5\x95|\xc5\x94)",
+	"\xc5\x97" => "(?:\xc5\x97|\xc5\x96)",
+	"\xc5\x99" => "(?:\xc5\x99|\xc5\x98)",
+	"\xc5\x9b" => "(?:\xc5\x9b|\xc5\x9a)",
+	"\xc5\x9d" => "(?:\xc5\x9d|\xc5\x9c)",
+	"\xc5\x9f" => "(?:\xc5\x9f|\xc5\x9e)",
+	"\xc5\xa1" => "(?:\xc5\xa1|\xc5\xa0)",
+	"\xc5\xa3" => "(?:\xc5\xa3|\xc5\xa2)",
+	"\xc5\xa5" => "(?:\xc5\xa5|\xc5\xa4)",
+	"\xc5\xa7" => "(?:\xc5\xa7|\xc5\xa6)",
+	"\xc5\xa9" => "(?:\xc5\xa9|\xc5\xa8)",
+	"\xc5\xab" => "(?:\xc5\xab|\xc5\xaa)",
+	"\xc5\xad" => "(?:\xc5\xad|\xc5\xac)",
+	"\xc5\xaf" => "(?:\xc5\xaf|\xc5\xae)",
+	"\xc5\xb1" => "(?:\xc5\xb1|\xc5\xb0)",
+	"\xc5\xb3" => "(?:\xc5\xb3|\xc5\xb2)",
+	"\xc5\xb5" => "(?:\xc5\xb5|\xc5\xb4)",
+	"\xc5\xb7" => "(?:\xc5\xb7|\xc5\xb6)",
+	"\xc5\xba" => "(?:\xc5\xba|\xc5\xb9)",
+	"\xc5\xbc" => "(?:\xc5\xbc|\xc5\xbb)",
+	"\xc5\xbe" => "(?:\xc5\xbe|\xc5\xbd)",
+	"\xc5\xbf" => "(?:\xc5\xbf|S)",
+	"\xc6\x83" => "(?:\xc6\x83|\xc6\x82)",
+	"\xc6\x85" => "(?:\xc6\x85|\xc6\x84)",
+	"\xc6\x88" => "(?:\xc6\x88|\xc6\x87)",
+	"\xc6\x8c" => "(?:\xc6\x8c|\xc6\x8b)",
+	"\xc6\x92" => "(?:\xc6\x92|\xc6\x91)",
+	"\xc6\x95" => "(?:\xc6\x95|\xc7\xb6)",
+	"\xc6\x99" => "(?:\xc6\x99|\xc6\x98)",
+	"\xc6\xa1" => "(?:\xc6\xa1|\xc6\xa0)",
+	"\xc6\xa3" => "(?:\xc6\xa3|\xc6\xa2)",
+	"\xc6\xa5" => "(?:\xc6\xa5|\xc6\xa4)",
+	"\xc6\xa8" => "(?:\xc6\xa8|\xc6\xa7)",
+	"\xc6\xad" => "(?:\xc6\xad|\xc6\xac)",
+	"\xc6\xb0" => "(?:\xc6\xb0|\xc6\xaf)",
+	"\xc6\xb4" => "(?:\xc6\xb4|\xc6\xb3)",
+	"\xc6\xb6" => "(?:\xc6\xb6|\xc6\xb5)",
+	"\xc6\xb9" => "(?:\xc6\xb9|\xc6\xb8)",
+	"\xc6\xbd" => "(?:\xc6\xbd|\xc6\xbc)",
+	"\xc6\xbf" => "(?:\xc6\xbf|\xc7\xb7)",
+	"\xc7\x86" => "(?:\xc7\x86|\xc7\x84|\xc7\x85)",
+	"\xc7\x89" => "(?:\xc7\x89|\xc7\x87|\xc7\x88)",
+	"\xc7\x8c" => "(?:\xc7\x8c|\xc7\x8a|\xc7\x8b)",
+	"\xc7\x8e" => "(?:\xc7\x8e|\xc7\x8d)",
+	"\xc7\x90" => "(?:\xc7\x90|\xc7\x8f)",
+	"\xc7\x92" => "(?:\xc7\x92|\xc7\x91)",
+	"\xc7\x94" => "(?:\xc7\x94|\xc7\x93)",
+	"\xc7\x96" => "(?:\xc7\x96|\xc7\x95)",
+	"\xc7\x98" => "(?:\xc7\x98|\xc7\x97)",
+	"\xc7\x9a" => "(?:\xc7\x9a|\xc7\x99)",
+	"\xc7\x9c" => "(?:\xc7\x9c|\xc7\x9b)",
+	"\xc7\x9d" => "(?:\xc7\x9d|\xc6\x8e)",
+	"\xc7\x9f" => "(?:\xc7\x9f|\xc7\x9e)",
+	"\xc7\xa1" => "(?:\xc7\xa1|\xc7\xa0)",
+	"\xc7\xa3" => "(?:\xc7\xa3|\xc7\xa2)",
+	"\xc7\xa5" => "(?:\xc7\xa5|\xc7\xa4)",
+	"\xc7\xa7" => "(?:\xc7\xa7|\xc7\xa6)",
+	"\xc7\xa9" => "(?:\xc7\xa9|\xc7\xa8)",
+	"\xc7\xab" => "(?:\xc7\xab|\xc7\xaa)",
+	"\xc7\xad" => "(?:\xc7\xad|\xc7\xac)",
+	"\xc7\xaf" => "(?:\xc7\xaf|\xc7\xae)",
+	"\xc7\xb2" => "(?:\xc7\xb2|\xc7\xb1|\xc7\xb3)",
+	"\xc7\xb3" => "(?:\xc7\xb3|\xc7\xb1|\xc7\xb2)",
+	"\xc7\xb5" => "(?:\xc7\xb5|\xc7\xb4)",
+	"\xc7\xb9" => "(?:\xc7\xb9|\xc7\xb8)",
+	"\xc7\xbb" => "(?:\xc7\xbb|\xc7\xba)",
+	"\xc7\xbd" => "(?:\xc7\xbd|\xc7\xbc)",
+	"\xc7\xbf" => "(?:\xc7\xbf|\xc7\xbe)",
+	"\xc8\x81" => "(?:\xc8\x81|\xc8\x80)",
+	"\xc8\x83" => "(?:\xc8\x83|\xc8\x82)",
+	"\xc8\x85" => "(?:\xc8\x85|\xc8\x84)",
+	"\xc8\x87" => "(?:\xc8\x87|\xc8\x86)",
+	"\xc8\x89" => "(?:\xc8\x89|\xc8\x88)",
+	"\xc8\x8b" => "(?:\xc8\x8b|\xc8\x8a)",
+	"\xc8\x8d" => "(?:\xc8\x8d|\xc8\x8c)",
+	"\xc8\x8f" => "(?:\xc8\x8f|\xc8\x8e)",
+	"\xc8\x91" => "(?:\xc8\x91|\xc8\x90)",
+	"\xc8\x93" => "(?:\xc8\x93|\xc8\x92)",
+	"\xc8\x95" => "(?:\xc8\x95|\xc8\x94)",
+	"\xc8\x97" => "(?:\xc8\x97|\xc8\x96)",
+	"\xc8\x99" => "(?:\xc8\x99|\xc8\x98)",
+	"\xc8\x9b" => "(?:\xc8\x9b|\xc8\x9a)",
+	"\xc8\x9d" => "(?:\xc8\x9d|\xc8\x9c)",
+	"\xc8\x9f" => "(?:\xc8\x9f|\xc8\x9e)",
+	"\xc8\xa3" => "(?:\xc8\xa3|\xc8\xa2)",
+	"\xc8\xa5" => "(?:\xc8\xa5|\xc8\xa4)",
+	"\xc8\xa7" => "(?:\xc8\xa7|\xc8\xa6)",
+	"\xc8\xa9" => "(?:\xc8\xa9|\xc8\xa8)",
+	"\xc8\xab" => "(?:\xc8\xab|\xc8\xaa)",
+	"\xc8\xad" => "(?:\xc8\xad|\xc8\xac)",
+	"\xc8\xaf" => "(?:\xc8\xaf|\xc8\xae)",
+	"\xc8\xb1" => "(?:\xc8\xb1|\xc8\xb0)",
+	"\xc8\xb3" => "(?:\xc8\xb3|\xc8\xb2)",
+	"\xc9\x93" => "(?:\xc9\x93|\xc6\x81)",
+	"\xc9\x94" => "(?:\xc9\x94|\xc6\x86)",
+	"\xc9\x96" => "(?:\xc9\x96|\xc6\x89)",
+	"\xc9\x97" => "(?:\xc9\x97|\xc6\x8a)",
+	"\xc9\x99" => "(?:\xc9\x99|\xc6\x8f)",
+	"\xc9\x9b" => "(?:\xc9\x9b|\xc6\x90)",
+	"\xc9\xa0" => "(?:\xc9\xa0|\xc6\x93)",
+	"\xc9\xa3" => "(?:\xc9\xa3|\xc6\x94)",
+	"\xc9\xa8" => "(?:\xc9\xa8|\xc6\x97)",
+	"\xc9\xa9" => "(?:\xc9\xa9|\xc6\x96)",
+	"\xc9\xaf" => "(?:\xc9\xaf|\xc6\x9c)",
+	"\xc9\xb2" => "(?:\xc9\xb2|\xc6\x9d)",
+	"\xc9\xb5" => "(?:\xc9\xb5|\xc6\x9f)",
+	"\xca\x80" => "(?:\xca\x80|\xc6\xa6)",
+	"\xca\x83" => "(?:\xca\x83|\xc6\xa9)",
+	"\xca\x88" => "(?:\xca\x88|\xc6\xae)",
+	"\xca\x8a" => "(?:\xca\x8a|\xc6\xb1)",
+	"\xca\x8b" => "(?:\xca\x8b|\xc6\xb2)",
+	"\xca\x92" => "(?:\xca\x92|\xc6\xb7)",
+	"\xcd\x85" => "(?:\xcd\x85|\xce\x99)",
+	"\xce\xac" => "(?:\xce\xac|\xce\x86)",
+	"\xce\xad" => "(?:\xce\xad|\xce\x88)",
+	"\xce\xae" => "(?:\xce\xae|\xce\x89)",
+	"\xce\xaf" => "(?:\xce\xaf|\xce\x8a)",
+	"\xce\xb1" => "(?:\xce\xb1|\xce\x91)",
+	"\xce\xb2" => "(?:\xce\xb2|\xce\x92)",
+	"\xce\xb3" => "(?:\xce\xb3|\xce\x93)",
+	"\xce\xb4" => "(?:\xce\xb4|\xce\x94)",
+	"\xce\xb5" => "(?:\xce\xb5|\xce\x95)",
+	"\xce\xb6" => "(?:\xce\xb6|\xce\x96)",
+	"\xce\xb7" => "(?:\xce\xb7|\xce\x97)",
+	"\xce\xb8" => "(?:\xce\xb8|\xce\x98|\xcf\xb4)",
+	"\xce\xb9" => "(?:\xce\xb9|\xce\x99)",
+	"\xce\xba" => "(?:\xce\xba|\xce\x9a)",
+	"\xce\xbb" => "(?:\xce\xbb|\xce\x9b)",
+	"\xce\xbc" => "(?:\xce\xbc|\xce\x9c)",
+	"\xce\xbd" => "(?:\xce\xbd|\xce\x9d)",
+	"\xce\xbe" => "(?:\xce\xbe|\xce\x9e)",
+	"\xce\xbf" => "(?:\xce\xbf|\xce\x9f)",
+	"\xcf\x80" => "(?:\xcf\x80|\xce\xa0)",
+	"\xcf\x81" => "(?:\xcf\x81|\xce\xa1)",
+	"\xcf\x82" => "(?:\xcf\x82|\xce\xa3)",
+	"\xcf\x83" => "(?:\xcf\x83|\xce\xa3)",
+	"\xcf\x84" => "(?:\xcf\x84|\xce\xa4)",
+	"\xcf\x85" => "(?:\xcf\x85|\xce\xa5)",
+	"\xcf\x86" => "(?:\xcf\x86|\xce\xa6)",
+	"\xcf\x87" => "(?:\xcf\x87|\xce\xa7)",
+	"\xcf\x88" => "(?:\xcf\x88|\xce\xa8)",
+	"\xcf\x89" => "(?:\xcf\x89|\xce\xa9|\xe2\x84\xa6)",
+	"\xcf\x8a" => "(?:\xcf\x8a|\xce\xaa)",
+	"\xcf\x8b" => "(?:\xcf\x8b|\xce\xab)",
+	"\xcf\x8c" => "(?:\xcf\x8c|\xce\x8c)",
+	"\xcf\x8d" => "(?:\xcf\x8d|\xce\x8e)",
+	"\xcf\x8e" => "(?:\xcf\x8e|\xce\x8f)",
+	"\xcf\x90" => "(?:\xcf\x90|\xce\x92)",
+	"\xcf\x91" => "(?:\xcf\x91|\xce\x98)",
+	"\xcf\x95" => "(?:\xcf\x95|\xce\xa6)",
+	"\xcf\x96" => "(?:\xcf\x96|\xce\xa0)",
+	"\xcf\x9b" => "(?:\xcf\x9b|\xcf\x9a)",
+	"\xcf\x9d" => "(?:\xcf\x9d|\xcf\x9c)",
+	"\xcf\x9f" => "(?:\xcf\x9f|\xcf\x9e)",
+	"\xcf\xa1" => "(?:\xcf\xa1|\xcf\xa0)",
+	"\xcf\xa3" => "(?:\xcf\xa3|\xcf\xa2)",
+	"\xcf\xa5" => "(?:\xcf\xa5|\xcf\xa4)",
+	"\xcf\xa7" => "(?:\xcf\xa7|\xcf\xa6)",
+	"\xcf\xa9" => "(?:\xcf\xa9|\xcf\xa8)",
+	"\xcf\xab" => "(?:\xcf\xab|\xcf\xaa)",
+	"\xcf\xad" => "(?:\xcf\xad|\xcf\xac)",
+	"\xcf\xaf" => "(?:\xcf\xaf|\xcf\xae)",
+	"\xcf\xb0" => "(?:\xcf\xb0|\xce\x9a)",
+	"\xcf\xb1" => "(?:\xcf\xb1|\xce\xa1)",
+	"\xcf\xb2" => "(?:\xcf\xb2|\xce\xa3)",
+	"\xcf\xb5" => "(?:\xcf\xb5|\xce\x95)",
+	"\xd0\xb0" => "(?:\xd0\xb0|\xd0\x90)",
+	"\xd0\xb1" => "(?:\xd0\xb1|\xd0\x91)",
+	"\xd0\xb2" => "(?:\xd0\xb2|\xd0\x92)",
+	"\xd0\xb3" => "(?:\xd0\xb3|\xd0\x93)",
+	"\xd0\xb4" => "(?:\xd0\xb4|\xd0\x94)",
+	"\xd0\xb5" => "(?:\xd0\xb5|\xd0\x95)",
+	"\xd0\xb6" => "(?:\xd0\xb6|\xd0\x96)",
+	"\xd0\xb7" => "(?:\xd0\xb7|\xd0\x97)",
+	"\xd0\xb8" => "(?:\xd0\xb8|\xd0\x98)",
+	"\xd0\xb9" => "(?:\xd0\xb9|\xd0\x99)",
+	"\xd0\xba" => "(?:\xd0\xba|\xd0\x9a)",
+	"\xd0\xbb" => "(?:\xd0\xbb|\xd0\x9b)",
+	"\xd0\xbc" => "(?:\xd0\xbc|\xd0\x9c)",
+	"\xd0\xbd" => "(?:\xd0\xbd|\xd0\x9d)",
+	"\xd0\xbe" => "(?:\xd0\xbe|\xd0\x9e)",
+	"\xd0\xbf" => "(?:\xd0\xbf|\xd0\x9f)",
+	"\xd1\x80" => "(?:\xd1\x80|\xd0\xa0)",
+	"\xd1\x81" => "(?:\xd1\x81|\xd0\xa1)",
+	"\xd1\x82" => "(?:\xd1\x82|\xd0\xa2)",
+	"\xd1\x83" => "(?:\xd1\x83|\xd0\xa3)",
+	"\xd1\x84" => "(?:\xd1\x84|\xd0\xa4)",
+	"\xd1\x85" => "(?:\xd1\x85|\xd0\xa5)",
+	"\xd1\x86" => "(?:\xd1\x86|\xd0\xa6)",
+	"\xd1\x87" => "(?:\xd1\x87|\xd0\xa7)",
+	"\xd1\x88" => "(?:\xd1\x88|\xd0\xa8)",
+	"\xd1\x89" => "(?:\xd1\x89|\xd0\xa9)",
+	"\xd1\x8a" => "(?:\xd1\x8a|\xd0\xaa)",
+	"\xd1\x8b" => "(?:\xd1\x8b|\xd0\xab)",
+	"\xd1\x8c" => "(?:\xd1\x8c|\xd0\xac)",
+	"\xd1\x8d" => "(?:\xd1\x8d|\xd0\xad)",
+	"\xd1\x8e" => "(?:\xd1\x8e|\xd0\xae)",
+	"\xd1\x8f" => "(?:\xd1\x8f|\xd0\xaf)",
+	"\xd1\x90" => "(?:\xd1\x90|\xd0\x80)",
+	"\xd1\x91" => "(?:\xd1\x91|\xd0\x81)",
+	"\xd1\x92" => "(?:\xd1\x92|\xd0\x82)",
+	"\xd1\x93" => "(?:\xd1\x93|\xd0\x83)",
+	"\xd1\x94" => "(?:\xd1\x94|\xd0\x84)",
+	"\xd1\x95" => "(?:\xd1\x95|\xd0\x85)",
+	"\xd1\x96" => "(?:\xd1\x96|\xd0\x86)",
+	"\xd1\x97" => "(?:\xd1\x97|\xd0\x87)",
+	"\xd1\x98" => "(?:\xd1\x98|\xd0\x88)",
+	"\xd1\x99" => "(?:\xd1\x99|\xd0\x89)",
+	"\xd1\x9a" => "(?:\xd1\x9a|\xd0\x8a)",
+	"\xd1\x9b" => "(?:\xd1\x9b|\xd0\x8b)",
+	"\xd1\x9c" => "(?:\xd1\x9c|\xd0\x8c)",
+	"\xd1\x9d" => "(?:\xd1\x9d|\xd0\x8d)",
+	"\xd1\x9e" => "(?:\xd1\x9e|\xd0\x8e)",
+	"\xd1\x9f" => "(?:\xd1\x9f|\xd0\x8f)",
+	"\xd1\xa1" => "(?:\xd1\xa1|\xd1\xa0)",
+	"\xd1\xa3" => "(?:\xd1\xa3|\xd1\xa2)",
+	"\xd1\xa5" => "(?:\xd1\xa5|\xd1\xa4)",
+	"\xd1\xa7" => "(?:\xd1\xa7|\xd1\xa6)",
+	"\xd1\xa9" => "(?:\xd1\xa9|\xd1\xa8)",
+	"\xd1\xab" => "(?:\xd1\xab|\xd1\xaa)",
+	"\xd1\xad" => "(?:\xd1\xad|\xd1\xac)",
+	"\xd1\xaf" => "(?:\xd1\xaf|\xd1\xae)",
+	"\xd1\xb1" => "(?:\xd1\xb1|\xd1\xb0)",
+	"\xd1\xb3" => "(?:\xd1\xb3|\xd1\xb2)",
+	"\xd1\xb5" => "(?:\xd1\xb5|\xd1\xb4)",
+	"\xd1\xb7" => "(?:\xd1\xb7|\xd1\xb6)",
+	"\xd1\xb9" => "(?:\xd1\xb9|\xd1\xb8)",
+	"\xd1\xbb" => "(?:\xd1\xbb|\xd1\xba)",
+	"\xd1\xbd" => "(?:\xd1\xbd|\xd1\xbc)",
+	"\xd1\xbf" => "(?:\xd1\xbf|\xd1\xbe)",
+	"\xd2\x81" => "(?:\xd2\x81|\xd2\x80)",
+	"\xd2\x8d" => "(?:\xd2\x8d|\xd2\x8c)",
+	"\xd2\x8f" => "(?:\xd2\x8f|\xd2\x8e)",
+	"\xd2\x91" => "(?:\xd2\x91|\xd2\x90)",
+	"\xd2\x93" => "(?:\xd2\x93|\xd2\x92)",
+	"\xd2\x95" => "(?:\xd2\x95|\xd2\x94)",
+	"\xd2\x97" => "(?:\xd2\x97|\xd2\x96)",
+	"\xd2\x99" => "(?:\xd2\x99|\xd2\x98)",
+	"\xd2\x9b" => "(?:\xd2\x9b|\xd2\x9a)",
+	"\xd2\x9d" => "(?:\xd2\x9d|\xd2\x9c)",
+	"\xd2\x9f" => "(?:\xd2\x9f|\xd2\x9e)",
+	"\xd2\xa1" => "(?:\xd2\xa1|\xd2\xa0)",
+	"\xd2\xa3" => "(?:\xd2\xa3|\xd2\xa2)",
+	"\xd2\xa5" => "(?:\xd2\xa5|\xd2\xa4)",
+	"\xd2\xa7" => "(?:\xd2\xa7|\xd2\xa6)",
+	"\xd2\xa9" => "(?:\xd2\xa9|\xd2\xa8)",
+	"\xd2\xab" => "(?:\xd2\xab|\xd2\xaa)",
+	"\xd2\xad" => "(?:\xd2\xad|\xd2\xac)",
+	"\xd2\xaf" => "(?:\xd2\xaf|\xd2\xae)",
+	"\xd2\xb1" => "(?:\xd2\xb1|\xd2\xb0)",
+	"\xd2\xb3" => "(?:\xd2\xb3|\xd2\xb2)",
+	"\xd2\xb5" => "(?:\xd2\xb5|\xd2\xb4)",
+	"\xd2\xb7" => "(?:\xd2\xb7|\xd2\xb6)",
+	"\xd2\xb9" => "(?:\xd2\xb9|\xd2\xb8)",
+	"\xd2\xbb" => "(?:\xd2\xbb|\xd2\xba)",
+	"\xd2\xbd" => "(?:\xd2\xbd|\xd2\xbc)",
+	"\xd2\xbf" => "(?:\xd2\xbf|\xd2\xbe)",
+	"\xd3\x82" => "(?:\xd3\x82|\xd3\x81)",
+	"\xd3\x84" => "(?:\xd3\x84|\xd3\x83)",
+	"\xd3\x88" => "(?:\xd3\x88|\xd3\x87)",
+	"\xd3\x8c" => "(?:\xd3\x8c|\xd3\x8b)",
+	"\xd3\x91" => "(?:\xd3\x91|\xd3\x90)",
+	"\xd3\x93" => "(?:\xd3\x93|\xd3\x92)",
+	"\xd3\x95" => "(?:\xd3\x95|\xd3\x94)",
+	"\xd3\x97" => "(?:\xd3\x97|\xd3\x96)",
+	"\xd3\x99" => "(?:\xd3\x99|\xd3\x98)",
+	"\xd3\x9b" => "(?:\xd3\x9b|\xd3\x9a)",
+	"\xd3\x9d" => "(?:\xd3\x9d|\xd3\x9c)",
+	"\xd3\x9f" => "(?:\xd3\x9f|\xd3\x9e)",
+	"\xd3\xa1" => "(?:\xd3\xa1|\xd3\xa0)",
+	"\xd3\xa3" => "(?:\xd3\xa3|\xd3\xa2)",
+	"\xd3\xa5" => "(?:\xd3\xa5|\xd3\xa4)",
+	"\xd3\xa7" => "(?:\xd3\xa7|\xd3\xa6)",
+	"\xd3\xa9" => "(?:\xd3\xa9|\xd3\xa8)",
+	"\xd3\xab" => "(?:\xd3\xab|\xd3\xaa)",
+	"\xd3\xad" => "(?:\xd3\xad|\xd3\xac)",
+	"\xd3\xaf" => "(?:\xd3\xaf|\xd3\xae)",
+	"\xd3\xb1" => "(?:\xd3\xb1|\xd3\xb0)",
+	"\xd3\xb3" => "(?:\xd3\xb3|\xd3\xb2)",
+	"\xd3\xb5" => "(?:\xd3\xb5|\xd3\xb4)",
+	"\xd3\xb9" => "(?:\xd3\xb9|\xd3\xb8)",
+	"\xd5\xa1" => "(?:\xd5\xa1|\xd4\xb1)",
+	"\xd5\xa2" => "(?:\xd5\xa2|\xd4\xb2)",
+	"\xd5\xa3" => "(?:\xd5\xa3|\xd4\xb3)",
+	"\xd5\xa4" => "(?:\xd5\xa4|\xd4\xb4)",
+	"\xd5\xa5" => "(?:\xd5\xa5|\xd4\xb5)",
+	"\xd5\xa6" => "(?:\xd5\xa6|\xd4\xb6)",
+	"\xd5\xa7" => "(?:\xd5\xa7|\xd4\xb7)",
+	"\xd5\xa8" => "(?:\xd5\xa8|\xd4\xb8)",
+	"\xd5\xa9" => "(?:\xd5\xa9|\xd4\xb9)",
+	"\xd5\xaa" => "(?:\xd5\xaa|\xd4\xba)",
+	"\xd5\xab" => "(?:\xd5\xab|\xd4\xbb)",
+	"\xd5\xac" => "(?:\xd5\xac|\xd4\xbc)",
+	"\xd5\xad" => "(?:\xd5\xad|\xd4\xbd)",
+	"\xd5\xae" => "(?:\xd5\xae|\xd4\xbe)",
+	"\xd5\xaf" => "(?:\xd5\xaf|\xd4\xbf)",
+	"\xd5\xb0" => "(?:\xd5\xb0|\xd5\x80)",
+	"\xd5\xb1" => "(?:\xd5\xb1|\xd5\x81)",
+	"\xd5\xb2" => "(?:\xd5\xb2|\xd5\x82)",
+	"\xd5\xb3" => "(?:\xd5\xb3|\xd5\x83)",
+	"\xd5\xb4" => "(?:\xd5\xb4|\xd5\x84)",
+	"\xd5\xb5" => "(?:\xd5\xb5|\xd5\x85)",
+	"\xd5\xb6" => "(?:\xd5\xb6|\xd5\x86)",
+	"\xd5\xb7" => "(?:\xd5\xb7|\xd5\x87)",
+	"\xd5\xb8" => "(?:\xd5\xb8|\xd5\x88)",
+	"\xd5\xb9" => "(?:\xd5\xb9|\xd5\x89)",
+	"\xd5\xba" => "(?:\xd5\xba|\xd5\x8a)",
+	"\xd5\xbb" => "(?:\xd5\xbb|\xd5\x8b)",
+	"\xd5\xbc" => "(?:\xd5\xbc|\xd5\x8c)",
+	"\xd5\xbd" => "(?:\xd5\xbd|\xd5\x8d)",
+	"\xd5\xbe" => "(?:\xd5\xbe|\xd5\x8e)",
+	"\xd5\xbf" => "(?:\xd5\xbf|\xd5\x8f)",
+	"\xd6\x80" => "(?:\xd6\x80|\xd5\x90)",
+	"\xd6\x81" => "(?:\xd6\x81|\xd5\x91)",
+	"\xd6\x82" => "(?:\xd6\x82|\xd5\x92)",
+	"\xd6\x83" => "(?:\xd6\x83|\xd5\x93)",
+	"\xd6\x84" => "(?:\xd6\x84|\xd5\x94)",
+	"\xd6\x85" => "(?:\xd6\x85|\xd5\x95)",
+	"\xd6\x86" => "(?:\xd6\x86|\xd5\x96)",
+	"\xe1\xb8\x81" => "(?:\xe1\xb8\x81|\xe1\xb8\x80)",
+	"\xe1\xb8\x83" => "(?:\xe1\xb8\x83|\xe1\xb8\x82)",
+	"\xe1\xb8\x85" => "(?:\xe1\xb8\x85|\xe1\xb8\x84)",
+	"\xe1\xb8\x87" => "(?:\xe1\xb8\x87|\xe1\xb8\x86)",
+	"\xe1\xb8\x89" => "(?:\xe1\xb8\x89|\xe1\xb8\x88)",
+	"\xe1\xb8\x8b" => "(?:\xe1\xb8\x8b|\xe1\xb8\x8a)",
+	"\xe1\xb8\x8d" => "(?:\xe1\xb8\x8d|\xe1\xb8\x8c)",
+	"\xe1\xb8\x8f" => "(?:\xe1\xb8\x8f|\xe1\xb8\x8e)",
+	"\xe1\xb8\x91" => "(?:\xe1\xb8\x91|\xe1\xb8\x90)",
+	"\xe1\xb8\x93" => "(?:\xe1\xb8\x93|\xe1\xb8\x92)",
+	"\xe1\xb8\x95" => "(?:\xe1\xb8\x95|\xe1\xb8\x94)",
+	"\xe1\xb8\x97" => "(?:\xe1\xb8\x97|\xe1\xb8\x96)",
+	"\xe1\xb8\x99" => "(?:\xe1\xb8\x99|\xe1\xb8\x98)",
+	"\xe1\xb8\x9b" => "(?:\xe1\xb8\x9b|\xe1\xb8\x9a)",
+	"\xe1\xb8\x9d" => "(?:\xe1\xb8\x9d|\xe1\xb8\x9c)",
+	"\xe1\xb8\x9f" => "(?:\xe1\xb8\x9f|\xe1\xb8\x9e)",
+	"\xe1\xb8\xa1" => "(?:\xe1\xb8\xa1|\xe1\xb8\xa0)",
+	"\xe1\xb8\xa3" => "(?:\xe1\xb8\xa3|\xe1\xb8\xa2)",
+	"\xe1\xb8\xa5" => "(?:\xe1\xb8\xa5|\xe1\xb8\xa4)",
+	"\xe1\xb8\xa7" => "(?:\xe1\xb8\xa7|\xe1\xb8\xa6)",
+	"\xe1\xb8\xa9" => "(?:\xe1\xb8\xa9|\xe1\xb8\xa8)",
+	"\xe1\xb8\xab" => "(?:\xe1\xb8\xab|\xe1\xb8\xaa)",
+	"\xe1\xb8\xad" => "(?:\xe1\xb8\xad|\xe1\xb8\xac)",
+	"\xe1\xb8\xaf" => "(?:\xe1\xb8\xaf|\xe1\xb8\xae)",
+	"\xe1\xb8\xb1" => "(?:\xe1\xb8\xb1|\xe1\xb8\xb0)",
+	"\xe1\xb8\xb3" => "(?:\xe1\xb8\xb3|\xe1\xb8\xb2)",
+	"\xe1\xb8\xb5" => "(?:\xe1\xb8\xb5|\xe1\xb8\xb4)",
+	"\xe1\xb8\xb7" => "(?:\xe1\xb8\xb7|\xe1\xb8\xb6)",
+	"\xe1\xb8\xb9" => "(?:\xe1\xb8\xb9|\xe1\xb8\xb8)",
+	"\xe1\xb8\xbb" => "(?:\xe1\xb8\xbb|\xe1\xb8\xba)",
+	"\xe1\xb8\xbd" => "(?:\xe1\xb8\xbd|\xe1\xb8\xbc)",
+	"\xe1\xb8\xbf" => "(?:\xe1\xb8\xbf|\xe1\xb8\xbe)",
+	"\xe1\xb9\x81" => "(?:\xe1\xb9\x81|\xe1\xb9\x80)",
+	"\xe1\xb9\x83" => "(?:\xe1\xb9\x83|\xe1\xb9\x82)",
+	"\xe1\xb9\x85" => "(?:\xe1\xb9\x85|\xe1\xb9\x84)",
+	"\xe1\xb9\x87" => "(?:\xe1\xb9\x87|\xe1\xb9\x86)",
+	"\xe1\xb9\x89" => "(?:\xe1\xb9\x89|\xe1\xb9\x88)",
+	"\xe1\xb9\x8b" => "(?:\xe1\xb9\x8b|\xe1\xb9\x8a)",
+	"\xe1\xb9\x8d" => "(?:\xe1\xb9\x8d|\xe1\xb9\x8c)",
+	"\xe1\xb9\x8f" => "(?:\xe1\xb9\x8f|\xe1\xb9\x8e)",
+	"\xe1\xb9\x91" => "(?:\xe1\xb9\x91|\xe1\xb9\x90)",
+	"\xe1\xb9\x93" => "(?:\xe1\xb9\x93|\xe1\xb9\x92)",
+	"\xe1\xb9\x95" => "(?:\xe1\xb9\x95|\xe1\xb9\x94)",
+	"\xe1\xb9\x97" => "(?:\xe1\xb9\x97|\xe1\xb9\x96)",
+	"\xe1\xb9\x99" => "(?:\xe1\xb9\x99|\xe1\xb9\x98)",
+	"\xe1\xb9\x9b" => "(?:\xe1\xb9\x9b|\xe1\xb9\x9a)",
+	"\xe1\xb9\x9d" => "(?:\xe1\xb9\x9d|\xe1\xb9\x9c)",
+	"\xe1\xb9\x9f" => "(?:\xe1\xb9\x9f|\xe1\xb9\x9e)",
+	"\xe1\xb9\xa1" => "(?:\xe1\xb9\xa1|\xe1\xb9\xa0)",
+	"\xe1\xb9\xa3" => "(?:\xe1\xb9\xa3|\xe1\xb9\xa2)",
+	"\xe1\xb9\xa5" => "(?:\xe1\xb9\xa5|\xe1\xb9\xa4)",
+	"\xe1\xb9\xa7" => "(?:\xe1\xb9\xa7|\xe1\xb9\xa6)",
+	"\xe1\xb9\xa9" => "(?:\xe1\xb9\xa9|\xe1\xb9\xa8)",
+	"\xe1\xb9\xab" => "(?:\xe1\xb9\xab|\xe1\xb9\xaa)",
+	"\xe1\xb9\xad" => "(?:\xe1\xb9\xad|\xe1\xb9\xac)",
+	"\xe1\xb9\xaf" => "(?:\xe1\xb9\xaf|\xe1\xb9\xae)",
+	"\xe1\xb9\xb1" => "(?:\xe1\xb9\xb1|\xe1\xb9\xb0)",
+	"\xe1\xb9\xb3" => "(?:\xe1\xb9\xb3|\xe1\xb9\xb2)",
+	"\xe1\xb9\xb5" => "(?:\xe1\xb9\xb5|\xe1\xb9\xb4)",
+	"\xe1\xb9\xb7" => "(?:\xe1\xb9\xb7|\xe1\xb9\xb6)",
+	"\xe1\xb9\xb9" => "(?:\xe1\xb9\xb9|\xe1\xb9\xb8)",
+	"\xe1\xb9\xbb" => "(?:\xe1\xb9\xbb|\xe1\xb9\xba)",
+	"\xe1\xb9\xbd" => "(?:\xe1\xb9\xbd|\xe1\xb9\xbc)",
+	"\xe1\xb9\xbf" => "(?:\xe1\xb9\xbf|\xe1\xb9\xbe)",
+	"\xe1\xba\x81" => "(?:\xe1\xba\x81|\xe1\xba\x80)",
+	"\xe1\xba\x83" => "(?:\xe1\xba\x83|\xe1\xba\x82)",
+	"\xe1\xba\x85" => "(?:\xe1\xba\x85|\xe1\xba\x84)",
+	"\xe1\xba\x87" => "(?:\xe1\xba\x87|\xe1\xba\x86)",
+	"\xe1\xba\x89" => "(?:\xe1\xba\x89|\xe1\xba\x88)",
+	"\xe1\xba\x8b" => "(?:\xe1\xba\x8b|\xe1\xba\x8a)",
+	"\xe1\xba\x8d" => "(?:\xe1\xba\x8d|\xe1\xba\x8c)",
+	"\xe1\xba\x8f" => "(?:\xe1\xba\x8f|\xe1\xba\x8e)",
+	"\xe1\xba\x91" => "(?:\xe1\xba\x91|\xe1\xba\x90)",
+	"\xe1\xba\x93" => "(?:\xe1\xba\x93|\xe1\xba\x92)",
+	"\xe1\xba\x95" => "(?:\xe1\xba\x95|\xe1\xba\x94)",
+	"\xe1\xba\x9b" => "(?:\xe1\xba\x9b|\xe1\xb9\xa0)",
+	"\xe1\xba\xa1" => "(?:\xe1\xba\xa1|\xe1\xba\xa0)",
+	"\xe1\xba\xa3" => "(?:\xe1\xba\xa3|\xe1\xba\xa2)",
+	"\xe1\xba\xa5" => "(?:\xe1\xba\xa5|\xe1\xba\xa4)",
+	"\xe1\xba\xa7" => "(?:\xe1\xba\xa7|\xe1\xba\xa6)",
+	"\xe1\xba\xa9" => "(?:\xe1\xba\xa9|\xe1\xba\xa8)",
+	"\xe1\xba\xab" => "(?:\xe1\xba\xab|\xe1\xba\xaa)",
+	"\xe1\xba\xad" => "(?:\xe1\xba\xad|\xe1\xba\xac)",
+	"\xe1\xba\xaf" => "(?:\xe1\xba\xaf|\xe1\xba\xae)",
+	"\xe1\xba\xb1" => "(?:\xe1\xba\xb1|\xe1\xba\xb0)",
+	"\xe1\xba\xb3" => "(?:\xe1\xba\xb3|\xe1\xba\xb2)",
+	"\xe1\xba\xb5" => "(?:\xe1\xba\xb5|\xe1\xba\xb4)",
+	"\xe1\xba\xb7" => "(?:\xe1\xba\xb7|\xe1\xba\xb6)",
+	"\xe1\xba\xb9" => "(?:\xe1\xba\xb9|\xe1\xba\xb8)",
+	"\xe1\xba\xbb" => "(?:\xe1\xba\xbb|\xe1\xba\xba)",
+	"\xe1\xba\xbd" => "(?:\xe1\xba\xbd|\xe1\xba\xbc)",
+	"\xe1\xba\xbf" => "(?:\xe1\xba\xbf|\xe1\xba\xbe)",
+	"\xe1\xbb\x81" => "(?:\xe1\xbb\x81|\xe1\xbb\x80)",
+	"\xe1\xbb\x83" => "(?:\xe1\xbb\x83|\xe1\xbb\x82)",
+	"\xe1\xbb\x85" => "(?:\xe1\xbb\x85|\xe1\xbb\x84)",
+	"\xe1\xbb\x87" => "(?:\xe1\xbb\x87|\xe1\xbb\x86)",
+	"\xe1\xbb\x89" => "(?:\xe1\xbb\x89|\xe1\xbb\x88)",
+	"\xe1\xbb\x8b" => "(?:\xe1\xbb\x8b|\xe1\xbb\x8a)",
+	"\xe1\xbb\x8d" => "(?:\xe1\xbb\x8d|\xe1\xbb\x8c)",
+	"\xe1\xbb\x8f" => "(?:\xe1\xbb\x8f|\xe1\xbb\x8e)",
+	"\xe1\xbb\x91" => "(?:\xe1\xbb\x91|\xe1\xbb\x90)",
+	"\xe1\xbb\x93" => "(?:\xe1\xbb\x93|\xe1\xbb\x92)",
+	"\xe1\xbb\x95" => "(?:\xe1\xbb\x95|\xe1\xbb\x94)",
+	"\xe1\xbb\x97" => "(?:\xe1\xbb\x97|\xe1\xbb\x96)",
+	"\xe1\xbb\x99" => "(?:\xe1\xbb\x99|\xe1\xbb\x98)",
+	"\xe1\xbb\x9b" => "(?:\xe1\xbb\x9b|\xe1\xbb\x9a)",
+	"\xe1\xbb\x9d" => "(?:\xe1\xbb\x9d|\xe1\xbb\x9c)",
+	"\xe1\xbb\x9f" => "(?:\xe1\xbb\x9f|\xe1\xbb\x9e)",
+	"\xe1\xbb\xa1" => "(?:\xe1\xbb\xa1|\xe1\xbb\xa0)",
+	"\xe1\xbb\xa3" => "(?:\xe1\xbb\xa3|\xe1\xbb\xa2)",
+	"\xe1\xbb\xa5" => "(?:\xe1\xbb\xa5|\xe1\xbb\xa4)",
+	"\xe1\xbb\xa7" => "(?:\xe1\xbb\xa7|\xe1\xbb\xa6)",
+	"\xe1\xbb\xa9" => "(?:\xe1\xbb\xa9|\xe1\xbb\xa8)",
+	"\xe1\xbb\xab" => "(?:\xe1\xbb\xab|\xe1\xbb\xaa)",
+	"\xe1\xbb\xad" => "(?:\xe1\xbb\xad|\xe1\xbb\xac)",
+	"\xe1\xbb\xaf" => "(?:\xe1\xbb\xaf|\xe1\xbb\xae)",
+	"\xe1\xbb\xb1" => "(?:\xe1\xbb\xb1|\xe1\xbb\xb0)",
+	"\xe1\xbb\xb3" => "(?:\xe1\xbb\xb3|\xe1\xbb\xb2)",
+	"\xe1\xbb\xb5" => "(?:\xe1\xbb\xb5|\xe1\xbb\xb4)",
+	"\xe1\xbb\xb7" => "(?:\xe1\xbb\xb7|\xe1\xbb\xb6)",
+	"\xe1\xbb\xb9" => "(?:\xe1\xbb\xb9|\xe1\xbb\xb8)",
+	"\xe1\xbc\x80" => "(?:\xe1\xbc\x80|\xe1\xbc\x88)",
+	"\xe1\xbc\x81" => "(?:\xe1\xbc\x81|\xe1\xbc\x89)",
+	"\xe1\xbc\x82" => "(?:\xe1\xbc\x82|\xe1\xbc\x8a)",
+	"\xe1\xbc\x83" => "(?:\xe1\xbc\x83|\xe1\xbc\x8b)",
+	"\xe1\xbc\x84" => "(?:\xe1\xbc\x84|\xe1\xbc\x8c)",
+	"\xe1\xbc\x85" => "(?:\xe1\xbc\x85|\xe1\xbc\x8d)",
+	"\xe1\xbc\x86" => "(?:\xe1\xbc\x86|\xe1\xbc\x8e)",
+	"\xe1\xbc\x87" => "(?:\xe1\xbc\x87|\xe1\xbc\x8f)",
+	"\xe1\xbc\x90" => "(?:\xe1\xbc\x90|\xe1\xbc\x98)",
+	"\xe1\xbc\x91" => "(?:\xe1\xbc\x91|\xe1\xbc\x99)",
+	"\xe1\xbc\x92" => "(?:\xe1\xbc\x92|\xe1\xbc\x9a)",
+	"\xe1\xbc\x93" => "(?:\xe1\xbc\x93|\xe1\xbc\x9b)",
+	"\xe1\xbc\x94" => "(?:\xe1\xbc\x94|\xe1\xbc\x9c)",
+	"\xe1\xbc\x95" => "(?:\xe1\xbc\x95|\xe1\xbc\x9d)",
+	"\xe1\xbc\xa0" => "(?:\xe1\xbc\xa0|\xe1\xbc\xa8)",
+	"\xe1\xbc\xa1" => "(?:\xe1\xbc\xa1|\xe1\xbc\xa9)",
+	"\xe1\xbc\xa2" => "(?:\xe1\xbc\xa2|\xe1\xbc\xaa)",
+	"\xe1\xbc\xa3" => "(?:\xe1\xbc\xa3|\xe1\xbc\xab)",
+	"\xe1\xbc\xa4" => "(?:\xe1\xbc\xa4|\xe1\xbc\xac)",
+	"\xe1\xbc\xa5" => "(?:\xe1\xbc\xa5|\xe1\xbc\xad)",
+	"\xe1\xbc\xa6" => "(?:\xe1\xbc\xa6|\xe1\xbc\xae)",
+	"\xe1\xbc\xa7" => "(?:\xe1\xbc\xa7|\xe1\xbc\xaf)",
+	"\xe1\xbc\xb0" => "(?:\xe1\xbc\xb0|\xe1\xbc\xb8)",
+	"\xe1\xbc\xb1" => "(?:\xe1\xbc\xb1|\xe1\xbc\xb9)",
+	"\xe1\xbc\xb2" => "(?:\xe1\xbc\xb2|\xe1\xbc\xba)",
+	"\xe1\xbc\xb3" => "(?:\xe1\xbc\xb3|\xe1\xbc\xbb)",
+	"\xe1\xbc\xb4" => "(?:\xe1\xbc\xb4|\xe1\xbc\xbc)",
+	"\xe1\xbc\xb5" => "(?:\xe1\xbc\xb5|\xe1\xbc\xbd)",
+	"\xe1\xbc\xb6" => "(?:\xe1\xbc\xb6|\xe1\xbc\xbe)",
+	"\xe1\xbc\xb7" => "(?:\xe1\xbc\xb7|\xe1\xbc\xbf)",
+	"\xe1\xbd\x80" => "(?:\xe1\xbd\x80|\xe1\xbd\x88)",
+	"\xe1\xbd\x81" => "(?:\xe1\xbd\x81|\xe1\xbd\x89)",
+	"\xe1\xbd\x82" => "(?:\xe1\xbd\x82|\xe1\xbd\x8a)",
+	"\xe1\xbd\x83" => "(?:\xe1\xbd\x83|\xe1\xbd\x8b)",
+	"\xe1\xbd\x84" => "(?:\xe1\xbd\x84|\xe1\xbd\x8c)",
+	"\xe1\xbd\x85" => "(?:\xe1\xbd\x85|\xe1\xbd\x8d)",
+	"\xe1\xbd\x91" => "(?:\xe1\xbd\x91|\xe1\xbd\x99)",
+	"\xe1\xbd\x93" => "(?:\xe1\xbd\x93|\xe1\xbd\x9b)",
+	"\xe1\xbd\x95" => "(?:\xe1\xbd\x95|\xe1\xbd\x9d)",
+	"\xe1\xbd\x97" => "(?:\xe1\xbd\x97|\xe1\xbd\x9f)",
+	"\xe1\xbd\xa0" => "(?:\xe1\xbd\xa0|\xe1\xbd\xa8)",
+	"\xe1\xbd\xa1" => "(?:\xe1\xbd\xa1|\xe1\xbd\xa9)",
+	"\xe1\xbd\xa2" => "(?:\xe1\xbd\xa2|\xe1\xbd\xaa)",
+	"\xe1\xbd\xa3" => "(?:\xe1\xbd\xa3|\xe1\xbd\xab)",
+	"\xe1\xbd\xa4" => "(?:\xe1\xbd\xa4|\xe1\xbd\xac)",
+	"\xe1\xbd\xa5" => "(?:\xe1\xbd\xa5|\xe1\xbd\xad)",
+	"\xe1\xbd\xa6" => "(?:\xe1\xbd\xa6|\xe1\xbd\xae)",
+	"\xe1\xbd\xa7" => "(?:\xe1\xbd\xa7|\xe1\xbd\xaf)",
+	"\xe1\xbd\xb0" => "(?:\xe1\xbd\xb0|\xe1\xbe\xba)",
+	"\xe1\xbd\xb1" => "(?:\xe1\xbd\xb1|\xe1\xbe\xbb)",
+	"\xe1\xbd\xb2" => "(?:\xe1\xbd\xb2|\xe1\xbf\x88)",
+	"\xe1\xbd\xb3" => "(?:\xe1\xbd\xb3|\xe1\xbf\x89)",
+	"\xe1\xbd\xb4" => "(?:\xe1\xbd\xb4|\xe1\xbf\x8a)",
+	"\xe1\xbd\xb5" => "(?:\xe1\xbd\xb5|\xe1\xbf\x8b)",
+	"\xe1\xbd\xb6" => "(?:\xe1\xbd\xb6|\xe1\xbf\x9a)",
+	"\xe1\xbd\xb7" => "(?:\xe1\xbd\xb7|\xe1\xbf\x9b)",
+	"\xe1\xbd\xb8" => "(?:\xe1\xbd\xb8|\xe1\xbf\xb8)",
+	"\xe1\xbd\xb9" => "(?:\xe1\xbd\xb9|\xe1\xbf\xb9)",
+	"\xe1\xbd\xba" => "(?:\xe1\xbd\xba|\xe1\xbf\xaa)",
+	"\xe1\xbd\xbb" => "(?:\xe1\xbd\xbb|\xe1\xbf\xab)",
+	"\xe1\xbd\xbc" => "(?:\xe1\xbd\xbc|\xe1\xbf\xba)",
+	"\xe1\xbd\xbd" => "(?:\xe1\xbd\xbd|\xe1\xbf\xbb)",
+	"\xe1\xbe\x80" => "(?:\xe1\xbe\x80|\xe1\xbe\x88)",
+	"\xe1\xbe\x81" => "(?:\xe1\xbe\x81|\xe1\xbe\x89)",
+	"\xe1\xbe\x82" => "(?:\xe1\xbe\x82|\xe1\xbe\x8a)",
+	"\xe1\xbe\x83" => "(?:\xe1\xbe\x83|\xe1\xbe\x8b)",
+	"\xe1\xbe\x84" => "(?:\xe1\xbe\x84|\xe1\xbe\x8c)",
+	"\xe1\xbe\x85" => "(?:\xe1\xbe\x85|\xe1\xbe\x8d)",
+	"\xe1\xbe\x86" => "(?:\xe1\xbe\x86|\xe1\xbe\x8e)",
+	"\xe1\xbe\x87" => "(?:\xe1\xbe\x87|\xe1\xbe\x8f)",
+	"\xe1\xbe\x90" => "(?:\xe1\xbe\x90|\xe1\xbe\x98)",
+	"\xe1\xbe\x91" => "(?:\xe1\xbe\x91|\xe1\xbe\x99)",
+	"\xe1\xbe\x92" => "(?:\xe1\xbe\x92|\xe1\xbe\x9a)",
+	"\xe1\xbe\x93" => "(?:\xe1\xbe\x93|\xe1\xbe\x9b)",
+	"\xe1\xbe\x94" => "(?:\xe1\xbe\x94|\xe1\xbe\x9c)",
+	"\xe1\xbe\x95" => "(?:\xe1\xbe\x95|\xe1\xbe\x9d)",
+	"\xe1\xbe\x96" => "(?:\xe1\xbe\x96|\xe1\xbe\x9e)",
+	"\xe1\xbe\x97" => "(?:\xe1\xbe\x97|\xe1\xbe\x9f)",
+	"\xe1\xbe\xa0" => "(?:\xe1\xbe\xa0|\xe1\xbe\xa8)",
+	"\xe1\xbe\xa1" => "(?:\xe1\xbe\xa1|\xe1\xbe\xa9)",
+	"\xe1\xbe\xa2" => "(?:\xe1\xbe\xa2|\xe1\xbe\xaa)",
+	"\xe1\xbe\xa3" => "(?:\xe1\xbe\xa3|\xe1\xbe\xab)",
+	"\xe1\xbe\xa4" => "(?:\xe1\xbe\xa4|\xe1\xbe\xac)",
+	"\xe1\xbe\xa5" => "(?:\xe1\xbe\xa5|\xe1\xbe\xad)",
+	"\xe1\xbe\xa6" => "(?:\xe1\xbe\xa6|\xe1\xbe\xae)",
+	"\xe1\xbe\xa7" => "(?:\xe1\xbe\xa7|\xe1\xbe\xaf)",
+	"\xe1\xbe\xb0" => "(?:\xe1\xbe\xb0|\xe1\xbe\xb8)",
+	"\xe1\xbe\xb1" => "(?:\xe1\xbe\xb1|\xe1\xbe\xb9)",
+	"\xe1\xbe\xb3" => "(?:\xe1\xbe\xb3|\xe1\xbe\xbc)",
+	"\xe1\xbe\xbe" => "(?:\xe1\xbe\xbe|\xce\x99)",
+	"\xe1\xbf\x83" => "(?:\xe1\xbf\x83|\xe1\xbf\x8c)",
+	"\xe1\xbf\x90" => "(?:\xe1\xbf\x90|\xe1\xbf\x98)",
+	"\xe1\xbf\x91" => "(?:\xe1\xbf\x91|\xe1\xbf\x99)",
+	"\xe1\xbf\xa0" => "(?:\xe1\xbf\xa0|\xe1\xbf\xa8)",
+	"\xe1\xbf\xa1" => "(?:\xe1\xbf\xa1|\xe1\xbf\xa9)",
+	"\xe1\xbf\xa5" => "(?:\xe1\xbf\xa5|\xe1\xbf\xac)",
+	"\xe1\xbf\xb3" => "(?:\xe1\xbf\xb3|\xe1\xbf\xbc)",
+	"\xe2\x85\xb0" => "(?:\xe2\x85\xb0|\xe2\x85\xa0)",
+	"\xe2\x85\xb1" => "(?:\xe2\x85\xb1|\xe2\x85\xa1)",
+	"\xe2\x85\xb2" => "(?:\xe2\x85\xb2|\xe2\x85\xa2)",
+	"\xe2\x85\xb3" => "(?:\xe2\x85\xb3|\xe2\x85\xa3)",
+	"\xe2\x85\xb4" => "(?:\xe2\x85\xb4|\xe2\x85\xa4)",
+	"\xe2\x85\xb5" => "(?:\xe2\x85\xb5|\xe2\x85\xa5)",
+	"\xe2\x85\xb6" => "(?:\xe2\x85\xb6|\xe2\x85\xa6)",
+	"\xe2\x85\xb7" => "(?:\xe2\x85\xb7|\xe2\x85\xa7)",
+	"\xe2\x85\xb8" => "(?:\xe2\x85\xb8|\xe2\x85\xa8)",
+	"\xe2\x85\xb9" => "(?:\xe2\x85\xb9|\xe2\x85\xa9)",
+	"\xe2\x85\xba" => "(?:\xe2\x85\xba|\xe2\x85\xaa)",
+	"\xe2\x85\xbb" => "(?:\xe2\x85\xbb|\xe2\x85\xab)",
+	"\xe2\x85\xbc" => "(?:\xe2\x85\xbc|\xe2\x85\xac)",
+	"\xe2\x85\xbd" => "(?:\xe2\x85\xbd|\xe2\x85\xad)",
+	"\xe2\x85\xbe" => "(?:\xe2\x85\xbe|\xe2\x85\xae)",
+	"\xe2\x85\xbf" => "(?:\xe2\x85\xbf|\xe2\x85\xaf)",
+	"\xe2\x93\x90" => "(?:\xe2\x93\x90|\xe2\x92\xb6)",
+	"\xe2\x93\x91" => "(?:\xe2\x93\x91|\xe2\x92\xb7)",
+	"\xe2\x93\x92" => "(?:\xe2\x93\x92|\xe2\x92\xb8)",
+	"\xe2\x93\x93" => "(?:\xe2\x93\x93|\xe2\x92\xb9)",
+	"\xe2\x93\x94" => "(?:\xe2\x93\x94|\xe2\x92\xba)",
+	"\xe2\x93\x95" => "(?:\xe2\x93\x95|\xe2\x92\xbb)",
+	"\xe2\x93\x96" => "(?:\xe2\x93\x96|\xe2\x92\xbc)",
+	"\xe2\x93\x97" => "(?:\xe2\x93\x97|\xe2\x92\xbd)",
+	"\xe2\x93\x98" => "(?:\xe2\x93\x98|\xe2\x92\xbe)",
+	"\xe2\x93\x99" => "(?:\xe2\x93\x99|\xe2\x92\xbf)",
+	"\xe2\x93\x9a" => "(?:\xe2\x93\x9a|\xe2\x93\x80)",
+	"\xe2\x93\x9b" => "(?:\xe2\x93\x9b|\xe2\x93\x81)",
+	"\xe2\x93\x9c" => "(?:\xe2\x93\x9c|\xe2\x93\x82)",
+	"\xe2\x93\x9d" => "(?:\xe2\x93\x9d|\xe2\x93\x83)",
+	"\xe2\x93\x9e" => "(?:\xe2\x93\x9e|\xe2\x93\x84)",
+	"\xe2\x93\x9f" => "(?:\xe2\x93\x9f|\xe2\x93\x85)",
+	"\xe2\x93\xa0" => "(?:\xe2\x93\xa0|\xe2\x93\x86)",
+	"\xe2\x93\xa1" => "(?:\xe2\x93\xa1|\xe2\x93\x87)",
+	"\xe2\x93\xa2" => "(?:\xe2\x93\xa2|\xe2\x93\x88)",
+	"\xe2\x93\xa3" => "(?:\xe2\x93\xa3|\xe2\x93\x89)",
+	"\xe2\x93\xa4" => "(?:\xe2\x93\xa4|\xe2\x93\x8a)",
+	"\xe2\x93\xa5" => "(?:\xe2\x93\xa5|\xe2\x93\x8b)",
+	"\xe2\x93\xa6" => "(?:\xe2\x93\xa6|\xe2\x93\x8c)",
+	"\xe2\x93\xa7" => "(?:\xe2\x93\xa7|\xe2\x93\x8d)",
+	"\xe2\x93\xa8" => "(?:\xe2\x93\xa8|\xe2\x93\x8e)",
+	"\xe2\x93\xa9" => "(?:\xe2\x93\xa9|\xe2\x93\x8f)",
+	"\xef\xbd\x81" => "(?:\xef\xbd\x81|\xef\xbc\xa1)",
+	"\xef\xbd\x82" => "(?:\xef\xbd\x82|\xef\xbc\xa2)",
+	"\xef\xbd\x83" => "(?:\xef\xbd\x83|\xef\xbc\xa3)",
+	"\xef\xbd\x84" => "(?:\xef\xbd\x84|\xef\xbc\xa4)",
+	"\xef\xbd\x85" => "(?:\xef\xbd\x85|\xef\xbc\xa5)",
+	"\xef\xbd\x86" => "(?:\xef\xbd\x86|\xef\xbc\xa6)",
+	"\xef\xbd\x87" => "(?:\xef\xbd\x87|\xef\xbc\xa7)",
+	"\xef\xbd\x88" => "(?:\xef\xbd\x88|\xef\xbc\xa8)",
+	"\xef\xbd\x89" => "(?:\xef\xbd\x89|\xef\xbc\xa9)",
+	"\xef\xbd\x8a" => "(?:\xef\xbd\x8a|\xef\xbc\xaa)",
+	"\xef\xbd\x8b" => "(?:\xef\xbd\x8b|\xef\xbc\xab)",
+	"\xef\xbd\x8c" => "(?:\xef\xbd\x8c|\xef\xbc\xac)",
+	"\xef\xbd\x8d" => "(?:\xef\xbd\x8d|\xef\xbc\xad)",
+	"\xef\xbd\x8e" => "(?:\xef\xbd\x8e|\xef\xbc\xae)",
+	"\xef\xbd\x8f" => "(?:\xef\xbd\x8f|\xef\xbc\xaf)",
+	"\xef\xbd\x90" => "(?:\xef\xbd\x90|\xef\xbc\xb0)",
+	"\xef\xbd\x91" => "(?:\xef\xbd\x91|\xef\xbc\xb1)",
+	"\xef\xbd\x92" => "(?:\xef\xbd\x92|\xef\xbc\xb2)",
+	"\xef\xbd\x93" => "(?:\xef\xbd\x93|\xef\xbc\xb3)",
+	"\xef\xbd\x94" => "(?:\xef\xbd\x94|\xef\xbc\xb4)",
+	"\xef\xbd\x95" => "(?:\xef\xbd\x95|\xef\xbc\xb5)",
+	"\xef\xbd\x96" => "(?:\xef\xbd\x96|\xef\xbc\xb6)",
+	"\xef\xbd\x97" => "(?:\xef\xbd\x97|\xef\xbc\xb7)",
+	"\xef\xbd\x98" => "(?:\xef\xbd\x98|\xef\xbc\xb8)",
+	"\xef\xbd\x99" => "(?:\xef\xbd\x99|\xef\xbc\xb9)",
+	"\xef\xbd\x9a" => "(?:\xef\xbd\x9a|\xef\xbc\xba)",
+	"\xf0\x90\x90\xa8" => "(?:\xf0\x90\x90\xa8|\xf0\x90\x90\x80)",
+	"\xf0\x90\x90\xa9" => "(?:\xf0\x90\x90\xa9|\xf0\x90\x90\x81)",
+	"\xf0\x90\x90\xaa" => "(?:\xf0\x90\x90\xaa|\xf0\x90\x90\x82)",
+	"\xf0\x90\x90\xab" => "(?:\xf0\x90\x90\xab|\xf0\x90\x90\x83)",
+	"\xf0\x90\x90\xac" => "(?:\xf0\x90\x90\xac|\xf0\x90\x90\x84)",
+	"\xf0\x90\x90\xad" => "(?:\xf0\x90\x90\xad|\xf0\x90\x90\x85)",
+	"\xf0\x90\x90\xae" => "(?:\xf0\x90\x90\xae|\xf0\x90\x90\x86)",
+	"\xf0\x90\x90\xaf" => "(?:\xf0\x90\x90\xaf|\xf0\x90\x90\x87)",
+	"\xf0\x90\x90\xb0" => "(?:\xf0\x90\x90\xb0|\xf0\x90\x90\x88)",
+	"\xf0\x90\x90\xb1" => "(?:\xf0\x90\x90\xb1|\xf0\x90\x90\x89)",
+	"\xf0\x90\x90\xb2" => "(?:\xf0\x90\x90\xb2|\xf0\x90\x90\x8a)",
+	"\xf0\x90\x90\xb3" => "(?:\xf0\x90\x90\xb3|\xf0\x90\x90\x8b)",
+	"\xf0\x90\x90\xb4" => "(?:\xf0\x90\x90\xb4|\xf0\x90\x90\x8c)",
+	"\xf0\x90\x90\xb5" => "(?:\xf0\x90\x90\xb5|\xf0\x90\x90\x8d)",
+	"\xf0\x90\x90\xb6" => "(?:\xf0\x90\x90\xb6|\xf0\x90\x90\x8e)",
+	"\xf0\x90\x90\xb7" => "(?:\xf0\x90\x90\xb7|\xf0\x90\x90\x8f)",
+	"\xf0\x90\x90\xb8" => "(?:\xf0\x90\x90\xb8|\xf0\x90\x90\x90)",
+	"\xf0\x90\x90\xb9" => "(?:\xf0\x90\x90\xb9|\xf0\x90\x90\x91)",
+	"\xf0\x90\x90\xba" => "(?:\xf0\x90\x90\xba|\xf0\x90\x90\x92)",
+	"\xf0\x90\x90\xbb" => "(?:\xf0\x90\x90\xbb|\xf0\x90\x90\x93)",
+	"\xf0\x90\x90\xbc" => "(?:\xf0\x90\x90\xbc|\xf0\x90\x90\x94)",
+	"\xf0\x90\x90\xbd" => "(?:\xf0\x90\x90\xbd|\xf0\x90\x90\x95)",
+	"\xf0\x90\x90\xbe" => "(?:\xf0\x90\x90\xbe|\xf0\x90\x90\x96)",
+	"\xf0\x90\x90\xbf" => "(?:\xf0\x90\x90\xbf|\xf0\x90\x90\x97)",
+	"\xf0\x90\x91\x80" => "(?:\xf0\x90\x91\x80|\xf0\x90\x90\x98)",
+	"\xf0\x90\x91\x81" => "(?:\xf0\x90\x91\x81|\xf0\x90\x90\x99)",
+	"\xf0\x90\x91\x82" => "(?:\xf0\x90\x91\x82|\xf0\x90\x90\x9a)",
+	"\xf0\x90\x91\x83" => "(?:\xf0\x90\x91\x83|\xf0\x90\x90\x9b)",
+	"\xf0\x90\x91\x84" => "(?:\xf0\x90\x91\x84|\xf0\x90\x90\x9c)",
+	"\xf0\x90\x91\x85" => "(?:\xf0\x90\x91\x85|\xf0\x90\x90\x9d)",
+	"\xf0\x90\x91\x86" => "(?:\xf0\x90\x91\x86|\xf0\x90\x90\x9e)",
+	"\xf0\x90\x91\x87" => "(?:\xf0\x90\x91\x87|\xf0\x90\x90\x9f)",
+	"\xf0\x90\x91\x88" => "(?:\xf0\x90\x91\x88|\xf0\x90\x90\xa0)",
+	"\xf0\x90\x91\x89" => "(?:\xf0\x90\x91\x89|\xf0\x90\x90\xa1)",
+	"\xf0\x90\x91\x8a" => "(?:\xf0\x90\x91\x8a|\xf0\x90\x90\xa2)",
+	"\xf0\x90\x91\x8b" => "(?:\xf0\x90\x91\x8b|\xf0\x90\x90\xa3)",
+	"\xf0\x90\x91\x8c" => "(?:\xf0\x90\x91\x8c|\xf0\x90\x90\xa4)",
+	"\xf0\x90\x91\x8d" => "(?:\xf0\x90\x91\x8d|\xf0\x90\x90\xa5)",
+	"\xc3\x80" => "(?:\xc3\x80|\xc3\xa0)",
+	"\xc3\x81" => "(?:\xc3\x81|\xc3\xa1)",
+	"\xc3\x82" => "(?:\xc3\x82|\xc3\xa2)",
+	"\xc3\x83" => "(?:\xc3\x83|\xc3\xa3)",
+	"\xc3\x84" => "(?:\xc3\x84|\xc3\xa4)",
+	"\xc3\x85" => "(?:\xc3\x85|\xc3\xa5)",
+	"\xc3\x86" => "(?:\xc3\x86|\xc3\xa6)",
+	"\xc3\x87" => "(?:\xc3\x87|\xc3\xa7)",
+	"\xc3\x88" => "(?:\xc3\x88|\xc3\xa8)",
+	"\xc3\x89" => "(?:\xc3\x89|\xc3\xa9)",
+	"\xc3\x8a" => "(?:\xc3\x8a|\xc3\xaa)",
+	"\xc3\x8b" => "(?:\xc3\x8b|\xc3\xab)",
+	"\xc3\x8c" => "(?:\xc3\x8c|\xc3\xac)",
+	"\xc3\x8d" => "(?:\xc3\x8d|\xc3\xad)",
+	"\xc3\x8e" => "(?:\xc3\x8e|\xc3\xae)",
+	"\xc3\x8f" => "(?:\xc3\x8f|\xc3\xaf)",
+	"\xc3\x90" => "(?:\xc3\x90|\xc3\xb0)",
+	"\xc3\x91" => "(?:\xc3\x91|\xc3\xb1)",
+	"\xc3\x92" => "(?:\xc3\x92|\xc3\xb2)",
+	"\xc3\x93" => "(?:\xc3\x93|\xc3\xb3)",
+	"\xc3\x94" => "(?:\xc3\x94|\xc3\xb4)",
+	"\xc3\x95" => "(?:\xc3\x95|\xc3\xb5)",
+	"\xc3\x96" => "(?:\xc3\x96|\xc3\xb6)",
+	"\xc3\x98" => "(?:\xc3\x98|\xc3\xb8)",
+	"\xc3\x99" => "(?:\xc3\x99|\xc3\xb9)",
+	"\xc3\x9a" => "(?:\xc3\x9a|\xc3\xba)",
+	"\xc3\x9b" => "(?:\xc3\x9b|\xc3\xbb)",
+	"\xc3\x9c" => "(?:\xc3\x9c|\xc3\xbc)",
+	"\xc3\x9d" => "(?:\xc3\x9d|\xc3\xbd)",
+	"\xc3\x9e" => "(?:\xc3\x9e|\xc3\xbe)",
+	"\xc4\x80" => "(?:\xc4\x80|\xc4\x81)",
+	"\xc4\x82" => "(?:\xc4\x82|\xc4\x83)",
+	"\xc4\x84" => "(?:\xc4\x84|\xc4\x85)",
+	"\xc4\x86" => "(?:\xc4\x86|\xc4\x87)",
+	"\xc4\x88" => "(?:\xc4\x88|\xc4\x89)",
+	"\xc4\x8a" => "(?:\xc4\x8a|\xc4\x8b)",
+	"\xc4\x8c" => "(?:\xc4\x8c|\xc4\x8d)",
+	"\xc4\x8e" => "(?:\xc4\x8e|\xc4\x8f)",
+	"\xc4\x90" => "(?:\xc4\x90|\xc4\x91)",
+	"\xc4\x92" => "(?:\xc4\x92|\xc4\x93)",
+	"\xc4\x94" => "(?:\xc4\x94|\xc4\x95)",
+	"\xc4\x96" => "(?:\xc4\x96|\xc4\x97)",
+	"\xc4\x98" => "(?:\xc4\x98|\xc4\x99)",
+	"\xc4\x9a" => "(?:\xc4\x9a|\xc4\x9b)",
+	"\xc4\x9c" => "(?:\xc4\x9c|\xc4\x9d)",
+	"\xc4\x9e" => "(?:\xc4\x9e|\xc4\x9f)",
+	"\xc4\xa0" => "(?:\xc4\xa0|\xc4\xa1)",
+	"\xc4\xa2" => "(?:\xc4\xa2|\xc4\xa3)",
+	"\xc4\xa4" => "(?:\xc4\xa4|\xc4\xa5)",
+	"\xc4\xa6" => "(?:\xc4\xa6|\xc4\xa7)",
+	"\xc4\xa8" => "(?:\xc4\xa8|\xc4\xa9)",
+	"\xc4\xaa" => "(?:\xc4\xaa|\xc4\xab)",
+	"\xc4\xac" => "(?:\xc4\xac|\xc4\xad)",
+	"\xc4\xae" => "(?:\xc4\xae|\xc4\xaf)",
+	"\xc4\xb0" => "(?:\xc4\xb0|i)",
+	"\xc4\xb2" => "(?:\xc4\xb2|\xc4\xb3)",
+	"\xc4\xb4" => "(?:\xc4\xb4|\xc4\xb5)",
+	"\xc4\xb6" => "(?:\xc4\xb6|\xc4\xb7)",
+	"\xc4\xb9" => "(?:\xc4\xb9|\xc4\xba)",
+	"\xc4\xbb" => "(?:\xc4\xbb|\xc4\xbc)",
+	"\xc4\xbd" => "(?:\xc4\xbd|\xc4\xbe)",
+	"\xc4\xbf" => "(?:\xc4\xbf|\xc5\x80)",
+	"\xc5\x81" => "(?:\xc5\x81|\xc5\x82)",
+	"\xc5\x83" => "(?:\xc5\x83|\xc5\x84)",
+	"\xc5\x85" => "(?:\xc5\x85|\xc5\x86)",
+	"\xc5\x87" => "(?:\xc5\x87|\xc5\x88)",
+	"\xc5\x8a" => "(?:\xc5\x8a|\xc5\x8b)",
+	"\xc5\x8c" => "(?:\xc5\x8c|\xc5\x8d)",
+	"\xc5\x8e" => "(?:\xc5\x8e|\xc5\x8f)",
+	"\xc5\x90" => "(?:\xc5\x90|\xc5\x91)",
+	"\xc5\x92" => "(?:\xc5\x92|\xc5\x93)",
+	"\xc5\x94" => "(?:\xc5\x94|\xc5\x95)",
+	"\xc5\x96" => "(?:\xc5\x96|\xc5\x97)",
+	"\xc5\x98" => "(?:\xc5\x98|\xc5\x99)",
+	"\xc5\x9a" => "(?:\xc5\x9a|\xc5\x9b)",
+	"\xc5\x9c" => "(?:\xc5\x9c|\xc5\x9d)",
+	"\xc5\x9e" => "(?:\xc5\x9e|\xc5\x9f)",
+	"\xc5\xa0" => "(?:\xc5\xa0|\xc5\xa1)",
+	"\xc5\xa2" => "(?:\xc5\xa2|\xc5\xa3)",
+	"\xc5\xa4" => "(?:\xc5\xa4|\xc5\xa5)",
+	"\xc5\xa6" => "(?:\xc5\xa6|\xc5\xa7)",
+	"\xc5\xa8" => "(?:\xc5\xa8|\xc5\xa9)",
+	"\xc5\xaa" => "(?:\xc5\xaa|\xc5\xab)",
+	"\xc5\xac" => "(?:\xc5\xac|\xc5\xad)",
+	"\xc5\xae" => "(?:\xc5\xae|\xc5\xaf)",
+	"\xc5\xb0" => "(?:\xc5\xb0|\xc5\xb1)",
+	"\xc5\xb2" => "(?:\xc5\xb2|\xc5\xb3)",
+	"\xc5\xb4" => "(?:\xc5\xb4|\xc5\xb5)",
+	"\xc5\xb6" => "(?:\xc5\xb6|\xc5\xb7)",
+	"\xc5\xb8" => "(?:\xc5\xb8|\xc3\xbf)",
+	"\xc5\xb9" => "(?:\xc5\xb9|\xc5\xba)",
+	"\xc5\xbb" => "(?:\xc5\xbb|\xc5\xbc)",
+	"\xc5\xbd" => "(?:\xc5\xbd|\xc5\xbe)",
+	"\xc6\x81" => "(?:\xc6\x81|\xc9\x93)",
+	"\xc6\x82" => "(?:\xc6\x82|\xc6\x83)",
+	"\xc6\x84" => "(?:\xc6\x84|\xc6\x85)",
+	"\xc6\x86" => "(?:\xc6\x86|\xc9\x94)",
+	"\xc6\x87" => "(?:\xc6\x87|\xc6\x88)",
+	"\xc6\x89" => "(?:\xc6\x89|\xc9\x96)",
+	"\xc6\x8a" => "(?:\xc6\x8a|\xc9\x97)",
+	"\xc6\x8b" => "(?:\xc6\x8b|\xc6\x8c)",
+	"\xc6\x8e" => "(?:\xc6\x8e|\xc7\x9d)",
+	"\xc6\x8f" => "(?:\xc6\x8f|\xc9\x99)",
+	"\xc6\x90" => "(?:\xc6\x90|\xc9\x9b)",
+	"\xc6\x91" => "(?:\xc6\x91|\xc6\x92)",
+	"\xc6\x93" => "(?:\xc6\x93|\xc9\xa0)",
+	"\xc6\x94" => "(?:\xc6\x94|\xc9\xa3)",
+	"\xc6\x96" => "(?:\xc6\x96|\xc9\xa9)",
+	"\xc6\x97" => "(?:\xc6\x97|\xc9\xa8)",
+	"\xc6\x98" => "(?:\xc6\x98|\xc6\x99)",
+	"\xc6\x9c" => "(?:\xc6\x9c|\xc9\xaf)",
+	"\xc6\x9d" => "(?:\xc6\x9d|\xc9\xb2)",
+	"\xc6\x9f" => "(?:\xc6\x9f|\xc9\xb5)",
+	"\xc6\xa0" => "(?:\xc6\xa0|\xc6\xa1)",
+	"\xc6\xa2" => "(?:\xc6\xa2|\xc6\xa3)",
+	"\xc6\xa4" => "(?:\xc6\xa4|\xc6\xa5)",
+	"\xc6\xa6" => "(?:\xc6\xa6|\xca\x80)",
+	"\xc6\xa7" => "(?:\xc6\xa7|\xc6\xa8)",
+	"\xc6\xa9" => "(?:\xc6\xa9|\xca\x83)",
+	"\xc6\xac" => "(?:\xc6\xac|\xc6\xad)",
+	"\xc6\xae" => "(?:\xc6\xae|\xca\x88)",
+	"\xc6\xaf" => "(?:\xc6\xaf|\xc6\xb0)",
+	"\xc6\xb1" => "(?:\xc6\xb1|\xca\x8a)",
+	"\xc6\xb2" => "(?:\xc6\xb2|\xca\x8b)",
+	"\xc6\xb3" => "(?:\xc6\xb3|\xc6\xb4)",
+	"\xc6\xb5" => "(?:\xc6\xb5|\xc6\xb6)",
+	"\xc6\xb7" => "(?:\xc6\xb7|\xca\x92)",
+	"\xc6\xb8" => "(?:\xc6\xb8|\xc6\xb9)",
+	"\xc6\xbc" => "(?:\xc6\xbc|\xc6\xbd)",
+	"\xc7\x84" => "(?:\xc7\x84|\xc7\x86|\xc7\x85)",
+	"\xc7\x85" => "(?:\xc7\x85|\xc7\x84|\xc7\x86)",
+	"\xc7\x87" => "(?:\xc7\x87|\xc7\x89|\xc7\x88)",
+	"\xc7\x88" => "(?:\xc7\x88|\xc7\x87|\xc7\x89)",
+	"\xc7\x8a" => "(?:\xc7\x8a|\xc7\x8c|\xc7\x8b)",
+	"\xc7\x8b" => "(?:\xc7\x8b|\xc7\x8a|\xc7\x8c)",
+	"\xc7\x8d" => "(?:\xc7\x8d|\xc7\x8e)",
+	"\xc7\x8f" => "(?:\xc7\x8f|\xc7\x90)",
+	"\xc7\x91" => "(?:\xc7\x91|\xc7\x92)",
+	"\xc7\x93" => "(?:\xc7\x93|\xc7\x94)",
+	"\xc7\x95" => "(?:\xc7\x95|\xc7\x96)",
+	"\xc7\x97" => "(?:\xc7\x97|\xc7\x98)",
+	"\xc7\x99" => "(?:\xc7\x99|\xc7\x9a)",
+	"\xc7\x9b" => "(?:\xc7\x9b|\xc7\x9c)",
+	"\xc7\x9e" => "(?:\xc7\x9e|\xc7\x9f)",
+	"\xc7\xa0" => "(?:\xc7\xa0|\xc7\xa1)",
+	"\xc7\xa2" => "(?:\xc7\xa2|\xc7\xa3)",
+	"\xc7\xa4" => "(?:\xc7\xa4|\xc7\xa5)",
+	"\xc7\xa6" => "(?:\xc7\xa6|\xc7\xa7)",
+	"\xc7\xa8" => "(?:\xc7\xa8|\xc7\xa9)",
+	"\xc7\xaa" => "(?:\xc7\xaa|\xc7\xab)",
+	"\xc7\xac" => "(?:\xc7\xac|\xc7\xad)",
+	"\xc7\xae" => "(?:\xc7\xae|\xc7\xaf)",
+	"\xc7\xb1" => "(?:\xc7\xb1|\xc7\xb3|\xc7\xb2)",
+	"\xc7\xb4" => "(?:\xc7\xb4|\xc7\xb5)",
+	"\xc7\xb6" => "(?:\xc7\xb6|\xc6\x95)",
+	"\xc7\xb7" => "(?:\xc7\xb7|\xc6\xbf)",
+	"\xc7\xb8" => "(?:\xc7\xb8|\xc7\xb9)",
+	"\xc7\xba" => "(?:\xc7\xba|\xc7\xbb)",
+	"\xc7\xbc" => "(?:\xc7\xbc|\xc7\xbd)",
+	"\xc7\xbe" => "(?:\xc7\xbe|\xc7\xbf)",
+	"\xc8\x80" => "(?:\xc8\x80|\xc8\x81)",
+	"\xc8\x82" => "(?:\xc8\x82|\xc8\x83)",
+	"\xc8\x84" => "(?:\xc8\x84|\xc8\x85)",
+	"\xc8\x86" => "(?:\xc8\x86|\xc8\x87)",
+	"\xc8\x88" => "(?:\xc8\x88|\xc8\x89)",
+	"\xc8\x8a" => "(?:\xc8\x8a|\xc8\x8b)",
+	"\xc8\x8c" => "(?:\xc8\x8c|\xc8\x8d)",
+	"\xc8\x8e" => "(?:\xc8\x8e|\xc8\x8f)",
+	"\xc8\x90" => "(?:\xc8\x90|\xc8\x91)",
+	"\xc8\x92" => "(?:\xc8\x92|\xc8\x93)",
+	"\xc8\x94" => "(?:\xc8\x94|\xc8\x95)",
+	"\xc8\x96" => "(?:\xc8\x96|\xc8\x97)",
+	"\xc8\x98" => "(?:\xc8\x98|\xc8\x99)",
+	"\xc8\x9a" => "(?:\xc8\x9a|\xc8\x9b)",
+	"\xc8\x9c" => "(?:\xc8\x9c|\xc8\x9d)",
+	"\xc8\x9e" => "(?:\xc8\x9e|\xc8\x9f)",
+	"\xc8\xa2" => "(?:\xc8\xa2|\xc8\xa3)",
+	"\xc8\xa4" => "(?:\xc8\xa4|\xc8\xa5)",
+	"\xc8\xa6" => "(?:\xc8\xa6|\xc8\xa7)",
+	"\xc8\xa8" => "(?:\xc8\xa8|\xc8\xa9)",
+	"\xc8\xaa" => "(?:\xc8\xaa|\xc8\xab)",
+	"\xc8\xac" => "(?:\xc8\xac|\xc8\xad)",
+	"\xc8\xae" => "(?:\xc8\xae|\xc8\xaf)",
+	"\xc8\xb0" => "(?:\xc8\xb0|\xc8\xb1)",
+	"\xc8\xb2" => "(?:\xc8\xb2|\xc8\xb3)",
+	"\xce\x86" => "(?:\xce\x86|\xce\xac)",
+	"\xce\x88" => "(?:\xce\x88|\xce\xad)",
+	"\xce\x89" => "(?:\xce\x89|\xce\xae)",
+	"\xce\x8a" => "(?:\xce\x8a|\xce\xaf)",
+	"\xce\x8c" => "(?:\xce\x8c|\xcf\x8c)",
+	"\xce\x8e" => "(?:\xce\x8e|\xcf\x8d)",
+	"\xce\x8f" => "(?:\xce\x8f|\xcf\x8e)",
+	"\xce\x91" => "(?:\xce\x91|\xce\xb1)",
+	"\xce\x92" => "(?:\xce\x92|\xce\xb2|\xcf\x90)",
+	"\xce\x93" => "(?:\xce\x93|\xce\xb3)",
+	"\xce\x94" => "(?:\xce\x94|\xce\xb4)",
+	"\xce\x95" => "(?:\xce\x95|\xce\xb5|\xcf\xb5)",
+	"\xce\x96" => "(?:\xce\x96|\xce\xb6)",
+	"\xce\x97" => "(?:\xce\x97|\xce\xb7)",
+	"\xce\x98" => "(?:\xce\x98|\xce\xb8|\xcf\x91)",
+	"\xce\x99" => "(?:\xce\x99|\xce\xb9|\xcd\x85|\xe1\xbe\xbe)",
+	"\xce\x9a" => "(?:\xce\x9a|\xce\xba|\xcf\xb0)",
+	"\xce\x9b" => "(?:\xce\x9b|\xce\xbb)",
+	"\xce\x9c" => "(?:\xce\x9c|\xce\xbc|\xc2\xb5)",
+	"\xce\x9d" => "(?:\xce\x9d|\xce\xbd)",
+	"\xce\x9e" => "(?:\xce\x9e|\xce\xbe)",
+	"\xce\x9f" => "(?:\xce\x9f|\xce\xbf)",
+	"\xce\xa0" => "(?:\xce\xa0|\xcf\x80|\xcf\x96)",
+	"\xce\xa1" => "(?:\xce\xa1|\xcf\x81|\xcf\xb1)",
+	"\xce\xa3" => "(?:\xce\xa3|\xcf\x83|\xcf\x82|\xcf\xb2)",
+	"\xce\xa4" => "(?:\xce\xa4|\xcf\x84)",
+	"\xce\xa5" => "(?:\xce\xa5|\xcf\x85)",
+	"\xce\xa6" => "(?:\xce\xa6|\xcf\x86|\xcf\x95)",
+	"\xce\xa7" => "(?:\xce\xa7|\xcf\x87)",
+	"\xce\xa8" => "(?:\xce\xa8|\xcf\x88)",
+	"\xce\xa9" => "(?:\xce\xa9|\xcf\x89)",
+	"\xce\xaa" => "(?:\xce\xaa|\xcf\x8a)",
+	"\xce\xab" => "(?:\xce\xab|\xcf\x8b)",
+	"\xcf\x9a" => "(?:\xcf\x9a|\xcf\x9b)",
+	"\xcf\x9c" => "(?:\xcf\x9c|\xcf\x9d)",
+	"\xcf\x9e" => "(?:\xcf\x9e|\xcf\x9f)",
+	"\xcf\xa0" => "(?:\xcf\xa0|\xcf\xa1)",
+	"\xcf\xa2" => "(?:\xcf\xa2|\xcf\xa3)",
+	"\xcf\xa4" => "(?:\xcf\xa4|\xcf\xa5)",
+	"\xcf\xa6" => "(?:\xcf\xa6|\xcf\xa7)",
+	"\xcf\xa8" => "(?:\xcf\xa8|\xcf\xa9)",
+	"\xcf\xaa" => "(?:\xcf\xaa|\xcf\xab)",
+	"\xcf\xac" => "(?:\xcf\xac|\xcf\xad)",
+	"\xcf\xae" => "(?:\xcf\xae|\xcf\xaf)",
+	"\xcf\xb4" => "(?:\xcf\xb4|\xce\xb8)",
+	"\xd0\x80" => "(?:\xd0\x80|\xd1\x90)",
+	"\xd0\x81" => "(?:\xd0\x81|\xd1\x91)",
+	"\xd0\x82" => "(?:\xd0\x82|\xd1\x92)",
+	"\xd0\x83" => "(?:\xd0\x83|\xd1\x93)",
+	"\xd0\x84" => "(?:\xd0\x84|\xd1\x94)",
+	"\xd0\x85" => "(?:\xd0\x85|\xd1\x95)",
+	"\xd0\x86" => "(?:\xd0\x86|\xd1\x96)",
+	"\xd0\x87" => "(?:\xd0\x87|\xd1\x97)",
+	"\xd0\x88" => "(?:\xd0\x88|\xd1\x98)",
+	"\xd0\x89" => "(?:\xd0\x89|\xd1\x99)",
+	"\xd0\x8a" => "(?:\xd0\x8a|\xd1\x9a)",
+	"\xd0\x8b" => "(?:\xd0\x8b|\xd1\x9b)",
+	"\xd0\x8c" => "(?:\xd0\x8c|\xd1\x9c)",
+	"\xd0\x8d" => "(?:\xd0\x8d|\xd1\x9d)",
+	"\xd0\x8e" => "(?:\xd0\x8e|\xd1\x9e)",
+	"\xd0\x8f" => "(?:\xd0\x8f|\xd1\x9f)",
+	"\xd0\x90" => "(?:\xd0\x90|\xd0\xb0)",
+	"\xd0\x91" => "(?:\xd0\x91|\xd0\xb1)",
+	"\xd0\x92" => "(?:\xd0\x92|\xd0\xb2)",
+	"\xd0\x93" => "(?:\xd0\x93|\xd0\xb3)",
+	"\xd0\x94" => "(?:\xd0\x94|\xd0\xb4)",
+	"\xd0\x95" => "(?:\xd0\x95|\xd0\xb5)",
+	"\xd0\x96" => "(?:\xd0\x96|\xd0\xb6)",
+	"\xd0\x97" => "(?:\xd0\x97|\xd0\xb7)",
+	"\xd0\x98" => "(?:\xd0\x98|\xd0\xb8)",
+	"\xd0\x99" => "(?:\xd0\x99|\xd0\xb9)",
+	"\xd0\x9a" => "(?:\xd0\x9a|\xd0\xba)",
+	"\xd0\x9b" => "(?:\xd0\x9b|\xd0\xbb)",
+	"\xd0\x9c" => "(?:\xd0\x9c|\xd0\xbc)",
+	"\xd0\x9d" => "(?:\xd0\x9d|\xd0\xbd)",
+	"\xd0\x9e" => "(?:\xd0\x9e|\xd0\xbe)",
+	"\xd0\x9f" => "(?:\xd0\x9f|\xd0\xbf)",
+	"\xd0\xa0" => "(?:\xd0\xa0|\xd1\x80)",
+	"\xd0\xa1" => "(?:\xd0\xa1|\xd1\x81)",
+	"\xd0\xa2" => "(?:\xd0\xa2|\xd1\x82)",
+	"\xd0\xa3" => "(?:\xd0\xa3|\xd1\x83)",
+	"\xd0\xa4" => "(?:\xd0\xa4|\xd1\x84)",
+	"\xd0\xa5" => "(?:\xd0\xa5|\xd1\x85)",
+	"\xd0\xa6" => "(?:\xd0\xa6|\xd1\x86)",
+	"\xd0\xa7" => "(?:\xd0\xa7|\xd1\x87)",
+	"\xd0\xa8" => "(?:\xd0\xa8|\xd1\x88)",
+	"\xd0\xa9" => "(?:\xd0\xa9|\xd1\x89)",
+	"\xd0\xaa" => "(?:\xd0\xaa|\xd1\x8a)",
+	"\xd0\xab" => "(?:\xd0\xab|\xd1\x8b)",
+	"\xd0\xac" => "(?:\xd0\xac|\xd1\x8c)",
+	"\xd0\xad" => "(?:\xd0\xad|\xd1\x8d)",
+	"\xd0\xae" => "(?:\xd0\xae|\xd1\x8e)",
+	"\xd0\xaf" => "(?:\xd0\xaf|\xd1\x8f)",
+	"\xd1\xa0" => "(?:\xd1\xa0|\xd1\xa1)",
+	"\xd1\xa2" => "(?:\xd1\xa2|\xd1\xa3)",
+	"\xd1\xa4" => "(?:\xd1\xa4|\xd1\xa5)",
+	"\xd1\xa6" => "(?:\xd1\xa6|\xd1\xa7)",
+	"\xd1\xa8" => "(?:\xd1\xa8|\xd1\xa9)",
+	"\xd1\xaa" => "(?:\xd1\xaa|\xd1\xab)",
+	"\xd1\xac" => "(?:\xd1\xac|\xd1\xad)",
+	"\xd1\xae" => "(?:\xd1\xae|\xd1\xaf)",
+	"\xd1\xb0" => "(?:\xd1\xb0|\xd1\xb1)",
+	"\xd1\xb2" => "(?:\xd1\xb2|\xd1\xb3)",
+	"\xd1\xb4" => "(?:\xd1\xb4|\xd1\xb5)",
+	"\xd1\xb6" => "(?:\xd1\xb6|\xd1\xb7)",
+	"\xd1\xb8" => "(?:\xd1\xb8|\xd1\xb9)",
+	"\xd1\xba" => "(?:\xd1\xba|\xd1\xbb)",
+	"\xd1\xbc" => "(?:\xd1\xbc|\xd1\xbd)",
+	"\xd1\xbe" => "(?:\xd1\xbe|\xd1\xbf)",
+	"\xd2\x80" => "(?:\xd2\x80|\xd2\x81)",
+	"\xd2\x8c" => "(?:\xd2\x8c|\xd2\x8d)",
+	"\xd2\x8e" => "(?:\xd2\x8e|\xd2\x8f)",
+	"\xd2\x90" => "(?:\xd2\x90|\xd2\x91)",
+	"\xd2\x92" => "(?:\xd2\x92|\xd2\x93)",
+	"\xd2\x94" => "(?:\xd2\x94|\xd2\x95)",
+	"\xd2\x96" => "(?:\xd2\x96|\xd2\x97)",
+	"\xd2\x98" => "(?:\xd2\x98|\xd2\x99)",
+	"\xd2\x9a" => "(?:\xd2\x9a|\xd2\x9b)",
+	"\xd2\x9c" => "(?:\xd2\x9c|\xd2\x9d)",
+	"\xd2\x9e" => "(?:\xd2\x9e|\xd2\x9f)",
+	"\xd2\xa0" => "(?:\xd2\xa0|\xd2\xa1)",
+	"\xd2\xa2" => "(?:\xd2\xa2|\xd2\xa3)",
+	"\xd2\xa4" => "(?:\xd2\xa4|\xd2\xa5)",
+	"\xd2\xa6" => "(?:\xd2\xa6|\xd2\xa7)",
+	"\xd2\xa8" => "(?:\xd2\xa8|\xd2\xa9)",
+	"\xd2\xaa" => "(?:\xd2\xaa|\xd2\xab)",
+	"\xd2\xac" => "(?:\xd2\xac|\xd2\xad)",
+	"\xd2\xae" => "(?:\xd2\xae|\xd2\xaf)",
+	"\xd2\xb0" => "(?:\xd2\xb0|\xd2\xb1)",
+	"\xd2\xb2" => "(?:\xd2\xb2|\xd2\xb3)",
+	"\xd2\xb4" => "(?:\xd2\xb4|\xd2\xb5)",
+	"\xd2\xb6" => "(?:\xd2\xb6|\xd2\xb7)",
+	"\xd2\xb8" => "(?:\xd2\xb8|\xd2\xb9)",
+	"\xd2\xba" => "(?:\xd2\xba|\xd2\xbb)",
+	"\xd2\xbc" => "(?:\xd2\xbc|\xd2\xbd)",
+	"\xd2\xbe" => "(?:\xd2\xbe|\xd2\xbf)",
+	"\xd3\x81" => "(?:\xd3\x81|\xd3\x82)",
+	"\xd3\x83" => "(?:\xd3\x83|\xd3\x84)",
+	"\xd3\x87" => "(?:\xd3\x87|\xd3\x88)",
+	"\xd3\x8b" => "(?:\xd3\x8b|\xd3\x8c)",
+	"\xd3\x90" => "(?:\xd3\x90|\xd3\x91)",
+	"\xd3\x92" => "(?:\xd3\x92|\xd3\x93)",
+	"\xd3\x94" => "(?:\xd3\x94|\xd3\x95)",
+	"\xd3\x96" => "(?:\xd3\x96|\xd3\x97)",
+	"\xd3\x98" => "(?:\xd3\x98|\xd3\x99)",
+	"\xd3\x9a" => "(?:\xd3\x9a|\xd3\x9b)",
+	"\xd3\x9c" => "(?:\xd3\x9c|\xd3\x9d)",
+	"\xd3\x9e" => "(?:\xd3\x9e|\xd3\x9f)",
+	"\xd3\xa0" => "(?:\xd3\xa0|\xd3\xa1)",
+	"\xd3\xa2" => "(?:\xd3\xa2|\xd3\xa3)",
+	"\xd3\xa4" => "(?:\xd3\xa4|\xd3\xa5)",
+	"\xd3\xa6" => "(?:\xd3\xa6|\xd3\xa7)",
+	"\xd3\xa8" => "(?:\xd3\xa8|\xd3\xa9)",
+	"\xd3\xaa" => "(?:\xd3\xaa|\xd3\xab)",
+	"\xd3\xac" => "(?:\xd3\xac|\xd3\xad)",
+	"\xd3\xae" => "(?:\xd3\xae|\xd3\xaf)",
+	"\xd3\xb0" => "(?:\xd3\xb0|\xd3\xb1)",
+	"\xd3\xb2" => "(?:\xd3\xb2|\xd3\xb3)",
+	"\xd3\xb4" => "(?:\xd3\xb4|\xd3\xb5)",
+	"\xd3\xb8" => "(?:\xd3\xb8|\xd3\xb9)",
+	"\xd4\xb1" => "(?:\xd4\xb1|\xd5\xa1)",
+	"\xd4\xb2" => "(?:\xd4\xb2|\xd5\xa2)",
+	"\xd4\xb3" => "(?:\xd4\xb3|\xd5\xa3)",
+	"\xd4\xb4" => "(?:\xd4\xb4|\xd5\xa4)",
+	"\xd4\xb5" => "(?:\xd4\xb5|\xd5\xa5)",
+	"\xd4\xb6" => "(?:\xd4\xb6|\xd5\xa6)",
+	"\xd4\xb7" => "(?:\xd4\xb7|\xd5\xa7)",
+	"\xd4\xb8" => "(?:\xd4\xb8|\xd5\xa8)",
+	"\xd4\xb9" => "(?:\xd4\xb9|\xd5\xa9)",
+	"\xd4\xba" => "(?:\xd4\xba|\xd5\xaa)",
+	"\xd4\xbb" => "(?:\xd4\xbb|\xd5\xab)",
+	"\xd4\xbc" => "(?:\xd4\xbc|\xd5\xac)",
+	"\xd4\xbd" => "(?:\xd4\xbd|\xd5\xad)",
+	"\xd4\xbe" => "(?:\xd4\xbe|\xd5\xae)",
+	"\xd4\xbf" => "(?:\xd4\xbf|\xd5\xaf)",
+	"\xd5\x80" => "(?:\xd5\x80|\xd5\xb0)",
+	"\xd5\x81" => "(?:\xd5\x81|\xd5\xb1)",
+	"\xd5\x82" => "(?:\xd5\x82|\xd5\xb2)",
+	"\xd5\x83" => "(?:\xd5\x83|\xd5\xb3)",
+	"\xd5\x84" => "(?:\xd5\x84|\xd5\xb4)",
+	"\xd5\x85" => "(?:\xd5\x85|\xd5\xb5)",
+	"\xd5\x86" => "(?:\xd5\x86|\xd5\xb6)",
+	"\xd5\x87" => "(?:\xd5\x87|\xd5\xb7)",
+	"\xd5\x88" => "(?:\xd5\x88|\xd5\xb8)",
+	"\xd5\x89" => "(?:\xd5\x89|\xd5\xb9)",
+	"\xd5\x8a" => "(?:\xd5\x8a|\xd5\xba)",
+	"\xd5\x8b" => "(?:\xd5\x8b|\xd5\xbb)",
+	"\xd5\x8c" => "(?:\xd5\x8c|\xd5\xbc)",
+	"\xd5\x8d" => "(?:\xd5\x8d|\xd5\xbd)",
+	"\xd5\x8e" => "(?:\xd5\x8e|\xd5\xbe)",
+	"\xd5\x8f" => "(?:\xd5\x8f|\xd5\xbf)",
+	"\xd5\x90" => "(?:\xd5\x90|\xd6\x80)",
+	"\xd5\x91" => "(?:\xd5\x91|\xd6\x81)",
+	"\xd5\x92" => "(?:\xd5\x92|\xd6\x82)",
+	"\xd5\x93" => "(?:\xd5\x93|\xd6\x83)",
+	"\xd5\x94" => "(?:\xd5\x94|\xd6\x84)",
+	"\xd5\x95" => "(?:\xd5\x95|\xd6\x85)",
+	"\xd5\x96" => "(?:\xd5\x96|\xd6\x86)",
+	"\xe1\xb8\x80" => "(?:\xe1\xb8\x80|\xe1\xb8\x81)",
+	"\xe1\xb8\x82" => "(?:\xe1\xb8\x82|\xe1\xb8\x83)",
+	"\xe1\xb8\x84" => "(?:\xe1\xb8\x84|\xe1\xb8\x85)",
+	"\xe1\xb8\x86" => "(?:\xe1\xb8\x86|\xe1\xb8\x87)",
+	"\xe1\xb8\x88" => "(?:\xe1\xb8\x88|\xe1\xb8\x89)",
+	"\xe1\xb8\x8a" => "(?:\xe1\xb8\x8a|\xe1\xb8\x8b)",
+	"\xe1\xb8\x8c" => "(?:\xe1\xb8\x8c|\xe1\xb8\x8d)",
+	"\xe1\xb8\x8e" => "(?:\xe1\xb8\x8e|\xe1\xb8\x8f)",
+	"\xe1\xb8\x90" => "(?:\xe1\xb8\x90|\xe1\xb8\x91)",
+	"\xe1\xb8\x92" => "(?:\xe1\xb8\x92|\xe1\xb8\x93)",
+	"\xe1\xb8\x94" => "(?:\xe1\xb8\x94|\xe1\xb8\x95)",
+	"\xe1\xb8\x96" => "(?:\xe1\xb8\x96|\xe1\xb8\x97)",
+	"\xe1\xb8\x98" => "(?:\xe1\xb8\x98|\xe1\xb8\x99)",
+	"\xe1\xb8\x9a" => "(?:\xe1\xb8\x9a|\xe1\xb8\x9b)",
+	"\xe1\xb8\x9c" => "(?:\xe1\xb8\x9c|\xe1\xb8\x9d)",
+	"\xe1\xb8\x9e" => "(?:\xe1\xb8\x9e|\xe1\xb8\x9f)",
+	"\xe1\xb8\xa0" => "(?:\xe1\xb8\xa0|\xe1\xb8\xa1)",
+	"\xe1\xb8\xa2" => "(?:\xe1\xb8\xa2|\xe1\xb8\xa3)",
+	"\xe1\xb8\xa4" => "(?:\xe1\xb8\xa4|\xe1\xb8\xa5)",
+	"\xe1\xb8\xa6" => "(?:\xe1\xb8\xa6|\xe1\xb8\xa7)",
+	"\xe1\xb8\xa8" => "(?:\xe1\xb8\xa8|\xe1\xb8\xa9)",
+	"\xe1\xb8\xaa" => "(?:\xe1\xb8\xaa|\xe1\xb8\xab)",
+	"\xe1\xb8\xac" => "(?:\xe1\xb8\xac|\xe1\xb8\xad)",
+	"\xe1\xb8\xae" => "(?:\xe1\xb8\xae|\xe1\xb8\xaf)",
+	"\xe1\xb8\xb0" => "(?:\xe1\xb8\xb0|\xe1\xb8\xb1)",
+	"\xe1\xb8\xb2" => "(?:\xe1\xb8\xb2|\xe1\xb8\xb3)",
+	"\xe1\xb8\xb4" => "(?:\xe1\xb8\xb4|\xe1\xb8\xb5)",
+	"\xe1\xb8\xb6" => "(?:\xe1\xb8\xb6|\xe1\xb8\xb7)",
+	"\xe1\xb8\xb8" => "(?:\xe1\xb8\xb8|\xe1\xb8\xb9)",
+	"\xe1\xb8\xba" => "(?:\xe1\xb8\xba|\xe1\xb8\xbb)",
+	"\xe1\xb8\xbc" => "(?:\xe1\xb8\xbc|\xe1\xb8\xbd)",
+	"\xe1\xb8\xbe" => "(?:\xe1\xb8\xbe|\xe1\xb8\xbf)",
+	"\xe1\xb9\x80" => "(?:\xe1\xb9\x80|\xe1\xb9\x81)",
+	"\xe1\xb9\x82" => "(?:\xe1\xb9\x82|\xe1\xb9\x83)",
+	"\xe1\xb9\x84" => "(?:\xe1\xb9\x84|\xe1\xb9\x85)",
+	"\xe1\xb9\x86" => "(?:\xe1\xb9\x86|\xe1\xb9\x87)",
+	"\xe1\xb9\x88" => "(?:\xe1\xb9\x88|\xe1\xb9\x89)",
+	"\xe1\xb9\x8a" => "(?:\xe1\xb9\x8a|\xe1\xb9\x8b)",
+	"\xe1\xb9\x8c" => "(?:\xe1\xb9\x8c|\xe1\xb9\x8d)",
+	"\xe1\xb9\x8e" => "(?:\xe1\xb9\x8e|\xe1\xb9\x8f)",
+	"\xe1\xb9\x90" => "(?:\xe1\xb9\x90|\xe1\xb9\x91)",
+	"\xe1\xb9\x92" => "(?:\xe1\xb9\x92|\xe1\xb9\x93)",
+	"\xe1\xb9\x94" => "(?:\xe1\xb9\x94|\xe1\xb9\x95)",
+	"\xe1\xb9\x96" => "(?:\xe1\xb9\x96|\xe1\xb9\x97)",
+	"\xe1\xb9\x98" => "(?:\xe1\xb9\x98|\xe1\xb9\x99)",
+	"\xe1\xb9\x9a" => "(?:\xe1\xb9\x9a|\xe1\xb9\x9b)",
+	"\xe1\xb9\x9c" => "(?:\xe1\xb9\x9c|\xe1\xb9\x9d)",
+	"\xe1\xb9\x9e" => "(?:\xe1\xb9\x9e|\xe1\xb9\x9f)",
+	"\xe1\xb9\xa0" => "(?:\xe1\xb9\xa0|\xe1\xb9\xa1|\xe1\xba\x9b)",
+	"\xe1\xb9\xa2" => "(?:\xe1\xb9\xa2|\xe1\xb9\xa3)",
+	"\xe1\xb9\xa4" => "(?:\xe1\xb9\xa4|\xe1\xb9\xa5)",
+	"\xe1\xb9\xa6" => "(?:\xe1\xb9\xa6|\xe1\xb9\xa7)",
+	"\xe1\xb9\xa8" => "(?:\xe1\xb9\xa8|\xe1\xb9\xa9)",
+	"\xe1\xb9\xaa" => "(?:\xe1\xb9\xaa|\xe1\xb9\xab)",
+	"\xe1\xb9\xac" => "(?:\xe1\xb9\xac|\xe1\xb9\xad)",
+	"\xe1\xb9\xae" => "(?:\xe1\xb9\xae|\xe1\xb9\xaf)",
+	"\xe1\xb9\xb0" => "(?:\xe1\xb9\xb0|\xe1\xb9\xb1)",
+	"\xe1\xb9\xb2" => "(?:\xe1\xb9\xb2|\xe1\xb9\xb3)",
+	"\xe1\xb9\xb4" => "(?:\xe1\xb9\xb4|\xe1\xb9\xb5)",
+	"\xe1\xb9\xb6" => "(?:\xe1\xb9\xb6|\xe1\xb9\xb7)",
+	"\xe1\xb9\xb8" => "(?:\xe1\xb9\xb8|\xe1\xb9\xb9)",
+	"\xe1\xb9\xba" => "(?:\xe1\xb9\xba|\xe1\xb9\xbb)",
+	"\xe1\xb9\xbc" => "(?:\xe1\xb9\xbc|\xe1\xb9\xbd)",
+	"\xe1\xb9\xbe" => "(?:\xe1\xb9\xbe|\xe1\xb9\xbf)",
+	"\xe1\xba\x80" => "(?:\xe1\xba\x80|\xe1\xba\x81)",
+	"\xe1\xba\x82" => "(?:\xe1\xba\x82|\xe1\xba\x83)",
+	"\xe1\xba\x84" => "(?:\xe1\xba\x84|\xe1\xba\x85)",
+	"\xe1\xba\x86" => "(?:\xe1\xba\x86|\xe1\xba\x87)",
+	"\xe1\xba\x88" => "(?:\xe1\xba\x88|\xe1\xba\x89)",
+	"\xe1\xba\x8a" => "(?:\xe1\xba\x8a|\xe1\xba\x8b)",
+	"\xe1\xba\x8c" => "(?:\xe1\xba\x8c|\xe1\xba\x8d)",
+	"\xe1\xba\x8e" => "(?:\xe1\xba\x8e|\xe1\xba\x8f)",
+	"\xe1\xba\x90" => "(?:\xe1\xba\x90|\xe1\xba\x91)",
+	"\xe1\xba\x92" => "(?:\xe1\xba\x92|\xe1\xba\x93)",
+	"\xe1\xba\x94" => "(?:\xe1\xba\x94|\xe1\xba\x95)",
+	"\xe1\xba\xa0" => "(?:\xe1\xba\xa0|\xe1\xba\xa1)",
+	"\xe1\xba\xa2" => "(?:\xe1\xba\xa2|\xe1\xba\xa3)",
+	"\xe1\xba\xa4" => "(?:\xe1\xba\xa4|\xe1\xba\xa5)",
+	"\xe1\xba\xa6" => "(?:\xe1\xba\xa6|\xe1\xba\xa7)",
+	"\xe1\xba\xa8" => "(?:\xe1\xba\xa8|\xe1\xba\xa9)",
+	"\xe1\xba\xaa" => "(?:\xe1\xba\xaa|\xe1\xba\xab)",
+	"\xe1\xba\xac" => "(?:\xe1\xba\xac|\xe1\xba\xad)",
+	"\xe1\xba\xae" => "(?:\xe1\xba\xae|\xe1\xba\xaf)",
+	"\xe1\xba\xb0" => "(?:\xe1\xba\xb0|\xe1\xba\xb1)",
+	"\xe1\xba\xb2" => "(?:\xe1\xba\xb2|\xe1\xba\xb3)",
+	"\xe1\xba\xb4" => "(?:\xe1\xba\xb4|\xe1\xba\xb5)",
+	"\xe1\xba\xb6" => "(?:\xe1\xba\xb6|\xe1\xba\xb7)",
+	"\xe1\xba\xb8" => "(?:\xe1\xba\xb8|\xe1\xba\xb9)",
+	"\xe1\xba\xba" => "(?:\xe1\xba\xba|\xe1\xba\xbb)",
+	"\xe1\xba\xbc" => "(?:\xe1\xba\xbc|\xe1\xba\xbd)",
+	"\xe1\xba\xbe" => "(?:\xe1\xba\xbe|\xe1\xba\xbf)",
+	"\xe1\xbb\x80" => "(?:\xe1\xbb\x80|\xe1\xbb\x81)",
+	"\xe1\xbb\x82" => "(?:\xe1\xbb\x82|\xe1\xbb\x83)",
+	"\xe1\xbb\x84" => "(?:\xe1\xbb\x84|\xe1\xbb\x85)",
+	"\xe1\xbb\x86" => "(?:\xe1\xbb\x86|\xe1\xbb\x87)",
+	"\xe1\xbb\x88" => "(?:\xe1\xbb\x88|\xe1\xbb\x89)",
+	"\xe1\xbb\x8a" => "(?:\xe1\xbb\x8a|\xe1\xbb\x8b)",
+	"\xe1\xbb\x8c" => "(?:\xe1\xbb\x8c|\xe1\xbb\x8d)",
+	"\xe1\xbb\x8e" => "(?:\xe1\xbb\x8e|\xe1\xbb\x8f)",
+	"\xe1\xbb\x90" => "(?:\xe1\xbb\x90|\xe1\xbb\x91)",
+	"\xe1\xbb\x92" => "(?:\xe1\xbb\x92|\xe1\xbb\x93)",
+	"\xe1\xbb\x94" => "(?:\xe1\xbb\x94|\xe1\xbb\x95)",
+	"\xe1\xbb\x96" => "(?:\xe1\xbb\x96|\xe1\xbb\x97)",
+	"\xe1\xbb\x98" => "(?:\xe1\xbb\x98|\xe1\xbb\x99)",
+	"\xe1\xbb\x9a" => "(?:\xe1\xbb\x9a|\xe1\xbb\x9b)",
+	"\xe1\xbb\x9c" => "(?:\xe1\xbb\x9c|\xe1\xbb\x9d)",
+	"\xe1\xbb\x9e" => "(?:\xe1\xbb\x9e|\xe1\xbb\x9f)",
+	"\xe1\xbb\xa0" => "(?:\xe1\xbb\xa0|\xe1\xbb\xa1)",
+	"\xe1\xbb\xa2" => "(?:\xe1\xbb\xa2|\xe1\xbb\xa3)",
+	"\xe1\xbb\xa4" => "(?:\xe1\xbb\xa4|\xe1\xbb\xa5)",
+	"\xe1\xbb\xa6" => "(?:\xe1\xbb\xa6|\xe1\xbb\xa7)",
+	"\xe1\xbb\xa8" => "(?:\xe1\xbb\xa8|\xe1\xbb\xa9)",
+	"\xe1\xbb\xaa" => "(?:\xe1\xbb\xaa|\xe1\xbb\xab)",
+	"\xe1\xbb\xac" => "(?:\xe1\xbb\xac|\xe1\xbb\xad)",
+	"\xe1\xbb\xae" => "(?:\xe1\xbb\xae|\xe1\xbb\xaf)",
+	"\xe1\xbb\xb0" => "(?:\xe1\xbb\xb0|\xe1\xbb\xb1)",
+	"\xe1\xbb\xb2" => "(?:\xe1\xbb\xb2|\xe1\xbb\xb3)",
+	"\xe1\xbb\xb4" => "(?:\xe1\xbb\xb4|\xe1\xbb\xb5)",
+	"\xe1\xbb\xb6" => "(?:\xe1\xbb\xb6|\xe1\xbb\xb7)",
+	"\xe1\xbb\xb8" => "(?:\xe1\xbb\xb8|\xe1\xbb\xb9)",
+	"\xe1\xbc\x88" => "(?:\xe1\xbc\x88|\xe1\xbc\x80)",
+	"\xe1\xbc\x89" => "(?:\xe1\xbc\x89|\xe1\xbc\x81)",
+	"\xe1\xbc\x8a" => "(?:\xe1\xbc\x8a|\xe1\xbc\x82)",
+	"\xe1\xbc\x8b" => "(?:\xe1\xbc\x8b|\xe1\xbc\x83)",
+	"\xe1\xbc\x8c" => "(?:\xe1\xbc\x8c|\xe1\xbc\x84)",
+	"\xe1\xbc\x8d" => "(?:\xe1\xbc\x8d|\xe1\xbc\x85)",
+	"\xe1\xbc\x8e" => "(?:\xe1\xbc\x8e|\xe1\xbc\x86)",
+	"\xe1\xbc\x8f" => "(?:\xe1\xbc\x8f|\xe1\xbc\x87)",
+	"\xe1\xbc\x98" => "(?:\xe1\xbc\x98|\xe1\xbc\x90)",
+	"\xe1\xbc\x99" => "(?:\xe1\xbc\x99|\xe1\xbc\x91)",
+	"\xe1\xbc\x9a" => "(?:\xe1\xbc\x9a|\xe1\xbc\x92)",
+	"\xe1\xbc\x9b" => "(?:\xe1\xbc\x9b|\xe1\xbc\x93)",
+	"\xe1\xbc\x9c" => "(?:\xe1\xbc\x9c|\xe1\xbc\x94)",
+	"\xe1\xbc\x9d" => "(?:\xe1\xbc\x9d|\xe1\xbc\x95)",
+	"\xe1\xbc\xa8" => "(?:\xe1\xbc\xa8|\xe1\xbc\xa0)",
+	"\xe1\xbc\xa9" => "(?:\xe1\xbc\xa9|\xe1\xbc\xa1)",
+	"\xe1\xbc\xaa" => "(?:\xe1\xbc\xaa|\xe1\xbc\xa2)",
+	"\xe1\xbc\xab" => "(?:\xe1\xbc\xab|\xe1\xbc\xa3)",
+	"\xe1\xbc\xac" => "(?:\xe1\xbc\xac|\xe1\xbc\xa4)",
+	"\xe1\xbc\xad" => "(?:\xe1\xbc\xad|\xe1\xbc\xa5)",
+	"\xe1\xbc\xae" => "(?:\xe1\xbc\xae|\xe1\xbc\xa6)",
+	"\xe1\xbc\xaf" => "(?:\xe1\xbc\xaf|\xe1\xbc\xa7)",
+	"\xe1\xbc\xb8" => "(?:\xe1\xbc\xb8|\xe1\xbc\xb0)",
+	"\xe1\xbc\xb9" => "(?:\xe1\xbc\xb9|\xe1\xbc\xb1)",
+	"\xe1\xbc\xba" => "(?:\xe1\xbc\xba|\xe1\xbc\xb2)",
+	"\xe1\xbc\xbb" => "(?:\xe1\xbc\xbb|\xe1\xbc\xb3)",
+	"\xe1\xbc\xbc" => "(?:\xe1\xbc\xbc|\xe1\xbc\xb4)",
+	"\xe1\xbc\xbd" => "(?:\xe1\xbc\xbd|\xe1\xbc\xb5)",
+	"\xe1\xbc\xbe" => "(?:\xe1\xbc\xbe|\xe1\xbc\xb6)",
+	"\xe1\xbc\xbf" => "(?:\xe1\xbc\xbf|\xe1\xbc\xb7)",
+	"\xe1\xbd\x88" => "(?:\xe1\xbd\x88|\xe1\xbd\x80)",
+	"\xe1\xbd\x89" => "(?:\xe1\xbd\x89|\xe1\xbd\x81)",
+	"\xe1\xbd\x8a" => "(?:\xe1\xbd\x8a|\xe1\xbd\x82)",
+	"\xe1\xbd\x8b" => "(?:\xe1\xbd\x8b|\xe1\xbd\x83)",
+	"\xe1\xbd\x8c" => "(?:\xe1\xbd\x8c|\xe1\xbd\x84)",
+	"\xe1\xbd\x8d" => "(?:\xe1\xbd\x8d|\xe1\xbd\x85)",
+	"\xe1\xbd\x99" => "(?:\xe1\xbd\x99|\xe1\xbd\x91)",
+	"\xe1\xbd\x9b" => "(?:\xe1\xbd\x9b|\xe1\xbd\x93)",
+	"\xe1\xbd\x9d" => "(?:\xe1\xbd\x9d|\xe1\xbd\x95)",
+	"\xe1\xbd\x9f" => "(?:\xe1\xbd\x9f|\xe1\xbd\x97)",
+	"\xe1\xbd\xa8" => "(?:\xe1\xbd\xa8|\xe1\xbd\xa0)",
+	"\xe1\xbd\xa9" => "(?:\xe1\xbd\xa9|\xe1\xbd\xa1)",
+	"\xe1\xbd\xaa" => "(?:\xe1\xbd\xaa|\xe1\xbd\xa2)",
+	"\xe1\xbd\xab" => "(?:\xe1\xbd\xab|\xe1\xbd\xa3)",
+	"\xe1\xbd\xac" => "(?:\xe1\xbd\xac|\xe1\xbd\xa4)",
+	"\xe1\xbd\xad" => "(?:\xe1\xbd\xad|\xe1\xbd\xa5)",
+	"\xe1\xbd\xae" => "(?:\xe1\xbd\xae|\xe1\xbd\xa6)",
+	"\xe1\xbd\xaf" => "(?:\xe1\xbd\xaf|\xe1\xbd\xa7)",
+	"\xe1\xbe\x88" => "(?:\xe1\xbe\x88|\xe1\xbe\x80)",
+	"\xe1\xbe\x89" => "(?:\xe1\xbe\x89|\xe1\xbe\x81)",
+	"\xe1\xbe\x8a" => "(?:\xe1\xbe\x8a|\xe1\xbe\x82)",
+	"\xe1\xbe\x8b" => "(?:\xe1\xbe\x8b|\xe1\xbe\x83)",
+	"\xe1\xbe\x8c" => "(?:\xe1\xbe\x8c|\xe1\xbe\x84)",
+	"\xe1\xbe\x8d" => "(?:\xe1\xbe\x8d|\xe1\xbe\x85)",
+	"\xe1\xbe\x8e" => "(?:\xe1\xbe\x8e|\xe1\xbe\x86)",
+	"\xe1\xbe\x8f" => "(?:\xe1\xbe\x8f|\xe1\xbe\x87)",
+	"\xe1\xbe\x98" => "(?:\xe1\xbe\x98|\xe1\xbe\x90)",
+	"\xe1\xbe\x99" => "(?:\xe1\xbe\x99|\xe1\xbe\x91)",
+	"\xe1\xbe\x9a" => "(?:\xe1\xbe\x9a|\xe1\xbe\x92)",
+	"\xe1\xbe\x9b" => "(?:\xe1\xbe\x9b|\xe1\xbe\x93)",
+	"\xe1\xbe\x9c" => "(?:\xe1\xbe\x9c|\xe1\xbe\x94)",
+	"\xe1\xbe\x9d" => "(?:\xe1\xbe\x9d|\xe1\xbe\x95)",
+	"\xe1\xbe\x9e" => "(?:\xe1\xbe\x9e|\xe1\xbe\x96)",
+	"\xe1\xbe\x9f" => "(?:\xe1\xbe\x9f|\xe1\xbe\x97)",
+	"\xe1\xbe\xa8" => "(?:\xe1\xbe\xa8|\xe1\xbe\xa0)",
+	"\xe1\xbe\xa9" => "(?:\xe1\xbe\xa9|\xe1\xbe\xa1)",
+	"\xe1\xbe\xaa" => "(?:\xe1\xbe\xaa|\xe1\xbe\xa2)",
+	"\xe1\xbe\xab" => "(?:\xe1\xbe\xab|\xe1\xbe\xa3)",
+	"\xe1\xbe\xac" => "(?:\xe1\xbe\xac|\xe1\xbe\xa4)",
+	"\xe1\xbe\xad" => "(?:\xe1\xbe\xad|\xe1\xbe\xa5)",
+	"\xe1\xbe\xae" => "(?:\xe1\xbe\xae|\xe1\xbe\xa6)",
+	"\xe1\xbe\xaf" => "(?:\xe1\xbe\xaf|\xe1\xbe\xa7)",
+	"\xe1\xbe\xb8" => "(?:\xe1\xbe\xb8|\xe1\xbe\xb0)",
+	"\xe1\xbe\xb9" => "(?:\xe1\xbe\xb9|\xe1\xbe\xb1)",
+	"\xe1\xbe\xba" => "(?:\xe1\xbe\xba|\xe1\xbd\xb0)",
+	"\xe1\xbe\xbb" => "(?:\xe1\xbe\xbb|\xe1\xbd\xb1)",
+	"\xe1\xbe\xbc" => "(?:\xe1\xbe\xbc|\xe1\xbe\xb3)",
+	"\xe1\xbf\x88" => "(?:\xe1\xbf\x88|\xe1\xbd\xb2)",
+	"\xe1\xbf\x89" => "(?:\xe1\xbf\x89|\xe1\xbd\xb3)",
+	"\xe1\xbf\x8a" => "(?:\xe1\xbf\x8a|\xe1\xbd\xb4)",
+	"\xe1\xbf\x8b" => "(?:\xe1\xbf\x8b|\xe1\xbd\xb5)",
+	"\xe1\xbf\x8c" => "(?:\xe1\xbf\x8c|\xe1\xbf\x83)",
+	"\xe1\xbf\x98" => "(?:\xe1\xbf\x98|\xe1\xbf\x90)",
+	"\xe1\xbf\x99" => "(?:\xe1\xbf\x99|\xe1\xbf\x91)",
+	"\xe1\xbf\x9a" => "(?:\xe1\xbf\x9a|\xe1\xbd\xb6)",
+	"\xe1\xbf\x9b" => "(?:\xe1\xbf\x9b|\xe1\xbd\xb7)",
+	"\xe1\xbf\xa8" => "(?:\xe1\xbf\xa8|\xe1\xbf\xa0)",
+	"\xe1\xbf\xa9" => "(?:\xe1\xbf\xa9|\xe1\xbf\xa1)",
+	"\xe1\xbf\xaa" => "(?:\xe1\xbf\xaa|\xe1\xbd\xba)",
+	"\xe1\xbf\xab" => "(?:\xe1\xbf\xab|\xe1\xbd\xbb)",
+	"\xe1\xbf\xac" => "(?:\xe1\xbf\xac|\xe1\xbf\xa5)",
+	"\xe1\xbf\xb8" => "(?:\xe1\xbf\xb8|\xe1\xbd\xb8)",
+	"\xe1\xbf\xb9" => "(?:\xe1\xbf\xb9|\xe1\xbd\xb9)",
+	"\xe1\xbf\xba" => "(?:\xe1\xbf\xba|\xe1\xbd\xbc)",
+	"\xe1\xbf\xbb" => "(?:\xe1\xbf\xbb|\xe1\xbd\xbd)",
+	"\xe1\xbf\xbc" => "(?:\xe1\xbf\xbc|\xe1\xbf\xb3)",
+	"\xe2\x84\xa6" => "(?:\xe2\x84\xa6|\xcf\x89)",
+	"\xe2\x84\xaa" => "(?:\xe2\x84\xaa|k)",
+	"\xe2\x84\xab" => "(?:\xe2\x84\xab|\xc3\xa5)",
+	"\xe2\x85\xa0" => "(?:\xe2\x85\xa0|\xe2\x85\xb0)",
+	"\xe2\x85\xa1" => "(?:\xe2\x85\xa1|\xe2\x85\xb1)",
+	"\xe2\x85\xa2" => "(?:\xe2\x85\xa2|\xe2\x85\xb2)",
+	"\xe2\x85\xa3" => "(?:\xe2\x85\xa3|\xe2\x85\xb3)",
+	"\xe2\x85\xa4" => "(?:\xe2\x85\xa4|\xe2\x85\xb4)",
+	"\xe2\x85\xa5" => "(?:\xe2\x85\xa5|\xe2\x85\xb5)",
+	"\xe2\x85\xa6" => "(?:\xe2\x85\xa6|\xe2\x85\xb6)",
+	"\xe2\x85\xa7" => "(?:\xe2\x85\xa7|\xe2\x85\xb7)",
+	"\xe2\x85\xa8" => "(?:\xe2\x85\xa8|\xe2\x85\xb8)",
+	"\xe2\x85\xa9" => "(?:\xe2\x85\xa9|\xe2\x85\xb9)",
+	"\xe2\x85\xaa" => "(?:\xe2\x85\xaa|\xe2\x85\xba)",
+	"\xe2\x85\xab" => "(?:\xe2\x85\xab|\xe2\x85\xbb)",
+	"\xe2\x85\xac" => "(?:\xe2\x85\xac|\xe2\x85\xbc)",
+	"\xe2\x85\xad" => "(?:\xe2\x85\xad|\xe2\x85\xbd)",
+	"\xe2\x85\xae" => "(?:\xe2\x85\xae|\xe2\x85\xbe)",
+	"\xe2\x85\xaf" => "(?:\xe2\x85\xaf|\xe2\x85\xbf)",
+	"\xe2\x92\xb6" => "(?:\xe2\x92\xb6|\xe2\x93\x90)",
+	"\xe2\x92\xb7" => "(?:\xe2\x92\xb7|\xe2\x93\x91)",
+	"\xe2\x92\xb8" => "(?:\xe2\x92\xb8|\xe2\x93\x92)",
+	"\xe2\x92\xb9" => "(?:\xe2\x92\xb9|\xe2\x93\x93)",
+	"\xe2\x92\xba" => "(?:\xe2\x92\xba|\xe2\x93\x94)",
+	"\xe2\x92\xbb" => "(?:\xe2\x92\xbb|\xe2\x93\x95)",
+	"\xe2\x92\xbc" => "(?:\xe2\x92\xbc|\xe2\x93\x96)",
+	"\xe2\x92\xbd" => "(?:\xe2\x92\xbd|\xe2\x93\x97)",
+	"\xe2\x92\xbe" => "(?:\xe2\x92\xbe|\xe2\x93\x98)",
+	"\xe2\x92\xbf" => "(?:\xe2\x92\xbf|\xe2\x93\x99)",
+	"\xe2\x93\x80" => "(?:\xe2\x93\x80|\xe2\x93\x9a)",
+	"\xe2\x93\x81" => "(?:\xe2\x93\x81|\xe2\x93\x9b)",
+	"\xe2\x93\x82" => "(?:\xe2\x93\x82|\xe2\x93\x9c)",
+	"\xe2\x93\x83" => "(?:\xe2\x93\x83|\xe2\x93\x9d)",
+	"\xe2\x93\x84" => "(?:\xe2\x93\x84|\xe2\x93\x9e)",
+	"\xe2\x93\x85" => "(?:\xe2\x93\x85|\xe2\x93\x9f)",
+	"\xe2\x93\x86" => "(?:\xe2\x93\x86|\xe2\x93\xa0)",
+	"\xe2\x93\x87" => "(?:\xe2\x93\x87|\xe2\x93\xa1)",
+	"\xe2\x93\x88" => "(?:\xe2\x93\x88|\xe2\x93\xa2)",
+	"\xe2\x93\x89" => "(?:\xe2\x93\x89|\xe2\x93\xa3)",
+	"\xe2\x93\x8a" => "(?:\xe2\x93\x8a|\xe2\x93\xa4)",
+	"\xe2\x93\x8b" => "(?:\xe2\x93\x8b|\xe2\x93\xa5)",
+	"\xe2\x93\x8c" => "(?:\xe2\x93\x8c|\xe2\x93\xa6)",
+	"\xe2\x93\x8d" => "(?:\xe2\x93\x8d|\xe2\x93\xa7)",
+	"\xe2\x93\x8e" => "(?:\xe2\x93\x8e|\xe2\x93\xa8)",
+	"\xe2\x93\x8f" => "(?:\xe2\x93\x8f|\xe2\x93\xa9)",
+	"\xef\xbc\xa1" => "(?:\xef\xbc\xa1|\xef\xbd\x81)",
+	"\xef\xbc\xa2" => "(?:\xef\xbc\xa2|\xef\xbd\x82)",
+	"\xef\xbc\xa3" => "(?:\xef\xbc\xa3|\xef\xbd\x83)",
+	"\xef\xbc\xa4" => "(?:\xef\xbc\xa4|\xef\xbd\x84)",
+	"\xef\xbc\xa5" => "(?:\xef\xbc\xa5|\xef\xbd\x85)",
+	"\xef\xbc\xa6" => "(?:\xef\xbc\xa6|\xef\xbd\x86)",
+	"\xef\xbc\xa7" => "(?:\xef\xbc\xa7|\xef\xbd\x87)",
+	"\xef\xbc\xa8" => "(?:\xef\xbc\xa8|\xef\xbd\x88)",
+	"\xef\xbc\xa9" => "(?:\xef\xbc\xa9|\xef\xbd\x89)",
+	"\xef\xbc\xaa" => "(?:\xef\xbc\xaa|\xef\xbd\x8a)",
+	"\xef\xbc\xab" => "(?:\xef\xbc\xab|\xef\xbd\x8b)",
+	"\xef\xbc\xac" => "(?:\xef\xbc\xac|\xef\xbd\x8c)",
+	"\xef\xbc\xad" => "(?:\xef\xbc\xad|\xef\xbd\x8d)",
+	"\xef\xbc\xae" => "(?:\xef\xbc\xae|\xef\xbd\x8e)",
+	"\xef\xbc\xaf" => "(?:\xef\xbc\xaf|\xef\xbd\x8f)",
+	"\xef\xbc\xb0" => "(?:\xef\xbc\xb0|\xef\xbd\x90)",
+	"\xef\xbc\xb1" => "(?:\xef\xbc\xb1|\xef\xbd\x91)",
+	"\xef\xbc\xb2" => "(?:\xef\xbc\xb2|\xef\xbd\x92)",
+	"\xef\xbc\xb3" => "(?:\xef\xbc\xb3|\xef\xbd\x93)",
+	"\xef\xbc\xb4" => "(?:\xef\xbc\xb4|\xef\xbd\x94)",
+	"\xef\xbc\xb5" => "(?:\xef\xbc\xb5|\xef\xbd\x95)",
+	"\xef\xbc\xb6" => "(?:\xef\xbc\xb6|\xef\xbd\x96)",
+	"\xef\xbc\xb7" => "(?:\xef\xbc\xb7|\xef\xbd\x97)",
+	"\xef\xbc\xb8" => "(?:\xef\xbc\xb8|\xef\xbd\x98)",
+	"\xef\xbc\xb9" => "(?:\xef\xbc\xb9|\xef\xbd\x99)",
+	"\xef\xbc\xba" => "(?:\xef\xbc\xba|\xef\xbd\x9a)",
+	"\xf0\x90\x90\x80" => "(?:\xf0\x90\x90\x80|\xf0\x90\x90\xa8)",
+	"\xf0\x90\x90\x81" => "(?:\xf0\x90\x90\x81|\xf0\x90\x90\xa9)",
+	"\xf0\x90\x90\x82" => "(?:\xf0\x90\x90\x82|\xf0\x90\x90\xaa)",
+	"\xf0\x90\x90\x83" => "(?:\xf0\x90\x90\x83|\xf0\x90\x90\xab)",
+	"\xf0\x90\x90\x84" => "(?:\xf0\x90\x90\x84|\xf0\x90\x90\xac)",
+	"\xf0\x90\x90\x85" => "(?:\xf0\x90\x90\x85|\xf0\x90\x90\xad)",
+	"\xf0\x90\x90\x86" => "(?:\xf0\x90\x90\x86|\xf0\x90\x90\xae)",
+	"\xf0\x90\x90\x87" => "(?:\xf0\x90\x90\x87|\xf0\x90\x90\xaf)",
+	"\xf0\x90\x90\x88" => "(?:\xf0\x90\x90\x88|\xf0\x90\x90\xb0)",
+	"\xf0\x90\x90\x89" => "(?:\xf0\x90\x90\x89|\xf0\x90\x90\xb1)",
+	"\xf0\x90\x90\x8a" => "(?:\xf0\x90\x90\x8a|\xf0\x90\x90\xb2)",
+	"\xf0\x90\x90\x8b" => "(?:\xf0\x90\x90\x8b|\xf0\x90\x90\xb3)",
+	"\xf0\x90\x90\x8c" => "(?:\xf0\x90\x90\x8c|\xf0\x90\x90\xb4)",
+	"\xf0\x90\x90\x8d" => "(?:\xf0\x90\x90\x8d|\xf0\x90\x90\xb5)",
+	"\xf0\x90\x90\x8e" => "(?:\xf0\x90\x90\x8e|\xf0\x90\x90\xb6)",
+	"\xf0\x90\x90\x8f" => "(?:\xf0\x90\x90\x8f|\xf0\x90\x90\xb7)",
+	"\xf0\x90\x90\x90" => "(?:\xf0\x90\x90\x90|\xf0\x90\x90\xb8)",
+	"\xf0\x90\x90\x91" => "(?:\xf0\x90\x90\x91|\xf0\x90\x90\xb9)",
+	"\xf0\x90\x90\x92" => "(?:\xf0\x90\x90\x92|\xf0\x90\x90\xba)",
+	"\xf0\x90\x90\x93" => "(?:\xf0\x90\x90\x93|\xf0\x90\x90\xbb)",
+	"\xf0\x90\x90\x94" => "(?:\xf0\x90\x90\x94|\xf0\x90\x90\xbc)",
+	"\xf0\x90\x90\x95" => "(?:\xf0\x90\x90\x95|\xf0\x90\x90\xbd)",
+	"\xf0\x90\x90\x96" => "(?:\xf0\x90\x90\x96|\xf0\x90\x90\xbe)",
+	"\xf0\x90\x90\x97" => "(?:\xf0\x90\x90\x97|\xf0\x90\x90\xbf)",
+	"\xf0\x90\x90\x98" => "(?:\xf0\x90\x90\x98|\xf0\x90\x91\x80)",
+	"\xf0\x90\x90\x99" => "(?:\xf0\x90\x90\x99|\xf0\x90\x91\x81)",
+	"\xf0\x90\x90\x9a" => "(?:\xf0\x90\x90\x9a|\xf0\x90\x91\x82)",
+	"\xf0\x90\x90\x9b" => "(?:\xf0\x90\x90\x9b|\xf0\x90\x91\x83)",
+	"\xf0\x90\x90\x9c" => "(?:\xf0\x90\x90\x9c|\xf0\x90\x91\x84)",
+	"\xf0\x90\x90\x9d" => "(?:\xf0\x90\x90\x9d|\xf0\x90\x91\x85)",
+	"\xf0\x90\x90\x9e" => "(?:\xf0\x90\x90\x9e|\xf0\x90\x91\x86)",
+	"\xf0\x90\x90\x9f" => "(?:\xf0\x90\x90\x9f|\xf0\x90\x91\x87)",
+	"\xf0\x90\x90\xa0" => "(?:\xf0\x90\x90\xa0|\xf0\x90\x91\x88)",
+	"\xf0\x90\x90\xa1" => "(?:\xf0\x90\x90\xa1|\xf0\x90\x91\x89)",
+	"\xf0\x90\x90\xa2" => "(?:\xf0\x90\x90\xa2|\xf0\x90\x91\x8a)",
+	"\xf0\x90\x90\xa3" => "(?:\xf0\x90\x90\xa3|\xf0\x90\x91\x8b)",
+	"\xf0\x90\x90\xa4" => "(?:\xf0\x90\x90\xa4|\xf0\x90\x91\x8c)",
+	"\xf0\x90\x90\xa5" => "(?:\xf0\x90\x90\xa5|\xf0\x90\x91\x8d)"
+	//"i" => "(?:i|\xc4\xb0|I)",
+	//"I" => "(?:I|\xc4\xb1|i)",
+	//"k" => "(?:k|\xe2\x84\xaa|K)",
+	//"S" => "(?:S|\xc5\xbf|s)"
 );
 
 ?>
\ No newline at end of file
Index: trunk/wb/search/search_modext.php
===================================================================
--- trunk/wb/search/search_modext.php	(revision 760)
+++ trunk/wb/search/search_modext.php	(revision 761)
@@ -30,7 +30,7 @@
 		$str = implode(" ", $search_url_array);
 		$link = "?searchresult=1&amp;sstring=".urlencode($str);
 	} else {
-		$str = strtr($search_url_array[0], " ", "_");
+		$str = str_replace(' ', '_', $search_url_array[0]);
 		$link = "?searchresult=2&amp;sstring=".urlencode($str);
 	}
 	return $link;
@@ -77,7 +77,7 @@
 // checks if _any_ of the searchwords matches
 function is_any_matched($text, $search_words) {
 	$any_matched = false;
-	$word = "(".implode("|", $search_words).")";
+	$word = '('.implode('|', $search_words).')';
 	if(preg_match('/'.$word.'/iu', $text)) {
 		$any_matched = true;
 	}
@@ -88,20 +88,38 @@
 function get_excerpts($text, $search_words, $max_excerpt_num) {
 	$match_array = array();
 	$excerpt_array = array();
-	$word = "(".implode("|", $search_words).")";
-	
-	$text = strtr($text, array('&lt;'=>'<', '&gt;'=>'>', '&amp;'=>'&', '&quot;'=>'"', '&#39;'=>'\'', '&nbsp;'=>"\xC2\xA0"));
-	$word = strtr($word, array('&lt;'=>'<', '&gt;'=>'>', '&amp;'=>'&', '&quot;'=>'"', '&#39;'=>'\'', '&nbsp;'=>"\xC2\xA0"));
+	$word = '('.implode('|', $search_words).')';
 	// Build the regex-string
-	//...INVERTED EXCLAMATION MARK - INVERTED QUESTION MARK - DOUBLE EXCLAMATION MARK - INTERROBANG - EXCLAMATION QUESTION MARK - QUESTION EXCLAMATION MARK - DOUBLE QUESTION MARK - HALFWIDTH IDEOGRAPHIC FULL STOP - IDEOGRAPHIC FULL STOP - IDEOGRAPHIC COMMA
+	// start-sign: .!?; + INVERTED EXCLAMATION MARK - INVERTED QUESTION MARK - DOUBLE EXCLAMATION MARK - INTERROBANG - EXCLAMATION QUESTION MARK - QUESTION EXCLAMATION MARK - DOUBLE QUESTION MARK - HALFWIDTH IDEOGRAPHIC FULL STOP - IDEOGRAPHIC FULL STOP - IDEOGRAPHIC COMMA
 	$str1=".!?;"."\xC2\xA1"."\xC2\xBF"."\xE2\x80\xBC"."\xE2\x80\xBD"."\xE2\x81\x89"."\xE2\x81\x88"."\xE2\x81\x87"."\xEF\xBD\xA1"."\xE3\x80\x82"."\xE3\x80\x81";
-	// ...DOUBLE EXCLAMATION MARK - INTERROBANG - EXCLAMATION QUESTION MARK - QUESTION EXCLAMATION MARK - DOUBLE QUESTION MARK - HALFWIDTH IDEOGRAPHIC FULL STOP - IDEOGRAPHIC FULL STOP - IDEOGRAPHIC COMMA
+	// stop-sign: .!?; + DOUBLE EXCLAMATION MARK - INTERROBANG - EXCLAMATION QUESTION MARK - QUESTION EXCLAMATION MARK - DOUBLE QUESTION MARK - HALFWIDTH IDEOGRAPHIC FULL STOP - IDEOGRAPHIC FULL STOP - IDEOGRAPHIC COMMA
 	$str2=".!?;"."\xE2\x80\xBC"."\xE2\x80\xBD"."\xE2\x81\x89"."\xE2\x81\x88"."\xE2\x81\x87"."\xEF\xBD\xA1"."\xE3\x80\x82"."\xE3\x80\x81";
-	// "{0,200}?'.$word.'" : the '?' (ungreedy) is for performance-tuning; try a step-by-step-trace to see what i mean. 
-	if(preg_match_all('/(?:^|\b|['.$str1.'])([^'.$str1.']{0,200}?'.$word.'[^'.$str2.']{0,200}(?:['.$str2.']|\b|$))/isu', $text, $match_array)) {
-		foreach($match_array[1] AS $string) {
-			$excerpt_array[] = trim($string);
+	$regex='/(?:^|\b|['.$str1.'])([^'.$str1.']{0,200}?'.$word.'[^'.$str2.']{0,200}(?:['.$str2.']|\b|$))/Sisu';
+	if(version_compare(PHP_VERSION, '4.3.3', '>=') == 1) {
+		// jump from match to match, get excerpt, stop if $max_excerpt_num is reached
+		$last_end = 0; $offset = 0;
+		while(preg_match('/'.$word.'/Sisu', $text, $match_array, PREG_OFFSET_CAPTURE, $last_end)) {
+			$offset = ($match_array[0][1]-206 < $last_end)?$last_end:$match_array[0][1]-206;
+			if(preg_match($regex, $text, $matches, PREG_OFFSET_CAPTURE, $offset)) {
+				$last_end = $matches[1][1]+strlen($matches[1][0])-1;
+				if(!preg_match('/\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\./S', $matches[1][0])) // skip excerpts with email-addresses
+					$excerpt_array[] = trim($matches[1][0]);
+				if(count($excerpt_array)>=$max_excerpt_num) {
+					$excerpt_array = array_unique($excerpt_array);
+					if(count($excerpt_array) >= $max_excerpt_num)
+						break;
+				}
+			} else { // problem - preg_match failed: can't find a start- or stop-sign
+				$last_end += 201; // jump forward and try again
+			}
 		}
+	} else { // compatile, but may be very slow with many large pages
+		if(preg_match_all($regex, $text, $match_array)) {
+			foreach($match_array[1] AS $string) {
+				if(!preg_match('/\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\./S', $string)) // skip excerpts with email-addresses
+					$excerpt_array[] = trim($string);
+			}
+		}
 	}
 	return $excerpt_array;
 }
@@ -121,7 +139,6 @@
 	}
 	// prepare search-string
 	$string = "(".implode("|", $search_words).")";
-	$string = strtr($string, array('&lt;'=>'<', '&gt;'=>'>', '&amp;'=>'&', '&quot;'=>'"', '&#39;'=>'\'', '&nbsp;'=>"\xC2\xA0"));
 	// we want markup on search-results page,
 	// but we need some 'magic' to prevent <br />, <b>... from being highlighted
 	$excerpt = '';
@@ -128,9 +145,9 @@
 	foreach($excerpt_array as $str) {
 		$excerpt .= '#,,#'.preg_replace("/($string)/iu","#,,,,#$1#,,,,,#",$str).'#,,,#';
 	}
-	$excerpt = strtr($excerpt, array('<'=>'&lt;', '>'=>'&gt;', '&'=>'&amp;', '"'=>'&quot;', '\''=>'&#39;'));
-	$excerpt = strtr($excerpt, array('#,,,,#'=>$EXCERPT_MARKUP_START, '#,,,,,#'=>$EXCERPT_MARKUP_END));
-	$excerpt = strtr($excerpt, array('#,,#'=>$EXCERPT_BEFORE, '#,,,#'=>$EXCERPT_AFTER));
+	$excerpt = str_replace(array('&','<','>','"','\'',"\xC2\xA0"), array('&amp;','&lt;','&gt;','&quot;','&#39;','&nbsp;'), $excerpt);
+	$excerpt = str_replace(array('#,,,,#','#,,,,,#'), array($EXCERPT_MARKUP_START,$EXCERPT_MARKUP_END), $excerpt);
+	$excerpt = str_replace(array('#,,#','#,,,#'), array($EXCERPT_BEFORE,$EXCERPT_AFTER), $excerpt);
 	// prepare to write out
 	if(DEFAULT_CHARSET != 'utf-8') {
 		$excerpt = umlauts_to_entities($excerpt, 'UTF-8');
@@ -138,19 +155,19 @@
 	return $excerpt;
 }
 
-// work out what the link-target should be
+// work out what the link-anchor should be
 function make_url_target($page_link_target, $text, $search_words) {
 	// 1. e.g. $page_link_target=="&monthno=5&year=2007" - module-dependent target. Do nothing.
 	// 2. $page_link_target=="#!wb_section_..." - the user wants the section-target, so do nothing.
 	// 3. $page_link_target=="#wb_section_..." - try to find a better target, use the section-target as fallback.
 	// 4. $page_link_target=="" - do nothing
-	if(version_compare(PHP_VERSION, '4.3.0', ">=") && substr($page_link_target,0,12)=='#wb_section_') {
+	if(version_compare(PHP_VERSION, '4.3.3', ">=") && substr($page_link_target,0,12)=='#wb_section_') {
 		$word = '('.implode('|', $search_words).')';
 		preg_match('/'.$word.'/iu', $text, $match, PREG_OFFSET_CAPTURE);
 		if($match && is_array($match[0])) {
-			$x=$match[0][1];
+			$x=$match[0][1]; // position of first match
 			// is there an anchor nearby?
-			if (preg_match_all('/<(?:[^>]+id|\s*a[^>]+name)\s*=\s*"(.*)"/iuU', $text, $match, PREG_OFFSET_CAPTURE)) {
+			if(preg_match_all('/<(?:[^>]+id|\s*a[^>]+name)\s*=\s*"(.*)"/SiU', substr($text,0,$x), $match, PREG_OFFSET_CAPTURE)) {
 				$anchor='';
 				foreach($match[1] AS $array) {
 					if($array[1] > $x) {
@@ -210,38 +227,36 @@
 	if(!isset($mod_max_excerpt_num))    $mod_max_excerpt_num = $func_default_max_excerpt;
 	if(!isset($mod_pic_link))           $mod_pic_link = "";
 	if(!isset($mod_no_highlight))       $mod_no_highlight = false;
+	if(!isset($func_enable_flush))      $func_enable_flush = false; // set this in db: wb_search.cfg_enable_flush [READ THE DOC BEFORE]
 	if($mod_text == "") // nothing to do
 		{ return false; }
 	if($mod_no_highlight) // no highlighting
 		{ $mod_page_link_target = "&amp;nohighlight=1".$mod_page_link_target; }
 
-	// prepare the text (part 1): remove lf and cr, convert \" to ", remove comments, style, scripting and unnecessary whitespace, convert to utf8
-	$mod_text = strtr($mod_text, array("\x0D\x0A" => ' ', "\x0D" => ' ', "\x0A" => ' ', '\"' => '"'));
-	$mod_text = preg_replace('/(<!--.*?-->|<style.*?<\/style>|<script.*?<\/script>|\s+)/i', ' ', $mod_text);
-	// remove email-addresses
-	$mod_text = preg_replace('/\b[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}\b/', ' ', $mod_text);
+	// clean the text:
+	$mod_text = str_replace(array("\x0D","\x0A"), ' ', $mod_text);
+	$mod_text = preg_replace('#<(!--.*--|style.*</style|script.*</script)>#SiU', ' ', $mod_text);
+	$mod_text = preg_replace('#<(br( /)?|dt|/dd|/?(h[1-6]|tr|table|p|li|ul|pre|code|div|hr))[^>]*>#Si', '.', $mod_text);
 	$mod_text = entities_to_umlauts($mod_text, 'UTF-8');
-
-	// make the link from $mod_page_link, add target
-	$link = "";
-	$link = page_link($mod_page_link);
-	$link .= make_url_searchstring($func_search_match, $func_search_url_array);
-	$link .= make_url_target($mod_page_link_target, $mod_text, $func_search_words);
-
-	// prepare the text (part 2): convert some special tags to '.', strip tags
-	$mod_text = preg_replace('/<(br( \/)?|dt|\/dd|\/?(h[1-6]|tr|table|p|li|ul|pre|code|div|hr))[^>]*>/i', '.', $mod_text);
+	// search for an better anchor - this have to be done before strip_tags() (may fail if search-string contains <, &, amp, gt, lt, ...)
+	$anchor =  make_url_target($mod_page_link_target, $mod_text, $func_search_words);
 	$mod_text = strip_tags($mod_text);
-
+	$mod_text = str_replace(array('&gt;','&lt;','&amp;','&quot;','&#39;','&apos;','&nbsp;'), array('>','<','&','"','\'','\'',"\xC2\xA0"), $mod_text);
 	// Do a fast scan over $mod_text first. This will speedup things a lot.
 	if($func_search_match == 'all') {
-		if(!is_all_matched($mod_text, $func_search_words)) {
+		if(!is_all_matched($mod_text, $func_search_words))
 			return false;
-		}
 	}
 	elseif(!is_any_matched($mod_text, $func_search_words)) {
 		return false;
 	}
 
+	// make the link from $mod_page_link, add anchor
+	$link = "";
+	$link = page_link($mod_page_link);
+	$link .= make_url_searchstring($func_search_match, $func_search_url_array);
+	$link .= $anchor;
+
 	// now get the excerpt
 	$excerpt = "";
 	$excerpt_array = array();
@@ -252,9 +267,9 @@
 		$excerpt = prepare_excerpts($excerpt_array, $func_search_words, $mod_max_excerpt_num);
 	}
 
-	// handle image
+	// handle thumbs - to deactivate this look in the module's search.php: $show_thumb (or maybe in the module's settings-page)
 	if($mod_pic_link != "") {
-		$excerpt = '<table width="100%" cellspacing="0" cellpadding="0" border="0"><tbody><tr><td width="110" valign="top"><a href="'.$link.'"><img src="'.WB_URL.'/'.MEDIA_DIRECTORY.$mod_pic_link.'" alt="" /></a></td><td>'.$excerpt.'</td></tr></tbody></table>';
+		$excerpt = '<table class="excerpt_thumb" width="100%" cellspacing="0" cellpadding="0" border="0"><tbody><tr><td width="110" valign="top"><a href="'.$link.'"><img src="'.WB_URL.'/'.MEDIA_DIRECTORY.$mod_pic_link.'" alt="" /></a></td><td>'.$excerpt.'</td></tr></tbody></table>';
 	}
 
 	// print-out the excerpt
@@ -276,6 +291,9 @@
 		$excerpt
 	);
 	echo str_replace($vars, $values, $func_results_loop_string);
+	if($func_enable_flush) { // ATTN: this will bypass output-filters and may break template-layout or -filters
+		ob_flush();flush();
+	}
 	return true;
 }
 
@@ -306,8 +324,8 @@
 
 // keeps only wanted entries in array $files. $str have to be an eregi()-compatible regex
 function clear_filelist($files, $str, $keep=true) {
-	// $keep = true  : remove all non-matching entries
-	// $keep = false : remove all matching entries
+	// options: $keep = true  : remove all non-matching entries
+	//          $keep = false : remove all matching entries
 	$c_filelist = array();
 	if($str == '')
 		return $files;
Index: trunk/wb/install/save.php
===================================================================
--- trunk/wb/install/save.php	(revision 760)
+++ trunk/wb/install/save.php	(revision 761)
@@ -631,6 +631,7 @@
 	$database->query("INSERT INTO `".TABLE_PREFIX."search` VALUES ('', 'cfg_search_keywords', 'true', '')");
 	$database->query("INSERT INTO `".TABLE_PREFIX."search` VALUES ('', 'cfg_search_description', 'true', '')");
 	$database->query("INSERT INTO `".TABLE_PREFIX."search` VALUES ('', 'cfg_show_description', 'true', '')");
+	$database->query("INSERT INTO `".TABLE_PREFIX."search` VALUES ('', 'cfg_enable_flush', 'false', '')");
 	// Search template
 	$database->query("INSERT INTO `".TABLE_PREFIX."search` (name) VALUES ('template')");
 		
Index: trunk/wb/modules/fckeditor/include.php
===================================================================
--- trunk/wb/modules/fckeditor/include.php	(revision 760)
+++ trunk/wb/modules/fckeditor/include.php	(revision 761)
@@ -24,10 +24,7 @@
 */
 
 function reverse_htmlentities($mixed) {
-	$htmltable = get_html_translation_table(HTML_ENTITIES);
-	foreach($htmltable as $key => $value) {
-		$mixed = ereg_replace(addslashes($value),$key,$mixed);
-		}
+	$mixed = str_replace(array('&gt;','&lt;','&quot;','&amp;'), array('>','<','"','&'), $mixed);
 	return $mixed;
 }
 
