Index: solr/src/test/org/apache/solr/analysis/TestUAX29TokenizerFactory.java
===================================================================
--- solr/src/test/org/apache/solr/analysis/TestUAX29TokenizerFactory.java	(revision 1042261)
+++ solr/src/test/org/apache/solr/analysis/TestUAX29TokenizerFactory.java	(working copy)
@@ -1,81 +0,0 @@
-package org.apache.solr.analysis;
-
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.io.Reader;
-import java.io.StringReader;
-import org.apache.lucene.analysis.Tokenizer;
-
-/**
- * A few tests based on  org.apache.lucene.analysis.TestUAX29Tokenizer;
- */
-
-public class TestUAX29TokenizerFactory extends BaseTokenTestCase {
-  /**
-   * Test UAX29TokenizerFactory
-   */
-  public void testUAX29Tokenizer() throws Exception {
-    Reader reader = new StringReader("Wha\u0301t's this thing do?");
-    UAX29TokenizerFactory factory = new UAX29TokenizerFactory();
-    factory.init(DEFAULT_VERSION_PARAM);
-    Tokenizer stream = factory.create(reader);
-    assertTokenStreamContents(stream, 
-        new String[] {"Wha\u0301t's", "this", "thing", "do" });
-  }
-  
-  public void testArabic() throws Exception {
-    Reader reader = new StringReader("الفيلم الوثائقي الأول عن ويكيبيديا يسمى \"الحقيقة بالأرقام: قصة ويكيبيديا\" (بالإنجليزية: Truth in Numbers: The Wikipedia Story)، سيتم إطلاقه في 2008.");
-    UAX29TokenizerFactory factory = new UAX29TokenizerFactory();
-    factory.init(DEFAULT_VERSION_PARAM);
-    Tokenizer stream = factory.create(reader);
-    assertTokenStreamContents(stream, 
-        new String[] {"الفيلم", "الوثائقي", "الأول", "عن", "ويكيبيديا", "يسمى", "الحقيقة", "بالأرقام", "قصة", "ويكيبيديا",
-        "بالإنجليزية", "Truth", "in", "Numbers", "The", "Wikipedia", "Story", "سيتم", "إطلاقه", "في", "2008"  });
-  }
-  
-  public void testChinese() throws Exception {
-    Reader reader = new StringReader("我是中国人。 １２３４ Ｔｅｓｔｓ ");
-    UAX29TokenizerFactory factory = new UAX29TokenizerFactory();
-    factory.init(DEFAULT_VERSION_PARAM);
-    Tokenizer stream = factory.create(reader);
-    assertTokenStreamContents(stream, 
-        new String[] {"我", "是", "中", "国", "人", "１２３４", "Ｔｅｓｔｓ"});
-  }
-  public void testKorean() throws Exception {
-    Reader reader = new StringReader("안녕하세요 한글입니다");
-    UAX29TokenizerFactory factory = new UAX29TokenizerFactory();
-    factory.init(DEFAULT_VERSION_PARAM);
-    Tokenizer stream = factory.create(reader);
-    assertTokenStreamContents(stream, 
-        new String[] {"안녕하세요", "한글입니다"});
-  }
-    
-  public void testHyphen() throws Exception {
-    Reader reader = new StringReader("some-dashed-phrase");
-    UAX29TokenizerFactory factory = new UAX29TokenizerFactory();
-    factory.init(DEFAULT_VERSION_PARAM);
-    Tokenizer stream = factory.create(reader);
-    assertTokenStreamContents(stream, 
-        new String[] {"some", "dashed", "phrase"});
-  }
-
-}
-    
-  
-  
-  
Index: solr/src/test/org/apache/solr/analysis/TestUAX29URLEmailTokenizerFactory.java
===================================================================
--- solr/src/test/org/apache/solr/analysis/TestUAX29URLEmailTokenizerFactory.java	(revision 1042243)
+++ solr/src/test/org/apache/solr/analysis/TestUAX29URLEmailTokenizerFactory.java	(working copy)
@@ -22,16 +22,16 @@
 import org.apache.lucene.analysis.Tokenizer;
 
 /**
- * A few tests based on  org.apache.lucene.analysis.TestUAX29Tokenizer;
+ * A few tests based on org.apache.lucene.analysis.TestUAX29URLEmailTokenizer
  */
 
-public class TestUAX29TokenizerFactory extends BaseTokenTestCase {
+public class TestUAX29URLEmailTokenizerFactory extends BaseTokenTestCase {
   /**
-   * Test UAX29TokenizerFactory
+   * Test UAX29URLEmailTokenizerFactory
    */
-  public void testUAX29Tokenizer() throws Exception {
+  public void testUAX29URLEmailTokenizer() throws Exception {
     Reader reader = new StringReader("Wha\u0301t's this thing do?");
-    UAX29TokenizerFactory factory = new UAX29TokenizerFactory();
+    UAX29URLEmailTokenizerFactory factory = new UAX29URLEmailTokenizerFactory();
     factory.init(DEFAULT_VERSION_PARAM);
     Tokenizer stream = factory.create(reader);
     assertTokenStreamContents(stream, 
@@ -40,7 +40,7 @@
   
   public void testArabic() throws Exception {
     Reader reader = new StringReader("الفيلم الوثائقي الأول عن ويكيبيديا يسمى \"الحقيقة بالأرقام: قصة ويكيبيديا\" (بالإنجليزية: Truth in Numbers: The Wikipedia Story)، سيتم إطلاقه في 2008.");
-    UAX29TokenizerFactory factory = new UAX29TokenizerFactory();
+    UAX29URLEmailTokenizerFactory factory = new UAX29URLEmailTokenizerFactory();
     factory.init(DEFAULT_VERSION_PARAM);
     Tokenizer stream = factory.create(reader);
     assertTokenStreamContents(stream, 
@@ -50,15 +50,16 @@
   
   public void testChinese() throws Exception {
     Reader reader = new StringReader("我是中国人。 １２３４ Ｔｅｓｔｓ ");
-    UAX29TokenizerFactory factory = new UAX29TokenizerFactory();
+    UAX29URLEmailTokenizerFactory factory = new UAX29URLEmailTokenizerFactory();
     factory.init(DEFAULT_VERSION_PARAM);
     Tokenizer stream = factory.create(reader);
     assertTokenStreamContents(stream, 
         new String[] {"我", "是", "中", "国", "人", "１２３４", "Ｔｅｓｔｓ"});
   }
+
   public void testKorean() throws Exception {
     Reader reader = new StringReader("안녕하세요 한글입니다");
-    UAX29TokenizerFactory factory = new UAX29TokenizerFactory();
+    UAX29URLEmailTokenizerFactory factory = new UAX29URLEmailTokenizerFactory();
     factory.init(DEFAULT_VERSION_PARAM);
     Tokenizer stream = factory.create(reader);
     assertTokenStreamContents(stream, 
@@ -67,7 +68,7 @@
     
   public void testHyphen() throws Exception {
     Reader reader = new StringReader("some-dashed-phrase");
-    UAX29TokenizerFactory factory = new UAX29TokenizerFactory();
+    UAX29URLEmailTokenizerFactory factory = new UAX29URLEmailTokenizerFactory();
     factory.init(DEFAULT_VERSION_PARAM);
     Tokenizer stream = factory.create(reader);
     assertTokenStreamContents(stream, 

Property changes on: solr/src/test/org/apache/solr/analysis/TestUAX29URLEmailTokenizerFactory.java
___________________________________________________________________
Added: svn:eol-style
   + native

Index: solr/src/java/org/apache/solr/analysis/UAX29URLEmailTokenizerFactory.java
===================================================================
--- solr/src/java/org/apache/solr/analysis/UAX29URLEmailTokenizerFactory.java	(revision 1042243)
+++ solr/src/java/org/apache/solr/analysis/UAX29URLEmailTokenizerFactory.java	(working copy)
@@ -20,7 +20,7 @@
 
 
 
-import org.apache.lucene.analysis.standard.UAX29Tokenizer;
+import org.apache.lucene.analysis.standard.UAX29URLEmailTokenizer;
 
 import java.io.Reader;
 import java.util.Map;
@@ -30,14 +30,14 @@
  * 
  */
 
-public class UAX29TokenizerFactory extends BaseTokenizerFactory {
+public class UAX29URLEmailTokenizerFactory extends BaseTokenizerFactory {
   @Override
   public void init(Map<String,String> args) {
     super.init(args);
     assureMatchVersion();
   }
 
-  public UAX29Tokenizer create(Reader input) {
-    return new UAX29Tokenizer(input);
+  public UAX29URLEmailTokenizer create(Reader input) {
+    return new UAX29URLEmailTokenizer(input);
   }
 }

Property changes on: solr/src/java/org/apache/solr/analysis/UAX29URLEmailTokenizerFactory.java
___________________________________________________________________
Added: svn:eol-style
   + native

Index: solr/src/java/org/apache/solr/analysis/UAX29TokenizerFactory.java
===================================================================
--- solr/src/java/org/apache/solr/analysis/UAX29TokenizerFactory.java	(revision 1042261)
+++ solr/src/java/org/apache/solr/analysis/UAX29TokenizerFactory.java	(working copy)
@@ -1,43 +0,0 @@
-package org.apache.solr.analysis;
-
-
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-
-import org.apache.lucene.analysis.standard.UAX29Tokenizer;
-
-import java.io.Reader;
-import java.util.Map;
-
-/**
- * @version $Id$
- * 
- */
-
-public class UAX29TokenizerFactory extends BaseTokenizerFactory {
-  @Override
-  public void init(Map<String,String> args) {
-    super.init(args);
-    assureMatchVersion();
-  }
-
-  public UAX29Tokenizer create(Reader input) {
-    return new UAX29Tokenizer(input);
-  }
-}
Index: modules/analysis/common/src/test/org/apache/lucene/analysis/core/TestUAX29Tokenizer.java
===================================================================
--- modules/analysis/common/src/test/org/apache/lucene/analysis/core/TestUAX29Tokenizer.java	(revision 1042261)
+++ modules/analysis/common/src/test/org/apache/lucene/analysis/core/TestUAX29Tokenizer.java	(working copy)
@@ -1,204 +0,0 @@
-package org.apache.lucene.analysis.core;
-
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.analysis.BaseTokenStreamTestCase;
-import org.apache.lucene.analysis.Tokenizer;
-import org.apache.lucene.analysis.standard.UAX29Tokenizer;
-import org.apache.lucene.analysis.util.ReusableAnalyzerBase;
-
-import java.io.IOException;
-import java.io.Reader;
-import java.io.StringReader;
-import java.util.Arrays;
-
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-public class TestUAX29Tokenizer extends BaseTokenStreamTestCase {
-  
-  public void testHugeDoc() throws IOException {
-    StringBuilder sb = new StringBuilder();
-    char whitespace[] = new char[4094];
-    Arrays.fill(whitespace, ' ');
-    sb.append(whitespace);
-    sb.append("testing 1234");
-    String input = sb.toString();
-    UAX29Tokenizer tokenizer = new UAX29Tokenizer(new StringReader(input));
-    BaseTokenStreamTestCase.assertTokenStreamContents(tokenizer, new String[] { "testing", "1234" });
-  }
-
-  private Analyzer a = new ReusableAnalyzerBase() {
-    @Override
-    protected TokenStreamComponents createComponents
-      (String fieldName, Reader reader) {
-
-      Tokenizer tokenizer = new UAX29Tokenizer(reader);
-      return new TokenStreamComponents(tokenizer);
-    }
-  };
-
-  public void testArmenian() throws Exception {
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "Վիքիպեդիայի 13 միլիոն հոդվածները (4,600` հայերեն վիքիպեդիայում) գրվել են կամավորների կողմից ու համարյա բոլոր հոդվածները կարող է խմբագրել ցանկաց մարդ ով կարող է բացել Վիքիպեդիայի կայքը։",
-        new String[] { "Վիքիպեդիայի", "13", "միլիոն", "հոդվածները", "4,600", "հայերեն", "վիքիպեդիայում", "գրվել", "են", "կամավորների", "կողմից", 
-        "ու", "համարյա", "բոլոր", "հոդվածները", "կարող", "է", "խմբագրել", "ցանկաց", "մարդ", "ով", "կարող", "է", "բացել", "Վիքիպեդիայի", "կայքը" } );
-  }
-  
-  public void testAmharic() throws Exception {
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "ዊኪፔድያ የባለ ብዙ ቋንቋ የተሟላ ትክክለኛና ነጻ መዝገበ ዕውቀት (ኢንሳይክሎፒዲያ) ነው። ማንኛውም",
-        new String[] { "ዊኪፔድያ", "የባለ", "ብዙ", "ቋንቋ", "የተሟላ", "ትክክለኛና", "ነጻ", "መዝገበ", "ዕውቀት", "ኢንሳይክሎፒዲያ", "ነው", "ማንኛውም" } );
-  }
-  
-  public void testArabic() throws Exception {
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "الفيلم الوثائقي الأول عن ويكيبيديا يسمى \"الحقيقة بالأرقام: قصة ويكيبيديا\" (بالإنجليزية: Truth in Numbers: The Wikipedia Story)، سيتم إطلاقه في 2008.",
-        new String[] { "الفيلم", "الوثائقي", "الأول", "عن", "ويكيبيديا", "يسمى", "الحقيقة", "بالأرقام", "قصة", "ويكيبيديا",
-        "بالإنجليزية", "Truth", "in", "Numbers", "The", "Wikipedia", "Story", "سيتم", "إطلاقه", "في", "2008" } ); 
-  }
-  
-  public void testAramaic() throws Exception {
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "ܘܝܩܝܦܕܝܐ (ܐܢܓܠܝܐ: Wikipedia) ܗܘ ܐܝܢܣܩܠܘܦܕܝܐ ܚܐܪܬܐ ܕܐܢܛܪܢܛ ܒܠܫܢ̈ܐ ܣܓܝܐ̈ܐ܂ ܫܡܗ ܐܬܐ ܡܢ ܡ̈ܠܬܐ ܕ\"ܘܝܩܝ\" ܘ\"ܐܝܢܣܩܠܘܦܕܝܐ\"܀",
-        new String[] { "ܘܝܩܝܦܕܝܐ", "ܐܢܓܠܝܐ", "Wikipedia", "ܗܘ", "ܐܝܢܣܩܠܘܦܕܝܐ", "ܚܐܪܬܐ", "ܕܐܢܛܪܢܛ", "ܒܠܫܢ̈ܐ", "ܣܓܝܐ̈ܐ", "ܫܡܗ",
-        "ܐܬܐ", "ܡܢ", "ܡ̈ܠܬܐ", "ܕ", "ܘܝܩܝ", "ܘ", "ܐܝܢܣܩܠܘܦܕܝܐ"});
-  }
-  
-  public void testBengali() throws Exception {
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "এই বিশ্বকোষ পরিচালনা করে উইকিমিডিয়া ফাউন্ডেশন (একটি অলাভজনক সংস্থা)। উইকিপিডিয়ার শুরু ১৫ জানুয়ারি, ২০০১ সালে। এখন পর্যন্ত ২০০টিরও বেশী ভাষায় উইকিপিডিয়া রয়েছে।",
-        new String[] { "এই", "বিশ্বকোষ", "পরিচালনা", "করে", "উইকিমিডিয়া", "ফাউন্ডেশন", "একটি", "অলাভজনক", "সংস্থা", "উইকিপিডিয়ার",
-        "শুরু", "১৫", "জানুয়ারি", "২০০১", "সালে", "এখন", "পর্যন্ত", "২০০টিরও", "বেশী", "ভাষায়", "উইকিপিডিয়া", "রয়েছে" });
-  }
-  
-  public void testFarsi() throws Exception {
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "ویکی پدیای انگلیسی در تاریخ ۲۵ دی ۱۳۷۹ به صورت مکملی برای دانشنامهٔ تخصصی نوپدیا نوشته شد.",
-        new String[] { "ویکی", "پدیای", "انگلیسی", "در", "تاریخ", "۲۵", "دی", "۱۳۷۹", "به", "صورت", "مکملی",
-        "برای", "دانشنامهٔ", "تخصصی", "نوپدیا", "نوشته", "شد" });
-  }
-  
-  public void testGreek() throws Exception {
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "Γράφεται σε συνεργασία από εθελοντές με το λογισμικό wiki, κάτι που σημαίνει ότι άρθρα μπορεί να προστεθούν ή να αλλάξουν από τον καθένα.",
-        new String[] { "Γράφεται", "σε", "συνεργασία", "από", "εθελοντές", "με", "το", "λογισμικό", "wiki", "κάτι", "που",
-        "σημαίνει", "ότι", "άρθρα", "μπορεί", "να", "προστεθούν", "ή", "να", "αλλάξουν", "από", "τον", "καθένα" });
-  }
-
-  public void testThai() throws Exception {
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "การที่ได้ต้องแสดงว่างานดี. แล้วเธอจะไปไหน? ๑๒๓๔",
-        new String[] { "การที่ได้ต้องแสดงว่างานดี", "แล้วเธอจะไปไหน", "๑๒๓๔" });
-  }
-  
-  public void testLao() throws Exception {
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "ສາທາລະນະລັດ ປະຊາທິປະໄຕ ປະຊາຊົນລາວ", 
-        new String[] { "ສາທາລະນະລັດ", "ປະຊາທິປະໄຕ", "ປະຊາຊົນລາວ" });
-  }
-  
-  public void testTibetan() throws Exception {
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "སྣོན་མཛོད་དང་ལས་འདིས་བོད་ཡིག་མི་ཉམས་གོང་འཕེལ་དུ་གཏོང་བར་ཧ་ཅང་དགེ་མཚན་མཆིས་སོ། །",
-                     new String[] { "སྣོན", "མཛོད", "དང", "ལས", "འདིས", "བོད", "ཡིག", 
-                                    "མི", "ཉམས", "གོང", "འཕེལ", "དུ", "གཏོང", "བར", 
-                                    "ཧ", "ཅང", "དགེ", "མཚན", "མཆིས", "སོ" });
-  }
-  
-  /*
-   * For chinese, tokenize as char (these can later form bigrams or whatever)
-   */
-  public void testChinese() throws Exception {
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "我是中国人。 １２３４ Ｔｅｓｔｓ ",
-        new String[] { "我", "是", "中", "国", "人", "１２３４", "Ｔｅｓｔｓ"});
-  }
-  
-  public void testEmpty() throws Exception {
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "", new String[] {});
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, ".", new String[] {});
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, " ", new String[] {});
-  }
-  
-  /* test various jira issues this analyzer is related to */
-  
-  public void testLUCENE1545() throws Exception {
-    /*
-     * Standard analyzer does not correctly tokenize combining character U+0364 COMBINING LATIN SMALL LETTRE E.
-     * The word "moͤchte" is incorrectly tokenized into "mo" "chte", the combining character is lost.
-     * Expected result is only on token "moͤchte".
-     */
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "moͤchte", new String[] { "moͤchte" }); 
-  }
-  
-  /* Tests from StandardAnalyzer, just to show behavior is similar */
-  public void testAlphanumericSA() throws Exception {
-    // alphanumeric tokens
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "B2B", new String[]{"B2B"});
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "2B", new String[]{"2B"});
-  }
-
-  public void testDelimitersSA() throws Exception {
-    // other delimiters: "-", "/", ","
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "some-dashed-phrase", new String[]{"some", "dashed", "phrase"});
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "dogs,chase,cats", new String[]{"dogs", "chase", "cats"});
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "ac/dc", new String[]{"ac", "dc"});
-  }
-
-  public void testApostrophesSA() throws Exception {
-    // internal apostrophes: O'Reilly, you're, O'Reilly's
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "O'Reilly", new String[]{"O'Reilly"});
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "you're", new String[]{"you're"});
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "she's", new String[]{"she's"});
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "Jim's", new String[]{"Jim's"});
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "don't", new String[]{"don't"});
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "O'Reilly's", new String[]{"O'Reilly's"});
-  }
-
-  public void testNumericSA() throws Exception {
-    // floating point, serial, model numbers, ip addresses, etc.
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "21.35", new String[]{"21.35"});
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "R2D2 C3PO", new String[]{"R2D2", "C3PO"});
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "216.239.63.104", new String[]{"216.239.63.104"});
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "216.239.63.104", new String[]{"216.239.63.104"});
-  }
-
-  public void testTextWithNumbersSA() throws Exception {
-    // numbers
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "David has 5000 bones", new String[]{"David", "has", "5000", "bones"});
-  }
-
-  public void testVariousTextSA() throws Exception {
-    // various
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "C embedded developers wanted", new String[]{"C", "embedded", "developers", "wanted"});
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "foo bar FOO BAR", new String[]{"foo", "bar", "FOO", "BAR"});
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "foo      bar .  FOO <> BAR", new String[]{"foo", "bar", "FOO", "BAR"});
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "\"QUOTED\" word", new String[]{"QUOTED", "word"});
-  }
-
-  public void testKoreanSA() throws Exception {
-    // Korean words
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "안녕하세요 한글입니다", new String[]{"안녕하세요", "한글입니다"});
-  }
-  
-  public void testOffsets() throws Exception {
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "David has 5000 bones", 
-        new String[] {"David", "has", "5000", "bones"},
-        new int[] {0, 6, 10, 15},
-        new int[] {5, 9, 14, 20});
-  }
-  
-  public void testTypes() throws Exception {
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "David has 5000 bones", 
-        new String[] {"David", "has", "5000", "bones"},
-        new String[] { "<ALPHANUM>", "<ALPHANUM>", "<NUM>", "<ALPHANUM>" });
-  }
-  
-  public void testUnicodeWordBreaks() throws Exception {
-    WordBreakTestUnicode_6_0_0 wordBreakTest = new WordBreakTestUnicode_6_0_0();
-    wordBreakTest.test(a);
-  }
-}
Index: modules/analysis/common/src/test/org/apache/lucene/analysis/core/TestStandardAnalyzer.java
===================================================================
--- modules/analysis/common/src/test/org/apache/lucene/analysis/core/TestStandardAnalyzer.java	(revision 1042261)
+++ modules/analysis/common/src/test/org/apache/lucene/analysis/core/TestStandardAnalyzer.java	(working copy)
@@ -2,21 +2,14 @@
 
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.BaseTokenStreamTestCase;
-import org.apache.lucene.analysis.TokenFilter;
-import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.Tokenizer;
 import org.apache.lucene.analysis.standard.StandardTokenizer;
-import org.apache.lucene.analysis.tokenattributes.TypeAttribute;
 import org.apache.lucene.analysis.util.ReusableAnalyzerBase;
 
-import java.io.BufferedReader;
 import java.io.IOException;
-import java.io.InputStreamReader;
 import java.io.Reader;
 import java.io.StringReader;
-import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.List;
 
 /**
  * Licensed to the Apache Software Foundation (ASF) under one or more
@@ -58,63 +51,6 @@
     }
   };
 
-  /** Passes through tokens with type "<URL>" and blocks all other types. */
-  private class URLFilter extends TokenFilter {
-    private final TypeAttribute typeAtt = addAttribute(TypeAttribute.class);
-    public URLFilter(TokenStream in) {
-      super(in);
-    }
-    @Override
-    public final boolean incrementToken() throws java.io.IOException {
-      boolean isTokenAvailable = false;
-      while (input.incrementToken()) {
-        if (typeAtt.type() == StandardTokenizer.TOKEN_TYPES[StandardTokenizer.URL]) {
-          isTokenAvailable = true;
-          break;
-        }
-      }
-      return isTokenAvailable;
-    }
-  }
-  
-  /** Passes through tokens with type "<EMAIL>" and blocks all other types. */
-  private class EmailFilter extends TokenFilter {
-    private final TypeAttribute typeAtt = addAttribute(TypeAttribute.class);
-    public EmailFilter(TokenStream in) {
-      super(in);
-    }
-    @Override
-    public final boolean incrementToken() throws java.io.IOException {
-      boolean isTokenAvailable = false;
-      while (input.incrementToken()) {
-        if (typeAtt.type() == StandardTokenizer.TOKEN_TYPES[StandardTokenizer.EMAIL]) {
-          isTokenAvailable = true;
-          break;
-        }
-      }
-      return isTokenAvailable;
-    }
-  }
-
-  private Analyzer urlAnalyzer = new ReusableAnalyzerBase() {
-    @Override
-    protected TokenStreamComponents createComponents(String fieldName, Reader reader) {
-      StandardTokenizer tokenizer = new StandardTokenizer(TEST_VERSION_CURRENT, reader);
-      tokenizer.setMaxTokenLength(Integer.MAX_VALUE);  // Tokenize arbitrary length URLs
-      TokenFilter filter = new URLFilter(tokenizer);
-      return new TokenStreamComponents(tokenizer, filter);
-    }
-  };
-
-  private Analyzer emailAnalyzer = new ReusableAnalyzerBase() {
-    @Override
-    protected TokenStreamComponents createComponents(String fieldName, Reader reader) {
-      Tokenizer tokenizer = new StandardTokenizer(TEST_VERSION_CURRENT, reader);
-      TokenFilter filter = new EmailFilter(tokenizer);
-      return new TokenStreamComponents(tokenizer, filter);
-    }
-  };
-
   public void testArmenian() throws Exception {
     BaseTokenStreamTestCase.assertAnalyzesTo(a, "Վիքիպեդիայի 13 միլիոն հոդվածները (4,600` հայերեն վիքիպեդիայում) գրվել են կամավորների կողմից ու համարյա բոլոր հոդվածները կարող է խմբագրել ցանկաց մարդ ով կարող է բացել Վիքիպեդիայի կայքը։",
         new String[] { "Վիքիպեդիայի", "13", "միլիոն", "հոդվածները", "4,600", "հայերեն", "վիքիպեդիայում", "գրվել", "են", "կամավորների", "կողմից", 
@@ -261,138 +197,6 @@
         new String[] { "<ALPHANUM>", "<ALPHANUM>", "<NUM>", "<ALPHANUM>" });
   }
   
-  public void testWikiURLs() throws Exception {
-    Reader reader = null;
-    String luceneResourcesWikiPage;
-    try {
-      reader = new InputStreamReader
-        (getClass().getResourceAsStream("LuceneResourcesWikiPage.html"), "UTF-8");
-      StringBuilder builder = new StringBuilder();
-      char[] buffer = new char[1024];
-      int numCharsRead;
-      while (-1 != (numCharsRead = reader.read(buffer))) {
-        builder.append(buffer, 0, numCharsRead);
-      }
-      luceneResourcesWikiPage = builder.toString(); 
-    } finally {
-      if (null != reader) {
-        reader.close();
-      }
-    }
-    assertTrue(null != luceneResourcesWikiPage 
-               && luceneResourcesWikiPage.length() > 0);
-    BufferedReader bufferedReader = null;
-    String[] urls;
-    try {
-      List<String> urlList = new ArrayList<String>();
-      bufferedReader = new BufferedReader(new InputStreamReader
-        (getClass().getResourceAsStream("LuceneResourcesWikiPageURLs.txt"), "UTF-8"));
-      String line;
-      while (null != (line = bufferedReader.readLine())) {
-        line = line.trim();
-        if (line.length() > 0) {
-          urlList.add(line);
-        }
-      }
-      urls = urlList.toArray(new String[urlList.size()]);
-    } finally {
-      if (null != bufferedReader) {
-        bufferedReader.close();
-      }
-    }
-    assertTrue(null != urls && urls.length > 0);
-    BaseTokenStreamTestCase.assertAnalyzesTo
-      (urlAnalyzer, luceneResourcesWikiPage, urls);
-  }
-  
-  public void testEmails() throws Exception {
-    Reader reader = null;
-    String randomTextWithEmails;
-    try {
-      reader = new InputStreamReader
-        (getClass().getResourceAsStream("random.text.with.email.addresses.txt"), "UTF-8");
-      StringBuilder builder = new StringBuilder();
-      char[] buffer = new char[1024];
-      int numCharsRead;
-      while (-1 != (numCharsRead = reader.read(buffer))) {
-        builder.append(buffer, 0, numCharsRead);
-      }
-      randomTextWithEmails = builder.toString(); 
-    } finally {
-      if (null != reader) {
-        reader.close();
-      }
-    }
-    assertTrue(null != randomTextWithEmails 
-               && randomTextWithEmails.length() > 0);
-    BufferedReader bufferedReader = null;
-    String[] emails;
-    try {
-      List<String> emailList = new ArrayList<String>();
-      bufferedReader = new BufferedReader(new InputStreamReader
-        (getClass().getResourceAsStream("email.addresses.from.random.text.with.email.addresses.txt"), "UTF-8"));
-      String line;
-      while (null != (line = bufferedReader.readLine())) {
-        line = line.trim();
-        if (line.length() > 0) {
-          emailList.add(line);
-        }
-      }
-      emails = emailList.toArray(new String[emailList.size()]);
-    } finally {
-      if (null != bufferedReader) {
-        bufferedReader.close();
-      }
-    }
-    assertTrue(null != emails && emails.length > 0);
-    BaseTokenStreamTestCase.assertAnalyzesTo
-      (emailAnalyzer, randomTextWithEmails, emails);
-  }
-
-  public void testURLs() throws Exception {
-    Reader reader = null;
-    String randomTextWithURLs;
-    try {
-      reader = new InputStreamReader
-        (getClass().getResourceAsStream("random.text.with.urls.txt"), "UTF-8");
-      StringBuilder builder = new StringBuilder();
-      char[] buffer = new char[1024];
-      int numCharsRead;
-      while (-1 != (numCharsRead = reader.read(buffer))) {
-        builder.append(buffer, 0, numCharsRead);
-      }
-      randomTextWithURLs = builder.toString(); 
-    } finally {
-      if (null != reader) {
-        reader.close();
-      }
-    }
-    assertTrue(null != randomTextWithURLs 
-               && randomTextWithURLs.length() > 0);
-    BufferedReader bufferedReader = null;
-    String[] urls;
-    try {
-      List<String> urlList = new ArrayList<String>();
-      bufferedReader = new BufferedReader(new InputStreamReader
-        (getClass().getResourceAsStream("urls.from.random.text.with.urls.txt"), "UTF-8"));
-      String line;
-      while (null != (line = bufferedReader.readLine())) {
-        line = line.trim();
-        if (line.length() > 0) {
-          urlList.add(line);
-        }
-      }
-      urls = urlList.toArray(new String[urlList.size()]);
-    } finally {
-      if (null != bufferedReader) {
-        bufferedReader.close();
-      }
-    }
-    assertTrue(null != urls && urls.length > 0);
-    BaseTokenStreamTestCase.assertAnalyzesTo
-      (urlAnalyzer, randomTextWithURLs, urls);
-  }
-
   public void testUnicodeWordBreaks() throws Exception {
     WordBreakTestUnicode_6_0_0 wordBreakTest = new WordBreakTestUnicode_6_0_0();
     wordBreakTest.test(a);
Index: modules/analysis/common/src/test/org/apache/lucene/analysis/core/TestUAX29URLEmailTokenizer.java
===================================================================
--- modules/analysis/common/src/test/org/apache/lucene/analysis/core/TestUAX29URLEmailTokenizer.java	(revision 1042261)
+++ modules/analysis/common/src/test/org/apache/lucene/analysis/core/TestUAX29URLEmailTokenizer.java	(working copy)
@@ -2,14 +2,21 @@
 
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.BaseTokenStreamTestCase;
+import org.apache.lucene.analysis.TokenFilter;
+import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.Tokenizer;
-import org.apache.lucene.analysis.standard.UAX29Tokenizer;
+import org.apache.lucene.analysis.standard.UAX29URLEmailTokenizer;
+import org.apache.lucene.analysis.tokenattributes.TypeAttribute;
 import org.apache.lucene.analysis.util.ReusableAnalyzerBase;
 
+import java.io.BufferedReader;
 import java.io.IOException;
+import java.io.InputStreamReader;
 import java.io.Reader;
 import java.io.StringReader;
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.List;
 
 /**
  * Licensed to the Apache Software Foundation (ASF) under one or more
@@ -28,7 +35,7 @@
  * limitations under the License.
  */
 
-public class TestUAX29Tokenizer extends BaseTokenStreamTestCase {
+public class TestUAX29URLEmailTokenizer extends BaseTokenStreamTestCase {
   
   public void testHugeDoc() throws IOException {
     StringBuilder sb = new StringBuilder();
@@ -37,7 +44,7 @@
     sb.append(whitespace);
     sb.append("testing 1234");
     String input = sb.toString();
-    UAX29Tokenizer tokenizer = new UAX29Tokenizer(new StringReader(input));
+    UAX29URLEmailTokenizer tokenizer = new UAX29URLEmailTokenizer(new StringReader(input));
     BaseTokenStreamTestCase.assertTokenStreamContents(tokenizer, new String[] { "testing", "1234" });
   }
 
@@ -46,11 +53,70 @@
     protected TokenStreamComponents createComponents
       (String fieldName, Reader reader) {
 
-      Tokenizer tokenizer = new UAX29Tokenizer(reader);
+      Tokenizer tokenizer = new UAX29URLEmailTokenizer(reader);
       return new TokenStreamComponents(tokenizer);
     }
   };
 
+
+  /** Passes through tokens with type "<URL>" and blocks all other types. */
+  private class URLFilter extends TokenFilter {
+    private final TypeAttribute typeAtt = addAttribute(TypeAttribute.class);
+    public URLFilter(TokenStream in) {
+      super(in);
+    }
+    @Override
+    public final boolean incrementToken() throws java.io.IOException {
+      boolean isTokenAvailable = false;
+      while (input.incrementToken()) {
+        if (typeAtt.type() == UAX29URLEmailTokenizer.URL_TYPE) {
+          isTokenAvailable = true;
+          break;
+        }
+      }
+      return isTokenAvailable;
+    }
+  }
+  
+  /** Passes through tokens with type "<EMAIL>" and blocks all other types. */
+  private class EmailFilter extends TokenFilter {
+    private final TypeAttribute typeAtt = addAttribute(TypeAttribute.class);
+    public EmailFilter(TokenStream in) {
+      super(in);
+    }
+    @Override
+    public final boolean incrementToken() throws java.io.IOException {
+      boolean isTokenAvailable = false;
+      while (input.incrementToken()) {
+        if (typeAtt.type() == UAX29URLEmailTokenizer.EMAIL_TYPE) {
+          isTokenAvailable = true;
+          break;
+        }
+      }
+      return isTokenAvailable;
+    }
+  }
+
+  private Analyzer urlAnalyzer = new ReusableAnalyzerBase() {
+    @Override
+    protected TokenStreamComponents createComponents(String fieldName, Reader reader) {
+      UAX29URLEmailTokenizer tokenizer = new UAX29URLEmailTokenizer(reader);
+      tokenizer.setMaxTokenLength(Integer.MAX_VALUE);  // Tokenize arbitrary length URLs
+      TokenFilter filter = new URLFilter(tokenizer);
+      return new TokenStreamComponents(tokenizer, filter);
+    }
+  };
+
+  private Analyzer emailAnalyzer = new ReusableAnalyzerBase() {
+    @Override
+    protected TokenStreamComponents createComponents(String fieldName, Reader reader) {
+      UAX29URLEmailTokenizer tokenizer = new UAX29URLEmailTokenizer(reader);
+      TokenFilter filter = new EmailFilter(tokenizer);
+      return new TokenStreamComponents(tokenizer, filter);
+    }
+  };
+  
+  
   public void testArmenian() throws Exception {
     BaseTokenStreamTestCase.assertAnalyzesTo(a, "Վիքիպեդիայի 13 միլիոն հոդվածները (4,600` հայերեն վիքիպեդիայում) գրվել են կամավորների կողմից ու համարյա բոլոր հոդվածները կարող է խմբագրել ցանկաց մարդ ով կարող է բացել Վիքիպեդիայի կայքը։",
         new String[] { "Վիքիպեդիայի", "13", "միլիոն", "հոդվածները", "4,600", "հայերեն", "վիքիպեդիայում", "գրվել", "են", "կամավորների", "կողմից", 
@@ -163,7 +229,6 @@
     BaseTokenStreamTestCase.assertAnalyzesTo(a, "21.35", new String[]{"21.35"});
     BaseTokenStreamTestCase.assertAnalyzesTo(a, "R2D2 C3PO", new String[]{"R2D2", "C3PO"});
     BaseTokenStreamTestCase.assertAnalyzesTo(a, "216.239.63.104", new String[]{"216.239.63.104"});
-    BaseTokenStreamTestCase.assertAnalyzesTo(a, "216.239.63.104", new String[]{"216.239.63.104"});
   }
 
   public void testTextWithNumbersSA() throws Exception {
@@ -197,6 +262,140 @@
         new String[] { "<ALPHANUM>", "<ALPHANUM>", "<NUM>", "<ALPHANUM>" });
   }
   
+  public void testWikiURLs() throws Exception {
+    Reader reader = null;
+    String luceneResourcesWikiPage;
+    try {
+      reader = new InputStreamReader(getClass().getResourceAsStream
+        ("LuceneResourcesWikiPage.html"), "UTF-8");
+      StringBuilder builder = new StringBuilder();
+      char[] buffer = new char[1024];
+      int numCharsRead;
+      while (-1 != (numCharsRead = reader.read(buffer))) {
+        builder.append(buffer, 0, numCharsRead);
+      }
+      luceneResourcesWikiPage = builder.toString(); 
+    } finally {
+      if (null != reader) {
+        reader.close();
+      }
+    }
+    assertTrue(null != luceneResourcesWikiPage 
+               && luceneResourcesWikiPage.length() > 0);
+    BufferedReader bufferedReader = null;
+    String[] urls;
+    try {
+      List<String> urlList = new ArrayList<String>();
+      bufferedReader = new BufferedReader(new InputStreamReader
+        (getClass().getResourceAsStream("LuceneResourcesWikiPageURLs.txt"), "UTF-8"));
+      String line;
+      while (null != (line = bufferedReader.readLine())) {
+        line = line.trim();
+        if (line.length() > 0) {
+          urlList.add(line);
+        }
+      }
+      urls = urlList.toArray(new String[urlList.size()]);
+    } finally {
+      if (null != bufferedReader) {
+        bufferedReader.close();
+      }
+    }
+    assertTrue(null != urls && urls.length > 0);
+    BaseTokenStreamTestCase.assertAnalyzesTo
+      (urlAnalyzer, luceneResourcesWikiPage, urls);
+  }
+  
+  public void testEmails() throws Exception {
+    Reader reader = null;
+    String randomTextWithEmails;
+    try {
+      reader = new InputStreamReader(getClass().getResourceAsStream
+        ("random.text.with.email.addresses.txt"), "UTF-8");
+      StringBuilder builder = new StringBuilder();
+      char[] buffer = new char[1024];
+      int numCharsRead;
+      while (-1 != (numCharsRead = reader.read(buffer))) {
+        builder.append(buffer, 0, numCharsRead);
+      }
+      randomTextWithEmails = builder.toString(); 
+    } finally {
+      if (null != reader) {
+        reader.close();
+      }
+    }
+    assertTrue(null != randomTextWithEmails 
+               && randomTextWithEmails.length() > 0);
+    BufferedReader bufferedReader = null;
+    String[] emails;
+    try {
+      List<String> emailList = new ArrayList<String>();
+      bufferedReader = new BufferedReader(new InputStreamReader
+        (getClass().getResourceAsStream
+          ("email.addresses.from.random.text.with.email.addresses.txt"), "UTF-8"));
+      String line;
+      while (null != (line = bufferedReader.readLine())) {
+        line = line.trim();
+        if (line.length() > 0) {
+          emailList.add(line);
+        }
+      }
+      emails = emailList.toArray(new String[emailList.size()]);
+    } finally {
+      if (null != bufferedReader) {
+        bufferedReader.close();
+      }
+    }
+    assertTrue(null != emails && emails.length > 0);
+    BaseTokenStreamTestCase.assertAnalyzesTo
+      (emailAnalyzer, randomTextWithEmails, emails);
+  }
+
+  public void testURLs() throws Exception {
+    Reader reader = null;
+    String randomTextWithURLs;
+    try {
+      reader = new InputStreamReader(getClass().getResourceAsStream
+        ("random.text.with.urls.txt"), "UTF-8");
+      StringBuilder builder = new StringBuilder();
+      char[] buffer = new char[1024];
+      int numCharsRead;
+      while (-1 != (numCharsRead = reader.read(buffer))) {
+        builder.append(buffer, 0, numCharsRead);
+      }
+      randomTextWithURLs = builder.toString(); 
+    } finally {
+      if (null != reader) {
+        reader.close();
+      }
+    }
+    assertTrue(null != randomTextWithURLs 
+               && randomTextWithURLs.length() > 0);
+    BufferedReader bufferedReader = null;
+    String[] urls;
+    try {
+      List<String> urlList = new ArrayList<String>();
+      bufferedReader = new BufferedReader(new InputStreamReader
+        (getClass().getResourceAsStream
+          ("urls.from.random.text.with.urls.txt"), "UTF-8"));
+      String line;
+      while (null != (line = bufferedReader.readLine())) {
+        line = line.trim();
+        if (line.length() > 0) {
+          urlList.add(line);
+        }
+      }
+      urls = urlList.toArray(new String[urlList.size()]);
+    } finally {
+      if (null != bufferedReader) {
+        bufferedReader.close();
+      }
+    }
+    assertTrue(null != urls && urls.length > 0);
+    BaseTokenStreamTestCase.assertAnalyzesTo
+      (urlAnalyzer, randomTextWithURLs, urls);
+  }
+
   public void testUnicodeWordBreaks() throws Exception {
     WordBreakTestUnicode_6_0_0 wordBreakTest = new WordBreakTestUnicode_6_0_0();
     wordBreakTest.test(a);

Property changes on: modules/analysis/common/src/test/org/apache/lucene/analysis/core/TestUAX29URLEmailTokenizer.java
___________________________________________________________________
Added: svn:eol-style
   + native

Index: modules/analysis/common/src/test/org/apache/lucene/analysis/th/TestThaiAnalyzer.java
===================================================================
--- modules/analysis/common/src/test/org/apache/lucene/analysis/th/TestThaiAnalyzer.java	(revision 1042261)
+++ modules/analysis/common/src/test/org/apache/lucene/analysis/th/TestThaiAnalyzer.java	(working copy)
@@ -123,7 +123,7 @@
       assertAnalyzesToReuse(
           analyzer,
           "บริษัทชื่อ XY&Z - คุยกับ xyz@demo.com",
-          new String[] { "บริษัท", "ชื่อ", "xy", "z", "คุย", "กับ", "xyz@demo.com" });
+          new String[] { "บริษัท", "ชื่อ", "xy", "z", "คุย", "กับ", "xyz", "demo.com" });
 	}
 	
 	/** @deprecated (3.1) for version back compat */
Index: modules/analysis/common/src/java/org/apache/lucene/analysis/standard/UAX29Tokenizer.java
===================================================================
--- modules/analysis/common/src/java/org/apache/lucene/analysis/standard/UAX29Tokenizer.java	(revision 1042261)
+++ modules/analysis/common/src/java/org/apache/lucene/analysis/standard/UAX29Tokenizer.java	(working copy)
@@ -1,847 +0,0 @@
-/* The following code was generated by JFlex 1.5.0-SNAPSHOT on 10/13/10 12:12 AM */
-
-package org.apache.lucene.analysis.standard;
-
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.io.IOException;
-import java.io.Reader;
-
-import org.apache.lucene.analysis.Tokenizer;
-import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
-import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
-import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
-import org.apache.lucene.analysis.tokenattributes.TypeAttribute;
-import org.apache.lucene.util.AttributeSource;
-
-
-/**
- * This class implements Word Break rules from the Unicode Text Segmentation 
- * algorithm, as specified in 
- * <a href="http://unicode.org/reports/tr29/">Unicode Standard Annex #29</a> 
- * <p/>
- * Tokens produced are of the following types:
- * <ul>
- *   <li>&lt;ALPHANUM&gt;: A sequence of alphabetic and numeric characters</li>
- *   <li>&lt;NUM&gt;: A number</li>
- *   <li>&lt;SOUTHEAST_ASIAN&gt;: A sequence of characters from South and Southeast
- *       Asian languages, including Thai, Lao, Myanmar, and Khmer</li>
- *   <li>&lt;IDEOGRAPHIC&gt;: A single CJKV ideographic character</li>
- *   <li>&lt;HIRAGANA&gt;: A single hiragana character</li>
- * </ul>
- * <b>WARNING</b>: Because JFlex does not support Unicode supplementary 
- * characters (characters above the Basic Multilingual Plane, which contains
- * those up to and including U+FFFF), this scanner will not recognize them
- * properly.  If you need to be able to process text containing supplementary 
- * characters, consider using the ICU4J-backed implementation in modules/analysis/icu  
- * (org.apache.lucene.analysis.icu.segmentation.ICUTokenizer)
- * instead of this class, since the ICU4J-backed implementation does not have
- * this limitation.
- */
-
-public final class UAX29Tokenizer extends Tokenizer {
-
-  /** This character denotes the end of file */
-  private static final int YYEOF = -1;
-
-  /** initial size of the lookahead buffer */
-  private static final int ZZ_BUFFERSIZE = 16384;
-
-  /** lexical states */
-  private static final int YYINITIAL = 0;
-
-  /**
-   * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
-   * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
-   *                  at the beginning of a line
-   * l is of the form l = 2*k, k a non negative integer
-   */
-  private static final int ZZ_LEXSTATE[] = { 
-     0, 0
-  };
-
-  /** 
-   * Translates characters to character classes
-   */
-  private static final String ZZ_CMAP_PACKED = 
-    "\47\0\1\7\4\0\1\6\1\0\1\7\1\0\12\3\1\5\1\6"+
-    "\5\0\32\1\4\0\1\10\1\0\32\1\57\0\1\1\2\0\1\2"+
-    "\7\0\1\1\1\0\1\5\2\0\1\1\5\0\27\1\1\0\37\1"+
-    "\1\0\u01ca\1\4\0\14\1\16\0\5\1\7\0\1\1\1\0\1\1"+
-    "\21\0\160\2\5\1\1\0\2\1\2\0\4\1\1\6\7\0\1\1"+
-    "\1\5\3\1\1\0\1\1\1\0\24\1\1\0\123\1\1\0\213\1"+
-    "\1\0\7\2\236\1\11\0\46\1\2\0\1\1\7\0\47\1\1\0"+
-    "\1\6\7\0\55\2\1\0\1\2\1\0\2\2\1\0\2\2\1\0"+
-    "\1\2\10\0\33\1\5\0\4\1\1\5\13\0\4\2\10\0\2\6"+
-    "\2\0\13\2\5\0\53\1\25\2\12\3\1\0\1\3\1\6\1\0"+
-    "\2\1\1\2\143\1\1\0\1\1\10\2\1\0\6\2\2\1\2\2"+
-    "\1\0\4\2\2\1\12\3\3\1\2\0\1\1\17\0\1\2\1\1"+
-    "\1\2\36\1\33\2\2\0\131\1\13\2\1\1\16\0\12\3\41\1"+
-    "\11\2\2\1\2\0\1\6\1\0\1\1\5\0\26\1\4\2\1\1"+
-    "\11\2\1\1\3\2\1\1\5\2\22\0\31\1\3\2\244\0\4\2"+
-    "\66\1\3\2\1\1\22\2\1\1\7\2\12\1\2\2\2\0\12\3"+
-    "\1\0\7\1\1\0\7\1\1\0\3\2\1\0\10\1\2\0\2\1"+
-    "\2\0\26\1\1\0\7\1\1\0\1\1\3\0\4\1\2\0\1\2"+
-    "\1\1\7\2\2\0\2\2\2\0\3\2\1\1\10\0\1\2\4\0"+
-    "\2\1\1\0\3\1\2\2\2\0\12\3\2\1\17\0\3\2\1\0"+
-    "\6\1\4\0\2\1\2\0\26\1\1\0\7\1\1\0\2\1\1\0"+
-    "\2\1\1\0\2\1\2\0\1\2\1\0\5\2\4\0\2\2\2\0"+
-    "\3\2\3\0\1\2\7\0\4\1\1\0\1\1\7\0\12\3\2\2"+
-    "\3\1\1\2\13\0\3\2\1\0\11\1\1\0\3\1\1\0\26\1"+
-    "\1\0\7\1\1\0\2\1\1\0\5\1\2\0\1\2\1\1\10\2"+
-    "\1\0\3\2\1\0\3\2\2\0\1\1\17\0\2\1\2\2\2\0"+
-    "\12\3\21\0\3\2\1\0\10\1\2\0\2\1\2\0\26\1\1\0"+
-    "\7\1\1\0\2\1\1\0\5\1\2\0\1\2\1\1\7\2\2\0"+
-    "\2\2\2\0\3\2\10\0\2\2\4\0\2\1\1\0\3\1\2\2"+
-    "\2\0\12\3\1\0\1\1\20\0\1\2\1\1\1\0\6\1\3\0"+
-    "\3\1\1\0\4\1\3\0\2\1\1\0\1\1\1\0\2\1\3\0"+
-    "\2\1\3\0\3\1\3\0\14\1\4\0\5\2\3\0\3\2\1\0"+
-    "\4\2\2\0\1\1\6\0\1\2\16\0\12\3\21\0\3\2\1\0"+
-    "\10\1\1\0\3\1\1\0\27\1\1\0\12\1\1\0\5\1\3\0"+
-    "\1\1\7\2\1\0\3\2\1\0\4\2\7\0\2\2\1\0\2\1"+
-    "\6\0\2\1\2\2\2\0\12\3\22\0\2\2\1\0\10\1\1\0"+
-    "\3\1\1\0\27\1\1\0\12\1\1\0\5\1\2\0\1\2\1\1"+
-    "\7\2\1\0\3\2\1\0\4\2\7\0\2\2\7\0\1\1\1\0"+
-    "\2\1\2\2\2\0\12\3\1\0\2\1\17\0\2\2\1\0\10\1"+
-    "\1\0\3\1\1\0\51\1\2\0\1\1\7\2\1\0\3\2\1\0"+
-    "\4\2\1\1\10\0\1\2\10\0\2\1\2\2\2\0\12\3\12\0"+
-    "\6\1\2\0\2\2\1\0\22\1\3\0\30\1\1\0\11\1\1\0"+
-    "\1\1\2\0\7\1\3\0\1\2\4\0\6\2\1\0\1\2\1\0"+
-    "\10\2\22\0\2\2\15\0\60\11\1\12\2\11\7\12\5\0\7\11"+
-    "\10\12\1\0\12\3\47\0\2\11\1\0\1\11\2\0\2\11\1\0"+
-    "\1\11\2\0\1\11\6\0\4\11\1\0\7\11\1\0\3\11\1\0"+
-    "\1\11\1\0\1\11\2\0\2\11\1\0\4\11\1\12\2\11\6\12"+
-    "\1\0\2\12\1\11\2\0\5\11\1\0\1\11\1\0\6\12\2\0"+
-    "\12\3\2\0\2\11\42\0\1\1\27\0\2\2\6\0\12\3\13\0"+
-    "\1\2\1\0\1\2\1\0\1\2\4\0\2\2\10\1\1\0\44\1"+
-    "\4\0\24\2\1\0\2\2\5\1\13\2\1\0\44\2\11\0\1\2"+
-    "\71\0\53\11\24\12\1\11\12\3\6\0\6\11\4\12\4\11\3\12"+
-    "\1\11\3\12\2\11\7\12\3\11\4\12\15\11\14\12\1\11\1\12"+
-    "\12\3\4\12\2\11\46\1\12\0\53\1\1\0\1\1\3\0\u0149\1"+
-    "\1\0\4\1\2\0\7\1\1\0\1\1\1\0\4\1\2\0\51\1"+
-    "\1\0\4\1\2\0\41\1\1\0\4\1\2\0\7\1\1\0\1\1"+
-    "\1\0\4\1\2\0\17\1\1\0\71\1\1\0\4\1\2\0\103\1"+
-    "\2\0\3\2\40\0\20\1\20\0\125\1\14\0\u026c\1\2\0\21\1"+
-    "\1\0\32\1\5\0\113\1\3\0\3\1\17\0\15\1\1\0\4\1"+
-    "\3\2\13\0\22\1\3\2\13\0\22\1\2\2\14\0\15\1\1\0"+
-    "\3\1\1\0\2\2\14\0\64\11\40\12\3\0\1\11\4\0\1\11"+
-    "\1\12\2\0\12\3\41\0\3\2\2\0\12\3\6\0\130\1\10\0"+
-    "\51\1\1\2\1\1\5\0\106\1\12\0\35\1\3\0\14\2\4\0"+
-    "\14\2\12\0\12\3\36\11\2\0\5\11\13\0\54\11\4\0\21\12"+
-    "\7\11\2\12\6\0\12\3\1\11\3\0\2\11\40\0\27\1\5\2"+
-    "\4\0\65\11\12\12\1\0\35\12\2\0\1\2\12\3\6\0\12\3"+
-    "\6\0\16\11\122\0\5\2\57\1\21\2\7\1\4\0\12\3\21\0"+
-    "\11\2\14\0\3\2\36\1\12\2\3\0\2\1\12\3\6\0\46\1"+
-    "\16\2\14\0\44\1\24\2\10\0\12\3\3\0\3\1\12\3\44\1"+
-    "\122\0\3\2\1\0\25\2\4\1\1\2\4\1\1\2\15\0\300\1"+
-    "\47\2\25\0\4\2\u0116\1\2\0\6\1\2\0\46\1\2\0\6\1"+
-    "\2\0\10\1\1\0\1\1\1\0\1\1\1\0\1\1\1\0\37\1"+
-    "\2\0\65\1\1\0\7\1\1\0\1\1\3\0\3\1\1\0\7\1"+
-    "\3\0\4\1\2\0\6\1\4\0\15\1\5\0\3\1\1\0\7\1"+
-    "\17\0\4\2\10\0\2\7\12\0\1\7\2\0\1\5\2\0\5\2"+
-    "\20\0\2\10\3\0\1\6\17\0\1\10\13\0\5\2\5\0\6\2"+
-    "\1\0\1\1\15\0\1\1\20\0\15\1\63\0\41\2\21\0\1\1"+
-    "\4\0\1\1\2\0\12\1\1\0\1\1\3\0\5\1\6\0\1\1"+
-    "\1\0\1\1\1\0\1\1\1\0\4\1\1\0\13\1\2\0\4\1"+
-    "\5\0\5\1\4\0\1\1\21\0\51\1\u032d\0\64\1\u0716\0\57\1"+
-    "\1\0\57\1\1\0\205\1\6\0\4\1\3\2\16\0\46\1\12\0"+
-    "\66\1\11\0\1\1\17\0\1\2\27\1\11\0\7\1\1\0\7\1"+
-    "\1\0\7\1\1\0\7\1\1\0\7\1\1\0\7\1\1\0\7\1"+
-    "\1\0\7\1\1\0\40\2\57\0\1\1\120\0\32\13\1\0\131\13"+
-    "\14\0\326\13\57\0\1\1\1\0\1\13\31\0\11\13\6\2\1\0"+
-    "\5\4\2\0\3\13\1\1\1\1\4\0\126\14\2\0\2\2\2\4"+
-    "\3\14\133\4\1\0\4\4\5\0\51\1\3\0\136\1\21\0\33\1"+
-    "\65\0\20\4\320\0\57\4\1\0\130\4\250\0\u19b6\13\112\0\u51cc\13"+
-    "\64\0\u048d\1\103\0\56\1\2\0\u010d\1\3\0\20\1\12\3\2\1"+
-    "\24\0\57\1\4\2\11\0\2\2\1\0\31\1\10\0\120\1\2\2"+
-    "\45\0\11\1\2\0\147\1\2\0\4\1\1\0\2\1\16\0\12\1"+
-    "\120\0\10\1\1\2\3\1\1\2\4\1\1\2\27\1\5\2\30\0"+
-    "\64\1\14\0\2\2\62\1\21\2\13\0\12\3\6\0\22\2\6\1"+
-    "\3\0\1\1\4\0\12\3\34\1\10\2\2\0\27\1\15\2\14\0"+
-    "\35\1\3\0\4\2\57\1\16\2\16\0\1\1\12\3\46\0\51\1"+
-    "\16\2\11\0\3\1\1\2\10\1\2\2\2\0\12\3\6\0\33\11"+
-    "\1\12\4\0\60\11\1\12\1\11\3\12\2\11\2\12\5\11\2\12"+
-    "\1\11\1\12\1\11\30\0\5\11\41\0\6\1\2\0\6\1\2\0"+
-    "\6\1\11\0\7\1\1\0\7\1\221\0\43\1\10\2\1\0\2\2"+
-    "\2\0\12\3\6\0\u2ba4\1\14\0\27\1\4\0\61\1\u2104\0\u012e\13"+
-    "\2\0\76\13\2\0\152\13\46\0\7\1\14\0\5\1\5\0\1\1"+
-    "\1\2\12\1\1\0\15\1\1\0\5\1\1\0\1\1\1\0\2\1"+
-    "\1\0\2\1\1\0\154\1\41\0\u016b\1\22\0\100\1\2\0\66\1"+
-    "\50\0\14\1\4\0\20\2\1\6\2\0\1\5\1\6\13\0\7\2"+
-    "\14\0\2\10\30\0\3\10\1\6\1\0\1\7\1\0\1\6\1\5"+
-    "\32\0\5\1\1\0\207\1\2\0\1\2\7\0\1\7\4\0\1\6"+
-    "\1\0\1\7\1\0\12\3\1\5\1\6\5\0\32\1\4\0\1\10"+
-    "\1\0\32\1\13\0\70\4\2\2\37\1\3\0\6\1\2\0\6\1"+
-    "\2\0\6\1\2\0\3\1\34\0\3\2\4\0";
-
-  /** 
-   * Translates characters to character classes
-   */
-  private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
-
-  /** 
-   * Translates DFA states to action switch labels.
-   */
-  private static final int [] ZZ_ACTION = zzUnpackAction();
-
-  private static final String ZZ_ACTION_PACKED_0 =
-    "\1\0\1\1\1\2\1\3\1\2\1\1\1\4\1\5"+
-    "\1\6\1\2\1\0\1\2\1\0\1\3\2\0";
-
-  private static int [] zzUnpackAction() {
-    int [] result = new int[16];
-    int offset = 0;
-    offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
-    return result;
-  }
-
-  private static int zzUnpackAction(String packed, int offset, int [] result) {
-    int i = 0;       /* index in packed string  */
-    int j = offset;  /* index in unpacked array */
-    int l = packed.length();
-    while (i < l) {
-      int count = packed.charAt(i++);
-      int value = packed.charAt(i++);
-      do result[j++] = value; while (--count > 0);
-    }
-    return j;
-  }
-
-
-  /** 
-   * Translates a state to a row index in the transition table
-   */
-  private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
-
-  private static final String ZZ_ROWMAP_PACKED_0 =
-    "\0\0\0\15\0\32\0\47\0\64\0\101\0\116\0\15"+
-    "\0\15\0\133\0\150\0\165\0\202\0\217\0\101\0\234";
-
-  private static int [] zzUnpackRowMap() {
-    int [] result = new int[16];
-    int offset = 0;
-    offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
-    return result;
-  }
-
-  private static int zzUnpackRowMap(String packed, int offset, int [] result) {
-    int i = 0;  /* index in packed string  */
-    int j = offset;  /* index in unpacked array */
-    int l = packed.length();
-    while (i < l) {
-      int high = packed.charAt(i++) << 16;
-      result[j++] = high | packed.charAt(i++);
-    }
-    return j;
-  }
-
-  /** 
-   * The transition table of the DFA
-   */
-  private static final int [] ZZ_TRANS = zzUnpackTrans();
-
-  private static final String ZZ_TRANS_PACKED_0 =
-    "\1\2\1\3\1\2\1\4\1\5\3\2\1\6\2\7"+
-    "\1\10\1\11\16\0\2\3\1\12\1\0\1\13\1\0"+
-    "\1\13\1\14\1\0\1\3\3\0\1\3\2\4\2\0"+
-    "\2\15\1\16\1\0\1\4\4\0\1\5\1\0\1\5"+
-    "\3\0\1\14\1\0\1\5\3\0\1\3\1\17\1\4"+
-    "\1\5\3\0\1\17\1\0\1\17\13\0\2\7\3\0"+
-    "\1\3\2\12\2\0\2\20\1\14\1\0\1\12\3\0"+
-    "\1\3\1\13\7\0\1\13\3\0\1\3\1\14\1\12"+
-    "\1\5\3\0\1\14\1\0\1\14\4\0\1\15\1\4"+
-    "\6\0\1\15\3\0\1\3\1\16\1\4\1\5\3\0"+
-    "\1\16\1\0\1\16\4\0\1\20\1\12\6\0\1\20"+
-    "\2\0";
-
-  private static int [] zzUnpackTrans() {
-    int [] result = new int[169];
-    int offset = 0;
-    offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
-    return result;
-  }
-
-  private static int zzUnpackTrans(String packed, int offset, int [] result) {
-    int i = 0;       /* index in packed string  */
-    int j = offset;  /* index in unpacked array */
-    int l = packed.length();
-    while (i < l) {
-      int count = packed.charAt(i++);
-      int value = packed.charAt(i++);
-      value--;
-      do result[j++] = value; while (--count > 0);
-    }
-    return j;
-  }
-
-
-  /* error codes */
-  private static final int ZZ_UNKNOWN_ERROR = 0;
-  private static final int ZZ_NO_MATCH = 1;
-  private static final int ZZ_PUSHBACK_2BIG = 2;
-
-  /* error messages for the codes above */
-  private static final String ZZ_ERROR_MSG[] = {
-    "Unkown internal scanner error",
-    "Error: could not match input",
-    "Error: pushback value was too large"
-  };
-
-  /**
-   * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
-   */
-  private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
-
-  private static final String ZZ_ATTRIBUTE_PACKED_0 =
-    "\1\0\1\11\5\1\2\11\1\1\1\0\1\1\1\0"+
-    "\1\1\2\0";
-
-  private static int [] zzUnpackAttribute() {
-    int [] result = new int[16];
-    int offset = 0;
-    offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
-    return result;
-  }
-
-  private static int zzUnpackAttribute(String packed, int offset, int [] result) {
-    int i = 0;       /* index in packed string  */
-    int j = offset;  /* index in unpacked array */
-    int l = packed.length();
-    while (i < l) {
-      int count = packed.charAt(i++);
-      int value = packed.charAt(i++);
-      do result[j++] = value; while (--count > 0);
-    }
-    return j;
-  }
-
-  /** the input device */
-  private java.io.Reader zzReader;
-
-  /** the current state of the DFA */
-  private int zzState;
-
-  /** the current lexical state */
-  private int zzLexicalState = YYINITIAL;
-
-  /** this buffer contains the current text to be matched and is
-      the source of the yytext() string */
-  private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
-
-  /** the textposition at the last accepting state */
-  private int zzMarkedPos;
-
-  /** the current text position in the buffer */
-  private int zzCurrentPos;
-
-  /** startRead marks the beginning of the yytext() string in the buffer */
-  private int zzStartRead;
-
-  /** endRead marks the last character in the buffer, that has been read
-      from input */
-  private int zzEndRead;
-
-  /** number of newlines encountered up to the start of the matched text */
-  private int yyline;
-
-  /** the number of characters up to the start of the matched text */
-  private int yychar;
-
-  /**
-   * the number of characters from the last newline up to the start of the 
-   * matched text
-   */
-  private int yycolumn;
-
-  /** 
-   * zzAtBOL == true <=> the scanner is currently at the beginning of a line
-   */
-  private boolean zzAtBOL = true;
-
-  /** zzAtEOF == true <=> the scanner is at the EOF */
-  private boolean zzAtEOF;
-
-  /** denotes if the user-EOF-code has already been executed */
-  private boolean zzEOFDone;
-
-  /* user code: */
-  /** Alphanumeric sequences */
-  public static final String WORD_TYPE = "<ALPHANUM>";
-  
-  /** Numbers */
-  public static final String NUMERIC_TYPE = "<NUM>";
-  
-  /**
-   * Chars in class \p{Line_Break = Complex_Context} are from South East Asian
-   * scripts (Thai, Lao, Myanmar, Khmer, etc.).  Sequences of these are kept 
-   * together as as a single token rather than broken up, because the logic
-   * required to break them at word boundaries is too complex for UAX#29.
-   * <p>
-   * See Unicode Line Breaking Algorithm: http://www.unicode.org/reports/tr14/#SA
-   */
-  public static final String SOUTH_EAST_ASIAN_TYPE = "<SOUTHEAST_ASIAN>";
-  
-  public static final String IDEOGRAPHIC_TYPE = "<IDEOGRAPHIC>";
-  
-  public static final String HIRAGANA_TYPE = "<HIRAGANA>";
-  
-  private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
-  private final OffsetAttribute offsetAtt = addAttribute(OffsetAttribute.class);
-  private final PositionIncrementAttribute posIncrAtt 
-    = addAttribute(PositionIncrementAttribute.class);
-  private final TypeAttribute typeAtt = addAttribute(TypeAttribute.class);
-  
-  private int maxTokenLength = StandardAnalyzer.DEFAULT_MAX_TOKEN_LENGTH;
-  private int posIncr;
-
-  
-  /**
-   * @param source The AttributeSource to use
-   * @param input The input reader
-   */
-  public UAX29Tokenizer(AttributeSource source, Reader input) {
-    super(source, input);
-    zzReader = input;
-  }
-  
-  /**
-   * @param factory The AttributeFactory to use
-   * @param input The input reader
-   */
-  public UAX29Tokenizer(AttributeFactory factory, Reader input) {
-    super(factory, input); 
-    zzReader = input;
-  }
-  
-  /** 
-   * Set the max allowed token length.  Any token longer than this is skipped.
-   * @param length the new max allowed token length
-   */
-  public void setMaxTokenLength(int length) {
-    this.maxTokenLength = length;
-  }
-
-  /**
-   * Returns the max allowed token length.  Any token longer than this is 
-   * skipped.
-   * @return the max allowed token length 
-   */
-  public int getMaxTokenLength() {
-    return maxTokenLength;
-  }
-
-  @Override
-  public final void end() {
-    // set final offset
-    int finalOffset = correctOffset(yychar + yylength());
-    offsetAtt.setOffset(finalOffset, finalOffset);
-  }
-
-  @Override
-  public void reset(Reader reader) throws IOException {
-    super.reset(reader);
-    yyreset(reader);
-  }
-
-  @Override
-  public final boolean incrementToken() throws IOException {
-    // This method is required because of two JFlex limitations:
-    // 1. No way to insert code at the beginning of the generated scanning
-    //    get-next-token method; and
-    // 2. No way to declare @Override on the generated scanning method.
-    clearAttributes();
-    posIncr = 1;
-    return getNextToken();
-  }
-
-  /**
-   * Populates this TokenStream's CharTermAttribute and OffsetAttribute from
-   * the current match, the TypeAttribute from the passed-in tokenType, and
-   * the PositionIncrementAttribute to one, unless the immediately previous
-   * token(s) was/were skipped because maxTokenLength was exceeded, in which
-   * case the PositionIncrementAttribute is set to one plus the number of
-   * skipped overly long tokens. 
-   * <p/> 
-   * If maxTokenLength is exceeded, the CharTermAttribute is set back to empty
-   * and false is returned.
-   * 
-   * @param tokenType The type of the matching token
-   * @return true there is a token available (not too long); false otherwise 
-   */
-  private boolean populateAttributes(String tokenType) {
-    boolean isTokenAvailable = false;
-    if (yylength() > maxTokenLength) {
-      // When we skip a too-long token, we treat it like a stopword, introducing
-      // a position increment gap
-      ++posIncr;
-    } else {
-      termAtt.copyBuffer(zzBuffer, zzStartRead, yylength());
-      posIncrAtt.setPositionIncrement(posIncr);
-      offsetAtt.setOffset(correctOffset(yychar),
-                          correctOffset(yychar + yylength()));
-      typeAtt.setType(tokenType);
-      isTokenAvailable = true;
-    }
-    return isTokenAvailable;
-  }
-
-
-  /**
-   * Creates a new scanner
-   * There is also a java.io.InputStream version of this constructor.
-   *
-   * @param   in  the java.io.Reader to read input from.
-   */
-  public UAX29Tokenizer(java.io.Reader in) {
-    super(in);
-    this.zzReader = in;
-  }
-
-  /**
-   * Creates a new scanner.
-   * There is also java.io.Reader version of this constructor.
-   *
-   * @param   in  the java.io.Inputstream to read input from.
-   */
-  public UAX29Tokenizer(java.io.InputStream in) {
-    this(new java.io.InputStreamReader(in));
-  }
-
-  /** 
-   * Unpacks the compressed character translation table.
-   *
-   * @param packed   the packed character translation table
-   * @return         the unpacked character translation table
-   */
-  private static char [] zzUnpackCMap(String packed) {
-    char [] map = new char[0x10000];
-    int i = 0;  /* index in packed string  */
-    int j = 0;  /* index in unpacked array */
-    while (i < 2174) {
-      int  count = packed.charAt(i++);
-      char value = packed.charAt(i++);
-      do map[j++] = value; while (--count > 0);
-    }
-    return map;
-  }
-
-
-  /**
-   * Refills the input buffer.
-   *
-   * @return      <code>false</code>, iff there was new input.
-   * 
-   * @exception   java.io.IOException  if any I/O-Error occurs
-   */
-  private boolean zzRefill() throws java.io.IOException {
-
-    /* first: make room (if you can) */
-    if (zzStartRead > 0) {
-      System.arraycopy(zzBuffer, zzStartRead,
-                       zzBuffer, 0,
-                       zzEndRead-zzStartRead);
-
-      /* translate stored positions */
-      zzEndRead-= zzStartRead;
-      zzCurrentPos-= zzStartRead;
-      zzMarkedPos-= zzStartRead;
-      zzStartRead = 0;
-    }
-
-    /* is the buffer big enough? */
-    if (zzCurrentPos >= zzBuffer.length) {
-      /* if not: blow it up */
-      char newBuffer[] = new char[zzCurrentPos*2];
-      System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
-      zzBuffer = newBuffer;
-    }
-
-    /* finally: fill the buffer with new input */
-    int numRead = zzReader.read(zzBuffer, zzEndRead,
-                                            zzBuffer.length-zzEndRead);
-
-    if (numRead > 0) {
-      zzEndRead+= numRead;
-      return false;
-    }
-    // unlikely but not impossible: read 0 characters, but not at end of stream    
-    if (numRead == 0) {
-      int c = zzReader.read();
-      if (c == -1) {
-        return true;
-      } else {
-        zzBuffer[zzEndRead++] = (char) c;
-        return false;
-      }     
-    }
-
-	// numRead < 0
-    return true;
-  }
-
-    
-  /**
-   * Closes the input stream.
-   */
-  private final void yyclose() throws java.io.IOException {
-    zzAtEOF = true;            /* indicate end of file */
-    zzEndRead = zzStartRead;  /* invalidate buffer    */
-
-    if (zzReader != null)
-      zzReader.close();
-  }
-
-
-  /**
-   * Resets the scanner to read from a new input stream.
-   * Does not close the old reader.
-   *
-   * All internal variables are reset, the old input stream 
-   * <b>cannot</b> be reused (internal buffer is discarded and lost).
-   * Lexical state is set to <tt>ZZ_INITIAL</tt>.
-   *
-   * Internal scan buffer is resized down to its initial length, if it has grown.
-   *
-   * @param reader   the new input stream 
-   */
-  private final void yyreset(java.io.Reader reader) {
-    zzReader = reader;
-    zzAtBOL  = true;
-    zzAtEOF  = false;
-    zzEOFDone = false;
-    zzEndRead = zzStartRead = 0;
-    zzCurrentPos = zzMarkedPos = 0;
-    yyline = yychar = yycolumn = 0;
-    zzLexicalState = YYINITIAL;
-    if (zzBuffer.length > ZZ_BUFFERSIZE)
-      zzBuffer = new char[ZZ_BUFFERSIZE];
-  }
-
-
-  /**
-   * Returns the current lexical state.
-   */
-  private final int yystate() {
-    return zzLexicalState;
-  }
-
-
-  /**
-   * Enters a new lexical state
-   *
-   * @param newState the new lexical state
-   */
-  private final void yybegin(int newState) {
-    zzLexicalState = newState;
-  }
-
-
-  /**
-   * Returns the text matched by the current regular expression.
-   */
-  private final String yytext() {
-    return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
-  }
-
-
-  /**
-   * Returns the character at position <tt>pos</tt> from the 
-   * matched text. 
-   * 
-   * It is equivalent to yytext().charAt(pos), but faster
-   *
-   * @param pos the position of the character to fetch. 
-   *            A value from 0 to yylength()-1.
-   *
-   * @return the character at position pos
-   */
-  private final char yycharat(int pos) {
-    return zzBuffer[zzStartRead+pos];
-  }
-
-
-  /**
-   * Returns the length of the matched text region.
-   */
-  private final int yylength() {
-    return zzMarkedPos-zzStartRead;
-  }
-
-
-  /**
-   * Reports an error that occured while scanning.
-   *
-   * In a wellformed scanner (no or only correct usage of 
-   * yypushback(int) and a match-all fallback rule) this method 
-   * will only be called with things that "Can't Possibly Happen".
-   * If this method is called, something is seriously wrong
-   * (e.g. a JFlex bug producing a faulty scanner etc.).
-   *
-   * Usual syntax/scanner level error handling should be done
-   * in error fallback rules.
-   *
-   * @param   errorCode  the code of the errormessage to display
-   */
-  private void zzScanError(int errorCode) {
-    String message;
-    try {
-      message = ZZ_ERROR_MSG[errorCode];
-    }
-    catch (ArrayIndexOutOfBoundsException e) {
-      message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
-    }
-
-    throw new Error(message);
-  } 
-
-
-  /**
-   * Pushes the specified amount of characters back into the input stream.
-   *
-   * They will be read again by then next call of the scanning method
-   *
-   * @param number  the number of characters to be read again.
-   *                This number must not be greater than yylength()!
-   */
-  private void yypushback(int number)  {
-    if ( number > yylength() )
-      zzScanError(ZZ_PUSHBACK_2BIG);
-
-    zzMarkedPos -= number;
-  }
-
-
-  /**
-   * Resumes scanning until the next regular expression is matched,
-   * the end of input is encountered or an I/O-Error occurs.
-   *
-   * @return      the next token
-   * @exception   java.io.IOException  if any I/O-Error occurs
-   */
-  private boolean getNextToken() throws java.io.IOException {
-    int zzInput;
-    int zzAction;
-
-    // cached fields:
-    int zzCurrentPosL;
-    int zzMarkedPosL;
-    int zzEndReadL = zzEndRead;
-    char [] zzBufferL = zzBuffer;
-    char [] zzCMapL = ZZ_CMAP;
-
-    int [] zzTransL = ZZ_TRANS;
-    int [] zzRowMapL = ZZ_ROWMAP;
-    int [] zzAttrL = ZZ_ATTRIBUTE;
-
-    while (true) {
-      zzMarkedPosL = zzMarkedPos;
-
-      yychar+= zzMarkedPosL-zzStartRead;
-
-      zzAction = -1;
-
-      zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
-  
-      zzState = ZZ_LEXSTATE[zzLexicalState];
-
-
-      zzForAction: {
-        while (true) {
-    
-          if (zzCurrentPosL < zzEndReadL)
-            zzInput = zzBufferL[zzCurrentPosL++];
-          else if (zzAtEOF) {
-            zzInput = YYEOF;
-            break zzForAction;
-          }
-          else {
-            // store back cached positions
-            zzCurrentPos  = zzCurrentPosL;
-            zzMarkedPos   = zzMarkedPosL;
-            boolean eof = zzRefill();
-            // get translated positions and possibly new buffer
-            zzCurrentPosL  = zzCurrentPos;
-            zzMarkedPosL   = zzMarkedPos;
-            zzBufferL      = zzBuffer;
-            zzEndReadL     = zzEndRead;
-            if (eof) {
-              zzInput = YYEOF;
-              break zzForAction;
-            }
-            else {
-              zzInput = zzBufferL[zzCurrentPosL++];
-            }
-          }
-          int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
-          if (zzNext == -1) break zzForAction;
-          zzState = zzNext;
-
-          int zzAttributes = zzAttrL[zzState];
-          if ( (zzAttributes & 1) == 1 ) {
-            zzAction = zzState;
-            zzMarkedPosL = zzCurrentPosL;
-            if ( (zzAttributes & 8) == 8 ) break zzForAction;
-          }
-
-        }
-      }
-
-      // store back cached position
-      zzMarkedPos = zzMarkedPosL;
-
-      switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
-        case 5: 
-          { if (populateAttributes(IDEOGRAPHIC_TYPE)) return true;
-          }
-        case 7: break;
-        case 1: 
-          { /* Not numeric, word, ideographic, hiragana, or SE Asian -- ignore it. */
-          }
-        case 8: break;
-        case 3: 
-          { if (populateAttributes(NUMERIC_TYPE)) return true;
-          }
-        case 9: break;
-        case 6: 
-          { if (populateAttributes(HIRAGANA_TYPE)) return true;
-          }
-        case 10: break;
-        case 4: 
-          { if (populateAttributes(SOUTH_EAST_ASIAN_TYPE)) return true;
-          }
-        case 11: break;
-        case 2: 
-          { if (populateAttributes(WORD_TYPE)) return true;
-          }
-        case 12: break;
-        default: 
-          if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
-            zzAtEOF = true;
-              {
-                return false;
-              }
-          } 
-          else {
-            zzScanError(ZZ_NO_MATCH);
-          }
-      }
-    }
-  }
-
-
-}
Index: modules/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardTokenizerImpl.jflex
===================================================================
--- modules/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardTokenizerImpl.jflex	(revision 1042261)
+++ modules/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardTokenizerImpl.jflex	(working copy)
@@ -23,14 +23,11 @@
  * This class implements Word Break rules from the Unicode Text Segmentation 
  * algorithm, as specified in 
  * <a href="http://unicode.org/reports/tr29/">Unicode Standard Annex #29</a> 
- * URLs and email addresses are also tokenized according to the relevant RFCs.
  * <p/>
  * Tokens produced are of the following types:
  * <ul>
  *   <li>&lt;ALPHANUM&gt;: A sequence of alphabetic and numeric characters</li>
  *   <li>&lt;NUM&gt;: A number</li>
- *   <li>&lt;URL&gt;: A URL</li>
- *   <li>&lt;EMAIL&gt;: An email address</li>
  *   <li>&lt;SOUTHEAST_ASIAN&gt;: A sequence of characters from South and Southeast
  *       Asian languages, including Thai, Lao, Myanmar, and Khmer</li>
  *   <li>&lt;IDEOGRAPHIC&gt;: A single CJKV ideographic character</li>
@@ -67,83 +64,6 @@
 ExtendNumLetEx = \p{WB:ExtendNumLet}                [\p{WB:Format}\p{WB:Extend}]*
 
 
-// URL and E-mail syntax specifications:
-//
-//     RFC-952:  DOD INTERNET HOST TABLE SPECIFICATION
-//     RFC-1035: DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION
-//     RFC-1123: Requirements for Internet Hosts - Application and Support
-//     RFC-1738: Uniform Resource Locators (URL)
-//     RFC-3986: Uniform Resource Identifier (URI): Generic Syntax
-//     RFC-5234: Augmented BNF for Syntax Specifications: ABNF
-//     RFC-5321: Simple Mail Transfer Protocol
-//     RFC-5322: Internet Message Format
-
-%include src/java/org/apache/lucene/analysis/standard/ASCIITLD.jflex-macro
-
-DomainLabel = [A-Za-z0-9] ([-A-Za-z0-9]* [A-Za-z0-9])?
-DomainNameStrict = {DomainLabel} ("." {DomainLabel})* {ASCIITLD}
-DomainNameLoose  = {DomainLabel} ("." {DomainLabel})*
-
-IPv4DecimalOctet = "0"{0,2} [0-9] | "0"? [1-9][0-9] | "1" [0-9][0-9] | "2" ([0-4][0-9] | "5" [0-5])
-IPv4Address  = {IPv4DecimalOctet} ("." {IPv4DecimalOctet}){3} 
-IPv6Hex16Bit = [0-9A-Fa-f]{1,4}
-IPv6LeastSignificant32Bits = {IPv4Address} | ({IPv6Hex16Bit} ":" {IPv6Hex16Bit})
-IPv6Address =                                                  ({IPv6Hex16Bit} ":"){6} {IPv6LeastSignificant32Bits}
-            |                                             "::" ({IPv6Hex16Bit} ":"){5} {IPv6LeastSignificant32Bits}
-            |                            {IPv6Hex16Bit}?  "::" ({IPv6Hex16Bit} ":"){4} {IPv6LeastSignificant32Bits}
-            | (({IPv6Hex16Bit} ":"){0,1} {IPv6Hex16Bit})? "::" ({IPv6Hex16Bit} ":"){3} {IPv6LeastSignificant32Bits}
-            | (({IPv6Hex16Bit} ":"){0,2} {IPv6Hex16Bit})? "::" ({IPv6Hex16Bit} ":"){2} {IPv6LeastSignificant32Bits}
-            | (({IPv6Hex16Bit} ":"){0,3} {IPv6Hex16Bit})? "::"  {IPv6Hex16Bit} ":"     {IPv6LeastSignificant32Bits}
-            | (({IPv6Hex16Bit} ":"){0,4} {IPv6Hex16Bit})? "::"                         {IPv6LeastSignificant32Bits}
-            | (({IPv6Hex16Bit} ":"){0,5} {IPv6Hex16Bit})? "::"                         {IPv6Hex16Bit}
-            | (({IPv6Hex16Bit} ":"){0,6} {IPv6Hex16Bit})? "::"
-
-URIunreserved = [-._~A-Za-z0-9]
-URIpercentEncoded = "%" [0-9A-Fa-f]{2}
-URIsubDelims = [!$&'()*+,;=]
-URIloginSegment = ({URIunreserved} | {URIpercentEncoded} | {URIsubDelims})*
-URIlogin = {URIloginSegment} (":" {URIloginSegment})? "@"
-URIquery    = "?" ({URIunreserved} | {URIpercentEncoded} | {URIsubDelims} | [:@/?])*
-URIfragment = "#" ({URIunreserved} | {URIpercentEncoded} | {URIsubDelims} | [:@/?])*
-URIport = ":" [0-9]{1,5}
-URIhostStrict = ("[" {IPv6Address} "]") | {IPv4Address} | {DomainNameStrict}  
-URIhostLoose  = ("[" {IPv6Address} "]") | {IPv4Address} | {DomainNameLoose} 
-
-URIauthorityStrict =             {URIhostStrict} {URIport}?
-URIauthorityLoose  = {URIlogin}? {URIhostLoose}  {URIport}?
-
-HTTPsegment = ({URIunreserved} | {URIpercentEncoded} | [;:@&=])*
-HTTPpath = ("/" {HTTPsegment})*
-HTTPscheme = [hH][tT][tT][pP][sS]? "://"
-HTTPurlFull = {HTTPscheme} {URIauthorityLoose}  {HTTPpath}? {URIquery}? {URIfragment}?
-// {HTTPurlNoScheme} excludes {URIlogin}, because it could otherwise accept e-mail addresses
-HTTPurlNoScheme =          {URIauthorityStrict} {HTTPpath}? {URIquery}? {URIfragment}?
-HTTPurl = {HTTPurlFull} | {HTTPurlNoScheme}
-
-FTPorFILEsegment = ({URIunreserved} | {URIpercentEncoded} | [?:@&=])*
-FTPorFILEpath = "/" {FTPorFILEsegment} ("/" {FTPorFILEsegment})*
-FTPtype = ";" [tT][yY][pP][eE] "=" [aAiIdD]
-FTPscheme = [fF][tT][pP] "://"
-FTPurl = {FTPscheme} {URIauthorityLoose} {FTPorFILEpath} {FTPtype}? {URIfragment}?
-
-FILEscheme = [fF][iI][lL][eE] "://"
-FILEurl = {FILEscheme} {URIhostLoose}? {FTPorFILEpath} {URIfragment}?
-
-URL = {HTTPurl} | {FTPurl} | {FILEurl}
-
-EMAILquotedString = [\"] ([\u0001-\u0008\u000B\u000C\u000E-\u0021\u0023-\u005B\u005D-\u007E] | [\\] [\u0000-\u007F])* [\"]
-EMAILatomText = [A-Za-z0-9!#$%&'*+-/=?\^_`{|}~]
-EMAILlabel = {EMAILatomText}+ | {EMAILquotedString}
-EMAILlocalPart = {EMAILlabel} ("." {EMAILlabel})*
-EMAILdomainLiteralText = [\u0001-\u0008\u000B\u000C\u000E-\u005A\u005E-\u007F] | [\\] [\u0000-\u007F]
-// DFA minimization allows {IPv6Address} and {IPv4Address} to be included 
-// in the {EMAILbracketedHost} definition without incurring any size penalties, 
-// since {EMAILdomainLiteralText} recognizes all valid IP addresses.
-// The IP address regexes are included in {EMAILbracketedHost} simply as a 
-// reminder that they are acceptable bracketed host forms.
-EMAILbracketedHost = "[" ({EMAILdomainLiteralText}* | {IPv4Address} | [iI][pP][vV] "6:" {IPv6Address}) "]"
-EMAIL = {EMAILlocalPart} "@" ({DomainNameStrict} | {EMAILbracketedHost})
-
 %{
   /** Alphanumeric sequences */
   public static final int WORD_TYPE = StandardTokenizer.ALPHANUM;
@@ -151,12 +71,6 @@
   /** Numbers */
   public static final int NUMERIC_TYPE = StandardTokenizer.NUM;
   
-  /** URLs with scheme: HTTP(S), FTP, or FILE; no-scheme URLs match HTTP syntax */
-  public static final int URL_TYPE = StandardTokenizer.URL;
-  
-  /** E-mail addresses */
-  public static final int EMAIL_TYPE = StandardTokenizer.EMAIL;
-  
   /**
    * Chars in class \p{Line_Break = Complex_Context} are from South East Asian
    * scripts (Thai, Lao, Myanmar, Khmer, etc.).  Sequences of these are kept 
@@ -191,9 +105,6 @@
 //
 <<EOF>> { return StandardTokenizerInterface.YYEOF; }
 
-{URL}   { return URL_TYPE; }
-{EMAIL} { return EMAIL_TYPE; }
-
 // UAX#29 WB8.   Numeric × Numeric
 //        WB11.  Numeric (MidNum | MidNumLet) × Numeric
 //        WB12.  Numeric × (MidNum | MidNumLet) Numeric
Index: modules/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardTokenizerImpl.java
===================================================================
--- modules/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardTokenizerImpl.java	(revision 1042261)
+++ modules/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardTokenizerImpl.java	(working copy)
@@ -1,4 +1,4 @@
-/* The following code was generated by JFlex 1.5.0-SNAPSHOT on 10/13/10 12:12 AM */
+/* The following code was generated by JFlex 1.5.0-SNAPSHOT on 12/4/10 7:24 PM */
 
 package org.apache.lucene.analysis.standard;
 
@@ -25,14 +25,11 @@
  * This class implements Word Break rules from the Unicode Text Segmentation 
  * algorithm, as specified in 
  * <a href="http://unicode.org/reports/tr29/">Unicode Standard Annex #29</a> 
- * URLs and email addresses are also tokenized according to the relevant RFCs.
  * <p/>
  * Tokens produced are of the following types:
  * <ul>
  *   <li>&lt;ALPHANUM&gt;: A sequence of alphabetic and numeric characters</li>
  *   <li>&lt;NUM&gt;: A number</li>
- *   <li>&lt;URL&gt;: A URL</li>
- *   <li>&lt;EMAIL&gt;: An email address</li>
  *   <li>&lt;SOUTHEAST_ASIAN&gt;: A sequence of characters from South and Southeast
  *       Asian languages, including Thai, Lao, Myanmar, and Khmer</li>
  *   <li>&lt;IDEOGRAPHIC&gt;: A single CJKV ideographic character</li>
@@ -73,123 +70,115 @@
    * Translates characters to character classes
    */
   private static final String ZZ_CMAP_PACKED = 
-    "\1\101\10\77\2\101\2\77\1\101\23\77\1\102\1\76\1\71\1\102"+
-    "\1\62\1\60\1\65\2\63\2\102\1\64\1\44\1\11\1\70\1\45"+
-    "\1\50\1\55\1\51\1\54\1\46\1\47\1\56\1\53\1\52\1\57"+
-    "\1\74\1\77\1\75\1\77\1\67\1\66\1\12\1\36\1\13\1\14"+
-    "\1\15\1\20\1\21\1\37\1\22\1\40\1\43\1\23\1\24\1\25"+
-    "\1\17\1\27\1\26\1\16\1\30\1\31\1\32\1\41\1\33\1\34"+
-    "\1\42\1\35\1\72\1\100\1\73\1\103\1\61\1\103\1\12\1\36"+
-    "\1\13\1\14\1\15\1\20\1\21\1\37\1\22\1\40\1\43\1\23"+
-    "\1\24\1\25\1\17\1\27\1\26\1\16\1\30\1\31\1\32\1\41"+
-    "\1\33\1\34\1\42\1\35\3\103\1\60\1\104\52\0\1\1\2\0"+
-    "\1\2\7\0\1\1\1\0\1\5\2\0\1\1\5\0\27\1\1\0"+
-    "\37\1\1\0\u01ca\1\4\0\14\1\16\0\5\1\7\0\1\1\1\0"+
-    "\1\1\21\0\160\2\5\1\1\0\2\1\2\0\4\1\1\6\7\0"+
-    "\1\1\1\5\3\1\1\0\1\1\1\0\24\1\1\0\123\1\1\0"+
-    "\213\1\1\0\7\2\236\1\11\0\46\1\2\0\1\1\7\0\47\1"+
-    "\1\0\1\6\7\0\55\2\1\0\1\2\1\0\2\2\1\0\2\2"+
-    "\1\0\1\2\10\0\33\1\5\0\4\1\1\5\13\0\4\2\10\0"+
-    "\2\6\2\0\13\2\5\0\53\1\25\2\12\3\1\0\1\3\1\6"+
-    "\1\0\2\1\1\2\143\1\1\0\1\1\10\2\1\0\6\2\2\1"+
-    "\2\2\1\0\4\2\2\1\12\3\3\1\2\0\1\1\17\0\1\2"+
-    "\1\1\1\2\36\1\33\2\2\0\131\1\13\2\1\1\16\0\12\3"+
-    "\41\1\11\2\2\1\2\0\1\6\1\0\1\1\5\0\26\1\4\2"+
-    "\1\1\11\2\1\1\3\2\1\1\5\2\22\0\31\1\3\2\244\0"+
-    "\4\2\66\1\3\2\1\1\22\2\1\1\7\2\12\1\2\2\2\0"+
-    "\12\3\1\0\7\1\1\0\7\1\1\0\3\2\1\0\10\1\2\0"+
-    "\2\1\2\0\26\1\1\0\7\1\1\0\1\1\3\0\4\1\2\0"+
-    "\1\2\1\1\7\2\2\0\2\2\2\0\3\2\1\1\10\0\1\2"+
-    "\4\0\2\1\1\0\3\1\2\2\2\0\12\3\2\1\17\0\3\2"+
-    "\1\0\6\1\4\0\2\1\2\0\26\1\1\0\7\1\1\0\2\1"+
-    "\1\0\2\1\1\0\2\1\2\0\1\2\1\0\5\2\4\0\2\2"+
-    "\2\0\3\2\3\0\1\2\7\0\4\1\1\0\1\1\7\0\12\3"+
-    "\2\2\3\1\1\2\13\0\3\2\1\0\11\1\1\0\3\1\1\0"+
-    "\26\1\1\0\7\1\1\0\2\1\1\0\5\1\2\0\1\2\1\1"+
-    "\10\2\1\0\3\2\1\0\3\2\2\0\1\1\17\0\2\1\2\2"+
-    "\2\0\12\3\21\0\3\2\1\0\10\1\2\0\2\1\2\0\26\1"+
-    "\1\0\7\1\1\0\2\1\1\0\5\1\2\0\1\2\1\1\7\2"+
-    "\2\0\2\2\2\0\3\2\10\0\2\2\4\0\2\1\1\0\3\1"+
-    "\2\2\2\0\12\3\1\0\1\1\20\0\1\2\1\1\1\0\6\1"+
-    "\3\0\3\1\1\0\4\1\3\0\2\1\1\0\1\1\1\0\2\1"+
-    "\3\0\2\1\3\0\3\1\3\0\14\1\4\0\5\2\3\0\3\2"+
-    "\1\0\4\2\2\0\1\1\6\0\1\2\16\0\12\3\21\0\3\2"+
-    "\1\0\10\1\1\0\3\1\1\0\27\1\1\0\12\1\1\0\5\1"+
-    "\3\0\1\1\7\2\1\0\3\2\1\0\4\2\7\0\2\2\1\0"+
-    "\2\1\6\0\2\1\2\2\2\0\12\3\22\0\2\2\1\0\10\1"+
-    "\1\0\3\1\1\0\27\1\1\0\12\1\1\0\5\1\2\0\1\2"+
-    "\1\1\7\2\1\0\3\2\1\0\4\2\7\0\2\2\7\0\1\1"+
-    "\1\0\2\1\2\2\2\0\12\3\1\0\2\1\17\0\2\2\1\0"+
-    "\10\1\1\0\3\1\1\0\51\1\2\0\1\1\7\2\1\0\3\2"+
-    "\1\0\4\2\1\1\10\0\1\2\10\0\2\1\2\2\2\0\12\3"+
-    "\12\0\6\1\2\0\2\2\1\0\22\1\3\0\30\1\1\0\11\1"+
-    "\1\0\1\1\2\0\7\1\3\0\1\2\4\0\6\2\1\0\1\2"+
-    "\1\0\10\2\22\0\2\2\15\0\60\105\1\106\2\105\7\106\5\0"+
-    "\7\105\10\106\1\0\12\3\47\0\2\105\1\0\1\105\2\0\2\105"+
-    "\1\0\1\105\2\0\1\105\6\0\4\105\1\0\7\105\1\0\3\105"+
-    "\1\0\1\105\1\0\1\105\2\0\2\105\1\0\4\105\1\106\2\105"+
-    "\6\106\1\0\2\106\1\105\2\0\5\105\1\0\1\105\1\0\6\106"+
-    "\2\0\12\3\2\0\2\105\42\0\1\1\27\0\2\2\6\0\12\3"+
-    "\13\0\1\2\1\0\1\2\1\0\1\2\4\0\2\2\10\1\1\0"+
-    "\44\1\4\0\24\2\1\0\2\2\5\1\13\2\1\0\44\2\11\0"+
-    "\1\2\71\0\53\105\24\106\1\105\12\3\6\0\6\105\4\106\4\105"+
-    "\3\106\1\105\3\106\2\105\7\106\3\105\4\106\15\105\14\106\1\105"+
-    "\1\106\12\3\4\106\2\105\46\1\12\0\53\1\1\0\1\1\3\0"+
-    "\u0149\1\1\0\4\1\2\0\7\1\1\0\1\1\1\0\4\1\2\0"+
-    "\51\1\1\0\4\1\2\0\41\1\1\0\4\1\2\0\7\1\1\0"+
-    "\1\1\1\0\4\1\2\0\17\1\1\0\71\1\1\0\4\1\2\0"+
-    "\103\1\2\0\3\2\40\0\20\1\20\0\125\1\14\0\u026c\1\2\0"+
-    "\21\1\1\0\32\1\5\0\113\1\3\0\3\1\17\0\15\1\1\0"+
-    "\4\1\3\2\13\0\22\1\3\2\13\0\22\1\2\2\14\0\15\1"+
-    "\1\0\3\1\1\0\2\2\14\0\64\105\40\106\3\0\1\105\4\0"+
-    "\1\105\1\106\2\0\12\3\41\0\3\2\2\0\12\3\6\0\130\1"+
-    "\10\0\51\1\1\2\1\1\5\0\106\1\12\0\35\1\3\0\14\2"+
-    "\4\0\14\2\12\0\12\3\36\105\2\0\5\105\13\0\54\105\4\0"+
-    "\21\106\7\105\2\106\6\0\12\3\1\105\3\0\2\105\40\0\27\1"+
-    "\5\2\4\0\65\105\12\106\1\0\35\106\2\0\1\2\12\3\6\0"+
-    "\12\3\6\0\16\105\122\0\5\2\57\1\21\2\7\1\4\0\12\3"+
-    "\21\0\11\2\14\0\3\2\36\1\12\2\3\0\2\1\12\3\6\0"+
-    "\46\1\16\2\14\0\44\1\24\2\10\0\12\3\3\0\3\1\12\3"+
-    "\44\1\122\0\3\2\1\0\25\2\4\1\1\2\4\1\1\2\15\0"+
-    "\300\1\47\2\25\0\4\2\u0116\1\2\0\6\1\2\0\46\1\2\0"+
-    "\6\1\2\0\10\1\1\0\1\1\1\0\1\1\1\0\1\1\1\0"+
-    "\37\1\2\0\65\1\1\0\7\1\1\0\1\1\3\0\3\1\1\0"+
-    "\7\1\3\0\4\1\2\0\6\1\4\0\15\1\5\0\3\1\1\0"+
-    "\7\1\17\0\4\2\10\0\2\7\12\0\1\7\2\0\1\5\2\0"+
-    "\5\2\20\0\2\10\3\0\1\6\17\0\1\10\13\0\5\2\5\0"+
-    "\6\2\1\0\1\1\15\0\1\1\20\0\15\1\63\0\41\2\21\0"+
-    "\1\1\4\0\1\1\2\0\12\1\1\0\1\1\3\0\5\1\6\0"+
-    "\1\1\1\0\1\1\1\0\1\1\1\0\4\1\1\0\13\1\2\0"+
-    "\4\1\5\0\5\1\4\0\1\1\21\0\51\1\u032d\0\64\1\u0716\0"+
-    "\57\1\1\0\57\1\1\0\205\1\6\0\4\1\3\2\16\0\46\1"+
-    "\12\0\66\1\11\0\1\1\17\0\1\2\27\1\11\0\7\1\1\0"+
-    "\7\1\1\0\7\1\1\0\7\1\1\0\7\1\1\0\7\1\1\0"+
-    "\7\1\1\0\7\1\1\0\40\2\57\0\1\1\120\0\32\107\1\0"+
-    "\131\107\14\0\326\107\57\0\1\1\1\0\1\107\31\0\11\107\6\2"+
-    "\1\0\5\4\2\0\3\107\1\1\1\1\4\0\126\110\2\0\2\2"+
-    "\2\4\3\110\133\4\1\0\4\4\5\0\51\1\3\0\136\1\21\0"+
-    "\33\1\65\0\20\4\320\0\57\4\1\0\130\4\250\0\u19b6\107\112\0"+
-    "\u51cc\107\64\0\u048d\1\103\0\56\1\2\0\u010d\1\3\0\20\1\12\3"+
-    "\2\1\24\0\57\1\4\2\11\0\2\2\1\0\31\1\10\0\120\1"+
-    "\2\2\45\0\11\1\2\0\147\1\2\0\4\1\1\0\2\1\16\0"+
-    "\12\1\120\0\10\1\1\2\3\1\1\2\4\1\1\2\27\1\5\2"+
-    "\30\0\64\1\14\0\2\2\62\1\21\2\13\0\12\3\6\0\22\2"+
-    "\6\1\3\0\1\1\4\0\12\3\34\1\10\2\2\0\27\1\15\2"+
-    "\14\0\35\1\3\0\4\2\57\1\16\2\16\0\1\1\12\3\46\0"+
-    "\51\1\16\2\11\0\3\1\1\2\10\1\2\2\2\0\12\3\6\0"+
-    "\33\105\1\106\4\0\60\105\1\106\1\105\3\106\2\105\2\106\5\105"+
-    "\2\106\1\105\1\106\1\105\30\0\5\105\41\0\6\1\2\0\6\1"+
-    "\2\0\6\1\11\0\7\1\1\0\7\1\221\0\43\1\10\2\1\0"+
-    "\2\2\2\0\12\3\6\0\u2ba4\1\14\0\27\1\4\0\61\1\u2104\0"+
-    "\u012e\107\2\0\76\107\2\0\152\107\46\0\7\1\14\0\5\1\5\0"+
-    "\1\1\1\2\12\1\1\0\15\1\1\0\5\1\1\0\1\1\1\0"+
-    "\2\1\1\0\2\1\1\0\154\1\41\0\u016b\1\22\0\100\1\2\0"+
-    "\66\1\50\0\14\1\4\0\20\2\1\6\2\0\1\5\1\6\13\0"+
-    "\7\2\14\0\2\10\30\0\3\10\1\6\1\0\1\7\1\0\1\6"+
-    "\1\5\32\0\5\1\1\0\207\1\2\0\1\2\7\0\1\7\4\0"+
-    "\1\6\1\0\1\7\1\0\12\3\1\5\1\6\5\0\32\1\4\0"+
-    "\1\10\1\0\32\1\13\0\70\4\2\2\37\1\3\0\6\1\2\0"+
-    "\6\1\2\0\6\1\2\0\3\1\34\0\3\2\4\0";
+    "\47\0\1\7\4\0\1\6\1\0\1\7\1\0\12\3\1\5\1\6"+
+    "\5\0\32\1\4\0\1\10\1\0\32\1\57\0\1\1\2\0\1\2"+
+    "\7\0\1\1\1\0\1\5\2\0\1\1\5\0\27\1\1\0\37\1"+
+    "\1\0\u01ca\1\4\0\14\1\16\0\5\1\7\0\1\1\1\0\1\1"+
+    "\21\0\160\2\5\1\1\0\2\1\2\0\4\1\1\6\7\0\1\1"+
+    "\1\5\3\1\1\0\1\1\1\0\24\1\1\0\123\1\1\0\213\1"+
+    "\1\0\7\2\236\1\11\0\46\1\2\0\1\1\7\0\47\1\1\0"+
+    "\1\6\7\0\55\2\1\0\1\2\1\0\2\2\1\0\2\2\1\0"+
+    "\1\2\10\0\33\1\5\0\4\1\1\5\13\0\4\2\10\0\2\6"+
+    "\2\0\13\2\5\0\53\1\25\2\12\3\1\0\1\3\1\6\1\0"+
+    "\2\1\1\2\143\1\1\0\1\1\10\2\1\0\6\2\2\1\2\2"+
+    "\1\0\4\2\2\1\12\3\3\1\2\0\1\1\17\0\1\2\1\1"+
+    "\1\2\36\1\33\2\2\0\131\1\13\2\1\1\16\0\12\3\41\1"+
+    "\11\2\2\1\2\0\1\6\1\0\1\1\5\0\26\1\4\2\1\1"+
+    "\11\2\1\1\3\2\1\1\5\2\22\0\31\1\3\2\244\0\4\2"+
+    "\66\1\3\2\1\1\22\2\1\1\7\2\12\1\2\2\2\0\12\3"+
+    "\1\0\7\1\1\0\7\1\1\0\3\2\1\0\10\1\2\0\2\1"+
+    "\2\0\26\1\1\0\7\1\1\0\1\1\3\0\4\1\2\0\1\2"+
+    "\1\1\7\2\2\0\2\2\2\0\3\2\1\1\10\0\1\2\4\0"+
+    "\2\1\1\0\3\1\2\2\2\0\12\3\2\1\17\0\3\2\1\0"+
+    "\6\1\4\0\2\1\2\0\26\1\1\0\7\1\1\0\2\1\1\0"+
+    "\2\1\1\0\2\1\2\0\1\2\1\0\5\2\4\0\2\2\2\0"+
+    "\3\2\3\0\1\2\7\0\4\1\1\0\1\1\7\0\12\3\2\2"+
+    "\3\1\1\2\13\0\3\2\1\0\11\1\1\0\3\1\1\0\26\1"+
+    "\1\0\7\1\1\0\2\1\1\0\5\1\2\0\1\2\1\1\10\2"+
+    "\1\0\3\2\1\0\3\2\2\0\1\1\17\0\2\1\2\2\2\0"+
+    "\12\3\21\0\3\2\1\0\10\1\2\0\2\1\2\0\26\1\1\0"+
+    "\7\1\1\0\2\1\1\0\5\1\2\0\1\2\1\1\7\2\2\0"+
+    "\2\2\2\0\3\2\10\0\2\2\4\0\2\1\1\0\3\1\2\2"+
+    "\2\0\12\3\1\0\1\1\20\0\1\2\1\1\1\0\6\1\3\0"+
+    "\3\1\1\0\4\1\3\0\2\1\1\0\1\1\1\0\2\1\3\0"+
+    "\2\1\3\0\3\1\3\0\14\1\4\0\5\2\3\0\3\2\1\0"+
+    "\4\2\2\0\1\1\6\0\1\2\16\0\12\3\21\0\3\2\1\0"+
+    "\10\1\1\0\3\1\1\0\27\1\1\0\12\1\1\0\5\1\3\0"+
+    "\1\1\7\2\1\0\3\2\1\0\4\2\7\0\2\2\1\0\2\1"+
+    "\6\0\2\1\2\2\2\0\12\3\22\0\2\2\1\0\10\1\1\0"+
+    "\3\1\1\0\27\1\1\0\12\1\1\0\5\1\2\0\1\2\1\1"+
+    "\7\2\1\0\3\2\1\0\4\2\7\0\2\2\7\0\1\1\1\0"+
+    "\2\1\2\2\2\0\12\3\1\0\2\1\17\0\2\2\1\0\10\1"+
+    "\1\0\3\1\1\0\51\1\2\0\1\1\7\2\1\0\3\2\1\0"+
+    "\4\2\1\1\10\0\1\2\10\0\2\1\2\2\2\0\12\3\12\0"+
+    "\6\1\2\0\2\2\1\0\22\1\3\0\30\1\1\0\11\1\1\0"+
+    "\1\1\2\0\7\1\3\0\1\2\4\0\6\2\1\0\1\2\1\0"+
+    "\10\2\22\0\2\2\15\0\60\11\1\12\2\11\7\12\5\0\7\11"+
+    "\10\12\1\0\12\3\47\0\2\11\1\0\1\11\2\0\2\11\1\0"+
+    "\1\11\2\0\1\11\6\0\4\11\1\0\7\11\1\0\3\11\1\0"+
+    "\1\11\1\0\1\11\2\0\2\11\1\0\4\11\1\12\2\11\6\12"+
+    "\1\0\2\12\1\11\2\0\5\11\1\0\1\11\1\0\6\12\2\0"+
+    "\12\3\2\0\2\11\42\0\1\1\27\0\2\2\6\0\12\3\13\0"+
+    "\1\2\1\0\1\2\1\0\1\2\4\0\2\2\10\1\1\0\44\1"+
+    "\4\0\24\2\1\0\2\2\5\1\13\2\1\0\44\2\11\0\1\2"+
+    "\71\0\53\11\24\12\1\11\12\3\6\0\6\11\4\12\4\11\3\12"+
+    "\1\11\3\12\2\11\7\12\3\11\4\12\15\11\14\12\1\11\1\12"+
+    "\12\3\4\12\2\11\46\1\12\0\53\1\1\0\1\1\3\0\u0149\1"+
+    "\1\0\4\1\2\0\7\1\1\0\1\1\1\0\4\1\2\0\51\1"+
+    "\1\0\4\1\2\0\41\1\1\0\4\1\2\0\7\1\1\0\1\1"+
+    "\1\0\4\1\2\0\17\1\1\0\71\1\1\0\4\1\2\0\103\1"+
+    "\2\0\3\2\40\0\20\1\20\0\125\1\14\0\u026c\1\2\0\21\1"+
+    "\1\0\32\1\5\0\113\1\3\0\3\1\17\0\15\1\1\0\4\1"+
+    "\3\2\13\0\22\1\3\2\13\0\22\1\2\2\14\0\15\1\1\0"+
+    "\3\1\1\0\2\2\14\0\64\11\40\12\3\0\1\11\4\0\1\11"+
+    "\1\12\2\0\12\3\41\0\3\2\2\0\12\3\6\0\130\1\10\0"+
+    "\51\1\1\2\1\1\5\0\106\1\12\0\35\1\3\0\14\2\4\0"+
+    "\14\2\12\0\12\3\36\11\2\0\5\11\13\0\54\11\4\0\21\12"+
+    "\7\11\2\12\6\0\12\3\1\11\3\0\2\11\40\0\27\1\5\2"+
+    "\4\0\65\11\12\12\1\0\35\12\2\0\1\2\12\3\6\0\12\3"+
+    "\6\0\16\11\122\0\5\2\57\1\21\2\7\1\4\0\12\3\21\0"+
+    "\11\2\14\0\3\2\36\1\12\2\3\0\2\1\12\3\6\0\46\1"+
+    "\16\2\14\0\44\1\24\2\10\0\12\3\3\0\3\1\12\3\44\1"+
+    "\122\0\3\2\1\0\25\2\4\1\1\2\4\1\1\2\15\0\300\1"+
+    "\47\2\25\0\4\2\u0116\1\2\0\6\1\2\0\46\1\2\0\6\1"+
+    "\2\0\10\1\1\0\1\1\1\0\1\1\1\0\1\1\1\0\37\1"+
+    "\2\0\65\1\1\0\7\1\1\0\1\1\3\0\3\1\1\0\7\1"+
+    "\3\0\4\1\2\0\6\1\4\0\15\1\5\0\3\1\1\0\7\1"+
+    "\17\0\4\2\10\0\2\7\12\0\1\7\2\0\1\5\2\0\5\2"+
+    "\20\0\2\10\3\0\1\6\17\0\1\10\13\0\5\2\5\0\6\2"+
+    "\1\0\1\1\15\0\1\1\20\0\15\1\63\0\41\2\21\0\1\1"+
+    "\4\0\1\1\2\0\12\1\1\0\1\1\3\0\5\1\6\0\1\1"+
+    "\1\0\1\1\1\0\1\1\1\0\4\1\1\0\13\1\2\0\4\1"+
+    "\5\0\5\1\4\0\1\1\21\0\51\1\u032d\0\64\1\u0716\0\57\1"+
+    "\1\0\57\1\1\0\205\1\6\0\4\1\3\2\16\0\46\1\12\0"+
+    "\66\1\11\0\1\1\17\0\1\2\27\1\11\0\7\1\1\0\7\1"+
+    "\1\0\7\1\1\0\7\1\1\0\7\1\1\0\7\1\1\0\7\1"+
+    "\1\0\7\1\1\0\40\2\57\0\1\1\120\0\32\13\1\0\131\13"+
+    "\14\0\326\13\57\0\1\1\1\0\1\13\31\0\11\13\6\2\1\0"+
+    "\5\4\2\0\3\13\1\1\1\1\4\0\126\14\2\0\2\2\2\4"+
+    "\3\14\133\4\1\0\4\4\5\0\51\1\3\0\136\1\21\0\33\1"+
+    "\65\0\20\4\320\0\57\4\1\0\130\4\250\0\u19b6\13\112\0\u51cc\13"+
+    "\64\0\u048d\1\103\0\56\1\2\0\u010d\1\3\0\20\1\12\3\2\1"+
+    "\24\0\57\1\4\2\11\0\2\2\1\0\31\1\10\0\120\1\2\2"+
+    "\45\0\11\1\2\0\147\1\2\0\4\1\1\0\2\1\16\0\12\1"+
+    "\120\0\10\1\1\2\3\1\1\2\4\1\1\2\27\1\5\2\30\0"+
+    "\64\1\14\0\2\2\62\1\21\2\13\0\12\3\6\0\22\2\6\1"+
+    "\3\0\1\1\4\0\12\3\34\1\10\2\2\0\27\1\15\2\14\0"+
+    "\35\1\3\0\4\2\57\1\16\2\16\0\1\1\12\3\46\0\51\1"+
+    "\16\2\11\0\3\1\1\2\10\1\2\2\2\0\12\3\6\0\33\11"+
+    "\1\12\4\0\60\11\1\12\1\11\3\12\2\11\2\12\5\11\2\12"+
+    "\1\11\1\12\1\11\30\0\5\11\41\0\6\1\2\0\6\1\2\0"+
+    "\6\1\11\0\7\1\1\0\7\1\221\0\43\1\10\2\1\0\2\2"+
+    "\2\0\12\3\6\0\u2ba4\1\14\0\27\1\4\0\61\1\u2104\0\u012e\13"+
+    "\2\0\76\13\2\0\152\13\46\0\7\1\14\0\5\1\5\0\1\1"+
+    "\1\2\12\1\1\0\15\1\1\0\5\1\1\0\1\1\1\0\2\1"+
+    "\1\0\2\1\1\0\154\1\41\0\u016b\1\22\0\100\1\2\0\66\1"+
+    "\50\0\14\1\4\0\20\2\1\6\2\0\1\5\1\6\13\0\7\2"+
+    "\14\0\2\10\30\0\3\10\1\6\1\0\1\7\1\0\1\6\1\5"+
+    "\32\0\5\1\1\0\207\1\2\0\1\2\7\0\1\7\4\0\1\6"+
+    "\1\0\1\7\1\0\12\3\1\5\1\6\5\0\32\1\4\0\1\10"+
+    "\1\0\32\1\13\0\70\4\2\2\37\1\3\0\6\1\2\0\6\1"+
+    "\2\0\6\1\2\0\3\1\34\0\3\2\4\0";
 
   /** 
    * Translates characters to character classes
@@ -202,25 +191,11 @@
   private static final int [] ZZ_ACTION = zzUnpackAction();
 
   private static final String ZZ_ACTION_PACKED_0 =
-    "\1\0\1\1\1\2\1\3\1\2\2\1\3\2\3\3"+
-    "\3\1\1\4\1\5\1\6\1\2\1\0\1\2\1\0"+
-    "\1\3\6\0\2\2\1\0\3\2\1\0\1\3\1\0"+
-    "\2\3\1\2\1\3\11\0\32\2\3\0\4\2\32\0"+
-    "\4\3\10\0\1\7\1\0\6\10\3\2\2\10\1\2"+
-    "\4\10\1\2\2\10\2\0\1\2\1\0\1\2\6\10"+
-    "\3\0\2\10\1\0\4\10\1\0\2\10\1\0\2\3"+
-    "\10\0\1\10\32\0\1\10\1\0\3\10\6\2\1\0"+
-    "\1\2\2\0\1\2\1\0\1\10\10\0\3\3\15\0"+
-    "\3\10\6\7\3\0\2\7\1\0\4\7\1\0\2\7"+
-    "\2\10\1\0\2\10\1\0\2\10\1\0\1\10\2\2"+
-    "\7\0\2\3\20\0\1\7\10\0\1\10\3\0\1\2"+
-    "\32\0\3\10\23\0\1\10\27\0\1\10\4\0\1\10"+
-    "\6\0\1\10\4\0\2\10\36\0\1\10\51\0\1\10"+
-    "\42\0\1\10\50\0\1\10\122\0\1\10\116\0\1\10"+
-    "\107\0\1\10\74\0\1\10\51\0\1\10\333\0";
+    "\1\0\1\1\1\2\1\3\1\2\1\1\1\4\1\5"+
+    "\1\6\1\2\1\0\1\2\1\0\1\3\2\0";
 
   private static int [] zzUnpackAction() {
-    int [] result = new int[1117];
+    int [] result = new int[16];
     int offset = 0;
     offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
     return result;
@@ -245,149 +220,11 @@
   private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
 
   private static final String ZZ_ROWMAP_PACKED_0 =
-    "\0\0\0\111\0\222\0\333\0\u0124\0\u016d\0\u01b6\0\u01ff"+
-    "\0\u0248\0\u0291\0\u02da\0\u0323\0\u036c\0\u03b5\0\u03fe\0\u0447"+
-    "\0\u0490\0\111\0\111\0\u04d9\0\u0522\0\u056b\0\u05b4\0\u05fd"+
-    "\0\u016d\0\u0646\0\u01b6\0\u068f\0\u06d8\0\u0721\0\u076a\0\u07b3"+
-    "\0\u07fc\0\u0845\0\u088e\0\u08d7\0\u0920\0\u0969\0\u09b2\0\u09fb"+
-    "\0\u0a44\0\u0a8d\0\u0ad6\0\u03b5\0\u0b1f\0\u0b68\0\u0447\0\u0bb1"+
-    "\0\u0bfa\0\u0c43\0\u0c8c\0\u0cd5\0\u0d1e\0\u0d67\0\u0db0\0\u0df9"+
-    "\0\u0e42\0\u0e8b\0\u0ed4\0\u0f1d\0\u0f66\0\u0faf\0\u0ff8\0\u1041"+
-    "\0\u108a\0\u10d3\0\u111c\0\u1165\0\u11ae\0\u11f7\0\u1240\0\u1289"+
-    "\0\u12d2\0\u131b\0\u1364\0\u13ad\0\u13f6\0\u143f\0\u1488\0\u14d1"+
-    "\0\u151a\0\u1563\0\u15ac\0\u15f5\0\u163e\0\u1687\0\u16d0\0\u1719"+
-    "\0\u1762\0\u17ab\0\u17f4\0\u183d\0\u1886\0\u18cf\0\u1918\0\u1961"+
-    "\0\u19aa\0\u19f3\0\u1a3c\0\u1a85\0\u1ace\0\u1b17\0\u1b60\0\u1ba9"+
-    "\0\u1bf2\0\u1c3b\0\u1c84\0\u1ccd\0\u1d16\0\u1d5f\0\u1da8\0\u1df1"+
-    "\0\u1e3a\0\u1e83\0\u1ecc\0\u1f15\0\u1f5e\0\u1fa7\0\u1ff0\0\u2039"+
-    "\0\u2082\0\u20cb\0\u2114\0\111\0\u215d\0\u21a6\0\u21ef\0\u2238"+
-    "\0\u2281\0\u22ca\0\u2313\0\u235c\0\u23a5\0\u23ee\0\u2437\0\u2480"+
-    "\0\u24c9\0\u2512\0\u255b\0\u25a4\0\u25ed\0\u2636\0\u267f\0\u26c8"+
-    "\0\u2711\0\u275a\0\u27a3\0\u27ec\0\u2835\0\u287e\0\u28c7\0\u2910"+
-    "\0\u2959\0\u29a2\0\u29eb\0\u2a34\0\u2a7d\0\u2ac6\0\u2b0f\0\u2b58"+
-    "\0\u2ba1\0\u2bea\0\u2c33\0\u2c7c\0\u2cc5\0\u2d0e\0\u2d57\0\u2da0"+
-    "\0\u2de9\0\u2e32\0\u2e7b\0\u2ec4\0\u2f0d\0\u2f56\0\u2f9f\0\u2fe8"+
-    "\0\u3031\0\u307a\0\u30c3\0\u310c\0\u3155\0\u319e\0\u31e7\0\u3230"+
-    "\0\u3279\0\u32c2\0\u330b\0\u3354\0\u339d\0\u33e6\0\u342f\0\u3478"+
-    "\0\u34c1\0\u350a\0\u3553\0\u359c\0\u35e5\0\u362e\0\u3677\0\u36c0"+
-    "\0\u3709\0\u3752\0\u379b\0\u37e4\0\u382d\0\u3876\0\u38bf\0\u3908"+
-    "\0\u3951\0\u399a\0\u39e3\0\u3a2c\0\u3a75\0\u3abe\0\u3b07\0\u3b50"+
-    "\0\u3b99\0\u3be2\0\u3c2b\0\u3c74\0\u3cbd\0\u3d06\0\u3d4f\0\u3d98"+
-    "\0\u3de1\0\u3e2a\0\u3e73\0\u3ebc\0\u3f05\0\u3f4e\0\u3f97\0\u3fe0"+
-    "\0\u4029\0\u4072\0\u40bb\0\u4104\0\u414d\0\u4196\0\u41df\0\u4228"+
-    "\0\u4271\0\u42ba\0\u4303\0\u434c\0\u4395\0\u43de\0\u4427\0\u4470"+
-    "\0\u44b9\0\u4502\0\u454b\0\u4594\0\u45dd\0\u4626\0\u466f\0\u46b8"+
-    "\0\u4701\0\u474a\0\u4793\0\u47dc\0\u4825\0\u486e\0\u48b7\0\u4900"+
-    "\0\u4949\0\u4992\0\u49db\0\u4a24\0\u4a6d\0\u4ab6\0\u4aff\0\u4b48"+
-    "\0\u4b91\0\u4bda\0\u4c23\0\u4c6c\0\u4cb5\0\u4cfe\0\u4d47\0\u4d90"+
-    "\0\u4dd9\0\u4e22\0\u4e6b\0\u4eb4\0\u4efd\0\u4f46\0\u4f8f\0\u4fd8"+
-    "\0\u5021\0\u506a\0\u50b3\0\u50fc\0\u5145\0\u518e\0\u51d7\0\u5220"+
-    "\0\u5269\0\u52b2\0\u52fb\0\u5344\0\u538d\0\u53d6\0\u541f\0\u5468"+
-    "\0\u54b1\0\u54fa\0\u5543\0\u20cb\0\u558c\0\u55d5\0\u561e\0\u5667"+
-    "\0\u56b0\0\u56f9\0\u5742\0\u578b\0\u57d4\0\u581d\0\u5866\0\u58af"+
-    "\0\u58f8\0\u5941\0\u598a\0\u59d3\0\u5a1c\0\u5a65\0\u5aae\0\u5af7"+
-    "\0\u5b40\0\u5b89\0\u5bd2\0\u5c1b\0\u5c64\0\u5cad\0\u5cf6\0\u5d3f"+
-    "\0\u5d88\0\u5dd1\0\u5e1a\0\u5e63\0\u5eac\0\u5ef5\0\u5f3e\0\u5f87"+
-    "\0\u5fd0\0\u6019\0\u6062\0\u60ab\0\u60f4\0\u613d\0\u6186\0\u61cf"+
-    "\0\u6218\0\u6261\0\u62aa\0\u62f3\0\u633c\0\u6385\0\u63ce\0\u6417"+
-    "\0\u6460\0\u64a9\0\u64f2\0\u653b\0\u6584\0\u65cd\0\u6616\0\u665f"+
-    "\0\u66a8\0\u66f1\0\u673a\0\u6783\0\u67cc\0\u6815\0\u685e\0\u68a7"+
-    "\0\u68f0\0\u6939\0\u6982\0\u69cb\0\u6a14\0\u6a5d\0\u6aa6\0\u6aef"+
-    "\0\u6b38\0\u6b81\0\u6bca\0\u6c13\0\u6c5c\0\u6ca5\0\u6cee\0\u6d37"+
-    "\0\u6d80\0\u6dc9\0\u6e12\0\u6e5b\0\u6ea4\0\u6eed\0\u6f36\0\u6f7f"+
-    "\0\u6fc8\0\u7011\0\u705a\0\u70a3\0\u70ec\0\u7135\0\u717e\0\u71c7"+
-    "\0\u7210\0\u03fe\0\u7259\0\u72a2\0\u72eb\0\u7334\0\u737d\0\u73c6"+
-    "\0\u740f\0\u7458\0\u74a1\0\u74ea\0\u7533\0\u757c\0\u75c5\0\u760e"+
-    "\0\u7657\0\u76a0\0\u76e9\0\u7732\0\u777b\0\u77c4\0\u780d\0\u7856"+
-    "\0\u789f\0\u78e8\0\u7931\0\u797a\0\u79c3\0\u7a0c\0\u7a55\0\u7a9e"+
-    "\0\u7ae7\0\u7b30\0\u7b79\0\u7bc2\0\u7c0b\0\u7c54\0\u7c9d\0\u7ce6"+
-    "\0\u7d2f\0\u7d78\0\u7dc1\0\u7e0a\0\u7e53\0\u7e9c\0\u7ee5\0\u7f2e"+
-    "\0\u7f77\0\u7fc0\0\u8009\0\u8052\0\u809b\0\u80e4\0\u812d\0\u8176"+
-    "\0\u81bf\0\u8208\0\u8251\0\u829a\0\u82e3\0\u832c\0\u8375\0\u83be"+
-    "\0\u8407\0\u8450\0\u8499\0\u84e2\0\u852b\0\u8574\0\u85bd\0\u8606"+
-    "\0\u864f\0\u8698\0\u86e1\0\u872a\0\u8773\0\u87bc\0\u8805\0\u884e"+
-    "\0\u8897\0\u88e0\0\u8929\0\u8972\0\u89bb\0\u8a04\0\u8a4d\0\u8a96"+
-    "\0\u8adf\0\u8b28\0\u8b71\0\u8bba\0\u8c03\0\u8c4c\0\u8c95\0\u8cde"+
-    "\0\u8d27\0\u8d70\0\u8db9\0\u8e02\0\u8e4b\0\u8e94\0\u8edd\0\u8f26"+
-    "\0\u8f6f\0\u8fb8\0\u9001\0\u904a\0\u9093\0\u90dc\0\u9125\0\u916e"+
-    "\0\u91b7\0\u9200\0\u9249\0\u9292\0\u92db\0\u9324\0\u936d\0\u93b6"+
-    "\0\u93ff\0\u9448\0\u9491\0\u94da\0\u9523\0\u956c\0\u95b5\0\u95fe"+
-    "\0\u9647\0\u9690\0\u96d9\0\u9722\0\u976b\0\u97b4\0\u97fd\0\u9846"+
-    "\0\u988f\0\u98d8\0\u9921\0\u996a\0\u99b3\0\u99fc\0\u9a45\0\u9a8e"+
-    "\0\u9ad7\0\u9b20\0\u9b69\0\u9bb2\0\u9bfb\0\u9c44\0\u9c8d\0\u9cd6"+
-    "\0\u9d1f\0\u9d68\0\u9db1\0\u9dfa\0\u9e43\0\u9e8c\0\u9ed5\0\u9f1e"+
-    "\0\u9f67\0\u9fb0\0\u9ff9\0\ua042\0\ua08b\0\ua0d4\0\ua11d\0\ua166"+
-    "\0\ua1af\0\ua1f8\0\ua241\0\ua28a\0\ua2d3\0\ua31c\0\ua365\0\ua3ae"+
-    "\0\ua3f7\0\ua440\0\ua489\0\ua4d2\0\ua51b\0\ua564\0\ua5ad\0\ua5f6"+
-    "\0\ua63f\0\ua688\0\ua6d1\0\ua71a\0\ua763\0\ua7ac\0\ua7f5\0\ua83e"+
-    "\0\ua887\0\ua8d0\0\ua919\0\ua962\0\ua9ab\0\ua9f4\0\uaa3d\0\uaa86"+
-    "\0\uaacf\0\uab18\0\uab61\0\uabaa\0\uabf3\0\uac3c\0\uac85\0\uacce"+
-    "\0\uad17\0\uad60\0\uada9\0\uadf2\0\uae3b\0\uae84\0\uaecd\0\uaf16"+
-    "\0\uaf5f\0\uafa8\0\uaff1\0\ub03a\0\ub083\0\ub0cc\0\ub115\0\ub15e"+
-    "\0\ub1a7\0\ub1f0\0\ub239\0\ub282\0\ub2cb\0\ub314\0\ub35d\0\ub3a6"+
-    "\0\ub3ef\0\ub438\0\ub481\0\ub4ca\0\ub513\0\ub55c\0\ub5a5\0\ub5ee"+
-    "\0\ub637\0\ub680\0\ub6c9\0\ub712\0\ub75b\0\ub7a4\0\ub7ed\0\ub836"+
-    "\0\ub87f\0\ub8c8\0\ub911\0\ub95a\0\ub9a3\0\ub9ec\0\uba35\0\uba7e"+
-    "\0\ubac7\0\ubb10\0\ubb59\0\ubba2\0\ubbeb\0\ubc34\0\ubc7d\0\ubcc6"+
-    "\0\ubd0f\0\ubd58\0\ubda1\0\ubdea\0\ube33\0\ube7c\0\ubec5\0\ubf0e"+
-    "\0\ubf57\0\ubfa0\0\ubfe9\0\uc032\0\uc07b\0\uc0c4\0\uc10d\0\uc156"+
-    "\0\uc19f\0\uc1e8\0\uc231\0\uc27a\0\uc2c3\0\uc30c\0\uc355\0\uc39e"+
-    "\0\uc3e7\0\uc430\0\uc479\0\uc4c2\0\uc50b\0\uc554\0\uc59d\0\uc5e6"+
-    "\0\uc62f\0\uc678\0\uc6c1\0\uc70a\0\uc753\0\uc79c\0\uc7e5\0\uc82e"+
-    "\0\uc877\0\uc8c0\0\uc909\0\uc952\0\uc99b\0\uc9e4\0\uca2d\0\uca76"+
-    "\0\ucabf\0\ucb08\0\ucb51\0\ucb9a\0\ucbe3\0\ucc2c\0\ucc75\0\uccbe"+
-    "\0\ucd07\0\ucd50\0\ucd99\0\ucde2\0\uce2b\0\uce74\0\ucebd\0\ucf06"+
-    "\0\ucf4f\0\ucf98\0\ucfe1\0\ud02a\0\ud073\0\ud0bc\0\ud105\0\ud14e"+
-    "\0\ud197\0\ud1e0\0\ud229\0\ud272\0\ud2bb\0\ud304\0\ud34d\0\ud396"+
-    "\0\ud3df\0\ud428\0\ud471\0\ud4ba\0\ud503\0\ud54c\0\ud595\0\ud5de"+
-    "\0\ud627\0\ud670\0\ud6b9\0\ud702\0\ud74b\0\ud794\0\ud7dd\0\ud826"+
-    "\0\ud86f\0\ud8b8\0\ud901\0\ud94a\0\ud993\0\ud9dc\0\uda25\0\uda6e"+
-    "\0\udab7\0\udb00\0\udb49\0\udb92\0\udbdb\0\udc24\0\udc6d\0\udcb6"+
-    "\0\udcff\0\udd48\0\udd91\0\uddda\0\ude23\0\ude6c\0\udeb5\0\udefe"+
-    "\0\udf47\0\udf90\0\udfd9\0\ue022\0\ue06b\0\ue0b4\0\ue0fd\0\ue146"+
-    "\0\ue18f\0\ue1d8\0\ue221\0\ue26a\0\ue2b3\0\ue2fc\0\ue345\0\ue38e"+
-    "\0\ue3d7\0\ue420\0\ue469\0\ue4b2\0\ue4fb\0\ue544\0\ue58d\0\ue5d6"+
-    "\0\ue61f\0\ue668\0\ue6b1\0\ue6fa\0\ue743\0\ue78c\0\ue7d5\0\ue81e"+
-    "\0\ue867\0\ue8b0\0\ue8f9\0\ue942\0\ue98b\0\ue9d4\0\uea1d\0\uea66"+
-    "\0\ueaaf\0\ueaf8\0\ueb41\0\ueb8a\0\uebd3\0\uec1c\0\uec65\0\uecae"+
-    "\0\uecf7\0\ued40\0\ued89\0\uedd2\0\uee1b\0\uee64\0\ueead\0\ueef6"+
-    "\0\uef3f\0\uef88\0\uefd1\0\uf01a\0\uf063\0\uf0ac\0\uf0f5\0\uf13e"+
-    "\0\uf187\0\uf1d0\0\uf219\0\uf262\0\uf2ab\0\uf2f4\0\uf33d\0\uf386"+
-    "\0\uf3cf\0\uf418\0\uf461\0\uf4aa\0\uf4f3\0\uf53c\0\uf585\0\uf5ce"+
-    "\0\uf617\0\uf660\0\uf6a9\0\uf6f2\0\uf73b\0\uf784\0\uf7cd\0\uf816"+
-    "\0\uf85f\0\uf8a8\0\uf8f1\0\uf93a\0\uf983\0\uf9cc\0\ufa15\0\ufa5e"+
-    "\0\ufaa7\0\ufaf0\0\ufb39\0\ufb82\0\ufbcb\0\ufc14\0\ufc5d\0\ufca6"+
-    "\0\ufcef\0\ufd38\0\ufd81\0\ufdca\0\ufe13\0\ufe5c\0\ufea5\0\ufeee"+
-    "\0\uff37\0\uff80\0\uffc9\1\22\1\133\1\244\1\355\1\u0136"+
-    "\1\u017f\1\u01c8\1\u0211\1\u025a\1\u02a3\1\u02ec\1\u0335\1\u037e"+
-    "\1\u03c7\1\u0410\1\u0459\1\u04a2\1\u04eb\1\u0534\1\u057d\1\u05c6"+
-    "\1\u060f\1\u0658\1\u06a1\1\u06ea\1\u0733\1\u077c\1\u07c5\1\u080e"+
-    "\1\u0857\1\u08a0\1\u08e9\1\u0932\1\u097b\1\u09c4\1\u0a0d\1\u0a56"+
-    "\1\u0a9f\1\u0ae8\1\u0b31\1\u0b7a\1\u0bc3\1\u0c0c\1\u0c55\1\u0c9e"+
-    "\1\u0ce7\1\u0d30\1\u0d79\1\u0dc2\1\u0e0b\1\u0e54\1\u0e9d\1\u0ee6"+
-    "\1\u0f2f\1\u0f78\1\u0fc1\1\u100a\1\u1053\1\u109c\1\u10e5\1\u112e"+
-    "\1\u1177\1\u11c0\1\u1209\1\u1252\1\u129b\1\u12e4\1\u132d\1\u1376"+
-    "\1\u13bf\1\u1408\1\u1451\1\u149a\1\u14e3\1\u152c\1\u1575\1\u15be"+
-    "\1\u1607\1\u1650\1\u1699\1\u16e2\1\u172b\1\u1774\1\u17bd\1\u1806"+
-    "\1\u184f\1\u1898\1\u18e1\1\u192a\1\u1973\1\u19bc\1\u1a05\1\u1a4e"+
-    "\1\u1a97\1\u1ae0\1\u1b29\1\u1b72\1\u1bbb\1\u1c04\1\u1c4d\1\u1c96"+
-    "\1\u1cdf\1\u1d28\1\u1d71\1\u1dba\1\u1e03\1\u1e4c\1\u1e95\1\u1ede"+
-    "\1\u1f27\1\u1f70\1\u1fb9\1\u2002\1\u204b\1\u2094\1\u20dd\1\u2126"+
-    "\1\u216f\1\u21b8\1\u2201\1\u224a\1\u2293\1\u22dc\1\u2325\1\u236e"+
-    "\1\u23b7\1\u2400\1\u2449\1\u2492\1\u24db\1\u2524\1\u256d\1\u25b6"+
-    "\1\u25ff\1\u2648\1\u2691\1\u26da\1\u2723\1\u276c\1\u27b5\1\u27fe"+
-    "\1\u2847\1\u2890\1\u28d9\1\u2922\1\u296b\1\u29b4\1\u29fd\1\u2a46"+
-    "\1\u2a8f\1\u2ad8\1\u2b21\1\u2b6a\1\u2bb3\1\u2bfc\1\u2c45\1\u2c8e"+
-    "\1\u2cd7\1\u2d20\1\u2d69\1\u2db2\1\u2dfb\1\u2e44\1\u2e8d\1\u2ed6"+
-    "\1\u2f1f\1\u2f68\1\u2fb1\1\u2ffa\1\u3043\1\u308c\1\u30d5\1\u311e"+
-    "\1\u3167\1\u31b0\1\u31f9\1\u3242\1\u328b\1\u32d4\1\u331d\1\u3366"+
-    "\1\u33af\1\u33f8\1\u3441\1\u348a\1\u34d3\1\u351c\1\u3565\1\u35ae"+
-    "\1\u35f7\1\u3640\1\u3689\1\u36d2\1\u371b\1\u3764\1\u37ad\1\u37f6"+
-    "\1\u383f\1\u3888\1\u38d1\1\u391a\1\u3963\1\u39ac\1\u39f5\1\u3a3e"+
-    "\1\u3a87\1\u3ad0\1\u3b19\1\u3b62\1\u3bab";
+    "\0\0\0\15\0\32\0\47\0\64\0\101\0\116\0\15"+
+    "\0\15\0\133\0\150\0\165\0\202\0\217\0\101\0\234";
 
   private static int [] zzUnpackRowMap() {
-    int [] result = new int[1117];
+    int [] result = new int[16];
     int offset = 0;
     offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
     return result;
@@ -410,1848 +247,21 @@
   private static final int [] ZZ_TRANS = zzUnpackTrans();
 
   private static final String ZZ_TRANS_PACKED_0 =
-    "\1\2\1\3\1\2\1\4\1\5\3\2\1\6\1\7"+
-    "\6\10\1\11\16\10\1\12\4\10\1\7\1\13\2\14"+
-    "\1\13\4\14\1\15\1\14\1\2\1\7\1\16\1\7"+
-    "\1\2\2\7\1\2\3\7\1\17\2\2\1\7\1\20"+
-    "\3\2\2\7\1\2\2\21\1\22\1\23\112\0\2\3"+
-    "\1\24\1\0\1\25\1\0\1\25\1\26\1\25\32\3"+
-    "\1\0\12\24\1\25\1\0\1\26\3\0\1\25\20\0"+
-    "\1\3\3\0\1\3\2\4\2\0\2\27\1\30\1\27"+
-    "\32\3\1\0\12\4\2\0\1\30\2\0\2\27\6\0"+
-    "\1\27\11\0\1\4\4\0\1\5\1\0\1\5\3\0"+
-    "\1\26\50\0\1\26\24\0\1\5\3\0\1\3\1\31"+
-    "\1\4\1\5\3\0\1\31\1\0\32\3\1\0\12\4"+
-    "\2\0\1\31\24\0\1\31\13\0\1\32\45\33\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\6\0\2\3\1\24\1\0\1\25\1\0\1\25"+
-    "\1\26\1\35\32\10\1\36\12\37\1\25\1\33\1\40"+
-    "\1\33\1\0\1\33\1\41\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\2\0\1\3\3\0\2\3\1\24\1\0"+
-    "\1\25\1\0\1\25\1\26\1\35\10\10\1\42\6\10"+
-    "\1\43\12\10\1\36\12\37\1\25\1\33\1\40\1\33"+
-    "\1\0\1\33\1\41\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\2\0\1\3\3\0\2\3\1\24\1\0\1\25"+
-    "\1\0\1\25\1\26\1\35\17\10\1\44\12\10\1\36"+
-    "\12\37\1\25\1\33\1\40\1\33\1\0\1\33\1\41"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\2\0\1\3"+
-    "\3\0\1\3\2\4\2\0\2\27\1\30\1\45\32\10"+
-    "\1\36\12\14\1\0\1\33\1\46\1\33\1\0\2\47"+
-    "\1\34\3\33\2\0\1\27\1\33\4\0\2\33\2\0"+
-    "\1\4\3\0\1\3\2\4\2\0\2\27\1\30\1\45"+
-    "\32\10\1\36\12\50\1\0\1\33\1\46\1\33\1\0"+
-    "\2\47\1\34\3\33\2\0\1\27\1\33\4\0\2\33"+
-    "\2\0\1\4\3\0\1\3\2\4\2\0\2\27\1\30"+
-    "\1\45\32\10\1\36\1\14\1\51\1\50\2\14\2\50"+
-    "\2\14\1\50\1\0\1\33\1\46\1\33\1\0\2\47"+
-    "\1\34\3\33\2\0\1\27\1\33\4\0\2\33\2\0"+
-    "\1\4\3\0\1\3\1\31\1\4\1\5\3\0\1\31"+
-    "\1\32\32\52\1\33\12\53\1\0\1\33\1\54\1\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\2\0\1\31\14\0\4\55\2\0\1\55\15\0\1\55"+
-    "\6\0\12\55\1\56\42\0\65\57\1\60\1\57\1\61"+
-    "\1\0\2\57\112\0\2\21\3\0\1\3\2\24\2\0"+
-    "\2\62\1\26\1\62\32\3\1\0\12\24\2\0\1\26"+
-    "\2\0\2\62\6\0\1\62\11\0\1\24\3\0\1\3"+
-    "\1\25\7\0\32\3\42\0\1\25\3\0\1\3\1\26"+
-    "\1\24\1\5\3\0\1\26\1\0\32\3\1\0\12\24"+
-    "\2\0\1\26\24\0\1\26\4\0\1\27\1\4\41\0"+
-    "\12\4\27\0\1\27\3\0\1\3\1\30\1\4\1\5"+
-    "\3\0\1\30\1\0\32\3\1\0\12\4\2\0\1\30"+
-    "\24\0\1\30\13\0\1\32\45\33\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\1\57\3\0\2\33"+
-    "\17\0\32\63\1\0\12\63\13\0\1\64\17\0\1\3"+
-    "\1\25\6\0\1\32\1\65\1\66\1\67\1\70\1\71"+
-    "\1\72\1\73\1\74\1\75\1\76\1\77\1\100\1\101"+
-    "\1\102\1\103\1\104\1\105\1\106\1\107\1\110\1\111"+
-    "\1\112\1\113\1\114\1\115\1\116\1\33\12\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\1\57"+
-    "\3\0\2\33\2\0\1\25\13\0\1\32\32\117\1\36"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\6\0\1\3\2\24\2\0\2\62"+
-    "\1\26\1\120\32\10\1\36\12\37\1\0\1\33\1\40"+
-    "\1\33\1\0\2\121\1\34\3\33\2\0\1\62\1\33"+
-    "\4\0\2\33\2\0\1\24\3\0\1\3\1\26\1\24"+
-    "\1\5\3\0\1\26\1\32\32\52\1\33\12\122\1\0"+
-    "\1\33\1\40\1\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\2\0\1\26\3\0\1\3\1\25"+
-    "\6\0\1\32\32\52\13\33\1\0\3\33\1\0\2\33"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\2\0\1\25"+
-    "\3\0\2\3\1\24\1\0\1\25\1\0\1\25\1\26"+
-    "\1\35\11\10\1\123\20\10\1\36\12\37\1\25\1\33"+
-    "\1\40\1\33\1\0\1\33\1\41\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\2\0\1\3\3\0\2\3\1\24"+
-    "\1\0\1\25\1\0\1\25\1\26\1\35\15\10\1\124"+
-    "\14\10\1\36\12\37\1\25\1\33\1\40\1\33\1\0"+
-    "\1\33\1\41\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\2\0\1\3\3\0\2\3\1\24\1\0\1\25\1\0"+
-    "\1\25\1\26\1\35\17\10\1\125\12\10\1\36\12\37"+
-    "\1\25\1\33\1\40\1\33\1\0\1\33\1\41\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\2\0\1\3\4\0"+
-    "\1\27\1\4\5\0\1\32\1\126\1\127\1\130\1\131"+
-    "\1\132\1\133\1\134\1\135\1\136\1\137\1\140\1\141"+
-    "\1\142\1\143\1\144\1\145\1\146\1\147\1\150\1\151"+
-    "\1\152\1\153\1\154\1\155\1\156\1\157\1\33\1\160"+
-    "\2\161\1\160\4\161\1\162\1\161\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\1\57\3\0\2\33"+
-    "\2\0\1\27\3\0\1\3\1\30\1\4\1\5\3\0"+
-    "\1\30\1\32\32\52\1\33\12\53\1\0\1\33\1\46"+
-    "\1\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\2\0\1\30\4\0\1\27\1\4\5\0\1\32"+
-    "\33\33\12\53\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\2\0\1\27\3\0\1\3"+
-    "\2\4\2\0\2\27\1\30\1\45\32\10\1\36\12\163"+
-    "\1\0\1\33\1\46\1\33\1\0\2\47\1\34\3\33"+
-    "\2\0\1\27\1\33\4\0\2\33\2\0\1\4\3\0"+
-    "\1\3\2\4\2\0\2\27\1\30\1\45\32\10\1\36"+
-    "\2\50\1\163\2\50\2\163\2\50\1\163\1\0\1\33"+
-    "\1\46\1\33\1\0\2\47\1\34\3\33\2\0\1\27"+
-    "\1\33\4\0\2\33\2\0\1\4\3\0\2\3\1\24"+
-    "\1\0\1\25\1\0\1\25\1\26\1\164\32\52\1\33"+
-    "\12\122\1\25\1\33\1\40\1\33\1\0\1\33\1\41"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\2\0\1\3"+
-    "\3\0\1\3\2\4\2\0\2\27\1\30\1\165\32\52"+
-    "\1\33\12\53\1\0\1\33\1\46\1\33\1\0\2\47"+
-    "\1\34\3\33\2\0\1\27\1\33\4\0\2\33\2\0"+
-    "\1\4\14\0\4\166\2\0\1\166\15\0\1\166\6\0"+
-    "\12\166\1\167\110\0\1\170\42\0\1\171\54\0\1\34"+
-    "\33\0\74\57\6\0\1\62\1\24\41\0\12\24\27\0"+
-    "\1\62\13\0\1\172\32\63\1\173\12\63\43\0\61\64"+
-    "\1\0\1\174\4\64\1\175\1\0\3\64\5\0\2\3"+
-    "\1\24\1\0\1\25\1\0\1\25\1\26\1\35\1\10"+
-    "\2\176\1\177\1\200\10\176\1\10\1\201\5\176\6\10"+
-    "\1\36\12\37\1\25\1\33\1\40\1\33\1\0\1\33"+
-    "\1\41\1\34\3\33\3\0\1\33\4\0\2\33\2\0"+
-    "\1\3\3\0\2\3\1\24\1\0\1\25\1\0\1\25"+
-    "\1\26\1\35\1\202\2\176\1\10\1\176\1\203\6\176"+
-    "\4\10\1\176\1\10\2\176\1\10\1\176\1\10\3\176"+
-    "\1\36\12\37\1\25\1\33\1\40\1\33\1\0\1\33"+
-    "\1\41\1\34\3\33\3\0\1\33\4\0\2\33\2\0"+
-    "\1\3\3\0\2\3\1\24\1\0\1\25\1\0\1\25"+
-    "\1\26\1\35\3\10\1\176\1\10\1\176\4\10\1\176"+
-    "\10\10\1\176\2\10\1\176\2\10\1\176\1\36\12\37"+
-    "\1\25\1\33\1\40\1\33\1\0\1\33\1\41\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\2\0\1\3\3\0"+
-    "\2\3\1\24\1\0\1\25\1\0\1\25\1\26\1\35"+
-    "\1\10\1\176\1\204\2\176\2\10\1\176\6\10\3\176"+
-    "\11\10\1\36\12\37\1\25\1\33\1\40\1\33\1\0"+
-    "\1\33\1\41\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\2\0\1\3\3\0\2\3\1\24\1\0\1\25\1\0"+
-    "\1\25\1\26\1\35\3\10\1\176\1\10\1\176\10\10"+
-    "\1\176\1\10\2\176\10\10\1\36\12\37\1\25\1\33"+
-    "\1\40\1\33\1\0\1\33\1\41\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\2\0\1\3\3\0\2\3\1\24"+
-    "\1\0\1\25\1\0\1\25\1\26\1\35\4\10\1\205"+
-    "\5\10\1\176\17\10\1\36\12\37\1\25\1\33\1\40"+
-    "\1\33\1\0\1\33\1\41\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\2\0\1\3\3\0\2\3\1\24\1\0"+
-    "\1\25\1\0\1\25\1\26\1\35\4\10\2\176\2\10"+
-    "\1\176\1\10\1\176\13\10\1\176\2\10\1\176\1\36"+
-    "\12\37\1\25\1\33\1\40\1\33\1\0\1\33\1\41"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\2\0\1\3"+
-    "\3\0\2\3\1\24\1\0\1\25\1\0\1\25\1\26"+
-    "\1\35\1\176\1\10\3\176\1\206\14\176\2\10\2\176"+
-    "\2\10\1\176\1\10\1\36\12\37\1\25\1\33\1\40"+
-    "\1\33\1\0\1\33\1\41\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\2\0\1\3\3\0\2\3\1\24\1\0"+
-    "\1\25\1\0\1\25\1\26\1\35\2\10\4\176\3\10"+
-    "\2\176\1\207\1\176\1\10\2\176\12\10\1\36\12\37"+
-    "\1\25\1\33\1\40\1\33\1\0\1\33\1\41\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\2\0\1\3\3\0"+
-    "\2\3\1\24\1\0\1\25\1\0\1\25\1\26\1\35"+
-    "\2\176\2\10\1\176\3\10\1\176\5\10\3\176\3\10"+
-    "\1\176\2\10\3\176\1\36\12\37\1\25\1\33\1\40"+
-    "\1\33\1\0\1\33\1\41\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\2\0\1\3\3\0\2\3\1\24\1\0"+
-    "\1\25\1\0\1\25\1\26\1\35\5\176\1\210\1\10"+
-    "\1\176\1\211\7\176\1\212\3\176\1\10\1\176\1\10"+
-    "\3\176\1\36\12\37\1\25\1\33\1\40\1\33\1\0"+
-    "\1\33\1\41\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\2\0\1\3\3\0\2\3\1\24\1\0\1\25\1\0"+
-    "\1\25\1\26\1\35\1\213\1\176\1\10\1\202\6\176"+
-    "\3\10\1\176\2\10\1\176\2\10\1\176\6\10\1\36"+
-    "\12\37\1\25\1\33\1\40\1\33\1\0\1\33\1\41"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\2\0\1\3"+
-    "\3\0\2\3\1\24\1\0\1\25\1\0\1\25\1\26"+
-    "\1\35\1\176\31\10\1\36\12\37\1\25\1\33\1\40"+
-    "\1\33\1\0\1\33\1\41\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\2\0\1\3\3\0\2\3\1\24\1\0"+
-    "\1\25\1\0\1\25\1\26\1\35\1\176\2\10\1\176"+
-    "\1\214\1\10\2\176\1\10\3\176\2\10\2\176\1\10"+
-    "\1\176\3\10\1\176\2\10\2\176\1\36\12\37\1\25"+
-    "\1\33\1\40\1\33\1\0\1\33\1\41\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\2\0\1\3\3\0\2\3"+
-    "\1\24\1\0\1\25\1\0\1\25\1\26\1\35\6\176"+
-    "\1\10\5\176\3\10\2\176\2\10\7\176\1\36\12\37"+
-    "\1\25\1\33\1\40\1\33\1\0\1\33\1\41\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\2\0\1\3\3\0"+
-    "\2\3\1\24\1\0\1\25\1\0\1\25\1\26\1\35"+
-    "\1\10\2\176\1\211\1\215\3\176\1\10\3\176\1\10"+
-    "\1\176\1\10\1\176\1\10\1\176\1\10\1\176\1\10"+
-    "\3\176\1\10\1\176\1\36\12\37\1\25\1\33\1\40"+
-    "\1\33\1\0\1\33\1\41\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\2\0\1\3\3\0\2\3\1\24\1\0"+
-    "\1\25\1\0\1\25\1\26\1\35\1\176\6\10\1\176"+
-    "\6\10\1\176\4\10\1\176\4\10\2\176\1\36\12\37"+
-    "\1\25\1\33\1\40\1\33\1\0\1\33\1\41\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\2\0\1\3\3\0"+
-    "\2\3\1\24\1\0\1\25\1\0\1\25\1\26\1\35"+
-    "\6\10\1\176\7\10\1\176\13\10\1\36\12\37\1\25"+
-    "\1\33\1\40\1\33\1\0\1\33\1\41\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\2\0\1\3\3\0\2\3"+
-    "\1\24\1\0\1\25\1\0\1\25\1\26\1\35\13\10"+
-    "\1\216\16\10\1\36\12\37\1\25\1\33\1\40\1\33"+
-    "\1\0\1\33\1\41\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\2\0\1\3\3\0\2\3\1\24\1\0\1\25"+
-    "\1\0\1\25\1\26\1\35\1\176\11\10\1\176\6\10"+
-    "\1\176\10\10\1\36\12\37\1\25\1\33\1\40\1\33"+
-    "\1\0\1\33\1\41\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\2\0\1\3\3\0\2\3\1\24\1\0\1\25"+
-    "\1\0\1\25\1\26\1\35\1\176\1\10\6\176\1\217"+
-    "\1\10\2\176\2\10\2\176\1\10\1\176\1\10\6\176"+
-    "\1\10\1\36\12\37\1\25\1\33\1\40\1\33\1\0"+
-    "\1\33\1\41\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\2\0\1\3\3\0\2\3\1\24\1\0\1\25\1\0"+
-    "\1\25\1\26\1\35\4\10\1\176\5\10\2\176\3\10"+
-    "\2\176\10\10\1\176\1\36\12\37\1\25\1\33\1\40"+
-    "\1\33\1\0\1\33\1\41\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\2\0\1\3\3\0\2\3\1\24\1\0"+
-    "\1\25\1\0\1\25\1\26\1\35\3\10\1\176\1\10"+
-    "\1\220\4\10\1\176\2\10\1\176\14\10\1\36\12\37"+
-    "\1\25\1\33\1\40\1\33\1\0\1\33\1\41\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\2\0\1\3\3\0"+
-    "\2\3\1\24\1\0\1\25\1\0\1\25\1\26\1\35"+
-    "\2\176\1\10\1\176\3\10\2\176\2\10\1\176\4\10"+
-    "\1\176\11\10\1\36\12\37\1\25\1\33\1\40\1\33"+
-    "\1\0\1\33\1\41\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\2\0\1\3\3\0\2\3\1\24\1\0\1\25"+
-    "\1\0\1\25\1\26\1\35\3\10\1\176\13\10\1\176"+
-    "\12\10\1\36\12\37\1\25\1\33\1\40\1\33\1\0"+
-    "\1\33\1\41\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\2\0\1\3\3\0\2\3\1\24\1\0\1\25\1\0"+
-    "\1\25\1\26\1\35\3\10\2\176\2\10\2\176\1\10"+
-    "\2\176\1\10\1\176\3\10\1\176\1\10\1\176\1\10"+
-    "\1\176\2\10\1\176\1\10\1\36\12\37\1\25\1\33"+
-    "\1\40\1\33\1\0\1\33\1\41\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\2\0\1\3\13\0\1\221\32\117"+
-    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\7\0\1\62\1\24\5\0"+
-    "\1\32\1\126\1\127\1\130\1\131\1\132\1\133\1\134"+
-    "\1\135\1\136\1\137\1\140\1\141\1\142\1\143\1\144"+
-    "\1\145\1\146\1\147\1\150\1\151\1\152\1\153\1\154"+
-    "\1\155\1\156\1\157\1\33\12\37\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\1\57\3\0\2\33"+
-    "\2\0\1\62\4\0\1\62\1\24\5\0\1\32\33\33"+
-    "\12\122\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\2\0\1\62\3\0\1\3\2\24"+
-    "\2\0\2\62\1\26\1\222\32\52\1\33\12\122\1\0"+
-    "\1\33\1\40\1\33\1\0\2\121\1\34\3\33\2\0"+
-    "\1\62\1\33\4\0\2\33\2\0\1\24\3\0\2\3"+
-    "\1\24\1\0\1\25\1\0\1\25\1\26\1\35\3\10"+
-    "\1\223\26\10\1\36\12\37\1\25\1\33\1\40\1\33"+
-    "\1\0\1\33\1\41\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\2\0\1\3\3\0\2\3\1\24\1\0\1\25"+
-    "\1\0\1\25\1\26\1\35\32\10\1\36\12\37\1\224"+
-    "\1\33\1\40\1\33\1\0\1\33\1\41\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\2\0\1\3\3\0\2\3"+
-    "\1\24\1\0\1\25\1\0\1\25\1\26\1\35\15\10"+
-    "\1\225\14\10\1\36\12\37\1\25\1\33\1\40\1\33"+
-    "\1\0\1\33\1\41\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\2\0\1\3\13\0\1\221\1\117\2\226\1\227"+
-    "\1\230\10\226\1\117\1\231\5\226\6\117\1\36\12\117"+
-    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\16\0\1\221\1\232\2\226\1\117\1\226"+
-    "\1\233\6\226\4\117\1\226\1\117\2\226\1\117\1\226"+
-    "\1\117\3\226\1\36\12\117\1\0\3\33\1\0\2\33"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
-    "\3\117\1\226\1\117\1\226\4\117\1\226\10\117\1\226"+
-    "\2\117\1\226\2\117\1\226\1\36\12\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\1\117\1\226\1\234\2\226\2\117\1\226"+
-    "\6\117\3\226\11\117\1\36\12\117\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
-    "\1\221\3\117\1\226\1\117\1\226\10\117\1\226\1\117"+
-    "\2\226\10\117\1\36\12\117\1\0\3\33\1\0\2\33"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
-    "\4\117\1\235\5\117\1\226\17\117\1\36\12\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\4\117\2\226\2\117\1\226\1\117"+
-    "\1\226\13\117\1\226\2\117\1\226\1\36\12\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\1\226\1\117\3\226\1\236\14\226"+
-    "\2\117\2\226\2\117\1\226\1\117\1\36\12\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\2\117\4\226\3\117\2\226\1\237"+
-    "\1\226\1\117\2\226\12\117\1\36\12\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\2\226\2\117\1\226\3\117\1\226\5\117"+
-    "\3\226\3\117\1\226\2\117\3\226\1\36\12\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\5\226\1\240\1\117\1\226\1\241"+
-    "\7\226\1\242\3\226\1\117\1\226\1\117\3\226\1\36"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\1\243\1\226\1\117"+
-    "\1\232\6\226\3\117\1\226\2\117\1\226\2\117\1\226"+
-    "\6\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\1\226"+
-    "\31\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\1\226"+
-    "\2\117\1\226\1\244\1\117\2\226\1\117\3\226\2\117"+
-    "\2\226\1\117\1\226\3\117\1\226\2\117\2\226\1\36"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\6\226\1\117\5\226"+
-    "\3\117\2\226\2\117\7\226\1\36\12\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\1\117\2\226\1\241\1\245\3\226\1\117"+
-    "\3\226\1\117\1\226\1\117\1\226\1\117\1\226\1\117"+
-    "\1\226\1\117\3\226\1\117\1\226\1\36\12\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\1\226\6\117\1\226\6\117\1\226"+
-    "\4\117\1\226\4\117\2\226\1\36\12\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\6\117\1\226\7\117\1\226\13\117\1\36"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\13\117\1\246\16\117"+
-    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\16\0\1\221\1\226\11\117"+
-    "\1\226\6\117\1\226\10\117\1\36\12\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\1\226\1\117\6\226\1\247\1\117\2\226"+
-    "\2\117\2\226\1\117\1\226\1\117\6\226\1\117\1\36"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\4\117\1\226\5\117"+
-    "\2\226\3\117\2\226\10\117\1\226\1\36\12\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\3\117\1\226\1\117\1\250\4\117"+
-    "\1\226\2\117\1\226\14\117\1\36\12\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\2\226\1\117\1\226\3\117\2\226\2\117"+
-    "\1\226\4\117\1\226\11\117\1\36\12\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\3\117\1\226\13\117\1\226\12\117\1\36"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\3\117\2\226\2\117"+
-    "\2\226\1\117\2\226\1\117\1\226\3\117\1\226\1\117"+
-    "\1\226\1\117\1\226\2\117\1\226\1\117\1\36\12\117"+
-    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\6\0\1\3\2\4\2\0\2\27\1\30"+
-    "\1\251\32\10\1\36\12\161\1\0\1\33\1\46\1\33"+
-    "\1\0\2\47\1\34\3\33\2\0\1\27\1\33\4\0"+
-    "\2\33\2\0\1\4\3\0\1\3\2\4\2\0\2\27"+
-    "\1\30\1\251\32\10\1\36\12\252\1\0\1\33\1\46"+
-    "\1\33\1\0\2\47\1\34\3\33\2\0\1\27\1\33"+
-    "\4\0\2\33\2\0\1\4\3\0\1\3\2\4\2\0"+
-    "\2\27\1\30\1\251\32\10\1\36\1\161\1\253\1\252"+
-    "\2\161\2\252\2\161\1\252\1\0\1\33\1\46\1\33"+
-    "\1\0\2\47\1\34\3\33\2\0\1\27\1\33\4\0"+
-    "\2\33\2\0\1\4\3\0\1\3\2\4\2\0\2\27"+
-    "\1\30\1\254\32\10\1\36\12\163\1\0\1\33\1\46"+
-    "\1\33\1\0\2\47\1\34\3\33\2\0\1\27\1\33"+
-    "\4\0\2\33\2\0\1\4\3\0\1\3\1\25\6\0"+
-    "\1\32\32\52\13\33\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\1\57\3\0\2\33\2\0\1\25"+
-    "\4\0\1\27\1\4\5\0\1\32\33\33\12\53\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\1\57"+
-    "\3\0\2\33\2\0\1\27\14\0\4\255\2\0\1\255"+
-    "\15\0\1\255\6\0\12\255\1\167\43\0\4\256\2\0"+
-    "\1\256\15\0\1\256\6\0\12\256\1\257\43\0\4\260"+
-    "\2\0\1\260\15\0\1\260\6\0\1\261\2\262\1\261"+
-    "\4\262\1\263\1\262\14\0\1\264\26\0\46\33\1\0"+
-    "\3\33\1\0\2\33\1\0\3\33\3\0\1\33\1\57"+
-    "\3\0\2\33\17\0\1\265\1\266\1\267\1\270\1\271"+
-    "\1\272\1\273\1\274\1\275\1\276\1\277\1\300\1\301"+
-    "\1\302\1\303\1\304\1\305\1\306\1\307\1\310\1\311"+
-    "\1\312\1\313\1\314\1\315\1\316\1\0\12\63\44\0"+
-    "\32\63\1\173\12\63\43\0\74\64\5\0\2\3\1\24"+
-    "\1\0\1\25\1\0\1\25\1\26\1\317\32\10\1\36"+
-    "\12\37\1\320\1\33\1\40\1\33\1\0\1\33\1\41"+
-    "\1\34\1\321\1\322\1\323\3\0\1\33\4\0\2\33"+
-    "\2\0\1\3\3\0\2\3\1\24\1\0\1\25\1\0"+
-    "\1\25\1\26\1\317\4\10\1\324\25\10\1\36\12\37"+
-    "\1\320\1\33\1\40\1\33\1\0\1\33\1\41\1\34"+
-    "\1\321\1\322\1\323\3\0\1\33\4\0\2\33\2\0"+
-    "\1\3\3\0\2\3\1\24\1\0\1\25\1\0\1\25"+
-    "\1\26\1\317\15\10\1\101\14\10\1\36\12\37\1\320"+
-    "\1\33\1\40\1\33\1\0\1\33\1\41\1\34\1\321"+
-    "\1\322\1\323\3\0\1\33\4\0\2\33\2\0\1\3"+
-    "\3\0\2\3\1\24\1\0\1\25\1\0\1\25\1\26"+
-    "\1\317\10\10\1\101\21\10\1\36\12\37\1\320\1\33"+
-    "\1\40\1\33\1\0\1\33\1\41\1\34\1\321\1\322"+
-    "\1\323\3\0\1\33\4\0\2\33\2\0\1\3\3\0"+
-    "\2\3\1\24\1\0\1\25\1\0\1\25\1\26\1\317"+
-    "\17\10\1\176\12\10\1\36\12\37\1\320\1\33\1\40"+
-    "\1\33\1\0\1\33\1\41\1\34\1\321\1\322\1\323"+
-    "\3\0\1\33\4\0\2\33\2\0\1\3\3\0\2\3"+
-    "\1\24\1\0\1\25\1\0\1\25\1\26\1\317\5\10"+
-    "\1\325\4\10\1\176\17\10\1\36\12\37\1\320\1\33"+
-    "\1\40\1\33\1\0\1\33\1\41\1\34\1\321\1\322"+
-    "\1\323\3\0\1\33\4\0\2\33\2\0\1\3\3\0"+
-    "\2\3\1\24\1\0\1\25\1\0\1\25\1\26\1\35"+
-    "\20\10\1\176\11\10\1\36\12\37\1\25\1\33\1\40"+
-    "\1\33\1\0\1\33\1\41\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\2\0\1\3\3\0\2\3\1\24\1\0"+
-    "\1\25\1\0\1\25\1\26\1\35\7\10\1\176\22\10"+
-    "\1\36\12\37\1\25\1\33\1\40\1\33\1\0\1\33"+
-    "\1\41\1\34\3\33\3\0\1\33\4\0\2\33\2\0"+
-    "\1\3\3\0\2\3\1\24\1\0\1\25\1\0\1\25"+
-    "\1\26\1\35\27\10\1\176\2\10\1\36\12\37\1\25"+
-    "\1\33\1\40\1\33\1\0\1\33\1\41\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\2\0\1\3\3\0\2\3"+
-    "\1\24\1\0\1\25\1\0\1\25\1\26\1\317\6\10"+
-    "\1\324\10\10\1\176\12\10\1\36\12\37\1\320\1\33"+
-    "\1\40\1\33\1\0\1\33\1\41\1\34\1\321\1\322"+
-    "\1\323\3\0\1\33\4\0\2\33\2\0\1\3\3\0"+
-    "\2\3\1\24\1\0\1\25\1\0\1\25\1\26\1\317"+
-    "\24\10\1\326\5\10\1\36\12\37\1\320\1\33\1\40"+
-    "\1\33\1\0\1\33\1\41\1\34\1\321\1\322\1\323"+
-    "\3\0\1\33\4\0\2\33\2\0\1\3\3\0\2\3"+
-    "\1\24\1\0\1\25\1\0\1\25\1\26\1\35\11\10"+
-    "\1\176\20\10\1\36\12\37\1\25\1\33\1\40\1\33"+
-    "\1\0\1\33\1\41\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\2\0\1\3\3\0\2\3\1\24\1\0\1\25"+
-    "\1\0\1\25\1\26\1\317\16\10\1\327\13\10\1\36"+
-    "\12\37\1\320\1\33\1\40\1\33\1\0\1\33\1\41"+
-    "\1\34\1\321\1\322\1\323\3\0\1\33\4\0\2\33"+
-    "\2\0\1\3\3\0\2\3\1\24\1\0\1\25\1\0"+
-    "\1\25\1\26\1\317\12\10\1\330\17\10\1\36\12\37"+
-    "\1\320\1\33\1\40\1\33\1\0\1\33\1\41\1\34"+
-    "\1\321\1\322\1\323\3\0\1\33\4\0\2\33\2\0"+
-    "\1\3\3\0\2\3\1\24\1\0\1\25\1\0\1\25"+
-    "\1\26\1\317\5\10\1\176\24\10\1\36\12\37\1\320"+
-    "\1\33\1\40\1\33\1\0\1\33\1\41\1\34\1\321"+
-    "\1\322\1\323\3\0\1\33\4\0\2\33\2\0\1\3"+
-    "\3\0\2\3\1\24\1\0\1\25\1\0\1\25\1\26"+
-    "\1\317\1\331\31\10\1\36\12\37\1\320\1\33\1\40"+
-    "\1\33\1\0\1\33\1\41\1\34\1\321\1\322\1\323"+
-    "\3\0\1\33\4\0\2\33\2\0\1\3\3\0\2\3"+
-    "\1\24\1\0\1\25\1\0\1\25\1\26\1\35\32\10"+
-    "\1\332\12\37\1\25\1\33\1\40\1\33\1\0\1\33"+
-    "\1\41\1\34\3\33\3\0\1\33\4\0\2\33\2\0"+
-    "\1\3\3\0\2\3\1\24\1\0\1\25\1\0\1\25"+
-    "\1\26\1\317\23\10\1\176\6\10\1\36\12\37\1\320"+
-    "\1\33\1\40\1\33\1\0\1\33\1\41\1\34\1\321"+
-    "\1\322\1\323\3\0\1\33\4\0\2\33\2\0\1\3"+
-    "\3\0\2\3\1\24\1\0\1\25\1\0\1\25\1\26"+
-    "\1\317\24\10\1\333\5\10\1\36\12\37\1\320\1\33"+
-    "\1\40\1\33\1\0\1\33\1\41\1\34\1\321\1\322"+
-    "\1\323\3\0\1\33\4\0\2\33\2\0\1\3\13\0"+
-    "\1\32\1\126\1\127\1\130\1\131\1\132\1\133\1\134"+
-    "\1\135\1\136\1\137\1\140\1\141\1\142\1\143\1\144"+
-    "\1\145\1\146\1\147\1\150\1\151\1\152\1\153\1\154"+
-    "\1\155\1\156\1\157\1\33\12\117\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\1\57\3\0\2\33"+
-    "\7\0\1\62\1\24\5\0\1\32\33\33\12\122\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\1\57"+
-    "\3\0\2\33\2\0\1\62\3\0\2\3\1\24\1\0"+
-    "\1\25\1\0\1\25\1\26\1\35\32\10\1\36\12\37"+
-    "\1\334\1\33\1\40\1\33\1\0\1\33\1\41\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\2\0\1\3\3\0"+
-    "\1\3\1\25\7\0\32\3\24\0\1\335\15\0\1\25"+
-    "\3\0\2\3\1\24\1\0\1\25\1\0\1\25\1\26"+
-    "\1\35\16\10\1\336\13\10\1\36\12\37\1\337\1\33"+
-    "\1\40\1\33\1\0\1\33\1\41\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\2\0\1\3\13\0\1\340\32\117"+
-    "\1\36\12\117\1\341\3\33\1\0\2\33\1\34\1\321"+
-    "\1\322\1\323\3\0\1\33\4\0\2\33\16\0\1\340"+
-    "\4\117\1\342\25\117\1\36\12\117\1\341\3\33\1\0"+
-    "\2\33\1\34\1\321\1\322\1\323\3\0\1\33\4\0"+
-    "\2\33\16\0\1\340\15\117\1\142\14\117\1\36\12\117"+
-    "\1\341\3\33\1\0\2\33\1\34\1\321\1\322\1\323"+
-    "\3\0\1\33\4\0\2\33\16\0\1\340\10\117\1\142"+
-    "\21\117\1\36\12\117\1\341\3\33\1\0\2\33\1\34"+
-    "\1\321\1\322\1\323\3\0\1\33\4\0\2\33\16\0"+
-    "\1\340\17\117\1\226\12\117\1\36\12\117\1\341\3\33"+
-    "\1\0\2\33\1\34\1\321\1\322\1\323\3\0\1\33"+
-    "\4\0\2\33\16\0\1\340\5\117\1\343\4\117\1\226"+
-    "\17\117\1\36\12\117\1\341\3\33\1\0\2\33\1\34"+
-    "\1\321\1\322\1\323\3\0\1\33\4\0\2\33\16\0"+
-    "\1\221\20\117\1\226\11\117\1\36\12\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\7\117\1\226\22\117\1\36\12\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\27\117\1\226\2\117\1\36\12\117"+
-    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\16\0\1\340\6\117\1\342\10\117\1\226"+
-    "\12\117\1\36\12\117\1\341\3\33\1\0\2\33\1\34"+
-    "\1\321\1\322\1\323\3\0\1\33\4\0\2\33\16\0"+
-    "\1\340\24\117\1\344\5\117\1\36\12\117\1\341\3\33"+
-    "\1\0\2\33\1\34\1\321\1\322\1\323\3\0\1\33"+
-    "\4\0\2\33\16\0\1\221\11\117\1\226\20\117\1\36"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\340\16\117\1\345\13\117"+
-    "\1\36\12\117\1\341\3\33\1\0\2\33\1\34\1\321"+
-    "\1\322\1\323\3\0\1\33\4\0\2\33\16\0\1\340"+
-    "\12\117\1\346\17\117\1\36\12\117\1\341\3\33\1\0"+
-    "\2\33\1\34\1\321\1\322\1\323\3\0\1\33\4\0"+
-    "\2\33\16\0\1\340\5\117\1\226\24\117\1\36\12\117"+
-    "\1\341\3\33\1\0\2\33\1\34\1\321\1\322\1\323"+
-    "\3\0\1\33\4\0\2\33\16\0\1\340\1\347\31\117"+
-    "\1\36\12\117\1\341\3\33\1\0\2\33\1\34\1\321"+
-    "\1\322\1\323\3\0\1\33\4\0\2\33\16\0\1\221"+
-    "\32\117\1\332\12\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\16\0\1\340\23\117"+
-    "\1\226\6\117\1\36\12\117\1\341\3\33\1\0\2\33"+
-    "\1\34\1\321\1\322\1\323\3\0\1\33\4\0\2\33"+
-    "\16\0\1\340\24\117\1\350\5\117\1\36\12\117\1\341"+
-    "\3\33\1\0\2\33\1\34\1\321\1\322\1\323\3\0"+
-    "\1\33\4\0\2\33\7\0\1\27\1\4\5\0\1\32"+
-    "\1\126\1\127\1\130\1\131\1\132\1\133\1\134\1\135"+
-    "\1\136\1\137\1\140\1\141\1\142\1\143\1\144\1\145"+
-    "\1\146\1\147\1\150\1\151\1\152\1\153\1\154\1\155"+
-    "\1\156\1\157\1\33\1\351\2\352\1\351\4\352\1\353"+
-    "\1\352\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\1\57\3\0\2\33\2\0\1\27\3\0\1\3"+
-    "\2\4\2\0\2\27\1\30\1\251\32\10\1\36\12\163"+
-    "\1\0\1\33\1\46\1\33\1\0\2\47\1\34\3\33"+
-    "\2\0\1\27\1\33\4\0\2\33\2\0\1\4\3\0"+
-    "\1\3\2\4\2\0\2\27\1\30\1\251\32\10\1\36"+
-    "\2\252\1\163\2\252\2\163\2\252\1\163\1\0\1\33"+
-    "\1\46\1\33\1\0\2\47\1\34\3\33\2\0\1\27"+
-    "\1\33\4\0\2\33\2\0\1\4\4\0\1\27\1\4"+
-    "\5\0\1\32\1\126\1\127\1\130\1\131\1\132\1\133"+
-    "\1\134\1\135\1\136\1\137\1\140\1\141\1\142\1\143"+
-    "\1\144\1\145\1\146\1\147\1\150\1\151\1\152\1\153"+
-    "\1\154\1\155\1\156\1\157\1\33\12\163\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\1\57\3\0"+
-    "\2\33\2\0\1\27\14\0\4\354\2\0\1\354\15\0"+
-    "\1\354\6\0\12\354\1\167\43\0\4\355\2\0\1\355"+
-    "\15\0\1\355\6\0\12\355\1\356\43\0\4\357\2\0"+
-    "\1\357\15\0\1\357\6\0\1\360\2\361\1\360\4\361"+
-    "\1\362\1\361\14\0\1\264\27\0\4\363\2\0\1\363"+
-    "\15\0\1\363\6\0\12\363\1\364\13\0\1\264\26\0"+
-    "\1\365\4\363\2\0\1\363\15\0\1\363\6\0\12\366"+
-    "\1\364\13\0\1\264\26\0\1\365\4\363\2\0\1\363"+
-    "\15\0\1\363\6\0\12\367\1\364\13\0\1\264\26\0"+
-    "\1\365\4\363\2\0\1\363\15\0\1\363\6\0\1\366"+
-    "\1\370\1\367\2\366\2\367\2\366\1\367\1\364\13\0"+
-    "\1\264\74\0\1\341\7\0\1\371\1\372\1\373\30\0"+
-    "\1\172\1\63\2\374\1\375\1\376\10\374\1\63\1\377"+
-    "\5\374\6\63\1\173\12\63\43\0\1\172\1\u0100\2\374"+
-    "\1\63\1\374\1\u0101\6\374\4\63\1\374\1\63\2\374"+
-    "\1\63\1\374\1\63\3\374\1\173\12\63\43\0\1\172"+
-    "\3\63\1\374\1\63\1\374\4\63\1\374\10\63\1\374"+
-    "\2\63\1\374\2\63\1\374\1\173\12\63\43\0\1\172"+
-    "\1\63\1\374\1\u0102\2\374\2\63\1\374\6\63\3\374"+
-    "\11\63\1\173\12\63\43\0\1\172\3\63\1\374\1\63"+
-    "\1\374\10\63\1\374\1\63\2\374\10\63\1\173\12\63"+
-    "\43\0\1\172\4\63\1\u0103\5\63\1\374\17\63\1\173"+
-    "\12\63\43\0\1\172\4\63\2\374\2\63\1\374\1\63"+
-    "\1\374\13\63\1\374\2\63\1\374\1\173\12\63\43\0"+
-    "\1\172\1\374\1\63\3\374\1\u0104\14\374\2\63\2\374"+
-    "\2\63\1\374\1\63\1\173\12\63\43\0\1\172\2\63"+
-    "\4\374\3\63\2\374\1\u0105\1\374\1\63\2\374\12\63"+
-    "\1\173\12\63\43\0\1\172\2\374\2\63\1\374\3\63"+
-    "\1\374\5\63\3\374\3\63\1\374\2\63\3\374\1\173"+
-    "\12\63\43\0\1\172\5\374\1\u0106\1\63\1\374\1\u0107"+
-    "\7\374\1\u0108\3\374\1\63\1\374\1\63\3\374\1\173"+
-    "\12\63\43\0\1\172\1\u0109\1\374\1\63\1\u0100\6\374"+
-    "\3\63\1\374\2\63\1\374\2\63\1\374\6\63\1\173"+
-    "\12\63\43\0\1\172\1\374\31\63\1\173\12\63\43\0"+
-    "\1\172\1\374\2\63\1\374\1\u010a\1\63\2\374\1\63"+
-    "\3\374\2\63\2\374\1\63\1\374\3\63\1\374\2\63"+
-    "\2\374\1\173\12\63\43\0\1\172\6\374\1\63\5\374"+
-    "\3\63\2\374\2\63\7\374\1\173\12\63\43\0\1\172"+
-    "\1\63\2\374\1\u0107\1\u010b\3\374\1\63\3\374\1\63"+
-    "\1\374\1\63\1\374\1\63\1\374\1\63\1\374\1\63"+
-    "\3\374\1\63\1\374\1\173\12\63\43\0\1\172\1\374"+
-    "\6\63\1\374\6\63\1\374\4\63\1\374\4\63\2\374"+
-    "\1\173\12\63\43\0\1\172\6\63\1\374\7\63\1\374"+
-    "\13\63\1\173\12\63\43\0\1\172\13\63\1\u010c\16\63"+
-    "\1\173\12\63\43\0\1\172\1\374\11\63\1\374\6\63"+
-    "\1\374\10\63\1\173\12\63\43\0\1\172\1\374\1\63"+
-    "\6\374\1\u010d\1\63\2\374\2\63\2\374\1\63\1\374"+
-    "\1\63\6\374\1\63\1\173\12\63\43\0\1\172\4\63"+
-    "\1\374\5\63\2\374\3\63\2\374\10\63\1\374\1\173"+
-    "\12\63\43\0\1\172\3\63\1\374\1\63\1\u010e\4\63"+
-    "\1\374\2\63\1\374\14\63\1\173\12\63\43\0\1\172"+
-    "\2\374\1\63\1\374\3\63\2\374\2\63\1\374\4\63"+
-    "\1\374\11\63\1\173\12\63\43\0\1\172\3\63\1\374"+
-    "\13\63\1\374\12\63\1\173\12\63\43\0\1\172\3\63"+
-    "\2\374\2\63\2\374\1\63\2\374\1\63\1\374\3\63"+
-    "\1\374\1\63\1\374\1\63\1\374\2\63\1\374\1\63"+
-    "\1\173\12\63\33\0\1\3\1\25\6\0\1\32\1\65"+
-    "\1\66\1\67\1\70\1\71\1\72\1\73\1\74\1\75"+
-    "\1\76\1\77\1\100\1\101\1\102\1\103\1\104\1\105"+
-    "\1\106\1\107\1\110\1\111\1\112\1\113\1\114\1\115"+
-    "\1\116\1\33\12\117\1\341\3\33\1\0\2\33\1\34"+
-    "\1\321\1\322\1\323\3\0\1\33\1\57\3\0\2\33"+
-    "\2\0\1\25\3\0\1\3\1\25\7\0\32\3\1\0"+
-    "\12\u010f\27\0\1\25\13\0\1\u0110\45\321\1\371\2\321"+
-    "\1\u0111\1\371\2\321\1\u0112\2\321\1\323\2\0\1\371"+
-    "\1\321\4\0\1\321\1\33\16\0\1\u0113\45\322\1\372"+
-    "\2\322\1\u0114\1\0\2\33\1\u0115\1\321\1\322\1\323"+
-    "\2\0\1\372\1\322\4\0\2\33\16\0\1\u0116\45\323"+
-    "\1\373\2\323\1\u0117\1\373\2\323\1\u0118\2\323\1\33"+
-    "\2\0\1\373\1\323\4\0\1\323\1\33\6\0\2\3"+
-    "\1\24\1\0\1\25\1\0\1\25\1\26\1\35\5\10"+
-    "\1\176\24\10\1\36\12\37\1\25\1\33\1\40\1\33"+
-    "\1\0\1\33\1\41\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\2\0\1\3\3\0\2\3\1\24\1\0\1\25"+
-    "\1\0\1\25\1\26\1\35\15\10\1\176\14\10\1\36"+
-    "\12\37\1\25\1\33\1\40\1\33\1\0\1\33\1\41"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\2\0\1\3"+
-    "\3\0\2\3\1\24\1\0\1\25\1\0\1\25\1\26"+
-    "\1\35\10\10\1\176\21\10\1\36\12\37\1\25\1\33"+
-    "\1\40\1\33\1\0\1\33\1\41\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\2\0\1\3\3\0\2\3\1\24"+
-    "\1\0\1\25\1\0\1\25\1\26\1\35\3\10\1\u0119"+
-    "\26\10\1\36\12\37\1\25\1\33\1\40\1\33\1\0"+
-    "\1\33\1\41\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\2\0\1\3\3\0\2\3\1\24\1\0\1\25\1\0"+
-    "\1\25\1\26\1\35\3\10\1\176\26\10\1\36\12\37"+
-    "\1\25\1\33\1\40\1\33\1\0\1\33\1\41\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\2\0\1\3\3\0"+
-    "\2\3\1\24\1\0\1\25\1\0\1\25\1\26\1\35"+
-    "\27\10\1\u011a\2\10\1\36\12\37\1\25\1\33\1\40"+
-    "\1\33\1\0\1\33\1\41\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\2\0\1\3\13\0\1\32\32\117\1\u011b"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\6\0\2\3\1\24\1\0\1\25"+
-    "\1\0\1\25\1\26\1\35\16\10\1\176\13\10\1\36"+
-    "\12\37\1\25\1\33\1\40\1\33\1\0\1\33\1\41"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\2\0\1\3"+
-    "\3\0\1\3\1\25\7\0\32\3\24\0\1\u011c\15\0"+
-    "\1\25\72\0\1\u011d\21\0\2\3\1\24\1\0\1\25"+
-    "\1\0\1\25\1\26\1\35\32\10\1\36\12\37\1\337"+
-    "\1\33\1\40\1\33\1\0\1\33\1\41\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\2\0\1\3\3\0\1\3"+
-    "\1\25\7\0\32\3\24\0\1\u011e\15\0\1\25\13\0"+
-    "\1\32\1\126\1\127\1\130\1\131\1\132\1\133\1\134"+
-    "\1\135\1\136\1\137\1\140\1\141\1\142\1\143\1\144"+
-    "\1\145\1\146\1\147\1\150\1\151\1\152\1\153\1\154"+
-    "\1\155\1\156\1\157\1\33\12\117\1\341\3\33\1\0"+
-    "\2\33\1\34\1\321\1\322\1\323\3\0\1\33\1\57"+
-    "\3\0\2\33\52\0\12\u010f\43\0\1\221\5\117\1\226"+
-    "\24\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\15\117"+
-    "\1\226\14\117\1\36\12\117\1\0\3\33\1\0\2\33"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
-    "\10\117\1\226\21\117\1\36\12\117\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
-    "\1\221\3\117\1\u011f\26\117\1\36\12\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\3\117\1\226\26\117\1\36\12\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\27\117\1\u0120\2\117\1\36\12\117"+
-    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\16\0\1\221\16\117\1\226\13\117\1\36"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\6\0\1\3\2\4\2\0\2\27"+
-    "\1\30\1\u0121\32\10\1\36\12\352\1\0\1\33\1\46"+
-    "\1\33\1\0\2\47\1\34\3\33\2\0\1\27\1\33"+
-    "\4\0\2\33\2\0\1\4\3\0\1\3\2\4\2\0"+
-    "\2\27\1\30\1\u0121\32\10\1\36\12\u0122\1\0\1\33"+
-    "\1\46\1\33\1\0\2\47\1\34\3\33\2\0\1\27"+
-    "\1\33\4\0\2\33\2\0\1\4\3\0\1\3\2\4"+
-    "\2\0\2\27\1\30\1\u0121\32\10\1\36\1\352\1\u0123"+
-    "\1\u0122\2\352\2\u0122\2\352\1\u0122\1\0\1\33\1\46"+
-    "\1\33\1\0\2\47\1\34\3\33\2\0\1\27\1\33"+
-    "\4\0\2\33\2\0\1\4\61\0\1\167\43\0\4\u0124"+
-    "\2\0\1\u0124\15\0\1\u0124\6\0\12\u0124\1\356\43\0"+
-    "\4\u0125\2\0\1\u0125\15\0\1\u0125\6\0\12\u0125\1\u0126"+
-    "\43\0\4\u0127\2\0\1\u0127\15\0\1\u0127\6\0\12\u0127"+
-    "\1\u0128\13\0\1\264\26\0\1\365\4\u0127\2\0\1\u0127"+
-    "\15\0\1\u0127\6\0\12\u0129\1\u0128\13\0\1\264\26\0"+
-    "\1\365\4\u0127\2\0\1\u0127\15\0\1\u0127\6\0\12\u012a"+
-    "\1\u0128\13\0\1\264\26\0\1\365\4\u0127\2\0\1\u0127"+
-    "\15\0\1\u0127\6\0\1\u0129\1\u012b\1\u012a\2\u0129\2\u012a"+
-    "\2\u0129\1\u012a\1\u0128\13\0\1\264\27\0\4\u012c\2\0"+
-    "\1\u012c\15\0\1\u012c\6\0\12\u012c\1\364\13\0\1\264"+
-    "\27\0\4\357\2\0\1\357\15\0\1\357\6\0\1\360"+
-    "\2\361\1\360\4\361\1\362\1\361\77\0\1\u012d\2\u012e"+
-    "\1\u012d\4\u012e\1\u012f\1\u012e\43\0\1\365\4\u012c\2\0"+
-    "\1\u012c\15\0\1\u012c\6\0\12\u0130\1\364\13\0\1\264"+
-    "\26\0\1\365\4\u012c\2\0\1\u012c\15\0\1\u012c\6\0"+
-    "\12\u012c\1\364\13\0\1\264\26\0\1\365\4\u012c\2\0"+
-    "\1\u012c\15\0\1\u012c\6\0\2\u0130\1\u012c\2\u0130\2\u012c"+
-    "\2\u0130\1\u012c\1\364\13\0\1\264\26\0\51\371\1\u0131"+
-    "\6\371\1\373\2\0\2\371\4\0\1\371\17\0\51\372"+
-    "\1\u0132\3\0\1\372\1\371\1\372\1\373\2\0\2\372"+
-    "\24\0\51\373\1\u0133\6\373\3\0\2\373\4\0\1\373"+
-    "\17\0\1\u0134\32\63\1\173\12\63\43\0\1\u0134\4\63"+
-    "\1\u0135\25\63\1\173\12\63\43\0\1\u0134\15\63\1\301"+
-    "\14\63\1\173\12\63\43\0\1\u0134\10\63\1\301\21\63"+
-    "\1\173\12\63\43\0\1\u0134\17\63\1\374\12\63\1\173"+
-    "\12\63\43\0\1\u0134\5\63\1\u0136\4\63\1\374\17\63"+
-    "\1\173\12\63\43\0\1\172\20\63\1\374\11\63\1\173"+
-    "\12\63\43\0\1\172\7\63\1\374\22\63\1\173\12\63"+
-    "\43\0\1\172\27\63\1\374\2\63\1\173\12\63\43\0"+
-    "\1\u0134\6\63\1\u0135\10\63\1\374\12\63\1\173\12\63"+
-    "\43\0\1\u0134\24\63\1\u0137\5\63\1\173\12\63\43\0"+
-    "\1\172\11\63\1\374\20\63\1\173\12\63\43\0\1\u0134"+
-    "\16\63\1\u0138\13\63\1\173\12\63\43\0\1\u0134\12\63"+
-    "\1\u0139\17\63\1\173\12\63\43\0\1\u0134\5\63\1\374"+
-    "\24\63\1\173\12\63\43\0\1\u0134\1\u013a\31\63\1\173"+
-    "\12\63\43\0\1\172\32\63\1\u013b\12\63\43\0\1\u0134"+
-    "\23\63\1\374\6\63\1\173\12\63\43\0\1\u0134\24\63"+
-    "\1\u013c\5\63\1\173\12\63\77\0\12\u013d\10\0\1\371"+
-    "\1\372\1\373\30\0\1\u0110\45\321\1\371\2\321\1\u0111"+
-    "\1\371\2\321\1\u0112\2\321\1\323\2\0\1\371\1\321"+
-    "\1\57\3\0\1\321\1\33\16\0\1\32\4\u013e\2\33"+
-    "\1\u013e\15\33\1\u013e\6\33\12\u013e\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
-    "\51\371\1\u0131\6\371\1\373\1\64\1\0\2\371\4\0"+
-    "\1\371\17\0\1\u0113\45\322\1\372\2\322\1\u0114\1\0"+
-    "\2\33\1\u0115\1\321\1\322\1\323\2\0\1\372\1\322"+
-    "\1\57\3\0\2\33\16\0\1\32\4\u013f\2\33\1\u013f"+
-    "\15\33\1\u013f\6\33\12\u013f\1\0\3\33\1\0\2\33"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\51\372"+
-    "\1\u0132\3\0\1\372\1\371\1\372\1\373\1\64\1\0"+
-    "\2\372\24\0\1\u0116\45\323\1\373\2\323\1\u0117\1\373"+
-    "\2\323\1\u0118\2\323\1\33\2\0\1\373\1\323\1\57"+
-    "\3\0\1\323\1\33\16\0\1\32\4\u0140\2\33\1\u0140"+
-    "\15\33\1\u0140\6\33\12\u0140\1\0\3\33\1\0\2\33"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\51\373"+
-    "\1\u0133\6\373\1\0\1\64\1\0\2\373\4\0\1\373"+
-    "\7\0\2\3\1\24\1\0\1\25\1\0\1\25\1\26"+
-    "\1\35\20\10\1\u0141\11\10\1\36\12\37\1\25\1\33"+
-    "\1\40\1\33\1\0\1\33\1\41\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\2\0\1\3\3\0\2\3\1\24"+
-    "\1\0\1\25\1\0\1\25\1\26\1\35\3\10\1\211"+
-    "\26\10\1\36\12\37\1\25\1\33\1\40\1\33\1\0"+
-    "\1\33\1\41\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\2\0\1\3\13\0\1\32\2\117\1\u0142\2\117\1\u0143"+
-    "\1\u0144\1\u0145\2\117\1\u0146\2\117\1\u0147\3\117\1\u0148"+
-    "\1\u0149\1\u014a\1\117\1\u014b\1\u014c\1\117\1\u014d\1\u014e"+
-    "\1\36\1\u014f\2\117\1\u0150\1\117\1\u0151\1\u0152\3\117"+
-    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\75\0\1\u0153\31\0\1\u0154\32\u0155\1\u0154"+
-    "\12\u0155\1\u0156\2\u0154\1\u0157\3\u0154\1\u0158\3\0\1\u0159"+
-    "\1\0\2\u0154\4\0\1\u0154\76\0\1\u015a\31\0\1\221"+
-    "\20\117\1\u015b\11\117\1\36\12\117\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
-    "\1\221\3\117\1\241\26\117\1\36\12\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\7\0\1\27\1\4\5\0\1\32\1\126\1\127\1\130"+
-    "\1\131\1\132\1\133\1\134\1\135\1\136\1\137\1\140"+
-    "\1\141\1\142\1\143\1\144\1\145\1\146\1\147\1\150"+
-    "\1\151\1\152\1\153\1\154\1\155\1\156\1\157\1\33"+
-    "\1\u015c\2\u015d\1\u015c\4\u015d\1\u015e\1\u015d\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\1\57\3\0"+
-    "\2\33\2\0\1\27\3\0\1\3\2\4\2\0\2\27"+
-    "\1\30\1\u0121\32\10\1\36\12\163\1\0\1\33\1\46"+
-    "\1\33\1\0\2\47\1\34\3\33\2\0\1\27\1\33"+
-    "\4\0\2\33\2\0\1\4\3\0\1\3\2\4\2\0"+
-    "\2\27\1\30\1\u0121\32\10\1\36\2\u0122\1\163\2\u0122"+
-    "\2\163\2\u0122\1\163\1\0\1\33\1\46\1\33\1\0"+
-    "\2\47\1\34\3\33\2\0\1\27\1\33\4\0\2\33"+
-    "\2\0\1\4\14\0\4\u015f\2\0\1\u015f\15\0\1\u015f"+
-    "\6\0\12\u015f\1\356\43\0\4\u0160\2\0\1\u0160\15\0"+
-    "\1\u0160\6\0\12\u0160\1\u0161\43\0\4\u0162\2\0\1\u0162"+
-    "\15\0\1\u0162\6\0\1\u0163\2\u0164\1\u0163\4\u0164\1\u0165"+
-    "\1\u0164\14\0\1\264\27\0\4\u0166\2\0\1\u0166\15\0"+
-    "\1\u0166\6\0\12\u0166\1\u0128\13\0\1\264\27\0\4\u0162"+
-    "\2\0\1\u0162\15\0\1\u0162\6\0\1\u0163\2\u0164\1\u0163"+
-    "\4\u0164\1\u0165\1\u0164\43\0\1\365\4\u0166\2\0\1\u0166"+
-    "\15\0\1\u0166\6\0\12\u0167\1\u0128\13\0\1\264\26\0"+
-    "\1\365\4\u0166\2\0\1\u0166\15\0\1\u0166\6\0\12\u0166"+
-    "\1\u0128\13\0\1\264\26\0\1\365\4\u0166\2\0\1\u0166"+
-    "\15\0\1\u0166\6\0\2\u0167\1\u0166\2\u0167\2\u0166\2\u0167"+
-    "\1\u0166\1\u0128\13\0\1\264\27\0\4\u0168\2\0\1\u0168"+
-    "\15\0\1\u0168\6\0\12\u0168\1\364\13\0\1\264\26\0"+
-    "\1\u0169\33\0\12\u012e\43\0\1\u0169\33\0\12\u016a\43\0"+
-    "\1\u0169\33\0\1\u012e\1\u016b\1\u016a\2\u012e\2\u016a\2\u012e"+
-    "\1\u016a\43\0\1\365\4\u0168\2\0\1\u0168\15\0\1\u0168"+
-    "\6\0\12\u0168\1\364\13\0\1\264\27\0\4\u016c\2\0"+
-    "\1\u016c\15\0\1\u016c\6\0\12\u016c\44\0\4\u016d\2\0"+
-    "\1\u016d\15\0\1\u016d\6\0\12\u016d\44\0\4\u016e\2\0"+
-    "\1\u016e\15\0\1\u016e\6\0\12\u016e\43\0\1\172\5\63"+
-    "\1\374\24\63\1\173\12\63\43\0\1\172\15\63\1\374"+
-    "\14\63\1\173\12\63\43\0\1\172\10\63\1\374\21\63"+
-    "\1\173\12\63\43\0\1\172\3\63\1\u016f\26\63\1\173"+
-    "\12\63\43\0\1\172\3\63\1\374\26\63\1\173\12\63"+
-    "\43\0\1\172\27\63\1\u0170\2\63\1\173\12\63\44\0"+
-    "\32\63\1\u0171\12\63\43\0\1\172\16\63\1\374\13\63"+
-    "\1\173\12\63\77\0\12\u0172\10\0\1\371\1\372\1\373"+
-    "\30\0\1\32\4\321\2\33\1\321\15\33\1\321\6\33"+
-    "\12\321\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\32\4\322\2\33\1\322"+
-    "\15\33\1\322\6\33\12\322\1\0\3\33\1\0\2\33"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\32"+
-    "\4\323\2\33\1\323\15\33\1\323\6\33\12\323\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\6\0\2\3\1\24\1\0\1\25\1\0\1\25"+
-    "\1\26\1\35\12\10\1\176\17\10\1\36\12\37\1\25"+
-    "\1\33\1\40\1\33\1\0\1\33\1\41\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\2\0\1\3\13\0\1\221"+
-    "\3\117\1\u0173\26\117\1\36\12\117\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
-    "\1\221\32\117\1\36\4\117\1\u0174\5\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\10\117\1\u0175\12\117\1\u0176\6\117\1\36"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\32\117\1\36\2\117"+
-    "\1\u0177\7\117\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\16\0\1\221\7\117\1\u0178"+
-    "\22\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\7\117"+
-    "\1\u0179\22\117\1\36\3\117\1\u017a\6\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\7\117\1\u017b\22\117\1\36\12\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\31\117\1\u017c\1\36\12\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\1\117\1\u017d\30\117\1\36\12\117"+
-    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\16\0\1\221\7\117\1\u017e\1\117\1\u017f"+
-    "\20\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\22\117"+
-    "\1\u0180\7\117\1\36\2\117\1\u0181\7\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\7\117\1\u0182\22\117\1\36\12\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\7\117\1\u0183\5\117\1\u0184\14\117"+
-    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\16\0\1\221\23\117\1\u0185"+
-    "\6\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\32\117"+
-    "\1\36\3\117\1\u0186\6\117\1\0\3\33\1\0\2\33"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
-    "\17\117\1\u0187\12\117\1\36\12\117\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
-    "\1\221\32\117\1\36\1\u0188\11\117\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\17\0"+
-    "\32\u0189\1\0\12\u0189\11\0\1\u018a\1\0\1\u018b\27\0"+
-    "\46\u0154\1\u0156\2\u0154\1\u0157\3\u0154\1\u0158\5\0\2\u0154"+
-    "\4\0\1\u0154\17\0\1\u018c\32\u0155\1\u018d\12\u0155\1\u018e"+
-    "\2\u0154\1\u0157\3\u0154\1\u0158\1\0\1\u018f\3\0\2\u0154"+
-    "\4\0\1\u0154\17\0\46\u0156\1\0\2\u0156\1\u0190\3\u0156"+
-    "\1\u0158\5\0\2\u0156\4\0\1\u0156\20\0\4\u0191\2\0"+
-    "\1\u0191\15\0\1\u0191\6\0\12\u0191\44\0\32\u0192\1\0"+
-    "\12\u0192\13\0\1\u0159\30\0\4\u0193\2\0\1\u0193\15\0"+
-    "\1\u0193\6\0\12\u0193\1\u0194\42\0\1\u0195\32\u0196\1\u0195"+
-    "\12\u0196\1\u0197\2\u0195\1\u0198\3\u0195\1\u0199\3\0\1\u019a"+
-    "\1\0\2\u0195\4\0\1\u0195\17\0\1\221\12\117\1\226"+
-    "\17\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\6\0\1\3\2\4"+
-    "\2\0\2\27\1\30\1\254\32\10\1\36\12\u015d\1\341"+
-    "\1\33\1\46\1\33\1\0\2\47\1\34\1\321\1\322"+
-    "\1\323\2\0\1\27\1\33\4\0\2\33\2\0\1\4"+
-    "\3\0\1\3\2\4\2\0\2\27\1\30\1\254\32\10"+
-    "\1\36\12\u019b\1\341\1\33\1\46\1\33\1\0\2\47"+
-    "\1\34\1\321\1\322\1\323\2\0\1\27\1\33\4\0"+
-    "\2\33\2\0\1\4\3\0\1\3\2\4\2\0\2\27"+
-    "\1\30\1\254\32\10\1\36\1\u015d\1\u019c\1\u019b\2\u015d"+
-    "\2\u019b\2\u015d\1\u019b\1\341\1\33\1\46\1\33\1\0"+
-    "\2\47\1\34\1\321\1\322\1\323\2\0\1\27\1\33"+
-    "\4\0\2\33\2\0\1\4\61\0\1\356\43\0\4\u019d"+
-    "\2\0\1\u019d\15\0\1\u019d\6\0\12\u019d\1\u0161\43\0"+
-    "\4\u019e\2\0\1\u019e\15\0\1\u019e\6\0\12\u019e\1\u019f"+
-    "\43\0\4\u01a0\2\0\1\u01a0\15\0\1\u01a0\6\0\12\u01a0"+
-    "\1\u01a1\13\0\1\264\26\0\1\365\4\u01a0\2\0\1\u01a0"+
-    "\15\0\1\u01a0\6\0\12\u01a2\1\u01a1\13\0\1\264\26\0"+
-    "\1\365\4\u01a0\2\0\1\u01a0\15\0\1\u01a0\6\0\12\u01a3"+
-    "\1\u01a1\13\0\1\264\26\0\1\365\4\u01a0\2\0\1\u01a0"+
-    "\15\0\1\u01a0\6\0\1\u01a2\1\u01a4\1\u01a3\2\u01a2\2\u01a3"+
-    "\2\u01a2\1\u01a3\1\u01a1\13\0\1\264\27\0\4\u01a5\2\0"+
-    "\1\u01a5\15\0\1\u01a5\6\0\12\u01a5\1\u0128\13\0\1\264"+
-    "\26\0\1\365\4\u01a5\2\0\1\u01a5\15\0\1\u01a5\6\0"+
-    "\12\u01a5\1\u0128\13\0\1\264\74\0\1\364\13\0\1\264"+
-    "\62\0\1\u01a6\2\u01a7\1\u01a6\4\u01a7\1\u01a8\1\u01a7\43\0"+
-    "\1\u0169\110\0\1\u0169\33\0\2\u016a\1\0\2\u016a\2\0"+
-    "\2\u016a\45\0\4\371\2\0\1\371\15\0\1\371\6\0"+
-    "\12\371\44\0\4\372\2\0\1\372\15\0\1\372\6\0"+
-    "\12\372\44\0\4\373\2\0\1\373\15\0\1\373\6\0"+
-    "\12\373\43\0\1\172\20\63\1\u01a9\11\63\1\173\12\63"+
-    "\43\0\1\172\3\63\1\u0107\26\63\1\173\12\63\44\0"+
-    "\2\63\1\u01aa\2\63\1\u01ab\1\u01ac\1\u01ad\2\63\1\u01ae"+
-    "\2\63\1\u01af\3\63\1\u01b0\1\u01b1\1\u01b2\1\63\1\u01b3"+
-    "\1\u01b4\1\63\1\u01b5\1\u01b6\1\173\1\u01b7\2\63\1\u01b8"+
-    "\1\63\1\u01b9\1\u01ba\3\63\77\0\12\u01bb\10\0\1\371"+
-    "\1\372\1\373\30\0\1\221\24\117\1\u01bc\5\117\1\36"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\1\117\1\u01bd\30\117"+
-    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\16\0\1\221\14\117\1\u01be"+
-    "\15\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\1\117"+
-    "\1\u01bf\30\117\1\36\12\117\1\0\3\33\1\0\2\33"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
-    "\21\117\1\u01c0\10\117\1\36\12\117\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
-    "\1\221\24\117\1\u01c1\5\117\1\36\12\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\24\117\1\u01c2\5\117\1\36\12\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\1\344\31\117\1\36\12\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\24\117\1\u01c3\5\117\1\36\12\117"+
-    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\16\0\1\221\1\117\1\u01c4\30\117\1\36"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\31\117\1\u01c5\1\36"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\24\117\1\u01c6\5\117"+
-    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\16\0\1\221\1\117\1\u01c7"+
-    "\30\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\1\u01c8"+
-    "\31\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\21\117"+
-    "\1\u01c9\10\117\1\36\12\117\1\0\3\33\1\0\2\33"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
-    "\24\117\1\u01ca\5\117\1\36\12\117\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
-    "\1\221\24\117\1\u01cb\5\117\1\36\12\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\4\117\1\u01cc\25\117\1\36\12\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\21\117\1\u01cd\10\117\1\36\12\117"+
-    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\16\0\1\221\24\117\1\u01ce\5\117\1\36"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\32\117\1\36\7\117"+
-    "\1\u01cf\2\117\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\16\0\1\221\1\u01d0\31\117"+
-    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\16\0\1\u01d1\32\u0189\1\u01d2"+
-    "\12\u0189\11\0\1\u018a\31\0\51\u018a\1\u01d3\3\0\3\u018a"+
-    "\1\373\3\0\1\u018a\25\0\4\u01d4\2\0\1\u01d4\15\0"+
-    "\1\u01d4\6\0\12\u01d4\1\u01d5\42\0\1\u0154\32\u0155\1\u0154"+
-    "\12\u0155\1\u0156\2\u0154\1\u0157\3\u0154\1\u0158\5\0\2\u0154"+
-    "\4\0\1\u0154\17\0\1\u0154\32\u0155\1\u018d\12\u0155\1\u0156"+
-    "\2\u0154\1\u0157\3\u0154\1\u0158\5\0\2\u0154\4\0\1\u0154"+
-    "\17\0\34\u0156\12\u01d6\1\0\2\u0156\1\u0190\3\u0156\1\u0158"+
-    "\5\0\2\u0156\4\0\1\u0156\17\0\51\u018f\1\u01d7\3\0"+
-    "\3\u018f\1\373\2\0\1\u01d8\1\u018f\25\0\4\u01d9\2\0"+
-    "\1\u01d9\15\0\1\u01d9\6\0\12\u01d9\44\0\4\u0154\2\0"+
-    "\1\u0154\15\0\1\u0154\6\0\12\u0154\43\0\1\u01da\32\u0192"+
-    "\1\u01db\12\u0192\1\u01dc\10\0\1\u018f\32\0\4\u01dd\2\0"+
-    "\1\u01dd\15\0\1\u01dd\6\0\12\u01dd\1\u01de\110\0\1\u01df"+
-    "\42\0\46\u0195\1\u0197\2\u0195\1\u0198\3\u0195\1\u0199\5\0"+
-    "\2\u0195\4\0\1\u0195\17\0\1\u01e0\32\u0196\1\u01e1\12\u0196"+
-    "\1\u01e2\2\u0195\1\u0198\3\u0195\1\u0199\1\371\1\372\1\373"+
-    "\2\0\2\u0195\4\0\1\u0195\17\0\46\u0197\1\0\2\u0197"+
-    "\1\u01e3\3\u0197\1\u0199\5\0\2\u0197\4\0\1\u0197\20\0"+
-    "\4\u01e4\2\0\1\u01e4\15\0\1\u01e4\6\0\12\u01e4\44\0"+
-    "\32\u01e5\1\0\12\u01e5\13\0\1\u019a\17\0\1\3\2\4"+
-    "\2\0\2\27\1\30\1\254\32\10\1\36\12\163\1\341"+
-    "\1\33\1\46\1\33\1\0\2\47\1\34\1\321\1\322"+
-    "\1\323\2\0\1\27\1\33\4\0\2\33\2\0\1\4"+
-    "\3\0\1\3\2\4\2\0\2\27\1\30\1\254\32\10"+
-    "\1\36\2\u019b\1\163\2\u019b\2\163\2\u019b\1\163\1\341"+
-    "\1\33\1\46\1\33\1\0\2\47\1\34\1\321\1\322"+
-    "\1\323\2\0\1\27\1\33\4\0\2\33\2\0\1\4"+
-    "\14\0\4\u01e6\2\0\1\u01e6\15\0\1\u01e6\6\0\12\u01e6"+
-    "\1\u0161\43\0\4\u01e7\2\0\1\u01e7\15\0\1\u01e7\6\0"+
-    "\12\u01e7\1\u01e8\43\0\4\u01e9\2\0\1\u01e9\15\0\1\u01e9"+
-    "\6\0\1\u01ea\2\u01eb\1\u01ea\4\u01eb\1\u01ec\1\u01eb\14\0"+
-    "\1\264\27\0\4\u01ed\2\0\1\u01ed\15\0\1\u01ed\6\0"+
-    "\12\u01ed\1\u01a1\13\0\1\264\27\0\4\u01e9\2\0\1\u01e9"+
-    "\15\0\1\u01e9\6\0\1\u01ea\2\u01eb\1\u01ea\4\u01eb\1\u01ec"+
-    "\1\u01eb\43\0\1\365\4\u01ed\2\0\1\u01ed\15\0\1\u01ed"+
-    "\6\0\12\u01ee\1\u01a1\13\0\1\264\26\0\1\365\4\u01ed"+
-    "\2\0\1\u01ed\15\0\1\u01ed\6\0\12\u01ed\1\u01a1\13\0"+
-    "\1\264\26\0\1\365\4\u01ed\2\0\1\u01ed\15\0\1\u01ed"+
-    "\6\0\2\u01ee\1\u01ed\2\u01ee\2\u01ed\2\u01ee\1\u01ed\1\u01a1"+
-    "\13\0\1\264\74\0\1\u0128\13\0\1\264\26\0\1\u01ef"+
-    "\33\0\12\u01a7\43\0\1\u01ef\33\0\12\u01f0\43\0\1\u01ef"+
-    "\33\0\1\u01a7\1\u01f1\1\u01f0\2\u01a7\2\u01f0\2\u01a7\1\u01f0"+
-    "\43\0\1\172\12\63\1\374\17\63\1\173\12\63\43\0"+
-    "\1\172\3\63\1\u01f2\26\63\1\173\12\63\43\0\1\172"+
-    "\32\63\1\173\4\63\1\u01f3\5\63\43\0\1\172\10\63"+
-    "\1\u01f4\12\63\1\u01f5\6\63\1\173\12\63\43\0\1\172"+
-    "\32\63\1\173\2\63\1\u01f6\7\63\43\0\1\172\7\63"+
-    "\1\u01f7\22\63\1\173\12\63\43\0\1\172\7\63\1\u01f8"+
-    "\22\63\1\173\3\63\1\u01f9\6\63\43\0\1\172\7\63"+
-    "\1\u01fa\22\63\1\173\12\63\43\0\1\172\31\63\1\u01fb"+
-    "\1\173\12\63\43\0\1\172\1\63\1\u01fc\30\63\1\173"+
-    "\12\63\43\0\1\172\7\63\1\u01fd\1\63\1\u01fe\20\63"+
-    "\1\173\12\63\43\0\1\172\22\63\1\u01ff\7\63\1\173"+
-    "\2\63\1\u0200\7\63\43\0\1\172\7\63\1\u0201\22\63"+
-    "\1\173\12\63\43\0\1\172\7\63\1\u0202\5\63\1\u0203"+
-    "\14\63\1\173\12\63\43\0\1\172\23\63\1\u0204\6\63"+
-    "\1\173\12\63\43\0\1\172\32\63\1\173\3\63\1\u0205"+
-    "\6\63\43\0\1\172\17\63\1\u0206\12\63\1\173\12\63"+
-    "\43\0\1\172\32\63\1\173\1\u0207\11\63\77\0\12\u0208"+
-    "\10\0\1\371\1\372\1\373\30\0\1\221\1\u0209\31\117"+
-    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\16\0\1\221\21\117\1\u020a"+
-    "\10\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\16\117"+
-    "\1\u020b\4\117\1\u020c\6\117\1\36\12\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\32\117\1\36\10\117\1\u020d\1\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\32\117\1\36\10\117\1\u020e\1\117"+
-    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\16\0\1\221\1\u020f\2\117\1\u0210\26\117"+
-    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\16\0\1\221\16\117\1\u0211"+
-    "\13\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\25\117"+
-    "\1\u0212\4\117\1\36\12\117\1\0\3\33\1\0\2\33"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
-    "\32\117\1\36\10\117\1\u0213\1\117\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
-    "\1\221\23\117\1\u0214\6\117\1\36\12\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\31\117\1\u0215\1\36\12\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\26\117\1\u0216\3\117\1\36\12\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\11\117\1\u0217\20\117\1\36\12\117"+
-    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\16\0\1\221\32\117\1\36\3\117\1\u0218"+
-    "\6\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\10\117\1\u0219\21\117"+
-    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\16\0\1\221\3\117\1\u021a"+
-    "\26\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\21\117"+
-    "\1\u021b\6\117\1\u021c\1\117\1\36\12\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\12\117\1\u021d\17\117\1\36\12\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\32\117\1\36\1\117\1\u021e\10\117"+
-    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\16\0\1\221\24\117\1\u021f\5\117\1\36"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\31\117\1\u0220\1\36"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\17\0\32\u0189\1\0\12\u0189\44\0"+
-    "\32\u0189\1\u01d2\12\u0189\44\0\4\u0221\2\0\1\u0221\15\0"+
-    "\1\u0221\6\0\12\u0221\44\0\4\u0222\2\0\1\u0222\15\0"+
-    "\1\u0222\6\0\12\u0222\1\u0223\110\0\1\u0224\42\0\34\u0156"+
-    "\12\u0225\1\0\2\u0156\1\u0190\3\u0156\1\u0158\1\0\1\u018f"+
-    "\3\0\2\u0156\4\0\1\u0156\20\0\4\u0226\2\0\1\u0226"+
-    "\15\0\1\u0226\6\0\12\u0226\63\0\1\u0227\71\0\4\u0156"+
-    "\2\0\1\u0156\15\0\1\u0156\6\0\12\u0156\44\0\32\u0192"+
-    "\1\0\12\u0192\44\0\32\u0192\1\u01db\12\u0192\77\0\12\u0228"+
-    "\44\0\4\u0229\2\0\1\u0229\15\0\1\u0229\6\0\12\u0229"+
-    "\1\u01de\43\0\4\u022a\2\0\1\u022a\15\0\1\u022a\6\0"+
-    "\12\u022a\1\u022b\43\0\4\u022c\2\0\1\u022c\15\0\1\u022c"+
-    "\6\0\1\u022d\2\u022e\1\u022d\4\u022e\1\u022f\1\u022e\14\0"+
-    "\1\u0230\26\0\1\u0195\32\u0196\1\u0195\12\u0196\1\u0197\2\u0195"+
-    "\1\u0198\3\u0195\1\u0199\5\0\2\u0195\4\0\1\u0195\17\0"+
-    "\1\u0195\32\u0196\1\u01e1\12\u0196\1\u0197\2\u0195\1\u0198\3\u0195"+
-    "\1\u0199\5\0\2\u0195\4\0\1\u0195\17\0\34\u0197\12\u0231"+
-    "\1\0\2\u0197\1\u01e3\3\u0197\1\u0199\5\0\2\u0197\4\0"+
-    "\1\u0197\20\0\4\u0232\2\0\1\u0232\15\0\1\u0232\6\0"+
-    "\12\u0232\44\0\4\u0195\2\0\1\u0195\15\0\1\u0195\6\0"+
-    "\12\u0195\43\0\1\u0233\32\u01e5\1\u0234\12\u01e5\1\341\7\0"+
-    "\1\371\1\372\1\373\76\0\1\u0161\43\0\4\u0235\2\0"+
-    "\1\u0235\15\0\1\u0235\6\0\12\u0235\1\u01e8\43\0\4\u0236"+
-    "\2\0\1\u0236\15\0\1\u0236\6\0\12\u0236\1\u0237\43\0"+
-    "\4\u0238\2\0\1\u0238\15\0\1\u0238\6\0\12\u0238\1\u0239"+
-    "\13\0\1\264\26\0\1\365\4\u0238\2\0\1\u0238\15\0"+
-    "\1\u0238\6\0\12\u023a\1\u0239\13\0\1\264\26\0\1\365"+
-    "\4\u0238\2\0\1\u0238\15\0\1\u0238\6\0\12\u023b\1\u0239"+
-    "\13\0\1\264\26\0\1\365\4\u0238\2\0\1\u0238\15\0"+
-    "\1\u0238\6\0\1\u023a\1\u023c\1\u023b\2\u023a\2\u023b\2\u023a"+
-    "\1\u023b\1\u0239\13\0\1\264\27\0\4\u023d\2\0\1\u023d"+
-    "\15\0\1\u023d\6\0\12\u023d\1\u01a1\13\0\1\264\26\0"+
-    "\1\365\4\u023d\2\0\1\u023d\15\0\1\u023d\6\0\12\u023d"+
-    "\1\u01a1\13\0\1\264\62\0\1\u023e\2\u023f\1\u023e\4\u023f"+
-    "\1\u0240\1\u023f\43\0\1\u01ef\110\0\1\u01ef\33\0\2\u01f0"+
-    "\1\0\2\u01f0\2\0\2\u01f0\44\0\1\172\24\63\1\u0241"+
-    "\5\63\1\173\12\63\43\0\1\172\1\63\1\u0242\30\63"+
-    "\1\173\12\63\43\0\1\172\14\63\1\u0243\15\63\1\173"+
-    "\12\63\43\0\1\172\1\63\1\u0244\30\63\1\173\12\63"+
-    "\43\0\1\172\21\63\1\u0245\10\63\1\173\12\63\43\0"+
-    "\1\172\24\63\1\u0246\5\63\1\173\12\63\43\0\1\172"+
-    "\24\63\1\u0247\5\63\1\173\12\63\43\0\1\172\1\u0137"+
-    "\31\63\1\173\12\63\43\0\1\172\24\63\1\u0248\5\63"+
-    "\1\173\12\63\43\0\1\172\1\63\1\u0249\30\63\1\173"+
-    "\12\63\43\0\1\172\31\63\1\u024a\1\173\12\63\43\0"+
-    "\1\172\24\63\1\u024b\5\63\1\173\12\63\43\0\1\172"+
-    "\1\63\1\u024c\30\63\1\173\12\63\43\0\1\172\1\u024d"+
-    "\31\63\1\173\12\63\43\0\1\172\21\63\1\u024e\10\63"+
-    "\1\173\12\63\43\0\1\172\24\63\1\u024f\5\63\1\173"+
-    "\12\63\43\0\1\172\24\63\1\u0250\5\63\1\173\12\63"+
-    "\43\0\1\172\4\63\1\u0251\25\63\1\173\12\63\43\0"+
-    "\1\172\21\63\1\u0252\10\63\1\173\12\63\43\0\1\172"+
-    "\24\63\1\u0253\5\63\1\173\12\63\43\0\1\172\32\63"+
-    "\1\173\7\63\1\u0254\2\63\43\0\1\172\1\u0255\31\63"+
-    "\1\173\12\63\121\0\1\371\1\372\1\373\30\0\1\221"+
-    "\32\117\1\36\1\u0256\11\117\1\0\3\33\1\0\2\33"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
-    "\32\117\1\36\7\117\1\u0257\2\117\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
-    "\1\221\32\117\1\36\6\117\1\350\3\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\32\117\1\36\5\117\1\350\4\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\1\117\1\u0258\30\117\1\36\12\117"+
-    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\16\0\1\221\32\117\1\36\1\117\1\u0259"+
-    "\10\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\1\u025a\27\117\1\u025b"+
-    "\1\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\4\117"+
-    "\1\u025c\25\117\1\36\12\117\1\0\3\33\1\0\2\33"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
-    "\32\117\1\36\1\u025d\11\117\1\0\3\33\1\0\2\33"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
-    "\32\117\1\36\3\117\1\u025e\6\117\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
-    "\1\221\1\u025f\31\117\1\36\12\117\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
-    "\1\221\1\u0257\31\117\1\36\12\117\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
-    "\1\221\32\117\1\36\2\117\1\u0260\7\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\32\117\1\36\2\117\1\u0261\7\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\15\117\1\u0262\14\117\1\36\12\117"+
-    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\16\0\1\221\32\117\1\36\5\117\1\u0263"+
-    "\4\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\32\117\1\36\10\117"+
-    "\1\u0264\1\117\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\16\0\1\221\1\117\1\u0265"+
-    "\30\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\32\117"+
-    "\1\36\3\117\1\u0266\6\117\1\0\3\33\1\0\2\33"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
-    "\32\117\1\36\1\117\1\u0267\10\117\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
-    "\1\221\32\117\1\36\1\117\1\u0268\10\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\24\117\1\u0269\5\117\1\36\12\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\32\117\1\36\3\117\1\u026a\6\117"+
-    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\16\0\1\221\25\117\1\u026b\4\117\1\36"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\17\0\4\u018a\2\0\1\u018a\15\0"+
-    "\1\u018a\6\0\12\u018a\44\0\4\u026c\2\0\1\u026c\15\0"+
-    "\1\u026c\6\0\12\u026c\1\u0223\43\0\4\u026d\2\0\1\u026d"+
-    "\15\0\1\u026d\6\0\12\u026d\1\u026e\43\0\4\u026f\2\0"+
-    "\1\u026f\15\0\1\u026f\6\0\1\u0270\2\u0271\1\u0270\4\u0271"+
-    "\1\u0272\1\u0271\14\0\1\u0273\26\0\34\u0156\12\u0274\1\0"+
-    "\2\u0156\1\u0190\3\u0156\1\u0158\1\0\1\u018f\3\0\2\u0156"+
-    "\4\0\1\u0156\20\0\4\u018f\2\0\1\u018f\15\0\1\u018f"+
-    "\6\0\12\u018f\74\0\1\u0275\113\0\12\u0276\11\0\1\u018f"+
-    "\32\0\4\u0277\2\0\1\u0277\15\0\1\u0277\6\0\12\u0277"+
-    "\1\u01de\43\0\4\u0278\2\0\1\u0278\15\0\1\u0278\6\0"+
-    "\12\u0278\1\u0279\43\0\4\u027a\2\0\1\u027a\15\0\1\u027a"+
-    "\6\0\1\u027b\2\u027c\1\u027b\4\u027c\1\u027d\1\u027c\14\0"+
-    "\1\u0230\27\0\4\u027e\2\0\1\u027e\15\0\1\u027e\6\0"+
-    "\12\u027e\1\u027f\13\0\1\u0230\26\0\1\u0280\4\u027e\2\0"+
-    "\1\u027e\15\0\1\u027e\6\0\12\u0281\1\u027f\13\0\1\u0230"+
-    "\26\0\1\u0280\4\u027e\2\0\1\u027e\15\0\1\u027e\6\0"+
-    "\12\u0282\1\u027f\13\0\1\u0230\26\0\1\u0280\4\u027e\2\0"+
-    "\1\u027e\15\0\1\u027e\6\0\1\u0281\1\u0283\1\u0282\2\u0281"+
-    "\2\u0282\2\u0281\1\u0282\1\u027f\13\0\1\u0230\74\0\1\u01dc"+
-    "\10\0\1\u018f\31\0\34\u0197\12\u0284\1\0\2\u0197\1\u01e3"+
-    "\3\u0197\1\u0199\1\371\1\372\1\373\2\0\2\u0197\4\0"+
-    "\1\u0197\20\0\4\u0197\2\0\1\u0197\15\0\1\u0197\6\0"+
-    "\12\u0197\44\0\32\u01e5\1\0\12\u01e5\44\0\32\u01e5\1\u0234"+
-    "\12\u01e5\44\0\4\u0285\2\0\1\u0285\15\0\1\u0285\6\0"+
-    "\12\u0285\1\u01e8\43\0\4\u0286\2\0\1\u0286\15\0\1\u0286"+
-    "\6\0\12\u0286\1\u0287\43\0\4\u0288\2\0\1\u0288\15\0"+
-    "\1\u0288\6\0\1\u0289\2\u028a\1\u0289\4\u028a\1\u028b\1\u028a"+
-    "\14\0\1\264\27\0\4\u028c\2\0\1\u028c\15\0\1\u028c"+
-    "\6\0\12\u028c\1\u0239\13\0\1\264\27\0\4\u0288\2\0"+
-    "\1\u0288\15\0\1\u0288\6\0\1\u0289\2\u028a\1\u0289\4\u028a"+
-    "\1\u028b\1\u028a\43\0\1\365\4\u028c\2\0\1\u028c\15\0"+
-    "\1\u028c\6\0\12\u028d\1\u0239\13\0\1\264\26\0\1\365"+
-    "\4\u028c\2\0\1\u028c\15\0\1\u028c\6\0\12\u028c\1\u0239"+
-    "\13\0\1\264\26\0\1\365\4\u028c\2\0\1\u028c\15\0"+
-    "\1\u028c\6\0\2\u028d\1\u028c\2\u028d\2\u028c\2\u028d\1\u028c"+
-    "\1\u0239\13\0\1\264\74\0\1\u01a1\13\0\1\264\62\0"+
-    "\12\u023f\14\0\1\264\62\0\12\u028e\14\0\1\264\62\0"+
-    "\1\u023f\1\u028f\1\u028e\2\u023f\2\u028e\2\u023f\1\u028e\14\0"+
-    "\1\264\26\0\1\172\1\u0290\31\63\1\173\12\63\43\0"+
-    "\1\172\21\63\1\u0291\10\63\1\173\12\63\43\0\1\172"+
-    "\16\63\1\u0292\4\63\1\u0293\6\63\1\173\12\63\43\0"+
-    "\1\172\32\63\1\173\10\63\1\u0294\1\63\43\0\1\172"+
-    "\32\63\1\173\10\63\1\u0295\1\63\43\0\1\172\1\u0296"+
-    "\2\63\1\u0297\26\63\1\173\12\63\43\0\1\172\16\63"+
-    "\1\u0298\13\63\1\173\12\63\43\0\1\172\25\63\1\u0299"+
-    "\4\63\1\173\12\63\43\0\1\172\32\63\1\173\10\63"+
-    "\1\u029a\1\63\43\0\1\172\23\63\1\u029b\6\63\1\173"+
-    "\12\63\43\0\1\172\31\63\1\u029c\1\173\12\63\43\0"+
-    "\1\172\26\63\1\u029d\3\63\1\173\12\63\43\0\1\172"+
-    "\11\63\1\u029e\20\63\1\173\12\63\43\0\1\172\32\63"+
-    "\1\173\3\63\1\u029f\6\63\43\0\1\172\10\63\1\u02a0"+
-    "\21\63\1\173\12\63\43\0\1\172\3\63\1\u02a1\26\63"+
-    "\1\173\12\63\43\0\1\172\21\63\1\u02a2\6\63\1\u02a3"+
-    "\1\63\1\173\12\63\43\0\1\172\12\63\1\u02a4\17\63"+
-    "\1\173\12\63\43\0\1\172\32\63\1\173\1\63\1\u02a5"+
-    "\10\63\43\0\1\172\24\63\1\u02a6\5\63\1\173\12\63"+
-    "\43\0\1\172\31\63\1\u02a7\1\173\12\63\43\0\1\221"+
-    "\1\u02a8\31\117\1\36\12\117\1\0\3\33\1\0\2\33"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
-    "\25\117\1\226\4\117\1\36\12\117\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
-    "\1\221\32\117\1\36\5\117\1\u02a9\4\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\32\117\1\36\3\117\1\u02a8\6\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\12\117\1\u02aa\17\117\1\36\12\117"+
-    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\16\0\1\221\25\117\1\u02ab\4\117\1\36"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\15\117\1\u02ac\14\117"+
-    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\16\0\1\221\2\117\1\u0257"+
-    "\27\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\1\117"+
-    "\1\226\30\117\1\36\12\117\1\0\3\33\1\0\2\33"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
-    "\11\117\1\u02ad\20\117\1\36\12\117\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
-    "\1\221\1\u02ae\31\117\1\36\12\117\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
-    "\1\221\1\u02af\31\117\1\36\12\117\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
-    "\1\221\2\117\1\u02b0\27\117\1\36\12\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\32\117\1\36\4\117\1\235\5\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\1\u02b1\31\117\1\36\12\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\25\117\1\u02b2\4\117\1\36\12\117"+
-    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\16\0\1\221\32\117\1\36\4\117\1\u02a8"+
-    "\5\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\32\117\1\36\11\117"+
-    "\1\u02a8\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\32\117\1\36\2\117"+
-    "\1\u02a8\7\117\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\16\0\1\221\16\117\1\u02b3"+
-    "\13\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\32\117"+
-    "\1\36\3\117\1\u02b4\6\117\1\0\3\33\1\0\2\33"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
-    "\24\117\1\u02b5\5\117\1\36\12\117\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\17\0"+
-    "\4\u02b6\2\0\1\u02b6\15\0\1\u02b6\6\0\12\u02b6\1\u0223"+
-    "\43\0\4\u02b7\2\0\1\u02b7\15\0\1\u02b7\6\0\12\u02b7"+
-    "\1\u02b8\43\0\4\u02b9\2\0\1\u02b9\15\0\1\u02b9\6\0"+
-    "\1\u02ba\2\u02bb\1\u02ba\4\u02bb\1\u02bc\1\u02bb\14\0\1\u0273"+
-    "\27\0\4\u02bd\2\0\1\u02bd\15\0\1\u02bd\6\0\12\u02bd"+
-    "\1\u02be\13\0\1\u0273\26\0\1\u02bf\4\u02bd\2\0\1\u02bd"+
-    "\15\0\1\u02bd\6\0\12\u02c0\1\u02be\13\0\1\u0273\26\0"+
-    "\1\u02bf\4\u02bd\2\0\1\u02bd\15\0\1\u02bd\6\0\12\u02c1"+
-    "\1\u02be\13\0\1\u0273\26\0\1\u02bf\4\u02bd\2\0\1\u02bd"+
-    "\15\0\1\u02bd\6\0\1\u02c0\1\u02c2\1\u02c1\2\u02c0\2\u02c1"+
-    "\2\u02c0\1\u02c1\1\u02be\13\0\1\u0273\105\0\1\u018a\31\0"+
-    "\34\u0156\12\u02c3\1\0\2\u0156\1\u0190\3\u0156\1\u0158\1\0"+
-    "\1\u018f\3\0\2\u0156\4\0\1\u0156\35\0\1\u02c4\126\0"+
-    "\12\u02c5\11\0\1\u018f\77\0\1\u01de\43\0\4\u02c6\2\0"+
-    "\1\u02c6\15\0\1\u02c6\6\0\12\u02c6\1\u0279\43\0\4\u02c7"+
-    "\2\0\1\u02c7\15\0\1\u02c7\6\0\12\u02c7\1\u02c8\43\0"+
-    "\4\u02c9\2\0\1\u02c9\15\0\1\u02c9\6\0\12\u02c9\1\u02ca"+
-    "\13\0\1\u0230\26\0\1\u0280\4\u02c9\2\0\1\u02c9\15\0"+
-    "\1\u02c9\6\0\12\u02cb\1\u02ca\13\0\1\u0230\26\0\1\u0280"+
-    "\4\u02c9\2\0\1\u02c9\15\0\1\u02c9\6\0\12\u02cc\1\u02ca"+
-    "\13\0\1\u0230\26\0\1\u0280\4\u02c9\2\0\1\u02c9\15\0"+
-    "\1\u02c9\6\0\1\u02cb\1\u02cd\1\u02cc\2\u02cb\2\u02cc\2\u02cb"+
-    "\1\u02cc\1\u02ca\13\0\1\u0230\27\0\4\u02ce\2\0\1\u02ce"+
-    "\15\0\1\u02ce\6\0\12\u02ce\1\u027f\13\0\1\u0230\27\0"+
-    "\4\u027a\2\0\1\u027a\15\0\1\u027a\6\0\1\u027b\2\u027c"+
-    "\1\u027b\4\u027c\1\u027d\1\u027c\77\0\1\u02cf\2\u02d0\1\u02cf"+
-    "\4\u02d0\1\u02d1\1\u02d0\43\0\1\u0280\4\u02ce\2\0\1\u02ce"+
-    "\15\0\1\u02ce\6\0\12\u02d2\1\u027f\13\0\1\u0230\26\0"+
-    "\1\u0280\4\u02ce\2\0\1\u02ce\15\0\1\u02ce\6\0\12\u02ce"+
-    "\1\u027f\13\0\1\u0230\26\0\1\u0280\4\u02ce\2\0\1\u02ce"+
-    "\15\0\1\u02ce\6\0\2\u02d2\1\u02ce\2\u02d2\2\u02ce\2\u02d2"+
-    "\1\u02ce\1\u027f\13\0\1\u0230\26\0\34\u0197\12\u02d3\1\0"+
-    "\2\u0197\1\u01e3\3\u0197\1\u0199\1\371\1\372\1\373\2\0"+
-    "\2\u0197\4\0\1\u0197\65\0\1\u01e8\43\0\4\u02d4\2\0"+
-    "\1\u02d4\15\0\1\u02d4\6\0\12\u02d4\1\u0287\43\0\4\u02d5"+
-    "\2\0\1\u02d5\15\0\1\u02d5\6\0\12\u02d5\1\u02d6\43\0"+
-    "\4\u02d7\2\0\1\u02d7\15\0\1\u02d7\6\0\12\u02d7\1\u02d8"+
-    "\13\0\1\264\26\0\1\365\4\u02d7\2\0\1\u02d7\15\0"+
-    "\1\u02d7\6\0\12\u02d9\1\u02d8\13\0\1\264\26\0\1\365"+
-    "\4\u02d7\2\0\1\u02d7\15\0\1\u02d7\6\0\12\u02da\1\u02d8"+
-    "\13\0\1\264\26\0\1\365\4\u02d7\2\0\1\u02d7\15\0"+
-    "\1\u02d7\6\0\1\u02d9\1\u02db\1\u02da\2\u02d9\2\u02da\2\u02d9"+
-    "\1\u02da\1\u02d8\13\0\1\264\27\0\4\u02dc\2\0\1\u02dc"+
-    "\15\0\1\u02dc\6\0\12\u02dc\1\u0239\13\0\1\264\26\0"+
-    "\1\365\4\u02dc\2\0\1\u02dc\15\0\1\u02dc\6\0\12\u02dc"+
-    "\1\u0239\13\0\1\264\110\0\1\264\62\0\2\u028e\1\0"+
-    "\2\u028e\2\0\2\u028e\15\0\1\264\26\0\1\172\32\63"+
-    "\1\173\1\u02dd\11\63\43\0\1\172\32\63\1\173\7\63"+
-    "\1\u02de\2\63\43\0\1\172\32\63\1\173\6\63\1\u013c"+
-    "\3\63\43\0\1\172\32\63\1\173\5\63\1\u013c\4\63"+
-    "\43\0\1\172\1\63\1\u02df\30\63\1\173\12\63\43\0"+
-    "\1\172\32\63\1\173\1\63\1\u02e0\10\63\43\0\1\172"+
-    "\1\u02e1\27\63\1\u02e2\1\63\1\173\12\63\43\0\1\172"+
-    "\4\63\1\u02e3\25\63\1\173\12\63\43\0\1\172\32\63"+
-    "\1\173\1\u02e4\11\63\43\0\1\172\32\63\1\173\3\63"+
-    "\1\u02e5\6\63\43\0\1\172\1\u02e6\31\63\1\173\12\63"+
-    "\43\0\1\172\1\u02de\31\63\1\173\12\63\43\0\1\172"+
-    "\32\63\1\173\2\63\1\u02e7\7\63\43\0\1\172\32\63"+
-    "\1\173\2\63\1\u02e8\7\63\43\0\1\172\15\63\1\u02e9"+
-    "\14\63\1\173\12\63\43\0\1\172\32\63\1\173\5\63"+
-    "\1\u02ea\4\63\43\0\1\172\32\63\1\173\10\63\1\u02eb"+
-    "\1\63\43\0\1\172\1\63\1\u02ec\30\63\1\173\12\63"+
-    "\43\0\1\172\32\63\1\173\3\63\1\u02ed\6\63\43\0"+
-    "\1\172\32\63\1\173\1\63\1\u02ee\10\63\43\0\1\172"+
-    "\32\63\1\173\1\63\1\u02ef\10\63\43\0\1\172\24\63"+
-    "\1\u02f0\5\63\1\173\12\63\43\0\1\172\32\63\1\173"+
-    "\3\63\1\u02f1\6\63\43\0\1\172\25\63\1\u02f2\4\63"+
-    "\1\173\12\63\43\0\1\221\2\117\1\226\27\117\1\36"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\3\117\1\u02f3\26\117"+
-    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\16\0\1\221\32\117\1\36"+
-    "\11\117\1\u02f4\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\16\0\1\221\32\117\1\36"+
-    "\11\117\1\u02f5\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\16\0\1\221\32\117\1\36"+
-    "\7\117\1\u02f6\2\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\32\117"+
-    "\1\36\4\117\1\u02f7\5\117\1\0\3\33\1\0\2\33"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
-    "\26\117\1\u02f8\3\117\1\36\12\117\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
-    "\1\221\30\117\1\u02f9\1\117\1\36\12\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\11\117\1\343\20\117\1\36\12\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\12\117\1\u02fa\17\117\1\36\12\117"+
-    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\16\0\1\221\17\117\1\236\12\117\1\36"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\32\117\1\36\4\117"+
-    "\1\u02fb\5\117\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\16\0\1\221\30\117\1\u02fc"+
-    "\1\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\30\117"+
-    "\1\u02fd\1\117\1\36\12\117\1\0\3\33\1\0\2\33"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\64\0\1\u0223"+
-    "\43\0\4\u02fe\2\0\1\u02fe\15\0\1\u02fe\6\0\12\u02fe"+
-    "\1\u02b8\43\0\4\u02ff\2\0\1\u02ff\15\0\1\u02ff\6\0"+
-    "\12\u02ff\1\u0300\43\0\4\u0301\2\0\1\u0301\15\0\1\u0301"+
-    "\6\0\12\u0301\1\u0302\13\0\1\u0273\26\0\1\u02bf\4\u0301"+
-    "\2\0\1\u0301\15\0\1\u0301\6\0\12\u0303\1\u0302\13\0"+
-    "\1\u0273\26\0\1\u02bf\4\u0301\2\0\1\u0301\15\0\1\u0301"+
-    "\6\0\12\u0304\1\u0302\13\0\1\u0273\26\0\1\u02bf\4\u0301"+
-    "\2\0\1\u0301\15\0\1\u0301\6\0\1\u0303\1\u0305\1\u0304"+
-    "\2\u0303\2\u0304\2\u0303\1\u0304\1\u0302\13\0\1\u0273\27\0"+
-    "\4\u0306\2\0\1\u0306\15\0\1\u0306\6\0\12\u0306\1\u02be"+
-    "\13\0\1\u0273\27\0\4\u02b9\2\0\1\u02b9\15\0\1\u02b9"+
-    "\6\0\1\u02ba\2\u02bb\1\u02ba\4\u02bb\1\u02bc\1\u02bb\77\0"+
-    "\1\u0307\2\u0308\1\u0307\4\u0308\1\u0309\1\u0308\43\0\1\u02bf"+
-    "\4\u0306\2\0\1\u0306\15\0\1\u0306\6\0\12\u030a\1\u02be"+
-    "\13\0\1\u0273\26\0\1\u02bf\4\u0306\2\0\1\u0306\15\0"+
-    "\1\u0306\6\0\12\u0306\1\u02be\13\0\1\u0273\26\0\1\u02bf"+
-    "\4\u0306\2\0\1\u0306\15\0\1\u0306\6\0\2\u030a\1\u0306"+
-    "\2\u030a\2\u0306\2\u030a\1\u0306\1\u02be\13\0\1\u0273\26\0"+
-    "\34\u0156\12\u030b\1\0\2\u0156\1\u0190\3\u0156\1\u0158\1\0"+
-    "\1\u018f\3\0\2\u0156\4\0\1\u0156\23\0\1\u030c\140\0"+
-    "\12\u030d\11\0\1\u018f\32\0\4\u030e\2\0\1\u030e\15\0"+
-    "\1\u030e\6\0\12\u030e\1\u0279\43\0\4\u030f\2\0\1\u030f"+
-    "\15\0\1\u030f\6\0\12\u030f\1\u0310\43\0\4\u0311\2\0"+
-    "\1\u0311\15\0\1\u0311\6\0\1\u0312\2\u0313\1\u0312\4\u0313"+
-    "\1\u0314\1\u0313\14\0\1\u0230\27\0\4\u0315\2\0\1\u0315"+
-    "\15\0\1\u0315\6\0\12\u0315\1\u02ca\13\0\1\u0230\27\0"+
-    "\4\u0311\2\0\1\u0311\15\0\1\u0311\6\0\1\u0312\2\u0313"+
-    "\1\u0312\4\u0313\1\u0314\1\u0313\43\0\1\u0280\4\u0315\2\0"+
-    "\1\u0315\15\0\1\u0315\6\0\12\u0316\1\u02ca\13\0\1\u0230"+
-    "\26\0\1\u0280\4\u0315\2\0\1\u0315\15\0\1\u0315\6\0"+
-    "\12\u0315\1\u02ca\13\0\1\u0230\26\0\1\u0280\4\u0315\2\0"+
-    "\1\u0315\15\0\1\u0315\6\0\2\u0316\1\u0315\2\u0316\2\u0315"+
-    "\2\u0316\1\u0315\1\u02ca\13\0\1\u0230\27\0\4\u0317\2\0"+
-    "\1\u0317\15\0\1\u0317\6\0\12\u0317\1\u027f\13\0\1\u0230"+
-    "\26\0\1\u0318\33\0\12\u02d0\43\0\1\u0318\33\0\12\u0319"+
-    "\43\0\1\u0318\33\0\1\u02d0\1\u031a\1\u0319\2\u02d0\2\u0319"+
-    "\2\u02d0\1\u0319\43\0\1\u0280\4\u0317\2\0\1\u0317\15\0"+
-    "\1\u0317\6\0\12\u0317\1\u027f\13\0\1\u0230\26\0\34\u0197"+
-    "\12\u031b\1\0\2\u0197\1\u01e3\3\u0197\1\u0199\1\371\1\372"+
-    "\1\373\2\0\2\u0197\4\0\1\u0197\20\0\4\u031c\2\0"+
-    "\1\u031c\15\0\1\u031c\6\0\12\u031c\1\u0287\43\0\4\u031d"+
-    "\2\0\1\u031d\15\0\1\u031d\6\0\12\u031d\1\u031e\43\0"+
-    "\4\u031f\2\0\1\u031f\15\0\1\u031f\6\0\1\u0320\2\u0321"+
-    "\1\u0320\4\u0321\1\u0322\1\u0321\14\0\1\264\27\0\4\u0323"+
-    "\2\0\1\u0323\15\0\1\u0323\6\0\12\u0323\1\u02d8\13\0"+
-    "\1\264\27\0\4\u031f\2\0\1\u031f\15\0\1\u031f\6\0"+
-    "\1\u0320\2\u0321\1\u0320\4\u0321\1\u0322\1\u0321\43\0\1\365"+
-    "\4\u0323\2\0\1\u0323\15\0\1\u0323\6\0\12\u0324\1\u02d8"+
-    "\13\0\1\264\26\0\1\365\4\u0323\2\0\1\u0323\15\0"+
-    "\1\u0323\6\0\12\u0323\1\u02d8\13\0\1\264\26\0\1\365"+
-    "\4\u0323\2\0\1\u0323\15\0\1\u0323\6\0\2\u0324\1\u0323"+
-    "\2\u0324\2\u0323\2\u0324\1\u0323\1\u02d8\13\0\1\264\74\0"+
-    "\1\u0239\13\0\1\264\26\0\1\172\1\u0325\31\63\1\173"+
-    "\12\63\43\0\1\172\25\63\1\374\4\63\1\173\12\63"+
-    "\43\0\1\172\32\63\1\173\5\63\1\u0326\4\63\43\0"+
-    "\1\172\32\63\1\173\3\63\1\u0325\6\63\43\0\1\172"+
-    "\12\63\1\u0327\17\63\1\173\12\63\43\0\1\172\25\63"+
-    "\1\u0328\4\63\1\173\12\63\43\0\1\172\15\63\1\u0329"+
-    "\14\63\1\173\12\63\43\0\1\172\2\63\1\u02de\27\63"+
-    "\1\173\12\63\43\0\1\172\1\63\1\374\30\63\1\173"+
-    "\12\63\43\0\1\172\11\63\1\u032a\20\63\1\173\12\63"+
-    "\43\0\1\172\1\u032b\31\63\1\173\12\63\43\0\1\172"+
-    "\1\u032c\31\63\1\173\12\63\43\0\1\172\2\63\1\u032d"+
-    "\27\63\1\173\12\63\43\0\1\172\32\63\1\173\4\63"+
-    "\1\u0103\5\63\43\0\1\172\1\u032e\31\63\1\173\12\63"+
-    "\43\0\1\172\25\63\1\u032f\4\63\1\173\12\63\43\0"+
-    "\1\172\32\63\1\173\4\63\1\u0325\5\63\43\0\1\172"+
-    "\32\63\1\173\11\63\1\u0325\43\0\1\172\32\63\1\173"+
-    "\2\63\1\u0325\7\63\43\0\1\172\16\63\1\u0330\13\63"+
-    "\1\173\12\63\43\0\1\172\32\63\1\173\3\63\1\u0331"+
-    "\6\63\43\0\1\172\24\63\1\u0332\5\63\1\173\12\63"+
-    "\43\0\1\221\32\117\1\36\10\117\1\u025e\1\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\1\u0333\31\117\1\36\12\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\7\117\1\u0334\22\117\1\36\12\117"+
-    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\16\0\1\221\1\u0335\31\117\1\36\12\117"+
-    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\16\0\1\221\25\117\1\u0336\4\117\1\36"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\32\117\1\36\11\117"+
-    "\1\u0337\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\1\u0338\31\117\1\36"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\12\117\1\u0339\17\117"+
-    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\16\0\1\221\1\u033a\31\117"+
-    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\16\0\1\221\10\117\1\u033b"+
-    "\21\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\31\117"+
-    "\1\u033c\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\17\0\4\u033d\2\0"+
-    "\1\u033d\15\0\1\u033d\6\0\12\u033d\1\u02b8\43\0\4\u033e"+
-    "\2\0\1\u033e\15\0\1\u033e\6\0\12\u033e\1\u033f\43\0"+
-    "\4\u0340\2\0\1\u0340\15\0\1\u0340\6\0\1\u0341\2\u0342"+
-    "\1\u0341\4\u0342\1\u0343\1\u0342\14\0\1\u0273\27\0\4\u0344"+
-    "\2\0\1\u0344\15\0\1\u0344\6\0\12\u0344\1\u0302\13\0"+
-    "\1\u0273\27\0\4\u0340\2\0\1\u0340\15\0\1\u0340\6\0"+
-    "\1\u0341\2\u0342\1\u0341\4\u0342\1\u0343\1\u0342\43\0\1\u02bf"+
-    "\4\u0344\2\0\1\u0344\15\0\1\u0344\6\0\12\u0345\1\u0302"+
-    "\13\0\1\u0273\26\0\1\u02bf\4\u0344\2\0\1\u0344\15\0"+
-    "\1\u0344\6\0\12\u0344\1\u0302\13\0\1\u0273\26\0\1\u02bf"+
-    "\4\u0344\2\0\1\u0344\15\0\1\u0344\6\0\2\u0345\1\u0344"+
-    "\2\u0345\2\u0344\2\u0345\1\u0344\1\u0302\13\0\1\u0273\27\0"+
-    "\4\u0346\2\0\1\u0346\15\0\1\u0346\6\0\12\u0346\1\u02be"+
-    "\13\0\1\u0273\26\0\1\u0347\33\0\12\u0308\43\0\1\u0347"+
-    "\33\0\12\u0348\43\0\1\u0347\33\0\1\u0308\1\u0349\1\u0348"+
-    "\2\u0308\2\u0348\2\u0308\1\u0348\43\0\1\u02bf\4\u0346\2\0"+
-    "\1\u0346\15\0\1\u0346\6\0\12\u0346\1\u02be\13\0\1\u0273"+
-    "\26\0\46\u0156\1\0\2\u0156\1\u0190\3\u0156\1\u0158\1\0"+
-    "\1\u018f\3\0\2\u0156\4\0\1\u0156\103\0\1\u034a\60\0"+
-    "\12\u034b\11\0\1\u018f\77\0\1\u0279\43\0\4\u034c\2\0"+
-    "\1\u034c\15\0\1\u034c\6\0\12\u034c\1\u0310\43\0\4\u034d"+
-    "\2\0\1\u034d\15\0\1\u034d\6\0\12\u034d\1\u034e\43\0"+
-    "\4\u034f\2\0\1\u034f\15\0\1\u034f\6\0\12\u034f\1\u0350"+
-    "\13\0\1\u0230\26\0\1\u0280\4\u034f\2\0\1\u034f\15\0"+
-    "\1\u034f\6\0\12\u0351\1\u0350\13\0\1\u0230\26\0\1\u0280"+
-    "\4\u034f\2\0\1\u034f\15\0\1\u034f\6\0\12\u0352\1\u0350"+
-    "\13\0\1\u0230\26\0\1\u0280\4\u034f\2\0\1\u034f\15\0"+
-    "\1\u034f\6\0\1\u0351\1\u0353\1\u0352\2\u0351\2\u0352\2\u0351"+
-    "\1\u0352\1\u0350\13\0\1\u0230\27\0\4\u0354\2\0\1\u0354"+
-    "\15\0\1\u0354\6\0\12\u0354\1\u02ca\13\0\1\u0230\26\0"+
-    "\1\u0280\4\u0354\2\0\1\u0354\15\0\1\u0354\6\0\12\u0354"+
-    "\1\u02ca\13\0\1\u0230\74\0\1\u027f\13\0\1\u0230\62\0"+
-    "\1\u0355\2\u0356\1\u0355\4\u0356\1\u0357\1\u0356\43\0\1\u0318"+
-    "\110\0\1\u0318\33\0\2\u0319\1\0\2\u0319\2\0\2\u0319"+
-    "\44\0\34\u0197\12\u0358\1\0\2\u0197\1\u01e3\3\u0197\1\u0199"+
-    "\1\371\1\372\1\373\2\0\2\u0197\4\0\1\u0197\65\0"+
-    "\1\u0287\43\0\4\u0359\2\0\1\u0359\15\0\1\u0359\6\0"+
-    "\12\u0359\1\u031e\43\0\4\u035a\2\0\1\u035a\15\0\1\u035a"+
-    "\6\0\1\u035b\2\u035c\1\u035b\4\u035c\1\u035d\1\u035c\1\u035e"+
-    "\43\0\4\u035f\2\0\1\u035f\15\0\1\u035f\6\0\12\u035f"+
-    "\1\u0360\13\0\1\264\26\0\1\365\4\u035f\2\0\1\u035f"+
-    "\15\0\1\u035f\6\0\12\u0361\1\u0360\13\0\1\264\26\0"+
-    "\1\365\4\u035f\2\0\1\u035f\15\0\1\u035f\6\0\12\u0362"+
-    "\1\u0360\13\0\1\264\26\0\1\365\4\u035f\2\0\1\u035f"+
-    "\15\0\1\u035f\6\0\1\u0361\1\u0363\1\u0362\2\u0361\2\u0362"+
-    "\2\u0361\1\u0362\1\u0360\13\0\1\264\27\0\4\u0364\2\0"+
-    "\1\u0364\15\0\1\u0364\6\0\12\u0364\1\u02d8\13\0\1\264"+
-    "\26\0\1\365\4\u0364\2\0\1\u0364\15\0\1\u0364\6\0"+
-    "\12\u0364\1\u02d8\13\0\1\264\26\0\1\172\2\63\1\374"+
-    "\27\63\1\173\12\63\43\0\1\172\3\63\1\u0365\26\63"+
-    "\1\173\12\63\43\0\1\172\32\63\1\173\11\63\1\u0366"+
-    "\43\0\1\172\32\63\1\173\11\63\1\u0367\43\0\1\172"+
-    "\32\63\1\173\7\63\1\u0368\2\63\43\0\1\172\32\63"+
-    "\1\173\4\63\1\u0369\5\63\43\0\1\172\26\63\1\u036a"+
-    "\3\63\1\173\12\63\43\0\1\172\30\63\1\u036b\1\63"+
-    "\1\173\12\63\43\0\1\172\11\63\1\u0136\20\63\1\173"+
-    "\12\63\43\0\1\172\12\63\1\u036c\17\63\1\173\12\63"+
-    "\43\0\1\172\17\63\1\u0104\12\63\1\173\12\63\43\0"+
-    "\1\172\32\63\1\173\4\63\1\u036d\5\63\43\0\1\172"+
-    "\30\63\1\u036e\1\63\1\173\12\63\43\0\1\172\30\63"+
-    "\1\u036f\1\63\1\173\12\63\43\0\1\221\32\117\1\36"+
-    "\6\117\1\u0257\3\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\15\117"+
-    "\1\142\14\117\1\36\12\117\1\0\3\33\1\0\2\33"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
-    "\32\117\1\36\1\117\1\u0370\10\117\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
-    "\1\221\30\117\1\u0371\1\117\1\36\12\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\6\117\1\u0372\23\117\1\36\12\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\32\117\1\36\5\117\1\u0373\4\117"+
-    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\16\0\1\221\22\117\1\226\7\117\1\36"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\32\117\1\36\5\117"+
-    "\1\u0374\4\117\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\16\0\1\221\32\117\1\36"+
-    "\1\117\1\142\10\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\13\117"+
-    "\1\u0375\16\117\1\36\12\117\1\0\3\33\1\0\2\33"+
-    "\1\34\3\33\3\0\1\33\4\0\2\33\64\0\1\u02b8"+
-    "\43\0\4\u0376\2\0\1\u0376\15\0\1\u0376\6\0\12\u0376"+
-    "\1\u033f\43\0\4\u0377\2\0\1\u0377\15\0\1\u0377\6\0"+
-    "\12\u0377\1\u0378\43\0\4\u0379\2\0\1\u0379\15\0\1\u0379"+
-    "\6\0\12\u0379\1\u037a\13\0\1\u0273\26\0\1\u02bf\4\u0379"+
-    "\2\0\1\u0379\15\0\1\u0379\6\0\12\u037b\1\u037a\13\0"+
-    "\1\u0273\26\0\1\u02bf\4\u0379\2\0\1\u0379\15\0\1\u0379"+
-    "\6\0\12\u037c\1\u037a\13\0\1\u0273\26\0\1\u02bf\4\u0379"+
-    "\2\0\1\u0379\15\0\1\u0379\6\0\1\u037b\1\u037d\1\u037c"+
-    "\2\u037b\2\u037c\2\u037b\1\u037c\1\u037a\13\0\1\u0273\27\0"+
-    "\4\u037e\2\0\1\u037e\15\0\1\u037e\6\0\12\u037e\1\u0302"+
-    "\13\0\1\u0273\26\0\1\u02bf\4\u037e\2\0\1\u037e\15\0"+
-    "\1\u037e\6\0\12\u037e\1\u0302\13\0\1\u0273\74\0\1\u02be"+
-    "\13\0\1\u0273\62\0\1\u037f\2\u0380\1\u037f\4\u0380\1\u0381"+
-    "\1\u0380\43\0\1\u0347\110\0\1\u0347\33\0\2\u0348\1\0"+
-    "\2\u0348\2\0\2\u0348\45\0\1\u0382\1\0\1\u0382\5\0"+
-    "\1\u0382\156\0\1\u018f\32\0\4\u0383\2\0\1\u0383\15\0"+
-    "\1\u0383\6\0\12\u0383\1\u0310\43\0\4\u0384\2\0\1\u0384"+
-    "\15\0\1\u0384\6\0\12\u0384\1\u0385\43\0\4\u0386\2\0"+
-    "\1\u0386\15\0\1\u0386\6\0\1\u0387\2\u0388\1\u0387\4\u0388"+
-    "\1\u0389\1\u0388\14\0\1\u0230\27\0\4\u038a\2\0\1\u038a"+
-    "\15\0\1\u038a\6\0\12\u038a\1\u0350\13\0\1\u0230\27\0"+
-    "\4\u0386\2\0\1\u0386\15\0\1\u0386\6\0\1\u0387\2\u0388"+
-    "\1\u0387\4\u0388\1\u0389\1\u0388\43\0\1\u0280\4\u038a\2\0"+
-    "\1\u038a\15\0\1\u038a\6\0\12\u038b\1\u0350\13\0\1\u0230"+
-    "\26\0\1\u0280\4\u038a\2\0\1\u038a\15\0\1\u038a\6\0"+
-    "\12\u038a\1\u0350\13\0\1\u0230\26\0\1\u0280\4\u038a\2\0"+
-    "\1\u038a\15\0\1\u038a\6\0\2\u038b\1\u038a\2\u038b\2\u038a"+
-    "\2\u038b\1\u038a\1\u0350\13\0\1\u0230\74\0\1\u02ca\13\0"+
-    "\1\u0230\26\0\1\u038c\33\0\12\u0356\43\0\1\u038c\33\0"+
-    "\12\u038d\43\0\1\u038c\33\0\1\u0356\1\u038e\1\u038d\2\u0356"+
-    "\2\u038d\2\u0356\1\u038d\43\0\46\u0197\1\0\2\u0197\1\u01e3"+
-    "\3\u0197\1\u0199\1\371\1\372\1\373\2\0\2\u0197\4\0"+
-    "\1\u0197\20\0\4\u038f\2\0\1\u038f\15\0\1\u038f\6\0"+
-    "\12\u038f\1\u031e\43\0\4\u0390\2\0\1\u0390\15\0\1\u0390"+
-    "\6\0\12\u0390\1\u0391\42\0\1\365\4\u0390\2\0\1\u0390"+
-    "\15\0\1\u0390\6\0\12\u0392\1\u0391\42\0\1\365\4\u0390"+
-    "\2\0\1\u0390\15\0\1\u0390\6\0\12\u0393\1\u0391\42\0"+
-    "\1\365\4\u0390\2\0\1\u0390\15\0\1\u0390\6\0\1\u0392"+
-    "\1\u0394\1\u0393\2\u0392\2\u0393\2\u0392\1\u0393\1\u0391\43\0"+
-    "\4\u0395\2\0\1\u0395\15\0\1\u0395\6\0\12\u0395\14\0"+
-    "\1\264\27\0\4\u0396\2\0\1\u0396\15\0\1\u0396\6\0"+
-    "\12\u0396\1\u0360\13\0\1\264\27\0\4\u0395\2\0\1\u0395"+
-    "\15\0\1\u0395\6\0\12\u0395\43\0\1\365\4\u0396\2\0"+
-    "\1\u0396\15\0\1\u0396\6\0\12\u0397\1\u0360\13\0\1\264"+
-    "\26\0\1\365\4\u0396\2\0\1\u0396\15\0\1\u0396\6\0"+
-    "\12\u0396\1\u0360\13\0\1\264\26\0\1\365\4\u0396\2\0"+
-    "\1\u0396\15\0\1\u0396\6\0\2\u0397\1\u0396\2\u0397\2\u0396"+
-    "\2\u0397\1\u0396\1\u0360\13\0\1\264\74\0\1\u02d8\13\0"+
-    "\1\264\26\0\1\172\32\63\1\173\10\63\1\u02e5\1\63"+
-    "\43\0\1\172\1\u0398\31\63\1\173\12\63\43\0\1\172"+
-    "\7\63\1\u0399\22\63\1\173\12\63\43\0\1\172\1\u039a"+
-    "\31\63\1\173\12\63\43\0\1\172\25\63\1\u039b\4\63"+
-    "\1\173\12\63\43\0\1\172\32\63\1\173\11\63\1\u039c"+
-    "\43\0\1\172\1\u039d\31\63\1\173\12\63\43\0\1\172"+
-    "\12\63\1\u039e\17\63\1\173\12\63\43\0\1\172\1\u039f"+
-    "\31\63\1\173\12\63\43\0\1\172\10\63\1\u03a0\21\63"+
-    "\1\173\12\63\43\0\1\172\31\63\1\u03a1\1\173\12\63"+
-    "\43\0\1\221\2\117\1\u03a2\27\117\1\36\12\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\3\117\1\u03a3\26\117\1\36\12\117"+
-    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\16\0\1\221\32\117\1\36\1\117\1\u03a4"+
-    "\10\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\3\117\1\u03a5\26\117"+
-    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\16\0\1\221\1\u03a6\31\117"+
-    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\16\0\1\221\26\117\1\u03a7"+
-    "\3\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\17\0\4\u03a8\2\0"+
-    "\1\u03a8\15\0\1\u03a8\6\0\12\u03a8\1\u033f\43\0\4\u03a9"+
-    "\2\0\1\u03a9\15\0\1\u03a9\6\0\12\u03a9\1\u03aa\43\0"+
-    "\4\u03ab\2\0\1\u03ab\15\0\1\u03ab\6\0\1\u03ac\2\u03ad"+
-    "\1\u03ac\4\u03ad\1\u03ae\1\u03ad\14\0\1\u0273\27\0\4\u03af"+
-    "\2\0\1\u03af\15\0\1\u03af\6\0\12\u03af\1\u037a\13\0"+
-    "\1\u0273\27\0\4\u03ab\2\0\1\u03ab\15\0\1\u03ab\6\0"+
-    "\1\u03ac\2\u03ad\1\u03ac\4\u03ad\1\u03ae\1\u03ad\43\0\1\u02bf"+
-    "\4\u03af\2\0\1\u03af\15\0\1\u03af\6\0\12\u03b0\1\u037a"+
-    "\13\0\1\u0273\26\0\1\u02bf\4\u03af\2\0\1\u03af\15\0"+
-    "\1\u03af\6\0\12\u03af\1\u037a\13\0\1\u0273\26\0\1\u02bf"+
-    "\4\u03af\2\0\1\u03af\15\0\1\u03af\6\0\2\u03b0\1\u03af"+
-    "\2\u03b0\2\u03af\2\u03b0\1\u03af\1\u037a\13\0\1\u0273\74\0"+
-    "\1\u0302\13\0\1\u0273\26\0\1\u03b1\33\0\12\u0380\43\0"+
-    "\1\u03b1\33\0\12\u03b2\43\0\1\u03b1\33\0\1\u0380\1\u03b3"+
-    "\1\u03b2\2\u0380\2\u03b2\2\u0380\1\u03b2\123\0\1\373\76\0"+
-    "\1\u0310\43\0\4\u03b4\2\0\1\u03b4\15\0\1\u03b4\6\0"+
-    "\12\u03b4\1\u0385\43\0\4\u03b5\2\0\1\u03b5\15\0\1\u03b5"+
-    "\6\0\12\u03b5\1\u03b6\43\0\4\u03b7\2\0\1\u03b7\15\0"+
-    "\1\u03b7\6\0\12\u03b7\1\u03b8\13\0\1\u0230\26\0\1\u0280"+
-    "\4\u03b7\2\0\1\u03b7\15\0\1\u03b7\6\0\12\u03b9\1\u03b8"+
-    "\13\0\1\u0230\26\0\1\u0280\4\u03b7\2\0\1\u03b7\15\0"+
-    "\1\u03b7\6\0\12\u03ba\1\u03b8\13\0\1\u0230\26\0\1\u0280"+
-    "\4\u03b7\2\0\1\u03b7\15\0\1\u03b7\6\0\1\u03b9\1\u03bb"+
-    "\1\u03ba\2\u03b9\2\u03ba\2\u03b9\1\u03ba\1\u03b8\13\0\1\u0230"+
-    "\27\0\4\u03bc\2\0\1\u03bc\15\0\1\u03bc\6\0\12\u03bc"+
-    "\1\u0350\13\0\1\u0230\26\0\1\u0280\4\u03bc\2\0\1\u03bc"+
-    "\15\0\1\u03bc\6\0\12\u03bc\1\u0350\13\0\1\u0230\62\0"+
-    "\1\u03bd\2\u03be\1\u03bd\4\u03be\1\u03bf\1\u03be\43\0\1\u038c"+
-    "\110\0\1\u038c\33\0\2\u038d\1\0\2\u038d\2\0\2\u038d"+
-    "\112\0\1\u031e\43\0\4\u03c0\2\0\1\u03c0\15\0\1\u03c0"+
-    "\6\0\12\u03c0\1\u0391\43\0\4\u0395\2\0\1\u0395\15\0"+
-    "\1\u0395\6\0\12\u0395\1\u028e\42\0\1\365\4\u03c0\2\0"+
-    "\1\u03c0\15\0\1\u03c0\6\0\12\u03c1\1\u0391\42\0\1\365"+
-    "\4\u03c0\2\0\1\u03c0\15\0\1\u03c0\6\0\12\u03c0\1\u0391"+
-    "\42\0\1\365\4\u03c0\2\0\1\u03c0\15\0\1\u03c0\6\0"+
-    "\2\u03c1\1\u03c0\2\u03c1\2\u03c0\2\u03c1\1\u03c0\1\u0391\43\0"+
-    "\4\u03c2\2\0\1\u03c2\15\0\1\u03c2\6\0\12\u03c2\14\0"+
-    "\1\264\27\0\4\u03c3\2\0\1\u03c3\15\0\1\u03c3\6\0"+
-    "\12\u03c3\1\u0360\13\0\1\264\26\0\1\365\4\u03c3\2\0"+
-    "\1\u03c3\15\0\1\u03c3\6\0\12\u03c3\1\u0360\13\0\1\264"+
-    "\26\0\1\172\32\63\1\173\6\63\1\u02de\3\63\43\0"+
-    "\1\172\15\63\1\301\14\63\1\173\12\63\43\0\1\172"+
-    "\32\63\1\173\1\63\1\u03c4\10\63\43\0\1\172\30\63"+
-    "\1\u03c5\1\63\1\173\12\63\43\0\1\172\6\63\1\u03c6"+
-    "\23\63\1\173\12\63\43\0\1\172\32\63\1\173\5\63"+
-    "\1\u03c7\4\63\43\0\1\172\22\63\1\374\7\63\1\173"+
-    "\12\63\43\0\1\172\32\63\1\173\5\63\1\u03c8\4\63"+
-    "\43\0\1\172\32\63\1\173\1\63\1\301\10\63\43\0"+
-    "\1\172\13\63\1\u03c9\16\63\1\173\12\63\43\0\1\221"+
-    "\32\117\1\36\7\117\1\u03ca\2\117\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
-    "\1\221\32\117\1\36\10\117\1\142\1\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\32\117\1\36\4\117\1\u03cb\5\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\16\117\1\u03cc\13\117\1\36\12\117"+
-    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\16\0\1\221\26\117\1\u03cd\3\117\1\36"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\16\0\1\221\32\117\1\36\7\117"+
-    "\1\u03ce\2\117\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\64\0\1\u033f\43\0\4\u03cf"+
-    "\2\0\1\u03cf\15\0\1\u03cf\6\0\12\u03cf\1\u03aa\43\0"+
-    "\4\u03d0\2\0\1\u03d0\15\0\1\u03d0\6\0\12\u03d0\1\u03d1"+
-    "\43\0\4\u03d2\2\0\1\u03d2\15\0\1\u03d2\6\0\12\u03d2"+
-    "\1\u03d3\13\0\1\u0273\26\0\1\u02bf\4\u03d2\2\0\1\u03d2"+
-    "\15\0\1\u03d2\6\0\12\u03d4\1\u03d3\13\0\1\u0273\26\0"+
-    "\1\u02bf\4\u03d2\2\0\1\u03d2\15\0\1\u03d2\6\0\12\u03d5"+
-    "\1\u03d3\13\0\1\u0273\26\0\1\u02bf\4\u03d2\2\0\1\u03d2"+
-    "\15\0\1\u03d2\6\0\1\u03d4\1\u03d6\1\u03d5\2\u03d4\2\u03d5"+
-    "\2\u03d4\1\u03d5\1\u03d3\13\0\1\u0273\27\0\4\u03d7\2\0"+
-    "\1\u03d7\15\0\1\u03d7\6\0\12\u03d7\1\u037a\13\0\1\u0273"+
-    "\26\0\1\u02bf\4\u03d7\2\0\1\u03d7\15\0\1\u03d7\6\0"+
-    "\12\u03d7\1\u037a\13\0\1\u0273\62\0\1\u03d8\2\u03d9\1\u03d8"+
-    "\4\u03d9\1\u03da\1\u03d9\43\0\1\u03b1\110\0\1\u03b1\33\0"+
-    "\2\u03b2\1\0\2\u03b2\2\0\2\u03b2\45\0\4\u03db\2\0"+
-    "\1\u03db\15\0\1\u03db\6\0\12\u03db\1\u0385\43\0\4\u03dc"+
-    "\2\0\1\u03dc\15\0\1\u03dc\6\0\12\u03dc\1\u03dd\43\0"+
-    "\4\u03de\2\0\1\u03de\15\0\1\u03de\6\0\1\u03df\2\u03e0"+
-    "\1\u03df\4\u03e0\1\u03e1\1\u03e0\14\0\1\u0230\27\0\4\u03e2"+
-    "\2\0\1\u03e2\15\0\1\u03e2\6\0\12\u03e2\1\u03b8\13\0"+
-    "\1\u0230\27\0\4\u03de\2\0\1\u03de\15\0\1\u03de\6\0"+
-    "\1\u03df\2\u03e0\1\u03df\4\u03e0\1\u03e1\1\u03e0\43\0\1\u0280"+
-    "\4\u03e2\2\0\1\u03e2\15\0\1\u03e2\6\0\12\u03e3\1\u03b8"+
-    "\13\0\1\u0230\26\0\1\u0280\4\u03e2\2\0\1\u03e2\15\0"+
-    "\1\u03e2\6\0\12\u03e2\1\u03b8\13\0\1\u0230\26\0\1\u0280"+
-    "\4\u03e2\2\0\1\u03e2\15\0\1\u03e2\6\0\2\u03e3\1\u03e2"+
-    "\2\u03e3\2\u03e2\2\u03e3\1\u03e2\1\u03b8\13\0\1\u0230\74\0"+
-    "\1\u0350\13\0\1\u0230\62\0\12\u03be\14\0\1\u0230\62\0"+
-    "\12\u03e4\14\0\1\u0230\62\0\1\u03be\1\u03e5\1\u03e4\2\u03be"+
-    "\2\u03e4\2\u03be\1\u03e4\14\0\1\u0230\27\0\4\u03e6\2\0"+
-    "\1\u03e6\15\0\1\u03e6\6\0\12\u03e6\1\u0391\42\0\1\365"+
-    "\4\u03e6\2\0\1\u03e6\15\0\1\u03e6\6\0\12\u03e6\1\u0391"+
-    "\43\0\4\u03e7\2\0\1\u03e7\15\0\1\u03e7\6\0\12\u03e7"+
-    "\14\0\1\264\74\0\1\u0360\13\0\1\264\26\0\1\172"+
-    "\2\63\1\u03e8\27\63\1\173\12\63\43\0\1\172\3\63"+
-    "\1\u03e9\26\63\1\173\12\63\43\0\1\172\32\63\1\173"+
-    "\1\63\1\u03ea\10\63\43\0\1\172\3\63\1\u03eb\26\63"+
-    "\1\173\12\63\43\0\1\172\1\u03ec\31\63\1\173\12\63"+
-    "\43\0\1\172\26\63\1\u03ed\3\63\1\173\12\63\43\0"+
-    "\1\221\1\u03ee\31\117\1\36\12\117\1\0\3\33\1\0"+
-    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
-    "\1\221\24\117\1\u03ef\5\117\1\36\12\117\1\0\3\33"+
-    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
-    "\16\0\1\221\1\117\1\u03f0\30\117\1\36\12\117\1\0"+
-    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
-    "\2\33\16\0\1\221\32\117\1\36\2\117\1\235\7\117"+
-    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
-    "\4\0\2\33\16\0\1\221\6\117\1\226\23\117\1\36"+
-    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
-    "\1\33\4\0\2\33\17\0\4\u03f1\2\0\1\u03f1\15\0"+
-    "\1\u03f1\6\0\12\u03f1\1\u03aa\43\0\4\u03f2\2\0\1\u03f2"+
-    "\15\0\1\u03f2\6\0\12\u03f2\1\u03f3\43\0\4\u03f4\2\0"+
-    "\1\u03f4\15\0\1\u03f4\6\0\1\u03f5\2\u03f6\1\u03f5\4\u03f6"+
-    "\1\u03f7\1\u03f6\14\0\1\u0273\27\0\4\u03f8\2\0\1\u03f8"+
-    "\15\0\1\u03f8\6\0\12\u03f8\1\u03d3\13\0\1\u0273\27\0"+
-    "\4\u03f4\2\0\1\u03f4\15\0\1\u03f4\6\0\1\u03f5\2\u03f6"+
-    "\1\u03f5\4\u03f6\1\u03f7\1\u03f6\43\0\1\u02bf\4\u03f8\2\0"+
-    "\1\u03f8\15\0\1\u03f8\6\0\12\u03f9\1\u03d3\13\0\1\u0273"+
-    "\26\0\1\u02bf\4\u03f8\2\0\1\u03f8\15\0\1\u03f8\6\0"+
-    "\12\u03f8\1\u03d3\13\0\1\u0273\26\0\1\u02bf\4\u03f8\2\0"+
-    "\1\u03f8\15\0\1\u03f8\6\0\2\u03f9\1\u03f8\2\u03f9\2\u03f8"+
-    "\2\u03f9\1\u03f8\1\u03d3\13\0\1\u0273\74\0\1\u037a\13\0"+
-    "\1\u0273\62\0\12\u03d9\14\0\1\u0273\62\0\12\u03fa\14\0"+
-    "\1\u0273\62\0\1\u03d9\1\u03fb\1\u03fa\2\u03d9\2\u03fa\2\u03d9"+
-    "\1\u03fa\14\0\1\u0273\74\0\1\u0385\43\0\4\u03fc\2\0"+
-    "\1\u03fc\15\0\1\u03fc\6\0\12\u03fc\1\u03dd\43\0\4\u03fd"+
-    "\2\0\1\u03fd\15\0\1\u03fd\6\0\12\u03fd\1\u03fe\43\0"+
-    "\4\u03ff\2\0\1\u03ff\15\0\1\u03ff\6\0\12\u03ff\1\u0400"+
-    "\13\0\1\u0230\26\0\1\u0280\4\u03ff\2\0\1\u03ff\15\0"+
-    "\1\u03ff\6\0\12\u0401\1\u0400\13\0\1\u0230\26\0\1\u0280"+
-    "\4\u03ff\2\0\1\u03ff\15\0\1\u03ff\6\0\12\u0402\1\u0400"+
-    "\13\0\1\u0230\26\0\1\u0280\4\u03ff\2\0\1\u03ff\15\0"+
-    "\1\u03ff\6\0\1\u0401\1\u0403\1\u0402\2\u0401\2\u0402\2\u0401"+
-    "\1\u0402\1\u0400\13\0\1\u0230\27\0\4\u0404\2\0\1\u0404"+
-    "\15\0\1\u0404\6\0\12\u0404\1\u03b8\13\0\1\u0230\26\0"+
-    "\1\u0280\4\u0404\2\0\1\u0404\15\0\1\u0404\6\0\12\u0404"+
-    "\1\u03b8\13\0\1\u0230\110\0\1\u0230\62\0\2\u03e4\1\0"+
-    "\2\u03e4\2\0\2\u03e4\15\0\1\u0230\74\0\1\u0391\43\0"+
-    "\4\u028e\2\0\1\u028e\15\0\1\u028e\6\0\12\u028e\14\0"+
-    "\1\264\26\0\1\172\32\63\1\173\7\63\1\u0405\2\63"+
-    "\43\0\1\172\32\63\1\173\10\63\1\301\1\63\43\0"+
-    "\1\172\32\63\1\173\4\63\1\u0406\5\63\43\0\1\172"+
-    "\16\63\1\u0407\13\63\1\173\12\63\43\0\1\172\26\63"+
-    "\1\u0408\3\63\1\173\12\63\43\0\1\172\32\63\1\173"+
-    "\7\63\1\u0409\2\63\43\0\1\221\4\117\1\226\25\117"+
-    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
-    "\3\0\1\33\4\0\2\33\16\0\1\221\24\117\1\142"+
-    "\5\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\32\117"+
-    "\1\36\11\117\1\142\1\0\3\33\1\0\2\33\1\34"+
-    "\3\33\3\0\1\33\4\0\2\33\64\0\1\u03aa\43\0"+
-    "\4\u040a\2\0\1\u040a\15\0\1\u040a\6\0\12\u040a\1\u03f3"+
-    "\43\0\4\u040b\2\0\1\u040b\15\0\1\u040b\6\0\12\u040b"+
-    "\1\u040c\43\0\4\u040d\2\0\1\u040d\15\0\1\u040d\6\0"+
-    "\12\u040d\1\u040e\13\0\1\u0273\26\0\1\u02bf\4\u040d\2\0"+
-    "\1\u040d\15\0\1\u040d\6\0\12\u040f\1\u040e\13\0\1\u0273"+
-    "\26\0\1\u02bf\4\u040d\2\0\1\u040d\15\0\1\u040d\6\0"+
-    "\12\u0410\1\u040e\13\0\1\u0273\26\0\1\u02bf\4\u040d\2\0"+
-    "\1\u040d\15\0\1\u040d\6\0\1\u040f\1\u0411\1\u0410\2\u040f"+
-    "\2\u0410\2\u040f\1\u0410\1\u040e\13\0\1\u0273\27\0\4\u0412"+
-    "\2\0\1\u0412\15\0\1\u0412\6\0\12\u0412\1\u03d3\13\0"+
-    "\1\u0273\26\0\1\u02bf\4\u0412\2\0\1\u0412\15\0\1\u0412"+
-    "\6\0\12\u0412\1\u03d3\13\0\1\u0273\110\0\1\u0273\62\0"+
-    "\2\u03fa\1\0\2\u03fa\2\0\2\u03fa\15\0\1\u0273\27\0"+
-    "\4\u0413\2\0\1\u0413\15\0\1\u0413\6\0\12\u0413\1\u03dd"+
-    "\43\0\4\u0414\2\0\1\u0414\15\0\1\u0414\6\0\12\u0414"+
-    "\1\u0415\43\0\4\u0416\2\0\1\u0416\15\0\1\u0416\6\0"+
-    "\1\u0417\2\u0418\1\u0417\4\u0418\1\u0419\1\u0418\14\0\1\u0230"+
-    "\27\0\4\u041a\2\0\1\u041a\15\0\1\u041a\6\0\12\u041a"+
-    "\1\u0400\13\0\1\u0230\27\0\4\u0416\2\0\1\u0416\15\0"+
-    "\1\u0416\6\0\1\u0417\2\u0418\1\u0417\4\u0418\1\u0419\1\u0418"+
-    "\43\0\1\u0280\4\u041a\2\0\1\u041a\15\0\1\u041a\6\0"+
-    "\12\u041b\1\u0400\13\0\1\u0230\26\0\1\u0280\4\u041a\2\0"+
-    "\1\u041a\15\0\1\u041a\6\0\12\u041a\1\u0400\13\0\1\u0230"+
-    "\26\0\1\u0280\4\u041a\2\0\1\u041a\15\0\1\u041a\6\0"+
-    "\2\u041b\1\u041a\2\u041b\2\u041a\2\u041b\1\u041a\1\u0400\13\0"+
-    "\1\u0230\74\0\1\u03b8\13\0\1\u0230\26\0\1\172\1\u041c"+
-    "\31\63\1\173\12\63\43\0\1\172\24\63\1\u041d\5\63"+
-    "\1\173\12\63\43\0\1\172\1\63\1\u041e\30\63\1\173"+
-    "\12\63\43\0\1\172\32\63\1\173\2\63\1\u0103\7\63"+
-    "\43\0\1\172\6\63\1\374\23\63\1\173\12\63\44\0"+
-    "\4\u041f\2\0\1\u041f\15\0\1\u041f\6\0\12\u041f\1\u03f3"+
-    "\43\0\4\u0420\2\0\1\u0420\15\0\1\u0420\6\0\12\u0420"+
-    "\1\u0421\43\0\4\u0422\2\0\1\u0422\15\0\1\u0422\6\0"+
-    "\1\u0423\2\u0424\1\u0423\4\u0424\1\u0425\1\u0424\14\0\1\u0273"+
-    "\27\0\4\u0426\2\0\1\u0426\15\0\1\u0426\6\0\12\u0426"+
-    "\1\u040e\13\0\1\u0273\27\0\4\u0422\2\0\1\u0422\15\0"+
-    "\1\u0422\6\0\1\u0423\2\u0424\1\u0423\4\u0424\1\u0425\1\u0424"+
-    "\43\0\1\u02bf\4\u0426\2\0\1\u0426\15\0\1\u0426\6\0"+
-    "\12\u0427\1\u040e\13\0\1\u0273\26\0\1\u02bf\4\u0426\2\0"+
-    "\1\u0426\15\0\1\u0426\6\0\12\u0426\1\u040e\13\0\1\u0273"+
-    "\26\0\1\u02bf\4\u0426\2\0\1\u0426\15\0\1\u0426\6\0"+
-    "\2\u0427\1\u0426\2\u0427\2\u0426\2\u0427\1\u0426\1\u040e\13\0"+
-    "\1\u0273\74\0\1\u03d3\13\0\1\u0273\74\0\1\u03dd\43\0"+
-    "\4\u0428\2\0\1\u0428\15\0\1\u0428\6\0\12\u0428\1\u0415"+
-    "\43\0\4\u0429\2\0\1\u0429\15\0\1\u0429\6\0\1\u042a"+
-    "\2\u042b\1\u042a\4\u042b\1\u042c\1\u042b\1\u042d\43\0\4\u042e"+
-    "\2\0\1\u042e\15\0\1\u042e\6\0\12\u042e\1\u042f\13\0"+
-    "\1\u0230\26\0\1\u0280\4\u042e\2\0\1\u042e\15\0\1\u042e"+
-    "\6\0\12\u0430\1\u042f\13\0\1\u0230\26\0\1\u0280\4\u042e"+
-    "\2\0\1\u042e\15\0\1\u042e\6\0\12\u0431\1\u042f\13\0"+
-    "\1\u0230\26\0\1\u0280\4\u042e\2\0\1\u042e\15\0\1\u042e"+
-    "\6\0\1\u0430\1\u0432\1\u0431\2\u0430\2\u0431\2\u0430\1\u0431"+
-    "\1\u042f\13\0\1\u0230\27\0\4\u0433\2\0\1\u0433\15\0"+
-    "\1\u0433\6\0\12\u0433\1\u0400\13\0\1\u0230\26\0\1\u0280"+
-    "\4\u0433\2\0\1\u0433\15\0\1\u0433\6\0\12\u0433\1\u0400"+
-    "\13\0\1\u0230\26\0\1\172\4\63\1\374\25\63\1\173"+
-    "\12\63\43\0\1\172\24\63\1\301\5\63\1\173\12\63"+
-    "\43\0\1\172\32\63\1\173\11\63\1\301\111\0\1\u03f3"+
-    "\43\0\4\u0434\2\0\1\u0434\15\0\1\u0434\6\0\12\u0434"+
-    "\1\u0421\43\0\4\u0435\2\0\1\u0435\15\0\1\u0435\6\0"+
-    "\1\u0436\2\u0437\1\u0436\4\u0437\1\u0438\1\u0437\1\u0439\43\0"+
-    "\4\u043a\2\0\1\u043a\15\0\1\u043a\6\0\12\u043a\1\u043b"+
-    "\13\0\1\u0273\26\0\1\u02bf\4\u043a\2\0\1\u043a\15\0"+
-    "\1\u043a\6\0\12\u043c\1\u043b\13\0\1\u0273\26\0\1\u02bf"+
-    "\4\u043a\2\0\1\u043a\15\0\1\u043a\6\0\12\u043d\1\u043b"+
-    "\13\0\1\u0273\26\0\1\u02bf\4\u043a\2\0\1\u043a\15\0"+
-    "\1\u043a\6\0\1\u043c\1\u043e\1\u043d\2\u043c\2\u043d\2\u043c"+
-    "\1\u043d\1\u043b\13\0\1\u0273\27\0\4\u043f\2\0\1\u043f"+
-    "\15\0\1\u043f\6\0\12\u043f\1\u040e\13\0\1\u0273\26\0"+
-    "\1\u02bf\4\u043f\2\0\1\u043f\15\0\1\u043f\6\0\12\u043f"+
-    "\1\u040e\13\0\1\u0273\27\0\4\u0440\2\0\1\u0440\15\0"+
-    "\1\u0440\6\0\12\u0440\1\u0415\43\0\4\u0441\2\0\1\u0441"+
-    "\15\0\1\u0441\6\0\12\u0441\1\u0442\42\0\1\u0280\4\u0441"+
-    "\2\0\1\u0441\15\0\1\u0441\6\0\12\u0443\1\u0442\42\0"+
-    "\1\u0280\4\u0441\2\0\1\u0441\15\0\1\u0441\6\0\12\u0444"+
-    "\1\u0442\42\0\1\u0280\4\u0441\2\0\1\u0441\15\0\1\u0441"+
-    "\6\0\1\u0443\1\u0445\1\u0444\2\u0443\2\u0444\2\u0443\1\u0444"+
-    "\1\u0442\43\0\4\u0446\2\0\1\u0446\15\0\1\u0446\6\0"+
-    "\12\u0446\14\0\1\u0230\27\0\4\u0447\2\0\1\u0447\15\0"+
-    "\1\u0447\6\0\12\u0447\1\u042f\13\0\1\u0230\27\0\4\u0446"+
-    "\2\0\1\u0446\15\0\1\u0446\6\0\12\u0446\43\0\1\u0280"+
-    "\4\u0447\2\0\1\u0447\15\0\1\u0447\6\0\12\u0448\1\u042f"+
-    "\13\0\1\u0230\26\0\1\u0280\4\u0447\2\0\1\u0447\15\0"+
-    "\1\u0447\6\0\12\u0447\1\u042f\13\0\1\u0230\26\0\1\u0280"+
-    "\4\u0447\2\0\1\u0447\15\0\1\u0447\6\0\2\u0448\1\u0447"+
-    "\2\u0448\2\u0447\2\u0448\1\u0447\1\u042f\13\0\1\u0230\74\0"+
-    "\1\u0400\13\0\1\u0230\27\0\4\u0449\2\0\1\u0449\15\0"+
-    "\1\u0449\6\0\12\u0449\1\u0421\43\0\4\u044a\2\0\1\u044a"+
-    "\15\0\1\u044a\6\0\12\u044a\1\u044b\42\0\1\u02bf\4\u044a"+
-    "\2\0\1\u044a\15\0\1\u044a\6\0\12\u044c\1\u044b\42\0"+
-    "\1\u02bf\4\u044a\2\0\1\u044a\15\0\1\u044a\6\0\12\u044d"+
-    "\1\u044b\42\0\1\u02bf\4\u044a\2\0\1\u044a\15\0\1\u044a"+
-    "\6\0\1\u044c\1\u044e\1\u044d\2\u044c\2\u044d\2\u044c\1\u044d"+
-    "\1\u044b\43\0\4\u044f\2\0\1\u044f\15\0\1\u044f\6\0"+
-    "\12\u044f\14\0\1\u0273\27\0\4\u0450\2\0\1\u0450\15\0"+
-    "\1\u0450\6\0\12\u0450\1\u043b\13\0\1\u0273\27\0\4\u044f"+
-    "\2\0\1\u044f\15\0\1\u044f\6\0\12\u044f\43\0\1\u02bf"+
-    "\4\u0450\2\0\1\u0450\15\0\1\u0450\6\0\12\u0451\1\u043b"+
-    "\13\0\1\u0273\26\0\1\u02bf\4\u0450\2\0\1\u0450\15\0"+
-    "\1\u0450\6\0\12\u0450\1\u043b\13\0\1\u0273\26\0\1\u02bf"+
-    "\4\u0450\2\0\1\u0450\15\0\1\u0450\6\0\2\u0451\1\u0450"+
-    "\2\u0451\2\u0450\2\u0451\1\u0450\1\u043b\13\0\1\u0273\74\0"+
-    "\1\u040e\13\0\1\u0273\74\0\1\u0415\43\0\4\u0452\2\0"+
-    "\1\u0452\15\0\1\u0452\6\0\12\u0452\1\u0442\43\0\4\u0446"+
-    "\2\0\1\u0446\15\0\1\u0446\6\0\12\u0446\1\u03e4\42\0"+
-    "\1\u0280\4\u0452\2\0\1\u0452\15\0\1\u0452\6\0\12\u0453"+
-    "\1\u0442\42\0\1\u0280\4\u0452\2\0\1\u0452\15\0\1\u0452"+
-    "\6\0\12\u0452\1\u0442\42\0\1\u0280\4\u0452\2\0\1\u0452"+
-    "\15\0\1\u0452\6\0\2\u0453\1\u0452\2\u0453\2\u0452\2\u0453"+
-    "\1\u0452\1\u0442\43\0\4\u0454\2\0\1\u0454\15\0\1\u0454"+
-    "\6\0\12\u0454\14\0\1\u0230\27\0\4\u0455\2\0\1\u0455"+
-    "\15\0\1\u0455\6\0\12\u0455\1\u042f\13\0\1\u0230\26\0"+
-    "\1\u0280\4\u0455\2\0\1\u0455\15\0\1\u0455\6\0\12\u0455"+
-    "\1\u042f\13\0\1\u0230\74\0\1\u0421\43\0\4\u0456\2\0"+
-    "\1\u0456\15\0\1\u0456\6\0\12\u0456\1\u044b\43\0\4\u044f"+
-    "\2\0\1\u044f\15\0\1\u044f\6\0\12\u044f\1\u03fa\42\0"+
-    "\1\u02bf\4\u0456\2\0\1\u0456\15\0\1\u0456\6\0\12\u0457"+
-    "\1\u044b\42\0\1\u02bf\4\u0456\2\0\1\u0456\15\0\1\u0456"+
-    "\6\0\12\u0456\1\u044b\42\0\1\u02bf\4\u0456\2\0\1\u0456"+
-    "\15\0\1\u0456\6\0\2\u0457\1\u0456\2\u0457\2\u0456\2\u0457"+
-    "\1\u0456\1\u044b\43\0\4\u0458\2\0\1\u0458\15\0\1\u0458"+
-    "\6\0\12\u0458\14\0\1\u0273\27\0\4\u0459\2\0\1\u0459"+
-    "\15\0\1\u0459\6\0\12\u0459\1\u043b\13\0\1\u0273\26\0"+
-    "\1\u02bf\4\u0459\2\0\1\u0459\15\0\1\u0459\6\0\12\u0459"+
-    "\1\u043b\13\0\1\u0273\27\0\4\u045a\2\0\1\u045a\15\0"+
-    "\1\u045a\6\0\12\u045a\1\u0442\42\0\1\u0280\4\u045a\2\0"+
-    "\1\u045a\15\0\1\u045a\6\0\12\u045a\1\u0442\43\0\4\u045b"+
-    "\2\0\1\u045b\15\0\1\u045b\6\0\12\u045b\14\0\1\u0230"+
-    "\74\0\1\u042f\13\0\1\u0230\27\0\4\u045c\2\0\1\u045c"+
-    "\15\0\1\u045c\6\0\12\u045c\1\u044b\42\0\1\u02bf\4\u045c"+
-    "\2\0\1\u045c\15\0\1\u045c\6\0\12\u045c\1\u044b\43\0"+
-    "\4\u045d\2\0\1\u045d\15\0\1\u045d\6\0\12\u045d\14\0"+
-    "\1\u0273\74\0\1\u043b\13\0\1\u0273\74\0\1\u0442\43\0"+
-    "\4\u03e4\2\0\1\u03e4\15\0\1\u03e4\6\0\12\u03e4\14\0"+
-    "\1\u0230\74\0\1\u044b\43\0\4\u03fa\2\0\1\u03fa\15\0"+
-    "\1\u03fa\6\0\12\u03fa\14\0\1\u0273\15\0";
+    "\1\2\1\3\1\2\1\4\1\5\3\2\1\6\2\7"+
+    "\1\10\1\11\16\0\2\3\1\12\1\0\1\13\1\0"+
+    "\1\13\1\14\1\0\1\3\3\0\1\3\2\4\2\0"+
+    "\2\15\1\16\1\0\1\4\4\0\1\5\1\0\1\5"+
+    "\3\0\1\14\1\0\1\5\3\0\1\3\1\17\1\4"+
+    "\1\5\3\0\1\17\1\0\1\17\13\0\2\7\3\0"+
+    "\1\3\2\12\2\0\2\20\1\14\1\0\1\12\3\0"+
+    "\1\3\1\13\7\0\1\13\3\0\1\3\1\14\1\12"+
+    "\1\5\3\0\1\14\1\0\1\14\4\0\1\15\1\4"+
+    "\6\0\1\15\3\0\1\3\1\16\1\4\1\5\3\0"+
+    "\1\16\1\0\1\16\4\0\1\20\1\12\6\0\1\20"+
+    "\2\0";
 
   private static int [] zzUnpackTrans() {
-    int [] result = new int[80884];
+    int [] result = new int[169];
     int offset = 0;
     offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
     return result;
@@ -2289,23 +299,11 @@
   private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
 
   private static final String ZZ_ATTRIBUTE_PACKED_0 =
-    "\1\0\1\11\17\1\2\11\1\1\1\0\1\1\1\0"+
-    "\1\1\6\0\2\1\1\0\3\1\1\0\1\1\1\0"+
-    "\4\1\11\0\32\1\3\0\4\1\32\0\4\1\10\0"+
-    "\1\11\1\0\23\1\2\0\1\1\1\0\7\1\3\0"+
-    "\2\1\1\0\4\1\1\0\2\1\1\0\2\1\10\0"+
-    "\1\1\32\0\1\1\1\0\11\1\1\0\1\1\2\0"+
-    "\1\1\1\0\1\1\10\0\3\1\15\0\11\1\3\0"+
-    "\2\1\1\0\4\1\1\0\4\1\1\0\2\1\1\0"+
-    "\2\1\1\0\3\1\7\0\2\1\20\0\1\1\10\0"+
-    "\1\1\3\0\1\1\32\0\3\1\23\0\1\1\27\0"+
-    "\1\1\4\0\1\1\6\0\1\1\4\0\2\1\36\0"+
-    "\1\1\51\0\1\1\42\0\1\1\50\0\1\1\122\0"+
-    "\1\1\116\0\1\1\107\0\1\1\74\0\1\1\51\0"+
-    "\1\1\333\0";
+    "\1\0\1\11\5\1\2\11\1\1\1\0\1\1\1\0"+
+    "\1\1\2\0";
 
   private static int [] zzUnpackAttribute() {
-    int [] result = new int[1117];
+    int [] result = new int[16];
     int offset = 0;
     offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
     return result;
@@ -2379,12 +377,6 @@
   /** Numbers */
   public static final int NUMERIC_TYPE = StandardTokenizer.NUM;
   
-  /** URLs with scheme: HTTP(S), FTP, or FILE; no-scheme URLs match HTTP syntax */
-  public static final int URL_TYPE = StandardTokenizer.URL;
-  
-  /** E-mail addresses */
-  public static final int EMAIL_TYPE = StandardTokenizer.EMAIL;
-  
   /**
    * Chars in class \p{Line_Break = Complex_Context} are from South East Asian
    * scripts (Thai, Lao, Myanmar, Khmer, etc.).  Sequences of these are kept 
@@ -2442,7 +434,7 @@
     char [] map = new char[0x10000];
     int i = 0;  /* index in packed string  */
     int j = 0;  /* index in unpacked array */
-    while (i < 2336) {
+    while (i < 2174) {
       int  count = packed.charAt(i++);
       char value = packed.charAt(i++);
       do map[j++] = value; while (--count > 0);
@@ -2669,7 +661,13 @@
   
       zzState = ZZ_LEXSTATE[zzLexicalState];
 
+      // set up zzAction for empty match case:
+      int zzAttributes = zzAttrL[zzState];
+      if ( (zzAttributes & 1) == 1 ) {
+        zzAction = zzState;
+      }
 
+
       zzForAction: {
         while (true) {
     
@@ -2701,7 +699,7 @@
           if (zzNext == -1) break zzForAction;
           zzState = zzNext;
 
-          int zzAttributes = zzAttrL[zzState];
+          zzAttributes = zzAttrL[zzState];
           if ( (zzAttributes & 1) == 1 ) {
             zzAction = zzState;
             zzMarkedPosL = zzCurrentPosL;
@@ -2718,35 +716,27 @@
         case 1: 
           { /* Not numeric, word, ideographic, hiragana, or SE Asian -- ignore it. */
           }
-        case 9: break;
+        case 7: break;
         case 6: 
           { return HIRAGANA_TYPE;
           }
-        case 10: break;
+        case 8: break;
         case 2: 
           { return WORD_TYPE;
           }
-        case 11: break;
-        case 8: 
-          { return URL_TYPE;
-          }
-        case 12: break;
+        case 9: break;
         case 5: 
           { return IDEOGRAPHIC_TYPE;
           }
-        case 13: break;
-        case 7: 
-          { return EMAIL_TYPE;
-          }
-        case 14: break;
+        case 10: break;
         case 3: 
           { return NUMERIC_TYPE;
           }
-        case 15: break;
+        case 11: break;
         case 4: 
           { return SOUTH_EAST_ASIAN_TYPE;
           }
-        case 16: break;
+        case 12: break;
         default: 
           if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
             zzAtEOF = true;
Index: modules/analysis/common/src/java/org/apache/lucene/analysis/standard/package.html
===================================================================
--- modules/analysis/common/src/java/org/apache/lucene/analysis/standard/package.html	(revision 1042261)
+++ modules/analysis/common/src/java/org/apache/lucene/analysis/standard/package.html	(working copy)
@@ -27,7 +27,10 @@
         as of Lucene 3.1, implements the Word Break rules from the Unicode Text 
         Segmentation algorithm, as specified in 
         <a href="http://unicode.org/reports/tr29/">Unicode Standard Annex #29</a>.
-        URLs and email addresses are also tokenized according to the relevant RFCs.
+        Unlike <code>UAX29URLEmailTokenizer</code>, URLs and email addresses are
+        <b>not</b> tokenized as single tokens, but are instead split up into 
+        tokens according to the UAX#29 word break rules.
+        <br/>
         <code><a href="StandardAnalyzer">StandardAnalyzer</a></code> includes
         <code>StandardTokenizer</code>, 
         <code><a href="StandardFilter">StandardFilter</a></code>, 
@@ -46,13 +49,11 @@
         <code><a href="../../../../../../all/org/apache/lucene/analysis/LowerCaseFilter.html">LowerCaseFilter</a></code>
         and <code><a href="../../../../../../all/org/apache/lucene/analysis/StopFilter.html">StopFilter</a></code>.
     </li>
-    <li><code><a href="UAX29Tokenizer.html">UAX29Tokenizer</a></code>: 
-        implements the Word Break rules from the Unicode Text Segmentation 
-        algorithm, as specified in
+    <li><code><a href="UAX29URLEmailTokenizer.html">UAX29URLEmailTokenizer</a></code>: 
+        implements the Word Break rules from the Unicode Text Segmentation
+        algorithm, as specified in 
         <a href="http://unicode.org/reports/tr29/">Unicode Standard Annex #29</a>.
-        Unlike <code>StandardTokenizer</code>, URLs and email addresses are
-        <b>not</b> tokenized as single tokens, but are instead split up into 
-        tokens according to the UAX#29 word break rules.
+        URLs and email addresses are also tokenized according to the relevant RFCs.
     </li>
 </ul>
 </body>
Index: modules/analysis/common/src/java/org/apache/lucene/analysis/standard/ASCIITLD.jflex-macro
===================================================================
--- modules/analysis/common/src/java/org/apache/lucene/analysis/standard/ASCIITLD.jflex-macro	(revision 1042261)
+++ modules/analysis/common/src/java/org/apache/lucene/analysis/standard/ASCIITLD.jflex-macro	(working copy)
@@ -15,8 +15,8 @@
  */
 
 // Generated from IANA Root Zone Database <http://www.internic.net/zones/root.zone>
-// file version from Tuesday, October 12, 2010 11:34:09 AM UTC
-// generated on Wednesday, October 13, 2010 4:12:27 AM UTC
+// file version from Saturday, December 4, 2010 12:34:19 PM UTC
+// generated on Sunday, December 5, 2010 12:24:12 AM UTC
 // by org.apache.lucene.analysis.standard.GenerateJflexTLDMacros
 
 ASCIITLD = "." (
Index: modules/analysis/common/src/java/org/apache/lucene/analysis/standard/READ_BEFORE_REGENERATING.txt
===================================================================
--- modules/analysis/common/src/java/org/apache/lucene/analysis/standard/READ_BEFORE_REGENERATING.txt	(revision 1042261)
+++ modules/analysis/common/src/java/org/apache/lucene/analysis/standard/READ_BEFORE_REGENERATING.txt	(working copy)
@@ -16,6 +16,6 @@
 */
 
 
-WARNING: if you change StandardTokenizerImpl*.jflex and need to regenerate
-      the tokenizer, only use the trunk version of JFlex 1.5 (with a minimum
-      SVN revision 597) at the moment!
+WARNING: if you change StandardTokenizerImpl*.jflex or UAX29URLEmailTokenizer
+      and need to regenerate the tokenizer, only use the trunk version
+      of JFlex 1.5 (with a minimum SVN revision 597) at the moment!
Index: modules/analysis/common/src/java/org/apache/lucene/analysis/standard/UAX29URLEmailTokenizer.jflex
===================================================================
--- modules/analysis/common/src/java/org/apache/lucene/analysis/standard/UAX29URLEmailTokenizer.jflex	(revision 1042243)
+++ modules/analysis/common/src/java/org/apache/lucene/analysis/standard/UAX29URLEmailTokenizer.jflex	(working copy)
@@ -32,11 +32,14 @@
  * This class implements Word Break rules from the Unicode Text Segmentation 
  * algorithm, as specified in 
  * <a href="http://unicode.org/reports/tr29/">Unicode Standard Annex #29</a> 
+ * URLs and email addresses are also tokenized according to the relevant RFCs.
  * <p/>
  * Tokens produced are of the following types:
  * <ul>
  *   <li>&lt;ALPHANUM&gt;: A sequence of alphabetic and numeric characters</li>
  *   <li>&lt;NUM&gt;: A number</li>
+ *   <li>&lt;URL&gt;: A URL</li>
+ *   <li>&lt;EMAIL&gt;: An email address</li>
  *   <li>&lt;SOUTHEAST_ASIAN&gt;: A sequence of characters from South and Southeast
  *       Asian languages, including Thai, Lao, Myanmar, and Khmer</li>
  *   <li>&lt;IDEOGRAPHIC&gt;: A single CJKV ideographic character</li>
@@ -57,7 +60,7 @@
 %final
 %public
 %apiprivate
-%class UAX29Tokenizer
+%class UAX29URLEmailTokenizer
 %extends Tokenizer
 %type boolean
 %function getNextToken
@@ -67,7 +70,7 @@
   super(in);
 %init}
 
-// WB4. X (Extend | Format)* --> X
+// UAX#29 WB4. X (Extend | Format)* --> X
 //
 ALetterEx      = \p{WB:ALetter}                     [\p{WB:Format}\p{WB:Extend}]*
 // TODO: Convert hard-coded full-width numeric range to property intersection (something like [\p{Full-Width}&&\p{Numeric}]) once JFlex supports it
@@ -77,6 +80,85 @@
 MidNumericEx   = [\p{WB:MidNum}\p{WB:MidNumLet}]    [\p{WB:Format}\p{WB:Extend}]*
 ExtendNumLetEx = \p{WB:ExtendNumLet}                [\p{WB:Format}\p{WB:Extend}]*
 
+
+// URL and E-mail syntax specifications:
+//
+//     RFC-952:  DOD INTERNET HOST TABLE SPECIFICATION
+//     RFC-1035: DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION
+//     RFC-1123: Requirements for Internet Hosts - Application and Support
+//     RFC-1738: Uniform Resource Locators (URL)
+//     RFC-3986: Uniform Resource Identifier (URI): Generic Syntax
+//     RFC-5234: Augmented BNF for Syntax Specifications: ABNF
+//     RFC-5321: Simple Mail Transfer Protocol
+//     RFC-5322: Internet Message Format
+
+%include src/java/org/apache/lucene/analysis/standard/ASCIITLD.jflex-macro
+
+DomainLabel = [A-Za-z0-9] ([-A-Za-z0-9]* [A-Za-z0-9])?
+DomainNameStrict = {DomainLabel} ("." {DomainLabel})* {ASCIITLD}
+DomainNameLoose  = {DomainLabel} ("." {DomainLabel})*
+
+IPv4DecimalOctet = "0"{0,2} [0-9] | "0"? [1-9][0-9] | "1" [0-9][0-9] | "2" ([0-4][0-9] | "5" [0-5])
+IPv4Address  = {IPv4DecimalOctet} ("." {IPv4DecimalOctet}){3} 
+IPv6Hex16Bit = [0-9A-Fa-f]{1,4}
+IPv6LeastSignificant32Bits = {IPv4Address} | ({IPv6Hex16Bit} ":" {IPv6Hex16Bit})
+IPv6Address =                                                  ({IPv6Hex16Bit} ":"){6} {IPv6LeastSignificant32Bits}
+            |                                             "::" ({IPv6Hex16Bit} ":"){5} {IPv6LeastSignificant32Bits}
+            |                            {IPv6Hex16Bit}?  "::" ({IPv6Hex16Bit} ":"){4} {IPv6LeastSignificant32Bits}
+            | (({IPv6Hex16Bit} ":"){0,1} {IPv6Hex16Bit})? "::" ({IPv6Hex16Bit} ":"){3} {IPv6LeastSignificant32Bits}
+            | (({IPv6Hex16Bit} ":"){0,2} {IPv6Hex16Bit})? "::" ({IPv6Hex16Bit} ":"){2} {IPv6LeastSignificant32Bits}
+            | (({IPv6Hex16Bit} ":"){0,3} {IPv6Hex16Bit})? "::"  {IPv6Hex16Bit} ":"     {IPv6LeastSignificant32Bits}
+            | (({IPv6Hex16Bit} ":"){0,4} {IPv6Hex16Bit})? "::"                         {IPv6LeastSignificant32Bits}
+            | (({IPv6Hex16Bit} ":"){0,5} {IPv6Hex16Bit})? "::"                         {IPv6Hex16Bit}
+            | (({IPv6Hex16Bit} ":"){0,6} {IPv6Hex16Bit})? "::"
+
+URIunreserved = [-._~A-Za-z0-9]
+URIpercentEncoded = "%" [0-9A-Fa-f]{2}
+URIsubDelims = [!$&'()*+,;=]
+URIloginSegment = ({URIunreserved} | {URIpercentEncoded} | {URIsubDelims})*
+URIlogin = {URIloginSegment} (":" {URIloginSegment})? "@"
+URIquery    = "?" ({URIunreserved} | {URIpercentEncoded} | {URIsubDelims} | [:@/?])*
+URIfragment = "#" ({URIunreserved} | {URIpercentEncoded} | {URIsubDelims} | [:@/?])*
+URIport = ":" [0-9]{1,5}
+URIhostStrict = ("[" {IPv6Address} "]") | {IPv4Address} | {DomainNameStrict}  
+URIhostLoose  = ("[" {IPv6Address} "]") | {IPv4Address} | {DomainNameLoose} 
+
+URIauthorityStrict =             {URIhostStrict} {URIport}?
+URIauthorityLoose  = {URIlogin}? {URIhostLoose}  {URIport}?
+
+HTTPsegment = ({URIunreserved} | {URIpercentEncoded} | [;:@&=])*
+HTTPpath = ("/" {HTTPsegment})*
+HTTPscheme = [hH][tT][tT][pP][sS]? "://"
+HTTPurlFull = {HTTPscheme} {URIauthorityLoose}  {HTTPpath}? {URIquery}? {URIfragment}?
+// {HTTPurlNoScheme} excludes {URIlogin}, because it could otherwise accept e-mail addresses
+HTTPurlNoScheme =          {URIauthorityStrict} {HTTPpath}? {URIquery}? {URIfragment}?
+HTTPurl = {HTTPurlFull} | {HTTPurlNoScheme}
+
+FTPorFILEsegment = ({URIunreserved} | {URIpercentEncoded} | [?:@&=])*
+FTPorFILEpath = "/" {FTPorFILEsegment} ("/" {FTPorFILEsegment})*
+FTPtype = ";" [tT][yY][pP][eE] "=" [aAiIdD]
+FTPscheme = [fF][tT][pP] "://"
+FTPurl = {FTPscheme} {URIauthorityLoose} {FTPorFILEpath} {FTPtype}? {URIfragment}?
+
+FILEscheme = [fF][iI][lL][eE] "://"
+FILEurl = {FILEscheme} {URIhostLoose}? {FTPorFILEpath} {URIfragment}?
+
+URL = {HTTPurl} | {FTPurl} | {FILEurl}
+
+EMAILquotedString = [\"] ([\u0001-\u0008\u000B\u000C\u000E-\u0021\u0023-\u005B\u005D-\u007E] | [\\] [\u0000-\u007F])* [\"]
+EMAILatomText = [A-Za-z0-9!#$%&'*+-/=?\^_`{|}~]
+EMAILlabel = {EMAILatomText}+ | {EMAILquotedString}
+EMAILlocalPart = {EMAILlabel} ("." {EMAILlabel})*
+EMAILdomainLiteralText = [\u0001-\u0008\u000B\u000C\u000E-\u005A\u005E-\u007F] | [\\] [\u0000-\u007F]
+// DFA minimization allows {IPv6Address} and {IPv4Address} to be included 
+// in the {EMAILbracketedHost} definition without incurring any size penalties, 
+// since {EMAILdomainLiteralText} recognizes all valid IP addresses.
+// The IP address regexes are included in {EMAILbracketedHost} simply as a 
+// reminder that they are acceptable bracketed host forms.
+EMAILbracketedHost = "[" ({EMAILdomainLiteralText}* | {IPv4Address} | [iI][pP][vV] "6:" {IPv6Address}) "]"
+EMAIL = {EMAILlocalPart} "@" ({DomainNameStrict} | {EMAILbracketedHost})
+
+
 %{
   /** Alphanumeric sequences */
   public static final String WORD_TYPE = "<ALPHANUM>";
@@ -84,6 +166,12 @@
   /** Numbers */
   public static final String NUMERIC_TYPE = "<NUM>";
   
+  /** URLs with scheme: HTTP(S), FTP, or FILE; no-scheme URLs match HTTP syntax */
+  public static final String URL_TYPE = "<URL>";
+  
+  /** E-mail addresses */
+  public static final String EMAIL_TYPE = "<EMAIL";
+  
   /**
    * Chars in class \p{Line_Break = Complex_Context} are from South East Asian
    * scripts (Thai, Lao, Myanmar, Khmer, etc.).  Sequences of these are kept 
@@ -112,7 +200,7 @@
    * @param source The AttributeSource to use
    * @param input The input reader
    */
-  public UAX29Tokenizer(AttributeSource source, Reader input) {
+  public UAX29URLEmailTokenizer(AttributeSource source, Reader input) {
     super(source, input);
     zzReader = input;
   }
@@ -121,7 +209,7 @@
    * @param factory The AttributeFactory to use
    * @param input The input reader
    */
-  public UAX29Tokenizer(AttributeFactory factory, Reader input) {
+  public UAX29URLEmailTokenizer(AttributeFactory factory, Reader input) {
     super(factory, input); 
     zzReader = input;
   }
@@ -201,17 +289,19 @@
 
 %%
 
-// WB1. 	sot 	÷ 	
-// WB2. 		÷ 	eot
+// UAX#29 WB1. 	sot 	÷ 	
+//        WB2. 		÷ 	eot
 //
 <<EOF>> { return false; }
 
+{URL}   { if (populateAttributes(URL_TYPE)) return true; }
+{EMAIL} {if (populateAttributes(EMAIL_TYPE)) return true; }
 
-// WB8.   Numeric × Numeric
-// WB11.  Numeric (MidNum | MidNumLet) × Numeric
-// WB12.  Numeric × (MidNum | MidNumLet) Numeric
-// WB13a. (ALetter | Numeric | Katakana | ExtendNumLet) × ExtendNumLet
-// WB13b. ExtendNumLet × (ALetter | Numeric | Katakana)
+// UAX#29 WB8.   Numeric × Numeric
+//        WB11.  Numeric (MidNum | MidNumLet) × Numeric
+//        WB12.  Numeric × (MidNum | MidNumLet) Numeric
+//        WB13a. (ALetter | Numeric | Katakana | ExtendNumLet) × ExtendNumLet
+//        WB13b. ExtendNumLet × (ALetter | Numeric | Katakana)
 //
 {ExtendNumLetEx}* {NumericEx} ({ExtendNumLetEx}+ {NumericEx} 
                               | {MidNumericEx} {NumericEx} 
@@ -220,14 +310,14 @@
   { if (populateAttributes(NUMERIC_TYPE)) return true; }
 
 
-// WB5.   ALetter × ALetter
-// WB6.   ALetter × (MidLetter | MidNumLet) ALetter
-// WB7.   ALetter (MidLetter | MidNumLet) × ALetter
-// WB9.   ALetter × Numeric
-// WB10.  Numeric × ALetter
-// WB13.  Katakana × Katakana
-// WB13a. (ALetter | Numeric | Katakana | ExtendNumLet) × ExtendNumLet
-// WB13b. ExtendNumLet × (ALetter | Numeric | Katakana)
+// UAX#29 WB5.   ALetter × ALetter
+//        WB6.   ALetter × (MidLetter | MidNumLet) ALetter
+//        WB7.   ALetter (MidLetter | MidNumLet) × ALetter
+//        WB9.   ALetter × Numeric
+//        WB10.  Numeric × ALetter
+//        WB13.  Katakana × Katakana
+//        WB13a. (ALetter | Numeric | Katakana | ExtendNumLet) × ExtendNumLet
+//        WB13b. ExtendNumLet × (ALetter | Numeric | Katakana)
 //
 {ExtendNumLetEx}*  ( {KatakanaEx} ({ExtendNumLetEx}* {KatakanaEx})* 
                    | ( {NumericEx}  ({ExtendNumLetEx}+ {NumericEx} | {MidNumericEx} {NumericEx} | {NumericEx})*
@@ -260,15 +350,15 @@
 //
 \p{LB:Complex_Context}+ { if (populateAttributes(SOUTH_EAST_ASIAN_TYPE)) return true; }
 
-// WB14.  Any ÷ Any
+// UAX#29 WB14.  Any ÷ Any
 //
 \p{Script:Han} { if (populateAttributes(IDEOGRAPHIC_TYPE)) return true; }
 \p{Script:Hiragana} { if (populateAttributes(HIRAGANA_TYPE)) return true; }
 
 
-// WB3.   CR × LF
-// WB3a.  (Newline | CR | LF) ÷
-// WB3b.  ÷ (Newline | CR | LF)
-// WB14.  Any ÷ Any
+// UAX#29 WB3.   CR × LF
+//        WB3a.  (Newline | CR | LF) ÷
+//        WB3b.  ÷ (Newline | CR | LF)
+//        WB14.  Any ÷ Any
 //
 [^] { /* Not numeric, word, ideographic, hiragana, or SE Asian -- ignore it. */ }

Property changes on: modules/analysis/common/src/java/org/apache/lucene/analysis/standard/UAX29URLEmailTokenizer.jflex
___________________________________________________________________
Added: svn:eol-style
   + native

Index: modules/analysis/common/src/java/org/apache/lucene/analysis/standard/UAX29Tokenizer.jflex
===================================================================
--- modules/analysis/common/src/java/org/apache/lucene/analysis/standard/UAX29Tokenizer.jflex	(revision 1042261)
+++ modules/analysis/common/src/java/org/apache/lucene/analysis/standard/UAX29Tokenizer.jflex	(working copy)
@@ -1,274 +0,0 @@
-package org.apache.lucene.analysis.standard;
-
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.io.IOException;
-import java.io.Reader;
-
-import org.apache.lucene.analysis.Tokenizer;
-import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
-import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
-import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
-import org.apache.lucene.analysis.tokenattributes.TypeAttribute;
-import org.apache.lucene.util.AttributeSource;
-
-
-/**
- * This class implements Word Break rules from the Unicode Text Segmentation 
- * algorithm, as specified in 
- * <a href="http://unicode.org/reports/tr29/">Unicode Standard Annex #29</a> 
- * <p/>
- * Tokens produced are of the following types:
- * <ul>
- *   <li>&lt;ALPHANUM&gt;: A sequence of alphabetic and numeric characters</li>
- *   <li>&lt;NUM&gt;: A number</li>
- *   <li>&lt;SOUTHEAST_ASIAN&gt;: A sequence of characters from South and Southeast
- *       Asian languages, including Thai, Lao, Myanmar, and Khmer</li>
- *   <li>&lt;IDEOGRAPHIC&gt;: A single CJKV ideographic character</li>
- *   <li>&lt;HIRAGANA&gt;: A single hiragana character</li>
- * </ul>
- * <b>WARNING</b>: Because JFlex does not support Unicode supplementary 
- * characters (characters above the Basic Multilingual Plane, which contains
- * those up to and including U+FFFF), this scanner will not recognize them
- * properly.  If you need to be able to process text containing supplementary 
- * characters, consider using the ICU4J-backed implementation in modules/analysis/icu  
- * (org.apache.lucene.analysis.icu.segmentation.ICUTokenizer)
- * instead of this class, since the ICU4J-backed implementation does not have
- * this limitation.
- */
-%%
-
-%unicode 6.0
-%final
-%public
-%apiprivate
-%class UAX29Tokenizer
-%extends Tokenizer
-%type boolean
-%function getNextToken
-%char
-
-%init{
-  super(in);
-%init}
-
-// WB4. X (Extend | Format)* --> X
-//
-ALetterEx      = \p{WB:ALetter}                     [\p{WB:Format}\p{WB:Extend}]*
-// TODO: Convert hard-coded full-width numeric range to property intersection (something like [\p{Full-Width}&&\p{Numeric}]) once JFlex supports it
-NumericEx      = [\p{WB:Numeric}\uFF10-\uFF19]      [\p{WB:Format}\p{WB:Extend}]*
-KatakanaEx     = \p{WB:Katakana}                    [\p{WB:Format}\p{WB:Extend}]* 
-MidLetterEx    = [\p{WB:MidLetter}\p{WB:MidNumLet}] [\p{WB:Format}\p{WB:Extend}]* 
-MidNumericEx   = [\p{WB:MidNum}\p{WB:MidNumLet}]    [\p{WB:Format}\p{WB:Extend}]*
-ExtendNumLetEx = \p{WB:ExtendNumLet}                [\p{WB:Format}\p{WB:Extend}]*
-
-%{
-  /** Alphanumeric sequences */
-  public static final String WORD_TYPE = "<ALPHANUM>";
-  
-  /** Numbers */
-  public static final String NUMERIC_TYPE = "<NUM>";
-  
-  /**
-   * Chars in class \p{Line_Break = Complex_Context} are from South East Asian
-   * scripts (Thai, Lao, Myanmar, Khmer, etc.).  Sequences of these are kept 
-   * together as as a single token rather than broken up, because the logic
-   * required to break them at word boundaries is too complex for UAX#29.
-   * <p>
-   * See Unicode Line Breaking Algorithm: http://www.unicode.org/reports/tr14/#SA
-   */
-  public static final String SOUTH_EAST_ASIAN_TYPE = "<SOUTHEAST_ASIAN>";
-  
-  public static final String IDEOGRAPHIC_TYPE = "<IDEOGRAPHIC>";
-  
-  public static final String HIRAGANA_TYPE = "<HIRAGANA>";
-  
-  private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
-  private final OffsetAttribute offsetAtt = addAttribute(OffsetAttribute.class);
-  private final PositionIncrementAttribute posIncrAtt 
-    = addAttribute(PositionIncrementAttribute.class);
-  private final TypeAttribute typeAtt = addAttribute(TypeAttribute.class);
-  
-  private int maxTokenLength = StandardAnalyzer.DEFAULT_MAX_TOKEN_LENGTH;
-  private int posIncr;
-
-  
-  /**
-   * @param source The AttributeSource to use
-   * @param input The input reader
-   */
-  public UAX29Tokenizer(AttributeSource source, Reader input) {
-    super(source, input);
-    zzReader = input;
-  }
-  
-  /**
-   * @param factory The AttributeFactory to use
-   * @param input The input reader
-   */
-  public UAX29Tokenizer(AttributeFactory factory, Reader input) {
-    super(factory, input); 
-    zzReader = input;
-  }
-  
-  /** 
-   * Set the max allowed token length.  Any token longer than this is skipped.
-   * @param length the new max allowed token length
-   */
-  public void setMaxTokenLength(int length) {
-    this.maxTokenLength = length;
-  }
-
-  /**
-   * Returns the max allowed token length.  Any token longer than this is 
-   * skipped.
-   * @return the max allowed token length 
-   */
-  public int getMaxTokenLength() {
-    return maxTokenLength;
-  }
-
-  @Override
-  public final void end() {
-    // set final offset
-    int finalOffset = correctOffset(yychar + yylength());
-    offsetAtt.setOffset(finalOffset, finalOffset);
-  }
-
-  @Override
-  public void reset(Reader reader) throws IOException {
-    super.reset(reader);
-    yyreset(reader);
-  }
-
-  @Override
-  public final boolean incrementToken() throws IOException {
-    // This method is required because of two JFlex limitations:
-    // 1. No way to insert code at the beginning of the generated scanning
-    //    get-next-token method; and
-    // 2. No way to declare @Override on the generated scanning method.
-    clearAttributes();
-    posIncr = 1;
-    return getNextToken();
-  }
-
-  /**
-   * Populates this TokenStream's CharTermAttribute and OffsetAttribute from
-   * the current match, the TypeAttribute from the passed-in tokenType, and
-   * the PositionIncrementAttribute to one, unless the immediately previous
-   * token(s) was/were skipped because maxTokenLength was exceeded, in which
-   * case the PositionIncrementAttribute is set to one plus the number of
-   * skipped overly long tokens. 
-   * <p/> 
-   * If maxTokenLength is exceeded, the CharTermAttribute is set back to empty
-   * and false is returned.
-   * 
-   * @param tokenType The type of the matching token
-   * @return true there is a token available (not too long); false otherwise 
-   */
-  private boolean populateAttributes(String tokenType) {
-    boolean isTokenAvailable = false;
-    if (yylength() > maxTokenLength) {
-      // When we skip a too-long token, we treat it like a stopword, introducing
-      // a position increment gap
-      ++posIncr;
-    } else {
-      termAtt.copyBuffer(zzBuffer, zzStartRead, yylength());
-      posIncrAtt.setPositionIncrement(posIncr);
-      offsetAtt.setOffset(correctOffset(yychar),
-                          correctOffset(yychar + yylength()));
-      typeAtt.setType(tokenType);
-      isTokenAvailable = true;
-    }
-    return isTokenAvailable;
-  }
-%}
-
-%%
-
-// WB1. 	sot 	÷ 	
-// WB2. 		÷ 	eot
-//
-<<EOF>> { return false; }
-
-
-// WB8.   Numeric × Numeric
-// WB11.  Numeric (MidNum | MidNumLet) × Numeric
-// WB12.  Numeric × (MidNum | MidNumLet) Numeric
-// WB13a. (ALetter | Numeric | Katakana | ExtendNumLet) × ExtendNumLet
-// WB13b. ExtendNumLet × (ALetter | Numeric | Katakana)
-//
-{ExtendNumLetEx}* {NumericEx} ({ExtendNumLetEx}+ {NumericEx} 
-                              | {MidNumericEx} {NumericEx} 
-                              | {NumericEx})*
-{ExtendNumLetEx}* 
-  { if (populateAttributes(NUMERIC_TYPE)) return true; }
-
-
-// WB5.   ALetter × ALetter
-// WB6.   ALetter × (MidLetter | MidNumLet) ALetter
-// WB7.   ALetter (MidLetter | MidNumLet) × ALetter
-// WB9.   ALetter × Numeric
-// WB10.  Numeric × ALetter
-// WB13.  Katakana × Katakana
-// WB13a. (ALetter | Numeric | Katakana | ExtendNumLet) × ExtendNumLet
-// WB13b. ExtendNumLet × (ALetter | Numeric | Katakana)
-//
-{ExtendNumLetEx}*  ( {KatakanaEx} ({ExtendNumLetEx}* {KatakanaEx})* 
-                   | ( {NumericEx}  ({ExtendNumLetEx}+ {NumericEx} | {MidNumericEx} {NumericEx} | {NumericEx})*
-                     | {ALetterEx}  ({ExtendNumLetEx}+ {ALetterEx} | {MidLetterEx}  {ALetterEx} | {ALetterEx})* )+ ) 
-({ExtendNumLetEx}+ ( {KatakanaEx} ({ExtendNumLetEx}* {KatakanaEx})* 
-                   | ( {NumericEx}  ({ExtendNumLetEx}+ {NumericEx} | {MidNumericEx} {NumericEx} | {NumericEx})*
-                     | {ALetterEx}  ({ExtendNumLetEx}+ {ALetterEx} | {MidLetterEx}  {ALetterEx} | {ALetterEx})* )+ ) )*
-{ExtendNumLetEx}*  
-  { if (populateAttributes(WORD_TYPE)) return true; }
-
-
-// From UAX #29:
-//
-//    [C]haracters with the Line_Break property values of Contingent_Break (CB), 
-//    Complex_Context (SA/South East Asian), and XX (Unknown) are assigned word 
-//    boundary property values based on criteria outside of the scope of this
-//    annex.  That means that satisfactory treatment of languages like Chinese
-//    or Thai requires special handling.
-// 
-// In Unicode 6.0, only one character has the \p{Line_Break = Contingent_Break}
-// property: U+FFFC ( ￼ ) OBJECT REPLACEMENT CHARACTER.
-//
-// In the ICU implementation of UAX#29, \p{Line_Break = Complex_Context}
-// character sequences (from South East Asian scripts like Thai, Myanmar, Khmer,
-// Lao, etc.) are kept together.  This grammar does the same below.
-//
-// See also the Unicode Line Breaking Algorithm:
-//
-//    http://www.unicode.org/reports/tr14/#SA
-//
-\p{LB:Complex_Context}+ { if (populateAttributes(SOUTH_EAST_ASIAN_TYPE)) return true; }
-
-// WB14.  Any ÷ Any
-//
-\p{Script:Han} { if (populateAttributes(IDEOGRAPHIC_TYPE)) return true; }
-\p{Script:Hiragana} { if (populateAttributes(HIRAGANA_TYPE)) return true; }
-
-
-// WB3.   CR × LF
-// WB3a.  (Newline | CR | LF) ÷
-// WB3b.  ÷ (Newline | CR | LF)
-// WB14.  Any ÷ Any
-//
-[^] { /* Not numeric, word, ideographic, hiragana, or SE Asian -- ignore it. */ }
Index: modules/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardTokenizer.java
===================================================================
--- modules/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardTokenizer.java	(revision 1042261)
+++ modules/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardTokenizer.java	(working copy)
@@ -83,10 +83,9 @@
   @Deprecated
   public static final int ACRONYM_DEP       = 8;
 
-  public static final int URL = 9;
-  public static final int SOUTHEAST_ASIAN = 10;
-  public static final int IDEOGRAPHIC = 11;
-  public static final int HIRAGANA = 12;
+  public static final int SOUTHEAST_ASIAN = 9;
+  public static final int IDEOGRAPHIC = 10;
+  public static final int HIRAGANA = 11;
   
   /** String token types that correspond to token type int constants */
   public static final String [] TOKEN_TYPES = new String [] {
@@ -99,7 +98,6 @@
     "<NUM>",
     "<CJ>",
     "<ACRONYM_DEP>",
-    "<URL>",
     "<SOUTHEAST_ASIAN>",
     "<IDEOGRAPHIC>",
     "<HIRAGANA>"
Index: modules/analysis/common/src/java/org/apache/lucene/analysis/standard/ClassicTokenizerImpl.java
===================================================================
--- modules/analysis/common/src/java/org/apache/lucene/analysis/standard/ClassicTokenizerImpl.java	(revision 1042261)
+++ modules/analysis/common/src/java/org/apache/lucene/analysis/standard/ClassicTokenizerImpl.java	(working copy)
@@ -1,4 +1,4 @@
-/* The following code was generated by JFlex 1.5.0-SNAPSHOT on 10/3/10 9:07 AM */
+/* The following code was generated by JFlex 1.5.0-SNAPSHOT on 12/4/10 7:24 PM */
 
 package org.apache.lucene.analysis.standard;
 
@@ -33,8 +33,8 @@
 /**
  * This class is a scanner generated by 
  * <a href="http://www.jflex.de/">JFlex</a> 1.5.0-SNAPSHOT
- * on 10/3/10 9:07 AM from the specification file
- * <tt>C:/Users/rmuir/workspace/lucene-clean/modules/analysis/common/src/java/org/apache/lucene/analysis/standard/ClassicTokenizerImpl.jflex</tt>
+ * on 12/4/10 7:24 PM from the specification file
+ * <tt>C:/cygwin/home/us/svn/lucene/dev/trunk/modules/analysis/common/src/java/org/apache/lucene/analysis/standard/ClassicTokenizerImpl.jflex</tt>
  */
 class ClassicTokenizerImpl implements StandardTokenizerInterface {
 
@@ -630,7 +630,13 @@
   
       zzState = ZZ_LEXSTATE[zzLexicalState];
 
+      // set up zzAction for empty match case:
+      int zzAttributes = zzAttrL[zzState];
+      if ( (zzAttributes & 1) == 1 ) {
+        zzAction = zzState;
+      }
 
+
       zzForAction: {
         while (true) {
     
@@ -662,7 +668,7 @@
           if (zzNext == -1) break zzForAction;
           zzState = zzNext;
 
-          int zzAttributes = zzAttrL[zzState];
+          zzAttributes = zzAttrL[zzState];
           if ( (zzAttributes & 1) == 1 ) {
             zzAction = zzState;
             zzMarkedPosL = zzCurrentPosL;
@@ -676,44 +682,44 @@
       zzMarkedPos = zzMarkedPosL;
 
       switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
-        case 10: 
-          { return EMAIL;
+        case 5: 
+          { return NUM;
           }
         case 11: break;
-        case 2: 
-          { return ALPHANUM;
+        case 9: 
+          { return ACRONYM;
           }
         case 12: break;
-        case 4: 
-          { return HOST;
+        case 7: 
+          { return COMPANY;
           }
         case 13: break;
+        case 10: 
+          { return EMAIL;
+          }
+        case 14: break;
         case 1: 
           { /* ignore */
           }
-        case 14: break;
-        case 8: 
-          { return ACRONYM_DEP;
-          }
         case 15: break;
-        case 5: 
-          { return NUM;
+        case 6: 
+          { return APOSTROPHE;
           }
         case 16: break;
-        case 9: 
-          { return ACRONYM;
+        case 3: 
+          { return CJ;
           }
         case 17: break;
-        case 7: 
-          { return COMPANY;
+        case 8: 
+          { return ACRONYM_DEP;
           }
         case 18: break;
-        case 6: 
-          { return APOSTROPHE;
+        case 2: 
+          { return ALPHANUM;
           }
         case 19: break;
-        case 3: 
-          { return CJ;
+        case 4: 
+          { return HOST;
           }
         case 20: break;
         default: 
Index: modules/analysis/common/src/java/org/apache/lucene/analysis/standard/UAX29URLEmailTokenizer.java
===================================================================
--- modules/analysis/common/src/java/org/apache/lucene/analysis/standard/UAX29URLEmailTokenizer.java	(revision 1042243)
+++ modules/analysis/common/src/java/org/apache/lucene/analysis/standard/UAX29URLEmailTokenizer.java	(working copy)
@@ -1,4 +1,4 @@
-/* The following code was generated by JFlex 1.5.0-SNAPSHOT on 10/13/10 12:12 AM */
+/* The following code was generated by JFlex 1.5.0-SNAPSHOT on 12/4/10 7:24 PM */
 
 package org.apache.lucene.analysis.standard;
 
@@ -34,11 +34,14 @@
  * This class implements Word Break rules from the Unicode Text Segmentation 
  * algorithm, as specified in 
  * <a href="http://unicode.org/reports/tr29/">Unicode Standard Annex #29</a> 
+ * URLs and email addresses are also tokenized according to the relevant RFCs.
  * <p/>
  * Tokens produced are of the following types:
  * <ul>
  *   <li>&lt;ALPHANUM&gt;: A sequence of alphabetic and numeric characters</li>
  *   <li>&lt;NUM&gt;: A number</li>
+ *   <li>&lt;URL&gt;: A URL</li>
+ *   <li>&lt;EMAIL&gt;: An email address</li>
  *   <li>&lt;SOUTHEAST_ASIAN&gt;: A sequence of characters from South and Southeast
  *       Asian languages, including Thai, Lao, Myanmar, and Khmer</li>
  *   <li>&lt;IDEOGRAPHIC&gt;: A single CJKV ideographic character</li>
@@ -54,7 +57,7 @@
  * this limitation.
  */
 
-public final class UAX29Tokenizer extends Tokenizer {
+public final class UAX29URLEmailTokenizer extends Tokenizer {
 
   /** This character denotes the end of file */
   private static final int YYEOF = -1;
@@ -79,115 +82,123 @@
    * Translates characters to character classes
    */
   private static final String ZZ_CMAP_PACKED = 
-    "\47\0\1\7\4\0\1\6\1\0\1\7\1\0\12\3\1\5\1\6"+
-    "\5\0\32\1\4\0\1\10\1\0\32\1\57\0\1\1\2\0\1\2"+
-    "\7\0\1\1\1\0\1\5\2\0\1\1\5\0\27\1\1\0\37\1"+
-    "\1\0\u01ca\1\4\0\14\1\16\0\5\1\7\0\1\1\1\0\1\1"+
-    "\21\0\160\2\5\1\1\0\2\1\2\0\4\1\1\6\7\0\1\1"+
-    "\1\5\3\1\1\0\1\1\1\0\24\1\1\0\123\1\1\0\213\1"+
-    "\1\0\7\2\236\1\11\0\46\1\2\0\1\1\7\0\47\1\1\0"+
-    "\1\6\7\0\55\2\1\0\1\2\1\0\2\2\1\0\2\2\1\0"+
-    "\1\2\10\0\33\1\5\0\4\1\1\5\13\0\4\2\10\0\2\6"+
-    "\2\0\13\2\5\0\53\1\25\2\12\3\1\0\1\3\1\6\1\0"+
-    "\2\1\1\2\143\1\1\0\1\1\10\2\1\0\6\2\2\1\2\2"+
-    "\1\0\4\2\2\1\12\3\3\1\2\0\1\1\17\0\1\2\1\1"+
-    "\1\2\36\1\33\2\2\0\131\1\13\2\1\1\16\0\12\3\41\1"+
-    "\11\2\2\1\2\0\1\6\1\0\1\1\5\0\26\1\4\2\1\1"+
-    "\11\2\1\1\3\2\1\1\5\2\22\0\31\1\3\2\244\0\4\2"+
-    "\66\1\3\2\1\1\22\2\1\1\7\2\12\1\2\2\2\0\12\3"+
-    "\1\0\7\1\1\0\7\1\1\0\3\2\1\0\10\1\2\0\2\1"+
-    "\2\0\26\1\1\0\7\1\1\0\1\1\3\0\4\1\2\0\1\2"+
-    "\1\1\7\2\2\0\2\2\2\0\3\2\1\1\10\0\1\2\4\0"+
-    "\2\1\1\0\3\1\2\2\2\0\12\3\2\1\17\0\3\2\1\0"+
-    "\6\1\4\0\2\1\2\0\26\1\1\0\7\1\1\0\2\1\1\0"+
-    "\2\1\1\0\2\1\2\0\1\2\1\0\5\2\4\0\2\2\2\0"+
-    "\3\2\3\0\1\2\7\0\4\1\1\0\1\1\7\0\12\3\2\2"+
-    "\3\1\1\2\13\0\3\2\1\0\11\1\1\0\3\1\1\0\26\1"+
-    "\1\0\7\1\1\0\2\1\1\0\5\1\2\0\1\2\1\1\10\2"+
-    "\1\0\3\2\1\0\3\2\2\0\1\1\17\0\2\1\2\2\2\0"+
-    "\12\3\21\0\3\2\1\0\10\1\2\0\2\1\2\0\26\1\1\0"+
-    "\7\1\1\0\2\1\1\0\5\1\2\0\1\2\1\1\7\2\2\0"+
-    "\2\2\2\0\3\2\10\0\2\2\4\0\2\1\1\0\3\1\2\2"+
-    "\2\0\12\3\1\0\1\1\20\0\1\2\1\1\1\0\6\1\3\0"+
-    "\3\1\1\0\4\1\3\0\2\1\1\0\1\1\1\0\2\1\3\0"+
-    "\2\1\3\0\3\1\3\0\14\1\4\0\5\2\3\0\3\2\1\0"+
-    "\4\2\2\0\1\1\6\0\1\2\16\0\12\3\21\0\3\2\1\0"+
-    "\10\1\1\0\3\1\1\0\27\1\1\0\12\1\1\0\5\1\3\0"+
-    "\1\1\7\2\1\0\3\2\1\0\4\2\7\0\2\2\1\0\2\1"+
-    "\6\0\2\1\2\2\2\0\12\3\22\0\2\2\1\0\10\1\1\0"+
-    "\3\1\1\0\27\1\1\0\12\1\1\0\5\1\2\0\1\2\1\1"+
-    "\7\2\1\0\3\2\1\0\4\2\7\0\2\2\7\0\1\1\1\0"+
-    "\2\1\2\2\2\0\12\3\1\0\2\1\17\0\2\2\1\0\10\1"+
-    "\1\0\3\1\1\0\51\1\2\0\1\1\7\2\1\0\3\2\1\0"+
-    "\4\2\1\1\10\0\1\2\10\0\2\1\2\2\2\0\12\3\12\0"+
-    "\6\1\2\0\2\2\1\0\22\1\3\0\30\1\1\0\11\1\1\0"+
-    "\1\1\2\0\7\1\3\0\1\2\4\0\6\2\1\0\1\2\1\0"+
-    "\10\2\22\0\2\2\15\0\60\11\1\12\2\11\7\12\5\0\7\11"+
-    "\10\12\1\0\12\3\47\0\2\11\1\0\1\11\2\0\2\11\1\0"+
-    "\1\11\2\0\1\11\6\0\4\11\1\0\7\11\1\0\3\11\1\0"+
-    "\1\11\1\0\1\11\2\0\2\11\1\0\4\11\1\12\2\11\6\12"+
-    "\1\0\2\12\1\11\2\0\5\11\1\0\1\11\1\0\6\12\2\0"+
-    "\12\3\2\0\2\11\42\0\1\1\27\0\2\2\6\0\12\3\13\0"+
-    "\1\2\1\0\1\2\1\0\1\2\4\0\2\2\10\1\1\0\44\1"+
-    "\4\0\24\2\1\0\2\2\5\1\13\2\1\0\44\2\11\0\1\2"+
-    "\71\0\53\11\24\12\1\11\12\3\6\0\6\11\4\12\4\11\3\12"+
-    "\1\11\3\12\2\11\7\12\3\11\4\12\15\11\14\12\1\11\1\12"+
-    "\12\3\4\12\2\11\46\1\12\0\53\1\1\0\1\1\3\0\u0149\1"+
-    "\1\0\4\1\2\0\7\1\1\0\1\1\1\0\4\1\2\0\51\1"+
-    "\1\0\4\1\2\0\41\1\1\0\4\1\2\0\7\1\1\0\1\1"+
-    "\1\0\4\1\2\0\17\1\1\0\71\1\1\0\4\1\2\0\103\1"+
-    "\2\0\3\2\40\0\20\1\20\0\125\1\14\0\u026c\1\2\0\21\1"+
-    "\1\0\32\1\5\0\113\1\3\0\3\1\17\0\15\1\1\0\4\1"+
-    "\3\2\13\0\22\1\3\2\13\0\22\1\2\2\14\0\15\1\1\0"+
-    "\3\1\1\0\2\2\14\0\64\11\40\12\3\0\1\11\4\0\1\11"+
-    "\1\12\2\0\12\3\41\0\3\2\2\0\12\3\6\0\130\1\10\0"+
-    "\51\1\1\2\1\1\5\0\106\1\12\0\35\1\3\0\14\2\4\0"+
-    "\14\2\12\0\12\3\36\11\2\0\5\11\13\0\54\11\4\0\21\12"+
-    "\7\11\2\12\6\0\12\3\1\11\3\0\2\11\40\0\27\1\5\2"+
-    "\4\0\65\11\12\12\1\0\35\12\2\0\1\2\12\3\6\0\12\3"+
-    "\6\0\16\11\122\0\5\2\57\1\21\2\7\1\4\0\12\3\21\0"+
-    "\11\2\14\0\3\2\36\1\12\2\3\0\2\1\12\3\6\0\46\1"+
-    "\16\2\14\0\44\1\24\2\10\0\12\3\3\0\3\1\12\3\44\1"+
-    "\122\0\3\2\1\0\25\2\4\1\1\2\4\1\1\2\15\0\300\1"+
-    "\47\2\25\0\4\2\u0116\1\2\0\6\1\2\0\46\1\2\0\6\1"+
-    "\2\0\10\1\1\0\1\1\1\0\1\1\1\0\1\1\1\0\37\1"+
-    "\2\0\65\1\1\0\7\1\1\0\1\1\3\0\3\1\1\0\7\1"+
-    "\3\0\4\1\2\0\6\1\4\0\15\1\5\0\3\1\1\0\7\1"+
-    "\17\0\4\2\10\0\2\7\12\0\1\7\2\0\1\5\2\0\5\2"+
-    "\20\0\2\10\3\0\1\6\17\0\1\10\13\0\5\2\5\0\6\2"+
-    "\1\0\1\1\15\0\1\1\20\0\15\1\63\0\41\2\21\0\1\1"+
-    "\4\0\1\1\2\0\12\1\1\0\1\1\3\0\5\1\6\0\1\1"+
-    "\1\0\1\1\1\0\1\1\1\0\4\1\1\0\13\1\2\0\4\1"+
-    "\5\0\5\1\4\0\1\1\21\0\51\1\u032d\0\64\1\u0716\0\57\1"+
-    "\1\0\57\1\1\0\205\1\6\0\4\1\3\2\16\0\46\1\12\0"+
-    "\66\1\11\0\1\1\17\0\1\2\27\1\11\0\7\1\1\0\7\1"+
-    "\1\0\7\1\1\0\7\1\1\0\7\1\1\0\7\1\1\0\7\1"+
-    "\1\0\7\1\1\0\40\2\57\0\1\1\120\0\32\13\1\0\131\13"+
-    "\14\0\326\13\57\0\1\1\1\0\1\13\31\0\11\13\6\2\1\0"+
-    "\5\4\2\0\3\13\1\1\1\1\4\0\126\14\2\0\2\2\2\4"+
-    "\3\14\133\4\1\0\4\4\5\0\51\1\3\0\136\1\21\0\33\1"+
-    "\65\0\20\4\320\0\57\4\1\0\130\4\250\0\u19b6\13\112\0\u51cc\13"+
-    "\64\0\u048d\1\103\0\56\1\2\0\u010d\1\3\0\20\1\12\3\2\1"+
-    "\24\0\57\1\4\2\11\0\2\2\1\0\31\1\10\0\120\1\2\2"+
-    "\45\0\11\1\2\0\147\1\2\0\4\1\1\0\2\1\16\0\12\1"+
-    "\120\0\10\1\1\2\3\1\1\2\4\1\1\2\27\1\5\2\30\0"+
-    "\64\1\14\0\2\2\62\1\21\2\13\0\12\3\6\0\22\2\6\1"+
-    "\3\0\1\1\4\0\12\3\34\1\10\2\2\0\27\1\15\2\14\0"+
-    "\35\1\3\0\4\2\57\1\16\2\16\0\1\1\12\3\46\0\51\1"+
-    "\16\2\11\0\3\1\1\2\10\1\2\2\2\0\12\3\6\0\33\11"+
-    "\1\12\4\0\60\11\1\12\1\11\3\12\2\11\2\12\5\11\2\12"+
-    "\1\11\1\12\1\11\30\0\5\11\41\0\6\1\2\0\6\1\2\0"+
-    "\6\1\11\0\7\1\1\0\7\1\221\0\43\1\10\2\1\0\2\2"+
-    "\2\0\12\3\6\0\u2ba4\1\14\0\27\1\4\0\61\1\u2104\0\u012e\13"+
-    "\2\0\76\13\2\0\152\13\46\0\7\1\14\0\5\1\5\0\1\1"+
-    "\1\2\12\1\1\0\15\1\1\0\5\1\1\0\1\1\1\0\2\1"+
-    "\1\0\2\1\1\0\154\1\41\0\u016b\1\22\0\100\1\2\0\66\1"+
-    "\50\0\14\1\4\0\20\2\1\6\2\0\1\5\1\6\13\0\7\2"+
-    "\14\0\2\10\30\0\3\10\1\6\1\0\1\7\1\0\1\6\1\5"+
-    "\32\0\5\1\1\0\207\1\2\0\1\2\7\0\1\7\4\0\1\6"+
-    "\1\0\1\7\1\0\12\3\1\5\1\6\5\0\32\1\4\0\1\10"+
-    "\1\0\32\1\13\0\70\4\2\2\37\1\3\0\6\1\2\0\6\1"+
-    "\2\0\6\1\2\0\3\1\34\0\3\2\4\0";
+    "\1\101\10\77\2\101\2\77\1\101\23\77\1\102\1\76\1\71\1\102"+
+    "\1\62\1\60\1\65\2\63\2\102\1\64\1\44\1\11\1\70\1\45"+
+    "\1\50\1\55\1\51\1\54\1\46\1\47\1\56\1\53\1\52\1\57"+
+    "\1\74\1\77\1\75\1\77\1\67\1\66\1\12\1\36\1\13\1\14"+
+    "\1\15\1\20\1\21\1\37\1\22\1\40\1\43\1\23\1\24\1\25"+
+    "\1\17\1\27\1\26\1\16\1\30\1\31\1\32\1\41\1\33\1\34"+
+    "\1\42\1\35\1\72\1\100\1\73\1\103\1\61\1\103\1\12\1\36"+
+    "\1\13\1\14\1\15\1\20\1\21\1\37\1\22\1\40\1\43\1\23"+
+    "\1\24\1\25\1\17\1\27\1\26\1\16\1\30\1\31\1\32\1\41"+
+    "\1\33\1\34\1\42\1\35\3\103\1\60\1\104\52\0\1\1\2\0"+
+    "\1\2\7\0\1\1\1\0\1\5\2\0\1\1\5\0\27\1\1\0"+
+    "\37\1\1\0\u01ca\1\4\0\14\1\16\0\5\1\7\0\1\1\1\0"+
+    "\1\1\21\0\160\2\5\1\1\0\2\1\2\0\4\1\1\6\7\0"+
+    "\1\1\1\5\3\1\1\0\1\1\1\0\24\1\1\0\123\1\1\0"+
+    "\213\1\1\0\7\2\236\1\11\0\46\1\2\0\1\1\7\0\47\1"+
+    "\1\0\1\6\7\0\55\2\1\0\1\2\1\0\2\2\1\0\2\2"+
+    "\1\0\1\2\10\0\33\1\5\0\4\1\1\5\13\0\4\2\10\0"+
+    "\2\6\2\0\13\2\5\0\53\1\25\2\12\3\1\0\1\3\1\6"+
+    "\1\0\2\1\1\2\143\1\1\0\1\1\10\2\1\0\6\2\2\1"+
+    "\2\2\1\0\4\2\2\1\12\3\3\1\2\0\1\1\17\0\1\2"+
+    "\1\1\1\2\36\1\33\2\2\0\131\1\13\2\1\1\16\0\12\3"+
+    "\41\1\11\2\2\1\2\0\1\6\1\0\1\1\5\0\26\1\4\2"+
+    "\1\1\11\2\1\1\3\2\1\1\5\2\22\0\31\1\3\2\244\0"+
+    "\4\2\66\1\3\2\1\1\22\2\1\1\7\2\12\1\2\2\2\0"+
+    "\12\3\1\0\7\1\1\0\7\1\1\0\3\2\1\0\10\1\2\0"+
+    "\2\1\2\0\26\1\1\0\7\1\1\0\1\1\3\0\4\1\2\0"+
+    "\1\2\1\1\7\2\2\0\2\2\2\0\3\2\1\1\10\0\1\2"+
+    "\4\0\2\1\1\0\3\1\2\2\2\0\12\3\2\1\17\0\3\2"+
+    "\1\0\6\1\4\0\2\1\2\0\26\1\1\0\7\1\1\0\2\1"+
+    "\1\0\2\1\1\0\2\1\2\0\1\2\1\0\5\2\4\0\2\2"+
+    "\2\0\3\2\3\0\1\2\7\0\4\1\1\0\1\1\7\0\12\3"+
+    "\2\2\3\1\1\2\13\0\3\2\1\0\11\1\1\0\3\1\1\0"+
+    "\26\1\1\0\7\1\1\0\2\1\1\0\5\1\2\0\1\2\1\1"+
+    "\10\2\1\0\3\2\1\0\3\2\2\0\1\1\17\0\2\1\2\2"+
+    "\2\0\12\3\21\0\3\2\1\0\10\1\2\0\2\1\2\0\26\1"+
+    "\1\0\7\1\1\0\2\1\1\0\5\1\2\0\1\2\1\1\7\2"+
+    "\2\0\2\2\2\0\3\2\10\0\2\2\4\0\2\1\1\0\3\1"+
+    "\2\2\2\0\12\3\1\0\1\1\20\0\1\2\1\1\1\0\6\1"+
+    "\3\0\3\1\1\0\4\1\3\0\2\1\1\0\1\1\1\0\2\1"+
+    "\3\0\2\1\3\0\3\1\3\0\14\1\4\0\5\2\3\0\3\2"+
+    "\1\0\4\2\2\0\1\1\6\0\1\2\16\0\12\3\21\0\3\2"+
+    "\1\0\10\1\1\0\3\1\1\0\27\1\1\0\12\1\1\0\5\1"+
+    "\3\0\1\1\7\2\1\0\3\2\1\0\4\2\7\0\2\2\1\0"+
+    "\2\1\6\0\2\1\2\2\2\0\12\3\22\0\2\2\1\0\10\1"+
+    "\1\0\3\1\1\0\27\1\1\0\12\1\1\0\5\1\2\0\1\2"+
+    "\1\1\7\2\1\0\3\2\1\0\4\2\7\0\2\2\7\0\1\1"+
+    "\1\0\2\1\2\2\2\0\12\3\1\0\2\1\17\0\2\2\1\0"+
+    "\10\1\1\0\3\1\1\0\51\1\2\0\1\1\7\2\1\0\3\2"+
+    "\1\0\4\2\1\1\10\0\1\2\10\0\2\1\2\2\2\0\12\3"+
+    "\12\0\6\1\2\0\2\2\1\0\22\1\3\0\30\1\1\0\11\1"+
+    "\1\0\1\1\2\0\7\1\3\0\1\2\4\0\6\2\1\0\1\2"+
+    "\1\0\10\2\22\0\2\2\15\0\60\105\1\106\2\105\7\106\5\0"+
+    "\7\105\10\106\1\0\12\3\47\0\2\105\1\0\1\105\2\0\2\105"+
+    "\1\0\1\105\2\0\1\105\6\0\4\105\1\0\7\105\1\0\3\105"+
+    "\1\0\1\105\1\0\1\105\2\0\2\105\1\0\4\105\1\106\2\105"+
+    "\6\106\1\0\2\106\1\105\2\0\5\105\1\0\1\105\1\0\6\106"+
+    "\2\0\12\3\2\0\2\105\42\0\1\1\27\0\2\2\6\0\12\3"+
+    "\13\0\1\2\1\0\1\2\1\0\1\2\4\0\2\2\10\1\1\0"+
+    "\44\1\4\0\24\2\1\0\2\2\5\1\13\2\1\0\44\2\11\0"+
+    "\1\2\71\0\53\105\24\106\1\105\12\3\6\0\6\105\4\106\4\105"+
+    "\3\106\1\105\3\106\2\105\7\106\3\105\4\106\15\105\14\106\1\105"+
+    "\1\106\12\3\4\106\2\105\46\1\12\0\53\1\1\0\1\1\3\0"+
+    "\u0149\1\1\0\4\1\2\0\7\1\1\0\1\1\1\0\4\1\2\0"+
+    "\51\1\1\0\4\1\2\0\41\1\1\0\4\1\2\0\7\1\1\0"+
+    "\1\1\1\0\4\1\2\0\17\1\1\0\71\1\1\0\4\1\2\0"+
+    "\103\1\2\0\3\2\40\0\20\1\20\0\125\1\14\0\u026c\1\2\0"+
+    "\21\1\1\0\32\1\5\0\113\1\3\0\3\1\17\0\15\1\1\0"+
+    "\4\1\3\2\13\0\22\1\3\2\13\0\22\1\2\2\14\0\15\1"+
+    "\1\0\3\1\1\0\2\2\14\0\64\105\40\106\3\0\1\105\4\0"+
+    "\1\105\1\106\2\0\12\3\41\0\3\2\2\0\12\3\6\0\130\1"+
+    "\10\0\51\1\1\2\1\1\5\0\106\1\12\0\35\1\3\0\14\2"+
+    "\4\0\14\2\12\0\12\3\36\105\2\0\5\105\13\0\54\105\4\0"+
+    "\21\106\7\105\2\106\6\0\12\3\1\105\3\0\2\105\40\0\27\1"+
+    "\5\2\4\0\65\105\12\106\1\0\35\106\2\0\1\2\12\3\6\0"+
+    "\12\3\6\0\16\105\122\0\5\2\57\1\21\2\7\1\4\0\12\3"+
+    "\21\0\11\2\14\0\3\2\36\1\12\2\3\0\2\1\12\3\6\0"+
+    "\46\1\16\2\14\0\44\1\24\2\10\0\12\3\3\0\3\1\12\3"+
+    "\44\1\122\0\3\2\1\0\25\2\4\1\1\2\4\1\1\2\15\0"+
+    "\300\1\47\2\25\0\4\2\u0116\1\2\0\6\1\2\0\46\1\2\0"+
+    "\6\1\2\0\10\1\1\0\1\1\1\0\1\1\1\0\1\1\1\0"+
+    "\37\1\2\0\65\1\1\0\7\1\1\0\1\1\3\0\3\1\1\0"+
+    "\7\1\3\0\4\1\2\0\6\1\4\0\15\1\5\0\3\1\1\0"+
+    "\7\1\17\0\4\2\10\0\2\7\12\0\1\7\2\0\1\5\2\0"+
+    "\5\2\20\0\2\10\3\0\1\6\17\0\1\10\13\0\5\2\5\0"+
+    "\6\2\1\0\1\1\15\0\1\1\20\0\15\1\63\0\41\2\21\0"+
+    "\1\1\4\0\1\1\2\0\12\1\1\0\1\1\3\0\5\1\6\0"+
+    "\1\1\1\0\1\1\1\0\1\1\1\0\4\1\1\0\13\1\2\0"+
+    "\4\1\5\0\5\1\4\0\1\1\21\0\51\1\u032d\0\64\1\u0716\0"+
+    "\57\1\1\0\57\1\1\0\205\1\6\0\4\1\3\2\16\0\46\1"+
+    "\12\0\66\1\11\0\1\1\17\0\1\2\27\1\11\0\7\1\1\0"+
+    "\7\1\1\0\7\1\1\0\7\1\1\0\7\1\1\0\7\1\1\0"+
+    "\7\1\1\0\7\1\1\0\40\2\57\0\1\1\120\0\32\107\1\0"+
+    "\131\107\14\0\326\107\57\0\1\1\1\0\1\107\31\0\11\107\6\2"+
+    "\1\0\5\4\2\0\3\107\1\1\1\1\4\0\126\110\2\0\2\2"+
+    "\2\4\3\110\133\4\1\0\4\4\5\0\51\1\3\0\136\1\21\0"+
+    "\33\1\65\0\20\4\320\0\57\4\1\0\130\4\250\0\u19b6\107\112\0"+
+    "\u51cc\107\64\0\u048d\1\103\0\56\1\2\0\u010d\1\3\0\20\1\12\3"+
+    "\2\1\24\0\57\1\4\2\11\0\2\2\1\0\31\1\10\0\120\1"+
+    "\2\2\45\0\11\1\2\0\147\1\2\0\4\1\1\0\2\1\16\0"+
+    "\12\1\120\0\10\1\1\2\3\1\1\2\4\1\1\2\27\1\5\2"+
+    "\30\0\64\1\14\0\2\2\62\1\21\2\13\0\12\3\6\0\22\2"+
+    "\6\1\3\0\1\1\4\0\12\3\34\1\10\2\2\0\27\1\15\2"+
+    "\14\0\35\1\3\0\4\2\57\1\16\2\16\0\1\1\12\3\46\0"+
+    "\51\1\16\2\11\0\3\1\1\2\10\1\2\2\2\0\12\3\6\0"+
+    "\33\105\1\106\4\0\60\105\1\106\1\105\3\106\2\105\2\106\5\105"+
+    "\2\106\1\105\1\106\1\105\30\0\5\105\41\0\6\1\2\0\6\1"+
+    "\2\0\6\1\11\0\7\1\1\0\7\1\221\0\43\1\10\2\1\0"+
+    "\2\2\2\0\12\3\6\0\u2ba4\1\14\0\27\1\4\0\61\1\u2104\0"+
+    "\u012e\107\2\0\76\107\2\0\152\107\46\0\7\1\14\0\5\1\5\0"+
+    "\1\1\1\2\12\1\1\0\15\1\1\0\5\1\1\0\1\1\1\0"+
+    "\2\1\1\0\2\1\1\0\154\1\41\0\u016b\1\22\0\100\1\2\0"+
+    "\66\1\50\0\14\1\4\0\20\2\1\6\2\0\1\5\1\6\13\0"+
+    "\7\2\14\0\2\10\30\0\3\10\1\6\1\0\1\7\1\0\1\6"+
+    "\1\5\32\0\5\1\1\0\207\1\2\0\1\2\7\0\1\7\4\0"+
+    "\1\6\1\0\1\7\1\0\12\3\1\5\1\6\5\0\32\1\4\0"+
+    "\1\10\1\0\32\1\13\0\70\4\2\2\37\1\3\0\6\1\2\0"+
+    "\6\1\2\0\6\1\2\0\3\1\34\0\3\2\4\0";
 
   /** 
    * Translates characters to character classes
@@ -200,11 +211,25 @@
   private static final int [] ZZ_ACTION = zzUnpackAction();
 
   private static final String ZZ_ACTION_PACKED_0 =
-    "\1\0\1\1\1\2\1\3\1\2\1\1\1\4\1\5"+
-    "\1\6\1\2\1\0\1\2\1\0\1\3\2\0";
+    "\1\0\1\1\1\2\1\3\1\2\2\1\3\2\3\3"+
+    "\3\1\1\4\1\5\1\6\1\2\1\0\1\2\1\0"+
+    "\1\3\6\0\2\2\1\0\3\2\1\0\1\3\1\0"+
+    "\2\3\1\2\1\3\11\0\32\2\3\0\4\2\32\0"+
+    "\4\3\10\0\1\7\1\0\6\10\3\2\2\10\1\2"+
+    "\4\10\1\2\2\10\2\0\1\2\1\0\1\2\6\10"+
+    "\3\0\2\10\1\0\4\10\1\0\2\10\1\0\2\3"+
+    "\10\0\1\10\32\0\1\10\1\0\3\10\6\2\1\0"+
+    "\1\2\2\0\1\2\1\0\1\10\10\0\3\3\15\0"+
+    "\3\10\6\7\3\0\2\7\1\0\4\7\1\0\2\7"+
+    "\2\10\1\0\2\10\1\0\2\10\1\0\1\10\2\2"+
+    "\7\0\2\3\20\0\1\7\10\0\1\10\3\0\1\2"+
+    "\32\0\3\10\23\0\1\10\27\0\1\10\4\0\1\10"+
+    "\6\0\1\10\4\0\2\10\36\0\1\10\51\0\1\10"+
+    "\42\0\1\10\50\0\1\10\122\0\1\10\116\0\1\10"+
+    "\107\0\1\10\74\0\1\10\51\0\1\10\333\0";
 
   private static int [] zzUnpackAction() {
-    int [] result = new int[16];
+    int [] result = new int[1117];
     int offset = 0;
     offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
     return result;
@@ -229,11 +254,149 @@
   private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
 
   private static final String ZZ_ROWMAP_PACKED_0 =
-    "\0\0\0\15\0\32\0\47\0\64\0\101\0\116\0\15"+
-    "\0\15\0\133\0\150\0\165\0\202\0\217\0\101\0\234";
+    "\0\0\0\111\0\222\0\333\0\u0124\0\u016d\0\u01b6\0\u01ff"+
+    "\0\u0248\0\u0291\0\u02da\0\u0323\0\u036c\0\u03b5\0\u03fe\0\u0447"+
+    "\0\u0490\0\111\0\111\0\u04d9\0\u0522\0\u056b\0\u05b4\0\u05fd"+
+    "\0\u016d\0\u0646\0\u01b6\0\u068f\0\u06d8\0\u0721\0\u076a\0\u07b3"+
+    "\0\u07fc\0\u0845\0\u088e\0\u08d7\0\u0920\0\u0969\0\u09b2\0\u09fb"+
+    "\0\u0a44\0\u0a8d\0\u0ad6\0\u03b5\0\u0b1f\0\u0b68\0\u0447\0\u0bb1"+
+    "\0\u0bfa\0\u0c43\0\u0c8c\0\u0cd5\0\u0d1e\0\u0d67\0\u0db0\0\u0df9"+
+    "\0\u0e42\0\u0e8b\0\u0ed4\0\u0f1d\0\u0f66\0\u0faf\0\u0ff8\0\u1041"+
+    "\0\u108a\0\u10d3\0\u111c\0\u1165\0\u11ae\0\u11f7\0\u1240\0\u1289"+
+    "\0\u12d2\0\u131b\0\u1364\0\u13ad\0\u13f6\0\u143f\0\u1488\0\u14d1"+
+    "\0\u151a\0\u1563\0\u15ac\0\u15f5\0\u163e\0\u1687\0\u16d0\0\u1719"+
+    "\0\u1762\0\u17ab\0\u17f4\0\u183d\0\u1886\0\u18cf\0\u1918\0\u1961"+
+    "\0\u19aa\0\u19f3\0\u1a3c\0\u1a85\0\u1ace\0\u1b17\0\u1b60\0\u1ba9"+
+    "\0\u1bf2\0\u1c3b\0\u1c84\0\u1ccd\0\u1d16\0\u1d5f\0\u1da8\0\u1df1"+
+    "\0\u1e3a\0\u1e83\0\u1ecc\0\u1f15\0\u1f5e\0\u1fa7\0\u1ff0\0\u2039"+
+    "\0\u2082\0\u20cb\0\u2114\0\111\0\u215d\0\u21a6\0\u21ef\0\u2238"+
+    "\0\u2281\0\u22ca\0\u2313\0\u235c\0\u23a5\0\u23ee\0\u2437\0\u2480"+
+    "\0\u24c9\0\u2512\0\u255b\0\u25a4\0\u25ed\0\u2636\0\u267f\0\u26c8"+
+    "\0\u2711\0\u275a\0\u27a3\0\u27ec\0\u2835\0\u287e\0\u28c7\0\u2910"+
+    "\0\u2959\0\u29a2\0\u29eb\0\u2a34\0\u2a7d\0\u2ac6\0\u2b0f\0\u2b58"+
+    "\0\u2ba1\0\u2bea\0\u2c33\0\u2c7c\0\u2cc5\0\u2d0e\0\u2d57\0\u2da0"+
+    "\0\u2de9\0\u2e32\0\u2e7b\0\u2ec4\0\u2f0d\0\u2f56\0\u2f9f\0\u2fe8"+
+    "\0\u3031\0\u307a\0\u30c3\0\u310c\0\u3155\0\u319e\0\u31e7\0\u3230"+
+    "\0\u3279\0\u32c2\0\u330b\0\u3354\0\u339d\0\u33e6\0\u342f\0\u3478"+
+    "\0\u34c1\0\u350a\0\u3553\0\u359c\0\u35e5\0\u362e\0\u3677\0\u36c0"+
+    "\0\u3709\0\u3752\0\u379b\0\u37e4\0\u382d\0\u3876\0\u38bf\0\u3908"+
+    "\0\u3951\0\u399a\0\u39e3\0\u3a2c\0\u3a75\0\u3abe\0\u3b07\0\u3b50"+
+    "\0\u3b99\0\u3be2\0\u3c2b\0\u3c74\0\u3cbd\0\u3d06\0\u3d4f\0\u3d98"+
+    "\0\u3de1\0\u3e2a\0\u3e73\0\u3ebc\0\u3f05\0\u3f4e\0\u3f97\0\u3fe0"+
+    "\0\u4029\0\u4072\0\u40bb\0\u4104\0\u414d\0\u4196\0\u41df\0\u4228"+
+    "\0\u4271\0\u42ba\0\u4303\0\u434c\0\u4395\0\u43de\0\u4427\0\u4470"+
+    "\0\u44b9\0\u4502\0\u454b\0\u4594\0\u45dd\0\u4626\0\u466f\0\u46b8"+
+    "\0\u4701\0\u474a\0\u4793\0\u47dc\0\u4825\0\u486e\0\u48b7\0\u4900"+
+    "\0\u4949\0\u4992\0\u49db\0\u4a24\0\u4a6d\0\u4ab6\0\u4aff\0\u4b48"+
+    "\0\u4b91\0\u4bda\0\u4c23\0\u4c6c\0\u4cb5\0\u4cfe\0\u4d47\0\u4d90"+
+    "\0\u4dd9\0\u4e22\0\u4e6b\0\u4eb4\0\u4efd\0\u4f46\0\u4f8f\0\u4fd8"+
+    "\0\u5021\0\u506a\0\u50b3\0\u50fc\0\u5145\0\u518e\0\u51d7\0\u5220"+
+    "\0\u5269\0\u52b2\0\u52fb\0\u5344\0\u538d\0\u53d6\0\u541f\0\u5468"+
+    "\0\u54b1\0\u54fa\0\u5543\0\u20cb\0\u558c\0\u55d5\0\u561e\0\u5667"+
+    "\0\u56b0\0\u56f9\0\u5742\0\u578b\0\u57d4\0\u581d\0\u5866\0\u58af"+
+    "\0\u58f8\0\u5941\0\u598a\0\u59d3\0\u5a1c\0\u5a65\0\u5aae\0\u5af7"+
+    "\0\u5b40\0\u5b89\0\u5bd2\0\u5c1b\0\u5c64\0\u5cad\0\u5cf6\0\u5d3f"+
+    "\0\u5d88\0\u5dd1\0\u5e1a\0\u5e63\0\u5eac\0\u5ef5\0\u5f3e\0\u5f87"+
+    "\0\u5fd0\0\u6019\0\u6062\0\u60ab\0\u60f4\0\u613d\0\u6186\0\u61cf"+
+    "\0\u6218\0\u6261\0\u62aa\0\u62f3\0\u633c\0\u6385\0\u63ce\0\u6417"+
+    "\0\u6460\0\u64a9\0\u64f2\0\u653b\0\u6584\0\u65cd\0\u6616\0\u665f"+
+    "\0\u66a8\0\u66f1\0\u673a\0\u6783\0\u67cc\0\u6815\0\u685e\0\u68a7"+
+    "\0\u68f0\0\u6939\0\u6982\0\u69cb\0\u6a14\0\u6a5d\0\u6aa6\0\u6aef"+
+    "\0\u6b38\0\u6b81\0\u6bca\0\u6c13\0\u6c5c\0\u6ca5\0\u6cee\0\u6d37"+
+    "\0\u6d80\0\u6dc9\0\u6e12\0\u6e5b\0\u6ea4\0\u6eed\0\u6f36\0\u6f7f"+
+    "\0\u6fc8\0\u7011\0\u705a\0\u70a3\0\u70ec\0\u7135\0\u717e\0\u71c7"+
+    "\0\u7210\0\u03fe\0\u7259\0\u72a2\0\u72eb\0\u7334\0\u737d\0\u73c6"+
+    "\0\u740f\0\u7458\0\u74a1\0\u74ea\0\u7533\0\u757c\0\u75c5\0\u760e"+
+    "\0\u7657\0\u76a0\0\u76e9\0\u7732\0\u777b\0\u77c4\0\u780d\0\u7856"+
+    "\0\u789f\0\u78e8\0\u7931\0\u797a\0\u79c3\0\u7a0c\0\u7a55\0\u7a9e"+
+    "\0\u7ae7\0\u7b30\0\u7b79\0\u7bc2\0\u7c0b\0\u7c54\0\u7c9d\0\u7ce6"+
+    "\0\u7d2f\0\u7d78\0\u7dc1\0\u7e0a\0\u7e53\0\u7e9c\0\u7ee5\0\u7f2e"+
+    "\0\u7f77\0\u7fc0\0\u8009\0\u8052\0\u809b\0\u80e4\0\u812d\0\u8176"+
+    "\0\u81bf\0\u8208\0\u8251\0\u829a\0\u82e3\0\u832c\0\u8375\0\u83be"+
+    "\0\u8407\0\u8450\0\u8499\0\u84e2\0\u852b\0\u8574\0\u85bd\0\u8606"+
+    "\0\u864f\0\u8698\0\u86e1\0\u872a\0\u8773\0\u87bc\0\u8805\0\u884e"+
+    "\0\u8897\0\u88e0\0\u8929\0\u8972\0\u89bb\0\u8a04\0\u8a4d\0\u8a96"+
+    "\0\u8adf\0\u8b28\0\u8b71\0\u8bba\0\u8c03\0\u8c4c\0\u8c95\0\u8cde"+
+    "\0\u8d27\0\u8d70\0\u8db9\0\u8e02\0\u8e4b\0\u8e94\0\u8edd\0\u8f26"+
+    "\0\u8f6f\0\u8fb8\0\u9001\0\u904a\0\u9093\0\u90dc\0\u9125\0\u916e"+
+    "\0\u91b7\0\u9200\0\u9249\0\u9292\0\u92db\0\u9324\0\u936d\0\u93b6"+
+    "\0\u93ff\0\u9448\0\u9491\0\u94da\0\u9523\0\u956c\0\u95b5\0\u95fe"+
+    "\0\u9647\0\u9690\0\u96d9\0\u9722\0\u976b\0\u97b4\0\u97fd\0\u9846"+
+    "\0\u988f\0\u98d8\0\u9921\0\u996a\0\u99b3\0\u99fc\0\u9a45\0\u9a8e"+
+    "\0\u9ad7\0\u9b20\0\u9b69\0\u9bb2\0\u9bfb\0\u9c44\0\u9c8d\0\u9cd6"+
+    "\0\u9d1f\0\u9d68\0\u9db1\0\u9dfa\0\u9e43\0\u9e8c\0\u9ed5\0\u9f1e"+
+    "\0\u9f67\0\u9fb0\0\u9ff9\0\ua042\0\ua08b\0\ua0d4\0\ua11d\0\ua166"+
+    "\0\ua1af\0\ua1f8\0\ua241\0\ua28a\0\ua2d3\0\ua31c\0\ua365\0\ua3ae"+
+    "\0\ua3f7\0\ua440\0\ua489\0\ua4d2\0\ua51b\0\ua564\0\ua5ad\0\ua5f6"+
+    "\0\ua63f\0\ua688\0\ua6d1\0\ua71a\0\ua763\0\ua7ac\0\ua7f5\0\ua83e"+
+    "\0\ua887\0\ua8d0\0\ua919\0\ua962\0\ua9ab\0\ua9f4\0\uaa3d\0\uaa86"+
+    "\0\uaacf\0\uab18\0\uab61\0\uabaa\0\uabf3\0\uac3c\0\uac85\0\uacce"+
+    "\0\uad17\0\uad60\0\uada9\0\uadf2\0\uae3b\0\uae84\0\uaecd\0\uaf16"+
+    "\0\uaf5f\0\uafa8\0\uaff1\0\ub03a\0\ub083\0\ub0cc\0\ub115\0\ub15e"+
+    "\0\ub1a7\0\ub1f0\0\ub239\0\ub282\0\ub2cb\0\ub314\0\ub35d\0\ub3a6"+
+    "\0\ub3ef\0\ub438\0\ub481\0\ub4ca\0\ub513\0\ub55c\0\ub5a5\0\ub5ee"+
+    "\0\ub637\0\ub680\0\ub6c9\0\ub712\0\ub75b\0\ub7a4\0\ub7ed\0\ub836"+
+    "\0\ub87f\0\ub8c8\0\ub911\0\ub95a\0\ub9a3\0\ub9ec\0\uba35\0\uba7e"+
+    "\0\ubac7\0\ubb10\0\ubb59\0\ubba2\0\ubbeb\0\ubc34\0\ubc7d\0\ubcc6"+
+    "\0\ubd0f\0\ubd58\0\ubda1\0\ubdea\0\ube33\0\ube7c\0\ubec5\0\ubf0e"+
+    "\0\ubf57\0\ubfa0\0\ubfe9\0\uc032\0\uc07b\0\uc0c4\0\uc10d\0\uc156"+
+    "\0\uc19f\0\uc1e8\0\uc231\0\uc27a\0\uc2c3\0\uc30c\0\uc355\0\uc39e"+
+    "\0\uc3e7\0\uc430\0\uc479\0\uc4c2\0\uc50b\0\uc554\0\uc59d\0\uc5e6"+
+    "\0\uc62f\0\uc678\0\uc6c1\0\uc70a\0\uc753\0\uc79c\0\uc7e5\0\uc82e"+
+    "\0\uc877\0\uc8c0\0\uc909\0\uc952\0\uc99b\0\uc9e4\0\uca2d\0\uca76"+
+    "\0\ucabf\0\ucb08\0\ucb51\0\ucb9a\0\ucbe3\0\ucc2c\0\ucc75\0\uccbe"+
+    "\0\ucd07\0\ucd50\0\ucd99\0\ucde2\0\uce2b\0\uce74\0\ucebd\0\ucf06"+
+    "\0\ucf4f\0\ucf98\0\ucfe1\0\ud02a\0\ud073\0\ud0bc\0\ud105\0\ud14e"+
+    "\0\ud197\0\ud1e0\0\ud229\0\ud272\0\ud2bb\0\ud304\0\ud34d\0\ud396"+
+    "\0\ud3df\0\ud428\0\ud471\0\ud4ba\0\ud503\0\ud54c\0\ud595\0\ud5de"+
+    "\0\ud627\0\ud670\0\ud6b9\0\ud702\0\ud74b\0\ud794\0\ud7dd\0\ud826"+
+    "\0\ud86f\0\ud8b8\0\ud901\0\ud94a\0\ud993\0\ud9dc\0\uda25\0\uda6e"+
+    "\0\udab7\0\udb00\0\udb49\0\udb92\0\udbdb\0\udc24\0\udc6d\0\udcb6"+
+    "\0\udcff\0\udd48\0\udd91\0\uddda\0\ude23\0\ude6c\0\udeb5\0\udefe"+
+    "\0\udf47\0\udf90\0\udfd9\0\ue022\0\ue06b\0\ue0b4\0\ue0fd\0\ue146"+
+    "\0\ue18f\0\ue1d8\0\ue221\0\ue26a\0\ue2b3\0\ue2fc\0\ue345\0\ue38e"+
+    "\0\ue3d7\0\ue420\0\ue469\0\ue4b2\0\ue4fb\0\ue544\0\ue58d\0\ue5d6"+
+    "\0\ue61f\0\ue668\0\ue6b1\0\ue6fa\0\ue743\0\ue78c\0\ue7d5\0\ue81e"+
+    "\0\ue867\0\ue8b0\0\ue8f9\0\ue942\0\ue98b\0\ue9d4\0\uea1d\0\uea66"+
+    "\0\ueaaf\0\ueaf8\0\ueb41\0\ueb8a\0\uebd3\0\uec1c\0\uec65\0\uecae"+
+    "\0\uecf7\0\ued40\0\ued89\0\uedd2\0\uee1b\0\uee64\0\ueead\0\ueef6"+
+    "\0\uef3f\0\uef88\0\uefd1\0\uf01a\0\uf063\0\uf0ac\0\uf0f5\0\uf13e"+
+    "\0\uf187\0\uf1d0\0\uf219\0\uf262\0\uf2ab\0\uf2f4\0\uf33d\0\uf386"+
+    "\0\uf3cf\0\uf418\0\uf461\0\uf4aa\0\uf4f3\0\uf53c\0\uf585\0\uf5ce"+
+    "\0\uf617\0\uf660\0\uf6a9\0\uf6f2\0\uf73b\0\uf784\0\uf7cd\0\uf816"+
+    "\0\uf85f\0\uf8a8\0\uf8f1\0\uf93a\0\uf983\0\uf9cc\0\ufa15\0\ufa5e"+
+    "\0\ufaa7\0\ufaf0\0\ufb39\0\ufb82\0\ufbcb\0\ufc14\0\ufc5d\0\ufca6"+
+    "\0\ufcef\0\ufd38\0\ufd81\0\ufdca\0\ufe13\0\ufe5c\0\ufea5\0\ufeee"+
+    "\0\uff37\0\uff80\0\uffc9\1\22\1\133\1\244\1\355\1\u0136"+
+    "\1\u017f\1\u01c8\1\u0211\1\u025a\1\u02a3\1\u02ec\1\u0335\1\u037e"+
+    "\1\u03c7\1\u0410\1\u0459\1\u04a2\1\u04eb\1\u0534\1\u057d\1\u05c6"+
+    "\1\u060f\1\u0658\1\u06a1\1\u06ea\1\u0733\1\u077c\1\u07c5\1\u080e"+
+    "\1\u0857\1\u08a0\1\u08e9\1\u0932\1\u097b\1\u09c4\1\u0a0d\1\u0a56"+
+    "\1\u0a9f\1\u0ae8\1\u0b31\1\u0b7a\1\u0bc3\1\u0c0c\1\u0c55\1\u0c9e"+
+    "\1\u0ce7\1\u0d30\1\u0d79\1\u0dc2\1\u0e0b\1\u0e54\1\u0e9d\1\u0ee6"+
+    "\1\u0f2f\1\u0f78\1\u0fc1\1\u100a\1\u1053\1\u109c\1\u10e5\1\u112e"+
+    "\1\u1177\1\u11c0\1\u1209\1\u1252\1\u129b\1\u12e4\1\u132d\1\u1376"+
+    "\1\u13bf\1\u1408\1\u1451\1\u149a\1\u14e3\1\u152c\1\u1575\1\u15be"+
+    "\1\u1607\1\u1650\1\u1699\1\u16e2\1\u172b\1\u1774\1\u17bd\1\u1806"+
+    "\1\u184f\1\u1898\1\u18e1\1\u192a\1\u1973\1\u19bc\1\u1a05\1\u1a4e"+
+    "\1\u1a97\1\u1ae0\1\u1b29\1\u1b72\1\u1bbb\1\u1c04\1\u1c4d\1\u1c96"+
+    "\1\u1cdf\1\u1d28\1\u1d71\1\u1dba\1\u1e03\1\u1e4c\1\u1e95\1\u1ede"+
+    "\1\u1f27\1\u1f70\1\u1fb9\1\u2002\1\u204b\1\u2094\1\u20dd\1\u2126"+
+    "\1\u216f\1\u21b8\1\u2201\1\u224a\1\u2293\1\u22dc\1\u2325\1\u236e"+
+    "\1\u23b7\1\u2400\1\u2449\1\u2492\1\u24db\1\u2524\1\u256d\1\u25b6"+
+    "\1\u25ff\1\u2648\1\u2691\1\u26da\1\u2723\1\u276c\1\u27b5\1\u27fe"+
+    "\1\u2847\1\u2890\1\u28d9\1\u2922\1\u296b\1\u29b4\1\u29fd\1\u2a46"+
+    "\1\u2a8f\1\u2ad8\1\u2b21\1\u2b6a\1\u2bb3\1\u2bfc\1\u2c45\1\u2c8e"+
+    "\1\u2cd7\1\u2d20\1\u2d69\1\u2db2\1\u2dfb\1\u2e44\1\u2e8d\1\u2ed6"+
+    "\1\u2f1f\1\u2f68\1\u2fb1\1\u2ffa\1\u3043\1\u308c\1\u30d5\1\u311e"+
+    "\1\u3167\1\u31b0\1\u31f9\1\u3242\1\u328b\1\u32d4\1\u331d\1\u3366"+
+    "\1\u33af\1\u33f8\1\u3441\1\u348a\1\u34d3\1\u351c\1\u3565\1\u35ae"+
+    "\1\u35f7\1\u3640\1\u3689\1\u36d2\1\u371b\1\u3764\1\u37ad\1\u37f6"+
+    "\1\u383f\1\u3888\1\u38d1\1\u391a\1\u3963\1\u39ac\1\u39f5\1\u3a3e"+
+    "\1\u3a87\1\u3ad0\1\u3b19\1\u3b62\1\u3bab";
 
   private static int [] zzUnpackRowMap() {
-    int [] result = new int[16];
+    int [] result = new int[1117];
     int offset = 0;
     offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
     return result;
@@ -256,21 +419,1848 @@
   private static final int [] ZZ_TRANS = zzUnpackTrans();
 
   private static final String ZZ_TRANS_PACKED_0 =
-    "\1\2\1\3\1\2\1\4\1\5\3\2\1\6\2\7"+
-    "\1\10\1\11\16\0\2\3\1\12\1\0\1\13\1\0"+
-    "\1\13\1\14\1\0\1\3\3\0\1\3\2\4\2\0"+
-    "\2\15\1\16\1\0\1\4\4\0\1\5\1\0\1\5"+
-    "\3\0\1\14\1\0\1\5\3\0\1\3\1\17\1\4"+
-    "\1\5\3\0\1\17\1\0\1\17\13\0\2\7\3\0"+
-    "\1\3\2\12\2\0\2\20\1\14\1\0\1\12\3\0"+
-    "\1\3\1\13\7\0\1\13\3\0\1\3\1\14\1\12"+
-    "\1\5\3\0\1\14\1\0\1\14\4\0\1\15\1\4"+
-    "\6\0\1\15\3\0\1\3\1\16\1\4\1\5\3\0"+
-    "\1\16\1\0\1\16\4\0\1\20\1\12\6\0\1\20"+
-    "\2\0";
+    "\1\2\1\3\1\2\1\4\1\5\3\2\1\6\1\7"+
+    "\6\10\1\11\16\10\1\12\4\10\1\7\1\13\2\14"+
+    "\1\13\4\14\1\15\1\14\1\2\1\7\1\16\1\7"+
+    "\1\2\2\7\1\2\3\7\1\17\2\2\1\7\1\20"+
+    "\3\2\2\7\1\2\2\21\1\22\1\23\112\0\2\3"+
+    "\1\24\1\0\1\25\1\0\1\25\1\26\1\25\32\3"+
+    "\1\0\12\24\1\25\1\0\1\26\3\0\1\25\20\0"+
+    "\1\3\3\0\1\3\2\4\2\0\2\27\1\30\1\27"+
+    "\32\3\1\0\12\4\2\0\1\30\2\0\2\27\6\0"+
+    "\1\27\11\0\1\4\4\0\1\5\1\0\1\5\3\0"+
+    "\1\26\50\0\1\26\24\0\1\5\3\0\1\3\1\31"+
+    "\1\4\1\5\3\0\1\31\1\0\32\3\1\0\12\4"+
+    "\2\0\1\31\24\0\1\31\13\0\1\32\45\33\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\6\0\2\3\1\24\1\0\1\25\1\0\1\25"+
+    "\1\26\1\35\32\10\1\36\12\37\1\25\1\33\1\40"+
+    "\1\33\1\0\1\33\1\41\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\2\0\1\3\3\0\2\3\1\24\1\0"+
+    "\1\25\1\0\1\25\1\26\1\35\10\10\1\42\6\10"+
+    "\1\43\12\10\1\36\12\37\1\25\1\33\1\40\1\33"+
+    "\1\0\1\33\1\41\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\2\0\1\3\3\0\2\3\1\24\1\0\1\25"+
+    "\1\0\1\25\1\26\1\35\17\10\1\44\12\10\1\36"+
+    "\12\37\1\25\1\33\1\40\1\33\1\0\1\33\1\41"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\2\0\1\3"+
+    "\3\0\1\3\2\4\2\0\2\27\1\30\1\45\32\10"+
+    "\1\36\12\14\1\0\1\33\1\46\1\33\1\0\2\47"+
+    "\1\34\3\33\2\0\1\27\1\33\4\0\2\33\2\0"+
+    "\1\4\3\0\1\3\2\4\2\0\2\27\1\30\1\45"+
+    "\32\10\1\36\12\50\1\0\1\33\1\46\1\33\1\0"+
+    "\2\47\1\34\3\33\2\0\1\27\1\33\4\0\2\33"+
+    "\2\0\1\4\3\0\1\3\2\4\2\0\2\27\1\30"+
+    "\1\45\32\10\1\36\1\14\1\51\1\50\2\14\2\50"+
+    "\2\14\1\50\1\0\1\33\1\46\1\33\1\0\2\47"+
+    "\1\34\3\33\2\0\1\27\1\33\4\0\2\33\2\0"+
+    "\1\4\3\0\1\3\1\31\1\4\1\5\3\0\1\31"+
+    "\1\32\32\52\1\33\12\53\1\0\1\33\1\54\1\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\2\0\1\31\14\0\4\55\2\0\1\55\15\0\1\55"+
+    "\6\0\12\55\1\56\42\0\65\57\1\60\1\57\1\61"+
+    "\1\0\2\57\112\0\2\21\3\0\1\3\2\24\2\0"+
+    "\2\62\1\26\1\62\32\3\1\0\12\24\2\0\1\26"+
+    "\2\0\2\62\6\0\1\62\11\0\1\24\3\0\1\3"+
+    "\1\25\7\0\32\3\42\0\1\25\3\0\1\3\1\26"+
+    "\1\24\1\5\3\0\1\26\1\0\32\3\1\0\12\24"+
+    "\2\0\1\26\24\0\1\26\4\0\1\27\1\4\41\0"+
+    "\12\4\27\0\1\27\3\0\1\3\1\30\1\4\1\5"+
+    "\3\0\1\30\1\0\32\3\1\0\12\4\2\0\1\30"+
+    "\24\0\1\30\13\0\1\32\45\33\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\1\57\3\0\2\33"+
+    "\17\0\32\63\1\0\12\63\13\0\1\64\17\0\1\3"+
+    "\1\25\6\0\1\32\1\65\1\66\1\67\1\70\1\71"+
+    "\1\72\1\73\1\74\1\75\1\76\1\77\1\100\1\101"+
+    "\1\102\1\103\1\104\1\105\1\106\1\107\1\110\1\111"+
+    "\1\112\1\113\1\114\1\115\1\116\1\33\12\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\1\57"+
+    "\3\0\2\33\2\0\1\25\13\0\1\32\32\117\1\36"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\6\0\1\3\2\24\2\0\2\62"+
+    "\1\26\1\120\32\10\1\36\12\37\1\0\1\33\1\40"+
+    "\1\33\1\0\2\121\1\34\3\33\2\0\1\62\1\33"+
+    "\4\0\2\33\2\0\1\24\3\0\1\3\1\26\1\24"+
+    "\1\5\3\0\1\26\1\32\32\52\1\33\12\122\1\0"+
+    "\1\33\1\40\1\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\2\0\1\26\3\0\1\3\1\25"+
+    "\6\0\1\32\32\52\13\33\1\0\3\33\1\0\2\33"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\2\0\1\25"+
+    "\3\0\2\3\1\24\1\0\1\25\1\0\1\25\1\26"+
+    "\1\35\11\10\1\123\20\10\1\36\12\37\1\25\1\33"+
+    "\1\40\1\33\1\0\1\33\1\41\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\2\0\1\3\3\0\2\3\1\24"+
+    "\1\0\1\25\1\0\1\25\1\26\1\35\15\10\1\124"+
+    "\14\10\1\36\12\37\1\25\1\33\1\40\1\33\1\0"+
+    "\1\33\1\41\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\2\0\1\3\3\0\2\3\1\24\1\0\1\25\1\0"+
+    "\1\25\1\26\1\35\17\10\1\125\12\10\1\36\12\37"+
+    "\1\25\1\33\1\40\1\33\1\0\1\33\1\41\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\2\0\1\3\4\0"+
+    "\1\27\1\4\5\0\1\32\1\126\1\127\1\130\1\131"+
+    "\1\132\1\133\1\134\1\135\1\136\1\137\1\140\1\141"+
+    "\1\142\1\143\1\144\1\145\1\146\1\147\1\150\1\151"+
+    "\1\152\1\153\1\154\1\155\1\156\1\157\1\33\1\160"+
+    "\2\161\1\160\4\161\1\162\1\161\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\1\57\3\0\2\33"+
+    "\2\0\1\27\3\0\1\3\1\30\1\4\1\5\3\0"+
+    "\1\30\1\32\32\52\1\33\12\53\1\0\1\33\1\46"+
+    "\1\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\2\0\1\30\4\0\1\27\1\4\5\0\1\32"+
+    "\33\33\12\53\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\2\0\1\27\3\0\1\3"+
+    "\2\4\2\0\2\27\1\30\1\45\32\10\1\36\12\163"+
+    "\1\0\1\33\1\46\1\33\1\0\2\47\1\34\3\33"+
+    "\2\0\1\27\1\33\4\0\2\33\2\0\1\4\3\0"+
+    "\1\3\2\4\2\0\2\27\1\30\1\45\32\10\1\36"+
+    "\2\50\1\163\2\50\2\163\2\50\1\163\1\0\1\33"+
+    "\1\46\1\33\1\0\2\47\1\34\3\33\2\0\1\27"+
+    "\1\33\4\0\2\33\2\0\1\4\3\0\2\3\1\24"+
+    "\1\0\1\25\1\0\1\25\1\26\1\164\32\52\1\33"+
+    "\12\122\1\25\1\33\1\40\1\33\1\0\1\33\1\41"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\2\0\1\3"+
+    "\3\0\1\3\2\4\2\0\2\27\1\30\1\165\32\52"+
+    "\1\33\12\53\1\0\1\33\1\46\1\33\1\0\2\47"+
+    "\1\34\3\33\2\0\1\27\1\33\4\0\2\33\2\0"+
+    "\1\4\14\0\4\166\2\0\1\166\15\0\1\166\6\0"+
+    "\12\166\1\167\110\0\1\170\42\0\1\171\54\0\1\34"+
+    "\33\0\74\57\6\0\1\62\1\24\41\0\12\24\27\0"+
+    "\1\62\13\0\1\172\32\63\1\173\12\63\43\0\61\64"+
+    "\1\0\1\174\4\64\1\175\1\0\3\64\5\0\2\3"+
+    "\1\24\1\0\1\25\1\0\1\25\1\26\1\35\1\10"+
+    "\2\176\1\177\1\200\10\176\1\10\1\201\5\176\6\10"+
+    "\1\36\12\37\1\25\1\33\1\40\1\33\1\0\1\33"+
+    "\1\41\1\34\3\33\3\0\1\33\4\0\2\33\2\0"+
+    "\1\3\3\0\2\3\1\24\1\0\1\25\1\0\1\25"+
+    "\1\26\1\35\1\202\2\176\1\10\1\176\1\203\6\176"+
+    "\4\10\1\176\1\10\2\176\1\10\1\176\1\10\3\176"+
+    "\1\36\12\37\1\25\1\33\1\40\1\33\1\0\1\33"+
+    "\1\41\1\34\3\33\3\0\1\33\4\0\2\33\2\0"+
+    "\1\3\3\0\2\3\1\24\1\0\1\25\1\0\1\25"+
+    "\1\26\1\35\3\10\1\176\1\10\1\176\4\10\1\176"+
+    "\10\10\1\176\2\10\1\176\2\10\1\176\1\36\12\37"+
+    "\1\25\1\33\1\40\1\33\1\0\1\33\1\41\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\2\0\1\3\3\0"+
+    "\2\3\1\24\1\0\1\25\1\0\1\25\1\26\1\35"+
+    "\1\10\1\176\1\204\2\176\2\10\1\176\6\10\3\176"+
+    "\11\10\1\36\12\37\1\25\1\33\1\40\1\33\1\0"+
+    "\1\33\1\41\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\2\0\1\3\3\0\2\3\1\24\1\0\1\25\1\0"+
+    "\1\25\1\26\1\35\3\10\1\176\1\10\1\176\10\10"+
+    "\1\176\1\10\2\176\10\10\1\36\12\37\1\25\1\33"+
+    "\1\40\1\33\1\0\1\33\1\41\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\2\0\1\3\3\0\2\3\1\24"+
+    "\1\0\1\25\1\0\1\25\1\26\1\35\4\10\1\205"+
+    "\5\10\1\176\17\10\1\36\12\37\1\25\1\33\1\40"+
+    "\1\33\1\0\1\33\1\41\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\2\0\1\3\3\0\2\3\1\24\1\0"+
+    "\1\25\1\0\1\25\1\26\1\35\4\10\2\176\2\10"+
+    "\1\176\1\10\1\176\13\10\1\176\2\10\1\176\1\36"+
+    "\12\37\1\25\1\33\1\40\1\33\1\0\1\33\1\41"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\2\0\1\3"+
+    "\3\0\2\3\1\24\1\0\1\25\1\0\1\25\1\26"+
+    "\1\35\1\176\1\10\3\176\1\206\14\176\2\10\2\176"+
+    "\2\10\1\176\1\10\1\36\12\37\1\25\1\33\1\40"+
+    "\1\33\1\0\1\33\1\41\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\2\0\1\3\3\0\2\3\1\24\1\0"+
+    "\1\25\1\0\1\25\1\26\1\35\2\10\4\176\3\10"+
+    "\2\176\1\207\1\176\1\10\2\176\12\10\1\36\12\37"+
+    "\1\25\1\33\1\40\1\33\1\0\1\33\1\41\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\2\0\1\3\3\0"+
+    "\2\3\1\24\1\0\1\25\1\0\1\25\1\26\1\35"+
+    "\2\176\2\10\1\176\3\10\1\176\5\10\3\176\3\10"+
+    "\1\176\2\10\3\176\1\36\12\37\1\25\1\33\1\40"+
+    "\1\33\1\0\1\33\1\41\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\2\0\1\3\3\0\2\3\1\24\1\0"+
+    "\1\25\1\0\1\25\1\26\1\35\5\176\1\210\1\10"+
+    "\1\176\1\211\7\176\1\212\3\176\1\10\1\176\1\10"+
+    "\3\176\1\36\12\37\1\25\1\33\1\40\1\33\1\0"+
+    "\1\33\1\41\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\2\0\1\3\3\0\2\3\1\24\1\0\1\25\1\0"+
+    "\1\25\1\26\1\35\1\213\1\176\1\10\1\202\6\176"+
+    "\3\10\1\176\2\10\1\176\2\10\1\176\6\10\1\36"+
+    "\12\37\1\25\1\33\1\40\1\33\1\0\1\33\1\41"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\2\0\1\3"+
+    "\3\0\2\3\1\24\1\0\1\25\1\0\1\25\1\26"+
+    "\1\35\1\176\31\10\1\36\12\37\1\25\1\33\1\40"+
+    "\1\33\1\0\1\33\1\41\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\2\0\1\3\3\0\2\3\1\24\1\0"+
+    "\1\25\1\0\1\25\1\26\1\35\1\176\2\10\1\176"+
+    "\1\214\1\10\2\176\1\10\3\176\2\10\2\176\1\10"+
+    "\1\176\3\10\1\176\2\10\2\176\1\36\12\37\1\25"+
+    "\1\33\1\40\1\33\1\0\1\33\1\41\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\2\0\1\3\3\0\2\3"+
+    "\1\24\1\0\1\25\1\0\1\25\1\26\1\35\6\176"+
+    "\1\10\5\176\3\10\2\176\2\10\7\176\1\36\12\37"+
+    "\1\25\1\33\1\40\1\33\1\0\1\33\1\41\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\2\0\1\3\3\0"+
+    "\2\3\1\24\1\0\1\25\1\0\1\25\1\26\1\35"+
+    "\1\10\2\176\1\211\1\215\3\176\1\10\3\176\1\10"+
+    "\1\176\1\10\1\176\1\10\1\176\1\10\1\176\1\10"+
+    "\3\176\1\10\1\176\1\36\12\37\1\25\1\33\1\40"+
+    "\1\33\1\0\1\33\1\41\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\2\0\1\3\3\0\2\3\1\24\1\0"+
+    "\1\25\1\0\1\25\1\26\1\35\1\176\6\10\1\176"+
+    "\6\10\1\176\4\10\1\176\4\10\2\176\1\36\12\37"+
+    "\1\25\1\33\1\40\1\33\1\0\1\33\1\41\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\2\0\1\3\3\0"+
+    "\2\3\1\24\1\0\1\25\1\0\1\25\1\26\1\35"+
+    "\6\10\1\176\7\10\1\176\13\10\1\36\12\37\1\25"+
+    "\1\33\1\40\1\33\1\0\1\33\1\41\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\2\0\1\3\3\0\2\3"+
+    "\1\24\1\0\1\25\1\0\1\25\1\26\1\35\13\10"+
+    "\1\216\16\10\1\36\12\37\1\25\1\33\1\40\1\33"+
+    "\1\0\1\33\1\41\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\2\0\1\3\3\0\2\3\1\24\1\0\1\25"+
+    "\1\0\1\25\1\26\1\35\1\176\11\10\1\176\6\10"+
+    "\1\176\10\10\1\36\12\37\1\25\1\33\1\40\1\33"+
+    "\1\0\1\33\1\41\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\2\0\1\3\3\0\2\3\1\24\1\0\1\25"+
+    "\1\0\1\25\1\26\1\35\1\176\1\10\6\176\1\217"+
+    "\1\10\2\176\2\10\2\176\1\10\1\176\1\10\6\176"+
+    "\1\10\1\36\12\37\1\25\1\33\1\40\1\33\1\0"+
+    "\1\33\1\41\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\2\0\1\3\3\0\2\3\1\24\1\0\1\25\1\0"+
+    "\1\25\1\26\1\35\4\10\1\176\5\10\2\176\3\10"+
+    "\2\176\10\10\1\176\1\36\12\37\1\25\1\33\1\40"+
+    "\1\33\1\0\1\33\1\41\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\2\0\1\3\3\0\2\3\1\24\1\0"+
+    "\1\25\1\0\1\25\1\26\1\35\3\10\1\176\1\10"+
+    "\1\220\4\10\1\176\2\10\1\176\14\10\1\36\12\37"+
+    "\1\25\1\33\1\40\1\33\1\0\1\33\1\41\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\2\0\1\3\3\0"+
+    "\2\3\1\24\1\0\1\25\1\0\1\25\1\26\1\35"+
+    "\2\176\1\10\1\176\3\10\2\176\2\10\1\176\4\10"+
+    "\1\176\11\10\1\36\12\37\1\25\1\33\1\40\1\33"+
+    "\1\0\1\33\1\41\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\2\0\1\3\3\0\2\3\1\24\1\0\1\25"+
+    "\1\0\1\25\1\26\1\35\3\10\1\176\13\10\1\176"+
+    "\12\10\1\36\12\37\1\25\1\33\1\40\1\33\1\0"+
+    "\1\33\1\41\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\2\0\1\3\3\0\2\3\1\24\1\0\1\25\1\0"+
+    "\1\25\1\26\1\35\3\10\2\176\2\10\2\176\1\10"+
+    "\2\176\1\10\1\176\3\10\1\176\1\10\1\176\1\10"+
+    "\1\176\2\10\1\176\1\10\1\36\12\37\1\25\1\33"+
+    "\1\40\1\33\1\0\1\33\1\41\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\2\0\1\3\13\0\1\221\32\117"+
+    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\7\0\1\62\1\24\5\0"+
+    "\1\32\1\126\1\127\1\130\1\131\1\132\1\133\1\134"+
+    "\1\135\1\136\1\137\1\140\1\141\1\142\1\143\1\144"+
+    "\1\145\1\146\1\147\1\150\1\151\1\152\1\153\1\154"+
+    "\1\155\1\156\1\157\1\33\12\37\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\1\57\3\0\2\33"+
+    "\2\0\1\62\4\0\1\62\1\24\5\0\1\32\33\33"+
+    "\12\122\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\2\0\1\62\3\0\1\3\2\24"+
+    "\2\0\2\62\1\26\1\222\32\52\1\33\12\122\1\0"+
+    "\1\33\1\40\1\33\1\0\2\121\1\34\3\33\2\0"+
+    "\1\62\1\33\4\0\2\33\2\0\1\24\3\0\2\3"+
+    "\1\24\1\0\1\25\1\0\1\25\1\26\1\35\3\10"+
+    "\1\223\26\10\1\36\12\37\1\25\1\33\1\40\1\33"+
+    "\1\0\1\33\1\41\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\2\0\1\3\3\0\2\3\1\24\1\0\1\25"+
+    "\1\0\1\25\1\26\1\35\32\10\1\36\12\37\1\224"+
+    "\1\33\1\40\1\33\1\0\1\33\1\41\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\2\0\1\3\3\0\2\3"+
+    "\1\24\1\0\1\25\1\0\1\25\1\26\1\35\15\10"+
+    "\1\225\14\10\1\36\12\37\1\25\1\33\1\40\1\33"+
+    "\1\0\1\33\1\41\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\2\0\1\3\13\0\1\221\1\117\2\226\1\227"+
+    "\1\230\10\226\1\117\1\231\5\226\6\117\1\36\12\117"+
+    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\16\0\1\221\1\232\2\226\1\117\1\226"+
+    "\1\233\6\226\4\117\1\226\1\117\2\226\1\117\1\226"+
+    "\1\117\3\226\1\36\12\117\1\0\3\33\1\0\2\33"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
+    "\3\117\1\226\1\117\1\226\4\117\1\226\10\117\1\226"+
+    "\2\117\1\226\2\117\1\226\1\36\12\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\1\117\1\226\1\234\2\226\2\117\1\226"+
+    "\6\117\3\226\11\117\1\36\12\117\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
+    "\1\221\3\117\1\226\1\117\1\226\10\117\1\226\1\117"+
+    "\2\226\10\117\1\36\12\117\1\0\3\33\1\0\2\33"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
+    "\4\117\1\235\5\117\1\226\17\117\1\36\12\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\4\117\2\226\2\117\1\226\1\117"+
+    "\1\226\13\117\1\226\2\117\1\226\1\36\12\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\1\226\1\117\3\226\1\236\14\226"+
+    "\2\117\2\226\2\117\1\226\1\117\1\36\12\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\2\117\4\226\3\117\2\226\1\237"+
+    "\1\226\1\117\2\226\12\117\1\36\12\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\2\226\2\117\1\226\3\117\1\226\5\117"+
+    "\3\226\3\117\1\226\2\117\3\226\1\36\12\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\5\226\1\240\1\117\1\226\1\241"+
+    "\7\226\1\242\3\226\1\117\1\226\1\117\3\226\1\36"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\1\243\1\226\1\117"+
+    "\1\232\6\226\3\117\1\226\2\117\1\226\2\117\1\226"+
+    "\6\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\1\226"+
+    "\31\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\1\226"+
+    "\2\117\1\226\1\244\1\117\2\226\1\117\3\226\2\117"+
+    "\2\226\1\117\1\226\3\117\1\226\2\117\2\226\1\36"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\6\226\1\117\5\226"+
+    "\3\117\2\226\2\117\7\226\1\36\12\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\1\117\2\226\1\241\1\245\3\226\1\117"+
+    "\3\226\1\117\1\226\1\117\1\226\1\117\1\226\1\117"+
+    "\1\226\1\117\3\226\1\117\1\226\1\36\12\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\1\226\6\117\1\226\6\117\1\226"+
+    "\4\117\1\226\4\117\2\226\1\36\12\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\6\117\1\226\7\117\1\226\13\117\1\36"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\13\117\1\246\16\117"+
+    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\16\0\1\221\1\226\11\117"+
+    "\1\226\6\117\1\226\10\117\1\36\12\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\1\226\1\117\6\226\1\247\1\117\2\226"+
+    "\2\117\2\226\1\117\1\226\1\117\6\226\1\117\1\36"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\4\117\1\226\5\117"+
+    "\2\226\3\117\2\226\10\117\1\226\1\36\12\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\3\117\1\226\1\117\1\250\4\117"+
+    "\1\226\2\117\1\226\14\117\1\36\12\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\2\226\1\117\1\226\3\117\2\226\2\117"+
+    "\1\226\4\117\1\226\11\117\1\36\12\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\3\117\1\226\13\117\1\226\12\117\1\36"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\3\117\2\226\2\117"+
+    "\2\226\1\117\2\226\1\117\1\226\3\117\1\226\1\117"+
+    "\1\226\1\117\1\226\2\117\1\226\1\117\1\36\12\117"+
+    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\6\0\1\3\2\4\2\0\2\27\1\30"+
+    "\1\251\32\10\1\36\12\161\1\0\1\33\1\46\1\33"+
+    "\1\0\2\47\1\34\3\33\2\0\1\27\1\33\4\0"+
+    "\2\33\2\0\1\4\3\0\1\3\2\4\2\0\2\27"+
+    "\1\30\1\251\32\10\1\36\12\252\1\0\1\33\1\46"+
+    "\1\33\1\0\2\47\1\34\3\33\2\0\1\27\1\33"+
+    "\4\0\2\33\2\0\1\4\3\0\1\3\2\4\2\0"+
+    "\2\27\1\30\1\251\32\10\1\36\1\161\1\253\1\252"+
+    "\2\161\2\252\2\161\1\252\1\0\1\33\1\46\1\33"+
+    "\1\0\2\47\1\34\3\33\2\0\1\27\1\33\4\0"+
+    "\2\33\2\0\1\4\3\0\1\3\2\4\2\0\2\27"+
+    "\1\30\1\254\32\10\1\36\12\163\1\0\1\33\1\46"+
+    "\1\33\1\0\2\47\1\34\3\33\2\0\1\27\1\33"+
+    "\4\0\2\33\2\0\1\4\3\0\1\3\1\25\6\0"+
+    "\1\32\32\52\13\33\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\1\57\3\0\2\33\2\0\1\25"+
+    "\4\0\1\27\1\4\5\0\1\32\33\33\12\53\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\1\57"+
+    "\3\0\2\33\2\0\1\27\14\0\4\255\2\0\1\255"+
+    "\15\0\1\255\6\0\12\255\1\167\43\0\4\256\2\0"+
+    "\1\256\15\0\1\256\6\0\12\256\1\257\43\0\4\260"+
+    "\2\0\1\260\15\0\1\260\6\0\1\261\2\262\1\261"+
+    "\4\262\1\263\1\262\14\0\1\264\26\0\46\33\1\0"+
+    "\3\33\1\0\2\33\1\0\3\33\3\0\1\33\1\57"+
+    "\3\0\2\33\17\0\1\265\1\266\1\267\1\270\1\271"+
+    "\1\272\1\273\1\274\1\275\1\276\1\277\1\300\1\301"+
+    "\1\302\1\303\1\304\1\305\1\306\1\307\1\310\1\311"+
+    "\1\312\1\313\1\314\1\315\1\316\1\0\12\63\44\0"+
+    "\32\63\1\173\12\63\43\0\74\64\5\0\2\3\1\24"+
+    "\1\0\1\25\1\0\1\25\1\26\1\317\32\10\1\36"+
+    "\12\37\1\320\1\33\1\40\1\33\1\0\1\33\1\41"+
+    "\1\34\1\321\1\322\1\323\3\0\1\33\4\0\2\33"+
+    "\2\0\1\3\3\0\2\3\1\24\1\0\1\25\1\0"+
+    "\1\25\1\26\1\317\4\10\1\324\25\10\1\36\12\37"+
+    "\1\320\1\33\1\40\1\33\1\0\1\33\1\41\1\34"+
+    "\1\321\1\322\1\323\3\0\1\33\4\0\2\33\2\0"+
+    "\1\3\3\0\2\3\1\24\1\0\1\25\1\0\1\25"+
+    "\1\26\1\317\15\10\1\101\14\10\1\36\12\37\1\320"+
+    "\1\33\1\40\1\33\1\0\1\33\1\41\1\34\1\321"+
+    "\1\322\1\323\3\0\1\33\4\0\2\33\2\0\1\3"+
+    "\3\0\2\3\1\24\1\0\1\25\1\0\1\25\1\26"+
+    "\1\317\10\10\1\101\21\10\1\36\12\37\1\320\1\33"+
+    "\1\40\1\33\1\0\1\33\1\41\1\34\1\321\1\322"+
+    "\1\323\3\0\1\33\4\0\2\33\2\0\1\3\3\0"+
+    "\2\3\1\24\1\0\1\25\1\0\1\25\1\26\1\317"+
+    "\17\10\1\176\12\10\1\36\12\37\1\320\1\33\1\40"+
+    "\1\33\1\0\1\33\1\41\1\34\1\321\1\322\1\323"+
+    "\3\0\1\33\4\0\2\33\2\0\1\3\3\0\2\3"+
+    "\1\24\1\0\1\25\1\0\1\25\1\26\1\317\5\10"+
+    "\1\325\4\10\1\176\17\10\1\36\12\37\1\320\1\33"+
+    "\1\40\1\33\1\0\1\33\1\41\1\34\1\321\1\322"+
+    "\1\323\3\0\1\33\4\0\2\33\2\0\1\3\3\0"+
+    "\2\3\1\24\1\0\1\25\1\0\1\25\1\26\1\35"+
+    "\20\10\1\176\11\10\1\36\12\37\1\25\1\33\1\40"+
+    "\1\33\1\0\1\33\1\41\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\2\0\1\3\3\0\2\3\1\24\1\0"+
+    "\1\25\1\0\1\25\1\26\1\35\7\10\1\176\22\10"+
+    "\1\36\12\37\1\25\1\33\1\40\1\33\1\0\1\33"+
+    "\1\41\1\34\3\33\3\0\1\33\4\0\2\33\2\0"+
+    "\1\3\3\0\2\3\1\24\1\0\1\25\1\0\1\25"+
+    "\1\26\1\35\27\10\1\176\2\10\1\36\12\37\1\25"+
+    "\1\33\1\40\1\33\1\0\1\33\1\41\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\2\0\1\3\3\0\2\3"+
+    "\1\24\1\0\1\25\1\0\1\25\1\26\1\317\6\10"+
+    "\1\324\10\10\1\176\12\10\1\36\12\37\1\320\1\33"+
+    "\1\40\1\33\1\0\1\33\1\41\1\34\1\321\1\322"+
+    "\1\323\3\0\1\33\4\0\2\33\2\0\1\3\3\0"+
+    "\2\3\1\24\1\0\1\25\1\0\1\25\1\26\1\317"+
+    "\24\10\1\326\5\10\1\36\12\37\1\320\1\33\1\40"+
+    "\1\33\1\0\1\33\1\41\1\34\1\321\1\322\1\323"+
+    "\3\0\1\33\4\0\2\33\2\0\1\3\3\0\2\3"+
+    "\1\24\1\0\1\25\1\0\1\25\1\26\1\35\11\10"+
+    "\1\176\20\10\1\36\12\37\1\25\1\33\1\40\1\33"+
+    "\1\0\1\33\1\41\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\2\0\1\3\3\0\2\3\1\24\1\0\1\25"+
+    "\1\0\1\25\1\26\1\317\16\10\1\327\13\10\1\36"+
+    "\12\37\1\320\1\33\1\40\1\33\1\0\1\33\1\41"+
+    "\1\34\1\321\1\322\1\323\3\0\1\33\4\0\2\33"+
+    "\2\0\1\3\3\0\2\3\1\24\1\0\1\25\1\0"+
+    "\1\25\1\26\1\317\12\10\1\330\17\10\1\36\12\37"+
+    "\1\320\1\33\1\40\1\33\1\0\1\33\1\41\1\34"+
+    "\1\321\1\322\1\323\3\0\1\33\4\0\2\33\2\0"+
+    "\1\3\3\0\2\3\1\24\1\0\1\25\1\0\1\25"+
+    "\1\26\1\317\5\10\1\176\24\10\1\36\12\37\1\320"+
+    "\1\33\1\40\1\33\1\0\1\33\1\41\1\34\1\321"+
+    "\1\322\1\323\3\0\1\33\4\0\2\33\2\0\1\3"+
+    "\3\0\2\3\1\24\1\0\1\25\1\0\1\25\1\26"+
+    "\1\317\1\331\31\10\1\36\12\37\1\320\1\33\1\40"+
+    "\1\33\1\0\1\33\1\41\1\34\1\321\1\322\1\323"+
+    "\3\0\1\33\4\0\2\33\2\0\1\3\3\0\2\3"+
+    "\1\24\1\0\1\25\1\0\1\25\1\26\1\35\32\10"+
+    "\1\332\12\37\1\25\1\33\1\40\1\33\1\0\1\33"+
+    "\1\41\1\34\3\33\3\0\1\33\4\0\2\33\2\0"+
+    "\1\3\3\0\2\3\1\24\1\0\1\25\1\0\1\25"+
+    "\1\26\1\317\23\10\1\176\6\10\1\36\12\37\1\320"+
+    "\1\33\1\40\1\33\1\0\1\33\1\41\1\34\1\321"+
+    "\1\322\1\323\3\0\1\33\4\0\2\33\2\0\1\3"+
+    "\3\0\2\3\1\24\1\0\1\25\1\0\1\25\1\26"+
+    "\1\317\24\10\1\333\5\10\1\36\12\37\1\320\1\33"+
+    "\1\40\1\33\1\0\1\33\1\41\1\34\1\321\1\322"+
+    "\1\323\3\0\1\33\4\0\2\33\2\0\1\3\13\0"+
+    "\1\32\1\126\1\127\1\130\1\131\1\132\1\133\1\134"+
+    "\1\135\1\136\1\137\1\140\1\141\1\142\1\143\1\144"+
+    "\1\145\1\146\1\147\1\150\1\151\1\152\1\153\1\154"+
+    "\1\155\1\156\1\157\1\33\12\117\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\1\57\3\0\2\33"+
+    "\7\0\1\62\1\24\5\0\1\32\33\33\12\122\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\1\57"+
+    "\3\0\2\33\2\0\1\62\3\0\2\3\1\24\1\0"+
+    "\1\25\1\0\1\25\1\26\1\35\32\10\1\36\12\37"+
+    "\1\334\1\33\1\40\1\33\1\0\1\33\1\41\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\2\0\1\3\3\0"+
+    "\1\3\1\25\7\0\32\3\24\0\1\335\15\0\1\25"+
+    "\3\0\2\3\1\24\1\0\1\25\1\0\1\25\1\26"+
+    "\1\35\16\10\1\336\13\10\1\36\12\37\1\337\1\33"+
+    "\1\40\1\33\1\0\1\33\1\41\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\2\0\1\3\13\0\1\340\32\117"+
+    "\1\36\12\117\1\341\3\33\1\0\2\33\1\34\1\321"+
+    "\1\322\1\323\3\0\1\33\4\0\2\33\16\0\1\340"+
+    "\4\117\1\342\25\117\1\36\12\117\1\341\3\33\1\0"+
+    "\2\33\1\34\1\321\1\322\1\323\3\0\1\33\4\0"+
+    "\2\33\16\0\1\340\15\117\1\142\14\117\1\36\12\117"+
+    "\1\341\3\33\1\0\2\33\1\34\1\321\1\322\1\323"+
+    "\3\0\1\33\4\0\2\33\16\0\1\340\10\117\1\142"+
+    "\21\117\1\36\12\117\1\341\3\33\1\0\2\33\1\34"+
+    "\1\321\1\322\1\323\3\0\1\33\4\0\2\33\16\0"+
+    "\1\340\17\117\1\226\12\117\1\36\12\117\1\341\3\33"+
+    "\1\0\2\33\1\34\1\321\1\322\1\323\3\0\1\33"+
+    "\4\0\2\33\16\0\1\340\5\117\1\343\4\117\1\226"+
+    "\17\117\1\36\12\117\1\341\3\33\1\0\2\33\1\34"+
+    "\1\321\1\322\1\323\3\0\1\33\4\0\2\33\16\0"+
+    "\1\221\20\117\1\226\11\117\1\36\12\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\7\117\1\226\22\117\1\36\12\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\27\117\1\226\2\117\1\36\12\117"+
+    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\16\0\1\340\6\117\1\342\10\117\1\226"+
+    "\12\117\1\36\12\117\1\341\3\33\1\0\2\33\1\34"+
+    "\1\321\1\322\1\323\3\0\1\33\4\0\2\33\16\0"+
+    "\1\340\24\117\1\344\5\117\1\36\12\117\1\341\3\33"+
+    "\1\0\2\33\1\34\1\321\1\322\1\323\3\0\1\33"+
+    "\4\0\2\33\16\0\1\221\11\117\1\226\20\117\1\36"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\340\16\117\1\345\13\117"+
+    "\1\36\12\117\1\341\3\33\1\0\2\33\1\34\1\321"+
+    "\1\322\1\323\3\0\1\33\4\0\2\33\16\0\1\340"+
+    "\12\117\1\346\17\117\1\36\12\117\1\341\3\33\1\0"+
+    "\2\33\1\34\1\321\1\322\1\323\3\0\1\33\4\0"+
+    "\2\33\16\0\1\340\5\117\1\226\24\117\1\36\12\117"+
+    "\1\341\3\33\1\0\2\33\1\34\1\321\1\322\1\323"+
+    "\3\0\1\33\4\0\2\33\16\0\1\340\1\347\31\117"+
+    "\1\36\12\117\1\341\3\33\1\0\2\33\1\34\1\321"+
+    "\1\322\1\323\3\0\1\33\4\0\2\33\16\0\1\221"+
+    "\32\117\1\332\12\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\16\0\1\340\23\117"+
+    "\1\226\6\117\1\36\12\117\1\341\3\33\1\0\2\33"+
+    "\1\34\1\321\1\322\1\323\3\0\1\33\4\0\2\33"+
+    "\16\0\1\340\24\117\1\350\5\117\1\36\12\117\1\341"+
+    "\3\33\1\0\2\33\1\34\1\321\1\322\1\323\3\0"+
+    "\1\33\4\0\2\33\7\0\1\27\1\4\5\0\1\32"+
+    "\1\126\1\127\1\130\1\131\1\132\1\133\1\134\1\135"+
+    "\1\136\1\137\1\140\1\141\1\142\1\143\1\144\1\145"+
+    "\1\146\1\147\1\150\1\151\1\152\1\153\1\154\1\155"+
+    "\1\156\1\157\1\33\1\351\2\352\1\351\4\352\1\353"+
+    "\1\352\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\1\57\3\0\2\33\2\0\1\27\3\0\1\3"+
+    "\2\4\2\0\2\27\1\30\1\251\32\10\1\36\12\163"+
+    "\1\0\1\33\1\46\1\33\1\0\2\47\1\34\3\33"+
+    "\2\0\1\27\1\33\4\0\2\33\2\0\1\4\3\0"+
+    "\1\3\2\4\2\0\2\27\1\30\1\251\32\10\1\36"+
+    "\2\252\1\163\2\252\2\163\2\252\1\163\1\0\1\33"+
+    "\1\46\1\33\1\0\2\47\1\34\3\33\2\0\1\27"+
+    "\1\33\4\0\2\33\2\0\1\4\4\0\1\27\1\4"+
+    "\5\0\1\32\1\126\1\127\1\130\1\131\1\132\1\133"+
+    "\1\134\1\135\1\136\1\137\1\140\1\141\1\142\1\143"+
+    "\1\144\1\145\1\146\1\147\1\150\1\151\1\152\1\153"+
+    "\1\154\1\155\1\156\1\157\1\33\12\163\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\1\57\3\0"+
+    "\2\33\2\0\1\27\14\0\4\354\2\0\1\354\15\0"+
+    "\1\354\6\0\12\354\1\167\43\0\4\355\2\0\1\355"+
+    "\15\0\1\355\6\0\12\355\1\356\43\0\4\357\2\0"+
+    "\1\357\15\0\1\357\6\0\1\360\2\361\1\360\4\361"+
+    "\1\362\1\361\14\0\1\264\27\0\4\363\2\0\1\363"+
+    "\15\0\1\363\6\0\12\363\1\364\13\0\1\264\26\0"+
+    "\1\365\4\363\2\0\1\363\15\0\1\363\6\0\12\366"+
+    "\1\364\13\0\1\264\26\0\1\365\4\363\2\0\1\363"+
+    "\15\0\1\363\6\0\12\367\1\364\13\0\1\264\26\0"+
+    "\1\365\4\363\2\0\1\363\15\0\1\363\6\0\1\366"+
+    "\1\370\1\367\2\366\2\367\2\366\1\367\1\364\13\0"+
+    "\1\264\74\0\1\341\7\0\1\371\1\372\1\373\30\0"+
+    "\1\172\1\63\2\374\1\375\1\376\10\374\1\63\1\377"+
+    "\5\374\6\63\1\173\12\63\43\0\1\172\1\u0100\2\374"+
+    "\1\63\1\374\1\u0101\6\374\4\63\1\374\1\63\2\374"+
+    "\1\63\1\374\1\63\3\374\1\173\12\63\43\0\1\172"+
+    "\3\63\1\374\1\63\1\374\4\63\1\374\10\63\1\374"+
+    "\2\63\1\374\2\63\1\374\1\173\12\63\43\0\1\172"+
+    "\1\63\1\374\1\u0102\2\374\2\63\1\374\6\63\3\374"+
+    "\11\63\1\173\12\63\43\0\1\172\3\63\1\374\1\63"+
+    "\1\374\10\63\1\374\1\63\2\374\10\63\1\173\12\63"+
+    "\43\0\1\172\4\63\1\u0103\5\63\1\374\17\63\1\173"+
+    "\12\63\43\0\1\172\4\63\2\374\2\63\1\374\1\63"+
+    "\1\374\13\63\1\374\2\63\1\374\1\173\12\63\43\0"+
+    "\1\172\1\374\1\63\3\374\1\u0104\14\374\2\63\2\374"+
+    "\2\63\1\374\1\63\1\173\12\63\43\0\1\172\2\63"+
+    "\4\374\3\63\2\374\1\u0105\1\374\1\63\2\374\12\63"+
+    "\1\173\12\63\43\0\1\172\2\374\2\63\1\374\3\63"+
+    "\1\374\5\63\3\374\3\63\1\374\2\63\3\374\1\173"+
+    "\12\63\43\0\1\172\5\374\1\u0106\1\63\1\374\1\u0107"+
+    "\7\374\1\u0108\3\374\1\63\1\374\1\63\3\374\1\173"+
+    "\12\63\43\0\1\172\1\u0109\1\374\1\63\1\u0100\6\374"+
+    "\3\63\1\374\2\63\1\374\2\63\1\374\6\63\1\173"+
+    "\12\63\43\0\1\172\1\374\31\63\1\173\12\63\43\0"+
+    "\1\172\1\374\2\63\1\374\1\u010a\1\63\2\374\1\63"+
+    "\3\374\2\63\2\374\1\63\1\374\3\63\1\374\2\63"+
+    "\2\374\1\173\12\63\43\0\1\172\6\374\1\63\5\374"+
+    "\3\63\2\374\2\63\7\374\1\173\12\63\43\0\1\172"+
+    "\1\63\2\374\1\u0107\1\u010b\3\374\1\63\3\374\1\63"+
+    "\1\374\1\63\1\374\1\63\1\374\1\63\1\374\1\63"+
+    "\3\374\1\63\1\374\1\173\12\63\43\0\1\172\1\374"+
+    "\6\63\1\374\6\63\1\374\4\63\1\374\4\63\2\374"+
+    "\1\173\12\63\43\0\1\172\6\63\1\374\7\63\1\374"+
+    "\13\63\1\173\12\63\43\0\1\172\13\63\1\u010c\16\63"+
+    "\1\173\12\63\43\0\1\172\1\374\11\63\1\374\6\63"+
+    "\1\374\10\63\1\173\12\63\43\0\1\172\1\374\1\63"+
+    "\6\374\1\u010d\1\63\2\374\2\63\2\374\1\63\1\374"+
+    "\1\63\6\374\1\63\1\173\12\63\43\0\1\172\4\63"+
+    "\1\374\5\63\2\374\3\63\2\374\10\63\1\374\1\173"+
+    "\12\63\43\0\1\172\3\63\1\374\1\63\1\u010e\4\63"+
+    "\1\374\2\63\1\374\14\63\1\173\12\63\43\0\1\172"+
+    "\2\374\1\63\1\374\3\63\2\374\2\63\1\374\4\63"+
+    "\1\374\11\63\1\173\12\63\43\0\1\172\3\63\1\374"+
+    "\13\63\1\374\12\63\1\173\12\63\43\0\1\172\3\63"+
+    "\2\374\2\63\2\374\1\63\2\374\1\63\1\374\3\63"+
+    "\1\374\1\63\1\374\1\63\1\374\2\63\1\374\1\63"+
+    "\1\173\12\63\33\0\1\3\1\25\6\0\1\32\1\65"+
+    "\1\66\1\67\1\70\1\71\1\72\1\73\1\74\1\75"+
+    "\1\76\1\77\1\100\1\101\1\102\1\103\1\104\1\105"+
+    "\1\106\1\107\1\110\1\111\1\112\1\113\1\114\1\115"+
+    "\1\116\1\33\12\117\1\341\3\33\1\0\2\33\1\34"+
+    "\1\321\1\322\1\323\3\0\1\33\1\57\3\0\2\33"+
+    "\2\0\1\25\3\0\1\3\1\25\7\0\32\3\1\0"+
+    "\12\u010f\27\0\1\25\13\0\1\u0110\45\321\1\371\2\321"+
+    "\1\u0111\1\371\2\321\1\u0112\2\321\1\323\2\0\1\371"+
+    "\1\321\4\0\1\321\1\33\16\0\1\u0113\45\322\1\372"+
+    "\2\322\1\u0114\1\0\2\33\1\u0115\1\321\1\322\1\323"+
+    "\2\0\1\372\1\322\4\0\2\33\16\0\1\u0116\45\323"+
+    "\1\373\2\323\1\u0117\1\373\2\323\1\u0118\2\323\1\33"+
+    "\2\0\1\373\1\323\4\0\1\323\1\33\6\0\2\3"+
+    "\1\24\1\0\1\25\1\0\1\25\1\26\1\35\5\10"+
+    "\1\176\24\10\1\36\12\37\1\25\1\33\1\40\1\33"+
+    "\1\0\1\33\1\41\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\2\0\1\3\3\0\2\3\1\24\1\0\1\25"+
+    "\1\0\1\25\1\26\1\35\15\10\1\176\14\10\1\36"+
+    "\12\37\1\25\1\33\1\40\1\33\1\0\1\33\1\41"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\2\0\1\3"+
+    "\3\0\2\3\1\24\1\0\1\25\1\0\1\25\1\26"+
+    "\1\35\10\10\1\176\21\10\1\36\12\37\1\25\1\33"+
+    "\1\40\1\33\1\0\1\33\1\41\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\2\0\1\3\3\0\2\3\1\24"+
+    "\1\0\1\25\1\0\1\25\1\26\1\35\3\10\1\u0119"+
+    "\26\10\1\36\12\37\1\25\1\33\1\40\1\33\1\0"+
+    "\1\33\1\41\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\2\0\1\3\3\0\2\3\1\24\1\0\1\25\1\0"+
+    "\1\25\1\26\1\35\3\10\1\176\26\10\1\36\12\37"+
+    "\1\25\1\33\1\40\1\33\1\0\1\33\1\41\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\2\0\1\3\3\0"+
+    "\2\3\1\24\1\0\1\25\1\0\1\25\1\26\1\35"+
+    "\27\10\1\u011a\2\10\1\36\12\37\1\25\1\33\1\40"+
+    "\1\33\1\0\1\33\1\41\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\2\0\1\3\13\0\1\32\32\117\1\u011b"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\6\0\2\3\1\24\1\0\1\25"+
+    "\1\0\1\25\1\26\1\35\16\10\1\176\13\10\1\36"+
+    "\12\37\1\25\1\33\1\40\1\33\1\0\1\33\1\41"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\2\0\1\3"+
+    "\3\0\1\3\1\25\7\0\32\3\24\0\1\u011c\15\0"+
+    "\1\25\72\0\1\u011d\21\0\2\3\1\24\1\0\1\25"+
+    "\1\0\1\25\1\26\1\35\32\10\1\36\12\37\1\337"+
+    "\1\33\1\40\1\33\1\0\1\33\1\41\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\2\0\1\3\3\0\1\3"+
+    "\1\25\7\0\32\3\24\0\1\u011e\15\0\1\25\13\0"+
+    "\1\32\1\126\1\127\1\130\1\131\1\132\1\133\1\134"+
+    "\1\135\1\136\1\137\1\140\1\141\1\142\1\143\1\144"+
+    "\1\145\1\146\1\147\1\150\1\151\1\152\1\153\1\154"+
+    "\1\155\1\156\1\157\1\33\12\117\1\341\3\33\1\0"+
+    "\2\33\1\34\1\321\1\322\1\323\3\0\1\33\1\57"+
+    "\3\0\2\33\52\0\12\u010f\43\0\1\221\5\117\1\226"+
+    "\24\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\15\117"+
+    "\1\226\14\117\1\36\12\117\1\0\3\33\1\0\2\33"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
+    "\10\117\1\226\21\117\1\36\12\117\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
+    "\1\221\3\117\1\u011f\26\117\1\36\12\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\3\117\1\226\26\117\1\36\12\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\27\117\1\u0120\2\117\1\36\12\117"+
+    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\16\0\1\221\16\117\1\226\13\117\1\36"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\6\0\1\3\2\4\2\0\2\27"+
+    "\1\30\1\u0121\32\10\1\36\12\352\1\0\1\33\1\46"+
+    "\1\33\1\0\2\47\1\34\3\33\2\0\1\27\1\33"+
+    "\4\0\2\33\2\0\1\4\3\0\1\3\2\4\2\0"+
+    "\2\27\1\30\1\u0121\32\10\1\36\12\u0122\1\0\1\33"+
+    "\1\46\1\33\1\0\2\47\1\34\3\33\2\0\1\27"+
+    "\1\33\4\0\2\33\2\0\1\4\3\0\1\3\2\4"+
+    "\2\0\2\27\1\30\1\u0121\32\10\1\36\1\352\1\u0123"+
+    "\1\u0122\2\352\2\u0122\2\352\1\u0122\1\0\1\33\1\46"+
+    "\1\33\1\0\2\47\1\34\3\33\2\0\1\27\1\33"+
+    "\4\0\2\33\2\0\1\4\61\0\1\167\43\0\4\u0124"+
+    "\2\0\1\u0124\15\0\1\u0124\6\0\12\u0124\1\356\43\0"+
+    "\4\u0125\2\0\1\u0125\15\0\1\u0125\6\0\12\u0125\1\u0126"+
+    "\43\0\4\u0127\2\0\1\u0127\15\0\1\u0127\6\0\12\u0127"+
+    "\1\u0128\13\0\1\264\26\0\1\365\4\u0127\2\0\1\u0127"+
+    "\15\0\1\u0127\6\0\12\u0129\1\u0128\13\0\1\264\26\0"+
+    "\1\365\4\u0127\2\0\1\u0127\15\0\1\u0127\6\0\12\u012a"+
+    "\1\u0128\13\0\1\264\26\0\1\365\4\u0127\2\0\1\u0127"+
+    "\15\0\1\u0127\6\0\1\u0129\1\u012b\1\u012a\2\u0129\2\u012a"+
+    "\2\u0129\1\u012a\1\u0128\13\0\1\264\27\0\4\u012c\2\0"+
+    "\1\u012c\15\0\1\u012c\6\0\12\u012c\1\364\13\0\1\264"+
+    "\27\0\4\357\2\0\1\357\15\0\1\357\6\0\1\360"+
+    "\2\361\1\360\4\361\1\362\1\361\77\0\1\u012d\2\u012e"+
+    "\1\u012d\4\u012e\1\u012f\1\u012e\43\0\1\365\4\u012c\2\0"+
+    "\1\u012c\15\0\1\u012c\6\0\12\u0130\1\364\13\0\1\264"+
+    "\26\0\1\365\4\u012c\2\0\1\u012c\15\0\1\u012c\6\0"+
+    "\12\u012c\1\364\13\0\1\264\26\0\1\365\4\u012c\2\0"+
+    "\1\u012c\15\0\1\u012c\6\0\2\u0130\1\u012c\2\u0130\2\u012c"+
+    "\2\u0130\1\u012c\1\364\13\0\1\264\26\0\51\371\1\u0131"+
+    "\6\371\1\373\2\0\2\371\4\0\1\371\17\0\51\372"+
+    "\1\u0132\3\0\1\372\1\371\1\372\1\373\2\0\2\372"+
+    "\24\0\51\373\1\u0133\6\373\3\0\2\373\4\0\1\373"+
+    "\17\0\1\u0134\32\63\1\173\12\63\43\0\1\u0134\4\63"+
+    "\1\u0135\25\63\1\173\12\63\43\0\1\u0134\15\63\1\301"+
+    "\14\63\1\173\12\63\43\0\1\u0134\10\63\1\301\21\63"+
+    "\1\173\12\63\43\0\1\u0134\17\63\1\374\12\63\1\173"+
+    "\12\63\43\0\1\u0134\5\63\1\u0136\4\63\1\374\17\63"+
+    "\1\173\12\63\43\0\1\172\20\63\1\374\11\63\1\173"+
+    "\12\63\43\0\1\172\7\63\1\374\22\63\1\173\12\63"+
+    "\43\0\1\172\27\63\1\374\2\63\1\173\12\63\43\0"+
+    "\1\u0134\6\63\1\u0135\10\63\1\374\12\63\1\173\12\63"+
+    "\43\0\1\u0134\24\63\1\u0137\5\63\1\173\12\63\43\0"+
+    "\1\172\11\63\1\374\20\63\1\173\12\63\43\0\1\u0134"+
+    "\16\63\1\u0138\13\63\1\173\12\63\43\0\1\u0134\12\63"+
+    "\1\u0139\17\63\1\173\12\63\43\0\1\u0134\5\63\1\374"+
+    "\24\63\1\173\12\63\43\0\1\u0134\1\u013a\31\63\1\173"+
+    "\12\63\43\0\1\172\32\63\1\u013b\12\63\43\0\1\u0134"+
+    "\23\63\1\374\6\63\1\173\12\63\43\0\1\u0134\24\63"+
+    "\1\u013c\5\63\1\173\12\63\77\0\12\u013d\10\0\1\371"+
+    "\1\372\1\373\30\0\1\u0110\45\321\1\371\2\321\1\u0111"+
+    "\1\371\2\321\1\u0112\2\321\1\323\2\0\1\371\1\321"+
+    "\1\57\3\0\1\321\1\33\16\0\1\32\4\u013e\2\33"+
+    "\1\u013e\15\33\1\u013e\6\33\12\u013e\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
+    "\51\371\1\u0131\6\371\1\373\1\64\1\0\2\371\4\0"+
+    "\1\371\17\0\1\u0113\45\322\1\372\2\322\1\u0114\1\0"+
+    "\2\33\1\u0115\1\321\1\322\1\323\2\0\1\372\1\322"+
+    "\1\57\3\0\2\33\16\0\1\32\4\u013f\2\33\1\u013f"+
+    "\15\33\1\u013f\6\33\12\u013f\1\0\3\33\1\0\2\33"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\51\372"+
+    "\1\u0132\3\0\1\372\1\371\1\372\1\373\1\64\1\0"+
+    "\2\372\24\0\1\u0116\45\323\1\373\2\323\1\u0117\1\373"+
+    "\2\323\1\u0118\2\323\1\33\2\0\1\373\1\323\1\57"+
+    "\3\0\1\323\1\33\16\0\1\32\4\u0140\2\33\1\u0140"+
+    "\15\33\1\u0140\6\33\12\u0140\1\0\3\33\1\0\2\33"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\51\373"+
+    "\1\u0133\6\373\1\0\1\64\1\0\2\373\4\0\1\373"+
+    "\7\0\2\3\1\24\1\0\1\25\1\0\1\25\1\26"+
+    "\1\35\20\10\1\u0141\11\10\1\36\12\37\1\25\1\33"+
+    "\1\40\1\33\1\0\1\33\1\41\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\2\0\1\3\3\0\2\3\1\24"+
+    "\1\0\1\25\1\0\1\25\1\26\1\35\3\10\1\211"+
+    "\26\10\1\36\12\37\1\25\1\33\1\40\1\33\1\0"+
+    "\1\33\1\41\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\2\0\1\3\13\0\1\32\2\117\1\u0142\2\117\1\u0143"+
+    "\1\u0144\1\u0145\2\117\1\u0146\2\117\1\u0147\3\117\1\u0148"+
+    "\1\u0149\1\u014a\1\117\1\u014b\1\u014c\1\117\1\u014d\1\u014e"+
+    "\1\36\1\u014f\2\117\1\u0150\1\117\1\u0151\1\u0152\3\117"+
+    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\75\0\1\u0153\31\0\1\u0154\32\u0155\1\u0154"+
+    "\12\u0155\1\u0156\2\u0154\1\u0157\3\u0154\1\u0158\3\0\1\u0159"+
+    "\1\0\2\u0154\4\0\1\u0154\76\0\1\u015a\31\0\1\221"+
+    "\20\117\1\u015b\11\117\1\36\12\117\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
+    "\1\221\3\117\1\241\26\117\1\36\12\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\7\0\1\27\1\4\5\0\1\32\1\126\1\127\1\130"+
+    "\1\131\1\132\1\133\1\134\1\135\1\136\1\137\1\140"+
+    "\1\141\1\142\1\143\1\144\1\145\1\146\1\147\1\150"+
+    "\1\151\1\152\1\153\1\154\1\155\1\156\1\157\1\33"+
+    "\1\u015c\2\u015d\1\u015c\4\u015d\1\u015e\1\u015d\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\1\57\3\0"+
+    "\2\33\2\0\1\27\3\0\1\3\2\4\2\0\2\27"+
+    "\1\30\1\u0121\32\10\1\36\12\163\1\0\1\33\1\46"+
+    "\1\33\1\0\2\47\1\34\3\33\2\0\1\27\1\33"+
+    "\4\0\2\33\2\0\1\4\3\0\1\3\2\4\2\0"+
+    "\2\27\1\30\1\u0121\32\10\1\36\2\u0122\1\163\2\u0122"+
+    "\2\163\2\u0122\1\163\1\0\1\33\1\46\1\33\1\0"+
+    "\2\47\1\34\3\33\2\0\1\27\1\33\4\0\2\33"+
+    "\2\0\1\4\14\0\4\u015f\2\0\1\u015f\15\0\1\u015f"+
+    "\6\0\12\u015f\1\356\43\0\4\u0160\2\0\1\u0160\15\0"+
+    "\1\u0160\6\0\12\u0160\1\u0161\43\0\4\u0162\2\0\1\u0162"+
+    "\15\0\1\u0162\6\0\1\u0163\2\u0164\1\u0163\4\u0164\1\u0165"+
+    "\1\u0164\14\0\1\264\27\0\4\u0166\2\0\1\u0166\15\0"+
+    "\1\u0166\6\0\12\u0166\1\u0128\13\0\1\264\27\0\4\u0162"+
+    "\2\0\1\u0162\15\0\1\u0162\6\0\1\u0163\2\u0164\1\u0163"+
+    "\4\u0164\1\u0165\1\u0164\43\0\1\365\4\u0166\2\0\1\u0166"+
+    "\15\0\1\u0166\6\0\12\u0167\1\u0128\13\0\1\264\26\0"+
+    "\1\365\4\u0166\2\0\1\u0166\15\0\1\u0166\6\0\12\u0166"+
+    "\1\u0128\13\0\1\264\26\0\1\365\4\u0166\2\0\1\u0166"+
+    "\15\0\1\u0166\6\0\2\u0167\1\u0166\2\u0167\2\u0166\2\u0167"+
+    "\1\u0166\1\u0128\13\0\1\264\27\0\4\u0168\2\0\1\u0168"+
+    "\15\0\1\u0168\6\0\12\u0168\1\364\13\0\1\264\26\0"+
+    "\1\u0169\33\0\12\u012e\43\0\1\u0169\33\0\12\u016a\43\0"+
+    "\1\u0169\33\0\1\u012e\1\u016b\1\u016a\2\u012e\2\u016a\2\u012e"+
+    "\1\u016a\43\0\1\365\4\u0168\2\0\1\u0168\15\0\1\u0168"+
+    "\6\0\12\u0168\1\364\13\0\1\264\27\0\4\u016c\2\0"+
+    "\1\u016c\15\0\1\u016c\6\0\12\u016c\44\0\4\u016d\2\0"+
+    "\1\u016d\15\0\1\u016d\6\0\12\u016d\44\0\4\u016e\2\0"+
+    "\1\u016e\15\0\1\u016e\6\0\12\u016e\43\0\1\172\5\63"+
+    "\1\374\24\63\1\173\12\63\43\0\1\172\15\63\1\374"+
+    "\14\63\1\173\12\63\43\0\1\172\10\63\1\374\21\63"+
+    "\1\173\12\63\43\0\1\172\3\63\1\u016f\26\63\1\173"+
+    "\12\63\43\0\1\172\3\63\1\374\26\63\1\173\12\63"+
+    "\43\0\1\172\27\63\1\u0170\2\63\1\173\12\63\44\0"+
+    "\32\63\1\u0171\12\63\43\0\1\172\16\63\1\374\13\63"+
+    "\1\173\12\63\77\0\12\u0172\10\0\1\371\1\372\1\373"+
+    "\30\0\1\32\4\321\2\33\1\321\15\33\1\321\6\33"+
+    "\12\321\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\32\4\322\2\33\1\322"+
+    "\15\33\1\322\6\33\12\322\1\0\3\33\1\0\2\33"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\32"+
+    "\4\323\2\33\1\323\15\33\1\323\6\33\12\323\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\6\0\2\3\1\24\1\0\1\25\1\0\1\25"+
+    "\1\26\1\35\12\10\1\176\17\10\1\36\12\37\1\25"+
+    "\1\33\1\40\1\33\1\0\1\33\1\41\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\2\0\1\3\13\0\1\221"+
+    "\3\117\1\u0173\26\117\1\36\12\117\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
+    "\1\221\32\117\1\36\4\117\1\u0174\5\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\10\117\1\u0175\12\117\1\u0176\6\117\1\36"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\32\117\1\36\2\117"+
+    "\1\u0177\7\117\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\16\0\1\221\7\117\1\u0178"+
+    "\22\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\7\117"+
+    "\1\u0179\22\117\1\36\3\117\1\u017a\6\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\7\117\1\u017b\22\117\1\36\12\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\31\117\1\u017c\1\36\12\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\1\117\1\u017d\30\117\1\36\12\117"+
+    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\16\0\1\221\7\117\1\u017e\1\117\1\u017f"+
+    "\20\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\22\117"+
+    "\1\u0180\7\117\1\36\2\117\1\u0181\7\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\7\117\1\u0182\22\117\1\36\12\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\7\117\1\u0183\5\117\1\u0184\14\117"+
+    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\16\0\1\221\23\117\1\u0185"+
+    "\6\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\32\117"+
+    "\1\36\3\117\1\u0186\6\117\1\0\3\33\1\0\2\33"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
+    "\17\117\1\u0187\12\117\1\36\12\117\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
+    "\1\221\32\117\1\36\1\u0188\11\117\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\17\0"+
+    "\32\u0189\1\0\12\u0189\11\0\1\u018a\1\0\1\u018b\27\0"+
+    "\46\u0154\1\u0156\2\u0154\1\u0157\3\u0154\1\u0158\5\0\2\u0154"+
+    "\4\0\1\u0154\17\0\1\u018c\32\u0155\1\u018d\12\u0155\1\u018e"+
+    "\2\u0154\1\u0157\3\u0154\1\u0158\1\0\1\u018f\3\0\2\u0154"+
+    "\4\0\1\u0154\17\0\46\u0156\1\0\2\u0156\1\u0190\3\u0156"+
+    "\1\u0158\5\0\2\u0156\4\0\1\u0156\20\0\4\u0191\2\0"+
+    "\1\u0191\15\0\1\u0191\6\0\12\u0191\44\0\32\u0192\1\0"+
+    "\12\u0192\13\0\1\u0159\30\0\4\u0193\2\0\1\u0193\15\0"+
+    "\1\u0193\6\0\12\u0193\1\u0194\42\0\1\u0195\32\u0196\1\u0195"+
+    "\12\u0196\1\u0197\2\u0195\1\u0198\3\u0195\1\u0199\3\0\1\u019a"+
+    "\1\0\2\u0195\4\0\1\u0195\17\0\1\221\12\117\1\226"+
+    "\17\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\6\0\1\3\2\4"+
+    "\2\0\2\27\1\30\1\254\32\10\1\36\12\u015d\1\341"+
+    "\1\33\1\46\1\33\1\0\2\47\1\34\1\321\1\322"+
+    "\1\323\2\0\1\27\1\33\4\0\2\33\2\0\1\4"+
+    "\3\0\1\3\2\4\2\0\2\27\1\30\1\254\32\10"+
+    "\1\36\12\u019b\1\341\1\33\1\46\1\33\1\0\2\47"+
+    "\1\34\1\321\1\322\1\323\2\0\1\27\1\33\4\0"+
+    "\2\33\2\0\1\4\3\0\1\3\2\4\2\0\2\27"+
+    "\1\30\1\254\32\10\1\36\1\u015d\1\u019c\1\u019b\2\u015d"+
+    "\2\u019b\2\u015d\1\u019b\1\341\1\33\1\46\1\33\1\0"+
+    "\2\47\1\34\1\321\1\322\1\323\2\0\1\27\1\33"+
+    "\4\0\2\33\2\0\1\4\61\0\1\356\43\0\4\u019d"+
+    "\2\0\1\u019d\15\0\1\u019d\6\0\12\u019d\1\u0161\43\0"+
+    "\4\u019e\2\0\1\u019e\15\0\1\u019e\6\0\12\u019e\1\u019f"+
+    "\43\0\4\u01a0\2\0\1\u01a0\15\0\1\u01a0\6\0\12\u01a0"+
+    "\1\u01a1\13\0\1\264\26\0\1\365\4\u01a0\2\0\1\u01a0"+
+    "\15\0\1\u01a0\6\0\12\u01a2\1\u01a1\13\0\1\264\26\0"+
+    "\1\365\4\u01a0\2\0\1\u01a0\15\0\1\u01a0\6\0\12\u01a3"+
+    "\1\u01a1\13\0\1\264\26\0\1\365\4\u01a0\2\0\1\u01a0"+
+    "\15\0\1\u01a0\6\0\1\u01a2\1\u01a4\1\u01a3\2\u01a2\2\u01a3"+
+    "\2\u01a2\1\u01a3\1\u01a1\13\0\1\264\27\0\4\u01a5\2\0"+
+    "\1\u01a5\15\0\1\u01a5\6\0\12\u01a5\1\u0128\13\0\1\264"+
+    "\26\0\1\365\4\u01a5\2\0\1\u01a5\15\0\1\u01a5\6\0"+
+    "\12\u01a5\1\u0128\13\0\1\264\74\0\1\364\13\0\1\264"+
+    "\62\0\1\u01a6\2\u01a7\1\u01a6\4\u01a7\1\u01a8\1\u01a7\43\0"+
+    "\1\u0169\110\0\1\u0169\33\0\2\u016a\1\0\2\u016a\2\0"+
+    "\2\u016a\45\0\4\371\2\0\1\371\15\0\1\371\6\0"+
+    "\12\371\44\0\4\372\2\0\1\372\15\0\1\372\6\0"+
+    "\12\372\44\0\4\373\2\0\1\373\15\0\1\373\6\0"+
+    "\12\373\43\0\1\172\20\63\1\u01a9\11\63\1\173\12\63"+
+    "\43\0\1\172\3\63\1\u0107\26\63\1\173\12\63\44\0"+
+    "\2\63\1\u01aa\2\63\1\u01ab\1\u01ac\1\u01ad\2\63\1\u01ae"+
+    "\2\63\1\u01af\3\63\1\u01b0\1\u01b1\1\u01b2\1\63\1\u01b3"+
+    "\1\u01b4\1\63\1\u01b5\1\u01b6\1\173\1\u01b7\2\63\1\u01b8"+
+    "\1\63\1\u01b9\1\u01ba\3\63\77\0\12\u01bb\10\0\1\371"+
+    "\1\372\1\373\30\0\1\221\24\117\1\u01bc\5\117\1\36"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\1\117\1\u01bd\30\117"+
+    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\16\0\1\221\14\117\1\u01be"+
+    "\15\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\1\117"+
+    "\1\u01bf\30\117\1\36\12\117\1\0\3\33\1\0\2\33"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
+    "\21\117\1\u01c0\10\117\1\36\12\117\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
+    "\1\221\24\117\1\u01c1\5\117\1\36\12\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\24\117\1\u01c2\5\117\1\36\12\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\1\344\31\117\1\36\12\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\24\117\1\u01c3\5\117\1\36\12\117"+
+    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\16\0\1\221\1\117\1\u01c4\30\117\1\36"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\31\117\1\u01c5\1\36"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\24\117\1\u01c6\5\117"+
+    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\16\0\1\221\1\117\1\u01c7"+
+    "\30\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\1\u01c8"+
+    "\31\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\21\117"+
+    "\1\u01c9\10\117\1\36\12\117\1\0\3\33\1\0\2\33"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
+    "\24\117\1\u01ca\5\117\1\36\12\117\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
+    "\1\221\24\117\1\u01cb\5\117\1\36\12\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\4\117\1\u01cc\25\117\1\36\12\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\21\117\1\u01cd\10\117\1\36\12\117"+
+    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\16\0\1\221\24\117\1\u01ce\5\117\1\36"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\32\117\1\36\7\117"+
+    "\1\u01cf\2\117\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\16\0\1\221\1\u01d0\31\117"+
+    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\16\0\1\u01d1\32\u0189\1\u01d2"+
+    "\12\u0189\11\0\1\u018a\31\0\51\u018a\1\u01d3\3\0\3\u018a"+
+    "\1\373\3\0\1\u018a\25\0\4\u01d4\2\0\1\u01d4\15\0"+
+    "\1\u01d4\6\0\12\u01d4\1\u01d5\42\0\1\u0154\32\u0155\1\u0154"+
+    "\12\u0155\1\u0156\2\u0154\1\u0157\3\u0154\1\u0158\5\0\2\u0154"+
+    "\4\0\1\u0154\17\0\1\u0154\32\u0155\1\u018d\12\u0155\1\u0156"+
+    "\2\u0154\1\u0157\3\u0154\1\u0158\5\0\2\u0154\4\0\1\u0154"+
+    "\17\0\34\u0156\12\u01d6\1\0\2\u0156\1\u0190\3\u0156\1\u0158"+
+    "\5\0\2\u0156\4\0\1\u0156\17\0\51\u018f\1\u01d7\3\0"+
+    "\3\u018f\1\373\2\0\1\u01d8\1\u018f\25\0\4\u01d9\2\0"+
+    "\1\u01d9\15\0\1\u01d9\6\0\12\u01d9\44\0\4\u0154\2\0"+
+    "\1\u0154\15\0\1\u0154\6\0\12\u0154\43\0\1\u01da\32\u0192"+
+    "\1\u01db\12\u0192\1\u01dc\10\0\1\u018f\32\0\4\u01dd\2\0"+
+    "\1\u01dd\15\0\1\u01dd\6\0\12\u01dd\1\u01de\110\0\1\u01df"+
+    "\42\0\46\u0195\1\u0197\2\u0195\1\u0198\3\u0195\1\u0199\5\0"+
+    "\2\u0195\4\0\1\u0195\17\0\1\u01e0\32\u0196\1\u01e1\12\u0196"+
+    "\1\u01e2\2\u0195\1\u0198\3\u0195\1\u0199\1\371\1\372\1\373"+
+    "\2\0\2\u0195\4\0\1\u0195\17\0\46\u0197\1\0\2\u0197"+
+    "\1\u01e3\3\u0197\1\u0199\5\0\2\u0197\4\0\1\u0197\20\0"+
+    "\4\u01e4\2\0\1\u01e4\15\0\1\u01e4\6\0\12\u01e4\44\0"+
+    "\32\u01e5\1\0\12\u01e5\13\0\1\u019a\17\0\1\3\2\4"+
+    "\2\0\2\27\1\30\1\254\32\10\1\36\12\163\1\341"+
+    "\1\33\1\46\1\33\1\0\2\47\1\34\1\321\1\322"+
+    "\1\323\2\0\1\27\1\33\4\0\2\33\2\0\1\4"+
+    "\3\0\1\3\2\4\2\0\2\27\1\30\1\254\32\10"+
+    "\1\36\2\u019b\1\163\2\u019b\2\163\2\u019b\1\163\1\341"+
+    "\1\33\1\46\1\33\1\0\2\47\1\34\1\321\1\322"+
+    "\1\323\2\0\1\27\1\33\4\0\2\33\2\0\1\4"+
+    "\14\0\4\u01e6\2\0\1\u01e6\15\0\1\u01e6\6\0\12\u01e6"+
+    "\1\u0161\43\0\4\u01e7\2\0\1\u01e7\15\0\1\u01e7\6\0"+
+    "\12\u01e7\1\u01e8\43\0\4\u01e9\2\0\1\u01e9\15\0\1\u01e9"+
+    "\6\0\1\u01ea\2\u01eb\1\u01ea\4\u01eb\1\u01ec\1\u01eb\14\0"+
+    "\1\264\27\0\4\u01ed\2\0\1\u01ed\15\0\1\u01ed\6\0"+
+    "\12\u01ed\1\u01a1\13\0\1\264\27\0\4\u01e9\2\0\1\u01e9"+
+    "\15\0\1\u01e9\6\0\1\u01ea\2\u01eb\1\u01ea\4\u01eb\1\u01ec"+
+    "\1\u01eb\43\0\1\365\4\u01ed\2\0\1\u01ed\15\0\1\u01ed"+
+    "\6\0\12\u01ee\1\u01a1\13\0\1\264\26\0\1\365\4\u01ed"+
+    "\2\0\1\u01ed\15\0\1\u01ed\6\0\12\u01ed\1\u01a1\13\0"+
+    "\1\264\26\0\1\365\4\u01ed\2\0\1\u01ed\15\0\1\u01ed"+
+    "\6\0\2\u01ee\1\u01ed\2\u01ee\2\u01ed\2\u01ee\1\u01ed\1\u01a1"+
+    "\13\0\1\264\74\0\1\u0128\13\0\1\264\26\0\1\u01ef"+
+    "\33\0\12\u01a7\43\0\1\u01ef\33\0\12\u01f0\43\0\1\u01ef"+
+    "\33\0\1\u01a7\1\u01f1\1\u01f0\2\u01a7\2\u01f0\2\u01a7\1\u01f0"+
+    "\43\0\1\172\12\63\1\374\17\63\1\173\12\63\43\0"+
+    "\1\172\3\63\1\u01f2\26\63\1\173\12\63\43\0\1\172"+
+    "\32\63\1\173\4\63\1\u01f3\5\63\43\0\1\172\10\63"+
+    "\1\u01f4\12\63\1\u01f5\6\63\1\173\12\63\43\0\1\172"+
+    "\32\63\1\173\2\63\1\u01f6\7\63\43\0\1\172\7\63"+
+    "\1\u01f7\22\63\1\173\12\63\43\0\1\172\7\63\1\u01f8"+
+    "\22\63\1\173\3\63\1\u01f9\6\63\43\0\1\172\7\63"+
+    "\1\u01fa\22\63\1\173\12\63\43\0\1\172\31\63\1\u01fb"+
+    "\1\173\12\63\43\0\1\172\1\63\1\u01fc\30\63\1\173"+
+    "\12\63\43\0\1\172\7\63\1\u01fd\1\63\1\u01fe\20\63"+
+    "\1\173\12\63\43\0\1\172\22\63\1\u01ff\7\63\1\173"+
+    "\2\63\1\u0200\7\63\43\0\1\172\7\63\1\u0201\22\63"+
+    "\1\173\12\63\43\0\1\172\7\63\1\u0202\5\63\1\u0203"+
+    "\14\63\1\173\12\63\43\0\1\172\23\63\1\u0204\6\63"+
+    "\1\173\12\63\43\0\1\172\32\63\1\173\3\63\1\u0205"+
+    "\6\63\43\0\1\172\17\63\1\u0206\12\63\1\173\12\63"+
+    "\43\0\1\172\32\63\1\173\1\u0207\11\63\77\0\12\u0208"+
+    "\10\0\1\371\1\372\1\373\30\0\1\221\1\u0209\31\117"+
+    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\16\0\1\221\21\117\1\u020a"+
+    "\10\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\16\117"+
+    "\1\u020b\4\117\1\u020c\6\117\1\36\12\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\32\117\1\36\10\117\1\u020d\1\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\32\117\1\36\10\117\1\u020e\1\117"+
+    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\16\0\1\221\1\u020f\2\117\1\u0210\26\117"+
+    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\16\0\1\221\16\117\1\u0211"+
+    "\13\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\25\117"+
+    "\1\u0212\4\117\1\36\12\117\1\0\3\33\1\0\2\33"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
+    "\32\117\1\36\10\117\1\u0213\1\117\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
+    "\1\221\23\117\1\u0214\6\117\1\36\12\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\31\117\1\u0215\1\36\12\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\26\117\1\u0216\3\117\1\36\12\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\11\117\1\u0217\20\117\1\36\12\117"+
+    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\16\0\1\221\32\117\1\36\3\117\1\u0218"+
+    "\6\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\10\117\1\u0219\21\117"+
+    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\16\0\1\221\3\117\1\u021a"+
+    "\26\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\21\117"+
+    "\1\u021b\6\117\1\u021c\1\117\1\36\12\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\12\117\1\u021d\17\117\1\36\12\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\32\117\1\36\1\117\1\u021e\10\117"+
+    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\16\0\1\221\24\117\1\u021f\5\117\1\36"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\31\117\1\u0220\1\36"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\17\0\32\u0189\1\0\12\u0189\44\0"+
+    "\32\u0189\1\u01d2\12\u0189\44\0\4\u0221\2\0\1\u0221\15\0"+
+    "\1\u0221\6\0\12\u0221\44\0\4\u0222\2\0\1\u0222\15\0"+
+    "\1\u0222\6\0\12\u0222\1\u0223\110\0\1\u0224\42\0\34\u0156"+
+    "\12\u0225\1\0\2\u0156\1\u0190\3\u0156\1\u0158\1\0\1\u018f"+
+    "\3\0\2\u0156\4\0\1\u0156\20\0\4\u0226\2\0\1\u0226"+
+    "\15\0\1\u0226\6\0\12\u0226\63\0\1\u0227\71\0\4\u0156"+
+    "\2\0\1\u0156\15\0\1\u0156\6\0\12\u0156\44\0\32\u0192"+
+    "\1\0\12\u0192\44\0\32\u0192\1\u01db\12\u0192\77\0\12\u0228"+
+    "\44\0\4\u0229\2\0\1\u0229\15\0\1\u0229\6\0\12\u0229"+
+    "\1\u01de\43\0\4\u022a\2\0\1\u022a\15\0\1\u022a\6\0"+
+    "\12\u022a\1\u022b\43\0\4\u022c\2\0\1\u022c\15\0\1\u022c"+
+    "\6\0\1\u022d\2\u022e\1\u022d\4\u022e\1\u022f\1\u022e\14\0"+
+    "\1\u0230\26\0\1\u0195\32\u0196\1\u0195\12\u0196\1\u0197\2\u0195"+
+    "\1\u0198\3\u0195\1\u0199\5\0\2\u0195\4\0\1\u0195\17\0"+
+    "\1\u0195\32\u0196\1\u01e1\12\u0196\1\u0197\2\u0195\1\u0198\3\u0195"+
+    "\1\u0199\5\0\2\u0195\4\0\1\u0195\17\0\34\u0197\12\u0231"+
+    "\1\0\2\u0197\1\u01e3\3\u0197\1\u0199\5\0\2\u0197\4\0"+
+    "\1\u0197\20\0\4\u0232\2\0\1\u0232\15\0\1\u0232\6\0"+
+    "\12\u0232\44\0\4\u0195\2\0\1\u0195\15\0\1\u0195\6\0"+
+    "\12\u0195\43\0\1\u0233\32\u01e5\1\u0234\12\u01e5\1\341\7\0"+
+    "\1\371\1\372\1\373\76\0\1\u0161\43\0\4\u0235\2\0"+
+    "\1\u0235\15\0\1\u0235\6\0\12\u0235\1\u01e8\43\0\4\u0236"+
+    "\2\0\1\u0236\15\0\1\u0236\6\0\12\u0236\1\u0237\43\0"+
+    "\4\u0238\2\0\1\u0238\15\0\1\u0238\6\0\12\u0238\1\u0239"+
+    "\13\0\1\264\26\0\1\365\4\u0238\2\0\1\u0238\15\0"+
+    "\1\u0238\6\0\12\u023a\1\u0239\13\0\1\264\26\0\1\365"+
+    "\4\u0238\2\0\1\u0238\15\0\1\u0238\6\0\12\u023b\1\u0239"+
+    "\13\0\1\264\26\0\1\365\4\u0238\2\0\1\u0238\15\0"+
+    "\1\u0238\6\0\1\u023a\1\u023c\1\u023b\2\u023a\2\u023b\2\u023a"+
+    "\1\u023b\1\u0239\13\0\1\264\27\0\4\u023d\2\0\1\u023d"+
+    "\15\0\1\u023d\6\0\12\u023d\1\u01a1\13\0\1\264\26\0"+
+    "\1\365\4\u023d\2\0\1\u023d\15\0\1\u023d\6\0\12\u023d"+
+    "\1\u01a1\13\0\1\264\62\0\1\u023e\2\u023f\1\u023e\4\u023f"+
+    "\1\u0240\1\u023f\43\0\1\u01ef\110\0\1\u01ef\33\0\2\u01f0"+
+    "\1\0\2\u01f0\2\0\2\u01f0\44\0\1\172\24\63\1\u0241"+
+    "\5\63\1\173\12\63\43\0\1\172\1\63\1\u0242\30\63"+
+    "\1\173\12\63\43\0\1\172\14\63\1\u0243\15\63\1\173"+
+    "\12\63\43\0\1\172\1\63\1\u0244\30\63\1\173\12\63"+
+    "\43\0\1\172\21\63\1\u0245\10\63\1\173\12\63\43\0"+
+    "\1\172\24\63\1\u0246\5\63\1\173\12\63\43\0\1\172"+
+    "\24\63\1\u0247\5\63\1\173\12\63\43\0\1\172\1\u0137"+
+    "\31\63\1\173\12\63\43\0\1\172\24\63\1\u0248\5\63"+
+    "\1\173\12\63\43\0\1\172\1\63\1\u0249\30\63\1\173"+
+    "\12\63\43\0\1\172\31\63\1\u024a\1\173\12\63\43\0"+
+    "\1\172\24\63\1\u024b\5\63\1\173\12\63\43\0\1\172"+
+    "\1\63\1\u024c\30\63\1\173\12\63\43\0\1\172\1\u024d"+
+    "\31\63\1\173\12\63\43\0\1\172\21\63\1\u024e\10\63"+
+    "\1\173\12\63\43\0\1\172\24\63\1\u024f\5\63\1\173"+
+    "\12\63\43\0\1\172\24\63\1\u0250\5\63\1\173\12\63"+
+    "\43\0\1\172\4\63\1\u0251\25\63\1\173\12\63\43\0"+
+    "\1\172\21\63\1\u0252\10\63\1\173\12\63\43\0\1\172"+
+    "\24\63\1\u0253\5\63\1\173\12\63\43\0\1\172\32\63"+
+    "\1\173\7\63\1\u0254\2\63\43\0\1\172\1\u0255\31\63"+
+    "\1\173\12\63\121\0\1\371\1\372\1\373\30\0\1\221"+
+    "\32\117\1\36\1\u0256\11\117\1\0\3\33\1\0\2\33"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
+    "\32\117\1\36\7\117\1\u0257\2\117\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
+    "\1\221\32\117\1\36\6\117\1\350\3\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\32\117\1\36\5\117\1\350\4\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\1\117\1\u0258\30\117\1\36\12\117"+
+    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\16\0\1\221\32\117\1\36\1\117\1\u0259"+
+    "\10\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\1\u025a\27\117\1\u025b"+
+    "\1\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\4\117"+
+    "\1\u025c\25\117\1\36\12\117\1\0\3\33\1\0\2\33"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
+    "\32\117\1\36\1\u025d\11\117\1\0\3\33\1\0\2\33"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
+    "\32\117\1\36\3\117\1\u025e\6\117\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
+    "\1\221\1\u025f\31\117\1\36\12\117\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
+    "\1\221\1\u0257\31\117\1\36\12\117\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
+    "\1\221\32\117\1\36\2\117\1\u0260\7\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\32\117\1\36\2\117\1\u0261\7\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\15\117\1\u0262\14\117\1\36\12\117"+
+    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\16\0\1\221\32\117\1\36\5\117\1\u0263"+
+    "\4\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\32\117\1\36\10\117"+
+    "\1\u0264\1\117\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\16\0\1\221\1\117\1\u0265"+
+    "\30\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\32\117"+
+    "\1\36\3\117\1\u0266\6\117\1\0\3\33\1\0\2\33"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
+    "\32\117\1\36\1\117\1\u0267\10\117\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
+    "\1\221\32\117\1\36\1\117\1\u0268\10\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\24\117\1\u0269\5\117\1\36\12\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\32\117\1\36\3\117\1\u026a\6\117"+
+    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\16\0\1\221\25\117\1\u026b\4\117\1\36"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\17\0\4\u018a\2\0\1\u018a\15\0"+
+    "\1\u018a\6\0\12\u018a\44\0\4\u026c\2\0\1\u026c\15\0"+
+    "\1\u026c\6\0\12\u026c\1\u0223\43\0\4\u026d\2\0\1\u026d"+
+    "\15\0\1\u026d\6\0\12\u026d\1\u026e\43\0\4\u026f\2\0"+
+    "\1\u026f\15\0\1\u026f\6\0\1\u0270\2\u0271\1\u0270\4\u0271"+
+    "\1\u0272\1\u0271\14\0\1\u0273\26\0\34\u0156\12\u0274\1\0"+
+    "\2\u0156\1\u0190\3\u0156\1\u0158\1\0\1\u018f\3\0\2\u0156"+
+    "\4\0\1\u0156\20\0\4\u018f\2\0\1\u018f\15\0\1\u018f"+
+    "\6\0\12\u018f\74\0\1\u0275\113\0\12\u0276\11\0\1\u018f"+
+    "\32\0\4\u0277\2\0\1\u0277\15\0\1\u0277\6\0\12\u0277"+
+    "\1\u01de\43\0\4\u0278\2\0\1\u0278\15\0\1\u0278\6\0"+
+    "\12\u0278\1\u0279\43\0\4\u027a\2\0\1\u027a\15\0\1\u027a"+
+    "\6\0\1\u027b\2\u027c\1\u027b\4\u027c\1\u027d\1\u027c\14\0"+
+    "\1\u0230\27\0\4\u027e\2\0\1\u027e\15\0\1\u027e\6\0"+
+    "\12\u027e\1\u027f\13\0\1\u0230\26\0\1\u0280\4\u027e\2\0"+
+    "\1\u027e\15\0\1\u027e\6\0\12\u0281\1\u027f\13\0\1\u0230"+
+    "\26\0\1\u0280\4\u027e\2\0\1\u027e\15\0\1\u027e\6\0"+
+    "\12\u0282\1\u027f\13\0\1\u0230\26\0\1\u0280\4\u027e\2\0"+
+    "\1\u027e\15\0\1\u027e\6\0\1\u0281\1\u0283\1\u0282\2\u0281"+
+    "\2\u0282\2\u0281\1\u0282\1\u027f\13\0\1\u0230\74\0\1\u01dc"+
+    "\10\0\1\u018f\31\0\34\u0197\12\u0284\1\0\2\u0197\1\u01e3"+
+    "\3\u0197\1\u0199\1\371\1\372\1\373\2\0\2\u0197\4\0"+
+    "\1\u0197\20\0\4\u0197\2\0\1\u0197\15\0\1\u0197\6\0"+
+    "\12\u0197\44\0\32\u01e5\1\0\12\u01e5\44\0\32\u01e5\1\u0234"+
+    "\12\u01e5\44\0\4\u0285\2\0\1\u0285\15\0\1\u0285\6\0"+
+    "\12\u0285\1\u01e8\43\0\4\u0286\2\0\1\u0286\15\0\1\u0286"+
+    "\6\0\12\u0286\1\u0287\43\0\4\u0288\2\0\1\u0288\15\0"+
+    "\1\u0288\6\0\1\u0289\2\u028a\1\u0289\4\u028a\1\u028b\1\u028a"+
+    "\14\0\1\264\27\0\4\u028c\2\0\1\u028c\15\0\1\u028c"+
+    "\6\0\12\u028c\1\u0239\13\0\1\264\27\0\4\u0288\2\0"+
+    "\1\u0288\15\0\1\u0288\6\0\1\u0289\2\u028a\1\u0289\4\u028a"+
+    "\1\u028b\1\u028a\43\0\1\365\4\u028c\2\0\1\u028c\15\0"+
+    "\1\u028c\6\0\12\u028d\1\u0239\13\0\1\264\26\0\1\365"+
+    "\4\u028c\2\0\1\u028c\15\0\1\u028c\6\0\12\u028c\1\u0239"+
+    "\13\0\1\264\26\0\1\365\4\u028c\2\0\1\u028c\15\0"+
+    "\1\u028c\6\0\2\u028d\1\u028c\2\u028d\2\u028c\2\u028d\1\u028c"+
+    "\1\u0239\13\0\1\264\74\0\1\u01a1\13\0\1\264\62\0"+
+    "\12\u023f\14\0\1\264\62\0\12\u028e\14\0\1\264\62\0"+
+    "\1\u023f\1\u028f\1\u028e\2\u023f\2\u028e\2\u023f\1\u028e\14\0"+
+    "\1\264\26\0\1\172\1\u0290\31\63\1\173\12\63\43\0"+
+    "\1\172\21\63\1\u0291\10\63\1\173\12\63\43\0\1\172"+
+    "\16\63\1\u0292\4\63\1\u0293\6\63\1\173\12\63\43\0"+
+    "\1\172\32\63\1\173\10\63\1\u0294\1\63\43\0\1\172"+
+    "\32\63\1\173\10\63\1\u0295\1\63\43\0\1\172\1\u0296"+
+    "\2\63\1\u0297\26\63\1\173\12\63\43\0\1\172\16\63"+
+    "\1\u0298\13\63\1\173\12\63\43\0\1\172\25\63\1\u0299"+
+    "\4\63\1\173\12\63\43\0\1\172\32\63\1\173\10\63"+
+    "\1\u029a\1\63\43\0\1\172\23\63\1\u029b\6\63\1\173"+
+    "\12\63\43\0\1\172\31\63\1\u029c\1\173\12\63\43\0"+
+    "\1\172\26\63\1\u029d\3\63\1\173\12\63\43\0\1\172"+
+    "\11\63\1\u029e\20\63\1\173\12\63\43\0\1\172\32\63"+
+    "\1\173\3\63\1\u029f\6\63\43\0\1\172\10\63\1\u02a0"+
+    "\21\63\1\173\12\63\43\0\1\172\3\63\1\u02a1\26\63"+
+    "\1\173\12\63\43\0\1\172\21\63\1\u02a2\6\63\1\u02a3"+
+    "\1\63\1\173\12\63\43\0\1\172\12\63\1\u02a4\17\63"+
+    "\1\173\12\63\43\0\1\172\32\63\1\173\1\63\1\u02a5"+
+    "\10\63\43\0\1\172\24\63\1\u02a6\5\63\1\173\12\63"+
+    "\43\0\1\172\31\63\1\u02a7\1\173\12\63\43\0\1\221"+
+    "\1\u02a8\31\117\1\36\12\117\1\0\3\33\1\0\2\33"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
+    "\25\117\1\226\4\117\1\36\12\117\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
+    "\1\221\32\117\1\36\5\117\1\u02a9\4\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\32\117\1\36\3\117\1\u02a8\6\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\12\117\1\u02aa\17\117\1\36\12\117"+
+    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\16\0\1\221\25\117\1\u02ab\4\117\1\36"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\15\117\1\u02ac\14\117"+
+    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\16\0\1\221\2\117\1\u0257"+
+    "\27\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\1\117"+
+    "\1\226\30\117\1\36\12\117\1\0\3\33\1\0\2\33"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
+    "\11\117\1\u02ad\20\117\1\36\12\117\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
+    "\1\221\1\u02ae\31\117\1\36\12\117\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
+    "\1\221\1\u02af\31\117\1\36\12\117\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
+    "\1\221\2\117\1\u02b0\27\117\1\36\12\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\32\117\1\36\4\117\1\235\5\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\1\u02b1\31\117\1\36\12\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\25\117\1\u02b2\4\117\1\36\12\117"+
+    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\16\0\1\221\32\117\1\36\4\117\1\u02a8"+
+    "\5\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\32\117\1\36\11\117"+
+    "\1\u02a8\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\32\117\1\36\2\117"+
+    "\1\u02a8\7\117\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\16\0\1\221\16\117\1\u02b3"+
+    "\13\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\32\117"+
+    "\1\36\3\117\1\u02b4\6\117\1\0\3\33\1\0\2\33"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
+    "\24\117\1\u02b5\5\117\1\36\12\117\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\17\0"+
+    "\4\u02b6\2\0\1\u02b6\15\0\1\u02b6\6\0\12\u02b6\1\u0223"+
+    "\43\0\4\u02b7\2\0\1\u02b7\15\0\1\u02b7\6\0\12\u02b7"+
+    "\1\u02b8\43\0\4\u02b9\2\0\1\u02b9\15\0\1\u02b9\6\0"+
+    "\1\u02ba\2\u02bb\1\u02ba\4\u02bb\1\u02bc\1\u02bb\14\0\1\u0273"+
+    "\27\0\4\u02bd\2\0\1\u02bd\15\0\1\u02bd\6\0\12\u02bd"+
+    "\1\u02be\13\0\1\u0273\26\0\1\u02bf\4\u02bd\2\0\1\u02bd"+
+    "\15\0\1\u02bd\6\0\12\u02c0\1\u02be\13\0\1\u0273\26\0"+
+    "\1\u02bf\4\u02bd\2\0\1\u02bd\15\0\1\u02bd\6\0\12\u02c1"+
+    "\1\u02be\13\0\1\u0273\26\0\1\u02bf\4\u02bd\2\0\1\u02bd"+
+    "\15\0\1\u02bd\6\0\1\u02c0\1\u02c2\1\u02c1\2\u02c0\2\u02c1"+
+    "\2\u02c0\1\u02c1\1\u02be\13\0\1\u0273\105\0\1\u018a\31\0"+
+    "\34\u0156\12\u02c3\1\0\2\u0156\1\u0190\3\u0156\1\u0158\1\0"+
+    "\1\u018f\3\0\2\u0156\4\0\1\u0156\35\0\1\u02c4\126\0"+
+    "\12\u02c5\11\0\1\u018f\77\0\1\u01de\43\0\4\u02c6\2\0"+
+    "\1\u02c6\15\0\1\u02c6\6\0\12\u02c6\1\u0279\43\0\4\u02c7"+
+    "\2\0\1\u02c7\15\0\1\u02c7\6\0\12\u02c7\1\u02c8\43\0"+
+    "\4\u02c9\2\0\1\u02c9\15\0\1\u02c9\6\0\12\u02c9\1\u02ca"+
+    "\13\0\1\u0230\26\0\1\u0280\4\u02c9\2\0\1\u02c9\15\0"+
+    "\1\u02c9\6\0\12\u02cb\1\u02ca\13\0\1\u0230\26\0\1\u0280"+
+    "\4\u02c9\2\0\1\u02c9\15\0\1\u02c9\6\0\12\u02cc\1\u02ca"+
+    "\13\0\1\u0230\26\0\1\u0280\4\u02c9\2\0\1\u02c9\15\0"+
+    "\1\u02c9\6\0\1\u02cb\1\u02cd\1\u02cc\2\u02cb\2\u02cc\2\u02cb"+
+    "\1\u02cc\1\u02ca\13\0\1\u0230\27\0\4\u02ce\2\0\1\u02ce"+
+    "\15\0\1\u02ce\6\0\12\u02ce\1\u027f\13\0\1\u0230\27\0"+
+    "\4\u027a\2\0\1\u027a\15\0\1\u027a\6\0\1\u027b\2\u027c"+
+    "\1\u027b\4\u027c\1\u027d\1\u027c\77\0\1\u02cf\2\u02d0\1\u02cf"+
+    "\4\u02d0\1\u02d1\1\u02d0\43\0\1\u0280\4\u02ce\2\0\1\u02ce"+
+    "\15\0\1\u02ce\6\0\12\u02d2\1\u027f\13\0\1\u0230\26\0"+
+    "\1\u0280\4\u02ce\2\0\1\u02ce\15\0\1\u02ce\6\0\12\u02ce"+
+    "\1\u027f\13\0\1\u0230\26\0\1\u0280\4\u02ce\2\0\1\u02ce"+
+    "\15\0\1\u02ce\6\0\2\u02d2\1\u02ce\2\u02d2\2\u02ce\2\u02d2"+
+    "\1\u02ce\1\u027f\13\0\1\u0230\26\0\34\u0197\12\u02d3\1\0"+
+    "\2\u0197\1\u01e3\3\u0197\1\u0199\1\371\1\372\1\373\2\0"+
+    "\2\u0197\4\0\1\u0197\65\0\1\u01e8\43\0\4\u02d4\2\0"+
+    "\1\u02d4\15\0\1\u02d4\6\0\12\u02d4\1\u0287\43\0\4\u02d5"+
+    "\2\0\1\u02d5\15\0\1\u02d5\6\0\12\u02d5\1\u02d6\43\0"+
+    "\4\u02d7\2\0\1\u02d7\15\0\1\u02d7\6\0\12\u02d7\1\u02d8"+
+    "\13\0\1\264\26\0\1\365\4\u02d7\2\0\1\u02d7\15\0"+
+    "\1\u02d7\6\0\12\u02d9\1\u02d8\13\0\1\264\26\0\1\365"+
+    "\4\u02d7\2\0\1\u02d7\15\0\1\u02d7\6\0\12\u02da\1\u02d8"+
+    "\13\0\1\264\26\0\1\365\4\u02d7\2\0\1\u02d7\15\0"+
+    "\1\u02d7\6\0\1\u02d9\1\u02db\1\u02da\2\u02d9\2\u02da\2\u02d9"+
+    "\1\u02da\1\u02d8\13\0\1\264\27\0\4\u02dc\2\0\1\u02dc"+
+    "\15\0\1\u02dc\6\0\12\u02dc\1\u0239\13\0\1\264\26\0"+
+    "\1\365\4\u02dc\2\0\1\u02dc\15\0\1\u02dc\6\0\12\u02dc"+
+    "\1\u0239\13\0\1\264\110\0\1\264\62\0\2\u028e\1\0"+
+    "\2\u028e\2\0\2\u028e\15\0\1\264\26\0\1\172\32\63"+
+    "\1\173\1\u02dd\11\63\43\0\1\172\32\63\1\173\7\63"+
+    "\1\u02de\2\63\43\0\1\172\32\63\1\173\6\63\1\u013c"+
+    "\3\63\43\0\1\172\32\63\1\173\5\63\1\u013c\4\63"+
+    "\43\0\1\172\1\63\1\u02df\30\63\1\173\12\63\43\0"+
+    "\1\172\32\63\1\173\1\63\1\u02e0\10\63\43\0\1\172"+
+    "\1\u02e1\27\63\1\u02e2\1\63\1\173\12\63\43\0\1\172"+
+    "\4\63\1\u02e3\25\63\1\173\12\63\43\0\1\172\32\63"+
+    "\1\173\1\u02e4\11\63\43\0\1\172\32\63\1\173\3\63"+
+    "\1\u02e5\6\63\43\0\1\172\1\u02e6\31\63\1\173\12\63"+
+    "\43\0\1\172\1\u02de\31\63\1\173\12\63\43\0\1\172"+
+    "\32\63\1\173\2\63\1\u02e7\7\63\43\0\1\172\32\63"+
+    "\1\173\2\63\1\u02e8\7\63\43\0\1\172\15\63\1\u02e9"+
+    "\14\63\1\173\12\63\43\0\1\172\32\63\1\173\5\63"+
+    "\1\u02ea\4\63\43\0\1\172\32\63\1\173\10\63\1\u02eb"+
+    "\1\63\43\0\1\172\1\63\1\u02ec\30\63\1\173\12\63"+
+    "\43\0\1\172\32\63\1\173\3\63\1\u02ed\6\63\43\0"+
+    "\1\172\32\63\1\173\1\63\1\u02ee\10\63\43\0\1\172"+
+    "\32\63\1\173\1\63\1\u02ef\10\63\43\0\1\172\24\63"+
+    "\1\u02f0\5\63\1\173\12\63\43\0\1\172\32\63\1\173"+
+    "\3\63\1\u02f1\6\63\43\0\1\172\25\63\1\u02f2\4\63"+
+    "\1\173\12\63\43\0\1\221\2\117\1\226\27\117\1\36"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\3\117\1\u02f3\26\117"+
+    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\16\0\1\221\32\117\1\36"+
+    "\11\117\1\u02f4\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\16\0\1\221\32\117\1\36"+
+    "\11\117\1\u02f5\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\16\0\1\221\32\117\1\36"+
+    "\7\117\1\u02f6\2\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\32\117"+
+    "\1\36\4\117\1\u02f7\5\117\1\0\3\33\1\0\2\33"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
+    "\26\117\1\u02f8\3\117\1\36\12\117\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
+    "\1\221\30\117\1\u02f9\1\117\1\36\12\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\11\117\1\343\20\117\1\36\12\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\12\117\1\u02fa\17\117\1\36\12\117"+
+    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\16\0\1\221\17\117\1\236\12\117\1\36"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\32\117\1\36\4\117"+
+    "\1\u02fb\5\117\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\16\0\1\221\30\117\1\u02fc"+
+    "\1\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\30\117"+
+    "\1\u02fd\1\117\1\36\12\117\1\0\3\33\1\0\2\33"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\64\0\1\u0223"+
+    "\43\0\4\u02fe\2\0\1\u02fe\15\0\1\u02fe\6\0\12\u02fe"+
+    "\1\u02b8\43\0\4\u02ff\2\0\1\u02ff\15\0\1\u02ff\6\0"+
+    "\12\u02ff\1\u0300\43\0\4\u0301\2\0\1\u0301\15\0\1\u0301"+
+    "\6\0\12\u0301\1\u0302\13\0\1\u0273\26\0\1\u02bf\4\u0301"+
+    "\2\0\1\u0301\15\0\1\u0301\6\0\12\u0303\1\u0302\13\0"+
+    "\1\u0273\26\0\1\u02bf\4\u0301\2\0\1\u0301\15\0\1\u0301"+
+    "\6\0\12\u0304\1\u0302\13\0\1\u0273\26\0\1\u02bf\4\u0301"+
+    "\2\0\1\u0301\15\0\1\u0301\6\0\1\u0303\1\u0305\1\u0304"+
+    "\2\u0303\2\u0304\2\u0303\1\u0304\1\u0302\13\0\1\u0273\27\0"+
+    "\4\u0306\2\0\1\u0306\15\0\1\u0306\6\0\12\u0306\1\u02be"+
+    "\13\0\1\u0273\27\0\4\u02b9\2\0\1\u02b9\15\0\1\u02b9"+
+    "\6\0\1\u02ba\2\u02bb\1\u02ba\4\u02bb\1\u02bc\1\u02bb\77\0"+
+    "\1\u0307\2\u0308\1\u0307\4\u0308\1\u0309\1\u0308\43\0\1\u02bf"+
+    "\4\u0306\2\0\1\u0306\15\0\1\u0306\6\0\12\u030a\1\u02be"+
+    "\13\0\1\u0273\26\0\1\u02bf\4\u0306\2\0\1\u0306\15\0"+
+    "\1\u0306\6\0\12\u0306\1\u02be\13\0\1\u0273\26\0\1\u02bf"+
+    "\4\u0306\2\0\1\u0306\15\0\1\u0306\6\0\2\u030a\1\u0306"+
+    "\2\u030a\2\u0306\2\u030a\1\u0306\1\u02be\13\0\1\u0273\26\0"+
+    "\34\u0156\12\u030b\1\0\2\u0156\1\u0190\3\u0156\1\u0158\1\0"+
+    "\1\u018f\3\0\2\u0156\4\0\1\u0156\23\0\1\u030c\140\0"+
+    "\12\u030d\11\0\1\u018f\32\0\4\u030e\2\0\1\u030e\15\0"+
+    "\1\u030e\6\0\12\u030e\1\u0279\43\0\4\u030f\2\0\1\u030f"+
+    "\15\0\1\u030f\6\0\12\u030f\1\u0310\43\0\4\u0311\2\0"+
+    "\1\u0311\15\0\1\u0311\6\0\1\u0312\2\u0313\1\u0312\4\u0313"+
+    "\1\u0314\1\u0313\14\0\1\u0230\27\0\4\u0315\2\0\1\u0315"+
+    "\15\0\1\u0315\6\0\12\u0315\1\u02ca\13\0\1\u0230\27\0"+
+    "\4\u0311\2\0\1\u0311\15\0\1\u0311\6\0\1\u0312\2\u0313"+
+    "\1\u0312\4\u0313\1\u0314\1\u0313\43\0\1\u0280\4\u0315\2\0"+
+    "\1\u0315\15\0\1\u0315\6\0\12\u0316\1\u02ca\13\0\1\u0230"+
+    "\26\0\1\u0280\4\u0315\2\0\1\u0315\15\0\1\u0315\6\0"+
+    "\12\u0315\1\u02ca\13\0\1\u0230\26\0\1\u0280\4\u0315\2\0"+
+    "\1\u0315\15\0\1\u0315\6\0\2\u0316\1\u0315\2\u0316\2\u0315"+
+    "\2\u0316\1\u0315\1\u02ca\13\0\1\u0230\27\0\4\u0317\2\0"+
+    "\1\u0317\15\0\1\u0317\6\0\12\u0317\1\u027f\13\0\1\u0230"+
+    "\26\0\1\u0318\33\0\12\u02d0\43\0\1\u0318\33\0\12\u0319"+
+    "\43\0\1\u0318\33\0\1\u02d0\1\u031a\1\u0319\2\u02d0\2\u0319"+
+    "\2\u02d0\1\u0319\43\0\1\u0280\4\u0317\2\0\1\u0317\15\0"+
+    "\1\u0317\6\0\12\u0317\1\u027f\13\0\1\u0230\26\0\34\u0197"+
+    "\12\u031b\1\0\2\u0197\1\u01e3\3\u0197\1\u0199\1\371\1\372"+
+    "\1\373\2\0\2\u0197\4\0\1\u0197\20\0\4\u031c\2\0"+
+    "\1\u031c\15\0\1\u031c\6\0\12\u031c\1\u0287\43\0\4\u031d"+
+    "\2\0\1\u031d\15\0\1\u031d\6\0\12\u031d\1\u031e\43\0"+
+    "\4\u031f\2\0\1\u031f\15\0\1\u031f\6\0\1\u0320\2\u0321"+
+    "\1\u0320\4\u0321\1\u0322\1\u0321\14\0\1\264\27\0\4\u0323"+
+    "\2\0\1\u0323\15\0\1\u0323\6\0\12\u0323\1\u02d8\13\0"+
+    "\1\264\27\0\4\u031f\2\0\1\u031f\15\0\1\u031f\6\0"+
+    "\1\u0320\2\u0321\1\u0320\4\u0321\1\u0322\1\u0321\43\0\1\365"+
+    "\4\u0323\2\0\1\u0323\15\0\1\u0323\6\0\12\u0324\1\u02d8"+
+    "\13\0\1\264\26\0\1\365\4\u0323\2\0\1\u0323\15\0"+
+    "\1\u0323\6\0\12\u0323\1\u02d8\13\0\1\264\26\0\1\365"+
+    "\4\u0323\2\0\1\u0323\15\0\1\u0323\6\0\2\u0324\1\u0323"+
+    "\2\u0324\2\u0323\2\u0324\1\u0323\1\u02d8\13\0\1\264\74\0"+
+    "\1\u0239\13\0\1\264\26\0\1\172\1\u0325\31\63\1\173"+
+    "\12\63\43\0\1\172\25\63\1\374\4\63\1\173\12\63"+
+    "\43\0\1\172\32\63\1\173\5\63\1\u0326\4\63\43\0"+
+    "\1\172\32\63\1\173\3\63\1\u0325\6\63\43\0\1\172"+
+    "\12\63\1\u0327\17\63\1\173\12\63\43\0\1\172\25\63"+
+    "\1\u0328\4\63\1\173\12\63\43\0\1\172\15\63\1\u0329"+
+    "\14\63\1\173\12\63\43\0\1\172\2\63\1\u02de\27\63"+
+    "\1\173\12\63\43\0\1\172\1\63\1\374\30\63\1\173"+
+    "\12\63\43\0\1\172\11\63\1\u032a\20\63\1\173\12\63"+
+    "\43\0\1\172\1\u032b\31\63\1\173\12\63\43\0\1\172"+
+    "\1\u032c\31\63\1\173\12\63\43\0\1\172\2\63\1\u032d"+
+    "\27\63\1\173\12\63\43\0\1\172\32\63\1\173\4\63"+
+    "\1\u0103\5\63\43\0\1\172\1\u032e\31\63\1\173\12\63"+
+    "\43\0\1\172\25\63\1\u032f\4\63\1\173\12\63\43\0"+
+    "\1\172\32\63\1\173\4\63\1\u0325\5\63\43\0\1\172"+
+    "\32\63\1\173\11\63\1\u0325\43\0\1\172\32\63\1\173"+
+    "\2\63\1\u0325\7\63\43\0\1\172\16\63\1\u0330\13\63"+
+    "\1\173\12\63\43\0\1\172\32\63\1\173\3\63\1\u0331"+
+    "\6\63\43\0\1\172\24\63\1\u0332\5\63\1\173\12\63"+
+    "\43\0\1\221\32\117\1\36\10\117\1\u025e\1\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\1\u0333\31\117\1\36\12\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\7\117\1\u0334\22\117\1\36\12\117"+
+    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\16\0\1\221\1\u0335\31\117\1\36\12\117"+
+    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\16\0\1\221\25\117\1\u0336\4\117\1\36"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\32\117\1\36\11\117"+
+    "\1\u0337\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\1\u0338\31\117\1\36"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\12\117\1\u0339\17\117"+
+    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\16\0\1\221\1\u033a\31\117"+
+    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\16\0\1\221\10\117\1\u033b"+
+    "\21\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\31\117"+
+    "\1\u033c\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\17\0\4\u033d\2\0"+
+    "\1\u033d\15\0\1\u033d\6\0\12\u033d\1\u02b8\43\0\4\u033e"+
+    "\2\0\1\u033e\15\0\1\u033e\6\0\12\u033e\1\u033f\43\0"+
+    "\4\u0340\2\0\1\u0340\15\0\1\u0340\6\0\1\u0341\2\u0342"+
+    "\1\u0341\4\u0342\1\u0343\1\u0342\14\0\1\u0273\27\0\4\u0344"+
+    "\2\0\1\u0344\15\0\1\u0344\6\0\12\u0344\1\u0302\13\0"+
+    "\1\u0273\27\0\4\u0340\2\0\1\u0340\15\0\1\u0340\6\0"+
+    "\1\u0341\2\u0342\1\u0341\4\u0342\1\u0343\1\u0342\43\0\1\u02bf"+
+    "\4\u0344\2\0\1\u0344\15\0\1\u0344\6\0\12\u0345\1\u0302"+
+    "\13\0\1\u0273\26\0\1\u02bf\4\u0344\2\0\1\u0344\15\0"+
+    "\1\u0344\6\0\12\u0344\1\u0302\13\0\1\u0273\26\0\1\u02bf"+
+    "\4\u0344\2\0\1\u0344\15\0\1\u0344\6\0\2\u0345\1\u0344"+
+    "\2\u0345\2\u0344\2\u0345\1\u0344\1\u0302\13\0\1\u0273\27\0"+
+    "\4\u0346\2\0\1\u0346\15\0\1\u0346\6\0\12\u0346\1\u02be"+
+    "\13\0\1\u0273\26\0\1\u0347\33\0\12\u0308\43\0\1\u0347"+
+    "\33\0\12\u0348\43\0\1\u0347\33\0\1\u0308\1\u0349\1\u0348"+
+    "\2\u0308\2\u0348\2\u0308\1\u0348\43\0\1\u02bf\4\u0346\2\0"+
+    "\1\u0346\15\0\1\u0346\6\0\12\u0346\1\u02be\13\0\1\u0273"+
+    "\26\0\46\u0156\1\0\2\u0156\1\u0190\3\u0156\1\u0158\1\0"+
+    "\1\u018f\3\0\2\u0156\4\0\1\u0156\103\0\1\u034a\60\0"+
+    "\12\u034b\11\0\1\u018f\77\0\1\u0279\43\0\4\u034c\2\0"+
+    "\1\u034c\15\0\1\u034c\6\0\12\u034c\1\u0310\43\0\4\u034d"+
+    "\2\0\1\u034d\15\0\1\u034d\6\0\12\u034d\1\u034e\43\0"+
+    "\4\u034f\2\0\1\u034f\15\0\1\u034f\6\0\12\u034f\1\u0350"+
+    "\13\0\1\u0230\26\0\1\u0280\4\u034f\2\0\1\u034f\15\0"+
+    "\1\u034f\6\0\12\u0351\1\u0350\13\0\1\u0230\26\0\1\u0280"+
+    "\4\u034f\2\0\1\u034f\15\0\1\u034f\6\0\12\u0352\1\u0350"+
+    "\13\0\1\u0230\26\0\1\u0280\4\u034f\2\0\1\u034f\15\0"+
+    "\1\u034f\6\0\1\u0351\1\u0353\1\u0352\2\u0351\2\u0352\2\u0351"+
+    "\1\u0352\1\u0350\13\0\1\u0230\27\0\4\u0354\2\0\1\u0354"+
+    "\15\0\1\u0354\6\0\12\u0354\1\u02ca\13\0\1\u0230\26\0"+
+    "\1\u0280\4\u0354\2\0\1\u0354\15\0\1\u0354\6\0\12\u0354"+
+    "\1\u02ca\13\0\1\u0230\74\0\1\u027f\13\0\1\u0230\62\0"+
+    "\1\u0355\2\u0356\1\u0355\4\u0356\1\u0357\1\u0356\43\0\1\u0318"+
+    "\110\0\1\u0318\33\0\2\u0319\1\0\2\u0319\2\0\2\u0319"+
+    "\44\0\34\u0197\12\u0358\1\0\2\u0197\1\u01e3\3\u0197\1\u0199"+
+    "\1\371\1\372\1\373\2\0\2\u0197\4\0\1\u0197\65\0"+
+    "\1\u0287\43\0\4\u0359\2\0\1\u0359\15\0\1\u0359\6\0"+
+    "\12\u0359\1\u031e\43\0\4\u035a\2\0\1\u035a\15\0\1\u035a"+
+    "\6\0\1\u035b\2\u035c\1\u035b\4\u035c\1\u035d\1\u035c\1\u035e"+
+    "\43\0\4\u035f\2\0\1\u035f\15\0\1\u035f\6\0\12\u035f"+
+    "\1\u0360\13\0\1\264\26\0\1\365\4\u035f\2\0\1\u035f"+
+    "\15\0\1\u035f\6\0\12\u0361\1\u0360\13\0\1\264\26\0"+
+    "\1\365\4\u035f\2\0\1\u035f\15\0\1\u035f\6\0\12\u0362"+
+    "\1\u0360\13\0\1\264\26\0\1\365\4\u035f\2\0\1\u035f"+
+    "\15\0\1\u035f\6\0\1\u0361\1\u0363\1\u0362\2\u0361\2\u0362"+
+    "\2\u0361\1\u0362\1\u0360\13\0\1\264\27\0\4\u0364\2\0"+
+    "\1\u0364\15\0\1\u0364\6\0\12\u0364\1\u02d8\13\0\1\264"+
+    "\26\0\1\365\4\u0364\2\0\1\u0364\15\0\1\u0364\6\0"+
+    "\12\u0364\1\u02d8\13\0\1\264\26\0\1\172\2\63\1\374"+
+    "\27\63\1\173\12\63\43\0\1\172\3\63\1\u0365\26\63"+
+    "\1\173\12\63\43\0\1\172\32\63\1\173\11\63\1\u0366"+
+    "\43\0\1\172\32\63\1\173\11\63\1\u0367\43\0\1\172"+
+    "\32\63\1\173\7\63\1\u0368\2\63\43\0\1\172\32\63"+
+    "\1\173\4\63\1\u0369\5\63\43\0\1\172\26\63\1\u036a"+
+    "\3\63\1\173\12\63\43\0\1\172\30\63\1\u036b\1\63"+
+    "\1\173\12\63\43\0\1\172\11\63\1\u0136\20\63\1\173"+
+    "\12\63\43\0\1\172\12\63\1\u036c\17\63\1\173\12\63"+
+    "\43\0\1\172\17\63\1\u0104\12\63\1\173\12\63\43\0"+
+    "\1\172\32\63\1\173\4\63\1\u036d\5\63\43\0\1\172"+
+    "\30\63\1\u036e\1\63\1\173\12\63\43\0\1\172\30\63"+
+    "\1\u036f\1\63\1\173\12\63\43\0\1\221\32\117\1\36"+
+    "\6\117\1\u0257\3\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\15\117"+
+    "\1\142\14\117\1\36\12\117\1\0\3\33\1\0\2\33"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\16\0\1\221"+
+    "\32\117\1\36\1\117\1\u0370\10\117\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
+    "\1\221\30\117\1\u0371\1\117\1\36\12\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\6\117\1\u0372\23\117\1\36\12\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\32\117\1\36\5\117\1\u0373\4\117"+
+    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\16\0\1\221\22\117\1\226\7\117\1\36"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\32\117\1\36\5\117"+
+    "\1\u0374\4\117\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\16\0\1\221\32\117\1\36"+
+    "\1\117\1\142\10\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\13\117"+
+    "\1\u0375\16\117\1\36\12\117\1\0\3\33\1\0\2\33"+
+    "\1\34\3\33\3\0\1\33\4\0\2\33\64\0\1\u02b8"+
+    "\43\0\4\u0376\2\0\1\u0376\15\0\1\u0376\6\0\12\u0376"+
+    "\1\u033f\43\0\4\u0377\2\0\1\u0377\15\0\1\u0377\6\0"+
+    "\12\u0377\1\u0378\43\0\4\u0379\2\0\1\u0379\15\0\1\u0379"+
+    "\6\0\12\u0379\1\u037a\13\0\1\u0273\26\0\1\u02bf\4\u0379"+
+    "\2\0\1\u0379\15\0\1\u0379\6\0\12\u037b\1\u037a\13\0"+
+    "\1\u0273\26\0\1\u02bf\4\u0379\2\0\1\u0379\15\0\1\u0379"+
+    "\6\0\12\u037c\1\u037a\13\0\1\u0273\26\0\1\u02bf\4\u0379"+
+    "\2\0\1\u0379\15\0\1\u0379\6\0\1\u037b\1\u037d\1\u037c"+
+    "\2\u037b\2\u037c\2\u037b\1\u037c\1\u037a\13\0\1\u0273\27\0"+
+    "\4\u037e\2\0\1\u037e\15\0\1\u037e\6\0\12\u037e\1\u0302"+
+    "\13\0\1\u0273\26\0\1\u02bf\4\u037e\2\0\1\u037e\15\0"+
+    "\1\u037e\6\0\12\u037e\1\u0302\13\0\1\u0273\74\0\1\u02be"+
+    "\13\0\1\u0273\62\0\1\u037f\2\u0380\1\u037f\4\u0380\1\u0381"+
+    "\1\u0380\43\0\1\u0347\110\0\1\u0347\33\0\2\u0348\1\0"+
+    "\2\u0348\2\0\2\u0348\45\0\1\u0382\1\0\1\u0382\5\0"+
+    "\1\u0382\156\0\1\u018f\32\0\4\u0383\2\0\1\u0383\15\0"+
+    "\1\u0383\6\0\12\u0383\1\u0310\43\0\4\u0384\2\0\1\u0384"+
+    "\15\0\1\u0384\6\0\12\u0384\1\u0385\43\0\4\u0386\2\0"+
+    "\1\u0386\15\0\1\u0386\6\0\1\u0387\2\u0388\1\u0387\4\u0388"+
+    "\1\u0389\1\u0388\14\0\1\u0230\27\0\4\u038a\2\0\1\u038a"+
+    "\15\0\1\u038a\6\0\12\u038a\1\u0350\13\0\1\u0230\27\0"+
+    "\4\u0386\2\0\1\u0386\15\0\1\u0386\6\0\1\u0387\2\u0388"+
+    "\1\u0387\4\u0388\1\u0389\1\u0388\43\0\1\u0280\4\u038a\2\0"+
+    "\1\u038a\15\0\1\u038a\6\0\12\u038b\1\u0350\13\0\1\u0230"+
+    "\26\0\1\u0280\4\u038a\2\0\1\u038a\15\0\1\u038a\6\0"+
+    "\12\u038a\1\u0350\13\0\1\u0230\26\0\1\u0280\4\u038a\2\0"+
+    "\1\u038a\15\0\1\u038a\6\0\2\u038b\1\u038a\2\u038b\2\u038a"+
+    "\2\u038b\1\u038a\1\u0350\13\0\1\u0230\74\0\1\u02ca\13\0"+
+    "\1\u0230\26\0\1\u038c\33\0\12\u0356\43\0\1\u038c\33\0"+
+    "\12\u038d\43\0\1\u038c\33\0\1\u0356\1\u038e\1\u038d\2\u0356"+
+    "\2\u038d\2\u0356\1\u038d\43\0\46\u0197\1\0\2\u0197\1\u01e3"+
+    "\3\u0197\1\u0199\1\371\1\372\1\373\2\0\2\u0197\4\0"+
+    "\1\u0197\20\0\4\u038f\2\0\1\u038f\15\0\1\u038f\6\0"+
+    "\12\u038f\1\u031e\43\0\4\u0390\2\0\1\u0390\15\0\1\u0390"+
+    "\6\0\12\u0390\1\u0391\42\0\1\365\4\u0390\2\0\1\u0390"+
+    "\15\0\1\u0390\6\0\12\u0392\1\u0391\42\0\1\365\4\u0390"+
+    "\2\0\1\u0390\15\0\1\u0390\6\0\12\u0393\1\u0391\42\0"+
+    "\1\365\4\u0390\2\0\1\u0390\15\0\1\u0390\6\0\1\u0392"+
+    "\1\u0394\1\u0393\2\u0392\2\u0393\2\u0392\1\u0393\1\u0391\43\0"+
+    "\4\u0395\2\0\1\u0395\15\0\1\u0395\6\0\12\u0395\14\0"+
+    "\1\264\27\0\4\u0396\2\0\1\u0396\15\0\1\u0396\6\0"+
+    "\12\u0396\1\u0360\13\0\1\264\27\0\4\u0395\2\0\1\u0395"+
+    "\15\0\1\u0395\6\0\12\u0395\43\0\1\365\4\u0396\2\0"+
+    "\1\u0396\15\0\1\u0396\6\0\12\u0397\1\u0360\13\0\1\264"+
+    "\26\0\1\365\4\u0396\2\0\1\u0396\15\0\1\u0396\6\0"+
+    "\12\u0396\1\u0360\13\0\1\264\26\0\1\365\4\u0396\2\0"+
+    "\1\u0396\15\0\1\u0396\6\0\2\u0397\1\u0396\2\u0397\2\u0396"+
+    "\2\u0397\1\u0396\1\u0360\13\0\1\264\74\0\1\u02d8\13\0"+
+    "\1\264\26\0\1\172\32\63\1\173\10\63\1\u02e5\1\63"+
+    "\43\0\1\172\1\u0398\31\63\1\173\12\63\43\0\1\172"+
+    "\7\63\1\u0399\22\63\1\173\12\63\43\0\1\172\1\u039a"+
+    "\31\63\1\173\12\63\43\0\1\172\25\63\1\u039b\4\63"+
+    "\1\173\12\63\43\0\1\172\32\63\1\173\11\63\1\u039c"+
+    "\43\0\1\172\1\u039d\31\63\1\173\12\63\43\0\1\172"+
+    "\12\63\1\u039e\17\63\1\173\12\63\43\0\1\172\1\u039f"+
+    "\31\63\1\173\12\63\43\0\1\172\10\63\1\u03a0\21\63"+
+    "\1\173\12\63\43\0\1\172\31\63\1\u03a1\1\173\12\63"+
+    "\43\0\1\221\2\117\1\u03a2\27\117\1\36\12\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\3\117\1\u03a3\26\117\1\36\12\117"+
+    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\16\0\1\221\32\117\1\36\1\117\1\u03a4"+
+    "\10\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\3\117\1\u03a5\26\117"+
+    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\16\0\1\221\1\u03a6\31\117"+
+    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\16\0\1\221\26\117\1\u03a7"+
+    "\3\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\17\0\4\u03a8\2\0"+
+    "\1\u03a8\15\0\1\u03a8\6\0\12\u03a8\1\u033f\43\0\4\u03a9"+
+    "\2\0\1\u03a9\15\0\1\u03a9\6\0\12\u03a9\1\u03aa\43\0"+
+    "\4\u03ab\2\0\1\u03ab\15\0\1\u03ab\6\0\1\u03ac\2\u03ad"+
+    "\1\u03ac\4\u03ad\1\u03ae\1\u03ad\14\0\1\u0273\27\0\4\u03af"+
+    "\2\0\1\u03af\15\0\1\u03af\6\0\12\u03af\1\u037a\13\0"+
+    "\1\u0273\27\0\4\u03ab\2\0\1\u03ab\15\0\1\u03ab\6\0"+
+    "\1\u03ac\2\u03ad\1\u03ac\4\u03ad\1\u03ae\1\u03ad\43\0\1\u02bf"+
+    "\4\u03af\2\0\1\u03af\15\0\1\u03af\6\0\12\u03b0\1\u037a"+
+    "\13\0\1\u0273\26\0\1\u02bf\4\u03af\2\0\1\u03af\15\0"+
+    "\1\u03af\6\0\12\u03af\1\u037a\13\0\1\u0273\26\0\1\u02bf"+
+    "\4\u03af\2\0\1\u03af\15\0\1\u03af\6\0\2\u03b0\1\u03af"+
+    "\2\u03b0\2\u03af\2\u03b0\1\u03af\1\u037a\13\0\1\u0273\74\0"+
+    "\1\u0302\13\0\1\u0273\26\0\1\u03b1\33\0\12\u0380\43\0"+
+    "\1\u03b1\33\0\12\u03b2\43\0\1\u03b1\33\0\1\u0380\1\u03b3"+
+    "\1\u03b2\2\u0380\2\u03b2\2\u0380\1\u03b2\123\0\1\373\76\0"+
+    "\1\u0310\43\0\4\u03b4\2\0\1\u03b4\15\0\1\u03b4\6\0"+
+    "\12\u03b4\1\u0385\43\0\4\u03b5\2\0\1\u03b5\15\0\1\u03b5"+
+    "\6\0\12\u03b5\1\u03b6\43\0\4\u03b7\2\0\1\u03b7\15\0"+
+    "\1\u03b7\6\0\12\u03b7\1\u03b8\13\0\1\u0230\26\0\1\u0280"+
+    "\4\u03b7\2\0\1\u03b7\15\0\1\u03b7\6\0\12\u03b9\1\u03b8"+
+    "\13\0\1\u0230\26\0\1\u0280\4\u03b7\2\0\1\u03b7\15\0"+
+    "\1\u03b7\6\0\12\u03ba\1\u03b8\13\0\1\u0230\26\0\1\u0280"+
+    "\4\u03b7\2\0\1\u03b7\15\0\1\u03b7\6\0\1\u03b9\1\u03bb"+
+    "\1\u03ba\2\u03b9\2\u03ba\2\u03b9\1\u03ba\1\u03b8\13\0\1\u0230"+
+    "\27\0\4\u03bc\2\0\1\u03bc\15\0\1\u03bc\6\0\12\u03bc"+
+    "\1\u0350\13\0\1\u0230\26\0\1\u0280\4\u03bc\2\0\1\u03bc"+
+    "\15\0\1\u03bc\6\0\12\u03bc\1\u0350\13\0\1\u0230\62\0"+
+    "\1\u03bd\2\u03be\1\u03bd\4\u03be\1\u03bf\1\u03be\43\0\1\u038c"+
+    "\110\0\1\u038c\33\0\2\u038d\1\0\2\u038d\2\0\2\u038d"+
+    "\112\0\1\u031e\43\0\4\u03c0\2\0\1\u03c0\15\0\1\u03c0"+
+    "\6\0\12\u03c0\1\u0391\43\0\4\u0395\2\0\1\u0395\15\0"+
+    "\1\u0395\6\0\12\u0395\1\u028e\42\0\1\365\4\u03c0\2\0"+
+    "\1\u03c0\15\0\1\u03c0\6\0\12\u03c1\1\u0391\42\0\1\365"+
+    "\4\u03c0\2\0\1\u03c0\15\0\1\u03c0\6\0\12\u03c0\1\u0391"+
+    "\42\0\1\365\4\u03c0\2\0\1\u03c0\15\0\1\u03c0\6\0"+
+    "\2\u03c1\1\u03c0\2\u03c1\2\u03c0\2\u03c1\1\u03c0\1\u0391\43\0"+
+    "\4\u03c2\2\0\1\u03c2\15\0\1\u03c2\6\0\12\u03c2\14\0"+
+    "\1\264\27\0\4\u03c3\2\0\1\u03c3\15\0\1\u03c3\6\0"+
+    "\12\u03c3\1\u0360\13\0\1\264\26\0\1\365\4\u03c3\2\0"+
+    "\1\u03c3\15\0\1\u03c3\6\0\12\u03c3\1\u0360\13\0\1\264"+
+    "\26\0\1\172\32\63\1\173\6\63\1\u02de\3\63\43\0"+
+    "\1\172\15\63\1\301\14\63\1\173\12\63\43\0\1\172"+
+    "\32\63\1\173\1\63\1\u03c4\10\63\43\0\1\172\30\63"+
+    "\1\u03c5\1\63\1\173\12\63\43\0\1\172\6\63\1\u03c6"+
+    "\23\63\1\173\12\63\43\0\1\172\32\63\1\173\5\63"+
+    "\1\u03c7\4\63\43\0\1\172\22\63\1\374\7\63\1\173"+
+    "\12\63\43\0\1\172\32\63\1\173\5\63\1\u03c8\4\63"+
+    "\43\0\1\172\32\63\1\173\1\63\1\301\10\63\43\0"+
+    "\1\172\13\63\1\u03c9\16\63\1\173\12\63\43\0\1\221"+
+    "\32\117\1\36\7\117\1\u03ca\2\117\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
+    "\1\221\32\117\1\36\10\117\1\142\1\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\32\117\1\36\4\117\1\u03cb\5\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\16\117\1\u03cc\13\117\1\36\12\117"+
+    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\16\0\1\221\26\117\1\u03cd\3\117\1\36"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\16\0\1\221\32\117\1\36\7\117"+
+    "\1\u03ce\2\117\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\64\0\1\u033f\43\0\4\u03cf"+
+    "\2\0\1\u03cf\15\0\1\u03cf\6\0\12\u03cf\1\u03aa\43\0"+
+    "\4\u03d0\2\0\1\u03d0\15\0\1\u03d0\6\0\12\u03d0\1\u03d1"+
+    "\43\0\4\u03d2\2\0\1\u03d2\15\0\1\u03d2\6\0\12\u03d2"+
+    "\1\u03d3\13\0\1\u0273\26\0\1\u02bf\4\u03d2\2\0\1\u03d2"+
+    "\15\0\1\u03d2\6\0\12\u03d4\1\u03d3\13\0\1\u0273\26\0"+
+    "\1\u02bf\4\u03d2\2\0\1\u03d2\15\0\1\u03d2\6\0\12\u03d5"+
+    "\1\u03d3\13\0\1\u0273\26\0\1\u02bf\4\u03d2\2\0\1\u03d2"+
+    "\15\0\1\u03d2\6\0\1\u03d4\1\u03d6\1\u03d5\2\u03d4\2\u03d5"+
+    "\2\u03d4\1\u03d5\1\u03d3\13\0\1\u0273\27\0\4\u03d7\2\0"+
+    "\1\u03d7\15\0\1\u03d7\6\0\12\u03d7\1\u037a\13\0\1\u0273"+
+    "\26\0\1\u02bf\4\u03d7\2\0\1\u03d7\15\0\1\u03d7\6\0"+
+    "\12\u03d7\1\u037a\13\0\1\u0273\62\0\1\u03d8\2\u03d9\1\u03d8"+
+    "\4\u03d9\1\u03da\1\u03d9\43\0\1\u03b1\110\0\1\u03b1\33\0"+
+    "\2\u03b2\1\0\2\u03b2\2\0\2\u03b2\45\0\4\u03db\2\0"+
+    "\1\u03db\15\0\1\u03db\6\0\12\u03db\1\u0385\43\0\4\u03dc"+
+    "\2\0\1\u03dc\15\0\1\u03dc\6\0\12\u03dc\1\u03dd\43\0"+
+    "\4\u03de\2\0\1\u03de\15\0\1\u03de\6\0\1\u03df\2\u03e0"+
+    "\1\u03df\4\u03e0\1\u03e1\1\u03e0\14\0\1\u0230\27\0\4\u03e2"+
+    "\2\0\1\u03e2\15\0\1\u03e2\6\0\12\u03e2\1\u03b8\13\0"+
+    "\1\u0230\27\0\4\u03de\2\0\1\u03de\15\0\1\u03de\6\0"+
+    "\1\u03df\2\u03e0\1\u03df\4\u03e0\1\u03e1\1\u03e0\43\0\1\u0280"+
+    "\4\u03e2\2\0\1\u03e2\15\0\1\u03e2\6\0\12\u03e3\1\u03b8"+
+    "\13\0\1\u0230\26\0\1\u0280\4\u03e2\2\0\1\u03e2\15\0"+
+    "\1\u03e2\6\0\12\u03e2\1\u03b8\13\0\1\u0230\26\0\1\u0280"+
+    "\4\u03e2\2\0\1\u03e2\15\0\1\u03e2\6\0\2\u03e3\1\u03e2"+
+    "\2\u03e3\2\u03e2\2\u03e3\1\u03e2\1\u03b8\13\0\1\u0230\74\0"+
+    "\1\u0350\13\0\1\u0230\62\0\12\u03be\14\0\1\u0230\62\0"+
+    "\12\u03e4\14\0\1\u0230\62\0\1\u03be\1\u03e5\1\u03e4\2\u03be"+
+    "\2\u03e4\2\u03be\1\u03e4\14\0\1\u0230\27\0\4\u03e6\2\0"+
+    "\1\u03e6\15\0\1\u03e6\6\0\12\u03e6\1\u0391\42\0\1\365"+
+    "\4\u03e6\2\0\1\u03e6\15\0\1\u03e6\6\0\12\u03e6\1\u0391"+
+    "\43\0\4\u03e7\2\0\1\u03e7\15\0\1\u03e7\6\0\12\u03e7"+
+    "\14\0\1\264\74\0\1\u0360\13\0\1\264\26\0\1\172"+
+    "\2\63\1\u03e8\27\63\1\173\12\63\43\0\1\172\3\63"+
+    "\1\u03e9\26\63\1\173\12\63\43\0\1\172\32\63\1\173"+
+    "\1\63\1\u03ea\10\63\43\0\1\172\3\63\1\u03eb\26\63"+
+    "\1\173\12\63\43\0\1\172\1\u03ec\31\63\1\173\12\63"+
+    "\43\0\1\172\26\63\1\u03ed\3\63\1\173\12\63\43\0"+
+    "\1\221\1\u03ee\31\117\1\36\12\117\1\0\3\33\1\0"+
+    "\2\33\1\34\3\33\3\0\1\33\4\0\2\33\16\0"+
+    "\1\221\24\117\1\u03ef\5\117\1\36\12\117\1\0\3\33"+
+    "\1\0\2\33\1\34\3\33\3\0\1\33\4\0\2\33"+
+    "\16\0\1\221\1\117\1\u03f0\30\117\1\36\12\117\1\0"+
+    "\3\33\1\0\2\33\1\34\3\33\3\0\1\33\4\0"+
+    "\2\33\16\0\1\221\32\117\1\36\2\117\1\235\7\117"+
+    "\1\0\3\33\1\0\2\33\1\34\3\33\3\0\1\33"+
+    "\4\0\2\33\16\0\1\221\6\117\1\226\23\117\1\36"+
+    "\12\117\1\0\3\33\1\0\2\33\1\34\3\33\3\0"+
+    "\1\33\4\0\2\33\17\0\4\u03f1\2\0\1\u03f1\15\0"+
+    "\1\u03f1\6\0\12\u03f1\1\u03aa\43\0\4\u03f2\2\0\1\u03f2"+
+    "\15\0\1\u03f2\6\0\12\u03f2\1\u03f3\43\0\4\u03f4\2\0"+
+    "\1\u03f4\15\0\1\u03f4\6\0\1\u03f5\2\u03f6\1\u03f5\4\u03f6"+
+    "\1\u03f7\1\u03f6\14\0\1\u0273\27\0\4\u03f8\2\0\1\u03f8"+
+    "\15\0\1\u03f8\6\0\12\u03f8\1\u03d3\13\0\1\u0273\27\0"+
+    "\4\u03f4\2\0\1\u03f4\15\0\1\u03f4\6\0\1\u03f5\2\u03f6"+
+    "\1\u03f5\4\u03f6\1\u03f7\1\u03f6\43\0\1\u02bf\4\u03f8\2\0"+
+    "\1\u03f8\15\0\1\u03f8\6\0\12\u03f9\1\u03d3\13\0\1\u0273"+
+    "\26\0\1\u02bf\4\u03f8\2\0\1\u03f8\15\0\1\u03f8\6\0"+
+    "\12\u03f8\1\u03d3\13\0\1\u0273\26\0\1\u02bf\4\u03f8\2\0"+
+    "\1\u03f8\15\0\1\u03f8\6\0\2\u03f9\1\u03f8\2\u03f9\2\u03f8"+
+    "\2\u03f9\1\u03f8\1\u03d3\13\0\1\u0273\74\0\1\u037a\13\0"+
+    "\1\u0273\62\0\12\u03d9\14\0\1\u0273\62\0\12\u03fa\14\0"+
+    "\1\u0273\62\0\1\u03d9\1\u03fb\1\u03fa\2\u03d9\2\u03fa\2\u03d9"+
+    "\1\u03fa\14\0\1\u0273\74\0\1\u0385\43\0\4\u03fc\2\0"+
+    "\1\u03fc\15\0\1\u03fc\6\0\12\u03fc\1\u03dd\43\0\4\u03fd"+
+    "\2\0\1\u03fd\15\0\1\u03fd\6\0\12\u03fd\1\u03fe\43\0"+
+    "\4\u03ff\2\0\1\u03ff\15\0\1\u03ff\6\0\12\u03ff\1\u0400"+
+    "\13\0\1\u0230\26\0\1\u0280\4\u03ff\2\0\1\u03ff\15\0"+
+    "\1\u03ff\6\0\12\u0401\1\u0400\13\0\1\u0230\26\0\1\u0280"+
+    "\4\u03ff\2\0\1\u03ff\15\0\1\u03ff\6\0\12\u0402\1\u0400"+
+    "\13\0\1\u0230\26\0\1\u0280\4\u03ff\2\0\1\u03ff\15\0"+
+    "\1\u03ff\6\0\1\u0401\1\u0403\1\u0402\2\u0401\2\u0402\2\u0401"+
+    "\1\u0402\1\u0400\13\0\1\u0230\27\0\4\u0404\2\0\1\u0404"+
+    "\15\0\1\u0404\6\0\12\u0404\1\u03b8\13\0\1\u0230\26\0"+
+    "\1\u0280\4\u0404\2\0\1\u0404\15\0\1\u0404\6\0\12\u0404"+
+    "\1\u03b8\13\0\1\u0230\110\0\1\u0230\62\0\2\u03e4\1\0"+
+    "\2\u03e4\2\0\2\u03e4\15\0\1\u0230\74\0\1\u0391\43\0"+
+    "\4\u028e\2\0\1\u028e\15\0\1\u028e\6\0\12\u028e\14\0"+
+    "\1\264\26\0\1\172\32\63\1\173\7\63\1\u0405\2\63"+
+    "\43\0\1\172\32\63\1\173\10\63\1\301\1\63\43\0"+
+    "\1\172\32\63\1\173\4\63\1\u0406\5\63\43\0\1\172"+
+    "\16\63\1\u0407\13\63\1\173\12\63\43\0\1\172\26\63"+
+    "\1\u0408\3\63\1\173\12\63\43\0\1\172\32\63\1\173"+
+    "\7\63\1\u0409\2\63\43\0\1\221\4\117\1\226\25\117"+
+    "\1\36\12\117\1\0\3\33\1\0\2\33\1\34\3\33"+
+    "\3\0\1\33\4\0\2\33\16\0\1\221\24\117\1\142"+
+    "\5\117\1\36\12\117\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\16\0\1\221\32\117"+
+    "\1\36\11\117\1\142\1\0\3\33\1\0\2\33\1\34"+
+    "\3\33\3\0\1\33\4\0\2\33\64\0\1\u03aa\43\0"+
+    "\4\u040a\2\0\1\u040a\15\0\1\u040a\6\0\12\u040a\1\u03f3"+
+    "\43\0\4\u040b\2\0\1\u040b\15\0\1\u040b\6\0\12\u040b"+
+    "\1\u040c\43\0\4\u040d\2\0\1\u040d\15\0\1\u040d\6\0"+
+    "\12\u040d\1\u040e\13\0\1\u0273\26\0\1\u02bf\4\u040d\2\0"+
+    "\1\u040d\15\0\1\u040d\6\0\12\u040f\1\u040e\13\0\1\u0273"+
+    "\26\0\1\u02bf\4\u040d\2\0\1\u040d\15\0\1\u040d\6\0"+
+    "\12\u0410\1\u040e\13\0\1\u0273\26\0\1\u02bf\4\u040d\2\0"+
+    "\1\u040d\15\0\1\u040d\6\0\1\u040f\1\u0411\1\u0410\2\u040f"+
+    "\2\u0410\2\u040f\1\u0410\1\u040e\13\0\1\u0273\27\0\4\u0412"+
+    "\2\0\1\u0412\15\0\1\u0412\6\0\12\u0412\1\u03d3\13\0"+
+    "\1\u0273\26\0\1\u02bf\4\u0412\2\0\1\u0412\15\0\1\u0412"+
+    "\6\0\12\u0412\1\u03d3\13\0\1\u0273\110\0\1\u0273\62\0"+
+    "\2\u03fa\1\0\2\u03fa\2\0\2\u03fa\15\0\1\u0273\27\0"+
+    "\4\u0413\2\0\1\u0413\15\0\1\u0413\6\0\12\u0413\1\u03dd"+
+    "\43\0\4\u0414\2\0\1\u0414\15\0\1\u0414\6\0\12\u0414"+
+    "\1\u0415\43\0\4\u0416\2\0\1\u0416\15\0\1\u0416\6\0"+
+    "\1\u0417\2\u0418\1\u0417\4\u0418\1\u0419\1\u0418\14\0\1\u0230"+
+    "\27\0\4\u041a\2\0\1\u041a\15\0\1\u041a\6\0\12\u041a"+
+    "\1\u0400\13\0\1\u0230\27\0\4\u0416\2\0\1\u0416\15\0"+
+    "\1\u0416\6\0\1\u0417\2\u0418\1\u0417\4\u0418\1\u0419\1\u0418"+
+    "\43\0\1\u0280\4\u041a\2\0\1\u041a\15\0\1\u041a\6\0"+
+    "\12\u041b\1\u0400\13\0\1\u0230\26\0\1\u0280\4\u041a\2\0"+
+    "\1\u041a\15\0\1\u041a\6\0\12\u041a\1\u0400\13\0\1\u0230"+
+    "\26\0\1\u0280\4\u041a\2\0\1\u041a\15\0\1\u041a\6\0"+
+    "\2\u041b\1\u041a\2\u041b\2\u041a\2\u041b\1\u041a\1\u0400\13\0"+
+    "\1\u0230\74\0\1\u03b8\13\0\1\u0230\26\0\1\172\1\u041c"+
+    "\31\63\1\173\12\63\43\0\1\172\24\63\1\u041d\5\63"+
+    "\1\173\12\63\43\0\1\172\1\63\1\u041e\30\63\1\173"+
+    "\12\63\43\0\1\172\32\63\1\173\2\63\1\u0103\7\63"+
+    "\43\0\1\172\6\63\1\374\23\63\1\173\12\63\44\0"+
+    "\4\u041f\2\0\1\u041f\15\0\1\u041f\6\0\12\u041f\1\u03f3"+
+    "\43\0\4\u0420\2\0\1\u0420\15\0\1\u0420\6\0\12\u0420"+
+    "\1\u0421\43\0\4\u0422\2\0\1\u0422\15\0\1\u0422\6\0"+
+    "\1\u0423\2\u0424\1\u0423\4\u0424\1\u0425\1\u0424\14\0\1\u0273"+
+    "\27\0\4\u0426\2\0\1\u0426\15\0\1\u0426\6\0\12\u0426"+
+    "\1\u040e\13\0\1\u0273\27\0\4\u0422\2\0\1\u0422\15\0"+
+    "\1\u0422\6\0\1\u0423\2\u0424\1\u0423\4\u0424\1\u0425\1\u0424"+
+    "\43\0\1\u02bf\4\u0426\2\0\1\u0426\15\0\1\u0426\6\0"+
+    "\12\u0427\1\u040e\13\0\1\u0273\26\0\1\u02bf\4\u0426\2\0"+
+    "\1\u0426\15\0\1\u0426\6\0\12\u0426\1\u040e\13\0\1\u0273"+
+    "\26\0\1\u02bf\4\u0426\2\0\1\u0426\15\0\1\u0426\6\0"+
+    "\2\u0427\1\u0426\2\u0427\2\u0426\2\u0427\1\u0426\1\u040e\13\0"+
+    "\1\u0273\74\0\1\u03d3\13\0\1\u0273\74\0\1\u03dd\43\0"+
+    "\4\u0428\2\0\1\u0428\15\0\1\u0428\6\0\12\u0428\1\u0415"+
+    "\43\0\4\u0429\2\0\1\u0429\15\0\1\u0429\6\0\1\u042a"+
+    "\2\u042b\1\u042a\4\u042b\1\u042c\1\u042b\1\u042d\43\0\4\u042e"+
+    "\2\0\1\u042e\15\0\1\u042e\6\0\12\u042e\1\u042f\13\0"+
+    "\1\u0230\26\0\1\u0280\4\u042e\2\0\1\u042e\15\0\1\u042e"+
+    "\6\0\12\u0430\1\u042f\13\0\1\u0230\26\0\1\u0280\4\u042e"+
+    "\2\0\1\u042e\15\0\1\u042e\6\0\12\u0431\1\u042f\13\0"+
+    "\1\u0230\26\0\1\u0280\4\u042e\2\0\1\u042e\15\0\1\u042e"+
+    "\6\0\1\u0430\1\u0432\1\u0431\2\u0430\2\u0431\2\u0430\1\u0431"+
+    "\1\u042f\13\0\1\u0230\27\0\4\u0433\2\0\1\u0433\15\0"+
+    "\1\u0433\6\0\12\u0433\1\u0400\13\0\1\u0230\26\0\1\u0280"+
+    "\4\u0433\2\0\1\u0433\15\0\1\u0433\6\0\12\u0433\1\u0400"+
+    "\13\0\1\u0230\26\0\1\172\4\63\1\374\25\63\1\173"+
+    "\12\63\43\0\1\172\24\63\1\301\5\63\1\173\12\63"+
+    "\43\0\1\172\32\63\1\173\11\63\1\301\111\0\1\u03f3"+
+    "\43\0\4\u0434\2\0\1\u0434\15\0\1\u0434\6\0\12\u0434"+
+    "\1\u0421\43\0\4\u0435\2\0\1\u0435\15\0\1\u0435\6\0"+
+    "\1\u0436\2\u0437\1\u0436\4\u0437\1\u0438\1\u0437\1\u0439\43\0"+
+    "\4\u043a\2\0\1\u043a\15\0\1\u043a\6\0\12\u043a\1\u043b"+
+    "\13\0\1\u0273\26\0\1\u02bf\4\u043a\2\0\1\u043a\15\0"+
+    "\1\u043a\6\0\12\u043c\1\u043b\13\0\1\u0273\26\0\1\u02bf"+
+    "\4\u043a\2\0\1\u043a\15\0\1\u043a\6\0\12\u043d\1\u043b"+
+    "\13\0\1\u0273\26\0\1\u02bf\4\u043a\2\0\1\u043a\15\0"+
+    "\1\u043a\6\0\1\u043c\1\u043e\1\u043d\2\u043c\2\u043d\2\u043c"+
+    "\1\u043d\1\u043b\13\0\1\u0273\27\0\4\u043f\2\0\1\u043f"+
+    "\15\0\1\u043f\6\0\12\u043f\1\u040e\13\0\1\u0273\26\0"+
+    "\1\u02bf\4\u043f\2\0\1\u043f\15\0\1\u043f\6\0\12\u043f"+
+    "\1\u040e\13\0\1\u0273\27\0\4\u0440\2\0\1\u0440\15\0"+
+    "\1\u0440\6\0\12\u0440\1\u0415\43\0\4\u0441\2\0\1\u0441"+
+    "\15\0\1\u0441\6\0\12\u0441\1\u0442\42\0\1\u0280\4\u0441"+
+    "\2\0\1\u0441\15\0\1\u0441\6\0\12\u0443\1\u0442\42\0"+
+    "\1\u0280\4\u0441\2\0\1\u0441\15\0\1\u0441\6\0\12\u0444"+
+    "\1\u0442\42\0\1\u0280\4\u0441\2\0\1\u0441\15\0\1\u0441"+
+    "\6\0\1\u0443\1\u0445\1\u0444\2\u0443\2\u0444\2\u0443\1\u0444"+
+    "\1\u0442\43\0\4\u0446\2\0\1\u0446\15\0\1\u0446\6\0"+
+    "\12\u0446\14\0\1\u0230\27\0\4\u0447\2\0\1\u0447\15\0"+
+    "\1\u0447\6\0\12\u0447\1\u042f\13\0\1\u0230\27\0\4\u0446"+
+    "\2\0\1\u0446\15\0\1\u0446\6\0\12\u0446\43\0\1\u0280"+
+    "\4\u0447\2\0\1\u0447\15\0\1\u0447\6\0\12\u0448\1\u042f"+
+    "\13\0\1\u0230\26\0\1\u0280\4\u0447\2\0\1\u0447\15\0"+
+    "\1\u0447\6\0\12\u0447\1\u042f\13\0\1\u0230\26\0\1\u0280"+
+    "\4\u0447\2\0\1\u0447\15\0\1\u0447\6\0\2\u0448\1\u0447"+
+    "\2\u0448\2\u0447\2\u0448\1\u0447\1\u042f\13\0\1\u0230\74\0"+
+    "\1\u0400\13\0\1\u0230\27\0\4\u0449\2\0\1\u0449\15\0"+
+    "\1\u0449\6\0\12\u0449\1\u0421\43\0\4\u044a\2\0\1\u044a"+
+    "\15\0\1\u044a\6\0\12\u044a\1\u044b\42\0\1\u02bf\4\u044a"+
+    "\2\0\1\u044a\15\0\1\u044a\6\0\12\u044c\1\u044b\42\0"+
+    "\1\u02bf\4\u044a\2\0\1\u044a\15\0\1\u044a\6\0\12\u044d"+
+    "\1\u044b\42\0\1\u02bf\4\u044a\2\0\1\u044a\15\0\1\u044a"+
+    "\6\0\1\u044c\1\u044e\1\u044d\2\u044c\2\u044d\2\u044c\1\u044d"+
+    "\1\u044b\43\0\4\u044f\2\0\1\u044f\15\0\1\u044f\6\0"+
+    "\12\u044f\14\0\1\u0273\27\0\4\u0450\2\0\1\u0450\15\0"+
+    "\1\u0450\6\0\12\u0450\1\u043b\13\0\1\u0273\27\0\4\u044f"+
+    "\2\0\1\u044f\15\0\1\u044f\6\0\12\u044f\43\0\1\u02bf"+
+    "\4\u0450\2\0\1\u0450\15\0\1\u0450\6\0\12\u0451\1\u043b"+
+    "\13\0\1\u0273\26\0\1\u02bf\4\u0450\2\0\1\u0450\15\0"+
+    "\1\u0450\6\0\12\u0450\1\u043b\13\0\1\u0273\26\0\1\u02bf"+
+    "\4\u0450\2\0\1\u0450\15\0\1\u0450\6\0\2\u0451\1\u0450"+
+    "\2\u0451\2\u0450\2\u0451\1\u0450\1\u043b\13\0\1\u0273\74\0"+
+    "\1\u040e\13\0\1\u0273\74\0\1\u0415\43\0\4\u0452\2\0"+
+    "\1\u0452\15\0\1\u0452\6\0\12\u0452\1\u0442\43\0\4\u0446"+
+    "\2\0\1\u0446\15\0\1\u0446\6\0\12\u0446\1\u03e4\42\0"+
+    "\1\u0280\4\u0452\2\0\1\u0452\15\0\1\u0452\6\0\12\u0453"+
+    "\1\u0442\42\0\1\u0280\4\u0452\2\0\1\u0452\15\0\1\u0452"+
+    "\6\0\12\u0452\1\u0442\42\0\1\u0280\4\u0452\2\0\1\u0452"+
+    "\15\0\1\u0452\6\0\2\u0453\1\u0452\2\u0453\2\u0452\2\u0453"+
+    "\1\u0452\1\u0442\43\0\4\u0454\2\0\1\u0454\15\0\1\u0454"+
+    "\6\0\12\u0454\14\0\1\u0230\27\0\4\u0455\2\0\1\u0455"+
+    "\15\0\1\u0455\6\0\12\u0455\1\u042f\13\0\1\u0230\26\0"+
+    "\1\u0280\4\u0455\2\0\1\u0455\15\0\1\u0455\6\0\12\u0455"+
+    "\1\u042f\13\0\1\u0230\74\0\1\u0421\43\0\4\u0456\2\0"+
+    "\1\u0456\15\0\1\u0456\6\0\12\u0456\1\u044b\43\0\4\u044f"+
+    "\2\0\1\u044f\15\0\1\u044f\6\0\12\u044f\1\u03fa\42\0"+
+    "\1\u02bf\4\u0456\2\0\1\u0456\15\0\1\u0456\6\0\12\u0457"+
+    "\1\u044b\42\0\1\u02bf\4\u0456\2\0\1\u0456\15\0\1\u0456"+
+    "\6\0\12\u0456\1\u044b\42\0\1\u02bf\4\u0456\2\0\1\u0456"+
+    "\15\0\1\u0456\6\0\2\u0457\1\u0456\2\u0457\2\u0456\2\u0457"+
+    "\1\u0456\1\u044b\43\0\4\u0458\2\0\1\u0458\15\0\1\u0458"+
+    "\6\0\12\u0458\14\0\1\u0273\27\0\4\u0459\2\0\1\u0459"+
+    "\15\0\1\u0459\6\0\12\u0459\1\u043b\13\0\1\u0273\26\0"+
+    "\1\u02bf\4\u0459\2\0\1\u0459\15\0\1\u0459\6\0\12\u0459"+
+    "\1\u043b\13\0\1\u0273\27\0\4\u045a\2\0\1\u045a\15\0"+
+    "\1\u045a\6\0\12\u045a\1\u0442\42\0\1\u0280\4\u045a\2\0"+
+    "\1\u045a\15\0\1\u045a\6\0\12\u045a\1\u0442\43\0\4\u045b"+
+    "\2\0\1\u045b\15\0\1\u045b\6\0\12\u045b\14\0\1\u0230"+
+    "\74\0\1\u042f\13\0\1\u0230\27\0\4\u045c\2\0\1\u045c"+
+    "\15\0\1\u045c\6\0\12\u045c\1\u044b\42\0\1\u02bf\4\u045c"+
+    "\2\0\1\u045c\15\0\1\u045c\6\0\12\u045c\1\u044b\43\0"+
+    "\4\u045d\2\0\1\u045d\15\0\1\u045d\6\0\12\u045d\14\0"+
+    "\1\u0273\74\0\1\u043b\13\0\1\u0273\74\0\1\u0442\43\0"+
+    "\4\u03e4\2\0\1\u03e4\15\0\1\u03e4\6\0\12\u03e4\14\0"+
+    "\1\u0230\74\0\1\u044b\43\0\4\u03fa\2\0\1\u03fa\15\0"+
+    "\1\u03fa\6\0\12\u03fa\14\0\1\u0273\15\0";
 
   private static int [] zzUnpackTrans() {
-    int [] result = new int[169];
+    int [] result = new int[80884];
     int offset = 0;
     offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
     return result;
@@ -308,11 +2298,23 @@
   private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
 
   private static final String ZZ_ATTRIBUTE_PACKED_0 =
-    "\1\0\1\11\5\1\2\11\1\1\1\0\1\1\1\0"+
-    "\1\1\2\0";
+    "\1\0\1\11\17\1\2\11\1\1\1\0\1\1\1\0"+
+    "\1\1\6\0\2\1\1\0\3\1\1\0\1\1\1\0"+
+    "\4\1\11\0\32\1\3\0\4\1\32\0\4\1\10\0"+
+    "\1\11\1\0\23\1\2\0\1\1\1\0\7\1\3\0"+
+    "\2\1\1\0\4\1\1\0\2\1\1\0\2\1\10\0"+
+    "\1\1\32\0\1\1\1\0\11\1\1\0\1\1\2\0"+
+    "\1\1\1\0\1\1\10\0\3\1\15\0\11\1\3\0"+
+    "\2\1\1\0\4\1\1\0\4\1\1\0\2\1\1\0"+
+    "\2\1\1\0\3\1\7\0\2\1\20\0\1\1\10\0"+
+    "\1\1\3\0\1\1\32\0\3\1\23\0\1\1\27\0"+
+    "\1\1\4\0\1\1\6\0\1\1\4\0\2\1\36\0"+
+    "\1\1\51\0\1\1\42\0\1\1\50\0\1\1\122\0"+
+    "\1\1\116\0\1\1\107\0\1\1\74\0\1\1\51\0"+
+    "\1\1\333\0";
 
   private static int [] zzUnpackAttribute() {
-    int [] result = new int[16];
+    int [] result = new int[1117];
     int offset = 0;
     offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
     return result;
@@ -386,6 +2388,12 @@
   /** Numbers */
   public static final String NUMERIC_TYPE = "<NUM>";
   
+  /** URLs with scheme: HTTP(S), FTP, or FILE; no-scheme URLs match HTTP syntax */
+  public static final String URL_TYPE = "<URL>";
+  
+  /** E-mail addresses */
+  public static final String EMAIL_TYPE = "<EMAIL";
+  
   /**
    * Chars in class \p{Line_Break = Complex_Context} are from South East Asian
    * scripts (Thai, Lao, Myanmar, Khmer, etc.).  Sequences of these are kept 
@@ -414,7 +2422,7 @@
    * @param source The AttributeSource to use
    * @param input The input reader
    */
-  public UAX29Tokenizer(AttributeSource source, Reader input) {
+  public UAX29URLEmailTokenizer(AttributeSource source, Reader input) {
     super(source, input);
     zzReader = input;
   }
@@ -423,7 +2431,7 @@
    * @param factory The AttributeFactory to use
    * @param input The input reader
    */
-  public UAX29Tokenizer(AttributeFactory factory, Reader input) {
+  public UAX29URLEmailTokenizer(AttributeFactory factory, Reader input) {
     super(factory, input); 
     zzReader = input;
   }
@@ -507,7 +2515,7 @@
    *
    * @param   in  the java.io.Reader to read input from.
    */
-  public UAX29Tokenizer(java.io.Reader in) {
+  public UAX29URLEmailTokenizer(java.io.Reader in) {
     super(in);
     this.zzReader = in;
   }
@@ -518,7 +2526,7 @@
    *
    * @param   in  the java.io.Inputstream to read input from.
    */
-  public UAX29Tokenizer(java.io.InputStream in) {
+  public UAX29URLEmailTokenizer(java.io.InputStream in) {
     this(new java.io.InputStreamReader(in));
   }
 
@@ -532,7 +2540,7 @@
     char [] map = new char[0x10000];
     int i = 0;  /* index in packed string  */
     int j = 0;  /* index in unpacked array */
-    while (i < 2174) {
+    while (i < 2336) {
       int  count = packed.charAt(i++);
       char value = packed.charAt(i++);
       do map[j++] = value; while (--count > 0);
@@ -759,7 +2767,13 @@
   
       zzState = ZZ_LEXSTATE[zzLexicalState];
 
+      // set up zzAction for empty match case:
+      int zzAttributes = zzAttrL[zzState];
+      if ( (zzAttributes & 1) == 1 ) {
+        zzAction = zzState;
+      }
 
+
       zzForAction: {
         while (true) {
     
@@ -791,7 +2805,7 @@
           if (zzNext == -1) break zzForAction;
           zzState = zzNext;
 
-          int zzAttributes = zzAttrL[zzState];
+          zzAttributes = zzAttrL[zzState];
           if ( (zzAttributes & 1) == 1 ) {
             zzAction = zzState;
             zzMarkedPosL = zzCurrentPosL;
@@ -805,30 +2819,38 @@
       zzMarkedPos = zzMarkedPosL;
 
       switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
+        case 8: 
+          { if (populateAttributes(URL_TYPE)) return true;
+          }
+        case 9: break;
         case 5: 
           { if (populateAttributes(IDEOGRAPHIC_TYPE)) return true;
           }
-        case 7: break;
+        case 10: break;
         case 1: 
           { /* Not numeric, word, ideographic, hiragana, or SE Asian -- ignore it. */
           }
-        case 8: break;
+        case 11: break;
         case 3: 
           { if (populateAttributes(NUMERIC_TYPE)) return true;
           }
-        case 9: break;
+        case 12: break;
         case 6: 
           { if (populateAttributes(HIRAGANA_TYPE)) return true;
           }
-        case 10: break;
+        case 13: break;
         case 4: 
           { if (populateAttributes(SOUTH_EAST_ASIAN_TYPE)) return true;
           }
-        case 11: break;
+        case 14: break;
         case 2: 
           { if (populateAttributes(WORD_TYPE)) return true;
           }
-        case 12: break;
+        case 15: break;
+        case 7: 
+          { if (populateAttributes(EMAIL_TYPE)) return true;
+          }
+        case 16: break;
         default: 
           if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
             zzAtEOF = true;

Property changes on: modules/analysis/common/src/java/org/apache/lucene/analysis/standard/UAX29URLEmailTokenizer.java
___________________________________________________________________
Added: svn:eol-style
   + native

Index: modules/analysis/common/build.xml
===================================================================
--- modules/analysis/common/build.xml	(revision 1042261)
+++ modules/analysis/common/build.xml	(working copy)
@@ -38,7 +38,7 @@
 
   <target name="compile-core" depends="jflex-notice, common.compile-core"/>
 
-  <target name="jflex" depends="jflex-check,clean-jflex,jflex-StandardAnalyzer,jflex-UAX29Tokenizer,jflex-wiki-tokenizer"/>
+  <target name="jflex" depends="jflex-check,clean-jflex,jflex-StandardAnalyzer,jflex-UAX29URLEmailTokenizer,jflex-wiki-tokenizer"/>
 
   <target name="jflex-wiki-tokenizer" depends="init,jflex-check" if="jflex.present">
     <taskdef classname="jflex.anttask.JFlexTask" name="jflex">
@@ -62,11 +62,11 @@
            nobak="on" />
   </target>
 
-  <target name="jflex-UAX29Tokenizer" depends="jflex-check" if="jflex.present">
+  <target name="jflex-UAX29URLEmailTokenizer" depends="jflex-check" if="jflex.present">
     <taskdef classname="jflex.anttask.JFlexTask" name="jflex">
 			<classpath refid="jflex.classpath"/>
     </taskdef>
-    <jflex file="src/java/org/apache/lucene/analysis/standard/UAX29Tokenizer.jflex"
+    <jflex file="src/java/org/apache/lucene/analysis/standard/UAX29URLEmailTokenizer.jflex"
            outdir="src/java/org/apache/lucene/analysis/standard"
            nobak="on" />
   </target>
