From d104f60d12d6c6a6335718b56cac59ffe40dd9c3 Mon Sep 17 00:00:00 2001
From: Jan Lupa <jl320820@students.mimuw.edu.pl>
Date: Thu, 11 Aug 2016 03:07:01 +0200
Subject: [PATCH] Dependency Parser split into two versions: basic and experimental

---
 dependencyParser/basic/mate-tools/.classpath                                                |    8 ++++++++
 dependencyParser/basic/mate-tools/.externalToolBuilders/New_Builder.launch                  |    8 ++++++++
 dependencyParser/basic/mate-tools/.externalToolBuilders/ana.launch                          |   20 ++++++++++++++++++++
 dependencyParser/basic/mate-tools/.project                                                  |   17 +++++++++++++++++
 dependencyParser/basic/mate-tools/build.xml                                                 |   64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/lib/commons-math-2.2.jar                                  | Bin 0 -> 988514 bytes
 dependencyParser/basic/mate-tools/lib/trove-2.0.4.jar                                       | Bin 0 -> 746790 bytes
 dependencyParser/basic/mate-tools/src/decoder/ParallelDecoder.java                          |  155 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/decoder/ParallelRearrangeNBest.java                   |  136 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/decoder/ParallelRearrangeNBest2.java                  |  151 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/examples/DependencyParser.java                        |   92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/examples/FullPipelineSpanish.java                     |   98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/examples/FullPipelineTest.java                        |  110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/examples/MorphTagger.java                             |   79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/examples/ParseOnly.java                               |   50 ++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/examples/Pipeline.java                                |   95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/extractors/Extractor.java                             |   59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/extractors/ExtractorClusterStacked.java               |  958 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/extractors/ExtractorClusterStackedR2.java             |  937 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/extractors/ExtractorFactory.java                      |   44 ++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/extractors/ExtractorReranker.java                     |  621 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/extractors/ParallelExtract.java                       |  194 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/Closed.java                                  |   31 +++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/Cluster.java                                 |  158 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/D4.java                                      |  191 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/D6.java                                      |  197 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/D7.java                                      |  220 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/DPSTree.java                                 |  115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/DX.java                                      |   58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/DataF.java                                   |   39 +++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/DataFES.java                                 |   38 ++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/DataT.java                                   |   25 +++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/Edges.java                                   |  224 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/F2S.java                                     |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/F2SD.java                                    |   44 ++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/F2SF.java                                    |   78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/F2SP.java                                    |   76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/F2ST.java                                    |   47 +++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/FV.java                                      |  551 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/FVR.java                                     |  468 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/IEncoder.java                                |   26 ++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/IEncoderPlus.java                            |   28 ++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/IFV.java                                     |   28 ++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/Instances.java                               |  392 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/InstancesTagger.java                         |   77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/IntIntHash.java                              |  270 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/Long2Int.java                                |  113 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/Long2IntExact.java                           |   60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/Long2IntInterface.java                       |   15 +++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/Long2IntQuick.java                           |   47 +++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/MFB.java                                     |  256 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/MFC.java                                     |  246 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/MFO.java                                     |  386 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/Open.java                                    |   37 +++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/PSTree.java                                  |  711 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/Parameter.java                               |   13 +++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/ParametersFloat.java                         |  183 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/Parse.java                                   |  157 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/ParseNBest.java                              |  107 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/PipeGen.java                                 |   83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/PrimeFinder.java                             |   66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/RandomIndex.java                             |  161 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/SentenceData09.java                          |  530 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/data/Thesaurus.java                               |  194 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/io/CONLLReader04.java                             |  272 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/io/CONLLReader06.java                             |  275 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/io/CONLLReader08.java                             |  413 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/io/CONLLReader09.java                             |  411 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/io/CONLLWriter06.java                             |  193 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/io/CONLLWriter09.java                             |  307 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/io/IOGenerals.java                                |   33 +++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/io/PSReader.java                                  |   23 +++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/io/TigerReader.java                               |  403 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/lemmatizer/Evaluator.java                         |  105 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/lemmatizer/Lemmatizer.java                        |  535 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/lemmatizer/MFO.java                               |  257 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/lemmatizer/Options.java                           |   67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/lemmatizer/Pipe.java                              |  585 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/lemmatizer/StringEdit.java                        |  318 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/mtag/Convert.java                                 |   98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/mtag/Evaluator.java                               |  148 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/mtag/ExtractorM.java                              |  514 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/mtag/MFO.java                                     |  540 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/mtag/Options.java                                 |   45 +++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/mtag/Pipe.java                                    |  508 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/mtag/Tagger.java                                  |  371 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parser/Closed.java                                |   32 ++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parser/D5.java                                    |  254 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parser/Decoder.java                               |  161 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parser/Edges.java                                 |  206 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parser/Evaluator.java                             |   94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parser/Extractor.java                             |  973 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parser/MFO.java                                   |  257 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parser/Open.java                                  |   38 ++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parser/Options.java                               |   63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parser/ParallelDecoder.java                       |  170 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parser/ParallelExtract.java                       |  246 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parser/ParallelRearrange.java                     |  127 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parser/Parameters.java                            |   38 ++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parser/ParametersFloat.java                       |  137 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parser/Parser.java                                |  664 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parser/Pipe.java                                  |  221 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parser/package.html                               |   11 +++++++++++
 dependencyParser/basic/mate-tools/src/is2/parserR2/Decoder.java                             |  377 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parserR2/Options.java                             |   77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parserR2/Parameters.java                          |   38 ++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parserR2/ParametersFloat.java                     |  181 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parserR2/Parser.java                              |  690 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parserR2/Pipe.java                                |  257 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parserR2/PipeReranker.java                        |  138 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parserR2/Reranker.java                            | 1059 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/parserR2/package.html                             |    3 +++
 dependencyParser/basic/mate-tools/src/is2/tag/ExtractorT2.java                              |  523 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/tag/Lexicon.java                                  |  140 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/tag/MFO.java                                      |  537 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/tag/Options.java                                  |  125 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/tag/POS.java                                      |   29 +++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/tag/Tagger.java                                   |  500 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/tag/package.html                                  |    4 ++++
 dependencyParser/basic/mate-tools/src/is2/tools/IPipe.java                                  |   30 ++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/tools/Retrainable.java                            |   25 +++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/tools/Tool.java                                   |   25 +++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/tools/ToolIO.java                                 |   17 +++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/tools/Train.java                                  |   25 +++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/util/Convert.java                                 |  455 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/util/Convert0409.java                             |  182 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/util/ConvertADJ.java                              |  129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/util/ConvertLowerCase0909.java                    |   89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/util/ConvertTiger2CoNLL.java                      |  124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/util/DB.java                                      |   81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/util/Edges.java                                   |  206 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/util/Evaluator.java                               |  616 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/util/EvaluatorTagger.java                         |  736 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/util/ExtractParagraphs.java                       |   87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/util/IntStack.java                                |   86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/util/Long2Int.java                                |   81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/util/Options.java                                 |  129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/util/OptionsSuper.java                            |  216 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/util/ParserEvaluator.java                         |   94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/util/Split.java                                   |   94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/util/Split2.java                                  |   70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/basic/mate-tools/src/is2/util/Split3.java                                  |   67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/examples/README.txt                                                        |    5 -----
 dependencyParser/examples/d2 output.txt                                                     | 4023 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/examples/edges output.txt                                                  |  552 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/examples/is output.txt                                                     |  199 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/examples/test.csv                                                          |   14 --------------
 dependencyParser/examples/test.out                                                          |  210 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/experimental/examples/README.txt                                           |    5 +++++
 dependencyParser/experimental/examples/d2 output.txt                                        | 4023 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/examples/edges output.txt                                     |  552 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/examples/is output.txt                                        |  199 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/examples/test.csv                                             |   14 ++++++++++++++
 dependencyParser/experimental/examples/test.out                                             |  210 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/.classpath                                         |    8 ++++++++
 dependencyParser/experimental/mate-tools/.externalToolBuilders/New_Builder.launch           |    8 ++++++++
 dependencyParser/experimental/mate-tools/.externalToolBuilders/ana.launch                   |   20 ++++++++++++++++++++
 dependencyParser/experimental/mate-tools/.project                                           |   17 +++++++++++++++++
 dependencyParser/experimental/mate-tools/build.xml                                          |   64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/classes/decoder/ParallelDecoder$DSet.class         | Bin 0 -> 485 bytes
 dependencyParser/experimental/mate-tools/classes/decoder/ParallelDecoder.class              | Bin 0 -> 7230 bytes
 dependencyParser/experimental/mate-tools/classes/decoder/ParallelRearrangeNBest$PA.class    | Bin 0 -> 563 bytes
 dependencyParser/experimental/mate-tools/classes/decoder/ParallelRearrangeNBest.class       | Bin 0 -> 2802 bytes
 dependencyParser/experimental/mate-tools/classes/decoder/ParallelRearrangeNBest2$PA.class   | Bin 0 -> 729 bytes
 dependencyParser/experimental/mate-tools/classes/decoder/ParallelRearrangeNBest2.class      | Bin 0 -> 3214 bytes
 dependencyParser/experimental/mate-tools/classes/examples/DependencyParser.class            | Bin 0 -> 2933 bytes
 dependencyParser/experimental/mate-tools/classes/examples/FullPipelineSpanish.class         | Bin 0 -> 3598 bytes
 dependencyParser/experimental/mate-tools/classes/examples/FullPipelineTest.class            | Bin 0 -> 2998 bytes
 dependencyParser/experimental/mate-tools/classes/examples/MorphTagger.class                 | Bin 0 -> 2729 bytes
 dependencyParser/experimental/mate-tools/classes/examples/ParseOnly.class                   | Bin 0 -> 1484 bytes
 dependencyParser/experimental/mate-tools/classes/examples/Pipeline.class                    | Bin 0 -> 3068 bytes
 dependencyParser/experimental/mate-tools/classes/extractors/Extractor.class                 | Bin 0 -> 644 bytes
 dependencyParser/experimental/mate-tools/classes/extractors/ExtractorClusterStacked.class   | Bin 0 -> 34872 bytes
 dependencyParser/experimental/mate-tools/classes/extractors/ExtractorClusterStackedR2.class | Bin 0 -> 34015 bytes
 dependencyParser/experimental/mate-tools/classes/extractors/ExtractorFactory.class          | Bin 0 -> 856 bytes
 dependencyParser/experimental/mate-tools/classes/extractors/ExtractorReranker.class         | Bin 0 -> 18998 bytes
 dependencyParser/experimental/mate-tools/classes/extractors/ParallelExtract$DSet.class      | Bin 0 -> 402 bytes
 dependencyParser/experimental/mate-tools/classes/extractors/ParallelExtract.class           | Bin 0 -> 5033 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/Closed.class                      | Bin 0 -> 889 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/Cluster.class                     | Bin 0 -> 4313 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/D4.class                          | Bin 0 -> 5263 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/D6.class                          | Bin 0 -> 4876 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/D7.class                          | Bin 0 -> 5529 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/DPSTree.class                     | Bin 0 -> 2035 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/DX.class                          | Bin 0 -> 785 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/DataF.class                       | Bin 0 -> 604 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/DataFES.class                     | Bin 0 -> 2439 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/DataT.class                       | Bin 0 -> 437 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/Edges$C.class                     | Bin 0 -> 1470 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/Edges.class                       | Bin 0 -> 4827 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/F2S.class                         | Bin 0 -> 1066 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/F2SD.class                        | Bin 0 -> 907 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/F2SF.class                        | Bin 0 -> 1659 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/F2SP.class                        | Bin 0 -> 1660 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/F2ST.class                        | Bin 0 -> 984 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/FV.class                          | Bin 0 -> 10524 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/FVR.class                         | Bin 0 -> 7780 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/IEncoder.class                    | Bin 0 -> 384 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/IEncoderPlus.class                | Bin 0 -> 407 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/IFV.class                         | Bin 0 -> 974 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/Instances.class                   | Bin 0 -> 9232 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/InstancesTagger.class             | Bin 0 -> 4141 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/IntIntHash.class                  | Bin 0 -> 5365 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/Long2Int.class                    | Bin 0 -> 2492 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/Long2IntExact.class               | Bin 0 -> 1052 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/Long2IntInterface.class           | Bin 0 -> 166 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/Long2IntQuick.class               | Bin 0 -> 718 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/MFB.class                         | Bin 0 -> 6510 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/MFC.class                         | Bin 0 -> 6546 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/MFO$Data4.class                   | Bin 0 -> 809 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/MFO.class                         | Bin 0 -> 8558 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/Open.class                        | Bin 0 -> 1047 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/PSTree.class                      | Bin 0 -> 11849 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/Parameter.class                   | Bin 0 -> 270 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/ParametersFloat.class             | Bin 0 -> 4869 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/Parse.class                       | Bin 0 -> 3425 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/ParseNBest.class                  | Bin 0 -> 2410 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/PipeGen.class                     | Bin 0 -> 3772 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/PrimeFinder.class                 | Bin 0 -> 3237 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/RandomIndex.class                 | Bin 0 -> 2136 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/SentenceData09.class              | Bin 0 -> 10528 bytes
 dependencyParser/experimental/mate-tools/classes/is2/data/Thesaurus.class                   | Bin 0 -> 4767 bytes
 dependencyParser/experimental/mate-tools/classes/is2/io/CONLLReader04.class                 | Bin 0 -> 6133 bytes
 dependencyParser/experimental/mate-tools/classes/is2/io/CONLLReader06.class                 | Bin 0 -> 6262 bytes
 dependencyParser/experimental/mate-tools/classes/is2/io/CONLLReader08.class                 | Bin 0 -> 7771 bytes
 dependencyParser/experimental/mate-tools/classes/is2/io/CONLLReader09.class                 | Bin 0 -> 8166 bytes
 dependencyParser/experimental/mate-tools/classes/is2/io/CONLLWriter06.class                 | Bin 0 -> 5397 bytes
 dependencyParser/experimental/mate-tools/classes/is2/io/CONLLWriter09.class                 | Bin 0 -> 7210 bytes
 dependencyParser/experimental/mate-tools/classes/is2/io/IOGenerals.class                    | Bin 0 -> 803 bytes
 dependencyParser/experimental/mate-tools/classes/is2/io/PSReader.class                      | Bin 0 -> 210 bytes
 dependencyParser/experimental/mate-tools/classes/is2/io/TigerReader$Line.class              | Bin 0 -> 462 bytes
 dependencyParser/experimental/mate-tools/classes/is2/io/TigerReader.class                   | Bin 0 -> 4750 bytes
 dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Evaluator$1.class           | Bin 0 -> 1371 bytes
 dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Evaluator.class             | Bin 0 -> 3837 bytes
 dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Lemmatizer$1.class          | Bin 0 -> 1499 bytes
 dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Lemmatizer.class            | Bin 0 -> 15094 bytes
 dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/MFO.class                   | Bin 0 -> 6423 bytes
 dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Options.class               | Bin 0 -> 3195 bytes
 dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Pipe$1.class                | Bin 0 -> 1430 bytes
 dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Pipe.class                  | Bin 0 -> 18093 bytes
 dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/StringEdit.class            | Bin 0 -> 5863 bytes
 dependencyParser/experimental/mate-tools/classes/is2/mtag/Convert.class                     | Bin 0 -> 3442 bytes
 dependencyParser/experimental/mate-tools/classes/is2/mtag/Evaluator$1.class                 | Bin 0 -> 1353 bytes
 dependencyParser/experimental/mate-tools/classes/is2/mtag/Evaluator.class                   | Bin 0 -> 5012 bytes
 dependencyParser/experimental/mate-tools/classes/is2/mtag/ExtractorM.class                  | Bin 0 -> 16754 bytes
 dependencyParser/experimental/mate-tools/classes/is2/mtag/MFO$Data.class                    | Bin 0 -> 576 bytes
 dependencyParser/experimental/mate-tools/classes/is2/mtag/MFO$Data4.class                   | Bin 0 -> 3022 bytes
 dependencyParser/experimental/mate-tools/classes/is2/mtag/MFO.class                         | Bin 0 -> 8628 bytes
 dependencyParser/experimental/mate-tools/classes/is2/mtag/Options.class                     | Bin 0 -> 2760 bytes
 dependencyParser/experimental/mate-tools/classes/is2/mtag/Pipe.class                        | Bin 0 -> 16478 bytes
 dependencyParser/experimental/mate-tools/classes/is2/mtag/Tagger.class                      | Bin 0 -> 11439 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parser/Closed.class                    | Bin 0 -> 806 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parser/D5.class                        | Bin 0 -> 4353 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parser/Decoder.class                   | Bin 0 -> 5509 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parser/Edges$C.class                   | Bin 0 -> 1476 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parser/Edges.class                     | Bin 0 -> 4849 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parser/Evaluator$Results.class         | Bin 0 -> 424 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parser/Evaluator.class                 | Bin 0 -> 3009 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parser/Extractor.class                 | Bin 0 -> 37772 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parser/MFO.class                       | Bin 0 -> 7825 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parser/Open.class                      | Bin 0 -> 1059 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parser/Options.class                   | Bin 0 -> 3330 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelDecoder$DSet.class      | Bin 0 -> 497 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelDecoder.class           | Bin 0 -> 7039 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelExtract$DSet.class      | Bin 0 -> 402 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelExtract.class           | Bin 0 -> 6618 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelRearrange$PA.class      | Bin 0 -> 595 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelRearrange.class         | Bin 0 -> 2669 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parser/Parameters.class                | Bin 0 -> 598 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parser/ParametersFloat.class           | Bin 0 -> 3497 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parser/Parser.class                    | Bin 0 -> 18990 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parser/Pipe.class                      | Bin 0 -> 6984 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parser/package.html                    |   11 +++++++++++
 dependencyParser/experimental/mate-tools/classes/is2/parserR2/Decoder.class                 | Bin 0 -> 8871 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parserR2/Options.class                 | Bin 0 -> 3864 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parserR2/Parameters.class              | Bin 0 -> 602 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parserR2/ParametersFloat.class         | Bin 0 -> 4532 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parserR2/Parser.class                  | Bin 0 -> 17961 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parserR2/Pipe.class                    | Bin 0 -> 7608 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parserR2/PipeReranker.class            | Bin 0 -> 4042 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parserR2/Reranker.class                | Bin 0 -> 26638 bytes
 dependencyParser/experimental/mate-tools/classes/is2/parserR2/package.html                  |    3 +++
 dependencyParser/experimental/mate-tools/classes/is2/tag/ExtractorT2.class                  | Bin 0 -> 17820 bytes
 dependencyParser/experimental/mate-tools/classes/is2/tag/Lexicon.class                      | Bin 0 -> 3857 bytes
 dependencyParser/experimental/mate-tools/classes/is2/tag/MFO$Data4.class                    | Bin 0 -> 3019 bytes
 dependencyParser/experimental/mate-tools/classes/is2/tag/MFO.class                          | Bin 0 -> 8816 bytes
 dependencyParser/experimental/mate-tools/classes/is2/tag/Options.class                      | Bin 0 -> 4563 bytes
 dependencyParser/experimental/mate-tools/classes/is2/tag/POS.class                          | Bin 0 -> 1042 bytes
 dependencyParser/experimental/mate-tools/classes/is2/tag/Tagger.class                       | Bin 0 -> 12998 bytes
 dependencyParser/experimental/mate-tools/classes/is2/tag/package.html                       |    4 ++++
 dependencyParser/experimental/mate-tools/classes/is2/tools/IPipe.class                      | Bin 0 -> 268 bytes
 dependencyParser/experimental/mate-tools/classes/is2/tools/Retrainable.class                | Bin 0 -> 206 bytes
 dependencyParser/experimental/mate-tools/classes/is2/tools/Tool.class                       | Bin 0 -> 170 bytes
 dependencyParser/experimental/mate-tools/classes/is2/tools/ToolIO.class                     | Bin 0 -> 129 bytes
 dependencyParser/experimental/mate-tools/classes/is2/tools/Train.class                      | Bin 0 -> 365 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/Convert.class                     | Bin 0 -> 8979 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/Convert0409.class                 | Bin 0 -> 3967 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/ConvertADJ.class                  | Bin 0 -> 3356 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/ConvertLowerCase0909.class        | Bin 0 -> 1702 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/ConvertTiger2CoNLL.class          | Bin 0 -> 3559 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/DB.class                          | Bin 0 -> 2535 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/Edges$C.class                     | Bin 0 -> 1470 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/Edges.class                       | Bin 0 -> 4211 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/Evaluator$1.class                 | Bin 0 -> 1359 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/Evaluator$Results.class           | Bin 0 -> 558 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/Evaluator.class                   | Bin 0 -> 14710 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/EvaluatorTagger$1.class           | Bin 0 -> 1383 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/EvaluatorTagger$2.class           | Bin 0 -> 1412 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/EvaluatorTagger$Results.class     | Bin 0 -> 582 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/EvaluatorTagger.class             | Bin 0 -> 18350 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/ExtractParagraphs.class           | Bin 0 -> 2592 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/IntStack.class                    | Bin 0 -> 1918 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/Long2Int.class                    | Bin 0 -> 892 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/Options.class                     | Bin 0 -> 4636 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/OptionsSuper.class                | Bin 0 -> 7107 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/ParserEvaluator$Results.class     | Bin 0 -> 442 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/ParserEvaluator.class             | Bin 0 -> 3074 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/Split.class                       | Bin 0 -> 2958 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/Split2.class                      | Bin 0 -> 2147 bytes
 dependencyParser/experimental/mate-tools/classes/is2/util/Split3.class                      | Bin 0 -> 1688 bytes
 dependencyParser/experimental/mate-tools/lib/commons-math-2.2.jar                           | Bin 0 -> 988514 bytes
 dependencyParser/experimental/mate-tools/lib/trove-2.0.4.jar                                | Bin 0 -> 746790 bytes
 dependencyParser/experimental/mate-tools/src/decoder/ParallelDecoder.java                   |  189 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/decoder/ParallelRearrangeNBest.java            |  144 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/decoder/ParallelRearrangeNBest2.java           |  158 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/examples/DependencyParser.java                 |   90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/examples/FullPipelineSpanish.java              |  108 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/examples/FullPipelineTest.java                 |  110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/examples/MorphTagger.java                      |   79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/examples/ParseOnly.java                        |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/examples/Pipeline.java                         |   90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/extractors/Extractor.java                      |   52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/extractors/ExtractorClusterStacked.java        | 1946 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/extractors/ExtractorClusterStackedR2.java      | 1929 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/extractors/ExtractorFactory.java               |   42 ++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/extractors/ExtractorReranker.java              | 1080 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/extractors/ParallelExtract.java                |  193 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/Closed.java                           |   28 ++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/Cluster.java                          |  163 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/D4.java                               |  252 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/D6.java                               |  260 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/D7.java                               |  290 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/DPSTree.java                          |  109 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/DX.java                               |   56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/DataF.java                            |   35 +++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/DataFES.java                          |   71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/DataT.java                            |   19 +++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/Edges.java                            |  216 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/F2S.java                              |   54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/F2SD.java                             |   44 ++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/F2SF.java                             |   77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/F2SP.java                             |   77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/F2ST.java                             |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/FV.java                               |  562 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/FVR.java                              |  435 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/IEncoder.java                         |   27 +++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/IEncoderPlus.java                     |   27 +++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/IFV.java                              |   29 +++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/Instances.java                        |  408 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/InstancesTagger.java                  |   95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/IntIntHash.java                       |  255 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/Long2Int.java                         |  112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/Long2IntExact.java                    |   65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/Long2IntInterface.java                |   16 ++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/Long2IntQuick.java                    |   51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/MFB.java                              |  248 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/MFC.java                              |  243 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/MFO.java                              |  380 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/Open.java                             |   38 ++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/PSTree.java                           |  745 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/Parameter.java                        |   13 +++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/ParametersFloat.java                  |  181 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/Parse.java                            |  157 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/ParseNBest.java                       |  103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/PipeGen.java                          |   83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/PrimeFinder.java                      |   51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/RandomIndex.java                      |  150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/SentenceData09.java                   |  530 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/data/Thesaurus.java                        |  200 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/io/CONLLReader04.java                      |  264 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/io/CONLLReader06.java                      |  271 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/io/CONLLReader08.java                      |  407 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/io/CONLLReader09.java                      |  409 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/io/CONLLWriter06.java                      |  199 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/io/CONLLWriter09.java                      |  334 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/io/IOGenerals.java                         |   32 ++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/io/PSReader.java                           |   23 +++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/io/TigerReader.java                        |  208 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/lemmatizer/Evaluator.java                  |  108 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/lemmatizer/Lemmatizer.java                 |  543 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/lemmatizer/MFO.java                        |  246 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/lemmatizer/Options.java                    |   72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/lemmatizer/Pipe.java                       |  671 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/lemmatizer/StringEdit.java                 |  303 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/mtag/Convert.java                          |   99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/mtag/Evaluator.java                        |  149 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/mtag/ExtractorM.java                       |  683 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/mtag/MFO.java                              |  532 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/mtag/Options.java                          |   54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/mtag/Pipe.java                             |  675 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/mtag/Tagger.java                           |  386 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parser/Closed.java                         |   30 ++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parser/D5.java                             |  293 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parser/Decoder.java                        |  243 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parser/Edges.java                          |  208 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parser/Evaluator.java                      |  100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parser/Extractor.java                      | 1726 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parser/MFO.java                            |  267 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parser/Open.java                           |   40 ++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parser/Options.java                        |   70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parser/ParallelDecoder.java                |  194 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parser/ParallelExtract.java                |  248 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parser/ParallelRearrange.java              |  146 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parser/Parameters.java                     |   37 +++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parser/ParametersFloat.java                |  138 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parser/Parser.java                         |  789 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parser/Pipe.java                           |  224 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parser/package.html                        |   11 +++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parserR2/Decoder.java                      |  405 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parserR2/Options.java                      |   92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parserR2/Parameters.java                   |   37 +++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parserR2/ParametersFloat.java              |  178 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parserR2/Parser.java                       |  647 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parserR2/Pipe.java                         |  261 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parserR2/PipeReranker.java                 |  123 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parserR2/Reranker.java                     |  991 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/parserR2/package.html                      |    3 +++
 dependencyParser/experimental/mate-tools/src/is2/tag/ExtractorT2.java                       |  766 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/tag/Lexicon.java                           |  150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/tag/MFO.java                               |  527 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/tag/Options.java                           |  132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/tag/POS.java                               |   30 ++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/tag/Tagger.java                            |  506 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/tag/package.html                           |    4 ++++
 dependencyParser/experimental/mate-tools/src/is2/tools/IPipe.java                           |   28 ++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/tools/Retrainable.java                     |   30 ++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/tools/Tool.java                            |   25 +++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/tools/ToolIO.java                          |   15 +++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/tools/Train.java                           |   25 +++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/util/Convert.java                          |  453 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/util/Convert0409.java                      |  176 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/util/ConvertADJ.java                       |  121 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/util/ConvertLowerCase0909.java             |   76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/util/ConvertTiger2CoNLL.java               |  120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/util/DB.java                               |   78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/util/Edges.java                            |  197 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/util/Evaluator.java                        |  603 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/util/EvaluatorTagger.java                  |  707 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/util/ExtractParagraphs.java                |   74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/util/IntStack.java                         |   90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/util/Long2Int.java                         |   81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/util/Options.java                          |  133 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/util/OptionsSuper.java                     |  231 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/util/ParserEvaluator.java                  |  100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/util/Split.java                            |   89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/util/Split2.java                           |   56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/experimental/mate-tools/src/is2/util/Split3.java                           |   51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 dependencyParser/mate-tools/.classpath                                                      |    8 --------
 dependencyParser/mate-tools/.externalToolBuilders/New_Builder.launch                        |    8 --------
 dependencyParser/mate-tools/.externalToolBuilders/ana.launch                                |   20 --------------------
 dependencyParser/mate-tools/.project                                                        |   17 -----------------
 dependencyParser/mate-tools/build.xml                                                       |   64 ----------------------------------------------------------------
 dependencyParser/mate-tools/classes/decoder/ParallelDecoder$DSet.class                      | Bin 485 -> 0 bytes
 dependencyParser/mate-tools/classes/decoder/ParallelDecoder.class                           | Bin 7230 -> 0 bytes
 dependencyParser/mate-tools/classes/decoder/ParallelRearrangeNBest$PA.class                 | Bin 563 -> 0 bytes
 dependencyParser/mate-tools/classes/decoder/ParallelRearrangeNBest.class                    | Bin 2802 -> 0 bytes
 dependencyParser/mate-tools/classes/decoder/ParallelRearrangeNBest2$PA.class                | Bin 729 -> 0 bytes
 dependencyParser/mate-tools/classes/decoder/ParallelRearrangeNBest2.class                   | Bin 3214 -> 0 bytes
 dependencyParser/mate-tools/classes/examples/DependencyParser.class                         | Bin 2933 -> 0 bytes
 dependencyParser/mate-tools/classes/examples/FullPipelineSpanish.class                      | Bin 3598 -> 0 bytes
 dependencyParser/mate-tools/classes/examples/FullPipelineTest.class                         | Bin 2998 -> 0 bytes
 dependencyParser/mate-tools/classes/examples/MorphTagger.class                              | Bin 2729 -> 0 bytes
 dependencyParser/mate-tools/classes/examples/ParseOnly.class                                | Bin 1484 -> 0 bytes
 dependencyParser/mate-tools/classes/examples/Pipeline.class                                 | Bin 3068 -> 0 bytes
 dependencyParser/mate-tools/classes/extractors/Extractor.class                              | Bin 644 -> 0 bytes
 dependencyParser/mate-tools/classes/extractors/ExtractorClusterStacked.class                | Bin 34872 -> 0 bytes
 dependencyParser/mate-tools/classes/extractors/ExtractorClusterStackedR2.class              | Bin 34015 -> 0 bytes
 dependencyParser/mate-tools/classes/extractors/ExtractorFactory.class                       | Bin 856 -> 0 bytes
 dependencyParser/mate-tools/classes/extractors/ExtractorReranker.class                      | Bin 18998 -> 0 bytes
 dependencyParser/mate-tools/classes/extractors/ParallelExtract$DSet.class                   | Bin 402 -> 0 bytes
 dependencyParser/mate-tools/classes/extractors/ParallelExtract.class                        | Bin 5033 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/Closed.class                                   | Bin 889 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/Cluster.class                                  | Bin 4313 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/D4.class                                       | Bin 5263 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/D6.class                                       | Bin 4876 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/D7.class                                       | Bin 5529 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/DPSTree.class                                  | Bin 2035 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/DX.class                                       | Bin 785 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/DataF.class                                    | Bin 604 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/DataFES.class                                  | Bin 2439 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/DataT.class                                    | Bin 437 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/Edges$C.class                                  | Bin 1470 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/Edges.class                                    | Bin 4827 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/F2S.class                                      | Bin 1066 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/F2SD.class                                     | Bin 907 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/F2SF.class                                     | Bin 1659 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/F2SP.class                                     | Bin 1660 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/F2ST.class                                     | Bin 984 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/FV.class                                       | Bin 10524 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/FVR.class                                      | Bin 7780 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/IEncoder.class                                 | Bin 384 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/IEncoderPlus.class                             | Bin 407 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/IFV.class                                      | Bin 974 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/Instances.class                                | Bin 9232 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/InstancesTagger.class                          | Bin 4141 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/IntIntHash.class                               | Bin 5365 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/Long2Int.class                                 | Bin 2492 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/Long2IntExact.class                            | Bin 1052 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/Long2IntInterface.class                        | Bin 166 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/Long2IntQuick.class                            | Bin 718 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/MFB.class                                      | Bin 6510 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/MFC.class                                      | Bin 6546 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/MFO$Data4.class                                | Bin 809 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/MFO.class                                      | Bin 8558 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/Open.class                                     | Bin 1047 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/PSTree.class                                   | Bin 11849 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/Parameter.class                                | Bin 270 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/ParametersFloat.class                          | Bin 4869 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/Parse.class                                    | Bin 3425 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/ParseNBest.class                               | Bin 2410 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/PipeGen.class                                  | Bin 3772 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/PrimeFinder.class                              | Bin 3237 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/RandomIndex.class                              | Bin 2136 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/SentenceData09.class                           | Bin 10528 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/data/Thesaurus.class                                | Bin 4767 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/io/CONLLReader04.class                              | Bin 6133 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/io/CONLLReader06.class                              | Bin 6262 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/io/CONLLReader08.class                              | Bin 7771 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/io/CONLLReader09.class                              | Bin 8166 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/io/CONLLWriter06.class                              | Bin 5397 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/io/CONLLWriter09.class                              | Bin 7210 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/io/IOGenerals.class                                 | Bin 803 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/io/PSReader.class                                   | Bin 210 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/io/TigerReader$Line.class                           | Bin 462 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/io/TigerReader.class                                | Bin 4750 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/lemmatizer/Evaluator$1.class                        | Bin 1371 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/lemmatizer/Evaluator.class                          | Bin 3837 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/lemmatizer/Lemmatizer$1.class                       | Bin 1499 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/lemmatizer/Lemmatizer.class                         | Bin 15094 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/lemmatizer/MFO.class                                | Bin 6423 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/lemmatizer/Options.class                            | Bin 3195 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/lemmatizer/Pipe$1.class                             | Bin 1430 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/lemmatizer/Pipe.class                               | Bin 18093 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/lemmatizer/StringEdit.class                         | Bin 5863 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/mtag/Convert.class                                  | Bin 3442 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/mtag/Evaluator$1.class                              | Bin 1353 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/mtag/Evaluator.class                                | Bin 5012 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/mtag/ExtractorM.class                               | Bin 16754 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/mtag/MFO$Data.class                                 | Bin 576 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/mtag/MFO$Data4.class                                | Bin 3022 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/mtag/MFO.class                                      | Bin 8628 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/mtag/Options.class                                  | Bin 2760 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/mtag/Pipe.class                                     | Bin 16478 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/mtag/Tagger.class                                   | Bin 11439 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parser/Closed.class                                 | Bin 806 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parser/D5.class                                     | Bin 4353 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parser/Decoder.class                                | Bin 5509 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parser/Edges$C.class                                | Bin 1476 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parser/Edges.class                                  | Bin 4849 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parser/Evaluator$Results.class                      | Bin 424 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parser/Evaluator.class                              | Bin 3009 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parser/Extractor.class                              | Bin 37772 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parser/MFO.class                                    | Bin 7825 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parser/Open.class                                   | Bin 1059 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parser/Options.class                                | Bin 3330 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parser/ParallelDecoder$DSet.class                   | Bin 497 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parser/ParallelDecoder.class                        | Bin 7039 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parser/ParallelExtract$DSet.class                   | Bin 402 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parser/ParallelExtract.class                        | Bin 6618 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parser/ParallelRearrange$PA.class                   | Bin 595 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parser/ParallelRearrange.class                      | Bin 2669 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parser/Parameters.class                             | Bin 598 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parser/ParametersFloat.class                        | Bin 3497 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parser/Parser.class                                 | Bin 18990 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parser/Pipe.class                                   | Bin 6984 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parser/package.html                                 |   11 -----------
 dependencyParser/mate-tools/classes/is2/parserR2/Decoder.class                              | Bin 8871 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parserR2/Options.class                              | Bin 3864 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parserR2/Parameters.class                           | Bin 602 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parserR2/ParametersFloat.class                      | Bin 4532 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parserR2/Parser.class                               | Bin 17961 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parserR2/Pipe.class                                 | Bin 7608 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parserR2/PipeReranker.class                         | Bin 4042 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parserR2/Reranker.class                             | Bin 26638 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/parserR2/package.html                               |    3 ---
 dependencyParser/mate-tools/classes/is2/tag/ExtractorT2.class                               | Bin 17820 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/tag/Lexicon.class                                   | Bin 3857 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/tag/MFO$Data4.class                                 | Bin 3019 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/tag/MFO.class                                       | Bin 8816 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/tag/Options.class                                   | Bin 4563 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/tag/POS.class                                       | Bin 1042 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/tag/Tagger.class                                    | Bin 12998 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/tag/package.html                                    |    4 ----
 dependencyParser/mate-tools/classes/is2/tools/IPipe.class                                   | Bin 268 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/tools/Retrainable.class                             | Bin 206 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/tools/Tool.class                                    | Bin 170 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/tools/ToolIO.class                                  | Bin 129 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/tools/Train.class                                   | Bin 365 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/Convert.class                                  | Bin 8979 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/Convert0409.class                              | Bin 3967 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/ConvertADJ.class                               | Bin 3356 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/ConvertLowerCase0909.class                     | Bin 1702 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/ConvertTiger2CoNLL.class                       | Bin 3559 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/DB.class                                       | Bin 2535 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/Edges$C.class                                  | Bin 1470 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/Edges.class                                    | Bin 4211 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/Evaluator$1.class                              | Bin 1359 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/Evaluator$Results.class                        | Bin 558 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/Evaluator.class                                | Bin 14710 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/EvaluatorTagger$1.class                        | Bin 1383 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/EvaluatorTagger$2.class                        | Bin 1412 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/EvaluatorTagger$Results.class                  | Bin 582 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/EvaluatorTagger.class                          | Bin 18350 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/ExtractParagraphs.class                        | Bin 2592 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/IntStack.class                                 | Bin 1918 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/Long2Int.class                                 | Bin 892 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/Options.class                                  | Bin 4636 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/OptionsSuper.class                             | Bin 7107 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/ParserEvaluator$Results.class                  | Bin 442 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/ParserEvaluator.class                          | Bin 3074 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/Split.class                                    | Bin 2958 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/Split2.class                                   | Bin 2147 -> 0 bytes
 dependencyParser/mate-tools/classes/is2/util/Split3.class                                   | Bin 1688 -> 0 bytes
 dependencyParser/mate-tools/lib/commons-math-2.2.jar                                        | Bin 988514 -> 0 bytes
 dependencyParser/mate-tools/lib/trove-2.0.4.jar                                             | Bin 746790 -> 0 bytes
 dependencyParser/mate-tools/src/decoder/ParallelDecoder.java                                |  189 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/decoder/ParallelRearrangeNBest.java                         |  144 ------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/decoder/ParallelRearrangeNBest2.java                        |  158 --------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/examples/DependencyParser.java                              |   90 ------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/examples/FullPipelineSpanish.java                           |  108 ------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/examples/FullPipelineTest.java                              |  110 --------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/examples/MorphTagger.java                                   |   79 -------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/examples/ParseOnly.java                                     |   48 ------------------------------------------------
 dependencyParser/mate-tools/src/examples/Pipeline.java                                      |   90 ------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/extractors/Extractor.java                                   |   52 ----------------------------------------------------
 dependencyParser/mate-tools/src/extractors/ExtractorClusterStacked.java                     | 1946 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/extractors/ExtractorClusterStackedR2.java                   | 1929 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/extractors/ExtractorFactory.java                            |   42 ------------------------------------------
 dependencyParser/mate-tools/src/extractors/ExtractorReranker.java                           | 1080 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/extractors/ParallelExtract.java                             |  193 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/Closed.java                                        |   28 ----------------------------
 dependencyParser/mate-tools/src/is2/data/Cluster.java                                       |  163 -------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/D4.java                                            |  252 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/D6.java                                            |  260 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/D7.java                                            |  290 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/DPSTree.java                                       |  109 -------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/DX.java                                            |   56 --------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/DataF.java                                         |   35 -----------------------------------
 dependencyParser/mate-tools/src/is2/data/DataFES.java                                       |   71 -----------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/DataT.java                                         |   19 -------------------
 dependencyParser/mate-tools/src/is2/data/Edges.java                                         |  216 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/F2S.java                                           |   54 ------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/F2SD.java                                          |   44 --------------------------------------------
 dependencyParser/mate-tools/src/is2/data/F2SF.java                                          |   77 -----------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/F2SP.java                                          |   77 -----------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/F2ST.java                                          |   48 ------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/FV.java                                            |  562 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/FVR.java                                           |  435 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/IEncoder.java                                      |   27 ---------------------------
 dependencyParser/mate-tools/src/is2/data/IEncoderPlus.java                                  |   27 ---------------------------
 dependencyParser/mate-tools/src/is2/data/IFV.java                                           |   29 -----------------------------
 dependencyParser/mate-tools/src/is2/data/Instances.java                                     |  408 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/InstancesTagger.java                               |   95 -----------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/IntIntHash.java                                    |  255 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/Long2Int.java                                      |  112 ----------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/Long2IntExact.java                                 |   65 -----------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/Long2IntInterface.java                             |   16 ----------------
 dependencyParser/mate-tools/src/is2/data/Long2IntQuick.java                                 |   51 ---------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/MFB.java                                           |  248 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/MFC.java                                           |  243 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/MFO.java                                           |  380 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/Open.java                                          |   38 --------------------------------------
 dependencyParser/mate-tools/src/is2/data/PSTree.java                                        |  745 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/Parameter.java                                     |   13 -------------
 dependencyParser/mate-tools/src/is2/data/ParametersFloat.java                               |  181 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/Parse.java                                         |  157 -------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/ParseNBest.java                                    |  103 -------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/PipeGen.java                                       |   83 -----------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/PrimeFinder.java                                   |   51 ---------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/RandomIndex.java                                   |  150 ------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/SentenceData09.java                                |  530 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/data/Thesaurus.java                                     |  200 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/io/CONLLReader04.java                                   |  264 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/io/CONLLReader06.java                                   |  271 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/io/CONLLReader08.java                                   |  407 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/io/CONLLReader09.java                                   |  409 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/io/CONLLWriter06.java                                   |  199 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/io/CONLLWriter09.java                                   |  334 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/io/IOGenerals.java                                      |   32 --------------------------------
 dependencyParser/mate-tools/src/is2/io/PSReader.java                                        |   23 -----------------------
 dependencyParser/mate-tools/src/is2/io/TigerReader.java                                     |  208 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/lemmatizer/Evaluator.java                               |  108 ------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/lemmatizer/Lemmatizer.java                              |  543 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/lemmatizer/MFO.java                                     |  246 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/lemmatizer/Options.java                                 |   72 ------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/lemmatizer/Pipe.java                                    |  671 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/lemmatizer/StringEdit.java                              |  303 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/mtag/Convert.java                                       |   99 ---------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/mtag/Evaluator.java                                     |  149 -----------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/mtag/ExtractorM.java                                    |  683 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/mtag/MFO.java                                           |  532 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/mtag/Options.java                                       |   54 ------------------------------------------------------
 dependencyParser/mate-tools/src/is2/mtag/Pipe.java                                          |  675 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/mtag/Tagger.java                                        |  386 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/parser/Closed.java                                      |   30 ------------------------------
 dependencyParser/mate-tools/src/is2/parser/D5.java                                          |  293 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/parser/Decoder.java                                     |  243 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/parser/Edges.java                                       |  208 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/parser/Evaluator.java                                   |  100 ----------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/parser/Extractor.java                                   | 1726 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/parser/MFO.java                                         |  267 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/parser/Open.java                                        |   40 ----------------------------------------
 dependencyParser/mate-tools/src/is2/parser/Options.java                                     |   70 ----------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/parser/ParallelDecoder.java                             |  194 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/parser/ParallelExtract.java                             |  248 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/parser/ParallelRearrange.java                           |  146 --------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/parser/Parameters.java                                  |   37 -------------------------------------
 dependencyParser/mate-tools/src/is2/parser/ParametersFloat.java                             |  138 ------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/parser/Parser.java                                      |  789 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/parser/Pipe.java                                        |  224 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/parser/package.html                                     |   11 -----------
 dependencyParser/mate-tools/src/is2/parserR2/Decoder.java                                   |  405 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/parserR2/Options.java                                   |   92 --------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/parserR2/Parameters.java                                |   37 -------------------------------------
 dependencyParser/mate-tools/src/is2/parserR2/ParametersFloat.java                           |  178 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/parserR2/Parser.java                                    |  647 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/parserR2/Pipe.java                                      |  261 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/parserR2/PipeReranker.java                              |  123 ---------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/parserR2/Reranker.java                                  |  991 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/parserR2/package.html                                   |    3 ---
 dependencyParser/mate-tools/src/is2/tag/ExtractorT2.java                                    |  766 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/tag/Lexicon.java                                        |  150 ------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/tag/MFO.java                                            |  527 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/tag/Options.java                                        |  132 ------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/tag/POS.java                                            |   30 ------------------------------
 dependencyParser/mate-tools/src/is2/tag/Tagger.java                                         |  506 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/tag/package.html                                        |    4 ----
 dependencyParser/mate-tools/src/is2/tools/IPipe.java                                        |   28 ----------------------------
 dependencyParser/mate-tools/src/is2/tools/Retrainable.java                                  |   30 ------------------------------
 dependencyParser/mate-tools/src/is2/tools/Tool.java                                         |   25 -------------------------
 dependencyParser/mate-tools/src/is2/tools/ToolIO.java                                       |   15 ---------------
 dependencyParser/mate-tools/src/is2/tools/Train.java                                        |   25 -------------------------
 dependencyParser/mate-tools/src/is2/util/Convert.java                                       |  453 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/util/Convert0409.java                                   |  176 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/util/ConvertADJ.java                                    |  121 -------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/util/ConvertLowerCase0909.java                          |   76 ----------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/util/ConvertTiger2CoNLL.java                            |  120 ------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/util/DB.java                                            |   78 ------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/util/Edges.java                                         |  197 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/util/Evaluator.java                                     |  603 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/util/EvaluatorTagger.java                               |  707 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/util/ExtractParagraphs.java                             |   74 --------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/util/IntStack.java                                      |   90 ------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/util/Long2Int.java                                      |   81 ---------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/util/Options.java                                       |  133 -------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/util/OptionsSuper.java                                  |  231 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/util/ParserEvaluator.java                               |  100 ----------------------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/util/Split.java                                         |   89 -----------------------------------------------------------------------------------------
 dependencyParser/mate-tools/src/is2/util/Split2.java                                        |   56 --------------------------------------------------------
 dependencyParser/mate-tools/src/is2/util/Split3.java                                        |   51 ---------------------------------------------------
 760 files changed, 67387 insertions(+), 38242 deletions(-)
 create mode 100644 dependencyParser/basic/mate-tools/.classpath
 create mode 100644 dependencyParser/basic/mate-tools/.externalToolBuilders/New_Builder.launch
 create mode 100644 dependencyParser/basic/mate-tools/.externalToolBuilders/ana.launch
 create mode 100644 dependencyParser/basic/mate-tools/.project
 create mode 100644 dependencyParser/basic/mate-tools/build.xml
 create mode 100644 dependencyParser/basic/mate-tools/lib/commons-math-2.2.jar
 create mode 100644 dependencyParser/basic/mate-tools/lib/trove-2.0.4.jar
 create mode 100755 dependencyParser/basic/mate-tools/src/decoder/ParallelDecoder.java
 create mode 100755 dependencyParser/basic/mate-tools/src/decoder/ParallelRearrangeNBest.java
 create mode 100644 dependencyParser/basic/mate-tools/src/decoder/ParallelRearrangeNBest2.java
 create mode 100644 dependencyParser/basic/mate-tools/src/examples/DependencyParser.java
 create mode 100644 dependencyParser/basic/mate-tools/src/examples/FullPipelineSpanish.java
 create mode 100644 dependencyParser/basic/mate-tools/src/examples/FullPipelineTest.java
 create mode 100644 dependencyParser/basic/mate-tools/src/examples/MorphTagger.java
 create mode 100755 dependencyParser/basic/mate-tools/src/examples/ParseOnly.java
 create mode 100644 dependencyParser/basic/mate-tools/src/examples/Pipeline.java
 create mode 100644 dependencyParser/basic/mate-tools/src/extractors/Extractor.java
 create mode 100755 dependencyParser/basic/mate-tools/src/extractors/ExtractorClusterStacked.java
 create mode 100644 dependencyParser/basic/mate-tools/src/extractors/ExtractorClusterStackedR2.java
 create mode 100644 dependencyParser/basic/mate-tools/src/extractors/ExtractorFactory.java
 create mode 100644 dependencyParser/basic/mate-tools/src/extractors/ExtractorReranker.java
 create mode 100755 dependencyParser/basic/mate-tools/src/extractors/ParallelExtract.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/data/Closed.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/data/Cluster.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/data/D4.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/data/D6.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/data/D7.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/data/DPSTree.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/data/DX.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/data/DataF.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/data/DataFES.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/data/DataT.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/data/Edges.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/data/F2S.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/data/F2SD.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/data/F2SF.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/data/F2SP.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/data/F2ST.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/data/FV.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/data/FVR.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/data/IEncoder.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/data/IEncoderPlus.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/data/IFV.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/data/Instances.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/data/InstancesTagger.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/data/IntIntHash.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/data/Long2Int.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/data/Long2IntExact.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/data/Long2IntInterface.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/data/Long2IntQuick.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/data/MFB.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/data/MFC.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/data/MFO.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/data/Open.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/data/PSTree.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/data/Parameter.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/data/ParametersFloat.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/data/Parse.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/data/ParseNBest.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/data/PipeGen.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/data/PrimeFinder.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/data/RandomIndex.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/data/SentenceData09.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/data/Thesaurus.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/io/CONLLReader04.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/io/CONLLReader06.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/io/CONLLReader08.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/io/CONLLReader09.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/io/CONLLWriter06.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/io/CONLLWriter09.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/io/IOGenerals.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/io/PSReader.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/io/TigerReader.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/lemmatizer/Evaluator.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/lemmatizer/Lemmatizer.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/lemmatizer/MFO.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/lemmatizer/Options.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/lemmatizer/Pipe.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/lemmatizer/StringEdit.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/mtag/Convert.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/mtag/Evaluator.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/mtag/ExtractorM.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/mtag/MFO.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/mtag/Options.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/mtag/Pipe.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/mtag/Tagger.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/parser/Closed.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/parser/D5.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/parser/Decoder.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/parser/Edges.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/parser/Evaluator.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/parser/Extractor.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/parser/MFO.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/parser/Open.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/parser/Options.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/parser/ParallelDecoder.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/parser/ParallelExtract.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/parser/ParallelRearrange.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/parser/Parameters.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/parser/ParametersFloat.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/parser/Parser.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/parser/Pipe.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/parser/package.html
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/parserR2/Decoder.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/parserR2/Options.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/parserR2/Parameters.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/parserR2/ParametersFloat.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/parserR2/Parser.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/parserR2/Pipe.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/parserR2/PipeReranker.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/parserR2/Reranker.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/parserR2/package.html
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/tag/ExtractorT2.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/tag/Lexicon.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/tag/MFO.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/tag/Options.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/tag/POS.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/tag/Tagger.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/tag/package.html
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/tools/IPipe.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/tools/Retrainable.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/tools/Tool.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/tools/ToolIO.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/tools/Train.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/util/Convert.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/util/Convert0409.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/util/ConvertADJ.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/util/ConvertLowerCase0909.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/util/ConvertTiger2CoNLL.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/util/DB.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/util/Edges.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/util/Evaluator.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/util/EvaluatorTagger.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/util/ExtractParagraphs.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/util/IntStack.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/util/Long2Int.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/util/Options.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/util/OptionsSuper.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/util/ParserEvaluator.java
 create mode 100755 dependencyParser/basic/mate-tools/src/is2/util/Split.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/util/Split2.java
 create mode 100644 dependencyParser/basic/mate-tools/src/is2/util/Split3.java
 delete mode 100644 dependencyParser/examples/README.txt
 delete mode 100644 dependencyParser/examples/d2 output.txt
 delete mode 100644 dependencyParser/examples/edges output.txt
 delete mode 100644 dependencyParser/examples/is output.txt
 delete mode 100644 dependencyParser/examples/test.csv
 delete mode 100644 dependencyParser/examples/test.out
 create mode 100644 dependencyParser/experimental/examples/README.txt
 create mode 100644 dependencyParser/experimental/examples/d2 output.txt
 create mode 100644 dependencyParser/experimental/examples/edges output.txt
 create mode 100644 dependencyParser/experimental/examples/is output.txt
 create mode 100644 dependencyParser/experimental/examples/test.csv
 create mode 100644 dependencyParser/experimental/examples/test.out
 create mode 100644 dependencyParser/experimental/mate-tools/.classpath
 create mode 100644 dependencyParser/experimental/mate-tools/.externalToolBuilders/New_Builder.launch
 create mode 100644 dependencyParser/experimental/mate-tools/.externalToolBuilders/ana.launch
 create mode 100644 dependencyParser/experimental/mate-tools/.project
 create mode 100644 dependencyParser/experimental/mate-tools/build.xml
 create mode 100644 dependencyParser/experimental/mate-tools/classes/decoder/ParallelDecoder$DSet.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/decoder/ParallelDecoder.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/decoder/ParallelRearrangeNBest$PA.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/decoder/ParallelRearrangeNBest.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/decoder/ParallelRearrangeNBest2$PA.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/decoder/ParallelRearrangeNBest2.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/examples/DependencyParser.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/examples/FullPipelineSpanish.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/examples/FullPipelineTest.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/examples/MorphTagger.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/examples/ParseOnly.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/examples/Pipeline.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/extractors/Extractor.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/extractors/ExtractorClusterStacked.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/extractors/ExtractorClusterStackedR2.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/extractors/ExtractorFactory.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/extractors/ExtractorReranker.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/extractors/ParallelExtract$DSet.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/extractors/ParallelExtract.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/Closed.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/Cluster.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/D4.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/D6.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/D7.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/DPSTree.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/DX.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/DataF.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/DataFES.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/DataT.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/Edges$C.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/Edges.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/F2S.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/F2SD.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/F2SF.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/F2SP.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/F2ST.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/FV.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/FVR.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/IEncoder.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/IEncoderPlus.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/IFV.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/Instances.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/InstancesTagger.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/IntIntHash.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/Long2Int.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/Long2IntExact.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/Long2IntInterface.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/Long2IntQuick.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/MFB.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/MFC.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/MFO$Data4.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/MFO.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/Open.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/PSTree.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/Parameter.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/ParametersFloat.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/Parse.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/ParseNBest.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/PipeGen.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/PrimeFinder.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/RandomIndex.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/SentenceData09.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/data/Thesaurus.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/io/CONLLReader04.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/io/CONLLReader06.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/io/CONLLReader08.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/io/CONLLReader09.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/io/CONLLWriter06.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/io/CONLLWriter09.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/io/IOGenerals.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/io/PSReader.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/io/TigerReader$Line.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/io/TigerReader.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Evaluator$1.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Evaluator.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Lemmatizer$1.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Lemmatizer.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/MFO.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Options.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Pipe$1.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Pipe.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/StringEdit.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/mtag/Convert.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/mtag/Evaluator$1.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/mtag/Evaluator.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/mtag/ExtractorM.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/mtag/MFO$Data.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/mtag/MFO$Data4.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/mtag/MFO.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/mtag/Options.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/mtag/Pipe.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/mtag/Tagger.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parser/Closed.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parser/D5.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parser/Decoder.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parser/Edges$C.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parser/Edges.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parser/Evaluator$Results.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parser/Evaluator.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parser/Extractor.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parser/MFO.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parser/Open.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parser/Options.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelDecoder$DSet.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelDecoder.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelExtract$DSet.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelExtract.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelRearrange$PA.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelRearrange.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parser/Parameters.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parser/ParametersFloat.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parser/Parser.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parser/Pipe.class
 create mode 100755 dependencyParser/experimental/mate-tools/classes/is2/parser/package.html
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parserR2/Decoder.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parserR2/Options.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parserR2/Parameters.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parserR2/ParametersFloat.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parserR2/Parser.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parserR2/Pipe.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parserR2/PipeReranker.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/parserR2/Reranker.class
 create mode 100755 dependencyParser/experimental/mate-tools/classes/is2/parserR2/package.html
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/tag/ExtractorT2.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/tag/Lexicon.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/tag/MFO$Data4.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/tag/MFO.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/tag/Options.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/tag/POS.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/tag/Tagger.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/tag/package.html
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/tools/IPipe.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/tools/Retrainable.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/tools/Tool.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/tools/ToolIO.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/tools/Train.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/Convert.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/Convert0409.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/ConvertADJ.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/ConvertLowerCase0909.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/ConvertTiger2CoNLL.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/DB.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/Edges$C.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/Edges.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/Evaluator$1.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/Evaluator$Results.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/Evaluator.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/EvaluatorTagger$1.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/EvaluatorTagger$2.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/EvaluatorTagger$Results.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/EvaluatorTagger.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/ExtractParagraphs.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/IntStack.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/Long2Int.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/Options.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/OptionsSuper.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/ParserEvaluator$Results.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/ParserEvaluator.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/Split.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/Split2.class
 create mode 100644 dependencyParser/experimental/mate-tools/classes/is2/util/Split3.class
 create mode 100644 dependencyParser/experimental/mate-tools/lib/commons-math-2.2.jar
 create mode 100644 dependencyParser/experimental/mate-tools/lib/trove-2.0.4.jar
 create mode 100755 dependencyParser/experimental/mate-tools/src/decoder/ParallelDecoder.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/decoder/ParallelRearrangeNBest.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/decoder/ParallelRearrangeNBest2.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/examples/DependencyParser.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/examples/FullPipelineSpanish.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/examples/FullPipelineTest.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/examples/MorphTagger.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/examples/ParseOnly.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/examples/Pipeline.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/extractors/Extractor.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/extractors/ExtractorClusterStacked.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/extractors/ExtractorClusterStackedR2.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/extractors/ExtractorFactory.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/extractors/ExtractorReranker.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/extractors/ParallelExtract.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/data/Closed.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/data/Cluster.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/data/D4.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/data/D6.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/data/D7.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/data/DPSTree.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/data/DX.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/data/DataF.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/data/DataFES.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/data/DataT.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/data/Edges.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/data/F2S.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/data/F2SD.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/data/F2SF.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/data/F2SP.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/data/F2ST.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/data/FV.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/data/FVR.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/data/IEncoder.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/data/IEncoderPlus.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/data/IFV.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/data/Instances.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/data/InstancesTagger.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/data/IntIntHash.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/data/Long2Int.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/data/Long2IntExact.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/data/Long2IntInterface.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/data/Long2IntQuick.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/data/MFB.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/data/MFC.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/data/MFO.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/data/Open.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/data/PSTree.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/data/Parameter.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/data/ParametersFloat.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/data/Parse.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/data/ParseNBest.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/data/PipeGen.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/data/PrimeFinder.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/data/RandomIndex.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/data/SentenceData09.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/data/Thesaurus.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/io/CONLLReader04.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/io/CONLLReader06.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/io/CONLLReader08.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/io/CONLLReader09.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/io/CONLLWriter06.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/io/CONLLWriter09.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/io/IOGenerals.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/io/PSReader.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/io/TigerReader.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/lemmatizer/Evaluator.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/lemmatizer/Lemmatizer.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/lemmatizer/MFO.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/lemmatizer/Options.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/lemmatizer/Pipe.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/lemmatizer/StringEdit.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/mtag/Convert.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/mtag/Evaluator.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/mtag/ExtractorM.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/mtag/MFO.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/mtag/Options.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/mtag/Pipe.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/mtag/Tagger.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/parser/Closed.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/parser/D5.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/parser/Decoder.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/parser/Edges.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/parser/Evaluator.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/parser/Extractor.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/parser/MFO.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/parser/Open.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/parser/Options.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/parser/ParallelDecoder.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/parser/ParallelExtract.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/parser/ParallelRearrange.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/parser/Parameters.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/parser/ParametersFloat.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/parser/Parser.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/parser/Pipe.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/parser/package.html
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/parserR2/Decoder.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/parserR2/Options.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/parserR2/Parameters.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/parserR2/ParametersFloat.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/parserR2/Parser.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/parserR2/Pipe.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/parserR2/PipeReranker.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/parserR2/Reranker.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/parserR2/package.html
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/tag/ExtractorT2.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/tag/Lexicon.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/tag/MFO.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/tag/Options.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/tag/POS.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/tag/Tagger.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/tag/package.html
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/tools/IPipe.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/tools/Retrainable.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/tools/Tool.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/tools/ToolIO.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/tools/Train.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/util/Convert.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/util/Convert0409.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/util/ConvertADJ.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/util/ConvertLowerCase0909.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/util/ConvertTiger2CoNLL.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/util/DB.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/util/Edges.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/util/Evaluator.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/util/EvaluatorTagger.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/util/ExtractParagraphs.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/util/IntStack.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/util/Long2Int.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/util/Options.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/util/OptionsSuper.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/util/ParserEvaluator.java
 create mode 100755 dependencyParser/experimental/mate-tools/src/is2/util/Split.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/util/Split2.java
 create mode 100644 dependencyParser/experimental/mate-tools/src/is2/util/Split3.java
 delete mode 100644 dependencyParser/mate-tools/.classpath
 delete mode 100644 dependencyParser/mate-tools/.externalToolBuilders/New_Builder.launch
 delete mode 100644 dependencyParser/mate-tools/.externalToolBuilders/ana.launch
 delete mode 100644 dependencyParser/mate-tools/.project
 delete mode 100644 dependencyParser/mate-tools/build.xml
 delete mode 100644 dependencyParser/mate-tools/classes/decoder/ParallelDecoder$DSet.class
 delete mode 100644 dependencyParser/mate-tools/classes/decoder/ParallelDecoder.class
 delete mode 100644 dependencyParser/mate-tools/classes/decoder/ParallelRearrangeNBest$PA.class
 delete mode 100644 dependencyParser/mate-tools/classes/decoder/ParallelRearrangeNBest.class
 delete mode 100644 dependencyParser/mate-tools/classes/decoder/ParallelRearrangeNBest2$PA.class
 delete mode 100644 dependencyParser/mate-tools/classes/decoder/ParallelRearrangeNBest2.class
 delete mode 100644 dependencyParser/mate-tools/classes/examples/DependencyParser.class
 delete mode 100644 dependencyParser/mate-tools/classes/examples/FullPipelineSpanish.class
 delete mode 100644 dependencyParser/mate-tools/classes/examples/FullPipelineTest.class
 delete mode 100644 dependencyParser/mate-tools/classes/examples/MorphTagger.class
 delete mode 100644 dependencyParser/mate-tools/classes/examples/ParseOnly.class
 delete mode 100644 dependencyParser/mate-tools/classes/examples/Pipeline.class
 delete mode 100644 dependencyParser/mate-tools/classes/extractors/Extractor.class
 delete mode 100644 dependencyParser/mate-tools/classes/extractors/ExtractorClusterStacked.class
 delete mode 100644 dependencyParser/mate-tools/classes/extractors/ExtractorClusterStackedR2.class
 delete mode 100644 dependencyParser/mate-tools/classes/extractors/ExtractorFactory.class
 delete mode 100644 dependencyParser/mate-tools/classes/extractors/ExtractorReranker.class
 delete mode 100644 dependencyParser/mate-tools/classes/extractors/ParallelExtract$DSet.class
 delete mode 100644 dependencyParser/mate-tools/classes/extractors/ParallelExtract.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/Closed.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/Cluster.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/D4.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/D6.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/D7.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/DPSTree.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/DX.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/DataF.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/DataFES.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/DataT.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/Edges$C.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/Edges.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/F2S.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/F2SD.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/F2SF.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/F2SP.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/F2ST.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/FV.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/FVR.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/IEncoder.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/IEncoderPlus.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/IFV.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/Instances.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/InstancesTagger.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/IntIntHash.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/Long2Int.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/Long2IntExact.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/Long2IntInterface.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/Long2IntQuick.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/MFB.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/MFC.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/MFO$Data4.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/MFO.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/Open.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/PSTree.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/Parameter.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/ParametersFloat.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/Parse.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/ParseNBest.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/PipeGen.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/PrimeFinder.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/RandomIndex.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/SentenceData09.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/data/Thesaurus.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/io/CONLLReader04.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/io/CONLLReader06.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/io/CONLLReader08.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/io/CONLLReader09.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/io/CONLLWriter06.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/io/CONLLWriter09.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/io/IOGenerals.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/io/PSReader.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/io/TigerReader$Line.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/io/TigerReader.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/lemmatizer/Evaluator$1.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/lemmatizer/Evaluator.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/lemmatizer/Lemmatizer$1.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/lemmatizer/Lemmatizer.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/lemmatizer/MFO.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/lemmatizer/Options.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/lemmatizer/Pipe$1.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/lemmatizer/Pipe.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/lemmatizer/StringEdit.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/mtag/Convert.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/mtag/Evaluator$1.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/mtag/Evaluator.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/mtag/ExtractorM.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/mtag/MFO$Data.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/mtag/MFO$Data4.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/mtag/MFO.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/mtag/Options.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/mtag/Pipe.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/mtag/Tagger.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parser/Closed.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parser/D5.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parser/Decoder.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parser/Edges$C.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parser/Edges.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parser/Evaluator$Results.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parser/Evaluator.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parser/Extractor.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parser/MFO.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parser/Open.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parser/Options.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parser/ParallelDecoder$DSet.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parser/ParallelDecoder.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parser/ParallelExtract$DSet.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parser/ParallelExtract.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parser/ParallelRearrange$PA.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parser/ParallelRearrange.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parser/Parameters.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parser/ParametersFloat.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parser/Parser.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parser/Pipe.class
 delete mode 100755 dependencyParser/mate-tools/classes/is2/parser/package.html
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parserR2/Decoder.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parserR2/Options.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parserR2/Parameters.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parserR2/ParametersFloat.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parserR2/Parser.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parserR2/Pipe.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parserR2/PipeReranker.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/parserR2/Reranker.class
 delete mode 100755 dependencyParser/mate-tools/classes/is2/parserR2/package.html
 delete mode 100644 dependencyParser/mate-tools/classes/is2/tag/ExtractorT2.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/tag/Lexicon.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/tag/MFO$Data4.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/tag/MFO.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/tag/Options.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/tag/POS.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/tag/Tagger.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/tag/package.html
 delete mode 100644 dependencyParser/mate-tools/classes/is2/tools/IPipe.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/tools/Retrainable.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/tools/Tool.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/tools/ToolIO.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/tools/Train.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/Convert.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/Convert0409.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/ConvertADJ.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/ConvertLowerCase0909.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/ConvertTiger2CoNLL.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/DB.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/Edges$C.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/Edges.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/Evaluator$1.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/Evaluator$Results.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/Evaluator.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/EvaluatorTagger$1.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/EvaluatorTagger$2.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/EvaluatorTagger$Results.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/EvaluatorTagger.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/ExtractParagraphs.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/IntStack.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/Long2Int.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/Options.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/OptionsSuper.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/ParserEvaluator$Results.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/ParserEvaluator.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/Split.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/Split2.class
 delete mode 100644 dependencyParser/mate-tools/classes/is2/util/Split3.class
 delete mode 100644 dependencyParser/mate-tools/lib/commons-math-2.2.jar
 delete mode 100644 dependencyParser/mate-tools/lib/trove-2.0.4.jar
 delete mode 100755 dependencyParser/mate-tools/src/decoder/ParallelDecoder.java
 delete mode 100755 dependencyParser/mate-tools/src/decoder/ParallelRearrangeNBest.java
 delete mode 100644 dependencyParser/mate-tools/src/decoder/ParallelRearrangeNBest2.java
 delete mode 100644 dependencyParser/mate-tools/src/examples/DependencyParser.java
 delete mode 100644 dependencyParser/mate-tools/src/examples/FullPipelineSpanish.java
 delete mode 100644 dependencyParser/mate-tools/src/examples/FullPipelineTest.java
 delete mode 100644 dependencyParser/mate-tools/src/examples/MorphTagger.java
 delete mode 100755 dependencyParser/mate-tools/src/examples/ParseOnly.java
 delete mode 100644 dependencyParser/mate-tools/src/examples/Pipeline.java
 delete mode 100644 dependencyParser/mate-tools/src/extractors/Extractor.java
 delete mode 100755 dependencyParser/mate-tools/src/extractors/ExtractorClusterStacked.java
 delete mode 100644 dependencyParser/mate-tools/src/extractors/ExtractorClusterStackedR2.java
 delete mode 100644 dependencyParser/mate-tools/src/extractors/ExtractorFactory.java
 delete mode 100644 dependencyParser/mate-tools/src/extractors/ExtractorReranker.java
 delete mode 100755 dependencyParser/mate-tools/src/extractors/ParallelExtract.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/data/Closed.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/data/Cluster.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/data/D4.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/data/D6.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/data/D7.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/data/DPSTree.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/data/DX.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/data/DataF.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/data/DataFES.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/data/DataT.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/data/Edges.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/data/F2S.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/data/F2SD.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/data/F2SF.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/data/F2SP.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/data/F2ST.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/data/FV.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/data/FVR.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/data/IEncoder.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/data/IEncoderPlus.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/data/IFV.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/data/Instances.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/data/InstancesTagger.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/data/IntIntHash.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/data/Long2Int.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/data/Long2IntExact.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/data/Long2IntInterface.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/data/Long2IntQuick.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/data/MFB.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/data/MFC.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/data/MFO.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/data/Open.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/data/PSTree.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/data/Parameter.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/data/ParametersFloat.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/data/Parse.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/data/ParseNBest.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/data/PipeGen.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/data/PrimeFinder.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/data/RandomIndex.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/data/SentenceData09.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/data/Thesaurus.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/io/CONLLReader04.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/io/CONLLReader06.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/io/CONLLReader08.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/io/CONLLReader09.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/io/CONLLWriter06.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/io/CONLLWriter09.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/io/IOGenerals.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/io/PSReader.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/io/TigerReader.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/lemmatizer/Evaluator.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/lemmatizer/Lemmatizer.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/lemmatizer/MFO.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/lemmatizer/Options.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/lemmatizer/Pipe.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/lemmatizer/StringEdit.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/mtag/Convert.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/mtag/Evaluator.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/mtag/ExtractorM.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/mtag/MFO.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/mtag/Options.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/mtag/Pipe.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/mtag/Tagger.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/parser/Closed.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/parser/D5.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/parser/Decoder.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/parser/Edges.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/parser/Evaluator.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/parser/Extractor.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/parser/MFO.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/parser/Open.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/parser/Options.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/parser/ParallelDecoder.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/parser/ParallelExtract.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/parser/ParallelRearrange.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/parser/Parameters.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/parser/ParametersFloat.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/parser/Parser.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/parser/Pipe.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/parser/package.html
 delete mode 100755 dependencyParser/mate-tools/src/is2/parserR2/Decoder.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/parserR2/Options.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/parserR2/Parameters.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/parserR2/ParametersFloat.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/parserR2/Parser.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/parserR2/Pipe.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/parserR2/PipeReranker.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/parserR2/Reranker.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/parserR2/package.html
 delete mode 100644 dependencyParser/mate-tools/src/is2/tag/ExtractorT2.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/tag/Lexicon.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/tag/MFO.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/tag/Options.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/tag/POS.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/tag/Tagger.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/tag/package.html
 delete mode 100644 dependencyParser/mate-tools/src/is2/tools/IPipe.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/tools/Retrainable.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/tools/Tool.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/tools/ToolIO.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/tools/Train.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/util/Convert.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/util/Convert0409.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/util/ConvertADJ.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/util/ConvertLowerCase0909.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/util/ConvertTiger2CoNLL.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/util/DB.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/util/Edges.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/util/Evaluator.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/util/EvaluatorTagger.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/util/ExtractParagraphs.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/util/IntStack.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/util/Long2Int.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/util/Options.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/util/OptionsSuper.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/util/ParserEvaluator.java
 delete mode 100755 dependencyParser/mate-tools/src/is2/util/Split.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/util/Split2.java
 delete mode 100644 dependencyParser/mate-tools/src/is2/util/Split3.java

diff --git a/dependencyParser/basic/mate-tools/.classpath b/dependencyParser/basic/mate-tools/.classpath
new file mode 100644
index 0000000..8092159
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="lib" path="/mtt/lib/trove.jar"/>
+	<classpathentry kind="lib" path="lib/commons-math-2.2.jar"/>
+	<classpathentry kind="output" path="classes"/>
+</classpath>
diff --git a/dependencyParser/basic/mate-tools/.externalToolBuilders/New_Builder.launch b/dependencyParser/basic/mate-tools/.externalToolBuilders/New_Builder.launch
new file mode 100644
index 0000000..eca73f7
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/.externalToolBuilders/New_Builder.launch
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<launchConfiguration type="org.eclipse.ui.externaltools.ProgramBuilderLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/mate-tools/.project}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/mate-tools}"/>
+</launchConfiguration>
diff --git a/dependencyParser/basic/mate-tools/.externalToolBuilders/ana.launch b/dependencyParser/basic/mate-tools/.externalToolBuilders/ana.launch
new file mode 100644
index 0000000..09df90d
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/.externalToolBuilders/ana.launch
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/mate-tools/scripts/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="mate-tools"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_BUILDER_ENABLED" value="false"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/mate-tools/scripts/build.xml}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/mate-tools}"/>
+</launchConfiguration>
diff --git a/dependencyParser/basic/mate-tools/.project b/dependencyParser/basic/mate-tools/.project
new file mode 100644
index 0000000..f813b9e
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>mate-tools</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/dependencyParser/basic/mate-tools/build.xml b/dependencyParser/basic/mate-tools/build.xml
new file mode 100644
index 0000000..c558279
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/build.xml
@@ -0,0 +1,64 @@
+<project name="analyse" default="compile" basedir=".">
+    <description>
+        The base ant build file.
+    </description>
+    
+  <!-- set global properties for this build -->
+  <property name="src" location="src"/>
+  <property name="classes" location="classes"/>
+  <property name="dist" location="dist"/>
+  	<property name="include" location="include"/>
+
+  
+  <target name="init" description="Clears the /class directory">
+    <!-- Create the time stamp -->
+    <tstamp/> 
+    <mkdir dir="dist"/>
+    <mkdir dir="javadoc"/>
+    <mkdir dir="classes"/>
+  </target>
+
+  <target name="compile" depends="init" description="Compile the source" >
+    <!-- Compile the java code from ${src} into ${build}   executable="javac" -->
+  
+    <javac  srcdir="${src}"   
+           destdir="${classes}"          
+    	 includeantruntime="false"
+    	executable="javac.exe"
+    	   optimize="true"
+    	   debug="off"
+	   classpath=""/>
+	
+  </target>
+
+  <target name="build"  description="Build the distribution .jar file" >
+    <!-- Create the temporary distribution directory -->
+    <delete includeEmptyDirs="true"><fileset dir="dist" includes="**/*" excludes="gtc*.jar"/></delete>  
+    <mkdir dir="${dist}/temp-${DSTAMP}"/>  
+    <copy todir="${dist}/temp-${DSTAMP}"><fileset dir="${classes}" /></copy>  
+  	<copy todir="${dist}/temp-${DSTAMP}"><fileset dir="${include}" /></copy>
+    <!-- copy everything from /include/others to dist 
+    <copy todir="${dist}/temp-${DSTAMP}"><fileset dir="${include}/others" /></copy>-->
+    <!-- copy everything from /include/classes to dist 
+    <copy todir="${dist}/temp-${DSTAMP}"><fileset dir="${include}/classes" /></copy>-->
+    <!-- pack everything into a .jar file -->
+    <jar jarfile="${dist}/anna-3.5.jar" 
+         basedir="${dist}/temp-${DSTAMP}"/>
+    <delete dir="${dist}/temp-{DSTAMP}" />
+  </target>
+  
+  <target name="javadoc" depends="init" description="Create the javadoc API documentation" >
+        <delete includeEmptyDirs="true"><fileset dir="javadoc" includes="**/*"/></delete>  
+        <!-- TODO: you might add new packages to packagenames -->
+        <javadoc destdir="javadoc" access="package" source="1.4"
+            use="false" notree="false" nonavbar="false" noindex="true"
+            splitindex="false" author="true" version="true"
+            nodeprecatedlist="true" nodeprecated="false"
+            packagenames="gtc.*.*"
+            sourcepath="src" classpath="class"/>
+   </target>
+   
+
+	 <target name="all" depends="init,compile,javadoc" description="Make all" />
+</project>
+
diff --git a/dependencyParser/basic/mate-tools/lib/commons-math-2.2.jar b/dependencyParser/basic/mate-tools/lib/commons-math-2.2.jar
new file mode 100644
index 0000000..b29a39c
Binary files /dev/null and b/dependencyParser/basic/mate-tools/lib/commons-math-2.2.jar differ
diff --git a/dependencyParser/basic/mate-tools/lib/trove-2.0.4.jar b/dependencyParser/basic/mate-tools/lib/trove-2.0.4.jar
new file mode 100644
index 0000000..cb1c8f1
Binary files /dev/null and b/dependencyParser/basic/mate-tools/lib/trove-2.0.4.jar differ
diff --git a/dependencyParser/basic/mate-tools/src/decoder/ParallelDecoder.java b/dependencyParser/basic/mate-tools/src/decoder/ParallelDecoder.java
new file mode 100755
index 0000000..0dd1c18
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/decoder/ParallelDecoder.java
@@ -0,0 +1,155 @@
+package decoder;
+
+import is2.data.Closed;
+import is2.data.DataF;
+import is2.data.Edges;
+import is2.data.Open;
+
+import java.util.ArrayList;
+import java.util.concurrent.Callable;
+
+/**
+ * @author Bernd Bohnet, 30.08.2009
+ * 
+ * This class implements a parallel feature extractor.
+ */
+final public class ParallelDecoder implements Callable<Object> 
+{
+	// some constants
+	private static final float INIT_BEST = (-1.0F / 0.0F);
+	private static final boolean[] DIR ={false,true};
+
+	// the data space of the weights for a dependency tree  
+	final private DataF x;
+
+	private short[] pos;
+
+	private Open O[][][][];
+	private Closed C[][][][] ;
+
+	private int n;
+
+	boolean done=false;
+	public boolean waiting =false;
+
+	/**
+	 * Initialize the parallel decoder.
+	 * 
+	 * @param pos part-of-speech
+	 * @param d data
+	 * @param edges part-of-speech edge mapping
+	 * @param o open spans 
+	 * @param c closed spans
+	 * @param n number of words
+	 */
+	public ParallelDecoder(short[] pos, DataF d, Open o[][][][], Closed c[][][][], int n) {
+
+		this.pos =pos;
+		this.x =d;
+
+		this.O=o;
+		this.C=c;
+		this.n=n;
+	}
+
+
+	private static class DSet { short w1,w2;}
+
+	@Override
+	public Object call() {
+
+		while (true){
+
+			DSet set = get();
+			if (done && set==null) break;	
+
+			if (set ==null) return null;
+
+			short s=set.w1, t=set.w2;
+
+			for(short dir =1;dir>=0;dir--) {
+				
+				short[] labs = (dir==1) ? Edges.get(pos[s],pos[t], false):Edges.get(pos[t],pos[s], true);
+
+				O[s][t][dir] = new Open[labs.length];
+				for (int l = O[s][t][dir].length - 1; l >= 0; l--) {
+					
+					double tRP = INIT_BEST; 
+										
+					Closed tL = null, tR = null;
+					
+					for (int r = s; r < t; r++) {
+						
+						if (s == 0 && r != 0) continue;
+						
+						double tLPr = INIT_BEST,tRPr = INIT_BEST;
+						Closed tLCld = null, tRCld = null;
+						
+						if (r == s) tLPr = dir==1 ? x.sib[s][t][s][0][l] : x.gra[t][s][s][1 ][l];
+						else 
+							for (int i = s + 1; i <= r; i++) 
+								if (((dir==1 ? x.sib[s][t][i][0][l] : x.gra[t][s][i][1][l]) + C[s][r][1][i].p) > tLPr) {
+									tLPr = ((dir==1 ? x.sib[s][t][i][0][l] : x.gra[t][s][i][1][l]) + C[s][r][1][i].p);tLCld = C[s][r][1][i];}
+							
+						if (r == t-1) tRPr = dir==1 ? x.gra[s][t][s][0][l] : x.sib[t][s][s][1][l];
+						else
+							for (int i = r + 1; i < t; i++) 
+								if (((dir == 1 ? x.gra[s][t][i][0][l] : x.sib[t][s][i][1][l]) + C[r+1][t][0][i].p) > tRPr) {
+									tRPr = ((dir==1?x.gra[s][t][i][0][l]:x.sib[t][s][i][1][l]) + C[r+1][t][0][i].p); tRCld=C[r + 1][t][0][i];}
+											
+						if (tLPr + tRPr > tRP) {tRP = tLPr + tRPr; tL = tLCld;tR = tRCld;}
+					}
+					O[s][t][dir][l] = new Open(s, t, dir, labs[l],tL, tR, 
+							(float) ( tRP+((dir==1)?x.pl[s][t]: x.pl[t][s]) + ((dir==1)? x.lab[s][t][labs[l]][0]:x.lab[t][s][labs[l]][1])));					
+				}
+			}
+			C[s][t][1] = new Closed[n]; C[s][t][0] = new Closed[n];
+
+			for (int m = s ; m <= t; m++) {
+				for(boolean d : DIR) {
+					if ((d && m!=s)||!d && (m!=t && s!=0)) {
+						
+						// create closed structure
+						
+						double top = INIT_BEST;
+						
+						Open tU = null; Closed tL = null;
+						int numLabels =O[(d ? s : m)][(d ? m : t)][d?1:0].length;
+				
+						//for (int l = numLabels-1; l >=0; l--) {
+						for (int l = 0; l < numLabels; l++) {
+							
+							Open hi = O[(d ? s : m)][(d ? m : t)][d?1:0][l];
+							for (int amb = m + (d?1:-1); amb != (d?t:s) + (d?1:-1); amb += (d?1:-1)) {		
+								
+								if ((hi.p + C[d?m:s][d?t:m][d?1:0][amb].p +x.gra[d?s:t][m][amb][d?0:1][l]) > top) {
+									top = (hi.p + C[d?m:s][d?t:m][d?1:0][amb].p +x.gra[d?s:t][m][amb][(d?0:1)][l]); tU = hi; tL=C[d?m:s][d?t:m][d?1:0][amb];}
+							}
+						
+							if ((m == (d ? t : s)) && (hi.p + x.gra[d?s:t][m][d?s:t][(d ? 0 :1)][l]) > top) { 
+								top = (hi.p + x.gra[(d ? s : t)][m][d?s:t][d?0:1][l]); tU = hi; tL = null;}
+						}
+						C[s][t][d?1:0][m] = new Closed(s, t, m, d?1:0,tU,tL,(float) top);
+					}
+				}			
+			}
+		}
+		return null;
+	}
+
+	public static ArrayList<DSet> sets = new ArrayList<DSet>();
+
+	static synchronized private DSet get() {
+		synchronized (sets) {
+			if (sets.size()==0) return null;
+			return sets.remove(sets.size()-1);
+		}
+	}
+
+	public static void add(short w1, short w2){
+		DSet ds =new DSet();
+		ds.w1=w1;
+		ds.w2=w2;
+		sets.add(ds);
+	}
+}
diff --git a/dependencyParser/basic/mate-tools/src/decoder/ParallelRearrangeNBest.java b/dependencyParser/basic/mate-tools/src/decoder/ParallelRearrangeNBest.java
new file mode 100755
index 0000000..493917b
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/decoder/ParallelRearrangeNBest.java
@@ -0,0 +1,136 @@
+package decoder;
+
+import is2.data.DataF;
+import is2.data.Edges;
+import is2.data.Parse;
+import is2.data.ParseNBest;
+
+import java.util.ArrayList;
+import java.util.concurrent.Callable;
+
+import extractors.Extractor;
+
+/**
+ * @author Dr. Bernd Bohnet, 30.08.2009
+ * 
+ * This class implements a parallel edge rearrangement for non-projective parsing;
+ * The linear method was first suggest by Rayn McDonald et. al. 2005.  
+ */
+final public class ParallelRearrangeNBest implements Callable<Object> {
+
+	// new parent child combination to explore
+	final static class PA {
+		final float p;
+		final short ch, pa;
+		
+		float best;
+		
+	
+		
+		public PA(float p2, short ch2, short pa2) { p=p2; ch=ch2;pa=pa2;}
+	}
+
+	// list of parent child combinations
+	private static ArrayList<PA> parents = new ArrayList<PA>();
+
+	// some data from the dependency tree
+	private short[] pos;
+	private DataF x;
+	private boolean[][] isChild ;	
+	public short[] heads,types;
+	private float lastNBest;
+	private float best; // best so far 
+	private float threshold;
+	private Extractor extractor;
+	
+	
+	/**
+	 * Initialize the parallel rearrange thread
+	 * 
+	 * @param isChild2 is a child
+	 * @param edgesC the part-of-speech edge mapping
+	 * @param pos the part-of-speech 
+	 * @param x the data
+	 * @param lastNBest 
+	 * @param s the heads
+	 * @param ts the types
+	 */
+	public ParallelRearrangeNBest(short[] pos , DataF x, Parse p, float lastNBest, Extractor extractor, float best, float threshold) {
+		
+	
+		heads=p.heads;
+
+		types= p.labels;
+		
+		isChild = new boolean[heads.length][heads.length];
+
+		for(int i = 1, l1=1; i < heads.length; i++,l1=i)  
+			while((l1= heads[l1]) != -1) isChild[l1][i] = true;
+	
+
+		this.lastNBest =lastNBest;
+		this.pos =pos;
+		this.x=x;
+		
+		this.extractor = extractor;
+		this.best=best;
+		this.threshold = threshold;
+	}
+
+	public ArrayList<ParseNBest> parses = new  ArrayList<ParseNBest>();
+
+	@Override
+	public Object call() {
+		
+		// check the list of new possible parents and children for a better combination
+		for(int ch = 1; ch < heads.length; ch++) {
+			for(short pa = 0; pa < heads.length; pa++) {
+				if(ch == pa || pa == heads[ch] || isChild[ch][pa]) continue;
+
+			short oldP = heads[ch], oldT = types[ch]; 
+			heads[ch]=pa;
+
+			short[] labels = Edges.get(pos[pa], pos[ch],ch<pa);
+
+			for(int l=0;l<labels.length;l++) {
+
+				types[ch]=labels[l];
+				float p_new = extractor.encode3(pos, heads, types, x);
+
+				if (p_new<lastNBest || ((best+this.threshold)>p_new)) continue;
+				
+				ParseNBest p = new ParseNBest();
+				p.signature(heads, types);
+				p.f1=p_new;
+				parses.add(p);
+			}
+			
+			// change back
+			heads[ch]= oldP; types[ch]=oldT;
+			
+			// consider changes to labels only
+			labels = Edges.get(pos[oldP], pos[ch],ch<oldP);
+
+			for(int l=0;l<labels.length;l++) {
+
+				types[ch]=labels[l];	
+				float p_new = (float) extractor.encode3(pos, heads, types, x);
+
+				// optimization: add only if larger than smallest of n-best
+				if (p_new<lastNBest || ((best+this.threshold)>p_new)) continue;
+
+				ParseNBest p = new ParseNBest();
+				p.signature(heads, types);
+				p.f1=p_new;
+				parses.add(p);
+			}
+
+			heads[ch]= oldP; types[ch]=oldT;
+		}
+		}
+		return parses;
+	}
+
+	
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/decoder/ParallelRearrangeNBest2.java b/dependencyParser/basic/mate-tools/src/decoder/ParallelRearrangeNBest2.java
new file mode 100644
index 0000000..a25b392
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/decoder/ParallelRearrangeNBest2.java
@@ -0,0 +1,151 @@
+package decoder;
+
+import is2.data.DataF;
+import is2.data.Edges;
+import is2.data.Parse;
+import is2.data.ParseNBest;
+
+import java.util.ArrayList;
+import java.util.concurrent.Callable;
+
+import decoder.ParallelRearrangeNBest.PA;
+
+import extractors.Extractor;
+
+/**
+ * @author Dr. Bernd Bohnet, 30.08.2009
+ * 
+ * This class implements a parallel edge rearrangement for non-projective parsing;
+ * The linear method was first suggest by Rayn McDonald et. al. 2005.  
+ */
+final public class ParallelRearrangeNBest2 implements Callable<Object> {
+
+	// new parent child combination to explore
+	final static class PA {
+		final float p;
+		final short ch, pa;
+		
+
+		public short[] heads,types;	
+
+		public PA(Parse p, short ch2, short pa2) { 
+			this.p =(float)p.f1;
+			heads =p.heads;
+			types=p.labels;
+			ch=ch2;pa=pa2;
+			
+		}
+	}
+
+	// list of parent child combinations
+	private static ArrayList<PA> parents = new ArrayList<PA>();
+
+	// some data from the dependency tree
+	private short[] pos;
+	private DataF x;
+	private float lastNBest;
+	private float threshold;
+	private Extractor extractor;
+
+
+	/**
+	 * Initialize the parallel rearrange thread
+	 * @param pos the part-of-speech 
+	 * @param x the data
+	 * @param lastNBest 
+	 * @param isChild2 is a child
+	 * @param edgesC the part-of-speech edge mapping
+	 * @param s the heads
+	 * @param ts the types
+	 */
+	public ParallelRearrangeNBest2(short[] pos , DataF x, float lastNBest, Extractor extractor, float threshold) {
+
+
+
+		this.lastNBest =lastNBest;
+		this.pos =pos;
+		this.x=x;
+
+		this.extractor = extractor;
+		this.threshold = threshold;
+	}
+
+	public ArrayList<ParseNBest> parses = new  ArrayList<ParseNBest>();
+
+	@Override
+	public Object call() {
+
+		try {
+		
+		while(true) {
+			PA p = getPA();
+
+			if (p==null) return parses;
+		
+		short oldP = p.heads[p.ch], oldT = p.types[p.ch]; 
+		p.heads[p.ch]=p.pa;
+
+		short[] labels = Edges.get(pos[p.pa], pos[p.ch],p.ch<p.pa);
+
+		for(int l=0;l<labels.length;l++) {
+
+			p.types[p.ch]=labels[l];
+			float p_new = extractor.encode3(pos, p.heads, p.types, x);
+
+			if (p_new<lastNBest || ((p.p+this.threshold)>p_new)) continue;
+
+			ParseNBest x = new ParseNBest();
+			x.signature(p.heads, p.types);
+			x.f1=p_new;
+			parses.add(x);
+		}
+
+		// change back
+		p.heads[p.ch]= oldP; p.types[p.ch]=oldT;
+
+		// consider changes to labels only
+		labels = Edges.get(pos[oldP], pos[p.ch],p.ch<oldP);
+
+		for(int l=0;l<labels.length;l++) {
+
+			p.types[p.ch]=labels[l];	
+			float p_new = (float) extractor.encode3(pos, p.heads, p.types, x);
+
+			// optimization: add only if larger than smallest of n-best
+			if (p_new<lastNBest || ((p.p+this.threshold)>p_new)) continue;
+
+			ParseNBest x = new ParseNBest();
+			x.signature(p.heads, p.types);
+			x.f1=p_new;
+			parses.add(x);
+		}
+
+		p.heads[p.ch]= oldP; p.types[p.ch]=oldT;
+		}
+		} catch(Exception e) {
+			e.printStackTrace();
+		}
+		return parses;
+	}
+
+	/**
+	 * Add a child-parent combination which are latter explored for rearrangement
+	 * 
+	 * @param p2
+	 * @param ch2
+	 * @param pa
+	 */
+	public static void add(Parse p, short ch2, short pa) {
+		parents.add(new PA(p,ch2,pa));
+	}
+
+	public static PA getPA() {
+		synchronized(parents) {
+			if (parents.size()==0) return null;
+			return parents.remove(parents.size()-1);
+		}
+	}
+
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/examples/DependencyParser.java b/dependencyParser/basic/mate-tools/src/examples/DependencyParser.java
new file mode 100644
index 0000000..c41a101
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/examples/DependencyParser.java
@@ -0,0 +1,92 @@
+package examples;
+
+
+import is2.data.InstancesTagger;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.lemmatizer.Lemmatizer;
+import is2.lemmatizer.MFO;
+import is2.parser.Parser;
+import is2.tag.Tagger;
+//import org.apache.log4j.Logger;
+
+import java.io.File;
+import java.util.Arrays;
+
+/**
+ * Dependency parsing
+ *
+ * @author B. Piwowarski <benjamin@bpiwowar.net>
+ * @date 10/10/12
+ */
+//@TaskDescription(name = "dependency-parser", project = "mate-tools")
+public class DependencyParser  {
+ //   final static private Logger LOGGER = Logger.getLogger(DependencyParser.class);
+    //@Argument(name = "lemmatizer", required = true, checkers = IOChecker.Readable.class)
+    File lemmatizerFile;
+
+    //@Argument(name = "tagger", required = true)
+    File taggerFile;
+
+    //@Argument(name = "parser", required = true)
+    File parserFile;
+
+    //@Override
+    public int execute() throws Throwable {
+
+        // Load lemmatizer
+        //LOGGER.info("Loading lemmatizer");
+    	// true = do uppercase lemmatization
+        Lemmatizer lemmatizer = new Lemmatizer(lemmatizerFile.getAbsolutePath()); 
+
+        // Load tagger
+        //LOGGER.info("Loading tagger");
+        Tagger tagger = new Tagger(taggerFile.getAbsolutePath());
+
+        // Load parser
+        //LOGGER.info("Loading parser");
+        Parser parser = new Parser(parserFile.getAbsolutePath());
+
+
+        // Sentences to parse
+        String sentences[] = new String[]{
+                "Airfields have been constructed on a number of the islands .",
+                "Private investment has even made an increasingly modern ferry fleet possible .",
+                "Politically , the 1990s have been relatively quite times for the islands ."
+        };
+
+        CONLLReader09 reader = new CONLLReader09(CONLLReader09.NO_NORMALIZE);
+
+        for (String sentence : sentences) {
+            // Prepare the sentence
+            InstancesTagger instanceTagger = new InstancesTagger();
+            instanceTagger.init(1, new MFO());
+
+            String[] split = sentence.split("\\s+");
+            String[] splitRoot = new String[split.length+1];
+            System.arraycopy(split, 0, splitRoot, 1, split.length);
+            splitRoot[0] = CONLLReader09.ROOT;
+
+            SentenceData09 instance = new SentenceData09();
+            instance.init(splitRoot);
+
+            reader.insert(instanceTagger, instance);
+
+            SentenceData09 result = lemmatizer.apply(instance);
+            tagger.apply(result);
+            result = parser.parse(result, parser.params, false, parser.options);
+
+
+            // Output
+            System.out.println(Arrays.toString(result.forms));
+            System.out.println(Arrays.toString(result.plemmas));
+            System.out.println(Arrays.toString(result.ppos));
+            System.out.println(Arrays.toString(result.pheads));
+            System.out.println(Arrays.toString(result.plabels));
+            System.out.println();
+
+        }
+
+        return 0;
+    }
+}
diff --git a/dependencyParser/basic/mate-tools/src/examples/FullPipelineSpanish.java b/dependencyParser/basic/mate-tools/src/examples/FullPipelineSpanish.java
new file mode 100644
index 0000000..a255595
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/examples/FullPipelineSpanish.java
@@ -0,0 +1,98 @@
+package examples;
+
+import is2.data.SentenceData09;
+import is2.io.CONLLWriter09;
+import is2.lemmatizer.Lemmatizer;
+
+import is2.parser.Parser;
+import is2.tag.Tagger;
+import is2.tools.Tool;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+
+/**
+ * @author Bernd Bohnet, 13.09.2010
+ * 
+ * Illustrates the application the full pipeline: lemmatizer, morphologic, tagger, and parser
+ */
+public class FullPipelineSpanish {
+
+	
+	//	shows how to parse a sentences and call the tools
+	public static void main(String[] args) throws IOException {
+		
+		// Create a data container for a sentence
+		SentenceData09 i = new SentenceData09();
+
+		if (args.length==1) { // input might be a sentence: "This is another test ." 
+			StringTokenizer st = new StringTokenizer(args[0]);
+			ArrayList<String> forms = new ArrayList<String>();
+			
+			forms.add("<root>");
+			while(st.hasMoreTokens()) forms.add(st.nextToken());
+			
+			i.init(forms.toArray(new String[0]));
+			
+		} else {
+			// provide a default sentence: Haus has a mutated vowel
+			i.init(new String[] {"<root>","También","estuve","emocionado","pero","no","pude","imaginar","mi","vida","sin","la",
+					"gente","tan","intima","a","mí","."});
+
+		}
+
+		// lemmatizing
+		
+		System.out.println("\nReading the model of the lemmatizer");
+		Tool lemmatizer = new Lemmatizer("models/lemma-spa.model");  // create a lemmatizer
+			
+		System.out.println("Applying the lemmatizer");
+		lemmatizer.apply(i);
+
+		System.out.print(i.toString());
+		System.out.print("Lemmata: "); for (String l : i.plemmas) System.out.print(l+" "); System.out.println();
+		
+		// morphologic tagging
+		
+		System.out.println("\nReading the model of the morphologic tagger");
+		is2.mtag.Tagger morphTagger = new is2.mtag.Tagger("models/mtag-spa.model");
+		
+		System.out.println("\nApplying the morpholoigc tagger");
+		morphTagger.apply(i);
+		
+		System.out.print(i.toString());
+		System.out.print("Morph: "); for (String f : i.pfeats) System.out.print(f+" "); System.out.println();
+	
+		// part-of-speech tagging
+		
+		System.out.println("\nReading the model of the part-of-speech tagger");
+		Tool tagger = new Tagger("models/tag-spa.model");
+
+		System.out.println("\nApplying the part-of-speech tagger");
+		tagger.apply(i);
+
+		System.out.print(i.toString());
+		System.out.print("Part-of-Speech tags: "); for (String p : i.ppos) System.out.print(p+" "); System.out.println();
+		
+		// parsing
+		
+		System.out.println("\nReading the model of the dependency parser");
+		Tool parser = new Parser("models/prs-spa.model");
+
+		System.out.println("\nApplying the parser");
+		parser.apply(i);
+		
+		System.out.println(i.toString());
+
+		// write the result to a file
+		
+		CONLLWriter09 writer = new is2.io.CONLLWriter09("example-out.txt");
+		
+		writer.write(i, CONLLWriter09.NO_ROOT);
+		writer.finishWriting();
+
+	}
+
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/examples/FullPipelineTest.java b/dependencyParser/basic/mate-tools/src/examples/FullPipelineTest.java
new file mode 100644
index 0000000..c8f992a
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/examples/FullPipelineTest.java
@@ -0,0 +1,110 @@
+package examples;
+
+
+import is2.data.InstancesTagger;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.io.CONLLWriter09;
+import is2.lemmatizer.Lemmatizer;
+import is2.lemmatizer.MFO;
+import is2.parser.Parser;
+import is2.tag.Tagger;
+//import org.apache.log4j.Logger;
+
+import java.io.File;
+import java.util.Arrays;
+
+/**
+ * Dependency parsing
+ *
+ * @author B. Piwowarski <benjamin@bpiwowar.net>
+ * @date 10/10/12
+ */
+//@TaskDescription(name = "dependency-parser", project = "mate-tools")
+public class FullPipelineTest  {
+ //   final static private Logger LOGGER = Logger.getLogger(DependencyParser.class);
+    //@Argument(name = "lemmatizer", required = true, checkers = IOChecker.Readable.class)
+    public File lemmatizerFile;
+
+    //@Argument(name = "tagger", required = true)
+    public File taggerFile;
+
+    public File mtaggerFile;
+
+    //@Argument(name = "parser", required = true)
+    public File parserFile;
+
+    //@Override
+    public int execute(String source, String target) throws Throwable {
+
+        // Load lemmatizer
+        //LOGGER.info("Loading lemmatizer");
+    	// true = do uppercase lemmatization
+        Lemmatizer lemmatizer = new Lemmatizer(lemmatizerFile.getAbsolutePath()); 
+
+        // Load tagger
+        //LOGGER.info("Loading tagger");
+        Tagger tagger = new Tagger(taggerFile.getAbsolutePath());
+        
+        is2.mtag.Tagger mtagger = new is2.mtag.Tagger(mtaggerFile.getAbsolutePath());
+
+        // Load parser
+        //LOGGER.info("Loading parser");
+        Parser parser = new Parser(parserFile.getAbsolutePath());
+
+
+        CONLLReader09 reader = new CONLLReader09(source);
+        CONLLWriter09 writer = new CONLLWriter09(target);
+
+        int count=0;
+        while (true) {
+            // Prepare the sentence
+        	InstancesTagger is = new InstancesTagger();
+            is.init(1, new MFO());
+            
+            SentenceData09 instance=  reader.getNext(is);
+        	if (instance ==null) break;
+        	SentenceData09 result = null;
+try {
+	
+           	System.out.print("\b\b\b\b"+count);
+           	result= lemmatizer.apply(instance);
+          
+            result = tagger.apply(result);
+            result= mtagger.apply(result);
+            result = parser.apply(result);
+
+            count++;
+} catch(Exception e) {
+	
+	System.out.println("error"+result);
+	System.out.println("error"+instance);
+	e.printStackTrace();
+	break;
+}
+
+            // Output
+            writer.write(result);
+
+        }
+        writer.finishWriting();
+        return 0;
+    }
+    
+    public static void main(String args[]) throws Throwable {
+    	
+    	if (args.length<3) {
+    		System.out.println("lemmatizer-model tagger-model parser-model source target");
+    		System.exit(0);
+    	}
+    	FullPipelineTest p = new FullPipelineTest();
+    	p.lemmatizerFile = new File(args[0]);
+    	p.taggerFile = new File(args[1]);
+    	p.mtaggerFile = new File(args[2]);
+    	p.parserFile = new File(args[3]);
+    	
+    	p.execute(args[4], args[5]);
+    	
+    }
+    
+}
diff --git a/dependencyParser/basic/mate-tools/src/examples/MorphTagger.java b/dependencyParser/basic/mate-tools/src/examples/MorphTagger.java
new file mode 100644
index 0000000..0088426
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/examples/MorphTagger.java
@@ -0,0 +1,79 @@
+package examples;
+
+import is2.data.SentenceData09;
+import is2.lemmatizer.Lemmatizer;
+import is2.lemmatizer.Options;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+
+/**
+ * @author Bernd Bohnet, 13.09.2010
+ * 
+ * Illustrates the application of some components: lemmatizer, tagger, and parser
+ */
+public class MorphTagger {
+
+	
+	/**
+	 * How to lemmatize a sentences?
+	 */
+	public static void main(String[] args) throws IOException {
+
+		
+		// Create a data container for a sentence
+		SentenceData09 i = new SentenceData09();
+
+		if (args.length==1) { // input might be a sentence: "This is another test ." 
+			StringTokenizer st = new StringTokenizer(args[0]);
+			ArrayList<String> forms = new ArrayList<String>();
+			
+			forms.add("<root>");
+			while(st.hasMoreTokens()) forms.add(st.nextToken());
+			
+			i.init(forms.toArray(new String[0]));
+			
+		} else {
+			// provide a default sentence 
+			i.init(new String[] {"<root>","Häuser","hat","ein","Umlaut","."});
+		}
+
+		//print the forms
+		for (String l : i.forms) System.out.println("forms : "+l);
+
+		// tell the lemmatizer the location of the model
+		is2.lemmatizer.Options optsLemmatizer = new Options(new String[] {"-model","models/lemma-ger.model"});
+
+		// create a lemmatizer
+		Lemmatizer lemmatizer = new Lemmatizer(optsLemmatizer.modelName);
+
+		// lemmatize a sentence; the result is stored in the stenenceData09 i 
+		lemmatizer.apply(i);
+
+		
+		// output the lemmata
+		for (String l : i.plemmas) System.out.println("lemma : "+l);
+			
+		
+		is2.mtag.Options morphologicTaggerOptions = new  is2.mtag.Options(new String[] {"-model","models/mtag-ger.model"});
+		
+		is2.mtag.Tagger mt = new is2.mtag.Tagger(morphologicTaggerOptions);
+		
+		try {
+		
+			
+	//		SentenceData09 snt = is2.mtag.Main.out(i.forms, lemmata);
+			
+			SentenceData09 snt = mt.apply(i);
+			for(String f : snt.pfeats) System.out.println("feats "+f);
+			
+		} catch(Exception e){
+			e.printStackTrace();
+		}
+		
+		
+	}
+
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/examples/ParseOnly.java b/dependencyParser/basic/mate-tools/src/examples/ParseOnly.java
new file mode 100755
index 0000000..cec31dd
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/examples/ParseOnly.java
@@ -0,0 +1,50 @@
+package examples;
+
+import is2.data.SentenceData09;
+import is2.parser.Options;
+import is2.parser.Parser;
+
+
+public class ParseOnly {
+
+	public static void main(String[] args) {
+
+		if (args.length ==0) {
+			plain();
+		}
+		
+	}
+	
+	/**
+	 * This example shows how to parse a sentence.
+	 */
+	public static void plain() {
+
+		// initialize the options 
+		String[] opts ={"-model","models/prs-eng-x.model"};
+		Options options = new Options(opts);
+		
+		// create a parser
+		Parser parser = new Parser(options);
+		
+		// Create a data container for a sentence
+		SentenceData09 i = new SentenceData09();
+	
+		// Provide the sentence 
+		i.init(new String[] {"<root>","This","is","a","test","."});
+		i.setPPos(new String[]{"<root-POS>","DT","VBZ","DT","NN","."});
+				
+		// parse the sentence 
+		SentenceData09 out = parser.apply(i);
+	
+		// output the sentence and dependency tree
+		System.out.println(out.toString());
+				
+		// Get the parsing results
+		out.getLabels();
+		out.getParents();
+		
+	}
+	
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/examples/Pipeline.java b/dependencyParser/basic/mate-tools/src/examples/Pipeline.java
new file mode 100644
index 0000000..e55869d
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/examples/Pipeline.java
@@ -0,0 +1,95 @@
+package examples;
+ 
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+
+import is2.data.SentenceData09;
+import is2.lemmatizer.Lemmatizer;
+import is2.parser.Options;
+import is2.parser.Parser;
+import is2.tag.Tagger;
+
+/**
+ * @author Bernd Bohnet, 13.09.2010
+ * 
+ * Illustrates the application of some components: lemmatizer, tagger, and parser
+ */
+public class Pipeline {
+
+	
+	//	how to parse a sentences and call the tools
+	public static void main(String[] args) throws IOException {
+
+		
+		// Create a data container for a sentence
+		SentenceData09 i = new SentenceData09();
+
+		if (args.length==1) { // input might be a sentence: "This is another test ." 
+			StringTokenizer st = new StringTokenizer(args[0]);
+			ArrayList<String> forms = new ArrayList<String>();
+			
+			forms.add("<root>");
+			while(st.hasMoreTokens()) forms.add(st.nextToken());
+			
+			i.init(forms.toArray(new String[0]));
+			
+		} else {
+			// provide a default sentence 
+			i.init(new String[] {"<root>","This","is","a","test","."});
+		}
+
+		//print the forms
+		for (String l : i.forms) System.out.println("form : "+l);
+
+		// tell the lemmatizer the location of the model
+		is2.lemmatizer.Options optsLemmatizer = new is2.lemmatizer.Options(new String[] {"-model","models/lemma-eng.model"});
+
+		// create a lemmatizer
+		Lemmatizer lemmatizer = new Lemmatizer(optsLemmatizer.modelName);
+
+		// lemmatize a sentence; the result is stored in the stenenceData09 i 
+		i = lemmatizer.apply(i);
+
+		
+		// output the lemmata
+		for (String l : i.plemmas) System.out.println("lemma : "+l);
+
+		// tell the tagger the location of the model
+		is2.tag.Options optsTagger = new is2.tag.Options(new String[]{"-model","models/tag-eng.model"});
+		Tagger tagger = new Tagger(optsTagger);
+
+
+		
+//		String pos[] =tagger.tag(i.forms, i.lemmas);
+//		i.setPPos(pos);
+
+		
+		SentenceData09 tagged = tagger.tag(i);
+		for (String p : tagged.ppos) System.out.println("pos "+p);
+
+
+		
+		// initialize the options 
+		Options optsParser = new Options(new String[]{"-model","models/prs-eng-x.model"});
+
+		// create a parser
+		Parser parser = new Parser(optsParser);
+		
+		// parse the sentence (you get a copy of the input i)
+		SentenceData09 parse = parser.apply(tagged);
+
+		System.out.println(parse.toString());
+
+		// create some trash on the hard drive :-)
+		is2.io.CONLLWriter09 writer = new is2.io.CONLLWriter09("example-out.txt");
+		
+		writer.write(i);
+		writer.finishWriting();
+	}
+
+	
+
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/extractors/Extractor.java b/dependencyParser/basic/mate-tools/src/extractors/Extractor.java
new file mode 100644
index 0000000..327895d
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/extractors/Extractor.java
@@ -0,0 +1,59 @@
+/**
+ * 
+ */
+package extractors;
+
+import is2.data.Cluster;
+import is2.data.DataF;
+import is2.data.FV;
+import is2.data.IFV;
+import is2.data.Instances;
+
+/**
+ * @author Dr. Bernd Bohnet, 29.04.2011
+ * 
+ * 
+ */
+public interface Extractor {
+	
+
+	/**
+	 * Initializes the Extractor general parts 
+	 */
+	public void initStat();
+
+	/**
+	 * Initializes the Extractor specific parts 
+	 */
+	public void init();
+
+	public int basic(short[] pos, int[] forms, int w1, int w2, Cluster cluster, IFV f);
+
+	public void firstm(Instances is, int i, int w1, int w2, int j, Cluster cluster, long[] svs);
+
+	public void siblingm(Instances is, int i, short[] pos, int[] forms,
+			int[] lemmas, short[][] feats, int w1, int w2, int g, int j,
+			Cluster cluster, long[] svs, int n);
+
+	public void gcm(Instances is, int i, int w1, int w2, int g, int j, Cluster cluster, long[] svs);
+	
+	public int getType();
+
+	public FV encodeCat(Instances is, int n, short[] pos, int[] is2,
+			int[] is3, short[] heads, short[] labels, short[][] s, Cluster cl,
+			FV pred);
+
+	public void setMaxForm(int integer);
+
+	/**
+	 * @return
+	 */
+	public int getMaxForm();
+
+	
+	public float encode3(short[] pos, short[] heads, short[] labs, DataF x);
+	
+	
+
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/extractors/ExtractorClusterStacked.java b/dependencyParser/basic/mate-tools/src/extractors/ExtractorClusterStacked.java
new file mode 100755
index 0000000..79a44ca
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/extractors/ExtractorClusterStacked.java
@@ -0,0 +1,958 @@
+package extractors;
+
+
+import is2.data.Cluster;
+import is2.data.D4;
+import is2.data.DataF;
+import is2.data.Edges;
+import is2.data.FV;
+import is2.data.IFV;
+import is2.data.Instances;
+import is2.data.Long2IntInterface;
+import is2.data.MFB;
+import is2.util.DB;
+
+
+
+final public class ExtractorClusterStacked implements Extractor {
+
+	public static int s_rel,s_word,s_type,s_dir,s_dist,s_feat,s_child,s_spath,s_lpath,s_pos;
+
+
+	final D4 d0 ,dl1,dl2, dwr,dr,dwwp,dw,dwp,dlf,d3lp, d2lp,d2pw,d2pp ;
+
+	public final Long2IntInterface li;
+
+	public ExtractorClusterStacked(Long2IntInterface li) {
+		
+		this.initFeatures();
+		this.li=li;
+		d0 = new D4(li);dl1 = new D4(li);dl2 = new D4(li);
+		dwr = new D4(li);
+		dr = new D4(li);
+		dwwp = new D4(li);
+
+		dw = new D4(li);
+		dwp = new D4(li);
+
+		dlf = new D4(li);
+		d3lp = new D4(li); d2lp = new D4(li); d2pw = new D4(li); d2pp = new D4(li);
+
+	}
+
+	public  void initStat() {
+		
+		
+		MFB mf = new MFB();
+		s_rel = mf.getFeatureCounter().get(REL).intValue();
+		s_pos = mf.getFeatureCounter().get(POS).intValue();       
+		s_word = mf.getFeatureCounter().get(WORD).intValue();
+		s_type = mf.getFeatureCounter().get(TYPE).intValue();//mf.getFeatureBits();
+		s_dir = mf.getFeatureCounter().get(DIR);
+		la = mf.getValue(DIR, LA);
+		ra = mf.getValue(DIR, RA);
+		s_dist = mf.getFeatureCounter().get(DIST);//mf.getFeatureBits(DIST);
+		s_feat = mf.getFeatureCounter().get(FEAT);//mf.getFeatureBits(Pipe.FEAT);
+		s_spath = mf.getFeatureCounter().get(Cluster.SPATH)==null?0:mf.getFeatureCounter().get(Cluster.SPATH);//mf.getFeatureBits(Cluster.SPATH);
+		s_lpath = mf.getFeatureCounter().get(Cluster.LPATH)==null?0:mf.getFeatureCounter().get(Cluster.LPATH);//mf.getFeatureBits(Cluster.LPATH);
+	}
+
+	public void init(){
+	//	DB.println("init");
+		d0.a0 = s_type;d0.a1 = s_pos;d0.a2 = s_pos;d0.a3 = s_pos;d0.a4 = s_pos;d0.a5 = s_pos;d0.a6 = s_pos;d0.a7 = s_pos;
+		dl1.a0 = s_type;dl1.a1 = s_rel; dl1.a2 = s_pos;dl1.a3 = s_pos; dl1.a4 = s_pos; dl1.a5 = s_pos; dl1.a6 = s_pos; dl1.a7 = s_pos;	
+		dl2.a0 = s_type;dl2.a1 = s_rel;dl2.a2 = s_word;dl2.a3 = s_pos;dl2.a4 = s_pos;dl2.a5 = s_pos;dl2.a6 = s_pos;dl2.a7 = s_pos;
+		dwp.a0 = s_type; 	dwp.a1 = s_rel; 	dwp.a2 = s_word; 	dwp.a3 = s_pos; 	dwp.a4 = s_pos; dwp.a5 = s_word;
+		dwwp.a0 = s_type; dwwp.a1 = s_rel; dwwp.a2 = s_word; dwwp.a3 = s_word; dwwp.a4 = s_pos; dwwp.a5 = s_word;
+		dlf.a0 = s_type;dlf.a1 = s_rel; dlf.a2 = s_pos;dlf.a3 = s_pos; dlf.a4 = s_feat; dlf.a5 = s_feat; dlf.a6 = s_pos; dlf.a7 = s_pos;	
+		d3lp.a0 = s_type; d3lp.a1 = s_rel; d3lp.a2 = s_lpath; d3lp.a3 = s_lpath; d3lp.a4 = s_lpath; d3lp.a5 = s_word; d3lp.a6 = s_spath; d3lp.a7 = s_spath;	
+		d2lp.a0 = s_type; d2lp.a1 = s_rel; d2lp.a2 = s_lpath; d2lp.a3 = s_lpath; d2lp.a4 = s_word; d2lp.a5 = s_word; //d3lp.a6 = s_spath; d3lp.a7 = s_spath;	
+		d2pw.a0 = s_type; d2pw.a1 = s_rel; d2pw.a2 = s_lpath; d2pw.a3 = s_lpath; d2pw.a4 = s_word; d2pw.a5 = s_word; //d3lp.a6 = s_spath; d3lp.a7 = s_spath;	
+		d2pp.a0 = s_type; d2pp.a1 = s_rel; d2pp.a2 = s_lpath; d2pp.a3 = s_lpath; d2pp.a4 = s_pos; d2pp.a5 = s_pos; //d3lp.a6 = s_spath; d3lp.a7 = s_spath;	
+	}
+
+
+	public int basic(short[] pposs, int[] form,  int p, int d, Cluster cluster,  IFV f)
+	{
+
+		d0.clean(); dl1.clean(); dl2.clean(); dwp.clean(); dwwp.clean(); dlf.clean(); d3lp.clean(); 
+
+		d3lp.clean(); d2lp.clean();d2pw.clean(); d2pp.clean();
+
+		int n=1;
+		int dir= (p < d)? ra:la;
+		d0.v0= n++; d0.v1=pposs[p]; d0.v2=pposs[d]; //d0.stop=4;
+		int end= (p >= d ? p : d);
+		int start = (p >= d ? d : p) + 1;
+
+		for(int i = start ; i <end ; i++) {
+			d0.v3=pposs[i];
+			d0.cz4();
+			d0.csa(s_dir,dir,f);
+		}
+		return n;
+	}
+
+
+	public void firstm(Instances is, int i, 
+			int prnt, int dpnt, int label, Cluster cluster, long[] f)
+	{
+
+		
+		//short[] pposs, int[] form, int[] lemmas, short[][] feats
+		for(int k=0;k<f.length;k++) f[k]=0;
+
+		short[] pposs = is.pposs[i];
+		int[] form =is.forms[i];
+		short[][] feats = is.feats[i];
+		
+		
+		int pF = form[prnt],dF =  form[dpnt];
+		int pL = is.plemmas[i][prnt],dL = is.plemmas[i][dpnt];
+		int pP = pposs[prnt],dP = pposs[dpnt];
+
+		int prntLS = pF==-1?-1:cluster.getLP(pF), chldLS = dF==-1?-1:cluster.getLP(dF);
+
+		final int dir= (prnt < dpnt)? ra:la;
+
+		if (pF>maxForm) pF=-1;
+		if (pL>maxForm) pL=-1;
+
+		if (dF>maxForm) dF=-1;
+		if (dL>maxForm) dL=-1;
+
+
+		int n=3,c=0;
+		
+		dl2.v1=label;
+		dl2.v0= n++;	 dl2.v2=pF; dl2.v3=dP;   dl2.cz4(); f[c++]=dl2.csa(s_dir,dir);
+		dl2.v0= n++;		              		 dl2.cz3(); f[c++]=dl2.csa(s_dir,dir);
+		dl2.v0= n++;	 dl2.v2=dF; dl2.v3=pP;   dl2.cz4(); f[c++]=dl2.csa(s_dir,dir);
+		dl2.v0= n++;		              		 dl2.cz3(); f[c++]=dl2.csa(s_dir,dir); 
+
+		
+		dwwp.v1=label;
+		dwwp.v0= n++;  dwwp.v2=pF; dwwp.v3=dF; dwwp.cz4(); f[c++]=dwwp.csa(s_dir,dir);  
+
+		dl1.v1=label;
+		dl1.v0= n++; dl1.v2=dP;                   dl1.cz3(); f[c++]=dl1.csa(s_dir,dir); 	
+		dl1.v0= n++; dl1.v2=pP;                   dl1.cz3(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++;              dl1.v3=dP;      dl1.cz4(); f[c++]=dl1.csa(s_dir,dir);
+
+		int pPm1 = prnt > 0 ? pposs[prnt - 1] : s_str,              dPm1 = dpnt > 0 ? pposs[dpnt - 1] : s_str;
+		int pPp1 = prnt < pposs.length - 1 ? pposs[prnt + 1]:s_end, dPp1 = dpnt < pposs.length - 1 ? pposs[dpnt + 1]:s_end;
+
+		int pPm2 = prnt > 1 ? pposs[prnt - 2] : s_str,              dPm2 = dpnt > 1 ? pposs[dpnt - 2] : s_str;
+		int pPp2 = prnt < pposs.length - 2 ? pposs[prnt + 2]:s_end, dPp2 = dpnt < pposs.length - 2 ? pposs[dpnt + 2]:s_end;
+				
+		int pFm1 = prnt > 0 ? form[prnt - 1] : s_stwrd,              dFm1 = dpnt > 0 ? form[dpnt - 1] : s_stwrd;
+		int pFp1 = prnt < form.length - 1 ? form[prnt + 1]:s_stwrd,  dFp1 = dpnt < form.length - 1 ? form[dpnt + 1]:s_stwrd;
+
+		
+		
+		dl1.v0= n++;dl1.v2=pP;  dl1.v3=pPp1; dl1.v4=dP;dl1.v5=dPp1; dl1.cz6(); f[n++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++;                                   dl1.v5=dPm1; dl1.cz6(); f[n++]=dl1.csa(s_dir,dir);	
+		dl1.v0= n++;            dl1.v3=pPm1;                        dl1.cz6(); f[n++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++;                                   dl1.v5=dPp1; dl1.cz6(); f[n++]=dl1.csa(s_dir,dir);
+
+
+		dl1.v0= n++;            dl1.v3=pPm1;           dl1.cz5(); f[n++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++;            dl1.v3=dPm1;           dl1.cz5(); f[n++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++;			dl1.v3=dPp1;           dl1.cz5(); f[n++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++;            dl1.v3=pPp1;           dl1.cz5(); f[n++]=dl1.csa(s_dir,dir);
+
+		dl1.v0= n++;dl1.v2=pP;  dl1.v3=pPp2; dl1.v4=dP;dl1.v5=dPp2; dl1.cz6(); f[n++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++;                                   dl1.v5=dPm2; dl1.cz6(); f[n++]=dl1.csa(s_dir,dir);	
+		dl1.v0= n++;            dl1.v3=pPm2;                        dl1.cz6(); f[n++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++;                                   dl1.v5=dPp2; dl1.cz6(); f[n++]=dl1.csa(s_dir,dir);
+		
+		dl1.v0= n++;            dl1.v3=pPm2;           dl1.cz5(); f[n++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++;            dl1.v3=dPm2;           dl1.cz5(); f[n++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++;			dl1.v3=dPp2;           dl1.cz5(); f[n++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++;            dl1.v3=pPp2;           dl1.cz5(); f[n++]=dl1.csa(s_dir,dir);
+
+		
+		
+		dl2.v0= n++; dl2.v3=dFm1; dl2.v3=pPp1;dl2.v4=pP;  dl2.cz5(); f[n++]=dl2.getVal(); 
+		dl2.v0= n++; dl2.v3=dFp1; dl2.v3=pPm1;            dl2.cz5(); f[n++]=dl2.getVal();
+		dl2.v0= n++; dl2.v3=pFm1; dl2.v3=dPp1;dl2.v4=dP;  dl2.cz5(); f[n++]=dl2.getVal();
+		dl2.v0= n++; dl2.v3=pFp1; dl2.v3=dPm1;            dl2.cz5(); f[n++]=dl2.getVal();
+
+		
+		dl2.v0= n++; dl2.v3=dFm1; dl2.v3=dPm2;dl2.v4=pP;  dl2.cz5(); f[n++]=dl2.getVal(); 
+		dl2.v0= n++; dl2.v3=dFp1; dl2.v3=dPp2;            dl2.cz5(); f[n++]=dl2.getVal();
+		dl2.v0= n++; dl2.v3=pFm1; dl2.v3=pPm2;dl2.v4=dP;  dl2.cz5(); f[n++]=dl2.getVal();
+		dl2.v0= n++; dl2.v3=pFp1; dl2.v3=pPp2;            dl2.cz5(); f[n++]=dl2.getVal();
+
+		
+		dwwp.v0= n++;	dwwp.v2=pF; dwwp.v3=dF; dwwp.v4=dP; dwwp.cz5(); f[n++]=dwwp.csa(s_dir,dir); 
+		dwwp.v0= n++;	dwwp.v2=pF; dwwp.v3=dF; dwwp.v4=pP; dwwp.cz5(); f[n++]=dwwp.csa(s_dir,dir); 
+		dwwp.v0= n++;	dwwp.v2=dF; dwwp.v3=pF; dwwp.v4=pP; dwwp.v4=dP; dwwp.cz6(); f[n++]=dwwp.csa(s_dir,dir);  
+
+		
+	
+		// lemmas
+
+		dl2.v1=label;
+		dl2.v0= n++;	 dl2.v2=pL; dl2.v3=dP;   dl2.cz4(); f[c++]=dl2.csa(s_dir,dir);
+		dl2.v0= n++;		              		 dl2.cz3(); f[c++]=dl2.csa(s_dir,dir);
+		dl2.v0= n++;	 dl2.v2=dL; dl2.v3=pP;   dl2.cz4(); f[c++]=dl2.csa(s_dir,dir);
+		dl2.v0= n++;		              		 dl2.cz3(); f[c++]=dl2.csa(s_dir,dir); 
+
+		
+		dwwp.v1=label;
+		dwwp.v0= n++;  dwwp.v2=pL; dwwp.v3=dL; dwwp.cz4(); f[c++]=dwwp.csa(s_dir,dir);  
+
+		dwp.v1= label; 
+		dwp.v0=n++;dwp.v2=dL; dwp.v3=pP;dwp.v4=dP;dwp.v5=pL; dwp.cz6(); f[c++]=dwp.csa(s_dir,dir);  
+		dwp.v0=n++;dwp.cz5(); f[c++]=dwp.csa(s_dir,dir);  
+
+		dwp.v0=n++;dwp.v2=pL; dwp.cz5(); f[c++]=dwp.csa(s_dir,dir);
+		dwwp.v0= n++;  dwwp.v2=pL; dwwp.v3=dL; dwwp.v4=dP; dwwp.cz5(); f[c++]=dwwp.csa(s_dir,dir);  
+		dwwp.v0= n++;                          dwwp.v4=pP; dwwp.cz5(); f[c++]=dwwp.csa(s_dir,dir);
+
+	
+		// cluster
+
+		d2pw.v1=label; 
+		d2pw.v0=n++; d2pw.v2=prntLS; d2pw.v3=chldLS; d2pw.cz4(); f[c++]=d2pw.csa(s_dir,dir);
+		d2pw.v0=n++; d2pw.v4=pF;                     d2pw.cz5(); f[c++]=d2pw.csa(s_dir,dir);
+		d2pw.v0=n++; d2pw.v4=dF;                     d2pw.cz5(); f[c++]=d2pw.csa(s_dir,dir);
+		d2pw.v0=n++;             d2pw.v5=pF;         d2pw.cz6(); f[c++]=d2pw.csa(s_dir,dir);
+
+
+		d2pp.v1=label; 
+		d2pp.v0=n++; d2pp.v2=prntLS; d2pp.v3=chldLS; d2pp.cz4(); f[c++]=d2pp.csa(s_dir,dir);
+		d2pp.v0=n++; d2pp.v4=pP;                     d2pp.cz5(); f[c++]=d2pp.csa(s_dir,dir);
+		d2pp.v0=n++; d2pp.v4=dP;                     d2pp.cz5(); f[c++]=d2pp.csa(s_dir,dir);
+		d2pp.v0=n++;             d2pp.v5=pP;         d2pp.cz6(); f[c++]=d2pp.csa(s_dir,dir);
+
+		
+		short[] prel = is.plabels[i];
+		short[] phead = is.pheads[i];
+
+		
+		//take those in for stacking
+	//	dl2.v1=label;
+	//	dl2.v0= n++;dl2.v2=prel[dpnt];dl2.v3=pP;dl2.v4=dP; dl2.v5=prnt==phead[dpnt]?1:2; dl2.cz6(); f[c++]=dl2.csa(s_dir,dir); 
+	//	dl2.v0= n++;dl2.v2=pP;dl2.v3=dP; dl2.v4=prnt==phead[dpnt]?1:2; dl2.cz5(); f[c++]=dl2.csa(s_dir,dir); 
+
+		
+	
+		if (feats==null) return;
+
+		short[] featsP =feats[prnt], featsD =feats[dpnt];  
+		dlf.v0= n++;	dlf.v1=label; dlf.v2=pP; dlf.v3=dP;
+		extractFeat(f, c, dir, featsP, featsD);
+
+		return;
+	}
+
+
+
+	public void gcm(Instances is , int i, int p, int d, int gc, int label,Cluster cluster, long[] f) {
+
+		for(int k=0;k<f.length;k++) f[k]=0;
+
+		short[] pos= is.pposs[i];
+		int[] forms=is.forms[i];
+		int[] lemmas=is.plemmas[i];
+		short[][] feats=is.feats[i];
+		
+		int pP = pos[p], dP = pos[d];
+		int prntF = forms[p], chldF = forms[d];
+		int prntL = lemmas[p], chldL = lemmas[d];
+		int prntLS = prntF==-1?-1:cluster.getLP(prntF), chldLS = chldF==-1?-1:cluster.getLP(chldF);
+
+		int gP = gc != -1 ? pos[gc] :  s_str; 
+		int gcF = gc != -1 ? forms[gc] :  s_stwrd; 
+		int gcL = gc != -1 ? lemmas[gc] : s_stwrd;
+		int gcLS = (gc != -1) && (gcF!=-1) ? cluster.getLP(gcF) : s_stwrd;
+
+		if (prntF>maxForm) prntF=-1;
+		if (prntL>maxForm) prntL=-1;
+
+		if (chldF>maxForm) chldF=-1;
+		if (chldL>maxForm) chldL=-1;
+
+		if (gcF>maxForm) gcF=-1;
+		if (gcL>maxForm) gcL=-1;
+
+
+		int dir= (p < d)? ra:la, dir_gra =(d < gc)? ra:la;
+
+		int n=84,c=0;
+
+		//dl1.v023();
+		dl1.v1=label;
+		dl1.v0= n++; dl1.v2=pP; dl1.v3=dP;dl1.v4=gP; dl1.cz5(); dl1.cs(s_dir,dir);f[c++]=dl1.csa(s_dir,dir_gra);
+		dl1.v0= n++; dl1.v2=pP; dl1.v3=gP; dl1.cz4();dl1.cs(s_dir,dir);f[c++]=dl1.csa(s_dir,dir_gra);  
+		dl1.v0= n++; dl1.v2=dP;             dl1.cz4(); dl1.cs(s_dir,dir);f[c++]=dl1.csa(s_dir,dir_gra);
+
+		dwwp.v1=label;
+		dwwp.v0= n++;  dwwp.v2=prntF; dwwp.v3=gcF; 
+		dwwp.cz4(); dwwp.cs(s_dir,dir);f[c++]=dwwp.csa(s_dir,dir_gra); 
+
+		dwwp.v0= n++; dwwp.v2=chldF; dwwp.v3=gcF; 
+		dwwp.cz4(); dwwp.cs(s_dir,dir);f[c++]=dwwp.csa(s_dir,dir_gra);
+
+		dwp.v1=label;
+		dwp.v0= n++; dwp.v2=gcF; dwp.v3=pP; 
+		dwp.cz4(); dwp.cs(s_dir,dir);f[c++]=dwp.csa(s_dir,dir_gra); 
+
+		dwp.v0= n++; dwp.v2=gcF; dwp.v3=dP; 
+		dwp.cz4(); dwp.cs(s_dir,dir);f[c++]=dwp.csa(s_dir,dir_gra); 
+
+		dwp.v0= n++; dwp.v2=prntF; dwp.v3=gP; 
+		dwp.cz4(); dwp.cs(s_dir,dir);f[c++]=dwp.csa(s_dir,dir_gra); 
+
+		dwp.v0= n++; dwp.v2=chldF;  dwp.v3=gP; 
+		dwp.cz4(); dwp.cs(s_dir,dir); f[c++]=dwp.csa(s_dir,dir_gra); 
+
+
+		// lemma
+
+		dwwp.v0= n++; dwwp.v2=prntL; dwwp.v3=gcL; 
+		dwwp.cz4();dwwp.cs(s_dir,dir);f[c++]=dwwp.csa(s_dir,dir_gra);  
+
+		dwwp.v0= n++; dwwp.v2=chldL; dwwp.v3=gcL; 
+		dwwp.cz4(); dwwp.cs(s_dir,dir);f[c++]=dwwp.csa(s_dir,dir_gra); 
+
+		dwp.v0= n++; dwp.v2=gcL; dwp.v3=pP;  
+		dwp.cz4(); dwp.cs(s_dir,dir);f[c++]=dwp.csa(s_dir,dir_gra); 
+
+		dwp.v0= n++; dwp.v2=gcL; dwp.v3=dP;
+		dwp.cz4(); dwp.cs(s_dir,dir);f[c++]=dwp.csa(s_dir,dir_gra); 
+
+		dwp.v0= n++; dwp.v2=prntL; dwp.v3=gP;
+		dwp.cz4(); dwp.cs(s_dir,dir);f[c++]=dwp.csa(s_dir,dir_gra);
+
+		dwp.v0= n++; dwp.v2=chldL;  dwp.v3=gP;
+		dwp.cz4(); dwp.cs(s_dir,dir); f[c++]=dwp.csa(s_dir,dir_gra); 
+
+
+		// clusters 			   	
+
+		d2lp.v1= label; 
+		d2lp.v0= n++; d2lp.v2=prntLS; d2lp.v3=gcLS; d2lp.cz4(); d2lp.cs(s_dir,dir);f[c++]=d2lp.csa(s_dir,dir_gra);// f.add(li.l2i(l)); 		  
+		d2lp.v0= n++; d2lp.v2=chldLS; d2lp.v3=gcLS; d2lp.cz4(); d2lp.cs(s_dir,dir);f[c++]=d2lp.csa(s_dir,dir_gra); 
+		d3lp.v0= n++; d3lp.v1= label; d3lp.v2=prntLS; d3lp.v3=chldLS; d3lp.v4=gcLS; d3lp.cz5(); d3lp.cs(s_dir,dir);f[c++]=d3lp.csa(s_dir,dir_gra); 
+
+		//_f83;		
+		d2lp.v0= n++;	 d2lp.v2=prntLS; d2lp.v3=chldLS; d2lp.v4=gcF; d2lp.cz5(); f[c++]=d2lp.csa(s_dir,dir);  
+		d2lp.v0= n++;	 d2lp.v2=prntLS; d2lp.v3=gcLS; d2lp.v4=chldF; d2lp.cz5(); f[c++]=d2lp.csa(s_dir,dir);   
+		d2lp.v0= n++;	 d2lp.v2=chldLS; d2lp.v3=gcLS; d2lp.v4=prntF; d2lp.cz5(); f[c++]=d2lp.csa(s_dir,dir);  
+
+		d2pp.v1= label;
+		d2pp.v0= n++;	 d2pp.v2=prntLS; d2pp.v3=chldLS; d2pp.v4=gP; d2pp.cz5(); f[c++]=d2pp.csa(s_dir,dir);  
+		d2pp.v0= n++;	 d2pp.v2=prntLS; d2pp.v3=gcLS; d2pp.v4=dP; d2pp.cz5(); f[c++]=d2pp.csa(s_dir,dir);   
+		d2pp.v0= n++;	 d2pp.v2=chldLS; d2pp.v3=gcLS; d2pp.v4=pP; d2pp.cz5(); f[c++]=d2pp.csa(s_dir,dir);  
+
+
+
+		// linear features
+
+		int prntPm1 = p != 0 ? pos[p - 1] : s_str; // parent-pos-minus1
+		int chldPm1 = d - 1 >=0 ? pos[d - 1] : s_str;  // child-pos-minus1
+		int prntPp1 = p != pos.length - 1 ? pos[p + 1] : s_end;
+		int chldPp1 = d != pos.length - 1 ? pos[d + 1] : s_end;
+
+		int gcPm1 = gc > 0 ? pos[gc - 1] : s_str; 
+		int gcPp1 = gc < pos.length - 1 ? pos[gc + 1] : s_end; 
+
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=gcPp1;dl1.v4=dP;  dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=gcPm1;dl1.v4=dP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=dP;dl1.v4=chldPp1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=dP;dl1.v4=chldPm1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gP;  dl1.v3=gcPp1;dl1.v4=chldPm1;dl1.v5=dP;dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);  
+		dl1.v0= n++; dl1.v2=gcPm1; dl1.v3=gP;dl1.v4=chldPm1;dl1.v5=dP; dl1.cz6();f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=gcPp1;dl1.v4=dP;dl1.v5=chldPp1; dl1.cz6();f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gcPm1; dl1.v3=gP;dl1.v4=dP;dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=gcPp1;dl1.v4=pP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=gcPm1;dl1.v4=pP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=pP;dl1.v4=prntPp1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=pP;dl1.v4=prntPm1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++; dl1.v2=gP;  dl1.v3=gcPp1;dl1.v4=prntPm1;dl1.v5=pP; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gcPm1; dl1.v3=gP;dl1.v4=prntPm1;dl1.v5=pP; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=gcPp1;dl1.v4=pP;dl1.v5=prntPp1; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gcPm1; dl1.v3=gP; dl1.v4=pP; dl1.v5=prntPp1;dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);
+
+
+		int pLSp1 = p != pos.length - 1 ? forms[p + 1]==-1?-1:cluster.getLP(forms[p + 1]): _cend;	
+		int	cLSp1 = d != pos.length - 1 ? forms[d + 1] ==-1?-1:cluster.getLP(forms[d + 1]):_cend;
+		int gcLSp1 = gc < pos.length -1 ? forms[gc + 1] ==-1?-1:cluster.getLP(forms[gc + 1]) : s_end; 
+		
+		int pLSm1 = p != 0 ? lemmas[p - 1]==-1?-1:cluster.getLP(lemmas[p - 1]): _cstr;	
+		int	cLSm1 = d - 1 >=0 ? lemmas[d - 1] ==-1?-1:cluster.getLP(lemmas[d - 1]):_cstr;
+		int gcLSm1 = gc > 0 ? lemmas[gc - 1] ==-1?-1:cluster.getLP(lemmas[gc - 1]) : _cstr; 
+
+
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=gcLSp1;dl1.v4=dP;  dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=gcLSm1;dl1.v4=dP; dl1.cz5();f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=dP;dl1.v4=cLSp1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=dP;dl1.v4=cLSm1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gP;  dl1.v3=gcLSp1;dl1.v4=cLSm1;dl1.v5=dP;dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);  
+		dl1.v0= n++; dl1.v2=gcLSm1; dl1.v3=gP;dl1.v4=cLSm1;dl1.v5=dP; dl1.cz6();f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=gcLSp1;dl1.v4=dP;dl1.v5=cLSp1; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=cLSm1; dl1.v3=gP;dl1.v4=dP;dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=gcLSp1;dl1.v4=pP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=gcLSm1;dl1.v4=pP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=pP;dl1.v4=pLSp1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=pP;dl1.v4=pLSm1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++; dl1.v2=gP;  dl1.v3=gcLSp1;dl1.v4=pLSm1;dl1.v5=pP; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gcLSm1; dl1.v3=gP;dl1.v4=pLSm1;dl1.v5=pP; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=gcLSp1;dl1.v4=pP;dl1.v5=pLSp1; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gcLSm1; dl1.v3=gP; dl1.v4=pP; dl1.v5=pLSp1;dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);
+
+	
+		
+		short[] prel = is.plabels[i],phead=is.pheads[i];
+		
+		int g = p==phead[d]?1:2 ;
+		if (gc>=0) g += d==phead[gc]?4:8;
+		
+		int gr = gc==-1?s_relend:prel[gc];
+
+		// take those in for stacking
+	/*	
+		dl2.v1=label; 
+		dl2.v0= n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=gP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.csa(s_dir,dir); 
+		dl2.v0= n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=gP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.csa(s_dir,dir); 
+		dl2.v0= n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=gP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f[c++]=dl2.csa(s_dir,dir); 
+		
+		dl2.v0= n++;dl2.v2=gr;dl2.v3=g;dl2.v4=gP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.csa(s_dir,dir); 
+		dl2.v0= n++;dl2.v2=gr;dl2.v3=g;dl2.v4=gP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.csa(s_dir,dir); 
+		dl2.v0= n++;dl2.v2=gr;dl2.v3=g;dl2.v4=gP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f[c++]=dl2.csa(s_dir,dir); 
+		
+*/
+		if (feats==null) return;	
+
+		short[] featsP =feats[d]; 
+		short[] featsD =gc!=-1?feats[gc]:null; 
+
+		dlf.v0= n++;	dlf.v1=label; dlf.v2=gP; dlf.v3=dP;
+		extractFeat(f, c, dir, featsP, featsD);
+		return;
+	}
+
+
+	public void siblingm(Instances is , int i,short pos[], int forms[], int[] lemmas, short[][] feats, int prnt, int d, int sblng, int label, Cluster cluster,  long[] f, int v)
+	{
+
+		for(int k=0;k<f.length;k++) f[k]=0;
+
+		int pP = pos[prnt], dP = pos[d];
+		int prntF = forms[prnt],chldF = forms[d];
+		int prntL = lemmas[prnt], chldL = lemmas[d];
+		int prntLS = prntF==-1?-1:cluster.getLP(prntF), chldLS = chldF==-1?-1:cluster.getLP(chldF);
+
+		int sP = sblng!=-1 ? pos[sblng] : s_str, sblF = sblng!=-1 ? forms[sblng] : s_stwrd, sblL = sblng!=-1 ? lemmas[sblng] : s_stwrd;
+
+		int sblLS = (sblng != -1)&&(sblF!=-1) ? cluster.getLP(sblF) : s_stwrd;
+
+
+		int dir= (prnt < d)? ra:la;
+
+		int abs = Math.abs(prnt-d);
+
+		final int dist;
+		if (abs > 10)dist=d10;else if (abs>5) dist=d5;else if( abs==5)dist=d4;else if (abs==4)dist=d3;else if (abs==3)dist=d2;
+		else if (abs==2)dist=d1; else  dist=di0;
+
+		int n=147;
+
+		if (prntF>maxForm) prntF=-1;
+		if (prntL>maxForm) prntL=-1;
+
+		if (chldF>maxForm) chldF=-1;
+		if (chldL>maxForm) chldL=-1;
+
+		if (sblF>maxForm) sblF=-1;
+		if (sblL>maxForm) sblL=-1;
+
+
+		dl1.v0= n++; dl1.v1=label;dl1.v2=pP; dl1.v3=dP;dl1.v4=sP; dl1.cz5(); f[0]=dl1.csa(s_dir,dir);f[1]=dl1.csa(s_dist,dist);
+		dl1.v0= n++; dl1.v3=sP; dl1.cz4(); f[2]=dl1.csa(s_dir,dir); f[3]=dl1.csa(s_dist,dist);
+		dl1.v0= n++; dl1.v2=dP;dl1.cz4(); f[4]=dl1.csa(s_dir,dir); f[5]=dl1.csa(s_dist,dist); 
+
+		// sibling only could be tried
+		dwwp.v1=label;
+		dwwp.v0= n++;  dwwp.v2=prntF; dwwp.v3=sblF; dwwp.cz4(); f[6]=dwwp.csa(s_dir,dir); f[7]=dwwp.csa(s_dist,dist);
+		dwwp.v0= n++; dwwp.v2=chldF; dwwp.cz4();                              f[8]=dwwp.csa(s_dir,dir); f[9]=dwwp.csa(s_dist,dist);
+		dwp.v0= n++;	dwp.v1=label; dwp.v2=sblF; dwp.v3=pP; dwp.cz4(); f[10]=dwp.csa(s_dir,dir); f[11]=dwp.csa(s_dist,dist);
+		dwp.v0= n++;	/*dwp.v1=label;  */dwp.v3=dP; dwp.cz4(); f[12]=dwp.csa(s_dir,dir); f[13]=dwp.csa(s_dist,dist);
+		dwp.v0= n++;	/*dwp.v1=label;*/ dwp.v2=prntF; dwp.v3=sP; dwp.cz4(); f[14]=dwp.csa(s_dir,dir); f[15]=dwp.csa(s_dist,dist);
+		dwp.v0= n++;	/*dwp.v1=label;*/ dwp.v2=chldF;  dwp.cz4(); f[16]=dwp.csa(s_dir,dir); f[17]=dwp.csa(s_dist,dist);
+
+		//lemmas
+		dwwp.v0= n++;	 dwwp.v2=prntL; dwwp.v3=sblL; 	dwwp.cz4(); f[18]=dwwp.csa(s_dir,dir); 
+		dwwp.v0= n++;	 dwwp.v2=chldL;                 dwwp.cz4(); f[19]=dwwp.csa(s_dir,dir); f[20]=dwwp.csa(s_dist,dist);  
+		dwp.v0= n++;	/*dwp.v1=label;*/ dwp.v2=sblL; dwp.v3=pP; dwp.cz4(); f[21]=dwp.csa(s_dir,dir); f[22]=dwp.csa(s_dist,dist);
+		dwp.v0= n++; /*dwp.v1=label; */ dwp.v3=dP; 	dwp.cz4(); f[23]=dwp.csa(s_dir,dir);f[24]=dwp.csa(s_dist,dist);
+		dwp.v0= n++; /*dwp.v1=label;*/ dwp.v2=prntL; dwp.v3=sP; dwp.cz4(); f[25]=dwp.csa(s_dir,dir); f[26]=dwp.csa(s_dist,dist);
+		dwp.v0= n++; /*dwp.v1=label;*/ dwp.v2=chldL; 	dwp.cz4(); f[27]=dwp.csa(s_dir,dir);f[28]=dwp.csa(s_dist,dist);
+
+
+		// clusters
+
+		d2lp.v1=label;
+		d2lp.v0= n++;	 d2lp.v2=prntLS; d2lp.v3=sblLS; d2lp.cz4(); f[29]=d2lp.csa(s_dir,dir);  
+		d2lp.v0= n++;	 d2lp.v2=chldLS; d2lp.v3=sblLS; d2lp.cz4(); f[30]=d2lp.csa(s_dir,dir); f[31]=d2lp.csa(s_dist,dist);  		
+		
+		d3lp.v1= label;
+		d3lp.v0= n++;    d3lp.v2=prntLS; d3lp.v3=chldLS; d3lp.v4=sblLS;d3lp.cz5(); f[32]=d3lp.csa(s_dir,dir);
+		
+		d2lp.v0= n++;	 d2lp.v2=prntLS; d2lp.v3=chldLS; d2lp.v4=sblF; d2lp.cz5(); f[33]=d2lp.csa(s_dir,dir); f[34]=d2lp.csa(s_dist,dist);  
+		d2lp.v0= n++;	 d2lp.v2=prntLS; d2lp.v3=sblLS; d2lp.v4=chldF; d2lp.cz5(); f[35]=d2lp.csa(s_dir,dir); f[36]=d2lp.csa(s_dist,dist);  
+		d2lp.v0= n++;	 d2lp.v2=chldLS; d2lp.v3=sblLS; d2lp.v4=prntF; d2lp.cz5(); f[37]=d2lp.csa(s_dir,dir); f[38]=d2lp.csa(s_dist,dist);  
+		
+		d2pp.v1=label;
+		d2pp.v0= n++;	 d2pp.v2=prntLS; d2pp.v3=chldLS; d2pp.v4=sP; d2pp.cz5(); f[39]=d2pp.csa(s_dir,dir); f[40]=d2pp.csa(s_dist,dist);  
+		d2pp.v0= n++;	 d2pp.v2=prntLS; d2pp.v3=sblLS; d2pp.v4=dP; d2pp.cz5(); f[41]=d2pp.csa(s_dir,dir); f[42]=d2pp.csa(s_dist,dist);  
+		d2pp.v0= n++;	 d2pp.v2=chldLS; d2pp.v3=sblLS; d2pp.v4=pP; d2pp.cz5(); f[43]=d2pp.csa(s_dir,dir); f[44]=d2pp.csa(s_dist,dist);  
+
+
+		int prntPm1 = prnt!=0 ? pos[prnt-1] : s_str;
+		int chldPm1 = d-1>=0 ? pos[d-1] : s_str;
+		int prntPp1 = prnt!=pos.length-1 ? pos[prnt+1] : s_end;
+		int chldPp1 = d!=pos.length-1 ? pos[d+1] : s_end;
+
+		// sibling part of speech minus and plus 1
+		int sblPm1 = sblng>0 ? pos[sblng-1]:s_str;
+		int sblPp1 = sblng<pos.length-1 ? pos[sblng + 1]:s_end; 
+
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sblPp1;dl1.v4=pP; dl1.cz5(); f[45]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sblPm1;dl1.v4=pP; dl1.cz5(); f[46]=dl1.csa(s_dir,dir);// f.add(li.l2i(l)); 
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=pP;dl1.v4=prntPp1;dl1.cz5(); f[47]=dl1.csa(s_dir,dir);// f.add(li.l2i(l)); 
+		dl1.v0=n++;	dl1.v2=sP; dl1.v3=pP;dl1.v4=prntPm1; dl1.cz5(); f[48]=dl1.csa(s_dir,dir);// f.add(li.l2i(l));
+		dl1.v0=n++;	dl1.v2=sP;  dl1.v3=sblPp1;dl1.v4=prntPm1;dl1.v5=pP; dl1.cz6(); f[49]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sblPm1; dl1.v3=sP;dl1.v4=prntPm1;dl1.v5=pP;dl1.cz6(); f[50]=dl1.csa(s_dir,dir);// f.add(li.l2i(l)); 
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sblPp1;dl1.v4=pP;dl1.v5=prntPp1; dl1.cz6(); f[51]=dl1.csa(s_dir,dir);// f.add(li.l2i(l)); 
+		dl1.v0=n++; dl1.v2=sblPm1; dl1.v3=sP; dl1.v4=pP;dl1.v5=prntPp1; dl1.cz6(); f[52]=dl1.csa(s_dir,dir);// f.add(li.l2i(l)); 
+		dl1.v0=n++;	dl1.v2=sP; dl1.v3=sblPp1;dl1.v4=dP; 	dl1.cz5(); f[53]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sblPm1;dl1.v4=dP; dl1.cz5(); f[54]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=dP;dl1.v4=chldPp1;dl1.cz5(); f[55]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=dP;dl1.v4=chldPm1; dl1.cz5(); f[56]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sP;  dl1.v3=sblPp1;dl1.v4=chldPm1;dl1.v5=dP; dl1.cz6(); f[57]=dl1.csa(s_dir,dir);// f.add(li.l2i(l)); 
+		dl1.v0=n++; dl1.v2=sblPm1; dl1.v3=sP;dl1.v4=chldPm1;dl1.v5=dP;dl1.cz6(); f[58]=dl1.csa(s_dir,dir);  
+		dl1.v0= n++;dl1.v2=sP; dl1.v3=sblPp1;dl1.v4=dP;dl1.v5=chldPp1;dl1.cz6();f[59]=dl1.csa(s_dir,dir);// f.add(li.l2i(l)); 
+		dl1.v0= n++;	dl1.v2=sblPm1; dl1.v3=sP;dl1.v4=dP;dl1.v5=chldPp1;dl1.cz6(); f[60]=dl1.csa(s_dir,dir);  
+
+		int c=61;
+
+		int pLSp1 = prnt != pos.length - 1 ? forms[prnt + 1]==-1?-1:cluster.getLP(forms[prnt + 1]): _cend;	
+		int	cLSp1 = d != pos.length - 1 ? forms[d + 1] ==-1?-1:cluster.getLP(forms[d + 1]):_cend;
+		int sLSp1 = sblng < pos.length -1 ? forms[sblng + 1] ==-1?-1:cluster.getLP(forms[sblng + 1]) : _cend; 
+
+		int pLSm1 = prnt!=0 ? forms[prnt - 1]==-1?-1:cluster.getLP(forms[prnt - 1]): _cstr;	
+		int	cLSm1 = d-1>=0 ? forms[d - 1] ==-1?-1:cluster.getLP(forms[d - 1]):_cstr;
+		int sLSm1 = sblng>0 ? forms[sblng - 1] ==-1?-1:cluster.getLP(forms[sblng - 1]):_cstr; 
+
+		//int c=61;
+
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sLSp1;dl1.v4=pP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);   
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sLSm1;dl1.v4=pP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=pP;dl1.v4=pLSp1;dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=pP;dl1.v4=pLSm1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++; dl1.v2=sP;  dl1.v3=sLSp1;dl1.v4=pLSm1;dl1.v5=pP; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sLSm1; dl1.v3=sP;dl1.v4=pLSm1;dl1.v5=pP; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sLSp1;dl1.v4=pP;dl1.v5=pLSp1; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++; dl1.v2=sLSm1; dl1.v3=sP; dl1.v4=pP;dl1.v5=pLSp1; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++;	dl1.v2=sP; dl1.v3=sLSp1;dl1.v4=dP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);   
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sLSm1;dl1.v4=dP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=dP;dl1.v4=cLSp1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++;dl1.v2=sP; dl1.v3=dP;dl1.v4=cLSm1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sP;  dl1.v3=sLSm1;dl1.v4=cLSm1;dl1.v5=dP; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sLSm1; dl1.v3=sP;dl1.v4=cLSm1;dl1.v5=dP;dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++;dl1.v2=sP; dl1.v3=sLSp1;dl1.v4=dP;dl1.v5=cLSp1;dl1.cz6();f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++;	dl1.v2=sLSm1; dl1.v3=sP;dl1.v4=dP;dl1.v5=cLSp1; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+
+
+
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sLSp1;dl1.v4=pP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sLSm1;dl1.v4=pP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=pP;dl1.v4=pLSp1;dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=pP;dl1.v4=pLSm1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0=n++; dl1.v2=sP;  dl1.v3=sLSp1;dl1.v4=pLSm1;dl1.v5=pP; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++; dl1.v2=sLSm1; dl1.v3=sP;dl1.v4=pLSm1;dl1.v5=pP; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sLSp1;dl1.v4=pP;dl1.v5=pLSp1; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0=n++; dl1.v2=sLSm1; dl1.v3=sP; dl1.v4=pP;dl1.v5=pLSp1; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0=n++;	dl1.v2=sP; dl1.v3=sLSp1;dl1.v4=dP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sLSm1;dl1.v4=dP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=dP;dl1.v4=cLSp1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++;dl1.v2=sP; dl1.v3=dP;dl1.v4=cLSm1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++; dl1.v2=sP;  dl1.v3=sLSm1;dl1.v4=cLSm1;dl1.v5=dP; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++; dl1.v2=sLSm1; dl1.v3=sP;dl1.v4=cLSm1;dl1.v5=dP;dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++;dl1.v2=sP; dl1.v3=sLSp1;dl1.v4=dP;dl1.v5=cLSp1;dl1.cz6();f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++;	dl1.v2=sLSm1; dl1.v3=sP;dl1.v4=dP;dl1.v5=cLSp1; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);
+
+		// take those in for stacking
+		
+		/*
+		short[] prel = is.plabels[i],phead=is.pheads[i];
+		
+		int g = prnt==phead[d]?1:2 ;
+		if (sblng>=0) g += prnt==phead[sblng]?4:8;
+		
+		int gr = sblng==-1?s_relend:prel[sblng];
+
+
+		dl2.v0= n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=sP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.csa(s_dir,dir); 
+		dl2.v0= n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.csa(s_dir,dir); 
+		dl2.v0= n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f[c++]=dl2.csa(s_dir,dir); 
+		
+		dl2.v0= n++;dl2.v2=gr;dl2.v3=g;dl2.v4=sP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.csa(s_dir,dir); 
+		dl2.v0= n++;dl2.v2=gr;dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.csa(s_dir,dir); 
+		dl2.v0= n++;dl2.v2=gr;dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f[c++]=dl2.csa(s_dir,dir); 
+*/
+
+		if (feats==null) return;
+
+		int cnt=c;
+
+		short[] featsP =feats[d]; 
+		short[] featsSbl =sblng!=-1?feats[sblng]:null; 
+
+		dlf.v0= n++;	dlf.v1=label; dlf.v2=sP; dlf.v3=dP;
+
+
+		cnt = extractFeat(f, cnt ,dir, featsP, featsSbl); 
+
+		featsP =feats[prnt]; 
+		featsSbl =sblng!=-1?feats[sblng]:null; 
+
+		dlf.v0= n++; dlf.v1=label; dlf.v2=pP; dlf.v3=sP;
+		if (featsP!=null && featsSbl!=null) {
+			for(short i1=0;i1<featsP.length;i1++) {
+				for(short i2=0;i2<featsSbl.length;i2++) {							
+					dlf.v4=featsP[i1]; dlf.v5=featsSbl[i2];
+					dlf.cz6(); f[cnt++]=dlf.csa(s_dir,prnt<sblng?1:2); 
+				}
+			} 
+		} else if (featsP==null && featsSbl!=null) {
+
+			for(short i2=0;i2<featsSbl.length;i2++) {							
+				dlf.v4=nofeat; dlf.v5=featsSbl[i2];
+				dlf.cz6(); f[cnt++]=dlf.csa(s_dir,dir); 
+			}
+
+		} else if (featsP!=null && featsSbl==null) {
+
+			for(short i1=0;i1<featsP.length;i1++) {							
+				dlf.v4=featsP[i1]; dlf.v5=nofeat;
+				dlf.cz6(); f[cnt++]=dlf.csa(s_dir,dir); 
+			}		
+		}
+		
+		return;
+	}
+
+	private int extractFeat(long[] f, int cnt, int dir, short[] featsP, short[] featsD) {
+		if (featsP!=null && featsD!=null) {
+			for(short i1=0;i1<featsP.length;i1++) {
+				for(short i2=0;i2<featsD.length;i2++) {							
+					dlf.v4=featsP[i1]; dlf.v5=featsD[i2];
+					dlf.cz6(); f[cnt++]=dlf.csa(s_dir,dir); 
+				}
+			} 
+		} else if (featsP==null && featsD!=null) {
+
+			for(short i2=0;i2<featsD.length;i2++) {							
+				dlf.v4=nofeat; dlf.v5=featsD[i2];
+				dlf.cz6(); f[cnt++]=dlf.csa(s_dir,dir); 
+
+			}		
+		} else if (featsP!=null && featsD==null) {
+
+			for(short i1=0;i1<featsP.length;i1++) {							
+				dlf.v4=featsP[i1]; dlf.v5=nofeat;
+				dlf.cz6(); f[cnt++]=dlf.csa(s_dir,dir); 
+
+			}		
+		}
+		return cnt;
+	}
+
+	public IFV encodeCat2(Instances is, int ic, short pposs[], int forms[], int[] lemmas, short[] heads, short[] types, short feats[][], 
+			Cluster cluster, IFV f, Long2IntInterface li) {
+
+
+		long[] svs = new long[250]; 
+
+		for (int i = 1; i < heads.length; i++) {
+
+
+			int n =basic(pposs, forms, heads[i], i, cluster, f); 
+			firstm(is, ic, heads[i],  i, types[i], cluster,svs);
+			for(int k=0;k<svs.length;k++) f.add(li.l2i(svs[k]));
+
+			int ch,cmi,cmo;
+			if (heads[i] < i) {
+				ch = rightmostRight(heads, heads[i], i);
+				cmi = leftmostLeft(heads, i, heads[i]);
+				cmo = rightmostRight(heads, i, heads.length);
+
+			} else {
+				ch = leftmostLeft(heads, heads[i], i);
+				cmi = rightmostRight(heads, i, heads[i]);
+				cmo = leftmostLeft(heads, i, 0);
+			}
+
+			siblingm(is,ic,pposs, forms,lemmas, feats, heads[i], i, ch,types[i], cluster, svs,n);
+			for(int k=0;k<svs.length;k++) f.add(li.l2i(svs[k]));
+
+
+			gcm(is, ic,heads[i],i,cmi, types[i], cluster,  svs);
+			for(int k=0;k<svs.length;k++) f.add(li.l2i(svs[k]));
+
+			gcm(is, ic, heads[i],i,cmo, types[i], cluster,  svs);
+			for(int k=0;k<svs.length;k++)f.add(li.l2i(svs[k]));
+		}
+
+		return f;
+	}
+
+	public FV encodeCat(Instances is, int ic, short pposs[], int forms[], int[] lemmas, short[] heads, short[] types, short feats[][], Cluster cluster, FV f) {
+
+
+		long[] svs = new long[250]; 
+
+		for (int i = 1; i < heads.length; i++) {
+
+
+			int n =basic(pposs, forms, heads[i], i, cluster, f); 
+			firstm(is, ic, heads[i],  i, types[i], cluster,svs);
+			for(int k=0;k<svs.length;k++) dl1.map(f,svs[k]);
+
+			int ch,cmi,cmo;
+			if (heads[i] < i) {
+				ch = rightmostRight(heads, heads[i], i);
+				cmi = leftmostLeft(heads, i, heads[i]);
+				cmo = rightmostRight(heads, i, heads.length);
+
+			} else {
+				ch = leftmostLeft(heads, heads[i], i);
+				cmi = rightmostRight(heads, i, heads[i]);
+				cmo = leftmostLeft(heads, i, 0);
+			}
+
+			siblingm(is,ic,pposs, forms,lemmas, feats, heads[i], i, ch,types[i], cluster, svs,n);
+			for(int k=0;k<svs.length;k++) dl1.map(f,svs[k]);
+
+
+			gcm(is, ic,heads[i],i,cmi, types[i], cluster,  svs);
+			for(int k=0;k<svs.length;k++) dl1.map(f,svs[k]);
+
+			gcm(is, ic, heads[i],i,cmo, types[i], cluster,  svs);
+			for(int k=0;k<svs.length;k++) dl1.map(f,svs[k]);
+		}
+
+		return f;
+	}
+
+
+	public  float encode3(short[] pos, short heads[] , short[] types, DataF d2) {
+
+		double v = 0;
+		for (int i = 1; i < heads.length; i++) {
+
+			int dir= (heads[i] < i)? 0:1;
+
+			v += d2.pl[heads[i]][i];
+			v += d2.lab[heads[i]][i][types[i]][dir];
+
+			boolean left = i<heads[i]; 
+			short[] labels = Edges.get(pos[heads[i]], pos[i], left);
+			int lid=-1;
+			for(int k=0;k<labels.length;k++)  if (types[i]== labels[k]) {lid= k;break;}
+
+			int ch,cmi,cmo;
+			if (heads[i] < i) {
+				ch = rightmostRight(heads, heads[i], i);
+				cmi = leftmostLeft(heads, i, heads[i]);
+				cmo = rightmostRight(heads, i, heads.length);
+
+				if (ch==-1) ch=heads[i];  
+				if (cmi==-1) cmi=heads[i];
+				if (cmo==-1) cmo=heads[i];
+
+			} else {
+				ch = leftmostLeft(heads, heads[i], i);
+				cmi = rightmostRight(heads, i, heads[i]);
+				cmo = leftmostLeft(heads, i, 0);
+
+				if (ch==-1) ch=i;
+				if (cmi==-1) cmi=i;
+				if (cmo==-1) cmo=i;
+			}
+			v += d2.sib[heads[i]][i][ch][dir][lid];
+			v += d2.gra[heads[i]][i][cmi][dir][lid];
+			v += d2.gra[heads[i]][i][cmo][dir][lid];
+		}
+		return (float)v;
+	}
+
+	/**
+	 * Provide the scores of the edges
+	 * @param pos
+	 * @param heads
+	 * @param types
+	 * @param edgesScores
+	 * @param d2
+	 * @return
+	 */
+	public static float encode3(short[] pos, short heads[] , short[] types, float[] edgesScores, DataF d2) {
+
+		double v = 0;
+		for (int i = 1; i < heads.length; i++) {
+
+			int dir= (heads[i] < i)? 0:1;
+
+			edgesScores[i] = d2.pl[heads[i]][i];
+			edgesScores[i] += d2.lab[heads[i]][i][types[i]][dir];
+
+			boolean left = i<heads[i]; 
+			short[] labels = Edges.get(pos[heads[i]], pos[i], left);
+			int lid=-1;
+			for(int k=0;k<labels.length;k++)  if (types[i]== labels[k]) {lid= k;break;}
+
+			int ch,cmi,cmo;
+			if (heads[i] < i) {
+				ch = rightmostRight(heads, heads[i], i);
+				cmi = leftmostLeft(heads, i, heads[i]);
+				cmo = rightmostRight(heads, i, heads.length);
+
+				if (ch==-1) ch=heads[i];  
+				if (cmi==-1) cmi=heads[i];
+				if (cmo==-1) cmo=heads[i];
+
+			} else {
+				ch = leftmostLeft(heads, heads[i], i);
+				cmi = rightmostRight(heads, i, heads[i]);
+				cmo = leftmostLeft(heads, i, 0);
+
+				if (ch==-1) ch=i;
+				if (cmi==-1) cmi=i;
+				if (cmo==-1) cmo=i;
+			}
+			edgesScores[i] += d2.sib[heads[i]][i][ch][dir][lid];
+			edgesScores[i] += d2.gra[heads[i]][i][cmi][dir][lid];
+			edgesScores[i] += d2.gra[heads[i]][i][cmo][dir][lid];
+			v+=edgesScores[i];
+		}
+		return (float)v;
+	}
+
+
+	private static int rightmostRight(short[] heads, int head, int max) {
+		int rightmost = -1;
+		for (int i = head + 1; i < max; i++) if (heads[i] == head) rightmost = i;
+
+		return rightmost;
+	}
+
+	private static int leftmostLeft(short[] heads, int head, int min) {
+		int leftmost = -1;
+		for (int i = head - 1; i > min; i--) if (heads[i] == head) leftmost = i;
+		return leftmost;
+	}
+
+	public static final String REL = "REL",END = "END",STR = "STR",LA = "LA",RA = "RA";
+
+	private static int ra,la;
+	private static int s_str;
+	private static int s_end, _cend,_cstr, s_stwrd,s_relend;
+
+	protected static final String TYPE = "TYPE",DIR = "D";
+	public static final String POS = "POS";
+	protected static final String DIST = "DIST",MID = "MID", FEAT="F";
+
+	private static final String _0 = "0",_4 = "4",_3 = "3", _2 = "2",_1 = "1",_5 = "5",_10 = "10";
+
+	private static  int di0, d4,d3,d2,d1,d5,d10;
+
+
+	private static final String WORD = "WORD",STWRD = "STWRD", STPOS = "STPOS";
+
+
+
+	private static int nofeat;
+
+
+	public static int maxForm;
+
+
+	/**
+	 * Initialize the features.
+	 * @param maxFeatures
+	 */
+	static public void initFeatures() {
+
+
+		MFB mf = new MFB();
+		mf.register(POS, MID);
+		s_str = mf.register(POS, STR);
+		s_end = mf.register(POS, END);
+
+		s_relend = mf.register(REL, END);
+
+		_cstr= mf.register(Cluster.SPATH,STR);
+		_cend=mf.register(Cluster.SPATH,END);
+
+
+		mf.register(TYPE, POS);
+
+		s_stwrd=mf.register(WORD,STWRD);
+		mf.register(POS,STPOS);
+
+		la = mf.register(DIR, LA);
+		ra = mf.register(DIR, RA);
+
+		//		mf.register(TYPE, CHAR);
+
+		mf.register(TYPE, FEAT);
+		nofeat=mf.register(FEAT, "NOFEAT");
+
+		for(int k=0;k<215;k++) mf.register(TYPE, "F"+k);
+
+
+		di0=mf.register(DIST, _0);
+		d1=mf.register(DIST, _1);
+		d2=mf.register(DIST, _2);
+		d3=mf.register(DIST, _3);
+		d4=mf.register(DIST, _4);
+		d5=mf.register(DIST, _5);
+		//		d5l=mf.register(DIST, _5l);
+		d10=mf.register(DIST, _10);
+
+
+	}
+
+	/* (non-Javadoc)
+	 * @see extractors.Extractor#getType()
+	 */
+	@Override
+	public int getType() {
+		
+		return s_type;
+	}
+
+	/* (non-Javadoc)
+	 * @see extractors.Extractor#setMaxForm(int)
+	 */
+	@Override
+	public void setMaxForm(int max) {
+		maxForm = max;	
+	}
+
+	/* (non-Javadoc)
+	 * @see extractors.Extractor#getMaxForm()
+	 */
+	@Override
+	public int getMaxForm() {
+		return maxForm;
+	}
+
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/extractors/ExtractorClusterStackedR2.java b/dependencyParser/basic/mate-tools/src/extractors/ExtractorClusterStackedR2.java
new file mode 100644
index 0000000..de82f42
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/extractors/ExtractorClusterStackedR2.java
@@ -0,0 +1,937 @@
+package extractors;
+
+
+import java.util.Arrays;
+
+import is2.data.Cluster;
+import is2.data.D4;
+import is2.data.DataF;
+import is2.data.Edges;
+import is2.data.FV;
+import is2.data.IFV;
+import is2.data.Instances;
+import is2.data.Long2IntInterface;
+import is2.data.MFB;
+import is2.util.DB;
+
+
+
+final public class ExtractorClusterStackedR2 implements Extractor {
+
+	public static int s_rel,s_word,s_type,s_dir,s_dist,s_feat,s_child,s_spath,s_lpath,s_pos;
+
+	MFB mf;
+
+	final D4 d0 ,dl1,dl2, dwr,dr,dwwp,dw,dwp,dlf,d3lp, d2lp,d2pw,d2pp ;
+
+	public final Long2IntInterface li;
+
+	public ExtractorClusterStackedR2(Long2IntInterface li) {
+		
+		initFeatures();
+		this.li=li;
+		d0 = new D4(li);dl1 = new D4(li);dl2 = new D4(li);
+		dwr = new D4(li);
+		dr = new D4(li);
+		dwwp = new D4(li);
+
+		dw = new D4(li);
+		dwp = new D4(li);
+
+		dlf = new D4(li);
+		d3lp = new D4(li); d2lp = new D4(li); d2pw = new D4(li); d2pp = new D4(li);
+
+	}
+
+	public void initStat() {
+		
+		
+		mf = new MFB();
+		s_rel = mf.getFeatureCounter().get(REL).intValue();
+		s_pos = mf.getFeatureCounter().get(POS).intValue();       
+		s_word = mf.getFeatureCounter().get(WORD).intValue();
+		s_type = mf.getFeatureCounter().get(TYPE).intValue();//mf.getFeatureBits();
+		s_dir = mf.getFeatureCounter().get(DIR);
+		la = mf.getValue(DIR, LA);
+		ra = mf.getValue(DIR, RA);
+		s_dist = mf.getFeatureCounter().get(DIST);//mf.getFeatureBits(DIST);
+		s_feat = mf.getFeatureCounter().get(FEAT);//mf.getFeatureBits(Pipe.FEAT);
+		s_spath = mf.getFeatureCounter().get(Cluster.SPATH)==null?0:mf.getFeatureCounter().get(Cluster.SPATH);//mf.getFeatureBits(Cluster.SPATH);
+		s_lpath = mf.getFeatureCounter().get(Cluster.LPATH)==null?0:mf.getFeatureCounter().get(Cluster.LPATH);//mf.getFeatureBits(Cluster.LPATH);
+	}
+
+	public void init(){
+	//	DB.println("init");
+		d0.a0 = s_type;d0.a1 = s_pos;d0.a2 = s_pos;d0.a3 = s_pos;d0.a4 = s_pos;d0.a5 = s_pos;d0.a6 = s_pos;d0.a7 = s_pos;
+		dl1.a0 = s_type;dl1.a1 = s_rel; dl1.a2 = s_pos;dl1.a3 = s_pos; dl1.a4 = s_pos; dl1.a5 = s_pos; dl1.a6 = s_pos; dl1.a7 = s_pos;	
+		dl2.a0 = s_type;dl2.a1 = s_rel;dl2.a2 = s_word;dl2.a3 = s_pos;dl2.a4 = s_pos;dl2.a5 = s_pos;dl2.a6 = s_pos;dl2.a7 = s_pos;
+		dwp.a0 = s_type; 	dwp.a1 = s_rel; 	dwp.a2 = s_word; 	dwp.a3 = s_pos; 	dwp.a4 = s_pos; dwp.a5 = s_word;
+		dwwp.a0 = s_type; dwwp.a1 = s_rel; dwwp.a2 = s_word; dwwp.a3 = s_word; dwwp.a4 = s_pos; dwwp.a5 = s_word;
+		dlf.a0 = s_type;dlf.a1 = s_rel; dlf.a2 = s_pos;dlf.a3 = s_pos; dlf.a4 = s_feat; dlf.a5 = s_feat; dlf.a6 = s_pos; dlf.a7 = s_pos;	
+		d3lp.a0 = s_type; d3lp.a1 = s_rel; d3lp.a2 = s_lpath; d3lp.a3 = s_lpath; d3lp.a4 = s_lpath; d3lp.a5 = s_word; d3lp.a6 = s_spath; d3lp.a7 = s_spath;	
+		d2lp.a0 = s_type; d2lp.a1 = s_rel; d2lp.a2 = s_lpath; d2lp.a3 = s_lpath; d2lp.a4 = s_word; d2lp.a5 = s_word; //d3lp.a6 = s_spath; d3lp.a7 = s_spath;	
+		d2pw.a0 = s_type; d2pw.a1 = s_rel; d2pw.a2 = s_lpath; d2pw.a3 = s_lpath; d2pw.a4 = s_word; d2pw.a5 = s_word; //d3lp.a6 = s_spath; d3lp.a7 = s_spath;	
+		d2pp.a0 = s_type; d2pp.a1 = s_rel; d2pp.a2 = s_lpath; d2pp.a3 = s_lpath; d2pp.a4 = s_pos; d2pp.a5 = s_pos; //d3lp.a6 = s_spath; d3lp.a7 = s_spath;	
+	}
+
+
+	public int basic(short[] pposs, int[] form,  int p, int d, Cluster cluster,  IFV f)
+	{
+
+		d0.clean(); dl1.clean(); dl2.clean(); dwp.clean(); dwwp.clean(); dlf.clean(); d3lp.clean(); 
+
+		d3lp.clean(); d2lp.clean();d2pw.clean(); d2pp.clean();
+
+		int n=1;
+		int dir= (p < d)? ra:la;
+	//	d0.v0= n; d0.v1=pposs[p]; d0.v2=pposs[d]; //d0.stop=4;
+		int end= (p >= d ? p : d);
+		int start = (p >= d ? d : p) + 1;
+
+		StringBuilder s = new StringBuilder(end-start);
+		int[] x = new int[end-start];
+		int c=0;
+		for(int i = start ; i <end ; i++) {
+			//d0.v3=pposs[i];
+			//d0.cz4();
+			//d0.csa(s_dir,dir,f);
+//			s.append((char)pposs[i]);
+			x[c++] =pposs[i];
+		}
+		
+		Arrays.sort(x);
+		for(int i = 0;i<x.length ; i++) {
+			if (i==0 || x[i]!=x[i-1] ) s.append(x[i]);			
+		}		
+		int v = mf.register("px", s.toString());
+		
+		dwp.v0 = n++; 	dwp.v1 = 1;dwp.v2 = v;   dwp.v3 = pposs[p]; dwp.v4 = pposs[d]; dwp.cz5(); dwp.csa(s_dir,dir,f);
+		
+		return n;
+	}
+
+
+	public void firstm(Instances is, int i, 
+			int prnt, int dpnt, int label, Cluster cluster, long[] f)
+	{
+
+		
+		//short[] pposs, int[] form, int[] lemmas, short[][] feats
+		for(int k=0;k<f.length;k++) f[k]=0;
+
+		short[] pposs = is.pposs[i];
+		int[] form =is.forms[i];
+		short[][] feats = is.feats[i];
+		
+		
+		int pF = form[prnt],dF =  form[dpnt];
+		int pL = is.plemmas[i][prnt],dL = is.plemmas[i][dpnt];
+		int pP = pposs[prnt],dP = pposs[dpnt];
+
+		int prntLS = pF==-1?-1:cluster.getLP(pF), chldLS = dF==-1?-1:cluster.getLP(dF);
+
+		final int dir= (prnt < dpnt)? ra:la;
+
+		if (pF>maxForm) pF=-1;
+		if (pL>maxForm) pL=-1;
+
+		if (dF>maxForm) dF=-1;
+		if (dL>maxForm) dL=-1;
+
+
+		int n=3,c=0;
+		
+		dl2.v1=label;
+		dl2.v0= n++;	 dl2.v2=pF; dl2.v3=dP;   dl2.cz4(); f[c++]=dl2.csa(s_dir,dir);
+		dl2.v0= n++;		              		 dl2.cz3(); f[c++]=dl2.csa(s_dir,dir);
+		dl2.v0= n++;	 dl2.v2=dF; dl2.v3=pP;   dl2.cz4(); f[c++]=dl2.csa(s_dir,dir);
+		dl2.v0= n++;		              		 dl2.cz3(); f[c++]=dl2.csa(s_dir,dir); 
+
+		
+		dwwp.v1=label;
+		dwwp.v0= n++;  dwwp.v2=pF; dwwp.v3=dF; dwwp.cz4(); f[c++]=dwwp.csa(s_dir,dir);  
+
+		dl1.v1=label;
+		dl1.v0= n++; dl1.v2=dP;                   dl1.cz3(); f[c++]=dl1.csa(s_dir,dir); 	
+		dl1.v0= n++; dl1.v2=pP;                   dl1.cz3(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++;              dl1.v3=dP;      dl1.cz4(); f[c++]=dl1.csa(s_dir,dir);
+
+		int pPm1 = prnt > 0 ? pposs[prnt - 1] : s_str,              dPm1 = dpnt > 0 ? pposs[dpnt - 1] : s_str;
+		int pPp1 = prnt < pposs.length - 1 ? pposs[prnt + 1]:s_end, dPp1 = dpnt < pposs.length - 1 ? pposs[dpnt + 1]:s_end;
+
+		int pPm2 = prnt > 1 ? pposs[prnt - 2] : s_str,              dPm2 = dpnt > 1 ? pposs[dpnt - 2] : s_str;
+		int pPp2 = prnt < pposs.length - 2 ? pposs[prnt + 2]:s_end, dPp2 = dpnt < pposs.length - 2 ? pposs[dpnt + 2]:s_end;
+				
+		int pFm1 = prnt > 0 ? form[prnt - 1] : s_stwrd,              dFm1 = dpnt > 0 ? form[dpnt - 1] : s_stwrd;
+		int pFp1 = prnt < form.length - 1 ? form[prnt + 1]:s_stwrd,  dFp1 = dpnt < form.length - 1 ? form[dpnt + 1]:s_stwrd;
+
+		
+		
+		dl1.v0= n++;dl1.v2=pP;  dl1.v3=pPp1; dl1.v4=dP;dl1.v5=dPp1; dl1.cz6(); f[n++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++;                                   dl1.v5=dPm1; dl1.cz6(); f[n++]=dl1.csa(s_dir,dir);	
+		dl1.v0= n++;            dl1.v3=pPm1;                        dl1.cz6(); f[n++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++;                                   dl1.v5=dPp1; dl1.cz6(); f[n++]=dl1.csa(s_dir,dir);
+
+
+		dl1.v0= n++;            dl1.v3=pPm1;           dl1.cz5(); f[n++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++;            dl1.v3=dPm1;           dl1.cz5(); f[n++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++;			dl1.v3=dPp1;           dl1.cz5(); f[n++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++;            dl1.v3=pPp1;           dl1.cz5(); f[n++]=dl1.csa(s_dir,dir);
+
+		dl1.v0= n++;dl1.v2=pP;  dl1.v3=pPp2; dl1.v4=dP;dl1.v5=dPp2; dl1.cz6(); f[n++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++;                                   dl1.v5=dPm2; dl1.cz6(); f[n++]=dl1.csa(s_dir,dir);	
+		dl1.v0= n++;            dl1.v3=pPm2;                        dl1.cz6(); f[n++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++;                                   dl1.v5=dPp2; dl1.cz6(); f[n++]=dl1.csa(s_dir,dir);
+		
+		dl1.v0= n++;            dl1.v3=pPm2;           dl1.cz5(); f[n++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++;            dl1.v3=dPm2;           dl1.cz5(); f[n++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++;			dl1.v3=dPp2;           dl1.cz5(); f[n++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++;            dl1.v3=pPp2;           dl1.cz5(); f[n++]=dl1.csa(s_dir,dir);
+
+		
+		
+		dl2.v0= n++; dl2.v3=dFm1; dl2.v3=pPp1;dl2.v4=pP;  dl2.cz5(); f[n++]=dl2.getVal(); 
+		dl2.v0= n++; dl2.v3=dFp1; dl2.v3=pPm1;            dl2.cz5(); f[n++]=dl2.getVal();
+		dl2.v0= n++; dl2.v3=pFm1; dl2.v3=dPp1;dl2.v4=dP;  dl2.cz5(); f[n++]=dl2.getVal();
+		dl2.v0= n++; dl2.v3=pFp1; dl2.v3=dPm1;            dl2.cz5(); f[n++]=dl2.getVal();
+
+		
+		dl2.v0= n++; dl2.v3=dFm1; dl2.v3=dPm2;dl2.v4=pP;  dl2.cz5(); f[n++]=dl2.getVal(); 
+		dl2.v0= n++; dl2.v3=dFp1; dl2.v3=dPp2;            dl2.cz5(); f[n++]=dl2.getVal();
+		dl2.v0= n++; dl2.v3=pFm1; dl2.v3=pPm2;dl2.v4=dP;  dl2.cz5(); f[n++]=dl2.getVal();
+		dl2.v0= n++; dl2.v3=pFp1; dl2.v3=pPp2;            dl2.cz5(); f[n++]=dl2.getVal();
+
+		
+		dwwp.v0= n++;	dwwp.v2=pF; dwwp.v3=dF; dwwp.v4=dP; dwwp.cz5(); f[n++]=dwwp.csa(s_dir,dir); 
+		dwwp.v0= n++;	dwwp.v2=pF; dwwp.v3=dF; dwwp.v4=pP; dwwp.cz5(); f[n++]=dwwp.csa(s_dir,dir); 
+		dwwp.v0= n++;	dwwp.v2=dF; dwwp.v3=pF; dwwp.v4=pP; dwwp.v4=dP; dwwp.cz6(); f[n++]=dwwp.csa(s_dir,dir);  
+
+		
+	
+		// lemmas
+
+		dl2.v1=label;
+		dl2.v0= n++;	 dl2.v2=pL; dl2.v3=dP;   dl2.cz4(); f[c++]=dl2.csa(s_dir,dir);
+		dl2.v0= n++;		              		 dl2.cz3(); f[c++]=dl2.csa(s_dir,dir);
+		dl2.v0= n++;	 dl2.v2=dL; dl2.v3=pP;   dl2.cz4(); f[c++]=dl2.csa(s_dir,dir);
+		dl2.v0= n++;		              		 dl2.cz3(); f[c++]=dl2.csa(s_dir,dir); 
+
+		
+		dwwp.v1=label;
+		dwwp.v0= n++;  dwwp.v2=pL; dwwp.v3=dL; dwwp.cz4(); f[c++]=dwwp.csa(s_dir,dir);  
+
+		dwp.v1= label; 
+		dwp.v0=n++;dwp.v2=dL; dwp.v3=pP;dwp.v4=dP;dwp.v5=pL; dwp.cz6(); f[c++]=dwp.csa(s_dir,dir);  
+		dwp.v0=n++;dwp.cz5(); f[c++]=dwp.csa(s_dir,dir);  
+
+		dwp.v0=n++;dwp.v2=pL; dwp.cz5(); f[c++]=dwp.csa(s_dir,dir);
+		dwwp.v0= n++;  dwwp.v2=pL; dwwp.v3=dL; dwwp.v4=dP; dwwp.cz5(); f[c++]=dwwp.csa(s_dir,dir);  
+		dwwp.v0= n++;                          dwwp.v4=pP; dwwp.cz5(); f[c++]=dwwp.csa(s_dir,dir);
+
+	
+		// cluster
+
+		d2pw.v1=label; 
+		d2pw.v0=n++; d2pw.v2=prntLS; d2pw.v3=chldLS; d2pw.cz4(); f[c++]=d2pw.csa(s_dir,dir);
+		d2pw.v0=n++; d2pw.v4=pF;                     d2pw.cz5(); f[c++]=d2pw.csa(s_dir,dir);
+		d2pw.v0=n++; d2pw.v4=dF;                     d2pw.cz5(); f[c++]=d2pw.csa(s_dir,dir);
+		d2pw.v0=n++;             d2pw.v5=pF;         d2pw.cz6(); f[c++]=d2pw.csa(s_dir,dir);
+
+
+		d2pp.v1=label; 
+		d2pp.v0=n++; d2pp.v2=prntLS; d2pp.v3=chldLS; d2pp.cz4(); f[c++]=d2pp.csa(s_dir,dir);
+		d2pp.v0=n++; d2pp.v4=pP;                     d2pp.cz5(); f[c++]=d2pp.csa(s_dir,dir);
+		d2pp.v0=n++; d2pp.v4=dP;                     d2pp.cz5(); f[c++]=d2pp.csa(s_dir,dir);
+		d2pp.v0=n++;             d2pp.v5=pP;         d2pp.cz6(); f[c++]=d2pp.csa(s_dir,dir);
+
+		
+		short[] prel = is.plabels[i];
+		short[] phead = is.pheads[i];
+
+		
+		//take those in for stacking
+	//	dl2.v1=label;
+	//	dl2.v0= n++;dl2.v2=prel[dpnt];dl2.v3=pP;dl2.v4=dP; dl2.v5=prnt==phead[dpnt]?1:2; dl2.cz6(); f[c++]=dl2.csa(s_dir,dir); 
+	//	dl2.v0= n++;dl2.v2=pP;dl2.v3=dP; dl2.v4=prnt==phead[dpnt]?1:2; dl2.cz5(); f[c++]=dl2.csa(s_dir,dir); 
+
+		
+	
+		if (feats==null) return;
+
+		short[] featsP =feats[prnt], featsD =feats[dpnt];  
+		dlf.v0= n++;	dlf.v1=label; dlf.v2=pP; dlf.v3=dP;
+		extractFeat(f, c, dir, featsP, featsD);
+
+		return;
+	}
+
+
+
+	public void gcm(Instances is , int i, int p, int d, int gc, int label,Cluster cluster, long[] f) {
+
+		for(int k=0;k<f.length;k++) f[k]=0;
+
+		short[] pos= is.pposs[i];
+		int[] forms=is.forms[i];
+		int[] lemmas=is.plemmas[i];
+		short[][] feats=is.feats[i];
+		
+		int pP = pos[p], dP = pos[d];
+		int prntF = forms[p], chldF = forms[d];
+		int prntL = lemmas[p], chldL = lemmas[d];
+		int prntLS = prntF==-1?-1:cluster.getLP(prntF), chldLS = chldF==-1?-1:cluster.getLP(chldF);
+
+		int gP = gc != -1 ? pos[gc] :  s_str; 
+		int gcF = gc != -1 ? forms[gc] :  s_stwrd; 
+		int gcL = gc != -1 ? lemmas[gc] : s_stwrd;
+		int gcLS = (gc != -1) && (gcF!=-1) ? cluster.getLP(gcF) : s_stwrd;
+
+		if (prntF>maxForm) prntF=-1;
+		if (prntL>maxForm) prntL=-1;
+
+		if (chldF>maxForm) chldF=-1;
+		if (chldL>maxForm) chldL=-1;
+
+		if (gcF>maxForm) gcF=-1;
+		if (gcL>maxForm) gcL=-1;
+
+
+		int dir= (p < d)? ra:la, dir_gra =(d < gc)? ra:la;
+
+		int n=84,c=0;
+
+		//dl1.v023();
+		dl1.v1=label;
+		dl1.v0= n++; dl1.v2=pP; dl1.v3=dP;dl1.v4=gP; dl1.cz5(); dl1.cs(s_dir,dir);f[c++]=dl1.csa(s_dir,dir_gra);
+		dl1.v0= n++; dl1.v2=pP; dl1.v3=gP; dl1.cz4();dl1.cs(s_dir,dir);f[c++]=dl1.csa(s_dir,dir_gra);  
+		dl1.v0= n++; dl1.v2=dP;             dl1.cz4(); dl1.cs(s_dir,dir);f[c++]=dl1.csa(s_dir,dir_gra);
+
+		dwwp.v1=label;
+		dwwp.v0= n++;  dwwp.v2=prntF; dwwp.v3=gcF; 
+		dwwp.cz4(); dwwp.cs(s_dir,dir);f[c++]=dwwp.csa(s_dir,dir_gra); 
+
+		dwwp.v0= n++; dwwp.v2=chldF; dwwp.v3=gcF; 
+		dwwp.cz4(); dwwp.cs(s_dir,dir);f[c++]=dwwp.csa(s_dir,dir_gra);
+
+		dwp.v1=label;
+		dwp.v0= n++; dwp.v2=gcF; dwp.v3=pP; 
+		dwp.cz4(); dwp.cs(s_dir,dir);f[c++]=dwp.csa(s_dir,dir_gra); 
+
+		dwp.v0= n++; dwp.v2=gcF; dwp.v3=dP; 
+		dwp.cz4(); dwp.cs(s_dir,dir);f[c++]=dwp.csa(s_dir,dir_gra); 
+
+		dwp.v0= n++; dwp.v2=prntF; dwp.v3=gP; 
+		dwp.cz4(); dwp.cs(s_dir,dir);f[c++]=dwp.csa(s_dir,dir_gra); 
+
+		dwp.v0= n++; dwp.v2=chldF;  dwp.v3=gP; 
+		dwp.cz4(); dwp.cs(s_dir,dir); f[c++]=dwp.csa(s_dir,dir_gra); 
+
+
+		// lemma
+
+		dwwp.v0= n++; dwwp.v2=prntL; dwwp.v3=gcL; 
+		dwwp.cz4();dwwp.cs(s_dir,dir);f[c++]=dwwp.csa(s_dir,dir_gra);  
+
+		dwwp.v0= n++; dwwp.v2=chldL; dwwp.v3=gcL; 
+		dwwp.cz4(); dwwp.cs(s_dir,dir);f[c++]=dwwp.csa(s_dir,dir_gra); 
+
+		dwp.v0= n++; dwp.v2=gcL; dwp.v3=pP;  
+		dwp.cz4(); dwp.cs(s_dir,dir);f[c++]=dwp.csa(s_dir,dir_gra); 
+
+		dwp.v0= n++; dwp.v2=gcL; dwp.v3=dP;
+		dwp.cz4(); dwp.cs(s_dir,dir);f[c++]=dwp.csa(s_dir,dir_gra); 
+
+		dwp.v0= n++; dwp.v2=prntL; dwp.v3=gP;
+		dwp.cz4(); dwp.cs(s_dir,dir);f[c++]=dwp.csa(s_dir,dir_gra);
+
+		dwp.v0= n++; dwp.v2=chldL;  dwp.v3=gP;
+		dwp.cz4(); dwp.cs(s_dir,dir); f[c++]=dwp.csa(s_dir,dir_gra); 
+
+
+		// clusters 			   	
+
+		d2lp.v1= label; 
+		d2lp.v0= n++; d2lp.v2=prntLS; d2lp.v3=gcLS; d2lp.cz4(); d2lp.cs(s_dir,dir);f[c++]=d2lp.csa(s_dir,dir_gra);// f.add(li.l2i(l)); 		  
+		d2lp.v0= n++; d2lp.v2=chldLS; d2lp.v3=gcLS; d2lp.cz4(); d2lp.cs(s_dir,dir);f[c++]=d2lp.csa(s_dir,dir_gra); 
+		d3lp.v0= n++; d3lp.v1= label; d3lp.v2=prntLS; d3lp.v3=chldLS; d3lp.v4=gcLS; d3lp.cz5(); d3lp.cs(s_dir,dir);f[c++]=d3lp.csa(s_dir,dir_gra); 
+
+		//_f83;		
+		d2lp.v0= n++;	 d2lp.v2=prntLS; d2lp.v3=chldLS; d2lp.v4=gcF; d2lp.cz5(); f[c++]=d2lp.csa(s_dir,dir);  
+		d2lp.v0= n++;	 d2lp.v2=prntLS; d2lp.v3=gcLS; d2lp.v4=chldF; d2lp.cz5(); f[c++]=d2lp.csa(s_dir,dir);   
+		d2lp.v0= n++;	 d2lp.v2=chldLS; d2lp.v3=gcLS; d2lp.v4=prntF; d2lp.cz5(); f[c++]=d2lp.csa(s_dir,dir);  
+
+		d2pp.v1= label;
+		d2pp.v0= n++;	 d2pp.v2=prntLS; d2pp.v3=chldLS; d2pp.v4=gP; d2pp.cz5(); f[c++]=d2pp.csa(s_dir,dir);  
+		d2pp.v0= n++;	 d2pp.v2=prntLS; d2pp.v3=gcLS; d2pp.v4=dP; d2pp.cz5(); f[c++]=d2pp.csa(s_dir,dir);   
+		d2pp.v0= n++;	 d2pp.v2=chldLS; d2pp.v3=gcLS; d2pp.v4=pP; d2pp.cz5(); f[c++]=d2pp.csa(s_dir,dir);  
+
+
+
+		// linear features
+
+		int prntPm1 = p != 0 ? pos[p - 1] : s_str; // parent-pos-minus1
+		int chldPm1 = d - 1 >=0 ? pos[d - 1] : s_str;  // child-pos-minus1
+		int prntPp1 = p != pos.length - 1 ? pos[p + 1] : s_end;
+		int chldPp1 = d != pos.length - 1 ? pos[d + 1] : s_end;
+
+		int gcPm1 = gc > 0 ? pos[gc - 1] : s_str; 
+		int gcPp1 = gc < pos.length - 1 ? pos[gc + 1] : s_end; 
+
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=gcPp1;dl1.v4=dP;  dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=gcPm1;dl1.v4=dP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=dP;dl1.v4=chldPp1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=dP;dl1.v4=chldPm1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gP;  dl1.v3=gcPp1;dl1.v4=chldPm1;dl1.v5=dP;dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);  
+		dl1.v0= n++; dl1.v2=gcPm1; dl1.v3=gP;dl1.v4=chldPm1;dl1.v5=dP; dl1.cz6();f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=gcPp1;dl1.v4=dP;dl1.v5=chldPp1; dl1.cz6();f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gcPm1; dl1.v3=gP;dl1.v4=dP;dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=gcPp1;dl1.v4=pP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=gcPm1;dl1.v4=pP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=pP;dl1.v4=prntPp1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=pP;dl1.v4=prntPm1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++; dl1.v2=gP;  dl1.v3=gcPp1;dl1.v4=prntPm1;dl1.v5=pP; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gcPm1; dl1.v3=gP;dl1.v4=prntPm1;dl1.v5=pP; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=gcPp1;dl1.v4=pP;dl1.v5=prntPp1; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gcPm1; dl1.v3=gP; dl1.v4=pP; dl1.v5=prntPp1;dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);
+
+
+		int pLSp1 = p != pos.length - 1 ? forms[p + 1]==-1?-1:cluster.getLP(forms[p + 1]): _cend;	
+		int	cLSp1 = d != pos.length - 1 ? forms[d + 1] ==-1?-1:cluster.getLP(forms[d + 1]):_cend;
+		int gcLSp1 = gc < pos.length -1 ? forms[gc + 1] ==-1?-1:cluster.getLP(forms[gc + 1]) : s_end; 
+		
+		int pLSm1 = p != 0 ? lemmas[p - 1]==-1?-1:cluster.getLP(lemmas[p - 1]): _cstr;	
+		int	cLSm1 = d - 1 >=0 ? lemmas[d - 1] ==-1?-1:cluster.getLP(lemmas[d - 1]):_cstr;
+		int gcLSm1 = gc > 0 ? lemmas[gc - 1] ==-1?-1:cluster.getLP(lemmas[gc - 1]) : _cstr; 
+
+
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=gcLSp1;dl1.v4=dP;  dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=gcLSm1;dl1.v4=dP; dl1.cz5();f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=dP;dl1.v4=cLSp1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=dP;dl1.v4=cLSm1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gP;  dl1.v3=gcLSp1;dl1.v4=cLSm1;dl1.v5=dP;dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);  
+		dl1.v0= n++; dl1.v2=gcLSm1; dl1.v3=gP;dl1.v4=cLSm1;dl1.v5=dP; dl1.cz6();f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=gcLSp1;dl1.v4=dP;dl1.v5=cLSp1; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=cLSm1; dl1.v3=gP;dl1.v4=dP;dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=gcLSp1;dl1.v4=pP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=gcLSm1;dl1.v4=pP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=pP;dl1.v4=pLSp1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=pP;dl1.v4=pLSm1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++; dl1.v2=gP;  dl1.v3=gcLSp1;dl1.v4=pLSm1;dl1.v5=pP; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gcLSm1; dl1.v3=gP;dl1.v4=pLSm1;dl1.v5=pP; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gP; dl1.v3=gcLSp1;dl1.v4=pP;dl1.v5=pLSp1; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0= n++; dl1.v2=gcLSm1; dl1.v3=gP; dl1.v4=pP; dl1.v5=pLSp1;dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);
+
+	
+		
+		short[] prel = is.plabels[i],phead=is.pheads[i];
+		
+		int g = p==phead[d]?1:2 ;
+		if (gc>=0) g += d==phead[gc]?4:8;
+		
+		int gr = gc==-1?s_relend:prel[gc];
+
+		// take those in for stacking
+	/*	
+		dl2.v1=label; 
+		dl2.v0= n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=gP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.csa(s_dir,dir); 
+		dl2.v0= n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=gP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.csa(s_dir,dir); 
+		dl2.v0= n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=gP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f[c++]=dl2.csa(s_dir,dir); 
+		
+		dl2.v0= n++;dl2.v2=gr;dl2.v3=g;dl2.v4=gP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.csa(s_dir,dir); 
+		dl2.v0= n++;dl2.v2=gr;dl2.v3=g;dl2.v4=gP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.csa(s_dir,dir); 
+		dl2.v0= n++;dl2.v2=gr;dl2.v3=g;dl2.v4=gP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f[c++]=dl2.csa(s_dir,dir); 
+		
+*/
+		if (feats==null) return;	
+
+		short[] featsP =feats[d]; 
+		short[] featsD =gc!=-1?feats[gc]:null; 
+
+		dlf.v0= n++;	dlf.v1=label; dlf.v2=gP; dlf.v3=dP;
+		extractFeat(f, c, dir, featsP, featsD);
+		return;
+	}
+
+
+	public void siblingm(Instances is , int i,short pos[], int forms[], int[] lemmas, short[][] feats, int prnt, int d, int sblng, int label, Cluster cluster,  long[] f, int v)
+	{
+
+		for(int k=0;k<f.length;k++) f[k]=0;
+
+		int pP = pos[prnt], dP = pos[d];
+		int prntF = forms[prnt],chldF = forms[d];
+		int prntL = lemmas[prnt], chldL = lemmas[d];
+		int prntLS = prntF==-1?-1:cluster.getLP(prntF), chldLS = chldF==-1?-1:cluster.getLP(chldF);
+
+		int sP = sblng!=-1 ? pos[sblng] : s_str, sblF = sblng!=-1 ? forms[sblng] : s_stwrd, sblL = sblng!=-1 ? lemmas[sblng] : s_stwrd;
+
+		int sblLS = (sblng != -1)&&(sblF!=-1) ? cluster.getLP(sblF) : s_stwrd;
+
+
+		int dir= (prnt < d)? ra:la;
+
+		int abs = Math.abs(prnt-d);
+
+		final int dist;
+		if (abs > 10)dist=d10;else if (abs>5) dist=d5;else if( abs==5)dist=d4;else if (abs==4)dist=d3;else if (abs==3)dist=d2;
+		else if (abs==2)dist=d1; else  dist=di0;
+
+		int n=147;
+
+		if (prntF>maxForm) prntF=-1;
+		if (prntL>maxForm) prntL=-1;
+
+		if (chldF>maxForm) chldF=-1;
+		if (chldL>maxForm) chldL=-1;
+
+		if (sblF>maxForm) sblF=-1;
+		if (sblL>maxForm) sblL=-1;
+
+
+		dl1.v0= n++; dl1.v1=label;dl1.v2=pP; dl1.v3=dP;dl1.v4=sP; dl1.cz5(); f[0]=dl1.csa(s_dir,dir);f[1]=dl1.csa(s_dist,dist);
+		dl1.v0= n++; dl1.v3=sP; dl1.cz4(); f[2]=dl1.csa(s_dir,dir); f[3]=dl1.csa(s_dist,dist);
+		dl1.v0= n++; dl1.v2=dP;dl1.cz4(); f[4]=dl1.csa(s_dir,dir); f[5]=dl1.csa(s_dist,dist); 
+
+		// sibling only could be tried
+		dwwp.v1=label;
+		dwwp.v0= n++;  dwwp.v2=prntF; dwwp.v3=sblF; dwwp.cz4(); f[6]=dwwp.csa(s_dir,dir); f[7]=dwwp.csa(s_dist,dist);
+		dwwp.v0= n++; dwwp.v2=chldF; dwwp.cz4();                              f[8]=dwwp.csa(s_dir,dir); f[9]=dwwp.csa(s_dist,dist);
+		dwp.v0= n++;	dwp.v1=label; dwp.v2=sblF; dwp.v3=pP; dwp.cz4(); f[10]=dwp.csa(s_dir,dir); f[11]=dwp.csa(s_dist,dist);
+		dwp.v0= n++;	/*dwp.v1=label;  */dwp.v3=dP; dwp.cz4(); f[12]=dwp.csa(s_dir,dir); f[13]=dwp.csa(s_dist,dist);
+		dwp.v0= n++;	/*dwp.v1=label;*/ dwp.v2=prntF; dwp.v3=sP; dwp.cz4(); f[14]=dwp.csa(s_dir,dir); f[15]=dwp.csa(s_dist,dist);
+		dwp.v0= n++;	/*dwp.v1=label;*/ dwp.v2=chldF;  dwp.cz4(); f[16]=dwp.csa(s_dir,dir); f[17]=dwp.csa(s_dist,dist);
+
+		//lemmas
+		dwwp.v0= n++;	 dwwp.v2=prntL; dwwp.v3=sblL; 	dwwp.cz4(); f[18]=dwwp.csa(s_dir,dir); 
+		dwwp.v0= n++;	 dwwp.v2=chldL;                 dwwp.cz4(); f[19]=dwwp.csa(s_dir,dir); f[20]=dwwp.csa(s_dist,dist);  
+		dwp.v0= n++;	/*dwp.v1=label;*/ dwp.v2=sblL; dwp.v3=pP; dwp.cz4(); f[21]=dwp.csa(s_dir,dir); f[22]=dwp.csa(s_dist,dist);
+		dwp.v0= n++; /*dwp.v1=label; */ dwp.v3=dP; 	dwp.cz4(); f[23]=dwp.csa(s_dir,dir);f[24]=dwp.csa(s_dist,dist);
+		dwp.v0= n++; /*dwp.v1=label;*/ dwp.v2=prntL; dwp.v3=sP; dwp.cz4(); f[25]=dwp.csa(s_dir,dir); f[26]=dwp.csa(s_dist,dist);
+		dwp.v0= n++; /*dwp.v1=label;*/ dwp.v2=chldL; 	dwp.cz4(); f[27]=dwp.csa(s_dir,dir);f[28]=dwp.csa(s_dist,dist);
+
+
+		// clusters
+
+		d2lp.v1=label;
+		d2lp.v0= n++;	 d2lp.v2=prntLS; d2lp.v3=sblLS; d2lp.cz4(); f[29]=d2lp.csa(s_dir,dir);  
+		d2lp.v0= n++;	 d2lp.v2=chldLS; d2lp.v3=sblLS; d2lp.cz4(); f[30]=d2lp.csa(s_dir,dir); f[31]=d2lp.csa(s_dist,dist);  		
+		
+		d3lp.v1= label;
+		d3lp.v0= n++;    d3lp.v2=prntLS; d3lp.v3=chldLS; d3lp.v4=sblLS;d3lp.cz5(); f[32]=d3lp.csa(s_dir,dir);
+		
+		d2lp.v0= n++;	 d2lp.v2=prntLS; d2lp.v3=chldLS; d2lp.v4=sblF; d2lp.cz5(); f[33]=d2lp.csa(s_dir,dir); f[34]=d2lp.csa(s_dist,dist);  
+		d2lp.v0= n++;	 d2lp.v2=prntLS; d2lp.v3=sblLS; d2lp.v4=chldF; d2lp.cz5(); f[35]=d2lp.csa(s_dir,dir); f[36]=d2lp.csa(s_dist,dist);  
+		d2lp.v0= n++;	 d2lp.v2=chldLS; d2lp.v3=sblLS; d2lp.v4=prntF; d2lp.cz5(); f[37]=d2lp.csa(s_dir,dir); f[38]=d2lp.csa(s_dist,dist);  
+		
+		d2pp.v1=label;
+		d2pp.v0= n++;	 d2pp.v2=prntLS; d2pp.v3=chldLS; d2pp.v4=sP; d2pp.cz5(); f[39]=d2pp.csa(s_dir,dir); f[40]=d2pp.csa(s_dist,dist);  
+		d2pp.v0= n++;	 d2pp.v2=prntLS; d2pp.v3=sblLS; d2pp.v4=dP; d2pp.cz5(); f[41]=d2pp.csa(s_dir,dir); f[42]=d2pp.csa(s_dist,dist);  
+		d2pp.v0= n++;	 d2pp.v2=chldLS; d2pp.v3=sblLS; d2pp.v4=pP; d2pp.cz5(); f[43]=d2pp.csa(s_dir,dir); f[44]=d2pp.csa(s_dist,dist);  
+
+
+		int prntPm1 = prnt!=0 ? pos[prnt-1] : s_str;
+		int chldPm1 = d-1>=0 ? pos[d-1] : s_str;
+		int prntPp1 = prnt!=pos.length-1 ? pos[prnt+1] : s_end;
+		int chldPp1 = d!=pos.length-1 ? pos[d+1] : s_end;
+
+		// sibling part of speech minus and plus 1
+		int sblPm1 = sblng>0 ? pos[sblng-1]:s_str;
+		int sblPp1 = sblng<pos.length-1 ? pos[sblng + 1]:s_end; 
+
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sblPp1;dl1.v4=pP; dl1.cz5(); f[45]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sblPm1;dl1.v4=pP; dl1.cz5(); f[46]=dl1.csa(s_dir,dir);// f.add(li.l2i(l)); 
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=pP;dl1.v4=prntPp1;dl1.cz5(); f[47]=dl1.csa(s_dir,dir);// f.add(li.l2i(l)); 
+		dl1.v0=n++;	dl1.v2=sP; dl1.v3=pP;dl1.v4=prntPm1; dl1.cz5(); f[48]=dl1.csa(s_dir,dir);// f.add(li.l2i(l));
+		dl1.v0=n++;	dl1.v2=sP;  dl1.v3=sblPp1;dl1.v4=prntPm1;dl1.v5=pP; dl1.cz6(); f[49]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sblPm1; dl1.v3=sP;dl1.v4=prntPm1;dl1.v5=pP;dl1.cz6(); f[50]=dl1.csa(s_dir,dir);// f.add(li.l2i(l)); 
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sblPp1;dl1.v4=pP;dl1.v5=prntPp1; dl1.cz6(); f[51]=dl1.csa(s_dir,dir);// f.add(li.l2i(l)); 
+		dl1.v0=n++; dl1.v2=sblPm1; dl1.v3=sP; dl1.v4=pP;dl1.v5=prntPp1; dl1.cz6(); f[52]=dl1.csa(s_dir,dir);// f.add(li.l2i(l)); 
+		dl1.v0=n++;	dl1.v2=sP; dl1.v3=sblPp1;dl1.v4=dP; 	dl1.cz5(); f[53]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sblPm1;dl1.v4=dP; dl1.cz5(); f[54]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=dP;dl1.v4=chldPp1;dl1.cz5(); f[55]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=dP;dl1.v4=chldPm1; dl1.cz5(); f[56]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sP;  dl1.v3=sblPp1;dl1.v4=chldPm1;dl1.v5=dP; dl1.cz6(); f[57]=dl1.csa(s_dir,dir);// f.add(li.l2i(l)); 
+		dl1.v0=n++; dl1.v2=sblPm1; dl1.v3=sP;dl1.v4=chldPm1;dl1.v5=dP;dl1.cz6(); f[58]=dl1.csa(s_dir,dir);  
+		dl1.v0= n++;dl1.v2=sP; dl1.v3=sblPp1;dl1.v4=dP;dl1.v5=chldPp1;dl1.cz6();f[59]=dl1.csa(s_dir,dir);// f.add(li.l2i(l)); 
+		dl1.v0= n++;	dl1.v2=sblPm1; dl1.v3=sP;dl1.v4=dP;dl1.v5=chldPp1;dl1.cz6(); f[60]=dl1.csa(s_dir,dir);  
+
+		int c=61;
+
+		int pLSp1 = prnt != pos.length - 1 ? forms[prnt + 1]==-1?-1:cluster.getLP(forms[prnt + 1]): _cend;	
+		int	cLSp1 = d != pos.length - 1 ? forms[d + 1] ==-1?-1:cluster.getLP(forms[d + 1]):_cend;
+		int sLSp1 = sblng < pos.length -1 ? forms[sblng + 1] ==-1?-1:cluster.getLP(forms[sblng + 1]) : _cend; 
+
+		int pLSm1 = prnt!=0 ? forms[prnt - 1]==-1?-1:cluster.getLP(forms[prnt - 1]): _cstr;	
+		int	cLSm1 = d-1>=0 ? forms[d - 1] ==-1?-1:cluster.getLP(forms[d - 1]):_cstr;
+		int sLSm1 = sblng>0 ? forms[sblng - 1] ==-1?-1:cluster.getLP(forms[sblng - 1]):_cstr; 
+
+		//int c=61;
+
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sLSp1;dl1.v4=pP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);   
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sLSm1;dl1.v4=pP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=pP;dl1.v4=pLSp1;dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=pP;dl1.v4=pLSm1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++; dl1.v2=sP;  dl1.v3=sLSp1;dl1.v4=pLSm1;dl1.v5=pP; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sLSm1; dl1.v3=sP;dl1.v4=pLSm1;dl1.v5=pP; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sLSp1;dl1.v4=pP;dl1.v5=pLSp1; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++; dl1.v2=sLSm1; dl1.v3=sP; dl1.v4=pP;dl1.v5=pLSp1; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++;	dl1.v2=sP; dl1.v3=sLSp1;dl1.v4=dP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);   
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sLSm1;dl1.v4=dP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=dP;dl1.v4=cLSp1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++;dl1.v2=sP; dl1.v3=dP;dl1.v4=cLSm1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sP;  dl1.v3=sLSm1;dl1.v4=cLSm1;dl1.v5=dP; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sLSm1; dl1.v3=sP;dl1.v4=cLSm1;dl1.v5=dP;dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++;dl1.v2=sP; dl1.v3=sLSp1;dl1.v4=dP;dl1.v5=cLSp1;dl1.cz6();f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++;	dl1.v2=sLSm1; dl1.v3=sP;dl1.v4=dP;dl1.v5=cLSp1; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+
+
+
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sLSp1;dl1.v4=pP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sLSm1;dl1.v4=pP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=pP;dl1.v4=pLSp1;dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=pP;dl1.v4=pLSm1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0=n++; dl1.v2=sP;  dl1.v3=sLSp1;dl1.v4=pLSm1;dl1.v5=pP; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++; dl1.v2=sLSm1; dl1.v3=sP;dl1.v4=pLSm1;dl1.v5=pP; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sLSp1;dl1.v4=pP;dl1.v5=pLSp1; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0=n++; dl1.v2=sLSm1; dl1.v3=sP; dl1.v4=pP;dl1.v5=pLSp1; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0=n++;	dl1.v2=sP; dl1.v3=sLSp1;dl1.v4=dP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir);  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sLSm1;dl1.v4=dP; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=dP;dl1.v4=cLSp1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++;dl1.v2=sP; dl1.v3=dP;dl1.v4=cLSm1; dl1.cz5(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++; dl1.v2=sP;  dl1.v3=sLSm1;dl1.v4=cLSm1;dl1.v5=dP; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir); 
+		dl1.v0=n++; dl1.v2=sLSm1; dl1.v3=sP;dl1.v4=cLSm1;dl1.v5=dP;dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++;dl1.v2=sP; dl1.v3=sLSp1;dl1.v4=dP;dl1.v5=cLSp1;dl1.cz6();f[c++]=dl1.csa(s_dir,dir);
+		dl1.v0= n++;	dl1.v2=sLSm1; dl1.v3=sP;dl1.v4=dP;dl1.v5=cLSp1; dl1.cz6(); f[c++]=dl1.csa(s_dir,dir);
+
+		// take those in for stacking
+		
+		/*
+		short[] prel = is.plabels[i],phead=is.pheads[i];
+		
+		int g = prnt==phead[d]?1:2 ;
+		if (sblng>=0) g += prnt==phead[sblng]?4:8;
+		
+		int gr = sblng==-1?s_relend:prel[sblng];
+
+
+		dl2.v0= n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=sP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.csa(s_dir,dir); 
+		dl2.v0= n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.csa(s_dir,dir); 
+		dl2.v0= n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f[c++]=dl2.csa(s_dir,dir); 
+		
+		dl2.v0= n++;dl2.v2=gr;dl2.v3=g;dl2.v4=sP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.csa(s_dir,dir); 
+		dl2.v0= n++;dl2.v2=gr;dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.csa(s_dir,dir); 
+		dl2.v0= n++;dl2.v2=gr;dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f[c++]=dl2.csa(s_dir,dir); 
+*/
+
+		if (feats==null) return;
+
+		int cnt=c;
+
+		short[] featsP =feats[d]; 
+		short[] featsSbl =sblng!=-1?feats[sblng]:null; 
+
+		dlf.v0= n++;	dlf.v1=label; dlf.v2=sP; dlf.v3=dP;
+
+
+		cnt = extractFeat(f, cnt ,dir, featsP, featsSbl); 
+
+		featsP =feats[prnt]; 
+		featsSbl =sblng!=-1?feats[sblng]:null; 
+
+		dlf.v0= n++; dlf.v1=label; dlf.v2=pP; dlf.v3=sP;
+		if (featsP!=null && featsSbl!=null) {
+			for(short i1=0;i1<featsP.length;i1++) {
+				for(short i2=0;i2<featsSbl.length;i2++) {							
+					dlf.v4=featsP[i1]; dlf.v5=featsSbl[i2];
+					dlf.cz6(); f[cnt++]=dlf.csa(s_dir,prnt<sblng?1:2); 
+				}
+			} 
+		} else if (featsP==null && featsSbl!=null) {
+
+			for(short i2=0;i2<featsSbl.length;i2++) {							
+				dlf.v4=nofeat; dlf.v5=featsSbl[i2];
+				dlf.cz6(); f[cnt++]=dlf.csa(s_dir,dir); 
+			}
+
+		} else if (featsP!=null && featsSbl==null) {
+
+			for(short i1=0;i1<featsP.length;i1++) {							
+				dlf.v4=featsP[i1]; dlf.v5=nofeat;
+				dlf.cz6(); f[cnt++]=dlf.csa(s_dir,dir); 
+			}		
+		}
+		
+		return;
+	}
+
+	private int extractFeat(long[] f, int cnt, int dir, short[] featsP, short[] featsD) {
+		if (featsP!=null && featsD!=null) {
+			for(short i1=0;i1<featsP.length;i1++) {
+				for(short i2=0;i2<featsD.length;i2++) {							
+					dlf.v4=featsP[i1]; dlf.v5=featsD[i2];
+					dlf.cz6(); f[cnt++]=dlf.csa(s_dir,dir); 
+				}
+			} 
+		} else if (featsP==null && featsD!=null) {
+
+			for(short i2=0;i2<featsD.length;i2++) {							
+				dlf.v4=nofeat; dlf.v5=featsD[i2];
+				dlf.cz6(); f[cnt++]=dlf.csa(s_dir,dir); 
+
+			}		
+		} else if (featsP!=null && featsD==null) {
+
+			for(short i1=0;i1<featsP.length;i1++) {							
+				dlf.v4=featsP[i1]; dlf.v5=nofeat;
+				dlf.cz6(); f[cnt++]=dlf.csa(s_dir,dir); 
+
+			}		
+		}
+		return cnt;
+	}
+
+	
+	public FV encodeCat(Instances is, int ic, short pposs[], int forms[], int[] lemmas, short[] heads, short[] types, short feats[][], Cluster cluster, FV f) {
+
+
+		long[] svs = new long[250]; 
+
+		for (int i = 1; i < heads.length; i++) {
+
+
+			int n =basic(pposs, forms, heads[i], i, cluster, f);
+			
+			firstm(is, ic, heads[i],  i, types[i], cluster,svs);
+			for(int k=0;k<svs.length;k++) dl1.map(f,svs[k]);
+
+			int ch,cmi,cmo;
+			if (heads[i] < i) {
+				ch = rightmostRight(heads, heads[i], i);
+				cmi = leftmostLeft(heads, i, heads[i]);
+				cmo = rightmostRight(heads, i, heads.length);
+
+			} else {
+				ch = leftmostLeft(heads, heads[i], i);
+				cmi = rightmostRight(heads, i, heads[i]);
+				cmo = leftmostLeft(heads, i, 0);
+			}
+
+			siblingm(is,ic,pposs, forms,lemmas, feats, heads[i], i, ch,types[i], cluster, svs,n);
+			for(int k=0;k<svs.length;k++) dl1.map(f,svs[k]);
+
+
+			gcm(is, ic,heads[i],i,cmi, types[i], cluster,  svs);
+			for(int k=0;k<svs.length;k++) dl1.map(f,svs[k]);
+
+			gcm(is, ic, heads[i],i,cmo, types[i], cluster,  svs);
+			for(int k=0;k<svs.length;k++) dl1.map(f,svs[k]);
+		}
+
+		return f;
+	}
+
+
+	public  float encode3(short[] pos, short heads[] , short[] types, DataF d2) {
+
+		double v = 0;
+		for (int i = 1; i < heads.length; i++) {
+
+			int dir= (heads[i] < i)? 0:1;
+
+			v += d2.pl[heads[i]][i];
+			v += d2.lab[heads[i]][i][types[i]][dir];
+
+			boolean left = i<heads[i]; 
+			short[] labels = Edges.get(pos[heads[i]], pos[i], left);
+			int lid=-1;
+			for(int k=0;k<labels.length;k++)  if (types[i]== labels[k]) {lid= k;break;}
+
+			int ch,cmi,cmo;
+			if (heads[i] < i) {
+				ch = rightmostRight(heads, heads[i], i);
+				cmi = leftmostLeft(heads, i, heads[i]);
+				cmo = rightmostRight(heads, i, heads.length);
+
+				if (ch==-1) ch=heads[i];  
+				if (cmi==-1) cmi=heads[i];
+				if (cmo==-1) cmo=heads[i];
+
+			} else {
+				ch = leftmostLeft(heads, heads[i], i);
+				cmi = rightmostRight(heads, i, heads[i]);
+				cmo = leftmostLeft(heads, i, 0);
+
+				if (ch==-1) ch=i;
+				if (cmi==-1) cmi=i;
+				if (cmo==-1) cmo=i;
+			}
+			v += d2.sib[heads[i]][i][ch][dir][lid];
+			v += d2.gra[heads[i]][i][cmi][dir][lid];
+			v += d2.gra[heads[i]][i][cmo][dir][lid];
+		}
+		return (float)v;
+	}
+
+	/**
+	 * Provide the scores of the edges
+	 * @param pos
+	 * @param heads
+	 * @param types
+	 * @param edgesScores
+	 * @param d2
+	 * @return
+	 */
+	public static float encode3(short[] pos, short heads[] , short[] types, float[] edgesScores, DataF d2) {
+
+		double v = 0;
+		for (int i = 1; i < heads.length; i++) {
+
+			int dir= (heads[i] < i)? 0:1;
+
+			edgesScores[i] = d2.pl[heads[i]][i];
+			edgesScores[i] += d2.lab[heads[i]][i][types[i]][dir];
+
+			boolean left = i<heads[i]; 
+			short[] labels = Edges.get(pos[heads[i]], pos[i], left);
+			int lid=-1;
+			for(int k=0;k<labels.length;k++)  if (types[i]== labels[k]) {lid= k;break;}
+
+			int ch,cmi,cmo;
+			if (heads[i] < i) {
+				ch = rightmostRight(heads, heads[i], i);
+				cmi = leftmostLeft(heads, i, heads[i]);
+				cmo = rightmostRight(heads, i, heads.length);
+
+				if (ch==-1) ch=heads[i];  
+				if (cmi==-1) cmi=heads[i];
+				if (cmo==-1) cmo=heads[i];
+
+			} else {
+				ch = leftmostLeft(heads, heads[i], i);
+				cmi = rightmostRight(heads, i, heads[i]);
+				cmo = leftmostLeft(heads, i, 0);
+
+				if (ch==-1) ch=i;
+				if (cmi==-1) cmi=i;
+				if (cmo==-1) cmo=i;
+			}
+			edgesScores[i] += d2.sib[heads[i]][i][ch][dir][lid];
+			edgesScores[i] += d2.gra[heads[i]][i][cmi][dir][lid];
+			edgesScores[i] += d2.gra[heads[i]][i][cmo][dir][lid];
+			v+=edgesScores[i];
+		}
+		return (float)v;
+	}
+
+
+	private static int rightmostRight(short[] heads, int head, int max) {
+		int rightmost = -1;
+		for (int i = head + 1; i < max; i++) if (heads[i] == head) rightmost = i;
+
+		return rightmost;
+	}
+
+	private static int leftmostLeft(short[] heads, int head, int min) {
+		int leftmost = -1;
+		for (int i = head - 1; i > min; i--) if (heads[i] == head) leftmost = i;
+		return leftmost;
+	}
+
+	public static final String REL = "REL",END = "END",STR = "STR",LA = "LA",RA = "RA";
+
+	private static int ra,la;
+	private static int s_str;
+	private static int s_end, _cend,_cstr, s_stwrd,s_relend;
+
+	protected static final String TYPE = "TYPE",DIR = "D", FEAT="F";
+	public static final String POS = "POS";
+	protected static final String DIST = "DIST",MID = "MID";
+
+	private static final String _0 = "0",_4 = "4",_3 = "3", _2 = "2",_1 = "1",_5 = "5",_10 = "10";
+
+	private static  int di0, d4,d3,d2,d1,d5,d10;
+
+
+	private static final String WORD = "WORD",STWRD = "STWRD", STPOS = "STPOS";
+
+
+
+	private static int nofeat;
+
+
+	private static int maxForm;
+
+
+	/**
+	 * Initialize the features.
+	 * @param maxFeatures
+	 */
+	static public void initFeatures() {
+
+
+		MFB mf = new MFB();
+		mf.register(POS, MID);
+		s_str = mf.register(POS, STR);
+		s_end = mf.register(POS, END);
+
+		s_relend = mf.register(REL, END);
+
+		_cstr= mf.register(Cluster.SPATH,STR);
+		_cend=mf.register(Cluster.SPATH,END);
+
+
+		mf.register(TYPE, POS);
+
+		s_stwrd=mf.register(WORD,STWRD);
+		mf.register(POS,STPOS);
+
+		la = mf.register(DIR, LA);
+		ra = mf.register(DIR, RA);
+
+		//		mf.register(TYPE, CHAR);
+
+		mf.register(TYPE, FEAT);
+		nofeat=mf.register(FEAT, "NOFEAT");
+
+		for(int k=0;k<215;k++) mf.register(TYPE, "F"+k);
+
+
+		di0=mf.register(DIST, _0);
+		d1=mf.register(DIST, _1);
+		d2=mf.register(DIST, _2);
+		d3=mf.register(DIST, _3);
+		d4=mf.register(DIST, _4);
+		d5=mf.register(DIST, _5);
+		//		d5l=mf.register(DIST, _5l);
+		d10=mf.register(DIST, _10);
+
+
+	}
+
+	/* (non-Javadoc)
+	 * @see extractors.Extractor#getType()
+	 */
+	@Override
+	public int getType() {
+		return s_type;
+	}
+
+	/* (non-Javadoc)
+	 * @see extractors.Extractor#setMaxForm(java.lang.Integer)
+	 */
+	@Override
+	public void setMaxForm(int max) {
+		maxForm = max;
+	}
+
+	/* (non-Javadoc)
+	 * @see extractors.Extractor#getMaxForm()
+	 */
+	@Override
+	public int getMaxForm() {
+		return maxForm;
+	}
+
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/extractors/ExtractorFactory.java b/dependencyParser/basic/mate-tools/src/extractors/ExtractorFactory.java
new file mode 100644
index 0000000..9543111
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/extractors/ExtractorFactory.java
@@ -0,0 +1,44 @@
+/**
+ * 
+ */
+package extractors;
+
+import is2.data.Long2IntInterface;
+
+/**
+ * @author Dr. Bernd Bohnet, 29.04.2011
+ * 
+ * 
+ */
+public class ExtractorFactory {
+
+	public static final int StackedClustered = 4;
+	public static final int StackedClusteredR2 = 5;
+
+	
+	private int type=-1;
+	
+	/**
+	 * @param stackedClusteredR22
+	 */
+	public ExtractorFactory(int t) {
+		type=t;
+	}
+
+	/**
+	 * @param stackedClusteredR22
+	 * @param l2i
+	 * @return
+	 */
+	public Extractor getExtractor(Long2IntInterface l2i) {
+		switch(type)
+        {
+            case StackedClustered:
+                return new ExtractorClusterStacked(l2i);
+            case StackedClusteredR2:
+                return new ExtractorClusterStackedR2(l2i);
+        }
+		return null;
+	}
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/extractors/ExtractorReranker.java b/dependencyParser/basic/mate-tools/src/extractors/ExtractorReranker.java
new file mode 100644
index 0000000..2761f26
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/extractors/ExtractorReranker.java
@@ -0,0 +1,621 @@
+package extractors;
+
+
+import is2.data.Cluster;
+import is2.data.D4;
+import is2.data.Instances;
+import is2.data.Long2IntInterface;
+import is2.data.MFB;
+import is2.data.ParseNBest;
+import is2.util.DB;
+
+import java.util.Arrays;
+
+
+
+final public class ExtractorReranker {
+
+	public static int s_rel,s_word,s_type,s_dir,s_dist,s_feat,s_child,s_spath,s_lpath,s_pos;
+	public static int d0,d1,d2,d3,d4,d5,d10;
+	
+	MFB mf;
+
+	final D4 dl1,dl2, dwr,dr,dwwp,dw,dwp,dlf,d3lp, d2lp,d2pw,d2pp ;
+
+	public final Long2IntInterface li;
+
+	public ExtractorReranker(Long2IntInterface li) {
+		this.li=li;
+		dl1 = new D4(li);dl2 = new D4(li);
+		dwr = new D4(li);
+		dr = new D4(li);
+		dwwp = new D4(li);
+
+		dw = new D4(li);
+		dwp = new D4(li);
+
+		dlf = new D4(li);
+		d3lp = new D4(li); d2lp = new D4(li); d2pw = new D4(li); d2pp = new D4(li);
+
+	}
+
+	public static void initStat() {
+		DB.println("init called ");
+		MFB mf = new MFB();
+		s_rel = mf.getFeatureCounter().get(REL).intValue();;
+		s_pos = mf.getFeatureCounter().get(POS).intValue();       
+		s_word = mf.getFeatureCounter().get(WORD).intValue();
+		s_type = mf.getFeatureCounter().get(TYPE).intValue();//mf.getFeatureBits();
+		s_dir = mf.getFeatureCounter().get(DIR);
+		la = mf.getValue(DIR, LA);
+		ra = mf.getValue(DIR, RA);
+		s_dist = mf.getFeatureCounter().get(DIST);//mf.getFeatureBits(DIST);
+		s_feat = mf.getFeatureCounter().get(FEAT);//mf.getFeatureBits(Pipe.FEAT);
+		s_spath = mf.getFeatureCounter().get(Cluster.SPATH)==null?0:mf.getFeatureCounter().get(Cluster.SPATH);//mf.getFeatureBits(Cluster.SPATH);
+		s_lpath = mf.getFeatureCounter().get(Cluster.LPATH)==null?0:mf.getFeatureCounter().get(Cluster.LPATH);//mf.getFeatureBits(Cluster.LPATH);
+	}
+
+	public void init(){
+		mf = new MFB();
+
+		dl1.a0 = s_type;dl1.a1 = 3; dl1.a2 = s_pos;dl1.a3 = s_pos; dl1.a4 = s_pos; dl1.a5 = s_pos; dl1.a6 = s_pos; dl1.a7 = s_pos;	
+		dl2.a0 = s_type;dl2.a1 = 3;dl2.a2 = s_rel;dl2.a3 = s_rel;dl2.a4 = s_rel;dl2.a5 = s_rel;dl2.a6 = s_rel;dl2.a7 = s_rel;dl2.a8 = s_rel; dl2.a9 = s_rel;
+		dwp.a0 = s_type; 	dwp.a1 = 3; 	dwp.a2 = s_word; 	dwp.a3 = s_rel; 	dwp.a4 = s_rel; dwp.a5 = s_rel;dwp.a6 = s_rel;dwp.a7 = s_rel;
+		dwwp.a0 = s_type; dwwp.a1 = 3; dwwp.a2 = s_word; dwwp.a3 = s_word; dwwp.a4 = s_pos; dwwp.a5 = s_word;dwwp.a6 = s_pos;dwwp.a7 = s_pos;	
+	}
+
+
+	
+
+
+
+	public static final String REL = "REL",END = "END",STR = "STR",LA = "LA",RA = "RA", FEAT="F";
+
+	private static int ra,la;
+	private static int s_str;
+	private static int s_end, _cend,_cstr, s_stwrd,s_relend;
+
+	protected static final String TYPE = "TYPE",DIR = "D";
+	public static final String POS = "POS";
+	protected static final String DIST = "DIST",MID = "MID";
+
+	private static final String _0 = "0",_4 = "4",_3 = "3", _2 = "2",_1 = "1",_5 = "5",_10 = "10";
+
+	
+
+	private static final String WORD = "WORD",STWRD = "STWRD", STPOS = "STPOS";
+
+
+
+	private static int nofeat;
+
+
+	public static int maxForm;
+
+
+	final public static int _FC =60;
+
+
+	/**
+	 * Initialize the features.
+	 * @param maxFeatures
+	 */
+	static public void initFeatures() {
+
+
+		MFB mf = new MFB();
+		mf.register(POS, MID);
+		s_str = mf.register(POS, STR);
+		s_end = mf.register(POS, END);
+
+		s_relend = mf.register(REL, END);
+
+		_cstr= mf.register(Cluster.SPATH,STR);
+		_cend=mf.register(Cluster.SPATH,END);
+
+
+		mf.register(TYPE, POS);
+
+		s_stwrd=mf.register(WORD,STWRD);
+		mf.register(POS,STPOS);
+
+		la = mf.register(DIR, LA);
+		ra = mf.register(DIR, RA);
+
+		//		mf.register(TYPE, CHAR);
+
+		mf.register(TYPE, FEAT);
+		nofeat=mf.register(FEAT, "NOFEAT");
+
+		for(int k=0;k<60;k++) mf.register(TYPE, "F"+k);
+
+
+		d0 =mf.register(DIST, _0);
+		d1= mf.register(DIST, _1);
+		d2 =mf.register(DIST, _2);
+		d3= mf.register(DIST, _3);
+		d4= mf.register(DIST, _4);
+		d5= mf.register(DIST, _5);
+		//		d5l=mf.register(DIST, _5l);
+		d10= mf.register(DIST, _10);
+
+
+	}
+
+	/**
+	 * @param is
+	 * @param n
+	 * @param parseNBest
+	 * @param vs 
+	 */
+	public void extractFeatures3(Instances is, int i, ParseNBest parse, int rank, long[] v) {
+		
+		int f=1,n=0;		
+		
+		for(short k= 0; k<is.length(i)-1;k++) {
+			
+			short[] chld = children(parse.heads,k); 
+			
+			f=2;
+			
+			int fm = is.forms[i][k];
+			int hh = k!=0? is.pposs[i][parse.heads[k]]:s_end;
+			int h = is.pposs[i][k];
+			int hrel = parse.labels[k];
+			int hhrel = k!=0? parse.labels[parse.heads[k]]:s_relend;
+			int hhf = k!=0? is.forms[i][parse.heads[k]]:s_stwrd;
+
+
+			
+			int rlast = chld.length>0?parse.labels[chld[chld.length-1]]:s_relend;
+			
+			int [] rels = new int[chld.length];
+			int [] pss = new int[chld.length];
+			for(int j=0;j<chld.length;j++) {
+				rels[j] = parse.labels[chld[j]];
+				pss[j] = is.pposs[i][chld[j]];
+			}
+
+			StringBuilder rl = new StringBuilder(chld.length);
+			StringBuilder psl = new StringBuilder(chld.length);
+			for(int j=0;j<chld.length;j++) {
+				rl.append((char)rels[j]);
+				psl.append((char)pss[j]);
+			}
+		
+			int rli = mf.register("rli", rl.toString());
+			int pli = mf.register("pli", psl.toString());
+
+			dwwp.v0=f++; dwwp.v2=rli; dwwp.cz3(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.cz3(); v[n++]=dwwp.getVal();
+
+			dwwp.v0=f++; dwwp.v2=rli; dwwp.v3=h;dwwp.cz4(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=h;dwwp.cz4(); v[n++]=dwwp.getVal();
+			
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=hh; dwwp.v4=h; dwwp.cz5(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=rli; dwwp.v3=hh; dwwp.v4=h; dwwp.cz5(); v[n++]=dwwp.getVal();
+			
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=rli; dwwp.v4=h; dwwp.cz5(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=fm;  dwwp.v3=rli; dwwp.v4=h; dwwp.cz5(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=fm;  dwwp.v4=h; dwwp.cz5(); v[n++]=dwwp.getVal();
+				
+			
+
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=rli; dwwp.v4=hh; dwwp.cz5(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=rli; dwwp.v4=hh; dwwp.v5=h; dwwp.cz6(); v[n++]=dwwp.getVal();
+
+			dwp.v0= f++; dwp.v2=rli;   dwp.v3=hrel;dwp.v4=hh; dwp.v5=h;  dwp.cz6(); v[n++]=dwp.getVal(); 			
+
+			Arrays.sort(rels);
+			Arrays.sort(pss);
+
+			rl = new StringBuilder(chld.length);
+			psl = new StringBuilder(chld.length);
+			for(int j=0;j<chld.length;j++) {
+				rl.append((char)rels[j]);
+				psl.append((char)pss[j]);
+			}
+			rli = mf.register("rli", rl.toString());
+			pli = mf.register("pli", psl.toString());
+
+			
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=rli; dwwp.v4=h; dwwp.cz5(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=fm;  dwwp.v3=rli;  dwwp.v4=h; dwwp.cz5(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=fm;  dwwp.v4=h; dwwp.cz5(); v[n++]=dwwp.getVal();
+
+			dwwp.v0=f++; dwwp.v2=rli; dwwp.v3=h;dwwp.cz4(); v[n++]=dwwp.getVal();
+	
+			dl1.v0= f++; dl1.v2=h;     dl1.v3=hrel; dl1.v4=hhrel;dl1.v5=hh; dl1.v6=rlast; dl1.cz6(); v[n++]=dl1.getVal(); 	
+			dwp.v0= f++; dwp.v2=fm;    dwp.v3=hrel; dwp.v4=hh; dwp.cz5(); v[n++]=dwp.getVal(); 			
+			dwp.v0= f++; dwp.v2=hhf;   dwp.v3=hrel; dwp.v4=hh; dwp.v5=h;  dwp.cz6(); v[n++]=dwp.getVal();  			
+
+			dwwp.v0=f++; dwwp.v2=fm; dwwp.v3=hhf; dwwp.v4=hrel; dwwp.v5=hhrel; dwwp.cz6(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=h;  dwwp.v3=hhf; dwwp.v4=hrel; dwwp.v5=hhrel; dwwp.cz6(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=fm; dwwp.v3=hh;  dwwp.v4=hrel; dwwp.v5=hhrel; dwwp.cz6(); v[n++]=dwwp.getVal();
+
+			dwwp.v0=f++; dwwp.v2=fm; dwwp.v3=hhf; dwwp.v4=h; dwwp.v5=hh; dwwp.cz6(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=h;  dwwp.v3=hhf; dwwp.v4=hrel; dwwp.v5=hh; dwwp.cz6(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=fm; dwwp.v3=hh;  dwwp.v4=h; dwwp.v5=hrel; dwwp.cz6(); v[n++]=dwwp.getVal();
+
+			
+	//		dl1.v0= f++; dl1.v2=h;dl1.v3=hrel; dl1.v4=hhrel;dl1.v5=hh; dl1.v6=hhhrel;dl1.v7=hhh; dl1.v8=rlast; dl1.cz9(); v[n++]=dl1.getVal(); 
+//			dl1.v0= f++; dl1.v2=h;dl1.v3=hrel; dl1.v4=hhrel;dl1.v5=hh; dl1.v6=hhhrel;dl1.v7=hhh; dl1.v8=rlast; dl1.cz9(); v[n++]=dl1.getVal(); 
+		//	dl1.v0= f++; dl1.v2=h;dl1.v3=hrel; dl1.v4=dir;dl1.v5=hh; dl1.v6=hhh;dl1.v7=rlast; dl1.v8=r1; dl1.cz9(); v[n++]=dl1.getVal();
+		//	dl1.v0= f++; dl1.v2=h;dl1.v3=hh; dl1.v4=hhh;dl1.v5=hrel; dl1.cz6(); v[n++]=dl1.getVal();
+			
+			
+			short hp = parse.heads[k];
+			short[] hchld = hp==-1?new short[0]:children(parse.heads,hp); 
+
+			int [] hrels = new int[hchld.length];
+			int [] hpss = new int[hchld.length];
+			for(int j=0;j<hchld.length;j++) {
+				hrels[j] = parse.labels[hchld[j]];
+				hpss[j] = is.pposs[i][hchld[j]];
+			}
+	
+			
+			StringBuilder hrl = new StringBuilder(hchld.length);
+			StringBuilder hpsl = new StringBuilder(hchld.length);
+			for(int j=0;j<hchld.length;j++) {
+				hrl.append((char)hrels[j]);
+				hpsl.append((char)hpss[j]);
+			}
+			int hrli = mf.register("rli", hrl.toString());
+			int hpli = mf.register("pli", hpsl.toString());
+
+			dwwp.v0=f++; dwwp.v2=hpli; dwwp.v3=hrli;  dwwp.cz4(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=fm;  dwwp.v3=hrli;   dwwp.cz4(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=hpli; dwwp.v3=fm;   dwwp.cz4(); v[n++]=dwwp.getVal();
+			
+			dwwp.v0=f++; dwwp.v2=hpli; dwwp.v3=rli; dwwp.v4=hrel;dwwp.v5=h;  dwwp.cz5(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=pli;  dwwp.v3=hrli;dwwp.v4=hrel;dwwp.v5=h;   dwwp.cz5(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=hpli; dwwp.v3=hpli;dwwp.v4=hrel;dwwp.v5=h;   dwwp.cz5(); v[n++]=dwwp.getVal();
+
+			
+			
+		}
+		
+		v[n]=Integer.MIN_VALUE;
+	}
+
+	/**
+	 * This works seem works well with n-best n=8 (88.858074)  , n=10 (88.836884), n=12 (88.858)
+	 * n=14 (88.913417)  n=16 (88.79546) n=20 (88.80621) n 50 (88.729364)
+	 * 1-best: 88.749605
+	 * 
+	 * @param is
+	 * @param i
+	 * @param parse
+	 * @param rank
+	 * @param v
+	 * @param cluster 
+	 */
+	public void extractFeatures(Instances is, int i, ParseNBest parse, int rank, long[] v, Cluster cluster) {
+		
+		// mf.getValue(REL, "SB");
+		
+		int f=1,n=0;		
+		
+		for(short k= 0; k<is.length(i)-1;k++) {
+			
+			short[] chld = children(parse.heads,k); 
+			
+			int abs = Math.abs(parse.heads[k]-k);
+			final int dist;
+			if (abs > 10)dist=d10;else if (abs>5) dist=d5;else if( abs==5)dist=d4;else if (abs==4)dist=d3;else if (abs==3)dist=d2;
+			else if (abs==2)dist=d1; else  dist=d0;
+
+			
+			f=2;
+			
+			int fm = is.forms[i][k];
+			int hh = k!=0? is.pposs[i][parse.heads[k]]:s_end;
+			int h = is.pposs[i][k];
+			int hrel = parse.labels[k];//is.labels[i][k];
+			int hhrel = k!=0? parse.labels[parse.heads[k]]:s_relend;
+			int hhf = k!=0? is.forms[i][parse.heads[k]]:s_stwrd;
+			
+			int r1 = chld.length>0?parse.labels[chld[0]]:s_relend;
+			int rlast = chld.length>0?parse.labels[chld[chld.length-1]]:s_relend;
+			
+			int [] rels = new int[chld.length];
+			int [] pss = new int[chld.length];
+			int [] cls = new int[chld.length];
+			
+			int[] rc = new int[30]; // 20 was a good length
+			
+			for(int j=0;j<chld.length;j++) {
+				rels[j] = parse.labels[chld[j]];
+				if (rels[j]<rc.length) rc[rels[j]]++;
+				pss[j] = is.pposs[i][chld[j]];
+//				cls[j] = is.forms[i][chld[j]]==-1?0:cluster.getLP(is.forms[i][chld[j]]);
+//				cls[j] = cls[j]==-1?0:cls[j];
+			}
+
+			StringBuilder rl = new StringBuilder(chld.length);
+			StringBuilder psl = new StringBuilder(chld.length);
+			StringBuilder csl = new StringBuilder(chld.length);
+			for(int j=0;j<chld.length;j++) {
+				rl.append((char)rels[j]);
+				psl.append((char)pss[j]);
+//				csl.append((char)cls[j]);
+			}
+		
+			int rli = mf.register("rli", rl.toString());
+			int pli = mf.register("pli", psl.toString());
+//			int cli = mf.register("cli", csl.toString());
+			
+			
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=rli; dwwp.v4=h; dwwp.cz5(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=fm;  dwwp.v3=rli;  dwwp.v4=h; dwwp.cz5(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=fm;  dwwp.v4=h; dwwp.cz5(); v[n++]=dwwp.getVal();
+		//	dwwp.v0=f++; dwwp.v2=cli; dwwp.v3=fm;  dwwp.v4=h; dwwp.cz5(); v[n++]=dwwp.getVal();
+				
+			dwwp.v0=f++; dwwp.v2=rli; dwwp.cz3(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.cz3(); v[n++]=dwwp.getVal();
+			//dwwp.v0=f++; dwwp.v2=cli; dwwp.cz3(); v[n++]=dwwp.getVal();
+
+		//	dwwp.v0=f++; dwwp.v2=cli;dwwp.v3=h; dwwp.cz4(); v[n++]=dwwp.getVal();
+
+			for(int j=1;j<rc.length;j++) {
+				dwwp.v0=f++; dwwp.v2=rc[j]==0?1:rc[j]==1?2:3; dwwp.v3=j;  dwwp.cz4(); v[n++]=dwwp.getVal();//
+			}
+		
+			dwwp.v0=f++; dwwp.v2=rli; dwwp.v3=h;dwwp.cz4(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=h;dwwp.cz4(); v[n++]=dwwp.getVal();
+			
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=hh; dwwp.v4=h; dwwp.cz5(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=rli; dwwp.v3=hh; dwwp.v4=h; dwwp.cz5(); v[n++]=dwwp.getVal();
+
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=rli; dwwp.v4=hh; dwwp.cz5(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=rli; dwwp.v4=hh; dwwp.v5=h; dwwp.cz6(); v[n++]=dwwp.getVal();
+
+			dwp.v0= f++; dwp.v2=rli;   dwp.v3=hrel;dwp.v4=hh; dwp.v5=h;  dwp.cz6(); v[n++]=dwp.getVal(); 			
+
+			//dwwp.v0=f++; dwwp.v2=h; dwwp.v3=hh; dwwp.v4=dist; dwwp.cz5(); v[n++]=dwwp.getVal();
+			
+			Arrays.sort(rels);
+			Arrays.sort(pss);
+
+			rl = new StringBuilder(chld.length);
+			psl = new StringBuilder(chld.length);
+			for(int j=0;j<chld.length;j++) {
+				rl.append((char)rels[j]);
+				psl.append((char)pss[j]);
+			}
+			rli = mf.register("rli", rl.toString());
+			pli = mf.register("pli", psl.toString());
+
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=rli; dwwp.v4=1; dwwp.v5=h; dwwp.cz6(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=fm; dwwp.v3=rli; dwwp.v4=1; dwwp.v5=h; dwwp.cz6(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=fm; dwwp.v4=1; dwwp.v5=h; dwwp.cz6(); v[n++]=dwwp.getVal();
+
+			dwwp.v0=f++; dwwp.v2=rli; dwwp.v3=h;dwwp.cz4(); v[n++]=dwwp.getVal();
+	
+			dl1.v0= f++; dl1.v2=h;     dl1.v3=hrel; dl1.v4=hhrel;dl1.v5=hh; dl1.v6=rlast; dl1.cz6(); v[n++]=dl1.getVal(); 	
+			dwp.v0= f++; dwp.v2=fm;    dwp.v3=hrel; dwp.v4=hh; dwp.cz5(); v[n++]=dwp.getVal(); 			
+			dwp.v0= f++; dwp.v2=hhf;   dwp.v3=hrel;dwp.v4=hh; dwp.v5=h;  dwp.cz6(); v[n++]=dwp.getVal(); 			
+		}
+		
+		v[n]=Integer.MIN_VALUE;
+	}
+	
+	/**
+
+	 * Works well! 
+	 * @param is
+	 * @param i
+	 * @param parse
+	 * @param rank
+	 * @param v
+	 */
+	public void extractFeatures6(Instances is, int i, ParseNBest parse, int rank, long[] v) {
+		
+		// mf.getValue(REL, "SB");
+		
+		int f=1,n=0;		
+		
+		for(short k= 0; k<is.length(i)-1;k++) {
+			
+			short[] chld = children(parse.heads,k); 
+			
+			f=2;
+			
+			int fm = is.forms[i][k];
+			int hh = k!=0? is.pposs[i][parse.heads[k]]:s_end;
+			int h = is.pposs[i][k];
+			int hrel = parse.labels[k];//is.labels[i][k];
+			int hhrel = k!=0? parse.labels[parse.heads[k]]:s_relend;
+			int hhf = k!=0? is.forms[i][parse.heads[k]]:s_stwrd;
+			
+			int r1 = chld.length>0?parse.labels[chld[0]]:s_relend;
+			int rlast = chld.length>0?parse.labels[chld[chld.length-1]]:s_relend;
+			
+			int [] rels = new int[chld.length];
+			int [] pss = new int[chld.length];
+			
+			int[] rc = new int[30]; // 20 was a good length
+			
+			for(int j=0;j<chld.length;j++) {
+				rels[j] = parse.labels[chld[j]];
+				if (rels[j]<rc.length) rc[rels[j]]++;
+			//	if (rels[j]==sb) numSB++;
+				pss[j] = is.pposs[i][chld[j]];
+			}
+
+			StringBuilder rl = new StringBuilder(chld.length);
+			StringBuilder psl = new StringBuilder(chld.length);
+			for(int j=0;j<chld.length;j++) {
+				rl.append((char)rels[j]);
+				psl.append((char)pss[j]);
+			}
+		
+			int rli = mf.register("rli", rl.toString());
+			int pli = mf.register("pli", psl.toString());
+			
+			
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=rli; dwwp.v4=h; dwwp.cz5(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=fm;  dwwp.v3=rli;  dwwp.v4=h; dwwp.cz5(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=fm;  dwwp.v4=h; dwwp.cz5(); v[n++]=dwwp.getVal();
+				
+			dwwp.v0=f++; dwwp.v2=rli; dwwp.cz3(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.cz3(); v[n++]=dwwp.getVal();
+
+			for(int j=1;j<rc.length;j++) {
+				dwwp.v0=f++; dwwp.v2=rc[j]==0?1:rc[j]==1?2:3; dwwp.v3=j;  dwwp.cz4(); v[n++]=dwwp.getVal();//
+			}
+			
+			dwwp.v0=f++; dwwp.v2=rli; dwwp.v3=h;dwwp.cz4(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=h;dwwp.cz4(); v[n++]=dwwp.getVal();
+			
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=hh; dwwp.v4=h; dwwp.cz5(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=rli; dwwp.v3=hh; dwwp.v4=h; dwwp.cz5(); v[n++]=dwwp.getVal();
+
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=rli; dwwp.v4=hh; dwwp.cz5(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=rli; dwwp.v4=hh; dwwp.v5=h; dwwp.cz6(); v[n++]=dwwp.getVal();
+
+			dwp.v0= f++; dwp.v2=rli;   dwp.v3=hrel;dwp.v4=hh; dwp.v5=h;  dwp.cz6(); v[n++]=dwp.getVal(); 			
+
+
+			Arrays.sort(rels);
+			Arrays.sort(pss);
+
+			rl = new StringBuilder(chld.length);
+			psl = new StringBuilder(chld.length);
+			for(int j=0;j<chld.length;j++) {
+				rl.append((char)rels[j]);
+				psl.append((char)pss[j]);
+			}
+			rli = mf.register("rli", rl.toString());
+			pli = mf.register("pli", psl.toString());
+
+			
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=rli; dwwp.v4=1; dwwp.v5=h; dwwp.cz6(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=fm; dwwp.v3=rli; dwwp.v4=1; dwwp.v5=h; dwwp.cz6(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=fm; dwwp.v4=1; dwwp.v5=h; dwwp.cz6(); v[n++]=dwwp.getVal();
+
+			dwwp.v0=f++; dwwp.v2=rli; dwwp.v3=h;dwwp.cz4(); v[n++]=dwwp.getVal();
+	
+			dl1.v0= f++; dl1.v2=h;     dl1.v3=hrel; dl1.v4=hhrel;dl1.v5=hh; dl1.v6=rlast; dl1.cz6(); v[n++]=dl1.getVal(); 	
+			dwp.v0= f++; dwp.v2=fm; dwp.v3=hrel; dwp.v4=hh; dwp.cz5(); v[n++]=dwp.getVal(); 			
+			dwp.v0= f++; dwp.v2=hhf;   dwp.v3=hrel;dwp.v4=hh; dwp.v5=h;  dwp.cz6(); v[n++]=dwp.getVal(); 			
+
+		}
+		
+		v[n]=Integer.MIN_VALUE;
+	}
+
+	
+	
+	public void extractFeatures2(Instances is, int i, ParseNBest parse, int rank, long[] v) {
+		
+	
+		
+		int f=1,n=0;		
+		
+		for(short k= 0; k<is.length(i)-1;k++) {
+			
+			short[] chld = children(parse.heads,k); 
+			
+			f=2;
+			
+			int fm = is.forms[i][k];
+			int hh = k!=0? is.pposs[i][parse.heads[k]]:s_end;
+			int h = is.pposs[i][k];
+			int hrel = parse.labels[k];//is.labels[i][k];
+			int hhrel = k!=0? parse.labels[parse.heads[k]]:s_relend;
+			int hhf = k!=0? is.forms[i][parse.heads[k]]:s_stwrd;
+			
+			int r1 = chld.length>0?parse.labels[chld[0]]:s_relend;
+			int rlast = chld.length>0?parse.labels[chld[chld.length-1]]:s_relend;
+			
+			int [] rels = new int[chld.length];
+			int [] pss = new int[chld.length];
+			
+			
+			
+			for(int j=0;j<chld.length;j++) {
+				rels[j] = parse.labels[chld[j]];
+				pss[j] = is.pposs[i][chld[j]];
+			}
+
+			StringBuilder rl = new StringBuilder(chld.length);
+			StringBuilder psl = new StringBuilder(chld.length);
+			for(int j=0;j<chld.length;j++) {
+				rl.append((char)rels[j]);
+				psl.append((char)pss[j]);
+			}
+		
+			int rli = mf.register("rli", rl.toString());
+			int pli = mf.register("pli", psl.toString());
+			
+			
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=rli; dwwp.v4=h; dwwp.cz5(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=fm;  dwwp.v3=rli;  dwwp.v4=h; dwwp.cz5(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=fm;  dwwp.v4=h; dwwp.cz5(); v[n++]=dwwp.getVal();
+				
+			dwwp.v0=f++; dwwp.v2=rli; dwwp.cz3(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.cz3(); v[n++]=dwwp.getVal();
+
+			dwwp.v0=f++; dwwp.v2=rli; dwwp.v3=h;dwwp.cz4(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=h;dwwp.cz4(); v[n++]=dwwp.getVal();
+			
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=hh; dwwp.v4=h; dwwp.cz5(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=rli; dwwp.v3=hh; dwwp.v4=h; dwwp.cz5(); v[n++]=dwwp.getVal();
+
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=rli; dwwp.v4=hh; dwwp.cz5(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=rli; dwwp.v4=hh; dwwp.v5=h; dwwp.cz6(); v[n++]=dwwp.getVal();
+
+			dwp.v0= f++; dwp.v2=rli;   dwp.v3=hrel;dwp.v4=hh; dwp.v5=h;  dwp.cz6(); v[n++]=dwp.getVal(); 			
+
+
+			Arrays.sort(rels);
+			Arrays.sort(pss);
+
+			rl = new StringBuilder(chld.length);
+			psl = new StringBuilder(chld.length);
+			for(int j=0;j<chld.length;j++) {
+				rl.append((char)rels[j]);
+				psl.append((char)pss[j]);
+			}
+			rli = mf.register("rli", rl.toString());
+			pli = mf.register("pli", psl.toString());
+
+			
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=rli; dwwp.v4=1; dwwp.v5=h; dwwp.cz6(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=fm; dwwp.v3=rli; dwwp.v4=1; dwwp.v5=h; dwwp.cz6(); v[n++]=dwwp.getVal();
+			dwwp.v0=f++; dwwp.v2=pli; dwwp.v3=fm; dwwp.v4=1; dwwp.v5=h; dwwp.cz6(); v[n++]=dwwp.getVal();
+
+			dwwp.v0=f++; dwwp.v2=rli; dwwp.v3=h;dwwp.cz4(); v[n++]=dwwp.getVal();
+	
+			dl1.v0= f++; dl1.v2=h;     dl1.v3=hrel; dl1.v4=hhrel;dl1.v5=hh; dl1.v6=rlast; dl1.cz6(); v[n++]=dl1.getVal(); 	
+			dwp.v0= f++; dwp.v2=fm; dwp.v3=hrel; dwp.v4=hh; dwp.cz5(); v[n++]=dwp.getVal(); 			
+			dwp.v0= f++; dwp.v2=hhf;   dwp.v3=hrel;dwp.v4=hh; dwp.v5=h;  dwp.cz6(); v[n++]=dwp.getVal(); 			
+
+		}
+		
+		v[n]=Integer.MIN_VALUE;
+	}
+
+
+	
+	/**
+	 * @param parse
+	 * @param k
+	 * @return
+	 */
+	private short[] children(short[] heads, short h) {
+		
+		int c=0;
+		for(int k=0;k<heads.length;k++) if (heads[k] ==h ) c++; 
+		
+		short[] clds = new short[c];
+		c=0;
+		for(int k=0;k<heads.length;k++) if (heads[k] ==h ) clds[c++]=(short)k; 
+		return clds;
+	}
+
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/extractors/ParallelExtract.java b/dependencyParser/basic/mate-tools/src/extractors/ParallelExtract.java
new file mode 100755
index 0000000..a2ef72c
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/extractors/ParallelExtract.java
@@ -0,0 +1,194 @@
+package extractors;
+
+import is2.data.Cluster;
+import is2.data.DataF;
+import is2.data.Edges;
+import is2.data.F2SF;
+import is2.data.FV;
+import is2.data.Instances;
+import is2.data.Long2IntInterface;
+
+import java.util.ArrayList;
+import java.util.concurrent.Callable;
+
+
+/**
+ * @author Bernd Bohnet, 30.08.2009
+ * 
+ * This class implements a parallel feature extractor.
+ */
+final public class ParallelExtract implements Callable<Object> 
+{
+	// the data space of the weights for a dependency tree  
+	final DataF d;
+
+	// the data extractor does the actual work
+	final Extractor extractor;
+
+	private Instances is;
+	private int i;
+
+	private F2SF para;
+	
+	private Cluster cluster;
+	
+	private Long2IntInterface li;
+	
+	public ParallelExtract(Extractor e, Instances is, int i, DataF d,  F2SF para,Cluster cluster, Long2IntInterface li) {
+
+		this.is =is;
+		extractor=e;
+		this.d =d;
+		this.i=i;
+		this.para=para;
+		this.cluster = cluster;
+		this.li=li;
+	}
+
+
+	public static class DSet {
+		int w1,w2;
+	}
+	
+	public Object call() {
+
+		try {
+		
+		F2SF f= para;
+		
+		
+		short[] pos=is.pposs[i];
+		int[] forms=is.forms[i];
+		int[] lemmas=is.plemmas[i];
+		short[][] feats=is.feats[i];
+		int length = pos.length;
+		
+		long[] svs = new long[250]; 
+
+		int type=extractor.getType();
+		
+		while (true) {
+
+			DSet set = get();
+			if (set ==null) break;
+
+			int w1=set.w1;
+			int w2=set.w2;
+
+			f.clear();
+			int n =extractor.basic(pos, forms, w1, w2,cluster, f);
+			d.pl[w1][w2]=f.getScoreF();
+
+			short[] labels = Edges.get(pos[w1], pos[w2],false);
+			float[][] lab = d.lab[w1][w2];
+
+			extractor.firstm(is, i, w1, w2, 0, cluster, svs);
+
+			if (labels!=null) {
+
+				
+				for (int l = labels.length - 1; l >= 0; l--) {
+
+					short label = labels[l];
+	
+					f.clear();
+					for(int k=svs.length-1;k>=0;k--) if (svs[k]>0) f.add(li.l2i(svs[k]+label*type));
+					lab[label][0]=f.getScoreF();
+				}
+			}
+
+			labels = Edges.get(pos[w1], pos[w2],true);
+
+			if (labels!=null)  {
+	
+				for (int l = labels.length - 1; l >= 0; l--) {
+
+					int label = labels[l];
+					f.clear();
+					for(int k=svs.length-1;k>=0;k--) if (svs[k]>0) f.add(li.l2i(svs[k]+label*type));	
+					lab[label][1]=f.getScoreF();
+				}
+			}
+
+			int s = w1<w2 ? w1 : w2;
+			int e = w1<w2 ? w2 : w1;
+
+			int sg = w1<w2 ? w1 : 0;
+			int eg = w1<w2 ? length : w1+1;
+
+		
+			 for(int m=s;m<e;m++) {
+				for(int dir=0;dir<2;dir++) {				
+					labels = Edges.get(pos[w1], pos[w2],dir==1);
+					float lab2[]= new float[labels.length];
+
+					int g = (m==s||e==m) ? -1 : m;
+					
+				
+					extractor.siblingm(is,i,pos,forms,lemmas,feats, w1, w2, g, 0, cluster, svs,n);
+								
+					for (int l = labels.length - 1; l >= 0; l--) {
+
+						int label = labels[l];
+						f.clear();
+						
+						for(int k=svs.length-1;k>=0;k--) {
+							if (svs[k]>0) f.add(li.l2i(svs[k]+label*type));
+						}				
+						lab2[l] = (float)f.score;//f.getScoreF();
+					}
+					d.sib[w1][w2][m][dir]=lab2;
+				}
+			}
+		
+			 for(int m=sg;m<eg;m++) {
+				for(int dir=0;dir<2;dir++) {				
+					labels = Edges.get(pos[w1], pos[w2],dir==1);
+					float[] lab2 = new float[labels.length];
+
+					int g = (m==s||e==m) ? -1 : m;
+					
+					extractor.gcm(is, i, w1,w2,g, 0, cluster, svs);
+					
+					for (int l = labels.length - 1; l >= 0; l--) {
+
+						int label = labels[l];
+
+						f.clear();
+						for(int k=svs.length-1;k>=0;k--) {
+							if (svs[k]>0) f.add(li.l2i(svs[k]+label*type));
+						}
+						lab2[l] = f.getScoreF();
+					}
+					d.gra[w1][w2][m][dir] =lab2;
+				}
+			}
+
+		}
+		} catch(Exception e ) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+	
+	static ArrayList<DSet> sets = new ArrayList<DSet>();
+	
+	private DSet  get() {
+	
+		synchronized (sets) {
+			if (sets.size()==0) return null;		
+			return sets.remove(sets.size()-1);
+		}
+	}
+	static public void add(int w1, int w2){
+		DSet ds =new DSet();
+		ds.w1=w1;
+		ds.w2=w2;
+		sets.add(ds);
+	}
+	
+		
+		
+		
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/Closed.java b/dependencyParser/basic/mate-tools/src/is2/data/Closed.java
new file mode 100755
index 0000000..378d0c6
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/Closed.java
@@ -0,0 +1,31 @@
+package is2.data;
+
+
+
+final public class Closed  {
+
+	public double p;
+	short b,e,m;
+	byte dir;
+	
+	Closed d;
+	Open u;
+
+	public Closed(short s, short t, int m, int dir,Open u, Closed d, float score) {
+		this.b = s;
+		this.e = t;
+		this.m = (short)m;
+		this.dir = (byte)dir;
+		this.u=u;
+		this.d =d;
+		p=score;
+	}
+
+
+	public void create(Parse parse) {
+		if (u != null) u.create(parse);
+		if (d != null) d.create(parse);
+	}
+}
+
+
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/Cluster.java b/dependencyParser/basic/mate-tools/src/is2/data/Cluster.java
new file mode 100644
index 0000000..485713d
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/Cluster.java
@@ -0,0 +1,158 @@
+/**
+ * 
+ */
+package is2.data;
+
+
+
+import is2.util.DB;
+
+import java.io.BufferedReader;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+/**
+ * @author Dr. Bernd Bohnet, 28.10.2010
+ * 
+ * 
+ */
+final public class Cluster {
+
+	public static final String LPATH = "LP";
+	public static final String SPATH = "SP";
+
+	// [word][p]  p = [0:long-path | 1:short-path]  
+	final private short[][] word2path; 
+	
+	public Cluster() {
+		word2path =new short[0][0];
+	}
+	
+	/**
+	 * @param clusterFile
+	 * @param mf
+	 * 
+	 */
+	public Cluster(String clusterFile, IEncoderPlus mf, int ls) {
+
+		final String REGEX = "\t";
+
+		// register words
+		try {
+			BufferedReader	inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(clusterFile),"UTF-8"),32768);
+
+			int cnt=0;
+			String line;
+			while ((line =inputReader.readLine())!=null) {
+
+				cnt++;
+				try {
+				String[] split = line.split(REGEX); 
+				mf.register(SPATH, split[0].length()<ls?split[0]:split[0].substring(0,ls));
+				mf.register(LPATH, split[0]);
+				mf.register(PipeGen.WORD, split[1]);
+				} catch(Exception e) {
+					System.out.println("Error in cluster line "+cnt+" error: "+e.getMessage());
+				}
+			}
+			System.out.println("read number of clusters "+cnt);
+			inputReader.close();
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+			
+		word2path = new short[mf.getFeatureCounter().get(PipeGen.WORD)][2];
+
+		
+		// insert words
+		try {
+			String line;
+			BufferedReader	inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(clusterFile),"UTF-8"),32768);
+
+			while ((line =inputReader.readLine())!=null) {
+
+				String[] split = line.split(REGEX);
+				int wd = mf.getValue(PipeGen.WORD, split[1]);
+				word2path[wd][0] = (short)mf.getValue(SPATH, split[0].length()<ls?split[0]:split[0].substring(0,ls));
+				word2path[wd][1] = (short)mf.getValue(LPATH, split[0]);
+			}
+			inputReader.close();
+			int fill=0;
+			for(int l = 0; l<word2path.length; l++ ){
+				if (word2path[l][0]!=0) fill++;
+			}
+			/*
+			for(int l = 0; l<word2path.length; l++ ){
+				if (word2path[l][1]!=0) fillL++;
+				if (word2path[l][1]<-1) System.out.println("lower "+word2path[l][1]);
+			} 
+			*/
+			System.out.println("filled "+fill+" of "+word2path.length);
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * Read the cluster
+	 * @param dos
+	 * @throws IOException 
+	 */
+	public Cluster(DataInputStream dis) throws IOException {
+
+		word2path = new short[dis.readInt()][2];
+		for(int i =0;i<word2path.length;i++) {
+			word2path[i][0]=dis.readShort();
+			word2path[i][1]=dis.readShort();
+		}
+		DB.println("Read cluster with "+word2path.length+" words ");
+	}
+	
+	/**
+	 * Write the cluster
+	 * @param dos
+	 * @throws IOException 
+	 */
+	public void write(DataOutputStream dos) throws IOException {
+
+		dos.writeInt(word2path.length);
+		for(short[] i : word2path) {
+			dos.writeShort(i[0]);
+			dos.writeShort(i[1]);
+		}
+	
+	}
+
+	/**
+	 * @param form the id of a word form
+	 * @return the short path to the word form in the cluster
+	
+	final public int getSP(int form) {
+		if (word2path.length<form) return -1;
+		return word2path[form][0];
+	}
+ */
+	/**
+	 * get the long path to a word form in the cluster
+	 * @param form the id of a word form
+	 * @return the long path to the word
+	 */
+	final public int getLP(int form) {
+		if (word2path.length<=form || word2path[form].length<=0) return -1;
+		return word2path[form][0]==0?-1:word2path[form][0];
+	}
+	
+	final public int getLP(int form, int l) {
+		if (word2path.length<form) return -1;
+		return word2path[form][l]==0?-1:word2path[form][l];
+	}
+
+	final public int size() {
+		return word2path.length;
+	}
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/D4.java b/dependencyParser/basic/mate-tools/src/is2/data/D4.java
new file mode 100644
index 0000000..8be3df2
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/D4.java
@@ -0,0 +1,191 @@
+/**
+ * 
+ */
+package is2.data;
+
+import is2.util.DB;
+
+/**
+ * @author Dr. Bernd Bohnet, 30.10.2010
+ *  
+ * This class computes the mapping of features to the weight vector.
+ */
+final public class D4 extends DX {
+	private long shift;
+	private long h;
+	
+
+	private final Long2IntInterface _li; 
+	public D4(Long2IntInterface li) {
+		_li=li;
+	}
+	
+	
+	final public void clean() {
+		v0=0;v1=0;v2=0;v3=0;v4=0;v5=0;v6=0;v7=0;v8=0;
+		shift=0;h=0;
+	}
+	
+	final public  void cz3(){
+		if (v0<0||v1<0||v2<0) {  h=-1;return;}
+		
+		h= v0+v1*(shift =a0)+(long)v2*(shift *=a1);
+		shift *=a2;
+	}
+
+	final public  long c3(){
+		if (v0<0||v1<0||v2<0) {  h=-1;return h;}
+		
+		h= v0+v1*(shift =a0)+(long)v2*(shift *=a1);
+		shift *=a2;
+		return h;
+	}
+	
+	final public void cz4(){		
+		if (v0<0||v1<0||v2<0||v3<0) {h=-1;return;}
+		
+		h =v0+v1*(shift =a0)+v2*(shift *=a1)+v3*(shift *=a2);
+		shift *=a3;		
+	}
+
+	final public long c4(){		
+		if (v0<0||v1<0||v2<0||v3<0) {h=-1;return h;}
+		
+		h =v0+v1*(shift =a0)+v2*(shift *=a1)+v3*(shift *=a2);
+		shift *=a3;		
+		return h;
+	}
+	
+
+	final public void cz5(){
+		
+		if (v0<0||v1<0||v2<0||v3<0||v4<0) {h=-1;return;}
+		
+		h =v0+v1*(shift =a0)+v2*(shift *=a1)+v3*(shift*=a2)+v4*(shift*=a3);
+		shift*=a4;
+
+	}
+
+	final public long c5(){
+		
+		if (v0<0||v1<0||v2<0||v3<0||v4<0) {h=-1;return h;}
+		
+		h =v0+v1*(shift =a0)+v2*(shift *=a1)+v3*(shift *=a2)+v4*(shift*=a3);
+		shift*=a4;
+		return h;
+	}
+	
+
+	final public void cz6(){
+
+		if (v0<0||v1<0||v2<0||v3<0||v4<0||v5<0) {h=-1; return;}
+
+		h =v0+v1*(shift =a0)+v2*(shift *=a1)+v3*(shift *=a2);
+		h +=v4*(shift*=a3)+v5*(shift*=a4);
+		shift*=a5;
+	}
+
+	final public long c6(){
+
+		if (v0<0||v1<0||v2<0||v3<0||v4<0||v5<0) {h=-1; return h;}
+
+		h =v0+v1*(shift =a0)+v2*(shift *=a1)+v3*(shift *=a2);
+		h +=v4*(shift*=a3)+v5*(shift*=a4);
+		shift*=a5;
+		return h;
+	}
+
+
+	final public long cs(int b, int v) {
+		if (h<0) {h=-1;	 return h;}
+		
+		h += v*shift;
+		shift *=b;
+		return h;
+
+	}
+
+	final public void csa(int b, int v, IFV f) {
+		if (h<0) {h=-1;	return;}
+
+		h += v*shift;
+		shift *=b;
+		f.add(_li.l2i(h));
+	}
+
+	final public long csa(int b, int v) {
+		if (h<0) {h=-1;	return-1; }
+
+		h += v*shift;
+		shift *=b;
+		return h;
+	}
+
+	public final long getVal(){
+		return h;
+	}
+	
+	public final void map(IFV f, long l){
+		if (l>0) f.add(this._li.l2i(l));
+	}
+	
+	/**
+	 * @param f
+	 */
+	final public void add(IFV f) {
+		f.add(_li.l2i(h));
+	}
+
+	final public void cz7() {
+		if (v0<0||v1<0||v2<0||v3<0||v4<0||v5<0||v6<0) {h=-1; return;}
+
+		h =v0+v1*(shift =a0)+v2*(shift *=a1)+v3*(shift *=a2);
+		h +=v4*(shift*=a3)+v5*(shift*=a4)+v6*(shift*=a5);
+		shift*=a6;
+		
+	}
+
+	final public long c7() {
+		if (v0<0||v1<0||v2<0||v3<0||v4<0||v5<0||v6<0) {h=-1; return h;}
+
+		h =v0+v1*(shift =a0)+v2*(shift *=a1)+v3*(shift *=a2);
+		h +=v4*(shift*=a3)+v5*(shift*=a4)+v6*(shift*=a5);
+		shift*=a6;
+		return h;
+	}
+
+	/**
+	 * 
+	 */
+	final public void cz8() {
+		if (v0<0||v1<0||v2<0||v3<0||v4<0||v5<0||v6<0||v7<0) {h=-1; return;}
+
+		h =v0+v1*(shift =a0)+v2*(shift *=a1)+v3*(shift *=a2);
+		h +=v4*(shift*=a3)+v5*(shift*=a4)+v6*(shift*=a5)+v7*(shift*=a6);
+		shift*=a7;
+	}
+
+	final public void cz9() {
+		if (v0<0||v1<0||v2<0||v3<0||v4<0||v5<0||v6<0||v7<0||v8<0) {h=-1; return;}
+
+		h =v0+v1*(shift =a0)+v2*(shift *=a1)+v3*(shift *=a2);
+		h +=v4*(shift*=a3)+v5*(shift*=a4)+v6*(shift*=a5)+v7*(shift*=a6)+v8*(shift*=a7);
+		shift*=a8;
+	}
+
+
+	/* (non-Javadoc)
+	 * @see is2.data.DX#computeLabeValue(short, short)
+	 */
+	@Override
+	public int computeLabeValue(int label, int shift) {
+		return label*shift;
+	}
+
+
+	public void fix() {
+		
+	}
+
+
+}
\ No newline at end of file
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/D6.java b/dependencyParser/basic/mate-tools/src/is2/data/D6.java
new file mode 100644
index 0000000..3694249
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/D6.java
@@ -0,0 +1,197 @@
+/**
+ * 
+ */
+package is2.data;
+
+import is2.util.DB;
+
+/**
+ * @author Dr. Bernd Bohnet, 30.10.2010
+ *  
+ * This class computes the mapping of features to the weight vector.
+ */
+final public class D6 extends DX {
+	private long shift;
+	private long h;
+	
+
+	private final Long2IntInterface _li; 
+	public D6(Long2IntInterface li) {
+		_li=li;
+	}
+
+	boolean fixed =false;
+	
+	public void fix() {
+		
+		if (fixed) {
+			DB.println("warning: already fixed");
+		//	return;
+		}
+		
+		long t0= 1, t1=a0, t2=t1*a1, t3=t2*a2,t4=t3*a3, t5=t4*a4,t6=t5*a5, t7=t6*a6, t8=t7*a7, t9=t8*a8;
+		
+	
+		
+		
+		a0=t0;a1=t1;a2=t2;a3=t3;a4=t4;a5=t5;a6=t6;a7=t7;a8=t8; a9=t9;
+	
+		fixed=true;
+	}
+	
+
+
+	final public void clean() {
+		v0=0;v1=0;v2=0;v3=0;v4=0;v5=0;v6=0;v7=0;v8=0;
+		shift=0;h=0;
+	}
+	
+	final public  void cz3(){
+		if (v0<0||v1<0||v2<0) {  h=-1;return;}
+		
+		h= v0+v1*a1+v2*a2;
+		shift =a3;
+	}
+
+	final public  long c3(){
+		if (v0<0||v1<0||v2<0) {  h=-1;return h;}
+		
+		h= v0+v1*a1+v2*a2;
+		shift =a3;
+		return h;
+	}
+	
+	final public void cz4(){		
+		if (v0<0||v1<0||v2<0||v3<0) {h=-1;return;}
+		
+		h =v0+v1*a1+v2*a2+v3*a3;
+		shift =a4;		
+	}
+
+	final public long c4(){		
+		if (v0<0||v1<0||v2<0||v3<0) {h=-1;return h;}
+		
+		h =v0+v1*a1+v2*a2+v3*a3;
+		shift =a4;		
+		return h;
+	}
+	
+
+	final public void cz5(){
+		
+		if (v0<0||v1<0||v2<0||v3<0||v4<0) {h=-1;return;}
+		
+		h =v0+v1*a1+v2*a2+v3*a3+v4*a4;
+		shift=a5;
+
+	}
+
+	final public long c5(){
+		
+		if (v0<0||v1<0||v2<0||v3<0||v4<0) {h=-1;return h;}
+		
+		h =v0+v1*a1+v2*a2+v3*a3+v4*a4;
+		shift=a5;
+		return h;
+	}
+	
+
+	final public void cz6(){
+
+		if (v0<0||v1<0||v2<0||v3<0||v4<0||v5<0) {h=-1; return;}
+
+		h =v0+v1*a1+v2*a2+v3*a3 +v4*a4+v5*a5;
+		shift=a6;
+	}
+
+	final public long c6(){
+
+		if (v0<0||v1<0||v2<0||v3<0||v4<0||v5<0) {h=-1; return h;}
+
+		h =v0+v1*a1+v2*a2+v3*a3 +v4*a4+v5*a5;
+		shift=a6;
+		return h;
+	}
+
+
+	final public long cs(int b, int v) {
+		if (h<0) {h=-1;	 return h;}
+		
+		h += v*shift;
+		shift *=b;
+		return h;
+
+	}
+
+	final public void csa(int b, int v, IFV f) {
+		if (h<0) {h=-1;	return;}
+
+		h += v*shift;
+		shift *=b;
+		f.add(_li.l2i(h));
+	}
+
+	final public long csa(int b, int v) {
+		if (h<0) {h=-1;	return-1; }
+
+		h += v*shift;
+		shift *=b;
+		return h;
+	}
+
+	public final long getVal(){
+		return h;
+	}
+	
+	public final void map(IFV f, long l){
+		if (l>0) f.add(this._li.l2i(l));
+	}
+	
+	/**
+	 * @param f
+	 */
+	final public void add(IFV f) {
+		f.add(_li.l2i(h));
+	}
+
+	final public void cz7() {
+		if (v0<0||v1<0||v2<0||v3<0||v4<0||v5<0||v6<0) {h=-1; return;}
+
+		h =v0+v1*a1+v2*a2+v3*a3 +v4*a4+v5*a5+v6*a6;
+		shift=a7;
+		
+	}
+
+	final public long c7() {
+		if (v0<0||v1<0||v2<0||v3<0||v4<0||v5<0||v6<0) {h=-1; return h;}
+
+		h =v0+v1*a1+v2*a2+v3*a3 +v4*a4+v5*a5+v6*a6;
+		shift=a7;
+		return h;
+	}
+
+	/**
+	 * 
+	 */
+	final public void cz8() {
+		if (v0<0||v1<0||v2<0||v3<0||v4<0||v5<0||v6<0||v7<0) {h=-1; return;}
+
+		h =v0+v1*a1+v2*a2+v3*a3 +v4*a4+v5*a5+v6*a6+v7*a7;
+		shift=a8;
+	}
+
+
+
+	/* (non-Javadoc)
+	 * @see is2.data.DX#computeLabeValue(short, short)
+	 */
+	@Override
+	public int computeLabeValue(int label, int shift) {
+		return label*shift;
+	}
+
+
+	
+
+
+}
\ No newline at end of file
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/D7.java b/dependencyParser/basic/mate-tools/src/is2/data/D7.java
new file mode 100644
index 0000000..f4675d8
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/D7.java
@@ -0,0 +1,220 @@
+/**
+ * 
+ */
+package is2.data;
+
+
+/**
+ * @author Dr. Bernd Bohnet, 30.10.2010
+ *  
+ * This class computes the mapping of features to the weight vector.
+ */
+final public class D7 extends DX {
+	
+	private long shift;
+	private long h;
+	private final Long2IntInterface _li; 
+	
+	public D7(Long2IntInterface li) {
+		_li=li;
+	}
+
+	boolean fixed =false;
+	
+	public void fix() {
+		
+		long t0= 1, t1=a0, t2=t1*a1, t3=t2*a2,t4=t3*a3, t5=t4*a4,t6=t5*a5, t7=t6*a6, t8=t7*a7, t9=t8*a8;
+		
+		a0=t0;a1=t1;a2=t2;a3=t3;a4=t4;a5=t5;a6=t6;a7=t7;a8=t8; a9=t9;
+	
+	}
+	
+
+
+	final public void clean() {
+		v0=0;v1=0;v2=0;v3=0;v4=0;v5=0;v6=0;v7=0;v8=0;
+		shift=0;h=0;
+	}
+	
+	final public  void cz3(){
+		if (v2<0) {  h=-1;return;}
+		
+		h= v0+v1*a1+v2*a2;
+		shift =a3;
+	}
+
+	final public  long c3(){
+		if (v2<0) {  h=-1;return h;}
+		
+		h= v0+v1*a1+v2*a2;
+		shift =a3;
+		return h;
+	}
+	
+	final public  long d3(){
+		if (v2<0)return -1;
+		return v0+v2*a2;
+	}
+	
+	final public void cz4(){		
+	//	if (v0<0||v1<0||v2<0||v3<0) {h=-1;return;}
+		if (v2<0||v3<0) {h=-1;return;}
+		
+		h =v0+v1*a1+v2*a2+v3*a3;
+		shift =a4;		
+	}
+
+	final public long c4(){		
+		if (v2<0||v3<0) {h=-1;return h;}
+		
+		h =v0+v1*a1+v2*a2+v3*a3;
+		shift =a4;		
+		return h;
+	}
+	
+	
+	final public long d4(){		
+		if (v2<0||v3<0) return -1;
+		return v0+v2*a2+v3*a3;
+	}
+	
+
+	final public void cz5(){
+		
+		if (v2<0||v3<0||v4<0) {h=-1;return;}
+		
+		h =v0+v1*a1+v2*a2+v3*a3+v4*a4;
+		shift=a5;
+
+	}
+
+	final public long c5(){
+		
+		if (v2<0||v3<0||v4<0) {h=-1;return h;}
+		
+		h =v0+v1*a1+v2*a2+v3*a3+v4*a4;
+		shift=a5;
+		return h;
+	}
+	
+	final public long d5(){
+		if (v2<0||v3<0||v4<0) return -1;
+		return v0+v2*a2+v3*a3+v4*a4;
+	}
+	
+
+	final public void cz6(){
+
+		if (v0<0||v1<0||v2<0||v3<0||v4<0||v5<0) {h=-1; return;}
+
+		h =v0+v1*a1+v2*a2+v3*a3 +v4*a4+v5*a5;
+		shift=a6;
+	}
+
+	final public long c6(){
+
+		if (v2<0||v3<0||v4<0||v5<0) {h=-1; return h;}
+
+		h =v0+v1*a1+v2*a2+v3*a3 +v4*a4+v5*a5;
+		shift=a6;
+		return h;
+	}
+	
+	final public long d6(){
+		if (v2<0||v3<0||v4<0||v5<0)   return -1;
+		return v0+v2*a2+v3*a3 +v4*a4+v5*a5;	
+	}
+
+
+	final public long cs(int b, int v) {
+		if (h<0) {h=-1;	 return h;}
+		
+		h += v*shift;
+		shift *=b;
+		return h;
+
+	}
+
+	final public void csa(int b, int v, IFV f) {
+		if (h<0) {h=-1;	return;}
+
+		h += v*shift;
+		shift *=b;
+		f.add(_li.l2i(h));
+	}
+
+	final public long csa(int b, int v) {
+		if (h<0) {h=-1;	return-1; }
+
+		h += v*shift;
+		shift *=b;
+		return h;
+	}
+
+	public final long getVal(){
+		return h;
+	}
+	
+	public final void map(IFV f, long l){
+		if (l>0) f.add(this._li.l2i(l));
+	}
+	
+	/**
+	 * @param f
+	 */
+	final public void add(IFV f) {
+		f.add(_li.l2i(h));
+	}
+
+	final public void cz7() {
+		if (v0<0||v1<0||v2<0||v3<0||v4<0||v5<0||v6<0) {h=-1; return;}
+
+		h =v0+v1*a1+v2*a2+v3*a3 +v4*a4+v5*a5+v6*a6;
+		shift=a7;
+		
+	}
+	
+
+	final public long c7() {
+		if (v2<0||v3<0||v4<0||v5<0||v6<0) {h=-1; return h;}
+
+		h =v0+v1*a1+v2*a2+v3*a3 +v4*a4+v5*a5+v6*a6;
+		shift=a7;
+		return h;
+	}
+	
+	final public long d7() {
+		if (v2<0||v3<0||v4<0||v5<0||v6<0) return -1;
+		return v0+v2*a2+v3*a3 +v4*a4+v5*a5+v6*a6;
+	}
+
+	/**
+	 * 
+	 */
+	final public void cz8() {
+		if (v0<0||v1<0||v2<0||v3<0||v4<0||v5<0||v6<0||v7<0) {h=-1; return;}
+
+		h =v0+v1*a1+v2*a2+v3*a3 +v4*a4+v5*a5+v6*a6+v7*a7;
+		shift=a8;
+	}
+	
+	final public long d8() {
+		if (v2<0||v3<0||v4<0||v5<0||v6<0||v7<0) {return-1;}
+		return v0+v2*a2+v3*a3 +v4*a4+v5*a5+v6*a6+v7*a7;
+	}
+
+
+
+	/* (non-Javadoc)
+	 * @see is2.data.DX#computeLabeValue(short, short)
+	 */
+	@Override
+	public int computeLabeValue(int label, int shift) {
+		return label*shift;
+	}
+
+
+	
+
+
+}
\ No newline at end of file
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/DPSTree.java b/dependencyParser/basic/mate-tools/src/is2/data/DPSTree.java
new file mode 100644
index 0000000..554f756
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/DPSTree.java
@@ -0,0 +1,115 @@
+/**
+ * 
+ */
+package is2.data;
+
+import is2.util.DB;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Stack;
+
+/**
+ * @author Dr. Bernd Bohnet, 17.01.2011
+ * 
+ * Dynamic phrase structure tree.
+ */
+public class DPSTree {
+
+	
+	private int size=0;
+	
+	public int[] heads;
+	public int[] labels;
+
+	public DPSTree() {
+		this(30);
+	}
+
+	public DPSTree(int initialCapacity) {
+		heads = new int[initialCapacity];
+		labels = new int[initialCapacity];
+	}
+	
+	
+	/**
+     * Increases the capacity of this <tt>Graph</tt> instance, if
+     * necessary, to ensure  that it can hold at least the number of nodes
+     * specified by the minimum capacity argument. 
+     *
+     * @param   minCapacity   the desired minimum capacity.
+     */
+    private void ensureCapacity(int minCapacity) {
+	
+    	
+    	if (minCapacity > heads.length) {
+    		
+    		int newCapacity =minCapacity + 1;
+    		
+    		if (newCapacity < minCapacity) newCapacity = minCapacity;
+    		int oldIndex[] = heads;
+    		heads = new int[newCapacity];
+    		System.arraycopy(oldIndex, 0, heads, 0, oldIndex.length);
+    		
+    		oldIndex = labels;
+    		labels = new int[newCapacity];
+    		System.arraycopy(oldIndex, 0, labels, 0, oldIndex.length);
+    		
+    	}
+    }
+	
+   
+    final public int size() {
+	  return size;
+    }
+    
+    
+    final public boolean isEmpty() {
+  	  return size == 0;
+      }
+
+  	final public void clear() {
+      	size = 0;
+     }
+  	
+  	final public void createTerminals(int terminals) {
+  		ensureCapacity(terminals+1); 
+  		size= terminals+1;
+  	}
+      
+     final public int create(int phrase) {
+      	
+      	ensureCapacity(size+1); 
+      	labels[size] =phrase;
+      	size++;
+      	return size-1;
+      }
+     
+ 	public int create(int phrase, int nodeId) {
+ 		
+ 		if (nodeId<0) return this.create(phrase);
+// 		DB.println("create phrase "+nodeId+"  label "+phrase);
+      	ensureCapacity(nodeId+1); 
+		labels[nodeId] =phrase;	
+		if (size<nodeId) size=nodeId+1;
+		return nodeId;
+	}
+
+	public void createEdge(int i, int j) {
+		heads[i] =j;	
+//		DB.println("create edge "+i+"\t "+j);
+	}	
+	
+	public DPSTree clone() {
+		DPSTree ps = new DPSTree(this.size+1);
+		
+		for(int k=0;k<size;k++) { 
+			ps.heads[k] = heads[k]; 
+			ps.labels[k] = labels[k]; 
+		}
+		ps.size=size;
+		return ps;
+		
+	}
+
+}
\ No newline at end of file
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/DX.java b/dependencyParser/basic/mate-tools/src/is2/data/DX.java
new file mode 100644
index 0000000..c357b58
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/DX.java
@@ -0,0 +1,58 @@
+/**
+ * 
+ */
+package is2.data;
+
+import is2.data.IFV;
+
+/**
+ * @author Dr. Bernd Bohnet, 30.08.2011
+ * 
+ * 
+ */
+public abstract class  DX {
+
+	public long a0,a1,a2,a3,a4,a5,a6,a7,a8,a9;
+	public long v0,v1,v2,v3,v4,v5,v6,v7,v8,v9; 
+	
+	public abstract void cz3();
+
+	public abstract void cz4();
+
+	public abstract void cz5();
+
+	public abstract void cz6();
+
+	public abstract void cz7();
+
+	public abstract void cz8();
+
+	public abstract void clean();
+
+	public abstract long cs(int b, int v);
+
+	public abstract long csa(int b, int v);
+
+	public abstract void csa(int b, int v, IFV f);
+
+	/**
+	 * @return
+	 */
+	public abstract long getVal();
+
+	/**
+	 * @param f
+	 * @param l
+	 */
+	public abstract void map(IFV f, long l);
+
+	/**
+	 * @param label
+	 * @param s_type
+	 * @return
+	 */
+	public abstract int  computeLabeValue(int label,int s_type) ;
+	
+	public abstract void fix();
+
+}
\ No newline at end of file
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/DataF.java b/dependencyParser/basic/mate-tools/src/is2/data/DataF.java
new file mode 100755
index 0000000..f127fbd
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/DataF.java
@@ -0,0 +1,39 @@
+package is2.data;
+
+
+
+final public class DataF {
+
+		final public short typesLen;
+		final public int len;
+		
+		// first order features
+		final public float[][] pl;
+		
+		// remove !!!!
+//		final public float[][] highestLab;
+		
+		//final public FV[][][] label;
+		final public float[][][][] lab;
+
+		
+		public FV fv;
+		
+		final public float[][][][][] sib;
+
+		final public float[][][][][] gra;
+	
+	
+		public DataF(int length, short types) {
+			typesLen=types;
+			len =length;
+			
+			pl = new float[length][length];
+			lab = new float[length][length][types][2];
+	//		highestLab = new float[length][length];
+			
+			sib = new float[length][length][length][2][];
+			gra = new float[length][length][length][2][];
+		
+		}
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/DataFES.java b/dependencyParser/basic/mate-tools/src/is2/data/DataFES.java
new file mode 100644
index 0000000..9772858
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/DataFES.java
@@ -0,0 +1,38 @@
+package is2.data;
+
+
+
+final public class DataFES {
+
+		final public short typesLen;
+		final public int len;
+		
+		// first order features
+		final public float[][] pl;
+		
+		// remove !!!!
+//		final public float[][] highestLab;
+		
+		//final public FV[][][] label;
+		final public float[][][] lab;
+
+		
+		public FV fv;
+		
+		final public float[][][][] sib;
+
+		final public float[][][][] gra;
+	
+	
+		public DataFES(int length, short types) {
+			typesLen=types;
+			len =length;
+			
+			pl = new float[length][length];
+			lab = new float[length][length][types];
+			
+			sib = new float[length][length][length][];
+			gra = new float[length][length][length][];
+		
+		}
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/DataT.java b/dependencyParser/basic/mate-tools/src/is2/data/DataT.java
new file mode 100644
index 0000000..47691f8
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/DataT.java
@@ -0,0 +1,25 @@
+package is2.data;
+
+
+
+final public class DataT {
+
+		final public short typesLen;
+		final public int len;
+		
+		
+		//final public FV[][][] label;
+		// a b lab op
+		final public float[][][][] lab;
+
+	
+	
+		public DataT(int length, short types) {
+			typesLen=types;
+			len =length;
+			
+			lab = new float[length][length][types][4];
+			
+		
+		}
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/Edges.java b/dependencyParser/basic/mate-tools/src/is2/data/Edges.java
new file mode 100644
index 0000000..f8b2ef9
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/Edges.java
@@ -0,0 +1,224 @@
+/**
+ * 
+ */
+package is2.data;
+
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Map.Entry;
+
+/**
+ * @author Dr. Bernd Bohnet, 13.05.2009;
+ * 
+ * 
+ */
+public final class Edges {
+
+	
+	private static short[][][][] edges;
+	private static HashMap<Short,Integer> labelCount = new HashMap<Short,Integer>();
+
+	private static HashMap<String,Integer> slabelCount = new HashMap<String,Integer>();
+
+	
+	static short[] def = new short[1];
+	
+	private Edges () {}
+	
+	/**
+	 * @param length
+	 */
+	public static void init(int length) {
+			edges = new short[length][length][2][];
+	}
+	
+	
+	public static void findDefault(){
+		
+		int best =0;
+
+		
+		
+		for(Entry<Short,Integer> e :  labelCount.entrySet()) {
+
+			
+			if (best<e.getValue()) {
+				best = e.getValue();
+				def[0]=e.getKey();
+			}
+		}
+
+		
+		//	labelCount=null;
+	//	String[] types = new String[mf.getFeatureCounter().get(PipeGen.REL)];
+	//	for (Entry<String, Integer> e : MFO.getFeatureSet().get(PipeGen.REL).entrySet())  	types[e.getValue()] = e.getKey();
+
+    	is2.util.DB.println("set default label to "+def[0]+" " );
+
+	//	System.out.println("found default "+def[0]);
+	
+	}
+	
+
+	final static public void put(int pos1, int pos2, boolean dir, short label) {
+		putD(pos1, pos2,dir, label);
+	//	putD(pos2, pos1,!dir, label);		
+	}
+	
+	
+	final static public void putD(int pos1, int pos2, boolean dir, short label) {
+		
+		Integer lc = labelCount.get(label);
+		if (lc==null) labelCount.put(label, 1);
+		else labelCount.put(label, lc+1);
+
+		String key = pos1+"-"+pos2+dir+label;
+		Integer lcs = slabelCount.get(key);
+		if (lcs==null) slabelCount.put(key, 1);
+		else slabelCount.put(key, lcs+1);
+
+		
+		if (edges[pos1][pos2][dir?0:1]==null) {
+			edges[pos1][pos2][dir?0:1]=new short[1];
+			edges[pos1][pos2][dir?0:1][0]=label;
+			
+//			edgesh[pos1][pos2][dir?0:1] = new TIntHashSet(2);
+//			edgesh[pos1][pos2][dir?0:1].add(label);
+		} else {
+			short labels[] = edges[pos1][pos2][dir?0:1];
+			for(short l : labels) {				
+				//contains label already?
+				if(l==label) return;
+			}
+			
+			short[] nlabels = new short[labels.length+1];
+			System.arraycopy(labels, 0, nlabels, 0, labels.length);
+			nlabels[labels.length]=label;
+			edges[pos1][pos2][dir?0:1]=nlabels;
+			
+	//		edgesh[pos1][pos2][dir?0:1].add(label);
+		}
+	}
+	
+	final static public short[] get(int pos1, int pos2, boolean dir) {
+		
+		if (pos1<0 || pos2<0 || edges[pos1][pos2][dir?0:1]==null) return def;
+		return edges[pos1][pos2][dir?0:1];
+	}
+
+	
+	/**
+	 * @param dis
+	 */
+	static public void write(DataOutputStream d) throws IOException {
+
+		int len = edges.length;
+		d.writeShort(len);
+
+		for(int p1 =0;p1<len;p1++) {
+			for(int p2 =0;p2<len;p2++) {
+				if (edges[p1][p2][0]==null) d.writeShort(0);
+				else {
+					d.writeShort(edges[p1][p2][0].length);
+					for(int l =0;l<edges[p1][p2][0].length;l++) {
+						d.writeShort(edges[p1][p2][0][l]);
+					}
+					
+				}
+
+				if (edges[p1][p2][1]==null) d.writeShort(0);
+				else {
+					d.writeShort(edges[p1][p2][1].length);
+					for(int l =0;l<edges[p1][p2][1].length;l++) {
+						d.writeShort(edges[p1][p2][1][l]);
+					}
+				}				
+			}
+		}
+		
+		d.writeShort(def[0]);
+
+	}
+
+	
+	/**
+	 * @param dis
+	 */
+	public static void read(DataInputStream d) throws IOException {
+		int len = d.readShort();
+
+		edges = new short[len][len][2][];
+		for(int p1 =0;p1<len;p1++) {
+			for(int p2 =0;p2<len;p2++) {
+				int ll = d.readShort();
+				if (ll==0) {
+					edges[p1][p2][0]=null;
+				} else {
+					edges[p1][p2][0] = new short[ll];
+					for(int l =0;l<ll;l++) {
+						edges[p1][p2][0][l]=d.readShort();
+					}					
+				}
+
+				ll = d.readShort();
+				if (ll==0) {
+					edges[p1][p2][1]=null;
+				} else {
+					edges[p1][p2][1] = new short[ll];
+					for(int l =0;l<ll;l++) {
+						edges[p1][p2][1][l]=d.readShort();
+					}					
+				}					
+			}
+		}
+		
+		def[0]= d.readShort();
+
+	}
+
+	public static class C implements Comparator<Short> {
+
+		public C() {
+			super();
+		}
+
+		String _key;
+		
+		public C(String key) {
+			super();
+			_key=key;
+		}
+
+		/* (non-Javadoc)
+		 * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+		 */
+		@Override
+		public int compare(Short l1, Short l2) {
+			
+		//	int c1 = labelCount.get(l1);
+		//	int c2 = labelCount.get(l2);
+		//	if (true) return c1==c2?0:c1>c2?-1:1;
+
+			int x1 = slabelCount.get(_key+l1.shortValue());
+			int x2 = slabelCount.get(_key+l2.shortValue());
+		//	System.out.println(x1+" "+x2);
+			
+			
+			return x1==x2?0:x1>x2?-1:1;
+			
+			
+			
+		}
+
+	
+
+		
+		
+	}
+	
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/F2S.java b/dependencyParser/basic/mate-tools/src/is2/data/F2S.java
new file mode 100755
index 0000000..1f1f668
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/F2S.java
@@ -0,0 +1,48 @@
+package is2.data;
+
+
+final public class F2S extends IFV {
+
+	private double[] parameters;
+	public F2S() {}
+	
+	public double score;
+	
+	/**
+	 * @param parameters2
+	 */
+	public F2S(double[] parameters2) {
+		parameters=parameters2;
+	}
+
+	@Override
+	public void add(int i) {
+		if (i>0)score += parameters[i];
+	}
+	
+	public void setParameters(double[] p) {
+		parameters =p;
+	}
+	
+	@Override
+	public void clear() {
+		score =0;
+	}
+
+	/* (non-Javadoc)
+	 * @see is2.IFV#getScore()
+	 */
+	@Override
+	public double getScore() {
+		return score;
+	}
+
+	/* (non-Javadoc)
+	 * @see is2.IFV#clone()
+	 */
+	@Override
+	public IFV clone() {
+		return new F2S(parameters);
+	}
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/F2SD.java b/dependencyParser/basic/mate-tools/src/is2/data/F2SD.java
new file mode 100755
index 0000000..45c554f
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/F2SD.java
@@ -0,0 +1,44 @@
+package is2.data;
+
+
+final public class F2SD extends IFV {
+
+	final private double[] parameters;
+	
+	public double score =0;
+	
+	public F2SD(double[] p) {
+		parameters =p;
+	}
+
+	
+	@Override
+	public void add(int i) {
+		if (i>0)score += parameters[i];
+	}
+	
+	@Override
+	public void clear() {
+		score =0;
+	}
+
+	
+	/* (non-Javadoc)
+	 * @see is2.IFV#getScore()
+	 */
+	@Override
+	public double getScore() {
+		return score;
+	}
+
+
+	/* (non-Javadoc)
+	 * @see is2.IFV#clone()
+	 */
+	@Override
+	public IFV clone() {
+		return new F2SD(parameters);
+	}
+
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/F2SF.java b/dependencyParser/basic/mate-tools/src/is2/data/F2SF.java
new file mode 100755
index 0000000..127d775
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/F2SF.java
@@ -0,0 +1,78 @@
+package is2.data;
+
+
+final public class F2SF extends IFV {
+
+	final private float[] parameters;
+	
+
+	
+	public float score =0;
+	
+	public F2SF(float[] p) {
+		parameters =p;
+	}
+	
+	@Override
+	final  public void add(int i) {
+		if (i>0) score += parameters[i];
+	}
+
+	  
+	final  public void add(int[] i) {
+		for(int k=0;k<i.length;k++) {
+			if (i[k]>0) score += parameters[i[k]];
+		}
+	}
+	
+	
+	final  public void sub(float[] px,int i, Long2IntInterface li) {
+		
+		if (i>0) {
+			score -= px[li.l2i(i)];
+//			score -= px[i];
+			//else score -=px[];
+		}
+	}
+
+	
+	@Override
+	public void clear() {
+		score =0;
+	}
+
+
+	/* (non-Javadoc)
+	 * @see is2.IFV#getScore()
+	 */
+	@Override
+	public double getScore() {
+		return score;
+	}
+
+	public float getScoreF() {
+		return score;
+	}
+
+	/* (non-Javadoc)
+	 * @see is2.IFV#clone()
+	 */
+	@Override
+	public IFV clone() {
+		return new F2SF(this.parameters);
+	}
+
+	/**
+	 * @param l2i
+	 */
+	public void addRel(int i, float f) {
+		if (i>0) score += parameters[i]*f;
+		
+	}
+	
+	public int length() {
+		return this.parameters.length;
+	}
+	
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/F2SP.java b/dependencyParser/basic/mate-tools/src/is2/data/F2SP.java
new file mode 100644
index 0000000..515a788
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/F2SP.java
@@ -0,0 +1,76 @@
+package is2.data;
+
+
+final public class F2SP extends IFV {
+
+	final private float[] parameters;
+	
+	public double score =0;
+	
+	public F2SP(float[] p) {
+		parameters =p;
+	}
+	
+	@Override
+	final  public void add(int i) {
+		if (i>0) score += parameters[i];
+	}
+
+	  
+	final  public void add(int[] i) {
+		for(int k=0;k<i.length;k++) {
+			if (i[k]>0) score += parameters[i[k]];
+		}
+	}
+	
+	
+	final  public void sub(float[] px,int i, Long2IntInterface li) {
+		
+		if (i>0) {
+			score -= px[li.l2i(i)];
+//			score -= px[i];
+			//else score -=px[];
+		}
+	}
+
+	
+	@Override
+	public void clear() {
+		score =0;
+	}
+
+
+	/* (non-Javadoc)
+	 * @see is2.IFV#getScore()
+	 */
+	@Override
+	public double getScore() {
+		return score;
+	}
+
+	public double getScoreF() {
+		return score;
+	}
+
+	/* (non-Javadoc)
+	 * @see is2.IFV#clone()
+	 */
+	@Override
+	public IFV clone() {
+		return new F2SP(this.parameters);
+	}
+
+	/**
+	 * @param l2i
+	 */
+	public void addRel(int i, float f) {
+		if (i>0) score += parameters[i]*f;
+		
+	}
+	
+	public int length() {
+		return this.parameters.length;
+	}
+	
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/F2ST.java b/dependencyParser/basic/mate-tools/src/is2/data/F2ST.java
new file mode 100644
index 0000000..2ef062b
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/F2ST.java
@@ -0,0 +1,47 @@
+package is2.data;
+
+
+final public class F2ST extends IFV {
+
+	final private short[] parameters;
+	
+
+	
+	public int score =0;
+	
+	public F2ST(short[] p) {
+		parameters =p;
+	}
+	
+	@Override
+	final  public void add(int i) {
+		if (i>0) score += parameters[i];
+	}
+	
+	@Override
+	public void clear() {
+		score =0;
+	}
+
+
+	/* (non-Javadoc)
+	 * @see is2.IFV#getScore()
+	 */
+	@Override
+	public double getScore() {
+		return score;
+	}
+
+	public float getScoreF() {
+		return score;
+	}
+
+	/* (non-Javadoc)
+	 * @see is2.IFV#clone()
+	 */
+	@Override
+	public IFV clone() {
+		return new F2ST(this.parameters);
+	}
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/FV.java b/dependencyParser/basic/mate-tools/src/is2/data/FV.java
new file mode 100755
index 0000000..1cfbeba
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/FV.java
@@ -0,0 +1,551 @@
+package is2.data;
+
+
+
+
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+public final class FV extends IFV { 
+	
+	private FV subfv1;
+	private FV subfv2;
+	private boolean negateSecondSubFV = false;
+	
+    private int size;
+   
+	// content of the nodes NxC
+	private int m_index[];
+	
+	// type of the nodes NxT
+	
+	public FV() {
+		this(10);
+	}
+
+	public FV(int initialCapacity) {
+		m_index = new int[initialCapacity];
+	}
+
+
+	public FV (FV fv1, FV fv2) {
+		subfv1 = fv1;
+		subfv2 = fv2;
+	}
+
+	public FV (FV fv1, FV fv2, boolean negSecond) {
+		this(0);
+		subfv1 = fv1;
+		subfv2 = fv2;
+		negateSecondSubFV = negSecond;
+	}
+
+	/**
+	 * Read a feature vector
+	 * @param index
+	 * @param value
+	 */
+	public FV(DataInputStream dos, int capacity) throws IOException {
+		this(capacity);
+		size= m_index.length;
+		
+		for (int i=0; i<size; i++) m_index[i] = dos.readInt();	
+	}
+
+
+	/**
+	 * Read a feature vector
+	 * @param index
+	 * @param value
+	 */
+	public FV(DataInputStream dos) throws IOException {
+		this(dos.readInt());
+		size= m_index.length;
+		
+		for (int i=0; i<size; i++)  m_index[i] = dos.readInt();
+		
+		
+	}
+
+	/**
+     * Increases the capacity of this <tt>Graph</tt> instance, if
+     * necessary, to ensure  that it can hold at least the number of nodes
+     * specified by the minimum capacity argument. 
+     *
+     * @param   minCapacity   the desired minimum capacity.
+     */
+    private void ensureCapacity(int minCapacity) {
+	
+    	
+    	if (minCapacity > m_index.length) {
+    		
+    		int oldIndex[] = m_index;
+    	
+    		int newCapacity = ( m_index.length * 3)/2 + 1;
+    
+    		
+    		if (newCapacity < minCapacity) newCapacity = minCapacity;
+
+    		m_index = new int[newCapacity];
+    		System.arraycopy(oldIndex, 0, m_index, 0, oldIndex.length);
+    		
+    	}
+    }
+	
+   
+    final public int size() {
+	  return size;
+    }
+
+    final public boolean isEmpty() {
+	  return size == 0;
+    }
+
+    @Override
+	final public void clear() {
+    	size = 0;
+    }
+    
+    
+    final public int createFeature(int i, double v) {
+    	
+    	ensureCapacity(size+1); 
+    	m_index[size] =i;
+    	size++;
+    	return size-1;
+    }
+    
+    final public int createFeature(int i) {
+    	
+    	ensureCapacity(size+1); 
+    	m_index[size] =i;
+    	size++;
+    	return size-1;
+    }
+   
+    
+	final public int getIndex(int i) {
+		return m_index[i];
+	}
+
+	public void setIndex(int p, int i) {
+		m_index[p] = i;
+	}
+    
+	
+	 /**
+     * Trims the capacity of this <tt>Graph</tt> instance to true size.
+     *  An application can use this operation to minimize
+     * the storage of an <tt>Graph</tt> instance.
+     */
+    public void trimToSize() {
+
+		if (size < m_index.length) {
+		
+		
+			int oldIndex[] = m_index;
+			
+			m_index = new int[size];
+			System.arraycopy(oldIndex, 0, m_index, 0, size);
+			
+		}
+		
+    }
+
+    
+	
+	
+    
+    @Override
+	final public void add(int i) {
+        if (i>=0) {
+			ensureCapacity(size+1); 
+			m_index[size] =i;
+			size++;
+		}
+    }
+
+    final public void add(int[] i) {
+    	
+    	for(int k =0;k<i.length;k++) 	add(i[k]);
+    	
+    }
+
+    final public void put(int i, double f) {
+        if (i>=0) createFeature(i,f);
+    }
+   
+	
+	// fv1 - fv2
+	public FV getDistVector(FV fl2) {
+		return new FV(this, fl2, true);
+	}
+
+	
+	public double getScore(double[] parameters, boolean negate) {
+		double score = 0.0;
+
+		if (null != subfv1) {
+			score += subfv1.getScore(parameters, negate);
+
+			if (null != subfv2) {
+				if (negate) score += subfv2.getScore(parameters, !negateSecondSubFV);
+				else score += subfv2.getScore(parameters, negateSecondSubFV);
+				
+			}
+		}
+
+		if (negate) for(int i=0;i<size;i++)	score -= parameters[m_index[i]];
+		else for(int i=0;i<size;i++) score += parameters[m_index[i]];
+		
+			
+		return score;
+	}
+	
+	
+	final public float getScore(float[] parameters, boolean negate) {
+		float score = 0.0F;
+
+		if (null != subfv1) { 
+			score += subfv1.getScore(parameters, negate);
+
+			if (null != subfv2) {
+				if (negate) score += subfv2.getScore(parameters, !negateSecondSubFV);
+				else score += subfv2.getScore(parameters, negateSecondSubFV);
+				
+			}
+		}
+		
+		// warning changed the the value 
+		
+		if (negate) for(int i=0;i<size;i++)	score -= parameters[m_index[i]];//*m_value[i];
+		else for(int i=0;i<size;i++) score += parameters[m_index[i]];//*m_value[i];
+			
+		return score;
+	}
+
+	final public int getScore(short[] parameters, boolean negate) {
+		int score = 0;
+
+		if (null != subfv1) { 
+			score += subfv1.getScore(parameters, negate);
+
+			if (null != subfv2) {
+				if (negate) score += subfv2.getScore(parameters, !negateSecondSubFV);
+				else score += subfv2.getScore(parameters, negateSecondSubFV);
+				
+			}
+		}
+		
+		// warning changed the value 
+		
+		if (negate) for(int i=0;i<size;i++)	score -= parameters[m_index[i]];//*m_value[i];
+		else for(int i=0;i<size;i++) score += parameters[m_index[i]];//*m_value[i];
+			
+		return score;
+	}
+
+	
+	
+	public void update(double[] parameters, double[] total, double alpha_k, double upd) {
+		update(parameters, total, alpha_k, upd, false);
+	}
+
+	public final void update(double[] parameters, double[] total, double alpha_k, double upd, boolean negate) {
+
+		if (null != subfv1) {
+			subfv1.update(parameters, total, alpha_k, upd, negate);
+
+			if (null != subfv2) {
+				if (negate) subfv2.update(parameters, total, alpha_k, upd, !negateSecondSubFV);
+				else subfv2.update(parameters, total, alpha_k, upd, negateSecondSubFV);
+			}
+		}
+
+		if (negate) {
+			for(int i=0;i<size;i++) { 
+				parameters[m_index[i]] -= alpha_k;//*getValue(i);
+				total[m_index[i]] -= upd*alpha_k;//*getValue(i);
+			}
+		} else {
+			for(int i=0;i<size;i++){ 	
+				parameters[m_index[i]] += alpha_k;//*getValue(i);
+				total[m_index[i]] += upd*alpha_k;//*getValue(i); 
+			}
+		}
+
+
+	}
+	
+	public final void update(short[] parameters, short[] total, double alpha_k, double upd, boolean negate) {
+
+		if (null != subfv1) {
+			subfv1.update(parameters, total, alpha_k, upd, negate);
+
+			if (null != subfv2) {
+				if (negate) subfv2.update(parameters, total, alpha_k, upd, !negateSecondSubFV);
+				else subfv2.update(parameters, total, alpha_k, upd, negateSecondSubFV);
+			}
+		}
+
+		if (negate) {
+			for(int i=0;i<size;i++) { 
+				parameters[m_index[i]] -= alpha_k;//*getValue(i);
+				total[m_index[i]] -= upd*alpha_k;//*getValue(i);
+			}
+		} else {
+			for(int i=0;i<size;i++){ 	
+				parameters[m_index[i]] += alpha_k;//*getValue(i);
+				total[m_index[i]] += upd*alpha_k;//*getValue(i); 
+			}
+		}
+
+
+	}
+	
+	
+	public final void update(float[] parameters, float[] total, double alpha_k, double upd, boolean negate) {
+
+		if (null != subfv1) {
+			subfv1.update(parameters, total, alpha_k, upd, negate);
+
+			if (null != subfv2 && negate) {
+					subfv2.update(parameters, total, alpha_k, upd, !negateSecondSubFV);
+				} else {
+					subfv2.update(parameters, total, alpha_k, upd, negateSecondSubFV);
+				}
+			
+		}
+	
+		if (negate) {
+			for(int i=0;i<size;i++){ 
+				parameters[getIndex(i)] -= alpha_k;
+				total[getIndex(i)] -= upd*alpha_k;  
+			}
+		} else {
+			for(int i=0;i<size;i++){ 
+				parameters[getIndex(i)] += alpha_k;
+				total[getIndex(i)] += upd*alpha_k; //
+			}
+		}
+
+
+	}
+	
+	
+	public final void update(float[] parameters, float[] total, double alpha_k, 
+			double upd, boolean negate, float[] totalp, Long2IntInterface li) {
+
+		if (null != subfv1) {
+			subfv1.update(parameters, total, alpha_k, upd, negate,totalp,li);
+
+			if (null != subfv2 && negate) {
+					subfv2.update(parameters, total, alpha_k, upd, !negateSecondSubFV,totalp,li);
+				} else {
+					subfv2.update(parameters, total, alpha_k, upd, negateSecondSubFV,totalp,li);
+				}
+		}
+	
+		if (negate) {
+			for(int i=0;i<size;i++){ 
+				parameters[getIndex(i)] -= alpha_k;
+				total[getIndex(i)] -= upd*alpha_k;
+				
+				totalp[li.l2i(getIndex(i))] -=upd*alpha_k;
+			//	totalp[getIndex(i)] -=upd*alpha_k;
+			}
+		} else {
+			for(int i=0;i<size;i++){ 
+				parameters[getIndex(i)] += alpha_k;
+				total[getIndex(i)] += upd*alpha_k; //
+
+				totalp[li.l2i(getIndex(i))] +=upd*alpha_k;
+			//	totalp[getIndex(i)] +=upd*alpha_k;
+			}
+		}
+	}
+	
+
+
+
+	private static IntIntHash hm1;
+	private static IntIntHash hm2;
+	
+	public int dotProduct(FV fl2) {
+
+		if (hm1==null) hm1 = new IntIntHash(size(),0.4F);
+		else hm1.clear();
+		
+		addFeaturesToMap(hm1);
+		
+		if (hm2==null)hm2 = new IntIntHash(fl2.size,0.4F);
+		else hm2.clear();
+		
+		fl2.addFeaturesToMap(hm2);
+
+		int[] keys = hm1.keys();
+
+		int result = 0;
+		for(int i = 0; i < keys.length; i++) result += hm1.get(keys[i])*hm2.get(keys[i]);
+
+		return result;
+
+	}
+
+	public double twoNorm(FV fl2) {
+
+		if (hm1==null) hm1 = new IntIntHash(size(),0.4F);
+		else hm1.clear();
+		
+		addFeaturesToMap(hm1);
+		
+		if (hm2==null)hm2 = new IntIntHash(fl2.size,0.4F);
+		else hm2.clear();
+		
+		fl2.addFeaturesToMap(hm2);
+
+		int[] keys = hm1.keys();
+
+		int result = 0;
+		for(int i = 0; i < keys.length; i++) result += hm1.get(keys[i])*hm2.get(keys[i]);
+
+		
+		return Math.sqrt((double)result);
+		
+
+	}
+	
+	public void addFeaturesToMap(IntIntHash map) {
+		
+		if (null != subfv1) {
+			subfv1.addFeaturesToMap(map);
+
+			if (null != subfv2) {
+			 subfv2.addFeaturesToMap(map, negateSecondSubFV);
+				
+			}
+		}
+
+	
+		for(int i=0;i<size;i++) if (!map.adjustValue(getIndex(i), 1)) map.put(getIndex(i), 1);
+	
+		
+	
+	}
+
+	
+	
+	private void addFeaturesToMap(IntIntHash map, boolean negate) {
+		
+		if (null != subfv1) {
+			subfv1.addFeaturesToMap(map, negate);
+
+			if (null != subfv2) {
+				if (negate)  subfv2.addFeaturesToMap(map, !negateSecondSubFV);
+				else  subfv2.addFeaturesToMap(map, negateSecondSubFV);
+				
+			}
+		}
+
+		if (negate) { 
+			for(int i=0;i<size;i++) if (!map  . adjustValue(getIndex(i), -1)) map.put(getIndex(i), -1);
+		} else {
+			for(int i=0;i<size;i++) if (!map.adjustValue(getIndex(i), 1)) map.put(getIndex(i), 1);
+		}
+		
+	
+	}
+
+	
+	@Override
+	public final String toString() {
+		StringBuilder sb = new StringBuilder();
+		toString(sb);
+		return sb.toString();
+	}
+
+	private final void toString(StringBuilder sb) {
+		if (null != subfv1) {
+			subfv1.toString(sb);
+
+			if (null != subfv2)
+				subfv2.toString(sb);
+		}
+		for(int i=0;i<size;i++)
+			sb.append(getIndex(i)).append(' ');
+	}
+
+	public void writeKeys(DataOutputStream dos) throws IOException {
+		
+	//	int keys[] = keys();
+	//	dos.writeInt(keys.length);
+	//	for(int i=0;i<keys.length;i++) {
+	//		dos.writeInt(keys[i]);
+	//	}
+		
+		
+		//int keys[] = keys();
+		dos.writeInt(size);
+		for(int i=0;i<size;i++) {
+			dos.writeInt(m_index[i]);
+		}
+	
+	}
+
+	public void readKeys(DataInputStream dos) throws IOException {
+		
+		int keys = dos.readInt();
+		for (int i=0; i<keys; i++) createFeature(dos.readInt(), 1.0);
+	
+		
+	}
+
+	final public static FV cat(FV f1,FV f2) {
+		if (f1==null) return f2;
+		if (f2==null) return f1;
+		return new FV(f1, f2);
+	}
+
+	final public static FV cat(FV f1,FV f2, FV f3) {
+		return FV.cat(f1, FV.cat(f2, f3));
+	}
+	final public static FV cat(FV f1,FV f2, FV f3, FV f4) {
+		return FV.cat(f1, FV.cat(f2, FV.cat(f3, f4)));
+	}
+
+	
+	final public static FV read(DataInputStream dis) throws IOException {
+		int cap = dis.readInt();
+		if (cap == 0) return null; 
+		return new FV(dis,cap);
+
+	}
+
+	/* (non-Javadoc)
+	 * @see is2.IFV#getScore()
+	 */
+	@Override
+	public double getScore() {
+		//System.out.println("not implemented");
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+	/* (non-Javadoc)
+	 * @see is2.IFV#clone()
+	 */
+	@Override
+	public IFV clone() {
+		FV f= new FV(this.size);
+		for(int i=0;i<this.size;i++) {
+			f.m_index[i]=m_index[i];
+		}
+		f.size=this.size;
+		return f;
+	}
+
+	
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/FVR.java b/dependencyParser/basic/mate-tools/src/is2/data/FVR.java
new file mode 100644
index 0000000..f0b6784
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/FVR.java
@@ -0,0 +1,468 @@
+package is2.data;
+
+
+
+import gnu.trove.TIntDoubleHashMap;
+
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+public final class FVR extends IFV { 
+	
+	private FVR subfv1;
+	private FVR subfv2;
+	private boolean negateSecondSubFV = false;
+	
+    private int size;
+   
+    
+    
+	// content of the nodes NxC
+	private int m_index[];
+	private float m_value[];
+	
+	// type of the nodes NxT
+	
+	public FVR() {
+		this(10);
+	}
+
+	public FVR(int initialCapacity) {
+		m_index = new int[initialCapacity];
+		m_value = new float[initialCapacity];
+	}
+
+/*
+	public FVR (FVR fv1, FVR fv2) {
+		subfv1 = fv1;
+		subfv2 = fv2;
+	}
+*/
+	public FVR (FVR fv1, FVR fv2, boolean negSecond) {
+		this(0);
+		subfv1 = fv1;
+		subfv2 = fv2;
+		negateSecondSubFV = negSecond;
+	}
+
+	/**
+	 * Read a feature vector
+	 * @param index
+	 * @param value
+	 */
+	public FVR(DataInputStream dos, int capacity) throws IOException {
+		this(capacity);
+		size= m_index.length;
+		
+		for (int i=0; i<size; i++) m_index[i] = dos.readInt();	
+	}
+
+
+	/**
+	 * Read a feature vector
+	 * @param index
+	 * @param value
+	 */
+	public FVR(DataInputStream dos) throws IOException {
+		this(dos.readInt());
+		size= m_index.length;
+		
+		for (int i=0; i<size; i++)  m_index[i] = dos.readInt();
+		
+		
+	}
+
+	/**
+     * Increases the capacity of this <tt>Graph</tt> instance, if
+     * necessary, to ensure  that it can hold at least the number of nodes
+     * specified by the minimum capacity argument. 
+     *
+     * @param   minCapacity   the desired minimum capacity.
+     */
+    private void ensureCapacity(int minCapacity) {
+	
+    	
+    	if (minCapacity > m_index.length) {
+    		
+    		int oldIndex[] = m_index;
+     		float oldValue[] = m_value;
+     	    	
+    		int newCapacity = ( m_index.length * 3)/2 + 1;
+    
+    		
+    		if (newCapacity < minCapacity) newCapacity = minCapacity;
+
+    		m_index = new int[newCapacity];
+     		m_value = new float[newCapacity];
+     	    
+     		System.arraycopy(oldIndex, 0, m_index, 0, oldIndex.length);
+     		System.arraycopy(oldValue, 0, m_value, 0, oldValue.length);
+    		
+    	}
+    }
+	
+   
+    final public int size() {
+	  return size;
+    }
+
+    final public boolean isEmpty() {
+	  return size == 0;
+    }
+
+    @Override
+	final public void clear() {
+    	size = 0;
+    }
+    
+    
+    final public int createFeature(int i, float v) {
+    	
+    	ensureCapacity(size+1); 
+    	m_index[size] =i;
+    	m_value[size] =v;
+    	size++;
+    	return size-1;
+    }
+   /* 
+    final public int createFeature(int i) {
+    	
+    	ensureCapacity(size+1); 
+    	m_index[size] =i;
+    	size++;
+    	return size-1;
+    }
+   */
+    
+	final public int getIndex(int i) {
+		return m_index[i];
+	}
+
+	public void setIndex(int p, int i) {
+		m_index[p] = i;
+	}
+    
+	
+	 /**
+     * Trims the capacity of this <tt>Graph</tt> instance to true size.
+     *  An application can use this operation to minimize
+     * the storage of an <tt>Graph</tt> instance.
+     */
+    public void trimToSize() {
+
+		if (size < m_index.length) {
+		
+		
+			int oldIndex[] = m_index;
+			
+			m_index = new int[size];
+			System.arraycopy(oldIndex, 0, m_index, 0, size);
+			
+		}
+		
+    }
+
+    
+	
+	
+    
+ 	final public void add(int i) {
+        if (i>=0) {
+			ensureCapacity(size+1); 
+			m_index[size] =i;
+			m_value[size] =1.0f;
+			size++;
+		}
+    }
+
+    final public void add(int i, float f) {
+        if (i>=0) createFeature(i,f);
+    }
+   
+	
+	// fv1 - fv2
+	public FVR getDistVector(FVR fl2) {
+		return new FVR(this, fl2, true);
+	}
+
+	
+	public double getScore(double[] parameters, boolean negate) {
+		double score = 0.0;
+
+		if (null != subfv1) {
+			score += subfv1.getScore(parameters, negate);
+
+			if (null != subfv2) {
+				if (negate) score += subfv2.getScore(parameters, !negateSecondSubFV);
+				else score += subfv2.getScore(parameters, negateSecondSubFV);
+				
+			}
+		}
+
+		if (negate) for(int i=0;i<size;i++)	score -= parameters[m_index[i]];
+		else for(int i=0;i<size;i++) score += parameters[m_index[i]];
+		
+			
+		return score;
+	}
+	
+	
+	final public float getScore(float[] parameters, boolean negate) {
+		float score = 0.0F;
+
+		if (null != subfv1) { 
+			score += subfv1.getScore(parameters, negate);
+
+			if (null != subfv2) {
+				if (negate) score += subfv2.getScore(parameters, !negateSecondSubFV);
+				else score += subfv2.getScore(parameters, negateSecondSubFV);
+				
+			}
+		}
+		
+		// warning changed the  value 
+		
+		if (negate) for(int i=0;i<size;i++)	score -= parameters[m_index[i]]*m_value[i];
+		else for(int i=0;i<size;i++) score += parameters[m_index[i]]*m_value[i];
+			
+		return score;
+	}
+
+	final public int getScore(short[] parameters, boolean negate) {
+		int score = 0;
+
+		if (null != subfv1) { 
+			score += subfv1.getScore(parameters, negate);
+
+			if (null != subfv2) {
+				if (negate) score += subfv2.getScore(parameters, !negateSecondSubFV);
+				else score += subfv2.getScore(parameters, negateSecondSubFV);
+				
+			}
+		}
+		
+		// warning changed the value 
+		
+		if (negate) for(int i=0;i<size;i++)	score -= parameters[m_index[i]]*m_value[i];
+		else for(int i=0;i<size;i++) score += parameters[m_index[i]]*m_value[i];
+			
+		return score;
+	}
+
+	
+	
+
+	
+	
+	public final void update(float[] parameters, float[] total, double alpha_k, double upd, boolean negate) {
+
+		if (null != subfv1) {
+			subfv1.update(parameters, total, alpha_k, upd, negate);
+
+			if (null != subfv2 && negate) {
+					subfv2.update(parameters, total, alpha_k, upd, !negateSecondSubFV);
+				} else {
+					subfv2.update(parameters, total, alpha_k, upd, negateSecondSubFV);
+				}
+			
+		}
+	
+		if (negate) {
+			for(int i=0;i<size;i++){ 
+				parameters[getIndex(i)] -= alpha_k*m_value[i];
+				total[getIndex(i)] -= upd*alpha_k*m_value[i];  
+			}
+		} else {
+			for(int i=0;i<size;i++){ 
+				parameters[getIndex(i)] += alpha_k*m_value[i];
+				total[getIndex(i)] += upd*alpha_k*m_value[i]; //
+			}
+		}
+
+
+	}
+	
+	
+
+//	private static IntIntHash hm1;
+//	private static IntIntHash hm2;
+	
+	private static TIntDoubleHashMap hd1;
+	private static TIntDoubleHashMap hd2;
+	
+	
+	public int dotProduct(FVR fl2) {
+
+		if (hd1==null) hd1 = new TIntDoubleHashMap(size(),0.4F);
+		else hd1.clear();
+		
+		addFeaturesToMap(hd1);
+		
+		if (hd2==null)hd2 = new TIntDoubleHashMap(fl2.size,0.4F);
+		else hd2.clear();
+		
+		fl2.addFeaturesToMap(hd2);
+
+		int[] keys = hd1.keys();
+
+		int result = 0;
+		for(int i = 0; i < keys.length; i++) result += hd1.get(keys[i])*hd2.get(keys[i]);
+
+		return result;
+
+	}
+
+	
+	private void addFeaturesToMap(TIntDoubleHashMap map) {
+		
+		if (null != subfv1) {
+			subfv1.addFeaturesToMap(map);
+
+			if (null != subfv2) {
+			 subfv2.addFeaturesToMap(map, negateSecondSubFV);
+				
+			}
+		}
+
+	
+		for(int i=0;i<size;i++) if (!map.adjustValue(getIndex(i), m_value[i])) map.put(getIndex(i), m_value[i]);
+	
+		
+	
+	}
+
+	
+	
+	private void addFeaturesToMap(IntIntHash map, boolean negate) {
+		
+		if (null != subfv1) {
+			subfv1.addFeaturesToMap(map, negate);
+
+			if (null != subfv2) {
+				if (negate)  subfv2.addFeaturesToMap(map, !negateSecondSubFV);
+				else  subfv2.addFeaturesToMap(map, negateSecondSubFV);
+				
+			}
+		}
+
+		if (negate) { 
+			for(int i=0;i<size;i++) if (!map  . adjustValue(getIndex(i), -1)) map.put(getIndex(i), -1);
+		} else {
+			for(int i=0;i<size;i++) if (!map.adjustValue(getIndex(i), 1)) map.put(getIndex(i), 1);
+		}
+		
+	
+	}
+
+	private void addFeaturesToMap(TIntDoubleHashMap map, boolean negate) {
+		
+		if (null != subfv1) {
+			subfv1.addFeaturesToMap(map, negate);
+
+			if (null != subfv2) {
+				if (negate)  subfv2.addFeaturesToMap(map, !negateSecondSubFV);
+				else  subfv2.addFeaturesToMap(map, negateSecondSubFV);
+				
+			}
+		}
+
+		if (negate) { 
+			for(int i=0;i<size;i++) if (!map  . adjustValue(getIndex(i), -m_value[i])) map.put(getIndex(i), -m_value[i]);
+		} else {
+			for(int i=0;i<size;i++) if (!map.adjustValue(getIndex(i), m_value[i])) map.put(getIndex(i), m_value[i]);
+		}
+		
+	
+	}
+	
+	
+	
+	@Override
+	public final String toString() {
+		StringBuilder sb = new StringBuilder();
+		toString(sb);
+		return sb.toString();
+	}
+
+	private final void toString(StringBuilder sb) {
+		if (null != subfv1) {
+			subfv1.toString(sb);
+
+			if (null != subfv2)
+				subfv2.toString(sb);
+		}
+		for(int i=0;i<size;i++)
+			sb.append(getIndex(i)).append('=').append(m_value[i]).append(' ');
+	}
+
+	public void writeKeys(DataOutputStream dos) throws IOException {
+		
+	//	int keys[] = keys();
+	//	dos.writeInt(keys.length);
+	//	for(int i=0;i<keys.length;i++) {
+	//		dos.writeInt(keys[i]);
+	//	}
+		
+		
+		//int keys[] = keys();
+		dos.writeInt(size);
+		for(int i=0;i<size;i++) {
+			dos.writeInt(m_index[i]);
+		}
+	
+	}
+
+	/*
+
+	final public static FVR cat(FVR f1,FVR f2) {
+		if (f1==null) return f2;
+		if (f2==null) return f1;
+		return new FVR(f1, f2);
+	}
+
+	final public static FVR cat(FVR f1,FVR f2, FVR f3) {
+		return FVR.cat(f1, FVR.cat(f2, f3));
+	}
+	final public static FVR cat(FVR f1,FVR f2, FVR f3, FVR f4) {
+		return FVR.cat(f1, FVR.cat(f2, FVR.cat(f3, f4)));
+	}
+	*/
+
+	
+	final public static FVR read(DataInputStream dis) throws IOException {
+		int cap = dis.readInt();
+		if (cap == 0) return null; 
+		return new FVR(dis,cap);
+
+	}
+
+	/* (non-Javadoc)
+	 * @see is2.IFV#getScore()
+	 */
+	@Override
+	public double getScore() {
+		System.out.println("not implemented");
+		new Exception().printStackTrace();
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+	/* (non-Javadoc)
+	 * @see is2.IFV#clone()
+	 */
+	@Override
+	public IFV clone() {
+		FVR f= new FVR(this.size);
+		for(int i=0;i<this.size;i++) {
+			f.m_index[i]=m_index[i];
+			f.m_value[i]=m_value[i];
+		}
+		f.size=this.size;
+		return f;
+	}
+
+	
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/IEncoder.java b/dependencyParser/basic/mate-tools/src/is2/data/IEncoder.java
new file mode 100755
index 0000000..03c4a45
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/IEncoder.java
@@ -0,0 +1,26 @@
+/**
+ * 
+ */
+package is2.data;
+
+import java.util.HashMap;
+
+/**
+ * @author Bernd Bohnet, 20.09.2009
+ * 
+ * 
+ */
+public interface IEncoder {
+	public int getValue(String a, String v);
+
+	/**
+	 * @param spath
+	 * @param substring
+	 */
+//	public int register(String spath, String substring);
+
+	/**
+	 * @return
+	 */
+//	public HashMap<String,Integer> getFeatureCounter();
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/IEncoderPlus.java b/dependencyParser/basic/mate-tools/src/is2/data/IEncoderPlus.java
new file mode 100644
index 0000000..2558d6e
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/IEncoderPlus.java
@@ -0,0 +1,28 @@
+/**
+ * 
+ */
+package is2.data;
+
+import java.util.HashMap;
+
+/**
+ * @author Bernd Bohnet, 20.09.2009
+ * 
+ * 
+ */
+public interface IEncoderPlus extends IEncoder {
+	
+	final public static String NONE="<None>";
+	
+	
+	/**
+	 * @param spath
+	 * @param substring
+	 */
+	public int register(String spath, String substring);
+
+	/**
+	 * @return
+	 */
+	public HashMap<String,Integer> getFeatureCounter();
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/IFV.java b/dependencyParser/basic/mate-tools/src/is2/data/IFV.java
new file mode 100755
index 0000000..28fbcfe
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/IFV.java
@@ -0,0 +1,28 @@
+package is2.data;
+
+public abstract class IFV {
+
+	//  public double score=0;
+	
+	  public abstract void add(int i);
+	
+	  public abstract double getScore();
+		  
+	  public abstract void clear();
+	  
+	  @Override
+	public abstract IFV clone();
+
+	/**
+	 * @param gvs
+	 * @param li
+	 */
+	public void add(long[] gvs, Long2IntInterface li, int l) {
+		for(int k=0;k<gvs.length;k++) {
+			if (gvs[k]==Integer.MIN_VALUE) break;	
+			 if (gvs[k]>0) add(li.l2i(gvs[k]+l));	
+		}
+	}
+
+	  
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/Instances.java b/dependencyParser/basic/mate-tools/src/is2/data/Instances.java
new file mode 100755
index 0000000..ccb26f9
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/Instances.java
@@ -0,0 +1,392 @@
+package is2.data;
+
+import java.util.BitSet;
+
+import is2.io.CONLLReader09;
+import is2.util.DB;
+
+
+
+public class Instances  {
+
+	
+	public IEncoder m_encoder;
+
+	
+	protected int size=0;
+	
+	protected int capacity;
+	
+	public int[][] forms;
+
+	public int[][] plemmas;
+	public int[][] glemmas;
+
+
+	public short[][] heads;
+	public short[][] pheads;
+
+	public short[][] labels;
+	public short[][] plabels;
+
+	public short[][] gpos;
+	public short[][] pposs;
+
+
+	public short[][][] feats;
+
+
+	public int[][] predicat;
+
+
+	public short[][] predicateId;
+
+
+	public short[][] semposition;
+
+
+	public short[][][] arg;
+
+
+	public short[][][] argposition;
+
+
+	public BitSet[] pfill;
+
+
+	public short[][] gfeats;
+	public short[][] pfeats;
+
+
+	public Instances() {}
+
+		
+	
+
+	public static int m_unkown = 0;
+	public static int m_count = 0;
+
+
+	public static boolean m_report;
+	public static boolean m_found =false;
+
+	
+	final public void setForm(int i, int p, String x) {
+		
+	
+		forms[i][p] = m_encoder.getValue(PipeGen.WORD,x);
+		if (forms[i][p]==-1) {
+			if (m_report) System.out.println("unkwrd "+x); 
+			m_unkown++;
+			m_found=true;
+		} 
+		m_count++;
+	}
+	
+
+
+	final public void setRel(int i, int p, String x) {
+		labels[i][p] = (short)m_encoder.getValue(PipeGen.REL,x);
+		
+	}
+	
+
+	final public void setHead(int i, int c, int p) {
+		heads[i][c] =(short)p;
+	}
+
+	final public int size() {	
+		return size;
+	}
+	public void setSize(int n) {
+		size=n;		
+	}
+
+
+
+
+	public void init(int ic, IEncoder mf) {
+		init(ic, mf, -1);
+	}
+
+
+	public void init(int ic, IEncoder mf, int version) {
+		capacity =ic;
+		m_encoder = mf;
+		
+		forms = new int[capacity][];
+		plemmas = new int[capacity][];
+		glemmas = new int[capacity][];
+		pposs= new short[capacity][];
+	
+		gpos= new short[capacity][];
+		labels= new short[capacity][];
+		heads= new short[capacity][];
+		plabels= new short[capacity][];
+		pheads= new short[capacity][];
+		feats = new short[capacity][][];
+		gfeats = new short[capacity][];
+		pfeats = new short[capacity][];
+		
+		predicat =new int[ic][];
+		predicateId = new short[ic][];
+		semposition = new short[ic][];
+		arg= new short[ic][][];
+		argposition= new short[ic][][];
+		
+		pfill = new BitSet[ic];
+	}
+
+
+	public int length(int i) {
+		return forms[i].length;
+	}
+
+
+	public int createInstance09(int length) {
+		
+		forms[size] = new int[length];
+		plemmas[size] = new int[length];
+		glemmas[size] = new int[length];
+	
+		pposs[size] = new short[length];
+		
+		gpos[size] = new short[length];
+	
+		labels[size] = new short[length];
+		heads[size] = new short[length];
+		
+		this.pfill[size] = new BitSet(length);
+		
+		feats[size] = new short[length][];
+		gfeats[size] = new short[length];
+		pfeats[size] = new short[length];
+		plabels[size] = new short[length];
+		pheads[size] = new short[length];
+		
+		size++;
+		
+		return size-1;
+		
+	}
+
+/*
+	public final void setPPos(int i, int p, String x) {
+		ppos[i][p] = (short)m_encoder.getValue(PipeGen.POS,x);
+		
+	}
+*/
+
+	public final void setPPoss(int i, int p, String x) {
+		pposs[i][p] = (short)m_encoder.getValue(PipeGen.POS,x);
+		
+	}
+
+
+	public final void setGPos(int i, int p, String x) {
+		gpos[i][p] = (short)m_encoder.getValue(PipeGen.POS,x);
+	}
+
+
+	public void setLemma(int i, int p, String x) {
+		plemmas[i][p] = m_encoder.getValue(PipeGen.WORD,x);	
+	}
+
+
+	public void setGLemma(int i, int p, String x) {
+		glemmas[i][p] = m_encoder.getValue(PipeGen.WORD,x);	
+	}
+
+
+	public void setFeats(int i, int p, String[] fts) {
+		if (fts==null) {
+			feats[i][p] =null;
+			return ;
+		}
+		feats[i][p] = new short[fts.length];
+		
+		for(int k=0;k<fts.length;k++) {
+			feats[i][p][k] =  (short)m_encoder.getValue(PipeGen.FEAT,fts[k]);		
+		}
+		
+	}
+
+
+	public void setFeature(int i, int p, String feature) {
+		if (feature==null) return;	
+		this.gfeats[i][p]= (short) m_encoder.getValue(PipeGen.FFEATS,feature);
+/*		if (gfeats[i][p]==-1) {
+			System.out.println("+"+feature);
+			new Exception().printStackTrace();
+			System.exit(0);
+		}
+		*/
+	}
+	public void setPFeature(int i, int p, String feature) {
+		if (feature==null) return;	
+		this.pfeats[i][p]= (short) m_encoder.getValue(PipeGen.FFEATS,feature);
+	}
+
+
+	public int getWValue(String v) {
+		return m_encoder.getValue(PipeGen.WORD, v);
+	}
+
+
+	public final void setPRel(int i, int p, String x) {
+		plabels[i][p] = (short)m_encoder.getValue(PipeGen.REL,x);	
+	}
+
+
+	public final void setPHead(int i, int c, int p) {
+		pheads[i][c] =(short)p;
+	}
+
+/*
+	public String toString(int c) {
+		StringBuffer s = new StringBuffer();
+		for(int i=0;i<length(c);i++) {
+			s.append(i).append('\t').append(forms[c][i]).append("\t_\t").append(ppos[c][i]).append('\t').
+			append('\t').append(heads[c][i]).append('\n');
+		}
+		
+		return s.toString();
+	}
+*/
+
+	/*
+	public void setPos(int i, int p, String x) {
+		ppos[i][p] = (short)m_encoder.getValue(PipeGen.POS,x);
+		
+	}
+*/
+
+	/**
+	 * Create the semantic representation
+	 * @param inst
+	 * @param it
+	 * @return
+	 */
+	public boolean createSem(int inst, SentenceData09 it) {
+		
+		boolean error = false;
+		
+		if (it.sem==null) return error;
+		
+		predicat[inst] = new int[it.sem.length];
+		semposition[inst] = new short[it.sem.length];
+		predicateId[inst] = new short[it.sem.length];
+	
+		if (it.sem!=null) {
+			arg[inst] = new short[it.sem.length][];
+			argposition[inst] =new short[it.sem.length][];
+		}
+		if (it.sem==null) return error;
+		
+		// init sems
+	
+		
+		
+		
+		for(int i=0;i<it.sem.length;i++) {
+	
+			String pred;
+			short predSense =0;
+			if (it.sem[i].indexOf('.')>0) {
+				pred = it.sem[i].substring(0, it.sem[i].indexOf('.'));
+				predSense = (short)m_encoder.getValue(PipeGen.SENSE, it.sem[i].substring(it.sem[i].indexOf('.')+1, it.sem[i].length()));
+				//Short.parseShort(it.sem[i].substring(it.sem[i].indexOf('.')+1, it.sem[i].length()));
+			} else {
+				pred = it.sem[i];	
+				predSense=(short)m_encoder.getValue(PipeGen.SENSE, "");
+			}
+		
+			predicat[inst][i] = m_encoder.getValue(PipeGen.PRED, pred);
+			predicateId[inst][i] = predSense;
+			 
+			semposition[inst][i]=(short)it.semposition[i];
+			
+			// this can happen too when no arguments have values
+			if (it.arg==null) {
+			//	DB.println("error  arg == null "+i+" sem"+it.sem[i]+" inst number "+inst);
+			//	error =true;
+				continue;
+			}
+			
+	
+			// last pred(s) might have no argument 
+			if (it.arg.length<=i) {
+			//	DB.println("error in instance "+inst+" argument list and number of predicates different arg lists: "+it.arg.length+" preds "+sem.length);
+			//	error =true;
+				continue;
+			}
+			
+			
+			// this happens from time to time, if the predicate has no arguments
+			if (it.arg[i]==null) {
+			//	DB.println("error no args for pred "+i+" "+it.sem[i]+" length "+it.ppos.length);
+				//		error =true;
+				continue;
+			}
+			
+			int argCount=it.arg[i].length;
+			arg[inst][i] = new short[it.arg[i].length];
+			argposition[inst][i] = new short[it.arg[i].length];
+			
+			// add the content of the argument
+			for(int a=0;a<argCount;a++) {
+				arg[inst][i][a]=(short)m_encoder.getValue(PipeGen.ARG, it.arg[i][a]);
+				argposition[inst][i][a]=(short)it.argposition[i][a];
+	
+				//System.out.print(" #"+a+" pos: "+argposition[inst][i][a]+"  "+it.arg[i][a]+" ");
+			}
+			//System.out.println("");
+			
+		}
+		
+		return error;
+		
+	}
+
+
+	public int predCount(int n) {
+		return pfill[n].cardinality();
+	}
+
+
+	/**
+	 * @param pscnt
+	 * @return
+	 */
+	public String print(int pscnt) {
+		StringBuilder s = new StringBuilder();
+		
+		for(int i=0;i<this.length(pscnt);i++) {
+			s.append(i+"\t"+forms[pscnt][i]+"\t"+this.glemmas[pscnt][i]+"\t"+this.plemmas[pscnt][i]+"\t"+this.gpos[pscnt][i]+"\t"
+					+this.pposs[pscnt][i]+"\t"+this.gfeats[pscnt][i]+"\t"+(this.feats[pscnt][i]!=null&&this.feats[pscnt][i].length>0?this.feats[pscnt][i][0]:null)+
+					"\t l "+(labels[pscnt]!=null&&labels[pscnt].length>i?labels[pscnt][i]:null)+"\t"+
+					"\t"+heads[pscnt][i]+"\t"+
+					(plabels[pscnt]!=null&&plabels[pscnt].length>i?plabels[pscnt][i]:null)+
+					"\t"+this.predicat[pscnt][i]+"\n");
+		}
+		return s.toString();
+	}
+
+	public String print1(int pscnt) {
+		StringBuilder s = new StringBuilder();
+		
+		for(int i=0;i<this.length(pscnt);i++) {
+			s.append(i+"\t"+forms[pscnt][i]+"\t"+"\t"+this.plemmas[pscnt][i]+"\t"+
+					+this.pposs[pscnt][i]+
+					"\t l "+(labels[pscnt]!=null&&labels[pscnt].length>i?labels[pscnt][i]:null)+"\t"+
+					"\t"+heads[pscnt][i]+"\t"+
+					(plabels[pscnt]!=null&&plabels[pscnt].length>i?plabels[pscnt][i]:null)+
+					"\n");
+		}
+		return s.toString();
+	}
+
+	
+	
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/InstancesTagger.java b/dependencyParser/basic/mate-tools/src/is2/data/InstancesTagger.java
new file mode 100644
index 0000000..8079222
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/InstancesTagger.java
@@ -0,0 +1,77 @@
+/**
+ * 
+ */
+package is2.data;
+
+import is2.data.IEncoder;
+import is2.data.Instances;
+import is2.data.SentenceData09;
+
+
+/**
+ * @author Dr. Bernd Bohnet, 06.11.2010
+ * 
+ * 
+ */
+public class InstancesTagger extends Instances {
+
+	public short[][][] chars; 
+	public int[][] formlc;
+
+	public void init(int ic, IEncoder mf) {
+		super.init(ic, mf,9);
+		chars = new short[capacity][][];
+		formlc = new int[capacity][];
+		//	System.out.println("create chars "+capacity );
+	}
+
+	public void fillChars(SentenceData09 instance, int i, int cend) {
+		chars[i] = new short[instance.length()][13];
+		formlc[i] = new int[instance.length()];
+		
+		
+		for(int k=0;k<instance.length();k++) {
+			chars[i][k][0]= (short) ( instance.forms[k].length()>0?m_encoder.getValue(PipeGen.CHAR, String.valueOf(instance.forms[k].charAt(0))):cend);
+			chars[i][k][1]= (short) ( instance.forms[k].length()>1?m_encoder.getValue(PipeGen.CHAR, String.valueOf(instance.forms[k].charAt(1))):cend);//m_encoder.getValue(PipeGen.CHAR, END);
+			chars[i][k][2]= (short) ( instance.forms[k].length()>2?m_encoder.getValue(PipeGen.CHAR, String.valueOf(instance.forms[k].charAt(2))):cend);
+			chars[i][k][3]= (short) ( instance.forms[k].length()>3?m_encoder.getValue(PipeGen.CHAR, String.valueOf(instance.forms[k].charAt(3))):cend);
+			chars[i][k][4]= (short) ( instance.forms[k].length()>4?m_encoder.getValue(PipeGen.CHAR, String.valueOf(instance.forms[k].charAt(4))):cend);
+			chars[i][k][5]= (short) ( instance.forms[k].length()>5?m_encoder.getValue(PipeGen.CHAR, String.valueOf(instance.forms[k].charAt(5))):cend);
+
+			chars[i][k][6]= (short) ( instance.forms[k].length()>0?m_encoder.getValue(PipeGen.CHAR,String.valueOf(instance.forms[k].charAt(instance.forms[k].length()-1))):cend);
+			chars[i][k][7]= (short) ( instance.forms[k].length()>1?m_encoder.getValue(PipeGen.CHAR,String.valueOf(instance.forms[k].charAt(instance.forms[k].length()-2))):cend);//m_encoder.getValue(PipeGen.CHAR, END);
+			chars[i][k][8]= (short) ( instance.forms[k].length()>2?m_encoder.getValue(PipeGen.CHAR,String.valueOf(instance.forms[k].charAt(instance.forms[k].length()-3))):cend);
+			chars[i][k][9]= (short) ( instance.forms[k].length()>3?m_encoder.getValue(PipeGen.CHAR,String.valueOf(instance.forms[k].charAt(instance.forms[k].length()-4))):cend);
+			chars[i][k][10]= (short) ( instance.forms[k].length()>4?m_encoder.getValue(PipeGen.CHAR,String.valueOf(instance.forms[k].charAt(instance.forms[k].length()-5))):cend);
+			chars[i][k][11] = (short)instance.forms[k].length();
+			chars[i][k][12] = (short) ( instance.forms[k].length()>0?m_encoder.getValue(PipeGen.CHAR, String.valueOf(instance.forms[k].charAt(0))):cend);
+			formlc[i][k] =m_encoder.getValue(PipeGen.WORD, instance.forms[k].toLowerCase());
+		}
+	}
+
+	public void fillChars(SentenceData09 instance, int i, String[] what,int cend) {
+		chars[i] = new short[instance.length()][13];
+		formlc[i] = new int[instance.length()];
+		
+		
+		for(int k=0;k<instance.length();k++) {
+			chars[i][k][0]= (short) m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(0)));
+			chars[i][k][1]= (short) ( what[k].length()>1?m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(1))):cend);//m_encoder.getValue(PipeGen.CHAR, END);
+			chars[i][k][2]= (short) ( what[k].length()>2?m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(2))):cend);
+			chars[i][k][3]= (short) ( what[k].length()>3?m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(3))):cend);
+			chars[i][k][4]= (short) ( what[k].length()>4?m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(4))):cend);
+			chars[i][k][5]= (short) ( what[k].length()>5?m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(5))):cend);
+
+			chars[i][k][6]= (short) ( m_encoder.getValue(PipeGen.CHAR,String.valueOf(what[k].charAt(what[k].length()-1))));
+			chars[i][k][7]= (short) ( what[k].length()>1?m_encoder.getValue(PipeGen.CHAR,String.valueOf(what[k].charAt(what[k].length()-2))):cend);//m_encoder.getValue(PipeGen.CHAR, END);
+			chars[i][k][8]= (short) ( what[k].length()>2?m_encoder.getValue(PipeGen.CHAR,String.valueOf(what[k].charAt(what[k].length()-3))):cend);
+			chars[i][k][9]= (short) ( what[k].length()>3?m_encoder.getValue(PipeGen.CHAR,String.valueOf(what[k].charAt(what[k].length()-4))):cend);
+			chars[i][k][10]= (short) ( what[k].length()>4?m_encoder.getValue(PipeGen.CHAR,String.valueOf(what[k].charAt(what[k].length()-5))):cend);
+			chars[i][k][11] = (short)what[k].length();
+			formlc[i][k] =m_encoder.getValue(PipeGen.WORD, what[k].toLowerCase());
+		}
+	}
+
+	
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/IntIntHash.java b/dependencyParser/basic/mate-tools/src/is2/data/IntIntHash.java
new file mode 100644
index 0000000..4aec043
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/IntIntHash.java
@@ -0,0 +1,270 @@
+package is2.data;
+
+
+
+import java.util.Arrays;
+
+final public class IntIntHash  {
+
+
+	protected int _size;
+	protected int _free;
+	protected float _loadFactor;
+	public int _maxSize;
+	protected int _autoCompactRemovesRemaining;
+	protected float _autoCompactionFactor;
+	public int _set[];
+	private  int _values[];
+
+
+	public IntIntHash() {
+		this(102877, 0.5F);
+	}
+
+
+	public IntIntHash(int initialCapacity, float loadFactor) {
+		_loadFactor = loadFactor;
+		_autoCompactionFactor = loadFactor;
+		setUp((int)Math.ceil(initialCapacity / loadFactor));
+	}
+
+
+	public int size()  { return _size;}
+
+	public void ensureCapacity(int desiredCapacity) {
+
+		if(desiredCapacity > _maxSize - size()) {
+			rehash(PrimeFinder.nextPrime((int)Math.ceil((desiredCapacity + size()) / _loadFactor) + 1));
+			computeMaxSize(capacity());
+		}
+	}
+
+	public void compact()   {
+		rehash(PrimeFinder.nextPrime((int)Math.ceil(size() / _loadFactor) + 1));
+		computeMaxSize(capacity());
+		if(_autoCompactionFactor != 0.0F) computeNextAutoCompactionAmount(size());
+	}
+
+	public void setAutoCompactionFactor(float factor) {
+		if(factor < 0.0F)  {
+			throw new IllegalArgumentException((new StringBuilder()).append("Factor must be >= 0: ").append(factor).toString());
+		} else
+		{
+			_autoCompactionFactor = factor;
+			return;
+		}
+	}
+
+	public float getAutoCompactionFactor() {     return _autoCompactionFactor; }
+
+
+	private void computeMaxSize(int capacity)
+	{
+		_maxSize = Math.min(capacity - 1, (int)Math.floor(capacity * _loadFactor));
+		_free = capacity - _size;
+	}
+
+	private void computeNextAutoCompactionAmount(int size)
+	{
+		if(_autoCompactionFactor != 0.0F)
+			_autoCompactRemovesRemaining = Math.round(size * _autoCompactionFactor);
+	}
+
+	protected final void postInsertHook(boolean usedFreeSlot)
+	{
+		if(usedFreeSlot)  _free--;
+		if(++_size > _maxSize || _free == 0) {
+			int newCapacity = _size <= _maxSize ? capacity() : PrimeFinder.nextPrime(capacity() << 1);
+			rehash(newCapacity);
+			computeMaxSize(capacity());
+		}
+	}
+
+	protected int calculateGrownCapacity() { return capacity() << 1; }
+
+	protected int capacity()  { return _values.length; }
+
+	public boolean contains(int val)   { return index(val) >= 0;}
+
+	private int index(int v) {
+
+		int length = _set.length;
+		int index =  Math.abs((computeHashCode(v) /*& 2147483647*/ ) % length);
+		
+		while(true) {
+			// first
+			long l =_set[index];
+			if (l == 0) {
+	//			good++;
+				return -1;
+			}
+			// second 
+			if (l == v) {
+				return index;
+			}
+			if(--index < 0) index += length;			
+		} 
+			//return -1;
+	}
+
+	protected int insertionIndex(long val)
+	{
+		int length = _set.length;
+		int index =  Math.abs((computeHashCode(val) /*& 2147483647*/ ) % length);
+		while(true) {
+			if(_set[index] == 0)  return index;
+			if(_set[index] == val) return -index - 1;
+			if(--index < 0) index += length;
+
+		} 
+	}
+
+	public int computeHashCode(long value)
+	{
+			return (int)(( value ^ (value&0xffffffff00000000L) >>> 32 ) *31);//0x811c9dc5 ^ // 29
+	}
+
+
+
+
+
+
+	protected int setUp(int initialCapacity)
+	{
+		int capacity = PrimeFinder.nextPrime(initialCapacity);
+		computeMaxSize(capacity);
+		computeNextAutoCompactionAmount(initialCapacity);
+		_set = new int[capacity];
+		_values = new int[capacity];
+		return capacity;
+	}
+
+	public void put(int key, int value)
+	{
+		int index = insertionIndex(key);
+	    doPut(key, value, index);
+	}
+	private void doPut(int key, int value, int index)
+	{
+		boolean isNewMapping = true;
+		if(index < 0)
+		{
+			index = -index - 1;
+			isNewMapping = false;
+		}		
+		_set[index] = key;
+		_values[index] = value;
+		if(isNewMapping) postInsertHook(true);
+	
+	}
+
+	protected void rehash(int newCapacity)
+	{
+		int oldCapacity = _set.length;
+		int oldKeys[] = _set;
+		int oldVals[] = _values;
+		_set = new int[newCapacity];
+		_values = new int[newCapacity];
+		int i = oldCapacity;
+		
+		while(true){
+			if(i-- <= 0) break;
+			if(oldVals[i] != 0) {
+				int o = oldKeys[i];
+				int index = insertionIndex(o);
+				_set[index] = o;
+				_values[index] = oldVals[i];
+			}
+		}
+	}
+
+	int index =0;
+	
+	
+	public int get(int key)
+	{
+		int index = index(key);
+		return index >= 0 ? _values[index] : 0;
+	}
+
+	
+	public void clear()
+	{
+		_size = 0;
+		_free = capacity();
+		Arrays.fill(_set, 0, _set.length, 0);
+	//	Arrays.fill(_values, 0, _values.length, 0);
+	}
+
+	public int remove(int key)
+	{
+		int prev = 0;
+		int index = index(key);
+		if(index >= 0)
+		{
+			prev = _values[index];
+			_values[index] = 0;
+			_set[index] = 0;
+			_size--;
+			if(_autoCompactionFactor != 0.0F)  {
+				_autoCompactRemovesRemaining--;
+				if( _autoCompactRemovesRemaining <= 0) compact();
+			}
+		}
+		return prev;
+	}
+
+
+	public int[] getValues()
+	{
+		int vals[] = new int[size()];
+		int v[] = _values;
+		int i = v.length;
+		int j = 0;
+		do
+		{
+			if(i-- <= 0) break;
+			if(v[i] != 0) vals[j++] = v[i];
+		} while(true);
+		return vals;
+	}
+
+	public int[] keys()
+	{
+		int keys[] = new int[size()];
+		int k[] = _set;
+		//   byte states[] = _states;
+		int i = k.length;
+		int j = 0;
+		do
+		{
+			if(i-- <= 0)
+				break;
+			if(k[i] != 0)
+				keys[j++] = k[i];
+		} while(true);
+		return keys;
+	}
+
+
+	/**
+	 * @param index2
+	 * @param i
+	 * @return
+	 */
+	public boolean adjustValue(int key, int i) {
+		int index = index(key);
+		if (index >= 0){ 
+			 _values[index] +=i;
+			return true;
+		}
+		return false;
+	}
+
+
+
+
+
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/Long2Int.java b/dependencyParser/basic/mate-tools/src/is2/data/Long2Int.java
new file mode 100755
index 0000000..e505cb0
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/Long2Int.java
@@ -0,0 +1,113 @@
+package is2.data;
+
+
+
+/**
+ * @author Bernd Bohnet, 01.09.2009
+ * 
+ * Maps for the Hash Kernel the long values to the int values.
+ */
+final public class Long2Int implements Long2IntInterface {
+
+	
+	public Long2Int() {
+		size=115911564;
+	}
+	
+	
+	public Long2Int(int s) {
+		size=s;
+	}
+	
+	public  static void main(String args[]) {
+		
+		long l =123456;
+		long l2 =1010119;
+		System.out.println("l \t"+l+"\t"+printBits(l));
+
+		long x =100000000;
+		System.out.println("1m\t"+l2+"\t"+printBits(x)+"\t"+x);
+
+		System.out.println("l2\t"+l2+"\t"+printBits(l));
+
+		System.out.println("l2*l\t"+l2+"\t"+printBits(l*l2)+" \t "+l*l2);
+		
+		System.out.println("l2*l*l2\t"+l2+"\t"+printBits(l*l2*l2)+" \t "+l*l2*l2);
+		
+		System.out.println("l2*l*l2\t"+l2+"\t"+printBits(l*l2*l2*l2)+" \t "+l*l2*l2*l2);
+		
+		
+		System.out.println("l2*l*l2\t"+l2+"\t"+printBits((l*l2)%0xfffff)+" \t "+l*l2*l2*l2+"\t "+0xfffff);
+		System.out.println("l2*l*l2\t"+l2+"\t"+printBits((l*l2)&0xfffffff)+" \t "+l*l2*l2*l2);
+	}
+	
+	
+	/** Integer counter for long2int */
+	final private int size; //0x03ffffff //0x07ffffff
+	                       
+				
+	/* (non-Javadoc)
+	 * @see is2.sp09k9992.Long2IntIterface#size()
+	 */
+	public  int size() {return size;}
+		
+	/* (non-Javadoc)
+	 * @see is2.sp09k9992.Long2IntIterface#start()
+	 * has no meaning for this implementation
+	 */
+	final public void start() {}
+		
+
+	/* (non-Javadoc)
+	 * @see is2.sp09k9992.Long2IntIterface#l2i(long)
+	 */
+	final public int l2i(long l) {		
+		if (l<0) return -1;
+		
+		// this works well LAS 88.138
+	//	int r= (int)(( l ^ (l&0xffffffff00000000L) >>> 29 ));//0x811c9dc5 ^ // 29
+	//	return Math.abs(r % size);
+		// this works a bit better and good with 0x03ffffff 
+	//	
+		/*
+		long r= l;//26
+		l = (l>>12)&0xfffffffffffff000L;
+		r ^= l;//38
+		l = (l>>11)&0xffffffffffffc000L;
+		r ^= l;//49
+		l = (l>>9)& 0xffffffffffff0000L; //53
+		r ^= l;//58
+		l = (l>>7)&0xfffffffffffc0000L; //62
+		r ^=l;//65
+		int x = (int)r;
+		x = x % size;
+	//	return x >= 0 ? x : -x ;// Math.abs(r % size);
+
+		*/
+		//            26 0x03ffffff
+		// together with 0x07ffffff 27 88.372
+		long r= l;// 27
+		l = (l>>13)&0xffffffffffffe000L;
+		r ^= l;   // 40
+		l = (l>>11)&0xffffffffffff0000L;
+		r ^= l;   // 51
+		l = (l>>9)& 0xfffffffffffc0000L; //53
+		r ^= l;  // 60
+		l = (l>>7)& 0xfffffffffff00000L; //62
+		r ^=l;    //67
+		int x = ((int)r) % size;
+	
+		return x >= 0 ? x : -x ; 
+	}
+	
+	static public StringBuffer printBits(long out) {
+		StringBuffer s = new StringBuffer();
+	
+		for(int k=0;k<65;k++) {
+			s.append((out & 1)==1?"1":"0");
+			out >>=1;
+		}
+		s.reverse();
+		return s;
+	}
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/Long2IntExact.java b/dependencyParser/basic/mate-tools/src/is2/data/Long2IntExact.java
new file mode 100644
index 0000000..62f6375
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/Long2IntExact.java
@@ -0,0 +1,60 @@
+package is2.data;
+
+
+
+/**
+ * @author Bernd Bohnet, 01.09.2009
+ * 
+ * Maps for the Hash Kernel the long values to the int values.
+ */
+final public class Long2IntExact implements Long2IntInterface {
+
+	static gnu.trove.TLongIntHashMap mapt = new gnu.trove.TLongIntHashMap();
+	
+	static int cnt=0;
+
+	
+	
+	public Long2IntExact() {
+		size=115911564;
+	} 
+	
+	
+	public Long2IntExact(int s) {
+		size=s;
+	}
+	
+	
+	/** Integer counter for long2int */
+	final private int size; //0x03ffffff //0x07ffffff
+	                       
+				
+	/* (non-Javadoc)
+	 * @see is2.sp09k9992.Long2IntIterface#size()
+	 */
+	public  int size() {return size;}
+		
+	/* (non-Javadoc)
+	 * @see is2.sp09k9992.Long2IntIterface#start()
+	 * has no meaning for this implementation
+	 */
+	final public void start() {}
+		
+
+	/* (non-Javadoc)
+	 * @see is2.sp09k9992.Long2IntIterface#l2i(long)
+	 */
+	final public int l2i(long l) {		
+		if (l<0) return -1;
+		
+		int i = mapt.get(l);
+		if (i!=0) return i;
+		
+		if (i==0 && cnt<size-1) {
+			cnt++;
+			mapt.put(l, cnt);
+			return cnt;
+		}
+		return -1;
+	}
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/Long2IntInterface.java b/dependencyParser/basic/mate-tools/src/is2/data/Long2IntInterface.java
new file mode 100755
index 0000000..a6cba63
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/Long2IntInterface.java
@@ -0,0 +1,15 @@
+package is2.data;
+
+public interface Long2IntInterface {
+
+	public abstract int size();
+
+
+	/** 
+	 * Maps a long to a integer value. This is very useful to save memory for sparse data long values 
+	 * @param l
+	 * @return the integer
+	 */
+	public abstract int l2i(long l);
+
+}
\ No newline at end of file
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/Long2IntQuick.java b/dependencyParser/basic/mate-tools/src/is2/data/Long2IntQuick.java
new file mode 100644
index 0000000..adbe57d
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/Long2IntQuick.java
@@ -0,0 +1,47 @@
+package is2.data;
+
+
+
+/**
+ * @author Bernd Bohnet, 01.09.2009
+ * 
+ * Maps for the Hash Kernel the long values to the int values.
+ */
+final public class Long2IntQuick implements Long2IntInterface {
+
+
+	/** Integer counter for long2int */
+	final private int size;
+	
+	public Long2IntQuick() {
+		size=0x07ffffff;
+	}
+	
+	
+	public Long2IntQuick(int s) {
+		size=s;
+	}
+	
+					
+	/* (non-Javadoc)
+	 * @see is2.sp09k9992.Long2IntIterface#size()
+	 */
+	public  int size() {return size;}
+		
+	/* (non-Javadoc)
+	 * @see is2.sp09k9992.Long2IntIterface#start()
+	 * has no meaning for this implementation
+	 */
+		
+
+	/* (non-Javadoc)
+	 * @see is2.sp09k9992.Long2IntIterface#l2i(long)
+	 */
+	final public int l2i(long r) {		
+		long l = (r>>16)&0xfffffffffffff000L;
+		r ^= l;   
+		r ^= l = (l>>12)&0xffffffffffff0000L;   
+		r ^= l = (l>>8)& 0xfffffffffffc0000L;  
+		return (int)(r % size);
+	}
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/MFB.java b/dependencyParser/basic/mate-tools/src/is2/data/MFB.java
new file mode 100755
index 0000000..04c36ae
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/MFB.java
@@ -0,0 +1,256 @@
+package is2.data;
+
+
+import is2.util.DB;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map.Entry;
+
+/**
+ * Map Features, do not map long to integer
+ * 
+ * @author Bernd Bohnet, 20.09.2009
+ */
+
+final public class MFB  implements IEncoderPlus {
+ 
+	/** The features and its values */
+	static private final HashMap<String,HashMap<String,Integer>> m_featureSets = new HashMap<String,HashMap<String,Integer>>();
+
+	/** The feature class and the number of values */
+	static private final HashMap<String,Integer> m_featureCounters = new HashMap<String,Integer>();
+
+	/** The number of bits needed to encode a feature */
+	static final HashMap<String,Integer> m_featureBits = new HashMap<String,Integer>();
+	
+	/** Integer counter for long2int */
+	static private int count=0;
+		
+	/** Stop growing */
+	public boolean stop=false;
+	
+	final public static String NONE="<None>";
+	
+	
+	
+	
+		
+	 
+	
+	public MFB () {}
+	
+	
+	public  int size() {return count;}
+	
+	
+	
+	/**
+	 * Register an attribute class, if it not exists and add a possible value
+	 * @param type
+	 * @param type2
+	 */
+	 final public int  register(String a, String v) {
+
+			synchronized(m_featureCounters) {
+		
+		HashMap<String,Integer> fs = getFeatureSet().get(a);
+		if (fs==null) {
+			fs = new HashMap<String,Integer>();
+			getFeatureSet().put(a, fs);
+			fs.put(NONE, 0);
+			getFeatureCounter().put(a, 1);
+		}
+		
+		Integer i = fs.get(v);
+		if (i==null) {
+			Integer c = getFeatureCounter().get(a);
+			fs.put(v, c);
+			c++;
+			getFeatureCounter().put(a,c);
+			return c-1;
+		} else return i;
+			}
+	}
+	
+	/**
+	 * Calculates the number of bits needed to encode a feature
+	 */
+	 public void calculateBits() {
+		
+		int total=0;
+		for(Entry<String,Integer> e : getFeatureCounter().entrySet() ){
+			int bits =(int)Math.ceil((Math.log(e.getValue()+1)/Math.log(2)));
+			m_featureBits.put(e.getKey(), bits);
+			total+=bits;
+		//	System.out.println(" "+e.getKey()+" bits "+bits+" number "+(e.getValue()+1));
+		}
+		
+//		System.out.println("total number of needed bits "+total);
+	}
+	
+	
+	
+	public  String toString() {
+		
+		StringBuffer content = new StringBuffer();
+		for(Entry<String,Integer> e : getFeatureCounter().entrySet() ){
+			 content.append(e.getKey()+" "+e.getValue());
+			 content.append(':');
+	//		 HashMap<String,Integer> vs = getFeatureSet().get(e.getKey());
+			 content.append(getFeatureBits(e.getKey()));
+			 
+			 /*if (vs.size()<120)
+			 for(Entry<String,Integer> e2 : vs.entrySet()) {
+				 content.append(e2.getKey()+" ("+e2.getValue()+") ");
+			 }*/
+			 content.append('\n');
+				
+		}
+		return content.toString();
+	}
+	
+	
+	
+	static final public short getFeatureBits(String a) {
+		if(m_featureBits.get(a)==null) return 0;
+		return (short)m_featureBits.get(a).intValue();
+	}
+
+	
+
+	/**
+	 * Get the integer place holder of the string value v of the type a
+	 * 
+	 * @param t the type
+	 * @param v the value 
+	 * @return the integer place holder of v
+	 */
+	 final public int getValue(String t, String v) {
+		
+		if (m_featureSets.get(t)==null) return -1;
+		Integer vi = m_featureSets.get(t).get(v);
+		if (vi==null) return -1; //stop && 
+		return vi.intValue();
+	}
+
+	 /**
+	  * Static version of getValue
+	  * @see getValue
+	  */
+	static final public int getValueS(String a, String v) {
+			
+			if (m_featureSets.get(a)==null) return -1;
+			Integer vi = m_featureSets.get(a).get(v);
+			if (vi==null) return -1; //stop && 
+			return vi.intValue();
+		}
+	
+	 public int hasValue(String a, String v) {
+		
+		Integer vi = m_featureSets.get(a).get(v);
+		if (vi==null) return -1;
+		return vi.intValue();
+	}
+	
+	
+	public static String printBits(int k) {
+		StringBuffer s = new StringBuffer();
+		for(int i =0;i<31;i++) {
+			s.append((k&0x00000001)==1?'1':'0');
+			k=k>>1;
+			
+		}
+		s.reverse();
+		return s.toString();
+	}
+	
+	
+
+   
+   
+   
+   
+	/** 
+	 * Maps a long to a integer value. This is very useful to save memory for sparse data long values 
+	 * @param l
+	 * @return the integer
+	 */
+	static public  int misses = 0;
+	static public  int good = 0;
+		
+
+	
+	
+	/**
+	 * Write the data
+	 * @param dos
+	 * @throws IOException
+	 */
+    static public void writeData(DataOutputStream dos) throws IOException {
+        dos.writeInt(getFeatureSet().size());
+       // DB.println("write"+getFeatureSet().size());
+        for(Entry<String, HashMap<String,Integer>> e : getFeatureSet().entrySet()) {
+            dos.writeUTF(e.getKey());
+            dos.writeInt(e.getValue().size());
+        
+            for(Entry<String,Integer> e2 : e.getValue().entrySet()) {
+  
+            	if(e2.getKey()==null) DB.println("key "+e2.getKey()+" value "+e2.getValue()+" e -key "+e.getKey());
+                dos.writeUTF(e2.getKey()); 
+                dos.writeInt(e2.getValue());
+            
+             }          
+                
+        }
+    }
+    public void read(DataInputStream din) throws IOException {
+		 
+		int size = din.readInt();
+		for(int i=0; i<size;i++) {
+			String k = din.readUTF();
+			int size2 = din.readInt();
+			
+			HashMap<String,Integer> h = new HashMap<String,Integer>();
+			getFeatureSet().put(k,h);
+			for(int j = 0;j<size2;j++) {
+				h.put(din.readUTF(), din.readInt());
+			}
+			getFeatureCounter().put(k, size2);
+		}
+
+    	count =size;
+	//	stop();
+ 		calculateBits();
+	}
+
+	
+	/** 
+	 * Clear the data
+	 */
+    static public void clearData() {
+      getFeatureSet().clear();
+      m_featureBits.clear();
+      getFeatureSet().clear();
+    }
+
+    public HashMap<String,Integer> getFeatureCounter() {
+		return m_featureCounters;
+	}
+
+	static public HashMap<String,HashMap<String,Integer>> getFeatureSet() {
+		return m_featureSets;
+	}
+	
+	static public String[] reverse(HashMap<String,Integer> v){
+		String[] set = new String[v.size()];
+		for(Entry<String,Integer> e : v.entrySet()) {
+			set[e.getValue()]=e.getKey();
+		}
+		return set;
+	}
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/MFC.java b/dependencyParser/basic/mate-tools/src/is2/data/MFC.java
new file mode 100644
index 0000000..bb1f27a
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/MFC.java
@@ -0,0 +1,246 @@
+package is2.data;
+
+
+import is2.util.DB;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map.Entry;
+
+/**
+ * Map Features, do not map long to integer
+ * 
+ * @author Bernd Bohnet, 17.09.2011
+ */
+
+final public class MFC  implements IEncoderPlus {
+ 
+	/** The features and its values */
+	private final HashMap<String,HashMap<String,Integer>> m_featureSets = new HashMap<String,HashMap<String,Integer>>();
+
+	/** The feature class and the number of values */
+	private final HashMap<String,Integer> m_featureCounters = new HashMap<String,Integer>();
+
+	/** The number of bits needed to encode a feature */
+	final HashMap<String,Integer> m_featureBits = new HashMap<String,Integer>();
+	
+	/** Integer counter for long2int */
+	private int count=0;
+			
+	
+	public MFC () {}
+	
+	
+	public  int size() {return count;}
+	
+	
+	
+	/**
+	 * Register an attribute class, if it not exists and add a possible value
+	 * @param type
+	 * @param type2
+	 */
+	 final public int  register(String a, String v) {
+
+			synchronized(m_featureCounters) {
+		
+		HashMap<String,Integer> fs = getFeatureSet().get(a);
+		if (fs==null) {
+			fs = new HashMap<String,Integer>();
+			getFeatureSet().put(a, fs);
+			fs.put(NONE, 0);
+			getFeatureCounter().put(a, 1);
+		}
+		
+		Integer i = fs.get(v);
+		if (i==null) {
+			Integer c = getFeatureCounter().get(a);
+			fs.put(v, c);
+			c++;
+			getFeatureCounter().put(a,c);
+			return c-1;
+		} else return i;
+			}
+	}
+	
+	/**
+	 * Calculates the number of bits needed to encode a feature
+	 */
+	 public void calculateBits() {
+		
+		int total=0;
+		for(Entry<String,Integer> e : getFeatureCounter().entrySet() ){
+			int bits =(int)Math.ceil((Math.log(e.getValue()+1)/Math.log(2)));
+			m_featureBits.put(e.getKey(), bits);
+			total+=bits;
+		//	System.out.println(" "+e.getKey()+" bits "+bits+" number "+(e.getValue()+1));
+		}
+		
+//		System.out.println("total number of needed bits "+total);
+	}
+	
+	
+	
+	public  String toString() {
+		
+		StringBuffer content = new StringBuffer();
+		for(Entry<String,Integer> e : getFeatureCounter().entrySet() ){
+			 content.append(e.getKey()+" "+e.getValue());
+			 content.append(':');
+	//		 HashMap<String,Integer> vs = getFeatureSet().get(e.getKey());
+			 content.append(getFeatureBits(e.getKey()));
+			 
+			 /*if (vs.size()<120)
+			 for(Entry<String,Integer> e2 : vs.entrySet()) {
+				 content.append(e2.getKey()+" ("+e2.getValue()+") ");
+			 }*/
+			 content.append('\n');
+				
+		}
+		return content.toString();
+	}
+	
+	
+	
+	final public short getFeatureBits(String a) {
+		if(m_featureBits.get(a)==null) return 0;
+		return (short)m_featureBits.get(a).intValue();
+	}
+
+	
+
+	/**
+	 * Get the integer place holder of the string value v of the type a
+	 * 
+	 * @param t the type
+	 * @param v the value 
+	 * @return the integer place holder of v
+	 */
+	 final public int getValue(String t, String v) {
+		
+		if (m_featureSets.get(t)==null) return -1;
+		Integer vi = m_featureSets.get(t).get(v);
+		if (vi==null) return -1; //stop && 
+		return vi.intValue();
+	}
+
+	 /**
+	  * Static version of getValue
+	  * @see getValue
+	  */
+	final public int getValueS(String a, String v) {
+			
+			if (m_featureSets.get(a)==null) return -1;
+			Integer vi = m_featureSets.get(a).get(v);
+			if (vi==null) return -1; //stop && 
+			return vi.intValue();
+		}
+	
+	 public int hasValue(String a, String v) {
+		
+		Integer vi = m_featureSets.get(a).get(v);
+		if (vi==null) return -1;
+		return vi.intValue();
+	}
+	
+	
+	public static String printBits(int k) {
+		StringBuffer s = new StringBuffer();
+		for(int i =0;i<31;i++) {
+			s.append((k&0x00000001)==1?'1':'0');
+			k=k>>1;
+			
+		}
+		s.reverse();
+		return s.toString();
+	}
+	
+	
+
+   
+   
+   
+   
+	/** 
+	 * Maps a long to a integer value. This is very useful to save memory for sparse data long values 
+	 * @param l
+	 * @return the integer
+	 */
+	static public  int misses = 0;
+	static public  int good = 0;
+		
+
+	
+	
+	/**
+	 * Write the data
+	 * @param dos
+	 * @throws IOException
+	 */
+    public void writeData(DataOutputStream dos) throws IOException {
+        dos.writeInt(getFeatureSet().size());
+       // DB.println("write"+getFeatureSet().size());
+        for(Entry<String, HashMap<String,Integer>> e : getFeatureSet().entrySet()) {
+            dos.writeUTF(e.getKey());
+            dos.writeInt(e.getValue().size());
+        
+            for(Entry<String,Integer> e2 : e.getValue().entrySet()) {
+  
+            	if(e2.getKey()==null) DB.println("key "+e2.getKey()+" value "+e2.getValue()+" e -key "+e.getKey());
+                dos.writeUTF(e2.getKey()); 
+                dos.writeInt(e2.getValue());
+            
+             }          
+                
+        }
+    }
+    public void read(DataInputStream din) throws IOException {
+		 
+		int size = din.readInt();
+		for(int i=0; i<size;i++) {
+			String k = din.readUTF();
+			int size2 = din.readInt();
+			
+			HashMap<String,Integer> h = new HashMap<String,Integer>();
+			getFeatureSet().put(k,h);
+			for(int j = 0;j<size2;j++) {
+				h.put(din.readUTF(), din.readInt());
+			}
+			getFeatureCounter().put(k, size2);
+		}
+
+    	count =size;
+	//	stop();
+ 		calculateBits();
+	}
+
+	
+	/** 
+	 * Clear the data
+	 */
+     public void clearData() {
+      getFeatureSet().clear();
+      m_featureBits.clear();
+      getFeatureSet().clear();
+    }
+
+    public HashMap<String,Integer> getFeatureCounter() {
+		return m_featureCounters;
+	}
+
+	 public HashMap<String,HashMap<String,Integer>> getFeatureSet() {
+		return m_featureSets;
+	}
+	
+	 public String[] reverse(HashMap<String,Integer> v){
+		String[] set = new String[v.size()];
+		for(Entry<String,Integer> e : v.entrySet()) {
+			set[e.getValue()]=e.getKey();
+		}
+		return set;
+	}
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/MFO.java b/dependencyParser/basic/mate-tools/src/is2/data/MFO.java
new file mode 100755
index 0000000..ff4d43e
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/MFO.java
@@ -0,0 +1,386 @@
+package is2.data;
+
+
+import is2.util.DB;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map.Entry;
+
+/**
+ * Map Features, do not map long to integer
+ * 
+ * @author Bernd Bohnet, 20.09.2009
+ */
+
+final public class MFO  implements IEncoderPlus {
+
+	/** The features and its values */
+	static private final HashMap<String,HashMap<String,Integer>> m_featureSets = new HashMap<String,HashMap<String,Integer>>();
+
+	/** The feature class and the number of values */
+	static private final HashMap<String,Integer> m_featureCounters = new HashMap<String,Integer>();
+
+	/** The number of bits needed to encode a feature */
+	static final HashMap<String,Integer> m_featureBits = new HashMap<String,Integer>();
+
+	final public static String NONE="<None>";
+
+	final public static class Data4 {
+		public int shift;
+		public short a0,a1,a2,a3,a4,a5,a6,a7,a8,a9;
+		public int v0,v1,v2,v3,v4,v5,v6,v7,v8,v9; 
+
+		final public long calcs(int b, long v, long l) {
+			if (l<0) return l;
+			l |= v<<shift;
+			shift +=b;
+			return l;
+		}
+
+	}
+
+	public MFO () {}
+
+
+
+
+
+	/**
+	 * Register an attribute class, if it not exists and add a possible value
+	 * @param type
+	 * @param type2
+	 */
+	 final public int register(String a, String v) {
+
+		HashMap<String,Integer> fs = getFeatureSet().get(a);
+		if (fs==null) {
+			fs = new HashMap<String,Integer>();
+			getFeatureSet().put(a, fs);
+			fs.put(NONE, 0);
+			getFeatureCounter().put(a, 1);
+		}
+		Integer c = getFeatureCounter().get(a);
+
+		Integer i = fs.get(v);
+		if (i==null) {
+			fs.put(v, c);
+			c++;
+			getFeatureCounter().put(a,c);
+			return c-1;
+		} else return i;
+	}
+
+	/**
+	 * Calculates the number of bits needed to encode a feature
+	 */
+	 public void calculateBits() {
+
+		int total=0;
+		for(Entry<String,Integer> e : getFeatureCounter().entrySet() ){
+			int bits =(int)Math.ceil((Math.log(e.getValue()+1)/Math.log(2)));
+			m_featureBits.put(e.getKey(), bits);
+			total+=bits;
+			//	System.out.println(" "+e.getKey()+" bits "+bits+" number "+(e.getValue()+1));
+		}
+
+		//		System.out.println("total number of needed bits "+total);
+	}
+
+
+
+	@Override
+	public  String toString() {
+
+		StringBuffer content = new StringBuffer();
+		for(Entry<String,Integer> e : getFeatureCounter().entrySet() ){
+			content.append(e.getKey()+" "+e.getValue());
+			content.append(':');
+			//		 HashMap<String,Integer> vs = getFeatureSet().get(e.getKey());
+			content.append(getFeatureBits(e.getKey()));
+
+			/*if (vs.size()<120)
+			 for(Entry<String,Integer> e2 : vs.entrySet()) {
+				 content.append(e2.getKey()+" ("+e2.getValue()+") ");
+			 }*/
+			content.append('\n');
+
+		}
+		return content.toString();
+	}
+
+
+	static final public long calcs(Data4 d,int b, long v, long l) {
+		if (l<0) return l;
+		l |= v<<d.shift;
+		d.shift +=b;
+		return l;
+	}
+
+
+	static final public short getFeatureBits(String a) {
+		return (short)m_featureBits.get(a).intValue();
+	}
+
+
+
+	/**
+	 * Get the integer place holder of the string value v of the type a
+	 * 
+	 * @param t the type
+	 * @param v the value 
+	 * @return the integer place holder of v
+	 */
+	final public int getValue(String t, String v) {
+
+		if (m_featureSets.get(t)==null) return -1;
+		Integer vi = m_featureSets.get(t).get(v);
+		if (vi==null) return -1; //stop && 
+		return vi.intValue();
+	}
+
+	/**
+	 * Static version of getValue
+	 * @see getValue
+	 */
+	static final public int getValueS(String a, String v) {
+
+		if (m_featureSets.get(a)==null) return -1;
+		Integer vi = m_featureSets.get(a).get(v);
+		if (vi==null) return -1; //stop && 
+		return vi.intValue();
+	}
+
+	public int hasValue(String a, String v) {
+
+		Integer vi = m_featureSets.get(a).get(v);
+		if (vi==null) return -1;
+		return vi.intValue();
+	}
+
+
+
+
+	final public long calc2(Data4 d) {
+
+		if (d.v0<0||d.v1<0) return -1;
+		//	if (d.v1<0||d.v2<0) return -1;
+
+		long l = d.v0;
+		short shift =d.a0;
+		l |= (long)d.v1<<shift;
+		shift +=d.a1;
+		//	l |= (long)d.v2<<shift;
+		d.shift=shift;
+
+		//d.shift=;
+		return l;
+	}
+
+
+
+	final public long calc3(Data4 d) {
+
+		if (d.v0<0||d.v1<0||d.v2<0) return -1;
+		//	if (d.v1<0||d.v2<0) return -1;
+
+		long l = d.v0;
+		short shift =d.a0;
+		l |= (long)d.v1<<shift;
+		shift +=d.a1;
+		l |= (long)d.v2<<shift;
+		d.shift=shift + d.a2;
+
+		//d.shift=;
+		return l;
+	}
+
+
+	final public long calc4(Data4 d) {
+		if (d.v0<0||d.v1<0||d.v2<0||d.v3<0) return -1;
+
+		long l = d.v0;
+		int shift =d.a0;
+		l |= (long)d.v1<<shift;
+		shift +=d.a1;
+		l |= (long)d.v2<<shift;
+		shift +=d.a2;
+		l |= (long)d.v3<<shift;
+		d.shift= shift +d.a3;
+
+		return l;
+	}
+
+
+
+	final public long calc5(Data4 d) {
+
+		if (d.v0<0||d.v1<0||d.v2<0||d.v3<0||d.v4<0) return -1;
+
+		long l = d.v0;
+		int shift =d.a0;
+		l |= (long)d.v1<<shift;
+		shift +=d.a1;
+		l |= (long)d.v2<<shift;
+		shift +=d.a2;
+		l |= (long)d.v3<<shift;
+		shift +=d.a3;	
+		l |= (long)d.v4<<shift;
+		d.shift =shift+d.a4;
+
+		return l;
+	}
+
+
+	static final public long calc6(Data4 d) {
+
+		if (d.v0<0||d.v1<0||d.v2<0||d.v3<0||d.v4<0||d.v5<0) return -1;
+
+		long l = d.v0;
+		int shift =d.a0;
+		l |= (long)d.v1<<shift;
+		shift +=d.a1;
+		l |= (long)d.v2<<shift;
+		shift +=d.a2;
+		l |= (long)d.v3<<shift;
+		shift +=d.a3;	
+		l |= (long)d.v4<<shift;
+		shift +=d.a4;
+		l |= (long)d.v5<<shift;
+		d.shift =shift+d.a5;
+
+		return l;
+	}
+
+	final public long calc7(Data4 d) {
+
+		if (d.v0<0||d.v1<0||d.v2<0||d.v3<0||d.v4<0||d.v5<0||d.v6<0) return -1;
+
+		long l = d.v0;
+		int shift =d.a0;
+		l |= (long)d.v1<<shift;
+		shift +=d.a1;
+		l |= (long)d.v2<<shift;
+		shift +=d.a2;
+		l |= (long)d.v3<<shift;
+		shift +=d.a3;	
+		l |= (long)d.v4<<shift;
+		shift +=d.a4;
+		l |= (long)d.v5<<shift;
+		shift +=d.a5;
+		l |= (long)d.v6<<shift;
+		d.shift =shift+d.a6;
+
+		return l;
+	}
+
+
+	final public long calc8(Data4 d) {
+
+		if (d.v0<0||d.v1<0||d.v2<0||d.v3<0||d.v4<0||d.v5<0||d.v6<0||d.v7<0) return -1;
+
+		long l = d.v0;
+		int shift =d.a0;
+		l |= (long)d.v1<<shift;
+		shift +=d.a1;
+		l |= (long)d.v2<<shift;
+		shift +=d.a2;
+		l |= (long)d.v3<<shift;
+		shift +=d.a3;	
+		l |= (long)d.v4<<shift;
+		shift +=d.a4;
+		l |= (long)d.v5<<shift;
+		shift +=d.a5;
+		l |= (long)d.v6<<shift;
+		shift +=d.a6;
+		l |= (long)d.v7<<shift;
+		d.shift =shift+d.a7;
+
+		return l;
+	}
+
+
+
+
+
+
+
+	/** 
+	 * Maps a long to a integer value. This is very useful to save memory for sparse data long values 
+	 * @param node
+	 * @return the integer
+	 */
+	static public  int misses = 0;
+	static public  int good = 0;
+
+
+
+
+	/**
+	 * Write the data
+	 * @param dos
+	 * @throws IOException
+	 */
+	 public void writeData(DataOutputStream dos) throws IOException {
+		dos.writeInt(getFeatureSet().size());
+		for(Entry<String, HashMap<String,Integer>> e : getFeatureSet().entrySet()) {
+			dos.writeUTF(e.getKey());
+			dos.writeInt(e.getValue().size());
+
+			for(Entry<String,Integer> e2 : e.getValue().entrySet()) {
+
+				if(e2.getKey()==null) DB.println("key "+e2.getKey()+" value "+e2.getValue()+" e -key "+e.getKey());
+				dos.writeUTF(e2.getKey()); 
+				dos.writeInt(e2.getValue());
+
+			}          
+
+		}
+	}
+	 public void read(DataInputStream din) throws IOException {
+
+		int size = din.readInt();
+		for(int i=0; i<size;i++) {
+			String k = din.readUTF();
+			int size2 = din.readInt();
+
+			HashMap<String,Integer> h = new HashMap<String,Integer>();
+			getFeatureSet().put(k,h);
+			for(int j = 0;j<size2;j++) {
+				h.put(din.readUTF(), din.readInt());
+			}
+			getFeatureCounter().put(k, size2);
+		}
+
+		calculateBits();
+	}
+
+
+	/** 
+	 * Clear the data
+	 */
+	static public void clearData() {
+		getFeatureSet().clear();
+		m_featureBits.clear();
+		getFeatureSet().clear();
+	}
+
+	public HashMap<String,Integer> getFeatureCounter() {
+		return m_featureCounters;
+	}
+
+	static public HashMap<String,HashMap<String,Integer>> getFeatureSet() {
+		return m_featureSets;
+	}
+
+	static public String[] reverse(HashMap<String,Integer> v){
+		String[] set = new String[v.size()];
+		for(Entry<String,Integer> e : v.entrySet()) {
+			set[e.getValue()]=e.getKey();
+		}
+		return set;
+	}
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/Open.java b/dependencyParser/basic/mate-tools/src/is2/data/Open.java
new file mode 100755
index 0000000..ba75fe3
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/Open.java
@@ -0,0 +1,37 @@
+package is2.data;
+
+
+
+final public  class Open {
+
+	public float p;
+	short s, e, label;
+	byte dir;
+
+	Closed left;
+	Closed right;
+
+	public Open(short s, short t, short dir, short label,Closed left, Closed right, float p) {
+		this.s = s;
+		this.e = t;
+		this.label = label;
+		this.dir = (byte)dir;
+		this.left =left;
+		this.right=right;
+		this.p=p;
+	}
+
+
+	void create(Parse parse) {
+		if (dir == 0) {
+			parse.heads[s] = e;
+			if (label != -1) parse.labels[s] = label;
+		} else {
+			parse.heads[e] = s;
+			if (label != -1) parse.labels[e] = label;
+		}
+		if (left != null) left.create(parse);
+		if (right != null) right.create(parse);
+	}
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/PSTree.java b/dependencyParser/basic/mate-tools/src/is2/data/PSTree.java
new file mode 100644
index 0000000..30c1364
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/PSTree.java
@@ -0,0 +1,711 @@
+/**
+ * 
+ */
+package is2.data;
+
+import is2.util.DB;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Stack;
+
+/**
+ * @author Dr. Bernd Bohnet, 17.01.2011
+ * 
+ * 
+ */
+public class PSTree {
+
+	int wordCount =0;
+	public String entries[];
+	public String lemmas[];
+	public int head[];
+	public String pos[];
+	public int[] ok;
+	public int non;
+	public int terminalCount;
+	public String[] morph;
+	
+	public int[] forms;
+	public int[] phrases;
+	public int[][] psfeats;
+	public int[] ppos;
+	
+	
+	/**
+	 * @param d
+	 */
+	public PSTree(SentenceData09 d) {
+		create(d.length()-1,d.length()*20);
+		for(int i=1;i<d.length();i++) {
+			entries[i-1]=d.forms[i];
+			pos[i-1]=d.ppos[i];
+		}
+	}
+
+
+	/**
+	 * Create an undefined phrase tree
+	 */
+	public PSTree() {	}
+
+
+	/**
+	 * @param terminals
+	 * @param nonTerminals
+	 */
+	public void create(int terminals, int nonTerminals) {
+		entries = new String[terminals+nonTerminals];
+		pos = new String[terminals+nonTerminals];
+		head = new int[terminals+nonTerminals];
+		lemmas = new String[terminals+nonTerminals];
+		morph = new String[terminals+nonTerminals];
+		non=terminals;
+		wordCount=terminals;
+
+		for(int i=terminals+1;i<head.length;i++) head[i]=-1; 
+	}
+
+
+	public String toString() {
+
+		StringBuffer s = new StringBuffer();
+
+		for(int i=0;i<entries.length;i++) {
+			if (head[i]==-1&&entries[i]==null) break;
+
+			s.append(i+"\t"+pos[i]+"\t"+entries[i]+"\t"+head[i]+(ok==null?"":("\t"+(ok[i]==1)))+" \n");
+
+		}
+		//		DB.println("entries "+entries.length);
+		return s.toString();
+	}
+
+
+	/**
+	 * @return
+	 */
+	public boolean containsNull() {
+		for(int k=0;k<wordCount-1;k++) {
+			if (entries[k]==null) return true;
+		}
+		return false;
+	}
+
+
+	public int equals(SentenceData09 s) {
+
+		int j=1; // starts with root
+		for(int i=0;i<terminalCount-1;i++){
+
+			//	if (s.forms[j].equals("erschrekkend")) s.forms[j]="erschreckend"; 
+
+			if (s.forms.length<j) {
+				DB.println(""+s+" "+this.toString());
+				return i;
+
+			}
+
+			if(!entries[i].equals(s.forms[j])) {
+			//	System.out.println("ps "+entries[i]+" != ds "+s.forms[j]);
+				// Rolls-Royce
+				if(entries[i].startsWith(s.forms[j]) && s.forms.length>i+2 && s.forms[j+1].equals("-")) {		
+					j+=2;
+					if( entries[i].contains(s.forms[j-1]) && s.forms.length>i+3 && s.forms[j+1].equals("-")) {
+						j+=2; // &&
+						//   				System.out.println("s.forms[j] "+s.forms[j]+" s.forms[j-1] "+s.forms[j-1]+" "+entries[i]);
+						if( entries[i].contains(s.forms[j-1]) && s.forms.length>i+3 && s.forms[j+1].equals("-")) {
+							j+=2; // &&
+							//	   				System.out.println("s.forms[j] "+s.forms[j]+" s.forms[j-1] "+s.forms[j-1]+" "+entries[i]);
+						}
+					} 			
+					//Interstate\/Johnson
+				} else if(entries[i].startsWith(s.forms[j]) && s.forms.length>i+2 && s.forms[j+1].equals("/")) {
+					j+=2;
+					if( entries[i].contains(s.forms[j-1]) && s.forms.length>i+3 && s.forms[j+1].equals("/")) {
+						j+=2; // &&
+						//  				System.out.println("s.forms[j] "+s.forms[j]+" s.forms[j-1] "+s.forms[j-1]+" "+entries[i]);
+					}
+
+					// U.S.-Japan -> U  .  S . - Japan
+				} else if(entries[i].startsWith(s.forms[j]) && s.forms.length>i+2 && s.forms[j+1].equals(".")) {
+					j+=2;
+					if( entries[i].contains(s.forms[j-1]) && s.forms.length>i+3 && s.forms[j+1].equals(".")) {
+						j+=2; // &&
+						//				System.out.println("s.forms[j] "+s.forms[j]+" s.forms[j-1] "+s.forms[j-1]+" "+entries[i]);
+					}
+				} else if(entries[i].startsWith(s.forms[j]) && s.forms.length>i+1 && s.forms[j+1].equals("'S")) {
+					j+=1;
+
+				} else {
+
+					// chech those !!!
+					//		System.out.print("entry "+entries[i]+" form "+s.forms[j]+" ");
+					return j;
+				}
+
+			}
+			j++;
+
+
+		}
+
+		// without root
+		return s.length();
+		//return j;
+
+	}
+
+
+	/**
+	 * @param dn
+	 * @return
+	 */
+	public int getPS(int dn) {
+
+		return this.head[dn-1];
+	}
+
+
+	/**
+	 * @param dn
+	 * @param n
+	 * @param commonHead the common head in the phrase structure
+	 * @return
+	 */
+	public String getChain(int dn, int n, int commonHead) {
+
+		int pdn =dn-1,pdh=n-1;
+		//	int phraseHead =head[pdh];
+
+		//		System.out.println("phrase head "+phraseHead+" common head "+commonHead);
+
+		int[] ch = new int[20];
+		int head =this.head[pdn];
+		int i=0;
+		ch[i++]=head;
+		while(commonHead!=head && head!=0) {
+
+			head = this.head[head];
+			ch[i++]=head;
+		}
+		StringBuffer chain= new StringBuffer();
+
+		for(int k=0;k<i;k++) {
+			chain.append(entries[ch[k]]).append(" ");
+		}
+		return chain.toString();
+	}
+
+
+	/**
+	 * @param dn
+	 * @param n
+	 * @return
+	 */
+	public int getCommonHead(int d, int dh) {
+		int pdh = this.getPS(dh), pd = this.getPS(d);
+
+
+		ArrayList<Integer> path2root = getPath2Root(pdh);
+
+		//System.out.println("path 2 root "+path2root+" pdh "+pdh);
+
+		for(int n : path2root) {
+			int candidateHead=pd;
+			while(candidateHead!=0&& candidateHead!=-1) {
+				if (n==candidateHead) return n;
+				candidateHead =this.head[candidateHead];
+			}
+		}
+		return -1;
+	}
+
+
+	/**
+	 * @param pdh
+	 */
+	private ArrayList<Integer> getPath2Root(int pdh) {
+		ArrayList<Integer> path = new ArrayList<Integer>();
+
+
+		// restrict the number in case its a cycle which should never be
+		for(int k=0;k<100;k++) {
+			if(pdh==-1) break;
+			path.add(pdh);
+			pdh = this.head[pdh];
+			if(pdh==0) break;
+		}
+		return path;
+	}
+
+
+	/**
+	 * Get operations to create root
+	 * see operation in method getOperation
+	 * @param pr
+	 */
+	public String getOperationRoot(int pr) {
+
+		StringBuffer o = new StringBuffer();
+		int h = pr;
+		int[] path = new int[10];
+		//	System.out.println(" start node "+pr);
+		int k=0;
+		for(;k<10;k++) {
+			h = head[h];
+			if (h==-1){
+				break;
+			}
+			path[k]=h;
+			if (h==0){
+				break;
+			}
+
+		}
+		k-=2;
+
+		boolean first=true;
+		for(;k>=0;k--) {
+
+			// create phrase
+			if (first) {
+				o.append("c:").append(entries[path[k]]);
+				first =false;
+			}
+
+			// insert and create phrase
+			else {o.append(":ci:").append(entries[path[k]]);}
+		}
+
+
+		// insert dependent node
+		//if (o.length()>0) 
+			o.append(":in:d");
+		//else o.append("in:d");  // insert root into nothing
+		return o.toString();
+	}
+
+
+	/**
+	 * Create operation to include dependency edges in phrase structure
+	 * Operations: c - create ; i - insert ; in - insert (dependent) node ; up:X go the (phrase) X up
+	 *             ci create and insert ... 
+	 * 
+	 * @param dn
+	 * @param n
+	 * @param commonHead
+	 * @return
+	 */
+	public String getOperation(int dn, int n, int commonHead) {
+
+		StringBuffer o= new StringBuffer();
+
+		// from n move up to common head, if needed
+		int ph =n-1, pd = dn-1;
+
+		int[] path = new int[20];
+		int i=0;
+
+		int h =ph;
+
+		boolean nth=false;
+		for(int k=0;k<10;k++) {
+			h = head[h];
+			path[k]=h;
+			if (nth) o.append(':');
+			o.append("up:"+entries[h]);
+			nth=true;
+			if (h==commonHead) break;
+		}
+
+		// from common head to the node
+		int k=0;
+		h=pd;
+		for(;k<10;k++) {
+			h = head[h];
+			path[k]=h;
+			if (h==commonHead){
+				break;
+			}
+
+		}
+		k-=1;
+
+		//		boolean first=true;
+		for(;k>=0;k--) {
+
+			// create phrase
+			if (!nth) {
+				o.append("ci:").append(entries[path[k]]);
+				nth =true;
+			}
+
+			// insert and create phrase
+			else {o.append(":ci:").append(entries[path[k]]);}
+		}
+
+
+		// insert dependent node
+		o.append(":in:d");
+
+
+
+		return o.toString();
+	}
+
+
+	/**
+	 * @param ph  node in the phrase structure corresponding to the head in the dependency structure
+	 * @param pt  node in the prhase structure corresponding to the dependent in the ds.
+	 * @param check 
+	 * @return rules was applicable
+	 */
+	public boolean exec(String r, int ph, int pt, boolean check) {
+
+		String o[] = r.split(":");
+
+		int last =-1, headP = -1;
+
+		// create root node
+
+		//	System.out.println("operation "+r+" "+ph+" "+pt);
+		boolean done =true;
+		for(int i=0;i<o.length;i++) {
+
+			if (o[i].equals("c")) {
+				if (check) return true;
+				
+				if(ph<0) {
+					last=non++;
+				}
+
+				entries[non]=o[++i]; // create
+				head[pt]=non;
+				head[non]=last; // insert into root
+				last=non++;
+			} else if (o[i].equals("ci")) {
+				if (check) return true;
+				entries[non]= o[++i]; // create
+				head[non] = last; // insert
+				last =non;
+				non++;
+			} else if (o[i].equals("in")&&o[i+1].equals("d")) {
+				if (check) return true;
+				head[pt] = last; // insert
+				i++; // move forward because of 'd'
+			} else if (o[i].equals("up")) {
+
+				if (ph==-1) {
+					//			System.out.println("ph is -1 please check this "+ph+" there is a bug ");
+					return false;
+				}
+
+				if (headP==-1) headP=head[ph];
+				else headP=head[headP];
+
+				try {	
+					if (headP==-1 || entries[headP]==null ||!entries[headP].equals(o[i+1])) return false;
+
+				} catch(Exception e) {
+					e.printStackTrace();
+					System.out.println(""+entries[headP]+" o[i+1] "+o[i+1]+" "+headP+" "+this.terminalCount);
+					//		System.out.println(""+	this.toString());
+					System.exit(0);
+				}
+
+				i++;
+				last =headP;
+			} else {
+				done = false;
+			}
+
+		}
+
+
+		return done;
+	}
+
+	/**
+	 * More tolerant mapping
+	 * 
+	 * @param ph  node in the phrase structure corresponding to the head in the dependency structure
+	 * @param pt  node in the prhase structure corresponding to the dependent in the ds.
+	 * @param check 
+	 * @return rules was applicable
+	 */
+	public boolean execT(String r, int ph, int pt, boolean check) {
+
+		String o[] = r.split(":");
+
+		int last =-1, headP = -1;
+
+		int up=0;
+
+		boolean done =true;
+		for(int i=0;i<o.length;i++) {
+
+			if (o[i].equals("c")) {
+				if (check) return true;
+
+
+				// create root node
+				if(ph<0) {
+					last=non++;
+				}
+
+				entries[non]= o[++i]; // create
+				head[pt]=non;
+				head[non]=last; // insert into root
+				last=non++;
+			} else if (o[i].equals("ci")) {
+
+				if (check) return true;
+				entries[non]= o[++i]; // create
+				head[non] = last; // insert
+				last =non;
+				non++;
+			} else if (o[i].equals("in")&&o[i+1].equals("d")) {
+				if (check) return true;
+		
+	//			DB.println("hallo");
+				
+				if (last !=-1) 
+					head[pt] = last; // insert
+		
+				
+				// i am not sure if this does much good?
+
+			//	if (last ==-1)				
+		
+			//	done=true;
+				
+
+				
+				i++; // move forward because of 'd'
+				
+			} else if (o[i].equals("up")) {
+				up++;
+				if (ph==-1) {
+					return false;
+				}
+
+				if (headP==-1) headP=head[ph];
+				else headP=head[headP];
+
+				try {	
+
+					// tolerant mapping
+					if (headP==-1 || entries[headP]==null || 
+							((!entries[headP].equals(o[i+1]) ) && up>1 )) return false; //>1
+// && entries[headP].charAt(0)!=o[i+1].charAt(0)
+				} catch(Exception e) {
+					e.printStackTrace();
+					System.out.println(""+entries[headP]+" o[i+1] "+o[i+1]+" "+headP+" "+this.terminalCount);
+				}
+
+				i++;
+				last =headP;
+			} else {
+				done = false;
+			}
+
+		}
+
+
+		return done;
+	}
+
+
+	public final static boolean INSERT_NEWLINE =true;
+
+	/**
+	 * Convert to bracket format 
+	 * @param newLine
+	 * @return
+	 */
+	public String toPennBracket(boolean newLine) {
+
+
+		StringBuffer b = new StringBuffer();
+		ArrayList<Integer> current=null;// = new ArrayList<Integer>();  
+		int open =0;
+		for(int i=0; i<terminalCount ;i++) {
+			ArrayList<Integer> path = getPathToRoot(i);
+ 
+			ArrayList<Integer> diff = getDiffPath(path, current);
+	
+			boolean spaces=false;
+
+			ArrayList<Integer> common = this.getDiffCommon(path, current);
+
+			if(current!=null && (current.size()>common.size())) {
+				
+				// close brackets 
+				for(int bc =0;bc<current.size()-common.size();bc++) {
+					b.append(")");
+					open--;
+				}
+				if(diff.size()==0 && newLine)	b.append("\n");
+				spaces=true;
+			}
+
+			if(i!=0 && diff.size()>0 && newLine) b.append("\n").append(createSpaces(open));
+
+			for(int k=diff.size()-1;k>=0;k--) {
+				open++;
+				b.append("("+(entries[path.get(k)]==null?" ":entries[path.get(k)]));
+				if (k!=0 &&path.size()-1!=k && newLine) 
+					b.append("\n").append(createSpaces(open));
+				spaces=false;
+			}
+			if(spaces) b.append(createSpaces(open));
+			else b.append(" ");
+
+			String term=entries[i];
+			if(term.equals("(")) term="-LRB-";
+			if(term.equals(")")) term="-RRB-";
+			if(term.equals("{"))  term="-LCB-";
+			if(term.equals("}"))  term="-RCB-";
+
+			String ps=pos[i];
+			if(ps.equals("(")) ps="-LRB-";
+			if(ps.equals("$(")) ps="-LRB-";
+
+			if(ps.equals(")")) ps="-RRB-";
+			if(ps.equals("{"))  ps="-LCB-";
+			if(ps.equals("}"))  ps="-RCB-";
+
+
+			b.append("(").append(ps).append(" ").append(term).append(')');
+			current = path;
+			//			break;
+		}
+		for(;open>0;open--) {
+			b.append(")");
+		}
+	//	b.append("\n");
+	
+		return b.toString();
+	}
+	static int cnt=0;
+
+	/**
+	 * @param path
+	 * @param current
+	 * @return
+	 */
+	private ArrayList<Integer> getDiffPath(ArrayList<Integer> path, ArrayList<Integer> current) {
+		if (current==null) return path;
+
+		ArrayList<Integer> common = new ArrayList<Integer>();
+ 
+		int pindex = path.size()-1;
+		int cindex = current.size()-1;
+
+		while(cindex>=0 && pindex>=0) {
+
+			if(path.get(pindex)==current.get(cindex)) {
+				cindex--;
+				pindex--;
+			} else break;
+		}
+		
+		for(int k=0;k<=pindex;k++) {
+			common.add(path.get(k));
+		}
+
+		return common;
+	}
+
+	private ArrayList<Integer> getDiffCommon(ArrayList<Integer> path, ArrayList<Integer> current) {
+		if (current==null) return path;
+
+		ArrayList<Integer> common = new ArrayList<Integer>();
+
+		int pindex = path.size()-1;
+		int cindex = current.size()-1;
+
+		while(cindex>=0 && pindex>=0) {
+
+			if(path.get(pindex)==current.get(cindex)) {
+				common.add(path.get(pindex));
+				cindex--;
+				pindex--;
+			} else break;
+		}
+
+		Collections.reverse(common);
+		//	System.out.println("common "+pindex+" "+common);
+
+		return common;
+	}
+	/**
+	 * @param i
+	 * @return
+	 */
+	private StringBuffer createSpaces(int i) {
+		StringBuffer s = new StringBuffer();
+		for (int k=0;k<i;k++) s.append("  ");
+		return s;
+	}
+
+
+	/**
+	 * @param i
+	 * @return
+	 */
+	private ArrayList<Integer> getPathToRoot(int i) {
+
+		ArrayList<Integer> path = new ArrayList<Integer> ();
+
+		int h=i;
+		while(true) {
+			h=this.head[h];
+			if (h<this.terminalCount || path.contains(h)) break;
+			path.add(h);
+		}
+
+		//	Collections.reverse(list)
+
+
+		return path;
+	}
+
+	
+	public String conll09() {
+		
+		StringBuilder s = new StringBuilder();
+		for(int i=0;i<this.terminalCount;i++) {
+			if (head[i]==-1&&entries[i]==null) break;
+
+			s.append((i+1)).append('\t').append(entries[i]).append("\t_\t_\t").append(pos[i]).append("\t_\t_\t_\t_\t_\t_\t_\t_\n");
+
+			
+		}
+		
+		
+		return s.toString();
+	}
+
+	/**
+	 * @param phead
+	 * @return
+	 */
+	public int[] getChilds(int head) {
+
+		int count=0;
+		for(int i =0;i<this.entries.length;i++) {
+			if (this.head[i]==head) count++;
+		}
+
+		int[] clds = new int[count];
+		count=0;
+		for(int i =0;i<this.entries.length;i++) {
+			if (this.head[i]==head) clds[count++]=i;
+		}
+
+		return clds;
+	}
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/Parameter.java b/dependencyParser/basic/mate-tools/src/is2/data/Parameter.java
new file mode 100644
index 0000000..35a9911
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/Parameter.java
@@ -0,0 +1,13 @@
+/**
+ * 
+ */
+package is2.data;
+
+/**
+ * @author Dr. Bernd Bohnet, 23.12.2010
+ * 
+ * 
+ */
+public class Parameter {
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/ParametersFloat.java b/dependencyParser/basic/mate-tools/src/is2/data/ParametersFloat.java
new file mode 100755
index 0000000..653487e
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/ParametersFloat.java
@@ -0,0 +1,183 @@
+package is2.data;
+
+import is2.util.DB;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+
+
+final public class ParametersFloat  {
+
+	public float[] parameters;
+	public float[] total;
+
+	public ParametersFloat(int size) {
+		
+		parameters = new   float[size];
+		total = new float[size];
+		for(int i = 0; i < parameters.length; i++) {
+			parameters[i] = 0F;
+			total[i] = 0F;
+		}
+	}
+
+
+	/**
+	 * @param parameters2
+	 */
+	public ParametersFloat(float[] p) {
+		parameters =p;
+	}
+
+	public void average(double avVal) {
+		for(int j = 0; j < total.length; j++) {
+			parameters[j] = total[j]/((float)avVal);
+		}
+		total =null;
+	}
+
+	public ParametersFloat average2(double avVal) {
+		float[] px = new float[this.parameters.length];
+		for(int j = 0; j < total.length; j++) {
+			px[j] = total[j]/((float)avVal);
+		}
+		ParametersFloat pf = new ParametersFloat(px);
+		return pf;
+	}
+	
+	public void update(FV pred, FV act,  float upd, float err) {
+
+		
+		float lam_dist = act.getScore(parameters,false)- pred.getScore(parameters,false);
+		float loss =(float)err - lam_dist;
+
+		FV dist = act.getDistVector(pred);	 
+
+		float alpha;
+		float A = dist.dotProduct(dist);
+		if (A<=0.0000000000000001)  alpha=0.0f;
+		else alpha= loss/A;
+		
+	//	alpha = Math.min(alpha, 0.00578125F);
+		
+		dist.update(parameters, total, alpha, upd,false); 
+	
+	}
+
+	public void update(FV pred, FV act,  float upd, float err, float C) {
+
+		
+		float lam_dist = act.getScore(parameters,false)- pred.getScore(parameters,false);
+		float loss =(float)err - lam_dist;
+
+		FV dist = act.getDistVector(pred);	 
+
+		float alpha;
+		float A = dist.dotProduct(dist);
+		if (A<=0.0000000000000001)  alpha=0.0f;
+		else alpha= loss/A;
+		
+		alpha = Math.min(alpha, C);
+		
+		dist.update(parameters, total, alpha, upd,false); 
+	
+	}
+
+	
+	
+	public double update(FV a, double b) {
+
+		double A = a.dotProduct(a);
+		if (A<=0.0000000000000000001) return 0.0;
+		return b/A;
+	}
+
+	
+	public double getScore(FV fv) {
+		if (fv ==null) return 0.0F;
+		return fv.getScore(parameters,false);
+
+	}
+
+	
+	final public void write(DataOutputStream dos) throws IOException{
+
+		dos.writeInt(parameters.length);
+		for(float d : parameters) dos.writeFloat(d);
+
+	}
+
+	public void read(DataInputStream dis) throws IOException{
+
+		parameters = new float[dis.readInt()];
+		int notZero=0;
+		for(int i=0;i<parameters.length;i++) {
+			parameters[i]=dis.readFloat();
+			if (parameters[i]!=0.0F) notZero++; 
+		}
+		
+		DB.println("read parameters "+parameters.length+" not zero "+notZero);
+
+	}
+	
+	public int countNZ() {
+
+		int notZero=0;
+		for(int i=0;i<parameters.length;i++) {
+			if (parameters[i]!=0.0F) notZero++; 
+		}
+		return notZero;
+
+	}
+
+	public F2SF getFV() {
+		return new F2SF(parameters);
+	}
+
+	
+	public int size() {
+		return parameters.length;
+	}
+
+	public void update(FVR act, FVR pred, Instances isd, int instc, Parse dx, double upd, double e, float lam_dist) {
+
+		e++;
+		
+		
+		float b = (float)e-lam_dist;
+		
+		FVR dist = act.getDistVector(pred);
+		
+		dist.update(parameters, total, hildreth(dist,b), upd,false);  
+	}
+	
+	
+	public void update(FVR pred, FVR act, float upd, float e) {
+
+		e++;
+		float lam_dist = act.getScore(parameters,false)- pred.getScore(parameters,false);
+		
+		float b = (float)e-lam_dist;
+		
+		FVR dist = act.getDistVector(pred);
+		
+		dist.update(parameters, total, hildreth(dist,b), upd,false);  
+	}
+	
+	protected double hildreth(FVR a, double b) {
+
+		double A = a.dotProduct(a);
+		if (A<=0.0000000000000000001) return 0.0;
+		return b/A;
+	}
+	
+	public float getScore(FVR fv) { //xx
+		if (fv ==null) return 0.0F;
+		return fv.getScore(parameters,false);
+
+	}
+
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/Parse.java b/dependencyParser/basic/mate-tools/src/is2/data/Parse.java
new file mode 100755
index 0000000..21a83d9
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/Parse.java
@@ -0,0 +1,157 @@
+package is2.data;
+
+
+import java.util.BitSet;
+
+
+public class Parse implements Comparable<Parse> {
+
+	public short[] heads;
+	public short[] labels;
+	public double f1;
+
+	
+	public Parse() {}
+		
+	public Parse(int i) {
+		heads = new short[i];
+		labels = new short[i];
+
+	}
+	/**
+	 * @param heads2
+	 * @param types2
+	 * @param p_new
+	 */
+	public Parse(short[] heads2, short[] types2, float p_new) {
+		this.heads = new short[heads2.length];
+		this.labels = new short[types2.length];
+	//	this.heads=heads2;
+	//	this.labels=types2;
+		System.arraycopy(heads2, 0, heads, 0, heads.length);
+		System.arraycopy(types2, 0, labels, 0, labels.length);
+		f1=p_new;
+		
+	}
+
+	/**
+	 * @param heads2
+	 * @param types2
+	 * @param p_new
+	 */
+	public Parse(String parse, float p_new) {
+		
+	//	this(parse.length()/2);		
+	
+		signature2parse(parse);
+		
+		f1=p_new;
+		
+	}
+
+	public void signature2parse(String parse) {
+		int p=0;
+		heads = new short[parse.length()/2];
+		labels = new short[heads.length];
+	//	DB.println("pl "+parse.length());
+		for(int k=0;k<heads.length;k++) {
+			heads[k]= (short)parse.charAt(p++);
+			labels[k] = (short)parse.charAt(p++);
+		}
+	}
+
+	
+	@Override
+	public Parse clone() {
+		Parse p = new Parse();
+		p.heads = new short[heads.length];
+		p.labels = new short[labels.length];
+		
+		System.arraycopy(heads, 0, p.heads, 0, heads.length);
+		System.arraycopy(labels, 0, p.labels, 0, labels.length);
+		
+		p.f1=f1;
+		
+		return p;
+	}
+
+	/**
+	 * Check if it is a tree
+	 * @return
+	 */
+	public boolean checkTree() {
+		
+		BitSet set = new BitSet(heads.length);
+		set.set(0);
+		return checkTree(set, 0);
+		
+	}
+
+	/**
+	 * @param set
+	 * @return
+	 */
+	private boolean checkTree(BitSet set, int h) {
+		//System.out.print(" h "+h);
+		
+		for(int i=0;i<heads.length;i++) {
+			if (heads[i]==h) {
+			//	System.out.print(" "+i);
+				if (!set.get(i)) checkTree(set, i);
+				set.set(i);
+				
+			}
+		}
+		
+		for(int i=0;i<heads.length;i++) {
+			if (!set.get(i)) return false;
+		}
+		return true;
+	}
+	
+	public String toString() {
+		StringBuilder b = new StringBuilder();
+		for(int k=0;k<this.heads.length;k++) {
+			b.append(k).append(" ").append(heads[k]+" ").append(this.labels[k]).append("\n");
+		}
+		return b.toString();
+	}
+
+	
+
+	/* (non-Javadoc)
+	 * @see java.lang.Comparable#compareTo(java.lang.Object)
+	 */
+	@Override
+	public int compareTo(Parse o) {
+		
+		if (f1==o.f1) return this.signature().compareTo(o.signature());
+		return f1<o.f1?1:f1==o.f1?0:-1;
+	}
+
+	/**
+	 * @return the signature of a parse
+	 */
+	public String signature() {
+		StringBuilder b = new StringBuilder(heads.length*2);
+		for(int k=0;k<heads.length;k++) {
+			b.append((char)heads[k]).append((char)labels[k]);
+		}
+		return b.toString();
+	}
+
+	
+	/**
+	 * @return the signature of a parse
+	 */
+	public StringBuilder signatureSB() {
+		StringBuilder b = new StringBuilder(heads.length*2);
+		for(int k=0;k<heads.length;k++) {
+			b.append((char)heads[k]).append((char)labels[k]);
+		}
+		return b;
+	}
+
+	
+}
+ 
\ No newline at end of file
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/ParseNBest.java b/dependencyParser/basic/mate-tools/src/is2/data/ParseNBest.java
new file mode 100644
index 0000000..b66306c
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/ParseNBest.java
@@ -0,0 +1,107 @@
+package is2.data;
+
+
+
+
+final public class ParseNBest extends Parse {
+
+	
+	private String signature=null;
+	
+	//public float[] scores;
+	
+	public ParseNBest() {}
+		
+	public ParseNBest(short[] heads2, short[] types2, float p_new) {
+		super(heads2, types2, p_new);
+	}
+	
+	public ParseNBest(int i) {
+		super(i);		
+	}
+	
+	/**
+	 * @param sig
+	 * @param readFloat
+	 */
+	public ParseNBest(String sig, float score) {
+		super(sig,score);
+	}
+
+	/**
+	 * create a total order to provide replicable deterministic results
+	 * @param o
+	 * @return
+	 */
+	public int compareTo(ParseNBest o) {
+		if (f1<o.f1) return 1;
+		if (f1==o.f1) {
+			if (signature==null) signature=signature();
+			if (o.signature==null) o.signature=o.signature();
+			return o.signature.compareTo(signature); 
+			
+		} 
+		return -1;
+	}
+	
+	/**
+	 * @return the signature of a parse
+	 */
+	public String signature() {
+		if (signature!=null) return signature; 
+		signature= super.signature();
+		return signature;
+	}
+	
+	/**
+	 * @return the signature of a parse
+	 */
+	public String signature(short[] heads, short[] labels) {
+		StringBuilder b = new StringBuilder(heads.length*2);
+		for(int k=0;k<heads.length;k++) {
+			b.append((char)heads[k]).
+			append((char)labels[k]);
+		}
+		signature = b.toString();
+		return signature;
+	}
+
+	/**
+	 * @param heads
+	 * @param types
+	 * @param oldP
+	 * @param ch
+	 * @param s
+	 */
+	public String signature(short[] heads, short[] types, short p, short ch,short l) {
+		StringBuilder b = new StringBuilder(heads.length*2);
+		for(int k=0;k<heads.length;k++) {
+		
+			
+			b.append(k==ch?(char)p:
+				(char)heads[k]).
+			append(k==ch?(char)l:(char)types[k]);
+		}
+		signature = b.toString();
+		return signature;
+		
+	}
+
+	@Override
+	public Parse clone() {
+		ParseNBest p = new ParseNBest();
+		p.heads = new short[heads.length];
+		p.labels = new short[labels.length];
+		
+		System.arraycopy(heads, 0, p.heads, 0, heads.length);
+		System.arraycopy(labels, 0, p.labels, 0, labels.length);
+		
+		p.f1=f1;
+		
+		return p;
+	}
+
+	
+}
+
+ 
\ No newline at end of file
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/PipeGen.java b/dependencyParser/basic/mate-tools/src/is2/data/PipeGen.java
new file mode 100755
index 0000000..b63fb90
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/PipeGen.java
@@ -0,0 +1,83 @@
+package is2.data;
+
+
+public  class PipeGen {
+
+	public static final String SENSE = "SENSE",POS = "POS",DIST = "DIST",WORD = "WORD",PRED = "PRED",ARG = "ARG",
+			FEAT = "F", REL = "REL",TYPE = "TYPE" ,CHAR = "C",FFEATS="FF", DIR="DIR",LA = "LA",RA = "RA";
+
+	public static final String GPOS = "GPOS", MID = "MID",END = "END",STR = "STR",FM="FM", NOFEAT = "NOFEAT";
+
+	public static final String _0 = "0",_4 = "4", _3 = "3", _2 = "2",_1 = "1", _5 = "5",_10 = "10";
+	
+	static public int outValue(int num1, int del) {
+		String out = ""+num1;
+		StringBuffer delS=new StringBuffer();
+		for(int k =0;k< del;k++) delS.append('\b');
+		del=out.length();
+		System.out.print(delS+out);
+		return del;
+	}
+	
+	static public int outValue(int num1, int del, long last) {
+		String out = ""+num1+" ("+(System.currentTimeMillis()-last)/(num1+1)+" ms/instance)";
+		StringBuffer delS=new StringBuffer();
+		for(int k =0;k< del;k++) delS.append('\b');
+		del=out.length();
+		System.out.print(delS+out);
+		return del;
+	}
+	
+	static public int outValueErr(int num1, float err, float f1, int del, long last) {
+	
+		String out = ""+num1+" ("+(System.currentTimeMillis()-last)/(num1+1)+" ms/instance "+(err/num1)+" err/instance f1="+
+			f1 +") ";
+		StringBuffer delS=new StringBuffer();
+		for(int k =0;k< del;k++) delS.append('\b');
+		del=out.length();
+		System.out.print(delS+out);
+		return del;
+	}
+	
+
+	static public int outValueErr(int num1, float err, float f1, int del, long last, double upd) {
+		String out = ""+num1+" ("+(System.currentTimeMillis()-last)/(num1+1)+" ms/instance "+(err/num1)+" err/instance f1="+
+			f1 +") upd "+upd;
+		StringBuffer delS=new StringBuffer();
+		for(int k =0;k< del;k++) delS.append('\b');
+		del=out.length();
+		System.out.print(delS+out);
+		return del;
+	}
+
+	static public int outValueErr(int num1, float err, float f1, int del, long last, double upd, String info) {
+		String out = ""+num1+" ("+(System.currentTimeMillis()-last)/(num1+1)+" ms/instance "+(err/(float)num1)+" err/instance f1="+
+			f1 +") upd "+upd+" "+info;
+		StringBuffer delS=new StringBuffer();
+		for(int k =0;k< del;k++) delS.append('\b');
+		del=out.length();
+		System.out.print(delS+out);
+		return del;
+	}
+	
+	
+	/**
+	 * @param cnt
+	 * @param l
+	 * @return
+	 */
+	public static String getSecondsPerInstnace(int cnt, long l) {
+		return " "+((float)l/(cnt*1000f))+" seconds/sentnece ";
+	}
+
+	/**
+	 * @param l
+	 * @return
+	 */
+	public static String getUsedTime(long l) {
+		return "Used time " + (((float)l)/1000f)+" seconds ";
+	}
+	
+	
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/PrimeFinder.java b/dependencyParser/basic/mate-tools/src/is2/data/PrimeFinder.java
new file mode 100644
index 0000000..38c614b
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/PrimeFinder.java
@@ -0,0 +1,66 @@
+/**
+ * 
+ */
+package is2.data;
+
+import java.util.Arrays;
+
+/**
+ * @author Dr. Bernd Bohnet, 13.05.2010
+ * 
+ * 
+ */
+public class PrimeFinder {
+
+	
+
+	    public PrimeFinder()
+	    {
+	    }
+
+	    public static final int nextPrime(int desiredCapacity)
+	    {
+	        int i = Arrays.binarySearch(primeCapacities, desiredCapacity);
+	        if(i < 0)
+	            i = -i - 1;
+	        return primeCapacities[i];
+	    }
+
+	    public static final int largestPrime = 2147483647;
+	    private static final int primeCapacities[] = {
+	        2147483647, 5, 11, 23, 47, 97, 197, 397, 797, 1597, 
+	        3203, 6421, 12853, 25717, 51437, 102877, 205759, 411527, 823117, 1646237, 
+	        3292489, 6584983, 13169977, 26339969, 52679969, 105359939, 210719881, 421439783, 842879579, 1685759167, 
+	        433, 877, 1759, 3527, 7057, 14143, 28289, 56591, 113189, 226379, 
+	        452759, 905551, 1811107, 3622219, 7244441, 14488931, 28977863, 57955739, 115911563, 231823147, 
+	        463646329, 927292699, 1854585413, 953, 1907, 3821, 7643, 15287, 30577, 61169, 
+	        122347, 244703, 489407, 978821, 1957651, 3915341, 7830701, 15661423, 31322867, 62645741, 
+	        125291483, 250582987, 501165979, 1002331963, 2004663929, 1039, 2081, 4177, 8363, 16729, 
+	        33461, 66923, 133853, 267713, 535481, 1070981, 2141977, 4283963, 8567929, 17135863, 
+	        34271747, 68543509, 137087021, 274174111, 548348231, 1096696463, 31, 67, 137, 277, 
+	        557, 1117, 2237, 4481, 8963, 17929, 35863, 71741, 143483, 286973, 
+	        573953, 1147921, 2295859, 4591721, 9183457, 18366923, 36733847, 73467739, 146935499, 293871013, 
+	        587742049, 1175484103, 599, 1201, 2411, 4831, 9677, 19373, 38747, 77509, 
+	        155027, 310081, 620171, 1240361, 2480729, 4961459, 9922933, 19845871, 39691759, 79383533, 
+	        158767069, 317534141, 635068283, 1270136683, 311, 631, 1277, 2557, 5119, 10243, 
+	        20507, 41017, 82037, 164089, 328213, 656429, 1312867, 2625761, 5251529, 10503061, 
+	        21006137, 42012281, 84024581, 168049163, 336098327, 672196673, 1344393353, 3, 7, 17, 
+	        37, 79, 163, 331, 673, 1361, 2729, 5471, 10949, 21911, 
+	        43853, 87719, 175447, 350899, 701819, 1403641, 2807303, 5614657, 11229331, 22458671, 
+	        44917381, 89834777, 179669557, 359339171, 718678369, 1437356741, 43, 89, 179, 359, 
+	        719, 1439, 2879, 5779, 11579, 23159, 46327, 92657, 185323, 370661, 
+	        741337, 1482707, 2965421, 5930887, 11861791, 23723597, 47447201, 94894427, 189788857, 379577741, 
+	        759155483, 1518310967, 379, 761, 1523, 3049, 6101, 12203, 24407, 48817, 
+	        97649, 195311, 390647, 781301, 1562611, 3125257, 6250537, 12501169, 25002389, 50004791, 
+	        100009607, 200019221, 400038451, 800076929, 1600153859
+	    };
+
+	    static 
+	    {
+	        Arrays.sort(primeCapacities);
+	    }
+	
+
+	
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/RandomIndex.java b/dependencyParser/basic/mate-tools/src/is2/data/RandomIndex.java
new file mode 100644
index 0000000..7fc67b3
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/RandomIndex.java
@@ -0,0 +1,161 @@
+/**
+ * 
+ */
+package is2.data;
+
+import java.util.BitSet;
+
+import is2.util.DB;
+
+
+/**
+ * @author Dr. Bernd Bohnet, 20.05.2011
+ * 
+ * 
+ */
+public class RandomIndex implements Long2IntInterface {
+	
+	
+	final int[] prims = {52349171,199951347,89990,5001,32891,17,19,23,29,31,37,47,53,59,61,67,71};
+//	final int[] prims = {1,3,5,7,11,17,19,23,29,31,37,47,53,59,61,67,71};
+	
+    final long hashFunctionModifiers[]; 
+
+    final int kbit,lbit; 
+    final int hsize ; // maximal size of hash
+    
+    final int bits; // available bits
+    final int moves; // needed moves to put a number into  
+ 
+    
+	/**
+	 * Creates the random functions.
+	 * 
+	 * @param kbit The bits to be mapped
+	 * @param lbit The left shift of the bits
+	 * @param hsize The size of the featurs space (not included in the original algorithm)
+	 * @param numberFunctions The number of the hash functions
+	 */
+	public RandomIndex(int kbit, int lbit, int hsize, int numberFunctions) {
+		
+		
+		this.kbit =kbit;
+		this.lbit =lbit;
+
+		
+		if (hsize<=0) this.hsize = 67000001; // default value 
+		else 		  this.hsize = hsize;
+
+		bits = (int) Math.ceil(Math.log(this.hsize)/Math.log(2));
+		
+		moves = (int) Math.ceil(64f/(float)bits);
+
+		
+		
+		DB.println("moves "+moves+" bits "+bits+" hsize "+hsize);
+		
+		hashFunctionModifiers = new long[numberFunctions];
+		
+		for (int f = 0;f<numberFunctions;f++) hashFunctionModifiers[f] = prims[f];  		
+	}
+	
+	
+
+    public int[] hash(long x)
+    {
+    	int[] hvals = new int[hashFunctionModifiers.length];
+    	
+    	for(int k=0;k<hashFunctionModifiers.length;k++) {
+    	
+    		// the original function: value = ((x+1) * hashFunctionModifiers[k] & m ) >> n;
+    		
+    		// the first part of the original function
+    		long value = (x+1) * hashFunctionModifiers[k];
+
+    		// do the above >> n with a maximal size of the available hash values
+    		// Shift all bits until they have been each xor-ed (^) in the range of the hash
+    		// in order the have all information potentially represented there.
+
+    		for(int j=1;j<= moves;j++) value = value ^ (value >> (bits*j));
+    		
+    		// Map the value to the range of the available space should be the same as (value & m) . 
+    		hvals[k] = Math.abs((int)value % hsize);
+    	}
+        return hvals;
+    }
+    
+    public int[] hashU(long x)
+    {
+    	int[] hvals = new int[hashFunctionModifiers.length];
+    	
+    	long y = Long.reverse(x);
+    	for(int k=0;k<hashFunctionModifiers.length;k++) {
+    	
+    		// the original function: value = ((x+1) * hashFunctionModifiers[k] & m ) >> n;
+    		
+    		// the first part of the original function
+    		long value1 = (((y+1) * hashFunctionModifiers[k]) /* % 2 pow 64 */  ) >> (kbit-lbit);
+    	
+    		// I get probably only the first part lets get the second part too
+    	//	long value2 = (((y+1>>20) * hashFunctionModifiers[k]) /* % 2 pow 64 */  ) >> (kbit-lbit);
+    	
+    	
+    		// the modulo (%)  2 pow 64 is done since the long number can not be larger than 2 pow 64.  
+    	//	System.out.println("value "+value+" shift "+(lbit-kbit));
+    		hvals[k] = Math.abs((int)value1);
+    	}
+        return hvals;
+    }
+    
+    /*
+     (defun generate-hash-fn (&key (k-bit 32)
+                              (l-bit 8)
+                              verbosep constants (count 4))
+
+  (labels ((random-constant ()
+             (let ((a (+ (random (- (expt 2 k-bit) 1)) 1)))
+               (logior a 1)))) ;; inclusive OR ensures odd number.                                                                                                                            
+    (let ((pdiff (- (- k-bit l-bit)));; neg. sign to do a rightshift, see ash()                                                                                                               
+          (sub1 (- (expt 2 k-bit) 1))
+          (constants (copy-list constants)))
+      (unless constants
+	(loop ;; a = odd number a where 0 < a < u.                                                                                                                                            
+            until (= count (length constants))
+            do (pushnew (random-constant) constants)))
+      (when verbosep
+        (format t "~&generate-hash-fn(): using random constants: ~a~%"
+		constants))
+      (values
+       #'(lambda (x)
+           (loop
+               for a in constants
+               ;;; always add 1 to x to avoid f(0)=0.                                                                                                                                         
+               collect (ash (logand (* (+ 1 x) a) sub1) pdiff)))
+       constants))))
+
+     */
+    
+    
+    
+    
+    
+    /* (non-Javadoc)
+	 * @see is2.data.Long2IntInterface#l2i(long)
+	 */
+	@Override
+	public int l2i(long l) {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+	/* (non-Javadoc)
+	 * @see is2.data.Long2IntInterface#size()
+	 */
+	@Override
+	public int size() {
+		return hsize;
+	}
+
+}
+
+
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/SentenceData09.java b/dependencyParser/basic/mate-tools/src/is2/data/SentenceData09.java
new file mode 100755
index 0000000..46cabc0
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/SentenceData09.java
@@ -0,0 +1,530 @@
+package is2.data;
+
+
+import is2.io.CONLLReader09;
+import is2.io.CONLLWriter09;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.StringWriter;
+import java.util.ArrayList;
+
+public class SentenceData09 {
+
+	
+	public String[] id;
+	public String[] forms;
+
+	public String[] lemmas;
+	public String[] plemmas;
+
+	public int[] heads;
+	public int[] pheads;
+
+	public String[] labels;
+	public String[] plabels;	
+
+	public String[] gpos;   // gold pos
+	public String[] ppos;
+
+	public String feats[][];
+//	public String[] split_lemma;
+
+	public String[] sem;
+	public int[] semposition;
+	
+	// predicate number, argument number -> argument string
+	public String[][] arg;
+	public int[][] argposition;
+
+	public String[] fillp;
+
+	public String[] ofeats;
+	public String[] pfeats;
+
+	public SentenceData09() {}
+
+	public SentenceData09(String[] forms, String[] postags, String[] labs, int[] heads) {
+		this.forms = forms;
+		gpos = postags;
+		labels = labs;
+		this.heads = heads;
+	}
+
+	public SentenceData09(String[] forms, String[] lemmas, String[] postags, String[] labs, int[] heads) {
+		this.forms = forms;
+		gpos = postags;
+		//ppos = postags;
+
+		labels = labs;
+		this.heads = heads;
+		this.plemmas = lemmas;
+	}
+	public SentenceData09(String[] forms, String[] lemmas, String[] gpos, String[] ppos, String[] labs, int[] heads) {
+		this.forms = forms;
+		this.gpos = gpos;
+		this.ppos = ppos;
+
+		labels = labs;
+		this.heads = heads;
+		this.plemmas = lemmas;
+		
+	
+	}
+	public SentenceData09(String[] forms, String[] lemmas, String[] gpos, String[] ppos, String[] labs, int[] heads, String[] fillpred) {
+		this.forms = forms;
+		this.gpos = gpos;
+		this.ppos = ppos;
+
+		labels = labs;
+		this.heads = heads;
+		this.plemmas = lemmas;
+		
+		fillp =fillpred;
+	}
+
+	public SentenceData09(String[] forms, String[] lemmas, String[] olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads, String[] fillpred) {
+		this.forms = forms;
+		this.gpos = gpos;
+		this.ppos = ppos;
+
+		labels = labs;
+		this.heads = heads;
+		this.plemmas = lemmas;
+		this.lemmas =olemmas;
+		fillp =fillpred;
+	}
+
+	public SentenceData09(String[] forms, String[] olemmas, String[] lemmas,String[] gpos, 
+			String[] ppos, String[] labs, int[] heads, String[] fillpred, String[] of, String[] pf) {
+		this.forms = forms;
+		this.gpos = gpos;
+		this.ppos = ppos;
+
+		labels = labs;
+		this.heads = heads;
+		this.pheads =heads;
+		this.plabels=labs;
+		this.plemmas = lemmas;
+		this.lemmas =olemmas;
+		
+		this.ofeats =of;
+		this.pfeats =pf;
+		fillp =fillpred;
+	}
+
+	
+	
+	
+	/**
+	 * Create an instance without root of the input instance
+	 * @param instance
+	 */
+	public SentenceData09(SentenceData09 i) {
+		
+		int length = i.length()-1;
+		
+		forms = new String[length];
+		gpos = new String[length];
+		ppos = new String[length];
+		plemmas = new String[length];
+		plabels = new String[length];
+		lemmas = new String[length];
+		heads = new int[length];
+		pheads = new int[length];
+		ofeats = new String[length];
+		pfeats = new String[length];
+		labels = new String[length];
+		fillp = new String[length];
+		id = new String[length];
+		
+		
+		for(int j = 0; j < length; j++) {
+			forms[j] = i.forms[j+1];
+			ppos[j] = i.ppos[j+1];
+			gpos[j] = i.gpos[j+1];
+
+			labels[j] = i.labels[j+1];
+			heads[j] = i.heads[j+1];
+
+					
+			
+			if (i.pheads!=null) pheads[j] = i.pheads[j+1];
+			if (i.plabels!=null) plabels[j] = i.plabels[j+1];
+			
+			
+			if (i.lemmas!=null) lemmas[j] = i.lemmas[j+1];
+
+			plemmas[j] = i.plemmas[j+1];
+			
+
+			if (i.ofeats!=null)  ofeats[j] = i.ofeats[j+1];
+			if (i.pfeats!=null)	pfeats[j] = i.pfeats[j+1];
+
+			if (i.fillp!=null) fillp[j] = i.fillp[j+1];
+			if (i.id!=null) id[j] = i.id[j+1];
+		}
+		
+		
+	}
+	public void setPPos(String[] pos) {
+		ppos=pos;
+	}
+	
+	public void setLemmas(String[] lemmas) {
+		this.plemmas=lemmas;
+	}
+
+	public void setFeats(String[] fts) {
+		feats = new String[fts.length][];
+		for(int i=0;i<fts.length;i++) {
+			feats[i] = fts[i].split("\\|");
+		}
+		pfeats =fts;
+	}
+
+	public int length () {
+		return forms.length;
+	}
+
+	@Override
+	public String toString () {
+		// prepare the output
+		StringWriter sw = new StringWriter();
+		CONLLWriter09 snt2str = new is2.io.CONLLWriter09(sw);
+		try{
+			snt2str.write(this, CONLLWriter09.NO_ROOT);
+			snt2str.finishWriting();
+			return sw.toString();
+		}catch(Exception e) {
+			e.printStackTrace();
+		}
+
+		// backup
+		StringBuffer sb = new StringBuffer();
+		for(int k=0;k<forms.length;k++) sb.append(k+1).append('\t').append(forms[k]).append('\t').append(heads[k]).append('\t').append(labels[k]).append('\n');
+		return sw.toString();
+	}
+
+  
+		final public void write (DataOutputStream out) throws IOException {
+		
+		out.writeInt(forms.length);
+		for(int k=0;k<forms.length;k++) {
+			out.writeUTF(forms[k]);
+			out.writeUTF(ppos[k]);
+			out.writeUTF(gpos[k]);
+			out.writeInt(heads[k]);
+			out.writeUTF(labels[k]);
+			out.writeUTF(lemmas[k]);
+			out.writeUTF(plemmas[k]);
+			out.writeUTF(ofeats[k]);  // needed for mtag
+			out.writeUTF(fillp[k]);
+		}
+	
+	//	out.writeUTF(actParseTree);
+	
+	}
+
+	final public void read (DataInputStream dis) throws IOException {
+		
+		int l = dis.readInt();
+		
+		forms = new String[l];
+		lemmas = new String[l];
+		plemmas = new String[l];
+		ppos = new String[l];
+		gpos = new String[l];
+		labels = new String[l];
+		heads = new int[l];
+		fillp = new String[l];
+		ofeats=new String[l];
+				
+		for(int k=0;k<l;k++) {
+			forms[k] = dis.readUTF();
+			ppos[k]=dis.readUTF();
+			gpos[k]=dis.readUTF();
+			heads[k]=dis.readInt();
+			labels[k]=dis.readUTF();
+			lemmas[k]=dis.readUTF();
+			plemmas[k]=dis.readUTF();
+			ofeats[k]=dis.readUTF();
+			fillp[k]=dis.readUTF();
+					
+		}
+	}
+	
+
+	private void readObject (ObjectInputStream in) throws IOException, ClassNotFoundException {
+		forms = (String[])in.readObject();
+		plemmas = (String[])in.readObject();
+		ppos = (String[])in.readObject();
+		heads = (int[])in.readObject();
+		labels = (String[])in.readObject();
+	}
+
+	public void addPredicate(int i, String s) {
+		
+		int predId;
+		if (sem == null) {
+			predId=0;
+			sem = new String[1];
+			semposition = new int[1];
+		}
+		else  {
+			predId=sem.length;
+			String p[] = new String[sem.length+1];
+			System.arraycopy(sem, 0, p, 0, sem.length);
+			int id[] = new int[sem.length+1];
+			System.arraycopy(semposition, 0, id, 0, semposition.length);
+			sem =p;
+			semposition=id;
+		}
+		sem[predId]=s;
+		semposition[predId]=i;
+	}
+
+	
+	/**
+	 * Add an argument 
+	 * @param i the instance (the child)
+	 * @param predId the id of the predicate (the head)
+	 * @param a the label of the argument
+	 */
+	public void addArgument(int i, int predId, String a) {
+		
+		if (a ==null || a.equals("_")) return;
+		
+		// ensure the space for the argument in the data structure
+		if (arg == null) {
+			arg = new String[predId+1][];
+			argposition = new int[predId+1][];
+		} else if (arg.length<=predId) {
+			String p[][] = new String[predId+1][];
+			System.arraycopy(arg, 0, p, 0, arg.length);
+			arg =p;
+
+			int id[][] = new int[predId+1][];
+			System.arraycopy(argposition, 0, id, 0, argposition.length);
+			argposition = id;
+		}
+		
+		
+		
+		int aId;
+		if (arg[predId]==null) {
+			aId=0;
+			arg[predId] = new String[1];
+			argposition[predId] = new int[1];
+		} else {
+			aId =arg[predId].length;
+			String args[] = new String[arg[predId].length+1];
+			System.arraycopy(arg[predId], 0, args, 0, arg[predId].length);
+			arg[predId]=args;
+			
+			int argsId[] = new int[argposition[predId].length+1];
+			System.arraycopy(argposition[predId], 0, argsId, 0, argposition[predId].length);
+			argposition[predId]=argsId;
+		}
+		
+		arg[predId][aId]=a;
+		argposition[predId][aId]=i;
+		
+	}
+	
+	public int[] getParents() {
+		return heads;
+	}
+
+	public String[] getLabels() {
+		return labels;
+	}
+
+	public String printSem() {
+		
+		if (sem==null) return "";
+		StringBuilder s = new StringBuilder();
+		
+		for(int k=0;k<sem.length;k++) {
+			s.append(sem[k]).append("\n");
+			
+			if (arg==null) {
+				s.append("arg == null");
+			}else
+			if (arg.length<=k) {
+				s.append("args.length <=k arg.length:"+arg.length+" k:"+k);
+			} else if (arg[k]!=null) {
+			for(int a=0;a< arg[k].length;a++) {
+				s.append("  ").append(arg[k][a]);
+			}
+			} else {
+				s.append("args == null ");
+			}
+			s.append('\n');
+		}
+		return s.toString();
+	}
+
+	
+	/**
+	 * Initialize a instance so that a tagger, parser, etc. could be applied
+	 * @param forms
+	 */
+	public void init(String[] forms) {
+		this.forms = forms;
+		heads = new int[forms.length];
+		gpos = new String[forms.length];
+		ppos = new String[forms.length];
+		plemmas = new String[forms.length];
+		feats = new String[forms.length][0];
+		labels = new String[forms.length];
+	}
+
+	/**
+	 * @param instance
+	 * @param fillp2
+	 * @param i09
+	 */
+	public void createSemantic(SentenceData09 instance) {
+			
+			this.sem = instance.sem;
+			this.semposition = instance.semposition;
+
+			if (instance.semposition!=null)
+				for (int k= 0;k< instance.semposition.length;k++) {
+					this.semposition[k]=instance.semposition[k]-1;
+				}
+
+			this.arg = instance.arg;
+
+
+			this.argposition = instance.argposition;
+
+			if (this.argposition!=null)
+				for (int p= 0;p< instance.argposition.length;p++) {
+					if (this.argposition[p]!=null)
+						for(int a=0;a<instance.argposition[p].length;a++)
+							this.argposition[p][a]=instance.argposition[p][a]-1;
+				}
+		
+		
+	}
+
+	/**
+	 * 
+	 */
+	public String oneLine() {
+		
+		
+		StringBuffer o = new StringBuffer();
+		for(int i=1;i<this.length();i++) {
+		
+			if (i!=1)o.append(" ");
+			o.append(this.forms[i]);
+		}
+		return o.toString();
+	}
+
+	/**
+	 * Get the children of this instance
+	 * @param head 
+	 * @return children of the head 
+	 */
+	public  ArrayList<Integer> getChildren(int head) {
+
+		ArrayList<Integer> children = new ArrayList<Integer>();
+		for(int i=0;i<length();i++) {
+			if (heads[i]==head) children.add(i);
+		}
+		return children;
+	}
+
+	public void createWithRoot(SentenceData09 i) {
+		
+		int length = i.length();
+		int offset = 0;
+		if (! i.forms[0].equals(CONLLReader09.ROOT)) {
+			length++;
+			offset = -1;
+		}
+		
+		
+		
+		forms = new String[length];
+		gpos = new String[length];
+		ppos = new String[length];
+		plemmas = new String[length];
+		plabels = new String[length];
+		lemmas = new String[length];
+		heads = new int[length];
+		pheads = new int[length];
+		ofeats = new String[length];
+		pfeats = new String[length];
+		labels = new String[length];
+		fillp = new String[length];
+		id = new String[length];
+		feats = new String[forms.length][];
+		
+		for(int j = 1; j < length; j++) {
+			forms[j] = i.forms[j+offset];
+			ppos[j] = i.ppos[j+offset];
+			gpos[j] = i.gpos[j+offset];
+
+			labels[j] = i.labels[j+offset];
+			heads[j] = i.heads[j+offset];
+
+		 			
+			
+			if (i.pheads!=null) pheads[j] = i.pheads[j+offset];
+			if (i.plabels!=null) plabels[j] = i.plabels[j+offset];
+			
+			
+			if (i.lemmas!=null) lemmas[j] = i.lemmas[j+offset];
+
+			plemmas[j] = i.plemmas[j+offset];
+			
+
+		//	if (i.ofeats!=null)  ofeats[j] = i.ofeats[j+offset];
+			
+			ofeats[j]= i.ofeats[j+offset].equals(CONLLWriter09.DASH)? "_" : i.ofeats[j+offset];
+			
+	//		if (i.pfeats!=null)	pfeats[j] = i.pfeats[j+offset];
+
+			if (i.pfeats!=null && i.pfeats[j+offset]!=null) {
+				if (i.pfeats[j+offset].equals(CONLLWriter09.DASH)) feats[j]=null;
+				else {
+					feats[j] =i.pfeats[j+offset].split(CONLLReader09.PIPE);
+					
+				//	if (info[7].equals(CONLLWriter09.DASH)) it.feats[i]=null;
+				//	else {
+					//	it.feats[i] =info[7].split(PIPE);
+					pfeats[j] = i.pfeats[j+offset];
+				//	}
+				}
+			}
+			
+			if (i.fillp!=null) fillp[j] = i.fillp[j+offset];
+			if (i.id!=null) id[j] = i.id[j+offset];
+		}
+		
+		
+		
+		forms[0] = CONLLReader09.ROOT;
+		plemmas[0] = CONLLReader09.ROOT_LEMMA;
+		fillp[0] = "N";
+		lemmas[0] = CONLLReader09.ROOT_LEMMA;
+
+		gpos[0] = CONLLReader09.ROOT_POS;
+		ppos[0] = CONLLReader09.ROOT_POS;
+		labels[0] = CONLLReader09.NO_TYPE;
+		heads[0] = -1;
+		plabels[0] = CONLLReader09.NO_TYPE;
+		pheads[0] = -1;
+		ofeats[0] = CONLLReader09.NO_TYPE;
+		id[0] ="0";
+	}
+
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/data/Thesaurus.java b/dependencyParser/basic/mate-tools/src/is2/data/Thesaurus.java
new file mode 100644
index 0000000..2d3677a
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/data/Thesaurus.java
@@ -0,0 +1,194 @@
+/**
+ * 
+ */
+package is2.data;
+
+import is2.util.DB;
+
+import java.io.BufferedReader;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+
+/**
+ * @author Dr. Bernd Bohnet, 28.10.2010
+ * 
+ * 
+ */
+final public class Thesaurus {
+
+	public static final String LPATH = "LP";
+	public static final String SPATH = "SP";
+
+	// [word][p]  p = [0:long-path | 1:short-path]  
+	final private int[][] word2path; 
+	
+	public Thesaurus() {
+		word2path =new int[0][];
+	} 
+	
+	/**
+	 * @param clusterFile
+	 * @param mf
+	 * 
+	 */
+	public Thesaurus(String clusterFile, IEncoderPlus mf, int ls) {
+
+		final String REGEX = "\t";
+
+		// register words
+		try {
+			BufferedReader	inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(clusterFile),"UTF-8"),32768);
+
+			int cnt=0;
+			String line;
+			while ((line =inputReader.readLine())!=null) {
+
+				cnt++;
+				try {
+				String[] split = line.split(REGEX); 
+		//		mf.register(LPATH, split[0].length()<ls?split[0]:split[0].substring(0,ls));
+				mf.register(PipeGen.WORD, split[0]);
+				mf.register(PipeGen.WORD, split[1]);
+				} catch(Exception e) {
+					System.out.println("Error in cluster line "+cnt+" error: "+e.getMessage());
+				}
+			}
+			System.out.println("read number of thesaury entries "+cnt);
+			inputReader.close();
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+			
+		word2path = new int[mf.getFeatureCounter().get(PipeGen.WORD)][];
+
+		
+		// insert words
+		try {
+			String line;
+			BufferedReader	inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(clusterFile),"UTF-8"),32768);
+
+			int startWd =-1;
+			ArrayList<Integer> wrds = new ArrayList<Integer>();
+			while ((line =inputReader.readLine())!=null) {
+
+				String[] split = line.split(REGEX);
+				int wd = mf.getValue(PipeGen.WORD, split[0]);
+			//	DB.println("wd "+wd+" "+startWd);
+				if (startWd == wd) {
+					int thesaurusWrd = mf.getValue(PipeGen.WORD, split[1]);
+					if (thesaurusWrd!=wd) wrds.add(thesaurusWrd);
+				} else if (startWd!=-1) {
+					int[] ths = new int[wrds.size()];
+					for(int k=0;k<ths.length;k++) ths[k]=wrds.get(k);
+					word2path[startWd] = ths;
+				//	DB.println(""+wrds+" size "+ths.length);
+					wrds.clear();
+					int thesaurusWrd = mf.getValue(PipeGen.WORD, split[1]);
+					if (thesaurusWrd!=wd) wrds.add(thesaurusWrd);
+				}
+				startWd=wd;
+			}
+			
+			if (wrds.size()!=0) {
+				// put rest of the words
+				int[] ths = new int[wrds.size()];
+				for(int k=0;k<ths.length;k++) ths[k]=wrds.get(k);
+				word2path[startWd] = ths;
+			//	DB.println(""+wrds+" size "+ths.length);
+				wrds.clear();
+				
+
+				
+				
+			}
+			
+			inputReader.close();
+			int fill=0;
+			for(int l = 0; l<word2path.length; l++ ){
+				if (word2path[l]!=null) fill++;
+			}
+			/*
+			for(int l = 0; l<word2path.length; l++ ){
+				if (word2path[l][1]!=0) fillL++;
+				if (word2path[l][1]<-1) System.out.println("lower "+word2path[l][1]);
+			} 
+			*/
+			System.out.println("filled "+fill+" of "+word2path.length);
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * Read the cluster
+	 * @param dos
+	 * @throws IOException 
+	 */
+	public Thesaurus(DataInputStream dis) throws IOException {
+
+		word2path = new int[dis.readInt()][];
+		for(int i =0;i<word2path.length;i++) {
+			int len = dis.readInt();
+			if (len>0) {
+				word2path[i] = new int[len];
+				for(int j =0;j<len;j++) {
+					word2path[i][j] = dis.readInt();
+				
+				}			
+			}
+			
+			word2path[i][0]=dis.readShort();
+		}
+		DB.println("Read cluster with "+word2path.length+" words ");
+	}
+	
+	/**
+	 * Write the cluster
+	 * @param dos
+	 * @throws IOException 
+	 */
+	public void write(DataOutputStream dos) throws IOException {
+
+		dos.writeInt(word2path.length);
+		for(int[] i : word2path) {
+			dos.writeInt(i==null?0:i.length);
+			
+			if (i!=null) {
+				for(int j=0;j<i.length;j++) {
+					
+					dos.writeInt(i[j]);
+					
+				}
+				
+			}
+		}
+	
+	}
+
+	/**
+	 * @param form the id of a word form
+	 * @return the short path to the word form in the cluster
+	
+	final public int getSP(int form) {
+		if (word2path.length<form) return -1;
+		return word2path[form][0];
+	}
+ */
+	/**
+	 * get the long path to a word form in the cluster
+	 * @param form the id of a word form
+	 * @return the long path to the word
+	 */
+	final public int get(int form, int k) {
+		if (word2path.length<form || word2path[form]==null) return -1;
+		return word2path[form][k];
+	}
+
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/io/CONLLReader04.java b/dependencyParser/basic/mate-tools/src/is2/io/CONLLReader04.java
new file mode 100644
index 0000000..4ca5254
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/io/CONLLReader04.java
@@ -0,0 +1,272 @@
+
+
+package is2.io;
+
+import is2.data.Instances;
+import is2.data.SentenceData09;
+import is2.util.DB;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+
+
+
+/**
+ * This class reads files in the CONLL-08 and CONLL-09 format.
+ *
+ * @author Bernd Bohnet
+ */
+public class CONLLReader04  {
+
+	private static final String US = "_";
+	private static final String REGEX = "\t";
+	public static final String STRING = "*";
+	public static final String PIPE = "\\|";
+	public static final String NO_TYPE = "<no-type>";
+	public static final String ROOT_POS = "<root-POS>";
+	public static final String ROOT_LEMMA = "<root-LEMMA>";
+	public static final String ROOT = "<root>";
+	public static final String EMPTY_FEAT = "<ef>";
+
+	private static final String NUMBER = "[0-9]+|[0-9]+\\.[0-9]+|[0-9]+[0-9,]+";
+	private static final String NUM = "<num>";
+
+	private BufferedReader inputReader;
+
+	public static final int TASK08=8;
+	public static final int TASK09=9;
+
+	public static boolean normalizeOn =true;
+
+
+	private int lineNumber = 0;
+
+	public CONLLReader04(){}
+
+	public CONLLReader04(String file){
+		lineNumber=0;
+		try {
+			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"),32768); //,"UTF-8"
+ 		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public CONLLReader04(String file, int task){
+		this(file);
+	}
+
+
+
+	public void startReading(String file ){
+		lineNumber=0;
+		try {
+			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"),32768);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	/**i.forms[heads[l]-1]+" "+rel+" "+
+	 * Read a instance
+	 * @return a instance
+	 * @throws Exception 
+	 */
+	public SentenceData09 getNext() throws Exception  {
+
+		try {
+
+			ArrayList<String[]> lineList = new ArrayList<String[]>();
+
+			String line = inputReader.readLine();
+
+			while(line !=null && line.length()<2) {
+				line = inputReader.readLine();
+				lineNumber++;
+				System.out.println("skip empty line at line "+lineNumber);
+			}
+
+			while (line != null && line.length()!=0 &&  !line.startsWith(STRING) &&!line.startsWith(REGEX)) {
+				lineList.add(line.split(REGEX));
+				line = inputReader.readLine();
+				lineNumber++;
+			}
+
+
+
+			int length = lineList.size();
+
+			if(length == 0) {
+				inputReader.close();
+				return null;
+			}
+
+			SentenceData09 it = new SentenceData09();
+
+			// column	content
+			// 1	id
+			// 2	form
+			// 3	lemma
+			// 4	cpos-tag
+			// 5	pos-tog
+			// 6	feats 
+			// 7	head
+			// 8	deprel
+
+
+			it.forms = new String[length+1];
+
+			it.plemmas = new String[length+1];
+			it.gpos = new String[length+1];
+			it.labels = new String[length+1];
+			it.heads = new int[length+1];
+			it.pheads = new int[length+1];
+			it.plabels = new String[length+1];
+
+			it.ppos = new String[length+1];
+			it.lemmas = new String[length+1];
+			it.fillp = new String[length+1];
+			it.feats = new String[length+1][];
+			it.ofeats = new String[length+1];
+			it.pfeats = new String[length+1];
+
+
+			it.forms[0] = ROOT;
+			it.plemmas[0] = ROOT_LEMMA;
+			it.fillp[0] = "N";
+			it.lemmas[0] = ROOT_LEMMA;
+
+			it.gpos[0] = ROOT_POS;
+			it.ppos[0] = ROOT_POS;
+			it.labels[0] = NO_TYPE;
+			it.heads[0] = -1;
+			it.plabels[0] = NO_TYPE;
+			it.pheads[0] = -1;
+			it.ofeats[0] = NO_TYPE;
+
+			// root is 0 therefore start with 1
+
+			for(int i = 1; i <= length; i++) {
+				
+				String[] info = lineList.get(i-1);
+
+				it.forms[i] = info[0]; //normalize(
+
+				it.lemmas[i] = "_";
+				it.plemmas[i] ="_"; 
+				
+				// 3 cpos
+					
+				it.gpos[i] = info[1];  
+				it.ppos[i] = info[1];
+				
+				it.ofeats[i]="_";
+				
+
+
+				it.feats[i]=null;
+		//		it.feats[i] =info[5].split(PIPE);
+				it.pfeats[i] = "_";
+				
+
+				if (info[2].equals(US)) it.heads[i]=-1;
+				else it.heads[i] = Integer.parseInt(info[2]);// head
+
+
+
+				it.labels[i] = info[3];					
+
+
+			}
+			return it;
+
+		} catch(Exception e) {
+			System.out.println("\n!!! Error in input file at line : "+lineNumber+" "+e.toString());
+			e.printStackTrace();
+			throw new Exception();
+			//	return null;
+		}
+
+	}
+
+	/**
+	 * Read a instance an store it in a compressed format
+	 * @param is
+	 * @return
+	 * @throws IOException
+	 */
+	final public SentenceData09 getNext(Instances is) throws Exception {
+
+		SentenceData09 it = getNext();
+
+		if (is !=null) insert(is,it);
+
+		return it;
+
+	}
+
+
+
+
+	final public boolean insert(Instances is, SentenceData09 it) throws IOException {
+
+		try {
+
+			if(it == null) {
+				inputReader.close();
+				return false;
+			}
+
+			int i= is.createInstance09(it.length());
+
+			for(int p = 0; p < it.length(); p++) {
+
+				is.setForm(i, p, normalize(it.forms[p]));
+				is.setGPos(i, p, it.gpos[p]);			
+
+				if (it.ppos[p]==null||it.ppos[p].equals(US)) {
+					is.setPPoss(i, p, it.gpos[p]);
+				} else is.setPPoss(i, p, it.ppos[p]);
+
+
+				if (it.plemmas[p]==null ||it.plemmas[p].equals(US)) {
+					is.setLemma(i, p, normalize(it.forms[p]));
+				} else is.setLemma(i, p, normalize(it.plemmas[p]));
+
+
+				is.setFeats(i,p,it.feats[p]);
+
+
+				is.setFeature(i,p,it.ofeats[p]);
+
+
+				is.setRel(i,p,it.labels[p]);
+				if (it.plabels!=null) is.setPRel(i,p,it.plabels[p]);
+				is.setHead(i,p,it.heads[p]);
+				if (it.pheads!=null) is.setPHead(i,p,it.pheads[p]);
+
+				if (it.fillp!=null && it.fillp[p]!=null && it.fillp[p].startsWith("Y")) is.pfill[i].set(p);
+				else is.pfill[i].clear(p);
+			}
+
+			if (is.createSem(i,it)) {
+				DB.println("count "+i+" len "+it.length());
+				DB.println(it.printSem());
+			}
+		} catch(Exception e ){
+			DB.println("head "+it);
+			e.printStackTrace();
+		}
+		return true;
+
+	}
+	public static String normalize (String s) {
+		if (!normalizeOn) return s;
+		if(s.matches(NUMBER))  return NUM;
+		return s;
+	}	
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/io/CONLLReader06.java b/dependencyParser/basic/mate-tools/src/is2/io/CONLLReader06.java
new file mode 100755
index 0000000..351fa04
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/io/CONLLReader06.java
@@ -0,0 +1,275 @@
+
+
+package is2.io;
+
+import is2.data.Instances;
+import is2.data.SentenceData09;
+import is2.util.DB;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+
+
+
+/**
+ * This class reads files in the CONLL-08 and CONLL-09 format.
+ *
+ * @author Bernd Bohnet
+ */
+public class CONLLReader06  {
+
+	private static final String US = "_";
+	private static final String REGEX = "\t";
+	public static final String STRING = "*";
+	public static final String PIPE = "\\|";
+	public static final String NO_TYPE = "<no-type>";
+	public static final String ROOT_POS = "<root-POS>";
+	public static final String ROOT_LEMMA = "<root-LEMMA>";
+	public static final String ROOT = "<root>";
+	public static final String EMPTY_FEAT = "<ef>";
+
+	private static final String NUMBER = "[0-9]+|[0-9]+\\.[0-9]+|[0-9]+[0-9,]+";
+	private static final String NUM = "<num>";
+
+	private BufferedReader inputReader;
+
+	public static final int TASK08=8;
+	public static final int TASK09=9;
+
+	public static boolean normalizeOn =true;
+
+
+	private int lineNumber = 0;
+
+	public CONLLReader06(){}
+
+	public CONLLReader06(String file){
+		lineNumber=0;
+		try {
+			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"),32768); //,"UTF-8"
+ 		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public CONLLReader06(String file, int task){
+		this(file);
+	}
+
+
+
+	public void startReading(String file ){
+		lineNumber=0;
+		try {
+			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"),32768);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	/**i.forms[heads[l]-1]+" "+rel+" "+
+	 * Read a instance
+	 * @return a instance
+	 * @throws Exception 
+	 */
+	public SentenceData09 getNext() throws Exception  {
+
+		try {
+
+			ArrayList<String[]> lineList = new ArrayList<String[]>();
+
+			String line = inputReader.readLine();
+
+			while(line !=null && line.length()==0) {
+				line = inputReader.readLine();
+				lineNumber++;
+				System.out.println("skip empty line at line "+lineNumber);
+			}
+
+			while (line != null && line.length()!=0 &&  !line.startsWith(STRING) &&!line.startsWith(REGEX)) {
+				lineList.add(line.split(REGEX));
+				line = inputReader.readLine();
+				lineNumber++;
+			}
+
+
+
+			int length = lineList.size();
+
+			if(length == 0) {
+				inputReader.close();
+				return null;
+			}
+
+			SentenceData09 it = new SentenceData09();
+
+			// column	content
+			// 1	id
+			// 2	form
+			// 3	lemma
+			// 4	cpos-tag
+			// 5	pos-tog
+			// 6	feats 
+			// 7	head
+			// 8	deprel
+
+
+			it.forms = new String[length+1];
+
+			it.plemmas = new String[length+1];
+			it.gpos = new String[length+1];
+			it.labels = new String[length+1];
+			it.heads = new int[length+1];
+			it.pheads = new int[length+1];
+			it.plabels = new String[length+1];
+
+			it.ppos = new String[length+1];
+			it.lemmas = new String[length+1];
+			it.fillp = new String[length+1];
+			it.feats = new String[length+1][];
+			it.ofeats = new String[length+1];
+			it.pfeats = new String[length+1];
+
+
+			it.forms[0] = ROOT;
+			it.plemmas[0] = ROOT_LEMMA;
+			it.fillp[0] = "N";
+			it.lemmas[0] = ROOT_LEMMA;
+
+			it.gpos[0] = ROOT_POS;
+			it.ppos[0] = ROOT_POS;
+			it.labels[0] = NO_TYPE;
+			it.heads[0] = -1;
+			it.plabels[0] = NO_TYPE;
+			it.pheads[0] = -1;
+			it.ofeats[0] = NO_TYPE;
+
+			// root is 0 therefore start with 1
+
+			for(int i = 1; i <= length; i++) {
+				
+				String[] info = lineList.get(i-1);
+
+				it.forms[i] = info[1]; //normalize(
+
+				it.lemmas[i] = info[2];
+				it.plemmas[i] =info[2]; 
+				
+				// 3 cpos
+					
+				it.gpos[i] = info[3];  
+				it.ppos[i] = info[4];
+				
+				it.ofeats[i]=info[5].equals(CONLLWriter09.DASH)? "": info[5];
+
+
+
+				if (info[5].equals(CONLLWriter09.DASH)) it.feats[i]=null;
+				else {
+					it.feats[i] =info[5].split(PIPE);
+					it.pfeats[i] = info[5];
+				}
+
+				if (info[6].equals(US)) it.heads[i]=-1;
+				else it.heads[i] = Integer.parseInt(info[6]);// head
+
+
+//				it.phead[i]=info[9].equals(US) ? it.phead[i]=-1:  Integer.parseInt(info[9]);// head
+
+				it.labels[i] = info[7];					
+//				it.pedge[i] = info[11];
+
+
+			}
+			return it;
+
+		} catch(Exception e) {
+			System.out.println("\n!!! Error in input file at line : "+lineNumber+" "+e.toString());
+			e.printStackTrace();
+			throw new Exception();
+			//	return null;
+		}
+
+	}
+
+	/**
+	 * Read a instance an store it in a compressed format
+	 * @param is
+	 * @return
+	 * @throws IOException
+	 */
+	final public SentenceData09 getNext(Instances is) throws Exception {
+
+		SentenceData09 it = getNext();
+
+		if (is !=null) insert(is,it);
+
+		return it;
+
+	}
+
+
+
+
+	final public boolean insert(Instances is, SentenceData09 it) throws IOException {
+
+		try {
+
+			if(it == null) {
+				inputReader.close();
+				return false;
+			}
+
+			int i= is.createInstance09(it.length());
+
+			for(int p = 0; p < it.length(); p++) {
+
+				is.setForm(i, p, normalize(it.forms[p]));
+				is.setGPos(i, p, it.gpos[p]);			
+
+				if (it.ppos[p]==null||it.ppos[p].equals(US)) {
+					is.setPPoss(i, p, it.gpos[p]);
+				} else is.setPPoss(i, p, it.ppos[p]);
+
+
+				if (it.plemmas[p]==null ||it.plemmas[p].equals(US)) {
+					is.setLemma(i, p, normalize(it.forms[p]));
+				} else is.setLemma(i, p, normalize(it.plemmas[p]));
+
+
+				is.setFeats(i,p,it.feats[p]);
+
+
+				is.setFeature(i,p,it.ofeats[p]);
+
+
+				is.setRel(i,p,it.labels[p]);
+				if (it.plabels!=null) is.setPRel(i,p,it.plabels[p]);
+				is.setHead(i,p,it.heads[p]);
+				if (it.pheads!=null) is.setPHead(i,p,it.pheads[p]);
+
+				if (it.fillp!=null && it.fillp[p]!=null && it.fillp[p].startsWith("Y")) is.pfill[i].set(p);
+				else is.pfill[i].clear(p);
+			}
+
+			if (is.createSem(i,it)) {
+				DB.println("count "+i+" len "+it.length());
+				DB.println(it.printSem());
+			}
+		} catch(Exception e ){
+			DB.println("head "+it);
+			e.printStackTrace();
+		}
+		return true;
+
+	}
+	public static String normalize (String s) {
+		if (!normalizeOn) return s;
+		if(s.matches(NUMBER))  return NUM;
+		return s;
+	}	
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/io/CONLLReader08.java b/dependencyParser/basic/mate-tools/src/is2/io/CONLLReader08.java
new file mode 100644
index 0000000..a6194a3
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/io/CONLLReader08.java
@@ -0,0 +1,413 @@
+
+
+package is2.io;
+
+import is2.data.Instances;
+import is2.data.SentenceData09;
+import is2.util.DB;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+
+
+
+/**
+ * This class reads files in the CONLL-09 format.
+ *  
+ * @author Bernd Bohnet
+ */
+public class CONLLReader08 extends IOGenerals {
+
+
+	private BufferedReader inputReader;
+
+	public static final boolean NORMALIZE = true;
+
+	public static final boolean NO_NORMALIZE = false;
+
+	public  boolean normalizeOn =true;
+
+	
+	
+	private int format = 0; 
+
+	private int lineNumber = 0;
+
+
+	public CONLLReader08(boolean normalize){
+
+		normalizeOn=normalize;
+	}
+
+	public CONLLReader08(String file){
+		lineNumber=0;
+		try {
+			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"),32768);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public CONLLReader08(String file, boolean normalize){
+		this(file);
+		normalizeOn=normalize;
+	}
+
+	/**
+	 * Sets the input format: 
+	 * 
+	 * CONLL09 is standard, 
+	 * ONE_LINE
+	 * 
+	 *  @param format  the fomrat (see the constants starting with F_).
+	 */
+	public void setInputFormat(int format) {
+		this.format=format;
+	}
+	
+	
+
+	/**
+	 * 
+	 */
+	public CONLLReader08() {}
+
+	/**
+	 * @param testfile
+	 * @param formatTask
+	 */
+	public CONLLReader08(String testfile, int formatTask) {
+		this(testfile);
+	}
+
+	public void startReading(String file ){
+		lineNumber=0;
+		try {
+			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"),32768);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public SentenceData09 getNext()  {
+
+		if (F_ONE_LINE == format) return getNextOneLine(); 
+		else return getNextCoNLL09();
+	}
+	
+	/**
+	 * @return
+	 */
+	private SentenceData09 getNextOneLine() {
+		
+		String line=null;
+		int i=0;
+		try {
+
+
+			line = inputReader.readLine();
+			lineNumber++;
+
+			if (line==null ) {
+				inputReader.close();
+				return null;
+			}
+			
+			String[] tokens = line.split(" ");
+			int length = tokens.length;
+			if (line.isEmpty()) length=0;
+
+ 			SentenceData09 it = new SentenceData09();
+
+			it.forms = new String[length+1];
+
+			it.plemmas = new String[length+1];
+			//	it.ppos = new String[length+1];
+			it.gpos = new String[length+1];
+			it.labels = new String[length+1];
+			it.heads = new int[length+1];
+			it.pheads = new int[length+1];
+			it.plabels = new String[length+1];
+
+			it.ppos = new String[length+1];
+			it.lemmas = new String[length+1];
+			it.fillp = new String[length+1];
+			it.feats = new String[length+1][];
+			it.ofeats = new String[length+1];
+			it.pfeats = new String[length+1];
+			it.id = new String[length+1];
+
+			it.forms[0] = ROOT;
+			it.plemmas[0] = ROOT_LEMMA;
+			it.fillp[0] = "N";
+			it.lemmas[0] = ROOT_LEMMA;
+
+			it.gpos[0] = ROOT_POS;
+			it.ppos[0] = ROOT_POS;
+			it.labels[0] = NO_TYPE;
+			it.heads[0] = -1;
+			it.plabels[0] = NO_TYPE;
+			it.pheads[0] = -1;
+			it.ofeats[0] = NO_TYPE;
+			it.id[0] ="0";
+
+			// root is 0 therefore start with 1
+
+			for(i = 1; i <= length; i++) {
+				
+				it.id[i] = ""+i;
+			
+				it.forms[i] = this.normalizeOn?normalize(tokens[i-1]):tokens[i-1]; //normalize(
+
+
+			}
+		
+			return it;
+
+		} catch(Exception e) {
+			System.out.println("\n!!! Error in input file sentence before line: "+lineNumber+" (in sentence line "+i+" ) "+e.toString());
+			e.printStackTrace();
+			System.exit(0);
+			
+			
+
+
+			//throw new Exception();
+			return null;
+		}
+
+		
+		
+	}
+
+	/**i.forms[heads[l]-1]+" "+rel+" "+
+	 * Read a instance
+	 * @return a instance
+	 * @throws Exception 
+	 */
+	
+	public SentenceData09 getNextCoNLL09()  {
+
+		String line=null;
+		int i=0;
+		try {
+
+			ArrayList<String[]> lineList = new ArrayList<String[]>();
+
+			line = inputReader.readLine();
+			lineNumber++;
+
+			while(line !=null && line.length()==0) {
+				line = inputReader.readLine();
+				lineNumber++;
+				System.out.println("skip empty line at line "+lineNumber);
+			} 
+
+			while (line != null && line.length()!=0 &&  !line.startsWith(STRING) &&!line.startsWith(REGEX)) {
+				lineList.add(line.split(REGEX));
+				line = inputReader.readLine();
+				lineNumber++;
+			}
+
+
+
+			int length = lineList.size();
+
+			if(length == 0) {
+				inputReader.close();
+				return null;
+			}
+
+			SentenceData09 it = new SentenceData09();
+
+			it.forms = new String[length+1];
+
+			it.plemmas = new String[length+1];
+			//	it.ppos = new String[length+1];
+			it.gpos = new String[length+1];
+			it.labels = new String[length+1];
+			it.heads = new int[length+1];
+			it.pheads = new int[length+1];
+			it.plabels = new String[length+1];
+
+			it.ppos = new String[length+1];
+			it.lemmas = new String[length+1];
+			it.fillp = new String[length+1];
+			it.feats = new String[length+1][];
+			it.ofeats = new String[length+1];
+			it.pfeats = new String[length+1];
+			it.id = new String[length+1];
+
+			it.forms[0] = ROOT;
+			it.plemmas[0] = ROOT_LEMMA;
+			it.fillp[0] = "N";
+			it.lemmas[0] = ROOT_LEMMA;
+
+			it.gpos[0] = ROOT_POS;
+			it.ppos[0] = ROOT_POS;
+			it.labels[0] = NO_TYPE;
+			it.heads[0] = -1;
+			it.plabels[0] = NO_TYPE;
+			it.pheads[0] = -1;
+			it.ofeats[0] = NO_TYPE;
+			it.id[0] ="0";
+
+			// root is 0 therefore start with 1
+
+			for(i = 1; i <= length; i++) {
+				
+				
+				
+				String[] info = lineList.get(i-1);
+
+				it.id[i] = info[0];
+				it.forms[i] = info[5]; //normalize(
+				if (info.length<3) continue;
+
+				//it.lemmas[i] = info[2];
+				it.plemmas[i] =info[6]; 
+				it.gpos[i] = info[3];  
+
+				if (info.length<5) continue;
+				it.ppos[i] = info[7];//.split("\\|")[0];
+				
+				// feat 6
+				// pfeat 7
+
+				// this causes trouble in the perl eval09 scirpt
+				//it.ofeats[i]=info[6].equals(CONLLWriter09.DASH)? "" : info[6];
+
+				// now we try underscore
+				it.ofeats[i]="_";
+
+				
+				//	it.feats[i] ="_";
+					it.pfeats[i] = "_";
+				
+
+				
+				
+				if (info[8].equals(US)) it.heads[i]=-1;
+				else it.heads[i] = Integer.parseInt(info[8]);// head
+	
+				it.pheads[i]=-1;// head
+
+				it.labels[i] = info[9];					
+				it.plabels[i] = "_";
+				
+				it.fillp[i]=info[10];
+
+				if (info.length>11) {
+					if (!info[10].equals(US)) it.addPredicate(i,info[10]);
+					for(int k=11;k<info.length;k++)  it.addArgument(i,k-11,info[k]);
+				}
+
+
+
+
+			}
+			return it;
+
+		} catch(Exception e) {
+			System.out.println("\n!!! Error in input file sentence before line: "+lineNumber+" (in sentence line "+i+" ) "+e.toString());
+			e.printStackTrace();
+			System.exit(0);
+			
+			
+
+
+			//throw new Exception();
+			return null;
+		}
+
+	}
+
+	/**
+	 * Read a instance an store it in a compressed format
+	 * @param is
+	 * @return
+	 * @throws IOException
+	 */
+	final public SentenceData09 getNext(Instances is)  {
+
+		SentenceData09 it = getNext();
+
+		if (is !=null) insert(is,it);
+
+		return it;
+
+	}
+
+
+
+
+	final public boolean insert(Instances is, SentenceData09 it) {
+
+		try {
+
+			if(it == null) {
+				inputReader.close();
+				return false;
+			}
+
+			int i= is.createInstance09(it.length());
+
+			for(int p = 0; p < it.length(); p++) {
+
+				is.setForm(i, p, normalize(it.forms[p]));
+				is.setGPos(i, p, it.gpos[p]);	
+
+				//		System.out.println(""+is.gpos[i][p]);
+
+				if (it.ppos[p]==null||it.ppos[p].equals(US)) {
+					
+					is.setPPoss(i, p, it.gpos[p]);
+				} else is.setPPoss(i, p, it.ppos[p]);
+
+
+				if (it.plemmas[p]==null ||it.plemmas[p].equals(US)) {
+					is.setLemma(i, p, normalize(it.forms[p]));
+				} else is.setLemma(i, p, normalize(it.plemmas[p]));
+
+				if (it.lemmas!=null)
+					if (it.lemmas[p]==null ) { // ||it.org_lemmas[p].equals(US) that harms a lot the lemmatizer
+						is.setGLemma(i, p, it.plemmas[p]);
+					} else is.setGLemma(i, p, it.lemmas[p]);
+
+
+				if (it.feats!=null && it.feats[p]!=null) is.setFeats(i,p,it.feats[p]);
+
+				if (it.ofeats!=null) is.setFeature(i,p,it.ofeats[p]);
+
+
+				is.setRel(i,p,it.labels[p]);
+				if (it.plabels!=null) is.setPRel(i,p,it.plabels[p]);
+
+				is.setHead(i,p,it.heads[p]);
+				if (it.pheads!=null) is.setPHead(i,p,it.pheads[p]);
+
+				if (it.fillp!=null && it.fillp[p]!=null && it.fillp[p].startsWith("Y")) is.pfill[i].set(p);
+				else is.pfill[i].clear(p);
+			}
+
+			if (is.createSem(i,it)) {
+				DB.println("count "+i+" len "+it.length());
+				DB.println(it.printSem());
+			}
+		} catch(Exception e ){
+			DB.println("head "+it);
+			e.printStackTrace();
+		}
+		return true;
+
+	}
+	public String normalize (String s) {
+		if (!normalizeOn) return s;
+		if(s.matches(NUMBER))  return NUM;
+		return s;
+	}	
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/io/CONLLReader09.java b/dependencyParser/basic/mate-tools/src/is2/io/CONLLReader09.java
new file mode 100755
index 0000000..c020579
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/io/CONLLReader09.java
@@ -0,0 +1,411 @@
+
+
+package is2.io;
+
+import is2.data.Instances;
+import is2.data.SentenceData09;
+import is2.util.DB;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+
+
+
+/**
+ * This class reads files in the CONLL-09 format.
+ *  
+ * @author Bernd Bohnet
+ */
+public class CONLLReader09 extends IOGenerals {
+
+
+	private BufferedReader inputReader;
+
+	public static final boolean NORMALIZE = true;
+
+	public static final boolean NO_NORMALIZE = false;
+
+	public  boolean normalizeOn =true;
+
+	static public String joint ="";
+	
+	private int format = 0; 
+
+	private int lineNumber = 0;
+
+
+	public CONLLReader09(boolean normalize){
+
+		normalizeOn=normalize;
+	}
+
+	public CONLLReader09(String file){
+		lineNumber=0;
+		try {
+			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"),32768);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public CONLLReader09(String file, boolean normalize){
+		this(file);
+		normalizeOn=normalize;
+	}
+
+	/**
+	 * Sets the input format: 
+	 * 
+	 * CONLL09 is standard, 
+	 * ONE_LINE
+	 * 
+	 *  @param format  the fomrat (see the constants starting with F_).
+	 */
+	public void setInputFormat(int format) {
+		this.format=format;
+	}
+	
+	
+
+	/**
+	 * 
+	 */
+	public CONLLReader09() {}
+
+	/**
+	 * @param testfile
+	 * @param formatTask
+	 */
+	public CONLLReader09(String testfile, int formatTask) {
+		this(testfile);
+	}
+
+	public void startReading(String file ){
+		lineNumber=0;
+		try {
+			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"),32768);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public SentenceData09 getNext()  {
+
+		if (F_ONE_LINE == format) return getNextOneLine(); 
+		else return getNextCoNLL09();
+	}
+	
+	/**
+	 * @return
+	 */
+	private SentenceData09 getNextOneLine() {
+		
+		String line=null;
+		int i=0;
+		try {
+
+
+			line = inputReader.readLine();
+			lineNumber++;
+
+			if (line==null ) {
+				inputReader.close();
+				return null;
+			}
+			
+			String[] tokens = line.split(" ");
+			int length = tokens.length;
+			if (line.isEmpty()) length=0;
+
+ 			SentenceData09 it = new SentenceData09();
+
+			it.forms = new String[length+1];
+
+			it.plemmas = new String[length+1];
+			//	it.ppos = new String[length+1];
+			it.gpos = new String[length+1];
+			it.labels = new String[length+1];
+			it.heads = new int[length+1];
+			it.pheads = new int[length+1];
+			it.plabels = new String[length+1];
+
+			it.ppos = new String[length+1];
+			it.lemmas = new String[length+1];
+			it.fillp = new String[length+1];
+			it.feats = new String[length+1][];
+			it.ofeats = new String[length+1];
+			it.pfeats = new String[length+1];
+			it.id = new String[length+1];
+
+			it.forms[0] = ROOT;
+			it.plemmas[0] = ROOT_LEMMA;
+			it.fillp[0] = "N";
+			it.lemmas[0] = ROOT_LEMMA;
+
+			it.gpos[0] = ROOT_POS;
+			it.ppos[0] = ROOT_POS;
+			it.labels[0] = NO_TYPE;
+			it.heads[0] = -1;
+			it.plabels[0] = NO_TYPE;
+			it.pheads[0] = -1;
+			it.ofeats[0] = NO_TYPE;
+			it.id[0] ="0";
+
+			// root is 0 therefore start with 1
+
+			for(i = 1; i <= length; i++) {
+				
+				it.id[i] = ""+i;
+			
+				it.forms[i] = this.normalizeOn?normalize(tokens[i-1]):tokens[i-1]; //normalize(
+
+
+			}
+		
+			return it;
+
+		} catch(Exception e) {
+			System.out.println("\n!!! Error in input file sentence before line: "+lineNumber+" (in sentence line "+i+" ) "+e.toString());
+			e.printStackTrace();
+		
+			
+			
+
+
+			//throw new Exception();
+			return null;
+		}
+
+		
+		
+	}
+
+	/**i.forms[heads[l]-1]+" "+rel+" "+
+	 * Read a instance
+	 * @return a instance
+	 * @throws Exception 
+	 */
+	
+	public SentenceData09 getNextCoNLL09()  {
+
+		String line=null;
+		int i=0;
+		try {
+
+			ArrayList<String[]> lineList = new ArrayList<String[]>();
+
+			line = inputReader.readLine();
+			lineNumber++;
+
+			while(line !=null && line.length()==0) {
+				line = inputReader.readLine();
+				lineNumber++;
+				System.out.println("skip empty line at line "+lineNumber);
+			} 
+
+			while (line != null && line.length()!=0 &&  !line.startsWith(STRING) &&!line.startsWith(REGEX)) {
+				lineList.add(line.split(REGEX));
+				line = inputReader.readLine();
+				lineNumber++;
+			}
+
+
+
+			int length = lineList.size();
+
+			if(length == 0) {
+				inputReader.close();
+				return null;
+			}
+
+			SentenceData09 it = new SentenceData09();
+
+			it.forms = new String[length+1];
+
+			it.plemmas = new String[length+1];
+			//	it.ppos = new String[length+1];
+			it.gpos = new String[length+1];
+			it.labels = new String[length+1];
+			it.heads = new int[length+1];
+			it.pheads = new int[length+1];
+			it.plabels = new String[length+1];
+
+			it.ppos = new String[length+1];
+			it.lemmas = new String[length+1];
+			it.fillp = new String[length+1];
+			it.feats = new String[length+1][];
+			it.ofeats = new String[length+1];
+			it.pfeats = new String[length+1];
+			it.id = new String[length+1];
+
+			it.forms[0] = ROOT;
+			it.plemmas[0] = ROOT_LEMMA;
+			it.fillp[0] = "N";
+			it.lemmas[0] = ROOT_LEMMA;
+
+			it.gpos[0] = ROOT_POS;
+			it.ppos[0] = ROOT_POS;
+			it.labels[0] = NO_TYPE;
+			it.heads[0] = -1;
+			it.plabels[0] = NO_TYPE;
+			it.pheads[0] = -1;
+			it.ofeats[0] = NO_TYPE;
+			it.id[0] ="0";
+
+			// root is 0 therefore start with 1
+
+			for(i = 1; i <= length; i++) {
+				
+				
+				
+				String[] info = lineList.get(i-1);
+
+				it.id[i] = info[0];
+				it.forms[i] = info[1]; //normalize(
+				if (info.length<3) continue;
+
+				it.lemmas[i] = info[2];
+				it.plemmas[i] =info[3]; 
+				it.gpos[i] = info[4];  
+
+				if (info.length<5) continue;
+				it.ppos[i] = info[5];//.split("\\|")[0];
+				// feat 6
+		
+				// now we try underscore
+				it.ofeats[i]=info[6].equals(CONLLWriter09.DASH)? "_" : info[6];
+		
+				if (info[7].equals(CONLLWriter09.DASH)) it.feats[i]=null;
+				else {
+					it.feats[i] =info[7].split(PIPE);
+					it.pfeats[i] = info[7];
+				}
+
+				
+				
+				if (info[8].equals(US))it.heads[i]=-1;
+				else it.heads[i] = Integer.parseInt(info[8]);// head
+	
+				it.pheads[i]=info[9].equals(US) ? it.pheads[i]=-1:  Integer.parseInt(info[9]);// head
+
+				it.labels[i] = info[10];					
+				it.plabels[i] = info[11];
+				it.fillp[i]=info[12];
+
+				if (info.length>13) {
+					if (!info[13].equals(US)) it.addPredicate(i,info[13]);
+					for(int k=14;k<info.length;k++)  it.addArgument(i,k-14,info[k]);
+
+				}
+
+
+
+
+			}
+			return it;
+
+		} catch(Exception e) {
+			System.out.println("\n!!! Error in input file sentence before line: "+lineNumber+" (in sentence line "+i+" ) "+e.toString());
+			e.printStackTrace();
+			System.exit(0);
+			
+			
+
+
+			//throw new Exception();
+			return null;
+		}
+
+	}
+
+	/**
+	 * Read a instance an store it in a compressed format
+	 * @param is
+	 * @return
+	 * @throws IOException
+	 */
+	final public SentenceData09 getNext(Instances is)  {
+
+		SentenceData09 it = getNext();
+
+		if (is !=null) insert(is,it);
+
+		return it;
+
+	}
+
+
+
+
+	final public boolean insert(Instances is, SentenceData09 it) {
+
+		try {
+
+			if(it == null) {
+				inputReader.close();
+				return false;
+			}
+
+			int i= is.createInstance09(it.length());
+
+			for(int p = 0; p < it.length(); p++) {
+
+				is.setForm(i, p, normalize(it.forms[p]));
+			//	is.setFormOrg(i, p, it.forms[p]);
+				is.setGPos(i, p, it.gpos[p]);	
+
+				//		System.out.println(""+is.gpos[i][p]);
+
+				if (it.ppos[p]==null||it.ppos[p].equals(US)) {
+					
+					is.setPPoss(i, p, it.gpos[p]);
+				} else is.setPPoss(i, p, it.ppos[p]);
+
+
+				if (it.plemmas[p]==null ||it.plemmas[p].equals(US)) {
+					is.setLemma(i, p, normalize(it.forms[p]));
+				} else is.setLemma(i, p, normalize(it.plemmas[p]));
+
+				if (it.lemmas!=null)
+					if (it.lemmas[p]==null ) { // ||it.org_lemmas[p].equals(US) that harms a lot the lemmatizer
+						is.setGLemma(i, p, it.plemmas[p]);
+					} else is.setGLemma(i, p, it.lemmas[p]);
+
+
+				if (it.feats!=null && it.feats[p]!=null) is.setFeats(i,p,it.feats[p]); 
+
+				if (it.ofeats!=null) is.setFeature(i,p,it.ofeats[p]);
+				if (it.pfeats!=null) is.setPFeature(i,p,it.pfeats[p]);
+
+
+				is.setRel(i,p,it.labels[p]);
+				if (it.plabels!=null) is.setPRel(i,p,it.plabels[p]);
+
+				is.setHead(i,p,it.heads[p]);
+				if (it.pheads!=null) is.setPHead(i,p,it.pheads[p]);
+
+				if (it.fillp!=null && it.fillp[p]!=null && it.fillp[p].startsWith("Y")) is.pfill[i].set(p);
+				else is.pfill[i].clear(p);
+			}
+
+			if (is.createSem(i,it)) {
+				DB.println("count "+i+" len "+it.length());
+				DB.println(it.printSem());
+			}
+		} catch(Exception e ){
+			DB.println("head "+it);
+			e.printStackTrace();
+		}
+		return true;
+
+	}
+	 public String normalize (String s) {
+		if (!normalizeOn) return s;
+		if(s.matches(NUMBER))  return NUM;
+		return s;
+	}	
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/io/CONLLWriter06.java b/dependencyParser/basic/mate-tools/src/is2/io/CONLLWriter06.java
new file mode 100755
index 0000000..26762bc
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/io/CONLLWriter06.java
@@ -0,0 +1,193 @@
+package is2.io;
+
+import is2.data.SentenceData09;
+import is2.util.DB;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.util.StringTokenizer;
+
+
+public class CONLLWriter06  {
+
+	public static final String DASH = "_";
+	
+	protected BufferedWriter writer;
+
+	public CONLLWriter06 () { }
+	
+	
+	
+	public static void main(String args[]) throws IOException {
+		
+		
+		if (args.length==2) {
+		File f = new File(args[0]);
+		File f2 = new File(args[1]);
+	//	BufferedReader bf = new BufferedReader(new FileInputStream(new File(args[0]),"UTF-8"),32768);
+		BufferedReader ir = new BufferedReader(new InputStreamReader(new FileInputStream(f),"ISO-8859"),32768);
+		BufferedWriter br = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f2),"UTF-8"));;
+		boolean found =false;
+		boolean tab =false;
+		while(true) {
+			String l = ir.readLine();
+			if (l==null) break;
+			String x =l.trim();
+			if (x.endsWith("\t")) tab=true;
+			br.write(x);
+			br.newLine();
+			if (!l.equals(x)) found =true; 
+			
+		}
+		ir.close();
+		br.flush();
+		br.close();
+
+		if (found) DB.println("found diff. found tab? "+tab);
+		} else if (args.length==3) {
+			File f1 = new File(args[1]);
+			File f2 = new File(args[2]);
+			
+			BufferedReader ir1 = new BufferedReader(new InputStreamReader(new FileInputStream(f1),"ISO-8859"),32768);
+			BufferedReader ir2 = new BufferedReader(new InputStreamReader(new FileInputStream(f2),"UTF-8"),32768);
+
+			int line =0, alltabs1=0,alltabs2=0;
+			while(true) {
+				String l1 = ir1.readLine();
+				String l2 = ir2.readLine();
+
+				if (l1==null && l2!=null) DB.println("files do not end at the same line ");
+				if (l1!=null && l2==null) DB.println("files do not end at the same line ");
+				if (l1==null ) break;
+				StringTokenizer t1 = new StringTokenizer(l1,"\t");
+				StringTokenizer t2 = new StringTokenizer(l2,"\t");
+				int tabs1=0;
+				while(t1.hasMoreTokens()) {
+
+					t1.nextElement();
+					tabs1++;
+					alltabs1++;
+				}
+				
+				int tabs2=0;
+				while(t2.hasMoreTokens()) {
+
+					t2.nextElement();
+					tabs2++;
+					alltabs2++;
+				}
+				line ++;
+				if (tabs1!=tabs2) {
+					DB.println("number of tabs different in line "+line+" file1-tabs "+tabs1+" file2-tabs "+tabs2);
+					System.exit(0);
+				}
+				
+				
+			}
+			DB.println("checked lines "+line+" with tabs in file 1 "+alltabs1+" in file2 "+alltabs2);
+			
+		} else {
+			File f = new File(args[0]);
+			String[] dir =f.list();
+			for(String fx :dir) {
+				BufferedReader ir = new BufferedReader(new InputStreamReader(new FileInputStream(args[0]+File.separatorChar+fx),"UTF-8"),32768);
+				System.out.println("check file "+fx);
+				while(true) {
+					String l = ir.readLine();
+					if (l==null) break;
+					if (l.endsWith("\t")) {
+						DB.println("found tab in file "+fx);
+						break;
+					}
+				}				
+				ir.close();
+			}
+		}
+		
+	}
+	
+	
+//	public int version = CONLLReader09.TASK08;
+	
+	public CONLLWriter06 (String file) {
+		
+		try {
+			writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"UTF-8"));
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+	
+	public CONLLWriter06(String outfile, int formatTask) {
+		this(outfile);
+	//	version = formatTask;
+	}
+
+	public void write(SentenceData09 inst) throws IOException {
+
+		for (int i=0; i<inst.length(); i++) {
+			
+					
+				writer.write(Integer.toString(i+1)); writer.write('\t');	// id
+				writer.write(inst.forms[i]);     writer.write('\t'); 	// form
+				
+				if (inst.lemmas!=null && inst.lemmas[i]!=null) {
+					writer.write(inst.lemmas[i]);   
+				}
+				else writer.write(DASH);									// lemma
+				writer.write('\t');
+				
+//				writer.write(DASH);	// cpos
+//				writer.write('\t');
+				
+
+				writer.write(inst.gpos[i]); // cpos has to be included
+				writer.write('\t'); 
+				
+				writer.write(inst.gpos[i]); // gpos
+				writer.write('\t');  
+							
+				
+				if (inst.ofeats[i].isEmpty()||inst.ofeats[i].equals(" ")) writer.write(DASH); 
+				else writer.write(inst.ofeats[i]);  
+				writer.write('\t');  
+				 
+				
+				//writer.write(DASH); writer.write('\t'); 					// pfeat
+				
+				writer.write(Integer.toString(inst.heads[i]));  writer.write('\t');  // head
+				
+				if (inst.labels[i]!=null) writer.write(inst.labels[i]); 	// rel                  
+				else writer.write(DASH); 
+				writer.write('\t');
+				
+				writer.write(DASH); 
+				writer.write('\t');
+				
+				writer.write(DASH); 
+				writer.write('\t');
+
+						
+				writer.newLine();
+		}
+		writer.newLine();
+
+	}
+
+
+
+	public void finishWriting () throws IOException {
+		writer.flush();
+		writer.close();
+	}
+
+
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/io/CONLLWriter09.java b/dependencyParser/basic/mate-tools/src/is2/io/CONLLWriter09.java
new file mode 100755
index 0000000..e7a92a5
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/io/CONLLWriter09.java
@@ -0,0 +1,307 @@
+package is2.io;
+
+import is2.data.SentenceData09;
+import is2.util.DB;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.util.StringTokenizer;
+
+
+public class CONLLWriter09 extends IOGenerals {
+
+	
+	int format =0;
+	
+	public static final String DASH = "_";
+
+	public static final boolean NO_ROOT = true, ROOT = false;
+	
+	protected BufferedWriter writer;
+
+	public CONLLWriter09 () { }
+	
+	public static void main(String args[]) throws IOException {
+		
+		
+		if (args.length==2) {
+		File f = new File(args[0]);
+		File f2 = new File(args[1]);
+		BufferedReader ir = new BufferedReader(new InputStreamReader(new FileInputStream(f),"UTF-8"),32768);
+		BufferedWriter br = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f2),"UTF8"));;
+		boolean found =false;
+		boolean tab =false;
+		while(true) {
+			String l = ir.readLine();
+			if (l==null) break;
+			String x =l.trim();
+			if (x.endsWith("\t")) tab=true;
+			br.write(x);
+			br.newLine();
+			if (!l.equals(x)) found =true; 
+			
+		}
+		ir.close();
+		br.flush();
+		br.close();
+
+		if (found) DB.println("found diff. found tab? "+tab);
+		} else if (args.length==3) {
+			File f1 = new File(args[1]);
+			File f2 = new File(args[2]);
+			
+			BufferedReader ir1 = new BufferedReader(new InputStreamReader(new FileInputStream(f1),"UTF-8"),32768);
+			BufferedReader ir2 = new BufferedReader(new InputStreamReader(new FileInputStream(f2),"UTF-8"),32768);
+
+			int line =0, alltabs1=0,alltabs2=0;
+			while(true) {
+				String l1 = ir1.readLine();
+				String l2 = ir2.readLine();
+
+				if (l1==null && l2!=null) DB.println("files do not end at the same line ");
+				if (l1!=null && l2==null) DB.println("files do not end at the same line ");
+				if (l1==null ) break;
+				StringTokenizer t1 = new StringTokenizer(l1,"\t");
+				StringTokenizer t2 = new StringTokenizer(l2,"\t");
+				int tabs1=0;
+				while(t1.hasMoreTokens()) {
+
+					t1.nextElement();
+					tabs1++;
+					alltabs1++;
+				}
+				
+				int tabs2=0;
+				while(t2.hasMoreTokens()) {
+
+					t2.nextElement();
+					tabs2++;
+					alltabs2++;
+				}
+				line ++;
+				if (tabs1!=tabs2) {
+					DB.println("number of tabs different in line "+line+" file1-tabs "+tabs1+" file2-tabs "+tabs2);
+					System.exit(0);
+				}
+				
+				
+			}
+			DB.println("checked lines "+line+" with tabs in file 1 "+alltabs1+" in file2 "+alltabs2);
+			
+		} else {
+			File f = new File(args[0]);
+			String[] dir =f.list();
+			for(String fx :dir) {
+				BufferedReader ir = new BufferedReader(new InputStreamReader(new FileInputStream(args[0]+File.separatorChar+fx),"UTF-8"),32768);
+				System.out.println("check file "+fx);
+				while(true) {
+					String l = ir.readLine();
+					if (l==null) break;
+					if (l.endsWith("\t")) {
+						DB.println("found tab in file "+fx);
+						break;
+					}
+				}				
+				ir.close();
+			}
+		}
+		
+	}
+		
+	
+	public CONLLWriter09 (String file) {
+		
+		try {
+			writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"UTF8"));
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+	
+	public CONLLWriter09 (Writer writer) {
+		this.writer = new BufferedWriter(writer);
+	}
+	
+	
+	
+	public CONLLWriter09(String outfile, int formatTask) {
+		this(outfile);
+	}
+
+	public void write(SentenceData09 inst) throws IOException {
+		write(inst, NO_ROOT);
+	}
+	
+	/**
+	 * 
+	 * @param inst 
+	 * @param root true: remove root node 
+	 * @throws IOException
+	 */
+	public void write(SentenceData09 inst, boolean root) throws IOException {
+
+		int i, mod;
+		if(root&&(inst.forms[0].startsWith("<root")||(inst.lemmas[0]!=null&&inst.lemmas[0].startsWith("<root")))){
+			i=1; mod=0;
+		} else {
+			i=0; mod=1;
+		}
+		//=()?1:0;
+		
+		if (format == this.F_ONE_LINE) {
+			boolean first =true;
+			for (; i<inst.length(); i++) {
+				if (first ){
+					first=false;
+				} else writer.write(" ");
+				writer.write(inst.plemmas[i]);
+			} 
+			writer.newLine();
+			
+			return ;
+		}
+		
+		
+		for (; i<inst.length(); i++) {
+			
+				if (inst.id==null|| inst.id[i]==null) {writer.write(Integer.toString(i+mod)); writer.write('\t');}	// id
+				else { writer.write(inst.id[i]); writer.write('\t');}
+				
+				writer.write(inst.forms[i]);     writer.write('\t'); 	// form
+				
+				if (inst.lemmas!=null && inst.lemmas[i]!=null) {
+					writer.write(inst.lemmas[i]);   
+				}
+				else writer.write(DASH);									// lemma
+				writer.write('\t');
+				
+				if (inst.plemmas!=null && inst.plemmas[i]!=null) writer.write(inst.plemmas[i]);   
+				else writer.write(DASH);									// plemma
+				writer.write('\t');
+				
+				if (inst.gpos[i]!=null) writer.write(inst.gpos[i]); // gpos
+				else writer.write(DASH);
+				writer.write('\t');  
+							
+				if (inst.ppos!=null && inst.ppos[i]!=null) writer.write(inst.ppos[i]); 
+				else writer.write(DASH);									// ppos
+				writer.write('\t');  
+				
+				if (inst.ofeats!=null&& inst.ofeats[i]!=null) writer.write(inst.ofeats[i]);  
+				else writer.write(DASH);
+				writer.write('\t');  
+				 
+				//writer.write(DASH); writer.write('\t'); 					// feat
+				if (inst.pfeats!=null&&inst.pfeats[i]!=null) {
+					//System.out.println(""+inst.pfeats[i]);
+					writer.write(inst.pfeats[i]);  
+				}
+				else writer.write(DASH);
+				writer.write('\t');
+				
+				
+				writer.write(Integer.toString(inst.heads[i]));  writer.write('\t');  // head
+				
+				if (inst.pheads!=null ) writer.write(Integer.toString(inst.pheads[i])); 
+				else writer.write(DASH); 
+				writer.write('\t'); 					// phead
+				
+				if (inst.labels[i]!=null) writer.write(inst.labels[i]); 	// rel                  
+				else writer.write(DASH); 
+				writer.write('\t');
+				
+				if (inst.plabels!=null &&inst.plabels[i]!=null) writer.write(inst.plabels[i]); 	// rel                  
+				else writer.write(DASH); 
+				writer.write('\t');
+				
+				if (inst.fillp!=null && inst.fillp[i]!=null) writer.write(inst.fillp[i]); 	// fill p                  
+				else {
+					writer.write(DASH); 
+				}
+				
+				
+//				writer.write('\t'); 
+				
+				
+				if (inst.sem==null) {
+					writer.write('\t');
+					writer.write(DASH); 
+					
+				} else {
+					 
+
+					
+					boolean foundPred =false;
+					// print the predicate 
+					for (int p =0;p< inst.sem.length;p++) {
+						if (inst.semposition[p]==i) {
+							foundPred=true;
+					//		System.out.println("write pred "+inst.sem[p] );
+							writer.write('\t'); writer.write(inst.sem[p]);	 
+							
+						//	if (inst.sem[p].startsWith(".")) DB.println("error "+inst.sem[p]);
+						}
+					}
+			
+				  if (!foundPred ) {
+						writer.write('\t'); 
+						writer.write(DASH); 
+//						writer.write('\t'); 
+//						writer.write(DASH); 
+					}
+			
+				 // print the arguments
+					for (int p =0;p< inst.sem.length;p++) {
+						
+						boolean found =false;
+						if (inst.arg!=null &&inst.arg.length>p&&inst.arg[p]!=null)
+						for(int a = 0; a<inst.arg[p].length;a++) {
+							
+							if (i==inst.argposition[p][a]) {
+								writer.write('\t'); writer.write(inst.arg[p][a]);	 
+								found = true;
+								break;
+							} 
+							
+						}
+						if (!found) {
+							writer.write('\t'); 
+							writer.write(DASH); 
+						}
+						
+						
+					}
+					
+					
+				
+				
+			}
+			writer.newLine();
+		}
+		writer.newLine();
+	}
+
+	public void finishWriting () throws IOException {
+		writer.flush();
+		writer.close();
+	}
+
+	/**
+	 * Sets the output format such as CoNLL or one line for the lemmata of the sentence (see F_xxxx constants).
+	 * @param formatTask
+	 */
+	public void setOutputFormat(int formatTask) {
+		format =formatTask;
+	}
+
+
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/io/IOGenerals.java b/dependencyParser/basic/mate-tools/src/is2/io/IOGenerals.java
new file mode 100644
index 0000000..456a17f
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/io/IOGenerals.java
@@ -0,0 +1,33 @@
+/**
+ * 
+ */
+package is2.io;
+
+/**
+ * @author Dr. Bernd Bohnet, 18.08.2011
+ * 
+ * 
+ */
+public class IOGenerals {
+
+	// some constants
+	public static final String US = "_";
+	public static final String REGEX = "\t";
+	public static final String STRING = "*";
+	public static final String PIPE = "\\|";
+	public static final String NO_TYPE = "<no-type>";
+	public static final String ROOT_POS = "<root-POS>";
+	public static final String ROOT_LEMMA = "<root-LEMMA>";
+	public static final String ROOT = "<root>";
+	public static final String EMPTY_FEAT = "<ef>";
+
+	
+	// the different readers 
+	public static final int F_CONLL09 = 0;
+	public static final int F_ONE_LINE = 1;
+	
+	// normalization of the input
+	public static final String NUMBER = "[0-9]+|[0-9]+\\.[0-9]+|[0-9]+[0-9,]+";
+	public static final String NUM = "<num>";
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/io/PSReader.java b/dependencyParser/basic/mate-tools/src/is2/io/PSReader.java
new file mode 100644
index 0000000..3598b3d
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/io/PSReader.java
@@ -0,0 +1,23 @@
+/**
+ * 
+ */
+package is2.io;
+
+import is2.data.PSTree;
+
+/**
+ * @author Dr. Bernd Bohnet, 07.02.2011
+ * 
+ * 
+ */
+public interface PSReader {
+
+	public PSTree getNext();
+
+	/**
+	 * @param ps
+	 * @param filter
+	 */
+	public void startReading(String ps, String[] filter);
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/io/TigerReader.java b/dependencyParser/basic/mate-tools/src/is2/io/TigerReader.java
new file mode 100644
index 0000000..2a98b72
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/io/TigerReader.java
@@ -0,0 +1,403 @@
+/**
+ * 
+ */
+package is2.io;
+
+import is2.data.PSTree;
+import is2.util.DB;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.Stack;
+import java.util.StringTokenizer;
+
+/**
+ * @author Dr. Bernd Bohnet, 17.01.2011
+ * 
+ * Reads a sentences in Penn Tree Bank bracket style and return sentences.
+ */
+public class TigerReader implements PSReader {
+
+	BufferedReader inputReader;
+	ArrayList<File> psFiles = new ArrayList<File>();
+	ArrayList<PSTree> psCache = new ArrayList<PSTree>();
+	
+	String filter[] = null;
+	int startFilter =-1;
+	int endFilter =-1;
+
+	public TigerReader() {}
+
+	public TigerReader(String file ) {
+
+		try {
+			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"ISO-8859-1"),32768);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * @param ps
+	 */
+	@Override
+	public void startReading(String file, String[] filter) {
+		
+		
+		try {
+			this.filter =filter;
+			startFilter =filter==null?-1:1;
+			endFilter =filter==null?-1:1;
+
+			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"ISO-8859-1"),32768);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+	}
+
+	public static class Line {
+		String form;
+		String lemma;
+		String morph;
+		String pos;
+		int parent;
+		String edge;
+		
+		
+	}
+	
+	static int stop=0;
+	
+	/**
+	 * @return
+	 */
+	public PSTree getNext() {
+
+		PSTree ps = null;
+		String l =null;
+		ArrayList<Line> lines = new ArrayList<Line>();
+		try {
+			int state=1, terminals=0, nonterminals=0;
+			while((l = inputReader.readLine())!=null) {
+			
+				if (startFilter==1 && l.startsWith("#BOS "+filter[0]) ) {
+					System.out.println("found start "+l);
+					startFilter=2;
+				}
+				if (endFilter==1 && l.startsWith("#EOS "+filter[1]) ){
+					System.out.println("found end "+l);
+					
+					endFilter=2;
+				}
+				
+				
+				if (startFilter==1||endFilter==2) continue;
+				
+				if (l.startsWith("#BOS")) {
+					
+					state=2;
+					continue;
+				}
+				if (l.startsWith("#500")) state=3;
+				if (l.startsWith("#EOS")) state=4;
+				if (state<2) continue;
+				
+				if ( state==4) {
+				
+					ps = new PSTree();
+					ps.create(terminals, nonterminals);
+				//	System.out.println("terminals "+terminals);
+					//build ps tree
+					
+					int cnt=0;
+			//		ps.entries[0] =CONLLReader09.ROOT;
+			//		ps.head[0]=-1;
+					int root=-1;
+					for(Line line : lines) {
+	
+				/*		if (cnt==terminals) {
+							// insert root
+							root =cnt;
+							cnt++;
+						}
+				*/	
+						ps.entries[cnt] = line.form;
+						if (cnt<terminals) ps.pos[cnt] = line.pos;
+						else ps.entries[cnt] =line.pos;
+						ps.lemmas[cnt] = line.lemma;
+						ps.head[cnt] = line.parent==0?lines.size()-1:line.parent>=500?line.parent-500+terminals:line.parent;
+					//	ps.head[cnt] = line.parent==0?lines.size()-1:line.parent>=500?line.parent-500+terminals:line.parent;
+						ps.morph[cnt]=line.morph;
+						cnt++;
+						
+					}
+					
+					if (root==-1) root= terminals;
+					ps.head[cnt-1]=0;  // root
+					ps.terminalCount=terminals;
+					lines.clear();
+					state=1;
+				
+					/*
+					for(int k=0;k<ps.head.length;k++) {
+						if (ps.head[k]<terminals && k!=root) {
+							ps.head[k]=root;
+						//	DB.println("error "+k+" "+ps.head[k]);
+						}
+					}
+					*/
+	//				System.out.println(""+ps.toString());
+	//				if (stop++ == 4)System.exit(0);
+					return ps;
+				}
+				
+				
+				
+				StringTokenizer t = new StringTokenizer(l,"\t");
+				int tc=0;
+				Line line = new Line();
+				lines.add(line);
+				while(t.hasMoreTokens()) {
+					String token = t.nextToken();
+					if (token.equals("\t"))continue;
+					if (tc==0) {
+						if (token.startsWith("#5")||token.startsWith("#6") ) {
+							nonterminals++;
+							
+						}
+						else { 
+							terminals++;
+							
+							//change it back to the wrong format since the conll stuff was derived from this. 
+						//	if (token.equals("durchblicken")) token="durchblikken";
+							line.form = token;
+						}
+ 
+					} else if (tc==1) {
+						line.lemma=token;
+					} else if (tc==2) {
+						line.pos=token;
+					} else if (tc==3) {
+						line.morph=token;
+					} else if (tc==4) {
+						line.edge=token;
+					} else if (tc==5) {
+						line.parent=Integer.parseInt(token);
+					} 
+					
+					
+					if (token.length()>0)tc++;
+				}
+				
+				// read till #EOS
+				
+			
+			}
+		} catch(Exception e) {
+			e.printStackTrace();
+		}
+		return ps;
+		
+	}
+
+	/**
+	 * @param tree
+	 */
+	private void removeTraces(ArrayList<Object> tree) {
+
+		Stack<ArrayList<Object>> s = new Stack<ArrayList<Object>>();
+
+		s.push(tree);
+		ArrayList<Object> list =null;
+		while (!s.isEmpty()) {
+			
+			ArrayList<Object> last =list;
+			list = s.pop();
+			for(int k=0;k<list.size();k++) {
+				Object o = list.get(k);
+				if(o instanceof String) {
+					String t = (String)o;
+					if ((t.endsWith("-1")||t.endsWith("-2")||t.endsWith("-3")||t.endsWith("-4")) && list.size()>(k+1)) {
+						t = t.substring(0, t.length()-2);
+						list.set(k, t);
+					}			
+					
+					if (t.startsWith("-NONE-")) {
+						
+						// remove the bigger surrounding phrase, e.g. (NP (-NONE- *))
+						if (last.size()==2 && last.get(0) instanceof String && last.contains(list)) {
+							ArrayList<Object> rest = remove(tree, last);
+							if (rest!=null && rest.size()==1){
+								rest = remove(tree, rest);
+							}
+						}
+						// remove the phrase only, e.g. (NP (AP nice small) (-NONE- *))
+						else {
+							// there might a phrase with two empty elements (VP (-NONE- *) (-NONE- ...))
+//							System.out.println("last "+last+" list "+list );
+							ArrayList<Object> rest = remove(tree, list);
+							removeTraces(rest);
+							if (rest.size()==1) {
+								rest = remove(tree, rest);
+								if (rest!=null && rest.size()==1){
+									System.out.println("rest "+rest);
+									System.exit(0);
+								}
+ 							}
+						}
+						continue;
+					}
+				}
+				if (o instanceof ArrayList) {
+					s.push((ArrayList<Object>)o);				
+				}
+			}
+		}
+	}
+	
+	
+	
+
+	/**
+	 * Remove from tree p
+	 * @param tree phrase structure tree
+	 * @param p elment to remove
+	 */
+	private ArrayList<Object> remove(ArrayList<Object> tree, Object p) {
+		Stack<ArrayList<Object>> s = new Stack<ArrayList<Object>>();
+
+		s.push(tree);
+
+		while (!s.isEmpty()) {
+			
+			ArrayList<Object> list = s.pop();
+			for(int k=0;k<list.size();k++) {
+				Object o = list.get(k);
+				if (o == p) {
+					list.remove(p);
+					return list ;
+				}
+				if (o instanceof ArrayList) {
+					s.push((ArrayList<Object>)o);				
+				}
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Count the terminals
+	 * @param current
+	 * @return
+	 */
+	private int countTerminals(ArrayList<Object> current) {
+
+		int count =0;
+		boolean found =false, all =true ;
+		for(Object o : current) {
+			if (o instanceof String) found =true;
+			else { 
+				all =false;
+				if (o instanceof ArrayList) count +=countTerminals((ArrayList<Object>)o); 
+			}
+		}
+
+		if (found && all) {
+			//		System.out.println(""+current);
+			count++;
+		}
+
+		return count;
+	}
+
+	/**
+	 * Count the terminals
+	 * @param current
+	 * @return
+	 */
+	private int insert(PSTree ps, ArrayList<Object> current, Integer terminal, Integer xxx, int head) {
+
+		boolean found =false, all =true;
+		String term =null;
+		String pos =null;
+		for(Object o : current) {
+			if (o instanceof String) {
+				if (found) term =(String)o;
+				if (!found) pos =(String)o;
+				found =true;	
+			} else { 
+				all =false;
+				//				if (o instanceof ArrayList) count +=countTerminals((ArrayList<Object>)o); 
+			}
+		}
+
+		if (found && all) {
+			
+			if(term.equals("-LRB-")) term="(";
+			if(term.equals("-RRB-")) term=")";
+			if(term.equals("-LCB-"))  term="{";
+			if(term.equals("-RCB-"))  term="}";
+			if(term.contains("1\\/2-year"))  term=term.replace("\\/", "/");
+			if(term.contains("1\\/2-foot-tall"))  term=term.replace("\\/", "/");
+
+			
+			ps.entries[ps.terminalCount] =term;
+			ps.pos[ps.terminalCount]=pos;
+			ps.head[ps.terminalCount]=head;
+			//	System.out.println("terminal "+term+" "+ps.terminal+" head "+head);
+			ps.terminalCount  ++;
+		} else if (found && ! all) {
+			if(pos.startsWith("NP-SBJ")) pos="NP-SBJ";
+			if(pos.startsWith("WHNP")) pos="WHNP";
+
+			ps.entries[ps.non] =pos;
+			ps.head[ps.non]=head;
+			//	System.out.println("non terminal "+pos+" "+ps.non+" head "+	head);
+			int non =ps.non ++;
+
+			for (Object o : current) {
+				if (o instanceof ArrayList) {
+					insert(ps,(ArrayList<Object>)o,terminal,ps.non, non);		
+				}
+			}
+		}	
+		if(!all  && !found)for (Object o : current) {
+			if (o instanceof ArrayList) {
+				insert(ps,(ArrayList<Object>)o,terminal,0, ps.non-1);		
+			}
+		}
+		return terminal;
+	}
+
+
+	/**
+	 * Count the terminals
+	 * @param current
+	 * @return
+	 */
+	private int countNonTerminals(ArrayList<Object> current) {
+
+		int count =0;
+		boolean found =false, all =true ;
+		for(Object o : current) {
+			if (o instanceof String) found =true;
+			else { 
+				all =false;
+				if (o instanceof ArrayList) count +=countNonTerminals((ArrayList<Object>)o); 
+			}
+		}
+
+		if (found && !all) count++;
+
+		return count;
+	}
+
+	
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/lemmatizer/Evaluator.java b/dependencyParser/basic/mate-tools/src/is2/lemmatizer/Evaluator.java
new file mode 100755
index 0000000..b333c62
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/lemmatizer/Evaluator.java
@@ -0,0 +1,105 @@
+package is2.lemmatizer;
+
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Hashtable;
+import java.util.Map.Entry;
+
+
+public class Evaluator {
+
+	public static void evaluate (String act_file,  String pred_file, String format) throws Exception {
+
+		CONLLReader09 goldReader = new CONLLReader09(act_file, CONLLReader09.NO_NORMALIZE);
+		CONLLReader09 predictedReader = new CONLLReader09(pred_file,CONLLReader09.NO_NORMALIZE);
+	//	predictedReader.startReading(pred_file);
+
+
+		Hashtable<String,Integer> errors = new Hashtable<String,Integer>();
+		 
+
+		int total = 0, corr = 0, corrL = 0, corrT=0;
+		int numsent = 0, corrsent = 0, corrsentL = 0;
+		SentenceData09 goldInstance = goldReader.getNext();
+		SentenceData09 predInstance = predictedReader.getNext();
+
+		while(goldInstance != null) {
+
+			int instanceLength = goldInstance.length();
+
+			if (instanceLength != predInstance.length())
+				System.out.println("Lengths do not match on sentence "+numsent);
+
+
+			String gold[] = goldInstance.lemmas;
+			String pred[] = predInstance.plemmas;
+
+			
+			boolean whole = true;
+			boolean wholeL = true;
+
+			// NOTE: the first item is the root info added during nextInstance(), so we skip it.
+
+			for (int i = 1; i < instanceLength; i++) {
+				if (gold[i].toLowerCase().equals(pred[i].toLowerCase())) corrT++;
+				
+				if (gold[i].equals(pred[i])) corrL++;
+				else {
+					
+					//	System.out.println("error gold:"+goldPos[i]+" pred:"+predPos[i]+" "+goldInstance.forms[i]+" snt "+numsent+" i:"+i);
+						String key = "gold: '"+gold[i]+"' pred: '"+pred[i]+"'";
+						Integer cnt = errors.get(key);
+						if (cnt==null) {
+							errors.put(key,1);						
+						} else {
+							errors.put(key,cnt+1);												
+						}
+					}
+				
+			}
+			total += instanceLength - 1; // Subtract one to not score fake root token
+
+			if(whole) corrsent++;
+			if(wholeL) corrsentL++;
+			numsent++;
+
+			goldInstance = goldReader.getNext();
+			predInstance = predictedReader.getNext();
+		}
+		ArrayList<Entry<String, Integer>> opsl = new ArrayList<Entry<String, Integer>>();
+		for(Entry<String, Integer> e : errors.entrySet()) {
+			opsl.add(e);
+		}
+		
+		Collections.sort(opsl, new Comparator<Entry<String, Integer>>(){
+
+			@Override
+			public int compare(Entry<String, Integer> o1,
+					Entry<String, Integer> o2) {
+				
+				return o1.getValue()==o2.getValue()?0:o1.getValue()>o2.getValue()?1:-1;
+			}
+			
+			
+		});
+			
+		for(Entry<String, Integer> e : opsl) {
+		//	System.out.println(e.getKey()+"  "+e.getValue());
+		}
+
+		System.out.println("Tokens: " + total+" Correct: " + corrT+" "+(float)corrT/total+" correct uppercase "+(float)corrL/total);
+	}
+
+	public static void main (String[] args) throws Exception {
+		String format = "CONLL";
+		if (args.length > 2)
+			format = args[2];
+
+		evaluate(args[0], args[1], format);
+	}
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/lemmatizer/Lemmatizer.java b/dependencyParser/basic/mate-tools/src/is2/lemmatizer/Lemmatizer.java
new file mode 100755
index 0000000..33756dd
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/lemmatizer/Lemmatizer.java
@@ -0,0 +1,535 @@
+package is2.lemmatizer;
+
+
+import is2.data.Cluster;
+import is2.data.F2SF;
+import is2.data.FV;
+import is2.data.Instances;
+import is2.data.InstancesTagger;
+import is2.data.Long2Int;
+import is2.data.ParametersFloat;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.io.CONLLWriter09;
+import is2.tools.IPipe;
+import is2.tools.Tool;
+import is2.tools.Train;
+import is2.util.DB;
+import is2.util.OptionsSuper;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Map.Entry;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+import java.util.zip.ZipOutputStream;
+
+
+
+public class Lemmatizer implements Tool, Train {
+
+	public Pipe pipe;
+	public ParametersFloat params;
+	private Long2Int li;
+	
+	private boolean doUppercase=false;
+
+	private long[] vs= new long[40];
+
+
+
+	/**
+	 * Creates a lemmatizer due to the model stored in modelFileName
+	 * @param modelFileName the path and file name to a lemmatizer model
+	 */
+	public Lemmatizer(String modelFileName)  {
+		
+		// tell the lemmatizer the location of the model
+		try {
+			Options m_options = new Options(new String[] {"-model", modelFileName});
+			li = new Long2Int(m_options.hsize);
+
+			// initialize the lemmatizer
+			readModel(m_options);
+
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+	
+
+
+
+
+	public Lemmatizer(boolean doUppercase) {this.doUppercase=doUppercase; }
+
+
+
+	public static void main (String[] args) throws FileNotFoundException, Exception
+	{
+
+		Options options = new Options(args);
+		Lemmatizer lemmatizer = new Lemmatizer(options.upper);
+
+		long start = System.currentTimeMillis();
+		
+
+		if (options.train) {
+
+			
+			lemmatizer.li = new Long2Int(options.hsize);
+			lemmatizer.pipe =  new Pipe (options,lemmatizer.li);
+
+			InstancesTagger is = lemmatizer.pipe.createInstances(options.trainfile);
+
+			DB.println("Features: " + lemmatizer.pipe.mf.size()+" Operations "+lemmatizer.pipe.mf.getFeatureCounter().get(Pipe.OPERATION));   
+
+			ParametersFloat params = new ParametersFloat(lemmatizer.li.size());
+
+			lemmatizer.train(options,lemmatizer.pipe,params,is);
+
+			lemmatizer.writeModel(options, lemmatizer.pipe, params);
+		}
+
+		if (options.test) {
+
+			lemmatizer.readModel(options);
+
+			lemmatizer.out(options,lemmatizer.pipe, lemmatizer.params);
+		}
+
+		System.out.println();
+
+		if (options.eval) {
+			System.out.println("\nEVALUATION PERFORMANCE:");
+			Evaluator.evaluate(options.goldfile, options.outfile,options.format);
+		}
+		long end = System.currentTimeMillis();
+		System.out.println("used time "+((float)((end-start)/100)/10));
+	}
+
+	/* (non-Javadoc)
+	 * @see is2.tools.Train#writeModel(is2.util.OptionsSuper, is2.tools.IPipe, is2.data.ParametersFloat)
+	 */
+	@Override
+	public void writeModel(OptionsSuper options, IPipe pipe,
+			ParametersFloat params) {
+		try {
+			// store the model
+			ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(options.modelName)));
+			zos.putNextEntry(new ZipEntry("data")); 
+			DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(zos));
+			
+			this.pipe.mf.writeData(dos);
+
+			dos.flush();
+			params.write(dos);
+
+			pipe.write(dos);
+			
+			dos.writeBoolean(this.doUppercase);
+			
+			dos.flush();
+			dos.close(); 
+		} catch(Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+
+	public void readModel(OptionsSuper options) {
+
+		try {
+
+			// load the model
+			ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(options.modelName)));
+			zis.getNextEntry();
+			DataInputStream dis = new DataInputStream(new BufferedInputStream(zis));
+
+			MFO mf = new MFO();
+			mf.read(dis);
+			params = new ParametersFloat(0);
+			params.read(dis);
+			li =new Long2Int(params.size());
+			pipe = new Pipe(options, li);
+			pipe.mf =mf;
+
+			pipe.initFeatures();
+			pipe.initValues();
+
+			pipe.readMap(dis);
+
+			for(Entry<String,Integer> e : mf.getFeatureSet().get(Pipe.OPERATION).entrySet()) {
+				this.pipe.types[e.getValue()] = e.getKey();
+				//	System.out.println("set pos "+e.getKey());
+			}
+
+			
+			pipe.cl = new Cluster(dis);
+
+			if (dis.available()>0) this.doUppercase = dis.readBoolean();
+		
+			
+			dis.close();
+			DB.println("Loading data finished. ");
+
+			DB.println("number of params  "+params.parameters.length);
+			DB.println("number of classes "+pipe.types.length);
+
+		} catch (Exception e ) {
+			e.printStackTrace();
+		}
+
+	}
+
+
+
+	/**
+	 * Do the training
+	 * @param instanceLengths
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @param li 
+	 * @throws IOException
+	 * @throws InterruptedException
+	 * @throws ClassNotFoundException
+	 */
+	public void train(OptionsSuper options, IPipe p, ParametersFloat params, Instances ist) {
+
+		InstancesTagger is = (InstancesTagger)ist;
+		
+		int i = 0,del=0; 
+		FV g = new FV(), f = new FV();
+		
+		int LC = this.pipe.types.length+1, UC = LC+1;
+
+		String wds[] = MFO.reverse(pipe.mf.getFeatureSet().get(Pipe.WORD));
+		
+		F2SF fs = params.getFV();
+		double upd=0;
+
+		for(i = 0; i < options.numIters; i++) {
+
+			System.out.print("Iteration "+i+": ");
+
+			long start = System.currentTimeMillis();
+			int numInstances = is.size();
+			int correct =0,count=0;
+
+			long last= System.currentTimeMillis();
+			int wrongOp=0,correctOp=0, correctUC=0, wrongUC=0;
+
+			HashMap<String,Integer> map = new HashMap<String,Integer>(); 
+
+			for(int n = 0; n < numInstances; n++) {
+
+				if((n+1) % 500 == 0) del= Pipe.outValueErr(n+1, (float)(count-correct),(float)correct/(float)count,del,last,upd);
+
+				upd = (double)(options.numIters*numInstances - (numInstances*i+(n+1))+ 1);
+
+				for(int k = 0; k < is.length(n); k++) {
+
+					double best = -1000;
+					String bestOp="";
+
+
+
+					count++;
+					pipe.addCoreFeatures(is, n, k, 0,wds[is.forms[n][k]], vs);
+
+					String lemma = pipe.opse.get(wds[is.forms[n][k]].toLowerCase());
+
+
+					// predict
+					if (lemma==null)
+						for(int t = 0; t < pipe.types.length; t++) {
+
+							fs.clear();
+							for(int l=vs.length-1;l>=0;l--) if (vs[l]>0) fs.add(li.l2i(vs[l]+(t*Pipe.s_type)));
+
+							float score = (float) fs.getScore();
+							if (score >best) {
+								bestOp = pipe.types[t];
+								best =score;
+							}
+						}
+
+					if (doUppercase) {
+						fs.clear();
+						for(int l=vs.length-1;l>=0;l--) if (vs[l]>0) fs.add(li.l2i(vs[l]+(LC*Pipe.s_type)));
+
+						int correctOP =-1, selectedOP =-1;	
+						if (wds[is.glemmas[n][k]].length()>0 &&
+								Character.isUpperCase(wds[is.glemmas[n][k]].charAt(0)) &&
+								fs.score > 0) {
+
+							correctOP = UC;
+							selectedOP =LC;
+						}  else if (wds[is.glemmas[n][k]].length()>0 
+								&&Character.isLowerCase(wds[is.glemmas[n][k]].charAt(0)) &&
+								fs.score <= 0) {
+
+
+							correctOP = LC;
+							selectedOP =UC;
+						}
+
+						if (correctOP!=-1 && wds[is.glemmas[n][k]].length()>0) {
+
+							wrongUC++;
+							f.clear();
+							for(int l=vs.length-1;l>=0;l--) if (vs[l]>0) f.add(li.l2i(vs[l]+(selectedOP*Pipe.s_type)));
+
+							g.clear();							
+							for(int l=vs.length-1;l>=0;l--) if (vs[l]>0) g.add(li.l2i(vs[l]+(correctOP*Pipe.s_type)));
+
+							double lam_dist = params.getScore(g) - params.getScore(f);//f
+							double loss = 1 - lam_dist;
+
+							FV dist = g.getDistVector(f);						
+							dist.update(params.parameters, params.total, params.update(dist,loss), upd,false); 
+
+						} else {
+							correctUC++;
+						}
+					}
+					if (lemma!=null) {
+						correct++;
+						correctOp++;
+						continue;
+					}
+
+
+					String op = Pipe.getOperation(is,n, k,wds);
+					if (op.equals(bestOp) ) {
+						correct++;
+						correctOp++;
+						continue;
+					}
+					wrongOp++;
+
+					f.clear();
+					int bop =pipe.mf.getValue(Pipe.OPERATION, bestOp);
+					for(int r=vs.length-1;r>=0;r--) if (vs[r]>0)f.add(li.l2i(vs[r]+(bop*Pipe.s_type)));
+
+					g.clear();
+					int gop =pipe.mf.getValue(Pipe.OPERATION, op);
+					for(int r=vs.length-1;r>=0;r--) if (vs[r]>0)g.add(li.l2i(vs[r]+(gop*Pipe.s_type)));
+					double lam_dist = params.getScore(g) - params.getScore(f);//f
+
+					double loss = 1 - lam_dist;
+
+					FV dist = g.getDistVector(f);
+
+					dist.update(params.parameters, params.total, params.update(dist,loss), upd,false); //0.05
+
+				}
+
+			}
+			ArrayList<Entry<String, Integer>> opsl = new ArrayList<Entry<String, Integer>>();
+			for(Entry<String, Integer> e : map.entrySet()) {
+				if(e.getValue()>1) {
+					opsl.add(e);
+				}
+			}
+
+			Collections.sort(opsl, new Comparator<Entry<String, Integer>>(){
+				@Override
+				public int compare(Entry<String, Integer> o1,
+						Entry<String, Integer> o2) {
+
+					return o1.getValue()==o2.getValue()?0:o1.getValue()>o2.getValue()?1:-1;
+				}
+			});
+
+			if (opsl.size()>0) System.out.println();	
+			for(Entry<String, Integer> e : opsl) {
+				System.out.println(e.getKey()+"  "+e.getValue());		
+			}
+			map.clear();
+
+			del= Pipe.outValueErr(numInstances, (float)(count-correct), (float)correct/(float)count,del,last,upd, 
+					"time "+(System.currentTimeMillis()-start)+
+					" corr/wrong "+correctOp+" "+wrongOp+" uppercase corr/wrong  "+correctUC+" "+wrongUC);
+			del=0;
+			System.out.println();			
+		}
+
+		params.average(i*is.size());
+
+	}
+
+
+	/**
+	 * Do the work
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @throws IOException
+	 */
+	public void out (OptionsSuper options, IPipe pipe, ParametersFloat params)  {
+
+		long start = System.currentTimeMillis();
+
+		CONLLReader09 depReader = new CONLLReader09(options.testfile, CONLLReader09.NO_NORMALIZE);
+		depReader.setInputFormat(options.formatTask);
+		CONLLWriter09 depWriter = new CONLLWriter09(options.outfile);
+		depWriter.setOutputFormat(options.formatTask);
+
+		System.out.print("Processing Sentence: ");
+
+		int cnt = 0;
+		int del=0;
+
+		try {
+
+			while(true) {
+
+				InstancesTagger is = new InstancesTagger();
+
+				is.init(1, new MFO());
+				SentenceData09 instance = depReader.getNext(is);//pipe.nextInstance(null, depReader);
+
+				if (instance==null) break;
+				is.fillChars(instance, 0, Pipe._CEND);
+				cnt++;
+				SentenceData09 i09 =lemmatize(is, instance, this.li);
+				
+				if(options.normalize) for(int k=0;k<i09.length();k++) {
+					boolean save = depReader.normalizeOn;
+					depReader.normalizeOn =true;
+					i09.plemmas[k] = depReader.normalize(i09.plemmas[k]);
+					depReader.normalizeOn = save;
+				}
+				
+				if (options.overwritegold)  i09.lemmas = i09.plemmas;
+				
+				
+				
+				 depWriter.write(i09);
+
+				 if (cnt%100 ==0) del=Pipe.outValue(cnt, del);
+
+			}
+			depWriter.finishWriting();
+			del=Pipe.outValue(cnt, del);
+			long end = System.currentTimeMillis();
+
+			System.out.println(PipeGen.getSecondsPerInstnace(cnt,(end-start)));
+			System.out.println(PipeGen.getUsedTime(end-start));
+		} catch(Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+
+	private SentenceData09 lemmatize(InstancesTagger is, SentenceData09 instance, Long2Int li) {
+
+		int LC = pipe.types.length+1;
+
+		is.feats[0] = new short[instance.length()][11];
+
+		is.fillChars(instance, 0, Pipe._CEND);
+
+		int length = instance.length();
+
+		F2SF fs = new F2SF(params.parameters);						
+
+
+		for(int w1 = 0; w1 < length; w1++) {
+			instance.plemmas[w1]="_";
+			pipe.addCoreFeatures(is, 0, w1, 0,instance.forms[w1], vs);
+
+			String f =null;
+			if (is.forms[0][w1]!=-1) {
+				f = pipe.opse.get(instance.forms[w1].toLowerCase());
+				if (f!=null) {
+					instance.plemmas[w1]=f;
+				}
+			} 
+			double best = -1000.0;
+			int bestOp=0;
+
+			for(int t = 0; t < pipe.types.length; t++) {
+
+				fs.clear();
+				for(int l=vs.length-1;l>=0;l--) if (vs[l]>0) fs.add(li.l2i(vs[l]+(t*Pipe.s_type)));
+
+				if (fs.score >=best) {
+					best =fs.score;
+					bestOp=t;
+				}		
+			}
+			//instance.ppos[w1]=""+bestOp;
+			if (f==null) instance.plemmas[w1] = StringEdit.change((doUppercase?instance.forms[w1]:instance.forms[w1].toLowerCase()),pipe.types[bestOp]);
+
+			// check for empty string
+			if(instance.plemmas[w1].length()==0) instance.plemmas[w1] = "_";
+
+			if(doUppercase){
+				fs.clear();
+				for(int l=vs.length-1;l>=0;l--) if (vs[l]>0) fs.add(li.l2i(vs[l]+(LC*Pipe.s_type)));
+
+
+				try {
+
+					if (fs.score<=0 && instance.plemmas[w1].length()>1) {
+						instance.plemmas[w1] = Character.toUpperCase(instance.plemmas[w1].charAt(0))+instance.plemmas[w1].substring(1);
+					} else if (fs.score<=0 && instance.plemmas[w1].length()>0) {
+						instance.plemmas[w1] = String.valueOf(Character.toUpperCase(instance.plemmas[w1].charAt(0)));
+					} else if (fs.score>0) {
+						instance.plemmas[w1] = instance.plemmas[w1].toLowerCase();
+					}
+
+				} catch(Exception e){
+					e.printStackTrace();
+					//	System.out.println("error "+pipe.types[bestOp]+" "+instance.forms[w1]);
+				}
+			}
+		}
+
+
+		SentenceData09 i09 = new SentenceData09(instance);
+		i09.createSemantic(instance);
+		return i09;
+	}
+
+
+	/* (non-Javadoc)
+	 * @see is2.tools.Tool#apply(is2.data.SentenceData09)
+	 */
+	@Override
+	public SentenceData09 apply(SentenceData09 snt) {
+		InstancesTagger is = new InstancesTagger();
+		
+		// be robust
+		if (snt.length()== 0) return snt; 
+		
+		SentenceData09 it = new SentenceData09();
+		it.createWithRoot(snt);
+		
+		
+		is.init(1, new MFO());
+		is.createInstance09(it.length());
+		is.fillChars(it, 0, Pipe._CEND);
+
+		for(int j = 0; j < it.length(); j++) is.setForm(0, j, it.forms[j]);
+
+		return lemmatize(is, it,li);
+	}
+	
+
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/lemmatizer/MFO.java b/dependencyParser/basic/mate-tools/src/is2/lemmatizer/MFO.java
new file mode 100755
index 0000000..249ca42
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/lemmatizer/MFO.java
@@ -0,0 +1,257 @@
+package is2.lemmatizer;
+
+
+import is2.data.IEncoder;
+import is2.data.IEncoderPlus;
+import is2.data.IFV;
+import is2.data.Long2IntInterface;
+import is2.util.DB;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map.Entry;
+
+/**
+ * Map Features, do not map long to integer
+ * 
+ * @author Bernd Bohnet, 20.09.2009
+ */
+
+final public class MFO  implements IEncoderPlus {
+ 
+	/** The features and its values */
+	static private final HashMap<String,HashMap<String,Integer>> m_featureSets = new HashMap<String,HashMap<String,Integer>>();
+
+	/** The feature class and the number of values */
+	static private final HashMap<String,Integer> m_featureCounters = new HashMap<String,Integer>();
+
+	/** The number of bits needed to encode a feature */
+	static final HashMap<String,Integer> m_featureBits = new HashMap<String,Integer>();
+	
+	/** Integer counter for long2int */
+	static private int count=0;
+		
+	/** Stop growing */
+	public boolean stop=false;
+	
+	final public static String NONE="<None>";
+	
+	
+	
+	
+		
+	 
+	
+	public MFO () {}
+	
+	
+	public  int size() {return count;}
+	
+	
+	
+	/**
+	 * Register an attribute class, if it not exists and add a possible value
+	 * @param type
+	 * @param type2
+	 */
+	final public int register(String a, String v) {
+
+		HashMap<String,Integer> fs = getFeatureSet().get(a);
+		if (fs==null) {
+			fs = new HashMap<String,Integer>();
+			getFeatureSet().put(a, fs);
+			fs.put(NONE, 0);
+			getFeatureCounter().put(a, 1);
+		}
+		Integer c = getFeatureCounter().get(a);
+		
+		Integer i = fs.get(v);
+		if (i==null) {
+			fs.put(v, c);
+			c++;
+			getFeatureCounter().put(a,c);
+			return c-1;
+		} else return i;
+	}
+	
+	/**
+	 * Calculates the number of bits needed to encode a feature
+	 */
+	 public void calculateBits() {
+		
+		int total=0;
+		for(Entry<String,Integer> e : getFeatureCounter().entrySet() ){
+			int bits =(int)Math.ceil((Math.log(e.getValue()+1)/Math.log(2)));
+			m_featureBits.put(e.getKey(), bits);
+			total+=bits;
+		//	System.out.println(" "+e.getKey()+" bits "+bits+" number "+(e.getValue()+1));
+		}
+		
+//		System.out.println("total number of needed bits "+total);
+	}
+	
+	
+	
+	public  String toString() {
+		
+		StringBuffer content = new StringBuffer();
+		for(Entry<String,Integer> e : getFeatureCounter().entrySet() ){
+			 content.append(e.getKey()+" "+e.getValue());
+			 content.append(':');
+	//		 HashMap<String,Integer> vs = getFeatureSet().get(e.getKey());
+			 content.append(getFeatureBits(e.getKey()));
+			 
+			 /*if (vs.size()<120)
+			 for(Entry<String,Integer> e2 : vs.entrySet()) {
+				 content.append(e2.getKey()+" ("+e2.getValue()+") ");
+			 }*/
+			 content.append('\n');
+				
+		}
+		return content.toString();
+	}
+	
+	
+	
+	static final public short getFeatureBits(String a) {
+		if(m_featureBits.get(a)==null) return 0;
+		return (short)m_featureBits.get(a).intValue();
+	}
+
+	
+
+	/**
+	 * Get the integer place holder of the string value v of the type a
+	 * 
+	 * @param t the type
+	 * @param v the value 
+	 * @return the integer place holder of v
+	 */
+	 final public int getValue(String t, String v) {
+		
+		if (m_featureSets.get(t)==null) return -1;
+		Integer vi = m_featureSets.get(t).get(v);
+		if (vi==null) return -1; //stop && 
+		return vi.intValue();
+	}
+
+	 /**
+	  * Static version of getValue
+	  * @see getValue
+	  */
+	static final public int getValueS(String a, String v) {
+			
+			if (m_featureSets.get(a)==null) return -1;
+			Integer vi = m_featureSets.get(a).get(v);
+			if (vi==null) return -1; //stop && 
+			return vi.intValue();
+		}
+	
+	 public int hasValue(String a, String v) {
+		
+		Integer vi = m_featureSets.get(a).get(v);
+		if (vi==null) return -1;
+		return vi.intValue();
+	}
+	
+	
+	public static String printBits(int k) {
+		StringBuffer s = new StringBuffer();
+		for(int i =0;i<31;i++) {
+			s.append((k&0x00000001)==1?'1':'0');
+			k=k>>1;
+			
+		}
+		s.reverse();
+		return s.toString();
+	}
+	
+	
+
+   
+   
+   
+   
+	/** 
+	 * Maps a long to a integer value. This is very useful to save memory for sparse data long values 
+	 * @param l
+	 * @return the integer
+	 */
+	static public  int misses = 0;
+	static public  int good = 0;
+		
+
+	
+	
+	/**
+	 * Write the data
+	 * @param dos
+	 * @throws IOException
+	 */
+    static public void writeData(DataOutputStream dos) throws IOException {
+        dos.writeInt(getFeatureSet().size());
+       // DB.println("write"+getFeatureSet().size());
+        for(Entry<String, HashMap<String,Integer>> e : getFeatureSet().entrySet()) {
+            dos.writeUTF(e.getKey());
+            dos.writeInt(e.getValue().size());
+        
+            for(Entry<String,Integer> e2 : e.getValue().entrySet()) {
+  
+            	if(e2.getKey()==null) DB.println("key "+e2.getKey()+" value "+e2.getValue()+" e -key "+e.getKey());
+                dos.writeUTF(e2.getKey()); 
+                dos.writeInt(e2.getValue());
+            
+             }          
+                
+        }
+    }
+     public void read(DataInputStream din) throws IOException {
+		 
+		int size = din.readInt();
+		for(int i=0; i<size;i++) {
+			String k = din.readUTF();
+			int size2 = din.readInt();
+			
+			HashMap<String,Integer> h = new HashMap<String,Integer>();
+			getFeatureSet().put(k,h);
+			for(int j = 0;j<size2;j++) {
+				h.put(din.readUTF(), din.readInt());
+			}
+			getFeatureCounter().put(k, size2);
+		}
+
+    	count =size;
+	//	stop();
+		calculateBits();
+	}
+
+	
+	/** 
+	 * Clear the data
+	 */
+    static public void clearData() {
+      getFeatureSet().clear();
+      m_featureBits.clear();
+      getFeatureSet().clear();
+    }
+
+	 public HashMap<String,Integer> getFeatureCounter() {
+		return m_featureCounters;
+	}
+
+	static public HashMap<String,HashMap<String,Integer>> getFeatureSet() {
+		return m_featureSets;
+	}
+	
+	static public String[] reverse(HashMap<String,Integer> v){
+		String[] set = new String[v.size()];
+		for(Entry<String,Integer> e : v.entrySet()) {
+			set[e.getValue()]=e.getKey();
+		}
+		return set;
+	}
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/lemmatizer/Options.java b/dependencyParser/basic/mate-tools/src/is2/lemmatizer/Options.java
new file mode 100755
index 0000000..a4b9e69
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/lemmatizer/Options.java
@@ -0,0 +1,67 @@
+package is2.lemmatizer;
+
+import java.io.File;
+import java.io.IOException;
+
+import is2.util.OptionsSuper;
+
+
+public final class Options extends OptionsSuper {
+
+	
+	public Options (String[] args) throws IOException {
+		
+
+		
+		for(int i = 0; i < args.length; i++) {
+
+			if (args[i].equals("--help")) explain();
+			
+			if (args[i].equals("-normalize")) {
+				normalize=Boolean.parseBoolean(args[++i]);
+			} else if (args[i].equals("-features")) {
+				features= args[i+1]; i++;			
+			} else if (args[i].equals("-hsize")) {
+				hsize= Integer.parseInt(args[i+1]); i++;			
+			} else if (args[i].equals("-len")) {
+				maxLen= Integer.parseInt(args[i+1]); i++;			
+			} else	if (args[i].equals("-tmp")) {
+				tmp = args[i+1]; i++;
+			} else	if (args[i].equals("-uc")) {
+				upper=true;
+				System.out.println("set uppercase "+upper);
+
+			} else super.addOption(args, i);
+					
+		}
+
+		if (trainfile!=null) {
+			
+			
+			if (tmp!=null) trainforest = File.createTempFile("train", ".tmp", new File(tmp));
+			else trainforest = File.createTempFile("train", ".tmp"); //,new File("F:\\")
+			trainforest.deleteOnExit();
+		}
+
+	
+
+		
+	}
+
+	private void explain() {
+		System.out.println("Usage: ");
+		System.out.println("java -class mate.jar is2.lemmatizer.Lemmatizer [Options]");
+		System.out.println();
+		System.out.println("Options:");
+		System.out.println("");
+		System.out.println(" -train  <file>    the corpus a model is trained on; default "+this.trainfile);
+		System.out.println(" -test   <file>    the input corpus for testing; default "+this.testfile);
+		System.out.println(" -out    <file>    the output corpus (result) of a test run; default "+this.outfile);
+		System.out.println(" -model  <file>    the parsing model for traing the model is stored in the files");
+		System.out.println("                   and for parsing the model is load from this file; default "+this.modelName);
+		System.out.println(" -i      <number>  the number of training iterations; good numbers are 10 for smaller corpora and 6 for bigger; default "+this.numIters);
+		System.out.println(" -count  <number>  the n first sentences of the corpus are take for the training default "+this.count);
+		
+		System.exit(0);
+	}
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/lemmatizer/Pipe.java b/dependencyParser/basic/mate-tools/src/is2/lemmatizer/Pipe.java
new file mode 100755
index 0000000..37647ee
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/lemmatizer/Pipe.java
@@ -0,0 +1,585 @@
+package is2.lemmatizer;
+
+import is2.data.Cluster;
+import is2.data.D4;
+import is2.data.Instances;
+import is2.data.InstancesTagger;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.tools.IPipe;
+import is2.util.DB;
+import is2.util.OptionsSuper;
+import is2.data.Long2Int;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map.Entry;
+
+
+
+
+final public class Pipe extends PipeGen implements IPipe {
+
+	
+	private static final int _MIN_WORDS_MAPPED_BY_SCRIPT = 1;
+	private static final int _MIN_OCCURENT_FOR_SCRIPT_USE = 4;
+
+	private static final String _F0 = "F0";
+	private static final String _F1 = "F1",_F2 = "F2",_F3 = "F3",_F4 = "F4",_F5 = "F5",_F6= "F6",_F7= "F7",_F8= "F8",_F9="F9",_F10 = "F10";
+	private static final String _F11="F11",_F12="F12",_F13= "F13",_F14="F14",_F15="F15",_F16="F16",_F17="F17",_F18="F18",_F19="F19",_F20="F20";
+	private static final String _F21="F21",_F22="F22",_F23= "F23",_F24="F24",_F25="F25",_F26="F26",_F27="F27",_F28="F28",_F29="F29",_F30="F30";
+	private static final String _F31="F31",_F32="F32",_F33= "F33",_F34="F34",_F35="F35",_F36="F36",_F37="F37",_F38="F38",_F39="F39",_F40="F40";
+	private static final String _F41="F41";
+
+	private static int _f0,_f1,_f2,_f3,_f4,_f5,_f6,_f7,_f8,_f9,_f10,_f11,_f12,_f13,_f14,_f15,_f16,_f17,_f18,_f19,_f20;
+	private static int _f21,_f22,_f23,_f24,_f25,_f26,_f27,_f28,_f29,_f30,_f31,_f32,_f33,_f34,_f35,_f36,_f37,_f38,_f39,_f41;
+	public static int  _CEND,_swrd,_ewrd;
+
+	public static final String MID = "MID", END = "END",STR = "STR",OPERATION = "OP";
+
+	private CONLLReader09 depReader;
+
+
+	public HashMap<String,String> opse = new HashMap<String, String> ();
+
+	public String[] types;
+
+
+	public MFO mf =new MFO();
+	private D4 z, x; 
+
+
+	Cluster cl;
+	OptionsSuper options;
+	Long2Int li;
+
+	public Pipe (OptionsSuper options2, Long2Int l) {
+		
+		options=options2;
+		li=l;
+	}
+
+
+	public InstancesTagger createInstances(String file)  {
+
+		InstancesTagger is = new InstancesTagger();
+
+		depReader = new CONLLReader09(CONLLReader09.NO_NORMALIZE);
+		
+		depReader.startReading(file);
+		mf.register(REL,"<root-type>");
+		mf.register(POS,"<root-POS>");
+
+
+		System.out.print("Registering feature parts ");
+		HashMap<String,Integer> ops = new HashMap<String, Integer> ();
+		HashMap<String,HashSet<String>> op2form = new HashMap<String, HashSet<String>> ();
+		int ic=0;
+		int del=0;
+		HashSet<String> rm = new HashSet<String> ();
+
+		while(true) {
+			SentenceData09 instance1 = depReader.getNext();
+			if (instance1== null) break;
+			ic++;
+			if (ic % 100 ==0) {del = outValue(ic, del);}
+
+
+			String[] labs1 = instance1.labels;
+			for(int i1 = 0; i1 < labs1.length; i1++) {
+				//typeAlphabet.lookupIndex(labs1[i1]);
+				mf.register(REL, labs1[i1]);
+			}
+
+			String[] w = instance1.forms;
+			for(int i1 = 0; i1 < w.length; i1++) {
+				// saw the first time?
+				if (mf.getValue(WORD,  w[i1].toLowerCase())==-1) 
+					opse.put(instance1.forms[i1].toLowerCase(), instance1.lemmas[i1]);
+				
+				mf.register(WORD,  w[i1].toLowerCase());
+			}
+			for(int i1 = 0; i1 < w.length; i1++) mf.register(WORD,  w[i1]);
+
+			w = instance1.lemmas;
+			for(int i1 = 0; i1 < w.length; i1++) mf.register(WORD,  w[i1]);
+			for(int i1 = 0; i1 < w.length; i1++) mf.register(WORD,  w[i1].toLowerCase());
+
+			w = instance1.plemmas;
+			for(int i1 = 0; i1 < w.length; i1++) mf.register(WORD,  w[i1]);
+			for(int i1 = 0; i1 < w.length; i1++) mf.register(WORD,  w[i1].toLowerCase());
+
+
+			for(int i1 = 0; i1 < w.length; i1++) registerChars(CHAR,  w[i1]);
+
+			w = instance1.ppos;
+			for(int i1 = 0; i1 < w.length; i1++) mf.register(POS,  w[i1]);
+
+			w = instance1.gpos;
+			for(int i1 = 0; i1 < w.length; i1++) mf.register(POS,  w[i1]);
+
+
+			for(int i1 = 1; i1 < w.length; i1++)  {
+				String op = getOperation(instance1, i1);
+				if (ops.get(op)==null) ops.put(op, 1);
+				else {
+					ops.put(op, (ops.get(op)+1));
+					if (ops.get(op)>4) rm.add(instance1.forms[i1].toLowerCase());
+				}
+
+				
+				HashSet<String> forms = op2form.get(op);
+				if (forms==null) {
+					forms = new HashSet<String>();
+					op2form.put(op, forms);
+				}
+				forms.add(instance1.forms[i1].toLowerCase());
+				
+			}
+
+		}
+
+		int countFreqSingleMappings =0;
+		
+		int sc=0;
+		ArrayList<Entry<String, Integer>> opsl = new ArrayList<Entry<String, Integer>>();
+		for(Entry<String, Integer> e : ops.entrySet()) {
+
+			// do not use scripts for infrequent cases or frequent single mappings (der -> die)
+			if(e.getValue()>_MIN_OCCURENT_FOR_SCRIPT_USE  &&  op2form.get(e.getKey()).size()>_MIN_WORDS_MAPPED_BY_SCRIPT) {
+				mf.register(OPERATION, e.getKey());
+				sc++;
+				opsl.add(e);
+			} else {
+				// do not remove the infrequent cases
+				rm.removeAll(op2form.get(e.getKey()));
+				
+				if (op2form.get(e.getKey()).size()<=1) countFreqSingleMappings+=op2form.get(e.getKey()).size();
+			}
+		}
+		for(String k : rm) {
+			opse.remove(k);
+		}
+
+		Collections.sort(opsl, new Comparator<Entry<String, Integer>>(){
+
+			@Override
+			public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
+
+				return o1.getValue()==o2.getValue()?0:o1.getValue()>o2.getValue()?1:-1;
+			}
+		});
+
+		
+		
+		for(Entry<String, Integer> e : opsl) {
+			//	System.out.println(e.getKey()+"  "+e.getValue());
+		}
+
+
+		if (options.clusterFile==null)cl = new Cluster();
+		else cl=  new Cluster(options.clusterFile, mf,6);
+
+
+		System.out.println("\nfound scripts "+ops.size()+" used scripts "+sc);
+		System.out.println("found mappings of single words "+countFreqSingleMappings);
+		System.out.println("use word maps instead of scripts "+this.opse.size());
+		//		System.out.println(" "+opse);
+		System.out.println(""+mf.toString());
+
+		initFeatures();
+
+		mf.calculateBits();
+		initValues();
+
+		depReader.startReading(options.trainfile);
+
+		int i = 0;
+		long start1 = System.currentTimeMillis();
+
+		System.out.print("Creating Features: ");
+		is.init(ic, mf) ;
+		del=0;
+		while(true) {
+			try {
+			if (i % 100 ==0) {del = outValue(i, del);}
+			SentenceData09 instance1 = depReader.getNext(is);
+			if (instance1== null) break;
+			
+			is.fillChars(instance1, i, _CEND);
+		
+			if (i>options.count) break;
+
+			i++;
+		} catch(Exception e) {
+			DB.println("error in sentnence "+i);
+			e.printStackTrace();
+		}
+		}
+		long end1 = System.currentTimeMillis();
+		System.gc();
+		long mem2 = Runtime.getRuntime().totalMemory() -  Runtime.getRuntime().freeMemory();
+		System.out.print("  time "+(end1-start1)+" mem "+(mem2/1024)+" kb");
+
+		types = new String[mf.getFeatureCounter().get(OPERATION)];
+
+		for(Entry<String,Integer> e : mf.getFeatureSet().get(OPERATION).entrySet()) {
+			types[e.getValue()] = e.getKey();
+			//	System.out.println("set pos "+e.getKey());
+		}
+
+		System.out.println("Num Features: " + mf.size());
+
+
+
+		return is;
+
+	}
+
+
+	/**
+	 * @param is
+	 * @param n
+	 * @param k
+	 * @param wds
+	 * @return
+	 */
+	public static String getOperation(Instances is, int n, int k, String[] wds) {
+
+
+		String form = wds[is.forms[n][k]];
+		String olemma = wds[is.glemmas[n][k]];
+
+		String s = new StringBuffer(form.toLowerCase()).reverse().toString();
+		String t = new StringBuffer(olemma.toLowerCase()).reverse().toString();
+
+
+
+		return getOperation2(s, t);
+	}
+
+
+
+	public static String getOperation(SentenceData09 instance1, int i1) {
+		String s = new StringBuffer(instance1.forms[i1].toLowerCase()).reverse().toString();
+		String t = new StringBuffer(instance1.lemmas[i1].toLowerCase()).reverse().toString();
+
+
+
+		return getOperation2(s, t);
+	}
+
+	public static String getOperation(String si, String ti) {
+		String s = new StringBuffer(si.toLowerCase()).reverse().toString();
+		String t = new StringBuffer(ti.toLowerCase()).reverse().toString();
+
+
+
+		return getOperation2(s, t);
+	}
+
+
+	private static String getOperation2(String s, String t) {
+		StringBuffer po = new StringBuffer();
+		String op;
+		if (!s.equals(t)) {
+
+
+			int[][] d =StringEdit.LD(s, t);
+			StringEdit.searchPath(s,t,d, po, false);
+			op = po.toString();
+
+		} else op ="0"; // do nothing
+		return op;
+	}
+
+
+
+	private void registerChars(String type, String word) {
+		for(int i=0;i<word.length();i++) mf.register(type, Character.toString(word.charAt(i)));      
+	}
+
+
+
+	public void initValues() {
+
+		z = new D4(li);
+	
+		x = new D4(li);
+		x.a0=s_type; 
+
+		s_pos = mf.getFeatureCounter().get(POS).intValue();//mf.getFeatureBits(POS);
+		s_word = mf.getFeatureCounter().get(WORD);
+		s_type = mf.getFeatureCounter().get(TYPE).intValue();//mf.getFeatureBits(TYPE);
+		s_char = mf.getFeatureCounter().get(CHAR).intValue();//mf.getFeatureBits(CHAR);
+		s_oper = mf.getFeatureCounter().get(OPERATION).intValue();//mf.getFeatureBits(OPERATION);
+
+		types = new String[mf.getFeatureCounter().get(Pipe.OPERATION)];
+		for(Entry<String,Integer> e : mf.getFeatureSet().get(Pipe.OPERATION).entrySet()) types[e.getValue()] = e.getKey();
+
+		//wds  = new String[mf.getFeatureCounter().get(Pipe.WORD)];
+		//for(Entry<String,Integer> e : mf.getFeatureSet().get(Pipe.WORD).entrySet()) wds[e.getValue()] = e.getKey();
+		
+
+		z.a0 = s_type;z.a1 = s_oper; z.a2 = s_char; z.a3 = s_char; z.a4 = s_char;z.a5 = s_char;z.a6 = s_char;z.a7 = s_char;
+		x.a0 = s_type; x.a1 = s_oper;x.a2 = s_word; x.a3 = s_word; x.a4 = s_word;x.a5 = s_char;x.a6 = s_char;x.a7 = s_char;
+
+	}
+
+	public static int s_pos,s_word,s_type,s_dir,s_dist, s_char, s_oper;
+
+
+
+	/**
+	 * Initialize the features.
+	 * @param maxFeatures
+	 */
+	public void initFeatures() {
+
+
+		
+		for(int k=0;k<50;k++) {
+			mf.register(TYPE, "F"+k);
+		}
+		
+		_f0 = mf.register(TYPE, _F0);
+		_f1 = mf.register(TYPE, _F1);
+		_f2 = mf.register(TYPE, _F2);
+		_f3 = mf.register(TYPE, _F3);
+		_f4 = mf.register(TYPE, _F4);
+		_f5 = mf.register(TYPE, _F5);
+		_f6 = mf.register(TYPE, _F6);
+		_f7 = mf.register(TYPE, _F7);
+		_f8 = mf.register(TYPE, _F8);
+		_f9 = mf.register(TYPE, _F9);
+		_f10 = mf.register(TYPE, _F10);
+		_f11 = mf.register(TYPE, _F11);
+		_f12 = mf.register(TYPE, _F12);
+		_f13 = mf.register(TYPE, _F13);
+		_f14 = mf.register(TYPE, _F14);
+		_f15 = mf.register(TYPE, _F15);
+		_f16 = mf.register(TYPE, _F16);
+		_f17 = mf.register(TYPE, _F17);
+		_f18 = mf.register(TYPE, _F18);
+		_f19 = mf.register(TYPE, _F19);
+		_f20 = mf.register(TYPE, _F20);
+		_f21 = mf.register(TYPE, _F21);
+		_f22 = mf.register(TYPE, _F22);
+		_f23 = mf.register(TYPE, _F23);
+		_f24 = mf.register(TYPE, _F24);
+		_f25 = mf.register(TYPE, _F25);
+		_f26 = mf.register(TYPE, _F26);
+		_f27 = mf.register(TYPE, _F27);
+		_f28 = mf.register(TYPE, _F28);
+		_f29 = mf.register(TYPE, _F29);
+		_f30 = mf.register(TYPE, _F30);
+
+		_f31 = mf.register(TYPE, _F31);
+		_f32 = mf.register(TYPE, _F32);
+		_f33 = mf.register(TYPE, _F33);
+		_f34 = mf.register(TYPE, _F34);
+
+		_f35 = mf.register(TYPE, _F35);
+		_f36 = mf.register(TYPE, _F36);
+		_f37 = mf.register(TYPE, _F37);
+		_f38 = mf.register(TYPE, _F38);
+
+
+		mf.register(POS, MID);
+		mf.register(POS, STR);
+		mf.register(POS, END);
+		mf.register(TYPE, CHAR);
+
+		_swrd = mf.register(WORD, STR);
+		_ewrd = mf.register(WORD, END);
+
+
+		_CEND = mf.register(CHAR, END);
+
+
+	}
+
+
+
+	final public void addCoreFeatures(InstancesTagger is, int ic, int i, int oper, String form, long[] f) {
+
+		for(int l=f.length-1;l>=0;l--) f[l]=0;
+		
+		int formi =is.forms[ic][i];
+		int wl =is.chars[ic][i][11];//.forms[i].length();
+
+		int position = 1+(i<3?i:3);
+
+		int c0= is.chars[ic][i][0], c1=is.chars[ic][i][1], c2=is.chars[ic][i][2], c3=is.chars[ic][i][3], c4=is.chars[ic][i][4],c5=is.chars[ic][i][5];
+		int e0 =is.chars[ic][i][6], e1 =is.chars[ic][i][7],e2 =is.chars[ic][i][8],e3 =is.chars[ic][i][9],e4 =is.chars[ic][i][10];
+
+		int len = is.length(ic);
+
+	
+		
+		x.v1=oper; x.v0 = _f0; x.v2 = formi; x.cz3(); f[0]=x.getVal(); f[1]=x.csa(3, position);
+		x.v0 = _f1; x.v2 = formi; x.v3 =i+1>=len?x.v3=_ewrd:is.forms[ic][i+1];x.cz4(); f[2]=x.getVal();
+
+		// contains upper case include again!!!
+		
+		short upper =0;
+		short number = 1;
+		for(int k1=0;k1<wl;k1++){
+			char c =form.charAt(k1);
+			if (Character.isUpperCase(c)) {
+				if (k1==0) upper=1;
+				else {
+					// first char + another
+					if (upper==1)upper=3;
+					// another uppercase in the word
+					else if (upper==0) upper=2;
+				}
+			}
+
+			if (Character.isDigit(c) && k1==0) number =2 ;
+			else if (Character.isDigit(c) && number==1) number = 3 ;
+
+		}
+
+		// contains a number
+		z.v0= _f21;	 z.v2=number;  z.cz3();f[3]=z.getVal();
+
+		z.v0 = _f4; z.v1 = oper; z.v2=c0; z.cz3();f[4]=z.getVal();
+		z.v0 = _f5; z.v2 = e0;z.cz3();f[5]=z.getVal();
+
+		z.v2=c0; z.v3=c1; z.v4=c2; z.v5=c3; z.v6=c4;
+		z.v0=_f6; z.cz4(); f[6]=z.getVal();
+		z.v0=_f7; z.cz5(); f[7]=z.getVal();
+		z.v0=_f8; z.cz6(); f[8]=z.getVal();
+		z.v0=_f9; z.cz7(); f[9]=z.getVal();
+	
+		int c=10;
+		z.v2=e0; z.v3=e1; z.v4=e2; z.v5=e3; z.v6=e4;
+		z.v0 =_f10; z.cz4();f[c++]=z.getVal(); f[c++]= z.csa(3, upper); 
+		z.v0 =_f11; z.cz5();f[c++]=z.getVal(); f[c++]= z.csa(3, upper); 
+		z.v0 =_f12; z.cz6();f[c++]=z.getVal(); f[c++]= z.csa(3, upper); 
+		z.v0 =_f13; z.cz7();f[c++]=z.getVal(); f[c++]= z.csa(3, upper); 
+		
+		if (len>i+1) {
+
+			z.v0 = _f14;  z.v2 = is.chars[ic][i+1][0];
+			z.cz3();f[c++]=z.getVal();
+
+			z.v0 = _f15;  z.v2 = is.chars[ic][i+1][5];z.cz3();f[c++]=z.getVal();
+
+			if (is.chars[ic][i+1][11]>1 ) {
+				z.v0 = _f16;  z.v2 = is.chars[ic][i+1][0];
+				z.v3 = is.chars[ic][i+1][2];z.cz4();f[c++]=z.getVal();
+
+				z.v0 = _f17;  z.v2 = is.chars[ic][i+1][1];
+				z.v3 = is.chars[ic][i+1][6];
+				z.cz4();f[c++]=z.getVal();//fv.add(li.l2i(mf.calc4(b)));
+			}
+
+
+			x.v0 = _f18;  
+			x.v2 =  is.forms[ic][i+1];
+			x.cz3();f[c++]=x.getVal();
+
+			if (len>i+2) {
+				x.v0 = _f32;  
+				x.v2 =  is.forms[ic][i+2]; 	x.v3 =  is.forms[ic][i+1]; x.cz4();f[c++]=x.getVal();
+				x.cz3();f[c++]=x.getVal();//fv.add(li.l2i(mf.calc3(b)));
+
+			}
+
+			if (len>i+3) {
+				x.v0 = _f33;  x.v2 =  is.forms[ic][i+3]; x.v3 =  is.forms[ic][i+2];x.cz4();f[c++]=x.getVal();//fv.add(li.l2i(mf.calc4(b)));
+				x.cz3();f[27]=x.getVal();//fv.add(li.l2i(mf.calc3(b)));
+			}
+		}
+
+		// length
+
+		z.v0= _f19;	z.v1=oper; z.v2=wl;z.cz3();f[c++]=z.getVal();//fv.add(li.l2i(mf.calc3(dl1)));
+
+		if (i<1) return ;
+
+		x.v0 = _f27; x.v1=oper;
+		x.v2 = is.forms[ic][i-1];x.cz3();f[c++]=x.getVal();//fv.add(li.l2i(mf.calc3(b)));
+
+
+		if (i<2) return ;
+
+		//added this before it was 99.46
+		x.v0 = _f28; x.v2 = is.forms[ic][i-2];x.cz3();f[c++]=x.getVal();//fv.add(li.l2i(mf.calc3(b)));
+
+		// result 99.484
+		if (i<3) return ;
+
+		x.v0 = _f31; x.v1=oper; x.v2 = is.forms[ic][i-3]; x.v3 = is.forms[ic][i-2]; x.cz4();f[c++]=x.getVal();//fv.add(li.l2i(mf.calc4(b)));
+
+	}
+
+
+
+//	public String[] wds;
+
+	/**
+	 * Write the lemma that are not mapped by operations
+	 * @param dos
+	 */
+	private void writeMap(DataOutputStream dos) {
+
+		try {
+			dos.writeInt(opse.size());
+			for(Entry<String, String> e : opse.entrySet()) {
+				dos.writeUTF(e.getKey());
+				dos.writeUTF(e.getValue());
+			}
+		} catch (IOException e1) {
+			e1.printStackTrace();
+		}
+	}
+
+
+
+	/**
+	 * Read the form-lemma mapping not read by operations
+	 * @param dis
+	 */
+	public void readMap(DataInputStream dis) {
+		try {
+			int size = dis.readInt();
+			for(int i =0; i<size;i++) {
+				opse.put(dis.readUTF(), dis.readUTF());
+			}
+		} catch (IOException e1) {
+			e1.printStackTrace();
+		}
+	}
+
+
+
+
+
+
+	/* (non-Javadoc)
+	 * @see is2.tools.IPipe#write(java.io.DataOutputStream)
+	 */
+	@Override
+	public void write(DataOutputStream dos) {
+		this.writeMap(dos);
+		try {
+			cl.write(dos);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		
+	}
+
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/lemmatizer/StringEdit.java b/dependencyParser/basic/mate-tools/src/is2/lemmatizer/StringEdit.java
new file mode 100755
index 0000000..8a4080e
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/lemmatizer/StringEdit.java
@@ -0,0 +1,318 @@
+package is2.lemmatizer;
+
+import is2.util.DB;
+
+import java.util.ArrayList;
+
+public class StringEdit {
+
+
+	public static void main(String args[]) {
+
+		
+
+		String s = new StringBuffer(args[0]).reverse().toString();
+		String t = new StringBuffer(args[1]).reverse().toString();
+		
+		int d[][] = LD(s, t);
+
+		
+
+		StringBuffer opersations = new StringBuffer();
+		searchPath(s,t,d, opersations, false);
+		System.out.println("resuylt "+" "+opersations);
+
+	}
+
+
+
+
+
+	//****************************
+	// Get minimum of three values
+	//****************************
+
+	static private int Minimum (int a, int b, int c) {
+		int mi;
+
+		mi = a;
+		if (b < mi)  mi = b;
+		if (c < mi)  mi = c;
+		
+		return mi;
+
+	}
+
+	//*****************************
+	// Compute Levenshtein distance
+	//*****************************
+
+	static public int[][] LD (String s, String t) {
+		 
+		int n = s.length ();
+		int m = t.length ();; // length of t
+	//	char s_i; // ith character of s
+	//	char t_j; // jth character of t
+		int cost; // cost
+
+		// Step 1
+
+		
+		int[][] d = new int[n+1][m+1];
+
+		if (n == 0)  return d;
+		if (m == 0)  return d;
+		
+		// Step 2
+
+		for (int i = 0; i <= n; i++) d[i][0] = i;
+		for (int j = 0; j <= m; j++) d[0][j] = j;
+		
+
+		// Step 3
+
+		for (int i = 1; i <= n; i++) {
+
+			int s_i = s.charAt (i - 1);
+
+			// Step 4
+
+			for (int j = 1; j <= m; j++) {
+
+//				t_j = t.charAt (j - 1);
+
+				// Step 5
+
+				if (s_i == t.charAt (j - 1))  cost = 0;
+				else cost = 1;
+				
+
+				// Step 6
+
+				d[i][j] = Minimum (d[i-1][j]+1, d[i][j-1]+1, d[i-1][j-1] + cost);
+
+			}
+
+		}
+
+		// Step 7
+		
+		
+
+		return d;
+
+	}
+
+
+
+
+
+	static String searchPath(String s, String t, int[][] d, StringBuffer operations, boolean debug) {
+	
+		StringBuffer result = new StringBuffer(s);
+		
+		int n = d.length;
+		int m = d[0].length;
+		
+		int x=n-1;
+		int y=m-1;
+		boolean changed =false;
+		while(true) {
+			if (debug && changed )System.out.println("result "+new StringBuffer(result)  .reverse());
+			
+			if (d[x][y]==0)break;
+			if (y>0&&x>0&& d[x-1][y-1]<d[x][y]) {
+				if (debug) System.out.println("min d[x-1][y-1] "+d[x-1][y-1]+" d[x][y] "+d[x][y]+" rep "+s.charAt(x-1)+" with "+t.charAt(y-1)+" at "+(x-1)); 
+				
+				operations.append('R').append(Character.toString((char)((int)x-1))).append(s.charAt(x-1)).append(t.charAt(y-1));
+				if (debug) result.setCharAt(x-1, t.charAt(y-1));
+				y--;
+				x--;
+				changed =true;
+				continue;
+			}
+			if (y>0&& d[x][y-1]<d[x][y]) {
+				if (debug) System.out.println("min d[x][y-1] "+d[x][y-1]+"  d[x][y] "+d[x][y]+" ins "+t.charAt(y-1)+" at "+(x)); 
+				operations.append('I').append(Character.toString((char)((int)x))).append(t.charAt(y-1));
+				if (debug)result.insert(x, t.charAt(y-1));
+				y--;
+				changed =true;
+				continue;
+			}
+			if (x>0&& d[x-1][y]<d[x][y]) {
+				if (debug)System.out.println("min d[x-1][y] "+d[x-1][y]+" d[x][y] "+d[x][y]+" del "+s.charAt(x-1)+" at "+(x-1)); 
+				operations.append('D').append(Character.toString((char)((int)x-1))).append(s.charAt(x-1));
+				if (debug)result.deleteCharAt(x-1);
+				x--;
+				changed =true;
+				continue;
+			}
+			changed =false;
+			if (x>0&& y>0 && d[x-1][y-1]==d[x][y]) {
+				x--; y--;
+				continue ;
+			}
+			if (x>0&&  d[x-1][y]==d[x][y]) {
+				x--; 
+				continue;
+			}
+			if (y>0 && d[x][y-1]==d[x][y]) {
+				y--;
+				continue;
+			}
+			
+		}
+		if (debug) return result.reverse().toString();
+		else return null;
+	}
+
+	public static String change(String s, String operations) {
+		
+		StringBuffer result = new StringBuffer(s).reverse();
+		
+		int pc =0;
+		while(true) {
+			if (operations.length()<=pc) break;
+			char nextOperation = operations.charAt(pc);
+			pc++;
+			if (nextOperation == 'R') {
+				//pc++;
+				int xm1 = (char)operations.charAt(pc);
+				pc++;
+				char replace = operations.charAt(pc);
+				pc++;
+				char with = operations.charAt(pc);
+				//operations.append('R').append((char)x-1).append(s.charAt(x-1)).append(t.charAt(y-1));
+			//	System.out.println(""+result+" xm1 "+xm1+" op "+operations);
+	
+				
+				if (result.length()<=xm1) return s; 
+			
+				if (result.charAt(xm1)==replace) result.setCharAt(xm1, with);
+				//if (debug) result.setCharAt(x-1, t.charAt(y-1));
+				pc++;
+				
+			}else if (nextOperation == 'I') {
+			//	if (debug) System.out.println("min d[x][y-1] "+d[x][y-1]+"  d[x][y] "+d[x][y]+" ins "+t.charAt(y-1)+" at "+(x)); 
+				//operations.append('I').append((char)x).append(t.charAt(y-1));
+				
+				//if (debug)result.insert(x, t.charAt(y-1));
+				//y--;
+				//changed =true;
+				//pc++;
+				int x = operations.charAt(pc);
+				pc++;
+				char in = operations.charAt(pc);
+			
+				if (result.length()<x) return s; 
+				
+				result.insert(x, in);
+				pc++;
+			} else if (nextOperation == 'D' ) {
+				//pc++;
+				int xm1 = operations.charAt(pc);
+				
+				
+				if (result.length()<=xm1) return s; 
+				
+				result.deleteCharAt(xm1);
+				pc++;
+				// delete with
+				pc++;
+		//		operations.append('D').append((char)x-1).append(s.charAt(x-1));
+			//	if (debug)result.deleteCharAt(x-1);
+			}
+			
+		}
+		return result.reverse().toString();
+		//else return null;
+	}
+
+
+
+
+
+	
+
+
+
+	
+
+
+
+
+
+
+
+	/**
+	 * @param opers
+	 * @param postion
+	 * @return
+	 */
+	public static String get(ArrayList<String> opers, int position) {
+		for(String s : opers) {
+			int p = (int)s.charAt(1);
+			if (p==position) {
+				return s;
+			}
+		}
+		return "0";
+	}
+
+
+
+
+
+	/**
+	 * @param form
+	 * @param string
+	 * @param c
+	 * @return
+	 */
+	public static String changeSimple(String form, String operation, int c) {
+		
+		if (operation.equals("0")) return form;
+		
+		if (operation.charAt(0)=='I') {
+			StringBuffer f = new StringBuffer(form);
+			if (f.length()<=c) {
+			//	DB.println("fail insert ");
+				return form;
+			}
+			f.insert(c+1, operation.charAt(1));
+			return f.toString();
+		}
+		if (operation.charAt(0)=='R') {
+			StringBuffer f = new StringBuffer(form);
+	//		if (f.length()<=c) f.append(' ');
+			if (f.length()<=c) {
+			//	DB.println("fail replace ");
+				return form;
+			}
+			f.setCharAt(c, operation.charAt(2));
+			return f.toString();
+		}
+		
+		if (operation.charAt(0)=='D') {
+			StringBuffer f = new StringBuffer(form);
+			f.delete(c, c+1);//.append(' ');
+			return f.toString();
+		}
+		return form;
+	}
+
+
+
+
+
+	/**
+	 * @param string
+	 * @return
+	 */
+	public static String simple(String o) {
+		StringBuffer s = new StringBuffer(o);
+		s.delete(1, 2);
+		return s.toString();
+	}
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/mtag/Convert.java b/dependencyParser/basic/mate-tools/src/is2/mtag/Convert.java
new file mode 100755
index 0000000..e262269
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/mtag/Convert.java
@@ -0,0 +1,98 @@
+/**
+ * 
+ */
+package is2.mtag;
+
+
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.util.ArrayList;
+
+/**
+ * @author Dr. Bernd Bohnet, 20.01.2010
+ * 
+ * 
+ */
+public class Convert {
+   
+	public static void main (String[] args) throws IOException {
+		
+		Options options = new Options(args);
+		
+		split(options.trainfile);
+		
+	}
+
+	/**
+	 * @param trainfile
+	 * @throws IOException 
+	 */
+	private static void split(String trainfile) throws IOException {
+	
+		String dir = "split";
+		boolean success = (new File("split")).mkdir();
+	    if (success)  System.out.println("Directory: " + dir + " created");
+	   
+	    
+	    ArrayList<String> corpus = new  ArrayList<String>(); 
+	    
+	    BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(trainfile),"UTF-8"),32768);
+	    String l =null;
+	    int sentences = 0;
+	    try {
+			while( (l = reader.readLine())!=null) {
+				
+				corpus.add(l);
+				if (l.length()<8) sentences++; 
+				
+			}
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		System.out.println("Corpus has "+sentences+" sentences.");
+		
+		int partSize = sentences / 20;
+		System.out.println("Prepare corpus for cross annotations with 20 parts with part size "+partSize+" number of lines "+corpus.size());
+		
+		
+		
+		for(int k=0;k<20;k++) {
+			BufferedWriter br = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("split/p-"+k),"UTF-8"));
+			BufferedWriter rest = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("split/r-"+k),"UTF-8"));
+			int skip=k*partSize;
+
+			int countSentences=0;
+			int countSentencesWrote=0;
+			System.out.println("skip from "+skip+" to "+(skip+partSize-1));
+			for(String x : corpus) {
+				if (countSentences>=skip && (countSentences<(skip+partSize)||k==19)){
+					rest.write(x);
+					rest.newLine();
+					if (x.length()<8) countSentencesWrote++;
+				} else {
+					br.write(x);
+					br.newLine();
+				}
+				
+				if (x.length()<8) countSentences++;
+			}
+			System.out.println("wrote for this part "+countSentencesWrote);
+			br.flush();
+			br.close();
+			rest.flush();
+			rest.close();
+
+		}
+		
+		
+	}
+
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/mtag/Evaluator.java b/dependencyParser/basic/mate-tools/src/is2/mtag/Evaluator.java
new file mode 100755
index 0000000..09d1455
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/mtag/Evaluator.java
@@ -0,0 +1,148 @@
+package is2.mtag;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Hashtable;
+import java.util.Map.Entry;
+
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+
+
+public class Evaluator {
+
+	public static void evaluate (String act_file,  String pred_file, String format) throws Exception {
+
+		CONLLReader09 goldReader = new CONLLReader09(act_file);//DependencyReader.createDependencyReader();
+	//	boolean labeled = goldReader.startReading(act_file);
+
+		CONLLReader09 predictedReader = new CONLLReader09();
+		 predictedReader.startReading(pred_file);
+
+//		if (labeled != predLabeled)
+//			System.out.println("Gold file and predicted file appear to differ on whether or not they are labeled. Expect problems!!!");
+
+
+		int total = 0, totalP=0,corr = 0, corrL = 0, corrT=0,totalX=0;
+		int totalD=0, corrD=0,err=0;
+		int numsent = 0, corrsent = 0, corrsentL = 0;
+		SentenceData09 goldInstance = goldReader.getNext();
+		SentenceData09 predInstance = predictedReader.getNext();
+
+		Hashtable<String,Integer> errors = new Hashtable<String,Integer>();
+		Hashtable<String,StringBuffer> words = new Hashtable<String,StringBuffer>();
+
+		
+		while(goldInstance != null) {
+
+			int instanceLength = goldInstance.length();
+
+			if (instanceLength != predInstance.length())
+				System.out.println("Lengths do not match on sentence "+numsent);
+
+		
+			String gold[] = goldInstance.ofeats;
+			String pred[] = predInstance.pfeats;
+
+			boolean whole = true;
+			boolean wholeL = true;
+
+			// NOTE: the first item is the root info added during nextInstance(), so we skip it.
+
+			for (int i = 1; i < instanceLength; i++) {
+				if (gold[i].equals(pred[i])||(gold[i].equals("_")&&pred[i]==null)) corrT++;
+				else {
+			//		System.out.println("gold:"+goldFeats[i]+" pred:"+predFeats[i]+" "+goldInstance.forms[i]+" snt "+numsent+" i:"+i);
+					//for (int k = 1; k < instanceLength; k++) {
+						
+				//		System.out.print(goldInstance.forms[k]+":"+goldInstance.gpos[k]);
+				//		if (k==i)  	System.out.print(":"+predInstance.gpos[k]);
+				//		System.out.print(" ");
+						
+				//	}
+					//System.out.println();
+					String key = "gold: '"+gold[i]+"' pred: '"+pred[i]+"'";
+					Integer cnt = errors.get(key);
+					StringBuffer errWrd = words.get(key);
+					if (cnt==null) {
+						errors.put(key,1);
+						words.put(key, new StringBuffer().append(goldInstance.forms[i]));
+					}
+					else {
+						errors.put(key,cnt+1);		
+						errWrd.append(" "+goldInstance.forms[i]);
+					}
+					err++;
+
+				}
+				String[] gf = gold[i].split("|");
+				int eq=0;
+					
+				if (pred[i]!=null) {
+					String[] pf = pred[i].split("|");
+					totalP +=pf.length;
+
+					if (pf.length>gf.length) totalX +=pf.length;
+					else totalX+=gf.length;
+					
+					for(String g : gf) {
+						for(String p : pf) {
+							if (g.equals(p)) {eq++;break;}
+					}		
+				}
+				} else totalX+=gf.length;
+				totalD +=gf.length;
+				corrD +=eq;
+			}
+			total += instanceLength - 1; // Subtract one to not score fake root token
+
+			if(whole) corrsent++;
+			if(wholeL) corrsentL++;
+			numsent++;
+
+			goldInstance = goldReader.getNext();
+			predInstance = predictedReader.getNext();
+		}
+
+		ArrayList<Entry<String, Integer>> opsl = new ArrayList<Entry<String, Integer>>();
+		for(Entry<String, Integer> e : errors.entrySet()) {
+			opsl.add(e);
+		}
+		
+		Collections.sort(opsl, new Comparator<Entry<String, Integer>>(){
+
+			@Override
+			public int compare(Entry<String, Integer> o1,
+					Entry<String, Integer> o2) {
+				
+				return o1.getValue()==o2.getValue()?0:o1.getValue()>o2.getValue()?-1:1;
+			}
+			
+			
+		});
+			
+		
+		int cnt=0;
+		System.out.println("10 top most errors:");
+		for(Entry<String, Integer> e : opsl) {
+			cnt++;
+		//	System.out.println(e.getKey()+"  "+e.getValue()+" context: "+words.get(e.getKey()));
+		}
+
+		
+		System.out.println("Tokens: " + total+" Correct: " + corrT+" "+(float)corrT/total+" R "+((float)corrD/totalD)+" tP "+totalP+" tG "+totalD+" P "+(float)corrD/totalP);
+		System.out.println("err: " + err+" total "+total+" corr "+corrT);
+//		System.out.println("Unlabeled Complete Correct: " + ((double)corrsent/numsent));
+
+	}
+
+	public static void main (String[] args) throws Exception {
+		String format = "CONLL";
+		if (args.length > 2)
+			format = args[2];
+
+		evaluate(args[0], args[1], format);
+	}
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/mtag/ExtractorM.java b/dependencyParser/basic/mate-tools/src/is2/mtag/ExtractorM.java
new file mode 100644
index 0000000..864b977
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/mtag/ExtractorM.java
@@ -0,0 +1,514 @@
+package is2.mtag;
+
+
+import is2.data.Cluster;
+import is2.data.F2SF;
+import is2.data.Instances;
+import is2.data.InstancesTagger;
+import is2.data.Long2Int;
+import is2.data.Long2IntInterface;
+import is2.data.ParametersFloat;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.tools.IPipe;
+import is2.util.OptionsSuper;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map.Entry;
+
+
+final public class ExtractorM extends PipeGen implements IPipe {
+
+	public  static int _CEND;
+
+
+	private static final String STWRD = "STWRD",STPOS = "STPOS",END = "END",STR = "STR";
+
+	public String[] types;
+
+	Cluster cl;
+
+	final public MFO mf =new MFO();
+	public Long2IntInterface li;
+
+
+
+	final MFO.Data4 d1 = new MFO.Data4(),d2 = new MFO.Data4(),d3 = new MFO.Data4(),dw = new MFO.Data4();
+	final MFO.Data4 dwp = new MFO.Data4(),dp = new MFO.Data4();
+
+
+	private OptionsSuper options;
+	private int _ewrd;
+	static private int _mid, _strp,_endp;
+
+	public ExtractorM (Options options, Long2Int long2Int) throws IOException {
+		this.options = options;
+
+		li =long2Int;
+	}
+
+	public ExtractorM (OptionsSuper options) {
+		this.options = options;
+	}
+
+
+	public HashMap<Integer,Integer> form2morph = new HashMap<Integer, Integer> ();
+
+	
+	public Instances createInstances(String file) {
+
+		CONLLReader09 depReader = new CONLLReader09(CONLLReader09.NO_NORMALIZE);
+		
+		depReader.startReading(file);
+		mf.register(POS,"<root-POS>");
+
+		mf.register(FFEATS, CONLLReader09.NO_TYPE);
+		mf.register(FFEATS, "");
+		
+		InstancesTagger is = new InstancesTagger();
+
+		System.out.println("Registering feature parts ");
+
+		HashMap<String,HashSet<String>> op2form = new HashMap<String, HashSet<String>> ();
+		HashMap<String,Integer> freq = new HashMap<String, Integer> ();
+		
+		
+		int ic=0;
+		while(true) {
+			SentenceData09 instance1 = depReader.getNext();
+			if (instance1== null) break;
+			ic++;
+
+
+			String[] w = instance1.forms;
+			for(int i1 = 0; i1 < w.length; i1++) mf.register(WORD,  w[i1]);
+			for(int i1 = 0; i1 < w.length; i1++) registerChars(CHAR,  w[i1]);
+			
+			for(int i1 = 0; i1 < w.length; i1++) {
+				mf.register(WORD,  w[i1].toLowerCase());
+				Integer f = freq.get(w[i1].toLowerCase());
+			
+				if (f==null) freq.put(w[i1].toLowerCase(), 1);
+				else freq.put(w[i1].toLowerCase(), f+1);
+
+				HashSet<String> forms = op2form.get(w[i1].toLowerCase());
+				if (forms==null) {
+					forms = new HashSet<String>();
+					op2form.put(w[i1].toLowerCase(), forms);
+				}
+				forms.add(instance1.ofeats[i1]==null?"_":instance1.ofeats[i1]);
+			}
+			for(int i1 = 0; i1 < w.length; i1++) registerChars(CHAR,  w[i1].toLowerCase());
+
+			w = instance1.plemmas;
+			for(int i1 = 0; i1 < w.length; i1++) mf.register(WORD,  w[i1]);			
+			for(int i1 = 0; i1 < w.length; i1++) registerChars(CHAR,  w[i1]);
+
+			w = instance1.ppos;
+			for(int i1 = 0; i1 < w.length; i1++) mf.register(POS,  w[i1]);
+
+			w = instance1.gpos;
+			for(int i1 = 0; i1 < w.length; i1++) mf.register(POS,  w[i1]);
+
+			w = instance1.ofeats;
+			for(int i1 = 0; i1 < w.length; i1++) if (w[i1]!=null) mf.register(FEAT,  w[i1]);
+			for(int i1 = 0; i1 < w.length; i1++) if (w[i1]!=null) mf.register(FFEATS,  w[i1]);
+ 
+		//	w = instance1.pfeats;
+			//for(int i1 = 0; i1 < w.length; i1++) if (w[i1]!=null) mf.register(FEAT,  w[i1]);
+		}
+
+		
+		for(Entry<String,HashSet<String>> e : op2form.entrySet()) {
+				if (e.getValue().size()==1 &&freq.get(e.getKey())>10) {
+				//	System.out.println("found map "+e.getKey()+" "+e.getValue()+" "+freq.get(e.getKey()));
+					form2morph.put(mf.getValue(ExtractorM.WORD, e.getKey()), mf.getValue(FFEATS, (String)e.getValue().toArray()[0]));
+				}
+ 		}
+		
+		initFeatures();
+
+		mf.calculateBits();
+		initValues();
+
+		System.out.println(""+mf.toString());
+
+		depReader.startReading(file);
+
+		int num1 = 0;
+		long start1 = System.currentTimeMillis();
+		
+		System.out.print("Creating Features: ");
+		is.init(ic, mf) ;
+		int del=0;
+
+		while(true) {
+			if (num1 % 100 ==0) {del = outValue(num1, del);}
+			SentenceData09 instance1 = depReader.getNext(is);
+			if (instance1== null) break;
+
+			if (num1>options.count) break;
+
+			num1++;
+		}
+		long end1 = System.currentTimeMillis();
+		System.gc();
+		long mem2 = Runtime.getRuntime().totalMemory() -  Runtime.getRuntime().freeMemory();
+		System.out.print("  time "+(end1-start1)+" mem "+(mem2/1024)+" kb");
+
+		types = new String[mf.getFeatureCounter().get(FFEATS)];
+
+		for(Entry<String,Integer> e : mf.getFeatureSet().get(FFEATS).entrySet()) {
+			types[e.getValue()] = e.getKey();
+		}
+
+		
+		if (options.clusterFile==null)cl = new Cluster();
+		else cl=  new Cluster(options.clusterFile, mf,6);
+
+
+		System.out.println("Num Features: " + types.length);
+
+
+
+		depReader.startReading(file);
+
+
+
+		int num11=0;
+
+		while(true) {
+
+			SentenceData09 instance = depReader.getNext();
+			if (instance==null) break;
+	
+			is.fillChars(instance, num11, _CEND);
+
+
+			if (num11>options.count) break;
+
+			num11++;
+		}
+
+		return is;//.toNativeArray();
+
+	}
+
+	private void registerChars(String type, String word) {
+		for(int i=0;i<word.length();i++) 	mf.register(type, Character.toString(word.charAt(i)));      
+	}
+
+
+
+	public void initValues() {
+		s_feat = mf.getFeatureBits(FFEATS);
+		s_word = mf.getFeatureBits(WORD);
+		s_type = mf.getFeatureBits(TYPE);
+		s_char = mf.getFeatureBits(CHAR);
+		s_pos =mf.getFeatureBits(POS);
+	//	dl1.a[0] = s_type; dl1.a[1] = s_pos;
+	//	for (int k = 2; k < 7; k++) dl1.a[k] = s_pos;
+
+		d1.a0 = s_type; d1.a1 = s_feat; d1.a2= s_word;
+		d2.a0 = s_type; d2.a1 = s_feat; d2.a2= s_feat; d2.a3= s_feat; d2.a4= s_feat; d2.a5= s_feat; d2.a6= s_feat;
+		d3.a0 = s_type; d3.a1 = s_feat; d3.a2=  s_char; d3.a3= s_char; d3.a4= s_char; d3.a5=  s_char; d3.a6=  s_char; d3.a7= s_char;
+		dp.a0 = s_type; dp.a1 = s_feat; dp.a2=  s_pos; dp.a3= s_pos; dp.a4= s_feat;// dp.a5=  s_char; dp.a6=  s_char; dp.a7= s_char;
+		dw.a0 = s_type; dw.a1 = s_feat;dw.a2=  s_word; dw.a3= s_word; dw.a4= s_word; dw.a5=  s_word; dw.a6=  s_word; dw.a7= s_word;
+		dwp.a0 = s_type; dwp.a1 = s_feat;dwp.a2= s_word ; dwp.a3= s_feat; dwp.a4= s_word; 
+
+	}
+
+	public static short s_feat,s_word,s_type,s_dir,s_dist,s_char,s_pos;
+
+
+
+	/**
+	 * Initialize the features types.
+	 */
+	public void initFeatures() {
+
+		for(int t=0;t<62;t++) {
+			mf.register(TYPE,"F"+t);			
+		}
+		
+
+//		_mid = mf.register(POS, MID);
+		_strp = mf.register(POS, STR);
+		_endp= mf.register(POS, END);
+
+		mf.register(WORD, STR);
+		 _ewrd = mf.register(WORD, END);
+
+
+		_CEND = mf.register(CHAR, END);
+
+
+
+
+		// optional features
+		mf.register(WORD,STWRD);
+		mf.register(POS,STPOS);
+
+
+	}
+
+
+	final public void addCF(InstancesTagger is, int ic, String fs,int i, short pfeat[],short ppos[], int[] forms, int[] lemmas, long[] vs) {
+
+		int c0= is.chars[ic][i][0], c1=is.chars[ic][i][1], c2=is.chars[ic][i][2], c3=is.chars[ic][i][3], c4=is.chars[ic][i][4],c5=is.chars[ic][i][5];
+		int e0 =is.chars[ic][i][6], e1 =is.chars[ic][i][7],e2 =is.chars[ic][i][8],e3 =is.chars[ic][i][9],e4 =is.chars[ic][i][10];
+
+		int f=1,n=0;
+		short upper =0, number = 1;
+		for(int k1=0;k1<fs.length();k1++){
+			char c = fs.charAt(k1);
+			if (Character.isUpperCase(c)) {
+				if (k1==0) upper=1;
+				else {
+					// first char + another
+					if (upper==1) upper=3;
+					// another uppercase in the word
+					else if (upper==0) upper=2;
+				}
+			}
+
+			if (Character.isDigit(c) && k1==0) number =2 ;
+			else if (Character.isDigit(c) && number==1) number = 3;
+		}
+
+		int form = forms[i];
+
+		int len = forms.length;		
+		long l;
+		d1.v0 = f++; d1.v2=form; l=mf.calc3(d1); vs[n++]=mf.calc3(d1);
+
+		d1.v0 = f++; d1.v2=is.formlc[ic][i]; vs[n++]=mf.calc3(d1);
+
+		d3.v2=c0; d3.v3=c1; d3.v4=c2; d3.v5=c3; d3.v6=c4;
+		d3.v0=f++; vs[n++]=mf.calc3(d3);
+		d3.v0=f++; vs[n++]=mf.calc4(d3); 
+		d3.v0=f++; vs[n++]=mf.calc5(d3); 
+		d3.v0=f++; vs[n++]=mf.calc6(d3);
+		d3.v0=f++; vs[n++]=mf.calc7(d3);
+
+		if (form!=-1) {
+			d3.v2=c2; d3.v3=c3; d3.v4=c4; d3.v5=c5; d3.v6=cl.getLP(form);
+			d3.v0=f; vs[n++]=mf.calc6(d3); d3.v0=f+1; vs[n++]=mf.calc7(d3);
+		} 
+		f+=2;
+
+		if (form>0) {
+			d3.v0=f; d3.v5=cl.getLP(form); vs[n++]=mf.calc6(d3);
+			d3.v0=f+1; d3.v4=cl.getLP(form); vs[n++]=mf.calc5(d3);
+			d3.v0=f+2; d3.v3=cl.getLP(form); vs[n++]=mf.calc4(d3);
+		}
+		f+=3;
+
+		d3.v2=e0; d3.v3=e1; d3.v4=e2; d3.v5=e3; d3.v6=e4;
+		d3.v0 =f++; vs[n++]=mf.calc3(d3);	
+		d3.v0 =f++; vs[n++]=l=mf.calc4(d3); vs[n++]=d3.calcs(3, upper, l); 
+		d3.v0 =f++; vs[n++]=l=mf.calc5(d3); vs[n++]=d3.calcs(3, upper, l); 
+		d3.v0 =f++; vs[n++]=l=mf.calc6(d3); vs[n++]=d3.calcs(3, upper, l); 		
+		d3.v0 =f++; vs[n++]=l=mf.calc7(d3); vs[n++]=d3.calcs(3, upper, l); 
+
+		if (form>0) {
+			d3.v0=f; d3.v5=cl.getLP(form); vs[n++]=mf.calc6(d3);
+			d3.v0=f+1; d3.v4=cl.getLP(form); vs[n++]=mf.calc5(d3);
+			d3.v0=f+2; d3.v3=cl.getLP(form); vs[n++]=mf.calc4(d3);
+		}
+		f+=3;
+
+
+		dw.v0=f++; dw.v2=i+1<len?forms[i+1]:_ewrd;dw.v3= forms[i];vs[n++]=mf.calc4(dw);
+		
+		if (len>i+1) {
+
+			dw.v0=f; dw.v2= forms[i+1]; vs[n++]=mf.calc3(dw);
+			d3.v0=f+1; d3.v2 =is.chars[ic][i+1][0];vs[n++]=mf.calc3(d3);
+			d3.v0=f+2; d3.v2 =is.chars[ic][i+1][6];vs[n++]=mf.calc3(d3);
+
+			d3.v2=e0; d3.v3=e1;  
+
+			d3.v0 =f+3; d3.v4 =is.chars[ic][i+1][0];vs[n++]=mf.calc5(d3);
+			d3.v0 =f+4; d3.v4 =is.chars[ic][i+1][6];vs[n++]=mf.calc5(d3);
+
+			
+			
+			if (is.chars[ic][i+1][11]>1 ) { //  instance.forms[i+1].length()
+
+				d3.v0=f+5; d3.v2=is.chars[ic][i+1][0]; d3.v3=is.chars[ic][i+1][1]; vs[n++]=mf.calc4(d3);
+				d3.v0=f+6; d3.v2=is.chars[ic][i+1][6];	d3.v3=is.chars[ic][i+1][7]; vs[n++]=mf.calc4(d3);
+
+				d3.v2=e0; d3.v3=e1;  
+
+				d3.v0=f+7; d3.v4 = is.chars[ic][i+1][0]; d3.v5 =is.chars[ic][i+1][1]; vs[n++]=mf.calc6(d3);
+				d3.v0=f+8; d3.v4 = is.chars[ic][i+1][6]; d3.v5=is.chars[ic][i+1][7]; vs[n++]=mf.calc6(d3);				
+
+				if (forms[i+1]>0) {
+					d3.v0=f+9; d3.v2=is.chars[ic][i+1][0]; d3.v3=is.chars[ic][i+1][1]; d3.v4 =cl.getLP(forms[i+1]); vs[n++]=mf.calc5(d3);
+					d3.v0=f+10; d3.v2=is.chars[ic][i+1][6];	d3.v3=is.chars[ic][i+1][7]; d3.v4 =cl.getLP(forms[i+1]); vs[n++]=mf.calc5(d3);
+				} 
+			} 
+			
+			if (forms[i+1]>0) {
+				dw.v0=f+11; dw.v2= cl.getLP(forms[i+1]); dw.v3= forms[i];vs[n++]=mf.calc4(dw);
+			} 
+			
+			if (len>i+2) {
+				dw.v0=f+12; dw.v2= forms[i+2]; dw.v3 = forms[i+1];vs[n++]=mf.calc4(dw);vs[n++]=mf.calc3(dw);
+//				d2.v0=f+13; d2.v2=pfeat[i+1]; d2.v3=  pfeat[i+2];	vs[n++]=mf.calc4(d2);
+			//	dp.v0= f+14; dp.v2=ppos[i+1]; dp.v3=ppos[i+2]; vs[n++]=mf.calc4(dp);
+
+			} 
+
+			if (len>i+3) {
+				dw.v0=f+14; dw.v2= forms[i+3]; dw.v3 = forms[i+2]; vs[n++]=mf.calc4(dw); vs[n++]=mf.calc3(dw);
+	
+			} 
+		} 
+		f+=16;
+
+		// length
+		d2.v0=f++; d2.v2=is.chars[ic][i][11];vs[n++]=mf.calc3(d2);
+
+
+		// contains a number
+		d2.v0=f++; d2.v2=number;	vs[n++]=mf.calc3(d2);
+		d1.v0=f++;  d1.v2=lemmas[i];	vs[n++]=mf.calc3(d1);
+
+		if (i!=0 &&len>i+1) {
+			dw.v0=f; dw.v2=lemmas[i-1];dw.v3=lemmas[i+1];vs[n++]=mf.calc4(dw);                      
+			d2.v0=f+1; d2.v2=pfeat[i-1]; d2.v3=pfeat[i+1];vs[n++]=mf.calc4(d2);                      
+		} 
+		f+=2;
+
+		d2.v0= f++; d2.v2=i>=1? pfeat[i-1]:_strp; vs[n++]=mf.calc3(d2);
+		dp.v0= f++; dp.v2=ppos[i]; vs[n++]=mf.calc3(dp);
+
+		if (i>0) {
+			dw.v0 = f++; dw.v2 =i>=1?  forms[i-1]:_strp; vs[n++]=mf.calc3(dw);
+			dw.v0 = f++; dw.v2 = i>=1? lemmas[i-1]:_strp; vs[n++]=mf.calc3(dw);			
+					
+			if (len>i+1) {
+//				d2.v0=f;	d2.v2= pfeat[i-1];d2.v3= pfeat[i+1]; vs[n++]=mf.calc4(d2);
+		//		dp.v0= f+1; dp.v2=ppos[i-1]; dp.v3=ppos[i+1]; vs[n++]=mf.calc4(dp);
+
+			}
+			f++;
+			dp.v0= f++; dp.v2=ppos[i]; dp.v3=ppos[i-1]; vs[n++]=mf.calc4(dp);
+					
+			if (i>1) {
+				d2.v0=f++;	d2.v2=i<2?_strp:  pfeat[i-2]; vs[n++]=mf.calc3(d2);
+				d2.v0=f++;	d2.v2= pfeat[i-1]; d2.v3= pfeat[i-2]; vs[n++]=mf.calc4(d2);
+				
+				dw.v0=f++;	dw.v2= forms[i-2]; vs[n++]=mf.calc3(dw);		
+				dwp.v0=f++;   dwp.v2 = forms[i-1]; dwp.v3 =  pfeat[i-2];vs[n++]=mf.calc4(dwp);
+				dwp.v0=f++;   dwp.v2 = forms[i-2]; dwp.v3 =  pfeat[i-1];vs[n++]=mf.calc4(dwp);
+
+				if (i>2) {
+					d2.v0=f++;	d2.v2=pfeat[i-3]; vs[n++]=mf.calc3(d2);
+					d2.v0=f++;	d2.v2=pfeat[i-2]; d2.v3= pfeat[i-3]; vs[n++]=mf.calc4(d2);
+					dw.v0=f++;   dw.v2 = forms[i-3]; dw.v3 = forms[i-2]; vs[n++]=mf.calc4(dw);
+		//			dp.v0= f++; dp.v2=ppos[i-3]; dp.v3=ppos[i-2]; vs[n++]=mf.calc4(dp);
+				}
+			}
+		}
+		vs[n] = Integer.MIN_VALUE;
+	}
+
+
+	
+
+	
+
+
+	public int fillFeatureVectorsOne(ParametersFloat params, int w1, String form, Instances is, int n, short[] features, long[] vs) {
+		double best = -1;
+		int bestType=-1;
+
+		F2SF f = new F2SF(params.parameters);
+			//is.gfeats[n]
+		addCF((InstancesTagger)is, n, form, w1, features,is.pposs[n], is.forms[n], is.plemmas[n], vs); 
+		
+		for(int t = 0; t < types.length; t++) {
+
+			f.clear();
+			int p = t<<ExtractorM.s_type;
+			for(int k=0;k<vs.length;k++) {
+				if (vs[k]==Integer.MIN_VALUE) break;
+				if (vs[k]>=0) f.add(li.l2i(vs[k]+p));
+			}
+			if (f.score >best) {
+				bestType=t;
+				best =f.score;
+			}
+
+		}	
+		return bestType;
+
+	}
+
+	
+	
+		//static ArrayList<T> todo = new ArrayList<T>();
+	static SentenceData09 instance;
+	
+	
+	public static int _FC =200;
+	
+	
+	/**
+	 * Write the lemma that are not mapped by operations
+	 * @param dos
+	 */
+	public void writeMap(DataOutputStream dos) {
+
+		try {
+			dos.writeInt(this.form2morph.size());
+			for(Entry<Integer, Integer> e : form2morph.entrySet()) {
+				dos.writeInt(e.getKey());
+				dos.writeInt(e.getValue());
+			}
+		} catch (IOException e1) {
+			e1.printStackTrace();
+		}
+	}
+
+
+
+	/**
+	 * Read the form-lemma mapping not read by operations
+	 * @param dis
+	 */
+	public void readMap(DataInputStream dis) {
+		try {
+			int size = dis.readInt();
+			for(int i =0; i<size;i++) {
+				form2morph.put(dis.readInt(), dis.readInt());
+			}
+		} catch (IOException e1) {
+			e1.printStackTrace();
+		}
+	}
+
+	
+	/* (non-Javadoc)
+	 * @see is2.tools.IPipe#write(java.io.DataOutputStream)
+	 */
+	@Override
+	public void write(DataOutputStream dos) {
+		try {
+			cl.write(dos);
+			writeMap(dos);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/mtag/MFO.java b/dependencyParser/basic/mate-tools/src/is2/mtag/MFO.java
new file mode 100755
index 0000000..d91991e
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/mtag/MFO.java
@@ -0,0 +1,540 @@
+package is2.mtag;
+
+
+import is2.data.IEncoderPlus;
+import is2.util.DB;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map.Entry;
+
+/**
+ * Map Features, do not map long to integer
+ * 
+ * @author Bernd Bohnet, 20.09.2009
+ */
+
+final public class MFO  implements IEncoderPlus {
+
+	/** The features and its values */
+	static private final HashMap<String,HashMap<String,Integer>> m_featureSets = new HashMap<String,HashMap<String,Integer>>();
+
+	/** The feature class and the number of values */
+	static private final HashMap<String,Integer> m_featureCounters = new HashMap<String,Integer>();
+
+	/** The number of bits needed to encode a feature */
+	static final HashMap<String,Integer> m_featureBits = new HashMap<String,Integer>();
+
+	/** Integer counter for long2int */
+	//private int count=0;
+
+	/** Stop growing */
+	public boolean stop=false;
+
+	final public static String NONE="<None>";
+
+	public static class Data {
+		public final String[] a = new String[8];
+		public final String[] v = new String[8];
+		final short[] s = new short[9];
+		public void clear(int i) {
+			v[i]=null;
+		}
+	}
+
+
+
+	final public static class Data4 {
+		public int shift;
+		public short a0,a1,a2,a3,a4,a5,a6,a7,a8,a9;
+		public int v0,v1,v2,v3,v4,v5,v6,v7,v8,v9; 
+
+		final public long calcs(int b, long v, long l) {
+			if (l<0) return l;
+			l |= v<<shift;
+			shift +=b;
+			return l;
+		}
+
+
+		final public long calc2() {
+
+			if (v0<0||v1<0) return -1;
+
+			long l = v0;
+			shift =a0;
+			l |= (long)v1<<shift;
+			shift +=a1;
+
+			return l;
+		}
+
+
+
+		final public long calc3() {
+
+			if (v0<0||v1<0||v2<0) return -1;
+			//	if (v1<0||v2<0) return -1;
+
+			long l = v0;
+			shift =a0;
+			l |= (long)v1<<shift;
+			shift +=a1;
+			l |= (long)v2<<shift;
+			shift=(short) (shift + a2);
+
+			//shift=;
+			return l;
+		}
+
+
+		final public long calc4() {
+			if (v0<0||v1<0||v2<0||v3<0) return -1;
+
+			long l = v0;
+			shift =a0;
+			l |= (long)v1<<shift;
+			shift +=a1;
+			l |= (long)v2<<shift;
+			shift +=a2;
+			l |= (long)v3<<shift;
+			shift= shift +a3;
+
+			return l;
+		}
+
+
+
+		final public long calc5() {
+
+			if (v0<0||v1<0||v2<0||v3<0||v4<0) return -1;
+
+			long l = v0;
+			shift =a0;
+			l |= (long)v1<<shift;
+			shift +=a1;
+			l |= (long)v2<<shift;
+			shift +=a2;
+			l |= (long)v3<<shift;
+			shift +=a3;	
+			l |= (long)v4<<shift;
+			shift =shift+a4;
+
+			return l;
+		}
+
+
+		final public long calc6() {
+
+			if (v0<0||v1<0||v2<0||v3<0||v4<0||v5<0) return -1;
+
+			long l = v0;
+			shift =a0;
+			l |= (long)v1<<shift;
+			shift +=a1;
+			l |= (long)v2<<shift;
+			shift +=a2;
+			l |= (long)v3<<shift;
+			shift +=a3;	
+			l |= (long)v4<<shift;
+			shift +=a4;
+			l |= (long)v5<<shift;
+			shift =shift+a5;
+
+			return l;
+		}
+
+		final public long calc7() {
+
+			if (v0<0||v1<0||v2<0||v3<0||v4<0||v5<0||v6<0) return -1;
+
+			long l = v0;
+			 shift =a0;
+			l |= (long)v1<<shift;
+			shift +=a1;
+			l |= (long)v2<<shift;
+			shift +=a2;
+			l |= (long)v3<<shift;
+			shift +=a3;	
+			l |= (long)v4<<shift;
+			shift +=a4;
+			l |= (long)v5<<shift;
+			shift +=a5;
+			l |= (long)v6<<shift;
+			shift =shift+a6;
+
+			return l;
+		}
+
+
+		final public long calc8() {
+
+			if (v0<0||v1<0||v2<0||v3<0||v4<0||v5<0||v6<0||v7<0) return -1;
+
+			long l = v0;
+			 shift =a0;
+			l |= (long)v1<<shift;
+			shift +=a1;
+			l |= (long)v2<<shift;
+			shift +=a2;
+			l |= (long)v3<<shift;
+			shift +=a3;	
+			l |= (long)v4<<shift;
+			shift +=a4;
+			l |= (long)v5<<shift;
+			shift +=a5;
+			l |= (long)v6<<shift;
+			shift +=a6;
+			l |= (long)v7<<shift;
+			shift =shift+a7;
+
+			return l;
+		}
+
+	}
+
+	public MFO () {}
+
+
+	//	public  int size() {return count;}
+
+
+	
+
+	/**
+	 * Register an attribute class, if it not exists and add a possible value
+	 * @param type
+	 * @param type2
+	 */
+	 final public int register(String a, String v) {
+
+		HashMap<String,Integer> fs = getFeatureSet().get(a);
+		if (fs==null) {
+			fs = new HashMap<String,Integer>();
+			getFeatureSet().put(a, fs);
+			fs.put(NONE, 0);
+			getFeatureCounter().put(a, 1);
+		}
+		Integer c = getFeatureCounter().get(a);
+
+		Integer i = fs.get(v);
+		if (i==null) {
+			fs.put(v, c);
+			c++;
+			getFeatureCounter().put(a,c);
+			return c-1;
+		} else return i;
+	}
+
+	/**
+	 * Calculates the number of bits needed to encode a feature
+	 */
+	 public void calculateBits() {
+
+		int total=0;
+		for(Entry<String,Integer> e : getFeatureCounter().entrySet() ){
+			int bits =(int)Math.ceil((Math.log(e.getValue()+1)/Math.log(2)));
+			m_featureBits.put(e.getKey(), bits);
+			total+=bits;
+			//	System.out.println(" "+e.getKey()+" bits "+bits+" number "+(e.getValue()+1));
+		}
+
+		//		System.out.println("total number of needed bits "+total);
+	}
+
+
+
+	@Override
+	public  String toString() {
+
+		StringBuffer content = new StringBuffer();
+		for(Entry<String,Integer> e : getFeatureCounter().entrySet() ){
+			content.append(e.getKey()+" "+e.getValue());
+			content.append(':');
+			//		 HashMap<String,Integer> vs = getFeatureSet().get(e.getKey());
+			content.append(getFeatureBits(e.getKey()));
+
+			/*if (vs.size()<120)
+			 for(Entry<String,Integer> e2 : vs.entrySet()) {
+				 content.append(e2.getKey()+" ("+e2.getValue()+") ");
+			 }*/
+			content.append('\n');
+
+		}
+		return content.toString();
+	}
+
+
+	static final public long calcs(Data4 d,int b, long v, long l) {
+		if (l<0) return l;
+		l |= v<<d.shift;
+		d.shift +=b;
+		return l;
+	}
+
+
+	static final public short getFeatureBits(String a) {
+		return (short)m_featureBits.get(a).intValue();
+	}
+
+
+
+	/**
+	 * Get the integer place holder of the string value v of the type a
+	 * 
+	 * @param t the type
+	 * @param v the value 
+	 * @return the integer place holder of v
+	 */
+	final public int getValue(String t, String v) {
+
+		if (m_featureSets.get(t)==null) return -1;
+		Integer vi = m_featureSets.get(t).get(v);
+		if (vi==null) return -1; //stop && 
+		return vi.intValue();
+	}
+
+	/**
+	 * Static version of getValue
+	 * @see getValue
+	 */
+	static final public int getValueS(String a, String v) {
+
+		if (m_featureSets.get(a)==null) return -1;
+		Integer vi = m_featureSets.get(a).get(v);
+		if (vi==null) return -1; //stop && 
+		return vi.intValue();
+	}
+
+	public int hasValue(String a, String v) {
+
+		Integer vi = m_featureSets.get(a).get(v);
+		if (vi==null) return -1;
+		return vi.intValue();
+	}
+
+
+
+
+	final public long calc2(Data4 d) {
+
+		if (d.v0<0||d.v1<0) return -1;
+		//	if (d.v1<0||d.v2<0) return -1;
+
+		long l = d.v0;
+		short shift =d.a0;
+		l |= (long)d.v1<<shift;
+		shift +=d.a1;
+		//	l |= (long)d.v2<<shift;
+		d.shift=shift;
+
+		//d.shift=;
+		return l;
+	}
+
+
+
+	final public long calc3(Data4 d) {
+
+		if (d.v0<0||d.v1<0||d.v2<0) return -1;
+		//	if (d.v1<0||d.v2<0) return -1;
+
+		long l = d.v0;
+		short shift =d.a0;
+		l |= (long)d.v1<<shift;
+		shift +=d.a1;
+		l |= (long)d.v2<<shift;
+		d.shift=shift + d.a2;
+
+		//d.shift=;
+		return l;
+	}
+
+
+	final public long calc4(Data4 d) {
+		if (d.v0<0||d.v1<0||d.v2<0||d.v3<0) return -1;
+
+		long l = d.v0;
+		int shift =d.a0;
+		l |= (long)d.v1<<shift;
+		shift +=d.a1;
+		l |= (long)d.v2<<shift;
+		shift +=d.a2;
+		l |= (long)d.v3<<shift;
+		d.shift= shift +d.a3;
+
+		return l;
+	}
+
+
+
+	final public long calc5(Data4 d) {
+
+		if (d.v0<0||d.v1<0||d.v2<0||d.v3<0||d.v4<0) return -1;
+
+		long l = d.v0;
+		int shift =d.a0;
+		l |= (long)d.v1<<shift;
+		shift +=d.a1;
+		l |= (long)d.v2<<shift;
+		shift +=d.a2;
+		l |= (long)d.v3<<shift;
+		shift +=d.a3;	
+		l |= (long)d.v4<<shift;
+		d.shift =shift+d.a4;
+
+		return l;
+	}
+
+
+	final public long calc6(Data4 d) {
+
+		if (d.v0<0||d.v1<0||d.v2<0||d.v3<0||d.v4<0||d.v5<0) return -1;
+
+		long l = d.v0;
+		int shift =d.a0;
+		l |= (long)d.v1<<shift;
+		shift +=d.a1;
+		l |= (long)d.v2<<shift;
+		shift +=d.a2;
+		l |= (long)d.v3<<shift;
+		shift +=d.a3;	
+		l |= (long)d.v4<<shift;
+		shift +=d.a4;
+		l |= (long)d.v5<<shift;
+		d.shift =shift+d.a5;
+
+		return l;
+	}
+
+	final public long calc7(Data4 d) {
+
+		if (d.v0<0||d.v1<0||d.v2<0||d.v3<0||d.v4<0||d.v5<0||d.v6<0) return -1;
+
+		long l = d.v0;
+		int shift =d.a0;
+		l |= (long)d.v1<<shift;
+		shift +=d.a1;
+		l |= (long)d.v2<<shift;
+		shift +=d.a2;
+		l |= (long)d.v3<<shift;
+		shift +=d.a3;	
+		l |= (long)d.v4<<shift;
+		shift +=d.a4;
+		l |= (long)d.v5<<shift;
+		shift +=d.a5;
+		l |= (long)d.v6<<shift;
+		d.shift =shift+d.a6;
+
+		return l;
+	}
+
+
+	final public long calc8(Data4 d) {
+
+		if (d.v0<0||d.v1<0||d.v2<0||d.v3<0||d.v4<0||d.v5<0||d.v6<0||d.v7<0) return -1;
+
+		long l = d.v0;
+		int shift =d.a0;
+		l |= (long)d.v1<<shift;
+		shift +=d.a1;
+		l |= (long)d.v2<<shift;
+		shift +=d.a2;
+		l |= (long)d.v3<<shift;
+		shift +=d.a3;	
+		l |= (long)d.v4<<shift;
+		shift +=d.a4;
+		l |= (long)d.v5<<shift;
+		shift +=d.a5;
+		l |= (long)d.v6<<shift;
+		shift +=d.a6;
+		l |= (long)d.v7<<shift;
+		d.shift =shift+d.a7;
+
+		return l;
+	}
+
+
+
+
+
+
+
+	/** 
+	 * Maps a long to a integer value. This is very useful to save memory for sparse data long values 
+	 * @param node
+	 * @return the integer
+	 */
+	static public  int misses = 0;
+	static public  int good = 0;
+
+
+
+
+	/**
+	 * Write the data
+	 * @param dos
+	 * @throws IOException
+	 */
+	static public void writeData(DataOutputStream dos) throws IOException {
+		
+		dos.writeInt(getFeatureSet().size());
+		for(Entry<String, HashMap<String,Integer>> e : getFeatureSet().entrySet()) {
+			dos.writeUTF(e.getKey());
+			dos.writeInt(e.getValue().size());
+
+			for(Entry<String,Integer> e2 : e.getValue().entrySet()) {
+
+				if(e2.getKey()==null) DB.println("key "+e2.getKey()+" value "+e2.getValue()+" e -key "+e.getKey());
+				dos.writeUTF(e2.getKey()); 
+				dos.writeInt(e2.getValue());
+			}          
+		}
+	}
+	 public void read(DataInputStream din) throws IOException {
+
+		int size = din.readInt();
+		for(int i=0; i<size;i++) {
+			String k = din.readUTF();
+			int size2 = din.readInt();
+
+			HashMap<String,Integer> h = new HashMap<String,Integer>();
+			getFeatureSet().put(k,h);
+			for(int j = 0;j<size2;j++) {
+				h.put(din.readUTF(), din.readInt());
+			}
+			getFeatureCounter().put(k, size2);
+		}
+
+		calculateBits();
+	}
+
+
+	/** 
+	 * Clear the data
+	 */
+	static public void clearData() {
+		getFeatureSet().clear();
+		m_featureBits.clear();
+		getFeatureSet().clear();
+	}
+
+	 public HashMap<String,Integer> getFeatureCounter() {
+		return m_featureCounters;
+	}
+
+	static public HashMap<String,HashMap<String,Integer>> getFeatureSet() {
+		return m_featureSets;
+	}
+
+	static public String[] reverse(HashMap<String,Integer> v){
+		String[] set = new String[v.size()];
+		for(Entry<String,Integer> e : v.entrySet()) {
+			set[e.getValue()]=e.getKey();
+		}
+		return set;
+	}
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/mtag/Options.java b/dependencyParser/basic/mate-tools/src/is2/mtag/Options.java
new file mode 100755
index 0000000..6b9d806
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/mtag/Options.java
@@ -0,0 +1,45 @@
+package is2.mtag;
+
+import is2.util.OptionsSuper;
+
+public final class Options extends OptionsSuper {
+
+	
+	public Options (String[] args)  {
+		
+		for(int i = 0; i < args.length; i++) {
+
+			if (args[i].equals("--help")) explain();
+			
+			if (args[i].equals("-nonormalize")) {
+				normalize=false;
+			} else if (args[i].equals("-features")) {
+				features= args[i+1]; i++;			
+			} else if (args[i].equals("-hsize")) {
+				hsize= Integer.parseInt(args[i+1]); i++;			
+			} else if (args[i].equals("-len")) {
+				maxLen= Integer.parseInt(args[i+1]); i++;			
+			} else super.addOption(args, i);					
+		}
+	}
+
+	private void explain() {
+		System.out.println("Usage: ");
+		System.out.println("java -cp anna.jar is2.mtag.Tagger [Options]");
+		System.out.println();
+		System.out.println("Example: ");
+		System.out.println(" java -cp mate.jar is2.mtag.Tagger -model eps3.model -train corpora/conll08st/train/train.closed -test corpora/conll08st/devel/devel.closed  -out b3.test -eval corpora/conll08st/devel/devel.closed  -count 2000 -i 6");
+		System.out.println("");
+		System.out.println("Options:");
+		System.out.println("");
+		System.out.println(" -train  <file>    the corpus a model is trained on; default "+this.trainfile);
+		System.out.println(" -test   <file>    the input corpus for testing; default "+this.testfile);
+		System.out.println(" -out    <file>    the output corpus (result) of a test run; default "+this.outfile);
+		System.out.println(" -model  <file>    the parsing model for traing the model is stored in the files");
+		System.out.println("                   and for parsing the model is load from this file; default "+this.modelName);
+		System.out.println(" -i      <number>  the number of training iterations; good numbers are 10 for smaller corpora and 6 for bigger; default "+this.numIters);
+		System.out.println(" -count  <number>  the n first sentences of the corpus are take for the training default "+this.count);
+		
+		System.exit(0);
+	}
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/mtag/Pipe.java b/dependencyParser/basic/mate-tools/src/is2/mtag/Pipe.java
new file mode 100755
index 0000000..b25b953
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/mtag/Pipe.java
@@ -0,0 +1,508 @@
+package is2.mtag;
+
+
+import is2.data.Cluster;
+import is2.data.F2SF;
+import is2.data.Instances;
+import is2.data.InstancesTagger;
+import is2.data.Long2Int;
+import is2.data.Long2IntInterface;
+import is2.data.ParametersFloat;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.tools.IPipe;
+import is2.util.OptionsSuper;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map.Entry;
+
+
+final public class Pipe extends PipeGen implements IPipe {
+
+	public  static int _CEND;
+
+
+	private static final String STWRD = "STWRD",STPOS = "STPOS",END = "END",STR = "STR";
+
+	public String[] types;
+
+	Cluster cl;
+
+	final public MFO mf =new MFO();
+	public Long2IntInterface li;
+
+
+
+	final MFO.Data4 d1 = new MFO.Data4(),d2 = new MFO.Data4(),d3 = new MFO.Data4(),dw = new MFO.Data4();
+	final MFO.Data4 dwp = new MFO.Data4(),dp = new MFO.Data4();
+
+
+	private OptionsSuper options;
+	private int _ewrd;
+	static private int _mid, _strp,_endp;
+
+	public Pipe (Options options, Long2Int long2Int) throws IOException {
+		this.options = options;
+
+		li =long2Int;
+	}
+
+	public Pipe (OptionsSuper options) {
+		this.options = options;
+	}
+
+
+	public HashMap<Integer,Integer> form2morph = new HashMap<Integer, Integer> ();
+
+	
+	public Instances createInstances(String file) {
+
+		CONLLReader09 depReader = new CONLLReader09(CONLLReader09.NO_NORMALIZE);
+		
+		depReader.startReading(file);
+		mf.register(POS,"<root-POS>");
+
+		mf.register(FEAT, CONLLReader09.NO_TYPE);
+		mf.register(FEAT, "");
+		
+		InstancesTagger is = new InstancesTagger();
+
+		System.out.println("Registering feature parts ");
+
+		HashMap<String,HashSet<String>> op2form = new HashMap<String, HashSet<String>> ();
+		HashMap<String,Integer> freq = new HashMap<String, Integer> ();
+		
+		
+		int ic=0;
+		while(true) {
+			SentenceData09 instance1 = depReader.getNext();
+			if (instance1== null) break;
+			ic++;
+
+
+			String[] w = instance1.forms;
+			for(int i1 = 0; i1 < w.length; i1++) mf.register(WORD,  w[i1]);
+			for(int i1 = 0; i1 < w.length; i1++) registerChars(CHAR,  w[i1]);
+			for(int i1 = 0; i1 < w.length; i1++) {
+				mf.register(WORD,  w[i1].toLowerCase());
+				Integer f = freq.get(w[i1].toLowerCase());
+				if (f==null) freq.put(w[i1].toLowerCase(), 1);
+				else freq.put(w[i1].toLowerCase(), f+1);
+
+				HashSet<String> forms = op2form.get(w[i1].toLowerCase());
+				if (forms==null) {
+					forms = new HashSet<String>();
+					op2form.put(w[i1].toLowerCase(), forms);
+				}
+				forms.add(instance1.ofeats[i1]==null?"_":instance1.ofeats[i1]);
+			}
+			for(int i1 = 0; i1 < w.length; i1++) registerChars(CHAR,  w[i1].toLowerCase());
+
+			w = instance1.plemmas;
+			for(int i1 = 0; i1 < w.length; i1++) mf.register(WORD,  w[i1]);			
+			for(int i1 = 0; i1 < w.length; i1++) registerChars(CHAR,  w[i1]);
+
+			w = instance1.ppos;
+			for(int i1 = 0; i1 < w.length; i1++) mf.register(POS,  w[i1]);
+
+			w = instance1.gpos;
+			for(int i1 = 0; i1 < w.length; i1++) mf.register(POS,  w[i1]);
+
+			w = instance1.ofeats;
+			for(int i1 = 0; i1 < w.length; i1++) if (w[i1]!=null) mf.register(FEAT,  w[i1]);
+ 
+		//	w = instance1.pfeats;
+			//for(int i1 = 0; i1 < w.length; i1++) if (w[i1]!=null) mf.register(FEAT,  w[i1]);
+		}
+
+		
+		for(Entry<String,HashSet<String>> e : op2form.entrySet()) {
+				if (e.getValue().size()==1 &&freq.get(e.getKey())>10) {
+				//	System.out.println("found map "+e.getKey()+" "+e.getValue()+" "+freq.get(e.getKey()));
+					form2morph.put(mf.getValue(Pipe.WORD, e.getKey()), mf.getValue(FEAT, (String)e.getValue().toArray()[0]));
+				}
+ 		}
+		
+		initFeatures();
+
+		mf.calculateBits();
+		initValues();
+
+		System.out.println(""+mf.toString());
+
+		depReader.startReading(file);
+
+		int num1 = 0;
+		long start1 = System.currentTimeMillis();
+		
+		System.out.print("Creating Features: ");
+		is.init(ic, mf) ;
+		int del=0;
+
+		while(true) {
+			if (num1 % 100 ==0) {del = outValue(num1, del);}
+			SentenceData09 instance1 = depReader.getNext(is);
+			if (instance1== null) break;
+
+			if (num1>options.count) break;
+
+			num1++;
+		}
+		long end1 = System.currentTimeMillis();
+		System.gc();
+		long mem2 = Runtime.getRuntime().totalMemory() -  Runtime.getRuntime().freeMemory();
+		System.out.print("  time "+(end1-start1)+" mem "+(mem2/1024)+" kb");
+
+		types = new String[mf.getFeatureCounter().get(FEAT)];
+
+		for(Entry<String,Integer> e : mf.getFeatureSet().get(FEAT).entrySet()) {
+			types[e.getValue()] = e.getKey();
+		}
+
+		
+		if (options.clusterFile==null)cl = new Cluster();
+		else cl=  new Cluster(options.clusterFile, mf,6);
+
+
+		System.out.println("Num Features: " + types.length);
+
+
+
+		depReader.startReading(file);
+
+
+
+		int num11=0;
+
+		while(true) {
+
+			SentenceData09 instance = depReader.getNext();
+			if (instance==null) break;
+	
+			is.fillChars(instance, num11, _CEND);
+
+
+			if (num11>options.count) break;
+
+			num11++;
+		}
+
+		return is;//.toNativeArray();
+
+	}
+
+	private void registerChars(String type, String word) {
+		for(int i=0;i<word.length();i++) 	mf.register(type, Character.toString(word.charAt(i)));      
+	}
+
+
+
+	public void initValues() {
+		s_feat = mf.getFeatureBits(FEAT);
+		s_word = mf.getFeatureBits(WORD);
+		s_type = mf.getFeatureBits(TYPE);
+		s_char = mf.getFeatureBits(CHAR);
+		s_pos =mf.getFeatureBits(POS);
+	//	dl1.a[0] = s_type; dl1.a[1] = s_pos;
+	//	for (int k = 2; k < 7; k++) dl1.a[k] = s_pos;
+
+		d1.a0 = s_type; d1.a1 = s_feat; d1.a2= s_word;
+		d2.a0 = s_type; d2.a1 = s_feat; d2.a2= s_feat; d2.a3= s_feat; d2.a4= s_feat; d2.a5= s_feat; d2.a6= s_feat;
+		d3.a0 = s_type; d3.a1 = s_feat; d3.a2=  s_char; d3.a3= s_char; d3.a4= s_char; d3.a5=  s_char; d3.a6=  s_char; d3.a7= s_char;
+		dp.a0 = s_type; dp.a1 = s_feat; dp.a2=  s_pos; dp.a3= s_pos; dp.a4= s_feat;// dp.a5=  s_char; dp.a6=  s_char; dp.a7= s_char;
+		dw.a0 = s_type; dw.a1 = s_feat;dw.a2=  s_word; dw.a3= s_word; dw.a4= s_word; dw.a5=  s_word; dw.a6=  s_word; dw.a7= s_word;
+		dwp.a0 = s_type; dwp.a1 = s_feat;dwp.a2= s_word ; dwp.a3= s_feat; dwp.a4= s_word; 
+
+	}
+
+	public static short s_feat,s_word,s_type,s_dir,s_dist,s_char,s_pos;
+
+
+
+	/**
+	 * Initialize the features types.
+	 */
+	public void initFeatures() {
+
+		for(int t=0;t<62;t++) {
+			mf.register(TYPE,"F"+t);			
+		}
+		
+
+//		_mid = mf.register(POS, MID);
+		_strp = mf.register(POS, STR);
+		_endp= mf.register(POS, END);
+
+		mf.register(WORD, STR);
+		 _ewrd = mf.register(WORD, END);
+
+
+		_CEND = mf.register(CHAR, END);
+
+
+
+
+		// optional features
+		mf.register(WORD,STWRD);
+		mf.register(POS,STPOS);
+
+
+	}
+
+
+	final public void addCF(InstancesTagger is, int ic, String fs,int i, int pfeat[],short ppos[], int[] forms, int[] lemmas, long[] vs) {
+
+		int c0= is.chars[ic][i][0], c1=is.chars[ic][i][1], c2=is.chars[ic][i][2], c3=is.chars[ic][i][3], c4=is.chars[ic][i][4],c5=is.chars[ic][i][5];
+		int e0 =is.chars[ic][i][6], e1 =is.chars[ic][i][7],e2 =is.chars[ic][i][8],e3 =is.chars[ic][i][9],e4 =is.chars[ic][i][10];
+
+		int f=1,n=0;
+		short upper =0, number = 1;
+		for(int k1=0;k1<fs.length();k1++){
+			char c = fs.charAt(k1);
+			if (Character.isUpperCase(c)) {
+				if (k1==0) upper=1;
+				else {
+					// first char + another
+					if (upper==1) upper=3;
+					// another uppercase in the word
+					else if (upper==0) upper=2;
+				}
+			}
+
+			if (Character.isDigit(c) && k1==0) number =2 ;
+			else if (Character.isDigit(c) && number==1) number = 3;
+		}
+
+		int form = forms[i];
+
+		int len = forms.length;		
+		long l;
+		d1.v0 = f++; d1.v2=form; l=mf.calc3(d1); vs[n++]=mf.calc3(d1);
+
+		d1.v0 = f++; d1.v2=is.formlc[ic][i]; vs[n++]=mf.calc3(d1);
+
+		d3.v2=c0; d3.v3=c1; d3.v4=c2; d3.v5=c3; d3.v6=c4;
+		d3.v0=f++; vs[n++]=mf.calc3(d3);
+		d3.v0=f++; vs[n++]=mf.calc4(d3); 
+		d3.v0=f++; vs[n++]=mf.calc5(d3); 
+		d3.v0=f++; vs[n++]=mf.calc6(d3);
+		d3.v0=f++; vs[n++]=mf.calc7(d3);
+
+		if (form!=-1) {
+			d3.v2=c2; d3.v3=c3; d3.v4=c4; d3.v5=c5; d3.v6=cl.getLP(form);
+			d3.v0=f; vs[n++]=mf.calc6(d3); d3.v0=f+1; vs[n++]=mf.calc7(d3);
+		} 
+		f+=2;
+
+		if (form>0) {
+			d3.v0=f; d3.v5=cl.getLP(form); vs[n++]=mf.calc6(d3);
+			d3.v0=f+1; d3.v4=cl.getLP(form); vs[n++]=mf.calc5(d3);
+			d3.v0=f+2; d3.v3=cl.getLP(form); vs[n++]=mf.calc4(d3);
+		}
+		f+=3;
+
+		d3.v2=e0; d3.v3=e1; d3.v4=e2; d3.v5=e3; d3.v6=e4;
+		d3.v0 =f++; vs[n++]=mf.calc3(d3);	
+		d3.v0 =f++; vs[n++]=l=mf.calc4(d3); vs[n++]=d3.calcs(3, upper, l); 
+		d3.v0 =f++; vs[n++]=l=mf.calc5(d3); vs[n++]=d3.calcs(3, upper, l); 
+		d3.v0 =f++; vs[n++]=l=mf.calc6(d3); vs[n++]=d3.calcs(3, upper, l); 		
+		d3.v0 =f++; vs[n++]=l=mf.calc7(d3); vs[n++]=d3.calcs(3, upper, l); 
+
+		if (form>0) {
+			d3.v0=f; d3.v5=cl.getLP(form); vs[n++]=mf.calc6(d3);
+			d3.v0=f+1; d3.v4=cl.getLP(form); vs[n++]=mf.calc5(d3);
+			d3.v0=f+2; d3.v3=cl.getLP(form); vs[n++]=mf.calc4(d3);
+		}
+		f+=3;
+
+
+		dw.v0=f++; dw.v2=i+1<len?forms[i+1]:_ewrd;dw.v3= forms[i];vs[n++]=mf.calc4(dw);
+		
+		if (len>i+1) {
+
+			dw.v0=f; dw.v2= forms[i+1]; vs[n++]=mf.calc3(dw);
+			d3.v0=f+1; d3.v2 =is.chars[ic][i+1][0];vs[n++]=mf.calc3(d3);
+			d3.v0=f+2; d3.v2 =is.chars[ic][i+1][6];vs[n++]=mf.calc3(d3);
+
+			d3.v2=e0; d3.v3=e1;  
+
+			d3.v0 =f+3; d3.v4 =is.chars[ic][i+1][0];vs[n++]=mf.calc5(d3);
+			d3.v0 =f+4; d3.v4 =is.chars[ic][i+1][6];vs[n++]=mf.calc5(d3);
+
+			
+			
+			if (is.chars[ic][i+1][11]>1 ) { //  instance.forms[i+1].length()
+
+				d3.v0=f+5; d3.v2=is.chars[ic][i+1][0]; d3.v3=is.chars[ic][i+1][1]; vs[n++]=mf.calc4(d3);
+				d3.v0=f+6; d3.v2=is.chars[ic][i+1][6];	d3.v3=is.chars[ic][i+1][7]; vs[n++]=mf.calc4(d3);
+
+				d3.v2=e0; d3.v3=e1;  
+
+				d3.v0=f+7; d3.v4 = is.chars[ic][i+1][0]; d3.v5 =is.chars[ic][i+1][1]; vs[n++]=mf.calc6(d3);
+				d3.v0=f+8; d3.v4 = is.chars[ic][i+1][6]; d3.v5=is.chars[ic][i+1][7]; vs[n++]=mf.calc6(d3);				
+
+				if (forms[i+1]>0) {
+					d3.v0=f+9; d3.v2=is.chars[ic][i+1][0]; d3.v3=is.chars[ic][i+1][1]; d3.v4 =cl.getLP(forms[i+1]); vs[n++]=mf.calc5(d3);
+					d3.v0=f+10; d3.v2=is.chars[ic][i+1][6];	d3.v3=is.chars[ic][i+1][7]; d3.v4 =cl.getLP(forms[i+1]); vs[n++]=mf.calc5(d3);
+				} 
+			} 
+			
+			if (forms[i+1]>0) {
+				dw.v0=f+11; dw.v2= cl.getLP(forms[i+1]); dw.v3= forms[i];vs[n++]=mf.calc4(dw);
+			} 
+			
+			if (len>i+2) {
+				dw.v0=f+12; dw.v2= forms[i+2]; dw.v3 = forms[i+1];vs[n++]=mf.calc4(dw);vs[n++]=mf.calc3(dw);
+//				d2.v0=f+13; d2.v2=pfeat[i+1]; d2.v3=  pfeat[i+2];	vs[n++]=mf.calc4(d2);
+			//	dp.v0= f+14; dp.v2=ppos[i+1]; dp.v3=ppos[i+2]; vs[n++]=mf.calc4(dp);
+
+			} 
+
+			if (len>i+3) {
+				dw.v0=f+14; dw.v2= forms[i+3]; dw.v3 = forms[i+2]; vs[n++]=mf.calc4(dw); vs[n++]=mf.calc3(dw);
+	
+			} 
+		} 
+		f+=16;
+
+		// length
+		d2.v0=f++; d2.v2=is.chars[ic][i][11];vs[n++]=mf.calc3(d2);
+
+
+		// contains a number
+		d2.v0=f++; d2.v2=number;	vs[n++]=mf.calc3(d2);
+		d1.v0=f++;  d1.v2=lemmas[i];	vs[n++]=mf.calc3(d1);
+
+		if (i!=0 &&len>i+1) {
+			dw.v0=f; dw.v2=lemmas[i-1];dw.v3=lemmas[i+1];vs[n++]=mf.calc4(dw);                      
+			d2.v0=f+1; d2.v2=pfeat[i-1]; d2.v3=pfeat[i+1];vs[n++]=mf.calc4(d2);                      
+		} 
+		f+=2;
+
+		d2.v0= f++; d2.v2=i>=1? pfeat[i-1]:_strp; vs[n++]=mf.calc3(d2);
+		dp.v0= f++; dp.v2=ppos[i]; vs[n++]=mf.calc3(dp);
+
+		if (i>0) {
+			dw.v0 = f++; dw.v2 =i>=1?  forms[i-1]:_strp; vs[n++]=mf.calc3(dw);
+			dw.v0 = f++; dw.v2 = i>=1? lemmas[i-1]:_strp; vs[n++]=mf.calc3(dw);			
+					
+			if (len>i+1) {
+//				d2.v0=f;	d2.v2= pfeat[i-1];d2.v3= pfeat[i+1]; vs[n++]=mf.calc4(d2);
+		//		dp.v0= f+1; dp.v2=ppos[i-1]; dp.v3=ppos[i+1]; vs[n++]=mf.calc4(dp);
+
+			}
+			f++;
+			dp.v0= f++; dp.v2=ppos[i]; dp.v3=ppos[i-1]; vs[n++]=mf.calc4(dp);
+					
+			if (i>1) {
+				d2.v0=f++;	d2.v2=i<2?_strp:  pfeat[i-2]; vs[n++]=mf.calc3(d2);
+				d2.v0=f++;	d2.v2= pfeat[i-1]; d2.v3= pfeat[i-2]; vs[n++]=mf.calc4(d2);
+				
+				dw.v0=f++;	dw.v2= forms[i-2]; vs[n++]=mf.calc3(dw);		
+				dwp.v0=f++;   dwp.v2 = forms[i-1]; dwp.v3 =  pfeat[i-2];vs[n++]=mf.calc4(dwp);
+				dwp.v0=f++;   dwp.v2 = forms[i-2]; dwp.v3 =  pfeat[i-1];vs[n++]=mf.calc4(dwp);
+
+				if (i>2) {
+					d2.v0=f++;	d2.v2=pfeat[i-3]; vs[n++]=mf.calc3(d2);
+					d2.v0=f++;	d2.v2=pfeat[i-2]; d2.v3= pfeat[i-3]; vs[n++]=mf.calc4(d2);
+					dw.v0=f++;   dw.v2 = forms[i-3]; dw.v3 = forms[i-2]; vs[n++]=mf.calc4(dw);
+		//			dp.v0= f++; dp.v2=ppos[i-3]; dp.v3=ppos[i-2]; vs[n++]=mf.calc4(dp);
+				}
+			}
+		}
+		vs[n] = Integer.MIN_VALUE;
+	}
+
+
+	
+
+	
+
+
+	public int fillFeatureVectorsOne(ParametersFloat params, int w1, String form, Instances is, int n, int[] features, long[] vs) {
+		double best = -1;
+		int bestType=-1;
+
+		F2SF f = new F2SF(params.parameters);
+			//is.gfeats[n]
+		addCF((InstancesTagger)is, n, form, w1, features,is.pposs[n], is.forms[n], is.plemmas[n], vs); 
+		
+		for(int t = 0; t < types.length; t++) {
+
+			f.clear();
+			int p = t<<Pipe.s_type;
+			for(int k=vs.length-1;k>=0;k--) if (vs[k]>=0) f.add(li.l2i(vs[k]+p));
+			if (f.score >best) {
+				bestType=t;
+				best =f.score;
+			}
+
+		}	
+		return bestType;
+
+	}
+
+	
+	
+		//static ArrayList<T> todo = new ArrayList<T>();
+	static SentenceData09 instance;
+	
+	
+	public static int _FC =200;
+	
+	
+	/**
+	 * Write the lemma that are not mapped by operations
+	 * @param dos
+	 */
+	public void writeMap(DataOutputStream dos) {
+
+		try {
+			dos.writeInt(this.form2morph.size());
+			for(Entry<Integer, Integer> e : form2morph.entrySet()) {
+				dos.writeInt(e.getKey());
+				dos.writeInt(e.getValue());
+			}
+		} catch (IOException e1) {
+			e1.printStackTrace();
+		}
+	}
+
+
+
+	/**
+	 * Read the form-lemma mapping not read by operations
+	 * @param dis
+	 */
+	public void readMap(DataInputStream dis) {
+		try {
+			int size = dis.readInt();
+			for(int i =0; i<size;i++) {
+				form2morph.put(dis.readInt(), dis.readInt());
+			}
+		} catch (IOException e1) {
+			e1.printStackTrace();
+		}
+	}
+
+	
+	/* (non-Javadoc)
+	 * @see is2.tools.IPipe#write(java.io.DataOutputStream)
+	 */
+	@Override
+	public void write(DataOutputStream dos) {
+		try {
+			cl.write(dos);
+			writeMap(dos);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/mtag/Tagger.java b/dependencyParser/basic/mate-tools/src/is2/mtag/Tagger.java
new file mode 100644
index 0000000..da31a5b
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/mtag/Tagger.java
@@ -0,0 +1,371 @@
+package is2.mtag;
+
+
+import is2.data.Cluster;
+import is2.data.FV;
+import is2.data.Instances;
+import is2.data.InstancesTagger;
+import is2.data.Long2Int;
+import is2.data.ParametersFloat;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.io.CONLLWriter09;
+import is2.tools.IPipe;
+import is2.tools.Train;
+import is2.tools.Tool;
+import is2.util.DB;
+import is2.util.OptionsSuper;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.Map.Entry;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+import java.util.zip.ZipOutputStream;
+
+
+public class Tagger implements Tool, Train {
+
+	ExtractorM pipe;
+	ParametersFloat params;
+
+
+	/**
+	 * Initialize 
+	 * @param options
+	 */
+	public Tagger (Options options) {
+			
+		// load the model
+		try {
+			readModel(options);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+				
+	}
+	
+	/**
+	 * @param string
+	 * @throws IOException 
+	 */
+	public Tagger(String modelFileName) {
+		this(new Options(new String[] {"-model",modelFileName}));
+	}
+
+	public Tagger() {	}
+
+	public static void main (String[] args) throws FileNotFoundException, Exception
+	{
+
+		Options options = new Options(args);
+		
+		Tagger tagger = new Tagger();
+		
+		if (options.train) {
+
+			Long2Int li = new Long2Int(options.hsize);
+			tagger.pipe =  new ExtractorM (options,li);
+	    	InstancesTagger is = (InstancesTagger)tagger.pipe.createInstances(options.trainfile);
+			ParametersFloat params = new ParametersFloat(li.size());
+			
+			tagger.train(options, tagger.pipe,params,is);
+			tagger.writeModel(options, tagger.pipe, params);
+		}
+
+		if (options.test) {
+			
+			tagger.readModel(options);
+			tagger.out(options,tagger.pipe, tagger.params);
+		}
+
+		if (options.eval) {
+			
+			System.out.println("\nEvaluate:");
+			Evaluator.evaluate(options.goldfile, options.outfile,options.format);
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see is2.mtag2.Learn#writeModel(is2.mtag2.Options, is2.mtag2.Pipe, is2.data.ParametersFloat)
+	 */
+	public void writeModel(OptionsSuper options, IPipe pipe,ParametersFloat params)  {
+		
+		try {
+		ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(options.modelName)));
+		zos.putNextEntry(new ZipEntry("data")); 
+		DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(zos));
+   
+		MFO.writeData(dos);
+
+		MFO.clearData();
+
+		DB.println("number of parameters "+params.parameters.length);
+		dos.flush();
+		params.write(dos);
+		pipe.write(dos);
+		dos.flush();
+		dos.close();
+		} catch (Exception e){
+			e.printStackTrace();
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see is2.mtag2.Learn#readModel(is2.mtag2.Options)
+	 */
+	public void readModel(OptionsSuper options) {
+		
+		try {
+		pipe = new ExtractorM(options);
+		params = new ParametersFloat(0);
+
+		// load the model
+		ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(options.modelName)));
+		zis.getNextEntry();
+		DataInputStream dis = new DataInputStream(new BufferedInputStream(zis));
+		pipe.mf.read(dis);
+		pipe.initValues();
+		pipe.initFeatures();
+		
+		params.read(dis);
+		pipe.li = new Long2Int(params.parameters.length);
+		pipe.cl = new Cluster(dis);
+		pipe.readMap(dis);
+		dis.close();
+
+		this.pipe.types = new String[pipe.mf.getFeatureCounter().get(ExtractorM.FFEATS)];
+		for(Entry<String,Integer> e :pipe.mf.getFeatureSet().get(ExtractorM.FFEATS).entrySet()) 
+			this.pipe.types[e.getValue()] = e.getKey();
+
+  
+		DB.println("Loading data finished. "); 
+
+		DB.println("number of parameter "+params.parameters.length);		
+		DB.println("number of classes   "+this.pipe.types.length);		
+		} catch(Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see is2.mtag2.Learn#train(is2.mtag2.Options, is2.mtag2.Pipe, is2.data.ParametersFloat, is2.data.InstancesTagger)
+	 */
+	public void train(OptionsSuper options, IPipe pipe, ParametersFloat params, Instances is)  {
+
+		int i = 0;
+		int del=0; 
+		
+		String[] wds = this.pipe.mf.reverse(this.pipe.mf.getFeatureSet().get(ExtractorM.WORD));
+		int numInstances = is.size();
+
+		float upd = (options.numIters*numInstances + 1);
+
+		
+		for(i = 0; i < options.numIters; i++) {
+
+			long start = System.currentTimeMillis();
+		
+					
+			long last= System.currentTimeMillis();
+			
+			FV pred = new FV(), gold = new FV();
+			int correct =0,count=0;
+			
+			for(int n = 0; n < numInstances; n++) {
+
+				upd--;
+
+				if((n+1) % 500 == 0) del= PipeGen.outValueErr(n+1, (count-correct),(float)correct/(float)count,del,last,upd);
+				
+				int length = is.length(n);
+
+				int feats[] = new int[length];
+				long[] vs = new long[ExtractorM._FC]; 
+					
+				
+				for(int w1 = 0; w1 < length; w1++) {
+						
+
+					count++;
+
+					if (this.pipe.form2morph.get(is.forms[n][w1])!=null){
+						correct++;
+						continue;
+					}
+					
+					int bestType = this.pipe.fillFeatureVectorsOne(params, w1, wds[is.forms[n][w1]],is, n, is.gfeats[n],vs);
+					feats[w1]=bestType;
+
+					
+					if (bestType == is.gfeats[n][w1] ) {
+						correct++;
+						continue;  
+					}
+
+					pred.clear();
+					int p = bestType << ExtractorM.s_type;
+				//	System.out.println("test type "+bestType+" ex type "+ExtractorM.s_type);
+					for(int k=0;k<vs.length;k++) {
+						if (vs[k]==Integer.MIN_VALUE) break;
+						if (vs[k]>=0) pred.add(this.pipe.li.l2i(vs[k]+p));
+					}
+					
+					gold.clear();
+					p = is.gfeats[n][w1] << ExtractorM.s_type;
+					for(int k=0;k<vs.length;k++) {
+						if (vs[k]==Integer.MIN_VALUE) break;
+						if (vs[k]>=0) gold.add(this.pipe.li.l2i(vs[k]+p));
+					}
+					params.update(pred,gold, (float)upd, 1.0f);
+				}
+
+			}
+
+			long end = System.currentTimeMillis();
+			String info = "time "+(end-start);
+			del= PipeGen.outValueErr(numInstances, (count-correct),(float)correct/(float)count,del,last,0,info);
+	
+			System.out.println();			
+		}
+
+		params.average(i*is.size());
+
+	}
+
+	
+	public void out (OptionsSuper options, IPipe pipe, ParametersFloat params)  {
+
+		
+		try {
+		long start = System.currentTimeMillis();
+
+		CONLLReader09 depReader = new CONLLReader09(options.testfile, options.formatTask);
+		CONLLWriter09 depWriter = new CONLLWriter09(options.outfile, options.formatTask);
+
+		depReader.normalizeOn=false;
+
+		System.out.print("Processing Sentence: ");
+		pipe.initValues();
+		
+		int cnt = 0;
+		int del=0;
+		while(true) {
+
+			InstancesTagger is = new InstancesTagger();
+			is.init(1, this.pipe.mf);
+			cnt++;
+
+			SentenceData09 instance = depReader.getNext(is);
+			if (instance == null || instance.forms == null)	 break;
+			is.fillChars(instance, 0, ExtractorM._CEND);
+
+			instance = exec(instance, this.pipe, params,(InstancesTagger)is);
+						
+			SentenceData09 i09 = new SentenceData09(instance);
+			i09.createSemantic(instance);
+		
+			if (options.overwritegold)  i09.ofeats = i09.pfeats;
+			
+			depWriter.write(i09);
+			
+			if (cnt%100==0) del=PipeGen.outValue(cnt, del);
+
+		}
+		depWriter.finishWriting();
+
+		del=PipeGen.outValue(cnt, del);
+		
+		long end = System.currentTimeMillis();
+		System.out.println(PipeGen.getSecondsPerInstnace(cnt,(end-start)));
+		System.out.println(PipeGen.getUsedTime((end-start)));
+		} catch(Exception e){
+			e.printStackTrace();
+		}
+	}
+	
+	
+	private SentenceData09 exec(SentenceData09 instance, ExtractorM pipe,  ParametersFloat params, InstancesTagger is) {
+		
+		int length = instance.ppos.length;
+		
+		short[] feats = new short[instance.gpos.length];
+		
+		long vs[] = new long[ExtractorM._FC];
+
+		String[] forms = instance.forms;
+
+		instance.pfeats = new String[instance.gpos.length];
+
+		
+		for(int j = 0; j < length; j++) {
+			if (pipe.form2morph.get(is.forms[0][j])!=null) {
+				feats[j] = (short)pipe.form2morph.get(is.forms[0][j]).intValue();
+				instance.pfeats[j] = this.pipe.types[feats[j]];
+			} else {
+
+				int bestType = pipe.fillFeatureVectorsOne(params,j, forms[j], is, 0,feats,vs); 
+				feats[j] =  (short)bestType;
+				instance.pfeats[j]= this.pipe.types[bestType];
+			}
+		}
+		for(int j = 0; j < length; j++) {
+			if (pipe.form2morph.get(is.forms[0][j])!=null) {
+				feats[j] =(short)pipe.form2morph.get(is.forms[0][j]).intValue();
+				instance.pfeats[j] = this.pipe.types[feats[j]];
+			} else {
+
+				int bestType = pipe.fillFeatureVectorsOne(params,j, forms[j], is, 0,feats,vs); 
+				feats[j] =  (short)bestType;
+				instance.pfeats[j]= this.pipe.types[bestType];
+			}
+		}
+		return instance;
+	}
+	
+	
+
+	/* (non-Javadoc)
+	 * @see is2.tools.Tool#apply(is2.data.SentenceData09)
+	 */
+	@Override
+	public SentenceData09 apply(SentenceData09 snt)   {
+		
+		try {			
+			SentenceData09 it = new SentenceData09();
+			it.createWithRoot(snt);
+			
+			InstancesTagger is = new InstancesTagger();
+			is.init(1, pipe.mf);
+			is.createInstance09(it.forms.length);
+			
+			String[] forms = it.forms;
+		
+			
+			int length = forms.length;
+			
+			//	is.setForm(0, 0, CONLLReader09.ROOT);
+			for(int i=0;i<length;i++) is.setForm(0, i, forms[i]);
+			for(int i=0;i<length;i++) is.setLemma(0, i, it.plemmas[i]);
+			for(int i=0;i<length;i++) is.setPPoss(0, i, it.ppos[i]);
+			
+			is.fillChars(it, 0, ExtractorM._CEND);
+
+			exec(it,pipe,params,is);
+			SentenceData09 i09 = new SentenceData09(it);
+			i09.createSemantic(it);
+			return i09;
+		} catch(Exception e) {
+			e.printStackTrace();
+		}
+
+		 return null;
+	}
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/parser/Closed.java b/dependencyParser/basic/mate-tools/src/is2/parser/Closed.java
new file mode 100755
index 0000000..ed61657
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parser/Closed.java
@@ -0,0 +1,32 @@
+package is2.parser;
+
+import is2.data.Parse;
+
+
+final public class Closed  {
+
+	public float p;
+//	short b,e,m;
+	byte dir;
+	
+	Closed d;
+	Open u;
+
+	public Closed(short s, short t, int m, int dir,Open u, Closed d, float score) {
+	//	this.b = s;
+	//	this.e = t;
+	//	this.m = (short)m;
+		this.dir = (byte)dir;
+		this.u=u;
+		this.d =d;
+		p=score;
+	}
+
+
+	public void create(Parse parse) {
+		if (u != null) u.create(parse);
+		if (d != null) d.create(parse);
+	}
+}
+
+
diff --git a/dependencyParser/basic/mate-tools/src/is2/parser/D5.java b/dependencyParser/basic/mate-tools/src/is2/parser/D5.java
new file mode 100644
index 0000000..58adc0a
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parser/D5.java
@@ -0,0 +1,254 @@
+/**
+ * 
+ */
+package is2.parser;
+
+import is2.data.DX;
+
+import is2.data.IFV;
+import is2.data.Long2IntInterface;
+
+/**
+ * @author Dr. Bernd Bohnet, 30.10.2010
+ * 
+ * 
+ */
+final public class D5 extends DX {
+
+
+
+
+	public long shift;
+	private long h;
+
+
+
+
+	/* (non-Javadoc)
+	 * @see is2.parser52L.DX#cz2()
+	 */
+	final public void cz2() {
+
+		if (v0<0||v1<0) {
+			shift=0;
+			h=-1;
+			return ;
+		}
+
+		h = v0 | v1<<(shift=a0);
+		shift +=a1;
+
+	}
+
+
+
+	/* (non-Javadoc)
+	 * @see is2.parser52L.DX#cz3()
+	 */
+	final public void cz3() {
+
+		if (v0<0||v1<0||v2<0) {
+			shift=0;
+			h=-1;
+			return ;
+
+		}
+
+		h = v0 | v1<<(shift=a0) | v2<<(shift +=a1);
+		shift= shift + a2;
+
+	}
+
+
+	/* (non-Javadoc)
+	 * @see is2.parser52L.DX#cz4()
+	 */
+	final public void cz4() {
+		if (v0<0||v1<0||v2<0||v3<0) {
+			shift=0;
+			h=-1;
+			return ;
+		}
+
+		h = v0 | v1<<(shift=a0) | v2<<(shift +=a1) | v3<<(shift +=a2);
+		shift= shift +a3;
+
+	}
+
+
+
+	/* (non-Javadoc)
+	 * @see is2.parser52L.DX#cz5()
+	 */
+	final public void cz5() {
+
+		if (v0<0||v1<0||v2<0||v3<0||v4<0) {
+			shift=0;
+			h=-1;
+			return ;
+		}
+
+		h = v0 | v1<<(shift=a0) | v2<<(shift +=a1) | v3<<(shift +=a2) | v4<<(shift +=a3);
+		shift =shift+a4;
+
+
+	}
+
+
+	/* (non-Javadoc)
+	 * @see is2.parser52L.DX#cz6()
+	 */
+	final public void cz6() {
+
+		if (v0<0||v1<0||v2<0||v3<0||v4<0||v5<0) {
+			shift=0;
+			h=-1;
+			return ;
+		}
+
+		h = v0 | v1<<(shift=a0) | v2<<(shift +=a1) | v3<<(shift +=a2) | v4<<(shift +=a3) | v5<<(shift +=a4);
+		shift =shift+a5;
+
+	}
+
+	/* (non-Javadoc)
+	 * @see is2.parser52L.DX#cz7()
+	 */
+	final public void cz7() {
+
+		if (v0<0||v1<0||v2<0||v3<0||v4<0||v5<0||v6<0) {
+			shift=0;
+			h=-1;
+			return ;
+		}
+
+		h = v0 | v1<<(shift=a0) | v2<<(shift +=a1) | v3<<(shift +=a2) | v4<<(shift +=a3) | v5<<(shift +=a4) | v6<<(shift +=a5);
+		shift =shift+a6;
+
+	}
+
+
+	/* (non-Javadoc)
+	 * @see is2.parser52L.DX#cz8()
+	 */
+	final public void cz8() {
+
+		if (v0<0||v1<0||v2<0||v3<0||v4<0||v5<0||v6<0||v7<0) {
+			h=-1;
+			shift=0;
+			return ;
+		}
+
+		h = v0 | v1<<(shift=a0) | v2<<(shift +=a1) | v3<<(shift +=a2) | v4<<(shift +=a3) | v5<<(shift +=a4) | v6<<(shift +=a5) | v7<<(shift +=a6);
+		shift =shift+a7;
+	
+
+	}
+
+
+
+
+
+
+	/* (non-Javadoc)
+	 * @see is2.parser52L.DX#clean()
+	 */
+	final public void clean() {
+		v0=0;v1=0;v2=0;v3=0;v4=0;v5=0;v6=0;v7=0;v8=0;
+		shift=0;h =0;
+	}
+
+	public final Long2IntInterface _li; 
+	public D5(Long2IntInterface li) {
+		_li=li;
+	}
+
+	/* (non-Javadoc)
+	 * @see is2.parser52L.DX#cs(int, int)
+	 */
+	final public long cs(int b, int v) {
+		if (h<0) {
+			h=-1;	shift=0;
+			return -1;
+		}
+
+		h |= (long)v<<shift;
+		shift +=b;
+		if (shift>64) {
+			System.out.println("shift too large "+shift);
+			new Exception().printStackTrace();
+		}
+
+		return h;
+
+	}
+	/* (non-Javadoc)
+	 * @see is2.parser52L.DX#csa(int, int)
+	 */
+	final public long csa(int b, int v) {
+		if (h<0) {
+			h=-1;	shift=0; return -1;
+		}
+
+		h |= (long)v<<shift;
+		shift +=b;
+		if (shift>64) {
+			System.out.println("shift too large "+shift);
+			new Exception().printStackTrace();
+		}
+
+		return h;
+
+	}
+
+	/* (non-Javadoc)
+	 * @see is2.parser52L.DX#csa(int, int, is2.data.IFV)
+	 */
+	final public void csa(int b, int v, IFV f ) {
+		if (h<0) {
+			h=-1;	shift=0; return;
+		}
+
+		h |= (long)v<<shift;
+		shift +=b;
+		if (shift>64) {
+			System.out.println("shift too large "+shift);
+			new Exception().printStackTrace();
+		}
+
+		f.add((int)_li.l2i(h));
+	}
+
+	/* (non-Javadoc)
+	 * @see is2.parser52L.DX#getVal()
+	 */
+	public long getVal() {
+		if (h<0) {
+			h=-1;	shift=0; return h;
+		}
+		return h;
+	}
+
+	/* (non-Javadoc)
+	 * @see is2.parser52L.DX#map(is2.data.IFV, long)
+	 */
+	public void map(IFV f, long l) {
+		if (l>0) f.add(_li.l2i(l));
+	}
+
+
+
+	/* (non-Javadoc)
+	 * @see is2.data.DX#computeLabeValue(short, short)
+	 */
+	@Override
+	public int computeLabeValue(int label, int shift) {
+		return label<<shift;
+	}
+
+	public void fix() {
+		
+	}
+	
+	
+}
\ No newline at end of file
diff --git a/dependencyParser/basic/mate-tools/src/is2/parser/Decoder.java b/dependencyParser/basic/mate-tools/src/is2/parser/Decoder.java
new file mode 100755
index 0000000..9fe833a
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parser/Decoder.java
@@ -0,0 +1,161 @@
+package is2.parser;
+
+import java.util.ArrayList;
+import java.util.concurrent.ExecutorService;
+
+
+import is2.data.DataFES;
+import is2.data.Parse;
+import is2.util.DB;
+
+
+/**
+ * @author Bernd Bohnet, 01.09.2009
+ * 
+ * This methods do the actual work and they build the dependency trees. 
+ */
+final public class Decoder   {
+
+	public static final boolean TRAINING = true;
+	public static long timeDecotder;
+	public static long timeRearrange;
+
+	/**
+	 * Threshold for rearrange edges non-projective
+	 */
+	public static float NON_PROJECTIVITY_THRESHOLD = 0.3F;
+
+	
+	static ExecutorService executerService =java.util.concurrent.Executors.newFixedThreadPool(Parser.THREADS);
+
+	// do not initialize
+	private Decoder() {};
+	
+	
+	/**
+	 * Build a dependency tree based on the data
+	 * @param pos part-of-speech tags
+	 * @param x the data
+	 * @param projective projective or non-projective
+	 * @param edges the edges
+	 * @return a parse tree
+	 * @throws InterruptedException
+	 */
+	public static Parse  decode(short[] pos,  DataFES x, boolean projective, boolean training) throws InterruptedException {
+
+		long ts = System.nanoTime();
+		
+		if (executerService.isShutdown()) executerService = java.util.concurrent.Executors.newCachedThreadPool();
+		final int n = pos.length;
+
+		final Open O[][][][] = new Open[n][n][2][];
+		final Closed C[][][][] = new Closed[n][n][2][];
+
+		ArrayList<ParallelDecoder> pe = new ArrayList<ParallelDecoder>(); 
+
+		for(int i=0;i<Parser.THREADS ;i++)  pe.add(new ParallelDecoder(pos, x,  O, C, n));
+		
+		for (short k = 1; k < n; k++) {
+
+			// provide the threads the data
+			for (short s = 0; s < n; s++) {
+				short t = (short) (s + k);
+				if (t >= n) break;
+				
+				ParallelDecoder.add(s,t);
+			}
+						
+			executerService.invokeAll(pe);
+		}
+		
+		float bestSpanScore = (-1.0F / 0.0F);
+		Closed bestSpan = null;
+		for (int m = 1; m < n; m++)
+			if (C[0][n - 1][1][m].p > bestSpanScore) {
+				bestSpanScore = C[0][n - 1][1][m].p;
+				bestSpan = C[0][n - 1][1][m];
+			}
+
+		// build the dependency tree from the chart 
+		Parse out= new Parse(pos.length);
+
+		bestSpan.create(out);
+
+		out.heads[0]=-1;
+		out.labels[0]=0;
+
+		timeDecotder += (System.nanoTime()-ts);
+		 
+		ts = System.nanoTime();
+		
+		if (!projective) rearrange(pos, out.heads, out.labels,x,training);
+		
+		timeRearrange += (System.nanoTime()-ts);		
+
+		return out;
+	}
+
+	
+	/**
+	 * This is the parallel non-projective edge re-arranger
+	 *  
+	 * @param pos part-of-speech tags
+	 * @param heads parent child relation 
+	 * @param labs edge labels 
+	 * @param x the data
+	 * @param edges the existing edges defined by part-of-speech tags 
+	 * @throws InterruptedException
+	 */
+	public static void rearrange(short[] pos, short[] heads, short[] labs,  DataFES x, boolean training) throws InterruptedException {
+
+		int threads =(pos.length>Parser.THREADS)? Parser.THREADS: pos.length;
+
+		
+		
+		// wh  what to change, nPar - new parent, nType - new type
+		short wh = -1, nPar = -1,nType = -1;
+		ArrayList<ParallelRearrange> pe = new ArrayList<ParallelRearrange>(); 
+		
+		while(true) {
+			boolean[][] isChild = new boolean[heads.length][heads.length];
+			for(int i = 1, l1=1; i < heads.length; i++,l1=i)  
+				while((l1= heads[l1]) != -1) isChild[l1][i] = true;
+		
+			float max = Float.NEGATIVE_INFINITY;
+			float p = Extractor.encode3(pos, heads, labs, x);
+
+			pe.clear();
+			for(int i=0;i<threads;i++)  pe.add(new ParallelRearrange( isChild, pos,x,heads,labs));
+			
+			for(int ch = 1; ch < heads.length; ch++) {
+
+				for(short pa = 0; pa < heads.length; pa++) {
+					if(ch == pa || pa == heads[ch] || isChild[ch][pa]) continue;
+
+					ParallelRearrange.add(p,(short) ch, pa);
+				} 
+			}  
+			executerService.invokeAll(pe);
+			
+			for(ParallelRearrange.PA rp :ParallelRearrange.order) 
+				if(max < rp.max  ) {					
+						max = rp.max;  	wh = rp.wh; 
+						nPar = rp.nPar;  nType = rp.nType ;
+				}
+			ParallelRearrange.order.clear();
+			
+			if(max <= NON_PROJECTIVITY_THRESHOLD)	break; // bb: changed from 0.0
+
+			heads[wh] = nPar;
+			labs[wh] = nType;
+
+		}
+	}
+
+	public static String getInfo() {
+
+		return "Decoder non-projectivity threshold: "+NON_PROJECTIVITY_THRESHOLD;
+	}
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/parser/Edges.java b/dependencyParser/basic/mate-tools/src/is2/parser/Edges.java
new file mode 100644
index 0000000..5ad892b
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parser/Edges.java
@@ -0,0 +1,206 @@
+/**
+ * 
+ */
+package is2.parser;
+
+import is2.data.PipeGen;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Map.Entry;
+
+/**
+ * @author Dr. Bernd Bohnet, 13.05.2009;
+ * 
+ * 
+ */
+public final class Edges {
+
+	
+	private static short[][][] edges;
+	private static HashMap<Short,Integer> labelCount = new HashMap<Short,Integer>();
+
+	private static HashMap<String,Integer> slabelCount = new HashMap<String,Integer>();
+
+	
+	static short[] def = new short[1];
+	
+	private Edges () {}
+	
+	/**
+	 * @param length
+	 */
+	public static void init(int length) {
+			edges = new short[length][length][];
+	}
+	
+	
+	public static void findDefault(){
+		
+		int best =0;
+
+		
+		
+		for(Entry<Short,Integer> e :  labelCount.entrySet()) {
+
+			
+			if (best<e.getValue()) {
+				best = e.getValue();
+				def[0]=e.getKey();
+			}
+		}
+
+		
+		//	labelCount=null;
+	//	String[] types = new String[mf.getFeatureCounter().get(PipeGen.REL)];
+	//	for (Entry<String, Integer> e : MFO.getFeatureSet().get(PipeGen.REL).entrySet())  	types[e.getValue()] = e.getKey();
+
+    	is2.util.DB.println("set default label to "+def[0]+" " );
+
+	//	System.out.println("found default "+def[0]);
+	
+	}
+	
+
+	final static public void put(int pos1, int pos2, short label) {
+		putD(pos1, pos2,label);
+	//	putD(pos2, pos1,!dir, label);		
+	}
+	
+	
+	final static public void putD(int pos1, int pos2, short label) {
+		
+		Integer lc = labelCount.get(label);
+		if (lc==null) labelCount.put(label, 1);
+		else labelCount.put(label, lc+1);
+
+		String key = pos1+"-"+pos2+label;
+		Integer lcs = slabelCount.get(key);
+		if (lcs==null) slabelCount.put(key, 1);
+		else slabelCount.put(key, lcs+1);
+
+		if (edges[pos1][pos2]==null) {
+			edges[pos1][pos2]=new short[1];
+			edges[pos1][pos2][0]=label;
+			
+//			edgesh[pos1][pos2][dir?0:1] = new TIntHashSet(2);
+//			edgesh[pos1][pos2][dir?0:1].add(label);
+		} else {
+			short labels[] = edges[pos1][pos2];
+			for(short l : labels) {				
+				//contains label already?
+				if(l==label) return;
+			}
+			
+			short[] nlabels = new short[labels.length+1];
+			System.arraycopy(labels, 0, nlabels, 0, labels.length);
+			nlabels[labels.length]=label;
+			edges[pos1][pos2]=nlabels;
+			
+	//		edgesh[pos1][pos2][dir?0:1].add(label);
+		}
+	}
+	
+	final static public short[] get(int pos1, int pos2) {
+		
+		if (pos1<0 || pos2<0 || edges[pos1][pos2]==null) return def;
+		return edges[pos1][pos2];
+	}
+
+	
+	/**
+	 * @param dis
+	 */
+	static public void write(DataOutputStream d) throws IOException {
+
+		int len = edges.length;
+		d.writeShort(len);
+
+		for(int p1 =0;p1<len;p1++) {
+			for(int p2 =0;p2<len;p2++) {
+				if (edges[p1][p2]==null) d.writeShort(0);
+				else {
+					d.writeShort(edges[p1][p2].length);
+					for(int l =0;l<edges[p1][p2].length;l++) {
+						d.writeShort(edges[p1][p2][l]);
+					}
+					
+				}
+			}
+		}
+		
+		d.writeShort(def[0]);
+
+	}
+
+	
+	/**
+	 * @param dis
+	 */
+	public static void read(DataInputStream d) throws IOException {
+		int len = d.readShort();
+
+		edges = new short[len][len][];
+		for(int p1 =0;p1<len;p1++) {
+			for(int p2 =0;p2<len;p2++) {
+				int ll = d.readShort();
+				if (ll==0) {
+					edges[p1][p2]=null;
+				} else {
+					edges[p1][p2] = new short[ll];
+					for(int l =0;l<ll;l++) {
+						edges[p1][p2][l]=d.readShort();
+					}					
+				}
+			}
+		}
+		
+		def[0]= d.readShort();
+
+	}
+
+	public static class C implements Comparator<Short> {
+
+		public C() {
+			super();
+		}
+
+		String _key;
+		
+		public C(String key) {
+			super();
+			_key=key;
+		}
+
+		/* (non-Javadoc)
+		 * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+		 */
+		@Override
+		public int compare(Short l1, Short l2) {
+			
+		//	int c1 = labelCount.get(l1);
+		//	int c2 = labelCount.get(l2);
+		//	if (true) return c1==c2?0:c1>c2?-1:1;
+
+			int x1 = slabelCount.get(_key+l1.shortValue());
+			int x2 = slabelCount.get(_key+l2.shortValue());
+		//	System.out.println(x1+" "+x2);
+			
+			
+			return x1==x2?0:x1>x2?-1:1;
+			
+			
+			
+		}
+
+	
+
+		
+		
+	}
+	
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/parser/Evaluator.java b/dependencyParser/basic/mate-tools/src/is2/parser/Evaluator.java
new file mode 100755
index 0000000..c764cc6
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parser/Evaluator.java
@@ -0,0 +1,94 @@
+package is2.parser;
+
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+
+
+public class Evaluator {
+
+	
+
+	public static final String PUNCT ="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
+	
+	public static class Results {
+
+		public int total;
+		public int corr;
+		public float las;
+		public float ula;
+		
+	}
+	
+	public static Results evaluate (String act_file,  String pred_file) throws Exception {
+
+		CONLLReader09 goldReader = new CONLLReader09(act_file, -1);
+		CONLLReader09 predictedReader = new CONLLReader09(pred_file, -1);
+
+		int total = 0, corr = 0, corrL = 0;
+		int numsent = 0, corrsent = 0, corrsentL = 0;
+		SentenceData09 goldInstance = goldReader.getNext();
+		SentenceData09 predInstance = predictedReader.getNext();
+
+		while(goldInstance != null) {
+
+			int instanceLength = goldInstance.length();
+
+			if (instanceLength != predInstance.length())
+				System.out.println("Lengths do not match on sentence "+numsent);
+
+			int[] goldHeads = goldInstance.heads;
+			String[] goldLabels = goldInstance.labels;
+			int[] predHeads = predInstance.heads;
+			String[] predLabels = predInstance.labels;
+
+			boolean whole = true;
+			boolean wholeL = true;
+
+			// NOTE: the first item is the root info added during nextInstance(), so we skip it.
+
+			int punc=0;
+			for (int i = 1; i < instanceLength; i++) {
+				if (predHeads[i] == goldHeads[i]) {
+					corr++;
+
+					if (goldLabels[i].equals(predLabels[i])) corrL++;
+					else {
+				//		System.out.println(numsent+" error gold "+goldLabels[i]+" "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
+						wholeL = false;
+					}
+				}
+				else { 
+			//		System.out.println(numsent+"error gold "+goldLabels[i]+" "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
+					whole = false; wholeL = false; 
+				}
+			}
+			total += ((instanceLength - 1) - punc); // Subtract one to not score fake root token
+
+			if(whole) corrsent++;
+			if(wholeL) corrsentL++;
+			numsent++;
+
+			goldInstance = goldReader.getNext();
+			predInstance = predictedReader.getNext();
+		}
+		
+		Results r = new Results();
+		
+		r.total = total;
+		r.corr = corr;
+		r.las =(float)Math.round(((double)corrL/total)*100000)/1000;
+		r.ula =(float)Math.round(((double)corr /total)*100000)/1000;
+		System.out.print("Total: " + total+" \tCorrect: " + corr+" ");
+		System.out.println("LAS: " + (double)Math.round(((double)corrL/total)*100000)/1000+" \tTotal: " + (double)Math.round(((double)corrsentL/numsent)*100000)/1000+
+				" \tULA: " + (double)Math.round(((double)corr /total)*100000)/1000+" \tTotal: " + (double)Math.round(((double)corrsent /numsent)*100000)/1000);
+		
+		return r;
+	}
+	
+	
+	public static float round (double v){
+		
+		return Math.round(v*10000F)/10000F;
+	}
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/parser/Extractor.java b/dependencyParser/basic/mate-tools/src/is2/parser/Extractor.java
new file mode 100755
index 0000000..35c90f2
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parser/Extractor.java
@@ -0,0 +1,973 @@
+package is2.parser;
+
+
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+import is2.data.Cluster;
+import is2.data.D4;
+import is2.data.D6;
+import is2.data.DX;
+
+import is2.data.DataFES;
+import is2.data.F2SF;
+import is2.data.FV;
+import is2.data.IFV;
+import is2.data.Instances;
+import is2.data.Long2IntInterface;
+
+
+import is2.util.DB;
+import is2.util.OptionsSuper;
+
+
+
+
+final public class Extractor {
+
+	static final int _SIB = 85;
+	public static int s_rel,s_word,s_type,s_dir,s_dist,s_feat,s_child,s_spath,s_lpath,s_pos,s_rel1;
+	public final DX d0 ,dl1,dl2, dwr,dr,dwwp,dw,dwp,dlf,d3lp, d2lp,d2pw,d2pp ;
+
+	public final Long2IntInterface li;
+
+	public boolean s_stack=false;
+
+	public Extractor(Long2IntInterface li, boolean stack, int  what) {
+
+		s_stack=stack;
+
+		this.li=li;
+
+		if (what  == OptionsSuper.MULTIPLICATIVE) {
+			d0 = new D6(li);dl1 = new D6(li);dl2 = new D6(li);dwr = new D6(li);dr = new D6(li);dwwp = new D6(li);
+			dw = new D6(li);dwp = new D6(li);dlf = new D6(li);d3lp = new D6(li); d2lp = new D6(li); d2pw = new D6(li); d2pp = new D6(li);
+		} else {
+			d0 = new D5(li);dl1 = new D5(li);dl2 = new D5(li);dwr = new D5(li);dr = new D5(li);dwwp = new D5(li);
+			dw = new D5(li);dwp = new D5(li);dlf = new D5(li);d3lp = new D5(li); d2lp = new D5(li); d2pw = new D5(li); d2pp = new D5(li);
+		}
+
+	}
+
+	public static void initStat(int what  ) {
+		MFO mf = new MFO();
+		if (what  == OptionsSuper.MULTIPLICATIVE) {
+			
+			DB.println("mult  (d4) ");
+		
+			s_rel = mf.getFeatureCounter().get(REL).intValue()*16;
+			s_rel1 =mf.getFeatureCounter().get(REL).intValue()+1;
+			s_pos = mf.getFeatureCounter().get(POS).intValue();       
+			s_word = mf.getFeatureCounter().get(WORD).intValue();
+			s_type = mf.getFeatureCounter().get(TYPE).intValue();
+			s_dir = (int)(mf.getFeatureCounter().get(DIR));
+			la = (mf.getValue(DIR, LA));
+			ra = (mf.getValue(DIR, RA));
+			s_dist = (int)(mf.getFeatureCounter().get(DIST));//mf.getFeatureBits(DIST);
+			s_feat = (int)(mf.getFeatureCounter().get(Pipe.FEAT));//mf.getFeatureBits(Pipe.FEAT);
+			s_spath = (mf.getFeatureCounter().get(Cluster.SPATH)==null?0:mf.getFeatureCounter().get(Cluster.SPATH));//mf.getFeatureBits(Cluster.SPATH);
+			s_lpath = (mf.getFeatureCounter().get(Cluster.LPATH)==null?0:mf.getFeatureCounter().get(Cluster.LPATH));//mf.getFeatureBits(Cluster.LPATH);
+
+		} else {
+			
+			s_rel = mf.getFeatureBits(REL);
+			s_pos = mf.getFeatureBits(POS);       
+			s_word = mf.getFeatureBits(WORD);
+			s_type = mf.getFeatureBits(TYPE);
+			s_dir = mf.getFeatureBits(DIR);
+			la = mf.getValue(DIR, LA);
+			ra = mf.getValue(DIR, RA);
+			s_dist = mf.getFeatureBits(DIST);
+			s_feat = mf.getFeatureBits(Pipe.FEAT);
+			s_spath = mf.getFeatureBits(Cluster.SPATH);
+			s_lpath = mf.getFeatureBits(Cluster.LPATH);
+			
+			DB.println("shift init (d5) ");
+		}
+	
+		
+	
+	}
+
+	public void init(){
+		
+		
+		
+		d0.a0 = s_type;d0.a1 = s_pos;d0.a2 = s_pos;d0.a3 = s_pos;d0.a4 = s_pos;d0.a5 = s_pos;d0.a6 = s_pos;d0.a7 = s_pos; d0.fix();
+		dl1.a0 = s_type;dl1.a1 = s_rel; dl1.a2 = s_pos;dl1.a3 = s_pos; dl1.a4 = s_pos; dl1.a5 = s_pos; dl1.a6 = s_pos; dl1.a7 = s_pos;	dl1.fix();
+		dl2.a0 = s_type;dl2.a1 = s_rel;dl2.a2 = s_word;dl2.a3 = s_pos;dl2.a4 = s_pos;dl2.a5 = s_pos;dl2.a6 = s_pos;dl2.a7 = s_pos; dl2.fix();
+		dwp.a0 = s_type; 	dwp.a1 = s_rel; 	dwp.a2 = s_word; 	dwp.a3 = s_pos; 	dwp.a4 = s_pos; dwp.a5 = s_word;dwp.fix();
+		dwwp.a0 = s_type; dwwp.a1 = s_rel; dwwp.a2 = s_word; dwwp.a3 = s_word; dwwp.a4 = s_pos; dwwp.a5 = s_word; dwwp.fix();
+		dlf.a0 = s_type;dlf.a1 = s_rel; dlf.a2 = s_pos;dlf.a3 = s_pos; dlf.a4 = s_feat; dlf.a5 = s_feat; dlf.a6 = s_pos; dlf.a7 = s_pos; dlf.fix();	
+		d3lp.a0 = s_type; d3lp.a1 = s_rel; d3lp.a2 = s_lpath; d3lp.a3 = s_lpath; d3lp.a4 = s_lpath; d3lp.a5 = s_word; d3lp.a6 = s_spath; d3lp.a7 = s_spath;d3lp.fix();	
+		d2lp.a0 = s_type; d2lp.a1 = s_rel; d2lp.a2 = s_lpath; d2lp.a3 = s_lpath; d2lp.a4 = s_word; d2lp.a5 = s_word; d2lp.fix(); //d3lp.a6 = s_spath; d3lp.a7 = s_spath;	
+		d2pw.a0 = s_type; d2pw.a1 = s_rel; d2pw.a2 = s_lpath; d2pw.a3 = s_lpath; d2pw.a4 = s_word; d2pw.a5 = s_word;d2pw.fix(); //d3lp.a6 = s_spath; d3lp.a7 = s_spath;	
+		d2pp.a0 = s_type; d2pp.a1 = s_rel; d2pp.a2 = s_lpath; d2pp.a3 = s_lpath; d2pp.a4 = s_pos; d2pp.a5 = s_pos; d2pp.fix(); //d3lp.a6 = s_spath; d3lp.a7 = s_spath;	
+	}
+
+
+
+	
+	public int basic(short[] pposs, int p,  int d, IFV f)
+	{
+
+		d0.clean(); dl1.clean(); dl2.clean(); dwp.clean(); dwwp.clean(); dlf.clean(); d3lp.clean(); 
+
+		d3lp.clean(); d2lp.clean();d2pw.clean(); d2pp.clean();
+
+		int n=1;
+		int dir= (p < d)? ra:la;
+		d0.v0= n++; d0.v1=pposs[p]; d0.v2=pposs[d]; //d0.stop=4;
+		int end= (p >= d ? p : d);
+		int start = (p >= d ? d : p) + 1;
+
+		for(int i = start ; i <end ; i++) {
+			d0.v3=pposs[i];
+			d0.cz4();
+			d0.csa(s_dir,dir,f);
+		}
+		return n;
+	}
+
+
+	public int firstm(Instances is, int i, 	int prnt, int dpnt, int label, Cluster cluster, long[] f)
+	{
+
+
+		for(int k=0;k<f.length;k++) f[k]=0;
+
+		short[] pposs = is.pposs[i];
+		int[] form =is.forms[i];
+		short[][] feats = is.feats[i];
+
+
+		int pF = form[prnt],dF =  form[dpnt];
+		int pL = is.plemmas[i][prnt],dL = is.plemmas[i][dpnt];
+		int pP = pposs[prnt],dP = pposs[dpnt];
+
+		int prntLS = pF==-1?-1:cluster.getLP(pF), chldLS = dF==-1?-1:cluster.getLP(dF);
+
+	//	final int dir= (prnt < dpnt)? ra:la;
+
+		if (pF>maxForm) pF=-1;
+		if (pL>maxForm) pL=-1;
+
+		if (dF>maxForm) dF=-1;
+		if (dL>maxForm) dL=-1;
+
+
+		int n=3,c=0;
+
+		dl2.v1=label;
+		dl2.v0= n++;	 dl2.v2=pF; dl2.v3=dP;   dl2.cz4(); f[c++]=dl2.getVal();
+		dl2.v0= n++;		              		 dl2.cz3(); f[c++]=dl2.getVal();
+		dl2.v0= n++;	 dl2.v2=dF; dl2.v3=pP;   dl2.cz4(); f[c++]=dl2.getVal();
+		dl2.v0= n++;		              		 dl2.cz3(); f[c++]=dl2.getVal(); 
+
+
+		dwwp.v1=label;
+		dwwp.v0= n++;  dwwp.v2=pF; dwwp.v3=dF; dwwp.cz4(); f[c++]=dwwp.getVal();  
+
+		dl1.v1=label;
+		dl1.v0= n++; dl1.v2=dP;                   dl1.cz3(); f[c++]=dl1.getVal(); 	
+		dl1.v0= n++; dl1.v2=pP;                   dl1.cz3(); f[c++]=dl1.getVal(); 
+		dl1.v0= n++;              dl1.v3=dP;      dl1.cz4(); f[c++]=dl1.getVal();
+
+		int pPm1 = prnt > 0 ? pposs[prnt - 1] : s_str,              dPm1 = dpnt > 0 ? pposs[dpnt - 1] : s_str;
+		int pPp1 = prnt < pposs.length - 1 ? pposs[prnt + 1]:s_end, dPp1 = dpnt < pposs.length - 1 ? pposs[dpnt + 1]:s_end;
+
+		int pPm2 = prnt > 1 ? pposs[prnt - 2] : s_str,              dPm2 = dpnt > 1 ? pposs[dpnt - 2] : s_str;
+		int pPp2 = prnt < pposs.length - 2 ? pposs[prnt + 2]:s_end, dPp2 = dpnt < pposs.length - 2 ? pposs[dpnt + 2]:s_end;
+
+		int pFm1 = prnt > 0 ? form[prnt - 1] : s_stwrd,              dFm1 = dpnt > 0 ? form[dpnt - 1] : s_stwrd;
+		int pFp1 = prnt < form.length - 1 ? form[prnt + 1]:s_stwrd,  dFp1 = dpnt < form.length - 1 ? form[dpnt + 1]:s_stwrd;
+
+
+		if (prnt-1 == dpnt) pPm1 =-1;
+		if (prnt == dpnt-1) dPm1 =-1;
+
+		if (prnt+1 == dpnt) pPp1 =-1;
+		if (prnt == dpnt+1) dPp1 =-1;
+
+		if (prnt-2 == dpnt) pPm2 =-1;
+		if (prnt == dpnt-2) dPm2 =-1;
+
+		if (prnt+2 == dpnt) pPp2 =-1;
+		if (prnt == dpnt+2) dPp2 =-1;
+
+		
+		dl1.v0= n++;dl1.v2=pP;  dl1.v3=pPp1; dl1.v4=dP;dl1.v5=dPp1; dl1.v6= (prnt+1==dpnt?4:prnt==dpnt+1?5:6) ; dl1.cz7(); f[c++]=dl1.getVal(); 
+		dl1.v0= n++;                                   dl1.v5=dPm1; dl1.v6= (prnt+1==dpnt?4:prnt==dpnt-1?5:6) ; dl1.cz7(); f[c++]=dl1.getVal();	
+		dl1.v0= n++;            dl1.v3=pPm1;                        dl1.v6= (prnt-1==dpnt?4:prnt==dpnt-1?5:6) ; dl1.cz7(); f[c++]=dl1.getVal();
+		dl1.v0= n++;                                   dl1.v5=dPp1; dl1.v6= (prnt-1==dpnt?4:prnt==dpnt+1?5:6) ; dl1.cz7(); f[c++]=dl1.getVal();
+
+
+		dl1.v0= n++;            dl1.v3=pPm1;           dl1.v5= (prnt-1==dpnt?4:5) ; dl1.cz6(); f[c++]=dl1.getVal(); 
+		dl1.v0= n++;            dl1.v3=dPm1;           dl1.v5= (prnt==dpnt-1?4:5) ; dl1.cz6(); f[c++]=dl1.getVal();
+		dl1.v0= n++;			dl1.v3=dPp1;           dl1.v5= (prnt==dpnt+1?4:5) ; dl1.cz6(); f[c++]=dl1.getVal();
+		dl1.v0= n++;            dl1.v3=pPp1;           dl1.v5= (prnt+1==dpnt?4:5) ; dl1.cz6(); f[c++]=dl1.getVal();
+
+		dl1.v0= n++;dl1.v2=pP;  dl1.v3=pPp2; dl1.v4=dP;dl1.v5=dPp2; dl1.v6= (prnt+2==dpnt?4:prnt==dpnt+2?5:6) ;  dl1.cz7(); f[c++]=dl1.getVal(); 
+		dl1.v0= n++;                                   dl1.v5=dPm2; dl1.v6= (prnt+2==dpnt?4:prnt==dpnt-2?5:6) ; dl1.cz7(); f[c++]=dl1.getVal();	
+		dl1.v0= n++;            dl1.v3=pPm2;                        dl1.v6= (prnt-2==dpnt?4:prnt==dpnt-2?5:6) ; dl1.cz7(); f[c++]=dl1.getVal();
+		dl1.v0= n++;                                   dl1.v5=dPp2; dl1.v6= (prnt-2==dpnt?4:prnt==dpnt+2?5:6) ; dl1.cz7(); f[c++]=dl1.getVal();
+
+		
+		// remove this again
+				dl1.v0= n++;            dl1.v3=pPm2;           dl1.v5= (prnt-2==dpnt?4:5); dl1.cz6();  f[c++]=dl1.getVal(); 
+				dl1.v0= n++;            dl1.v3=dPm2;           dl1.v5= (prnt==dpnt-2?4:5); dl1.cz6();  f[c++]=dl1.getVal();
+				dl1.v0= n++;			dl1.v3=dPp2;           dl1.v5= (prnt==dpnt+2?4:5); dl1.cz6();  f[c++]=dl1.getVal();
+				dl1.v0= n++;            dl1.v3=pPp2;           dl1.v5= (prnt+2==dpnt?4:5); dl1.cz6();  f[c++]=dl1.getVal();
+
+
+
+				dl2.v0= n++; dl2.v3=dFm1; dl2.v3=pPp1;dl2.v4=pP; dl2.v5= (prnt+1==dpnt?4:prnt==dpnt-1?5:6) ; dl2.cz6(); f[c++]=dl2.getVal(); 
+				dl2.v0= n++; dl2.v3=dFp1; dl2.v3=pPm1;           dl2.v5= (prnt-1==dpnt?4:prnt==dpnt+1?5:6) ; dl2.cz6(); f[c++]=dl2.getVal();
+				dl2.v0= n++; dl2.v3=pFm1; dl2.v3=dPp1;dl2.v4=dP; dl2.v5= (prnt-1==dpnt?4:prnt==dpnt+1?5:6) ; dl2.cz6(); f[c++]=dl2.getVal();
+				dl2.v0= n++; dl2.v3=pFp1; dl2.v3=dPm1;           dl2.v5= (prnt+1==dpnt?4:prnt==dpnt-1?5:6) ; dl2.cz6(); f[c++]=dl2.getVal();
+
+
+				// maybe without dir
+				dl2.v0= n++; dl2.v3=dFm1; dl2.v3=dPm2;dl2.v4=pP; dl2.v5= (prnt==dpnt-1?4:prnt==dpnt-2?5:6) ; dl2.cz6(); f[c++]=dl2.getVal(); 
+				dl2.v0= n++; dl2.v3=dFp1; dl2.v3=dPp2;           dl2.v5= (prnt==dpnt+1?4:prnt==dpnt+2?5:6) ; dl2.cz6(); f[c++]=dl2.getVal();
+				dl2.v0= n++; dl2.v3=pFm1; dl2.v3=pPm2;dl2.v4=dP; dl2.v5= (prnt-1==dpnt?4:prnt-2==dpnt?5:6) ; dl2.cz6(); f[c++]=dl2.getVal();
+				dl2.v0= n++; dl2.v3=pFp1; dl2.v3=pPp2;           dl2.v5= (prnt+1==dpnt?4:prnt+2==dpnt?5:6) ; dl2.cz6(); f[c++]=dl2.getVal();
+
+
+				dwwp.v0= n++;	dwwp.v2=pF; dwwp.v3=dF; dwwp.v4=dP; dwwp.cz5(); f[c++]=dwwp.getVal(); 
+				dwwp.v0= n++;	dwwp.v2=pF; dwwp.v3=dF; dwwp.v4=pP; dwwp.cz5(); f[c++]=dwwp.getVal(); 
+//				dwwp.v0= n++;	dwwp.v2=dF; dwwp.v3=pF; dwwp.v4=pP; dwwp.v4=dP; dwwp.cz6(); f[c++]=dwwp.getVal();  
+
+		
+		// until here
+
+
+		// lemmas
+
+		dl2.v1=label;
+		dl2.v0= n++;	 dl2.v2=pL; dl2.v3=dP;   dl2.cz4(); f[c++]=dl2.getVal();
+		dl2.v0= n++;		              		 dl2.cz3(); f[c++]=dl2.getVal();
+		dl2.v0= n++;	 dl2.v2=dL; dl2.v3=pP;   dl2.cz4(); f[c++]=dl2.getVal();
+		dl2.v0= n++;		              		 dl2.cz3(); f[c++]=dl2.getVal(); 
+
+
+		dwwp.v1=label;
+		dwwp.v0= n++;  dwwp.v2=pL; dwwp.v3=dL; dwwp.cz4(); f[c++]=dwwp.getVal();  
+
+		dwp.v1= label; 
+		dwp.v0=n++;dwp.v2=dL; dwp.v3=pP;dwp.v4=dP;dwp.v5=pL; //dwp.cz6(); f[c++]=dwp.getVal();  
+		
+		dwp.v0=n++;dwp.v2=pL; dwp.v3=pP;dwp.v4=dP; dwp.v0=n++;dwp.cz5(); f[c++]=dwp.getVal();  
+
+		
+		
+		dwp.v0=n++;dwp.v2=pL; dwp.cz5(); f[c++]=dwp.getVal();
+		dwwp.v0= n++;  dwwp.v2=pL; dwwp.v3=dL; dwwp.v4=dP; dwwp.cz5(); f[c++]=dwwp.getVal();  
+		dwwp.v0= n++;                          dwwp.v4=pP; dwwp.cz5(); f[c++]=dwwp.getVal();
+
+
+		// cluster
+		if (cluster.size()>10) {
+			d2pw.v1=label; 
+			d2pw.v0=n++; d2pw.v2=prntLS; d2pw.v3=chldLS; d2pw.cz4(); f[c++]=d2pw.getVal();
+			d2pw.v0=n++; d2pw.v4=pF;                     d2pw.cz5(); f[c++]=d2pw.getVal();
+			d2pw.v0=n++; d2pw.v4=dF;                     d2pw.cz5(); f[c++]=d2pw.getVal();
+	//		d2pw.v0=n++;             d2pw.v5=pF;         d2pw.cz6(); f[c++]=d2pw.getVal();
+
+
+			d2pp.v1=label; 
+			d2pp.v0=n++; d2pp.v2=prntLS; d2pp.v3=chldLS; d2pp.cz4(); f[c++]=d2pp.getVal();
+			d2pp.v0=n++; d2pp.v4=pP;                     d2pp.cz5(); f[c++]=d2pp.getVal();
+			d2pp.v0=n++; d2pp.v4=dP;                     d2pp.cz5(); f[c++]=d2pp.getVal();
+			d2pp.v0=n++;             d2pp.v5=pP;         d2pp.cz6(); f[c++]=d2pp.getVal();
+		}
+
+		if (s_stack) {	
+
+			short[] prel = is.plabels[i];
+			short[] phead = is.pheads[i];
+
+			//take those in for stacking
+			dl2.v1=label;
+			dl2.v0= n++;dl2.v2=prel[dpnt];dl2.v3=pP;dl2.v4=dP; dl2.v5=prnt==phead[dpnt]?1:2; dl2.cz6(); f[c++]=dl2.getVal(); 
+			dl2.v0= n++;dl2.v2=pP;dl2.v3=dP; dl2.v4=prnt==phead[dpnt]?1:2; dl2.cz5(); f[c++]=dl2.getVal(); 
+		}
+
+	
+
+		if (feats==null) return c;
+
+		short[] featsP =feats[prnt], featsD =feats[dpnt];  
+		dlf.v0= n++;	dlf.v1=label; dlf.v2=pP; dlf.v3=dP;
+		c =extractFeat(f, c, featsP, featsD);
+
+
+		return c;
+	}
+
+
+	public int second(Instances is , int i,int p, int d, int x, int label, Cluster cluster, long[] f)
+	{
+
+		//for(int k=0;k<f.length;k++) f[k]=0;
+
+		dl1.clean(); dwp.clean();dlf.clean(); dwwp.clean();
+		
+		short[] pos= is.pposs[i];
+		int[] forms=is.forms[i],lemmas=is.plemmas[i];
+		
+		
+		int pP = pos[p], dP = pos[d];
+		int pF = forms[p],dF = forms[d];
+		int pL = lemmas[p], cL = lemmas[d];
+
+		int sP = x!=-1 ? pos[x] : s_str, sF = x!=-1 ? forms[x] : s_stwrd, sL = x!=-1 ? lemmas[x] : s_stwrd;
+
+		int n=_SIB;
+		if (pF>maxForm) pF=-1;
+		if (pL>maxForm) pL=-1;
+
+		if (dF>maxForm) dF=-1;
+		if (cL>maxForm) cL=-1;
+
+		if (sF>maxForm) sF=-1;
+		if (sL>maxForm) sL=-1;
+
+		int c =0;
+
+		 dl1.v1=label;dwwp.v1=label;dwp.v1=label;
+		 
+		dl1.v0= n++;dl1.v2=pP; dl1.v3=dP;dl1.v4=sP; dl1.cz5(); f[c++]=dl1.getVal()  ; // f[c++]=dl1.csa(s_dist,dist);
+		dl1.v0= n++; dl1.v3=sP; dl1.cz4(); f[c++]=dl1.getVal(); //f[c++]=dl1.csa(s_dist,dist);
+		dl1.v0= n++; dl1.v2=dP; dl1.cz4(); f[c++]=dl1.getVal(); //f[c++]=dl1.csa(s_dist,dist); 
+
+		// sibling only could be tried
+		
+		dwwp.v0= n++;  dwwp.v2=pF; dwwp.v3=sF; dwwp.cz4(); f[c++]=dwwp.getVal(); //f[c++]=dwwp.csa(s_dist,dist);
+		dwwp.v0= n++; dwwp.v2=dF;                dwwp.cz4(); f[c++]=dwwp.getVal(); //f[c++]=dwwp.csa(s_dist,dist);
+		
+		// 154
+		dwp.v0= n++;	 dwp.v2=sF; dwp.v3=pP; dwp.cz4(); f[c++]=dwp.getVal(); //f[c++]=dwp.csa(s_dist,dist);
+		dwp.v0= n++;	/*dwp.v1=label;  */dwp.v3=dP; dwp.cz4(); f[c++]=dwp.getVal(); //f[c++]=dwp.csa(s_dist,dist);
+		dwp.v0= n++;	/*dwp.v1=label;*/ dwp.v2=pF; dwp.v3=sP; dwp.cz4(); f[c++]=dwp.getVal(); //f[c++]=dwp.csa(s_dist,dist);
+		dwp.v0= n++;	/*dwp.v1=label;*/ dwp.v2=dF;  dwp.cz4(); f[c++]=dwp.getVal();// f[c++]=dwp.csa(s_dist,dist);
+
+		// 158
+		//lemmas
+		
+		dwwp.v0= n++;	 dwwp.v2=pL; dwwp.v3=sL; 	dwwp.cz4(); f[c++]=dwwp.getVal(); 
+		dwwp.v0= n++;	 dwwp.v2=cL;                dwwp.cz4(); f[c++]=dwwp.getVal(); //f[c++]=dwwp.csa(s_dist,dist);  
+		dwp.v0= n++;	 dwp.v2=sL;  dwp.v3=pP; dwp.cz4(); f[c++]=dwp.getVal();// f[c++]=dwp.csa(s_dist,dist);
+		dwp.v0= n++;     dwp.v3=dP;  dwp.cz4(); f[c++]=dwp.getVal(); //  f[c++]=dwp.csa(s_dist,dist);
+		
+		// 162
+		dwp.v0= n++;  dwp.v2=pL; dwp.v3=sP; dwp.cz4(); f[c++]=dwp.getVal(); //f[c++]=dwp.csa(s_dist,dist);
+		dwp.v0= n++;  dwp.v2=cL; 	        dwp.cz4(); f[c++]=dwp.getVal();// f[c++]=dwp.csa(s_dist,dist);
+
+		// clusters
+		if (cluster.size()>10) {
+		
+		}
+
+		int pPm1 = p!=0 ? pos[p-1] : s_str;
+		int chldPm1 = d-1>=0 ? pos[d-1] : s_str;
+		int prntPp1 = p!=pos.length-1 ? pos[p+1] : s_end;
+		int chldPp1 = d!=pos.length-1 ? pos[d+1] : s_end;
+
+		// sibling part of speech minus and plus 1
+		int sPm1 = x>0 ? pos[x-1]:s_str;
+		int sPp1 = x<pos.length-1 ? pos[x + 1]:s_end; 
+
+		if (x+1==x|| x+1==p || x+1==d) sPp1=-1;
+		if (p+1==x|| p+1==p || p+1==d) prntPp1=-1;
+		if (d+1==x|| d+1==p || d+1==d) chldPp1=-1;
+		
+		if (x-1==x|| x-1==p || x-1==d) sPm1=-1;
+		if (d-1==x|| d-1==p || d-1==d) chldPm1=-1;
+		if (p-1==x|| p-1==p || p-1==d) pPm1=-1;
+
+		
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sPp1;dl1.v4=pP; dl1.cz5(); f[c++]=dl1.getVal();  
+		// 165
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sPm1;dl1.v4=pP; dl1.v5= (x-1==p?3:x-1==d?4:5);            dl1.cz6();              f[c++]= dl1.getVal(); //dl1.getVal();// f.add(li.l2i(l)); 
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=pP;dl1.v4=prntPp1;dl1.v5= (x==p+1?3:4);  dl1.cz6();     f[c++]=dl1.getVal();// f.add(li.l2i(l)); 
+		dl1.v0=n++;	dl1.v2=sP; dl1.v3=pP;dl1.v4=pPm1;dl1.v5= (x==p-1?3:4);  dl1.cz6(); f[c++]=dl1.getVal();// f.add(li.l2i(l));
+		dl1.v0=n++;	dl1.v2=sP; dl1.v3=sPp1;dl1.v4=pPm1;dl1.v5=pP;dl1.v6= (x==p-1?3:x==p+1?4:5);  dl1.cz7(); f[c++]=dl1.getVal();  
+		dl1.v0=n++; dl1.v2=sPm1; dl1.v3=sP;dl1.v4=pPm1;dl1.v5=pP;dl1.v6= (x==p-1?3:x-1==p?4:5);  dl1.cz7(); f[c++]=dl1.getVal();// f.add(li.l2i(l)); 
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sPp1;dl1.v4=pP;dl1.v5=prntPp1;dl1.v6= (x+1==p?3:x==p+1?4:5); dl1.cz7(); f[c++]=dl1.getVal();// f.add(li.l2i(l)); 
+		dl1.v0=n++; dl1.v2=sPm1; dl1.v3=sP; dl1.v4=pP;dl1.v5=prntPp1;dl1.v6= (x==p-1?3:x==p+1?4:5); dl1.cz7(); f[c++]=dl1.getVal();// f.add(li.l2i(l)); 
+	
+		dl1.v0=n++;	dl1.v2=sP; dl1.v3=sPp1;dl1.v4=dP; 	dl1.v5= (x+1==d?3:x+1==p?4:5); dl1.cz6(); f[c++]=dl1.getVal();  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sPm1;dl1.v4=dP;   dl1.v5= (x-1==d?3:x-1==p?4:5); dl1.cz6(); f[c++]=dl1.getVal();  
+		
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=dP;dl1.v4=chldPp1;dl1.v5= (x==d+1?3:d+1==p?4:5);  dl1.cz6(); f[c++]=dl1.getVal();  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=dP;dl1.v4=chldPm1; dl1.v5= (x==d-1?3:d-1==p?4:5); dl1.cz6(); f[c++]=dl1.getVal();  
+		dl1.v0=n++; dl1.v2=sP;  dl1.v3=sPp1;dl1.v4=chldPm1;dl1.v5=dP; dl1.v6= (x==d-1?3:x+1==d?4:5); dl1.cz7(); f[c++]=dl1.getVal();// f.add(li.l2i(l)); 
+		dl1.v0=n++; dl1.v2=sPm1; dl1.v3=sP;dl1.v4=chldPm1;dl1.v5=dP;  dl1.v6= (x-1==d?3:d-1==x?4:5);   dl1.cz7();       f[c++]=dl1.getVal();  
+		dl1.v0= n++;dl1.v2=sP; dl1.v3=sPp1;dl1.v4=dP;dl1.v5=chldPp1;dl1.v6= (x==d+1?3:x+1==d?4:5); dl1.cz7();f[c++]=dl1.getVal();// f.add(li.l2i(l)); 
+		dl1.v0= n++;	dl1.v2=sPm1; dl1.v3=sP;dl1.v4=dP;dl1.v5=chldPp1;dl1.v6= (x-1==d?3:d+1==x?4:5);dl1.cz7(); f[c++]=dl1.getVal();  
+
+		// c=61;
+		/*
+		if (cluster.size()>10) {
+			AtomicInteger N = new AtomicInteger(n);
+			c = addClusterFeatures(d, p, x, pos, forms, cluster, N, c, f,label);
+			n = N.get();
+		}
+		*/
+		// take those in for stacking
+
+		if (s_stack) {
+			short[] prel = is.plabels[i],phead=is.pheads[i];
+
+			int g = p==phead[d]?1:2 ;
+			if (x>=0) g += p==phead[x]?4:8;
+
+			int gr = x==-1?s_relend:prel[x];
+ 
+		
+			dl2.v1 = label;
+			dl2.v0= n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=sP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.getVal(); 
+			dl2.v0= n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.getVal(); 
+			dl2.v0= n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f[c++]=dl2.getVal(); 
+
+			dl2.v0= n++;dl2.v2=gr;dl2.v3=g;dl2.v4=sP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.getVal(); 
+			dl2.v0= n++;dl2.v2=gr;dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.getVal(); 
+			dl2.v0= n++;dl2.v2=gr;dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f[c++]=dl2.getVal(); 
+		}
+		
+		short[][] feats=is.feats[i];
+
+		if (feats==null) return c;
+
+
+		short[] featsP =feats[d]; 
+		short[] featsSbl =x!=-1?feats[x]:null; 
+		dlf.v1=label;
+		dlf.v0= n++;	 dlf.v2=sP; dlf.v3=dP;
+		c = extractFeat(f, c ,featsP, featsSbl); 
+
+		featsP =feats[p]; 
+		
+
+		dlf.v0= n++; dlf.v1=label; dlf.v2=sP; dlf.v3=pP;
+		c = extractFeat(f, c ,featsP, featsSbl); 
+		
+
+		return c;
+	}
+
+	
+	/**
+	 * Separated this method to speed up parsing
+	 * @param d
+	 * @param p
+	 * @param x
+	 * @param pos
+	 * @param forms
+	 * @param cluster
+	 * @param N
+	 * @param c
+	 * @param f
+	 * @return
+	 */
+	int addClusterFeatures(Instances is, int i, int d, int p, int x, Cluster cluster,  int c, long[] f, int label) {
+
+	//	int n= N.get();
+		
+		short[] pos= is.pposs[i];
+		int[] forms=is.forms[i];
+		
+		int n=190;
+		int pP = pos[p], dP = pos[d];
+		int sP = x!=-1 ? pos[x] : s_str;
+
+		
+		int pLSp1 = p != pos.length - 1 ? forms[p + 1]==-1?-1:cluster.getLP(forms[p + 1]): _cend;	
+		int	cLSp1 = d != pos.length - 1 ? forms[d + 1] ==-1?-1:cluster.getLP(forms[d + 1]):_cend;
+		int sLSp1 = x < pos.length -1 ? forms[x + 1] ==-1?-1:cluster.getLP(forms[x + 1]) : _cend; 
+
+		int pLSm1 = p!=0 ? forms[p - 1]==-1?-1:cluster.getLP(forms[p - 1]): _cstr;	
+		int	cLSm1 = d-1>=0 ? forms[d - 1] ==-1?-1:cluster.getLP(forms[d - 1]):_cstr;
+		int sLSm1 = x>0 ? forms[x - 1] ==-1?-1:cluster.getLP(forms[x - 1]):_cstr; 
+
+		//int c=61;
+		int pF = forms[p],dF = forms[d],  sF = x!=-1 ? forms[x] : s_stwrd;
+		int prntLS = pF==-1?-1:cluster.getLP(pF), chldLS = dF==-1?-1:cluster.getLP(dF);
+
+		int sblLS = (x != -1)&&(sF!=-1) ? cluster.getLP(sF) : s_stwrd;
+
+		
+		d2lp.v1=label;
+		d2lp.v0= n++;	 d2lp.v2=prntLS; d2lp.v3=sblLS; d2lp.cz4(); f[c++]=d2lp.getVal();  
+		d2lp.v0= n++;	 d2lp.v2=chldLS; d2lp.v3=sblLS; d2lp.cz4(); f[c++]=d2lp.getVal();// f[c++]=d2lp.csa(s_dist,dist);  		
+
+		d3lp.v1= label;
+		d3lp.v0= n++;    d3lp.v2=prntLS; d3lp.v3=chldLS; d3lp.v4=sblLS;d3lp.cz5(); f[c++]=d3lp.getVal();
+
+		d2lp.v0= n++;	 d2lp.v2=prntLS; d2lp.v3=chldLS; d2lp.v4=sF; d2lp.cz5(); f[c++]=d2lp.getVal(); //f[c++]=d2lp.csa(s_dist,dist);  
+		d2lp.v0= n++;	 d2lp.v2=prntLS; d2lp.v3=sblLS; d2lp.v4=dF; d2lp.cz5(); f[c++]=d2lp.getVal(); //f[c++]=d2lp.csa(s_dist,dist);  
+		d2lp.v0= n++;	 d2lp.v2=chldLS; d2lp.v3=sblLS; d2lp.v4=pF; d2lp.cz5(); f[c++]=d2lp.getVal(); //f[c++]=d2lp.csa(s_dist,dist);  
+
+		d2pp.v1=label;
+		d2pp.v0= n++;	 d2pp.v2=prntLS; d2pp.v3=chldLS; d2pp.v4=sP; d2pp.cz5(); f[c++]=d2pp.getVal(); //f[c++]=d2pp.csa(s_dist,dist);  
+		d2pp.v0= n++;	 d2pp.v2=prntLS; d2pp.v3=sblLS; d2pp.v4=dP; d2pp.cz5(); f[c++]=d2pp.getVal(); //f[c++]=d2pp.csa(s_dist,dist);  
+		d2pp.v0= n++;	 d2pp.v2=chldLS; d2pp.v3=sblLS; d2pp.v4=pP; d2pp.cz5(); f[c++]=d2pp.getVal(); //f[c++]=d2pp.csa(s_dist,dist);  
+		
+		
+		if (x+1==x|| x+1==p || x+1==d) sLSp1=-1;
+		if (p+1==x|| p+1==p || p+1==d) pLSp1=-1;
+		if (d+1==x|| d+1==p || d+1==d) cLSp1=-1;
+		
+		if (x-1==x|| x-1==p || x-1==d) sLSm1=-1;
+		if (d-1==x|| d-1==p || d-1==d) cLSm1=-1;
+		if (p-1==x|| p-1==p || p-1==d) pLSm1=-1;
+
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sLSp1;dl1.v4=pP; dl1.cz5(); f[c++]=dl1.getVal();   
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sLSm1;dl1.v4=pP; dl1.cz5(); f[c++]=dl1.getVal();  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=pP;dl1.v4=pLSp1;dl1.cz5(); f[c++]=dl1.getVal();  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=pP;dl1.v4=pLSm1; dl1.cz5(); f[c++]=dl1.getVal(); 
+		dl1.v0=n++; dl1.v2=sP;  dl1.v3=sLSp1;dl1.v4=pLSm1;dl1.v5=pP; dl1.cz6(); f[c++]=dl1.getVal();  
+		dl1.v0=n++; dl1.v2=sLSm1; dl1.v3=sP;dl1.v4=pLSm1;dl1.v5=pP; dl1.cz6(); f[c++]=dl1.getVal(); 
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sLSp1;dl1.v4=pP;dl1.v5=pLSp1; dl1.cz6(); f[c++]=dl1.getVal(); 
+		dl1.v0=n++; dl1.v2=sLSm1; dl1.v3=sP; dl1.v4=pP;dl1.v5=pLSp1; dl1.cz6(); f[c++]=dl1.getVal(); 
+		dl1.v0=n++;	dl1.v2=sP; dl1.v3=sLSp1;dl1.v4=dP; dl1.cz5(); f[c++]=dl1.getVal();   
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sLSm1;dl1.v4=dP; dl1.cz5(); f[c++]=dl1.getVal();  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=dP;dl1.v4=cLSp1; dl1.cz5(); f[c++]=dl1.getVal();  
+		dl1.v0=n++;dl1.v2=sP; dl1.v3=dP;dl1.v4=cLSm1; dl1.cz5(); f[c++]=dl1.getVal();  
+		dl1.v0=n++; dl1.v2=sP;  dl1.v3=sLSm1;dl1.v4=cLSm1;dl1.v5=dP; dl1.cz6(); f[c++]=dl1.getVal();  
+		dl1.v0=n++; dl1.v2=sLSm1; dl1.v3=sP;dl1.v4=cLSm1;dl1.v5=dP;dl1.cz6(); f[c++]=dl1.getVal(); 
+		dl1.v0=n++;dl1.v2=sP; dl1.v3=sLSp1;dl1.v4=dP;dl1.v5=cLSp1;dl1.cz6();f[c++]=dl1.getVal(); 
+		dl1.v0=n++;	dl1.v2=sLSm1; dl1.v3=sP;dl1.v4=dP;dl1.v5=cLSp1; dl1.cz6(); f[c++]=dl1.getVal(); 
+
+
+
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sLSp1;dl1.v4=pP; dl1.cz5(); f[c++]=dl1.getVal();  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sLSm1;dl1.v4=pP; dl1.cz5(); f[c++]=dl1.getVal(); 
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=pP;dl1.v4=pLSp1;dl1.cz5(); f[c++]=dl1.getVal(); 
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=pP;dl1.v4=pLSm1; dl1.cz5(); f[c++]=dl1.getVal();
+		dl1.v0=n++; dl1.v2=sP;  dl1.v3=sLSp1;dl1.v4=pLSm1;dl1.v5=pP; dl1.cz6(); f[c++]=dl1.getVal(); 
+		dl1.v0=n++; dl1.v2=sLSm1; dl1.v3=sP;dl1.v4=pLSm1;dl1.v5=pP; dl1.cz6(); f[c++]=dl1.getVal();
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sLSp1;dl1.v4=pP;dl1.v5=pLSp1; dl1.cz6(); f[c++]=dl1.getVal();
+		dl1.v0=n++; dl1.v2=sLSm1; dl1.v3=sP; dl1.v4=pP;dl1.v5=pLSp1; dl1.cz6(); f[c++]=dl1.getVal();
+		dl1.v0=n++;	dl1.v2=sP; dl1.v3=sLSp1;dl1.v4=dP; dl1.cz5(); f[c++]=dl1.getVal();  
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=sLSm1;dl1.v4=dP; dl1.cz5(); f[c++]=dl1.getVal(); 
+		dl1.v0=n++; dl1.v2=sP; dl1.v3=dP;dl1.v4=cLSp1; dl1.cz5(); f[c++]=dl1.getVal(); 
+		dl1.v0=n++;dl1.v2=sP; dl1.v3=dP;dl1.v4=cLSm1; dl1.cz5(); f[c++]=dl1.getVal(); 
+		dl1.v0=n++; dl1.v2=sP;  dl1.v3=sLSm1;dl1.v4=cLSm1;dl1.v5=dP; dl1.cz6(); f[c++]=dl1.getVal(); 
+		dl1.v0=n++; dl1.v2=sLSm1; dl1.v3=sP;dl1.v4=cLSm1;dl1.v5=dP;dl1.cz6(); f[c++]=dl1.getVal();
+		dl1.v0= n++;dl1.v2=sP; dl1.v3=sLSp1;dl1.v4=dP;dl1.v5=cLSp1;dl1.cz6();f[c++]=dl1.getVal();
+		dl1.v0= n++;	dl1.v2=sLSm1; dl1.v3=sP;dl1.v4=dP;dl1.v5=cLSp1; dl1.cz6(); f[c++]=dl1.getVal();
+
+		
+		return c;
+	}
+
+	private int extractFeat(long[] f, int cnt, short[] featsP, short[] featsD) {
+		if (featsP!=null && featsD!=null) {
+			for(short i1=0;i1<featsP.length;i1++) {
+				for(short i2=0;i2<featsD.length;i2++) {							
+					dlf.v4=featsP[i1]; dlf.v5=featsD[i2];
+					dlf.cz6(); f[cnt++]=dlf.getVal(); 
+				}
+			} 
+		} else if (featsP==null && featsD!=null) {
+
+			for(short i2=0;i2<featsD.length;i2++) {							
+				dlf.v4=nofeat; dlf.v5=featsD[i2];
+				dlf.cz6(); f[cnt++]=dlf.getVal(); 
+
+			}		
+		} else if (featsP!=null && featsD==null) {
+
+			for(short i1=0;i1<featsP.length;i1++) {							
+				dlf.v4=featsP[i1]; dlf.v5=nofeat;
+				dlf.cz6(); f[cnt++]=dlf.getVal(); 
+
+			}		
+		}
+		return cnt;
+	}
+
+
+
+	public FV encodeCat(Instances is, int ic, short pposs[], int forms[], int[] lemmas, short[] heads, short[] types, short feats[][], Cluster cluster, FV f) {
+
+
+		long[] svs = new long[250]; 
+
+		for (int i = 1; i < heads.length; i++) {
+
+
+			basic(pposs, heads[i], i, f); 
+			
+			int w1 = heads[i]<i?heads[i]:i;
+			int w2 = heads[i]<i?i:heads[i];
+			
+			int dir =heads[i]<i?0:s_rel1;
+			int label = types[i] + dir;
+			
+			int c = firstm(is, ic, w1,  w2, label, cluster,svs);
+			for(int k=0;k<c;k++) dl1.map(f,svs[k]);
+
+			int ch,cmi,cmo;
+			if (heads[i] < i) {
+				ch = rightmostRight(heads, heads[i], i);
+				cmi = leftmostLeft(heads, i, heads[i]);
+				cmo = rightmostRight(heads, i, heads.length);
+
+			} else {
+				ch = leftmostLeft(heads, heads[i], i);
+				cmi = rightmostRight(heads, i, heads[i]);
+				cmo = leftmostLeft(heads, i, 0);
+			}
+
+			int lx =types[i] + s_rel1*((heads[i]<i?0:1) +8);
+			c =second(is,ic,w1, w2,ch, lx, cluster, svs);
+			for(int k=0;k<c;k++) dl1.map(f,svs[k]);
+			c = addClusterFeatures(is,ic, w1, w2, ch, cluster, c, svs,lx);
+			for(int k=0;k<c;k++) dl1.map(f,svs[k]);
+
+			lx =types[i]+s_rel1*((heads[i]<i?0:1) +  ((cmi < i)?0:2) );
+			c =second(is, ic,w1,w2,cmi, lx, cluster,  svs);
+			for(int k=0;k<c;k++) dl1.map(f,svs[k]);
+			
+			c = addClusterFeatures(is,ic, w1, w2, cmi, cluster, c, svs,lx);
+			for(int k=0;k<c;k++) dl1.map(f,svs[k]);
+
+			lx =types[i]+s_rel1*((heads[i]<i?0:1) +  ((cmo < i)?0:2) );
+			c =second(is, ic, w1,w2,cmo, lx, cluster,  svs);
+			for(int k=0;k<c;k++) dl1.map(f,svs[k]);
+			
+			c = addClusterFeatures(is,ic, w1, w2, cmo, cluster, c, svs,lx);
+			for(int k=0;k<c;k++) dl1.map(f,svs[k]);
+		}
+
+		return f;
+	}
+
+	public void compare(Instances is, int ic, short pos[], short[] heads, short[] types, Cluster cluster, F2SF f, DataFES x) {
+
+
+		long[] svs = new long[250]; 
+
+		float fx =0.0F;
+		
+		
+		for (int i = 1; i < heads.length; i++) {
+
+			f.clear();
+			basic(pos, heads[i], i, f); 
+			
+			if (x.pl[heads[i]][i] != f.getScore()) {
+				DB.println("basic diff "+x.pl[heads[i]][i] +" fg "+f.getScore());
+			}
+			
+			int w1 = heads[i]<i?heads[i]:i;
+			int w2 = heads[i]<i?i:heads[i];
+			
+			int dir =heads[i]<i?0:s_rel1;
+			int label = types[i] + dir;
+			f.clear();
+			int c = firstm(is, ic, w1,  w2, label, cluster,svs);
+			for(int k=0;k<c;k++) dl1.map(f,svs[k]);
+			
+			if (x.lab[heads[i]][i][types[i]] != f.getScore()) {
+				DB.println("first diff "+x.lab[heads[i]][i][types[i]] +" fg "+f.getScore());
+			}
+			
+			short[] labels = Edges.get(pos[heads[i]], pos[i]);
+			int lid=-1;
+			for(int k=0;k<labels.length;k++)  if (types[i]== labels[k]) {lid= k;break;}
+			
+			
+
+			int ch,cmi,cmo;
+			if (heads[i] < i) {
+				ch = rightmostRight(heads, heads[i], i);
+				cmi = leftmostLeft(heads, i, heads[i]);
+				cmo = rightmostRight(heads, i, heads.length);
+
+			} else {
+				ch = leftmostLeft(heads, heads[i], i);
+				cmi = rightmostRight(heads, i, heads[i]);
+				cmo = leftmostLeft(heads, i, 0);
+			}
+
+			f.clear();
+			
+			
+			int lx =types[i] + s_rel1*((heads[i]<i?0:1) +8);
+			c =second(is,ic,w1, w2,ch, lx, cluster, svs);
+			for(int k=0;k<c;k++) dl1.map(f,svs[k]);
+			
+			if (x.sib[heads[i]][i][ch==-1?heads[i]:ch][lid] != f.getScore()) {
+				DB.println("sib diff "+x.sib[heads[i]][i][ch==-1?i:ch][lid] +" fg "+f.getScore());
+			}
+			
+			f.clear();
+			
+			
+			lx =types[i]+s_rel1*((heads[i]<i?0:1) +  ((cmi < i)?0:2) );
+			c =second(is, ic,w1,w2,cmi, lx, cluster,  svs);
+			for(int k=0;k<c;k++) dl1.map(f,svs[k]);
+			
+			if (x.gra[heads[i]][i][cmi==-1?i:cmi][lid] != f.getScore()   ) {
+				DB.println("gcm diff "+x.gra[heads[i]][i][cmi==-1?i:cmi][lid] +" fg "+f.getScore()+" cmi "+cmi+" i "+i+
+						" head "+heads[i]+" w1 "+w1+" w2 "+w2+" label "+lx+" "+((heads[i]<i?0:1) +  ((cmi < i)?0:2) ) );
+
+				System.out.println("w1 "+w1+" w2 "+w2+" cmi "+cmi+" label "+label+" ");
+
+				for (long  k : svs) System.out.print(k+" ");		
+				System.out.println();
+				
+			}
+			f.clear();
+			lx =types[i]+s_rel1*((heads[i]<i?0:1) +  ((cmo < i)?0:2) );
+			c =second(is, ic, w1,w2,cmo, lx, cluster,  svs);
+			for(int k=0;k<c;k++) dl1.map(f,svs[k]);
+			
+			if (x.gra[heads[i]][i][cmo==-1?i:cmo][lid] != f.getScore()   ) {
+				DB.println("gcm diff "+x.gra[heads[i]][i][cmo==-1?i:cmo][lid] +" fg "+f.getScore()+" cmo "+cmo+" i "+i+
+						" head "+heads[i]+" w1 "+w1+" w2 "+w2+" label "+lx+" "+((heads[i]<i?0:1) +  ((cmi < i)?0:2) ) );
+
+				System.out.println("w1 "+w1+" w2 "+w2+" cmi "+cmi+" label "+label+" ");
+
+				for (long  k : svs) System.out.print(k+" ");		
+				System.out.println();
+				
+			}
+		}
+
+	
+	}
+	
+	
+	public short[] searchLabel(Instances is, int ic, short pposs[], int forms[], int[] lemmas, short[] heads, short[] types, short feats[][], Cluster cluster, IFV f) {
+
+
+		long[] svs = new long[250]; 
+
+		short[] newLabels = new short[types.length];
+
+		for (int i = 1; i < heads.length; i++) {
+
+
+			//			int n =basic(pposs, forms, heads[i], i, cluster, f); 
+
+			int ch,cmi,cmo;
+			if (heads[i] < i) {
+				ch = rightmostRight(heads, heads[i], i);
+				cmi = leftmostLeft(heads, i, heads[i]);
+				cmo = rightmostRight(heads, i, heads.length);
+
+			} else {
+				ch = leftmostLeft(heads, heads[i], i);
+				cmi = rightmostRight(heads, i, heads[i]);
+				cmo = leftmostLeft(heads, i, 0);
+			}
+
+
+			short labels[] = Edges.get(pposs[is.heads[ic][i]],pposs[i]);
+
+			float best = -1000;
+			short bestL = 0;
+			for(int j=0; j< labels.length;j++) {
+
+				f.clear();
+				firstm(is, ic, heads[i],  i, labels[j], cluster,svs);
+				for(int k=0;k<svs.length;k++) dl1.map(f,svs[k]);
+
+				second(is,ic,heads[i], i,ch, labels[j], cluster, svs);
+				for(int k=0;k<svs.length;k++) dl1.map(f,svs[k]);
+
+				second(is, ic,heads[i],i,cmi, labels[j], cluster,  svs);
+				for(int k=0;k<svs.length;k++) dl1.map(f,svs[k]);
+
+				second(is, ic, heads[i],i,cmo, labels[j], cluster,  svs);
+				for(int k=0;k<svs.length;k++) dl1.map(f,svs[k]);
+
+				if (best < f.getScore()) {
+					best= (float)f.getScore();
+					bestL= labels[j];
+					newLabels[i]=bestL;
+				}
+
+
+			}
+		}
+		return newLabels;
+
+		//return f;
+	}
+
+
+	public static float encode3(short[] pos, short heads[] , short[] types, DataFES d2) {
+
+
+		float v = 0F;
+		for (int i = 1; i < heads.length; i++) {
+
+	//		int dir= (heads[i] < i)? 0:1;
+
+			v += d2.pl[heads[i]][i];
+			v += d2.lab[heads[i]][i][types[i]];
+
+		//	boolean left = i<heads[i]; 
+			short[] labels = Edges.get(pos[heads[i]], pos[i]);
+			int lid=-1;
+			for(int k=0;k<labels.length;k++)  if (types[i]== labels[k]) {lid= k;break;}
+
+			int ch,cmi,cmo;
+			if (heads[i] < i) {
+				ch = rightmostRight(heads, heads[i], i);
+				cmi = leftmostLeft(heads, i, heads[i]);
+				cmo = rightmostRight(heads, i, heads.length);
+
+				if (ch==-1) ch=heads[i];  
+				if (cmi==-1) cmi=heads[i];
+				if (cmo==-1) cmo=heads[i];
+
+			} else {
+				ch = leftmostLeft(heads, heads[i], i);
+				cmi = rightmostRight(heads, i, heads[i]);
+				cmo = leftmostLeft(heads, i, 0);
+
+				if (ch==-1) ch=i;
+				if (cmi==-1) cmi=i;
+				if (cmo==-1) cmo=i;
+			}
+			v += d2.sib[heads[i]][i][ch][lid];
+			v += d2.gra[heads[i]][i][cmi][lid];
+			v += d2.gra[heads[i]][i][cmo][lid];
+		}
+		return v;
+	}
+	
+	public static float encode3(short[] pos, short heads[] , short[] types, DataFES d2, float[] scores) {
+
+		float v = 0F;
+		for (int i = 1; i < heads.length; i++) {
+
+
+			scores[i]= d2.pl[heads[i]][i];
+			scores[i] += d2.lab[heads[i]][i][types[i]];
+
+			short[] labels = Edges.get(pos[heads[i]], pos[i]);
+			int lid=-1;
+			for(int k=0;k<labels.length;k++)  if (types[i]== labels[k]) {lid= k;break;}
+
+			int ch,cmi,cmo;
+			if (heads[i] < i) {
+				ch = rightmostRight(heads, heads[i], i);
+				cmi = leftmostLeft(heads, i, heads[i]);
+				cmo = rightmostRight(heads, i, heads.length);
+
+				if (ch==-1) ch=heads[i];  
+				if (cmi==-1) cmi=heads[i];
+				if (cmo==-1) cmo=heads[i];
+
+			} else {
+				ch = leftmostLeft(heads, heads[i], i);
+				cmi = rightmostRight(heads, i, heads[i]);
+				cmo = leftmostLeft(heads, i, 0);
+
+				if (ch==-1) ch=i;
+				if (cmi==-1) cmi=i;
+				if (cmo==-1) cmo=i;
+			}
+			scores[i] += d2.sib[heads[i]][i][ch][lid];
+			scores[i] += d2.gra[heads[i]][i][cmi][lid];
+			scores[i] += d2.gra[heads[i]][i][cmo][lid];
+		}
+		return v;
+	}
+
+
+	public static int rightmostRight(short[] heads, int head, int max) {
+		int rightmost = -1;
+		for (int i = head + 1; i < max; i++) if (heads[i] == head) rightmost = i;
+
+		return rightmost;
+	}
+
+	public static int leftmostLeft(short[] heads, int head, int min) {
+		int leftmost = -1;
+		for (int i = head - 1; i > min; i--) if (heads[i] == head) leftmost = i;
+		return leftmost;
+	}
+
+	public static final String REL = "REL",END = "END",STR = "STR",LA = "LA",RA = "RA";
+
+	private static int ra,la;
+	private static int s_str;
+	private static int s_end, _cend,_cstr, s_stwrd,s_relend;
+
+	protected static final String TYPE = "TYPE",DIR = "D";
+	public static final String POS = "POS";
+	protected static final String DIST = "DIST",MID = "MID";
+
+	private static final String _0 = "0",_4 = "4",_3 = "3", _2 = "2",_1 = "1",_5 = "5",_10 = "10";
+
+	private static  int di0, d4,d3,d2,d1,d5,d10;
+
+
+	private static final String WORD = "WORD",STWRD = "STWRD", STPOS = "STPOS";
+
+
+
+	private static int nofeat;
+
+
+	public static int maxForm;
+
+
+	/**
+	 * Initialize the features.
+	 * @param maxFeatures
+	 */
+	static public void initFeatures() {
+
+
+		MFO mf = new MFO();
+		mf.register(POS, MID);
+		s_str = mf.register(POS, STR);
+		s_end = mf.register(POS, END);
+
+		s_relend = mf.register(REL, END);
+
+		_cstr= mf.register(Cluster.SPATH,STR);
+		_cend=mf.register(Cluster.SPATH,END);
+
+
+		mf.register(TYPE, POS);
+
+		s_stwrd=mf.register(WORD,STWRD);
+		mf.register(POS,STPOS);
+
+		la = mf.register(DIR, LA);
+		ra = mf.register(DIR, RA);
+
+		//		mf.register(TYPE, CHAR);
+
+		mf.register(TYPE, Pipe.FEAT);
+		nofeat=mf.register(Pipe.FEAT, "NOFEAT");
+
+		for(int k=0;k<150;k++) mf.register(TYPE, "F"+k);
+
+
+		di0=mf.register(DIST, _0);
+		d1=mf.register(DIST, _1);
+		d2=mf.register(DIST, _2);
+		d3=mf.register(DIST, _3);
+		d4=mf.register(DIST, _4);
+		d5=mf.register(DIST, _5);
+		//		d5l=mf.register(DIST, _5l);
+		d10=mf.register(DIST, _10);
+
+
+	}
+
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/parser/MFO.java b/dependencyParser/basic/mate-tools/src/is2/parser/MFO.java
new file mode 100755
index 0000000..519ea06
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parser/MFO.java
@@ -0,0 +1,257 @@
+package is2.parser;
+
+
+import is2.data.IEncoder;
+import is2.data.IEncoderPlus;
+import is2.data.IFV;
+import is2.data.Long2IntInterface;
+import is2.util.DB;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map.Entry;
+
+/**
+ * Map Features, do not map long to integer
+ * 
+ * @author Bernd Bohnet, 20.09.2009
+ */
+
+final public class MFO  implements IEncoderPlus {
+ 
+	/** The features and its values */
+	static private final HashMap<String,HashMap<String,Integer>> m_featureSets = new HashMap<String,HashMap<String,Integer>>();
+
+	/** The feature class and the number of values */
+	static private final HashMap<String,Integer> m_featureCounters = new HashMap<String,Integer>();
+
+	/** The number of bits needed to encode a feature */
+	static final HashMap<String,Integer> m_featureBits = new HashMap<String,Integer>();
+	
+	/** Integer counter for long2int */
+	static private int count=0;
+		
+	/** Stop growing */
+	public boolean stop=false;
+	
+	final public static String NONE="<None>";
+	
+	
+	
+	
+		
+	 
+	
+	public MFO () {}
+	
+	
+	public  int size() {return count;}
+	
+	
+	
+	/**
+	 * Register an attribute class, if it not exists and add a possible value
+	 * @param type
+	 * @param type2
+	 */
+	 final public int register(String a, String v) {
+
+		HashMap<String,Integer> fs = getFeatureSet().get(a);
+		if (fs==null) {
+			fs = new HashMap<String,Integer>();
+			getFeatureSet().put(a, fs);
+			fs.put(NONE, 0);
+			getFeatureCounter().put(a, 1);
+		}
+		Integer c = getFeatureCounter().get(a);
+		
+		Integer i = fs.get(v);
+		if (i==null) {
+			fs.put(v, c);
+			c++;
+			getFeatureCounter().put(a,c);
+			return c-1;
+		} else return i;
+	}
+	
+	/**
+	 * Calculates the number of bits needed to encode a feature
+	 */
+	 public void calculateBits() {
+		
+		int total=0;
+		for(Entry<String,Integer> e : getFeatureCounter().entrySet() ){
+			int bits =(int)Math.ceil((Math.log(e.getValue()+1)/Math.log(2)));
+			m_featureBits.put(e.getKey(), bits);
+			total+=bits;
+		//	System.out.println(" "+e.getKey()+" bits "+bits+" number "+(e.getValue()+1));
+		}
+		
+//		System.out.println("total number of needed bits "+total);
+	}
+	
+	
+	
+	public  String toString() {
+		
+		StringBuffer content = new StringBuffer();
+		for(Entry<String,Integer> e : getFeatureCounter().entrySet() ){
+			 content.append(e.getKey()+" "+e.getValue());
+			 content.append(':');
+	//		 HashMap<String,Integer> vs = getFeatureSet().get(e.getKey());
+			 content.append(getFeatureBits(e.getKey()));
+			 
+			 /*if (vs.size()<120)
+			 for(Entry<String,Integer> e2 : vs.entrySet()) {
+				 content.append(e2.getKey()+" ("+e2.getValue()+") ");
+			 }*/
+			 content.append('\n');
+				
+		}
+		return content.toString();
+	}
+	
+	
+	
+	static final public short getFeatureBits(String a) {
+		if(m_featureBits.get(a)==null) return 0;
+		return (short)m_featureBits.get(a).intValue();
+	}
+
+	
+
+	/**
+	 * Get the integer place holder of the string value v of the type a
+	 * 
+	 * @param t the type
+	 * @param v the value 
+	 * @return the integer place holder of v
+	 */
+	 final public int getValue(String t, String v) {
+		
+		if (m_featureSets.get(t)==null) return -1;
+		Integer vi = m_featureSets.get(t).get(v);
+		if (vi==null) return -1; //stop && 
+		return vi.intValue();
+	}
+
+	 /**
+	  * Static version of getValue
+	  * @see getValue
+	  */
+	static final public int getValueS(String a, String v) {
+			
+			if (m_featureSets.get(a)==null) return -1;
+			Integer vi = m_featureSets.get(a).get(v);
+			if (vi==null) return -1; //stop && 
+			return vi.intValue();
+		}
+	
+	 public int hasValue(String a, String v) {
+		
+		Integer vi = m_featureSets.get(a).get(v);
+		if (vi==null) return -1;
+		return vi.intValue();
+	}
+	
+	
+	public static String printBits(int k) {
+		StringBuffer s = new StringBuffer();
+		for(int i =0;i<31;i++) {
+			s.append((k&0x00000001)==1?'1':'0');
+			k=k>>1;
+			
+		}
+		s.reverse();
+		return s.toString();
+	}
+	
+	
+
+   
+   
+   
+   
+	/** 
+	 * Maps a long to a integer value. This is very useful to save memory for sparse data long values 
+	 * @param l
+	 * @return the integer
+	 */
+	static public  int misses = 0;
+	static public  int good = 0;
+		
+
+	
+	
+	/**
+	 * Write the data
+	 * @param dos
+	 * @throws IOException
+	 */
+    static public void writeData(DataOutputStream dos) throws IOException {
+        dos.writeInt(getFeatureSet().size());
+       // DB.println("write"+getFeatureSet().size());
+        for(Entry<String, HashMap<String,Integer>> e : getFeatureSet().entrySet()) {
+            dos.writeUTF(e.getKey());
+            dos.writeInt(e.getValue().size());
+        
+            for(Entry<String,Integer> e2 : e.getValue().entrySet()) {
+  
+            	if(e2.getKey()==null) DB.println("key "+e2.getKey()+" value "+e2.getValue()+" e -key "+e.getKey());
+                dos.writeUTF(e2.getKey()); 
+                dos.writeInt(e2.getValue());
+            
+             }          
+                
+        }
+    }
+    public void read(DataInputStream din) throws IOException {
+		 
+		int size = din.readInt();
+		for(int i=0; i<size;i++) {
+			String k = din.readUTF();
+			int size2 = din.readInt();
+			
+			HashMap<String,Integer> h = new HashMap<String,Integer>();
+			getFeatureSet().put(k,h);
+			for(int j = 0;j<size2;j++) {
+				h.put(din.readUTF(), din.readInt());
+			}
+			getFeatureCounter().put(k, size2);
+		}
+
+    	count =size;
+	//	stop();
+		calculateBits();
+	}
+
+	
+	/** 
+	 * Clear the data
+	 */
+    static public void clearData() {
+      getFeatureSet().clear();
+      m_featureBits.clear();
+      getFeatureSet().clear();
+    }
+
+    public HashMap<String,Integer> getFeatureCounter() {
+		return m_featureCounters;
+	}
+
+	static public HashMap<String,HashMap<String,Integer>> getFeatureSet() {
+		return m_featureSets;
+	}
+	
+	static public String[] reverse(HashMap<String,Integer> v){
+		String[] set = new String[v.size()];
+		for(Entry<String,Integer> e : v.entrySet()) {
+			set[e.getValue()]=e.getKey();
+		}
+		return set;
+	}
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/parser/Open.java b/dependencyParser/basic/mate-tools/src/is2/parser/Open.java
new file mode 100755
index 0000000..35f14a7
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parser/Open.java
@@ -0,0 +1,38 @@
+package is2.parser;
+
+import is2.data.Parse;
+
+
+final public  class Open {
+
+	public float p;
+	short s, e, label;
+	byte dir;
+
+	Closed left;
+	Closed right;
+
+	public Open(short s, short t, short dir, short label,Closed left, Closed right, float p) {
+		this.s = s;
+		this.e = t;
+		this.label = label;
+		this.dir = (byte)dir;
+		this.left =left;
+		this.right=right;
+		this.p=p;
+	}
+
+
+	void create(Parse parse) {
+		if (dir == 0) {
+			parse.heads[s] = e;
+			if (label != -1) parse.labels[s] = label;
+		} else {
+			parse.heads[e] = s;
+			if (label != -1) parse.labels[e] = label;
+		}
+		if (left != null) left.create(parse);
+		if (right != null) right.create(parse);
+	}
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/parser/Options.java b/dependencyParser/basic/mate-tools/src/is2/parser/Options.java
new file mode 100755
index 0000000..3c8b551
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parser/Options.java
@@ -0,0 +1,63 @@
+package is2.parser;
+
+import is2.util.OptionsSuper;
+
+
+public final class Options extends OptionsSuper {
+
+	
+	public Options (String[] args) {
+		
+
+		
+		for(int i = 0; i < args.length; i++) {
+
+			if (args[i].equals("--help")) explain();
+			
+			if (args[i].equals("-decode")) {
+				decodeProjective = args[i+1].equals("proj"); i++;
+			} else if (args[i].equals("-decodeTH")) {		
+				decodeTH = Double.parseDouble(args[i+1]); i++;
+			} else if (args[i].equals("-nonormalize")) {
+				normalize=false;
+			} else if (args[i].equals("-features")) {
+				features= args[i+1]; i++;			
+			} else if (args[i].equals("-hsize")) {
+				hsize= Integer.parseInt(args[i+1]); i++;			
+			} else if (args[i].equals("-len")) {
+				maxLen= Integer.parseInt(args[i+1]); i++;			
+			} else if (args[i].equals("-cores")) {
+				cores= Integer.parseInt(args[i+1]); i++;			
+			} else if (args[i].equals("-no2nd")) {
+				no2nd= true;			
+			} else if (args[i].equals("-few2nd")) {
+				few2nd= true;			
+			} else super.addOption(args, i);
+					
+		}
+
+
+		
+	}
+
+	private void explain() {
+		System.out.println("Usage: ");
+		System.out.println("java -class mate.jar is2.parser.Parser [Options]");
+		System.out.println();
+		System.out.println("Example: ");
+		System.out.println(" java -class mate.jar is2.parser.Parser -model eps3.model -train corpora/conll08st/train/train.closed -test corpora/conll08st/devel/devel.closed  -out b3.test -eval corpora/conll08st/devel/devel.closed  -count 2000 -i 6");
+		System.out.println("");
+		System.out.println("Options:");
+		System.out.println("");
+		System.out.println(" -train  <file>    the corpus a model is trained on; default "+this.trainfile);
+		System.out.println(" -test   <file>    the input corpus for testing; default "+this.testfile);
+		System.out.println(" -out    <file>    the output corpus (result) of a test run; default "+this.outfile);
+		System.out.println(" -model  <file>    the parsing model for traing the model is stored in the files");
+		System.out.println("                   and for parsing the model is load from this file; default "+this.modelName);
+		System.out.println(" -i      <number>  the number of training iterations; good numbers are 10 for smaller corpora and 6 for bigger; default "+this.numIters);
+		System.out.println(" -count  <number>  the n first sentences of the corpus are take for the training default "+this.count);
+		System.out.println(" -format <number>  conll format of the year 8 or 9; default "+this.formatTask);
+		
+		System.exit(0);
+	}
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/parser/ParallelDecoder.java b/dependencyParser/basic/mate-tools/src/is2/parser/ParallelDecoder.java
new file mode 100755
index 0000000..dd18f5f
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parser/ParallelDecoder.java
@@ -0,0 +1,170 @@
+package is2.parser;
+
+
+import is2.data.DataFES;
+
+
+import java.util.ArrayList;
+import java.util.concurrent.Callable;
+
+/**
+ * @author Bernd Bohnet, 30.08.2009
+ * 
+ * This class implements a parallel feature extractor.
+ */
+final public class ParallelDecoder implements Callable<Object> 
+{
+	// some constants
+	private static final float INIT_BEST = (-1.0F / 0.0F);
+	private static final boolean[] DIR ={false,true};
+
+	// the data space of the weights for a dependency tree  
+	final private DataFES x;
+
+	private short[] pos;
+
+	private Open O[][][][];
+	private Closed C[][][][] ;
+
+	private int length;
+
+	boolean done=false;
+	public boolean waiting =false;
+
+	/**
+	 * Initialize the parallel decoder.
+	 * 
+	 * @param pos part-of-speech
+	 * @param d data
+	 * @param edges part-of-speech edge mapping
+	 * @param o open spans 
+	 * @param c closed spans
+	 * @param length number of words
+	 */
+	public ParallelDecoder(short[] pos, DataFES d, Open o[][][][], Closed c[][][][], int length) {
+
+		this.pos =pos;
+		this.x =d;
+
+		this.O=o;
+		this.C=c;
+		this.length=length;
+	}
+
+
+	private static class DSet { short w1,w2;}
+
+	@Override
+	public Object call() {
+
+		
+		try {
+			
+		while (true){
+
+			DSet set = get();
+//			if (done && set==null) break;	
+
+			if (set ==null) return null;
+
+			short s=set.w1, t=set.w2;
+
+			for(short dir =0;dir<2;dir++) {
+				
+				short[] labs = (dir==1) ? Edges.get(pos[s],pos[t]):Edges.get(pos[t],pos[s]);
+
+				O[s][t][dir] = new Open[labs.length];
+
+				for (int l =  0; l <labs.length; l++) {
+						
+					
+					double tRP = INIT_BEST; 
+										
+					Closed tL = null, tR = null;
+					
+					for (int r = s; r < t; r++) {
+						
+						if (s == 0 && r != 0) continue;
+						
+						double tLPr = INIT_BEST,tRPr = INIT_BEST;
+						Closed tLCld = null, tRCld = null;
+						
+						if (r == s) tLPr = dir==1 ? x.sib[s][t][s][l] : 
+							x.gra[t][s][s][l];
+						else 
+							for (int i = s + 1; i <= r; i++) 
+								if (((dir==1 ? x.sib[s][t][i][l] : x.gra[t][s][i][l]) + C[s][r][1][i].p) > tLPr) {
+									tLPr = ((dir==1 ? x.sib[s][t][i][l] : x.gra[t][s][i][l]) + C[s][r][1][i].p);tLCld = C[s][r][1][i];}
+							
+						if (r == t-1) tRPr = dir==1 ? x.gra[s][t][s][l] : x.sib[t][s][s][l];
+						else
+							for (int i = r + 1; i < t; i++) 
+								if (((dir == 1 ? x.gra[s][t][i][l] : 
+									x.sib[t][s][i][l]) + 
+									C[r+1][t][0][i].p) > tRPr) {
+									tRPr = ((dir==1?x.gra[s][t][i][l]:x.sib[t][s][i][l]) + C[r+1][t][0][i].p); tRCld=C[r + 1][t][0][i];
+								}
+											
+						if (tLPr + tRPr > tRP) {tRP = tLPr + tRPr; tL = tLCld;tR = tRCld;}
+					}
+					O[s][t][dir][l] = new Open(s, t, dir, labs[l],tL, tR, 
+							(float) ( tRP+((dir==1)?x.pl[s][t]: x.pl[t][s]) + ((dir==1)? x.lab[s][t][labs[l]]:x.lab[t][s][labs[l]])));					
+				}
+			}
+			C[s][t][1] = new Closed[length]; C[s][t][0] = new Closed[length];
+
+			for (int m = s ; m <= t; m++) {
+				for(boolean d : DIR) {
+					if ((d && m!=s)||!d && (m!=t && s!=0)) {
+						
+						// create closed structure
+						
+						double top = INIT_BEST;
+						
+						Open tU = null; Closed tL = null;
+						int numLabels =O[(d ? s : m)][(d ? m : t)][d?1:0].length;
+				
+						//for (int l = numLabels-1; l >=0; l--) {
+						for (int l = 0; l < numLabels; l++) {
+							
+							Open hi = O[(d ? s : m)][(d ? m : t)][d?1:0][l];
+							for (int amb = m + (d?1:-1); amb != (d?t:s) + (d?1:-1); amb += (d?1:-1)) {
+								
+								if ((hi.p + C[d?m:s][d?t:m][d?1:0][amb].p +x.gra[d?s:t][m][amb][l]) > top) {
+									top = (hi.p + C[d?m:s][d?t:m][d?1:0][amb].p +x.gra[d?s:t][m][amb][l]); tU = hi; tL=C[d?m:s][d?t:m][d?1:0][amb];}
+								
+							}
+						
+							if ((m == (d ? t : s)) && (hi.p + x.gra[d?s:t][d?t:s][m][l]) > top) { 
+								top = (hi.p + x.gra[d ? s : t][d?t:s][m][l]); tU = hi; tL = null;}
+						}
+						C[s][t][d?1:0][m] = new Closed(s, t, m, d?1:0,tU,tL,(float) top);
+						
+					
+					}
+				}			
+			}
+		}
+		} catch (Exception e ) {
+			e.printStackTrace();
+			System.exit(0);
+		}
+		return null;
+	}
+
+	public static ArrayList<DSet> sets = new ArrayList<DSet>();
+
+	static synchronized private DSet get() {
+		synchronized (sets) {
+			if (sets.size()==0) return null;
+			return sets.remove(sets.size()-1);
+		}
+	}
+
+	public static void add(short w1, short w2){
+		DSet ds =new DSet();
+		ds.w1=w1;
+		ds.w2=w2;
+		sets.add(ds);
+	}
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/parser/ParallelExtract.java b/dependencyParser/basic/mate-tools/src/is2/parser/ParallelExtract.java
new file mode 100755
index 0000000..4313bfd
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parser/ParallelExtract.java
@@ -0,0 +1,246 @@
+package is2.parser;
+
+import is2.data.Cluster;
+import is2.data.DataFES;
+import is2.data.F2SF;
+import is2.data.FV;
+import is2.data.Instances;
+import is2.data.Long2IntInterface;
+import is2.util.DB;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.concurrent.Callable;
+
+
+
+
+
+/**
+ * @author Bernd Bohnet, 30.08.2009
+ * 
+ * This class implements a parallel feature extractor.
+ */
+final public class ParallelExtract implements Callable<Object> 
+{
+	// the data space of the weights for a dependency tree  
+	final DataFES d;
+
+	// the data extractor does the actual work
+	final Extractor extractor;
+
+	private Instances is;
+	private int i;
+
+	private F2SF para;
+
+	private Cluster cluster;
+
+
+	public ParallelExtract(Extractor e, Instances is, int i, DataFES d,  F2SF para,Cluster cluster) {
+
+		this.is =is;
+		extractor=e;
+		this.d =d;
+		this.i=i;
+		this.para=para;
+		this.cluster = cluster;
+	}
+
+
+	public static class DSet {
+		int w1,w2;
+	}
+
+	public Object call() {
+
+		try {
+
+			F2SF f= para;
+
+
+			short[] pos=is.pposs[i];
+			int length = pos.length;
+
+			long[] gvs = new long[50]; 
+			long[] svs = new long[220]; 
+
+			while (true) {
+
+				DSet set = get();
+				if (set ==null) break;
+
+				int w1=set.w1;
+				int w2=set.w2;
+
+
+				f.clear();
+				extractor.basic(pos, w1, w2, f);
+				d.pl[w1][w2]=f.getScoreF();
+				
+				
+				f.clear();
+
+				extractor.basic(pos, w2, w1, f);
+				d.pl[w2][w1]=f.getScoreF();
+
+				short[] labels = Edges.get(pos[w1], pos[w2]);
+				float[] lab = d.lab[w1][w2];
+
+				final Long2IntInterface li = extractor.li;
+
+				int c = extractor.firstm(is, i, w1, w2, 0, cluster, svs);
+
+				for (int l = 0; l <lab.length ; l++)  lab[l]=-100 ;
+
+				for (int l = 0; l <labels.length ; l++) {
+					short label = labels[l];
+
+					f.clear();
+					int lv = extractor.d0.computeLabeValue(label,Extractor.s_type);
+					for(int k=0;k<c;k++)if (svs[k]>0) f.add(li.l2i(svs[k]+lv));
+
+
+					lab[label]=f.getScoreF();
+				}
+
+				labels = Edges.get(pos[w2], pos[w1]);
+				lab = d.lab[w2][w1];
+
+				for (int l = 0; l <lab.length ; l++)  lab[l]=-100 ;
+
+				
+				for (int l = 0; l <labels.length ; l++) {
+					int label = labels[l];
+
+					f.clear();
+					int lv = extractor.d0.computeLabeValue(label + Extractor.s_rel1 ,Extractor.s_type);
+					for(int k=0;k<c;k++)if (svs[k]>0) f.add(li.l2i(svs[k]+lv));
+
+					lab[label]=f.getScoreF();
+				}
+
+				int s = w1<w2 ? w1 : w2;
+				int e = w1<w2 ? w2 : w1;
+
+
+				for(int m=0;m<length;m++) {
+
+					int g = (m==s||e==m) ? -1 : m;
+				
+					int cn =extractor.second(is, i, w1,w2,g, 0, cluster, svs);
+					int cc = extractor.addClusterFeatures(is,i, w1, w2, g, cluster, 0, gvs,0);
+					//for(int k=0;k<c;k++) dl1.map(f,svs[k]);
+					
+
+					if(m>=w1) {
+						labels = Edges.get(pos[w1], pos[w2]);
+						float[] lab2 = new float[labels.length];
+						for (int l = 0; l <labels.length ; l++) {
+
+							short label = labels[l];
+
+							int lx =label+Extractor.s_rel1*(   g < w2?0:2   );
+
+							f.clear();
+							int lv = extractor.d0.computeLabeValue(lx,Extractor.s_type);
+							for(int k=0;k<cn;k++)if (svs[k]>0) f.add(li.l2i(svs[k]+lv));
+							for(int k=0;k<cc;k++)if (gvs[k]>0) f.add(li.l2i(gvs[k]+lv));
+
+							lab2[l] = f.getScoreF();
+						}
+						d.gra[w1][w2][m] =lab2;
+					}
+
+
+					if (m<=w2) {
+						labels = Edges.get(pos[w2], pos[w1]);
+						float lab2[];
+						d.gra[w2][w1][m] = lab2 = new float[labels.length];
+						for (int l = 0; l <labels.length ; l++) {
+
+							int label =  labels[l] ;
+							int lx =label+Extractor.s_rel1*(1 +  (g < w1?0:2) );
+
+							f.clear();
+							int lv = extractor.d0.computeLabeValue(lx,Extractor.s_type);
+							for(int k=0;k<cn;k++)if (svs[k]>0) f.add(li.l2i(svs[k]+lv));
+							for(int k=0;k<cc;k++)if (gvs[k]>0) f.add(li.l2i(gvs[k]+lv));
+							
+							lab2[l] = f.getScoreF();
+							
+						}
+					}
+
+
+					g = (m==s||e==m) ? -1 : m;
+
+					//	int cn = extractor.second(is,i,w1,w2,g,0, cluster, svs,Extractor._SIB);
+					if (m >=w1 && m<=w2) {
+						labels = Edges.get(pos[w1], pos[w2]);
+						float lab2[]= new float[labels.length];
+						d.sib[w1][w2][m] = lab2;
+
+						for (int l = 0; l <labels.length ; l++) {
+
+							short label = labels[l];
+
+							int lx =label+Extractor.s_rel1*( 8);
+							f.clear();
+							int lv = extractor.d0.computeLabeValue(lx,Extractor.s_type);
+							for(int k=0;k<cn;k++) if (svs[k]>0) f.add(li.l2i(svs[k]+lv));
+							for(int k=0;k<cc;k++) if (gvs[k]>0) f.add(li.l2i(gvs[k]+lv));
+
+										
+							lab2[l] = (float)f.score;//f.getScoreF();
+						}
+					}
+					if (m >=w1 && m <=w2) {
+						labels = Edges.get(pos[w2], pos[w1]);
+							float[] lab2 = new float[labels.length];
+							d.sib[w2][w1][m]=lab2;
+						 for (int l = 0; l <labels.length ; l++) {
+
+							int label =  labels[l] ;
+
+							int lx =label+Extractor.s_rel1*(9);
+
+							f.clear();
+							int lv = extractor.d0.computeLabeValue(lx,Extractor.s_type);
+							for(int k=0;k<cn;k++)  if (svs[k]>0)  	f.add(li.l2i(svs[k]+lv));
+							for(int k=0;k<cc;k++)  if (gvs[k]>0)  	f.add(li.l2i(gvs[k]+lv));
+											
+							lab2[l] = f.score;//f.getScoreF();
+						}
+					}
+				}
+			}
+
+		} catch(Exception e ) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+
+	static ArrayList<DSet> sets = new ArrayList<DSet>();
+
+	private DSet  get() {
+
+		synchronized (sets) {
+			if (sets.size()==0) return null;		
+			return sets.remove(sets.size()-1);
+		}
+	}
+	static public void add(int w1, int w2){
+		DSet ds =new DSet();
+		ds.w1=w1;
+		ds.w2=w2;
+		sets.add(ds);
+	}
+
+
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/parser/ParallelRearrange.java b/dependencyParser/basic/mate-tools/src/is2/parser/ParallelRearrange.java
new file mode 100755
index 0000000..dfd995a
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parser/ParallelRearrange.java
@@ -0,0 +1,127 @@
+package is2.parser;
+
+import is2.data.DataFES;
+
+import java.util.ArrayList;
+import java.util.concurrent.Callable;
+
+/**
+ * @author Dr. Bernd Bohnet, 30.08.2009
+ * 
+ * This class implements a parallel edge rearrangement for non-projective parsing;
+ * The linear method was first suggest by Rayn McDonald et. al. 2005.  
+ */
+final public class ParallelRearrange implements Callable<Object> {
+
+	// new parent child combination to explore
+	final static class PA {
+		final float p;
+		final short ch, pa;
+		public float max;
+		public short wh;
+		public short nPar;
+		public short nType;
+		public PA(float p2, short ch2, short pa2) { p=p2; ch=ch2;pa=pa2;}
+	}
+
+	// list of parent child combinations
+	static ArrayList<PA> parents = new ArrayList<PA>();
+	static ArrayList<PA> order = new ArrayList<PA>();
+	// best new parent child combination, found so far
+	public float max;
+
+	// some data from the dependency tree
+	//private EdgesC edges;	
+	private short[] pos;
+	private DataFES x;
+	private boolean[][] isChild ;	
+	public short[] heads,types;
+	
+	// child, new parent, new label
+	public short wh,nPar,nType;
+	
+	/**
+	 * Initialize the parallel rearrange thread
+	 * 
+	 * @param isChild2 is a child
+	 * @param edgesC the part-of-speech edge mapping
+	 * @param pos the part-of-speech 
+	 * @param x the data
+	 * @param s the heads
+	 * @param ts the types
+	 */
+	public ParallelRearrange(boolean[][] isChild2,short[] pos, DataFES x, short[] s, short[] ts) {
+		
+		heads =new short[s.length];
+		System.arraycopy(s, 0,  heads, 0, s.length);
+
+		types =new short[ts.length];
+		System.arraycopy(ts, 0,  types, 0, ts.length);
+
+		isChild=isChild2;
+	    //edges = edgesC;
+		this.pos =pos;
+		this.x=x;
+	}
+
+
+	@Override
+	public Object call() {
+		
+		// check the list of new possible parents and children for a better combination
+		while(true) {
+			PA px = getPA();
+			if (px==null) break;
+
+			float max=0;
+			short pa =px.pa, ch =px.ch;
+			
+			if(ch == pa || pa == heads[ch] || isChild[ch][pa]) continue;
+
+			short oldP = heads[ch], oldT = types[ch]; 
+
+			heads[ch]=pa;
+
+			short[] labels = Edges.get(pos[pa], pos[ch]);
+
+			for(int l=0;l<labels.length;l++) {
+
+				types[ch]=labels[l];
+
+				float p_new = Extractor.encode3(pos, heads, types, x);
+
+				if(max < p_new-px.p ) {
+					max = p_new-px.p; wh = ch; nPar = pa; nType = labels[l] ;
+					px.max=max;
+					px.wh=ch;
+					px.nPar = pa;
+					px.nType =labels[l];
+				}
+			}
+			heads[ch]= oldP; types[ch]=oldT;
+		}
+		return null;
+	}
+
+	/**
+	 * Add a child-parent combination which are latter explored for rearrangement
+	 * 
+	 * @param p2
+	 * @param ch2
+	 * @param pa
+	 */
+	static public void add(float p2, short ch2, short pa) {
+		PA px = new PA(p2,ch2,pa);
+		parents.add(px);
+		order.add(px);
+	}
+
+	static private PA getPA() {
+		synchronized (parents) {
+			if (parents.size()==0) return null;
+			return parents.remove(parents.size()-1);
+		}
+	}
+
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/parser/Parameters.java b/dependencyParser/basic/mate-tools/src/is2/parser/Parameters.java
new file mode 100755
index 0000000..cb13a69
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parser/Parameters.java
@@ -0,0 +1,38 @@
+/**
+ * 
+ */
+package is2.parser;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import is2.data.FV;
+import is2.data.IFV;
+import is2.data.Instances;
+import is2.data.Parse;
+
+/**
+ * @author Bernd Bohnet, 31.08.2009
+ * 
+ * 
+ */
+public abstract class Parameters {
+
+	
+	public abstract void average(double avVal);
+	
+	public abstract void update(FV act, FV pred, Instances isd, int instc, Parse d, double upd, double e);
+	
+	public abstract void write(DataOutputStream dos) throws IOException;
+	
+	public abstract void read(DataInputStream dis ) throws IOException;
+	
+	public abstract int size();
+
+	/**
+	 * @return
+	 */
+	public abstract IFV getFV() ;
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/parser/ParametersFloat.java b/dependencyParser/basic/mate-tools/src/is2/parser/ParametersFloat.java
new file mode 100755
index 0000000..c2cbe93
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parser/ParametersFloat.java
@@ -0,0 +1,137 @@
+package is2.parser;
+
+import is2.data.F2SF;
+import is2.data.FV;
+import is2.data.Instances;
+import is2.data.Parse;
+import is2.util.DB;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+
+
+final public class ParametersFloat extends Parameters  {
+
+	public float[] parameters;
+	public float[] total;
+
+	public ParametersFloat(int size) {
+		parameters = new   float[size];
+		total = new float[size];
+		for(int i = 0; i < parameters.length; i++) {
+			parameters[i] = 0F;
+			total[i] = 0F;
+		}
+	}
+
+	/**
+	 * @param parameters2
+	 */
+	public ParametersFloat(float[] p) {
+		parameters =p;
+	}
+
+
+	@Override
+	public void average(double avVal) {
+		for(int j = 0; j < total.length; j++) {
+			parameters[j] = total[j]/((float)avVal);
+		}
+		total =null;
+	}
+
+	public ParametersFloat average2(double avVal) {
+		float[] px = new float[this.parameters.length];
+		for(int j = 0; j < total.length; j++) {
+			px[j] = total[j]/((float)avVal);
+		}
+		ParametersFloat pf = new ParametersFloat(px);
+		return pf;
+	}
+	
+	@Override
+	public void update(FV act, FV pred, Instances isd, int instc, Parse d, double upd, double e) {
+
+		e++;
+		
+		float lam_dist = getScore(act) - getScore(pred);
+		
+		float b = (float)e-lam_dist;
+		
+		FV dist = act.getDistVector(pred);
+		
+		dist.update(parameters, total, hildreth(dist,b), upd,false);  
+	}
+
+	protected double hildreth(FV a, double b) {
+
+		double A = a.dotProduct(a);
+		if (A<=0.0000000000000000001) return 0.0;
+		return b/A;
+	}
+
+	
+	public float getScore(FV fv) {
+		if (fv ==null) return 0.0F;
+		return fv.getScore(parameters,false);
+
+	}
+
+	@Override
+	final public void write(DataOutputStream dos) throws IOException{
+
+		dos.writeInt(parameters.length);
+		for(float d : parameters) dos.writeFloat(d);
+
+	}
+
+	@Override
+	public void read(DataInputStream dis ) throws IOException{
+
+		parameters = new float[dis.readInt()];
+		int notZero=0;
+		for(int i=0;i<parameters.length;i++) {
+			parameters[i]=dis.readFloat();
+			if (parameters[i]!=0.0F) notZero++; 
+		}
+		
+		
+		DB.println("read parameters "+parameters.length+" not zero "+notZero);
+
+	}
+	
+	public int countNZ() {
+
+		int notZero=0;
+		for(int i=0;i<parameters.length;i++) {
+			if (parameters[i]!=0.0F) notZero++; 
+		}
+		return notZero;
+		
+	//	DB.println("read parameters "+parameters.length+" not zero "+notZero);
+
+	}
+
+
+	/* (non-Javadoc)
+	 * @see is2.sp09k99995.Parameters#getFV()
+	 */
+	@Override
+	public F2SF getFV() {
+		return new F2SF(parameters);
+	}
+
+
+	/* (non-Javadoc)
+	 * @see is2.sp09k99999.Parameters#size()
+	 */
+	@Override
+	public int size() {
+		return parameters.length;
+	}
+
+
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/parser/Parser.java b/dependencyParser/basic/mate-tools/src/is2/parser/Parser.java
new file mode 100755
index 0000000..d6ba6d6
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parser/Parser.java
@@ -0,0 +1,664 @@
+package is2.parser;
+
+
+import is2.data.Cluster;
+import is2.data.DataF;
+import is2.data.DataFES;
+import is2.data.F2SF;
+import is2.data.FV;
+import is2.data.Instances;
+import is2.data.Long2Int;
+import is2.data.Long2IntInterface;
+import is2.data.Parse;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.io.CONLLWriter09;
+import is2.tools.Retrainable;
+import is2.tools.Tool;
+import is2.util.DB;
+import is2.util.OptionsSuper;
+import is2.util.ParserEvaluator;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Map.Entry;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+import java.util.zip.ZipOutputStream;
+
+
+
+public class Parser implements Tool, Retrainable {
+
+	// output evaluation info 
+	private static final boolean MAX_INFO = true;
+
+	public static int THREADS =4;
+
+	public Long2IntInterface l2i;
+	public ParametersFloat params;
+	public Pipe pipe;
+	public OptionsSuper options;
+
+
+	// keep some of the parsing information for later evaluation
+	public Instances is;
+	DataFES d2;
+	public Parse d=	null;
+
+	/**
+	 * Initialize the parser
+	 * @param options
+	 */
+	public Parser (OptionsSuper options) {
+
+		this.options=options;
+		pipe = new Pipe(options);
+
+		params = new ParametersFloat(0);  
+
+		// load the model
+		try {
+			readModel(options, pipe, params);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+	}
+
+
+	/**
+	 * @param modelFileName The file name of the parsing model
+	 */
+	public Parser(String modelFileName) {
+		this(new Options(new String[]{"-model",modelFileName}));
+	}
+
+
+	/**
+	 * 
+	 */
+	public Parser() {
+		// TODO Auto-generated constructor stub
+	}
+
+
+	public static void main (String[] args) throws Exception
+	{
+
+
+
+
+		long start = System.currentTimeMillis();
+		OptionsSuper options = new Options(args);
+
+
+		Runtime runtime = Runtime.getRuntime();
+		THREADS = runtime.availableProcessors();
+		if (options.cores<THREADS&&options.cores>0) THREADS =options.cores;		
+		DB.println("Found " + runtime.availableProcessors()+" cores use "+THREADS);
+
+
+
+		if (options.train) {
+
+			Parser p =new Parser();
+			p.options=options;
+
+			p.l2i = new Long2Int(options.hsize);
+
+			p.pipe =  new Pipe (options);
+			Instances is = new Instances();
+
+			Extractor.initFeatures();
+			p.pipe.extractor = new Extractor[THREADS];
+			DB.println("hsize "+options.hsize);
+
+			DB.println("Use "+(options.featureCreation==OptionsSuper.MULTIPLICATIVE?"multiplication":"shift")+"-based feature creation function");
+			for (int t=0;t<THREADS;t++)  p.pipe.extractor[t]=new Extractor(p.l2i, options.stack, options.featureCreation);
+
+			DB.println("Stacking "+options.stack);
+
+			p.pipe.createInstances(options.trainfile,is); 
+
+			p.params = new ParametersFloat(p.l2i.size());
+
+			p.train(options, p.pipe,p.params,is,p.pipe.cl);
+
+			p.writeModell(options, p.params, null,p.pipe.cl);
+
+		}
+
+		if (options.test) {
+
+			//	Parser p = new Parser();
+			Parser p = new Parser(options);
+
+			//			p. pipe = new Pipe(options);
+			//			p. params = new ParametersFloat(0);  // total should be zero and the parameters are later read
+
+			// load the model
+
+			//			p.readModel(options, p.pipe, p.params);
+
+			DB.println("label only? "+options.label);
+
+			p.out(options, p.pipe, p.params, !MAX_INFO, options.label);
+		}
+
+
+
+
+		System.out.println();
+
+		if (options.eval) {
+			System.out.println("\nEVALUATION PERFORMANCE:");
+			ParserEvaluator.evaluate(options.goldfile, options.outfile);
+		}
+
+		long end = System.currentTimeMillis();
+		System.out.println("used time "+((float)((end-start)/100)/10));
+
+		Decoder.executerService.shutdown();		
+		Pipe.executerService.shutdown();
+		System.out.println("end.");
+
+
+	}
+
+	/**
+	 * Read the models and mapping
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @throws IOException
+	 */
+	public   void readModel(OptionsSuper options, Pipe pipe, Parameters params) throws IOException {
+
+
+		DB.println("Reading data started");
+
+		// prepare zipped reader
+		ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(options.modelName)));
+		zis.getNextEntry();
+		DataInputStream dis = new DataInputStream(new BufferedInputStream(zis));
+
+		pipe.mf.read(dis);
+
+		pipe.cl = new Cluster(dis);
+
+		params.read(dis);
+		this.l2i = new Long2Int(params.size());
+		DB.println("parsing -- li size "+l2i.size());
+
+
+		pipe.extractor = new Extractor[THREADS];
+
+		boolean stack = dis.readBoolean();
+
+		options.featureCreation=dis.readInt();
+
+		for (int t=0;t<THREADS;t++) pipe.extractor[t]=new Extractor(l2i, stack,options.featureCreation);
+		DB.println("Stacking "+stack);
+
+		Extractor.initFeatures();
+		Extractor.initStat(options.featureCreation);
+
+
+		for (int t=0;t<THREADS;t++)  pipe.extractor[t].init();
+
+		Edges.read(dis);
+
+		options.decodeProjective = dis.readBoolean();
+
+		Extractor.maxForm = dis.readInt();
+
+		boolean foundInfo =false;
+		try {
+			String info =null;
+			int icnt = dis.readInt();
+			for(int i=0;i<icnt;i++) {
+				info = dis.readUTF();
+				System.out.println(info);
+			}
+		} catch (Exception e) {
+			if (!foundInfo) System.out.println("no info about training");
+		}
+
+
+		dis.close();
+
+		DB.println("Reading data finnished");
+
+		Decoder.NON_PROJECTIVITY_THRESHOLD =(float)options.decodeTH;
+
+		Extractor.initStat(options.featureCreation);
+
+	}
+
+
+
+	/**
+	 * Do the training
+	 * @param instanceLengths
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @param is 
+	 * @param cluster 
+	 * @throws IOException
+	 * @throws InterruptedException
+	 * @throws ClassNotFoundException
+	 */
+	public void train(OptionsSuper options, Pipe pipe, ParametersFloat params, Instances is, Cluster cluster) 
+			throws IOException, InterruptedException, ClassNotFoundException {
+
+
+		DB.println("\nTraining Information ");
+		DB.println("-------------------- ");
+
+
+		Decoder.NON_PROJECTIVITY_THRESHOLD =(float)options.decodeTH;
+
+		if (options.decodeProjective) System.out.println("Decoding: "+(options.decodeProjective?"projective":"non-projective")); 
+		else System.out.println(""+Decoder.getInfo());
+		int numInstances = is.size();
+
+		int maxLenInstances =0;
+		for(int i=0;i<numInstances;i++) if (maxLenInstances<is.length(i)) maxLenInstances=is.length(i);
+
+		DataFES data = new DataFES(maxLenInstances, pipe.mf.getFeatureCounter().get(PipeGen.REL).shortValue());
+
+		int iter = 0;
+		int del=0; 
+		float error =0;
+		float f1=0;
+
+		FV pred = new FV();
+		FV act = new FV();
+
+		double	upd =  (double)(numInstances*options.numIters)+1;
+
+		for(; iter < options.numIters; iter++) {
+
+			System.out.print("Iteration "+iter+": ");
+
+			long start = System.currentTimeMillis();
+
+			long last= System.currentTimeMillis();
+			error=0;
+			f1=0;
+			for(int n = 0; n < numInstances; n++) {
+
+				upd--;
+
+				if (is.labels[n].length>options.maxLen) continue;
+
+				String info = " td "+((Decoder.timeDecotder)/1000000F)+" tr "+((Decoder.timeRearrange)/1000000F)
+						+" te "+((Pipe.timeExtract)/1000000F);
+
+				if((n+1) %500 == 0) del= PipeGen.outValueErr(n+1, error,f1/n,del, last, upd,info);
+
+				short pos[] = is.pposs[n];
+
+				data = pipe.fillVector((F2SF)params.getFV(), is, n, data, cluster);
+
+				Parse d = Decoder.decode(pos,  data, options.decodeProjective, Decoder.TRAINING);
+
+				double e= pipe.errors(is, n ,d);
+
+				if (d.f1>0)f1+=d.f1;
+
+				if (e<=0) continue;
+
+				pred.clear();
+				pipe.extractor[0].encodeCat(is,n,pos,is.forms[n],is.plemmas[n],d.heads, d.labels, is.feats[n],pipe.cl, pred);
+
+				error += e;
+
+				params.getFV();
+
+
+				act.clear();
+				pipe.extractor[0].encodeCat(is,n,pos,is.forms[n],is.plemmas[n],is.heads[n], is.labels[n], is.feats[n],pipe.cl, act);
+
+				params.update(act, pred, is, n, d, upd,e);
+			}
+
+			String info = " td "+((Decoder.timeDecotder)/1000000F)+" tr "+((Decoder.timeRearrange)/1000000F)
+					+" te "+((Pipe.timeExtract)/1000000F)+" nz "+params.countNZ();
+			PipeGen.outValueErr(numInstances, error,f1/numInstances,del,last, upd,info);
+			del=0;
+			long end = System.currentTimeMillis();
+			System.out.println(" time:"+(end-start));			
+
+
+			ParametersFloat pf = params.average2((iter+1)*is.size());
+			try {
+
+				if (options.testfile!=null && options.goldfile!=null) {
+					out (options, pipe, pf, ! MAX_INFO,false);
+					ParserEvaluator.evaluate(options.goldfile, options.outfile);
+					//		writeModell(options, pf, ""+(iter+1),pipe.cl); 
+				}
+
+
+			} catch (Exception e) {
+				e.printStackTrace();
+			} 
+
+			if (error==0) {
+				DB.println("stopped because learned all lessons");
+				break;
+			}
+
+			Decoder.timeDecotder=0;Decoder.timeRearrange=0; Pipe.timeExtract=0;
+
+
+		}
+		if (options.average)params.average(iter*is.size());
+	}                                   
+
+
+	/**
+	 * Do the parsing job
+	 * 
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @throws IOException
+	 */
+	private void out (OptionsSuper options, Pipe pipe, ParametersFloat params, boolean maxInfo, boolean labelOnly) 
+			throws Exception {
+
+		long start = System.currentTimeMillis();
+
+		CONLLReader09 depReader = new CONLLReader09(options.testfile, options.formatTask);
+		CONLLWriter09 depWriter = new CONLLWriter09(options.outfile, options.formatTask);
+
+		int cnt = 0;
+		int del=0;
+		long last = System.currentTimeMillis();
+
+		if (maxInfo) System.out.println("\nParsing Information ");
+		if (maxInfo) System.out.println("------------------- ");
+
+		if (maxInfo && !options.decodeProjective) System.out.println(""+Decoder.getInfo());
+
+		System.out.print("Processing Sentence: ");
+
+		while(true) {
+
+	//		Instances is = new Instances();
+	//		is.init(1, new MFO(),options.formatTask);
+
+			//					SentenceData09 instance = pipe.nextInstance(is, depReader);
+
+			SentenceData09 instance = depReader.getNext();
+			if (instance==null) break;
+			cnt++;
+
+			SentenceData09 i09 = this.parse(instance,params, labelOnly,options);
+
+			depWriter.write(i09);
+			del=PipeGen.outValue(cnt, del,last);
+
+		}
+		//pipe.close();
+		depWriter.finishWriting();
+		long end = System.currentTimeMillis();
+		//		DB.println("errors "+error);
+		if (maxInfo) System.out.println("Used time " + (end-start));
+		if (maxInfo) System.out.println("forms count "+Instances.m_count+" unkown "+Instances.m_unkown);
+
+	}
+
+	/**
+	 * Parse a single sentence
+	 * 
+	 * @param instance
+	 * @param params
+	 * @param labelOnly
+	 * @param options
+	 * @return
+	 */
+	public SentenceData09 parse (SentenceData09 instance, ParametersFloat params, boolean labelOnly, OptionsSuper options)   {
+
+		String[] types = new String[pipe.mf.getFeatureCounter().get(PipeGen.REL)];
+		for (Entry<String, Integer> e : MFO.getFeatureSet().get(PipeGen.REL).entrySet())  	types[e.getValue()] = e.getKey();
+
+				is = new Instances();
+				is.init(1, new MFO(),options.formatTask);
+				new CONLLReader09().insert(is, instance); 
+
+				// use for the training ppos
+
+				SentenceData09 i09 = new SentenceData09(instance);
+				i09.createSemantic(instance);
+
+				if (labelOnly) {
+					F2SF f2s =params.getFV();
+
+					// repair pheads
+
+					is.pheads[0]= is.heads[0];
+
+					for(int l=0;l<is.pheads[0].length;l++) {
+						if (is.pheads[0][l]<0)is.pheads[0][l]=0;
+					}
+
+					short[] labels = pipe.extractor[0].searchLabel(is, 0, is.pposs[0], is.forms[0], is.plemmas[0], is.pheads[0], is.plabels[0], is.feats[0], pipe.cl, f2s);
+
+					for(int j = 0; j < instance.forms.length-1; j++) {
+						i09.plabels[j] = types[labels[j+1]];
+						i09.pheads[j] = is.pheads[0][j+1];
+					}
+					return i09;
+				}
+
+				if (options.maxLength > instance.length() && options.minLength <= instance.length()) {
+					try {
+						//			System.out.println("prs "+instance.forms[0]);
+						//			System.out.println("prs "+instance.toString());
+						d2 = pipe.fillVector(params.getFV(), is,0,null,pipe.cl);//cnt-1
+						d =Decoder.decode(is.pposs[0],d2,options.decodeProjective, !Decoder.TRAINING); //cnt-1
+
+					}catch (Exception e) {		
+						e.printStackTrace();
+					}
+
+					for(int j = 0; j < instance.forms.length-1; j++) {
+						i09.plabels[j] = types[d.labels[j+1]];
+						i09.pheads[j] = d.heads[j+1];
+					}
+				}
+				return i09;
+
+	}
+
+	is2.io.CONLLReader09 reader = new is2.io.CONLLReader09(true);
+	/* (non-Javadoc)
+	 * @see is2.tools.Tool#apply(is2.data.SentenceData09)
+	 */
+	@Override
+	public SentenceData09 apply(SentenceData09 snt09) {
+
+		SentenceData09 it = new SentenceData09();
+		it.createWithRoot(snt09);
+
+		SentenceData09 out=null;
+		try {
+
+
+			//		for(int k=0;k<it.length();k++) {
+			//			it.forms[k] = reader.normalize(it.forms[k]);
+			//			it.plemmas[k] = reader.normalize(it.plemmas[k]);
+			//		}
+
+			out = parse(it,this.params,false,options);
+
+
+		} catch(Exception e) {
+			e.printStackTrace();
+		}
+
+		Decoder.executerService.shutdown();		
+		Pipe.executerService.shutdown();
+
+		return out;
+	}
+
+	/**
+	 * Get the edge scores of the last parse.
+	 * @return the scores
+	 */
+	public float[] getInfo() {
+
+
+		float[] scores = new float[is.length(0)];
+		Extractor.encode3(is.pposs[0], d.heads, d.labels, d2,scores);
+
+		return scores;
+	}
+
+
+	/**
+	 * Write the parsing model
+	 * 
+	 * @param options
+	 * @param params
+	 * @param extension
+	 * @throws FileNotFoundException
+	 * @throws IOException
+	 */
+	private void writeModell(OptionsSuper options, ParametersFloat params, String extension, Cluster cs) throws FileNotFoundException, IOException {
+
+		String name = extension==null?options.modelName:options.modelName+extension;
+		//		System.out.println("Writting model: "+name);
+		ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(name)));
+		zos.putNextEntry(new ZipEntry("data")); 
+		DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(zos));     
+
+		MFO.writeData(dos);
+		cs.write(dos);
+
+		params.write(dos);
+
+		dos.writeBoolean(options.stack);
+		dos.writeInt(options.featureCreation);
+
+
+		Edges.write(dos);
+
+		dos.writeBoolean(options.decodeProjective);
+
+		dos.writeInt(Extractor.maxForm);
+
+		dos.writeInt(5);  // Info count
+		dos.writeUTF("Used parser   "+Parser.class.toString());
+		dos.writeUTF("Creation date "+(new SimpleDateFormat("yyyy.MM.dd HH:mm:ss")).format(new Date()));
+		dos.writeUTF("Training data "+options.trainfile);
+		dos.writeUTF("Iterations    "+options.numIters+" Used sentences "+options.count);
+		dos.writeUTF("Cluster       "+options.clusterFile);
+
+		dos.flush();
+		dos.close();
+	}
+
+
+	@Override
+	public boolean retrain(SentenceData09 sentence, float upd, int iterations) {
+
+		params.total = params.parameters;
+
+		boolean done=false;
+
+		for(int k=0;k<iterations;k++) {
+			try {
+				// create the data structure
+				DataFES data = new DataFES(sentence.length(), pipe.mf.getFeatureCounter().get(PipeGen.REL).shortValue());
+
+
+				Instances is = new Instances();
+				is.m_encoder =pipe.mf;
+
+
+
+				is.init(1, pipe.mf,options.formatTask);
+				new CONLLReader09().insert(is, sentence); 
+
+				//				String list[] = ((MFO)is.m_encoder).reverse(((MFO)is.m_encoder).getFeatureSet().get(Pipe.POS));
+				//				for(String s :list) {
+				//					System.out.println(s+" ");
+				//				}
+
+				//				for(int i=0;i<is.length(0);i++) {
+
+				//					System.out.printf("%d\t %d\t %d \n",i,is.forms[0][i],is.pposs[0][i] );
+				//					System.out.printf("%s\t form:%s pos:%s\n",i,sentence.forms[i],sentence.ppos[i]);
+
+				//				}
+
+				SentenceData09 i09 = new SentenceData09(sentence);
+				i09.createSemantic(sentence);
+
+
+
+				// create the weights 
+				data = pipe.fillVector((F2SF)params.getFV(), is, 0, data, pipe.cl);
+
+				short[] pos = is.pposs[0];
+
+				// parse the sentence
+				Parse d = Decoder.decode(pos,  data, options.decodeProjective, Decoder.TRAINING);
+
+				// training successful?
+				double e= pipe.errors(is, 0 ,d);
+				//			System.out.println("errors "+e);
+				if (e==0) {
+
+
+					done= true;
+					break;
+				}
+
+				// update the weight vector
+				FV pred = new FV();
+				pipe.extractor[0].encodeCat(is,0,pos,is.forms[0],is.plemmas[0],d.heads, d.labels, is.feats[0],pipe.cl, pred);
+
+				params.getFV();
+
+				FV act = new FV();
+				pipe.extractor[0].encodeCat(is,0,pos,is.forms[0],is.plemmas[0],is.heads[0], is.labels[0], is.feats[0],pipe.cl, act);
+
+				params.update(act, pred, is, 0, d, upd,e);
+
+				if (upd >0)upd--;
+
+			} catch(Exception e) {
+				e.printStackTrace();
+			}
+		}
+		Decoder.executerService.shutdown();		
+		Pipe.executerService.shutdown();
+
+
+		return done;
+	}
+
+
+	@Override
+	public boolean retrain(SentenceData09 sentence, float upd, int iterations, boolean print) {
+		// TODO Auto-generated method stub
+		return  retrain( sentence,  upd,  iterations);
+	}
+}
\ No newline at end of file
diff --git a/dependencyParser/basic/mate-tools/src/is2/parser/Pipe.java b/dependencyParser/basic/mate-tools/src/is2/parser/Pipe.java
new file mode 100755
index 0000000..13e9389
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parser/Pipe.java
@@ -0,0 +1,221 @@
+package is2.parser;
+
+import is2.data.Cluster;
+import is2.data.DataF;
+import is2.data.DataFES;
+import is2.data.F2SF;
+import is2.data.Instances;
+
+import is2.data.Parse;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+
+import is2.util.OptionsSuper;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.concurrent.ExecutorService;
+
+final public class Pipe extends PipeGen {
+
+	public Extractor[] extractor;
+	final public MFO mf = new MFO();
+
+	public Cluster cl;
+	
+	
+	private OptionsSuper options;
+	public static long timeExtract;
+
+	public Pipe(OptionsSuper o) {
+		options = o;
+	}
+
+	public void createInstances(String file, Instances is)
+	throws Exception {
+
+		CONLLReader09 depReader = new CONLLReader09(file);
+
+		mf.register(REL,"<root-type>");
+
+		// register at least one predicate since the parsing data might not contain predicates as in 
+		// the Japaness corpus but the development sets contains some
+
+		long sl=0;
+
+		System.out.print("Registering feature parts of sentence: ");
+		int ic = 0;
+		int del = 0;
+		while (true) {
+			SentenceData09 instance = depReader.getNext();
+			if (instance == null) break;
+			ic++;
+
+			sl+=instance.labels.length;
+
+			if (ic % 1000 == 0) {
+				del = outValue(ic, del);
+			}
+
+			String[] labs1 = instance.labels;
+			for (int i1 = 0; i1 < labs1.length; i1++) mf.register(REL, labs1[i1]);
+
+			String[] w = instance.forms;
+			for (int i1 = 0; i1 < w.length; i1++) mf.register(WORD, depReader.normalize(w[i1]));
+
+			w = instance.plemmas;
+			for (int i1 = 0; i1 < w.length; i1++) mf.register(WORD, depReader.normalize(w[i1]));
+
+
+			w = instance.ppos;
+			for (int i1 = 0; i1 < w.length; i1++) mf.register(POS, w[i1]);
+
+			w = instance.gpos;
+			for (int i1 = 0; i1 < w.length; i1++) mf.register(POS, w[i1]);
+
+			if (instance.feats !=null) {
+				String fs[][] = instance.feats;
+				for (int i1 = 0; i1 < fs.length; i1++){	
+					w =fs[i1];
+					if (w==null) continue;
+					for (int i2 = 0; i2 < w.length; i2++) mf.register(FEAT, w[i2]);
+				}
+			}
+
+			if ((ic-1)>options.count) break;
+		}
+		del = outValue(ic, del);
+
+		System.out.println();
+		Extractor.initFeatures();
+
+		Extractor.maxForm = mf.getFeatureCounter().get(WORD);
+		
+		if (options.clusterFile==null)cl = new Cluster();
+		else cl=  new Cluster(options.clusterFile, mf,6);
+		
+		
+
+		mf.calculateBits();
+		Extractor.initStat(options.featureCreation);
+		
+		System.out.println(""+mf.toString());
+		
+		for(Extractor e : extractor) e.init();
+
+		depReader.startReading(file);
+
+		int num1 = 0;
+		
+		is.init(ic, new MFO());
+
+		Edges.init(mf.getFeatureCounter().get(POS));
+		
+		
+		System.out.print("Creating edge filters and read corpus: ");
+		del = 0;
+
+		while (true) {
+			if (num1 % 100 == 0)  del = outValue(num1, del);
+
+			SentenceData09 instance1 = depReader.getNext(is);
+
+			if (instance1 == null) break;
+
+			int last = is.size() - 1;
+			short[] pos =is.pposs[last];
+
+			for (int k = 0; k < is.length(last); k++) {
+				if (is.heads[last][k] < 0)	continue;
+				Edges.put(pos[is.heads[last][k]],pos[k], is.labels[last][k]);
+//				Edges.put(pos[k],pos[is.heads[last][k]], is.labels[last][k]);
+			}
+
+			if (!options.allFeatures && num1 > options.count) break;
+
+			num1++;
+
+		}
+		del = outValue(num1, del);
+		System.out.println();
+		Edges.findDefault();
+	}
+
+
+	/**
+	 * Creates an instance for outputParses
+	 * 
+	 * @param is
+	 * @return
+	 * @throws IOException
+	 */
+	protected final SentenceData09 nextInstance(Instances is, CONLLReader09 depReader) throws Exception {
+
+		SentenceData09 instance = depReader.getNext(is);
+		if (instance == null || instance.forms == null)	return null;
+
+		return instance;
+	}
+
+	 public static ExecutorService executerService =java.util.concurrent.Executors.newFixedThreadPool(Parser.THREADS);
+
+
+	public DataFES fillVector(F2SF params, Instances is,int inst, DataFES d,  Cluster cluster) throws InterruptedException {
+
+		long ts = System.nanoTime();
+
+		if (executerService.isShutdown()) executerService =java.util.concurrent.Executors.newCachedThreadPool();
+		
+		
+		final int length = is.length(inst);
+		if (d ==null || d.len<length)d = new DataFES(length,mf.getFeatureCounter().get(PipeGen.REL).shortValue());
+
+		ArrayList<ParallelExtract> pe = new ArrayList<ParallelExtract>();
+		for(int i=0;i<Parser.THREADS;i++) pe.add(new ParallelExtract(extractor[i],is, inst, d, (F2SF)params.clone(), cluster));
+
+		for (int w1 = 0; w1 < length; w1++) {
+			for (int w2 =w1+1; w2 < length; w2++) {
+
+				if (w1==w2) continue;
+
+				ParallelExtract.add(w1, w2);
+
+
+			}
+		}
+//		for(int i=0;i<efp.length;i++) efp[i].start();					
+//		for(int i=0;i<efp.length;i++) efp[i].join();
+		executerService.invokeAll( pe);
+
+		timeExtract += (System.nanoTime()-ts);
+
+		
+		
+
+		
+		
+		return d;
+	}
+
+	public double errors( Instances is, int ic, Parse p) {
+		short[] act = is.heads[ic];
+		double correct = 0;
+
+		// do not count root
+		for(int i = 1; i < act.length; i++)  	 {
+
+			//		if (is.ppos[ic] ==null ) System.out.println("mf null"+is.ppos[ic][i]);
+			if (p.heads[i]==act[i] ){
+				correct+=0.5;
+				if (p.labels[i]==is.labels[ic][i] ) correct+=0.5;
+			}
+		}
+
+		double x = ((double)act.length- 1 - correct );
+
+		p.f1 = (double)correct / (double)(act.length-1);
+
+		return x;
+	}
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/parser/package.html b/dependencyParser/basic/mate-tools/src/is2/parser/package.html
new file mode 100755
index 0000000..a4f40a2
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parser/package.html
@@ -0,0 +1,11 @@
+Package info
+<ul>
+  <li> separate cluster feature to keep speed since two many features in a function reduce speed drastically. </li>
+  <li> try second order stacking features </li>
+  <li> parser stacking features </li>
+  <li> lots of cluster features </li>
+  <li> Iteration over edges and not extraction of all edges each time </li>
+  <li> integrated new structurer writer </li>
+</ul>
+  Change in FS, I observed lots of duplicated grand-children features
+<br>
\ No newline at end of file
diff --git a/dependencyParser/basic/mate-tools/src/is2/parserR2/Decoder.java b/dependencyParser/basic/mate-tools/src/is2/parserR2/Decoder.java
new file mode 100755
index 0000000..1f0424e
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parserR2/Decoder.java
@@ -0,0 +1,377 @@
+package is2.parserR2;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+
+import decoder.ParallelDecoder;
+import decoder.ParallelRearrangeNBest;
+import decoder.ParallelRearrangeNBest2;
+import extractors.Extractor;
+
+
+import is2.data.Closed;
+import is2.data.DataF;
+import is2.data.Instances;
+import is2.data.Open;
+import is2.data.Parse;
+import is2.data.ParseNBest;
+import is2.util.DB;
+
+
+/**
+ * @author Bernd Bohnet, 01.09.2009
+ * 
+ * This methods do the actual work and they build the dependency trees. 
+ */
+final public class Decoder   {
+
+	public static final boolean TRAINING = true;
+	public static long timeDecotder;
+	public static long timeRearrange;
+	
+	public static final boolean LAS = true;
+
+	/**
+	 * Threshold for rearrange edges non-projective
+	 */
+	public static float NON_PROJECTIVITY_THRESHOLD = 0.3F;
+
+	public static ExecutorService executerService =java.util.concurrent.Executors.newFixedThreadPool(Parser.THREADS);
+
+	
+	// do not initialize
+	private Decoder() {};
+	
+	
+	/**
+	 * Build a dependency tree based on the data
+	 * @param pos part-of-speech tags
+	 * @param x the data
+	 * @param projective projective or non-projective
+	 * @param edges the edges
+	 * @return a parse tree
+	 * @throws InterruptedException
+	 */
+	public static List<ParseNBest>  decode(short[] pos,  DataF x, boolean projective, Extractor extractor) throws InterruptedException {
+
+		long ts = System.nanoTime();
+		
+		if (executerService.isShutdown()) executerService = java.util.concurrent.Executors.newCachedThreadPool();
+		final int n = pos.length;
+
+		final Open O[][][][] = new Open[n][n][2][];
+		final Closed C[][][][] = new Closed[n][n][2][];
+
+		ArrayList<ParallelDecoder> pe = new ArrayList<ParallelDecoder>(); 
+
+		for(int i=0;i<Parser.THREADS ;i++)  pe.add(new ParallelDecoder(pos, x,  O, C, n));
+		
+		for (short k = 1; k < n; k++) {
+
+			// provide the threads the data
+			for (short s = 0; s < n; s++) {
+				short t = (short) (s + k);
+				if (t >= n) break;
+				
+				ParallelDecoder.add(s,t);
+			}
+						
+			executerService.invokeAll(pe);
+		}
+		
+		double bestSpanScore = (-1.0F / 0.0F);
+		Closed bestSpan = null;
+		for (int m = 1; m < n; m++)
+			if (C[0][n - 1][1][m].p > bestSpanScore) {
+				bestSpanScore = C[0][n - 1][1][m].p;
+				bestSpan = C[0][n - 1][1][m];
+			}
+
+		// build the dependency tree from the chart 
+		ParseNBest out= new ParseNBest(pos.length);
+
+		bestSpan.create(out);
+
+		out.heads[0]=-1;
+		out.labels[0]=0;
+		bestProj=out;
+
+		timeDecotder += (System.nanoTime()-ts);
+	//	DB.println(""+out);
+		 
+		ts = System.nanoTime();
+		List<ParseNBest> parses;
+		
+		if (!projective) {
+			
+		//	if (training) 
+		//		rearrange(pos, out.heads, out.types,x,training);
+			//else { 
+		//	DB.println("bestSpan score "+(float)bestSpan.p+" comp score "+Extractor.encode3(pos, out.heads, out.types, x));
+		//	System.out.println();
+			//	Parse best = new Parse(out.heads,out.types,Extractor.encode3(pos, out.heads, out.types, x));
+				parses = rearrangeNBest(pos, out.heads, out.labels,x,extractor);
+		//		DB.println("1best "+parses.get(0).f1);
+		//		DB.println(""+parses.get(0).toString());
+				
+				
+			//	for(ParseNBest p :parses) if (p.heads==null) p.signature2parse(p.signature());
+				
+		///		if (parses.get(0).f1>(best.f1+NON_PROJECTIVITY_THRESHOLD)) out = parses.get(0);
+		//		else out =best;
+			
+		//	}
+		} else {
+			parses = new ArrayList<ParseNBest>();
+			parses.add(out);
+		}
+		timeRearrange += (System.nanoTime()-ts);		
+
+		return parses;
+	}
+
+	static Parse bestProj = null;
+	
+	
+
+	
+	/**
+	 * This is the parallel non-projective edge re-arranger
+	 *  
+	 * @param pos part-of-speech tags
+	 * @param heads parent child relation 
+	 * @param labs edge labels 
+	 * @param x the data
+	 * @param edges the existing edges defined by part-of-speech tags 
+	 * @throws InterruptedException
+	 */
+	public static List<ParseNBest> rearrangeNBestP(short[] pos, short[] heads, short[] labs,  DataF x, Extractor extractor) throws InterruptedException {
+		
+		ArrayList<ParallelRearrangeNBest2> pe = new ArrayList<ParallelRearrangeNBest2>(); 
+		
+		int round =0;
+		ArrayList<ParseNBest> parses = new ArrayList<ParseNBest>();
+		ParseNBest px =new ParseNBest();
+		px.signature(heads,labs);
+		//Object extractor;
+		px.f1=extractor.encode3(pos, heads, labs, x);
+		parses.add(px);
+		
+		float lastNBest = Float.NEGATIVE_INFINITY;
+		
+		HashSet<Parse> done = new HashSet<Parse>();
+		gnu.trove.THashSet<CharSequence> contained = new gnu.trove.THashSet<CharSequence>();
+
+		while(true) {
+		
+			pe.clear();
+
+			// used the first three parses
+			int ic=0, considered=0;
+			while(true) {
+				
+				if (parses.size()<=ic || considered>11) break;
+				
+				ParseNBest parse = parses.get(ic);
+				
+				ic++;
+				// parse already extended
+				if (done.contains(parse))  continue;
+				considered++;
+
+				parse.signature2parse(parse.signature());
+				
+				done.add(parse);
+				
+				
+				boolean[][]	isChild = new boolean[heads.length][heads.length];
+
+				for(int i = 1, l1=1; i < heads.length; i++,l1=i)  
+					while((l1= heads[l1]) != -1) isChild[l1][i] = true;
+
+				
+				// check the list of new possible parents and children for a better combination
+				for(short ch = 1; ch < heads.length; ch++) {
+					for(short pa = 0; pa < heads.length; pa++) {
+						if(ch == pa || pa == heads[ch] || isChild[ch][pa]) continue;
+						ParallelRearrangeNBest2.add(parse.clone(), ch, pa);
+					}
+				}
+				
+			}			
+
+			for(int t =0;t<Parser.THREADS;t++) pe.add(new ParallelRearrangeNBest2( pos,x,lastNBest,extractor, NON_PROJECTIVITY_THRESHOLD) );
+
+			
+			executerService.invokeAll(pe);
+				
+			// avoid to add parses several times
+			for(ParallelRearrangeNBest2 rp : pe) {
+				for(int k=rp.parses.size()-1;k>=0;k--) {
+					if (lastNBest>rp.parses.get(k).f1) continue;
+					CharSequence sig = rp.parses.get(k).signature();
+					if (!contained.contains(sig)) {
+						parses.add(rp.parses.get(k));
+						contained.add(sig);
+					}
+				}
+			}
+
+			Collections.sort(parses);
+			
+			if (round >=2) break;
+			round ++;
+					
+			// do not use to much memory
+			if (parses.size()>Parser.NBest) {
+	//			if (parses.get(Parser.NBest).f1>lastNBest) lastNBest = (float)parses.get(Parser.NBest).f1;
+				parses.subList(Parser.NBest, parses.size()-1).clear();
+			}
+		}
+		return parses;
+	}
+
+	
+	/**
+	 * This is the parallel non-projective edge re-arranger
+	 *  
+	 * @param pos part-of-speech tags
+	 * @param heads parent child relation 
+	 * @param labs edge labels 
+	 * @param x the data
+	 * @param edges the existing edges defined by part-of-speech tags 
+	 * @throws InterruptedException
+	 */
+	public static List<ParseNBest> rearrangeNBest(short[] pos, short[] heads, short[] labs,  DataF x, Extractor extractor) throws InterruptedException {
+		
+		ArrayList<ParallelRearrangeNBest> pe = new ArrayList<ParallelRearrangeNBest>(); 
+		
+		int round =0;
+		ArrayList<ParseNBest> parses = new ArrayList<ParseNBest>();
+		ParseNBest px =new ParseNBest();
+		px.signature(heads,labs);
+		//Object extractor;
+		px.f1=extractor.encode3(pos, heads, labs, x);
+		parses.add(px);
+		
+		float lastNBest = Float.NEGATIVE_INFINITY;
+		
+		HashSet<Parse> done = new HashSet<Parse>();
+		gnu.trove.THashSet<CharSequence> contained = new gnu.trove.THashSet<CharSequence>();
+		while(true) {
+		
+			pe.clear();
+
+			// used the first three parses
+			int i=0;
+			while(true) {
+				
+				if (parses.size()<=i||pe.size()>12) break;
+				
+				ParseNBest parse = parses.get(i);
+				
+				i++;
+				
+				// parse already extended
+				if (done.contains(parse))  continue;
+
+//				DB.println("err "+parse.heads);
+
+				parse.signature2parse(parse.signature());
+				
+				done.add(parse);
+				pe.add(new ParallelRearrangeNBest( pos,x,parse,lastNBest,extractor, (float)parse.f1,NON_PROJECTIVITY_THRESHOLD) );
+			}			
+		
+			executerService.invokeAll(pe);
+				
+			// avoid to add parses several times
+			for(ParallelRearrangeNBest rp : pe) {
+				for(int k=rp.parses.size()-1;k>=0;k--) {
+					if (lastNBest>rp.parses.get(k).f1) continue;
+					CharSequence sig = rp.parses.get(k).signature();
+					if (!contained.contains(sig)) {
+						parses.add(rp.parses.get(k));
+						contained.add(sig);
+					}
+				}
+			}
+
+			Collections.sort(parses);
+			
+			if (round >=2) break;
+			round ++;
+					
+			// do not use to much memory
+			if (parses.size()>Parser.NBest) {
+				if (parses.get(Parser.NBest).f1>lastNBest) lastNBest = (float)parses.get(Parser.NBest).f1;
+				parses.subList(Parser.NBest, parses.size()-1).clear();
+			}
+		}
+		return parses;
+	}
+	
+	public static String getInfo() {
+
+		return "Decoder non-projectivity threshold: "+NON_PROJECTIVITY_THRESHOLD;
+	}
+
+
+	/**
+	 * @param parses
+	 * @param is
+	 * @param i
+	 * @return
+	 */
+	public static int getGoldRank(List<ParseNBest> parses, Instances is, int i, boolean las) {
+		
+		for(int p=0;p<parses.size();p++) {
+			
+			if (parses.get(p).heads==null)parses.get(p).signature2parse(parses.get(p).signature());
+			
+			boolean eq =true;
+			for(int w =1;w<is.length(0);w++) {
+				if (is.heads[i][w]!=parses.get(p).heads[w] || (is.labels[i][w]!=parses.get(p).labels[w]&& las )) {
+					eq=false;
+					break;
+				}
+			}
+			if (eq) return p; 	
+		}
+		return -1;
+	}
+
+	public static int getSmallestError(List<ParseNBest> parses, Instances is, int i, boolean las) {
+		
+		int smallest=-1;
+		for(int p=0;p<parses.size();p++) {
+		
+			int err=0;
+			for(int w =1;w<is.length(0);w++) {
+				if (is.heads[i][w]!=parses.get(p).heads[w] || (is.labels[i][w]!=parses.get(p).labels[w] && las )) {
+					err++;
+				}
+			}
+			if (smallest==-1||smallest>err) smallest=err;
+			if (smallest==0) return 0;
+		}
+		return smallest;
+	}
+
+	public static int getError(ParseNBest parse, Instances is, int i, boolean las) {
+		
+		
+			int err=0;
+			for(int w =1;w<is.length(i);w++) {
+				if (is.heads[i][w]!=parse.heads[w] || (is.labels[i][w]!=parse.labels[w] && las )) {
+					err++;
+				}
+			}
+		return err;
+	}
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/parserR2/Options.java b/dependencyParser/basic/mate-tools/src/is2/parserR2/Options.java
new file mode 100755
index 0000000..b5ec0f9
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parserR2/Options.java
@@ -0,0 +1,77 @@
+package is2.parserR2;
+
+import is2.util.OptionsSuper;
+
+
+public final class Options extends OptionsSuper {
+
+	
+	int start=0, end=0;
+	String prefix_model ="m";
+	String prefix_test ="t";
+	
+	public Options (String[] args) {
+		
+		for(int i = 0; i < args.length; i++) {
+
+			if (args[i].equals("--help")) explain();
+			
+			if (args[i].equals("-decode")) {
+				decodeProjective = args[i+1].equals("proj"); i++;
+			} else if (args[i].equals("-decodeTH")) {		
+				decodeTH = Double.parseDouble(args[i+1]); i++;
+			} else if (args[i].equals("-nonormalize")) {
+				normalize=false;
+			} else if (args[i].equals("-features")) {
+				features= args[i+1]; i++;			
+			} else if (args[i].equals("-hsize")) {
+				hsize= Integer.parseInt(args[i+1]); i++;			
+			} else if (args[i].equals("-len")) {
+				maxLen= Integer.parseInt(args[i+1]); i++;			
+			} else if (args[i].equals("-cores")) {
+				cores= Integer.parseInt(args[i+1]); i++;			
+			} else if (args[i].equals("-best")) {
+				best= Integer.parseInt(args[i+1]); i++;			
+			} else if (args[i].equals("-start")) {
+				start= Integer.parseInt(args[i+1]); i++;			
+			} else if (args[i].equals("-end")) {
+				end= Integer.parseInt(args[i+1]); i++;			
+			} else if (args[i].equals("-prefix-model")) {
+				prefix_model= args[i+1]; i++;			
+			} else if (args[i].equals("-prefix-test")) {
+				prefix_test= args[i+1]; i++;			
+			} else if (args[i].equals("-mapping")) {
+				this.useMapping= args[i+1]; i++;			
+			} else if (args[i].equals("-no2nd")) {
+				no2nd= true;			
+			} else if (args[i].equals("-few2nd")) {
+				few2nd= true;			
+			} else super.addOption(args, i);
+					
+		}
+
+
+		
+	}
+
+	private void explain() {
+		System.out.println("Usage: ");
+		System.out.println("java -class mate.jar is2.parser.Parser [Options]");
+		System.out.println();
+		System.out.println("Example: ");
+		System.out.println(" java -class mate.jar is2.parser.Parser -model eps3.model -train corpora/conll08st/train/train.closed -test corpora/conll08st/devel/devel.closed  -out b3.test -eval corpora/conll08st/devel/devel.closed  -count 2000 -i 6");
+		System.out.println("");
+		System.out.println("Options:");
+		System.out.println("");
+		System.out.println(" -train  <file>    the corpus a model is trained on; default "+this.trainfile);
+		System.out.println(" -test   <file>    the input corpus for testing; default "+this.testfile);
+		System.out.println(" -out    <file>    the output corpus (result) of a test run; default "+this.outfile);
+		System.out.println(" -model  <file>    the parsing model for traing the model is stored in the files");
+		System.out.println("                   and for parsing the model is load from this file; default "+this.modelName);
+		System.out.println(" -i      <number>  the number of training iterations; good numbers are 10 for smaller corpora and 6 for bigger; default "+this.numIters);
+		System.out.println(" -count  <number>  the n first sentences of the corpus are take for the training default "+this.count);
+		System.out.println(" -format <number>  conll format of the year 8 or 9; default "+this.formatTask);
+		
+		System.exit(0);
+	}
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/parserR2/Parameters.java b/dependencyParser/basic/mate-tools/src/is2/parserR2/Parameters.java
new file mode 100755
index 0000000..0917ea8
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parserR2/Parameters.java
@@ -0,0 +1,38 @@
+/**
+ * 
+ */
+package is2.parserR2;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import is2.data.FV;
+import is2.data.IFV;
+import is2.data.Instances;
+import is2.data.Parse;
+
+/**
+ * @author Bernd Bohnet, 31.08.2009
+ * 
+ * 
+ */
+public abstract class Parameters {
+
+	
+	public abstract void average(double avVal);
+	
+	public abstract void update(FV act, FV pred, Instances isd, int instc, Parse d, double upd, double e);
+	
+	public abstract void write(DataOutputStream dos) throws IOException;
+	
+	public abstract void read(DataInputStream dis ) throws IOException;
+	
+	public abstract int size();
+
+	/**
+	 * @return
+	 */
+	public abstract IFV getFV() ;
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/parserR2/ParametersFloat.java b/dependencyParser/basic/mate-tools/src/is2/parserR2/ParametersFloat.java
new file mode 100755
index 0000000..44e6d76
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parserR2/ParametersFloat.java
@@ -0,0 +1,181 @@
+package is2.parserR2;
+
+import is2.data.F2SF;
+import is2.data.FV;
+import is2.data.FVR;
+import is2.data.Instances;
+import is2.data.Parse;
+import is2.util.DB;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+
+
+final public class ParametersFloat extends Parameters  {
+
+	public float[] parameters;
+	private float[] total;
+
+	public ParametersFloat(int size) {
+		parameters = new   float[size];
+		total = new float[size];
+		for(int i = 0; i < parameters.length; i++) {
+			parameters[i] = 0F;
+			total[i] = 0F;
+		}
+	}
+
+
+	/**
+	 * @param parameters2
+	 */
+	public ParametersFloat(float[] p) {
+		parameters =p;
+	}
+
+
+	@Override
+	public void average(double avVal) {
+		for(int j = 0; j < total.length; j++) {
+			parameters[j] = total[j]/((float)avVal);
+		}
+		total =null;
+	}
+
+	public ParametersFloat average2(double avVal) {
+		float[] px = new float[this.parameters.length];
+		for(int j = 0; j < total.length; j++) {
+			px[j] = total[j]/((float)avVal);
+		}
+		ParametersFloat pf = new ParametersFloat(px);
+		return pf;
+	}
+	
+	
+	public void update(FV act, FV pred, Instances isd, int instc, Parse dx, double upd, double e, 
+			float d, float f) {
+
+		e++;
+		
+		float lam_dist = d - f;
+		
+		float b = (float)e-lam_dist;
+		
+		FV dist = act.getDistVector(pred);
+		
+		dist.update(parameters, total, hildreth(dist,b), upd,false);  
+	}
+
+	public void update(FV act, FV pred, Instances isd, int instc, Parse dx, double upd, double e) {
+
+		e++;
+		
+		float lam_dist = getScore(act) - getScore(pred);
+		
+		float b = (float)e-lam_dist;
+		
+		FV dist = act.getDistVector(pred);
+		
+		dist.update(parameters, total, hildreth(dist,b), upd,false);  
+	}
+
+	public void update(FVR act, FVR pred, Instances isd, int instc, Parse dx, double upd, double e, float lam_dist) {
+
+		e++;
+		
+		
+		float b = (float)e-lam_dist;
+		
+		FVR dist = act.getDistVector(pred);
+		
+		dist.update(parameters, total, hildreth(dist,b), upd,false);  
+	}
+	
+
+	protected double hildreth(FV a, double b) {
+
+		double A = a.dotProduct(a);
+		if (A<=0.0000000000000000001) return 0.0;
+		return b/A;
+	}
+
+	
+	protected double hildreth(FVR a, double b) {
+
+		double A = a.dotProduct(a);
+		if (A<=0.0000000000000000001) return 0.0;
+		return b/A;
+	}
+
+	
+	public float getScore(FV fv) {
+		if (fv ==null) return 0.0F;
+		return fv.getScore(parameters,false);
+
+	}
+
+	public float getScore(FVR fv) { //xx
+		if (fv ==null) return 0.0F;
+		return fv.getScore(parameters,false);
+
+	}
+
+	
+	@Override
+	final public void write(DataOutputStream dos) throws IOException{
+
+		dos.writeInt(parameters.length);
+		for(float d : parameters) dos.writeFloat(d);
+
+	}
+
+	@Override
+	public void read(DataInputStream dis ) throws IOException{
+
+		parameters = new float[dis.readInt()];
+		int notZero=0;
+		for(int i=0;i<parameters.length;i++) {
+			parameters[i]=dis.readFloat();
+			if (parameters[i]!=0.0F) notZero++; 
+		}
+		
+		
+		DB.println("read parameters "+parameters.length+" not zero "+notZero);
+
+	}
+	
+	public int countNZ() {
+
+		int notZero=0;
+		for(int i=0;i<parameters.length;i++) {
+			if (parameters[i]!=0.0F) notZero++; 
+		}
+		return notZero;
+		
+	//	DB.println("read parameters "+parameters.length+" not zero "+notZero);
+
+	}
+
+
+	/* (non-Javadoc)
+	 * @see is2.sp09k99995.Parameters#getFV()
+	 */
+	@Override
+	public F2SF getFV() {
+		return new F2SF(parameters);
+	}
+
+
+	/* (non-Javadoc)
+	 * @see is2.sp09k99999.Parameters#size()
+	 */
+	@Override
+	public int size() {
+		return parameters.length;
+	}
+
+
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/parserR2/Parser.java b/dependencyParser/basic/mate-tools/src/is2/parserR2/Parser.java
new file mode 100755
index 0000000..b0cfe9e
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parserR2/Parser.java
@@ -0,0 +1,690 @@
+package is2.parserR2;
+
+
+import is2.data.Cluster;
+import is2.data.DataF;
+import is2.data.Edges;
+import is2.data.F2SF;
+import is2.data.FV;
+import is2.data.Instances;
+import is2.data.Long2Int;
+import is2.data.Long2IntInterface;
+import is2.data.MFB;
+import is2.data.Parse;
+import is2.data.ParseNBest;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.io.CONLLWriter09;
+
+import is2.tools.Tool;
+import is2.util.DB;
+import is2.util.OptionsSuper;
+import is2.util.ParserEvaluator;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map.Entry;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+import java.util.zip.ZipOutputStream;
+
+//import extractors.ExtractorClusterStackedR2;
+import extractors.Extractor;
+import extractors.ExtractorFactory;
+
+
+
+public class Parser implements Tool {
+
+	// output evaluation info 
+	private static final boolean MAX_INFO = true;
+
+	public static int THREADS =4;
+	
+	Long2IntInterface l2i;
+	ParametersFloat params;
+	Pipe pipe;
+	OptionsSuper options;
+	
+	 HashMap<Integer,Integer> rank = new HashMap<Integer,Integer>();
+	 int amongxbest=0, amongxbest_ula=0, nbest=0,bestProj=0, smallestErrorSum=0, countAllNodes=0;
+	 static int NBest =1000;
+	
+	 ExtractorFactory extractorFactory = new ExtractorFactory(ExtractorFactory.StackedClusteredR2);
+	 
+	
+	/**
+	 * Initialize the parser
+	 * @param options
+	 */
+	public Parser (OptionsSuper options) {
+	
+		this.options=options;
+		pipe = new Pipe(options);
+
+		params = new ParametersFloat(0);  
+		
+		// load the model
+		try {
+			readModel(options, pipe, params);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+				
+	}
+
+
+	/**
+	 * @param modelFileName The file name of the parsing model
+	 */
+	public Parser(String modelFileName) {
+		this(new Options(new String[]{"-model",modelFileName}));
+	}
+
+
+	/**
+	 * 
+	 */
+	public Parser() {
+		// TODO Auto-generated constructor stub
+	}
+
+
+	public static void main (String[] args) throws Exception
+	{
+		
+		long start = System.currentTimeMillis();
+		OptionsSuper options = new Options(args);
+
+		NBest = options.best;
+
+		DB.println("n-best"+NBest);
+		
+		Runtime runtime = Runtime.getRuntime();
+		THREADS = runtime.availableProcessors();
+		if (options.cores<THREADS&&options.cores>0) THREADS =options.cores;		
+
+		DB.println("Found " + runtime.availableProcessors()+" cores use "+THREADS);
+
+		if (options.train) {
+			
+			Parser p =new Parser();
+			p.options=options;
+			
+			p.l2i = new Long2Int(options.hsize);
+
+			p.pipe =  new Pipe (options);
+			Instances is = new Instances();
+
+			p.pipe.extractor = new Extractor[THREADS];
+			
+			for (int t=0;t<THREADS;t++)  p.pipe.extractor[t]=p.extractorFactory.getExtractor( p.l2i);
+
+			p.params = new ParametersFloat(p.l2i.size());
+			
+			if (options.useMapping!=null) {
+				String model = options.modelName;
+				
+				options.modelName = options.useMapping;
+				DB.println("Using mapping of model "+options.modelName);
+				ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(options.modelName)));
+				zis.getNextEntry();
+				DataInputStream dis = new DataInputStream(new BufferedInputStream(zis));
+				p.pipe.mf.read(dis);
+				
+				DB.println("read\n"+p.pipe.mf.toString());
+				
+				ParametersFloat params = new ParametersFloat(0);
+				params.read(dis);
+
+				Edges.read(dis);
+				
+				dis.close();
+				DB.println("end read model");
+				options.modelName = model;
+			}
+			
+			
+			p.pipe.createInstances(options.trainfile,is); 
+
+
+			p.train(options, p.pipe,p.params,is,p.pipe.cl);
+
+			p.writeModell(options, p.params, null,p.pipe.cl);
+
+		}
+
+		if (options.test) {
+
+			Parser p = new Parser();
+			p.options=options;
+
+			p. pipe = new Pipe(options);
+			p. params = new ParametersFloat(0);  // total should be zero and the parameters are later read
+
+			// load the model
+
+			p.readModel(options, p.pipe, p.params);
+
+			DB.println("test on "+options.testfile);
+			
+			System.out.println(""+p.pipe.mf.toString());
+			
+			
+			p.outputParses(options, p.pipe, p.params, !MAX_INFO);
+
+		}
+
+		System.out.println();
+
+		if (options.eval) {
+			System.out.println("\nEVALUATION PERFORMANCE:");
+			ParserEvaluator.evaluate(options.goldfile, options.outfile);
+		}
+
+		long end = System.currentTimeMillis();
+		System.out.println("used time "+((float)((end-start)/100)/10));
+
+		Decoder.executerService.shutdown();		
+		Pipe.executerService.shutdown();
+		System.out.println("end.");
+
+	
+	}
+
+	/**
+	 * Read the models and mapping
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @throws IOException
+	 */
+	public   void readModel(OptionsSuper options, Pipe pipe, Parameters params) throws IOException {
+
+
+		DB.println("Reading data started");
+
+		// prepare zipped reader
+		ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(options.modelName)));
+		zis.getNextEntry();
+		DataInputStream dis = new DataInputStream(new BufferedInputStream(zis));
+
+		pipe.mf.read(dis);
+
+		pipe.cl = new Cluster(dis);
+		
+		params.read(dis);
+		this.l2i = new Long2Int(params.size());
+		DB.println("parsing -- li size "+l2i.size());
+
+		pipe.extractor = new Extractor[THREADS];
+
+		for (int t=0;t<THREADS;t++) pipe.extractor[t]=this.extractorFactory.getExtractor(l2i);
+
+		Edges.read(dis);
+
+		options.decodeProjective = dis.readBoolean();
+
+		int maxForm = dis.readInt();
+
+		for (int t=0;t<THREADS;t++)  {
+			pipe.extractor[t].setMaxForm(maxForm);
+			pipe.extractor[t].initStat();
+			pipe.extractor[t].init();
+		}
+		
+		boolean foundInfo =false;
+		try {
+			String info =null;
+			int icnt = dis.readInt();
+			for(int i=0;i<icnt;i++) {
+				info = dis.readUTF();
+				System.out.println(info);
+			}
+		} catch (Exception e) {
+			if (!foundInfo) System.out.println("no info about training");
+		}
+		
+		
+		dis.close();
+
+		DB.println("Reading data finnished");
+
+		Decoder.NON_PROJECTIVITY_THRESHOLD =(float)options.decodeTH;
+		for (int t=0;t<THREADS;t++) {
+			pipe.extractor[t].initStat();
+			pipe.extractor[t].init();
+		}
+
+	}
+
+
+
+	/**
+	 * Do the training
+	 * @param instanceLengths
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @param is 
+	 * @param cluster 
+	 * @throws IOException
+	 * @throws InterruptedException
+	 * @throws ClassNotFoundException
+	 */
+	public void train(OptionsSuper options, Pipe pipe, ParametersFloat params, Instances is, Cluster cluster) 
+	throws IOException, InterruptedException, ClassNotFoundException {
+
+		
+		DB.println("\nTraining Information ");
+		DB.println("-------------------- ");
+
+
+		Decoder.NON_PROJECTIVITY_THRESHOLD =(float)options.decodeTH;
+
+		if (options.decodeProjective) System.out.println("Decoding: "+(options.decodeProjective?"projective":"non-projective")); 
+		else System.out.println(""+Decoder.getInfo());
+		int numInstances = is.size();
+
+		int maxLenInstances =0;
+		for(int i=0;i<numInstances;i++) if (maxLenInstances<is.length(i)) maxLenInstances=is.length(i);
+
+		DataF data = new DataF(maxLenInstances, pipe.mf.getFeatureCounter().get(PipeGen.REL).shortValue());
+
+		int iter = 0;
+		int del=0; 
+		float error =0;
+		float f1=0;
+
+		FV pred = new FV();
+		FV act = new FV();
+
+		double	upd =  (double)(numInstances*options.numIters)+1;
+		
+		for(; iter < options.numIters; iter++) {
+
+			System.out.print("Iteration "+iter+": ");
+
+			long start = System.currentTimeMillis();
+
+			long last= System.currentTimeMillis();
+			error=0;
+			f1=0;
+			for(int n = 0; n < numInstances; n++) {
+
+				upd--;
+				
+				if (is.labels[n].length>options.maxLen) continue;
+				
+				String info = " td "+((Decoder.timeDecotder)/1000000F)+" tr "+((Decoder.timeRearrange)/1000000F)
+				+" te "+((Pipe.timeExtract)/1000000F);
+
+				if((n+1) %500 == 0) del= PipeGen.outValueErr(n+1,Math.round(error*1000)/1000,f1/n,del, last, upd,info);
+
+				short pos[] = is.pposs[n];
+
+				data = pipe.fillVector((F2SF)params.getFV(), is, n, data, cluster, THREADS, l2i);
+
+				List<ParseNBest> parses = Decoder.decode(pos,  data, options.decodeProjective,pipe.extractor[0]);
+				Parse d = parses.get(0);
+				double e= pipe.errors(is, n ,d);
+
+				if (d.f1>0)f1+=(d.labels.length-1 -e) /(d.labels.length-1);
+
+				if (e<=0) continue;
+
+				// get predicted feature vector
+				pred.clear();
+				pipe.extractor[0].encodeCat(is,n,pos,is.forms[n],is.plemmas[n],d.heads, d.labels, is.feats[n],pipe.cl, pred);
+
+				error += e;
+
+				act.clear();
+				pipe.extractor[0].encodeCat(is,n,pos,is.forms[n],is.plemmas[n],is.heads[n], is.labels[n], is.feats[n],pipe.cl, act);
+
+				params.update(act, pred, is, n, d, upd,e);
+			}
+
+			String info = " td "+((Decoder.timeDecotder)/1000000F)+" tr "+((Decoder.timeRearrange)/1000000F)
+			+" te "+((Pipe.timeExtract)/1000000F)+" nz "+params.countNZ();
+			PipeGen.outValueErr(numInstances,Math.round(error*1000)/1000,f1/numInstances,del,last, upd,info);
+			del=0;
+			long end = System.currentTimeMillis();
+			System.out.println(" time:"+(end-start));			
+
+			
+			ParametersFloat pf = params.average2((iter+1)*is.size());
+			try {
+
+				if (options.testfile!=null) {
+					outputParses (options, pipe, pf, ! MAX_INFO);
+					ParserEvaluator.evaluate(options.goldfile, options.outfile);
+			//		writeModell(options, pf, ""+(iter+1),pipe.cl); 
+				}
+		
+				
+			} catch (Exception e) {
+				e.printStackTrace();
+			} 
+
+
+			Decoder.timeDecotder=0;Decoder.timeRearrange=0; Pipe.timeExtract=0;
+
+
+		}
+		params.average(iter*is.size());
+	}                                   
+
+
+	/**
+	 * Do the parsing
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @throws IOException
+	 */
+	 private void outputParses (OptionsSuper options, Pipe pipe, ParametersFloat params, boolean maxInfo) throws Exception {
+
+		long start = System.currentTimeMillis();
+
+		CONLLReader09 depReader = new CONLLReader09(options.testfile, options.formatTask);
+		CONLLWriter09 depWriter = new CONLLWriter09(options.outfile, options.formatTask);
+
+//		ExtractorClusterStacked.initFeatures();
+
+		int cnt = 0;
+		int del=0;
+		long last = System.currentTimeMillis();
+
+		if (maxInfo) System.out.println("\nParsing Information ");
+		if (maxInfo) System.out.println("------------------- ");
+
+		if (maxInfo && !options.decodeProjective) System.out.println(""+Decoder.getInfo());
+		
+	//	if (!maxInfo) System.out.println();
+
+		String[] types = new String[pipe.mf.getFeatureCounter().get(PipeGen.REL)];
+		for (Entry<String, Integer> e : pipe.mf.getFeatureSet().get(PipeGen.REL).entrySet())  	types[e.getValue()] = e.getKey();
+
+		
+		System.out.print("Processing Sentence: ");
+
+		while(true) {
+
+			Instances is = new Instances();
+			is.init(1, new MFB(),options.formatTask);
+
+			SentenceData09 instance = pipe.nextInstance(is, depReader);
+			if (instance==null) break;
+			cnt++;
+
+			SentenceData09 i09 = this.parse(instance,params);
+	
+	//		}
+			depWriter.write(i09);
+			del=PipeGen.outValue(cnt, del,last);
+	//		DB.println("xbest "+amongxbest+" cnt "+cnt+" "+((float)((float)amongxbest/cnt))+" nbest "+((float)nbest/cnt)+
+	//				" 1best "+((float)(rank.get(0)==null?0:rank.get(0))/cnt)+" best-proj "+((float)bestProj/cnt));
+
+		}
+
+		//pipe.close();
+
+		depWriter.finishWriting();
+		long end = System.currentTimeMillis();
+		DB.println("rank\n"+rank+"\n");
+		DB.println("x-best-las "+amongxbest+" x-best-ula "+amongxbest_ula+" cnt "+cnt+" x-best-las "
+				+((float)((float)amongxbest/cnt))+
+				" x-best-ula "+((float)((float)amongxbest_ula/cnt))+
+				" nbest "+((float)nbest/cnt)+
+				" 1best "+((float)(rank.get(0)==null?0:rank.get(0))/cnt)+
+				" best-proj "+((float)bestProj/cnt)+
+				" Sum LAS "+((float)this.smallestErrorSum/countAllNodes));
+		
+		//		DB.println("errors "+error);
+		
+		rank.clear();
+		amongxbest=0;amongxbest_ula=0;
+		cnt=0;
+		nbest=0;
+		bestProj=0;
+		if (maxInfo) System.out.println("Used time " + (end-start));
+		if (maxInfo) System.out.println("forms count "+Instances.m_count+" unkown "+Instances.m_unkown);
+
+	}
+
+	 
+		/**
+		 * Do the parsing
+		 * @param options
+		 * @param pipe
+		 * @param params
+		 * @throws IOException
+		 */
+		 private void getNBest(OptionsSuper options, Pipe pipe, ParametersFloat params, boolean maxInfo) throws Exception {
+
+
+			CONLLReader09 depReader = new CONLLReader09(options.testfile, options.formatTask);
+
+		//	ExtractorClusterStacked.initFeatures();
+
+			int cnt = 0;
+
+			String[] types = new String[pipe.mf.getFeatureCounter().get(PipeGen.REL)];
+			for (Entry<String, Integer> e : pipe.mf.getFeatureSet().get(PipeGen.REL).entrySet())  	types[e.getValue()] = e.getKey();
+			
+//			System.out.print("Processing Sentence: ");
+
+			while(true) {
+
+				Instances is = new Instances();
+				is.init(1, new MFB(),options.formatTask);
+
+				SentenceData09 instance = pipe.nextInstance(is, depReader);
+				if (instance==null) break;
+				cnt++;
+
+				this.parseNBest(instance);		
+			}
+			
+			//pipe.close();
+//			depWriter.finishWriting();
+//			long end = System.currentTimeMillis();
+//			DB.println("rank\n"+rank+"\n");
+//			DB.println("x-best-las "+amongxbest+" x-best-ula "+amongxbest_ula+" cnt "+cnt+" x-best-las "
+//					+((float)((float)amongxbest/cnt))+
+//					" x-best-ula "+((float)((float)amongxbest_ula/cnt))+
+//					" nbest "+((float)nbest/cnt)+
+//					" 1best "+((float)(rank.get(0)==null?0:rank.get(0))/cnt)+
+//					" best-proj "+((float)bestProj/cnt));
+			//		DB.println("errors "+error);
+			
+	
+		}
+
+
+	 public SentenceData09 parse (SentenceData09 instance, ParametersFloat params)   {
+
+		String[] types = new String[pipe.mf.getFeatureCounter().get(PipeGen.REL)];
+		for (Entry<String, Integer> e : MFB.getFeatureSet().get(PipeGen.REL).entrySet())  	types[e.getValue()] = e.getKey();
+
+		Instances is = new Instances();
+		is.init(1, new MFB(),options.formatTask);
+		new CONLLReader09().insert(is, instance); 
+				
+		String[] forms = instance.forms;
+
+		// use for the training ppos
+		DataF d2;
+		try {
+			d2 = pipe.fillVector(params.getFV(), is,0,null,pipe.cl,THREADS,l2i);//cnt-1
+		} catch (Exception e ) {
+			e.printStackTrace();
+			return null;
+		}
+		short[] pos = is.pposs[0];
+
+		List<ParseNBest> parses=null;
+		Parse d=	null;
+		try {
+			parses =Decoder.decode(pos,d2,options.decodeProjective,pipe.extractor[0]); //cnt-1
+			d = parses.get(0);
+		}catch (Exception e) {		
+			e.printStackTrace();
+		}
+
+		if (parses.size()>NBest) parses = parses.subList(0,NBest);
+
+		int g_las = Decoder.getGoldRank(parses, is,0,Decoder.LAS);
+		int g_ula = Decoder.getGoldRank(parses, is,0,!Decoder.LAS);
+		
+		int smallest = Decoder.getSmallestError(parses, is,0,!Decoder.LAS);
+		smallestErrorSum+=is.length(0)-smallest;
+		countAllNodes+=is.length(0);
+		
+		if (g_las>=0) amongxbest++;
+		if (g_ula>=0) amongxbest_ula++;
+		
+		nbest+=parses.size();
+		
+		Integer r = rank.get(g_las);
+		if (r==null) rank.put(g_las, 1);
+		else rank.put(g_las, r+1);
+		
+		float err = (float)this.pipe.errors(is,0, d);
+		
+		float errBestProj = (float)this.pipe.errors(is,0, Decoder.bestProj);
+		
+		if (errBestProj==0) bestProj++;
+
+		SentenceData09 i09 = new SentenceData09(instance);
+		
+		i09.createSemantic(instance);
+		
+		for(int j = 0; j < forms.length-1; j++) {
+			i09.plabels[j] = types[d.labels[j+1]];
+			i09.pheads[j] = d.heads[j+1];
+		}
+		return i09;
+
+	}
+
+	 public List<ParseNBest> parseNBest (SentenceData09 instance)   {
+
+		Instances is = new Instances();
+		is.init(1, new MFB(),options.formatTask);
+		new CONLLReader09().insert(is, instance); 
+		
+		// use for the training ppos
+		DataF d2;
+		try {
+			d2 = pipe.fillVector(params.getFV(), is,0,null,pipe.cl,THREADS, l2i);//cnt-1
+		} catch (Exception e ) {
+			e.printStackTrace();
+			return null;
+		}
+		short[] pos = is.pposs[0];
+
+		List<ParseNBest> parses=null;
+		try {
+			parses =Decoder.decode(pos,d2,options.decodeProjective,pipe.extractor[0]); //cnt-1
+		}catch (Exception e) {		
+			e.printStackTrace();
+		}
+
+
+		if (parses.size()>NBest) parses = parses.subList(0,NBest);
+
+		return parses;
+
+	}
+	
+	
+
+	/* (non-Javadoc)
+	 * @see is2.tools.Tool#apply(is2.data.SentenceData09)
+	 */
+		
+	@Override
+	public SentenceData09 apply(SentenceData09 snt09) {
+
+		SentenceData09 it = new SentenceData09();
+		it.createWithRoot(snt09);
+
+		SentenceData09 out=null;
+		try {
+
+
+			//		for(int k=0;k<it.length();k++) {
+			//			it.forms[k] = reader.normalize(it.forms[k]);
+			//			it.plemmas[k] = reader.normalize(it.plemmas[k]);
+			//		}
+
+			out = parse(it,this.params);
+
+
+		} catch(Exception e) {
+			e.printStackTrace();
+		}
+
+		Decoder.executerService.shutdown();		
+		Pipe.executerService.shutdown();
+
+		return out;
+	}
+	
+	/**
+	 * Write the parsing model
+	 * 
+	 * @param options
+	 * @param params
+	 * @param extension
+	 * @throws FileNotFoundException
+	 * @throws IOException
+	 */
+	private void writeModell(OptionsSuper options, ParametersFloat params, String extension, Cluster cs) throws FileNotFoundException, IOException {
+		
+		String name = extension==null?options.modelName:options.modelName+extension;
+//		System.out.println("Writting model: "+name);
+		ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(name)));
+		zos.putNextEntry(new ZipEntry("data")); 
+		DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(zos));     
+		
+		MFB.writeData(dos);
+		cs.write(dos);
+		
+		params.write(dos);
+
+		Edges.write(dos);
+		
+		dos.writeBoolean(options.decodeProjective);
+
+		dos.writeInt(pipe.extractor[0].getMaxForm());
+		
+		dos.writeInt(5);  // Info count
+		dos.writeUTF("Used parser   "+Parser.class.toString());
+		dos.writeUTF("Creation date "+(new SimpleDateFormat("yyyy.MM.dd HH:mm:ss")).format(new Date()));
+		dos.writeUTF("Training data "+options.trainfile);
+		dos.writeUTF("Iterations    "+options.numIters+" Used sentences "+options.count);
+		dos.writeUTF("Cluster       "+options.clusterFile);
+		
+		dos.flush();
+		dos.close();
+	}
+
+
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/parserR2/Pipe.java b/dependencyParser/basic/mate-tools/src/is2/parserR2/Pipe.java
new file mode 100755
index 0000000..ad545ec
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parserR2/Pipe.java
@@ -0,0 +1,257 @@
+package is2.parserR2;
+
+import is2.data.Cluster;
+import is2.data.DataF;
+import is2.data.Edges;
+import is2.data.F2SF;
+import is2.data.Instances;
+import is2.data.Long2IntInterface;
+import is2.data.MFB;
+
+import is2.data.Parse;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+
+import is2.util.DB;
+import is2.util.OptionsSuper;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.concurrent.ExecutorService;
+
+import extractors.Extractor;
+import extractors.ExtractorClusterStacked;
+import extractors.ExtractorClusterStackedR2;
+import extractors.ParallelExtract;
+
+final public class Pipe extends PipeGen {
+
+	public Extractor[] extractor;
+	final public MFB mf = new MFB();
+
+	Cluster cl;
+	
+	
+	private OptionsSuper options;
+	public static long timeExtract;
+
+	public Pipe(OptionsSuper o) {
+		options = o;
+	}
+
+	public void createInstances(String file, Instances is)
+       //	throws Exception 
+
+	{
+
+		
+		CONLLReader09 depReader = new CONLLReader09(file);
+
+		mf.register(REL,"<root-type>");
+
+		// register at least one predicate since the parsing data might not contain predicates as in 
+		// the Japaness corpus but the development sets contains some
+
+		long sl=0;
+
+		System.out.print("Registering feature parts of sentence: ");
+		int ic = 0;
+		int del = 0;
+		while (true) {
+			SentenceData09 instance = depReader.getNext();
+			if (instance == null) break;
+			ic++;
+
+			sl+=instance.labels.length;
+
+			if (ic % 1000 == 0) {
+				del = outValue(ic, del);
+			}
+
+			String[] labs1 = instance.labels;
+			for (int i1 = 0; i1 < labs1.length; i1++) mf.register(REL, labs1[i1]);
+
+			String[] w = instance.forms;
+			for (int i1 = 0; i1 < w.length; i1++) mf.register(WORD, depReader.normalize(w[i1]));
+
+			w = instance.plemmas;
+			for (int i1 = 0; i1 < w.length; i1++) mf.register(WORD, depReader.normalize(w[i1]));
+
+
+			w = instance.ppos;
+			for (int i1 = 0; i1 < w.length; i1++) mf.register(POS, w[i1]);
+
+			w = instance.gpos;
+			for (int i1 = 0; i1 < w.length; i1++) mf.register(POS, w[i1]);
+
+			if (instance.feats !=null) {
+				String fs[][] = instance.feats;
+				for (int i1 = 0; i1 < fs.length; i1++){	
+					w =fs[i1];
+					if (w==null) continue;
+					for (int i2 = 0; i2 < w.length; i2++) mf.register(FEAT, w[i2]);
+				}
+			}
+
+			if ((ic-1)>options.count) break;
+		}
+		del = outValue(ic, del);
+
+
+		for(Extractor e : extractor) {
+			e.setMaxForm(mf.getFeatureCounter().get(WORD));
+		}		
+		
+		if (options.clusterFile==null)cl = new Cluster();
+		else cl=  new Cluster(options.clusterFile, mf,6);
+		
+		mf.calculateBits();
+		
+		System.out.println(""+mf.toString());
+		
+		for(Extractor e : extractor) {
+			e.initStat();
+			e.init();
+		}
+
+		depReader.startReading(file);
+
+		int num1 = 0;
+		
+
+		Edges.init(mf.getFeatureCounter().get(POS));
+		
+		
+		System.out.print("Creating edge filters and read corpus: ");
+		del = 0;
+
+		is.init(ic, new MFB());
+
+		while (true) {
+			if (num1 % 100 == 0)  del = outValue(num1, del);
+
+			SentenceData09 instance1 = depReader.getNext(is);
+
+			if (instance1 == null) break;
+
+			int last = is.size() - 1;
+			short[] pos =is.pposs[last];
+
+			for (int k = 0; k < is.length(last); k++) {
+				if (is.heads[last][k] < 0)	continue;
+				Edges.put(pos[is.heads[last][k]],pos[k], k < is.heads[last][k],is.labels[last][k]);
+			}
+
+			if (!options.allFeatures && num1 > options.count) break;
+
+			num1++;
+
+		}
+		del = outValue(num1, del);
+		System.out.println();
+		Edges.findDefault();
+	}
+
+	
+	public void getInstances(String file, Instances is){
+		CONLLReader09 depReader = new CONLLReader09(file);
+		
+		int ic =options.count+2;
+
+		is.init(ic, new MFB());
+
+		int num1 =0,del=0;
+		while (true) {
+			if (num1 % 100 == 0)  del = outValue(num1, del);
+
+			SentenceData09 instance1 = depReader.getNext(is);
+
+			if (instance1 == null) break;
+	
+			if (!options.allFeatures && num1 > options.count) break;
+
+			num1++;
+
+		}
+		del = outValue(num1, del);
+		System.out.println();
+
+	}
+
+
+	/**
+	 * Creates an instance for outputParses
+	 * 
+	 * @param is
+	 * @return
+	 * @throws IOException
+	 */
+	protected final SentenceData09 nextInstance(Instances is, CONLLReader09 depReader) throws Exception {
+
+		SentenceData09 instance = depReader.getNext(is);
+		if (instance == null || instance.forms == null)	return null;
+
+		return instance;
+	}
+
+	 public static ExecutorService executerService =java.util.concurrent.Executors.newFixedThreadPool(Parser.THREADS);
+
+
+	public DataF fillVector(F2SF params, Instances is,int inst, DataF d,  Cluster cluster, int threads, Long2IntInterface li) throws InterruptedException {
+
+		long ts = System.nanoTime();
+
+		if (executerService.isShutdown()) executerService =java.util.concurrent.Executors.newCachedThreadPool();
+		
+		
+		final int length = is.length(inst);
+		if (d ==null || d.len<length)d = new DataF(length,mf.getFeatureCounter().get(PipeGen.REL).shortValue());
+
+		ArrayList<ParallelExtract> pe = new ArrayList<ParallelExtract>();
+		
+		
+		for(int i=0;i<threads;i++) {
+			
+//			DB.println(""+((ExtractorClusterStackedR2)extractor[i]).s_dist);
+			pe.add(new ParallelExtract( extractor[i],is, inst, d, (F2SF)params.clone(), cluster, li));
+		}
+
+		for (int w1 = 0; w1 < length; w1++) {
+			for (int w2 = 0; w2 < length; w2++) {
+				if (w1==w2) continue;
+				ParallelExtract.add(w1, w2);
+			}
+		}
+		executerService.invokeAll( pe);
+
+		timeExtract += (System.nanoTime()-ts);
+
+		
+		return d;
+	}
+
+	/**
+	 * the loss function
+	 */
+	public double errors( Instances is, int ic, Parse p) {
+		
+		if (p.heads==null) p.signature2parse(p.signature());
+		short[] act = is.heads[ic];
+		double correct = 0;
+
+		// do not count root
+		for(int i = 1; i < act.length; i++)  	 {
+			if (p.heads[i]==act[i] ){
+				correct+=0.5;
+				if (p.labels[i]==is.labels[ic][i] ) correct+=0.5;
+			}
+		}
+
+		double x = ((double)act.length- 1 - correct );
+
+		//p.f1 = (double)correct / (double)(act.length-1);
+
+		return x;
+	}
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/parserR2/PipeReranker.java b/dependencyParser/basic/mate-tools/src/is2/parserR2/PipeReranker.java
new file mode 100644
index 0000000..87286ac
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parserR2/PipeReranker.java
@@ -0,0 +1,138 @@
+package is2.parserR2;
+
+import is2.data.Cluster;
+import is2.data.DataF;
+import is2.data.Edges;
+import is2.data.F2SF;
+import is2.data.Instances;
+import is2.data.MFB;
+import is2.data.ParseNBest;
+
+import is2.data.Parse;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+
+import is2.util.OptionsSuper;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.concurrent.ExecutorService;
+
+import extractors.ExtractorClusterStacked;
+import extractors.ExtractorReranker;
+import extractors.ParallelExtract;
+
+final public class PipeReranker extends PipeGen {
+
+	public ExtractorReranker extractor;
+	final public MFB mf = new MFB();
+
+	Cluster cl;
+	
+	
+	private OptionsSuper options;
+	public static long timeExtract;
+
+	public PipeReranker(OptionsSuper o) {
+		options = o;
+	}
+
+	public void createInstances(String file, Instances is)
+       //	throws Exception 
+
+	{
+
+		
+		CONLLReader09 depReader = new CONLLReader09(file);
+
+		mf.register(REL,"<root-type>");
+
+		// register at least one predicate since the parsing data might not contain predicates as in 
+		// the Japaness corpus but the development sets contains some
+
+		long sl=0;
+
+		System.out.print("Registering feature parts of sentence: ");
+		int ic = 0;
+		int del = 0;
+		while (true) {
+			SentenceData09 instance = depReader.getNext();
+			if (instance == null) break;
+			ic++;
+
+			sl+=instance.labels.length;
+
+			if (ic % 1000 == 0) {
+				del = outValue(ic, del);
+			}
+
+			String[] labs1 = instance.labels;
+			for (int i1 = 0; i1 < labs1.length; i1++) mf.register(REL, labs1[i1]);
+
+			String[] w = instance.forms;
+			for (int i1 = 0; i1 < w.length; i1++) mf.register(WORD, depReader.normalize(w[i1]));
+
+			w = instance.plemmas;
+			for (int i1 = 0; i1 < w.length; i1++) mf.register(WORD, depReader.normalize(w[i1]));
+
+
+			w = instance.ppos;
+			for (int i1 = 0; i1 < w.length; i1++) mf.register(POS, w[i1]);
+
+			w = instance.gpos;
+			for (int i1 = 0; i1 < w.length; i1++) mf.register(POS, w[i1]);
+
+			if (instance.feats !=null) {
+				String fs[][] = instance.feats;
+				for (int i1 = 0; i1 < fs.length; i1++){	
+					w =fs[i1];
+					if (w==null) continue;
+					for (int i2 = 0; i2 < w.length; i2++) mf.register(FEAT, w[i2]);
+				}
+			}
+
+			if ((ic-1)>options.count) break;
+		}
+		del = outValue(ic, del);
+
+		System.out.println();
+		ExtractorReranker.initFeatures();
+
+		ExtractorReranker.maxForm = mf.getFeatureCounter().get(WORD);
+		
+		if (options.clusterFile==null)cl = new Cluster();
+		else cl=  new Cluster(options.clusterFile, mf,6);
+		
+		mf.calculateBits();
+		extractor.initStat();
+		
+		System.out.println(""+mf.toString());
+		
+		extractor.init();
+		depReader.startReading(file);
+
+		int num1 = 0;
+		
+		is.init(ic, new MFB());
+
+		Edges.init(mf.getFeatureCounter().get(POS));
+		
+		del = 0;
+
+		
+		del = outValue(num1, del);
+		System.out.println();
+	}
+
+
+	
+	 public static ExecutorService executerService =java.util.concurrent.Executors.newFixedThreadPool(Parser.THREADS);
+
+
+
+
+	
+
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/parserR2/Reranker.java b/dependencyParser/basic/mate-tools/src/is2/parserR2/Reranker.java
new file mode 100644
index 0000000..a531c3c
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parserR2/Reranker.java
@@ -0,0 +1,1059 @@
+package is2.parserR2;
+
+
+import is2.data.Cluster;
+import is2.data.DataF;
+import is2.data.Edges;
+import is2.data.F2SF;
+import is2.data.FVR;
+import is2.data.Instances;
+import is2.data.Long2Int;
+import is2.data.Long2IntInterface;
+import is2.data.MFB;
+import is2.data.Parse;
+import is2.data.ParseNBest;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.io.CONLLWriter09;
+import is2.tools.Tool;
+import is2.util.DB;
+import is2.util.OptionsSuper;
+import is2.util.ParserEvaluator;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map.Entry;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+import java.util.zip.ZipOutputStream;
+
+import extractors.Extractor;
+import extractors.ExtractorClusterStacked;
+import extractors.ExtractorReranker;
+
+
+
+public class Reranker implements Tool {
+
+
+	public static int THREADS =4;
+
+	Long2IntInterface l2i;
+
+	// the parser models
+	ParametersFloat paramsParsers[];
+
+	// the re-ranker model
+	ParametersFloat parametersReranker;
+	PipeReranker pipeReranker;
+	Pipe pipe;
+	Options options;
+
+	HashMap<Integer,Integer> rank = new HashMap<Integer,Integer>();
+	int amongxbest=0, amongxbest_ula=0, nbest=0,bestProj=0, smallestErrorSum=0, countAllNodes=0;
+	static int NBest =1000;
+
+
+
+
+	/**
+	 * Initialize the parser
+	 * @param options
+	 */
+	public Reranker (Options options) {
+
+		this.options=options;
+
+	}
+
+
+	/**
+	 * @param modelFileName The file name of the parsing model
+	 */
+	public Reranker(String modelFileName) {
+		this(new Options(new String[]{"-model",modelFileName}));
+	}
+
+
+
+	public Reranker() {
+		// TODO Auto-generated constructor stub
+	}
+
+
+	public static void main (String[] args) throws Exception
+	{
+
+		long start = System.currentTimeMillis();
+		Options options = new Options(args);
+
+		NBest = options.best;
+
+		DB.println("n-best "+NBest);
+
+		Runtime runtime = Runtime.getRuntime();
+		THREADS = runtime.availableProcessors();
+
+		if (options.cores<THREADS&&options.cores>0) THREADS =options.cores;		
+
+		DB.println("Found " + runtime.availableProcessors()+" cores use "+THREADS);
+
+
+		if (options.train) {
+
+			Reranker p =new Reranker();
+			p.options=options;
+
+
+			p.l2i = new Long2Int(options.hsize);
+			p.pipeReranker =  new PipeReranker(options);
+			p.pipeReranker.extractor = new ExtractorReranker(p.l2i);
+
+
+			// initialize the parser
+			p.pipe = new Pipe(options);
+
+			// read parsing models
+			p.paramsParsers = new ParametersFloat[options.end+1];
+			for(int m=0;m<=options.end;m++) {
+				String name = options.prefix_model+m;
+				p.paramsParsers[m] = new ParametersFloat(0);
+				p.readModel(name, p.pipe, p.paramsParsers[m]);				
+			}
+
+			// set up the reranker
+			p.parametersReranker = new ParametersFloat(p.l2i.size());
+
+			Instances[] iss = new Instances[options.end+1];
+
+			for(int m=0;m<=options.end;m++) {
+				String name = options.prefix_test+m;
+				iss[m] = new Instances();
+				DB.println("create instances of part "+name);
+				p.pipe.getInstances(name, iss[m]); 
+			} 
+
+
+			ExtractorReranker.initFeatures();
+			p.pipeReranker.extractor.init();
+
+			p.pipeReranker.extractor.initStat();
+
+			p.train(options,iss);
+
+			p.writeModell(options, p.parametersReranker, null,p.pipe.cl);
+		}
+
+		if (options.test) {
+
+			Reranker p = new Reranker();
+			p.options=options;
+
+			// set up the reranker
+			p.l2i = new Long2Int(options.hsize);
+			p.pipeReranker =  new PipeReranker(options);
+			p.pipeReranker.extractor = new ExtractorReranker(p.l2i);
+			p.parametersReranker = new ParametersFloat(p.l2i.size());
+
+
+			// initialize the parser
+			p.pipe = new Pipe(options);
+
+			// read parsing models
+			p.paramsParsers = new ParametersFloat[options.end+1];
+			
+			String nbestName ="n-best+"+options.testfile.substring(options.testfile.length()-12,options.testfile.length()-1);
+			File fnbest = new File(nbestName);
+			int read = fnbest.exists()?2:1;
+
+			if (read != 2)
+			for(int m=0;m<=options.end;m++) {
+				String name = options.prefix_model+m;
+				p.paramsParsers[m] = new ParametersFloat(0);
+				p.readModel(name, p.pipe, p.paramsParsers[m]);				
+			}
+
+			p.readModel(options.modelName, p.pipeReranker, p.parametersReranker);
+
+
+			ExtractorReranker.initFeatures();
+			p.pipeReranker.extractor.initStat();
+			p.pipeReranker.extractor.init();
+
+			p.rerankedParses(options, p.pipe, p.parametersReranker, false, nbestName);
+
+		}
+
+		System.out.println();
+
+		if (options.eval) {
+			System.out.println("\nEVALUATION PERFORMANCE:");
+			ParserEvaluator.evaluate(options.goldfile, options.outfile);
+		}
+
+		long end = System.currentTimeMillis();
+		System.out.println("used time "+((float)((end-start)/100)/10));
+
+		Decoder.executerService.shutdown();		
+		Pipe.executerService.shutdown();
+		System.out.println("end.");
+
+
+	}
+
+	/**
+	 * Read the models and mapping
+	 * @param options
+	 * @param pipe
+	 * @param prm
+	 * @throws IOException
+	 */
+	public void readModel(String modelName, Pipe pipe, Parameters prm) throws IOException {
+
+
+		DB.println("Reading data started: "+modelName);
+
+		// prepare zipped reader
+		ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(modelName)));
+		zis.getNextEntry();
+		DataInputStream dis = new DataInputStream(new BufferedInputStream(zis));
+
+		pipe.mf.read(dis);
+
+		pipe.cl = new Cluster(dis);
+
+		prm.read(dis);
+
+		Long2Int l2i = new Long2Int(prm.size());
+		DB.println("li size "+l2i.size());
+
+		pipe.extractor = new ExtractorClusterStacked[THREADS];
+
+		for (int t=0;t<THREADS;t++) pipe.extractor[t]=new ExtractorClusterStacked(l2i);
+
+		ExtractorClusterStacked.initFeatures();
+
+
+		for (int t=0;t<THREADS;t++) {
+			pipe.extractor[t].initStat();
+			pipe.extractor[t].init();
+		}
+
+		Edges.read(dis);
+
+		options.decodeProjective = dis.readBoolean();
+
+		ExtractorClusterStacked.maxForm = dis.readInt();
+
+		boolean foundInfo =false;
+		try {
+			String info =null;
+			int icnt = dis.readInt();
+			for(int i=0;i<icnt;i++) {
+				info = dis.readUTF();
+				System.out.println(info);
+			}
+		} catch (Exception e) {
+			if (!foundInfo) System.out.println("no info about training");
+		}
+
+
+		dis.close();
+
+		DB.println("Reading data finnished");
+
+		Decoder.NON_PROJECTIVITY_THRESHOLD =(float)options.decodeTH;
+
+	//	ExtractorClusterStacked.initStat();
+
+	}
+
+	/**
+	 * Read the models and mapping
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @throws IOException
+	 */
+	public void readModel(String modelName, PipeReranker pipe, Parameters params) throws IOException {
+
+		DB.println("Reading data started: "+modelName);
+
+		// prepare zipped reader
+		ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(modelName)));
+		zis.getNextEntry();
+		DataInputStream dis = new DataInputStream(new BufferedInputStream(zis));
+
+		pipe.mf.read(dis);
+
+	//	DB.println("reranker model "+pipe.mf.toString());
+
+		pipe.cl = new Cluster(dis);
+
+		params.read(dis);
+		this.l2i = new Long2Int(params.size());
+		DB.println("li size "+l2i.size());
+
+		pipe.extractor = new ExtractorReranker(l2i);
+
+		ExtractorReranker.initFeatures();
+		ExtractorReranker.initStat();
+
+		pipe.extractor.init();
+
+		Edges.read(dis);
+
+		options.decodeProjective = dis.readBoolean();
+
+		ExtractorClusterStacked.maxForm = dis.readInt();
+
+		boolean foundInfo =false;
+		try {
+			String info =null;
+			int icnt = dis.readInt();
+			for(int i=0;i<icnt;i++) {
+				info = dis.readUTF();
+				System.out.println(info);
+			}
+		} catch (Exception e) {
+			if (!foundInfo) System.out.println("no info about training");
+		}
+
+
+		dis.close();
+
+		DB.println("Reading data finnished");
+
+		Decoder.NON_PROJECTIVITY_THRESHOLD =(float)options.decodeTH;
+
+		//ExtractorClusterStacked.initStat();
+
+	}
+
+
+	/**
+	 * Do the training
+	 * @param instanceLengths
+	 * @param options
+	 * @param pipe
+	 * @param parametersReranker
+	 * @param is 
+	 * @param cluster 
+	 * @throws IOException
+	 * @throws InterruptedException
+	 * @throws ClassNotFoundException
+	 */
+	public void train(OptionsSuper options, Instances[] iss) 
+	throws IOException, InterruptedException, ClassNotFoundException {
+
+
+		
+		int read = 0; // 0 compute -- 1 compute and write -- 2 read parses
+
+
+		DB.println("Training Information ");
+		DB.println("-------------------- ");
+
+		ExtractorReranker.initStat();
+		pipeReranker.extractor.init();
+
+		for(Extractor e : this.pipe.extractor) {
+			e.init();
+		}
+
+		int numInstances =0;
+		int maxLenInstances =0;
+		//	int maxLenSentence=1;
+		for(Instances is : iss) {
+			numInstances += is.size();
+			for(int i=0;i<is.size();i++) if (maxLenInstances<is.length(i)) maxLenInstances=is.length(i);
+		}
+
+
+		DataF data = new DataF(maxLenInstances, pipe.mf.getFeatureCounter().get(PipeGen.REL).shortValue());
+
+		int iter = 0;
+		int del=0; 
+		float error =0;
+		float f1=0;
+
+
+
+
+		double	upd =  (double)(options.count*options.numIters)+options.numIters*10;
+
+		//float[][]  = new float[this.NBest][3];
+		FVR act = new FVR();
+
+		FVR pred = new FVR();
+
+		FVR f = new FVR();
+		long[] vs = new long[ExtractorReranker._FC*maxLenInstances];
+
+
+		for(; iter < options.numIters; iter++) {
+
+
+					
+			
+			System.out.print("Iteration "+iter+": ");
+			error=0;
+			f1=0;
+
+			float las =0, cnt=0,averageScore=0;
+
+
+			float firstBestTotalError=0,totalError=0;
+
+			long start = System.currentTimeMillis();
+
+			long last= System.currentTimeMillis();
+
+			long rerankTime = 0;
+
+			
+			String nbest ="n-best";
+			File fnbest = new File(nbest);
+			read = fnbest.exists()?2:1;
+
+			DataInputStream dis =null;
+			DataOutputStream dos = null;
+
+			if (read==1) {
+
+				DB.println("computing and writting nbest list to file: "+nbest);
+
+				ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(nbest)));
+				zos.putNextEntry(new ZipEntry("data")); 
+				dos = new DataOutputStream(new BufferedOutputStream(zos));     
+			}
+
+			
+			// start reading again
+			if (read ==2) {
+
+				//		DB.println("reading nbest list from file: "+nbest);
+
+				ZipInputStream zis =	new ZipInputStream(new BufferedInputStream(new FileInputStream(nbest)));
+				zis.getNextEntry();
+				dis = new DataInputStream(new BufferedInputStream(zis));
+			}
+
+			HashMap<Integer,Integer> remapped = new HashMap<Integer,Integer>();
+
+			int i=0,round=0,instance=0,length=0,count=0, changes=0;
+			for(Instances is : iss) {
+
+				F2SF fparser =this.paramsParsers[instance].getFV();
+				round++; 
+
+								
+				// go over the sentences in the instance
+				for(int n = 0; n < is.size(); n++) {
+					count+=1;
+					length +=is.length(n);
+					upd--;
+
+					if (is.labels[n].length>options.maxLen) continue;
+
+					List<ParseNBest> parses=null;
+
+					short pos[] = is.pposs[n];
+					
+					// read or write nbest list
+					if (read==0|| read==1 && iter==0) {
+						data = pipe.fillVector(fparser, is, n, data, pipe.cl,THREADS,l2i);
+						parses = Decoder.decode(pos,  data, options.decodeProjective,pipe.extractor[0]);
+
+						if (parses.size()>NBest) parses = parses.subList(0, NBest);
+
+
+						if (read==1) {
+							// write the forest
+							dos.writeInt(parses.size());
+							for(int k=0;k<parses.size();k++) {
+								dos.writeUTF(parses.get(k).signature());
+								dos.writeFloat((float)parses.get(k).f1);
+							}
+						}
+					} else if (read==2) {
+						parses = new ArrayList<ParseNBest>();
+						int parseCount = dis.readInt();
+						for(int k=0;k<parseCount;k++) {
+							ParseNBest p = new ParseNBest(dis.readUTF(),dis.readFloat());
+							if (parses.size()<NBest) parses.add(p);
+						}
+					}
+
+
+					int best =0; float bestScore=-100;
+					int goldBest =0; double goldError=Float.MAX_VALUE;
+
+					long startReranking = System.currentTimeMillis();
+
+					// score the n-best parses
+					for(int k=0;k<parses.size();k++) {
+
+						ParseNBest p= parses.get(k);
+
+						pipeReranker.extractor.extractFeatures(is,n,p,parses.indexOf(p),vs,pipe.cl);
+
+						int rank=1*ExtractorReranker.s_type;
+
+						f.clear();	
+
+						for(int j=0;j<vs.length;j++) {
+							if (vs[j]==Integer.MIN_VALUE) break;
+							if (vs[j]>0) f.add(pipeReranker.extractor.li.l2i(vs[j]+rank));	
+						}
+
+						f.add(pipeReranker.extractor.li.l2i(1+rank),(float)p.f1);
+						float score = (float)(parametersReranker.getScore(f));
+						if (score>bestScore) { //rankScore[k][2]>
+							bestScore =score;
+							best=k;
+
+						}
+					}
+
+					// get the best parse in the n-best list
+					for(int k=0;k<parses.size();k++) {
+
+						if (parses.get(k).heads.length!=is.length(n)) {
+							DB.println("error "+n+" "+parses.get(k).heads.length+" "+is.length(n));
+							continue;
+						}
+						double errg = pipe.errors(is, n, parses.get(k));
+						if (goldError > errg) {
+							goldError = errg;
+							goldBest=k;
+						}
+					}
+
+					ParseNBest firstBest = parses.get(0);
+					ParseNBest predParse = parses.get(best);
+					ParseNBest goldBestParse = parses.get(goldBest);
+
+					double e= pipe.errors(is, n ,predParse);
+
+					Integer ctb = remapped.get(best);
+					if (ctb==null) remapped.put(best, 1);
+					else remapped.put(best, ctb+1);
+
+					String info = " 1best-error "+((length-firstBestTotalError)/length)+
+					" reranked "+((length-totalError)/length)+
+					" chd  "+changes+"  "+" ps las "+(las/cnt)+" avs "+((float)averageScore/(float)count)+"   ";
+					
+					
+
+					if((n+1) %500 == 0)  del= PipeGen.outValueErr(count,Math.round(error*1000)/1000,f1/count,del, last, upd,info);
+
+					firstBestTotalError+=Decoder.getError(firstBest, is, n, Decoder.LAS);
+
+					totalError+=Decoder.getError(predParse, is, n, Decoder.LAS);
+
+
+					rerankTime +=System.currentTimeMillis()-startReranking;
+
+					if (best!=0){	
+						changes++;
+					}
+
+					las +=is.length(n)-Decoder.getError(goldBestParse, is, n, Decoder.LAS);
+					cnt +=is.length(n);
+					
+					averageScore+=predParse.f1;
+
+					
+					if (options.count<count) break;
+
+					
+					if (Decoder.getError(goldBestParse, is, n, Decoder.LAS)>= 
+						Decoder.getError(predParse, is, n, Decoder.LAS) ) continue;
+
+
+					// get predicted feature vector
+					pipeReranker.extractor.extractFeatures(is,n,predParse,parses.indexOf(predParse),vs,pipe.cl);
+
+					pred.clear();
+					int rank=1*ExtractorReranker.s_type;
+
+					for(int j=0;j<vs.length;j++) {
+						if (vs[j]==Integer.MIN_VALUE) break;
+						if (vs[j]>0) pred.add(pipeReranker.extractor.li.l2i(vs[j]+rank));	
+					}
+					pred.add(pipeReranker.extractor.li.l2i(1+rank),(float)predParse.f1);
+					error += 1;
+
+					pipeReranker.extractor.extractFeatures(is,n,goldBestParse,parses.indexOf(goldBestParse),vs,pipe.cl);
+
+
+					act.clear();
+					rank=1*ExtractorReranker.s_type;
+					for(int j=0;j<vs.length;j++) {
+						if (vs[j]==Integer.MIN_VALUE) break;
+						if (vs[j]>0) act.add(pipeReranker.extractor.li.l2i(vs[j]+rank));	
+					}
+
+					act.add(pipeReranker.extractor.li.l2i(1+rank),(float)goldBestParse.f1);
+					float lam_dist =(float)( parametersReranker.getScore(act) - 
+							(parametersReranker.getScore(pred)));
+
+
+
+					parametersReranker.update(act, pred, is, n, null, upd, e,lam_dist);
+
+				}
+				instance++;
+
+			}
+
+			String info = " td "+((Decoder.timeDecotder)/1000000F)+" tr "+((Decoder.timeRearrange)/1000000F)
+			+" te "+((Pipe.timeExtract)/1000000F)+" nz "+parametersReranker.countNZ()+					
+			" 1best-error "+((length-firstBestTotalError)/length)+
+			" reranked-best "+((length-totalError)/length)+
+			" rds "+round+"   "+
+			" rerank-t "+(rerankTime/count)+
+			" chd "+changes+"   "+" ps las "+(las/cnt)+" avs "+((float)averageScore/(float)count)+"   ";
+
+
+			//	DB.println("remapped "+remapped);
+
+			PipeGen.outValueErr(count,Math.round(error*1000)/1000,f1/count,del,last, upd,info);
+			del=0;
+			long end = System.currentTimeMillis();
+			System.out.println(" time:"+(end-start));			
+			i++;
+			//	ParametersFloat pf = params.average2((iter+1)*is.size());
+
+
+
+			Decoder.timeDecotder=0;Decoder.timeRearrange=0; Pipe.timeExtract=0;
+
+			if (dos!=null)dos.close();
+			if (dis!=null)dis.close();
+
+		}
+		DB.println("sb "+parametersReranker.parameters[this.pipeReranker.extractor.li.l2i(4090378920L+1*ExtractorReranker.s_type)]);//4090378266
+		parametersReranker.average(iter*numInstances);
+		
+	}                                   
+
+
+	/**
+	 * Do the parsing
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @throws IOException
+	 */
+	private void rerankedParses (OptionsSuper options, Pipe pipe, ParametersFloat params, boolean maxInfo, String nbestName) throws Exception {
+
+		long start = System.currentTimeMillis();
+
+		ExtractorClusterStacked.initFeatures();
+		
+		DataInputStream dis =null;
+		DataOutputStream dos = null;
+		
+		float olas=0, olcnt =0;
+		
+		File fnbest = new File(nbestName);
+		int read = fnbest.exists()?2:1;
+		if (read==1) {
+
+			DB.println("computing and writting nbest list to file: "+nbestName);
+
+			ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(nbestName)));
+			zos.putNextEntry(new ZipEntry("data")); 
+			dos = new DataOutputStream(new BufferedOutputStream(zos));     
+		}
+
+		
+		
+		if (read ==2) {
+
+			//		DB.println("reading nbest list from file: "+nbestName);
+
+			ZipInputStream zis =	new ZipInputStream(new BufferedInputStream(new FileInputStream(nbestName)));
+			zis.getNextEntry();
+			dis = new DataInputStream(new BufferedInputStream(zis));
+		}
+
+		for(int m =0;m< this.paramsParsers.length;m++) {
+
+
+			CONLLReader09 depReader = new CONLLReader09(options.testfile, options.formatTask);
+			CONLLWriter09 depWriter = new CONLLWriter09(options.outfile, options.formatTask);
+			
+			float las=0,lcnt =0, averageScore =0;
+			int cnt = 0;
+			int del=0;
+			
+			
+			long last = System.currentTimeMillis();
+
+
+			String[] types = new String[pipe.mf.getFeatureCounter().get(PipeGen.REL)];
+			for (Entry<String, Integer> e : pipe.mf.getFeatureSet().get(PipeGen.REL).entrySet())  	types[e.getValue()] = e.getKey();
+
+			System.out.print("Processing Sentence: ");
+
+
+			FVR f = new FVR();
+
+			while(true) {
+
+				Instances is = new Instances();
+				is.init(1, new MFB(),options.formatTask);
+
+				SentenceData09 instance = pipe.nextInstance(is, depReader);
+				if (instance==null) break;
+				cnt++;
+
+				String[] forms = instance.forms;
+
+				List<ParseNBest> parses =null;
+
+				// read or write nbest list
+				if (read==0|| read==1) {
+					parses = this.parseNBest(instance, this.paramsParsers[m]);
+		//			data = pipe.fillVector(fparser, is, n, data, pipe.cl,THREADS);
+		//			parses = Decoder.decode(pos,  data, options.decodeProjective);
+
+					if (parses.size()>NBest) parses = parses.subList(0, NBest);
+
+
+					if (read==1) {
+						// write the forest
+						dos.writeInt(parses.size());
+						for(int k=0;k<parses.size();k++) {
+							dos.writeUTF(parses.get(k).signature());
+							dos.writeFloat((float)parses.get(k).f1);
+						}
+					}
+				} else if (read==2) {
+					parses = new ArrayList<ParseNBest>();
+					int parseCount = dis.readInt();
+					for(int k=0;k<parseCount;k++) {
+						ParseNBest p = new ParseNBest(dis.readUTF(),dis.readFloat());
+						if (parses.size()<NBest) parses.add(p);
+					}
+				}
+
+				nbest +=parses.size();
+				
+				
+				//List<ParseNBest> parses = this.parseNBest(instance, this.paramsParsers[m]);
+				
+				long vs[] = new long[ExtractorReranker._FC*is.length(0)];
+
+				float bestScore=0;
+				int best=0;
+	
+				
+				for(int k=0;k<parses.size();k++) {
+
+					ParseNBest p= parses.get(k);
+
+					pipeReranker.extractor.extractFeatures(is,0,p,k,vs,pipeReranker.cl);
+
+					int rank=1*ExtractorReranker.s_type;
+					f.clear();						
+					for(int j=0;j<vs.length;j++) {
+						if (vs[j]==Integer.MIN_VALUE) break;
+						if (vs[j]>0) f.add(pipeReranker.extractor.li.l2i(vs[j]+rank));	
+					}
+					f.add(pipeReranker.extractor.li.l2i(1+rank),(float)p.f1);
+
+					float score = (float)(parametersReranker.getScore(f));
+					if (score>bestScore) { //rankScore[k][2]>
+						bestScore =score;
+						best=k;
+
+					}
+				}
+				// change to best
+				ParseNBest d = parses.get(best);
+
+				las +=(is.length(0)-1)-Decoder.getError(d, is, 0, Decoder.LAS);
+				lcnt +=is.length(0)-1;
+
+				averageScore+=d.f1;
+
+				SentenceData09 i09 = new SentenceData09(instance);
+
+				i09.createSemantic(instance);
+
+				for(int j = 0; j < forms.length-1; j++) {
+					i09.plabels[j] = types[d.labels[j+1]];
+					i09.pheads[j] = d.heads[j+1];
+				}
+
+
+				depWriter.write(i09);
+				String info =""+((float)(averageScore/(float)cnt))+"   ";
+
+				if (cnt%10 ==0)
+					del=PipeGen.outValueErr(cnt, lcnt-las, las/lcnt, del, last, 0, info);//outValue(cnt, del,last, info);
+
+			}
+
+			//pipe.close();
+
+			depWriter.finishWriting();
+			long end = System.currentTimeMillis();
+			DB.println("rank\n"+rank+"\n");
+			DB.println("x-best-las "+amongxbest+" x-best-ula "+amongxbest_ula+" cnt "+cnt+" x-best-las "
+					+((float)((float)amongxbest/cnt))+
+					" x-best-ula "+((float)((float)amongxbest_ula/cnt))+
+					" nbest "+((float)nbest/cnt)+
+					" 1best "+((float)(rank.get(0)==null?0:rank.get(0))/cnt)+
+					" best-proj "+((float)bestProj/cnt)+
+					" Sum LAS "+((float)this.smallestErrorSum/countAllNodes)+" "+
+					""+(las/lcnt));
+
+			//		DB.println("errors "+error);
+			olas+=las;
+			olcnt+=lcnt;
+			rank.clear();
+			amongxbest=0;amongxbest_ula=0;
+			cnt=0;
+			nbest=0;
+			bestProj=0;
+			if (maxInfo) System.out.println("Used time " + (end-start));
+			if (maxInfo) System.out.println("forms count "+Instances.m_count+" unkown "+Instances.m_unkown);
+		}
+		
+		if (dos !=null) {
+			dos.flush();
+			dos.close();
+		}
+		if (dis!=null)dis.close();
+		
+		DB.println("\n overall las "+(olas/olcnt));
+	}
+
+
+	/**
+	 * Do the parsing
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @throws IOException
+	 */
+	private void getNBest(OptionsSuper options, Pipe pipe, ParametersFloat params, boolean maxInfo) throws Exception {
+
+
+		CONLLReader09 depReader = new CONLLReader09(options.testfile, options.formatTask);
+
+		ExtractorClusterStacked.initFeatures();
+
+		int cnt = 0;
+
+		String[] types = new String[pipe.mf.getFeatureCounter().get(PipeGen.REL)];
+		for (Entry<String, Integer> e : pipe.mf.getFeatureSet().get(PipeGen.REL).entrySet())  	types[e.getValue()] = e.getKey();
+
+		//			System.out.print("Processing Sentence: ");
+
+		while(true) {
+
+			Instances is = new Instances();
+			is.init(1, new MFB(),options.formatTask);
+
+			SentenceData09 instance = pipe.nextInstance(is, depReader);
+			if (instance==null) break;
+			cnt++;
+
+			this.parseNBest(instance, this.paramsParsers[0]);		
+		}
+
+		//pipe.close();
+		//			depWriter.finishWriting();
+		//			long end = System.currentTimeMillis();
+		//			DB.println("rank\n"+rank+"\n");
+		//			DB.println("x-best-las "+amongxbest+" x-best-ula "+amongxbest_ula+" cnt "+cnt+" x-best-las "
+		//					+((float)((float)amongxbest/cnt))+
+		//					" x-best-ula "+((float)((float)amongxbest_ula/cnt))+
+		//					" nbest "+((float)nbest/cnt)+
+		//					" 1best "+((float)(rank.get(0)==null?0:rank.get(0))/cnt)+
+		//					" best-proj "+((float)bestProj/cnt));
+		//		DB.println("errors "+error);
+
+
+	}
+
+
+	public SentenceData09 parse (SentenceData09 instance, ParametersFloat params)   {
+
+		String[] types = new String[pipe.mf.getFeatureCounter().get(PipeGen.REL)];
+		for (Entry<String, Integer> e : MFB.getFeatureSet().get(PipeGen.REL).entrySet())  	types[e.getValue()] = e.getKey();
+
+		Instances is = new Instances();
+		is.init(1, new MFB(),options.formatTask);
+		new CONLLReader09().insert(is, instance); 
+
+		String[] forms = instance.forms;
+
+		// use for the training ppos
+		DataF d2;
+		try {
+			d2 = pipe.fillVector(params.getFV(), is,0,null,pipe.cl, THREADS,l2i);//cnt-1
+		} catch (Exception e ) {
+			e.printStackTrace();
+			return null;
+		}
+		short[] pos = is.pposs[0];
+
+		List<ParseNBest> parses=null;
+		Parse d=	null;
+		try {
+			parses =Decoder.decode(pos,d2,options.decodeProjective,pipe.extractor[0]); //cnt-1
+			d = parses.get(0);
+		}catch (Exception e) {		
+			e.printStackTrace();
+		}
+
+		if (parses.size()>NBest) parses = parses.subList(0,NBest);
+
+		int g_las = Decoder.getGoldRank(parses, is,0,Decoder.LAS);
+		int g_ula = Decoder.getGoldRank(parses, is,0,!Decoder.LAS);
+
+		int smallest = Decoder.getSmallestError(parses, is,0,!Decoder.LAS);
+		smallestErrorSum+=is.length(0)-smallest;
+		countAllNodes+=is.length(0);
+
+		if (g_las>=0) amongxbest++;
+		if (g_ula>=0) amongxbest_ula++;
+
+		nbest+=parses.size();
+
+		Integer r = rank.get(g_las);
+		if (r==null) rank.put(g_las, 1);
+		else rank.put(g_las, r+1);
+
+		float err = (float)this.pipe.errors(is,0, d);
+
+		float errBestProj = (float)this.pipe.errors(is,0, Decoder.bestProj);
+
+		if (errBestProj==0) bestProj++;
+
+		SentenceData09 i09 = new SentenceData09(instance);
+
+		i09.createSemantic(instance);
+
+		for(int j = 0; j < forms.length-1; j++) {
+			i09.plabels[j] = types[d.labels[j+1]];
+			i09.pheads[j] = d.heads[j+1];
+		}
+		return i09;
+
+	}
+
+	public List<ParseNBest> parseNBest (SentenceData09 instance, ParametersFloat params)   {
+
+		Instances is = new Instances();
+		is.init(1, new MFB(),options.formatTask);
+		new CONLLReader09().insert(is, instance); 
+
+
+
+		// use for the training ppos
+		DataF d2;
+		try {
+			d2 = pipe.fillVector(params.getFV(), is,0,null,pipe.cl,THREADS,l2i);//cnt-1
+		} catch (Exception e ) {
+			e.printStackTrace();
+			return null;
+		}
+		short[] pos = is.pposs[0];
+
+		List<ParseNBest> parses=null;
+		try {
+			parses =Decoder.decode(pos,d2,options.decodeProjective,pipe.extractor[0]); //cnt-1
+		}catch (Exception e) {		
+			e.printStackTrace();
+		}
+
+		if (parses.size()>NBest) parses = parses.subList(0,NBest);
+
+		return parses;
+
+	}
+
+
+
+	/* (non-Javadoc)
+	 * @see is2.tools.Tool#apply(is2.data.SentenceData09)
+	 */
+	@Override
+	public SentenceData09 apply(SentenceData09 snt09) {
+
+		try {
+			parse(snt09,this.parametersReranker);
+		} catch(Exception e) {
+			e.printStackTrace();
+		}
+
+		Decoder.executerService.shutdown();		
+		Pipe.executerService.shutdown();
+
+		return snt09;
+	}
+
+	/**
+	 * Write the parsing model
+	 * 
+	 * @param options
+	 * @param params
+	 * @param extension
+	 * @throws FileNotFoundException
+	 * @throws IOException
+	 */
+	private void writeModell(OptionsSuper options, ParametersFloat params, String extension, Cluster cs) throws FileNotFoundException, IOException {
+
+		String name = extension==null?options.modelName:options.modelName+extension;
+		DB.println("Writting model: "+name);
+		ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(name)));
+		zos.putNextEntry(new ZipEntry("data")); 
+		DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(zos));     
+
+		MFB.writeData(dos);
+		cs.write(dos);
+
+		params.write(dos);
+
+		Edges.write(dos);
+
+		dos.writeBoolean(options.decodeProjective);
+
+		dos.writeInt(ExtractorClusterStacked.maxForm);
+
+		dos.writeInt(5);  // Info count
+		dos.writeUTF("Used parser   "+Reranker.class.toString());
+		dos.writeUTF("Creation date "+(new SimpleDateFormat("yyyy.MM.dd HH:mm:ss")).format(new Date()));
+		dos.writeUTF("Training data "+options.trainfile);
+		dos.writeUTF("Iterations    "+options.numIters+" Used sentences "+options.count);
+		dos.writeUTF("Cluster       "+options.clusterFile);
+
+		dos.flush();
+		dos.close();
+	}
+
+
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/parserR2/package.html b/dependencyParser/basic/mate-tools/src/is2/parserR2/package.html
new file mode 100755
index 0000000..6b06482
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/parserR2/package.html
@@ -0,0 +1,3 @@
+Package info
+ - n-best parser
+<br>
\ No newline at end of file
diff --git a/dependencyParser/basic/mate-tools/src/is2/tag/ExtractorT2.java b/dependencyParser/basic/mate-tools/src/is2/tag/ExtractorT2.java
new file mode 100644
index 0000000..a37dbbe
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/tag/ExtractorT2.java
@@ -0,0 +1,523 @@
+package is2.tag;
+
+
+import is2.data.Cluster;
+import is2.data.F2SF;
+import is2.data.Instances;
+import is2.data.InstancesTagger;
+import is2.data.Long2IntInterface;
+import is2.data.ParametersFloat;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.tools.IPipe;
+import is2.util.OptionsSuper;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map.Entry;
+
+
+
+final public class ExtractorT2 extends PipeGen implements IPipe  {
+
+	final static int _MAX=71;
+	
+	private static final String STWRD = "STWRD",  STPOS = "STPOS";
+
+	private static short s_pos,s_word,s_char;
+	protected static short s_type;
+	private static int _strp,_ewrd;
+	static int  _CEND;
+
+	public String[] types;
+
+	final public MFO mf;
+
+	final MFO.Data4 d1 = new MFO.Data4(),d2 = new MFO.Data4(),d3 = new MFO.Data4(), 
+	dw = new MFO.Data4(), dwp = new MFO.Data4();
+
+	Cluster cl;
+
+	private OptionsSuper options;
+
+	public ExtractorT2 (OptionsSuper options, MFO mf) throws IOException {
+		this.mf =mf;
+		this.options = options;
+	}	
+	public HashMap<Integer, int[]> _pps = new  HashMap<Integer, int[]>();
+
+	private Lexicon lx;
+	
+	public  int corpusWrds = 0;
+	
+	
+	
+	
+	/* (non-Javadoc)
+	 * @see is2.tag5.IPipe#createInstances(java.lang.String, java.io.File, is2.data.InstancesTagger)
+	 */
+	public Instances createInstances(String file) {
+		return createInstances(file, -1, -1);
+	}	
+		
+		
+	public Instances createInstances(String file, int skipStart, int skipEnd) {
+	
+		InstancesTagger is = new InstancesTagger();
+
+		CONLLReader09 depReader = new CONLLReader09(CONLLReader09.NO_NORMALIZE);
+
+		depReader.startReading(file);
+		mf.register(POS,"<root-POS>");
+		mf.register(WORD,"<root>");
+
+		System.out.println("Registering feature parts ");
+
+		HashMap<Integer, HashSet<Integer>> pps = new  HashMap<Integer, HashSet<Integer>>();
+		
+		int ic=0;
+		while(true) {
+
+			SentenceData09 instance1 = depReader.getNext();
+			
+			if (instance1== null) break;
+			ic++;
+
+			String[] w = instance1.forms;
+			for(int i1 = 0; i1 < w.length; i1++) mf.register(WORD,  w[i1]);
+			for(int i1 = 0; i1 < w.length; i1++) registerChars(CHAR,  w[i1]);
+			for(int i1 = 0; i1 < w.length; i1++) registerChars(CHAR,  w[i1].toLowerCase());
+			
+
+			w = instance1.plemmas;
+			for(int i1 = 0; i1 < w.length; i1++) mf.register(WORD,  w[i1]);			
+			for(int i1 = 0; i1 < w.length; i1++) registerChars(CHAR,  w[i1]);
+
+			w = instance1.gpos;
+			for(int i1 = 0; i1 < w.length; i1++) {
+				mf.register(POS,  w[i1]);
+			}
+			for(int i1 = 0; i1 < w.length; i1++) {
+				HashSet<Integer> ps = pps.get(mf.getValue(POS,w[i1]));
+				if (ps==null) {
+					ps= new HashSet<Integer>();
+					pps.put(mf.getValue(POS,w[i1]), ps);
+				}
+				if (i1+1<w.length) ps.add(mf.getValue(POS,w[i1+1]));
+			}
+			
+		}
+
+		for(Entry<Integer,HashSet<Integer>> e : pps.entrySet()) {
+			int[] ps = new int[e.getValue().size()];
+			int j=0;
+			for(int k : e.getValue().toArray(new Integer[0])) {
+				ps[j++] =k;
+			}
+			_pps.put(e.getKey(), ps);
+		//	System.out.println("put "+e.getKey()+" "+ps.length+" pps size "+_pps.size());
+		}
+			
+		System.out.println("words in corpus "+(corpusWrds=mf.getFeatureCounter().get(ExtractorT2.WORD)));
+		if (options.clusterFile==null)cl = new Cluster();
+		else cl=  new Cluster(options.clusterFile, mf,6);
+
+		if (options.lexicon==null)lx = new Lexicon(new byte[0][0]);
+		else lx=  new Lexicon(options.lexicon,mf);
+
+		initFeatures();
+
+		mf.calculateBits();
+		initValues();
+
+		System.out.println(""+mf.toString());
+
+		depReader.startReading(file);
+
+		int num1 = 0;
+
+		int instanceCount=0;
+		
+		System.out.print("Creating Instances: ");
+
+		is.init(ic, mf) ;
+		int del=0;
+
+		while(true) {
+			if (num1 % 100 ==0) del = outValue(num1, del);
+			
+			if (num1>=skipStart && num1<skipEnd && skipStart>=0) {
+				SentenceData09 instance1 = depReader.getNext();
+				if (instance1== null) break;
+				num1++;
+				continue;
+			}
+
+				
+			SentenceData09 instance1 = depReader.getNext(is);
+			if (instance1== null) break;
+		
+			is.fillChars(instance1, instanceCount,_CEND);
+			for(int k=0;k<instance1.length();k++) {
+					if (instance1.ppos[k].contains("\\|"))  
+
+				is.pposs[num1][k] = (short)mf.getValue(FM, instance1.ppos[k].split("\\|")[1]);
+			}
+
+
+			if (num1>options.count) break;
+
+			num1++;
+			instanceCount++;
+		}
+		outValue(num1, del);
+		System.out.println();
+
+		types= mf.reverse(mf.getFeatureSet().get(POS));
+		return is;
+	}
+
+	private void registerChars(String type, String word) {
+		for(int i=0;i<word.length();i++) 	mf.register(type, Character.toString(word.charAt(i)));      
+	}
+
+
+	/* (non-Javadoc)
+	 * @see is2.tag5.IPipe#initValues()
+	 */
+	public void initValues() {
+		s_pos = mf.getFeatureBits(POS);
+		s_word =  mf.getFeatureBits(WORD);
+		s_type =  mf.getFeatureBits(TYPE);
+		s_char =  mf.getFeatureBits(CHAR);
+
+		d1.a0 = s_type; d1.a1 = s_pos; d1.a2= s_word;d1.a3= s_word;
+		d2.a0 = s_type; d2.a1 = s_pos; d2.a2= s_pos; d2.a3= s_pos; d2.a4= s_pos; d2.a5= s_pos; d2.a6= s_pos;
+		d3.a0 = s_type; d3.a1 = s_pos; d3.a2=  s_char; d3.a3= s_char; d3.a4= s_char; d3.a5=  s_char; d3.a6=  s_char; d3.a7= s_char;
+		dw.a0 = s_type; dw.a1 = s_pos;dw.a2=  s_word; dw.a3= s_word; dw.a4= s_word; dw.a5=  s_word; dw.a6=  s_word; dw.a7= s_word;
+		dwp.a0 = s_type; dwp.a1 = s_pos;dwp.a2= s_word ; dwp.a3= s_pos; dwp.a4= s_word; 
+
+	}
+
+	/* (non-Javadoc)
+	 * @see is2.tag5.IPipe#initFeatures()
+	 */
+	public void initFeatures() {
+		// 62
+		for(int t=0;t<67;t++)  mf.register(TYPE, "F"+t);
+
+		mf.register(POS, MID);
+		_strp = mf.register(POS, STR);
+		mf.register(POS, END);
+
+		mf.register(WORD, STR);
+		_ewrd =mf.register(WORD, END);
+
+		_CEND = mf.register(CHAR, END);
+
+		mf.register(WORD,STWRD);
+		mf.register(POS,STPOS);
+
+
+	}
+
+	final public void addFeatures(InstancesTagger is, int ic, String fs,int i, short pposs[], int[] forms, int[] lemmas, long[] vs) {
+
+		int c0= is.chars[ic][i][0], c1=is.chars[ic][i][1], c2=is.chars[ic][i][2], c3=is.chars[ic][i][3], c4=is.chars[ic][i][4],c5=is.chars[ic][i][5];
+		int e0 =is.chars[ic][i][6], e1 =is.chars[ic][i][7],e2 =is.chars[ic][i][8],e3 =is.chars[ic][i][9],e4 =is.chars[ic][i][10];
+
+		int f=1,n=0;
+		short upper =0, number = 1;
+		for(int k1=0;k1<fs.length();k1++){
+			char c = fs.charAt(k1);
+			if (Character.isUpperCase(c)) {
+				if (k1==0) upper=1;
+				else {
+					// first char + another
+					if (upper==1) upper=3;
+					// another uppercase in the word
+					else if (upper==0) upper=2;
+				}
+			}
+
+			// first 
+			if (Character.isDigit(c) && k1==0) number =2 ;
+			else if (Character.isDigit(c) && number==1) number = 3;
+		//	if(number==2 &&Character.isDigit(c)) number=4;
+		//	if(number==4 && !Character.isDigit(c)) number=5;
+		}
+
+	//	if (i==0 && upper>0) upper+=4; 
+		int form = forms[i], form2 = forms[i]<corpusWrds?forms[i]:-1;
+
+		int len = forms.length;		
+		long l;
+		d1.v0 = f++; d1.v2=form2; l=mf.calc3(d1); vs[n++]=mf.calc3(d1);
+
+		d1.v0 = f++; d1.v2=is.formlc[ic][i]; vs[n++]=mf.calc3(d1);
+
+		
+		d3.v2=c0; d3.v3=c1; d3.v4=c2; d3.v5=c3; d3.v6=c4;
+		d3.v0=f++; vs[n++]=mf.calc3(d3);
+		d3.v0=f++; vs[n++]=mf.calc4(d3); 
+		d3.v0=f++; vs[n++]=mf.calc5(d3); 
+		d3.v0=f++; vs[n++]=mf.calc6(d3); 
+		d3.v0=f++; vs[n++]=mf.calc7(d3);
+
+		if (form!=-1) {
+			d3.v2=c2; d3.v3=c3; d3.v4=c4; d3.v5=c5; d3.v6=cl.getLP(form);
+			d3.v0=f; vs[n++]=mf.calc6(d3); d3.v0=f+1; vs[n++]=mf.calc7(d3);
+		} 
+		f+=2;
+
+		if (form>0) {
+			d3.v0=f; d3.v5=cl.getLP(form); vs[n++]=mf.calc6(d3);
+			d3.v0=f+1; d3.v4=cl.getLP(form); vs[n++]=mf.calc5(d3);
+			d3.v0=f+2; d3.v3=cl.getLP(form); vs[n++]=mf.calc4(d3);	
+		}
+		f+=5;
+
+		d3.v2=e0; d3.v3=e1; d3.v4=e2; d3.v5=e3; d3.v6=e4;
+		d3.v0 =f++; vs[n++]=mf.calc3(d3);	
+		d3.v0 =f++; vs[n++]=l=mf.calc4(d3); vs[n++]=d3.calcs(3, upper, l); 
+		d3.v0 =f++; vs[n++]=l=mf.calc5(d3); vs[n++]=d3.calcs(3, upper, l); 
+		d3.v0 =f++; vs[n++]=l=mf.calc6(d3); vs[n++]=d3.calcs(3, upper, l); 		
+		d3.v0 =f++; vs[n++]=l=mf.calc7(d3); vs[n++]=d3.calcs(3, upper, l); 
+
+		if (form>0) {
+			d3.v0=f; d3.v5=cl.getLP(form); vs[n++]=mf.calc6(d3);
+			d3.v0=f+1; d3.v4=cl.getLP(form); vs[n++]=mf.calc5(d3);
+			d3.v0=f+2; d3.v3=cl.getLP(form); vs[n++]=mf.calc4(d3);
+
+			d3.v2=e0; d3.v3=e1; d3.v4=e2; 
+		
+			d3.v0=f+3; d3.v2=lx.getTag(form); vs[n++]=mf.calc3(d3);
+			d3.v0=f+4; d3.v4=cl.getLP(form); vs[n++]=mf.calc5(d3);
+			d3.v0=f+5; d3.v3=cl.getLP(form); vs[n++]=mf.calc4(d3);
+		}
+		f+=6;
+
+		// sign three-grams
+		d3.v0=f++;d3.v2=c1; d3.v3=c2; d3.v4=c3;  vs[n++]=mf.calc5(d3); 
+		d3.v0=f++;d3.v2=c2; d3.v3=c3; d3.v4=c4;  vs[n++]=mf.calc5(d3); 
+		d3.v0=f++;d3.v2=c3; d3.v3=c4; d3.v4=c5;  vs[n++]=mf.calc5(d3); 
+
+		// sign quad-grams
+		d3.v0=f++;d3.v2=c1; d3.v3=c2; d3.v4=c3; d3.v5=c4; vs[n++]=mf.calc6(d3); 
+		d3.v0=f++;d3.v2=c2; d3.v3=c3; d3.v4=c4; d3.v5=c5; vs[n++]=mf.calc6(d3); // changed to 6
+
+		if (i+1<len && forms[i+1]<this.corpusWrds) {dw.v0=f; dw.v2=forms[i+1];dw.v3= form2;vs[n++]=mf.calc4(dw);}
+		f++;
+		
+		if (len>i+1) {
+
+			if (forms[i+1]<corpusWrds){dw.v0=f; dw.v2= forms[i+1]; vs[n++]=mf.calc3(dw);}
+			
+			d3.v0=f+1; d3.v2 =is.chars[ic][i+1][0];vs[n++]=mf.calc3(d3);
+			d3.v0=f+2; d3.v2 =is.chars[ic][i+1][6];vs[n++]=mf.calc3(d3);
+
+			d3.v2=e0; d3.v3=e1;  
+
+			d3.v0 =f+3; d3.v4 =is.chars[ic][i+1][0];vs[n++]=mf.calc5(d3);
+			d3.v0 =f+4; d3.v4 =is.chars[ic][i+1][6];vs[n++]=mf.calc5(d3);
+
+			if (is.chars[ic][i+1][11]>1 ) { //  instance.forms[i+1].length()
+
+				d3.v0=f+5; d3.v2=is.chars[ic][i+1][0]; d3.v3=is.chars[ic][i+1][1]; vs[n++]=mf.calc4(d3);
+				d3.v0=f+6; d3.v2=is.chars[ic][i+1][6];	d3.v3=is.chars[ic][i+1][7]; vs[n++]=mf.calc4(d3);
+
+				d3.v2=e0; d3.v3=e1;  
+
+				d3.v0=f+7; d3.v4 = is.chars[ic][i+1][0]; d3.v5 =is.chars[ic][i+1][1]; vs[n++]=mf.calc6(d3);
+				d3.v0=f+8; d3.v4 = is.chars[ic][i+1][6]; d3.v5=is.chars[ic][i+1][7]; vs[n++]=mf.calc6(d3);				
+
+				if (forms[i+1]>0) {
+					d3.v0=f+9; d3.v2=is.chars[ic][i+1][0]; d3.v3=is.chars[ic][i+1][1]; d3.v4 =cl.getLP(forms[i+1]); vs[n++]=mf.calc5(d3);
+					d3.v0=f+10; d3.v2=is.chars[ic][i+1][6];	d3.v3=is.chars[ic][i+1][7]; d3.v4 =cl.getLP(forms[i+1]); vs[n++]=mf.calc5(d3);
+				} 
+			} 
+			
+			if (forms[i+1]>0) {
+				
+				
+				dw.v0=f+11; dw.v2= cl.getLP(forms[i+1]); dw.v3= form2;vs[n++]=mf.calc4(dw);
+			
+		//		if (forms[i]>0){
+		//			dw.v0=f+12; dw.v2= cl.getLP(forms[i+1]); dw.v3=lx.getTag(form);vs[n++]=mf.calc4(dw);
+		//			dw.v0=f+13; dw.v2= cl.getLP(forms[i]);   dw.v3=lx.getTag(forms[i+1]);vs[n++]=mf.calc4(dw);
+		//		}
+			} 
+			
+			
+			if (len>i+2) {
+				if (forms[i+2]<corpusWrds && forms[i+1]<corpusWrds) {
+					dw.v0=f+12; dw.v2= forms[i+2]; dw.v3 = forms[i+1];vs[n++]=mf.calc4(dw);vs[n++]=mf.calc3(dw);
+				}	
+				d2.v0=f+13; d2.v2=pposs[i+1]; d2.v3=  pposs[i+2];	vs[n++]=mf.calc4(d2);
+			} 
+
+			if (len>i+3) {
+				if (forms[i+3]<this.corpusWrds && forms[i+2]<this.corpusWrds) {
+					dw.v0=f+14; dw.v2= forms[i+3]; dw.v3 = forms[i+2]; vs[n++]=mf.calc4(dw); vs[n++]=mf.calc3(dw);
+				}
+			} 
+		} 
+		f+=15;
+
+		// length
+		d2.v0=f++; d2.v2=is.chars[ic][i][11];vs[n++]=mf.calc3(d2);
+
+
+		// contains a number
+		d2.v0=f++; d2.v2=number;	vs[n++]=mf.calc3(d2);
+		if (lemmas[i]< corpusWrds) {d1.v0=f;  d1.v2=lemmas[i];	vs[n++]=mf.calc3(d1);	}
+		f++;
+
+		if (i!=0 &&len>i+1) {
+			
+			if (lemmas[i-1]< corpusWrds&& lemmas[i+1]<corpusWrds) {dw.v0=f; dw.v2=lemmas[i-1];dw.v3=lemmas[i+1];vs[n++]=mf.calc4(dw);}                      
+			
+			d2.v0=f+1; d2.v2=pposs[i-1]; d2.v3=pposs[i+1];vs[n++]=mf.calc4(d2);                      
+		} 
+		f+=2;
+
+		d2.v0= f++; d2.v2=i>=1? pposs[i-1]:_strp; vs[n++]=mf.calc3(d2);
+	
+		if (i>0) {
+			
+			dw.v0 = f; dw.v2 =i>=1?  forms[i-1]<corpusWrds?forms[i-1]:-1:_strp; vs[n++]=mf.calc3(dw);
+			f++;
+			
+			if (lemmas[i-1]<corpusWrds) {dw.v0 = f; dw.v2 = i>=1? lemmas[i-1]:_strp; vs[n++]=mf.calc3(dw);}			
+			f++;
+			
+			//if (len>i+1) {d2.v0=f;	d2.v2= pposs[i-1];d2.v3= pposs[i+1]; vs[n++]=mf.calc4(d2);}
+			//f++;
+
+			if (i>1) {
+				
+				d2.v0=f++;	d2.v2=i<2?_strp:  pposs[i-2]; vs[n++]=mf.calc3(d2);
+				d2.v0=f++;	d2.v2= pposs[i-1]; d2.v3= pposs[i-2]; vs[n++]=mf.calc4(d2);
+				
+				if (forms[i-2]<corpusWrds) {dw.v0=f;dw.v2= forms[i-2]; vs[n++]=mf.calc3(dw);} f++;
+				if (forms[i-1]<corpusWrds) {dwp.v0=f;dwp.v2 = forms[i-1]; dwp.v3 =  pposs[i-2];vs[n++]=mf.calc4(dwp); } f++;
+				if (forms[i-2]<corpusWrds) {dwp.v0=f;dwp.v2 = forms[i-2]; dwp.v3 =  pposs[i-1];vs[n++]=mf.calc4(dwp);} f++;
+
+				if (i>2) {
+					d2.v0=f++;	d2.v2=pposs[i-3]; vs[n++]=mf.calc3(d2); 						
+					d2.v0=f++;	d2.v2=pposs[i-2]; d2.v3= pposs[i-3]; vs[n++]=mf.calc4(d2);
+					if(forms[i-3]<this.corpusWrds && forms[i-2]<this.corpusWrds) {
+						dw.v0=f;   dw.v2 = forms[i-3]; dw.v3 = forms[i-2]; vs[n++]=mf.calc4(dw);
+					}
+					f++;
+				}
+			}
+		}
+		vs[n] = Integer.MIN_VALUE;
+	}
+
+	
+	public int fillFeatureVectorsOne(String fs,	ParametersFloat params, int w1, InstancesTagger is, int n, short[] pos,Long2IntInterface li, float[] score) {
+
+		float best  = -1000;
+		int bestType = -1;
+
+		F2SF f = new F2SF(params.parameters);
+
+		long vs[] = new long[_MAX];
+		int lemmas[];
+		if (options.noLemmas) lemmas = new int[is.length(n)];
+		else lemmas = is.plemmas[n];
+		addFeatures(is,n,fs,w1,pos,is.forms[n], lemmas, vs);
+
+		//for(int t = 0; t < types.length; t++) {
+		
+		for(int t=0;t<types.length;t++) {
+
+			int p = t<<s_type;
+
+			f.clear();
+			for(int k=0;vs[k]!=Integer.MIN_VALUE;k++) if(vs[k]>0) f.add(li.l2i(vs[k]+p));
+			if (f.score > best) {
+				bestType=t;
+				score[w1]= best =f.score;
+			}
+		}	
+		return bestType;
+
+	}
+	
+	public ArrayList<POS> classify(String fs, ParametersFloat params, int w1, InstancesTagger is, int n, short[] pos, Long2IntInterface li) {
+
+
+		F2SF f = new F2SF(params.parameters);
+
+		long vs[] = new long[_MAX];
+		int lemmas[];
+		if (options.noLemmas) lemmas = new int[is.length(n)];
+		else lemmas = is.plemmas[n];
+		addFeatures(is,n,fs,w1,pos,is.forms[n], lemmas, vs);
+
+		ArrayList<POS> best = new ArrayList<POS>(types.length);
+		
+		for(int t=0;t<types.length;t++) {
+
+			int p = t<<s_type;
+
+			f.clear();
+			f.add(vs,li, p);
+			POS px = new POS(t, f.score);
+			best.add(px);
+		}	
+		Collections.sort(best);
+		return best;
+
+	}
+
+	/* (non-Javadoc)
+	 * @see is2.tag5.IPipe#write(java.io.DataOutputStream)
+	 */
+	@Override
+	public void write(DataOutputStream dos){
+		try {
+			this.cl.write(dos);
+			this.lx.write(dos);
+			dos.writeInt(this.corpusWrds);
+			dos.writeInt(_pps.size());
+		
+			for(Entry<Integer,int[]> e : _pps.entrySet()) {
+				dos.writeInt(e.getValue().length);
+				for(int k : e.getValue()) dos.writeInt(k);
+				dos.writeInt(e.getKey());
+			}
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+	
+	
+	public void read(DataInputStream dis){
+		try {
+			this.cl =new Cluster(dis);
+			this.lx =new Lexicon(dis);
+			this.corpusWrds = dis.readInt();
+
+			int pc = dis.readInt();
+			for(int j=0;j<pc;j++) {
+				int ps[] = new int [dis.readInt()];
+				for(int k=0;k<ps.length;k++) 	ps[k]=dis.readInt();
+				_pps.put(dis.readInt(), ps);
+			}
+		//	System.out.println("_pps "+ps.length);
+			
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/tag/Lexicon.java b/dependencyParser/basic/mate-tools/src/is2/tag/Lexicon.java
new file mode 100644
index 0000000..8a85813
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/tag/Lexicon.java
@@ -0,0 +1,140 @@
+/**
+ * 
+ */
+package is2.tag;
+
+import is2.data.IEncoderPlus;
+import is2.data.PipeGen;
+import is2.util.DB;
+
+import java.io.BufferedReader;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+/**
+ * @author Dr. Bernd Bohnet, 07.01.2011
+ * 
+ * 
+ */
+public class Lexicon {
+	
+	public static final String FR = "FR",TAG = "TAG";
+	
+	final byte[][] word2tag;
+	public Lexicon(byte[][] w2t) {
+	
+		word2tag = w2t;
+	}
+	
+	public Lexicon(String clusterFile, IEncoderPlus mf) {
+
+		final String REGEX = "\t";
+
+		// register words
+		try {
+			BufferedReader	inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(clusterFile),"UTF-8"),32768);
+
+			int cnt=0;
+			String line;
+			while ((line =inputReader.readLine())!=null) {
+
+				try {
+					String[] split = line.split(REGEX); 
+				//	int f = Integer.parseInt(split[2]);
+//					if (f>2) {
+						cnt++;
+						mf.register(PipeGen.WORD, split[0]);
+						mf.register(TAG, split[1]); //tag
+					
+						if (split.length>1) mf.register(FR, split[1]); // frequency 
+//					}
+				} catch(Exception e) {
+					System.out.println("Error in lexicon line "+cnt+" error: "+e.getMessage());
+				}
+			}
+			System.out.println("read number of words from lexicon "+cnt);
+			inputReader.close();
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+			
+		word2tag = new byte[mf.getFeatureCounter().get(PipeGen.WORD)][1];
+		// insert words
+		try {
+			String line;
+			BufferedReader	inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(clusterFile),"UTF-8"),32768);
+
+			while ((line =inputReader.readLine())!=null) {
+
+				String[] split = line.split(REGEX);
+				int w =mf.getValue(PipeGen.WORD, split[0]);
+				if (w<0) continue;
+				word2tag[w][0] = (byte)mf.getValue(TAG, split[1]); 
+			//	if (split.length>1) word2tag[w][1]= (byte)mf.getValue(FR, split[2]); // frequency 
+			}
+			inputReader.close();
+			int fill=0;
+			for(int l = 0; l<word2tag.length; l++ ){
+				if (word2tag[l][0]!=0) fill++;
+			}
+			System.out.println("filled "+fill+" of "+word2tag.length);
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * Read the cluster
+	 * @param dos
+	 * @throws IOException 
+	 */
+	public Lexicon(DataInputStream dis) throws IOException {
+
+		word2tag = new byte[dis.readInt()][1];
+		for(int i =0;i<word2tag.length;i++) {
+			word2tag[i][0]=dis.readByte();
+//			word2tag[i][1]=dis.readByte();
+		}
+		DB.println("Read lexicon with "+word2tag.length+" words ");
+	}
+	
+	/**
+	 * Write the cluster
+	 * @param dos
+	 * @throws IOException 
+	 */
+	public void write(DataOutputStream dos) throws IOException {
+
+		dos.writeInt(word2tag.length);
+		for(byte[] i : word2tag) {
+			dos.writeByte(i[0]);
+//			dos.writeByte(i[1]);
+		}
+	
+	}
+
+	/**
+	 * @param form
+	 * @return
+	 */
+	public int getTag(int form) {
+		if (word2tag.length<form || form<0) return -1;
+		return word2tag[form][0];
+	}
+
+	/**
+	 * @param form
+	 * @return
+	 */
+	public int getConf(int form) {
+		if (word2tag.length<form || form<0) return -1;
+		return word2tag[form][1];
+	}
+	
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/tag/MFO.java b/dependencyParser/basic/mate-tools/src/is2/tag/MFO.java
new file mode 100644
index 0000000..df790e3
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/tag/MFO.java
@@ -0,0 +1,537 @@
+package is2.tag;
+
+
+import is2.data.IEncoderPlus;
+import is2.util.DB;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map.Entry;
+
+/**
+ * Map Features, do not map long to integer
+ * 
+ * @author Bernd Bohnet, 20.09.2009
+ */
+
+final public class MFO  implements IEncoderPlus {
+
+	/** The features and its values */
+	private final HashMap<String,HashMap<String,Integer>> m_featureSets = new HashMap<String,HashMap<String,Integer>>();
+
+	/** The feature class and the number of values */
+	 private final HashMap<String,Integer> m_featureCounters = new HashMap<String,Integer>();
+
+	/** The number of bits needed to encode a feature */
+	 final HashMap<String,Integer> m_featureBits = new HashMap<String,Integer>();
+
+	/** Integer counter for long2int */
+	//private int count=0;
+
+	/** Stop growing */
+	public boolean stop=false;
+
+	final public static String NONE="<None>";
+
+	
+
+
+
+	final public static class Data4 {
+		public int shift;
+		public short a0,a1,a2,a3,a4,a5,a6,a7,a8,a9;
+		public int v0,v1,v2,v3,v4,v5,v6,v7,v8,v9; 
+
+		final public long calcs(int b, long v, long l) {
+			if (l<0) return l;
+			l |= v<<shift;
+			shift +=b;
+			return l;
+		}
+
+
+		final public long calc2() {
+
+			if (v0<0||v1<0) return -1;
+
+			long l = v0;
+			shift =a0;
+			l |= (long)v1<<shift;
+			shift +=a1;
+
+			return l;
+		}
+
+
+
+		final public long calc3() {
+
+			if (v0<0||v1<0||v2<0) return -1;
+			//	if (v1<0||v2<0) return -1;
+
+			long l = v0;
+			shift =a0;
+			l |= (long)v1<<shift;
+			shift +=a1;
+			l |= (long)v2<<shift;
+			shift=(short) (shift + a2);
+
+			//shift=;
+			return l;
+		}
+
+
+		final public long calc4() {
+			if (v0<0||v1<0||v2<0||v3<0) return -1;
+
+			long l = v0;
+			shift =a0;
+			l |= (long)v1<<shift;
+			shift +=a1;
+			l |= (long)v2<<shift;
+			shift +=a2;
+			l |= (long)v3<<shift;
+			shift= shift +a3;
+
+			return l;
+		}
+
+
+
+		final public long calc5() {
+
+			if (v0<0||v1<0||v2<0||v3<0||v4<0) return -1;
+
+			long l = v0;
+			shift =a0;
+			l |= (long)v1<<shift;
+			shift +=a1;
+			l |= (long)v2<<shift;
+			shift +=a2;
+			l |= (long)v3<<shift;
+			shift +=a3;	
+			l |= (long)v4<<shift;
+			shift =shift+a4;
+
+			return l;
+		}
+
+
+		final public long calc6() {
+
+			if (v0<0||v1<0||v2<0||v3<0||v4<0||v5<0) return -1;
+
+			long l = v0;
+			shift =a0;
+			l |= (long)v1<<shift;
+			shift +=a1;
+			l |= (long)v2<<shift;
+			shift +=a2;
+			l |= (long)v3<<shift;
+			shift +=a3;	
+			l |= (long)v4<<shift;
+			shift +=a4;
+			l |= (long)v5<<shift;
+			shift =shift+a5;
+
+			return l;
+		}
+
+		final public long calc7() {
+
+			if (v0<0||v1<0||v2<0||v3<0||v4<0||v5<0||v6<0) return -1;
+
+			long l = v0;
+			 shift =a0;
+			l |= (long)v1<<shift;
+			shift +=a1;
+			l |= (long)v2<<shift;
+			shift +=a2;
+			l |= (long)v3<<shift;
+			shift +=a3;	
+			l |= (long)v4<<shift;
+			shift +=a4;
+			l |= (long)v5<<shift;
+			shift +=a5;
+			l |= (long)v6<<shift;
+			shift =shift+a6;
+
+			return l;
+		}
+
+
+		final public long calc8() {
+
+			if (v0<0||v1<0||v2<0||v3<0||v4<0||v5<0||v6<0||v7<0) return -1;
+
+			long l = v0;
+			 shift =a0;
+			l |= (long)v1<<shift;
+			shift +=a1;
+			l |= (long)v2<<shift;
+			shift +=a2;
+			l |= (long)v3<<shift;
+			shift +=a3;	
+			l |= (long)v4<<shift;
+			shift +=a4;
+			l |= (long)v5<<shift;
+			shift +=a5;
+			l |= (long)v6<<shift;
+			shift +=a6;
+			l |= (long)v7<<shift;
+			shift =shift+a7;
+
+			return l;
+		}
+
+	}
+
+	public MFO () {}
+
+
+	//	public  int size() {return count;}
+
+
+	final public void stop() {
+		stop=true;
+	}
+
+	final public void start() {
+		stop=false;		
+	}
+
+
+	/**
+	 * Register an attribute class, if it not exists and add a possible value
+	 * @param type
+	 * @param type2
+	 */
+	 final public int register(String a, String v) {
+
+		HashMap<String,Integer> fs = getFeatureSet().get(a);
+		if (fs==null) {
+			fs = new HashMap<String,Integer>();
+			getFeatureSet().put(a, fs);
+			fs.put(NONE, 0);
+			getFeatureCounter().put(a, 1);
+		}
+		Integer c = getFeatureCounter().get(a);
+
+		Integer i = fs.get(v);
+		if (i==null) {
+			fs.put(v, c);
+			c++;
+			getFeatureCounter().put(a,c);
+			return c-1;
+		} else return i;
+	}
+
+	/**
+	 * Calculates the number of bits needed to encode a feature
+	 */
+	 public void calculateBits() {
+
+		int total=0;
+		for(Entry<String,Integer> e : getFeatureCounter().entrySet() ){
+			int bits =(int)Math.ceil((Math.log(e.getValue()+1)/Math.log(2)));
+			m_featureBits.put(e.getKey(), bits);
+			total+=bits;
+			//	System.out.println(" "+e.getKey()+" bits "+bits+" number "+(e.getValue()+1));
+		}
+
+		//		System.out.println("total number of needed bits "+total);
+	}
+
+
+
+	@Override
+	public  String toString() {
+
+		StringBuffer content = new StringBuffer();
+		for(Entry<String,Integer> e : getFeatureCounter().entrySet() ){
+			content.append(e.getKey()+" "+e.getValue());
+			content.append(':');
+			//		 HashMap<String,Integer> vs = getFeatureSet().get(e.getKey());
+			content.append(getFeatureBits(e.getKey()));
+
+			/*if (vs.size()<120)
+			 for(Entry<String,Integer> e2 : vs.entrySet()) {
+				 content.append(e2.getKey()+" ("+e2.getValue()+") ");
+			 }*/
+			content.append('\n');
+
+		}
+		return content.toString();
+	}
+
+
+	static final public long calcs(Data4 d,int b, long v, long l) {
+		if (l<0) return l;
+		l |= v<<d.shift;
+		d.shift +=b;
+		return l;
+	}
+
+
+	final public short getFeatureBits(String a) {
+		return (short)m_featureBits.get(a).intValue();
+	}
+
+
+
+	/**
+	 * Get the integer place holder of the string value v of the type a
+	 * 
+	 * @param t the type
+	 * @param v the value 
+	 * @return the integer place holder of v
+	 */
+	final public int getValue(String t, String v) {
+
+		if (m_featureSets.get(t)==null) return -1;
+		Integer vi = m_featureSets.get(t).get(v);
+		if (vi==null) return -1; //stop && 
+		return vi.intValue();
+	}
+
+	/**
+	 * Static version of getValue
+	 * @see getValue
+	 */
+	final public int getValueS(String a, String v) {
+
+		if (m_featureSets.get(a)==null) return -1;
+		Integer vi = m_featureSets.get(a).get(v);
+		if (vi==null) return -1; //stop && 
+		return vi.intValue();
+	}
+
+	public int hasValue(String a, String v) {
+
+		Integer vi = m_featureSets.get(a).get(v);
+		if (vi==null) return -1;
+		return vi.intValue();
+	}
+
+
+
+
+	final public long calc2(Data4 d) {
+
+		if (d.v0<0||d.v1<0) return -1;
+		//	if (d.v1<0||d.v2<0) return -1;
+
+		long l = d.v0;
+		short shift =d.a0;
+		l |= (long)d.v1<<shift;
+		shift +=d.a1;
+		//	l |= (long)d.v2<<shift;
+		d.shift=shift;
+
+		//d.shift=;
+		return l;
+	}
+
+
+
+	final public long calc3(Data4 d) {
+
+		if (d.v0<0||d.v1<0||d.v2<0) return -1;
+
+		long l = d.v0;
+		short shift =d.a0;
+		l |= (long)d.v1<<shift;
+		shift +=d.a1;
+		l |= (long)d.v2<<shift;
+		d.shift=shift + d.a2;
+		return l;
+	}
+
+
+	final public long calc4(Data4 d) {
+		if (d.v0<0||d.v1<0||d.v2<0||d.v3<0) return -1;
+
+		long l = d.v0;
+		int shift =d.a0;
+		l |= (long)d.v1<<shift;
+		shift +=d.a1;
+		l |= (long)d.v2<<shift;
+		shift +=d.a2;
+		l |= (long)d.v3<<shift;
+		d.shift= shift +d.a3;
+
+		return l;
+	}
+
+
+	final public long calc5(Data4 d) {
+
+		if (d.v0<0||d.v1<0||d.v2<0||d.v3<0||d.v4<0) return -1;
+
+		long l = d.v0;
+		int shift =d.a0;
+		l |= (long)d.v1<<shift;
+		shift +=d.a1;
+		l |= (long)d.v2<<shift;
+		shift +=d.a2;
+		l |= (long)d.v3<<shift;
+		shift +=d.a3;	
+		l |= (long)d.v4<<shift;
+		d.shift =shift+d.a4;
+
+		return l;
+	}
+
+
+	final public long calc6(Data4 d) {
+
+		if (d.v0<0||d.v1<0||d.v2<0||d.v3<0||d.v4<0||d.v5<0) return -1;
+
+		long l = d.v0;
+		int shift =d.a0;
+		l |= (long)d.v1<<shift;
+		shift +=d.a1;
+		l |= (long)d.v2<<shift;
+		shift +=d.a2;
+		l |= (long)d.v3<<shift;
+		shift +=d.a3;	
+		l |= (long)d.v4<<shift;
+		shift +=d.a4;
+		l |= (long)d.v5<<shift;
+		d.shift =shift+d.a5;
+
+		return l;
+	}
+
+	final public long calc7(Data4 d) {
+
+		if (d.v0<0||d.v1<0||d.v2<0||d.v3<0||d.v4<0||d.v5<0||d.v6<0) return -1;
+
+		long l = d.v0;
+		int shift =d.a0;
+		l |= (long)d.v1<<shift;
+		shift +=d.a1;
+		l |= (long)d.v2<<shift;
+		shift +=d.a2;
+		l |= (long)d.v3<<shift;
+		shift +=d.a3;	
+		l |= (long)d.v4<<shift;
+		shift +=d.a4;
+		l |= (long)d.v5<<shift;
+		shift +=d.a5;
+		l |= (long)d.v6<<shift;
+		d.shift =shift+d.a6;
+
+		return l;
+	}
+
+
+	final public long calc8(Data4 d) {
+
+		if (d.v0<0||d.v1<0||d.v2<0||d.v3<0||d.v4<0||d.v5<0||d.v6<0||d.v7<0) return -1;
+
+		long l = d.v0;
+		int shift =d.a0;
+		l |= (long)d.v1<<shift;
+		shift +=d.a1;
+		l |= (long)d.v2<<shift;
+		shift +=d.a2;
+		l |= (long)d.v3<<shift;
+		shift +=d.a3;	
+		l |= (long)d.v4<<shift;
+		shift +=d.a4;
+		l |= (long)d.v5<<shift;
+		shift +=d.a5;
+		l |= (long)d.v6<<shift;
+		shift +=d.a6;
+		l |= (long)d.v7<<shift;
+		d.shift =shift+d.a7;
+
+		return l;
+	}
+
+
+
+
+
+
+
+	/** 
+	 * Maps a long to a integer value. This is very useful to save memory for sparse data long values 
+	 * @param node
+	 * @return the integer
+	 */
+	static public  int misses = 0;
+	static public  int good = 0;
+
+
+
+
+	/**
+	 * Write the data
+	 * @param dos
+	 * @throws IOException
+	 */
+	public void writeData(DataOutputStream dos) throws IOException {
+		dos.writeInt(getFeatureSet().size());
+		for(Entry<String, HashMap<String,Integer>> e : getFeatureSet().entrySet()) {
+			dos.writeUTF(e.getKey());
+			dos.writeInt(e.getValue().size());
+
+			for(Entry<String,Integer> e2 : e.getValue().entrySet()) {
+
+				if(e2.getKey()==null) DB.println("key "+e2.getKey()+" value "+e2.getValue()+" e -key "+e.getKey());
+				dos.writeUTF(e2.getKey()); 
+				dos.writeInt(e2.getValue());
+
+			}          
+
+		}
+	}
+	public void read(DataInputStream din) throws IOException {
+
+		int size = din.readInt();
+		for(int i=0; i<size;i++) {
+			String k = din.readUTF();
+			int size2 = din.readInt();
+
+			HashMap<String,Integer> h = new HashMap<String,Integer>();
+			getFeatureSet().put(k,h);
+			for(int j = 0;j<size2;j++) {
+				h.put(din.readUTF(), din.readInt());
+			}
+			getFeatureCounter().put(k, size2);
+		}
+
+		calculateBits();
+	}
+
+
+	/** 
+	 * Clear the data
+	 */
+	public void clearData() {
+		getFeatureSet().clear();
+		m_featureBits.clear();
+		getFeatureSet().clear();
+	}
+
+	 public HashMap<String,Integer> getFeatureCounter() {
+		return m_featureCounters;
+	}
+
+	public HashMap<String,HashMap<String,Integer>> getFeatureSet() {
+		return m_featureSets;
+	}
+
+	static public String[] reverse(HashMap<String,Integer> v){
+		String[] set = new String[v.size()];
+		for(Entry<String,Integer> e : v.entrySet()) {
+			set[e.getValue()]=e.getKey();
+		}
+		return set;
+	}
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/tag/Options.java b/dependencyParser/basic/mate-tools/src/is2/tag/Options.java
new file mode 100644
index 0000000..540f8ed
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/tag/Options.java
@@ -0,0 +1,125 @@
+package is2.tag;
+
+import is2.util.OptionsSuper;
+
+import java.io.File;
+
+
+public final class Options extends OptionsSuper {
+
+	
+	public Options (String[] args) {
+		
+		for(int i = 0; i < args.length; i++) {
+			String[] pair = args[i].split(":");
+
+			if (pair[0].equals("--help")) explain();
+			else if (pair[0].equals("-train")) {
+				train = true;
+				trainfile = args[i+1];
+			} else if (pair[0].equals("-eval")) {
+				eval = true;
+				goldfile =args[i+1]; i++;
+			} else if (pair[0].equals("-test")) {
+				test = true;
+				testfile = args[i+1]; i++;
+			} else if (pair[0].equals("-i")) {
+				numIters = Integer.parseInt(args[i+1]); i++;
+			}
+			else if (pair[0].equals("-out")) {
+				outfile = args[i+1]; i++;
+			}
+			else if (pair[0].equals("-decode")) {
+				decodeProjective = args[i+1].equals("proj"); i++;
+			}
+			else if (pair[0].equals("-confidence")) {
+				
+				conf = true;
+			}
+
+			else if (pair[0].equals("-count")) {
+				count = Integer.parseInt(args[i+1]); i++;
+			} else if (pair[0].equals("-model")) {
+				modelName = args[i+1]; i++;
+			}  else	if (pair[0].equals("-tmp")) {
+				tmp = args[i+1]; i++;
+			} else if (pair[0].equals("-format")) {
+				//format = args[i+1];
+				formatTask = Integer.parseInt(args[i+1]); i++;
+			} else if (pair[0].equals("-allfeatures")) {
+				allFeatures=true;
+			} else if (pair[0].equals("-nonormalize")) {
+				normalize=false;
+			}else if (pair[0].equals("-nframes")) {
+				//format = args[i+1];
+				nbframes= args[i+1]; i++;
+				 
+			
+			} else if (pair[0].equals("-pframes")) {
+				//format = args[i+1];
+				pbframes= args[i+1]; i++;
+			} else if (pair[0].equals("-nopred")) {
+				nopred =true;	 
+			} else if (pair[0].equals("-divide")) {
+				keep =true;	 
+			} else if (pair[0].equals("-lexicon")) {
+ 				lexicon= args[i+1]; i++;			
+
+			} else super.addOption(args, i);
+			
+		}
+
+		
+		
+
+
+		try {
+			
+			if (trainfile!=null) {
+		
+				if (keep && tmp!=null) {
+					trainforest = new File(tmp);
+					if (!trainforest.exists()) keep=false;
+					
+				} else 
+				if (tmp!=null) {
+					trainforest = File.createTempFile("train", ".tmp", new File(tmp));
+					trainforest.deleteOnExit();
+				}
+				else {
+					trainforest = File.createTempFile("train", ".tmp"); //,new File("F:\\")
+					trainforest.deleteOnExit();
+				}
+				
+				
+			}
+
+	
+		} catch (java.io.IOException e) {
+			System.out.println("Unable to create tmp files for feature forests!");
+			System.out.println(e);
+			System.exit(0);
+		}
+	}
+
+	private void explain() {
+		System.out.println("Usage: ");
+		System.out.println("java -class mate.jar is2.parser.Parser [Options]");
+		System.out.println();
+		System.out.println("Example: ");
+		System.out.println(" java -class mate.jar is2.parser.Parser -model eps3.model -train corpora/conll08st/train/train.closed -test corpora/conll08st/devel/devel.closed  -out b3.test -eval corpora/conll08st/devel/devel.closed  -count 2000 -i 6");
+		System.out.println("");
+		System.out.println("Options:");
+		System.out.println("");
+		System.out.println(" -train  <file>    the corpus a model is trained on; default "+this.trainfile);
+		System.out.println(" -test   <file>    the input corpus for testing; default "+this.testfile);
+		System.out.println(" -out    <file>    the output corpus (result) of a test run; default "+this.outfile);
+		System.out.println(" -model  <file>    the parsing model for traing the model is stored in the files");
+		System.out.println("                   and for parsing the model is load from this file; default "+this.modelName);
+		System.out.println(" -i      <number>  the number of training iterations; good numbers are 10 for smaller corpora and 6 for bigger; default "+this.numIters);
+		System.out.println(" -count  <number>  the n first sentences of the corpus are take for the training default "+this.count);
+		System.out.println(" -format <number>  conll format of the year 8 or 9; default "+this.formatTask);
+		
+		System.exit(0);
+	}
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/tag/POS.java b/dependencyParser/basic/mate-tools/src/is2/tag/POS.java
new file mode 100644
index 0000000..c8e039f
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/tag/POS.java
@@ -0,0 +1,29 @@
+package is2.tag;
+
+public class POS implements Comparable<POS> {
+
+	// pos tag 
+	public int p;
+	
+	// score of the tag
+	public float s;
+
+	// the position of the word in the sentence
+	public int w;
+	
+	public POS(int p, float s) {
+		this.p=p;
+		this.s=s;
+	}
+
+	@Override
+	public int compareTo(POS o) {
+		
+		return s>o.s?-1:s==o.s?0:1;
+	}
+	
+	public String toString() {
+		return ""+p+":"+s; 
+	}
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/tag/Tagger.java b/dependencyParser/basic/mate-tools/src/is2/tag/Tagger.java
new file mode 100644
index 0000000..b0c2dec
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/tag/Tagger.java
@@ -0,0 +1,500 @@
+package is2.tag;
+
+
+
+import is2.data.F2SF;
+import is2.data.FV;
+import is2.data.Instances;
+import is2.data.InstancesTagger;
+import is2.data.Long2Int;
+import is2.data.Long2IntInterface;
+import is2.data.ParametersFloat;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.io.CONLLWriter09;
+import is2.tools.IPipe;
+import is2.tools.Tool;
+import is2.tools.Train;
+import is2.util.DB;
+import is2.util.Evaluator;
+import is2.util.OptionsSuper;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Map.Entry;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+import java.util.zip.ZipOutputStream;
+
+
+public class Tagger implements Tool, Train {
+
+	public ExtractorT2 pipe;
+	public ParametersFloat params;
+	public Long2IntInterface li;
+	public MFO mf;
+	private OptionsSuper _options;
+
+	/**
+	 * Initialize 
+	 * @param options
+	 */
+	public Tagger (Options options) {
+
+		
+		// load the model
+		try {
+			readModel(options);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}	
+	}
+	public Tagger() {	}
+
+	/**
+	 * @param modelFileName the file name of the model
+	 */
+	public Tagger(String modelFileName) {
+		this(new Options(new String[]{"-model",modelFileName}));
+	}
+
+	public static void main (String[] args) throws FileNotFoundException, Exception
+	{
+
+		long start = System.currentTimeMillis();
+		Options options = new Options(args);
+
+
+		Tagger tagger = new Tagger();
+
+		if (options.train) {
+
+			//		depReader.normalizeOn=false;
+
+			tagger.li = new Long2Int(options.hsize);
+			tagger.pipe =  new ExtractorT2 (options, tagger.mf= new MFO());
+			
+			//tagger.pipe.li =tagger.li;
+	  	    
+			InstancesTagger is = (InstancesTagger)tagger.pipe.createInstances(options.trainfile);
+
+			tagger.params = new ParametersFloat(tagger.li.size());
+
+			tagger.train(options, tagger.pipe,tagger.params,is);
+			tagger.writeModel(options, tagger.pipe, tagger.params);
+
+		}
+
+		if (options.test) {
+
+			tagger.readModel(options);
+			
+			tagger.out(options,tagger.pipe, tagger.params);
+		}
+
+		System.out.println();
+
+		if (options.eval) {
+			System.out.println("\nEVALUATION PERFORMANCE:");
+			Evaluator.evaluateTagger(options.goldfile, options.outfile,options.format);
+		}
+		long end = System.currentTimeMillis();
+		System.out.println("used time "+((float)((end-start)/100)/10));
+	}
+
+	public void readModel(OptionsSuper options)  {
+
+		try{
+		pipe = new ExtractorT2(options, mf =new MFO());
+		_options=options;
+		// load the model
+		ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(options.modelName)));
+		zis.getNextEntry();
+		DataInputStream dis = new DataInputStream(new BufferedInputStream(zis));
+
+		pipe.mf.read(dis);
+		pipe.initValues();
+		pipe.initFeatures();
+
+		params = new ParametersFloat(0);
+		params.read(dis);
+		li = new Long2Int(params.parameters.length);
+		pipe.read(dis);
+
+		dis.close();
+
+		pipe.types = new String[pipe.mf.getFeatureCounter().get(ExtractorT2.POS)];
+		for(Entry<String,Integer> e : pipe.mf.getFeatureSet().get(ExtractorT2.POS).entrySet()) 
+			pipe.types[e.getValue()] = e.getKey();
+
+		DB.println("Loading data finished. ");
+		} catch(Exception e) {
+			e.printStackTrace();
+		}
+	}
+  
+	/**
+	 * Do the training
+	 * @param instanceLengths
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @throws IOException
+	 * @throws InterruptedException
+	 * @throws ClassNotFoundException
+	 */
+	public void train(OptionsSuper options, IPipe pipe, ParametersFloat params, Instances is2) {
+
+		InstancesTagger is = (InstancesTagger)is2;
+		String wds[] = mf.reverse(this.pipe.mf.getFeatureSet().get(ExtractorT2.WORD));
+		
+		int pd[] = new int[this.pipe.types.length];
+		for(int k=0;k<pd.length;k++) pd[k]=k;
+		
+		int del=0; 
+		F2SF f = new F2SF(params.parameters); 
+		long vs[] = new long[ExtractorT2._MAX];
+
+		int types =this.pipe.types.length;
+
+		double upd = options.numIters*is.size() +1;
+
+		for(int i = 0; i <options.numIters ; i++) {
+
+			long start = System.currentTimeMillis();
+
+			int numInstances = is.size();
+
+			long last= System.currentTimeMillis();
+			FV pred = new FV(),gold = new FV();
+
+			int correct =0,count=0;
+			System.out.print("Iteration "+i+": ");
+			
+			for(int n = 0; n < numInstances; n++) {
+
+				if((n+1) % 500 == 0) del= PipeGen.outValueErr(n+1, (count-correct),(float)correct/(float)count,del,last,upd);
+
+				int length = is.length(n);
+				
+				upd--;
+			
+				for(int w = 1; w < length; w++) {
+
+					double best  = -1000;
+					short bestType = -1;
+
+					int[] lemmas; //= is.lemmas[n];
+					if (options.noLemmas)lemmas = new int[is.length(n)];
+					else lemmas = is.plemmas[n];
+					
+					this.pipe.addFeatures(is,n,wds[is.forms[n][w]],w,is.gpos[n],is.forms[n], lemmas, vs);
+					
+					for(short t=0;t<types;t++) {
+
+						// the hypotheses of a part of speech tag
+						long p = t<<ExtractorT2.s_type;
+						f.clear();				
+						
+						// add the features to the vector
+						for(int k1=0;vs[k1]!=Integer.MIN_VALUE;k1++) {
+							if (vs[k1]>0) f.add(this.li.l2i(vs[k1]|p));						
+						}
+
+						if (f.score > best) {
+							bestType=t;							
+							best =f.score;
+						}
+					}
+					
+					count++;
+					if (bestType == is.gpos[n][w] ) {
+						correct++;
+						continue; 
+					}
+					
+					pred.clear();
+					for (int k1=0;vs[k1]!=Integer.MIN_VALUE;k1++)  if (vs[k1]>0)	pred.add(this.li.l2i(vs[k1]| bestType<<ExtractorT2.s_type));
+
+					gold.clear();
+					for (int k1=0;vs[k1]!=Integer.MIN_VALUE;k1++)  if (vs[k1]>0)	gold.add(this.li.l2i(vs[k1] | is.gpos[n][w]<<ExtractorT2.s_type));
+
+					params.update(pred,gold, (float)upd, 1.0F);
+				}
+			} 
+
+			long end = System.currentTimeMillis();
+			String info = "time "+(end-start);
+			PipeGen.outValueErr(numInstances, (count-correct),(float)correct/(float)count,del,last,upd,info);
+			System.out.println();
+			del=0;
+		}
+
+		params.average(options.numIters*is.size());
+
+	}
+
+
+	/**
+	 * Tag a sentence
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @throws IOException
+	 */
+	public void out (OptionsSuper options, IPipe pipe, ParametersFloat params) {
+		
+		try {
+	
+
+		long start = System.currentTimeMillis();
+// change this backe!!!
+//		CONLLReader09 depReader = new CONLLReader09(options.testfile, CONLLReader09.NO_NORMALIZE);
+		CONLLReader09 depReader = new CONLLReader09(options.testfile);
+
+		CONLLWriter09 depWriter = new CONLLWriter09(options.outfile);
+
+		System.out.print("Processing Sentence: ");
+		pipe.initValues();
+
+		int cnt = 0;
+		int del=0;
+		while(true) {
+
+			InstancesTagger is = new InstancesTagger();
+			is.init(1, mf);
+			SentenceData09 instance = depReader.getNext(is);
+			if (instance == null || instance.forms == null)	 break;
+			
+			
+			is.fillChars(instance, 0, ExtractorT2._CEND);
+
+			cnt++;
+
+
+			tag(is, instance);
+
+			SentenceData09 i09 = new SentenceData09(instance);
+			i09.createSemantic(instance);
+			depWriter.write(i09);
+
+			if(cnt % 100 == 0) del=PipeGen.outValue(cnt, del);
+
+		}
+		del=PipeGen.outValue(cnt, del);
+		depWriter.finishWriting();
+
+		float min=1000, max=-1000;
+		
+	//	int r[] = new int[14];
+		/*
+		for(Entry<Float, Integer> e : map.entrySet()) {
+			if(e.getKey()<min)min=e.getKey();
+			if(e.getKey()>max)max=e.getKey();
+			
+			if(e.getKey()<0.2) r[0]++;
+			else if(e.getKey()<0.5) r[1]+=e.getValue();
+			else if(e.getKey()<0.7) r[2]+=e.getValue();
+			else if(e.getKey()<0.8) r[3]+=e.getValue();
+			else if(e.getKey()<0.9) r[4]+=e.getValue();
+			else if(e.getKey()<1.0) r[5]+=e.getValue();
+			else if(e.getKey()<1.2) r[6]+=e.getValue();
+			else if(e.getKey()<1.3) r[7]+=e.getValue();
+			else if(e.getKey()<1.4) r[8]+=e.getValue();
+			else if(e.getKey()<1.5) r[9]+=e.getValue();
+			else if(e.getKey()<1.9) r[10]+=e.getValue();
+			else if(e.getKey()<2.2) r[11]+=e.getValue();
+			else if(e.getKey()<2.5) r[12]+=e.getValue();
+			else if(e.getKey()>=2.5) r[13]+=e.getValue();
+		}
+		*/
+	//	for(int k=0;k<r.length;k++) System.out.println(k+" "+r[k][0]+" "+((float)r[k][1]/(float)r[k][0])+" good "+r[k][1]);
+	//	System.out.println("min "+min+" "+max);
+		
+		long end = System.currentTimeMillis();
+		System.out.println(PipeGen.getSecondsPerInstnace(cnt,(end-start)));
+		System.out.println(PipeGen.getUsedTime(end-start));
+		} catch(Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+
+	public SentenceData09 tag(SentenceData09 instance){
+		InstancesTagger is = new InstancesTagger();
+		is.init(1, pipe.mf);
+		new CONLLReader09().insert(is, instance);
+		is.fillChars(instance, 0, ExtractorT2._CEND);
+		tag(is, instance);
+
+		return instance;
+	}
+
+
+	private void tag(InstancesTagger is, SentenceData09 instance) {
+
+		int length = instance.ppos.length;
+
+		short[] pos = new short[instance.gpos.length];
+
+		float sc[] =new float[instance.ppos.length];
+		
+		instance.ppos[0]= is2.io.CONLLReader09.ROOT_POS;
+		pos[0]=(short)pipe.mf.getValue(ExtractorT2.POS, is2.io.CONLLReader09.ROOT_POS);
+
+		for(int j = 1; j < length; j++) {
+
+			short bestType = (short)pipe.fillFeatureVectorsOne( instance.forms[j],params, j, is,0,pos,this.li,sc);
+			pos[j] = bestType;
+			instance.ppos[j]= pipe.types[bestType];
+		}
+
+		for(int j = 1; j < length; j++) {
+
+			short bestType = (short)pipe.fillFeatureVectorsOne(instance.forms[j],params, j, is,0,pos,this.li,sc);
+			instance.ppos[j]= pipe.types[bestType];
+			pos[j]=bestType;			
+		}
+	}
+
+	/**
+	 * Tag a single word and return a n-best list of Part-of-Speech tags.
+	 * 
+	 * @param is set of sentences
+	 * @param instanceIndex index to the sentence in question
+	 * @param word word to be tagged 
+	 * @return n-best list of Part-of-Speech tags
+	 */
+	public ArrayList<POS> tag(InstancesTagger is,int instanceIndex, int word, String wordForm) {
+
+		return  pipe.classify( wordForm , params, word, is, instanceIndex, is.pposs[instanceIndex], li);
+		
+	}
+	
+	public ArrayList<String> tagStrings(InstancesTagger is,int instanceIndex, int word, String wordForm) {
+
+		ArrayList<POS> plist  = pipe.classify( wordForm , params, word, is, instanceIndex, is.pposs[instanceIndex], li);
+		String pos[] = mf.reverse(this.pipe.mf.getFeatureSet().get(ExtractorT2.POS));
+	
+		ArrayList<String> postags =null;
+		for(POS p : plist) {
+			try {
+				 postags.add(pos[p.p]);
+			}catch(Exception e) {
+				e.printStackTrace();
+			}
+		}
+		return postags;
+	
+		
+	}
+
+	
+	
+	/**
+	 * Tag a sentence
+	 * @param options
+	 * @param pipe
+	 * @param parametersReranker
+	 * @throws IOException
+	 */
+	public  String[] tag (String[] words, String[] lemmas)  {
+
+		String[] pposs = new String[words.length];
+
+		try {
+			pipe.initValues();
+
+			int length = words.length+1;
+
+
+			InstancesTagger is = new InstancesTagger();
+			is.init(1, pipe.mf);
+			is.createInstance09(length);
+
+			SentenceData09 instance = new SentenceData09();
+			instance.forms = new String[length];
+			instance.forms[0]=is2.io.CONLLReader09.ROOT;
+
+			instance.plemmas = new String[length];
+			instance.plemmas[0]=is2.io.CONLLReader09.ROOT_LEMMA;
+
+			for(int j = 0; j < words.length; j++) {
+				instance.forms[j+1]=words[j];
+				instance.plemmas[j+1]=lemmas[j];
+			}
+
+			for(int j = 0; j < length; j++) {
+				is.setForm(0, j, instance.forms[j]);
+				is.setLemma(0, j, instance.plemmas[j]);
+			}
+
+			instance.ppos = new String[length];
+
+			is.fillChars(instance, 0, ExtractorT2._CEND);
+
+			this.tag(is, instance);
+
+			for(int j = 0; j < words.length; j++) {
+				pposs[j] = instance.ppos[j+1];	
+			}
+		} catch(Exception e) {
+			e.printStackTrace();
+		}
+
+		return pposs;
+
+
+	}
+
+	/* (non-Javadoc)
+	 * @see is2.tools.Tool#apply(is2.data.SentenceData09)
+	 */
+	@Override
+	public SentenceData09 apply(SentenceData09 snt) {
+		
+
+		SentenceData09 it = new SentenceData09();
+		it.createWithRoot(snt);
+		it = tag(it);
+		SentenceData09 i09 = new SentenceData09(it);
+		i09.createSemantic(it);
+		return i09;
+	}
+	
+	
+	
+	/* (non-Javadoc)
+	 * @see is2.tools.Train#writeModel(is2.util.OptionsSuper, is2.mtag2.Pipe, is2.data.ParametersFloat)
+	 */
+	@Override
+	public void writeModel(OptionsSuper options, IPipe pipe, is2.data.ParametersFloat params) {
+		try{
+			ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(options.modelName)));
+			zos.putNextEntry(new ZipEntry("data")); 
+			DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(zos));
+
+			this.pipe.mf.writeData(dos);
+
+			DB.println("number of parameters "+params.parameters.length);
+			dos.flush();
+
+			params.write(dos);
+			pipe.write(dos);
+			dos.flush();
+			dos.close();
+
+		} catch(Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/tag/package.html b/dependencyParser/basic/mate-tools/src/is2/tag/package.html
new file mode 100644
index 0000000..469fdf6
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/tag/package.html
@@ -0,0 +1,4 @@
+Package info
+<br><br>
+This parser includes a tagger into the dependency parser
+<br>
\ No newline at end of file
diff --git a/dependencyParser/basic/mate-tools/src/is2/tools/IPipe.java b/dependencyParser/basic/mate-tools/src/is2/tools/IPipe.java
new file mode 100644
index 0000000..d976074
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/tools/IPipe.java
@@ -0,0 +1,30 @@
+/**
+ * 
+ */
+package is2.tools;
+
+import is2.data.Instances;
+import is2.data.InstancesTagger;
+
+import java.io.DataOutputStream;
+import java.io.File;
+
+/**
+ * @author Dr. Bernd Bohnet, 25.12.2010
+ * 
+ * 
+ */
+public interface IPipe {
+
+	public abstract Instances createInstances(String file);
+
+	public abstract void initValues();
+
+	/**
+	 * Initialize the features types.
+	 */
+	public abstract void initFeatures();
+
+	public abstract void write(DataOutputStream dos);
+
+}
\ No newline at end of file
diff --git a/dependencyParser/basic/mate-tools/src/is2/tools/Retrainable.java b/dependencyParser/basic/mate-tools/src/is2/tools/Retrainable.java
new file mode 100644
index 0000000..67a2e56
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/tools/Retrainable.java
@@ -0,0 +1,25 @@
+package is2.tools;
+
+import is2.data.SentenceData09;
+
+/** 
+ * Provides Methods for the retraining
+ * @author bohnetbd
+ *
+ */
+public interface Retrainable {
+	
+	/**
+	 * Retrains with a update factor (upd).
+	 * The retraining stops when the model was successful adapted or it gave up after the maximal iterations.
+	 *
+	 * @param sentence the data container of the new example. 
+	 * @param upd  the update factor, e.g. 0.01
+	 * @param iterations  maximal number of iterations that are tried to adapt the system. 
+	 * @return success  = true -- else false 
+	 */
+	public boolean retrain(SentenceData09 sentence, float upd, int iterations) ;
+
+	boolean retrain(SentenceData09 sentence, float upd, int iterations, boolean print);
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/tools/Tool.java b/dependencyParser/basic/mate-tools/src/is2/tools/Tool.java
new file mode 100644
index 0000000..06246a2
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/tools/Tool.java
@@ -0,0 +1,25 @@
+/**
+ * 
+ */
+package is2.tools;
+
+import is2.data.SentenceData09;
+
+/**
+ * @author Bernd Bohnet, 27.10.2010
+ * 
+ * Interface to all tools
+ */
+public interface Tool {
+
+	
+	/**
+	 * Uses the tool and applies it on the input sentence. 
+	 * The input is altered and has to include a root (token).
+	 *  
+	 * @param i the input sentence
+	 * @return The result of the performance without the root. 
+	 */
+	SentenceData09 apply(SentenceData09 snt09); 
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/tools/ToolIO.java b/dependencyParser/basic/mate-tools/src/is2/tools/ToolIO.java
new file mode 100644
index 0000000..279a4ff
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/tools/ToolIO.java
@@ -0,0 +1,17 @@
+/**
+ * 
+ */
+package is2.tools;
+
+import is2.data.SentenceData09;
+
+/**
+ * @author Bernd Bohnet, 27.10.2010
+ * 
+ * Interface to all tools
+ */
+public interface ToolIO {
+
+	void readModel(); 
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/tools/Train.java b/dependencyParser/basic/mate-tools/src/is2/tools/Train.java
new file mode 100644
index 0000000..234f937
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/tools/Train.java
@@ -0,0 +1,25 @@
+/**
+ * 
+ */
+package is2.tools;
+
+import is2.data.Instances;
+import is2.data.ParametersFloat;
+import is2.util.OptionsSuper;
+
+/**
+ * @author Dr. Bernd Bohnet, 24.12.2010
+ * 
+ * 
+ */
+public interface Train {
+
+	public abstract void writeModel(OptionsSuper options, IPipe pipe, ParametersFloat params);
+
+	public abstract void readModel(OptionsSuper options);
+
+	public abstract void train(OptionsSuper options, IPipe pipe, ParametersFloat params, Instances is);
+
+	public abstract void out(OptionsSuper options, IPipe pipe, ParametersFloat params);
+
+}
\ No newline at end of file
diff --git a/dependencyParser/basic/mate-tools/src/is2/util/Convert.java b/dependencyParser/basic/mate-tools/src/is2/util/Convert.java
new file mode 100644
index 0000000..1ed2389
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/util/Convert.java
@@ -0,0 +1,455 @@
+/**
+ * 
+ */
+package is2.util;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+
+
+import is2.data.SentenceData09;
+import is2.io.CONLLReader06;
+import is2.io.CONLLReader08;
+import is2.io.CONLLReader09;
+import is2.io.CONLLWriter06;
+import is2.io.CONLLWriter09;
+
+/**
+ * @author Dr. Bernd Bohnet, 01.03.2010
+ * 
+ * 
+ */
+public class Convert {
+
+	
+	
+	public static void main(String args[]) throws Exception {
+		
+		
+		if (args.length<2) {
+			
+			System.out.println("Usage");
+			System.out.println(" java is2.util.Convert <in> <out> [-w06|-w0809|-yue]  [-wordsonly]");
+			
+			
+		}
+		
+		int todo =9;
+		boolean wordsOnly=false;
+		for(String a : args) {
+				if (a!=null && a.equals("-w06")) todo=6;
+				else if (a!=null && a.equals("-w0809")) todo=89;
+				else if (a!=null && a.equals("-yue")) todo=99;
+				else if (a!=null && a.equals("-utf8")) todo=8;
+				
+				if (a!=null && a.equals("-wordsonly")) wordsOnly=true;
+				
+				
+		}
+		
+		if (todo==9)convert(args[0],args[1]);
+		else if (todo==6) convert0906(args[0],args[1]);
+		else if (todo==8) convert8(args[0],args[1], args[2]);
+		else if (todo==89) convert0809(args[0],args[1]);
+		else if (todo==99) {
+			convertChnYue(args[0],args[1],wordsOnly);
+		}
+		
+		
+	}
+	
+	private static void convert8(String infile, String outfile, String format) {
+		 try {
+		  
+			 System.out.println("availableCharsets: "+Charset.availableCharsets());
+			 
+			 BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(infile), format));
+			 BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outfile), "UTF8"));
+		      ;
+		        int ch;
+		        
+		       int count =0, wcount=0;;
+		     while ((ch = in.read()) > -1) {
+		    	 count++;
+		    	
+		    	 if (Character.isDefined(ch)) {
+		    		 
+		    		 out.write(ch);
+		    		 wcount++;
+		    	 }
+		     }
+		     in.close();
+		     out.close();
+		     System.out.println("read "+count+" chars and wrote "+wcount+" utf8 chars");
+		    } 
+		    catch (Exception e) {
+		        e.printStackTrace();
+		    }
+	 	
+	}
+
+	public static void convert(String source, String target) throws Exception {
+		
+		CONLLReader06 reader = new CONLLReader06(source);
+		CONLLWriter09 writer = new CONLLWriter09(target);
+
+		int str =0;
+		while (true) {
+			SentenceData09 i = reader.getNext();
+			str++;
+			if (i == null) break;
+			
+			
+			String[] formsNoRoot = new String[i.length()-1];
+			String[] posNoRoot = new String[formsNoRoot.length];
+			String[] lemmas = new String[formsNoRoot.length];
+
+			String[] org_lemmas = new String[formsNoRoot.length];
+
+			String[] of = new String[formsNoRoot.length];
+			String[] pf = new String[formsNoRoot.length];
+
+			String[] pposs = new String[formsNoRoot.length];
+			String[] labels = new String[formsNoRoot.length];
+			String[] fillp = new String[formsNoRoot.length];
+
+			int[] heads = new int[formsNoRoot.length];
+
+		
+			
+			for(int j = 0; j < formsNoRoot.length; j++) {
+				formsNoRoot[j] = i.forms[j+1];
+				if (formsNoRoot[j].length()==0 ||formsNoRoot[j].equals("")) {
+					System.out.println("error forms "+str);
+			//		System.exit(0);
+					formsNoRoot[j]=" ";
+				}
+				posNoRoot[j] = i.gpos[j+1];
+				if (posNoRoot[j].length()==0 ||posNoRoot[j].equals(" ")) {
+					System.out.println("error pos "+str);
+				//	System.exit(0);
+				}
+				pposs[j] = i.ppos[j+1];
+				if (pposs[j].length()==0 ||pposs[j].equals(" ")) {
+					System.out.println("error pos "+str);
+					//System.exit(0);
+				}
+
+				labels[j] = i.labels[j+1];
+				if (labels[j].length()==0 ||labels[j].equals(" ")) {
+					System.out.println("error lab "+str);
+				//	System.exit(0);
+				}
+				heads[j] = i.heads[j+1];
+				if(heads[j]> posNoRoot.length) {
+					System.out.println("head out of range "+heads[j]+" "+heads.length+" "+str);
+					heads[j]=posNoRoot.length;
+				}
+				
+				lemmas[j] = i.plemmas[j+1];
+				if (lemmas[j].length()==0 ||lemmas[j].equals(" ")) {
+					System.out.println("error lab "+str);
+				//	System.exit(0);
+				}
+				org_lemmas[j] = i.lemmas[j+1];
+				if (org_lemmas[j].length()==0 ||org_lemmas[j].equals(" ")) {
+					System.out.println("error lab "+str);
+				//	System.exit(0);
+				}
+				of[j] = i.ofeats[j+1];
+				pf[j] = i.pfeats[j+1];
+				if (str==6099) {
+			//		System.out.println(formsNoRoot[j]+"\t"+posNoRoot[j]+"\t"+pposs[j]+"\t"+labels[j]+"\t"+heads[j]);
+				}
+
+				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
+			}
+
+			SentenceData09 i09 = new SentenceData09(formsNoRoot, formsNoRoot, formsNoRoot,pposs, pposs, labels, heads,fillp,of, pf);
+
+			//public SentenceData09(String[] forms, String[] lemmas, String[] olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads, String[] fillpred) {
+			//SentenceData09
+		//	SentenceData09 i2 = new SentenceData09(i.forms, i.lemmas,i.org_lemmas,);
+			
+			writer.write(i09);
+
+			
+		}
+		writer.finishWriting();
+		
+		
+	}
+	
+	
+	
+   public static void convertChnYue(String source, String target, boolean wordsOnly) throws Exception {
+		
+
+		BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(source),"UTF-8"),32768);
+		
+		CONLLWriter09 writer = new CONLLWriter09(target);
+
+		int str =0;
+		while (true) {
+			
+			ArrayList<String[]> lines = new ArrayList<String[]>();
+			
+			String line;
+			while((line = reader.readLine())!=null) {
+				
+				if (line.length()<2) break;
+				String split[] = line.split("\t");
+				lines.add(split);			
+			}
+			if (line ==null)break;
+			
+			str++;
+			
+			
+			String[] formsNoRoot = new String[lines.size()];
+			String[] posNoRoot = new String[formsNoRoot.length];
+			String[] lemmas = new String[formsNoRoot.length];
+
+			String[] org_lemmas = new String[formsNoRoot.length];
+
+			String[] of = new String[formsNoRoot.length];
+			String[] pf = new String[formsNoRoot.length];
+
+			String[] pposs = new String[formsNoRoot.length];
+			String[] labels = new String[formsNoRoot.length];
+			String[] fillp = new String[formsNoRoot.length];
+
+			int[] heads = new int[formsNoRoot.length];
+
+		
+			
+			for(int j = 0; j < formsNoRoot.length; j++) {
+				formsNoRoot[j] = lines.get(j)[0];
+				if (formsNoRoot[j].length()==0 ||formsNoRoot[j].equals("")) {
+					System.out.println("error forms "+str);
+			//		System.exit(0);
+					formsNoRoot[j]="_";
+				}
+				
+				posNoRoot[j] = lines.get(j)[1];
+				if (posNoRoot[j].length()==0 ||posNoRoot[j].equals(" ")) {
+					System.out.println("error pos "+str);
+				//	System.exit(0);
+				}
+				pposs[j] = "_";
+
+				labels[j] = lines.get(j)[3];
+				if (labels[j].length()==0 ||labels[j].equals(" ")) {
+					System.out.println("error lab "+str);
+					labels[j] = "_";
+				//	System.exit(0);
+				}
+				heads[j] = Integer.parseInt(lines.get(j)[2])+1;
+				if(heads[j]> posNoRoot.length) {
+					System.out.println("head out of range "+heads[j]+" "+heads.length+" "+str);
+					heads[j]=posNoRoot.length;
+				}
+				
+				// 0 is root and not -1  
+				if (heads[j]==-1)heads[j]=0; 
+				
+				lemmas[j] = "_";
+	
+				org_lemmas[j] = "_";
+				
+				of[j] = "_";
+				pf[j] = "_";
+
+				if (wordsOnly) {
+					posNoRoot[j]="_";
+					heads[j]=0;
+					labels[j] = "_";
+				}
+				
+				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
+			}
+
+			SentenceData09 i09 = new SentenceData09(formsNoRoot, lemmas, org_lemmas,posNoRoot, posNoRoot, labels, heads,fillp,of, pf);
+
+			//public SentenceData09(String[] forms, String[] lemmas, String[] olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads, String[] fillpred) {
+			//SentenceData09
+		//	SentenceData09 i2 = new SentenceData09(i.forms, i.lemmas,i.org_lemmas,);
+			
+			writer.write(i09);
+
+			
+		}
+		writer.finishWriting();
+		
+		
+	}
+	
+	
+	
+	/**
+	 * Convert the 0
+	 * @param source
+	 * @param target
+	 * @throws Exception
+	 */
+    public static void convert0809(String source, String target) throws Exception {
+		
+		CONLLReader08 reader = new CONLLReader08(source);
+		CONLLWriter09 writer = new CONLLWriter09(target);
+
+		int str =0;
+		while (true) {
+			SentenceData09 i = reader.getNext();
+			str++;
+			if (i == null) break;
+			
+			
+			String[] formsNoRoot = new String[i.length()-1];
+			String[] posNoRoot = new String[formsNoRoot.length];
+			String[] lemmas = new String[formsNoRoot.length];
+
+			String[] org_lemmas = new String[formsNoRoot.length];
+
+			String[] of = new String[formsNoRoot.length];
+			String[] pf = new String[formsNoRoot.length];
+
+			String[] pposs = new String[formsNoRoot.length];
+			String[] labels = new String[formsNoRoot.length];
+			String[] fillp = new String[formsNoRoot.length];
+
+			int[] heads = new int[formsNoRoot.length];
+
+		
+			
+			for(int j = 0; j < formsNoRoot.length; j++) {
+				formsNoRoot[j] = i.forms[j+1];
+				if (formsNoRoot[j].length()==0 ||formsNoRoot[j].equals("")) {
+					System.out.println("error forms "+str);
+			//		System.exit(0);
+					formsNoRoot[j]=" ";
+				}
+				posNoRoot[j] = i.gpos[j+1];
+				if (posNoRoot[j].length()==0 ||posNoRoot[j].equals(" ")) {
+					System.out.println("error pos "+str);
+				//	System.exit(0);
+				}
+				pposs[j] = i.ppos[j+1];
+				if (pposs[j].length()==0 ||pposs[j].equals(" ")) {
+					System.out.println("error pos "+str);
+					//System.exit(0);
+				}
+
+				labels[j] = i.labels[j+1];
+				if (labels[j].length()==0 ||labels[j].equals(" ")) {
+					System.out.println("error lab "+str);
+				//	System.exit(0);
+				}
+				heads[j] = i.heads[j+1];
+				if(heads[j]> posNoRoot.length) {
+					System.out.println("head out of range "+heads[j]+" "+heads.length+" "+str);
+					heads[j]=posNoRoot.length;
+				}
+				
+				lemmas[j] = i.plemmas[j+1];
+				if (lemmas[j].length()==0 ||lemmas[j].equals(" ")) {
+					System.out.println("error lab "+str);
+				//	System.exit(0);
+				}
+				org_lemmas[j] = i.lemmas[j+1];
+			//	if (org_lemmas[j].length()==0 ||org_lemmas[j].equals(" ")) {
+			//		System.out.println("error lab "+str);
+			//	//	System.exit(0);
+			//	}
+//				of[j] = i.ofeats[j+1];
+//				pf[j] = i.pfeats[j+1];
+				if (str==6099) {
+			//		System.out.println(formsNoRoot[j]+"\t"+posNoRoot[j]+"\t"+pposs[j]+"\t"+labels[j]+"\t"+heads[j]);
+				}
+
+				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
+			}
+
+			SentenceData09 i09 = new SentenceData09(formsNoRoot, org_lemmas, lemmas,pposs, pposs, labels, heads,fillp,of, pf);
+
+			//public SentenceData09(String[] forms, String[] lemmas, String[] olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads, String[] fillpred) {
+			//SentenceData09
+		//	SentenceData09 i2 = new SentenceData09(i.forms, i.lemmas,i.org_lemmas,);
+			
+			writer.write(i09);
+
+			
+		}
+		writer.finishWriting();
+		
+		
+	}
+
+	
+	public static void convert0906(String source, String target) throws Exception {
+		
+		CONLLReader09 reader = new CONLLReader09(source);
+		CONLLWriter06 writer = new CONLLWriter06(target);
+
+		
+		while (true) {
+			SentenceData09 i = reader.getNext();
+			
+			if (i == null) break;
+			
+			
+			String[] formsNoRoot = new String[i.length()-1];
+			String[] posNoRoot = new String[formsNoRoot.length];
+			String[] lemmas = new String[formsNoRoot.length];
+
+			String[] org_lemmas = new String[formsNoRoot.length];
+
+			String[] of = new String[formsNoRoot.length];
+			String[] pf = new String[formsNoRoot.length];
+
+			String[] pposs = new String[formsNoRoot.length];
+			String[] labels = new String[formsNoRoot.length];
+			String[] fillp = new String[formsNoRoot.length];
+
+			int[] heads = new int[formsNoRoot.length];
+
+			for(int j = 0; j < formsNoRoot.length; j++) {
+				formsNoRoot[j] = i.forms[j+1];
+				posNoRoot[j] = i.gpos[j+1];
+				pposs[j] = i.gpos[j+1];
+
+				labels[j] = i.labels[j+1];
+				heads[j] = i.heads[j+1];
+				lemmas[j] = i.plemmas[j+1];
+
+				org_lemmas[j] = i.lemmas[j+1];
+				of[j] = i.ofeats[j+1];
+					pf[j] = i.pfeats[j+1];
+
+				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
+			}
+
+			SentenceData09 i09 = new SentenceData09(formsNoRoot, lemmas, org_lemmas,posNoRoot, pposs, labels, heads,fillp,of, pf);
+
+			//public SentenceData09(String[] forms, String[] lemmas, String[] olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads, String[] fillpred) {
+			//SentenceData09
+		//	SentenceData09 i2 = new SentenceData09(i.forms, i.lemmas,i.org_lemmas,);
+			
+			writer.write(i09);
+
+			
+		}
+		writer.finishWriting();
+		
+		
+	}
+
+	
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/util/Convert0409.java b/dependencyParser/basic/mate-tools/src/is2/util/Convert0409.java
new file mode 100644
index 0000000..7fc1142
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/util/Convert0409.java
@@ -0,0 +1,182 @@
+/**
+ * 
+ */
+package is2.util;
+
+import is2.data.SentenceData09;
+import is2.io.CONLLReader04;
+import is2.io.CONLLReader06;
+import is2.io.CONLLReader09;
+import is2.io.CONLLWriter06;
+import is2.io.CONLLWriter09;
+
+/**
+ * @author Dr. Bernd Bohnet, 01.03.2010
+ * 
+ * 
+ */
+public class Convert0409 {
+
+	
+	
+	public static void main(String args[]) throws Exception {
+				
+		convert(args[0],args[1]);
+		
+		
+	}
+	
+	public static void convert(String source, String target) throws Exception {
+		
+		CONLLReader04 reader = new CONLLReader04(source);
+		CONLLWriter09 writer = new CONLLWriter09(target);
+
+		int str =0;
+		while (true) {
+			SentenceData09 i = reader.getNext();
+			str++;
+			if (i == null) break;
+			
+			
+			String[] formsNoRoot = new String[i.length()-1];
+			String[] posNoRoot = new String[formsNoRoot.length];
+			String[] lemmas = new String[formsNoRoot.length];
+
+			String[] org_lemmas = new String[formsNoRoot.length];
+
+			String[] of = new String[formsNoRoot.length];
+			String[] pf = new String[formsNoRoot.length];
+
+			String[] pposs = new String[formsNoRoot.length];
+			String[] labels = new String[formsNoRoot.length];
+			String[] fillp = new String[formsNoRoot.length];
+
+			int[] heads = new int[formsNoRoot.length];
+
+		
+			
+			for(int j = 0; j < formsNoRoot.length; j++) {
+				formsNoRoot[j] = i.forms[j+1];
+				if (formsNoRoot[j].length()==0 ||formsNoRoot[j].equals("")) {
+					System.out.println("error forms "+str);
+			//		System.exit(0);
+					formsNoRoot[j]=" ";
+				}
+				posNoRoot[j] = i.gpos[j+1];
+				if (posNoRoot[j].length()==0 ||posNoRoot[j].equals(" ")) {
+					System.out.println("error pos "+str);
+				//	System.exit(0);
+				}
+				pposs[j] = i.ppos[j+1];
+				if (pposs[j].length()==0 ||pposs[j].equals(" ")) {
+					System.out.println("error pos "+str);
+					//System.exit(0);
+				}
+
+				labels[j] = i.labels[j+1];
+				if (labels[j].length()==0 ||labels[j].equals(" ")) {
+					System.out.println("error lab "+str);
+				//	System.exit(0);
+				}
+				heads[j] = i.heads[j+1];
+				if(heads[j]> posNoRoot.length) {
+					System.out.println("head out of range "+heads[j]+" "+heads.length+" "+str);
+					heads[j]=posNoRoot.length;
+				}
+				
+				lemmas[j] = i.plemmas[j+1];
+				if (lemmas[j].length()==0 ||lemmas[j].equals(" ")) {
+					System.out.println("error lab "+str);
+				//	System.exit(0);
+				}
+				org_lemmas[j] = i.lemmas[j+1];
+				if (org_lemmas[j].length()==0 ||org_lemmas[j].equals(" ")) {
+					System.out.println("error lab "+str);
+				//	System.exit(0);
+				}
+				of[j] = i.ofeats[j+1];
+				pf[j] = i.pfeats[j+1];
+				if (str==6099) {
+			//		System.out.println(formsNoRoot[j]+"\t"+posNoRoot[j]+"\t"+pposs[j]+"\t"+labels[j]+"\t"+heads[j]);
+				}
+
+				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
+			}
+
+			SentenceData09 i09 = new SentenceData09(formsNoRoot, lemmas, org_lemmas,pposs, pposs, labels, heads,fillp,of, pf);
+
+			//public SentenceData09(String[] forms, String[] lemmas, String[] olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads, String[] fillpred) {
+			//SentenceData09
+		//	SentenceData09 i2 = new SentenceData09(i.forms, i.lemmas,i.org_lemmas,);
+			
+			writer.write(i09);
+
+			
+		}
+		writer.finishWriting();
+		
+		
+	}
+
+	
+	public static void convert0906(String source, String target) throws Exception {
+		
+		CONLLReader09 reader = new CONLLReader09(source);
+		CONLLWriter06 writer = new CONLLWriter06(target);
+
+		
+		while (true) {
+			SentenceData09 i = reader.getNext();
+			
+			if (i == null) break;
+			
+			
+			String[] formsNoRoot = new String[i.length()-1];
+			String[] posNoRoot = new String[formsNoRoot.length];
+			String[] lemmas = new String[formsNoRoot.length];
+
+			String[] org_lemmas = new String[formsNoRoot.length];
+
+			String[] of = new String[formsNoRoot.length];
+			String[] pf = new String[formsNoRoot.length];
+
+			String[] pposs = new String[formsNoRoot.length];
+			String[] labels = new String[formsNoRoot.length];
+			String[] fillp = new String[formsNoRoot.length];
+
+			int[] heads = new int[formsNoRoot.length];
+
+			for(int j = 0; j < formsNoRoot.length; j++) {
+				formsNoRoot[j] = i.forms[j+1];
+				posNoRoot[j] = i.gpos[j+1];
+				pposs[j] = i.ppos[j+1];
+
+				labels[j] = i.labels[j+1];
+				heads[j] = i.heads[j+1];
+				lemmas[j] = i.plemmas[j+1];
+
+				org_lemmas[j] = i.lemmas[j+1];
+				of[j] = i.ofeats[j+1];
+					pf[j] = i.pfeats[j+1];
+
+				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
+			}
+
+			SentenceData09 i09 = new SentenceData09(formsNoRoot, lemmas, org_lemmas,posNoRoot, pposs, labels, heads,fillp,of, pf);
+
+			//public SentenceData09(String[] forms, String[] lemmas, String[] olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads, String[] fillpred) {
+			//SentenceData09
+		//	SentenceData09 i2 = new SentenceData09(i.forms, i.lemmas,i.org_lemmas,);
+			
+			writer.write(i09);
+
+			
+		}
+		writer.finishWriting();
+		
+		
+	}
+
+	
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/util/ConvertADJ.java b/dependencyParser/basic/mate-tools/src/is2/util/ConvertADJ.java
new file mode 100644
index 0000000..b30aabb
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/util/ConvertADJ.java
@@ -0,0 +1,129 @@
+/**
+ * 
+ */
+package is2.util;
+
+import is2.data.SentenceData09;
+import is2.io.CONLLReader04;
+import is2.io.CONLLReader06;
+import is2.io.CONLLReader09;
+import is2.io.CONLLWriter06;
+import is2.io.CONLLWriter09;
+
+/**
+ * @author Dr. Bernd Bohnet, 01.03.2010
+ * 
+ * 
+ */
+public class ConvertADJ {
+
+	
+	
+	public static void main(String args[]) throws Exception {
+				
+		convert(args[0],args[1]);
+		
+		
+	}
+	
+	public static void convert(String source, String target) throws Exception {
+		
+		CONLLReader09 reader = new CONLLReader09(source);
+//		CONLLWriter09 writer = new CONLLWriter09(target);
+		int adj=0,argadj=0;
+		int rb=0,argrb=0;
+		int str =0;
+		while (true) {
+			SentenceData09 i = reader.getNext();
+			str++;
+			if (i == null) break;
+			
+
+			for (int k =0;k<i.length();k++) {
+           
+				if (i.gpos[k].startsWith("JJ")) adj++;
+				if (i.gpos[k].startsWith("RB")) rb++;
+							
+				if (i.argposition!=null) {
+					for(int p=0;p<i.argposition.length;p++) {
+						if(i.argposition[p]!=null)
+						for(int a=0;a<i.argposition[p].length;a++) {
+							if(i.argposition[p][a]==k && i.gpos[k].startsWith("JJ")) argadj ++;
+							if(i.argposition[p][a]==k && i.gpos[k].startsWith("RB")) argrb ++;
+						}
+						
+					}
+				}
+				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
+			}
+
+
+			
+		}
+		System.out.println("adj "+adj+ " "+argadj);
+		System.out.println("rb "+rb+ " "+argrb);
+		
+	}
+
+	
+	public static void convert0906(String source, String target) throws Exception {
+		
+		CONLLReader09 reader = new CONLLReader09(source);
+		CONLLWriter06 writer = new CONLLWriter06(target);
+
+		
+		while (true) {
+			SentenceData09 i = reader.getNext();
+			
+			if (i == null) break;
+			
+			
+			String[] formsNoRoot = new String[i.length()-1];
+			String[] posNoRoot = new String[formsNoRoot.length];
+			String[] lemmas = new String[formsNoRoot.length];
+
+			String[] org_lemmas = new String[formsNoRoot.length];
+
+			String[] of = new String[formsNoRoot.length];
+			String[] pf = new String[formsNoRoot.length];
+
+			String[] pposs = new String[formsNoRoot.length];
+			String[] labels = new String[formsNoRoot.length];
+			String[] fillp = new String[formsNoRoot.length];
+
+			int[] heads = new int[formsNoRoot.length];
+
+			for(int j = 0; j < formsNoRoot.length; j++) {
+				formsNoRoot[j] = i.forms[j+1];
+				posNoRoot[j] = i.gpos[j+1];
+				pposs[j] = i.ppos[j+1];
+
+				labels[j] = i.labels[j+1];
+				heads[j] = i.heads[j+1];
+				lemmas[j] = i.plemmas[j+1];
+
+				org_lemmas[j] = i.lemmas[j+1];
+				of[j] = i.ofeats[j+1];
+					pf[j] = i.pfeats[j+1];
+
+				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
+			}
+
+			SentenceData09 i09 = new SentenceData09(formsNoRoot, lemmas, org_lemmas,posNoRoot, pposs, labels, heads,fillp,of, pf);
+
+			//public SentenceData09(String[] forms, String[] lemmas, String[] olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads, String[] fillpred) {
+			//SentenceData09
+		//	SentenceData09 i2 = new SentenceData09(i.forms, i.lemmas,i.org_lemmas,);
+			
+			writer.write(i09);
+
+			
+		}
+		writer.finishWriting();
+		
+		
+	}
+
+	
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/util/ConvertLowerCase0909.java b/dependencyParser/basic/mate-tools/src/is2/util/ConvertLowerCase0909.java
new file mode 100644
index 0000000..e8f19f3
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/util/ConvertLowerCase0909.java
@@ -0,0 +1,89 @@
+/**
+ * 
+ */
+package is2.util;
+
+import is2.data.SentenceData09;
+import is2.io.CONLLReader06;
+import is2.io.CONLLReader09;
+import is2.io.CONLLWriter06;
+import is2.io.CONLLWriter09;
+
+/**
+ * @author Dr. Bernd Bohnet, 01.03.2010
+ * 
+ * 
+ */
+public class ConvertLowerCase0909 {
+
+	
+	
+	public static void main(String args[]) throws Exception {
+		
+		
+		
+		CONLLReader09 reader = new CONLLReader09(args[0]);
+		CONLLWriter09 writer = new CONLLWriter09(args[1]);
+		
+		int str =0;
+		while (true) {
+			SentenceData09 i = reader.getNext();
+			str++;
+			if (i == null) break;
+			
+			SentenceData09 i09 = new SentenceData09(i);
+			i09.createSemantic(i);
+			
+			for(int k=0;k<i09.length();k++) {
+				i09.lemmas[k]=i09.lemmas[k].toLowerCase();
+				i09.plemmas[k]=i09.plemmas[k].toLowerCase();
+				
+			}
+			
+			writer.write(i09);
+		
+			
+		}
+		writer.finishWriting();
+		
+		
+	}
+	
+	public static void convert(String source, String target) throws Exception {
+		
+		CONLLReader09 reader = new CONLLReader09(source);
+		CONLLWriter09 writer = new CONLLWriter09(target);
+
+		int str =0;
+		while (true) {
+			SentenceData09 i = reader.getNext();
+			str++;
+			if (i == null) break;
+			
+			SentenceData09 i09 = new SentenceData09(i);
+			i09.createSemantic(i);
+			
+			for(int k=0;k<i09.length();k++) {
+				i09.lemmas[k]=i09.lemmas[k].toLowerCase();
+				i09.plemmas[k]=i09.plemmas[k].toLowerCase();
+				
+			}
+		
+			//public SentenceData09(String[] forms, String[] lemmas, String[] olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads, String[] fillpred) {
+			//SentenceData09
+		//	SentenceData09 i2 = new SentenceData09(i.forms, i.lemmas,i.org_lemmas,);
+			
+			writer.write(i09);
+
+			
+		}
+		writer.finishWriting();
+		
+		
+	}
+
+	
+	
+	
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/util/ConvertTiger2CoNLL.java b/dependencyParser/basic/mate-tools/src/is2/util/ConvertTiger2CoNLL.java
new file mode 100644
index 0000000..bb528f7
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/util/ConvertTiger2CoNLL.java
@@ -0,0 +1,124 @@
+/**
+ * 
+ */
+package is2.util;
+
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.StringTokenizer;
+
+/**
+ * @author Dr. Bernd Bohnet, 17.01.2010
+ * 
+ *  This class removes all information from a conll 2009 file except of columns 1 and 2 
+ *  that contain the word id and the word form. 
+ */
+public class ConvertTiger2CoNLL {
+
+	public static void main (String[] args) throws IOException {
+
+	
+		OptionsSuper options = new  OptionsSuper(args,null);
+
+		if (options.trainfile!= null){
+			System.err.println("included sentences "+clean(options.trainfile, options.outfile, options.start, options.count));
+		}
+		else 	System.err.println("Please proivde the file name -train <file-name>");
+		
+	}
+
+	/**
+	 * @param trainfile
+	 * @throws IOException 
+	 */
+	private static int clean(String file, String outFile, int start, int numberOfSentences) throws IOException {
+
+		System.err.println("writting to "+outFile);
+		System.err.println("start "+start+" to "+(start+numberOfSentences));
+		int state=0;
+
+		BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"),32768);
+		BufferedWriter writer = new BufferedWriter(new java.io.OutputStreamWriter (new java.io.FileOutputStream (outFile),"UTF-8"),32768);
+		String l =null;
+		try {
+
+			int id =1, snt=0,cnt=0;
+
+			while( (l = reader.readLine())!=null) {
+
+				  
+				if (l.startsWith("#BOS")) {
+					state=1; //BOS
+					id=1;
+					snt++;
+					continue;
+				}
+				if (l.startsWith("#EOS") && state==1) {
+					state=2; //BOS
+					cnt++;
+					
+					writer.newLine();
+				}
+				
+				if (start>snt || (start+numberOfSentences)<=snt) {
+					state=3;
+				}
+				
+				if (l.startsWith("#5")||l.startsWith("#6")||l.startsWith("#7")) continue;
+				if ((start+numberOfSentences)<=snt) break;
+				
+				if (state==3) continue;
+			
+				
+				if (state==1) {
+
+					l = l.replace("\t\t", "\t");
+					l = l.replace("\t\t", "\t");
+					
+					StringTokenizer t = new StringTokenizer(l,"\t");
+					int count=0;
+					
+					writer.write(""+id+"\t");
+					
+					while (t.hasMoreTokens()) {
+						if (count==0) {
+							writer.write(t.nextToken()+"\t");
+						} else if (count==1) {
+							writer.write(t.nextToken()+"\t_\t");
+						} else if (count==2) {
+							writer.write(t.nextToken()+"\t_\t");
+						} else if (count==3) {
+							writer.write(t.nextToken().replace(".", "|")+"\t_\t");
+						}
+						else {
+							t.nextToken();
+						}
+						count++;
+					}
+					writer.write("_\t_\t_\t_\t_\t_\t_\t_\t_");
+					writer.newLine();
+				}
+				id++;
+			}
+			writer.flush();
+			writer.close();
+			reader.close();
+			
+			return cnt;
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		
+		
+		return -1;
+
+	}
+
+
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/util/DB.java b/dependencyParser/basic/mate-tools/src/is2/util/DB.java
new file mode 100755
index 0000000..8218ea5
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/util/DB.java
@@ -0,0 +1,81 @@
+package is2.util; 
+
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+
+
+public class DB {
+
+
+	private static final String ARROW     = " -> ";
+	private static final String LEER = "                            " ;
+	private static final String BIG = "                                                                                    " ;
+
+	private static boolean debug = true;
+
+	final static public void println (Object err) {
+
+		if (!debug) return;
+
+		StackTraceElement[] ste = new Exception().getStackTrace();
+
+		StringBuffer msg = new StringBuffer();
+		msg.append((getDate().append(LEER).substring(0,10)));
+		msg.append(' ');
+	 	msg.append(ste[1].getClassName()+" "+ste[1].getLineNumber());
+		msg.append(':');
+		msg.append(ste[1].getMethodName());
+		msg.append(ARROW);
+
+		int l = 55-msg.length();
+		if (l < 0) l =0;
+		msg.append(BIG.substring(0, l));
+
+
+//		if ((m_depth >= 0) && (m_depth < (BIG.length()) )) {
+//		vDebugMessage.append(BIG.substring(0, m_depth*2));
+//		}
+
+		msg.append(err);
+
+		System.err.println(msg);
+
+
+	}
+	
+	final static public void prints (Object err) {
+
+		if (!debug) return;
+		System.err.println(err);
+
+	}
+
+
+	final private static StringBuffer getDate() {
+//		if (Preferences.s_debug <= BDebug.FAIL) return s_sb;
+
+		GregorianCalendar s_cal =  new GregorianCalendar();   
+		StringBuffer sb = new StringBuffer();
+//		sb.append(s_cal.get(Calendar.HOUR_OF_DAY));
+//		sb.append('_');
+		sb.append(s_cal.get(Calendar.MINUTE));
+		sb.append('.');
+		sb.append(s_cal.get(Calendar.SECOND));
+		sb.append('.');
+		sb.append(s_cal.get(Calendar.MILLISECOND));
+
+		return sb;
+	}
+
+	public static void setDebug(boolean b) {
+		debug=b;
+		
+	}
+
+	public static boolean getDebug() {
+		
+		return debug;
+	}
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/util/Edges.java b/dependencyParser/basic/mate-tools/src/is2/util/Edges.java
new file mode 100644
index 0000000..af1a658
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/util/Edges.java
@@ -0,0 +1,206 @@
+/**
+ * 
+ */
+package is2.util;
+
+import is2.data.PipeGen;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Map.Entry;
+
+/**
+ * @author Dr. Bernd Bohnet, 13.05.2009;
+ * 
+ * 
+ */
+public final class Edges {
+
+	
+	private static short[][][] edges;
+	private static HashMap<Short,Integer> labelCount = new HashMap<Short,Integer>();
+
+	private static HashMap<String,Integer> slabelCount = new HashMap<String,Integer>();
+
+	
+	static short[] def = new short[1];
+	
+	private Edges () {}
+	
+	/**
+	 * @param length
+	 */
+	public static void init(int length) {
+			edges = new short[length][length][];
+	}
+	
+	
+	public static void findDefault(){
+		
+		int best =0;
+
+		
+		
+		for(Entry<Short,Integer> e :  labelCount.entrySet()) {
+
+			
+			if (best<e.getValue()) {
+				best = e.getValue();
+				def[0]=e.getKey();
+			}
+		}
+
+		
+		//	labelCount=null;
+	//	String[] types = new String[mf.getFeatureCounter().get(PipeGen.REL)];
+	//	for (Entry<String, Integer> e : MFO.getFeatureSet().get(PipeGen.REL).entrySet())  	types[e.getValue()] = e.getKey();
+
+    	is2.util.DB.println("set default label to "+def[0]+" " );
+
+	//	System.out.println("found default "+def[0]);
+	
+	}
+	
+
+	final static public void put(int pos1, int pos2, short label) {
+		putD(pos1, pos2,label);
+	//	putD(pos2, pos1,!dir, label);		
+	}
+	
+	
+	final static public void putD(int pos1, int pos2, short label) {
+		
+		Integer lc = labelCount.get(label);
+		if (lc==null) labelCount.put(label, 1);
+		else labelCount.put(label, lc+1);
+
+		String key = pos1+"-"+pos2+label;
+		Integer lcs = slabelCount.get(key);
+		if (lcs==null) slabelCount.put(key, 1);
+		else slabelCount.put(key, lcs+1);
+
+		if (edges[pos1][pos2]==null) {
+			edges[pos1][pos2]=new short[1];
+			edges[pos1][pos2][0]=label;
+			
+//			edgesh[pos1][pos2][dir?0:1] = new TIntHashSet(2);
+//			edgesh[pos1][pos2][dir?0:1].add(label);
+		} else {
+			short labels[] = edges[pos1][pos2];
+			for(short l : labels) {				
+				//contains label already?
+				if(l==label) return;
+			}
+			
+			short[] nlabels = new short[labels.length+1];
+			System.arraycopy(labels, 0, nlabels, 0, labels.length);
+			nlabels[labels.length]=label;
+			edges[pos1][pos2]=nlabels;
+			
+	//		edgesh[pos1][pos2][dir?0:1].add(label);
+		}
+	}
+	
+	final static public short[] get(int pos1, int pos2) {
+		
+		if (pos1<0 || pos2<0 || edges[pos1][pos2]==null) return def;
+		return edges[pos1][pos2];
+	}
+
+	
+	/**
+	 * @param dis
+	 */
+	static public void write(DataOutputStream d) throws IOException {
+
+		int len = edges.length;
+		d.writeShort(len);
+
+		for(int p1 =0;p1<len;p1++) {
+			for(int p2 =0;p2<len;p2++) {
+				if (edges[p1][p2]==null) d.writeShort(0);
+				else {
+					d.writeShort(edges[p1][p2].length);
+					for(int l =0;l<edges[p1][p2].length;l++) {
+						d.writeShort(edges[p1][p2][l]);
+					}
+					
+				}
+			}
+		}
+		
+		d.writeShort(def[0]);
+
+	}
+
+	
+	/**
+	 * @param dis
+	 */
+	public static void read(DataInputStream d) throws IOException {
+		int len = d.readShort();
+
+		edges = new short[len][len][];
+		for(int p1 =0;p1<len;p1++) {
+			for(int p2 =0;p2<len;p2++) {
+				int ll = d.readShort();
+				if (ll==0) {
+					edges[p1][p2]=null;
+				} else {
+					edges[p1][p2] = new short[ll];
+					for(int l =0;l<ll;l++) {
+						edges[p1][p2][l]=d.readShort();
+					}					
+				}
+			}
+		}
+		
+		def[0]= d.readShort();
+
+	}
+
+	public static class C implements Comparator<Short> {
+
+		public C() {
+			super();
+		}
+
+		String _key;
+		
+		public C(String key) {
+			super();
+			_key=key;
+		}
+
+		/* (non-Javadoc)
+		 * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+		 */
+		@Override
+		public int compare(Short l1, Short l2) {
+			
+		//	int c1 = labelCount.get(l1);
+		//	int c2 = labelCount.get(l2);
+		//	if (true) return c1==c2?0:c1>c2?-1:1;
+
+			int x1 = slabelCount.get(_key+l1.shortValue());
+			int x2 = slabelCount.get(_key+l2.shortValue());
+		//	System.out.println(x1+" "+x2);
+			
+			
+			return x1==x2?0:x1>x2?-1:1;
+			
+			
+			
+		}
+
+	
+
+		
+		
+	}
+	
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/util/Evaluator.java b/dependencyParser/basic/mate-tools/src/is2/util/Evaluator.java
new file mode 100644
index 0000000..c527303
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/util/Evaluator.java
@@ -0,0 +1,616 @@
+package is2.util;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.Map.Entry;
+
+//import org.apache.commons.math.stat.inference.TestUtils;
+
+
+import is2.data.Parse;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+
+
+public class Evaluator {
+
+
+	public static void   main(String[] args) {
+
+		Options options = new Options(args);
+
+		if (options.eval &&  options.significant1==null ) {
+
+			Results r = evaluate(options.goldfile, options.outfile); 
+
+		} 
+		/*
+		else if (options.significant1!=null && options.significant2!=null ) {
+			
+			System.out.println("compare1 "+options.significant1);
+			System.out.println("compare2 "+options.significant2);
+			System.out.println("gold     "+options.goldfile);
+			
+			Results r1 = evaluate(options.goldfile, options.significant1,false); 
+			
+			System.out.println("file 1 done ");
+			
+			Results r2 = evaluate(options.goldfile, options.significant2,false); 
+			
+			double[] s1 = new double[r1.correctHead.size()]; 
+			double[] s2 = new double[r1.correctHead.size()]; 
+			
+			for(int k=0;k<r1.correctHead.size();k++) {
+				s1[k] = r1.correctHead.get(k);
+				s2[k] = r2.correctHead.get(k);
+			}
+			
+			try {
+				double p = TestUtils.pairedTTest(s1, s2);
+				System.out.print("significant to "+p);
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+			
+//			significant(options.significant1, options.significant2) ;
+
+
+		} 
+	*/
+	else if (options.significant1!=null) {
+			Results r = evaluate(options.goldfile, options.outfile,true); 
+//			significant(options.significant1, options.significant2) ;
+
+		}
+
+
+	}
+
+
+	/**
+	 * 
+	 * @param act_file
+	 * @param pred_file
+	 * @param what top, pos, length, mor
+	 */
+	public static void evaluateTagger (String act_file,  String pred_file, String what)  {
+
+		
+		CONLLReader09 goldReader = new CONLLReader09(act_file); 
+
+		CONLLReader09 predictedReader = new CONLLReader09();
+		 predictedReader.startReading(pred_file);
+
+		Hashtable<String,Integer> errors = new Hashtable<String,Integer>();
+		Hashtable<String,StringBuffer> words = new Hashtable<String,StringBuffer>();
+
+		int total = 0, numsent = 0, corrT=0;
+		SentenceData09 goldInstance = goldReader.getNext();
+		SentenceData09 predInstance = predictedReader.getNext();
+
+
+		HashMap<Integer,int[]> correctL = new HashMap<Integer,int[]>();
+		HashMap<String,int[]> pos = new HashMap<String,int[]>();
+		HashMap<String,int[]> mor = new HashMap<String,int[]>();
+
+		float correctM = 0, allM=0;;
+		
+		while(goldInstance != null) {
+
+			int instanceLength = goldInstance.length();
+
+			if (instanceLength != predInstance.length())
+				System.out.println("Lengths do not match on sentence "+numsent);
+
+			String gold[] = goldInstance.gpos;
+			String pred[] = predInstance.ppos;
+
+			String goldM[] = goldInstance.ofeats;
+			String predM[] = predInstance.pfeats;
+
+			
+			// NOTE: the first item is the root info added during nextInstance(), so we skip it.
+
+			for (int i = 1; i < instanceLength; i++) {
+				
+				int[] cwr = correctL.get(i);
+				if (cwr ==null) {
+					cwr = new int[2];
+					correctL.put(i, cwr);
+				}
+				cwr[1]++;
+				int[] correctPos = pos.get(gold[i]);
+				if (correctPos==null) {
+					correctPos = new int[2];
+					pos.put(gold[i], correctPos);
+				}
+				correctPos[1]++;
+
+				int[] correctMor = mor.get(goldM[i]);
+				if (correctMor==null) {
+					correctMor = new int[2];
+					mor.put(goldM[i], correctMor);
+				}
+
+				if ((goldM[i].equals("_")&&predM[i]==null) ||  goldM[i].equals(predM[i])) {
+					correctM++;
+					correctMor[0]++;
+				}
+				allM++;
+				correctMor[1]++;
+				
+				if (gold[i].equals(pred[i])) {
+					corrT++;
+					cwr[0]++;
+					correctPos[0]++;
+				} else {
+					String key = "gold: '"+gold[i]+"' pred: '"+pred[i]+"'";
+					Integer cnt = errors.get(key);
+					StringBuffer errWrd = words.get(key);
+					if (cnt==null) {
+						errors.put(key,1);
+						words.put(key, new StringBuffer().append(goldInstance.forms[i]));
+					}
+					else {
+						errors.put(key,cnt+1);		
+						errWrd.append(" "+goldInstance.forms[i]);
+					}
+				}
+				
+				
+			}
+			total += instanceLength - 1; // Subtract one to not score fake root token
+
+			
+			numsent++;
+
+			goldInstance = goldReader.getNext();
+			predInstance = predictedReader.getNext();
+		}
+
+		 
+
+	
+					
+				//	System.out.println("error gold:"+goldPos[i]+" pred:"+predPos[i]+" "+goldInstance.forms[i]+" snt "+numsent+" i:"+i);
+		ArrayList<Entry<String, Integer>> opsl = new ArrayList<Entry<String, Integer>>();
+		for(Entry<String, Integer> e : errors.entrySet()) {
+			opsl.add(e);
+		}
+		
+		Collections.sort(opsl, new Comparator<Entry<String, Integer>>(){
+
+			@Override
+			public int compare(Entry<String, Integer> o1,
+					Entry<String, Integer> o2) {
+				
+				return o1.getValue()==o2.getValue()?0:o1.getValue()>o2.getValue()?-1:1;
+			}
+			
+			
+		});
+			
+		
+		int cnt=0;
+		if (what.contains("top") ) {
+			System.out.println("top most errors:");
+			for(Entry<String, Integer> e : opsl) {
+				cnt++;
+				if(e.getValue()>10) System.out.println(e.getKey()+"  "+e.getValue()+" context: "+words.get(e.getKey()));
+			}
+		}		
+		
+		if (what.contains("length")) {
+			for(int k=0;k<60;k++) {
+				int[] cwr = correctL.get(k);
+				if (cwr == null) continue;
+				System.out.print(k+":"+cwr[0]+":"+cwr[1]+":"+(((float)Math.round(10000*(float)((float)cwr[0])/(float)cwr[1]))/100)+" ");
+			}
+			System.out.println();
+		}
+		
+		if (what.contains("pos")) {
+			for(Entry<String,int[]>  e : pos.entrySet()) {
+				
+				System.out.print(e.getKey()+":"+e.getValue()[0]+":"+e.getValue()[1]+":"+
+				(((float)Math.round(10000*((float)e.getValue()[0])/((float)e.getValue()[1])))/100)+" ");
+				
+			}
+			System.out.print("");
+		}
+		System.out.println();
+		if (what.contains("mor")) {
+			for(Entry<String,int[]>  e : mor.entrySet()) {
+				
+				System.out.print(e.getKey()+":"+e.getValue()[0]+":"+e.getValue()[1]+":"+
+				(((float)Math.round(10000*((float)e.getValue()[0])/((float)e.getValue()[1])))/100)+" ");
+				
+			}
+			System.out.print("");
+		}
+		System.out.println("\nTokens: " + total+" Correct: " + corrT+" "+(float)corrT/total+" Correct M.:"+(int)correctM+ " morphology "+(correctM/total));
+	}
+
+
+	
+
+	public static int errors(SentenceData09 s, boolean uas) {
+
+		int errors =0;
+		for (int k =1;k<s.length();k++) {
+
+			if (s.heads[k] != s.pheads[k] && (uas || ! s.labels[k].equals(s.plabels[k]))) {
+				errors++;
+			}
+		}
+		return errors;
+	}
+
+	public static int errors(SentenceData09 s1, SentenceData09 s2, HashMap<String,Integer> r1,HashMap<String,Integer> r2) {
+
+
+
+		int errors =0;
+		for (int k =1;k<s1.length();k++) {
+
+			if (s1.heads[k] != s1.pheads[k] || (! s1.labels[k].equals(s1.plabels[k]))) {
+
+				if (s2.heads[k] != s2.pheads[k] || (! s2.labels[k].equals(s2.plabels[k]))) {
+
+					// equal do nothing
+
+				} else {
+
+					Integer cnt = r1.get(s1.labels[k]);
+					if (cnt==null) cnt=0;
+					cnt++;
+					r1.put(s1.labels[k],cnt);
+
+
+				}
+
+			}
+
+			if (s2.heads[k] != s2.pheads[k] || (! s2.labels[k].equals(s2.plabels[k]))) {
+
+				if (s1.heads[k] != s1.pheads[k] || (! s1.labels[k].equals(s1.plabels[k]))) {
+
+					// equal do nothing
+
+				} else {
+
+					Integer cnt = r2.get(s2.labels[k]);
+					if (cnt==null) cnt=0;
+					cnt++;
+					r2.put(s2.labels[k],cnt);
+
+
+				}
+
+			}
+		}
+		return errors;
+	}
+
+
+	public static final String PUNCT ="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
+
+	public static class Results {
+
+		public int total;
+		public int corr;
+		public float las;
+		public float ula;
+		public float lpas;
+		public float upla;
+		
+		ArrayList<Double> correctHead;
+	}
+	
+	public static Results evaluate (String act_file,  String pred_file) {
+		return evaluate (act_file,  pred_file,true);
+	}
+	public static Results evaluate (String act_file,  String pred_file, boolean printEval) {
+		return  evaluate ( act_file,   pred_file,  printEval,   false);
+	}
+	
+	
+	public static Results evaluate (String act_file,  String pred_file, boolean printEval, boolean sig) {
+
+		CONLLReader09 goldReader = new CONLLReader09(act_file, -1);
+		CONLLReader09 predictedReader = new CONLLReader09(pred_file, -1);
+
+		int total = 0, corr = 0, corrL = 0, Ptotal=0, Pcorr = 0, PcorrL = 0, BPtotal=0, BPcorr = 0, BPcorrL = 0, corrLableAndPos=0, corrHeadAndPos=0;
+		int corrLableAndPosP=0, corrHeadAndPosP=0,corrLableAndPosC=0;
+		int numsent = 0, corrsent = 0, corrsentL = 0, Pcorrsent = 0, PcorrsentL = 0,sameProj=0;;
+		int proj=0, nonproj=0, pproj=0, pnonproj=0, nonProjOk=0, nonProjWrong=0;
+		
+		int   corrOne = 0;
+		
+		int correctChnWoPunc =0, correctLChnWoPunc=0,CPtotal=0;
+		SentenceData09 goldInstance = goldReader.getNext();
+
+		SentenceData09 predInstance = predictedReader.getNext();
+		HashMap<String,Integer> label = new HashMap<String,Integer>();
+		HashMap<String,Integer> labelCount = new HashMap<String,Integer>();
+		HashMap<String,Integer> labelCorrect = new HashMap<String,Integer>();
+		HashMap<String,Integer> falsePositive = new HashMap<String,Integer>();
+
+		// does the node have the correct head?
+		ArrayList<Double> correctHead = new ArrayList<Double>();
+		
+		while(goldInstance != null) {
+
+			int instanceLength = goldInstance.length();
+
+			if (instanceLength != predInstance.length())
+				System.out.println("Lengths do not match on sentence "+numsent);
+
+			int[] goldHeads = goldInstance.heads;
+			String[] goldLabels = goldInstance.labels;
+			int[] predHeads = predInstance.pheads;
+			String[] predLabels = predInstance.plabels;
+
+			boolean whole = true;
+			boolean wholeL = true;
+
+			boolean Pwhole = true;
+			boolean PwholeL = true;
+
+
+			int tlasS=0, totalS=0,corrLabels=0, XLabels=0;
+
+			// NOTE: the first item is the root info added during nextInstance(), so we skip it.
+
+	
+			
+			int punc=0, bpunc=0,totalChnWoPunc=0;
+			for (int i = 1; i < instanceLength; i++) {
+
+				
+				
+				Parse p = new Parse(predHeads.length);
+				for (int k=0;k<p.heads.length;k++) p.heads[k]=(short) predHeads[k]; 
+
+				Parse g = new Parse(predHeads.length);
+				for (int k=0;k<g.heads.length;k++) g.heads[k]=(short) goldHeads[k]; 
+		
+				
+				
+				
+				
+				{
+					Integer count = labelCount.get(goldLabels[i]);
+					if (count==null)count = 0;
+					
+					count++;
+					
+					labelCount.put(goldLabels[i], count);
+					
+					if(goldLabels[i].equals(predLabels[i])) { 
+						Integer correct = labelCorrect.get(goldLabels[i]);
+						if (correct ==null) correct =0;
+						correct ++;
+						labelCorrect.put(goldLabels[i], correct);
+						
+					} else {
+						Integer fp = falsePositive.get(predLabels[i]);
+						if (fp ==null) fp =0;
+						fp ++;
+						falsePositive.put(predLabels[i], fp);
+					}
+					
+					
+				}
+
+				{
+
+				}
+				
+			
+				if (goldLabels[i].startsWith("PMOD")) XLabels++;
+				
+				boolean tlas =false;
+				if (predHeads[i] == goldHeads[i]) {
+					corr++;
+						
+					if (goldInstance.gpos[i].equals(predInstance.ppos[i])) corrHeadAndPos ++;
+					if (goldLabels[i].equals(predLabels[i])) {
+						corrL++;
+				//	if (predLabels[i].startsWith("PMOD")) 
+						corrLabels++; 	
+				//	else correctHead.add(0);
+						if (goldInstance.gpos[i].equals(predInstance.ppos[i])) {
+							tlasS++;
+							tlas=true;
+							corrLableAndPos ++;
+						}
+					}
+					else {
+					//	correctHead.add(0);
+						//		System.out.println(numsent+" error gold "+goldLabels[i]+" "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
+						wholeL = false;
+					}
+				}
+				else { 
+					
+					//correctHead.add(0);
+					
+					//		System.out.println(numsent+"error gold "+goldLabels[i]+" "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
+					whole = false; wholeL = false; 
+					
+					Integer count = label.get(goldLabels[i]);
+
+					if (count==null)count = 0;
+					count++;
+					label.put(goldLabels[i], count);
+
+
+
+					int d = Math.abs(goldInstance.heads[i]-i);
+				}
+
+
+				if( ! ("!\"#$%&''()*+,-./:;<=>?@[\\]^_{|}~``".contains(goldInstance.forms[i]))) {
+				
+					if (predHeads[i] == goldHeads[i]) {
+						BPcorr++;
+
+						if (goldLabels[i].equals(predLabels[i])) {
+							BPcorrL++;
+						}
+						else {
+							//		System.out.println(numsent+" error gold "+goldLabels[i]+" "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
+						//	PwholeL = false;
+						}
+					} else { 
+						//		System.out.println(numsent+"error gold "+goldLabels[i]+" "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
+						//Pwhole = false; wholeL = false; 
+					}
+
+				} else bpunc++;
+
+				if( ! (",.:''``".contains(goldInstance.forms[i]))) {
+				
+
+					if (predHeads[i] == goldHeads[i]) {
+						if (goldInstance.gpos[i].equals(predInstance.ppos[i])) corrHeadAndPosP ++;
+						Pcorr++;
+
+						if (goldLabels[i].equals(predLabels[i])) {
+							PcorrL++;
+							if (goldInstance.gpos[i].equals(predInstance.ppos[i])) corrLableAndPosP ++;
+
+						}
+						else {
+							//		System.out.println(numsent+" error gold "+goldLabels[i]+" "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
+							PwholeL = false;
+						}
+					} else { 
+						//		System.out.println(numsent+"error gold "+goldLabels[i]+" "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
+						Pwhole = false; PwholeL = false; 
+					}
+
+				} else punc++;
+				
+				
+				if( ! (goldInstance.gpos[i].toLowerCase().startsWith("pu"))) {
+					if (predHeads[i] == goldHeads[i]) {
+						correctChnWoPunc++;
+
+						if (goldLabels[i].equals(predLabels[i])) {
+							correctLChnWoPunc++;
+							if (goldInstance.gpos[i].equals(predInstance.ppos[i])) corrLableAndPosC ++;
+						}
+						else {
+							//		System.out.println(numsent+" error gold "+goldLabels[i]+" "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
+						//	PwholeL = false;
+						}
+					} else { 
+						//		System.out.println(numsent+"error gold "+goldLabels[i]+" "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
+					//	Pwhole = false; PwholeL = false; 
+					}
+
+				} else totalChnWoPunc++;
+
+				
+				if (sig) {
+				if(tlas) System.out.println("1\t");
+				else  System.out.println("0\t");
+				}
+
+			}
+			total += ((instanceLength - 1)); // Subtract one to not score fake root token
+
+			Ptotal += ((instanceLength - 1) - punc);
+			BPtotal += ((instanceLength - 1) - bpunc);
+			CPtotal += ((instanceLength - 1) - totalChnWoPunc);
+			if(whole) corrsent++;
+			if(wholeL) corrsentL++;
+			if(Pwhole) Pcorrsent++;
+			if(PwholeL) PcorrsentL++;
+			numsent++;
+
+			goldInstance = goldReader.getNext();
+			predInstance = predictedReader.getNext();
+			correctHead.add((double) ((double)corrLabels/(instanceLength - 1)));
+		//	System.out.println(""+((double)corrLabels/(instanceLength - 1)));
+		}
+
+		Results r = new Results();
+
+		r.correctHead =correctHead;
+		int  mult=100000, diff=1000;
+
+		r.total = total;
+		r.corr = corr;
+		r.las =(float)Math.round(((double)corrL/total)*mult)/diff;
+		r.ula =(float)Math.round(((double)corr /total)*mult)/diff;
+		r.lpas =(float)Math.round(((double)corrLableAndPos/total)*mult)/diff;
+		r.upla =(float)Math.round(((double)corrHeadAndPos /total)*mult)/diff;
+		float tlasp = (float)Math.round(((double)corrLableAndPosP/Ptotal)*mult)/diff;
+		float tlasc = (float)Math.round(((double)corrLableAndPosC/Ptotal)*mult)/diff;
+
+	//	System.out.print("Total: " + total+" \tCorrect: " + corr+" ");
+		System.out.print(" LAS/Total/UAS/Total: " + r.las+"/" + (double)Math.round(((double)corrsentL/numsent)*mult)/diff+
+				"/" + r.ula+"/" + (double)Math.round(((double)corrsent /numsent)*mult)/diff+" LPAS/UPAS "+r.lpas+"/"+r.upla);
+
+		System.out.println("; without . " + (double)Math.round(((double)PcorrL/Ptotal)*mult)/diff+"/" + 
+				(double)Math.round(((double)PcorrsentL/numsent)*mult)/diff+
+				"/" + (double)Math.round(((double)Pcorr /Ptotal)*mult)/diff+"/" +
+				(double)Math.round(((double)Pcorrsent /numsent)*mult)/diff+" TLAS "+tlasp+
+				" V2 LAS/UAS "+(double)Math.round(((double)BPcorrL/BPtotal)*mult)/diff+
+				"/"+(double)Math.round(((double)BPcorr/BPtotal)*mult)/diff+
+				" CHN LAS/UAS "+(double)Math.round(((double)correctLChnWoPunc/CPtotal)*mult)/diff+
+				"/"+(double)Math.round(((double)correctChnWoPunc/CPtotal)*mult)/diff+" TLAS "+tlasc);
+
+		float precisionNonProj = ((float)nonProjOk)/((float)nonProjOk+nonProjWrong);
+		float recallNonProj = ((float)nonProjOk)/((float)(nonproj));
+		System.out.println("proj "+proj+" nonp "+nonproj+"; predicted proj "+pproj+" non "+pnonproj+"; nonp correct "+
+		nonProjOk+" nonp wrong "+nonProjWrong+
+		" precision=(nonProjOk)/(non-projOk+nonProjWrong): "+precisionNonProj+
+		" recall=nonProjOk/nonproj="+recallNonProj+" F="+(2*precisionNonProj*recallNonProj)/(precisionNonProj+recallNonProj));
+
+		if (!printEval) return r;
+		
+		
+		HashMap<String,Integer> totalX = new HashMap<String,Integer>();
+		HashMap<String,Integer> totalY = new HashMap<String,Integer>();
+		
+		String A=" "; // &
+		System.out.println("label\ttp\tcount\trecall\t\ttp\tfp+tp\tprecision\t F-Score ");
+
+		for(Entry<String, Integer> e : labelCount.entrySet()) {
+		
+			int tp = labelCorrect.get(e.getKey())==null?0:labelCorrect.get(e.getKey()).intValue();
+			Integer count = labelCount.get(e.getKey());
+			int fp = falsePositive.get(e.getKey())==null?0:falsePositive.get(e.getKey()).intValue();
+			System.out.println(e.getKey()+"\t"+tp+"\t"+count+"\t"+roundPercent((float)tp/count)+"\t\t"+tp+"\t"+(fp+tp)+
+					"\t"+roundPercent((float)tp/(fp+tp))+"\t\t"+roundPercent((((float)tp/count))+(float)tp/(fp+tp))/2F); //+totalD
+		}
+	
+		
+		
+		
+		return r;
+	}
+
+
+	public static float round (double v){
+
+		return Math.round(v*10000F)/10000F;
+	}
+
+	public static float roundPercent (double v){
+
+		return Math.round(v*10000F)/100F;
+	}
+
+
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/util/EvaluatorTagger.java b/dependencyParser/basic/mate-tools/src/is2/util/EvaluatorTagger.java
new file mode 100644
index 0000000..c1ee7df
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/util/EvaluatorTagger.java
@@ -0,0 +1,736 @@
+package is2.util;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.Map.Entry;
+
+
+import org.apache.commons.math.stat.inference.TestUtils;
+
+import is2.data.Parse;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+
+
+public class EvaluatorTagger {
+
+	
+	public static int TAGGER = 1;
+	public static int what = 0;
+
+	public static void   main(String[] args) {
+
+		Options options = new Options(args);
+
+		what = options.tt; 
+		
+		if (options.eval &&  options.significant1==null ) {
+
+			Results r = evaluate(options.goldfile, options.outfile); 
+
+		} else if (options.significant1!=null && options.significant2!=null ) {
+			
+			System.out.println("compare1 "+options.significant1);
+			System.out.println("compare2 "+options.significant2);
+			System.out.println("gold     "+options.goldfile);
+			
+			check( options.significant1,  options.significant2, options.testfile);
+			
+			Results r1 = evaluate(options.goldfile, options.significant1,false); 
+			
+			System.out.println("file 1 done ");
+			
+			Results r2 = evaluate(options.goldfile, options.significant2,false); 
+			
+			double[] s1 = new double[r1.correctHead.size()]; 
+			double[] s2 = new double[r1.correctHead.size()]; 
+			
+			for(int k=0;k<r1.correctHead.size();k++) {
+				s1[k] = r1.correctHead.get(k);
+				s2[k] = r2.correctHead.get(k);
+			}
+			
+			try {
+				double p = TestUtils.pairedTTest(s1, s2);
+				System.out.print("significant to "+p);
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+			
+//			significant(options.significant1, options.significant2) ;
+
+
+		} else if (options.significant1!=null) {
+			Results r = evaluate(options.goldfile, options.outfile,true); 
+//			significant(options.significant1, options.significant2) ;
+
+		}
+
+
+	}
+
+
+	private static void check(String s1, String s2, String pos) {
+		CONLLReader09 s1reader = new CONLLReader09(s1, -1);
+		SentenceData09 s1i = s1reader.getNext();
+		CONLLReader09 s2reader = new CONLLReader09(s2, -1);
+		SentenceData09 s2i = s2reader.getNext();
+
+
+		HashMap<String,HashMap<String,Integer> > labchanged = new HashMap<String,HashMap<String,Integer> > ();
+
+		int snt =0;
+		
+		while(s1i != null) {
+			
+			snt ++;
+			int good =0,wrong=0;
+			
+			for(int w=1;w<s1i.length();w++) {
+
+				// p(s1:head-pos wrong s2:head-pos good => dep-wrong => dep-good) 
+
+				if (s1i.gpos[s1i.heads[w]].equals(pos) && ! 
+						! s1i.ppos[s1i.heads[w]].equals(s1i.gpos[s1i.heads[w]]) && s2i.ppos[s2i.heads[w]].equals(s2i.gpos[s2i.heads[w]])
+						) {
+					
+					
+					HashMap<String,Integer> changed = labchanged.get(s2i.labels[w]);
+					if (changed ==null) {
+						changed= new HashMap<String,Integer>();
+						labchanged.put(s2i.labels[w], changed);
+					}
+					if (! (s1i.plabels[w].equals(s1i.labels[w]) && s1i.pheads[w] == s1i.heads[w] )&& 
+							(s2i.plabels[w].equals(s2i.labels[w]) && s2i.pheads[w] == s2i.heads[w] ) ) {
+						good ++; 
+						Integer goodL = changed.get("G");
+						if (goodL== null) goodL =0;
+						goodL+=1;
+						changed.put("G", goodL);
+					}
+					else {
+						wrong++;
+						Integer wrongL = changed.get("W");
+						if (wrongL== null) wrongL =0;
+						wrongL+=1;
+						changed.put("W", wrongL);
+					}
+					
+					
+					
+					
+					
+				}
+
+			}
+			
+			if (good!=0 || wrong!=0)
+				System.out.println(snt+" changed yes:"+good+" no:"+wrong);
+			 s1i = s1reader.getNext();
+			 s2i = s2reader.getNext();
+		}
+		System.out.println(""+labchanged);
+		
+	}
+
+
+	/**
+	 * 
+	 * @param act_file
+	 * @param pred_file
+	 * @param what top, pos, length, mor
+	 */
+	public static void evaluateTagger (String act_file,  String pred_file, String what)  {
+
+		
+		CONLLReader09 goldReader = new CONLLReader09(act_file); 
+
+		CONLLReader09 predictedReader = new CONLLReader09();
+		 predictedReader.startReading(pred_file);
+
+		Hashtable<String,Integer> errors = new Hashtable<String,Integer>();
+		Hashtable<String,StringBuffer> words = new Hashtable<String,StringBuffer>();
+
+		int total = 0, numsent = 0, corrT=0;
+		SentenceData09 goldInstance = goldReader.getNext();
+		SentenceData09 predInstance = predictedReader.getNext();
+
+
+		HashMap<Integer,int[]> correctL = new HashMap<Integer,int[]>();
+		HashMap<String,int[]> pos = new HashMap<String,int[]>();
+		HashMap<String,int[]> mor = new HashMap<String,int[]>();
+
+		float correctM = 0, allM=0;;
+		
+		while(goldInstance != null) {
+
+			int instanceLength = goldInstance.length();
+
+			if (instanceLength != predInstance.length())
+				System.out.println("Lengths do not match on sentence "+numsent);
+
+			String gold[] = goldInstance.gpos;
+			String pred[] = predInstance.ppos;
+
+			String goldM[] = goldInstance.ofeats;
+			String predM[] = predInstance.pfeats;
+
+			
+			// NOTE: the first item is the root info added during nextInstance(), so we skip it.
+
+			for (int i = 1; i < instanceLength; i++) {
+				
+				int[] cwr = correctL.get(i);
+				if (cwr ==null) {
+					cwr = new int[2];
+					correctL.put(i, cwr);
+				}
+				cwr[1]++;
+				int[] correctPos = pos.get(gold[i]);
+				if (correctPos==null) {
+					correctPos = new int[2];
+					pos.put(gold[i], correctPos);
+				}
+				correctPos[1]++;
+
+				int[] correctMor = mor.get(goldM[i]);
+				if (correctMor==null) {
+					correctMor = new int[2];
+					mor.put(goldM[i], correctMor);
+				}
+
+				if ((goldM[i].equals("_")&&predM[i]==null) ||  goldM[i].equals(predM[i])) {
+					correctM++;
+					correctMor[0]++;
+				}
+				allM++;
+				correctMor[1]++;
+				
+				if (gold[i].equals(pred[i])) {
+					corrT++;
+					cwr[0]++;
+					correctPos[0]++;
+				} else {
+					String key = "gold: '"+gold[i]+"' pred: '"+pred[i]+"'";
+					Integer cnt = errors.get(key);
+					StringBuffer errWrd = words.get(key);
+					if (cnt==null) {
+						errors.put(key,1);
+						words.put(key, new StringBuffer().append(goldInstance.forms[i]));
+					}
+					else {
+						errors.put(key,cnt+1);		
+						errWrd.append(" "+goldInstance.forms[i]);
+					}
+				}
+				
+				
+			}
+			total += instanceLength - 1; // Subtract one to not score fake root token
+
+			
+			numsent++;
+
+			goldInstance = goldReader.getNext();
+			predInstance = predictedReader.getNext();
+		}
+
+		 
+
+	
+					
+				//	System.out.println("error gold:"+goldPos[i]+" pred:"+predPos[i]+" "+goldInstance.forms[i]+" snt "+numsent+" i:"+i);
+		ArrayList<Entry<String, Integer>> opsl = new ArrayList<Entry<String, Integer>>();
+		for(Entry<String, Integer> e : errors.entrySet()) {
+			opsl.add(e);
+		}
+		
+		Collections.sort(opsl, new Comparator<Entry<String, Integer>>(){
+
+			@Override
+			public int compare(Entry<String, Integer> o1,
+					Entry<String, Integer> o2) {
+				
+				return o1.getValue()==o2.getValue()?0:o1.getValue()>o2.getValue()?-1:1;
+			}
+			
+			
+		});
+			
+		
+		int cnt=0;
+		if (what.contains("top") ) {
+			System.out.println("top most errors:");
+			for(Entry<String, Integer> e : opsl) {
+				cnt++;
+				if(e.getValue()>10) System.out.println(e.getKey()+"  "+e.getValue()+" context: "+words.get(e.getKey()));
+			}
+		}		
+		
+		if (what.contains("length")) {
+			for(int k=0;k<60;k++) {
+				int[] cwr = correctL.get(k);
+				if (cwr == null) continue;
+				System.out.print(k+":"+cwr[0]+":"+cwr[1]+":"+(((float)Math.round(10000*(float)((float)cwr[0])/(float)cwr[1]))/100)+" ");
+			}
+			System.out.println();
+		}
+		
+		if (what.contains("pos")) {
+			for(Entry<String,int[]>  e : pos.entrySet()) {
+				
+				System.out.print(e.getKey()+":"+e.getValue()[0]+":"+e.getValue()[1]+":"+
+				(((float)Math.round(10000*((float)e.getValue()[0])/((float)e.getValue()[1])))/100)+" ");
+				
+			}
+			System.out.print("");
+		}
+		System.out.println();
+		if (what.contains("mor")) {
+			for(Entry<String,int[]>  e : mor.entrySet()) {
+				
+				System.out.print(e.getKey()+":"+e.getValue()[0]+":"+e.getValue()[1]+":"+
+				(((float)Math.round(10000*((float)e.getValue()[0])/((float)e.getValue()[1])))/100)+" ");
+				
+			}
+			System.out.print("");
+		}
+		System.out.println("\nTokens: " + total+" Correct: " + corrT+" "+(float)corrT/total+" Correct M.:"+(int)correctM+ " morphology "+(correctM/total));
+	}
+
+
+	
+
+	public static int errors(SentenceData09 s, boolean uas) {
+
+		int errors =0;
+		for (int k =1;k<s.length();k++) {
+
+			if (s.heads[k] != s.pheads[k] && (uas || ! s.labels[k].equals(s.plabels[k]))) {
+				errors++;
+			}
+		}
+		return errors;
+	}
+
+	public static int errors(SentenceData09 s1, SentenceData09 s2, HashMap<String,Integer> r1,HashMap<String,Integer> r2) {
+
+
+
+		int errors =0;
+		for (int k =1;k<s1.length();k++) {
+
+			if (s1.heads[k] != s1.pheads[k] || (! s1.labels[k].equals(s1.plabels[k]))) {
+
+				if (s2.heads[k] != s2.pheads[k] || (! s2.labels[k].equals(s2.plabels[k]))) {
+
+					// equal do nothing
+
+				} else {
+
+					Integer cnt = r1.get(s1.labels[k]);
+					if (cnt==null) cnt=0;
+					cnt++;
+					r1.put(s1.labels[k],cnt);
+
+
+				}
+
+			}
+
+			if (s2.heads[k] != s2.pheads[k] || (! s2.labels[k].equals(s2.plabels[k]))) {
+
+				if (s1.heads[k] != s1.pheads[k] || (! s1.labels[k].equals(s1.plabels[k]))) {
+
+					// equal do nothing
+
+				} else {
+
+					Integer cnt = r2.get(s2.labels[k]);
+					if (cnt==null) cnt=0;
+					cnt++;
+					r2.put(s2.labels[k],cnt);
+
+
+				}
+
+			}
+		}
+		return errors;
+	}
+
+
+	public static final String PUNCT ="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
+
+	public static class Results {
+
+		public int total;
+		public int corr;
+		public float las;
+		public float ula;
+		public float lpas;
+		public float upla;
+		
+		ArrayList<Double> correctHead;
+	}
+	
+	public static Results evaluate (String act_file,  String pred_file) {
+		return evaluate (act_file,  pred_file,true);
+	}
+	public static Results evaluate (String act_file,  String pred_file, boolean printEval) {
+		return  evaluate ( act_file,   pred_file,  printEval,   false);
+	}
+	
+	
+	public static Results evaluate (String act_file,  String pred_file, boolean printEval, boolean sig) {
+
+		CONLLReader09 goldReader = new CONLLReader09(act_file, -1);
+		CONLLReader09 predictedReader = new CONLLReader09(pred_file, -1);
+
+		int total = 0, corr = 0, corrL = 0, Ptotal=0, Pcorr = 0, PcorrL = 0, BPtotal=0, BPcorr = 0, BPcorrL = 0, corrLableAndPos=0, corrHeadAndPos=0;
+		int corrLableAndPosP=0, corrHeadAndPosP=0,corrLableAndPosC=0;
+		int numsent = 0, corrsent = 0, corrsentL = 0, Pcorrsent = 0, PcorrsentL = 0,sameProj=0;;
+		int proj=0, nonproj=0, pproj=0, pnonproj=0, nonProjOk=0, nonProjWrong=0;
+		
+		int   corrOne = 0;
+		
+		int correctChnWoPunc =0, correctLChnWoPunc=0,CPtotal=0;
+		SentenceData09 goldInstance = goldReader.getNext();
+
+		SentenceData09 predInstance = predictedReader.getNext();
+		HashMap<String,Integer> label = new HashMap<String,Integer>();
+		HashMap<String,Integer> labelCount = new HashMap<String,Integer>();
+		HashMap<String,Integer> labelCorrect = new HashMap<String,Integer>();
+		HashMap<String,Integer> falsePositive = new HashMap<String,Integer>();
+		HashMap<String,HashMap<String,Integer> > confusion = new HashMap<String,HashMap<String,Integer> >();
+
+		HashMap<String,HashMap<String,Integer> > posLabelAssign = new HashMap<String,HashMap<String,Integer> >();
+		
+		// does the node have the correct head?
+		ArrayList<Double> correctHead = new ArrayList<Double>();
+		
+		while(goldInstance != null) {
+
+			int instanceLength = goldInstance.length();
+
+			if (instanceLength != predInstance.length())
+				System.out.println("Lengths do not match on sentence "+numsent);
+
+			int[] goldHeads = goldInstance.heads;
+			
+			String[] goldLabels,predLabels;
+			if (what == TAGGER) {
+				goldLabels= goldInstance.gpos;
+				predLabels= predInstance.ppos;
+			}
+			else {
+				goldLabels = goldInstance.labels ;
+				predLabels = predInstance.plabels ;
+			}
+			
+			
+			int[] predHeads = predInstance.pheads;
+			
+
+			boolean whole = true;
+			boolean wholeL = true;
+
+			boolean Pwhole = true;
+			boolean PwholeL = true;
+
+
+			int tlasS=0, totalS=0,corrLabels=0, XLabels=0;
+
+			// NOTE: the first item is the root info added during nextInstance(), so we skip it.
+
+	
+			
+			int punc=0, bpunc=0,totalChnWoPunc=0;
+			for (int i = 1; i < instanceLength; i++) {
+
+				
+				
+				Parse p = new Parse(predHeads.length);
+				for (int k=0;k<p.heads.length;k++) p.heads[k]=(short) predHeads[k]; 
+
+				Parse g = new Parse(predHeads.length);
+				for (int k=0;k<g.heads.length;k++) g.heads[k]=(short) goldHeads[k]; 
+		
+				 
+
+				HashMap<String,Integer> labelsNum =posLabelAssign.get(goldInstance.gpos[goldInstance.heads[i]]);
+				if (labelsNum== null) {
+					labelsNum = new HashMap<String,Integer>();
+					posLabelAssign.put(goldInstance.gpos[goldInstance.heads[i]], labelsNum);
+				}
+				
+				Integer num = labelsNum.get(goldInstance.labels[i]);
+				if (num==null) num =0;
+				num++;
+				labelsNum.put(goldInstance.labels[i],num);
+				
+				
+				
+					Integer count = labelCount.get(goldLabels[i]);
+					if (count==null)count = 0;
+					
+					count++;
+					
+					labelCount.put(goldLabels[i], count);
+					
+					if(goldLabels[i].equals(predLabels[i]) && (what==TAGGER || predHeads[i] == goldHeads[i] )) { 
+						Integer correct = labelCorrect.get(goldLabels[i]);
+						if (correct ==null) correct =0;
+						correct ++;
+						labelCorrect.put(goldLabels[i], correct);
+						
+					} else {
+						
+						Integer fp = falsePositive.get(predLabels[i]);
+						if (fp ==null) fp =0;
+						fp ++;
+						falsePositive.put(predLabels[i], fp);
+
+						HashMap<String,Integer> conf = confusion.get(goldLabels[i]);
+						if (conf == null) confusion.put(goldLabels[i], conf = new HashMap<String,Integer>());
+						
+						conf.put(predLabels[i], conf.get(predLabels[i])==null?1:conf.get(predLabels[i])+1);
+						
+
+					}
+					
+				
+				
+
+		
+				
+			
+			
+				
+				boolean tlas =false;
+				if (predHeads[i] == goldHeads[i]) {
+					corr++;
+						
+					if (goldInstance.gpos[i].equals(predInstance.ppos[i])) corrHeadAndPos ++;
+					if (goldLabels[i].equals(predLabels[i])) {
+						corrL++;
+				//	if (predLabels[i].startsWith("PMOD")) 
+						corrLabels++; 	
+				//	else correctHead.add(0);
+						if (goldInstance.gpos[i].equals(predInstance.ppos[i])) {
+							tlasS++;
+							tlas=true;
+							corrLableAndPos ++;
+						}
+					}
+					else {
+					//	correctHead.add(0);
+						//		System.out.println(numsent+" error gold "+goldLabels[i]+" "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
+						wholeL = false;
+					}
+				}
+				else { 
+					
+					//correctHead.add(0);
+					
+					//		System.out.println(numsent+"error gold "+goldLabels[i]+" "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
+					whole = false; wholeL = false; 
+					
+					 count = label.get(goldLabels[i]);
+
+					if (count==null)count = 0;
+					count++;
+					label.put(goldLabels[i], count);
+
+
+
+					int d = Math.abs(goldInstance.heads[i]-i);
+				}
+
+
+				if( ! ("!\"#$%&''()*+,-./:;<=>?@[\\]^_{|}~``".contains(goldInstance.forms[i]))) {
+				
+					if (predHeads[i] == goldHeads[i]) {
+						BPcorr++;
+
+						if (goldLabels[i].equals(predLabels[i])) {
+							BPcorrL++;
+						}
+						else {
+							//		System.out.println(numsent+" error gold "+goldLabels[i]+" "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
+						//	PwholeL = false;
+						}
+					} else { 
+						//		System.out.println(numsent+"error gold "+goldLabels[i]+" "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
+						//Pwhole = false; wholeL = false; 
+					}
+
+				} else bpunc++;
+
+				if( ! (",.:''``".contains(goldInstance.forms[i]))) {
+				
+
+					if (predHeads[i] == goldHeads[i]) {
+						if (goldInstance.gpos[i].equals(predInstance.ppos[i])) corrHeadAndPosP ++;
+						Pcorr++;
+
+						if (goldLabels[i].equals(predLabels[i])) {
+							PcorrL++;
+							if (goldInstance.gpos[i].equals(predInstance.ppos[i])) corrLableAndPosP ++;
+
+						}
+						else {
+							//		System.out.println(numsent+" error gold "+goldLabels[i]+" "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
+							PwholeL = false;
+						}
+					} else { 
+						//		System.out.println(numsent+"error gold "+goldLabels[i]+" "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
+						Pwhole = false; PwholeL = false; 
+					}
+
+				} else punc++;
+				
+				
+				if( ! (goldInstance.gpos[i].toLowerCase().startsWith("pu"))) {
+					if (predHeads[i] == goldHeads[i]) {
+						correctChnWoPunc++;
+
+						if (goldLabels[i].equals(predLabels[i])) {
+							correctLChnWoPunc++;
+							if (goldInstance.gpos[i].equals(predInstance.ppos[i])) corrLableAndPosC ++;
+						}
+						else {
+							//		System.out.println(numsent+" error gold "+goldLabels[i]+" "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
+						//	PwholeL = false;
+						}
+					} else { 
+						//		System.out.println(numsent+"error gold "+goldLabels[i]+" "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
+					//	Pwhole = false; PwholeL = false; 
+					}
+
+				} else totalChnWoPunc++;
+
+				
+				if (sig) {
+				if(tlas) System.out.println("1\t");
+				else  System.out.println("0\t");
+				}
+
+			}
+			total += ((instanceLength - 1)); // Subtract one to not score fake root token
+
+			Ptotal += ((instanceLength - 1) - punc);
+			BPtotal += ((instanceLength - 1) - bpunc);
+			CPtotal += ((instanceLength - 1) - totalChnWoPunc);
+			if(whole) corrsent++;
+			if(wholeL) corrsentL++;
+			if(Pwhole) Pcorrsent++;
+			if(PwholeL) PcorrsentL++;
+			numsent++;
+
+			goldInstance = goldReader.getNext();
+			predInstance = predictedReader.getNext();
+			correctHead.add((double) ((double)corrLabels/(instanceLength - 1)));
+		//	System.out.println(""+((double)corrLabels/(instanceLength - 1)));
+		}
+
+		Results r = new Results();
+
+		r.correctHead =correctHead;
+		int  mult=100000, diff=1000;
+
+		r.total = total;
+		r.corr = corr;
+		r.las =(float)Math.round(((double)corrL/total)*mult)/diff;
+		r.ula =(float)Math.round(((double)corr /total)*mult)/diff;
+		r.lpas =(float)Math.round(((double)corrLableAndPos/total)*mult)/diff;
+		r.upla =(float)Math.round(((double)corrHeadAndPos /total)*mult)/diff;
+		float tlasp = (float)Math.round(((double)corrLableAndPosP/Ptotal)*mult)/diff;
+		float tlasc = (float)Math.round(((double)corrLableAndPosC/Ptotal)*mult)/diff;
+
+	//	System.out.print("Total: " + total+" \tCorrect: " + corr+" ");
+		System.out.print(" LAS/Total/UAS/Total: " + r.las+"/" + (double)Math.round(((double)corrsentL/numsent)*mult)/diff+
+				"/" + r.ula+"/" + (double)Math.round(((double)corrsent /numsent)*mult)/diff+" LPAS/UPAS "+r.lpas+"/"+r.upla);
+
+		System.out.println("; without . " + (double)Math.round(((double)PcorrL/Ptotal)*mult)/diff+"/" + 
+				(double)Math.round(((double)PcorrsentL/numsent)*mult)/diff+
+				"/" + (double)Math.round(((double)Pcorr /Ptotal)*mult)/diff+"/" +
+				(double)Math.round(((double)Pcorrsent /numsent)*mult)/diff+" TLAS "+tlasp+
+				" V2 LAS/UAS "+(double)Math.round(((double)BPcorrL/BPtotal)*mult)/diff+
+				"/"+(double)Math.round(((double)BPcorr/BPtotal)*mult)/diff+
+				" CHN LAS/UAS "+(double)Math.round(((double)correctLChnWoPunc/CPtotal)*mult)/diff+
+				"/"+(double)Math.round(((double)correctChnWoPunc/CPtotal)*mult)/diff+" TLAS "+tlasc);
+
+		float precisionNonProj = ((float)nonProjOk)/((float)nonProjOk+nonProjWrong);
+		float recallNonProj = ((float)nonProjOk)/((float)(nonproj));
+		System.out.println("proj "+proj+" nonp "+nonproj+"; predicted proj "+pproj+" non "+pnonproj+"; nonp correct "+
+		nonProjOk+" nonp wrong "+nonProjWrong+
+		" precision=(nonProjOk)/(non-projOk+nonProjWrong): "+precisionNonProj+
+		" recall=nonProjOk/nonproj="+recallNonProj+" F="+(2*precisionNonProj*recallNonProj)/(precisionNonProj+recallNonProj));
+
+		if (!printEval) return r;
+		
+		
+		HashMap<String,Integer> totalX = new HashMap<String,Integer>();
+		HashMap<String,Integer> totalY = new HashMap<String,Integer>();
+		
+		String A=" "; // &
+		System.out.println("label\ttp\tcount\trecall\t\ttp\tfp+tp\tprecision\t F-Score ");
+
+		for(Entry<String, Integer> e : labelCount.entrySet()) {
+		
+			int tp = labelCorrect.get(e.getKey())==null?0:labelCorrect.get(e.getKey()).intValue();
+			Integer count = labelCount.get(e.getKey());
+			int fp = falsePositive.get(e.getKey())==null?0:falsePositive.get(e.getKey()).intValue();
+			System.out.println(e.getKey()+"\t"+tp+"\t"+count+"\t"+roundPercent((float)tp/count)+"\t\t"+tp+"\t"+(fp+tp)+
+					"\t"+roundPercent((float)tp/(fp+tp))+"\t\t"+roundPercent((((float)tp/count))+(float)tp/(fp+tp))/2F); //+totalD
+		}
+	
+		for(Entry<String, HashMap<String, Integer>> e : confusion.entrySet()) {
+			HashMap<String, Integer> values = e.getValue();
+			ArrayList<Entry<String, Integer>> entries = new ArrayList<Entry<String, Integer>>(values.entrySet());
+			Collections.sort(entries, new Comparator<Entry<String, Integer>>() {
+
+				
+
+				@Override
+				public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
+					
+					return o2.getValue().compareTo(o1.getValue());
+				}
+
+			
+			}
+					);
+			
+			
+			System.out.println(e.getKey()+"\t"+entries);
+			
+			
+		}
+		System.out.println(""+posLabelAssign);
+		
+		
+		
+		return r;
+	}
+
+
+	public static float round (double v){
+
+		return Math.round(v*10000F)/10000F;
+	}
+
+	public static float roundPercent (double v){
+
+		return Math.round(v*10000F)/100F;
+	}
+
+
+
+
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/util/ExtractParagraphs.java b/dependencyParser/basic/mate-tools/src/is2/util/ExtractParagraphs.java
new file mode 100644
index 0000000..a9fabca
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/util/ExtractParagraphs.java
@@ -0,0 +1,87 @@
+package is2.util;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.nio.channels.Channels;
+import java.nio.channels.FileChannel;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.util.StringTokenizer;
+
+public class ExtractParagraphs {
+
+	/**
+
+	 * @param args
+	 * @throws IOException
+	 */
+	public static void main(String args[]) throws IOException {
+
+		if (args.length<1) {
+			System.out.println("Please provide a file name.");
+			System.exit(0);
+		}
+		
+		File file = new File(args[0]);
+		file.isDirectory();
+		String[] dirs = file.list();
+	
+		BufferedWriter write = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(args[1]),"UTF-8"),32768);
+		int cnt=0;
+		
+for (String fileName : dirs) {		
+	    BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(args[0]+fileName),"UTF-8"),32768);
+	
+		
+		
+	
+		int state =0;
+	
+		String s;
+		while ((s = reader.readLine()) != null) {
+			
+			if (s.startsWith("<P>")||s.startsWith("<p>")) {
+				state=1; // paragraph start
+				continue;
+			}
+			
+		
+			
+			
+			if (s.startsWith("</P>")||s.startsWith("</p>")) {
+				state=2; // paragraph end
+				write.newLine();
+			}
+			
+			boolean lastNL =false;
+			if (state==1) {
+				String sp[] = s.split("\\. ");
+				for(String p : sp) {
+					write.write(p);
+	//				if (sp.length>1) write.newLine();
+				}
+				cnt++;
+			}
+		}
+		
+		//if (cnt>5000) break;
+		
+		reader.close();
+}
+		write.flush();
+		write.close();
+		
+		System.out.println("Extract "+cnt+" lines ");
+		
+			
+	}
+	
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/util/IntStack.java b/dependencyParser/basic/mate-tools/src/is2/util/IntStack.java
new file mode 100644
index 0000000..e92c02c
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/util/IntStack.java
@@ -0,0 +1,86 @@
+/**
+ * 
+ */
+package is2.util;
+
+
+
+/**
+ * @author Dr. Bernd Bohnet, 01.06.2011
+ * 
+ * 
+ */
+final public class IntStack {
+	
+	final public int[] stack;
+	public int position =-1;
+	
+	public IntStack(int size) {
+		if (size<=0) stack = new int[1];
+		else stack = new int[size+1];
+	}
+
+	public IntStack(IntStack s) {
+		stack=s.stack;
+		position = s.position;
+	}
+
+	
+	public int peek() {
+		return position==-1?-1:stack[position];
+	}
+
+	public void push(int i) {
+	//	if (i ==2)new Exception().printStackTrace();
+		stack[++position]=i;
+	}
+	
+	public int pop() {
+		return position==-1?-1:stack[position--];
+	}
+	
+	public int size() {
+		return position+1;
+	}
+	
+	public boolean isEmpty() {
+		return position==-1?true:false;
+	}
+	
+	public int get(int p) {
+		return stack[p];
+	}
+	
+	public void clear() {
+		position=-1;
+	}
+
+	/**
+	 * @param b
+	 */
+	public void addAll(IntStack b) {
+	
+		position=b.position;
+		if (position<0) return;
+		
+		for(int k=0; k<=position;k++) stack[k]=b.stack[k];
+		
+	}
+
+	public boolean contains(int s) {;
+		
+		for(int k=0; k<=position;k++) 
+			if (stack[k]==s) return true;
+		
+		return false;
+	}
+	
+	public String toString() {
+		StringBuffer s = new StringBuffer();
+		for(int k = position;k>=0;k--) {
+			s.append(k).append(":").append(this.stack[k]).append(" ");
+		}
+		return s.toString();
+	}
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/util/Long2Int.java b/dependencyParser/basic/mate-tools/src/is2/util/Long2Int.java
new file mode 100644
index 0000000..d461df8
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/util/Long2Int.java
@@ -0,0 +1,81 @@
+package is2.util;
+
+import is2.data.Long2IntInterface;
+
+
+/**
+ * @author Bernd Bohnet, 01.09.2009
+ * 
+ * Maps for the Hash Kernel the long values to the int values.
+ */
+final public class Long2Int implements Long2IntInterface {
+
+	
+	public Long2Int() {
+		size=115911564;
+	}
+	
+	
+	public Long2Int(int s) {
+		size=s;
+	}
+	
+	
+	/** Integer counter for long2int */
+	final private int size; //0x03ffffff //0x07ffffff
+	                       
+				
+	/* (non-Javadoc)
+	 * @see is2.sp09k9992.Long2IntIterface#size()
+	 */
+	public  int size() {return size;}
+		
+	/* (non-Javadoc)
+	 * @see is2.sp09k9992.Long2IntIterface#start()
+	 * has no meaning for this implementation
+	 */
+	final public void start() {}
+		
+
+	/* (non-Javadoc)
+	 * @see is2.sp09k9992.Long2IntIterface#l2i(long)
+	 */
+	final public int l2i(long l) {		
+		if (l<0) return -1;
+		
+		// this works well LAS 88.138
+	//	int r= (int)(( l ^ (l&0xffffffff00000000L) >>> 29 ));//0x811c9dc5 ^ // 29
+	//	return Math.abs(r % size);
+		// this works a bit better and good with 0x03ffffff 
+	//	
+		/*
+		long r= l;//26
+		l = (l>>12)&0xfffffffffffff000L;
+		r ^= l;//38
+		l = (l>>11)&0xffffffffffffc000L;
+		r ^= l;//49
+		l = (l>>9)& 0xffffffffffff0000L; //53
+		r ^= l;//58
+		l = (l>>7)&0xfffffffffffc0000L; //62
+		r ^=l;//65
+		int x = (int)r;
+		x = x % size;
+	//	return x >= 0 ? x : -x ;// Math.abs(r % size);
+
+		*/
+		//            26 0x03ffffff
+		// together with 0x07ffffff 27 88.372
+		long r= l;// 27
+		l = (l>>13)&0xffffffffffffe000L;
+		r ^= l;   // 40
+		l = (l>>11)&0xffffffffffff0000L;
+		r ^= l;   // 51
+		l = (l>>9)& 0xfffffffffffc0000L; //53
+		r ^= l;  // 60
+		l = (l>>7)& 0xfffffffffff00000L; //62
+		r ^=l;    //67
+		int x = ((int)r) % size;
+	
+		return x >= 0 ? x : -x ; 
+	}
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/util/Options.java b/dependencyParser/basic/mate-tools/src/is2/util/Options.java
new file mode 100644
index 0000000..5989483
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/util/Options.java
@@ -0,0 +1,129 @@
+package is2.util;
+
+import is2.util.OptionsSuper;
+
+import java.io.File;
+
+
+public final class Options extends OptionsSuper {
+
+	
+
+	public Options (String[] args) {
+		
+		for(int i = 0; i < args.length; i++) {
+			String[] pair = args[i].split(":");
+
+			if (pair[0].equals("--help")) explain();
+			else if (pair[0].equals("-train")) {
+				train = true;
+				trainfile = args[i+1];
+			} else if (pair[0].equals("-eval")) {
+				eval = true;
+				goldfile =args[i+1]; i++;
+			} else if (pair[0].equals("-test")) {
+				test = true;
+				testfile = args[i+1]; i++;
+			} else if (pair[0].equals("-i")) {
+				numIters = Integer.parseInt(args[i+1]); i++;
+			}
+			else if (pair[0].equals("-out")) {
+				outfile = args[i+1]; i++;
+			}
+			else if (pair[0].equals("-decode")) {
+				decodeProjective = args[i+1].equals("proj"); i++;
+			}
+			else if (pair[0].equals("-confidence")) {
+				
+				conf = true;
+			}
+
+			else if (pair[0].equals("-count")) {
+				count = Integer.parseInt(args[i+1]); i++;
+			} else if (pair[0].equals("-model")) {
+				modelName = args[i+1]; i++;
+			} 
+			else if (pair[0].equals("-device")) {
+				device = args[i+1]; i++;
+			} else	if (pair[0].equals("-tmp")) {
+				tmp = args[i+1]; i++;
+			} else if (pair[0].equals("-format")) {
+				//format = args[i+1];
+				formatTask = Integer.parseInt(args[i+1]); i++;
+			} else if (pair[0].equals("-allfeatures")) {
+				allFeatures=true;
+			} else if (pair[0].equals("-nonormalize")) {
+				normalize=false;
+			}else if (pair[0].equals("-nframes")) {
+				//format = args[i+1];
+				nbframes= args[i+1]; i++;
+				 
+			
+			} else if (pair[0].equals("-pframes")) {
+				//format = args[i+1];
+				pbframes= args[i+1]; i++;
+			} else if (pair[0].equals("-nopred")) {
+				nopred =true;	 
+			} else if (pair[0].equals("-divide")) {
+				keep =true;	 
+			} else if (pair[0].equals("-lexicon")) {
+ 				lexicon= args[i+1]; i++;			
+
+			} else super.addOption(args, i);
+			
+		}
+
+		
+		
+
+
+		try {
+			
+			if (trainfile!=null) {
+		
+				if (keep && tmp!=null) {
+					trainforest = new File(tmp);
+					if (!trainforest.exists()) keep=false;
+					
+				} else 
+				if (tmp!=null) {
+					trainforest = File.createTempFile("train", ".tmp", new File(tmp));
+					trainforest.deleteOnExit();
+				}
+				else {
+					trainforest = File.createTempFile("train", ".tmp"); //,new File("F:\\")
+					trainforest.deleteOnExit();
+				}
+				
+				
+			}
+
+	
+		} catch (java.io.IOException e) {
+			System.out.println("Unable to create tmp files for feature forests!");
+			System.out.println(e);
+			System.exit(0);
+		}
+	}
+
+	private void explain() {
+		System.out.println("Usage: ");
+		System.out.println("java -class mate.jar is2.parser.Parser [Options]");
+		System.out.println();
+		System.out.println("Example: ");
+		System.out.println(" java -class mate.jar is2.parser.Parser -model eps3.model -train corpora/conll08st/train/train.closed -test corpora/conll08st/devel/devel.closed  -out b3.test -eval corpora/conll08st/devel/devel.closed  -count 2000 -i 6");
+		System.out.println("");
+		System.out.println("Options:");
+		System.out.println("");
+		System.out.println(" -train  <file>    the corpus a model is trained on; default "+this.trainfile);
+		System.out.println(" -test   <file>    the input corpus for testing; default "+this.testfile);
+		System.out.println(" -out    <file>    the output corpus (result) of a test run; default "+this.outfile);
+		System.out.println(" -model  <file>    the parsing model for traing the model is stored in the files");
+		System.out.println("                   and for parsing the model is load from this file; default "+this.modelName);
+		System.out.println(" -i      <number>  the number of training iterations; good numbers are 10 for smaller corpora and 6 for bigger; default "+this.numIters);
+		System.out.println(" -count  <number>  the n first sentences of the corpus are take for the training default "+this.count);
+		System.out.println(" -format <number>  conll format of the year 8 or 9; default "+this.formatTask);
+		
+		System.exit(0);
+	}
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/util/OptionsSuper.java b/dependencyParser/basic/mate-tools/src/is2/util/OptionsSuper.java
new file mode 100755
index 0000000..0a40f73
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/util/OptionsSuper.java
@@ -0,0 +1,216 @@
+package is2.util;
+
+import is2.io.CONLLReader09;
+
+import java.io.File;
+
+public class OptionsSuper {
+
+	public String trainfile = null;
+	public String testfile = null;
+	public File trainforest = null;
+
+	public String nbframes = null;
+	public String pbframes = null;
+
+	public boolean nopred = false;
+	public boolean upper = false;
+	
+	public boolean train = false;
+	public boolean eval = false;
+	public boolean test = false;
+	public boolean keep = false;
+	public boolean flt = false;
+	public boolean loadTaggerModels =false;
+
+	public String modelName = "prs.mdl";
+	public String modelTaggerName = null;
+	
+	public String useMapping = null;
+	public String device = "C:";
+	public String tmp = null;
+	public boolean createForest = true;
+	public boolean decodeProjective = false;
+	public double decodeTH = 0.3d;
+	public String format = "CONLL";
+	public int formatTask =9;
+	public int numIters = 10;
+	public int best = 1000;
+	public String outfile = "dp.conll";
+	public String charset = "UTF-8";
+	public String phraseTrain = null;
+	public String phraseTest = null;
+	public String goldfile = null;
+	public String gout = "sec23.gld";
+	public String features = null;
+	public String lexicon = null;
+	public int hsize = 0x07ffffff;
+	public int maxLen = 2000;
+	public int maxForms = Integer.MAX_VALUE;
+	public int beam = 4;
+	public float prune = -100000000;
+	
+	public String third ="";
+	public String second ="";
+	public String first ="";
+	
+	public int cross=10;
+	
+	//public boolean secondOrder = true;
+	public boolean useRelationalFeatures = false;
+	public int count = 10000000;
+	public int cores = Integer.MAX_VALUE;
+	public int start = 0;
+	public int minOccureForms = 0;
+	public int tt=30; // tagger averaging
+	public boolean allFeatures =false;
+	public boolean normalize =false;
+	public boolean no2nd =false;
+	public boolean noLemmas=false;
+	public boolean few2nd =false,noLinear=false,noMorph=false;
+	public String clusterFile;
+	
+	// output confidence values
+	public boolean conf =false;
+	public String phraseFormat="penn"; // tiger | penn
+	public boolean average = true;
+	public boolean label =false;
+	public boolean stack=false;
+	public boolean oneRoot = false;
+	
+	public String significant1 =null,significant2 =null;
+
+	
+	// horizontal stacking 
+	public int minLength =0, maxLength =Integer.MAX_VALUE;
+	public boolean overwritegold =false;
+	
+	
+	public static final int MULTIPLICATIVE=1, SHIFT=2;
+	public int featureCreation = MULTIPLICATIVE;
+	
+	
+	public OptionsSuper (String[] args, String dummy) {
+		
+		for(int i = 0; i < args.length; i++) {
+			i = addOption(args,i);
+		}
+				
+	}
+	
+	public OptionsSuper() {}
+	
+	
+	public int  addOption(String args[], int i) {
+
+			if (args[i].equals("-train")) {
+				train = true;
+				trainfile = args[i+1];
+			} else if (args[i].equals("-eval")) {
+				eval = true;
+				goldfile =args[i+1]; i++;
+			} else if (args[i].equals("-gout")) {
+				gout =args[i+1]; i++;
+			} else if (args[i].equals("-test")) {
+				test = true;
+				testfile = args[i+1]; i++;
+			} else if (args[i].equals("-sig1")) {
+				significant1 = args[i+1]; i++;
+			} else if (args[i].equals("-sig2")) {
+				significant2 = args[i+1]; i++;
+			} else if (args[i].equals("-i")) {
+				numIters = Integer.parseInt(args[i+1]); i++;
+			} else if (args[i].equals("-out")) {
+				outfile = args[i+1]; i++;
+			} else if (args[i].equals("-cluster")) {
+				clusterFile = args[i+1]; i++;
+			}
+
+			else if (args[i].equals("-count")) {
+				count = Integer.parseInt(args[i+1]); i++;
+			} else if (args[i].equals("-model")) {
+				modelName = args[i+1]; i++;
+			} else if (args[i].equals("-tmodel")) {
+				this.modelTaggerName = args[i+1]; i++;
+			} else if (args[i].equals("-nonormalize")) {
+				normalize=false;
+			} else if (args[i].equals("-float")) {
+				flt =true;	 
+			} else if (args[i].equals("-hsize")) {
+				hsize= Integer.parseInt(args[i+1]); i++;			
+			} else if (args[i].equals("-charset")) {
+				charset= args[++i]; 			
+			} else if (args[i].equals("-pstrain")) {
+				this.phraseTrain=args[i+1]; i++; 			
+			} else if (args[i].equals("-pstest")) {
+				this.phraseTest=args[i+1]; i++; 			
+			} else if (args[i].equals("-len")) {
+				maxLen= Integer.parseInt(args[i+1]); i++;			
+			} else if (args[i].equals("-cores")) {
+				cores= Integer.parseInt(args[i+1]); i++;			
+			} else if (args[i].equals("-start")) {
+				start= Integer.parseInt(args[i+1]); i++;			
+			} else if (args[i].equals("-max")) {
+				maxLength= Integer.parseInt(args[i+1]); i++;			
+			} else if (args[i].equals("-min")) {
+				minLength= Integer.parseInt(args[i+1]); i++;			
+			} else if (args[i].equals("-noLemmas")) {
+				noLemmas= true;			
+			} else if (args[i].equals("-noavg")) {
+				this.average= false;			
+			} else if (args[i].equals("-label")) {
+				label= true;			
+			} else if (args[i].equals("-stack")) {
+				stack= true;		
+			} else if (args[i].equals("-overwritegold")) {
+				overwritegold = true;		
+			} else if (args[i].equals("-format")) {
+				formatTask = Integer.parseInt(args[++i]);		
+			} else if (args[i].equals("-tt")) {
+				tt = Integer.parseInt(args[++i]);		
+			} else if (args[i].equals("-min-occure-forms")) {
+				minOccureForms = Integer.parseInt(args[++i]);		
+			} else if (args[i].equals("-loadTaggerModels")) {
+				this.loadTaggerModels=true;;
+		
+			} else if (args[i].equals("-feature_creation")) {
+				this.featureCreation = args[++i].equals("shift")?SHIFT:MULTIPLICATIVE;		
+			}
+			
+			return i;
+					
+	}
+
+	@Override
+	public String toString() {
+		StringBuilder sb = new StringBuilder();
+		sb.append("FLAGS [");
+		sb.append("train-file: " + trainfile);
+		sb.append(" | ");
+		sb.append("test-file: " + testfile);
+		sb.append(" | ");
+		sb.append("gold-file: " + goldfile);
+		sb.append(" | ");
+		sb.append("output-file: " + outfile);
+		sb.append(" | ");
+		sb.append("model-name: " + modelName);
+		sb.append(" | ");
+		sb.append("train: " + train);
+		sb.append(" | ");
+		sb.append("test: " + test);
+		sb.append(" | ");
+		sb.append("eval: " + eval);
+		sb.append(" | ");
+		sb.append("training-iterations: " + numIters);
+		sb.append(" | ");
+		sb.append("decode-type: " + decodeProjective);
+		sb.append(" | ");
+		sb.append("create-forest: " + createForest);
+		sb.append(" | ");
+		sb.append("format: " + format);
+	
+		sb.append("]\n");
+		return sb.toString();
+	}
+
+}
\ No newline at end of file
diff --git a/dependencyParser/basic/mate-tools/src/is2/util/ParserEvaluator.java b/dependencyParser/basic/mate-tools/src/is2/util/ParserEvaluator.java
new file mode 100644
index 0000000..260e4b7
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/util/ParserEvaluator.java
@@ -0,0 +1,94 @@
+package is2.util;
+
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+
+
+public class ParserEvaluator {
+
+	
+
+	public static final String PUNCT ="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
+	
+	public static class Results {
+
+		public int total;
+		public int corr;
+		public float las;
+		public float ula;
+		
+	}
+	
+	public static Results evaluate (String act_file,  String pred_file) throws Exception {
+
+		CONLLReader09 goldReader = new CONLLReader09(act_file, -1);
+		CONLLReader09 predictedReader = new CONLLReader09(pred_file, -1);
+
+		int total = 0, corr = 0, corrL = 0;
+		int numsent = 0, corrsent = 0, corrsentL = 0;
+		SentenceData09 goldInstance = goldReader.getNext();
+		SentenceData09 predInstance = predictedReader.getNext();
+
+		while(goldInstance != null) {
+
+			int instanceLength = goldInstance.length();
+
+			if (instanceLength != predInstance.length())
+				System.out.println("Lengths do not match on sentence "+numsent);
+
+			int[] goldHeads = goldInstance.heads;
+			String[] goldLabels = goldInstance.labels;
+			int[] predHeads = predInstance.pheads;
+			String[] predLabels = predInstance.plabels;
+
+			boolean whole = true;
+			boolean wholeL = true;
+
+			// NOTE: the first item is the root info added during nextInstance(), so we skip it.
+
+			int punc=0;
+			for (int i = 1; i < instanceLength; i++) {
+				if (predHeads[i] == goldHeads[i]) {
+					corr++;
+
+					if (goldLabels[i].equals(predLabels[i])) corrL++;
+					else {
+				//		System.out.println(numsent+" error gold "+goldLabels[i]+" "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
+						wholeL = false;
+					}
+				}
+				else { 
+			//		System.out.println(numsent+"error gold "+goldLabels[i]+" "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
+					whole = false; wholeL = false; 
+				}
+			}
+			total += ((instanceLength - 1) - punc); // Subtract one to not score fake root token
+
+			if(whole) corrsent++;
+			if(wholeL) corrsentL++;
+			numsent++;
+
+			goldInstance = goldReader.getNext();
+			predInstance = predictedReader.getNext();
+		}
+		
+		Results r = new Results();
+		
+		r.total = total;
+		r.corr = corr;
+		r.las =(float)Math.round(((double)corrL/total)*100000)/1000;
+		r.ula =(float)Math.round(((double)corr /total)*100000)/1000;
+		System.out.print("Total: " + total+" \tCorrect: " + corr+" ");
+		System.out.println("LAS: " + (double)Math.round(((double)corrL/total)*100000)/1000+" \tTotal: " + (double)Math.round(((double)corrsentL/numsent)*100000)/1000+
+				" \tULA: " + (double)Math.round(((double)corr /total)*100000)/1000+" \tTotal: " + (double)Math.round(((double)corrsent /numsent)*100000)/1000);
+		
+		return r;
+	}
+	
+	
+	public static float round (double v){
+		
+		return Math.round(v*10000F)/10000F;
+	}
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/util/Split.java b/dependencyParser/basic/mate-tools/src/is2/util/Split.java
new file mode 100755
index 0000000..48eadbe
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/util/Split.java
@@ -0,0 +1,94 @@
+package is2.util;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.Reader;
+import java.nio.channels.Channels;
+import java.nio.channels.FileChannel;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.util.StringTokenizer;
+
+public class Split {
+
+	/**
+	 * Splits a tokenized sentences into one word per line format:
+	 *
+	 * Input
+	 * > I am an text .
+	 * > Sentence two ...
+	 * 
+	 * Output:
+	 * I	_	_	_ 	...
+	 * am	_	_	_ 	...
+	 * ...
+	 * 
+	 * @param args
+	 * @throws IOException
+	 */
+	public static void main(String args[]) throws IOException {
+
+		if (args.length!=1) {
+			System.out.println("Please provide a file name.");
+			System.exit(0);
+		}
+		
+		String filename = args[0]; 
+//		Charset charset = Charset.forName("UTF-8");		
+
+		FileInputStream in = new FileInputStream(filename);
+		FileChannel channel = in.getChannel();
+		CharsetDecoder decoder = Charset.defaultCharset().newDecoder();//charset.newDecoder();
+		Reader infile = Channels.newReader(channel , decoder, 16*1024);
+		BufferedReader bInfile = new BufferedReader(infile);
+		
+//		DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(options.modelName)));
+
+	
+		String s;
+		while ((s = bInfile.readLine()) != null) {
+			
+			
+			// do the first tokens contain a colon?
+			int colon =0;
+			for(int k=0;k<12;k++) {
+				if (s.length()<=k) break;
+				if (s.charAt(k) == ':') {
+					
+					colon++;
+					break;
+				}
+				if (s.charAt(k) == ' ') break;	
+			}
+
+			String prefix =colon>0?s.substring(0,s.indexOf(":"))+"_":"";
+			
+			if (colon>0) {
+				s = s.substring(s.indexOf(":")+1);
+			}
+			
+			StringTokenizer t = new StringTokenizer(s);
+			int i=1;
+			boolean found=false;
+			while(t.hasMoreTokens()) {
+				found =true;
+				String tk =t.nextToken();
+				if (tk.contains("=")) continue;
+				System.out.print(prefix+i+"\t");
+				System.out.print(tk);
+				System.out.println("\t_\t_\t_\t_\t_\t_\t_\t_\t_\t_\t_\t_\t_");
+				i++;
+			}
+			if (found) System.out.println();
+			
+		}
+		bInfile.close();
+
+		
+		
+			
+	}
+	
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/util/Split2.java b/dependencyParser/basic/mate-tools/src/is2/util/Split2.java
new file mode 100644
index 0000000..1690a3d
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/util/Split2.java
@@ -0,0 +1,70 @@
+package is2.util;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.nio.channels.Channels;
+import java.nio.channels.FileChannel;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.util.StringTokenizer;
+
+public class Split2 {
+
+	/**
+	 * Splits a tokenized sentences into one word per line format:
+	 *
+	 * Input
+	 * > I am an text .
+	 * > Sentence two ...
+	 * 
+	 * Output:
+	 * I	_	_	_ 	...
+	 * am	_	_	_ 	...
+	 * ...
+	 * 
+	 * @param args
+	 * @throws IOException
+	 */
+	public static void main(String args[]) throws IOException {
+
+		if (args.length<1) {
+			System.out.println("Please provide a file name.");
+			System.exit(0);
+		}
+		
+		
+	    BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(args[0]),"UTF-8"),32768);
+		BufferedWriter write = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(args[1]),"ISO-8859-1"));
+		
+	
+		String s;
+		int cnt=0;
+		while ((s = reader.readLine()) != null) {
+			StringTokenizer t = new StringTokenizer(s);
+			while(t.hasMoreTokens()) {
+				String tk =t.nextToken();
+				for(int c : tk.toCharArray()) {
+					if (c<0 && c>=255) System.out.println("contain sign "+c+" "+cnt);
+				}
+				write.write(tk);
+				write.newLine();
+				cnt++;
+			}
+			write.newLine();
+		}
+		reader.close();
+		write.flush();
+		write.close();
+		
+		
+			
+	}
+	
+	
+}
diff --git a/dependencyParser/basic/mate-tools/src/is2/util/Split3.java b/dependencyParser/basic/mate-tools/src/is2/util/Split3.java
new file mode 100644
index 0000000..03d920c
--- /dev/null
+++ b/dependencyParser/basic/mate-tools/src/is2/util/Split3.java
@@ -0,0 +1,67 @@
+package is2.util;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.nio.channels.Channels;
+import java.nio.channels.FileChannel;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.util.StringTokenizer;
+
+public class Split3 {
+
+	/**
+	 * Splits a tokenized sentences into one word per line format:
+	 *
+	 * Input
+	 * > I am an text .
+	 * > Sentence two ...
+	 * 
+	 * Output:
+	 * I	_	_	_ 	...
+	 * am	_	_	_ 	...
+	 * ...
+	 * 
+	 * @param args
+	 * @throws IOException
+	 */
+	public static void main(String args[]) throws IOException {
+
+		if (args.length<1) {
+			System.out.println("Please provide a file name.");
+			System.exit(0);
+		}
+		
+		
+	    BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(args[0]),"UTF-8"),32768);
+		BufferedWriter write = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(args[1]),"UTF-8"),32768);
+		
+	
+		String s;
+		int cnt=0;
+		while ((s = reader.readLine()) != null) {
+			StringTokenizer t = new StringTokenizer(s);
+			while(t.hasMoreTokens()) {
+				String tk =t.nextToken();
+				write.write(tk);
+				write.newLine();
+				cnt++;
+			}
+			write.newLine();
+		}
+		reader.close();
+		write.flush();
+		write.close();
+		
+		
+			
+	}
+	
+	
+}
diff --git a/dependencyParser/examples/README.txt b/dependencyParser/examples/README.txt
deleted file mode 100644
index c5e773a..0000000
--- a/dependencyParser/examples/README.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-test.csv contains an example input to the parser.
-test.out contains the output generated by the parser given the example as the input.
-d2 output.txt contains the value of the variable d2 printed out just before Decoder.decode is called in Parser.parse given the example as the input.
-is output.txt contains the value of the variable is printed out just before Decoder.decode is called in Parser.parse given the example as the input.
-edges output.txt contains the values of the variables Edges.edges and Edges.def printed out at the end of Parser's constructor given the example as the input.
diff --git a/dependencyParser/examples/d2 output.txt b/dependencyParser/examples/d2 output.txt
deleted file mode 100644
index 4637aa8..0000000
--- a/dependencyParser/examples/d2 output.txt
+++ /dev/null
@@ -1,4023 +0,0 @@
-typesLen = 32
-len = 15
-pl[0][0] = 0.0
-pl[0][1] = 0.0
-pl[0][2] = -0.010866272
-pl[0][3] = -0.043218352
-pl[0][4] = -0.075570434
-pl[0][5] = -0.10792251
-pl[0][6] = 0.038865875
-pl[0][7] = -0.1410935
-pl[0][8] = -0.16593723
-pl[0][9] = -0.18431185
-pl[0][10] = -0.07813574
-pl[0][11] = -0.22914958
-pl[0][12] = -0.26150167
-pl[0][13] = -0.29385376
-pl[0][14] = -0.25755194
-pl[1][0] = 0.0
-pl[1][1] = 0.0
-pl[1][2] = 0.0
-pl[1][3] = -0.06868441
-pl[1][4] = -0.13736881
-pl[1][5] = -0.20605323
-pl[1][6] = 0.0
-pl[1][7] = -0.2864833
-pl[1][8] = -0.057125658
-pl[1][9] = -0.3629666
-pl[1][10] = -0.09364338
-pl[1][11] = -0.48622873
-pl[1][12] = -0.55491316
-pl[1][13] = -0.62359756
-pl[1][14] = -0.2074638
-pl[2][0] = 0.0
-pl[2][1] = 0.0
-pl[2][2] = 0.0
-pl[2][3] = 0.0
-pl[2][4] = -0.05129477
-pl[2][5] = -0.10258954
-pl[2][6] = -0.12634124
-pl[2][7] = -0.1861538
-pl[2][8] = -0.13479765
-pl[2][9] = -0.25604704
-pl[2][10] = -0.09761818
-pl[2][11] = -0.34374037
-pl[2][12] = -0.39503515
-pl[2][13] = -0.44632992
-pl[2][14] = -0.2660829
-pl[3][0] = 0.0
-pl[3][1] = -0.019381773
-pl[3][2] = 0.0
-pl[3][3] = 0.0
-pl[3][4] = 0.0
-pl[3][5] = -0.05129477
-pl[3][6] = -0.084227495
-pl[3][7] = -0.13485903
-pl[3][8] = -0.1083162
-pl[3][9] = -0.20475228
-pl[3][10] = -0.083017066
-pl[3][11] = -0.2924456
-pl[3][12] = -0.34374037
-pl[3][13] = -0.39503515
-pl[3][14] = -0.23725143
-pl[4][0] = 0.0
-pl[4][1] = -0.038763545
-pl[4][2] = -0.022566656
-pl[4][3] = 0.0
-pl[4][4] = 0.0
-pl[4][5] = 0.0
-pl[4][6] = -0.042113747
-pl[4][7] = -0.08356427
-pl[4][8] = -0.08183474
-pl[4][9] = -0.15345752
-pl[4][10] = -0.06841596
-pl[4][11] = -0.24115087
-pl[4][12] = -0.29244563
-pl[4][13] = -0.3437404
-pl[4][14] = -0.20841992
-pl[5][0] = 0.0
-pl[5][1] = -0.05814532
-pl[5][2] = -0.04513331
-pl[5][3] = -0.022566656
-pl[5][4] = 0.0
-pl[5][5] = 0.0
-pl[5][6] = 0.0
-pl[5][7] = -0.032269493
-pl[5][8] = -0.055353288
-pl[5][9] = -0.10216274
-pl[5][10] = -0.05381486
-pl[5][11] = -0.18985608
-pl[5][12] = -0.24115086
-pl[5][13] = -0.29244563
-pl[5][14] = -0.17958842
-pl[6][0] = 0.0
-pl[6][1] = -0.040194526
-pl[6][2] = -0.06450388
-pl[6][3] = -0.043002583
-pl[6][4] = -0.021501292
-pl[6][5] = 0.0
-pl[6][6] = 0.0
-pl[6][7] = 0.0
-pl[6][8] = -0.066330016
-pl[6][9] = -0.073113225
-pl[6][10] = -0.04765781
-pl[6][11] = -0.14876442
-pl[6][12] = -0.20511504
-pl[6][13] = -0.26146567
-pl[6][14] = -0.10682573
-pl[7][0] = 0.0
-pl[7][1] = -0.07608842
-pl[7][2] = -0.069873534
-pl[7][3] = -0.04730688
-pl[7][4] = -0.024740225
-pl[7][5] = -0.0021735686
-pl[7][6] = 0.0
-pl[7][7] = 0.0
-pl[7][8] = 0.0
-pl[7][9] = -0.018598476
-pl[7][10] = -0.030110732
-pl[7][11] = -0.106291816
-pl[7][12] = -0.15758659
-pl[7][13] = -0.20888136
-pl[7][14] = -0.12787816
-pl[8][0] = 0.0
-pl[8][1] = -0.08318254
-pl[8][2] = -0.06289519
-pl[8][3] = -0.047171395
-pl[8][4] = -0.031447597
-pl[8][5] = -0.015723798
-pl[8][6] = -0.0021494746
-pl[8][7] = 0.0
-pl[8][8] = 0.0
-pl[8][9] = 0.0
-pl[8][10] = -0.014698882
-pl[8][11] = -0.12326215
-pl[8][12] = -0.19194657
-pl[8][13] = -0.26063097
-pl[8][14] = -0.06691221
-pl[9][0] = 0.0
-pl[9][1] = -0.10338253
-pl[9][2] = -0.10464167
-pl[9][3] = -0.082075015
-pl[9][4] = -0.05950836
-pl[9][5] = -0.036941703
-pl[9][6] = 0.0
-pl[9][7] = -0.012201479
-pl[9][8] = 0.0
-pl[9][9] = 0.0
-pl[9][10] = 0.0
-pl[9][11] = -0.03639857
-pl[9][12] = -0.08769334
-pl[9][13] = -0.1389881
-pl[9][14] = -0.0852123
-pl[10][0] = 0.0
-pl[10][1] = -0.11613673
-pl[10][2] = -0.035999577
-pl[10][3] = -0.029772816
-pl[10][4] = -0.023546053
-pl[10][5] = -0.017319292
-pl[10][6] = -0.0057317354
-pl[10][7] = -0.011092531
-pl[10][8] = -0.020143617
-pl[10][9] = 0.0
-pl[10][10] = 0.0
-pl[10][11] = 0.0
-pl[10][12] = -0.017717246
-pl[10][13] = -0.035434492
-pl[10][14] = -0.010797325
-pl[11][0] = 0.0
-pl[11][1] = -0.1344459
-pl[11][2] = -0.13636647
-pl[11][3] = -0.11379981
-pl[11][4] = -0.09123316
-pl[11][5] = -0.0686665
-pl[11][6] = 0.0
-pl[11][7] = -0.04392628
-pl[11][8] = -0.031063374
-pl[11][9] = -0.009158145
-pl[11][10] = 0.0
-pl[11][11] = 0.0
-pl[11][12] = 0.0
-pl[11][13] = -0.05129477
-pl[11][14] = -0.05766299
-pl[12][0] = 0.0
-pl[12][1] = -0.15382768
-pl[12][2] = -0.15893313
-pl[12][3] = -0.13636647
-pl[12][4] = -0.11379981
-pl[12][5] = -0.09123316
-pl[12][6] = 0.0
-pl[12][7] = -0.06649294
-pl[12][8] = -0.050445147
-pl[12][9] = -0.0317248
-pl[12][10] = -0.040165026
-pl[12][11] = 0.0
-pl[12][12] = 0.0
-pl[12][13] = 0.0
-pl[12][14] = -0.028831495
-pl[13][0] = 0.0
-pl[13][1] = -0.17320946
-pl[13][2] = -0.1814998
-pl[13][3] = -0.15893313
-pl[13][4] = -0.13636647
-pl[13][5] = -0.11379981
-pl[13][6] = 0.0
-pl[13][7] = -0.08905959
-pl[13][8] = -0.069826916
-pl[13][9] = -0.054291457
-pl[13][10] = -0.08033005
-pl[13][11] = -0.022566656
-pl[13][12] = 0.0
-pl[13][13] = 0.0
-pl[13][14] = 0.0
-pl[14][0] = 0.0
-pl[14][1] = -0.27354294
-pl[14][2] = 0.009959197
-pl[14][3] = -1.7022714E-4
-pl[14][4] = -0.010299649
-pl[14][5] = -0.020429071
-pl[14][6] = -0.08399554
-pl[14][7] = -0.0144728385
-pl[14][8] = -0.11811297
-pl[14][9] = 0.021364588
-pl[14][10] = -0.050320618
-pl[14][11] = 0.020258844
-pl[14][12] = 0.010129422
-pl[14][13] = 0.0
-pl[14][14] = 0.0
-lab[0][0] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
-lab[0][1] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0857121, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[0][2] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.060610943, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.09019457, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[0][3] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.059856206, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.088372804, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[0][4] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.08843574, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.10066992, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[0][5] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.07532123, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.09154862, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[0][6] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.14257567, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.035747826, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.04456647, -100.0]
-lab[0][7] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.08668655, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.07716806, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[0][8] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.048678666, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[0][9] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.11443109, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.075755596, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[0][10] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.064376086, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[0][11] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.067867786, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.10572456, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[0][12] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.07676454, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.07319089, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[0][13] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.15070356, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.092133135, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[0][14] = [-100.0, -100.0, -100.0, -100.0, 0.010659548, -100.0, -100.0, -100.0, -100.0, 0.021760488, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.031423494, -100.0, -0.06268892, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[1][0] = [-100.0, -100.0, -100.0, -100.0, -0.0072993548, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[1][1] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
-lab[1][2] = [-100.0, -100.0, -100.0, -100.0, 0.007805228, 0.06354494, -100.0, -100.0, -0.027950497, -100.0, 0.008368777, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0017291368, -100.0, -100.0, -100.0, 0.012703567, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[1][3] = [-100.0, -100.0, -100.0, -100.0, -0.011061878, -0.033676945, -100.0, -100.0, -0.03869218, -100.0, 0.014225116, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.002365287, -100.0, -100.0, -100.0, 0.0063459743, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[1][4] = [-100.0, -100.0, -100.0, -100.0, -0.0057480163, -0.032733124, -100.0, -100.0, -0.018860167, -100.0, 0.007058848, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0018841489, -100.0, -100.0, -100.0, -7.932577E-4, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[1][5] = [-100.0, -100.0, -100.0, -100.0, -0.008187501, -0.07466402, -100.0, -100.0, -0.04258529, -100.0, 0.012807902, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.004619921, -100.0, -100.0, -100.0, 0.04837003, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[1][6] = [-100.0, -100.0, -100.0, -100.0, -0.0072772917, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[1][7] = [-100.0, -100.0, -100.0, -100.0, -0.0061553996, -0.07721132, -100.0, -100.0, -0.025096273, -100.0, -0.0038240058, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.003359705, -100.0, -100.0, -100.0, 0.124412775, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[1][8] = [-100.0, -100.0, -100.0, -100.0, -0.055956498, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[1][9] = [-100.0, -100.0, -100.0, -100.0, -0.0029725265, -0.096099176, -100.0, -100.0, -0.03457125, -100.0, 0.013646577, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.002417894, -100.0, -100.0, -100.0, 0.048483256, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[1][10] = [-100.0, -100.0, -100.0, -100.0, -0.019577898, -0.05434969, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.011361387, -100.0, -0.016742414, -100.0, -100.0, -100.0, 0.0030374874, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[1][11] = [-100.0, -100.0, -100.0, -100.0, -0.0022678282, -0.05511328, -100.0, -100.0, -0.01873274, -100.0, 0.0031329177, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.006130168, -100.0, -100.0, -100.0, 0.01606226, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[1][12] = [-100.0, -100.0, -100.0, -100.0, 0.0066373865, -0.085802294, -100.0, -100.0, -0.017907545, -100.0, 0.008771209, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0022111083, -100.0, -100.0, -100.0, -0.0019399584, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[1][13] = [-100.0, -100.0, -100.0, -100.0, -0.0061764345, -0.08351106, -100.0, -100.0, -0.013618027, -100.0, -0.0072948383, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.009102309, -100.0, -100.0, -100.0, 0.05033239, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[1][14] = [-100.0, -100.0, -100.0, -100.0, -100.0, -0.051086202, -100.0, -100.0, -100.0, -100.0, -100.0, -0.15393955, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.012258048]
-lab[2][0] = [-100.0, -100.0, -100.0, -100.0, 0.031287532, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[2][1] = [-100.0, -100.0, -100.0, -100.0, 0.019715436, 0.01835772, -100.0, -100.0, -0.021147477, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.021325154, -100.0, -100.0, -100.0, -0.011986047, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.025321336, -100.0, -100.0, -100.0]
-lab[2][2] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
-lab[2][3] = [-100.0, -100.0, -100.0, -100.0, -0.008683903, -0.0071144216, -100.0, -0.07223273, 0.007157893, -100.0, 0.0109011335, -100.0, -0.0032681033, -100.0, -100.0, -0.025956124, -100.0, -0.00907862, -100.0, -100.0, -100.0, -0.005509577, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.007406844, -0.0073494264]
-lab[2][4] = [-100.0, -100.0, -100.0, -100.0, -0.017639821, -0.07690126, -100.0, -7.0552714E-4, -0.043969035, -100.0, 0.011751435, -100.0, -0.002466971, -100.0, -100.0, -0.026199987, -100.0, -0.013000479, -100.0, -100.0, -100.0, 0.0011172746, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.004351847, 0.009639561]
-lab[2][5] = [-100.0, -100.0, -100.0, -100.0, -0.03488801, -0.10307334, -100.0, -0.0684557, 0.020158656, -100.0, -0.006975678, -100.0, -0.012064556, -100.0, -100.0, -0.023857245, -100.0, -0.013141723, -100.0, -100.0, -100.0, 0.0014515971, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.007406844, -0.012931901]
-lab[2][6] = [-100.0, -100.0, -100.0, -100.0, 0.029374115, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.03291245, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[2][7] = [-100.0, -100.0, -100.0, -100.0, -0.06484228, -0.08482167, -100.0, -0.07136143, 0.052072287, -100.0, -0.045210756, -100.0, 0.0022105137, -100.0, -100.0, -0.031402368, -100.0, -0.0041569127, -100.0, -100.0, -100.0, -0.019917594, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.011107417, -0.0064372392]
-lab[2][8] = [-100.0, -100.0, -100.0, -100.0, -0.010947768, -0.16124275, -100.0, -100.0, -0.020897083, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.00955688, -100.0, -100.0, -100.0, 0.017641533, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.01904033, -100.0, -100.0, -100.0]
-lab[2][9] = [-100.0, -100.0, -100.0, -100.0, 0.11203786, 0.08516422, -100.0, -0.067602776, 0.017576952, -100.0, 0.0030263364, -100.0, -7.4397936E-4, -100.0, -100.0, -0.029012637, -100.0, -0.017234312, -100.0, -100.0, -100.0, -0.029723631, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.01241862, -0.013692742]
-lab[2][10] = [-100.0, -100.0, -100.0, -100.0, 0.061739136, -0.06816518, -0.017635567, 0.03411534, 0.027354993, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0042059096, -100.0, -100.0, -100.0, -0.046784803, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[2][11] = [-100.0, -100.0, -100.0, -100.0, 0.0780552, 0.09361959, -100.0, -0.04189497, 0.054181423, -100.0, 0.014132376, -100.0, -0.02349671, -100.0, -100.0, -0.030720538, -100.0, -0.016635802, -100.0, -100.0, -100.0, -0.04262755, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0134480735, -0.009904164]
-lab[2][12] = [-100.0, -100.0, -100.0, -100.0, 0.050173625, 0.12472234, -100.0, 0.02470325, -0.0433001, -100.0, 0.025236022, -100.0, -0.017199075, -100.0, -100.0, -0.036560286, -100.0, -0.0158622, -100.0, -100.0, -100.0, -0.049050692, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.016003763, -0.0027452079]
-lab[2][13] = [-100.0, -100.0, -100.0, -100.0, 0.094317816, 0.09077047, -100.0, -0.04724109, -0.014309814, -100.0, -6.103539E-4, -100.0, -0.007984497, -100.0, -100.0, -0.03456169, -100.0, -0.01148505, -100.0, -100.0, -100.0, -0.0407275, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0090789925, -0.00904469]
-lab[2][14] = [-100.0, -100.0, -100.0, -100.0, 0.13055271, 0.00994876, -100.0, 0.027116202, -0.006811875, -100.0, -100.0, -0.03950805, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.012288794, 0.011942935, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.008141532]
-lab[3][0] = [-100.0, -100.0, -100.0, -100.0, 0.015727764, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[3][1] = [-100.0, -100.0, -100.0, -100.0, 0.026589936, 0.015837692, -100.0, -100.0, -0.018502066, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.013287211, -100.0, -100.0, -100.0, -0.011986047, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.019401088, -100.0, -100.0, -100.0]
-lab[3][2] = [-100.0, -100.0, -100.0, -100.0, -0.07458202, -0.001280698, -100.0, -0.007731626, -0.0056997146, -100.0, -0.014050994, -100.0, -0.020443644, -100.0, -100.0, -0.0304739, -100.0, -0.06522928, -100.0, -100.0, -100.0, -0.009457436, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.004204633, -0.0056973123]
-lab[3][3] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
-lab[3][4] = [-100.0, -100.0, -100.0, -100.0, -0.090102285, -0.08245421, -100.0, 0.20142533, 0.1338391, -100.0, -0.0064666253, -100.0, 0.004834483, -100.0, -100.0, -0.013569326, -100.0, -0.01595074, -100.0, -100.0, -100.0, -0.026188968, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0026644845, -0.008290936]
-lab[3][5] = [-100.0, -100.0, -100.0, -100.0, -0.048254117, -0.11579309, -100.0, 0.1175178, 0.11143502, -100.0, -0.004636286, -100.0, 1.8035388E-4, -100.0, -100.0, -0.014182787, -100.0, -0.01650513, -100.0, -100.0, -100.0, -0.007539835, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0017236789, -0.0094553]
-lab[3][6] = [-100.0, -100.0, -100.0, -100.0, 0.025279988, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.010607917, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[3][7] = [-100.0, -100.0, -100.0, -100.0, 0.015750844, -0.13357572, -100.0, -0.028501447, -0.044795267, -100.0, -0.043282006, -100.0, 0.0054771937, -100.0, -100.0, -0.017991487, -100.0, -0.009471957, -100.0, -100.0, -100.0, -0.027596768, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.006738336, -0.0046989387]
-lab[3][8] = [-100.0, -100.0, -100.0, -100.0, 0.04237008, -0.105790615, -100.0, -100.0, -1.0734936E-4, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.005038883, -100.0, -100.0, -100.0, -0.023716997, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.022824557, -100.0, -100.0, -100.0]
-lab[3][9] = [-100.0, -100.0, -100.0, -100.0, 0.08682765, -0.007630133, -100.0, 0.058125526, -0.0100971535, -100.0, -0.010686963, -100.0, -0.004728324, -100.0, -100.0, -0.021554107, -100.0, -0.023323614, -100.0, -100.0, -100.0, -0.040496103, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0063773906, -0.00847455]
-lab[3][10] = [-100.0, -100.0, -100.0, -100.0, 0.11950284, -0.036674343, -0.020355824, 0.049630567, -0.018184561, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.010001851, -100.0, -100.0, -100.0, -0.024856072, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[3][11] = [-100.0, -100.0, -100.0, -100.0, 0.17998444, -0.045073137, -100.0, -0.011935525, -0.12302958, -100.0, -8.2165695E-4, -100.0, -0.015568759, -100.0, -100.0, -0.023021586, -100.0, -0.021753242, -100.0, -100.0, -100.0, -0.04285603, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0020304294, -0.0046989387]
-lab[3][12] = [-100.0, -100.0, -100.0, -100.0, 0.19373284, 0.035355195, -100.0, 0.061362393, -0.13824204, -100.0, 0.01226894, -100.0, -0.011150414, -100.0, -100.0, -0.023918848, -100.0, -0.013573138, -100.0, -100.0, -100.0, -0.04558915, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0111303255, -0.0065263407]
-lab[3][13] = [-100.0, -100.0, -100.0, -100.0, 0.22340338, -0.010336123, -100.0, -0.004239533, -0.092604324, -100.0, -0.009156614, -100.0, -0.0033510108, -100.0, -100.0, -0.021037031, -100.0, -0.0128913205, -100.0, -100.0, -100.0, -0.03615597, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0030377628, -0.0064372392]
-lab[3][14] = [-100.0, -100.0, -100.0, -100.0, 0.09862638, -0.003327651, -100.0, 0.010758149, -0.02587586, -100.0, -100.0, -0.09787384, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0065550525, 0.02006538, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.008141532]
-lab[4][0] = [-100.0, -100.0, -100.0, -100.0, 6.7530514E-4, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[4][1] = [-100.0, -100.0, -100.0, -100.0, 0.03028285, 0.009687788, -100.0, -100.0, -0.026619883, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020499956, -100.0, -100.0, -100.0, -0.012858687, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.018374441, -100.0, -100.0, -100.0]
-lab[4][2] = [-100.0, -100.0, -100.0, -100.0, -0.030117743, -0.0038273223, -100.0, -0.007731626, 0.0012443475, -100.0, -0.018306747, -100.0, -0.024662271, -100.0, -100.0, -0.025412116, -100.0, -0.060929243, -100.0, -100.0, -100.0, -0.0025727116, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.016990807, 0.0040139747]
-lab[4][3] = [-100.0, -100.0, -100.0, -100.0, 0.04373014, -0.017481847, -100.0, -0.007979904, -4.2995065E-4, -100.0, -0.011803215, -100.0, -0.020359626, -100.0, -100.0, -0.015568075, -100.0, -0.06102489, -100.0, -100.0, -100.0, -0.004197329, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.032539077, -0.0020389904]
-lab[4][4] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
-lab[4][5] = [-100.0, -100.0, -100.0, -100.0, -0.09336954, -0.11855941, -100.0, 0.08626966, 0.23081473, -100.0, -0.012153118, -100.0, 0.0037080436, -100.0, -100.0, -0.019139193, -100.0, -0.01388609, -100.0, -100.0, -100.0, -0.005913306, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0017236789, -0.0064372392]
-lab[4][6] = [-100.0, -100.0, -100.0, -100.0, 0.042744786, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.02801525, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[4][7] = [-100.0, -100.0, -100.0, -100.0, -0.010518864, -0.13629837, -100.0, -0.052703075, 0.038320504, -100.0, -0.03710283, -100.0, 0.006216524, -100.0, -100.0, -0.015964117, -100.0, -0.008941913, -100.0, -100.0, -100.0, -0.02213252, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.006738336, -0.0046989387]
-lab[4][8] = [-100.0, -100.0, -100.0, -100.0, 0.051309794, -0.09528896, -100.0, -100.0, 0.016631264, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.01614249, -100.0, -100.0, -100.0, -0.008856785, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020097349, -100.0, -100.0, -100.0]
-lab[4][9] = [-100.0, -100.0, -100.0, -100.0, 0.058439884, -0.010352795, -100.0, 0.030757695, 0.0748779, -100.0, -0.0067891935, -100.0, 0.0015209867, -100.0, -100.0, -0.020485468, -100.0, -0.022793567, -100.0, -100.0, -100.0, -0.032615256, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0063773906, -0.00847455]
-lab[4][10] = [-100.0, -100.0, -100.0, -100.0, 0.11859293, -0.040470853, -0.014690354, 0.02903986, -0.011157115, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.021043513, -100.0, -100.0, -100.0, -0.031460863, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[4][11] = [-100.0, -100.0, -100.0, -100.0, 0.15236738, -0.047795787, -100.0, -0.03789837, -0.039913785, -100.0, 0.0011355523, -100.0, -0.006762338, -100.0, -100.0, -0.024428759, -100.0, -0.021223197, -100.0, -100.0, -100.0, -0.03739178, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.007406844, -0.0046989387]
-lab[4][12] = [-100.0, -100.0, -100.0, -100.0, 0.17069574, 0.011971382, -100.0, 0.04367266, -0.061951343, -100.0, 0.0017905473, -100.0, -0.0069729253, -100.0, -100.0, -0.017813757, -100.0, -0.016009092, -100.0, -100.0, -100.0, -0.0404248, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.004485974, -0.0065263407]
-lab[4][13] = [-100.0, -100.0, -100.0, -100.0, 0.24953745, -0.0031109904, -100.0, -0.036849722, -0.01940545, -100.0, -0.014683241, -100.0, 0.0021319445, -100.0, -100.0, -0.019291952, -100.0, -0.020483337, -100.0, -100.0, -100.0, -0.03292536, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0030377628, -0.007985065]
-lab[4][14] = [-100.0, -100.0, -100.0, -100.0, 0.07949358, -0.009257822, -100.0, 0.009853234, -0.022547951, -100.0, -100.0, -0.10290189, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.008654622, 0.030426882, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.01004408]
-lab[5][0] = [-100.0, -100.0, -100.0, -100.0, 0.007786015, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[5][1] = [-100.0, -100.0, -100.0, -100.0, 0.02771602, 0.028148944, -100.0, -100.0, -0.018647132, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020499956, -100.0, -100.0, -100.0, -0.011986047, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.019807553, -100.0, -100.0, -100.0]
-lab[5][2] = [-100.0, -100.0, -100.0, -100.0, -0.034447014, -0.0032718359, -100.0, -0.007979904, -0.008797215, -100.0, -0.015350549, -100.0, -0.021705361, -100.0, -100.0, -0.025106095, -100.0, -0.06388942, -100.0, -100.0, -100.0, -0.008526931, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.012114166, -0.0025690359]
-lab[5][3] = [-100.0, -100.0, -100.0, -100.0, 0.02968784, -9.501487E-4, -100.0, -0.007731626, -0.001721808, -100.0, -0.012374148, -100.0, -0.020352686, -100.0, -100.0, -0.02302433, -100.0, -0.05969121, -100.0, -100.0, -100.0, -0.0029919485, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.021506028, 9.690776E-4]
-lab[5][4] = [-100.0, -100.0, -100.0, -100.0, 0.0413489, -0.0037748502, -100.0, -0.009773591, 0.015026659, -100.0, -0.003453567, -100.0, -0.01806766, -100.0, -100.0, -0.015624217, -100.0, -0.06542269, -100.0, -100.0, -100.0, -0.011077607, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.015954167, -0.00413757]
-lab[5][5] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
-lab[5][6] = [-100.0, -100.0, -100.0, -100.0, 0.009874955, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0063589364, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[5][7] = [-100.0, -100.0, -100.0, -100.0, -0.013725653, -0.09517634, -100.0, -0.032420676, 0.056893967, -100.0, -0.035141923, -100.0, 0.01755903, -100.0, -100.0, -0.025872728, -100.0, -0.0060505494, -100.0, -100.0, -100.0, -0.029148407, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.006738336, -0.0057169683]
-lab[5][8] = [-100.0, -100.0, -100.0, -100.0, 0.043727666, -0.13072446, -100.0, -100.0, 0.010142995, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.01695753, -100.0, -100.0, -100.0, -0.0043309685, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.021955507, -100.0, -100.0, -100.0]
-lab[5][9] = [-100.0, -100.0, -100.0, -100.0, 0.046453465, 0.0113611175, -100.0, 0.038369372, 0.10987423, -100.0, -0.014727177, -100.0, 0.0025815582, -100.0, -100.0, -0.023696663, -100.0, -0.020068578, -100.0, -100.0, -100.0, -0.04906127, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0063773906, -0.006955822]
-lab[5][10] = [-100.0, -100.0, -100.0, -100.0, 0.11681521, -0.041773185, -0.014802043, 0.02339334, 0.0023333384, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.025621016, -100.0, -100.0, -100.0, -0.035384513, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[5][11] = [-100.0, -100.0, -100.0, -100.0, 0.12570891, -0.016102754, -100.0, -0.024745505, -0.0016095638, -100.0, -0.0036058084, -100.0, -0.009599689, -100.0, -100.0, -0.025307972, -100.0, -0.023301505, -100.0, -100.0, -100.0, -0.051421203, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.007406844, -0.0046989387]
-lab[5][12] = [-100.0, -100.0, -100.0, -100.0, 0.14795728, 0.02616579, -100.0, 0.066588216, -0.0341523, -100.0, -9.7153184E-5, -100.0, -0.0046272306, -100.0, -100.0, -0.022008631, -100.0, -0.015033025, -100.0, -100.0, -100.0, -0.055872314, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.009962534, -0.0065263407]
-lab[5][13] = [-100.0, -100.0, -100.0, -100.0, 0.22414888, 0.0060834433, -100.0, -0.008835591, 0.01732592, -100.0, -0.018156439, -100.0, 8.6487085E-4, -100.0, -100.0, -0.023486823, -100.0, -0.020483337, -100.0, -100.0, -100.0, -0.04710021, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0030377628, -0.0064372392]
-lab[5][14] = [-100.0, -100.0, -100.0, -100.0, 0.08878266, -0.009180344, -100.0, 0.006302624, -0.018893935, -100.0, -100.0, -0.09531936, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.010326847, 0.029544532, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.008141532]
-lab[6][0] = [-100.0, -100.0, -100.0, -100.0, 0.023033261, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[6][1] = [-100.0, -100.0, -100.0, -100.0, 0.20864604, -0.05089548, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.03976683, -100.0, -100.0, -100.0, -100.0, -100.0, -0.02282291, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[6][2] = [-100.0, -100.0, -100.0, -100.0, 0.12736312, -100.0, -0.038424324, -100.0, -100.0, -100.0, 0.13986121, -100.0, -0.012428051, -100.0, -100.0, -0.05530557, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0043633413, -100.0]
-lab[6][3] = [-100.0, -100.0, -100.0, -100.0, -0.0046778144, -100.0, 0.1888846, -100.0, -100.0, -100.0, -0.0020437245, -100.0, -0.013033396, -100.0, -100.0, -0.056855615, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0037650405, -100.0]
-lab[6][4] = [-100.0, -100.0, -100.0, -100.0, 0.007994813, -100.0, 0.1550787, -100.0, -100.0, -100.0, -0.0059514716, -100.0, 0.011946373, -100.0, -100.0, -0.06274183, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0023011658, -100.0]
-lab[6][5] = [-100.0, -100.0, -100.0, -100.0, 0.0034305025, -100.0, 0.12060462, -100.0, -100.0, -100.0, 6.3503464E-4, -100.0, 0.0068051666, -100.0, -100.0, -0.051002603, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0055534686, -100.0]
-lab[6][6] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
-lab[6][7] = [-100.0, -100.0, -100.0, -100.0, 0.024960238, -100.0, 0.05161933, -100.0, -100.0, -100.0, 0.21018952, -100.0, 0.022909997, -100.0, -100.0, 0.0025447046, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0024014926, -100.0]
-lab[6][8] = [-100.0, -100.0, -100.0, -100.0, 0.034076728, 0.13676485, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.009304508, -100.0, -100.0, -100.0, -100.0, -100.0, 7.967291E-4, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[6][9] = [-100.0, -100.0, -100.0, -100.0, -0.07555324, -100.0, 0.09267018, -100.0, -100.0, -100.0, 0.04892666, -100.0, 0.038491517, -100.0, -100.0, 0.027027639, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.009365095, -100.0]
-lab[6][10] = [-100.0, -100.0, -100.0, -100.0, 0.017195653, 0.0024830988, 0.03209228, -100.0, -100.0, -100.0, -0.04074017, -100.0, -0.03358294, -100.0, -100.0, 0.06644424, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[6][11] = [-100.0, -100.0, -100.0, -100.0, 0.013968601, -100.0, 0.04216479, -100.0, -100.0, -100.0, 0.047949035, -100.0, 0.039137743, -100.0, -100.0, -0.01925468, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.016810946, -100.0]
-lab[6][12] = [-100.0, -100.0, -100.0, -100.0, 0.014872201, -100.0, 0.04419685, -100.0, -100.0, -100.0, 0.12845795, -100.0, 0.0055937013, -100.0, -100.0, -0.028737731, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.006175855, -100.0]
-lab[6][13] = [-100.0, -100.0, -100.0, -100.0, -0.056315172, -100.0, 0.04807967, -100.0, -100.0, -100.0, 0.118796006, -100.0, 0.06304423, -100.0, -100.0, -0.0020268823, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.011274287, -100.0]
-lab[6][14] = [-100.0, -100.0, -100.0, -100.0, 0.037810247, 0.069284454, 0.010218109, -100.0, -100.0, -100.0, 0.042182103, -0.016194848, 0.0046266606, -100.0, 0.018700384, 0.024961736, -100.0, -100.0, -100.0, -100.0, 0.019210849, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.019267486, -0.008150559]
-lab[7][0] = [-100.0, -100.0, -100.0, -100.0, 0.0020415904, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[7][1] = [-100.0, -100.0, -100.0, -100.0, 0.048857834, 0.024895584, -100.0, -100.0, -0.016711766, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020600632, -100.0, -100.0, -100.0, -0.0146774035, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.019822594, -100.0, -100.0, -100.0]
-lab[7][2] = [-100.0, -100.0, -100.0, -100.0, -0.06337702, -0.0052916403, -100.0, -0.007072131, -0.005676318, -100.0, -0.012953629, -100.0, -0.019245291, -100.0, -100.0, -0.028318094, -100.0, -0.067467794, -100.0, -100.0, -100.0, -0.0020377673, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.009418382, -0.00918054]
-lab[7][3] = [-100.0, -100.0, -100.0, -100.0, -0.008698676, -0.0031118554, -100.0, -0.00723242, -0.007731178, -100.0, -0.013173097, -100.0, -0.019161275, -100.0, -100.0, -0.024943981, -100.0, -0.060471296, -100.0, -100.0, -100.0, -0.0037860493, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020058166, -0.00875127]
-lab[7][4] = [-100.0, -100.0, -100.0, -100.0, 0.002013328, 1.0998105E-4, -100.0, -0.01068812, 0.014536993, -100.0, -0.016048206, -100.0, -0.018137963, -100.0, -100.0, -0.01768755, -100.0, -0.06665342, -100.0, -100.0, -100.0, -0.01007092, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.012615616, -0.009968513]
-lab[7][5] = [-100.0, -100.0, -100.0, -100.0, 0.0070634056, 0.0023023428, -100.0, -0.008646155, 0.0076258294, -100.0, -0.0068513555, -100.0, -0.016451048, -100.0, -100.0, -0.023988038, -100.0, -0.06636638, -100.0, -100.0, -100.0, -0.004222147, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0097232275, -0.0076227635]
-lab[7][6] = [-100.0, -100.0, -100.0, -100.0, -0.031167299, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.027433395, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[7][7] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
-lab[7][8] = [-100.0, -100.0, -100.0, -100.0, 0.0049104257, -0.14811467, -100.0, -100.0, -0.0015818988, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.018902455, -100.0, -100.0, -100.0, 0.0035807902, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.007338235, -100.0, -100.0, -100.0]
-lab[7][9] = [-100.0, -100.0, -100.0, -100.0, 0.06587316, 0.14371991, -100.0, -0.049351946, -0.04048246, -100.0, 0.011947182, -100.0, -6.2810676E-4, -100.0, -100.0, -0.01602333, -100.0, -0.022502404, -100.0, -100.0, -100.0, -0.053128764, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.020960134, -0.0073063895]
-lab[7][10] = [-100.0, -100.0, -100.0, -100.0, 0.009259071, -0.076612204, -0.020510068, 0.044047967, 0.0503408, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.017946027, -100.0, -100.0, -100.0, -0.036746453, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[7][11] = [-100.0, -100.0, -100.0, -100.0, 0.037588913, 0.10905088, -100.0, -0.030460993, 0.003721512, -100.0, 0.006805576, -100.0, -0.012384878, -100.0, -100.0, -0.014599603, -100.0, -0.026002733, -100.0, -100.0, -100.0, -0.07514333, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.020023372, -0.005568089]
-lab[7][12] = [-100.0, -100.0, -100.0, -100.0, -0.003176908, 0.1564925, -100.0, 0.08989608, -0.021242943, -100.0, 0.010067976, -100.0, -0.013922423, -100.0, -100.0, -0.02416636, -100.0, -0.024662182, -100.0, -100.0, -100.0, -0.07240346, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.023381695, -0.00648179]
-lab[7][13] = [-100.0, -100.0, -100.0, -100.0, 0.051657975, 0.13402489, -100.0, 0.020865025, 0.013104109, -100.0, -0.0068195877, -100.0, -0.011332986, -100.0, -100.0, -0.019492686, -100.0, -0.026033364, -100.0, -100.0, -100.0, -0.066130616, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.016456924, -0.0073063895]
-lab[7][14] = [-100.0, -100.0, -100.0, -100.0, 0.08149053, -3.2838946E-4, -100.0, 0.025150903, -0.01035606, -100.0, -100.0, -0.0402803, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.01197523, 0.018398318, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.008141532]
-lab[8][0] = [-100.0, -100.0, -100.0, -100.0, -0.010298952, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[8][1] = [-100.0, -100.0, -100.0, -100.0, 0.07720715, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[8][2] = [-100.0, -100.0, -100.0, -100.0, -0.009475322, -0.020047832, -100.0, -100.0, -0.029767666, -100.0, -0.023018487, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.07760017, -100.0, -100.0, -100.0, -0.0069597554, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[8][3] = [-100.0, -100.0, -100.0, -100.0, -0.0177695, -0.01584079, -100.0, -100.0, -0.034220427, -100.0, -0.024995474, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.06809402, -100.0, -100.0, -100.0, -0.0069597554, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[8][4] = [-100.0, -100.0, -100.0, -100.0, -0.016846146, -0.017320994, -100.0, -100.0, -0.030368356, -100.0, -0.023107952, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.07637689, -100.0, -100.0, -100.0, -0.009199989, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[8][5] = [-100.0, -100.0, -100.0, -100.0, -0.019849148, -0.016790282, -100.0, -100.0, -0.0298011, -100.0, -0.026457291, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.06959498, -100.0, -100.0, -100.0, -0.009199989, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[8][6] = [-100.0, -100.0, -100.0, -100.0, -0.0316555, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[8][7] = [-100.0, -100.0, -100.0, -100.0, -0.03086719, -0.012185813, -100.0, -100.0, -0.028345747, -100.0, -0.031858526, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.080215685, -100.0, -100.0, -100.0, -0.010004969, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[8][8] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
-lab[8][9] = [-100.0, -100.0, -100.0, -100.0, 0.024622455, -0.04244198, -100.0, -100.0, -0.0021945783, -100.0, -0.0017560016, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.01365146, -100.0, -100.0, -100.0, 0.034700513, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[8][10] = [-100.0, -100.0, -100.0, -100.0, -0.0067202644, 0.010890665, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.012986096, -100.0, 0.025612151, -100.0, -100.0, -100.0, -0.009904071, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[8][11] = [-100.0, -100.0, -100.0, -100.0, 0.0264671, -0.084497094, -100.0, -100.0, 0.011075877, -100.0, -0.008343452, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.017636344, -100.0, -100.0, -100.0, 0.00929617, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[8][12] = [-100.0, -100.0, -100.0, -100.0, 0.028509734, -0.105624385, -100.0, -100.0, 0.0039734393, -100.0, -3.0099647E-4, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.009284925, -100.0, -100.0, -100.0, -0.025048574, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[8][13] = [-100.0, -100.0, -100.0, -100.0, 0.022118228, -0.066294305, -100.0, -100.0, 0.011478871, -100.0, -0.024278225, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.021096548, -100.0, -100.0, -100.0, 0.037493646, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[8][14] = [-100.0, -100.0, -100.0, -100.0, -100.0, -0.016817383, -100.0, -100.0, -100.0, -100.0, -100.0, -0.13833265, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.012782506]
-lab[9][0] = [-100.0, -100.0, -100.0, -100.0, 4.385016E-4, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[9][1] = [-100.0, -100.0, -100.0, -100.0, 0.030603452, 0.019662967, -100.0, -100.0, -0.026710683, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020499956, -100.0, -100.0, -100.0, -0.011986047, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.019753616, -100.0, -100.0, -100.0]
-lab[9][2] = [-100.0, -100.0, -100.0, -100.0, -0.060118802, -0.00852822, -100.0, -0.0085925935, 0.0017758107, -100.0, -0.0132168485, -100.0, -0.022021595, -100.0, -100.0, -0.026063943, -100.0, -0.06923627, -100.0, -100.0, -100.0, -0.0060219583, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.013042967, -0.011748734]
-lab[9][3] = [-100.0, -100.0, -100.0, -100.0, -0.005694381, -0.0072280634, -100.0, -0.010656882, 9.6388E-4, -100.0, -0.010890223, -100.0, -0.020138862, -100.0, -100.0, -0.02506855, -100.0, -0.06293549, -100.0, -100.0, -100.0, -0.0031594145, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.022359546, -0.012946464]
-lab[9][4] = [-100.0, -100.0, -100.0, -100.0, 0.012697235, -0.0040062284, -100.0, -0.012450568, 0.023232052, -100.0, -0.01436099, -100.0, -0.019115552, -100.0, -100.0, -0.017668435, -100.0, -0.06911761, -100.0, -100.0, -100.0, -0.011040136, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.014916998, -0.012959486]
-lab[9][5] = [-100.0, -100.0, -100.0, -100.0, 0.003959284, -0.005127607, -100.0, -0.012003781, 0.02289455, -100.0, -0.0071145743, -100.0, -0.019540751, -100.0, -100.0, -0.02506855, -100.0, -0.06379605, -100.0, -100.0, -100.0, -0.00631301, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.017563405, -0.014828853]
-lab[9][6] = [-100.0, -100.0, -100.0, -100.0, -0.019865207, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020328699, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[9][7] = [-100.0, -100.0, -100.0, -100.0, -0.033953886, -0.0018636595, -100.0, -0.007731626, -3.6249845E-4, -100.0, -0.007401729, -100.0, -0.02232414, -100.0, -100.0, -0.03200184, -100.0, -0.073828295, -100.0, -100.0, -100.0, -0.0077059413, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.012270593, -0.011864145]
-lab[9][8] = [-100.0, -100.0, -100.0, -100.0, 0.03954214, -0.0033379826, -100.0, -100.0, -0.0149728265, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.022576116, -100.0, -100.0, -100.0, -0.016223626, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.013277006, -100.0, -100.0, -100.0]
-lab[9][9] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
-lab[9][10] = [-100.0, -100.0, -100.0, -100.0, 0.20875499, -0.06758808, -0.01329644, 0.021231992, 0.074203275, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.010264425, -100.0, -100.0, -100.0, -0.040378038, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[9][11] = [-100.0, -100.0, -100.0, -100.0, 0.11447072, 0.016000146, -100.0, 0.12571457, 0.10625105, -100.0, 0.004082323, -100.0, -0.0062507754, -100.0, -100.0, -0.01677507, -100.0, -0.018420275, -100.0, -100.0, -100.0, -0.058186896, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0071156574, 0.002163982]
-lab[9][12] = [-100.0, -100.0, -100.0, -100.0, 0.032018445, 0.024125308, -100.0, 0.2455853, 0.056142658, -100.0, -0.0011152485, -100.0, -0.002792284, -100.0, -100.0, -0.02547044, -100.0, -0.015865061, -100.0, -100.0, -100.0, -0.06419294, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.010473982, -0.00648179]
-lab[9][13] = [-100.0, -100.0, -100.0, -100.0, 0.11447777, 6.697993E-4, -100.0, 0.16682132, 0.09476111, -100.0, -0.02744541, -100.0, 0.0057364157, -100.0, -100.0, -0.025195219, -100.0, -0.021623705, -100.0, -100.0, -100.0, -0.056456704, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 4.941136E-4, -0.00817554]
-lab[9][14] = [-100.0, -100.0, -100.0, -100.0, 0.10525579, -0.008929347, -100.0, 0.03029225, -0.01102661, -100.0, -100.0, -0.07904691, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0047041643, 0.02301877, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.008141532]
-lab[10][0] = [-100.0, -100.0, -100.0, -100.0, -9.267228E-4, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[10][1] = [-100.0, -100.0, -100.0, -100.0, 0.086413674, 8.654366E-4, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.013165251, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.017005188, -100.0, -100.0, -100.0]
-lab[10][2] = [-100.0, -100.0, -100.0, -100.0, -0.022829698, -0.0071389154, -0.029467646, -0.004115135, -0.018250464, -100.0, -0.018737962, -100.0, -0.0094045475, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0066792443, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[10][3] = [-100.0, -100.0, -100.0, -100.0, -0.024376234, -0.0060840566, -0.040475503, -0.0011310256, -0.012411635, -100.0, -0.021031396, -100.0, -0.009896848, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0076555787, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[10][4] = [-100.0, -100.0, -100.0, -100.0, -0.019265706, -0.0060840566, -0.044232056, -0.004807427, -0.018619878, -100.0, -0.013958687, -100.0, -0.010507663, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0076555787, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[10][5] = [-100.0, -100.0, -100.0, -100.0, -0.02919563, -0.0060840566, -0.04374403, -0.002909442, -0.012196044, -100.0, -0.01655533, -100.0, -0.011610778, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0076555787, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[10][6] = [-100.0, -100.0, -100.0, -100.0, -0.014946022, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.026508257, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[10][7] = [-100.0, -100.0, -100.0, -100.0, -0.031692307, -0.007922365, -0.023501813, -0.0058935503, -0.021940108, -100.0, -0.027975522, -100.0, -0.011811018, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.008111444, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[10][8] = [-100.0, -100.0, -100.0, -100.0, 0.08409503, 0.008447876, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.02651535, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.014948052, -100.0, -100.0, -100.0]
-lab[10][9] = [-100.0, -100.0, -100.0, -100.0, -0.03174676, -0.0072506266, -0.025777975, -0.0070578745, -0.023986494, -100.0, -0.019441407, -100.0, -0.011610778, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0076555787, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[10][10] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
-lab[10][11] = [-100.0, -100.0, -100.0, -100.0, -0.020492751, -0.011677122, -0.014922382, -0.008271219, 0.07524326, -100.0, -0.0102564655, -100.0, -0.03576118, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.05996136, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[10][12] = [-100.0, -100.0, -100.0, -100.0, 0.011622721, 0.032384023, -0.0026711538, 0.0038835537, -4.5388937E-5, -100.0, 0.008428662, -100.0, -0.014357973, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.04065571, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[10][13] = [-100.0, -100.0, -100.0, -100.0, 0.0073663713, 0.030481348, -0.010437234, -9.3441224E-4, 0.039967984, -100.0, 0.0064717443, -100.0, -0.024461718, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.046183094, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[10][14] = [-100.0, -100.0, -100.0, -100.0, 0.01587913, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.06235354, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.016389329, -100.0, -100.0, -100.0, -0.02086558, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[11][0] = [-100.0, -100.0, -100.0, -100.0, 0.004183382, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[11][1] = [-100.0, -100.0, -100.0, -100.0, -0.0076409145, 0.024953196, -100.0, -100.0, -0.028889697, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020499956, -100.0, -100.0, -100.0, -0.011986047, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.01859772, -100.0, -100.0, -100.0]
-lab[11][2] = [-100.0, -100.0, -100.0, -100.0, -0.060003787, -0.014070317, -100.0, -0.0059156157, 0.010306167, -100.0, -0.015206532, -100.0, -0.019881038, -100.0, -100.0, -0.028339827, -100.0, -0.067398205, -100.0, -100.0, -100.0, 0.008997908, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.018300084, -0.007920352]
-lab[11][3] = [-100.0, -100.0, -100.0, -100.0, -0.01894506, -0.013162743, -100.0, -0.007979904, -0.0016385664, -100.0, -0.018153787, -100.0, -0.017998304, -100.0, -100.0, -0.021245552, -100.0, -0.05939291, -100.0, -100.0, -100.0, -0.004197329, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.032008335, -0.00921024]
-lab[11][4] = [-100.0, -100.0, -100.0, -100.0, -0.0025721304, -0.009940909, -100.0, -0.009773591, 0.020629605, -100.0, -0.023574987, -100.0, 0.0029413053, -100.0, -100.0, -0.01590158, -100.0, -0.06557504, -100.0, -100.0, -100.0, -0.0120780505, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.02265994, -0.010470008]
-lab[11][5] = [-100.0, -100.0, -100.0, -100.0, -0.004847251, -0.016105207, -100.0, -0.013647844, 0.020292103, -100.0, -0.012678393, -100.0, -0.02244311, -100.0, -100.0, -0.021245552, -100.0, -0.060949195, -100.0, -100.0, -100.0, -0.0073509244, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.027212191, -0.014650679]
-lab[11][6] = [-100.0, -100.0, -100.0, -100.0, -0.033746358, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.023005461, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[11][7] = [-100.0, -100.0, -100.0, -100.0, -0.05617983, -0.011991441, -100.0, -0.009326804, 0.011956559, -100.0, -0.018397594, -100.0, -0.01995382, -100.0, -100.0, -0.030099161, -100.0, -0.07172404, -100.0, -100.0, -100.0, -0.0029683935, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020174116, -0.015947435]
-lab[11][8] = [-100.0, -100.0, -100.0, -100.0, 0.005519841, 9.0104673E-4, -100.0, -100.0, -0.019728117, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020637562, -100.0, -100.0, -100.0, -0.016223626, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.013563827, -100.0, -100.0, -100.0]
-lab[11][9] = [-100.0, -100.0, -100.0, -100.0, 0.015746564, -0.0070220693, -100.0, -0.007731626, 0.022043357, -100.0, -0.016831335, -100.0, -0.014862879, -100.0, -100.0, -0.026977727, -100.0, -0.064945415, -100.0, -100.0, -100.0, -0.00923226, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.014802031, -0.008515398]
-lab[11][10] = [-100.0, -100.0, -100.0, -100.0, 0.17183895, -0.019662648, -0.02055108, -0.022982247, -0.05656849, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.029510943, -100.0, -100.0, -100.0, -0.01362725, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[11][11] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
-lab[11][12] = [-100.0, -100.0, -100.0, -100.0, 0.004987302, 0.11272088, -100.0, 0.13417284, 0.046005733, -100.0, -0.011221319, -100.0, -0.009711958, -100.0, -100.0, -0.029535037, -100.0, -0.010512706, -100.0, -100.0, -100.0, -0.047170322, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.013259491, -0.0056126397]
-lab[11][13] = [-100.0, -100.0, -100.0, -100.0, 0.120297045, 0.09330137, -100.0, 0.070799686, 0.040355153, -100.0, -0.039030172, -100.0, -7.0239895E-4, -100.0, -100.0, -0.032085977, -100.0, -0.011256315, -100.0, -100.0, -100.0, -0.027810505, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.00633472, -0.008622873]
-lab[11][14] = [-100.0, -100.0, -100.0, -100.0, 0.11600753, -0.005624147, -100.0, 0.03412821, -0.012586624, -100.0, -100.0, -0.075249486, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.019362854, 0.013571097, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.008141532]
-lab[12][0] = [-100.0, -100.0, -100.0, -100.0, 0.0020547423, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[12][1] = [-100.0, -100.0, -100.0, -100.0, 0.0396342, -0.015539667, -100.0, -100.0, -0.025371484, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.024309423, -100.0, -100.0, -100.0, -0.011986047, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.027883962, -100.0, -100.0, -100.0]
-lab[12][2] = [-100.0, -100.0, -100.0, -100.0, -0.05916558, -0.016076984, -100.0, -0.005667337, 0.0051087197, -100.0, -0.016055794, -100.0, -0.027272215, -100.0, -100.0, -0.026044102, -100.0, -0.07120015, -100.0, -100.0, -100.0, -0.0015342243, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.021045266, -0.008740985]
-lab[12][3] = [-100.0, -100.0, -100.0, -100.0, 0.0031062858, -0.013976154, -100.0, -0.009553928, -0.005194581, -100.0, -0.013632725, -100.0, -0.026658138, -100.0, -100.0, -0.0232241, -100.0, -0.060299862, -100.0, -100.0, -100.0, -0.0088612195, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.029549452, -0.011608116]
-lab[12][4] = [-100.0, -100.0, -100.0, -100.0, 0.00867251, -0.011926816, -100.0, -0.010248993, 0.01097198, -100.0, -0.018405842, -100.0, -0.026264463, -100.0, -100.0, -0.014724364, -100.0, -0.07129672, -100.0, -100.0, -100.0, -0.010854144, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.023430107, -0.01412765]
-lab[12][5] = [-100.0, -100.0, -100.0, -100.0, 0.0054890797, -0.012925926, -100.0, -0.010225224, 0.0135046225, -100.0, -0.013068038, -100.0, -0.02711486, -100.0, -100.0, -0.0232241, -100.0, -0.06496835, -100.0, -100.0, -100.0, -0.0061270185, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.02475331, -0.020265082]
-lab[12][6] = [-100.0, -100.0, -100.0, -100.0, -0.02469039, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.018911082, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[12][7] = [-100.0, -100.0, -100.0, -100.0, -0.034386136, -0.01227389, -100.0, -0.004852564, 0.005298138, -100.0, -0.015678015, -100.0, -0.02966849, -100.0, -100.0, -0.03331035, -100.0, -0.076273516, -100.0, -100.0, -100.0, -3.9869107E-4, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020319534, -0.0150832]
-lab[12][8] = [-100.0, -100.0, -100.0, -100.0, 0.042473763, -0.026352536, -100.0, -100.0, -0.017569697, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020599995, -100.0, -100.0, -100.0, -0.016223626, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.017437482, -100.0, -100.0, -100.0]
-lab[12][9] = [-100.0, -100.0, -100.0, -100.0, 0.02230397, -0.010012049, -100.0, -0.009553928, 0.017520748, -100.0, -0.014661487, -100.0, -0.024577547, -100.0, -100.0, -0.03023924, -100.0, -0.073132485, -100.0, -100.0, -100.0, -0.007911795, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.021642737, -0.017785992]
-lab[12][10] = [-100.0, -100.0, -100.0, -100.0, 0.2285694, -0.026922856, -0.020569138, -0.02599477, -0.012410844, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.038398586, -100.0, -100.0, -100.0, -0.012401053, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[12][11] = [-100.0, -100.0, -100.0, -100.0, -0.04830719, -0.014254008, -100.0, -0.0038235525, 0.016373483, -100.0, -0.0115593225, -100.0, -0.024683233, -100.0, -100.0, -0.033282496, -100.0, -0.06943184, -100.0, -100.0, -100.0, -0.0022925064, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0191256, -0.019381609]
-lab[12][12] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
-lab[12][13] = [-100.0, -100.0, -100.0, -100.0, 0.068326406, 0.13544416, -100.0, 0.0998629, 0.097386986, -100.0, -0.034251586, -100.0, -0.0054424014, -100.0, -100.0, -0.019764677, -100.0, -0.03183618, -100.0, -100.0, -100.0, -0.04539673, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.009344805, -0.0098096]
-lab[12][14] = [-100.0, -100.0, -100.0, -100.0, 0.08549086, -0.004960265, -100.0, 0.010753985, -0.007879022, -100.0, -100.0, -0.12814987, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.007242377, 0.008014331, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.008141532]
-lab[13][0] = [-100.0, -100.0, -100.0, -100.0, 0.0020547423, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[13][1] = [-100.0, -100.0, -100.0, -100.0, 0.05739301, 0.020208525, -100.0, -100.0, -0.02736584, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020499956, -100.0, -100.0, -100.0, -0.011986047, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.021537926, -100.0, -100.0, -100.0]
-lab[13][2] = [-100.0, -100.0, -100.0, -100.0, -0.019036207, -0.01617592, -100.0, -0.0059156157, 0.0020330462, -100.0, -0.014504712, -100.0, -0.021567954, -100.0, -100.0, -0.023315748, -100.0, -0.0683606, -100.0, -100.0, -100.0, 3.295847E-4, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.015582237, -0.016198281]
-lab[13][3] = [-100.0, -100.0, -100.0, -100.0, 0.03114741, -0.01407509, -100.0, -0.009802206, -0.005134943, -100.0, -0.010012224, -100.0, -0.020953877, -100.0, -100.0, -0.023286957, -100.0, -0.062059816, -100.0, -100.0, -100.0, -0.0021215002, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.022727123, -0.0130320545]
-lab[13][4] = [-100.0, -100.0, -100.0, -100.0, 0.03841355, -0.011122017, -100.0, -0.011595893, 0.02051436, -100.0, -0.015433424, -100.0, -0.019930566, -100.0, -100.0, -0.015886845, -100.0, -0.06907656, -100.0, -100.0, -100.0, -0.009811342, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.015284575, -0.014291821]
-lab[13][5] = [-100.0, -100.0, -100.0, -100.0, 0.037527163, -0.011974635, -100.0, -0.011149107, 0.019251764, -100.0, -0.007873704, -100.0, -0.019512307, -100.0, -100.0, -0.023286957, -100.0, -0.06205247, -100.0, -100.0, -100.0, -0.005275096, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.01793098, -0.01646095]
-lab[13][6] = [-100.0, -100.0, -100.0, -100.0, -0.02906044, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.021853115, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[13][7] = [-100.0, -100.0, -100.0, -100.0, 0.0051080245, -0.012372827, -100.0, -0.009326804, 0.0060452437, -100.0, -0.013101375, -100.0, -0.022065936, -100.0, -100.0, -0.02896975, -100.0, -0.073357634, -100.0, -100.0, -100.0, -5.846833E-4, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.015330794, -0.015957894]
-lab[13][8] = [-100.0, -100.0, -100.0, -100.0, 0.08354042, 0.003999633, -100.0, -100.0, -0.0148448525, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020637562, -100.0, -100.0, -100.0, -0.016223626, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.009822253, -100.0, -100.0, -100.0]
-lab[13][9] = [-100.0, -100.0, -100.0, -100.0, 0.06996338, -0.010110986, -100.0, -0.011149107, 0.018004304, -100.0, -0.01152831, -100.0, -0.016974993, -100.0, -100.0, -0.032456063, -100.0, -0.06277614, -100.0, -100.0, -100.0, -0.008038912, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.019617168, -0.018978095]
-lab[13][10] = [-100.0, -100.0, -100.0, -100.0, 0.1966709, -0.037076153, -0.022834187, -0.030513555, 0.010913024, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.029907519, -100.0, -100.0, -100.0, -0.012401054, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[13][11] = [-100.0, -100.0, -100.0, -100.0, -0.022209378, -0.013499531, -100.0, -0.0038235525, 0.013696095, -100.0, -0.009977228, -100.0, -0.018342398, -100.0, -100.0, -0.029386675, -100.0, -0.07173414, -100.0, -100.0, -100.0, -0.00394613, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.014987734, -0.017867286]
-lab[13][12] = [-100.0, -100.0, -100.0, -100.0, 0.09764857, -0.020975709, -100.0, -0.013096463, 0.01657707, -100.0, -0.010012224, -100.0, -0.018349338, -100.0, -100.0, -0.030115183, -100.0, -0.071751185, -100.0, -100.0, -100.0, -0.0040298626, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.018266436, -0.013942889]
-lab[13][13] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
-lab[13][14] = [-100.0, -100.0, -100.0, -100.0, 0.056084678, -0.012318356, -100.0, 0.014322455, -0.014129913, -100.0, -100.0, -0.14917272, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0063895416, 0.028424421, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.009038948]
-lab[14][0] = [-100.0, -100.0, -100.0, -100.0, -0.008927362, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[14][1] = [-100.0, -100.0, -100.0, -100.0, 0.028905792, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.08073401, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[14][2] = [-100.0, -100.0, -100.0, -100.0, -0.016127275, -0.011781214, -0.029326014, -100.0, -0.0073180962, -100.0, -0.036407348, -100.0, -0.02709568, -100.0, -100.0, -100.0, -100.0, 0.010117588, -100.0, -100.0, -100.0, -0.027180063, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[14][3] = [-100.0, -100.0, -100.0, -100.0, -0.014929585, -0.01646292, 0.010563016, -100.0, -0.003801383, -100.0, -0.021647654, -100.0, -0.04209665, -100.0, -100.0, -100.0, -100.0, 0.02020907, -100.0, -100.0, -100.0, -0.023904413, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[14][4] = [-100.0, -100.0, -100.0, -100.0, -0.021154426, -0.016442642, 0.0037343476, -100.0, -0.0045591975, -100.0, -0.034271818, -100.0, -0.041392848, -100.0, -100.0, -100.0, -100.0, -0.042646084, -100.0, -100.0, -100.0, -0.021064406, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[14][5] = [-100.0, -100.0, -100.0, -100.0, -0.011393564, -0.03390301, 0.009589337, -100.0, -0.01744324, -100.0, -0.007175665, -100.0, -0.043987717, -100.0, -100.0, -100.0, -100.0, 0.035264224, -100.0, -100.0, -100.0, -0.02660139, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[14][6] = [-100.0, -100.0, -100.0, -100.0, -0.0271488, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.03853228, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[14][7] = [-100.0, -100.0, -100.0, -100.0, -0.019168273, -0.011024953, -0.03493552, -100.0, -0.003224189, -100.0, -0.025564909, -100.0, -0.028018715, -100.0, -100.0, -100.0, -100.0, 0.015027219, -100.0, -100.0, -100.0, -0.02618499, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[14][8] = [-100.0, -100.0, -100.0, -100.0, -0.015771415, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.074303724, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[14][9] = [-100.0, -100.0, -100.0, -100.0, -0.014042193, -0.020506615, -0.037382524, -100.0, -0.011863008, -100.0, -0.026074145, -100.0, -0.038123965, -100.0, -100.0, -100.0, -100.0, 0.018390698, -100.0, -100.0, -100.0, -0.025254652, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[14][10] = [-100.0, -100.0, -100.0, -100.0, 0.04561069, -100.0, -0.019445466, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.10429093, -100.0, -100.0, -100.0, 0.0013721561, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[14][11] = [-100.0, -100.0, -100.0, -100.0, -0.0128257405, -0.011499481, -0.01790243, -100.0, -0.0073180962, -100.0, -0.03406727, -100.0, -0.032254595, -100.0, -100.0, -100.0, -100.0, 0.03551333, -100.0, -100.0, -100.0, -0.02621014, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[14][12] = [-100.0, -100.0, -100.0, -100.0, -0.005733858, -0.014030532, -0.007075153, -100.0, -0.003224189, -100.0, -0.034181435, -100.0, -0.038144123, -100.0, -100.0, -100.0, -100.0, -0.08827253, -100.0, -100.0, -100.0, -0.026157081, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[14][13] = [-100.0, -100.0, -100.0, -100.0, -0.0042990698, -0.015845833, -0.013813869, -100.0, 0.0018438096, -100.0, -0.028911412, -100.0, -0.035165127, -100.0, -100.0, -100.0, -100.0, -0.041419115, -100.0, -100.0, -100.0, -0.027013248, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
-lab[14][14] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
-fv = a feature vector
-sib[0][1][0] = [0.1009304]
-sib[0][1][1] = [0.1009304]
-sib[0][2][0] = [0.077498816, -0.18321107]
-sib[0][2][1] = [0.0, 3.6234892E-4]
-sib[0][2][2] = [0.077498816, -0.18321107]
-sib[0][3][0] = [0.09607812, -0.16572231]
-sib[0][3][1] = [9.148505E-12, 3.6234892E-4]
-sib[0][3][2] = [0.002879443, -0.002180265]
-sib[0][3][3] = [0.09607812, -0.16572231]
-sib[0][4][0] = [0.09607812, -0.16775823]
-sib[0][4][1] = [9.148505E-12, 3.6234892E-4]
-sib[0][4][2] = [0.002879443, 0.013257431]
-sib[0][4][3] = [0.0036714405, -0.012758426]
-sib[0][4][4] = [0.09607812, -0.16775823]
-sib[0][5][0] = [0.07752588, -0.19025701]
-sib[0][5][1] = [0.0, 3.6234892E-4]
-sib[0][5][2] = [0.002879443, -0.0053304173]
-sib[0][5][3] = [0.0036714405, -0.019903192]
-sib[0][5][4] = [0.0, -0.017437585]
-sib[0][5][5] = [0.07752588, -0.19025701]
-sib[0][6][0] = [0.37733674, 0.0030680192, 0.060625646]
-sib[0][6][1] = [0.0, 4.400658E-11, -0.0086955335]
-sib[0][6][2] = [0.0026465259, 8.476209E-4, 0.0]
-sib[0][6][3] = [0.0020373724, -0.0043442375, 0.0050378544]
-sib[0][6][4] = [0.004083242, -0.008529572, 0.0050378544]
-sib[0][6][5] = [-0.00261556, -0.0063765747, -0.0016225355]
-sib[0][6][6] = [0.37733674, 0.0030680192, 0.060625646]
-sib[0][7][0] = [0.05387699, -0.17501158]
-sib[0][7][1] = [0.0, 3.6234892E-4]
-sib[0][7][2] = [0.002879443, 0.0081029795]
-sib[0][7][3] = [0.0138752125, -0.012863668]
-sib[0][7][4] = [0.0023320774, -0.008248902]
-sib[0][7][5] = [-2.8348272E-4, -0.01896391]
-sib[0][7][6] = [-0.08313296, -0.008190515]
-sib[0][7][7] = [0.05387699, -0.17501158]
-sib[0][8][0] = [0.11001998]
-sib[0][8][1] = [1.4472277E-11]
-sib[0][8][2] = [0.0032793367]
-sib[0][8][3] = [0.0036714405]
-sib[0][8][4] = [0.0]
-sib[0][8][5] = [-0.00261556]
-sib[0][8][6] = [-0.08946653]
-sib[0][8][7] = [0.0]
-sib[0][8][8] = [0.11001998]
-sib[0][9][0] = [0.012241538, -0.18679896]
-sib[0][9][1] = [0.0, 3.6234892E-4]
-sib[0][9][2] = [0.002879443, -0.00530215]
-sib[0][9][3] = [0.0036714405, -0.01240495]
-sib[0][9][4] = [0.0, -0.0077901836]
-sib[0][9][5] = [-0.00261556, -0.018505193]
-sib[0][9][6] = [-0.08946653, -0.014085354]
-sib[0][9][7] = [-0.0014011511, -0.027908202]
-sib[0][9][8] = [0.0, 9.841713E-4]
-sib[0][9][9] = [0.012241538, -0.18679896]
-sib[0][10][0] = [0.07278153]
-sib[0][10][1] = [4.5836373E-11]
-sib[0][10][2] = [0.004280594]
-sib[0][10][3] = [0.0036714405]
-sib[0][10][4] = [0.0]
-sib[0][10][5] = [-0.00261556]
-sib[0][10][6] = [-0.08946653]
-sib[0][10][7] = [0.0020818603]
-sib[0][10][8] = [7.797135E-11]
-sib[0][10][9] = [-0.0012656527]
-sib[0][10][10] = [0.07278153]
-sib[0][11][0] = [0.09697626, -0.17547522]
-sib[0][11][1] = [-2.0503228E-10, 3.6234892E-4]
-sib[0][11][2] = [0.002879443, 0.03612773]
-sib[0][11][3] = [0.0036714405, 0.013015134]
-sib[0][11][4] = [0.0, 0.017629903]
-sib[0][11][5] = [-0.00261556, -0.00237903]
-sib[0][11][6] = [-0.08946653, -0.019980194]
-sib[0][11][7] = [-0.0014011511, 5.599223E-4]
-sib[0][11][8] = [-0.0028200145, 0.008869357]
-sib[0][11][9] = [0.0, -0.002049474]
-sib[0][11][10] = [-0.0022987006, -0.03887186]
-sib[0][11][11] = [0.09697626, -0.17547522]
-sib[0][12][0] = [0.07289503, -0.15863656]
-sib[0][12][1] = [9.148505E-12, -0.015169687]
-sib[0][12][2] = [0.002879443, -0.0036189742]
-sib[0][12][3] = [0.0036714405, -0.0075441077]
-sib[0][12][4] = [0.0, -0.002929342]
-sib[0][12][5] = [-0.00261556, -0.022938276]
-sib[0][12][6] = [-0.08667535, -0.014085353]
-sib[0][12][7] = [-0.0014011511, -0.029324945]
-sib[0][12][8] = [9.148505E-12, 9.841713E-4]
-sib[0][12][9] = [0.0, -0.027787007]
-sib[0][12][10] = [0.0021417032, -0.03531133]
-sib[0][12][11] = [0.002296214, -0.026198987]
-sib[0][12][12] = [0.07289503, -0.15863656]
-sib[0][13][0] = [0.022648372, -0.15350725]
-sib[0][13][1] = [0.0, 3.6234892E-4]
-sib[0][13][2] = [0.002879443, -0.026968949]
-sib[0][13][3] = [-0.0014464923, -0.034926094]
-sib[0][13][4] = [0.0, -0.03031133]
-sib[0][13][5] = [-0.00261556, -0.04102634]
-sib[0][13][6] = [-0.08667535, -0.016529191]
-sib[0][13][7] = [-0.0014011511, -0.043380998]
-sib[0][13][8] = [0.0, 9.841713E-4]
-sib[0][13][9] = [0.0, -0.043879043]
-sib[0][13][10] = [0.0021417032, -0.0357359]
-sib[0][13][11] = [0.002296214, -0.035447378]
-sib[0][13][12] = [0.0015939093, -0.057777908]
-sib[0][13][13] = [0.022648372, -0.15350725]
-sib[0][14][0] = [0.31167406, 0.15251747, 0.018790457, 0.012185015]
-sib[0][14][1] = [-0.0030729363, -1.1884883E-10, 9.4561983E-4, 0.0039847502]
-sib[0][14][2] = [0.005333848, -0.004690854, -0.0023448789, -0.013482017]
-sib[0][14][3] = [0.004724694, -0.0049285507, 0.0, -7.5240387E-4]
-sib[0][14][4] = [0.0010532537, -0.0049285507, 8.7857735E-4, 0.013280388]
-sib[0][14][5] = [-0.0015623064, -0.0049285507, 6.6842075E-4, 0.011406964]
-sib[0][14][6] = [-0.08946653, -0.02312115, 7.354752E-12, -2.2225347E-12]
-sib[0][14][7] = [-2.5238388E-4, -0.005386516, 0.0039864522, 0.002022608]
-sib[0][14][8] = [-0.0030729363, -0.0064442162, -0.0020600068, 0.003577187]
-sib[0][14][9] = [-7.0605893E-6, -0.0063338643, -0.0023448789, -0.012578556]
-sib[0][14][10] = [1.4686887E-11, 0.0043251663, 3.665739E-4, 0.0026315032]
-sib[0][14][11] = [0.013265651, -0.0038110844, 0.0, -0.009902528]
-sib[0][14][12] = [0.0015868493, -0.006571561, 0.0, -0.008799822]
-sib[0][14][13] = [-7.0605893E-6, -0.0060651805, 0.0, 0.0010815861]
-sib[0][14][14] = [0.31167406, 0.15251747, 0.018790457, 0.012185015]
-sib[1][0][0] = [-0.14506936]
-sib[1][0][1] = [-0.14506936]
-sib[1][2][1] = [0.8223301, 0.15931079, 0.35679403, 0.096370235, 0.16478507, 0.05396487]
-sib[1][2][2] = [0.8223301, 0.15931079, 0.35679403, 0.096370235, 0.16478507, 0.05396487]
-sib[1][3][1] = [0.7328315, 0.071922556, 0.3353346, -0.084273316, 0.18448874, 0.063882634]
-sib[1][3][2] = [-0.17718247, -0.048298623, -0.08761847, -0.08399954, -0.028174773, -0.016735515]
-sib[1][3][3] = [0.7328315, 0.071922556, 0.3353346, -0.084273316, 0.18448874, 0.063882634]
-sib[1][4][1] = [0.74362266, 0.074151605, 0.33832115, -0.08473284, 0.18674353, 0.061846726]
-sib[1][4][2] = [-0.18171725, -0.042668555, -0.090021595, -0.11272397, -0.03076177, -0.0012978215]
-sib[1][4][3] = [-0.1923438, -0.04521106, -0.065176874, -0.017205017, -0.07633624, -0.009437358]
-sib[1][4][4] = [0.74362266, 0.074151605, 0.33832115, -0.08473284, 0.18674353, 0.061846726]
-sib[1][5][1] = [0.7273429, 0.06951806, 0.37647092, -0.11422935, 0.11937228, 0.02388254]
-sib[1][5][2] = [-0.17346698, -0.03045045, -0.09098843, -0.0948249, -0.015072234, -0.019885667]
-sib[1][5][3] = [-0.1865165, -0.025386048, -0.06763257, -0.027074134, -0.06819977, -0.016582124]
-sib[1][5][4] = [-0.18198171, -0.036187537, -0.056837518, 0.0044096145, -0.06264385, -0.027142761]
-sib[1][5][5] = [0.7273429, 0.06951806, 0.37647092, -0.11422935, 0.11937228, 0.02388254]
-sib[1][6][1] = [0.13799278]
-sib[1][6][2] = [0.026691256]
-sib[1][6][3] = [0.007929184]
-sib[1][6][4] = [0.01669214]
-sib[1][6][5] = [0.012944166]
-sib[1][6][6] = [0.13799278]
-sib[1][7][1] = [0.70997274, 0.09760554, 0.48473144, 0.03187166, 0.1530679, 0.03221134]
-sib[1][7][2] = [-0.18709238, -0.048056874, -0.09347163, -0.062301688, -0.031794682, -0.0064522717]
-sib[1][7][3] = [-0.17118181, -0.054923926, -0.06860041, 0.059358608, -0.015151251, -0.009542598]
-sib[1][7][4] = [-0.17118181, -0.054923926, -0.059294213, 0.06307418, -0.010485761, -0.017954078]
-sib[1][7][5] = [-0.1714512, -0.05614167, -0.066502064, 0.07803505, -0.031801704, -0.028669087]
-sib[1][7][6] = [-0.0066187354, 0.0, 0.0, 0.04309825, -0.009898367, -0.009960687]
-sib[1][7][7] = [0.70997274, 0.09760554, 0.48473144, 0.03187166, 0.1530679, 0.03221134]
-sib[1][8][1] = [0.14466164]
-sib[1][8][2] = [-0.0014932856]
-sib[1][8][3] = [-0.0049484395]
-sib[1][8][4] = [-0.010908695]
-sib[1][8][5] = [-0.047897436]
-sib[1][8][6] = [-0.07205967]
-sib[1][8][7] = [-0.03267007]
-sib[1][8][8] = [0.14466164]
-sib[1][9][1] = [0.7941633, 0.14351022, 0.40630633, 0.101728044, 0.22039162, 0.025832525]
-sib[1][9][2] = [-0.1469763, -0.06074291, -0.09695857, -0.12046871, 0.024239575, -0.019857401]
-sib[1][9][3] = [-0.16942596, -0.052692678, -0.068992, -0.003081635, 0.002428099, -0.00908388]
-sib[1][9][4] = [-0.16942596, -0.052692678, -0.0596858, 6.339379E-4, 0.007093591, -0.01749536]
-sib[1][9][5] = [-0.16969535, -0.05391042, -0.06808764, 0.012101205, -4.7506066E-4, -0.02821037]
-sib[1][9][6] = [-0.00875906, 0.0, -9.955837E-4, 0.028349187, 0.0074102087, -0.015855527]
-sib[1][9][7] = [-0.15999229, -0.05038492, -0.079725966, -0.124766536, -0.031653732, -0.040038418]
-sib[1][9][8] = [-0.021489913, -0.0033509294, 0.0, 0.0039077005, -7.73577E-4, 9.841713E-4]
-sib[1][9][9] = [0.7941633, 0.14351022, 0.40630633, 0.101728044, 0.22039162, 0.025832525]
-sib[1][10][1] = [0.40872738, 0.73735535, 0.11837222, 0.14335588, 0.06470696]
-sib[1][10][2] = [-0.059155826, -0.08133857, -5.3938874E-4, 0.021138674, -0.051489163]
-sib[1][10][3] = [-0.0576928, -0.08749205, 0.04564517, -0.06835486, -0.02692426]
-sib[1][10][4] = [-0.0483866, -0.08749205, 0.04419522, -0.055656735, -0.03858459]
-sib[1][10][5] = [-0.052616727, -0.08993608, 0.04401492, -0.052504648, -0.03858459]
-sib[1][10][6] = [-0.0025701378, 0.0070631346, 0.013442162, -0.01039378, -0.0028068458]
-sib[1][10][7] = [-0.057052415, -0.07474424, -5.647867E-4, -0.058527604, -0.05342383]
-sib[1][10][8] = [-0.021949403, -0.020818597, 0.015592818, -0.0013685953, -0.005767775]
-sib[1][10][9] = [-0.047719967, -0.0930448, 0.040142223, -0.019073889, -0.030611292]
-sib[1][10][10] = [0.40872738, 0.73735535, 0.11837222, 0.14335588, 0.06470696]
-sib[1][11][1] = [0.79462796, 0.12613454, 0.3748815, 0.09253451, 0.22781485, 0.065622464]
-sib[1][11][2] = [-0.21084513, -0.06989765, -0.09474037, -0.126323, -0.02342927, 0.02157248]
-sib[1][11][3] = [-0.20293489, -0.06394496, -0.06758666, -0.01732459, -0.0059071695, 0.016336206]
-sib[1][11][4] = [-0.20293489, -0.06394496, -0.058280464, -0.013609019, -0.0035066297, 0.007924724]
-sib[1][11][5] = [-0.20130599, -0.0651627, -0.06548831, 0.0054604346, -0.005950439, -0.012084208]
-sib[1][11][6] = [-0.00875906, 0.0, 0.0, 0.03143002, -0.017132381, -0.021750366]
-sib[1][11][7] = [-0.18423724, -0.05743317, -0.07596734, -0.11873575, -0.01840756, -0.01157029]
-sib[1][11][8] = [-0.029544512, -0.00955603, 0.0, 0.06702636, 0.033138227, 0.0050735637]
-sib[1][11][9] = [-0.19347359, -0.05170956, -0.075242564, -0.056771394, -0.027734496, -0.008300344]
-sib[1][11][10] = [-0.09004499, 0.052916653, -0.013810598, -0.021381833, 0.014406228, -0.03887186]
-sib[1][11][11] = [0.79462796, 0.12613454, 0.3748815, 0.09253451, 0.22781485, 0.065622464]
-sib[1][12][1] = [0.784679, 0.11406528, 0.4023752, 0.077483386, 0.25407618, 0.070968404]
-sib[1][12][2] = [-0.16144344, -0.058469675, -0.09971817, -0.13266534, -0.012766752, -0.018174225]
-sib[1][12][3] = [-0.19172621, -0.05747579, -0.07180204, -0.005855644, -0.0067007844, -0.0042230384]
-sib[1][12][4] = [-0.19584893, -0.05747579, -0.062495854, -0.002140074, -0.0020352905, -0.012634519]
-sib[1][12][5] = [-0.19611831, -0.061888117, -0.0697037, 0.011901378, -0.001139537, -0.03264345]
-sib[1][12][6] = [-0.01732036, 0.0, 0.0, 0.024115551, -0.023440033, -0.015855527]
-sib[1][12][7] = [-0.17722084, -0.050481066, -0.08330333, -0.124951646, -0.051222946, -0.041455157]
-sib[1][12][8] = [-0.060714513, -0.00955603, -0.005931367, 0.09389506, 0.004548329, -0.0028116223]
-sib[1][12][9] = [-0.1857457, -0.03476999, -0.08091978, -0.06731631, -0.048553277, -0.03403788]
-sib[1][12][10] = [-0.08174297, 0.03556207, -0.010301546, -0.011050482, -0.06616042, -0.03531133]
-sib[1][12][11] = [-0.16741519, -0.041634258, -0.09653928, -0.11845435, -0.07660295, -0.04021944]
-sib[1][12][12] = [0.784679, 0.11406528, 0.4023752, 0.077483386, 0.25407618, 0.070968404]
-sib[1][13][1] = [0.8033916, 0.14681372, 0.4034932, 0.04889268, 0.23028061, 0.072416954]
-sib[1][13][2] = [-0.15708967, -0.05103388, -0.09755864, -0.11520136, 0.010333281, -0.041524198]
-sib[1][13][3] = [-0.17943211, -0.04492206, -0.069642514, 0.0077984845, 0.019408828, -0.031605024]
-sib[1][13][4] = [-0.17943211, -0.050039995, -0.06250434, 0.011514056, 0.024074322, -0.040016502]
-sib[1][13][5] = [-0.17942515, -0.0556522, -0.06754417, 0.024334319, 0.0020352225, -0.050731517]
-sib[1][13][6] = [-0.023741333, 0.0, 0.0, 0.02395995, -0.021758288, -0.018299362]
-sib[1][13][7] = [-0.17054209, -0.04390209, -0.081143804, -0.108708866, -0.043814924, -0.055511214]
-sib[1][13][8] = [-0.06968277, -0.007558679, -0.005931367, 0.08285634, -0.020528413, -0.0028116223]
-sib[1][13][9] = [-0.16852425, -0.027382981, -0.07876025, -0.052584186, -0.08898652, -0.050129913]
-sib[1][13][10] = [-0.07044368, 0.04071981, -0.008472457, -0.009528046, -0.06525004, -0.0357359]
-sib[1][13][11] = [-0.16452362, -0.02551473, -0.09586862, -0.1323378, -0.07599212, -0.049467836]
-sib[1][13][12] = [-0.122956105, -0.022348002, -0.073540114, -0.08561526, -0.10653714, -0.069373325]
-sib[1][13][13] = [0.8033916, 0.14681372, 0.4034932, 0.04889268, 0.23028061, 0.072416954]
-sib[1][14][1] = [-0.1488827, 0.73145366, -0.038691726]
-sib[1][14][2] = [-0.057306655, -0.06834161, -0.013022164]
-sib[1][14][3] = [0.07321883, -0.06438151, -0.010292105]
-sib[1][14][4] = [0.057945795, -0.06438151, -0.0088003315]
-sib[1][14][5] = [0.027987286, -0.07644719, -0.008058093]
-sib[1][14][6] = [0.26787516, 0.009855585, -8.11261E-4]
-sib[1][14][7] = [-0.05378393, -0.10175465, -0.008854454]
-sib[1][14][8] = [-0.010961269, 0.0331846, -0.0051823417]
-sib[1][14][9] = [-0.08712432, -0.08935531, -0.014929943]
-sib[1][14][10] = [-0.07270897, -0.04884997, -0.0023863493]
-sib[1][14][11] = [-0.045111306, -0.0765708, -0.01041195]
-sib[1][14][12] = [-0.03154144, -0.070103265, -0.0088003315]
-sib[1][14][13] = [-0.058957256, -0.07688024, -0.0064464738]
-sib[1][14][14] = [-0.1488827, 0.73145366, -0.038691726]
-sib[2][0][0] = [-0.07002016]
-sib[2][0][1] = [-0.004894569]
-sib[2][0][2] = [-0.07002016]
-sib[2][1][1] = [-0.023300149, -0.07763119, -0.06833927, -0.15426117, -0.08973858, -0.2105893]
-sib[2][1][2] = [-0.023300149, -0.07763119, -0.06833927, -0.15426117, -0.08973858, -0.2105893]
-sib[2][3][2] = [0.0030667265, 0.055973124, 0.16185215, 0.102194816, -0.15181133, -0.069784425, -0.09858685, -0.18661639, -0.033880048, -0.050956592, -0.11497596]
-sib[2][3][3] = [0.0030667265, 0.055973124, 0.16185215, 0.102194816, -0.15181133, -0.069784425, -0.09858685, -0.18661639, -0.033880048, -0.050956592, -0.11497596]
-sib[2][4][2] = [0.017022148, 0.006996327, 0.16085127, 0.10461412, -0.19781941, -0.099051535, -0.1054311, -0.22328228, -0.033880048, -0.058684338, -0.12042834]
-sib[2][4][3] = [-0.045596465, -0.056390677, -0.050062075, -0.097261526, -0.0134103205, -0.02489933, -0.017836481, 0.012028221, -0.0024191486, -0.010112673, -0.006688064]
-sib[2][4][4] = [0.017022148, 0.006996327, 0.16085127, 0.10461412, -0.19781941, -0.099051535, -0.1054311, -0.22328228, -0.033880048, -0.058684338, -0.12042834]
-sib[2][5][2] = [-0.0038128698, 0.0023627656, 0.09348002, 0.088334285, -0.22731593, -0.060901817, -0.09670297, -0.22777005, -0.033880048, -0.058684338, -0.15839253]
-sib[2][5][3] = [-0.00989531, -0.025851687, 0.007153724, -0.10584166, -0.027832221, -0.025866164, -0.011156052, 0.00627356, -0.0024191486, -0.014139971, -0.011174329]
-sib[2][5][4] = [-0.06930705, -0.057231218, -0.09708246, -0.0747798, 0.005082002, -0.024477692, -0.006208457, -0.007032466, -0.0015446771, -0.010112673, -0.019423649]
-sib[2][5][5] = [-0.0038128698, 0.0023627656, 0.09348002, 0.088334285, -0.22731593, -0.060901817, -0.09670297, -0.22777005, -0.033880048, -0.058684338, -0.15839253]
-sib[2][6][2] = [0.0856092, 0.023162715]
-sib[2][6][3] = [0.074589275, -0.012859605]
-sib[2][6][4] = [0.023362318, -0.012741394]
-sib[2][6][5] = [-0.003970602, -0.020858906]
-sib[2][6][6] = [0.0856092, 0.023162715]
-sib[2][7][2] = [-0.02798745, 0.030450236, 0.12717563, 0.07096413, -0.08121491, 0.047358803, -0.04972786, -0.12838377, -0.030403443, -0.04421254, -0.15006372]
-sib[2][7][3] = [-0.025541667, -0.05538957, 0.0556802, -0.08896982, 0.052671146, -0.026833996, -0.0056346385, 0.054540448, -0.005096597, -0.008215474, -0.0067933043]
-sib[2][7][4] = [-0.05304926, -0.070425056, -0.020544259, -0.07220218, 0.061470177, -0.025445525, -0.0056346385, 0.03468742, -0.0042221253, -0.009944886, -0.010234964]
-sib[2][7][5] = [-0.06928063, -0.07644652, -0.069272436, -0.0689533, 0.077528775, -0.025445525, -0.008135341, 0.030741397, -0.0042221253, -0.01183651, -0.020949975]
-sib[2][7][6] = [-0.0025985183, 0.001627638, -0.052818563, -0.008561299, 0.04309825, -0.004009964, 0.0026703556, -0.02746283, -1.643592E-11, -9.703423E-4, -0.008190515]
-sib[2][7][7] = [-0.02798745, 0.030450236, 0.12717563, 0.07096413, -0.08121491, 0.047358803, -0.04972786, -0.12838377, -0.030403443, -0.04421254, -0.15006372]
-sib[2][8][2] = [0.076986805, -0.016464042, 0.08880119, 0.03479346, -0.19845805, -0.12528196]
-sib[2][8][3] = [0.051009394, -0.009787562, 0.047646087, -0.003885689, 0.0010148, -0.009085627]
-sib[2][8][4] = [0.020872638, -0.021129338, 0.048127007, -0.0024972174, 0.002350955, -0.0037509361]
-sib[2][8][5] = [-0.043528356, -0.023956222, 0.047775924, -0.010181325, -0.009281956, -0.009085627]
-sib[2][8][6] = [-0.12178734, 4.2700802E-4, -0.059341986, -0.022653384, -0.0117155025, -0.009019228]
-sib[2][8][7] = [-0.0075305547, -0.023150373, 0.09874402, -0.004103143, -0.006852805, -0.0077615865]
-sib[2][8][8] = [0.076986805, -0.016464042, 0.08880119, 0.03479346, -0.19845805, -0.12528196]
-sib[2][9][2] = [-0.020520642, 0.076354906, 0.1944994, 0.15515459, -0.011358529, -0.031066343, -0.09887106, -0.11063344, -0.032141745, -0.051495682, -0.15644252]
-sib[2][9][3] = [-0.027242858, -0.053158324, 0.07393179, -0.10852734, -0.0051501845, -0.02722559, -0.033271253, 0.0025097397, -0.009558577, -0.0056730197, -0.0063345856]
-sib[2][9][4] = [-0.05229169, -0.0681938, -0.0029649083, -0.07044635, -9.7006967E-4, -0.025837118, -0.034270104, -0.018459626, -0.008684105, -0.0056730197, -0.009776246]
-sib[2][9][5] = [-0.06603368, -0.07421527, -0.037945807, -0.06719745, 0.011594927, -0.027031107, -0.036770806, -0.017832227, -0.008684105, -0.0056730197, -0.020491257]
-sib[2][9][6] = [-0.009841235, 4.2700802E-4, -0.03250438, -0.017214263, 0.032508813, -0.009003615, 0.004312259, -0.023045013, 0.009281213, -0.0061465385, -0.014085354]
-sib[2][9][7] = [0.061626144, -0.07034968, -0.03195047, -0.09455538, -0.120078005, -0.03296606, -0.049614057, -0.026877865, -0.004828308, -0.013543218, -0.028570222]
-sib[2][9][8] = [0.11295945, -0.022145407, -0.0019896077, 0.04971677, -0.01857473, -3.880954E-4, 0.013332176, -0.03681626, -0.0020619298, -0.00273389, 0.003756082]
-sib[2][9][9] = [-0.020520642, 0.076354906, 0.1944994, 0.15515459, -0.011358529, -0.031066343, -0.09887106, -0.11063344, -0.032141745, -0.051495682, -0.15644252]
-sib[2][10][2] = [0.13180268, 0.11493771, -0.0047045387, 0.15951079, -0.15873712, -0.11043491, -0.0255826]
-sib[2][10][3] = [0.008182732, -0.0071631013, -0.0205923, -0.015757592, -0.014230743, -0.033518903, 0.03614378]
-sib[2][10][4] = [-0.051778182, -0.018504877, -0.020471526, 0.0016789434, -0.011928141, -0.030058809, 0.021001622]
-sib[2][10][5] = [-0.07603834, -0.02133176, -0.017493805, 0.0027531967, -0.01069214, -0.030058809, 0.015227638]
-sib[2][10][6] = [-0.04895925, -0.0037904466, -0.0105781695, -0.0013920688, 8.9861406E-4, -0.0010366742, 0.0064062]
-sib[2][10][7] = [-0.044887293, -0.05752436, -0.016226107, -0.01911595, -0.018176608, -0.041148964, 0.032745954]
-sib[2][10][8] = [0.051647864, -0.04317956, -0.022725593, 0.05492984, 0.005214537, 7.999297E-4, 0.049496748]
-sib[2][10][9] = [0.080191016, 0.0143312, -0.0070167757, 0.00965486, -0.010810163, -0.024215773, 0.047102004]
-sib[2][10][10] = [0.13180268, 0.11493771, -0.0047045387, 0.15951079, -0.15873712, -0.11043491, -0.0255826]
-sib[2][11][2] = [0.010808839, 0.058979243, 0.20192263, 0.15561938, -0.020552063, -0.062491164, -0.10430702, -0.068041086, -0.030403443, -0.05217783, -0.11665259]
-sib[2][11][3] = [2.20889E-4, -0.0644106, 0.07165513, -0.12014822, -0.015950715, -0.025820244, -0.040056784, 0.05870781, -0.0059317155, -0.008525055, 0.019085499]
-sib[2][11][4] = [-0.029053152, -0.079446085, -0.013565132, -0.10395525, -0.01521303, -0.024431773, -0.040056784, 0.040202104, -0.0069625564, -0.008525055, 0.015643839]
-sib[2][11][5] = [-0.057436574, -0.08546755, -0.043421194, -0.09880806, 0.0049541546, -0.024431773, -0.04255749, 0.026142383, -0.0069625564, -0.008525055, -0.004365093]
-sib[2][11][6] = [-0.0074269967, 4.2700802E-4, -0.05704697, -0.017214263, 0.035589654, -0.008008031, -0.008562432, -0.027901186, -1.643592E-11, 0.005974566, -0.019980194]
-sib[2][11][7] = [0.009692701, -0.07739792, -0.018704299, -0.11880031, -0.11404723, -0.02920743, -0.05252111, -0.050313536, -0.006090795, -0.016395256, -1.0209717E-4]
-sib[2][11][8] = [0.14200197, -0.033050418, 0.09287813, 0.064871795, 0.042836916, -7.761908E-4, 0.0034649817, -0.043622717, -0.0020619298, 9.1371406E-4, 0.011641268]
-sib[2][11][9] = [0.07109661, -0.050286762, 0.061908476, -0.06479681, -0.059158638, -0.026408441, -0.028151553, 0.0076437136, -0.0061847903, -0.011734949, -0.0027114945]
-sib[2][11][10] = [0.08717857, 0.027359774, -0.08028591, -0.0888139, -0.03766033, -0.014323417, -0.029919054, -0.005170907, -0.0014785305, 2.4921317E-11, -0.03767125]
-sib[2][11][11] = [0.010808839, 0.058979243, 0.20192263, 0.15561938, -0.020552063, -0.062491164, -0.10430702, -0.068041086, -0.030403443, -0.05217783, -0.11665259]
-sib[2][12][2] = [-0.008806081, 0.04691, 0.2281839, 0.1456705, -0.035603188, -0.034997478, -0.12742673, -0.104196735, -0.027057149, -0.04807265, -0.11130665]
-sib[2][12][3] = [0.041237235, -0.057941437, 0.069496565, -0.108939536, -0.005303272, -0.030035634, -0.041630562, 0.026382752, -0.005096597, -0.011700289, 0.0011847559]
-sib[2][12][4] = [0.010378617, -0.07297691, -0.012093794, -0.0968693, -0.0037440853, -0.028647162, -0.041630562, 0.009728894, -0.006127438, -0.011700289, -0.004915405]
-sib[2][12][5] = [-0.03239, -0.082192965, -0.038610287, -0.0936204, 0.0113951005, -0.028647162, -0.040566582, 0.004212398, -0.006127438, -0.011700289, -0.02492434]
-sib[2][12][6] = [-0.0074269967, 4.2700802E-4, -0.06335462, -0.025775561, 0.02827518, -0.008008031, -9.899097E-4, -0.027693516, 0.010466568, 0.0012967229, -0.014085353]
-sib[2][12][7] = [0.05567226, -0.07044582, -0.05151968, -0.11178391, -0.12026312, -0.036543418, -0.06484246, -0.07705597, -0.0070241163, -0.022745721, -0.029986966]
-sib[2][12][8] = [0.109401174, -0.033050418, 0.06428825, 0.0337018, 0.06970561, -0.006707558, 0.037565842, 0.016676368, -0.0020619298, 9.1371406E-4, 0.003756082]
-sib[2][12][9] = [0.11584553, -0.033347193, 0.04108969, -0.057068896, -0.06970354, -0.032085657, -0.03658042, -0.034205142, -0.0053496724, -0.014910184, -0.028449029]
-sib[2][12][10] = [0.050475307, 0.016030503, -0.17972536, -0.07408078, -0.027328981, -0.010814365, -0.036067106, -0.014868278, -0.0014785305, 2.4921317E-11, -0.03556287]
-sib[2][12][11] = [0.1235604, -0.055605866, 0.038780686, -0.043198757, -0.12062013, -0.05599679, -0.06447694, -0.060442697, -0.009797992, -0.013322568, -0.026861008]
-sib[2][12][12] = [-0.008806081, 0.04691, 0.2281839, 0.1456705, -0.035603188, -0.034997478, -0.12742673, -0.104196735, -0.027057149, -0.04807265, -0.11130665]
-sib[2][13][2] = [0.014043956, 0.07965843, 0.20438835, 0.16438305, -0.06419388, -0.03387947, -0.11047739, -0.112318926, -0.035618346, -0.06265212, -0.10985812]
-sib[2][13][3] = [0.017949808, -0.045387708, 0.09065651, -0.10325236, 0.0121607, -0.027876105, -0.03573527, 0.045849197, -0.005096597, -0.0132879075, -0.02216522]
-sib[2][13][4] = [-0.011906292, -0.06554112, 0.01401582, -0.08045248, 0.009910051, -0.02865566, -0.036601953, 0.028000686, -0.0042221253, -0.0132879075, -0.03229739]
-sib[2][13][5] = [-0.038666643, -0.07595705, -0.03543552, -0.07692724, 0.023828043, -0.026487634, -0.031106602, 0.021909405, -0.0042221253, -0.0132879075, -0.043012403]
-sib[2][13][6] = [-0.0025985183, 4.2700802E-4, -0.061672874, -0.032196537, 0.028119579, -0.008008031, -0.0011130623, -0.03201366, -1.643592E-11, 0.0, -0.016529191]
-sib[2][13][7] = [0.049662627, -0.06386685, -0.04411166, -0.10510516, -0.10402035, -0.03438389, -0.055382475, -0.058717933, -0.0014534729, -0.02433334, -0.04404302]
-sib[2][13][8] = [0.092199616, -0.031053064, 0.039211504, 0.02473355, 0.0586669, -0.006707558, 0.037803967, 0.006024688, -0.0020619298, 8.5615006E-4, 0.003756082]
-sib[2][13][9] = [0.09659037, -0.025960183, 6.564618E-4, -0.039847475, -0.054971434, -0.029926129, -0.023374705, -0.0174373, -0.0053496724, -0.016497802, -0.044541065]
-sib[2][13][10] = [0.031881973, 0.021188242, -0.17881499, -0.06278148, -0.025806544, -0.008985275, -0.048415747, -0.020805689, 0.0, 2.4921317E-11, -0.03598744]
-sib[2][13][11] = [0.14344193, -0.03394379, 0.06377165, -0.048529483, -0.13677996, -0.053837266, -0.06477384, -0.056066412, -0.009797992, -0.016497802, -0.0361094]
-sib[2][13][12] = [0.06824247, -0.032865155, -0.05144591, -0.009715655, -0.08558081, -0.03452714, -0.038933642, -0.08403366, -0.0071181115, -0.022780383, -0.05843993]
-sib[2][13][13] = [0.014043956, 0.07965843, 0.20438835, 0.16438305, -0.06419388, -0.03387947, -0.11047739, -0.112318926, -0.035618346, -0.06265212, -0.10985812]
-sib[2][14][2] = [-0.29136357, 0.21550456, 0.19781417, 0.14476764, -0.13681059, -0.058578, 0.1117025, 0.1984607]
-sib[2][14][3] = [0.021534488, 0.045160346, -0.0045002564, -0.031228358, 0.022753827, -0.006190028, -0.023327127, -0.0030455515]
-sib[2][14][4] = [0.05371026, -0.007045494, 0.015167823, -0.042570144, 0.018961541, -0.0053155567, -0.03846929, -0.0016570799]
-sib[2][14][5] = [0.024433777, -0.027317604, 0.0066204155, -0.04539703, 0.018408414, -0.0061849365, -0.039378367, -0.0016570799]
-sib[2][14][6] = [0.30589902, -0.048999812, 0.0014003827, 4.2700802E-4, -0.010726305, 0.0011060901, 0.007897306, -0.008008031]
-sib[2][14][7] = [-0.05841264, -0.007967059, -0.055748023, -0.048123967, 0.02175959, -0.00801485, 0.0010496601, -0.0016570799]
-sib[2][14][8] = [-0.050100226, 0.05648551, 0.10893307, 0.026581593, 0.004339601, -0.0045064306, 0.049496748, -7.761908E-4]
-sib[2][14][9] = [-0.057856422, 0.07628463, 0.019891167, -0.021742167, 0.010795908, -0.014184332, 0.02426618, 0.0022314647]
-sib[2][14][10] = [-0.012750375, -0.13579145, -0.053836614, -0.0510779, 0.01005627, -0.0023863493, 0.023752104, -0.011390338]
-sib[2][14][11] = [-0.0064315833, 0.13281591, 0.01999303, -0.033362556, -0.0044995677, -0.01349137, 0.020228367, -0.007570683]
-sib[2][14][12] = [0.029471051, 0.070170105, 0.0154845975, -0.033804964, 0.011769939, -0.006443104, 0.01857647, -0.005878956]
-sib[2][14][13] = [-0.0030388515, 0.05772932, 0.018012315, -0.03560932, 0.0062698415, -0.005700865, 0.02500667, -0.0059585073]
-sib[2][14][14] = [-0.29136357, 0.21550456, 0.19781417, 0.14476764, -0.13681059, -0.058578, 0.1117025, 0.1984607]
-sib[3][0][0] = [-0.05789368]
-sib[3][0][1] = [0.010715714]
-sib[3][0][2] = [-0.007978581]
-sib[3][0][3] = [-0.05789368]
-sib[3][1][1] = [-0.087511264, -0.12744133, -0.104752496, -0.17722015, -0.092124306, -0.21522388]
-sib[3][1][2] = [0.03430704, -0.0010550766, -0.015493946, 0.002736577, -0.004425691, -0.0017134671]
-sib[3][1][3] = [-0.087511264, -0.12744133, -0.104752496, -0.17722015, -0.092124306, -0.21522388]
-sib[3][2][2] = [-0.06426263, -0.069901936, -0.10168637, -0.09750523, -0.1218078, -0.090425715, -0.08923541, -0.077614814, -0.090978056, -0.121757455, -0.08038013]
-sib[3][2][3] = [-0.06426263, -0.069901936, -0.10168637, -0.09750523, -0.1218078, -0.090425715, -0.08923541, -0.077614814, -0.090978056, -0.121757455, -0.08038013]
-sib[3][4][3] = [0.012380985, -0.04081459, 0.0821533, -0.07474714, -0.20395957, -0.16560583, -0.07983476, -0.19544126, -0.027634017, -0.057838816, -0.14035416]
-sib[3][4][4] = [0.012380985, -0.04081459, 0.0821533, -0.07474714, -0.20395957, -0.16560583, -0.07983476, -0.19544126, -0.027634017, -0.057838816, -0.14035416]
-sib[3][5][3] = [-0.007085464, -0.09665399, 0.011526372, -0.099398784, -0.2790046, -0.15970978, -0.082440555, -0.22966766, -0.027634017, -0.06556656, -0.18173482]
-sib[3][5][4] = [-0.05487947, -0.045098934, 0.052111655, -0.10031113, 0.015462773, -0.02529343, -0.0042411042, 0.005197253, -0.0015446771, -0.006902779, -0.012733134]
-sib[3][5][5] = [-0.007085464, -0.09665399, 0.011526372, -0.099398784, -0.2790046, -0.15970978, -0.082440555, -0.22966766, -0.027634017, -0.06556656, -0.18173482]
-sib[3][6][3] = [0.0036555498, -0.036290288]
-sib[3][6][4] = [0.14733498, -0.0077255554]
-sib[3][6][5] = [0.109134026, -0.019898158]
-sib[3][6][6] = [0.0036555498, -0.036290288]
-sib[3][7][3] = [-0.031260066, -0.06856652, 0.04522199, -0.11676894, -0.13290358, -0.051449183, -0.03546544, -0.13028136, -0.024157416, -0.051094763, -0.17340602]
-sib[3][7][4] = [-0.04330022, -0.058292788, 0.12432846, -0.08908352, 0.06723203, -0.026261263, -0.003667286, 0.05421242, -0.0042221253, -0.006662595, -0.0035444521]
-sib[3][7][5] = [-0.08124242, -0.07744131, 0.043832168, -0.09079691, 0.087276354, -0.026261263, -0.0061679883, 0.031382058, -0.0042221253, -0.008626616, -0.020949975]
-sib[3][7][6] = [-0.031865876, 0.0, -0.051752053, -0.008561299, 0.04309825, -0.004812273, 0.003292874, -0.021627404, 0.0, -9.703423E-4, -0.008190515]
-sib[3][7][7] = [-0.031260066, -0.06856652, 0.04522199, -0.11676894, -0.13290358, -0.051449183, -0.03546544, -0.13028136, -0.024157416, -0.051094763, -0.17340602]
-sib[3][8][3] = [-0.004966825, -0.11548082, -0.09893188, -0.064014524, -0.21564847, -0.14862426]
-sib[3][8][4] = [0.10903192, -0.012690772, 0.044209372, -0.0033129558, 0.0020286364, -0.0037509361]
-sib[3][8][5] = [0.06957626, -0.024951018, 0.025932293, -0.010997063, -0.007393649, -0.009085628]
-sib[3][8][6] = [-0.124904506, 0.0, -0.052829344, -0.021456657, -0.0117155025, -0.009019228]
-sib[3][8][7] = [0.023370812, -0.02231672, 0.112717025, -0.004918881, -0.0049644983, -0.006423532]
-sib[3][8][8] = [-0.004966825, -0.11548082, -0.09893188, -0.064014524, -0.21564847, -0.14862426]
-sib[3][9][3] = [-0.023793247, -0.022661865, 0.11254575, -0.032578483, -0.0630472, -0.12987432, -0.084608644, -0.11253104, -0.025895717, -0.058377907, -0.17978483]
-sib[3][9][4] = [-0.04500141, -0.056061525, 0.14258005, -0.10864104, 0.009410702, -0.026652856, -0.0313039, -0.0019144005, -0.008684105, -0.0024631263, -0.0030857343]
-sib[3][9][5] = [-0.07799548, -0.07521007, 0.07515881, -0.08904107, 0.02134251, -0.027846845, -0.034803454, -0.017191567, -0.008684105, -0.0024631263, -0.020491257]
-sib[3][9][6] = [-0.0391086, 0.0, -0.03562153, -0.010701624, 0.032508813, -0.0078068906, 0.0049347775, -0.018508233, 0.009281213, -0.0061465385, -0.014085354]
-sib[3][9][7] = [0.09251948, -0.06951603, -0.011008778, -0.07883953, -0.11552522, -0.033781793, -0.043712, -0.050451096, -0.0064717247, -0.010333326, -0.027232168]
-sib[3][9][8] = [0.106523976, -0.025107507, -0.027313342, 0.0643436, -0.020281743, -3.880954E-4, 0.013332176, -0.041317776, 0.0, -0.00273389, 0.003756082]
-sib[3][9][9] = [-0.023793247, -0.022661865, 0.11254575, -0.032578483, -0.0630472, -0.12987432, -0.084608644, -0.11253104, -0.025895717, -0.058377907, -0.17978483]
-sib[3][10][3] = [0.049849, 0.015920937, -0.103512526, -0.0282223, -0.15162304, -0.1337772, -0.028855206]
-sib[3][10][4] = [0.08486363, -0.010066313, -0.020019567, -0.015871307, -0.011928141, -0.033518903, 0.01838523]
-sib[3][10][5] = [0.037066273, -0.022326551, -0.018309543, -0.019090429, -0.01069214, -0.030058809, 0.003265826]
-sib[3][10][6] = [-0.052076407, -0.0042174547, -0.009381445, 0.0051205703, 1.1164299E-4, -0.0010366742, -0.022861157]
-sib[3][10][7] = [-0.0239456, -0.0566907, -0.017041847, -0.0034001134, -0.018176608, -0.03981091, 0.06363928]
-sib[3][10][8] = [0.009411858, -0.04614166, -0.022725593, 0.057259593, 0.0027610764, 7.999297E-4, 0.052491844]
-sib[3][10][9] = [0.1020553, 0.018468937, -0.015737467, -0.019766212, -0.015054941, -0.024877794, 0.09240703]
-sib[3][10][10] = [0.049849, 0.015920937, -0.103512526, -0.0282223, -0.15162304, -0.1337772, -0.028855206]
-sib[3][11][3] = [0.007536241, -0.040037517, 0.11996899, -0.032113697, -0.07224075, -0.16129914, -0.090044595, -0.06993868, -0.024157416, -0.059060056, -0.13999487]
-sib[3][11][4] = [-0.017537657, -0.06731382, 0.13803843, -0.12026193, -0.0013898304, -0.02524751, -0.03808943, 0.05428367, -0.0050572436, -0.0053151622, 0.022334352]
-sib[3][11][5] = [-0.06939837, -0.086462356, 0.06968344, -0.120651685, 0.014701741, -0.02524751, -0.040590137, 0.026783044, -0.0069625564, -0.0053151622, -0.0043650935]
-sib[3][11][6] = [-0.03669436, 0.0, -0.060164124, -0.010701624, 0.035589654, -0.006811307, -0.007939913, -0.023364406, 0.0, 0.005974566, -0.019980194]
-sib[3][11][7] = [0.04058604, -0.07656428, 0.0022373926, -0.10308445, -0.10949445, -0.030023169, -0.046619054, -0.073886774, -0.007734212, -0.013185361, 0.0012359582]
-sib[3][11][8] = [0.14499708, -0.036012515, 0.050642148, 0.067201555, 0.041129906, -7.761908E-4, 0.0034649817, -0.04812423, 0.0, 9.137141E-4, 0.011641268]
-sib[3][11][9] = [0.118235655, -0.046149027, 0.062057465, -0.10321512, -0.047871336, -0.035129134, -0.026184201, 0.008284374, -0.003369519, -0.0063851266, -0.0033735158]
-sib[3][11][10] = [0.10789909, 0.037529636, -9.849798E-4, -0.045202315, -0.030076612, -0.015593061, -0.019619161, -0.0038627228, -0.0014785305, -0.0019659526, -0.03767125]
-sib[3][11][11] = [0.007536241, -0.040037517, 0.11996899, -0.032113697, -0.07224075, -0.16129914, -0.090044595, -0.06993868, -0.024157416, -0.059060056, -0.13999487]
-sib[3][12][3] = [-0.012078681, -0.052106764, 0.14623025, -0.042062573, -0.08729188, -0.13380544, -0.11316432, -0.10609435, -0.020811122, -0.054954875, -0.13464893]
-sib[3][12][4] = [0.023478685, -0.06084465, 0.13814482, -0.113175966, 0.009257614, -0.0294629, -0.03966321, 0.021958612, -0.0042221253, -0.008490396, 0.00443361]
-sib[3][12][5] = [-0.0443518, -0.08318776, 0.07449434, -0.11546402, 0.021142684, -0.0294629, -0.03859923, 0.0048530586, -0.006127438, -0.008490396, -0.024924338]
-sib[3][12][6] = [-0.03669436, 0.0, -0.06647178, -0.019262923, 0.02827518, -0.006811307, -3.673914E-4, -0.023156736, 0.010466568, 0.0012967229, -0.014085353]
-sib[3][12][7] = [0.08656559, -0.06961218, -0.030577995, -0.09606805, -0.11571034, -0.037359156, -0.0589404, -0.100629196, -0.008667532, -0.019535828, -0.028648913]
-sib[3][12][8] = [0.11239628, -0.036012515, 0.022052249, 0.03603155, 0.06799861, -0.006707558, 0.037565842, 0.012174852, 0.0, 9.137141E-4, 0.003756082]
-sib[3][12][9] = [0.16298458, -0.029209461, 0.04123869, -0.0954872, -0.058416236, -0.040806353, -0.03461307, -0.033564482, -0.0025344007, -0.00956036, -0.02911105]
-sib[3][12][10] = [0.071195826, 0.02620035, -0.100424424, -0.030469187, -0.01974526, -0.012084009, -0.025767213, -0.013560094, -0.0014785305, -0.0019659526, -0.03556287]
-sib[3][12][11] = [0.19785225, -0.06643538, -0.04062798, -0.063266315, -0.11048587, -0.055547453, -0.06250958, -0.059802037, -0.0032337965, -0.007972743, -0.027523026]
-sib[3][12][12] = [-0.012078681, -0.052106764, 0.14623025, -0.042062573, -0.08729188, -0.13380544, -0.11316432, -0.10609435, -0.020811122, -0.054954875, -0.13464893]
-sib[3][13][3] = [0.010771354, -0.019358344, 0.12243471, -0.023350026, -0.115882576, -0.13268743, -0.09621497, -0.11421653, -0.029372318, -0.06953435, -0.13320039]
-sib[3][13][4] = [1.9125821E-4, -0.05340885, 0.15930477, -0.10336607, 0.026721582, -0.029471397, -0.0346346, 0.041425057, -0.0042221253, -0.010078013, -0.018916365]
-sib[3][13][5] = [-0.050628446, -0.07695184, 0.0776691, -0.098770864, 0.033575624, -0.027303372, -0.02913925, 0.022550065, -0.0042221253, -0.010078013, -0.043012403]
-sib[3][13][6] = [-0.031865876, 0.0, -0.06479003, -0.025683897, 0.028119579, -0.006811307, -4.9054436E-4, -0.02747688, 0.0, 0.0, -0.016529191]
-sib[3][13][7] = [0.08055597, -0.06303321, -0.023169972, -0.0893893, -0.09946756, -0.035199627, -0.04948042, -0.082291186, -0.0030968897, -0.021123445, -0.042704962]
-sib[3][13][8] = [0.09519473, -0.034015164, -0.0030244961, 0.0270633, 0.05695989, -0.006707558, 0.037803967, 0.0015231725, 0.0, 8.561501E-4, 0.003756082]
-sib[3][13][9] = [0.14372943, -0.021822449, 8.054506E-4, -0.07826577, -0.043684132, -0.038646825, -0.021407353, -0.01679664, -0.0025344007, -0.011147978, -0.045203086]
-sib[3][13][10] = [0.052602503, 0.03135809, -0.09951402, -0.019169897, -0.018222826, -0.0102549195, -0.03811585, -0.019497504, 5.0247823E-11, -0.0019659526, -0.03598744]
-sib[3][13][11] = [0.2177338, -0.0447733, -0.009973826, -0.0668631, -0.1266457, -0.053387925, -0.06280649, -0.055425752, -0.0032337965, -0.011147978, -0.03677142]
-sib[3][13][12] = [0.15116192, -0.029928438, -0.0682897, -0.030506752, -0.075446546, -0.034077805, -0.03499894, -0.083393, -0.0059905644, -0.017430559, -0.05910195]
-sib[3][13][13] = [0.010771354, -0.019358344, 0.12243471, -0.023350026, -0.115882576, -0.13268743, -0.09621497, -0.11421653, -0.029372318, -0.06953435, -0.13320039]
-sib[3][14][3] = [-0.26056057, 0.13355096, 0.010081072, 0.04575086, -0.19626357, -0.05233198, 0.108429894, 0.099652715]
-sib[3][14][4] = [-0.0051852446, 0.11604688, -0.00461397, -0.034131575, 0.027734272, -0.0053155567, -0.041085675, -0.0024728184]
-sib[3][14][5] = [0.005049154, 0.08578702, -0.015223209, -0.046391815, 0.019369159, -0.0061849365, -0.05134018, -0.0024728184]
-sib[3][14][6] = [0.29295436, -0.052116968, 0.007913021, 0.0, -0.0017050705, 0.0011060901, -0.021370051, -0.006811307]
-sib[3][14][7] = [-0.05461452, 0.012974637, -0.04003219, -0.047290314, 0.0119293835, -0.009658267, 0.03194299, -0.0024728184]
-sib[3][14][8] = [-0.057784926, 0.014249502, 0.111262836, 0.023619492, 0.012321563, -0.0024445008, 0.052491844, -7.761908E-4]
-sib[3][14][9] = [-0.091370605, 0.07643362, -0.018527146, -0.017604437, 0.006615444, -0.011369062, 0.07140522, -0.0064892285]
-sib[3][14][10] = [-0.0065967264, -0.056490522, -0.010225024, -0.040908042, -0.009007444, -0.0023863493, 0.044472635, -0.012659982]
-sib[3][14][11] = [-0.031473212, 0.059070446, 0.0016594138, -0.044192065, -0.004975613, -0.006927175, 0.094520256, -0.007121347]
-sib[3][14][12] = [0.014797458, 0.058989495, -0.0035725532, -0.030868255, -0.0056242477, -0.0053155567, 0.10149591, -0.00542962]
-sib[3][14][13] = [-0.017712446, 0.040885523, -0.0027787832, -0.034492105, -0.007669338, -0.0045733177, 0.10792611, -0.005509171]
-sib[3][14][14] = [-0.26056057, 0.13355096, 0.010081072, 0.04575086, -0.19626357, -0.05233198, 0.108429894, 0.099652715]
-sib[4][0][0] = [-0.05979176]
-sib[4][0][1] = [0.012160879]
-sib[4][0][2] = [-0.01094074]
-sib[4][0][3] = [0.0063267057]
-sib[4][0][4] = [-0.05979176]
-sib[4][1][1] = [-0.089409344, -0.12744133, -0.104752496, -0.17722015, -0.092124306, -0.21522388]
-sib[4][1][2] = [0.045860104, -0.0010550766, -0.018948799, 0.002736577, -0.004425691, -0.0017134671]
-sib[4][1][3] = [0.18554153, -0.0011986855, 0.022944935, -0.0010610658, -0.011354887, -0.0020284676]
-sib[4][1][4] = [-0.089409344, -0.12744133, -0.104752496, -0.17722015, -0.092124306, -0.21522388]
-sib[4][2][2] = [-0.06426263, -0.11276391, -0.1925163, -0.11661321, -0.10168587, -0.09961935, -0.05639325, -0.06719341, -0.090978056, -0.13028353, -0.04757992]
-sib[4][2][3] = [-1.10459565E-10, -0.0011986855, 0.04283212, 0.0, -0.006403528, -0.0010610659, -0.004545454, -0.030168634, -0.009606322, -0.0035743571, -0.08554308]
-sib[4][2][4] = [-0.06426263, -0.11276391, -0.1925163, -0.11661321, -0.10168587, -0.09961935, -0.05639325, -0.06719341, -0.090978056, -0.13028353, -0.04757992]
-sib[4][3][3] = [-0.06058728, -0.0979148, -0.05424255, -0.11633432, -0.1772722, -0.10616377, -0.1507355, -0.12918414, -0.098134555, -0.12852645, -0.070781246]
-sib[4][3][4] = [-0.06058728, -0.0979148, -0.05424255, -0.11633432, -0.1772722, -0.10616377, -0.1507355, -0.12918414, -0.098134555, -0.12852645, -0.070781246]
-sib[4][5][4] = [-0.054044735, 0.012123318, 0.009650465, -0.09443181, -0.23345609, -0.12745614, -0.071106635, -0.19992904, -0.027634017, -0.057838816, -0.17831837]
-sib[4][5][5] = [-0.054044735, 0.012123318, 0.009650465, -0.09443181, -0.23345609, -0.12745614, -0.071106635, -0.19992904, -0.027634017, -0.057838816, -0.17831837]
-sib[4][6][4] = [-0.0014760229, -0.036290288]
-sib[4][6][5] = [0.12858586, -0.015006369]
-sib[4][6][6] = [-0.0014760229, -0.036290288]
-sib[4][7][4] = [-0.07685082, -0.0109950565, 0.04009042, -0.12017377, -0.13290358, -0.051449183, -0.03546544, -0.13028136, -0.024157416, -0.051094763, -0.17340602]
-sib[4][7][5] = [-0.049684986, -0.07010144, 0.08261798, -0.08824345, 0.08446929, -0.028010322, -0.0058490587, 0.051007185, -0.0042221253, -0.008554218, -0.01425946]
-sib[4][7][6] = [-0.031865876, -0.0034969435, -0.051817406, -0.008561299, 0.04309825, -0.0039980677, 0.0050420538, -0.021627404, -0.0040520946, -9.703423E-4, -0.010745135]
-sib[4][7][7] = [-0.07685082, -0.0109950565, 0.04009042, -0.12017377, -0.13290358, -0.051449183, -0.03546544, -0.13028136, -0.024157416, -0.051094763, -0.17340602]
-sib[4][8][4] = [-0.010098394, -0.057909343, -0.10233671, -0.064014524, -0.21564847, -0.14862426]
-sib[4][8][5] = [0.05164864, -0.021304846, 0.04144946, -0.012746122, -0.007393649, -0.009085628]
-sib[4][8][6] = [-0.12496985, -0.0034969435, -0.052829344, -0.020642452, -0.0117155025, -0.011573848]
-sib[4][8][7] = [0.030665996, -0.02231672, 0.112717025, -0.0066679395, 0.0055457638, -0.006423532]
-sib[4][8][8] = [-0.010098394, -0.057909343, -0.10233671, -0.064014524, -0.21564847, -0.14862426]
-sib[4][9][4] = [-0.06938398, 0.034909606, 0.10741418, -0.035983317, -0.0630472, -0.12987432, -0.084608644, -0.11253104, -0.025895717, -0.058377907, -0.17978483]
-sib[4][9][5] = [-0.048896812, -0.0678702, 0.11461686, -0.10780097, 0.02315436, -0.029595902, -0.033485673, -5.4621685E-4, -0.008684105, -0.0024631263, -0.013800743]
-sib[4][9][6] = [-0.0391086, -0.0034969435, -0.035686884, -0.010701624, 0.032508813, -0.0069926856, 0.0066839578, -0.018508233, 0.0052291187, -0.0061465385, -0.016639974]
-sib[4][9][7] = [0.09522878, -0.06951603, -0.00371359, -0.07883953, -0.11552522, -0.03553085, -0.043712, -0.050451096, -0.0064717247, -0.010333326, -0.027232168]
-sib[4][9][8] = [0.110481456, -0.025107507, -0.027313342, 0.0643436, -0.020281743, -3.880954E-4, 0.013332176, -0.041317776, 0.0, -0.00273389, 0.003756082]
-sib[4][9][9] = [-0.06938398, 0.034909606, 0.10741418, -0.035983317, -0.0630472, -0.12987432, -0.084608644, -0.11253104, -0.025895717, -0.058377907, -0.17978483]
-sib[4][10][4] = [0.044717442, 0.073492415, -0.103512526, -0.031627126, -0.15162304, -0.1337772, -0.07444595]
-sib[4][10][5] = [0.06762118, -0.018680383, -0.018790904, -0.017205872, -0.01069214, -0.033518903, 0.022457847]
-sib[4][10][6] = [-0.052141756, -0.007714398, -0.008567239, 0.0051205703, 1.1164299E-4, -0.0035912949, -0.022861157]
-sib[4][10][7] = [-0.01665042, -0.0566907, -0.018790904, -0.0034001134, -0.018176608, -0.03981091, 0.06634858]
-sib[4][10][8] = [0.009411858, -0.04614166, -0.022725593, 0.057259593, 0.002291532, 7.999297E-4, 0.056449328]
-sib[4][10][9] = [0.10935048, 0.018468937, -0.018297859, -0.019766212, -0.015054941, -0.024877794, 0.09511633]
-sib[4][10][10] = [0.044717442, 0.073492415, -0.103512526, -0.031627126, -0.15162304, -0.1337772, -0.07444595]
-sib[4][11][4] = [-0.038054492, 0.017533954, 0.114837416, -0.035518527, -0.07224075, -0.16129914, -0.090044595, -0.06993868, -0.024157416, -0.059060056, -0.13999487]
-sib[4][11][5] = [-0.036074486, -0.07912248, 0.115200095, -0.11752356, 0.019956019, -0.026996568, -0.040271208, 0.04096473, -0.0050572436, -0.0053151622, 0.0023254189]
-sib[4][11][6] = [-0.03669436, -0.0034969435, -0.060229473, -0.010701624, 0.035589654, -0.005997102, -0.006190733, -0.023364406, -0.0040520946, 0.005974566, -0.022534816]
-sib[4][11][7] = [0.04329534, -0.07656428, 0.00953258, -0.10308445, -0.10949445, -0.031772226, -0.046619054, -0.073886774, -0.007734212, -0.013185361, 0.0012359582]
-sib[4][11][8] = [0.14895456, -0.036012515, 0.050642148, 0.067201555, 0.041129906, -7.761908E-4, 0.0034649817, -0.04812423, 0.0, 9.137141E-4, 0.011641268]
-sib[4][11][9] = [0.12094496, -0.046149027, 0.06935266, -0.10321512, -0.046747983, -0.037689526, -0.026184201, 0.008284374, -0.003369519, -0.0063851266, -0.0033735158]
-sib[4][11][10] = [0.10789909, 0.037529636, -9.849798E-4, -0.045202315, -0.030076612, -0.015593061, -0.019619161, -0.0038627228, -0.0014785305, -0.0019659526, -0.03767125]
-sib[4][11][11] = [-0.038054492, 0.017533954, 0.114837416, -0.035518527, -0.07224075, -0.16129914, -0.090044595, -0.06993868, -0.024157416, -0.059060056, -0.13999487]
-sib[4][12][4] = [-0.05766942, 0.0054647066, 0.1410987, -0.045467407, -0.08729188, -0.13380544, -0.11316432, -0.10609435, -0.020811122, -0.054954875, -0.13464893]
-sib[4][12][5] = [-0.009443326, -0.07584788, 0.11864605, -0.11233589, 0.025575463, -0.031211957, -0.0382803, 0.017182902, -0.0042221253, -0.008490396, -0.015575324]
-sib[4][12][6] = [-0.03669436, -0.0034969435, -0.066537134, -0.019262923, 0.02827518, -0.005997102, 0.0013817883, -0.023156736, 0.0064144735, 0.0012967229, -0.016639974]
-sib[4][12][7] = [0.08927489, -0.06961218, -0.023282807, -0.09606805, -0.11571034, -0.039108217, -0.0589404, -0.100629196, -0.008667532, -0.019535828, -0.028648913]
-sib[4][12][8] = [0.11635375, -0.036012515, 0.022052249, 0.03603155, 0.06799861, -0.006707558, 0.037565842, 0.012174852, 0.0, 9.137141E-4, 0.003756082]
-sib[4][12][9] = [0.16569388, -0.029209461, 0.04853387, -0.0954872, -0.057292882, -0.04336675, -0.03461307, -0.033564482, -0.0025344007, -0.00956036, -0.02911105]
-sib[4][12][10] = [0.071195826, 0.02620035, -0.100424424, -0.030469187, -0.01974526, -0.012084009, -0.025767213, -0.013560094, -0.0014785305, -0.0019659526, -0.03556287]
-sib[4][12][11] = [0.20056158, -0.06643538, -0.032409538, -0.063266315, -0.11048587, -0.057296515, -0.06250958, -0.059802037, -0.0032337965, -0.007972743, -0.027523026]
-sib[4][12][12] = [-0.05766942, 0.0054647066, 0.1410987, -0.045467407, -0.08729188, -0.13380544, -0.11316432, -0.10609435, -0.020811122, -0.054954875, -0.13464893]
-sib[4][13][4] = [-0.034819357, 0.038213126, 0.11730314, -0.02675486, -0.115882576, -0.13268743, -0.09621497, -0.11421653, -0.029372318, -0.06953435, -0.13320039]
-sib[4][13][5] = [-0.016722493, -0.06961197, 0.116871156, -0.10224965, 0.04181824, -0.029052429, -0.028820321, 0.036074564, -0.0042221253, -0.010078013, -0.029631376]
-sib[4][13][6] = [-0.031865876, -0.0034969435, -0.06485539, -0.025683897, 0.028119579, -0.005997102, 0.0012586355, -0.02747688, -0.0040520946, 0.0, -0.019083811]
-sib[4][13][7] = [0.08326527, -0.06303321, -0.015874784, -0.0893893, -0.09946756, -0.03694869, -0.04948042, -0.082291186, -0.0030968897, -0.021123445, -0.042704962]
-sib[4][13][8] = [0.0991522, -0.034015164, -0.0030244961, 0.0270633, 0.05695989, -0.006707558, 0.037803967, 0.0015231725, 0.0, 8.561501E-4, 0.003756082]
-sib[4][13][9] = [0.14643873, -0.021822449, 0.008100649, -0.07826577, -0.04256078, -0.041207217, -0.021407353, -0.01679664, -0.0025344007, -0.011147978, -0.045203086]
-sib[4][13][10] = [0.052602503, 0.03135809, -0.09951402, -0.019169897, -0.018222826, -0.0102549195, -0.03811585, -0.019497504, 5.0247823E-11, -0.0019659526, -0.03598744]
-sib[4][13][11] = [0.2204431, -0.0447733, -0.0017553885, -0.0668631, -0.1266457, -0.055136986, -0.06280649, -0.055425752, -0.0032337965, -0.011147978, -0.03677142]
-sib[4][13][12] = [0.15387122, -0.029928438, -0.049746484, -0.033426255, -0.075446546, -0.03582687, -0.03499894, -0.083393, -0.0048520667, -0.017430559, -0.05910195]
-sib[4][13][13] = [-0.034819357, 0.038213126, 0.11730314, -0.02675486, -0.115882576, -0.13268743, -0.09621497, -0.11421653, -0.029372318, -0.06953435, -0.13320039]
-sib[4][14][4] = [-0.25785947, 0.12841938, 0.006676249, 0.103322335, -0.19626357, -0.05233198, 0.06283919, 0.099652715]
-sib[4][14][5] = [-0.03720701, 0.10279249, -0.0155701935, -0.04274565, 0.024220739, -0.0061849365, -0.032148156, -0.004221876]
-sib[4][14][6] = [0.29295436, -0.05218232, 0.007913021, -0.0034969435, -0.0017050705, -0.0029460045, -0.021370051, -0.005997102]
-sib[4][14][7] = [-0.057200015, 0.02026982, -0.04003219, -0.047290314, 0.0119293835, -0.009658267, 0.034652296, -0.004221876]
-sib[4][14][8] = [-0.057784926, 0.014249502, 0.111262836, 0.023619492, 0.012321563, -0.0024445008, 0.056449328, -7.761908E-4]
-sib[4][14][9] = [-0.09395609, 0.083728805, -0.018527146, -0.017604437, 0.008007561, -0.011369062, 0.074114524, -0.009049619]
-sib[4][14][10] = [-0.0062989416, -0.056490522, -0.010225024, -0.040908042, -0.009007444, -0.0023863493, 0.044472635, -0.012659982]
-sib[4][14][11] = [-0.034058698, 0.06728889, 0.0016594138, -0.044192065, -0.004975613, -0.006927175, 0.09722956, -0.008870404]
-sib[4][14][12] = [0.017230764, 0.0775327, -0.006492055, -0.030868255, -0.0021692405, -0.004177059, 0.104205206, -0.0071786777]
-sib[4][14][13] = [-0.020297935, 0.048180707, -0.0027787832, -0.032672606, -0.007669338, -0.0045733177, 0.110635415, -0.007258229]
-sib[4][14][14] = [-0.25785947, 0.12841938, 0.006676249, 0.103322335, -0.19626357, -0.05233198, 0.06283919, 0.099652715]
-sib[5][0][0] = [-0.013991715]
-sib[5][0][1] = [0.020473363]
-sib[5][0][2] = [-0.0114432555]
-sib[5][0][3] = [0.001716299]
-sib[5][0][4] = [0.0026450125]
-sib[5][0][5] = [-0.013991715]
-sib[5][1][1] = [-0.02070929, -0.10959918, -0.08935779, -0.16785827, -0.092124306, -0.18564034]
-sib[5][1][2] = [0.045357592, -0.0024686644, -0.018948799, 0.002736577, -0.004425691, -0.0017134671]
-sib[5][1][3] = [0.20380627, -0.0011986855, 0.018373724, -0.0010610658, -0.011354887, -0.0020284676]
-sib[5][1][4] = [0.18631344, 1.2342613E-10, 0.017089274, -0.0033572963, -0.008851382, -0.0020284676]
-sib[5][1][5] = [-0.02070929, -0.10959918, -0.08935779, -0.16785827, -0.092124306, -0.18564034]
-sib[5][2][2] = [-0.057222914, -0.09492177, -0.12381624, -0.10121852, -0.10252683, -0.09025747, -0.04938847, -0.059581477, -0.09315635, -0.12234431, -0.01799638]
-sib[5][2][3] = [-1.10459565E-10, -0.0011986855, 0.03549111, 0.0, -0.004048791, -0.0010610659, -0.006800021, -0.03606269, -0.009606322, -0.0042461595, -0.08717637]
-sib[5][2][4] = [-1.10459565E-10, 1.3019351E-10, 0.031250264, -0.004602578, 0.012307799, -0.0010610659, -0.0036521195, -0.023576815, -0.012198655, 0.0, -0.09329657]
-sib[5][2][5] = [-0.057222914, -0.09492177, -0.12381624, -0.10121852, -0.10252683, -0.09025747, -0.04938847, -0.059581477, -0.09315635, -0.12234431, -0.01799638]
-sib[5][3][3] = [-0.053547565, -0.122934654, -0.07447434, -0.12004759, -0.15799122, -0.10599553, -0.11088853, -0.111150794, -0.10031285, -0.1291133, -0.008397517]
-sib[5][3][4] = [-9.0646456E-11, 2.235752E-10, 0.05345586, 0.0, -0.022630576, 7.305343E-4, 0.0031873789, 0.0077236216, -0.012198654, 0.0, -0.06923724]
-sib[5][3][5] = [-0.053547565, -0.122934654, -0.07447434, -0.12004759, -0.15799122, -0.10599553, -0.11088853, -0.111150794, -0.10031285, -0.1291133, -0.008397517]
-sib[5][4][4] = [-0.053547565, -0.080072656, 0.018722693, -0.09064961, -0.18364106, -0.09680189, -0.14517066, -0.13152951, -0.10031285, -0.112729274, -0.07246438]
-sib[5][4][5] = [-0.053547565, -0.080072656, 0.018722693, -0.09064961, -0.18364106, -0.09680189, -0.14517066, -0.13152951, -0.10031285, -0.112729274, -0.07246438]
-sib[5][6][5] = [-0.0069973017, -0.057975613]
-sib[5][6][6] = [-0.0069973017, -0.057975613]
-sib[5][7][5] = [-0.07812354, -0.05433413, -0.05680359, -0.14005183, -0.1564012, -0.045264285, -0.03546544, -0.13028136, -0.024157416, -0.043367013, -0.17340602]
-sib[5][7][6] = [-0.027037395, -0.0016036503, -0.046380665, -0.0064209746, 0.04309825, -0.0039980677, 0.0036118033, -0.019141719, 0.0, -9.703423E-4, -0.008190515]
-sib[5][7][7] = [-0.07812354, -0.05433413, -0.05680359, -0.14005183, -0.1564012, -0.045264285, -0.03546544, -0.13028136, -0.024157416, -0.043367013, -0.17340602]
-sib[5][8][5] = [-0.10699241, -0.101248406, -0.12221478, -0.057829622, -0.21564847, -0.14862426]
-sib[5][8][6] = [-0.1206842, -0.0016036503, -0.045305535, -0.017991304, -0.0117155025, -0.0067315595]
-sib[5][8][7] = [0.039422035, -0.019231547, 0.1148796, -0.0066679395, -0.0049644983, -0.006423532]
-sib[5][8][8] = [-0.10699241, -0.101248406, -0.12221478, -0.057829622, -0.21564847, -0.14862426]
-sib[5][9][5] = [-0.0706567, -0.00842947, 0.0105201565, -0.055861387, -0.0865448, -0.123689435, -0.084608644, -0.11253104, -0.025895717, -0.05065016, -0.17978483]
-sib[5][9][6] = [-0.034280118, -0.0016036503, -0.031616483, -0.008561299, 0.032508813, -0.0069926856, 0.005253707, -0.014723899, 0.009281213, -0.0061465385, -0.014085354]
-sib[5][9][7] = [0.09625212, -0.06643085, 0.008681927, -0.07667696, -0.11552522, -0.03553085, -0.043712, -0.050451096, -0.0062997285, -0.010333326, -0.027232168]
-sib[5][9][8] = [0.0955457, -0.025107507, -0.056608, 0.057471104, -0.016701257, 1.6950024E-4, 0.013332176, -0.041317776, 0.0, -0.004396819, 0.004836182]
-sib[5][9][9] = [-0.0706567, -0.00842947, 0.0105201565, -0.055861387, -0.0865448, -0.123689435, -0.084608644, -0.11253104, -0.025895717, -0.05065016, -0.17978483]
-sib[5][10][5] = [-0.052176554, 0.030153338, -0.097327635, -0.051505208, -0.15162304, -0.1337772, -0.075718686]
-sib[5][10][6] = [-0.046405777, -0.005821105, -0.008567239, 0.0051205703, 1.1164299E-4, -0.0010366742, -0.020446917]
-sib[5][10][7] = [-0.0042549046, -0.053605534, -0.018790904, -0.0012375494, -0.018893855, -0.03981091, 0.06737193]
-sib[5][10][8] = [-0.030470861, -0.04614166, -0.022168, 0.04551848, 0.00461428, 0.00188003, 0.03547753]
-sib[5][10][9] = [0.118106514, 0.021554112, -0.016426917, -0.017603647, -0.015054941, -0.024877794, 0.09857213]
-sib[5][10][10] = [-0.052176554, 0.030153338, -0.097327635, -0.051505208, -0.15162304, -0.1337772, -0.075718686]
-sib[5][11][5] = [-0.039327215, -0.025805116, 0.017943379, -0.0553966, -0.095738366, -0.15511423, -0.090044595, -0.06993868, -0.024157416, -0.051332314, -0.13999487]
-sib[5][11][6] = [-0.029451635, -0.0016036503, -0.051301815, -0.008561299, 0.035589654, -0.005997102, -0.003960719, -0.019580074, 0.0, 0.005974566, -0.019980194]
-sib[5][11][7] = [0.044318676, -0.0734791, 0.021928096, -0.10092189, -0.10949445, -0.031772226, -0.046619054, -0.073886774, -0.0075622164, -0.013185361, 0.0012359582]
-sib[5][11][8] = [0.12798275, -0.036012515, 0.010759438, 0.055460453, 0.044710394, -2.1859515E-4, 0.0034649817, -0.04812423, 0.0, -7.4921496E-4, 0.012721368]
-sib[5][11][9] = [0.122632876, -0.043063845, 0.08343441, -0.10105256, -0.04614701, -0.035818584, -0.026184201, 0.008284374, -0.0058744918, -0.00870971, -0.0033735158]
-sib[5][11][10] = [0.10789909, 0.03907222, 0.0065080505, -0.045202315, -0.030076612, -0.015593061, -0.015956124, -0.0038627228, 0.012713905, -0.0019659526, -0.039875332]
-sib[5][11][11] = [-0.039327215, -0.025805116, 0.017943379, -0.0553966, -0.095738366, -0.15511423, -0.090044595, -0.06993868, -0.024157416, -0.051332314, -0.13999487]
-sib[5][12][5] = [-0.05894215, -0.03787438, 0.044204667, -0.06534549, -0.11078949, -0.12762056, -0.11316432, -0.10609435, -0.020811122, -0.04722713, -0.13464893]
-sib[5][12][6] = [-0.029451635, -0.0016036503, -0.059930466, -0.014982273, 0.02827518, -0.005997102, 0.0036118033, -0.019372404, 0.010466568, 0.0012967229, -0.014085353]
-sib[5][12][7] = [0.090298235, -0.066527, -0.010887292, -0.093905486, -0.11571034, -0.039108217, -0.0589404, -0.100629196, -0.008495537, -0.019535828, -0.028648913]
-sib[5][12][8] = [0.09538196, -0.036012515, -0.017830458, 0.024290444, 0.07157909, -0.0061499625, 0.037565842, 0.012174852, 0.0, -7.4921496E-4, 0.004836182]
-sib[5][12][9] = [0.16738178, -0.02612428, 0.06261563, -0.09332464, -0.05669192, -0.041495804, -0.03461307, -0.033564482, -0.0050393734, -0.0118849445, -0.02911105]
-sib[5][12][10] = [0.071195826, 0.027742948, -0.092931375, -0.030469187, -0.01974526, -0.012084009, -0.02210418, -0.013560094, 0.012713905, -0.0019659526, -0.037766952]
-sib[5][12][11] = [0.20401737, -0.06180762, -0.017890045, -0.061103754, -0.11048587, -0.057296515, -0.06250958, -0.059802037, -0.005738769, -0.007972743, -0.027523026]
-sib[5][12][12] = [-0.05894215, -0.03787438, 0.044204667, -0.06534549, -0.11078949, -0.12762056, -0.11316432, -0.10609435, -0.020811122, -0.04722713, -0.13464893]
-sib[5][13][5] = [-0.03609209, -0.0051259417, 0.020409117, -0.046632934, -0.1393802, -0.12650257, -0.09621497, -0.11421653, -0.029372318, -0.0618066, -0.13320039]
-sib[5][13][6] = [-0.027037395, -0.0016036503, -0.058248725, -0.019262923, 0.028119579, -0.005997102, -1.7161481E-4, -0.023692548, 0.0, 0.0, -0.016529191]
-sib[5][13][7] = [0.084288605, -0.05994803, -0.0034792693, -0.08722674, -0.09946756, -0.03694869, -0.04948042, -0.082291186, -0.0029248935, -0.021123445, -0.042704962]
-sib[5][13][8] = [0.07818041, -0.034015164, -0.0429072, 0.015322188, 0.06054037, -0.0061499625, 0.037803967, 0.0015231725, 0.0, -8.0677896E-4, 0.004836182]
-sib[5][13][9] = [0.14812665, -0.018737271, 0.022182394, -0.07610321, -0.041959807, -0.039336275, -0.021407353, -0.01679664, -0.0050393734, -0.013472561, -0.045203086]
-sib[5][13][10] = [0.052602503, 0.032900687, -0.092021, -0.019169897, -0.018222826, -0.0102549195, -0.03445282, -0.019497504, 0.014192436, -0.0019659526, -0.038191523]
-sib[5][13][11] = [0.22147283, -0.040145542, 0.011916089, -0.06470054, -0.1266457, -0.055136986, -0.06280649, -0.055425752, -0.005738769, -0.011147978, -0.03677142]
-sib[5][13][12] = [0.16193217, -0.025300676, -0.04007332, -0.026181616, -0.075446546, -0.03582687, -0.03499894, -0.083393, -0.008495537, -0.017430559, -0.05910195]
-sib[5][13][13] = [-0.03609209, -0.0051259417, 0.020409117, -0.046632934, -0.1393802, -0.12650257, -0.09621497, -0.11421653, -0.029372318, -0.0618066, -0.13320039]
-sib[5][14][5] = [-0.25537568, 0.03152537, -0.013201834, 0.059983265, -0.15300572, -0.05233198, 0.06156646, 0.1058376]
-sib[5][14][6] = [0.22932234, -0.047896665, 0.00977265, -0.0016036503, 0.0028055469, 0.0011060901, -0.018955812, -0.005997102]
-sib[5][14][7] = [-0.057181142, 0.032665327, -0.03786962, -0.044205137, 0.01412938, -0.009486271, 0.03567564, -0.004221876]
-sib[5][14][8] = [-0.10915528, -0.025633207, 0.09952172, 0.023619492, 0.012321563, -0.0024445008, 0.03547753, -2.1859512E-4]
-sib[5][14][9] = [-0.09114166, 0.09781057, -0.016364582, -0.014519258, 0.010207557, -0.013874034, 0.07580243, -0.0071786777]
-sib[5][14][10] = [-0.022430215, -0.048997488, -0.010225024, -0.039365456, -0.030367618, 0.011806087, 0.044472635, -0.012659982]
-sib[5][14][11] = [-0.03267824, 0.08096037, 0.0038219786, -0.0395643, -0.002775615, -0.009432147, 0.09825929, -0.008870404]
-sib[5][14][12] = [0.013550812, 0.08635787, 7.5257575E-4, -0.026240492, 0.0012436521, -0.007820529, 0.10984009, -0.0071786777]
-sib[5][14][13] = [-0.016257526, 0.06910189, 0.0015463475, -0.028044844, -0.004256447, -0.0070782905, 0.11869636, -0.007258229]
-sib[5][14][14] = [-0.25537568, 0.03152537, -0.013201834, 0.059983265, -0.15300572, -0.05233198, 0.06156646, 0.1058376]
-sib[6][0][0] = [-0.022900363]
-sib[6][0][1] = [-0.057151113]
-sib[6][0][2] = [0.011239517]
-sib[6][0][3] = [0.10355931]
-sib[6][0][4] = [0.10113679]
-sib[6][0][5] = [0.07846503]
-sib[6][0][6] = [-0.022900363]
-sib[6][1][1] = [-8.780435E-4, 0.054963592, -0.19108737, -0.12623905]
-sib[6][1][2] = [0.08165514, 0.020282855, 0.009559401, 0.0]
-sib[6][1][3] = [0.31926402, 0.18964835, 0.0109074125, -0.0049274187]
-sib[6][1][4] = [0.3212951, 0.1837927, 0.0109074125, -0.007223649]
-sib[6][1][5] = [0.27594438, 0.17922972, 0.010594603, -0.0014743196]
-sib[6][1][6] = [-8.780435E-4, 0.054963592, -0.19108737, -0.12623905]
-sib[6][2][2] = [-0.11222258, 0.050404858, 0.047185533, -0.12299454, -0.01300682, -0.12578073]
-sib[6][2][3] = [-0.18014275, 0.024966255, -0.05153896, 0.10415388, 0.0067137536, -0.0041224123]
-sib[6][2][4] = [-0.19134797, 0.055446297, -0.04143285, 0.12907921, 0.0076070875, -5.4805516E-4]
-sib[6][2][5] = [-0.2072391, 0.047943812, -0.038106382, 0.11535951, 0.005871078, -5.480552E-4]
-sib[6][2][6] = [-0.11222258, 0.050404858, 0.047185533, -0.12299454, -0.01300682, -0.12578073]
-sib[6][3][3] = [0.016463423, -0.0050595235, -0.0043837857, -0.07365265, -0.0745069, -0.13254973]
-sib[6][3][4] = [-0.23648699, 0.004247016, -0.013646705, 0.11907454, 0.014446586, -5.4805516E-4]
-sib[6][3][5] = [-0.2675099, 0.035713844, -2.141227E-4, 0.123929575, 0.013603911, -0.0041251206]
-sib[6][3][6] = [0.016463423, -0.0050595235, -0.0043837857, -0.07365265, -0.0745069, -0.13254973]
-sib[6][4][4] = [-0.0053208517, -0.010587407, -0.014341103, -0.06938746, -0.07594687, -0.124691784]
-sib[6][4][5] = [-0.2547534, 0.0011128939, -0.010320229, 0.11575825, 0.016701154, -5.480552E-4]
-sib[6][4][6] = [-0.0053208517, -0.010587407, -0.014341103, -0.06938746, -0.07594687, -0.124691784]
-sib[6][5][5] = [-0.046530344, -0.024754517, -0.026675642, -0.06694023, -0.08020722, -0.122011766]
-sib[6][5][6] = [-0.046530344, -0.024754517, -0.026675642, -0.06694023, -0.08020722, -0.122011766]
-sib[6][7][6] = [-0.06668398, 0.15701908, 0.053081654, -0.041562922, -0.09335676, -0.045879193]
-sib[6][7][7] = [-0.06668398, 0.15701908, 0.053081654, -0.041562922, -0.09335676, -0.045879193]
-sib[6][8][6] = [0.031888455, -0.020159408, -0.115749374, -0.068911076]
-sib[6][8][7] = [0.016328888, 0.31059718, -0.046885177, -0.0030382373]
-sib[6][8][8] = [0.031888455, -0.020159408, -0.115749374, -0.068911076]
-sib[6][9][6] = [-0.015463634, 0.24337994, 0.055914782, 0.0537837, -0.15392841, -0.053162336]
-sib[6][9][7] = [0.10410624, -0.18479788, 0.04730715, 0.012246521, -0.07957622, -8.776218E-4]
-sib[6][9][8] = [0.027913697, 0.05140003, -0.092991486, 0.029301297, 0.0036965762, -0.006102523]
-sib[6][9][9] = [-0.015463634, 0.24337994, 0.055914782, 0.0537837, -0.15392841, -0.053162336]
-sib[6][10][6] = [0.1638811, 0.0075014764, -0.0685837, 0.017256824, 0.009674108, 0.008494894]
-sib[6][10][7] = [-0.09328745, -0.04625144, 0.07584937, 0.09840125, -0.013758433, 0.21754192]
-sib[6][10][8] = [0.030252352, 0.006564774, -0.0014200294, -0.066030756, 0.0021090396, -0.055661373]
-sib[6][10][9] = [-0.030235123, 0.03063292, 1.0149321E-5, 0.02545148, -0.0042993072, 0.029465321]
-sib[6][10][10] = [0.1638811, 0.0075014764, -0.0685837, 0.017256824, 0.009674108, 0.008494894]
-sib[6][11][6] = [-0.01100229, 0.23418641, 0.098507136, 0.06120694, -0.15936437, -0.05384449]
-sib[6][11][7] = [0.054312088, -0.17876709, 0.023871478, 0.02549269, -0.08248328, -0.0037296575]
-sib[6][11][8] = [0.039586127, 0.12569854, -0.084939435, 0.055912003, -0.0021388545, -0.0024549188]
-sib[6][11][9] = [-0.057456873, -0.036878854, 0.0153086055, -0.017903224, -0.02430544, 0.0027138065]
-sib[6][11][10] = [-9.1476756E-4, -0.026575249, -0.045395516, 0.12486483, -0.090377145, 7.5696927E-4]
-sib[6][11][11] = [-0.01100229, 0.23418641, 0.098507136, 0.06120694, -0.15936437, -0.05384449]
-sib[6][12][6] = [-0.02428934, 0.21913527, 0.062351488, 0.08746822, -0.18248409, -0.049739305]
-sib[6][12][7] = [0.08172652, -0.18498299, -0.002870936, -0.0073226904, -0.09480462, -0.010080125]
-sib[6][12][8] = [0.060293876, 0.15256722, -0.024640348, 0.027322117, 0.031962015, -0.0024549188]
-sib[6][12][9] = [-0.035604056, -0.047423758, -0.026540251, -0.038722, -0.032734312, -4.614269E-4]
-sib[6][12][10] = [-0.018368417, -0.0162439, -0.055092886, 0.051493347, -0.09652519, 7.5696927E-4]
-sib[6][12][11] = [-0.0030203306, -0.14671642, -0.01671135, 0.03598261, -0.07687208, -1.0438182E-4]
-sib[6][12][12] = [-0.02428934, 0.21913527, 0.062351488, 0.08746822, -0.18248409, -0.049739305]
-sib[6][13][6] = [-0.03134952, 0.19054458, 0.054229297, 0.06367267, -0.16553473, -0.064318776]
-sib[6][13][7] = [0.03901016, -0.16874021, 0.015467081, 8.532498E-5, -0.085344635, -0.01166774]
-sib[6][13][8] = [0.10142052, 0.14152852, -0.03529203, 0.0022453656, 0.032200135, -0.002512483]
-sib[6][13][9] = [-0.08208025, -0.032691646, -0.009772409, -0.079155244, -0.01952859, -0.0020490438]
-sib[6][13][10] = [-0.026550043, -0.0147214625, -0.061030302, 0.052403733, -0.10887383, 7.5696927E-4]
-sib[6][13][11] = [-0.022819908, -0.16087684, -0.0112027, 0.024575166, -0.067042306, -0.0032796157]
-sib[6][13][12] = [-0.029787974, -0.11174141, -0.028042313, -0.016218323, -0.045164082, -0.0054269037]
-sib[6][13][13] = [-0.03134952, 0.19054458, 0.054229297, 0.06367267, -0.16553473, -0.064318776]
-sib[6][14][6] = [-0.3345765, -0.05440959, 0.040200546, 0.12801376, 0.01691782, 0.08181266, 0.045465887, -0.06269189, 0.19499904, -0.03643303, -0.045039263]
-sib[6][14][7] = [-0.11123689, -0.04801243, 0.108130954, -0.0027912362, 0.019480383, 0.08817583, 0.17541601, 0.03268152, -0.10618995, 8.067688E-4, 0.0019499091]
-sib[6][14][8] = [0.08267829, -0.018383445, -0.0056146653, -0.008550599, -0.012715477, -0.06417089, 0.006681534, -0.05969155, 0.047013845, -0.0024445008, -0.0049756025]
-sib[6][14][9] = [-0.05278799, -0.0128073795, 0.019861616, -0.04254823, 0.049759973, 0.005107398, 0.0054259934, 0.049033057, -0.021200787, -0.0060650813, 0.004518865]
-sib[6][14][10] = [-0.045886233, -0.073182315, -0.0291582, 0.11211588, -0.0011666183, -0.039041538, -0.043296024, -0.025777517, -1.710013E-4, -0.0016210296, -3.3870904E-4]
-sib[6][14][11] = [0.058548182, -0.009585906, 0.049257465, 0.054598287, 0.019539595, 0.034960963, -0.021758793, -0.012782857, -0.07152735, -0.0018835319, -0.0016170464]
-sib[6][14][12] = [0.025623873, -0.0070910985, 0.052799314, 0.029978123, 0.015759178, 0.04479893, -0.010567277, 0.003709057, -0.080064036, 0.0029438091, 0.0021973252]
-sib[6][14][13] = [9.183455E-4, -0.022048544, 0.05698071, 0.05393573, 0.015255726, 0.043666583, 0.0017024414, 0.013851647, -0.06619368, 0.0024183872, 0.0021973252]
-sib[6][14][14] = [-0.3345765, -0.05440959, 0.040200546, 0.12801376, 0.01691782, 0.08181266, 0.045465887, -0.06269189, 0.19499904, -0.03643303, -0.045039263]
-sib[7][0][0] = [0.010996293]
-sib[7][0][1] = [0.021207577]
-sib[7][0][2] = [0.008265113]
-sib[7][0][3] = [0.005559855]
-sib[7][0][4] = [0.0035264082]
-sib[7][0][5] = [0.0021829614]
-sib[7][0][6] = [-0.009157593]
-sib[7][0][7] = [0.010996293]
-sib[7][1][1] = [0.019516613, -0.042894334, -0.04891747, -0.16450386, -0.08597361, -0.16393876]
-sib[7][1][2] = [0.065065965, -0.0010550767, -0.020631796, 0.002736577, -6.542017E-4, -0.00419551]
-sib[7][1][3] = [0.2076498, 0.0028507598, 0.014616444, -0.00858758, -0.008421026, -0.0020284678]
-sib[7][1][4] = [0.21006994, 0.0, 0.010835064, -0.0063792104, -0.008851382, -0.0020284678]
-sib[7][1][5] = [0.23289569, 0.0, 0.019819837, -0.00408298, -0.008851382, -0.0052061304]
-sib[7][1][6] = [0.051611308, -0.0020070989, -0.018679755, -3.151076E-4, 0.013253022, -0.011876351]
-sib[7][1][7] = [0.019516613, -0.042894334, -0.04891747, -0.16450386, -0.08597361, -0.16393876]
-sib[7][2][2] = [-0.057888865, -0.02821692, -0.08359034, -0.06077819, -0.08085317, -0.086903065, -0.058034517, -0.058742765, -0.0870358, -0.108123936, 0.0037051851]
-sib[7][2][3] = [0.005249313, 0.0028507598, 0.03851226, -0.0037572803, -0.012854091, -0.0055656657, 0.023232648, -0.020314965, -0.0013696172, -0.0052313716, -0.08717637]
-sib[7][2][4] = [0.005249313, 6.7673783E-12, 0.027485203, -0.006285575, 0.015750417, -0.00408298, -0.005906687, -0.026932385, -0.0039619496, 0.0, -0.09492986]
-sib[7][2][5] = [0.0, 6.7673783E-12, 0.036819294, 0.0, 0.011115744, -0.0027740486, -0.0076426957, -0.019999389, -0.0039619496, -0.0014217849, -0.09329657]
-sib[7][2][6] = [-0.002669402, -0.004425875, 0.015476611, 0.0035821022, -0.0015197482, -3.1510755E-4, 0.0013554007, -0.008296368, 0.0, -0.0026259448, -0.032617223]
-sib[7][2][7] = [-0.057888865, -0.02821692, -0.08359034, -0.06077819, -0.08085317, -0.086903065, -0.058034517, -0.058742765, -0.0870358, -0.108123936, 0.0037051851]
-sib[7][3][3] = [-0.054213516, -0.056229804, -0.03424845, -0.079607256, -0.13631754, -0.10264112, -0.119534604, -0.11031208, -0.0941923, -0.11489293, 0.013304057]
-sib[7][3][4] = [0.005249313, 1.0014907E-10, 0.053822003, -0.0016829971, -0.023169383, 7.305342E-4, 9.328113E-4, 0.0043680533, -0.003961949, 0.0, -0.070870526]
-sib[7][3][5] = [1.9813108E-11, 1.0014907E-10, 0.04538936, 0.0, -0.0011142243, -9.824485E-4, 9.0136426E-5, 0.017892864, -0.0065542813, -0.00499885, -0.07586638]
-sib[7][3][6] = [0.0018903521, -0.0066188276, 0.037315063, 0.0030355034, -0.0015197482, -3.1510755E-4, 0.00258643, -0.005530912, -0.0012453651, -0.0026259448, -0.04723473]
-sib[7][3][7] = [-0.054213516, -0.056229804, -0.03424845, -0.079607256, -0.13631754, -0.10264112, -0.119534604, -0.11031208, -0.0941923, -0.11489293, 0.013304057]
-sib[7][4][4] = [-0.054213516, -0.056229804, -0.02998326, -0.06931724, -0.14184542, -0.10264112, -0.12097458, -0.120269395, -0.0941923, -0.10703498, -0.01796261]
-sib[7][4][5] = [1.9813108E-11, 1.0014907E-10, 0.06440448, 0.0, -0.02382263, 0.0020394656, 0.0031873793, 0.011301048, -0.0056409836, -0.0014217849, -0.07289222]
-sib[7][4][6] = [0.0018903521, -0.004425875, 0.037315063, 0.0030355034, -0.0015197482, -3.1510755E-4, 0.00258643, -0.005530912, -0.0012453651, -2.8477004E-4, -0.04723473]
-sib[7][4][7] = [-0.054213516, -0.056229804, -0.02998326, -0.06931724, -0.14184542, -0.10264112, -0.12097458, -0.120269395, -0.0941923, -0.10703498, -0.01796261]
-sib[7][5][5] = [-0.054213516, -0.051324546, -0.028492367, -0.06816616, -0.15643947, -0.10264112, -0.15897451, -0.12543847, -0.0941923, -0.11489293, -0.07503934]
-sib[7][5][6] = [0.0018903521, -0.004425875, 0.03719254, 0.0016454, -0.0015197482, -3.1510755E-4, 0.00258643, -0.005530912, -0.0012453651, -0.0026259448, -0.0430724]
-sib[7][5][7] = [-0.054213516, -0.051324546, -0.028492367, -0.06816616, -0.15643947, -0.10264112, -0.15897451, -0.12543847, -0.0941923, -0.11489293, -0.07503934]
-sib[7][6][6] = [-0.085978806, -0.14015438]
-sib[7][6][7] = [-0.085978806, -0.14015438]
-sib[7][8][7] = [0.09145066, -0.07198008, 0.13344514, -0.019058011, -0.19137497, -0.08871789]
-sib[7][8][8] = [0.09145066, -0.07198008, 0.13344514, -0.019058011, -0.19137497, -0.08871789]
-sib[7][9][7] = [-0.031885665, -0.002001539, 0.048732176, 0.06327891, -0.068889074, -0.101456136, -0.06247451, -0.12991948, -0.029551104, -0.047641955, -0.14544168]
-sib[7][9][8] = [0.07952398, -0.017923644, 0.010222033, 0.029505935, -0.0011618757, -3.880954E-4, 0.015562127, -0.018838957, 0.0, -0.004396819, 0.008740568]
-sib[7][9][9] = [-0.031885665, -0.002001539, 0.048732176, 0.06327891, -0.068889074, -0.101456136, -0.06247451, -0.12991948, -0.029551104, -0.047641955, -0.14544168]
-sib[7][10][7] = [-0.013964549, 0.03658127, -0.07509431, 0.067635104, -0.15079187, -0.09943407, -0.036947634]
-sib[7][10][8] = [-0.004245987, -0.038026284, -0.019059833, 0.0013370246, 0.0010751414, 0.005784415, 0.024770517]
-sib[7][10][9] = [0.08163267, -0.0052820547, -0.01810176, -0.037956532, -0.015054941, -0.024215773, 0.023180518]
-sib[7][10][10] = [-0.013964549, 0.03658127, -0.07509431, 0.067635104, -0.15079187, -0.09943407, -0.036947634]
-sib[7][11][7] = [-5.561798E-4, -0.019377183, 0.056155406, 0.06374371, -0.07808261, -0.13288094, -0.06791046, -0.08732714, -0.027812803, -0.048324108, -0.10565175]
-sib[7][11][8] = [0.09843541, -0.028828653, 0.080446735, 0.034427915, 0.06900093, -7.761908E-4, 0.006813285, -0.014959782, 0.0, -7.49215E-4, 0.008740568]
-sib[7][11][9] = [0.047241263, -0.069900006, 0.048805356, -0.112408206, -0.06311045, -0.037493426, -0.024437603, 0.010386061, -0.0050572436, -0.010720863, -0.0027114945]
-sib[7][11][10] = [0.047056198, 0.042475596, -0.047744174, -0.057172924, -0.030490663, -0.014323417, -0.024300834, -0.005170907, -0.00481218, 6.394236E-11, -0.039119426]
-sib[7][11][11] = [-5.561798E-4, -0.019377183, 0.056155406, 0.06374371, -0.07808261, -0.13288094, -0.06791046, -0.08732714, -0.027812803, -0.048324108, -0.10565175]
-sib[7][12][7] = [-0.020171098, -0.031446446, 0.08241671, 0.05379483, -0.09313373, -0.10538727, -0.09103019, -0.1234828, -0.024466509, -0.044218924, -0.1003058]
-sib[7][12][8] = [0.07449598, -0.028828653, 0.05895011, 0.002796925, 0.11660792, -0.006707558, 0.038684193, 0.039116763, 0.0, -7.49215E-4, 0.008740568]
-sib[7][12][9] = [0.09199017, -0.052960448, 0.027986571, -0.104680285, -0.07365536, -0.043170646, -0.03286647, -0.031462796, -0.0042221253, -0.013896097, -0.028449029]
-sib[7][12][10] = [0.010352926, 0.031146316, -0.1471836, -0.042439796, -0.020159317, -0.010814365, -0.030448886, -0.014868278, -0.00481218, 6.394236E-11, -0.037011046]
-sib[7][12][11] = [0.10722286, -0.07493079, 0.025387798, -0.07814595, -0.12289652, -0.058971357, -0.060762983, -0.05770035, -0.0032337965, -0.012308481, -0.026861008]
-sib[7][12][12] = [-0.020171098, -0.031446446, 0.08241671, 0.05379483, -0.09313373, -0.10538727, -0.09103019, -0.1234828, -0.024466509, -0.044218924, -0.1003058]
-sib[7][13][7] = [0.0026789322, 0.0013019902, 0.058621146, 0.07250738, -0.12172444, -0.10426925, -0.07408085, -0.13160497, -0.03302771, -0.058798395, -0.09885727]
-sib[7][13][8] = [0.0631651, -0.02597448, 0.037828177, -0.009120149, 0.11996424, -0.006707558, 0.04226387, 0.04394432, 0.0, -8.06779E-4, 0.008740568]
-sib[7][13][9] = [0.07273503, -0.045573436, -0.012446653, -0.087458864, -0.058923244, -0.041011117, -0.019660754, -0.014694952, -0.0042221253, -0.015483716, -0.044541065]
-sib[7][13][10] = [-0.008240411, 0.036304057, -0.14627323, -0.03114051, -0.018636882, -0.008985275, -0.04279752, -0.020805689, -0.0033336494, 6.394236E-11, -0.037435617]
-sib[7][13][11] = [0.1255262, -0.053268705, 0.068387896, -0.08174273, -0.13905635, -0.05681183, -0.06105988, -0.053324066, -0.0032337965, -0.008510702, -0.03840468]
-sib[7][13][12] = [0.03452136, -0.04630676, -0.02264944, -0.039773952, -0.0878572, -0.03750171, -0.03325234, -0.07886929, -0.0031040115, -0.021766298, -0.05843993]
-sib[7][13][13] = [0.0026789322, 0.0013019902, 0.058621146, 0.07250738, -0.12172444, -0.10426925, -0.07408085, -0.13160497, -0.03302771, -0.058798395, -0.09885727]
-sib[7][14][7] = [-0.26414376, 0.06973738, 0.10593847, 0.0664112, -0.1071457, -0.055987366, 0.10033749, 0.12807092]
-sib[7][14][8] = [-0.11902496, 0.008113168, 0.06471773, 0.016862381, 0.004339601, -0.0024445008, 0.024770517, -7.761908E-4]
-sib[7][14][9] = [-0.045185737, 0.06318151, -0.027720224, -0.041355416, 0.014794314, -0.013056786, 4.108306E-4, -0.00885352]
-sib[7][14][10] = [-0.0061226934, -0.103249714, -0.022195634, -0.035962082, 3.397325E-5, -0.005719999, -0.01637028, -0.011390338]
-sib[7][14][11] = [0.0053691436, 0.13743219, -0.013220221, -0.05268746, 0.0016800195, -0.006927175, 0.0023126388, -0.010545246]
-sib[7][14][12] = [0.055539697, 0.11697571, -0.012839755, -0.047246568, 0.009567992, -0.0024290038, -0.016722832, -0.00885352]
-sib[7][14][13] = [0.021415919, 0.086525775, -0.012045981, -0.049050927, 0.004067893, -0.0016867651, -0.008714438, -0.008933071]
-sib[7][14][14] = [-0.26414376, 0.06973738, 0.10593847, 0.0664112, -0.1071457, -0.055987366, 0.10033749, 0.12807092]
-sib[8][0][0] = [-0.1306883]
-sib[8][0][1] = [-0.0031998698]
-sib[8][0][2] = [-0.013289453]
-sib[8][0][3] = [-0.008273367]
-sib[8][0][4] = [-0.010306813]
-sib[8][0][5] = [-0.010239473]
-sib[8][0][6] = [0.0]
-sib[8][0][7] = [4.4407556E-5]
-sib[8][0][8] = [-0.1306883]
-sib[8][1][1] = [-0.16752008]
-sib[8][1][2] = [0.048054956]
-sib[8][1][3] = [0.19381656]
-sib[8][1][4] = [0.1962367]
-sib[8][1][5] = [0.22047327]
-sib[8][1][6] = [0.05407614]
-sib[8][1][7] = [0.03259886]
-sib[8][1][8] = [-0.16752008]
-sib[8][2][2] = [-0.09066302, -0.13003787, -0.16142634, -0.15207109, -0.26127905, 7.7442965E-5]
-sib[8][2][3] = [-0.0014265252, -0.0077776024, -7.2852474E-11, -0.004048791, 0.019596174, -0.08604795]
-sib[8][2][4] = [-0.006029103, -0.0077776024, -7.2852474E-11, 0.016942471, 0.013651979, -0.09380145]
-sib[8][2][5] = [-0.0014265252, -0.0077776024, -9.664457E-4, 0.012307799, 0.024396855, -0.09329657]
-sib[8][2][6] = [0.0048993025, -0.0024187758, -0.0017435295, -4.2051418E-11, 0.02235306, -0.0348629]
-sib[8][2][7] = [4.8703526E-4, 0.0038177134, -0.001485926, -0.0028415276, 0.05204464, -0.08211417]
-sib[8][2][8] = [-0.09066302, -0.13003787, -0.16142634, -0.15207109, -0.26127905, 7.7442965E-5]
-sib[8][3][3] = [-0.10949209, -0.15805076, -0.17716438, -0.20753546, -0.21193713, 0.009676317]
-sib[8][3][4] = [-0.0014265252, -0.0077776024, 0.0017916001, -0.02197733, 0.03490593, -0.06974211]
-sib[8][3][5] = [-0.0014265252, -0.0077776024, 8.251545E-4, 7.783045E-5, 0.03296693, -0.07586638]
-sib[8][3][6] = [0.0043527037, -0.0046117287, 0.0011168586, -4.2051418E-11, 0.044191517, -0.049480405]
-sib[8][3][7] = [4.8703526E-4, 0.0038177134, 3.0567427E-4, -0.016087243, 0.02829557, -0.06396307]
-sib[8][3][8] = [-0.10949209, -0.15805076, -0.17716438, -0.20753546, -0.21193713, 0.009676317]
-sib[8][4][4] = [-0.09920207, -0.15805076, -0.17716438, -0.21306334, -0.20767194, -0.02159035]
-sib[8][4][5] = [-0.0014265252, -0.0077776024, 8.251545E-4, -0.022630576, 0.046899192, -0.07289222]
-sib[8][4][6] = [0.0043527037, -0.0024187758, 0.0011168586, -4.2051418E-11, 0.044191517, -0.049480405]
-sib[8][4][7] = [4.8703526E-4, 0.0038177134, 3.0567427E-4, -0.013569284, 0.032772113, -0.06130428]
-sib[8][4][8] = [-0.09920207, -0.15805076, -0.17716438, -0.21306334, -0.20767194, -0.02159035]
-sib[8][5][5] = [-0.098051, -0.1531455, -0.17716438, -0.22765741, -0.20618106, -0.07866707]
-sib[8][5][6] = [0.0029626004, -0.0024187758, 0.0011168586, -4.2051418E-11, 0.044068985, -0.045318075]
-sib[8][5][7] = [-0.0016342016, 0.0016858783, 3.0567427E-4, -0.021759551, 0.03046755, -0.060595863]
-sib[8][5][8] = [-0.098051, -0.1531455, -0.17716438, -0.22765741, -0.20618106, -0.07866707]
-sib[8][6][6] = [-0.2945214]
-sib[8][6][7] = [-0.008584548]
-sib[8][6][8] = [-0.2945214]
-sib[8][7][7] = [-0.09558498, -0.14580676, -0.15594773, -0.101749435, -0.22991525, -0.059299488]
-sib[8][7][8] = [-0.09558498, -0.14580676, -0.15594773, -0.101749435, -0.22991525, -0.059299488]
-sib[8][9][8] = [0.78801787, 0.22985879, 0.36780447, 0.1078232, 0.29729065, 0.025334237]
-sib[8][9][9] = [0.78801787, 0.22985879, 0.36780447, 0.1078232, 0.29729065, 0.025334237]
-sib[8][10][8] = [0.3778783, 0.7138954, 0.12205364, 0.21584456, 0.05456043]
-sib[8][10][9] = [-0.059722286, -0.09083596, 0.041860487, -0.028273586, -0.037889853]
-sib[8][10][10] = [0.3778783, 0.7138954, 0.12205364, 0.21584456, 0.05456043]
-sib[8][11][8] = [0.771168, 0.21248314, 0.34403247, 0.09235164, 0.30030355, 0.05547594]
-sib[8][11][9] = [-0.19855681, -0.056822326, -0.0894422, -0.07517671, -0.0369342, -0.015578905]
-sib[8][11][10] = [-0.084116936, 0.050267287, -0.011977294, -0.02446951, 9.7631407E-4, -0.03887186]
-sib[8][11][11] = [0.771168, 0.21248314, 0.34403247, 0.09235164, 0.30030355, 0.05547594]
-sib[8][12][8] = [0.761219, 0.20041385, 0.37152606, 0.07730051, 0.32656485, 0.060821887]
-sib[8][12][9] = [-0.19082892, -0.039882757, -0.095119424, -0.08468197, -0.057752986, -0.04131644]
-sib[8][12][10] = [-0.075814925, 0.0329127, -0.008468242, -0.014138159, -0.079590335, -0.03531133]
-sib[8][12][11] = [-0.17127416, -0.049114514, -0.108307295, -0.13420378, -0.097858824, -0.034285795]
-sib[8][12][12] = [0.761219, 0.20041385, 0.37152606, 0.07730051, 0.32656485, 0.060821887]
-sib[8][13][8] = [0.7799316, 0.23316228, 0.37264413, 0.04870981, 0.3027693, 0.06227043]
-sib[8][13][9] = [-0.17360747, -0.03249575, -0.09295989, -0.06994984, -0.098186225, -0.057408478]
-sib[8][13][10] = [-0.064515635, 0.038070444, -0.006639153, -0.012615723, -0.07867995, -0.0357359]
-sib[8][13][11] = [-0.16899568, -0.032994986, -0.10763662, -0.14808722, -0.09456525, -0.04353419]
-sib[8][13][12] = [-0.1257692, -0.031805098, -0.08162767, -0.09916444, -0.1300085, -0.06586472]
-sib[8][13][13] = [0.7799316, 0.23316228, 0.37264413, 0.04870981, 0.3027693, 0.06227043]
-sib[8][14][8] = [-0.13940644, 0.70799375, -0.04977177]
-sib[8][14][9] = [-0.056291524, -0.09443851, -0.016541561]
-sib[8][14][10] = [-0.090868294, -0.04292191, -0.0012392468]
-sib[8][14][11] = [-0.043322347, -0.081042856, -0.012329705]
-sib[8][14][12] = [-0.048961572, -0.07352945, -0.009252757]
-sib[8][14][13] = [-0.06984594, -0.078610934, -0.006592763]
-sib[8][14][14] = [-0.13940644, 0.70799375, -0.04977177]
-sib[9][0][0] = [-0.07034887]
-sib[9][0][1] = [-0.0113618225]
-sib[9][0][2] = [-0.006281595]
-sib[9][0][3] = [0.012695111]
-sib[9][0][4] = [0.010661664]
-sib[9][0][5] = [0.009318218]
-sib[9][0][6] = [-0.0031773483]
-sib[9][0][7] = [0.009483286]
-sib[9][0][8] = [-0.025391717]
-sib[9][0][9] = [-0.07034887]
-sib[9][1][1] = [-0.1011759, -0.07143136, -0.1059882, -0.17183484, -0.091196485, -0.18513407]
-sib[9][1][2] = [0.052392587, -0.0010550766, -0.018948799, 0.002736577, -0.004425691, -0.0017134671]
-sib[9][1][3] = [0.21478505, -0.0011986855, 0.018373724, -0.0010610658, -0.011354887, -0.0014217426]
-sib[9][1][4] = [0.2172052, 1.2342613E-10, 0.012518062, -0.0060311006, -0.008851382, -0.0014217426]
-sib[9][1][5] = [0.24003094, 1.2342613E-10, 0.019819837, -0.0010610658, -0.008851382, -0.0045994055]
-sib[9][1][6] = [0.0508988, 0.0, -0.013630568, 2.6559156E-11, 0.014032768, -0.011876351]
-sib[9][1][7] = [0.06701221, -0.0010550766, -0.026815884, -0.0017672072, -0.006077345, -0.0020284676]
-sib[9][1][8] = [0.034916025, -0.0017478155, -0.0038286392, -0.006166786, 0.0, -0.014572306]
-sib[9][1][9] = [-0.1011759, -0.07143136, -0.1059882, -0.17183484, -0.091196485, -0.18513407]
-sib[9][2][2] = [-0.062582, -0.056753963, -0.20428288, -0.11784891, -0.10288976, -0.094234064, -0.054490432, -0.06126349, -0.08680433, -0.12707745, -0.017490098]
-sib[9][2][3] = [0.0033699158, -0.0011986855, 0.04455407, 6.7594264E-12, -4.26305E-4, -0.0010610659, -0.006648346, -0.03606269, -0.011389632, -0.0035743571, -0.08656964]
-sib[9][2][4] = [0.0033699158, 1.3019351E-10, 0.03462046, -0.004602578, 0.020564955, -0.0037348699, -0.005755012, -0.025610901, -0.013981964, 0.0, -0.09432313]
-sib[9][2][5] = [0.0033699158, 1.3019351E-10, 0.04395455, 6.7594264E-12, 0.015930286, 2.4786548E-4, -0.0074910205, -0.023576815, -0.013981964, 0.0, -0.09268984]
-sib[9][2][6] = [-0.0066579944, -0.0024187758, 0.019175712, 0.0035821022, -1.848424E-4, -0.002860388, -0.0014214896, -0.01028468, 0.0, 5.837672E-4, -0.036261305]
-sib[9][2][7] = [0.0033699158, -0.0031338134, 0.056400374, 0.0019135604, 0.0015796584, -0.0021793821, -9.805523E-4, -0.015657805, -0.014526446, -0.005065879, -0.08211417]
-sib[9][2][8] = [0.0, -0.0017478155, -0.021038817, 0.009213619, 0.020823805, 1.5195471E-4, 8.020853E-5, -0.009715047, -0.005318772, 0.0, -0.0102435]
-sib[9][2][9] = [-0.062582, -0.056753963, -0.20428288, -0.11784891, -0.10288976, -0.094234064, -0.054490432, -0.06126349, -0.08680433, -0.12707745, -0.017490098]
-sib[9][3][3] = [-0.058906656, -0.084766835, -0.15494096, -0.13667798, -0.15835413, -0.10997212, -0.115990505, -0.11283281, -0.09396083, -0.13384646, -0.007891232]
-sib[9][3][4] = [0.0033699158, 2.235752E-10, 0.059863806, 6.7594264E-12, -0.018354842, -0.0019432697, 0.0010844865, 0.0056895404, -0.0139819635, 0.0, -0.0702638]
-sib[9][3][5] = [0.0033699158, 2.235752E-10, 0.05252462, 6.7594264E-12, 0.0037003167, 0.0020394656, 2.4181162E-4, 0.014315439, -0.016574297, -0.0035770652, -0.07525965]
-sib[9][3][6] = [-0.0020982404, -0.0046117287, 0.041014165, 0.0030355034, -1.848424E-4, 7.584112E-11, -1.9046036E-4, -0.0075192237, -0.0012453651, 5.837672E-4, -0.050878808]
-sib[9][3][7] = [0.0033699158, -0.0031338134, 0.032651298, 0.0019135604, -0.0116660595, -3.87782E-4, 0.0036544318, -0.008762814, -0.01971111, -0.002893438, -0.06396307]
-sib[9][3][8] = [0.0, -0.0017478155, -0.03509238, 0.0058086934, -4.3411588E-4, 1.5195471E-4, 0.007849641, -0.01592761, 5.395991E-4, -0.0051903967, -0.008748124]
-sib[9][3][9] = [-0.058906656, -0.084766835, -0.15494096, -0.13667798, -0.15835413, -0.10997212, -0.115990505, -0.11283281, -0.09396083, -0.13384646, -0.007891232]
-sib[9][4][4] = [-0.058906656, -0.084766835, -0.15067577, -0.12638798, -0.16388203, -0.10997212, -0.11743048, -0.12279012, -0.09396083, -0.1259885, -0.039157894]
-sib[9][4][5] = [0.0033699158, 2.235752E-10, 0.070446275, 6.7594264E-12, -0.01900809, 0.0020394656, 0.0033390545, 0.0077236216, -0.015661, 0.0, -0.07228549]
-sib[9][4][6] = [-0.0020982404, -0.0024187758, 0.041014165, 0.0030355034, -1.848424E-4, 7.584112E-11, -1.9046036E-4, -0.0075192237, -0.0012453651, 0.002924942, -0.050878808]
-sib[9][4][7] = [0.0033699158, -0.0031338134, 0.03712784, 0.0019135604, -0.0091480985, -3.87782E-4, 0.0017899475, -0.008762814, -0.01971111, -0.002893438, -0.06130428]
-sib[9][4][8] = [0.0, -0.0017478155, -0.029629342, 0.0058086934, -4.3411588E-4, 0.0022711253, 0.007849641, -0.01592761, 5.395991E-4, -0.004375567, -0.008748124]
-sib[9][4][9] = [-0.058906656, -0.084766835, -0.15067577, -0.12638798, -0.16388203, -0.10997212, -0.11743048, -0.12279012, -0.09396083, -0.1259885, -0.039157894]
-sib[9][5][5] = [-0.058906656, -0.079861574, -0.14918488, -0.1252369, -0.17847608, -0.10997212, -0.15543042, -0.12795919, -0.09396083, -0.13384646, -0.096234635]
-sib[9][5][6] = [-0.0020982404, -0.0024187758, 0.04089164, 0.0016454, -1.848424E-4, -2.4944128E-11, -1.9046036E-4, -0.0075192237, -0.0012453651, 0.002521164, -0.046716478]
-sib[9][5][7] = [0.0033699158, -0.0021318349, 0.034823276, -2.0767644E-4, -0.017338365, -3.87782E-4, 0.0036544318, -0.01277848, -0.01971111, -0.002893438, -0.060595863]
-sib[9][5][8] = [-0.0018001135, -0.0017478155, -0.02844011, 0.008361049, 0.0012216937, 1.5195471E-4, 0.015772633, -0.010470614, -0.001196497, -0.0064024087, -0.008748124]
-sib[9][5][9] = [-0.058906656, -0.079861574, -0.14918488, -0.1252369, -0.17847608, -0.10997212, -0.15543042, -0.12795919, -0.09396083, -0.13384646, -0.096234635]
-sib[9][6][6] = [-0.24552456, -0.15129414]
-sib[9][6][7] = [0.006215946, -0.0027184573]
-sib[9][6][8] = [-0.023212386, 0.0010730807]
-sib[9][6][9] = [-0.24552456, -0.15129414]
-sib[9][7][7] = [-0.062582, -0.07252283, -0.15046915, -0.12517364, -0.081251726, -0.09594374, -0.12587339, -0.09161502, -0.09625019, -0.12978898, -0.06474607]
-sib[9][7][8] = [0.0, -0.0017478155, -0.022458764, 0.0058086934, 0.021875191, 0.00120843, 0.010813163, -0.0064338804, -0.0069222776, 0.0, -0.009914654]
-sib[9][7][9] = [-0.062582, -0.07252283, -0.15046915, -0.12517364, -0.081251726, -0.09594374, -0.12587339, -0.09161502, -0.09625019, -0.12978898, -0.06474607]
-sib[9][8][8] = [-0.020221319, -0.036588803, -0.04983248, -0.15051144, -0.09741203, -0.1296102]
-sib[9][8][9] = [-0.020221319, -0.036588803, -0.04983248, -0.15051144, -0.09741203, -0.1296102]
-sib[9][10][9] = [0.058185466, 0.18593371, 0.013361546, 0.05250779, -0.15585752, -0.09314026, -0.024650116]
-sib[9][10][10] = [0.058185466, 0.18593371, 0.013361546, 0.05250779, -0.15585752, -0.09314026, -0.024650116]
-sib[9][11][9] = [0.010377872, 0.11967139, 0.13280055, 0.058676593, -0.046707705, -0.072339505, -0.08746066, -0.06420231, -0.029372318, -0.047733497, -0.12351745]
-sib[9][11][10] = [0.13447289, 0.040904917, 0.18432452, -0.04691888, -0.031945646, -0.021555042, -0.01900445, -0.0034406362, -0.0014785305, 2.4921317E-11, -0.03767125]
-sib[9][11][11] = [0.010377872, 0.11967139, 0.13280055, 0.058676593, -0.046707705, -0.072339505, -0.08746066, -0.06420231, -0.029372318, -0.047733497, -0.12351745]
-sib[9][12][9] = [-0.009237043, 0.10760212, 0.1590618, 0.048727725, -0.061758842, -0.044845812, -0.110580385, -0.100357965, -0.026026024, -0.043628313, -0.11817151]
-sib[9][12][10] = [0.09776962, 0.029575646, 0.07672849, -0.03404893, -0.021614298, -0.01804599, -0.025152503, -0.0131380055, -0.0014785305, 2.4921317E-11, -0.03556287]
-sib[9][12][11] = [0.25697288, -0.088507816, -0.009320511, -0.032928392, -0.11276226, -0.057192735, -0.063904464, -0.063531876, -0.0032337965, -0.011226524, -0.028146785]
-sib[9][12][12] = [-0.009237043, 0.10760212, 0.1590618, 0.048727725, -0.061758842, -0.044845812, -0.110580385, -0.100357965, -0.026026024, -0.043628313, -0.11817151]
-sib[9][13][9] = [0.013612992, 0.14035055, 0.13526626, 0.06744026, -0.09034954, -0.0437278, -0.09363104, -0.108480155, -0.034587223, -0.058207784, -0.11672297]
-sib[9][13][10] = [0.07917629, 0.034733385, 0.08110547, -0.022749638, -0.020091861, -0.0162169, -0.035234727, -0.017345145, 0.0, 2.4921317E-11, -0.03598744]
-sib[9][13][11] = [0.2788935, -0.066845745, 0.022597812, -0.039993078, -0.12892209, -0.05503321, -0.06420136, -0.05915559, -0.0032337965, -0.014401756, -0.03739518]
-sib[9][13][12] = [0.18689674, -0.057967238, -0.11454363, 0.031081818, -0.07772294, -0.035723086, -0.034426462, -0.08544957, -0.0071663177, -0.018500524, -0.059725706]
-sib[9][13][13] = [0.013612992, 0.14035055, 0.13526626, 0.06744026, -0.09034954, -0.0437278, -0.09363104, -0.108480155, -0.034587223, -0.058207784, -0.11672297]
-sib[9][14][9] = [-0.25209263, 0.1463825, 0.10087137, 0.20545979, -0.13530877, -0.057546876, 0.11127153, 0.18861237]
-sib[9][14][10] = [-0.050928675, 0.11547458, -0.015944967, -0.037532754, -0.0047936477, -0.0023863493, 0.07104642, -0.018621963]
-sib[9][14][11] = [0.00563729, 0.09164208, 0.028529447, -0.066264495, -0.007344978, -0.006927175, 0.15567993, -0.008766629]
-sib[9][14][12] = [0.008060956, 0.013999755, 0.054548122, -0.058907047, 0.0070343534, -0.00649131, 0.13926981, -0.007074901]
-sib[9][14][13] = [-0.019813104, -0.0053684125, 0.06431517, -0.060711406, 0.0015342542, -0.005749071, 0.14366095, -0.0071544526]
-sib[9][14][14] = [-0.25209263, 0.1463825, 0.10087137, 0.20545979, -0.13530877, -0.057546876, 0.11127153, 0.18861237]
-sib[10][0][0] = [-0.059043508]
-sib[10][0][1] = [0.025374867]
-sib[10][0][2] = [-0.010792654]
-sib[10][0][3] = [-0.017562985]
-sib[10][0][4] = [-0.018177532]
-sib[10][0][5] = [-0.022483138]
-sib[10][0][6] = [0.0017099967]
-sib[10][0][7] = [-0.0060652886]
-sib[10][0][8] = [0.030930744]
-sib[10][0][9] = [-0.010792654]
-sib[10][0][10] = [-0.059043508]
-sib[10][1][1] = [-0.05920863, -0.090162024, -0.102852575, -0.14439504]
-sib[10][1][2] = [0.04903557, -0.018948799, -0.0060798614, 0.0]
-sib[10][1][3] = [0.18755428, 0.01895392, -0.013009057, 0.0]
-sib[10][1][4] = [0.19139335, 0.01121319, -0.007386175, -0.0022962305]
-sib[10][1][5] = [0.21125697, 0.020400032, -0.011000266, 0.0]
-sib[10][1][6] = [0.053369354, -0.015731946, 0.015331525, 0.0034863725]
-sib[10][1][7] = [0.054491006, -0.026815884, -0.0060798614, -7.323949E-4]
-sib[10][1][8] = [0.089037456, 0.019426785, 0.0, -0.005944387]
-sib[10][1][9] = [0.0468777, -0.00752901, -0.0060798614, 0.0]
-sib[10][1][10] = [-0.05920863, -0.090162024, -0.102852575, -0.14439504]
-sib[10][2][2] = [-0.048039384, -0.033936597, -0.1076843, -0.08561048, -0.18102275, -0.063882194, -0.27944726, -0.06961856]
-sib[10][2][3] = [-0.03545773, -4.3242677E-11, 5.80196E-4, 2.0403232E-4, 0.0133339325, -0.0051465426, -0.13283041, -7.2852474E-11]
-sib[10][2][4] = [-0.028865915, -4.3242677E-11, -0.005907449, 2.0403232E-4, 0.008808636, 0.016942471, -0.13296017, -7.2852474E-11]
-sib[10][2][5] = [-0.022971857, -4.3242677E-11, 5.80196E-4, 2.0403232E-4, 0.015180563, 0.008977336, -0.15586855, 0.0013089313]
-sib[10][2][6] = [-0.008296368, -0.002669402, 0.0014807231, -0.0024187758, 0.021646274, -0.0021272162, 0.079501994, 6.259845E-4]
-sib[10][2][7] = [-0.014046128, 0.0, 0.0019135604, -0.004179495, 0.043879174, 0.0041841725, -0.024367616, -0.00114457]
-sib[10][2][8] = [-0.016525857, -0.0025111497, 0.015022312, -9.820932E-4, 0.037353337, 0.022290064, 0.030802153, -8.340767E-4]
-sib[10][2][9] = [-0.023818199, -1.0399219E-10, -2.977391E-11, -0.0010456814, -0.0041673095, -0.039385617, -0.0727223, -7.2852474E-11]
-sib[10][2][10] = [-0.048039384, -0.033936597, -0.1076843, -0.08561048, -0.18102275, -0.063882194, -0.27944726, -0.06961856]
-sib[10][3][3] = [-0.09960871, -0.030261248, -0.12651338, -0.11362336, -0.13168085, -0.11934658, -0.15076126, -0.085356615]
-sib[10][3][4] = [0.0024345233, -2.3429569E-11, -0.0013048707, 2.040324E-4, 0.03006259, -0.02197733, -0.19214498, 0.0017916001]
-sib[10][3][5] = [0.014920399, -2.3429569E-11, 5.80196E-4, 2.040324E-4, 0.023750644, -0.003252635, -0.21613938, 0.0031005316]
-sib[10][3][6] = [-0.005530912, 0.0018903521, 9.3412434E-4, -0.0046117287, 0.043484725, -0.0021272162, 0.1461553, 0.0034863725]
-sib[10][3][7] = [-0.0071511366, 0.0, 0.0019135604, -0.004179495, 0.020130098, -0.009061545, 0.03431515, 6.470303E-4]
-sib[10][3][8] = [-0.022738421, -0.0025111497, 0.011617387, -0.0032574702, 0.023299767, 0.0019173237, 0.045053303, -8.340767E-4]
-sib[10][3][9] = [-0.015549341, -4.3242677E-11, -2.977391E-11, -0.0010456813, -0.0017319783, -0.038781445, -0.08130009, 0.0032380675]
-sib[10][3][10] = [-0.09960871, -0.030261248, -0.12651338, -0.11362336, -0.13168085, -0.11934658, -0.15076126, -0.085356615]
-sib[10][4][4] = [-0.10956604, -0.030261248, -0.11622335, -0.11362336, -0.12741564, -0.12487447, -0.17254554, -0.085356615]
-sib[10][4][5] = [0.008328579, -2.3429569E-11, 5.80196E-4, 2.040324E-4, 0.037682906, -0.02596104, -0.21185596, 0.0031005316]
-sib[10][4][6] = [-0.005530912, 0.0018903521, 9.3412434E-4, -0.0024187758, 0.043484725, -0.0021272162, 0.15845388, 0.0034863725]
-sib[10][4][7] = [-0.0071511366, 0.0, 0.0019135604, -0.004179495, 0.024606647, -0.0065435837, 0.025490979, 6.470303E-4]
-sib[10][4][8] = [-0.022738421, -0.0025111497, 0.011617387, -0.0032574702, 0.028762808, 0.0019173237, 0.036042124, 0.0012850938]
-sib[10][4][9] = [-0.015549341, -4.3242677E-11, -2.977391E-11, -0.0010456813, 0.0027445666, -0.038781445, -0.09012426, 0.0032380675]
-sib[10][4][10] = [-0.10956604, -0.030261248, -0.11622335, -0.11362336, -0.12741564, -0.12487447, -0.17254554, -0.085356615]
-sib[10][5][5] = [-0.11473512, -0.030261248, -0.11507228, -0.108718105, -0.12592475, -0.13946849, -0.19167395, -0.085356615]
-sib[10][5][6] = [-0.005530912, 0.0018903521, -4.5597902E-4, -0.0024187758, 0.0433622, -0.0021272162, 0.13301979, 0.0034863725]
-sib[10][5][7] = [-0.011166802, 0.0, -2.0767644E-4, -0.0031775166, 0.022302076, -0.014733851, 0.027197832, 6.470303E-4]
-sib[10][5][8] = [-0.013207361, -0.004311263, 0.014169742, -0.0032574702, 0.03137211, 0.005228941, 0.008087682, -8.340767E-4]
-sib[10][5][9] = [-0.019565009, -4.3242677E-11, -2.977391E-11, -0.0010456813, -0.0020602378, -0.044453755, -0.086815685, 0.0032380675]
-sib[10][5][10] = [-0.11473512, -0.030261248, -0.11507228, -0.108718105, -0.12592475, -0.13946849, -0.19167395, -0.085356615]
-sib[10][6][6] = [-0.10306311, -0.2031597]
-sib[10][6][7] = [-0.004742817, -0.006305254]
-sib[10][6][8] = [6.8480964E-5, 0.024987387]
-sib[10][6][9] = [-0.0020921042, -0.014598351]
-sib[10][6][10] = [-0.10306311, -0.2031597]
-sib[10][7][7] = [-0.07839093, -0.033936597, -0.11500903, -0.101379365, -0.12720901, -0.04224415, -0.2632762, -0.07132824]
-sib[10][7][8] = [-0.024684515, -0.0025111497, 0.011617387, -9.820932E-4, 0.027987499, 0.02499726, 0.04452046, -8.340767E-4]
-sib[10][7][9] = [-0.031356703, -4.3242677E-11, -2.977391E-11, -0.0010456813, -0.019378543, -0.029830173, -0.0730696, -8.799264E-11]
-sib[10][7][10] = [-0.07839093, -0.033936597, -0.11500903, -0.101379365, -0.12720901, -0.04224415, -0.2632762, -0.07132824]
-sib[10][8][8] = [-0.061185136, -0.018472185, -0.10816938, -0.128322]
-sib[10][8][9] = [-2.1848828E-5, -0.0061198915, -0.003867016, 0.0]
-sib[10][8][10] = [-0.061185136, -0.018472185, -0.10816938, -0.128322]
-sib[10][9][9] = [-0.071560964, -0.030261248, -0.0720657, -0.08686474, -0.093842424, -0.19551773, -0.24368197, -0.07979041]
-sib[10][9][10] = [-0.071560964, -0.030261248, -0.0720657, -0.08686474, -0.093842424, -0.19551773, -0.24368197, -0.07979041]
-sib[10][11][10] = [-0.051991284, -0.06937934, -0.016163576, 0.053064074, 0.08693847, 0.019920709, -0.13684247, -0.1479983]
-sib[10][11][11] = [-0.051991284, -0.06937934, -0.016163576, 0.053064074, 0.08693847, 0.019920709, -0.13684247, -0.1479983]
-sib[10][12][10] = [-0.08531261, -0.06413493, -0.05977267, -0.022204375, 0.051638376, -0.03699434, -0.17177294, -0.1723037]
-sib[10][12][11] = [-0.06677956, 0.068897344, -0.041090466, -0.043190118, -0.10512746, -0.08707124, -0.060287543, -0.04228424]
-sib[10][12][12] = [-0.08531261, -0.06413493, -0.05977267, -0.022204375, 0.051638376, -0.03699434, -0.17177294, -0.1723037]
-sib[10][13][10] = [-0.09343482, -0.0412849, -0.041060112, 0.010544043, 0.027842823, -0.06558503, -0.17883311, -0.17118572]
-sib[10][13][11] = [-0.049473174, 0.08055082, -0.038259365, -0.026170572, -0.08088517, -0.097375445, -0.08329418, -0.04012471]
-sib[10][13][12] = [-0.06825196, 0.03314009, -0.027902417, -0.024682438, -0.1125624, -0.0713303, -0.09034211, -0.032421686]
-sib[10][13][13] = [-0.09343482, -0.0412849, -0.041060112, 0.010544043, 0.027842823, -0.06558503, -0.17883311, -0.17118572]
-sib[10][14][10] = [-0.29800513, 0.06716653, 0.030734247, 0.052991964]
-sib[10][14][11] = [-0.09484864, 0.0031243088, -0.005557349, -0.06585641]
-sib[10][14][12] = [-0.06504598, -0.006278834, -0.0043337257, -0.022472793]
-sib[10][14][13] = [-0.090015024, -0.005038573, 0.0016201909, -0.03029346]
-sib[10][14][14] = [-0.29800513, 0.06716653, 0.030734247, 0.052991964]
-sib[11][0][0] = [-0.007372096]
-sib[11][0][1] = [-0.0117301885]
-sib[11][0][2] = [1.7489446E-4]
-sib[11][0][3] = [-0.00123771]
-sib[11][0][4] = [-0.003271157]
-sib[11][0][5] = [-0.005359205]
-sib[11][0][6] = [-0.002019499]
-sib[11][0][7] = [0.010771036]
-sib[11][0][8] = [-0.029056469]
-sib[11][0][9] = [-0.023738708]
-sib[11][0][10] = [0.0030166223]
-sib[11][0][11] = [-0.007372096]
-sib[11][1][1] = [0.0018578265, -0.054558165, -0.0604494, -0.17884487, -0.08183588, -0.20679036]
-sib[11][1][2] = [0.056975745, 0.005668442, -0.018948799, 0.001544904, -0.004425691, -0.0042697564]
-sib[11][1][3] = [0.20085223, 0.005524833, 0.018373724, -0.002252739, -0.011354887, -0.00299346]
-sib[11][1][4] = [0.20327237, 0.006723519, 0.012518062, -0.0045489697, -0.008851382, -0.0039780317]
-sib[11][1][5] = [0.22535354, 0.006723519, 0.019819837, -0.002252739, -0.008851382, -0.007155695]
-sib[11][1][6] = [0.052056644, 0.0, -0.013630568, -7.422609E-11, 0.015331525, -0.011876351]
-sib[11][1][7] = [0.068299964, 0.005668442, -0.026815884, -0.002252739, -0.006077345, -0.0076014055]
-sib[11][1][8] = [0.027525611, -0.0019323565, 0.016894437, -0.006166786, 0.0011550465, -0.018592926]
-sib[11][1][9] = [0.018857269, 0.0015575043, 8.552619E-4, 0.0014732641, -0.007938184, -0.0059139905]
-sib[11][1][10] = [0.039753977, -5.9690885E-4, -0.017307745, -0.014496746, -0.024867129, -0.0062500164]
-sib[11][1][11] = [0.0018578265, -0.054558165, -0.0604494, -0.17884487, -0.08183588, -0.20679036]
-sib[11][2][2] = [-0.06727515, -0.039880756, -0.101249136, -0.07231011, -0.10864645, -0.101244085, -0.048028372, -0.06371725, -0.08343171, -0.11429499, -0.039146423]
-sib[11][2][3] = [0.0, 0.0055248337, 0.030621234, 0.0, -4.26305E-4, -0.002252739, -0.006648346, -0.03606269, -0.00916679, -0.0052283416, -0.08814137]
-sib[11][2][4] = [0.0, 0.006723519, 0.020687636, -0.004602578, 0.024846062, -0.002252739, -0.005755012, -0.029470876, -0.011759123, -0.0016539845, -0.09687942]
-sib[11][2][5] = [0.0, 0.006723519, 0.029277127, 0.0, 0.015930286, -9.438076E-4, -0.0074910205, -0.023576815, -0.014191874, 0.0, -0.095246136]
-sib[11][2][6] = [-0.002669402, -0.0024187758, 0.020333562, 0.0035821022, -1.848424E-4, -0.002860388, -3.935173E-12, -0.0014916197, 0.0012843906, -7.149898E-4, -0.036261305]
-sib[11][2][7] = [0.0012985886, 0.0035897053, 0.05768812, 0.0019135604, 0.0015796584, -0.002664914, -9.805523E-4, -0.015657805, -0.014526446, -0.005065879, -0.08768711]
-sib[11][2][8] = [-1.6855371E-11, -0.0019323565, -0.02441728, 0.012489964, 0.021536471, 1.5195471E-4, 0.0021693285, -0.030377915, -0.010483608, 0.0, -0.014740901]
-sib[11][2][9] = [-6.074951E-11, 0.006723519, -0.013831265, 0.0, -0.038916126, 0.001473264, -0.018928917, -0.025520945, -0.015844021, 0.0013519778, -0.087466374]
-sib[11][2][10] = [-0.02627029, 0.0013403501, -0.031924155, 0.011060903, -0.017858764, -0.017715154, -0.04361326, -0.0058456473, 0.0043095946, 4.7011906E-4, -0.039736304]
-sib[11][2][11] = [-0.06727515, -0.039880756, -0.101249136, -0.07231011, -0.10864645, -0.101244085, -0.048028372, -0.06371725, -0.08343171, -0.11429499, -0.039146423]
-sib[11][3][3] = [-0.0635998, -0.06789364, -0.051907234, -0.0911392, -0.16411085, -0.11698214, -0.109528445, -0.11528658, -0.09058821, -0.121063985, -0.029547555]
-sib[11][3][4] = [1.9813108E-11, 0.006723519, 0.04593098, 0.0, -0.014073737, -4.6113878E-4, 0.0010844865, 0.001829566, -0.011759122, -0.0016539845, -0.07282009]
-sib[11][3][5] = [1.9813108E-11, 0.006723519, 0.0378472, 0.0, 0.0037003167, 8.477926E-4, 2.4181162E-4, 0.014315439, -0.016784206, -0.0035770652, -0.07781593]
-sib[11][3][6] = [0.0018903521, -0.0046117287, 0.042172015, 0.0030355034, -1.848424E-4, -2.4944128E-11, 0.0012310293, 0.0012738362, 3.9025443E-5, -7.149898E-4, -0.050878808]
-sib[11][3][7] = [0.0012985886, 0.0035897053, 0.03393905, 0.0019135604, -0.0116660595, -8.7331375E-4, 0.0036544318, -0.008762814, -0.01971111, -0.002893438, -0.069536015]
-sib[11][3][8] = [-1.6855371E-11, -0.004207734, -0.038470846, 0.009085039, 0.001163731, 1.5195471E-4, 0.015866034, -0.03659048, -0.0046252366, -0.0051903967, -0.013245526]
-sib[11][3][9] = [0.0, 0.006723519, -0.013421126, 0.0, -0.03831196, 0.0047113313, -0.01512234, -0.017252088, -0.021028686, 0.0013519778, -0.055630326]
-sib[11][3][10] = [-0.034883592, -0.009302226, -0.03815173, -0.012217581, -0.021105701, -0.012877224, -0.05123791, -0.017816678, 0.015131095, 0.002381786, -0.030664032]
-sib[11][3][11] = [-0.0635998, -0.06789364, -0.051907234, -0.0911392, -0.16411085, -0.11698214, -0.109528445, -0.11528658, -0.09058821, -0.121063985, -0.029547555]
-sib[11][4][4] = [-0.0635998, -0.06789364, -0.047642045, -0.08084916, -0.16963877, -0.11698214, -0.11096842, -0.12524389, -0.09058821, -0.11320603, -0.060814228]
-sib[11][4][5] = [1.9813108E-11, 0.006723519, 0.055768855, 0.0, -0.01900809, 8.477926E-4, 0.0033390545, 0.0077236216, -0.015870908, 0.0, -0.07484178]
-sib[11][4][6] = [0.0018903521, -0.0024187758, 0.042172015, 0.0030355034, -1.848424E-4, -2.4944128E-11, 0.0012310293, 0.0012738362, 3.9025443E-5, 0.001626185, -0.050878808]
-sib[11][4][7] = [0.0012985886, 0.0035897053, 0.038415592, 0.0019135604, -0.0091480985, -8.7331375E-4, 0.0017899475, -0.008762814, -0.01971111, -0.002893438, -0.06687723]
-sib[11][4][8] = [-1.6855371E-11, -0.004207734, -0.033007804, 0.009085039, 0.001163731, 0.0022711253, 0.015866034, -0.03659048, -0.0046252366, -0.004375567, -0.013245526]
-sib[11][4][9] = [0.0, 0.006723519, -0.008944579, 0.0, -0.03831196, 0.0047113313, -0.013525365, -0.017252088, -0.021028686, 0.0013519778, -0.055630326]
-sib[11][4][10] = [-0.034883592, -0.0032188678, -0.03815173, -0.012217581, -0.021105701, -0.012877224, -0.0531008, -0.017816678, 0.015079191, 4.7011906E-4, -0.036729466]
-sib[11][4][11] = [-0.0635998, -0.06789364, -0.047642045, -0.08084916, -0.16963877, -0.11698214, -0.11096842, -0.12524389, -0.09058821, -0.11320603, -0.060814228]
-sib[11][5][5] = [-0.0635998, -0.06298838, -0.046151154, -0.079698086, -0.18423282, -0.11698214, -0.14896835, -0.13041297, -0.09058821, -0.121063985, -0.11789097]
-sib[11][5][6] = [0.0018903521, -0.0024187758, 0.042049482, 0.0016454, -1.848424E-4, -2.4944128E-11, 0.0012310293, -0.005530912, 3.9025443E-5, 0.0012224071, -0.046716478]
-sib[11][5][7] = [0.0012985886, 0.004591684, 0.036111027, -2.0767644E-4, -0.017338365, -8.7331375E-4, 0.0036544318, -0.01277848, -0.01971111, -0.002893438, -0.06616881]
-sib[11][5][8] = [-0.0018001135, -0.004207734, -0.030398501, 0.011637394, 0.004475348, 1.5195471E-4, 0.028451074, -0.02705942, -0.0063613327, -0.0064024087, -0.013245526]
-sib[11][5][9] = [0.0, 0.006723519, -0.008013514, 0.0, -0.043984264, 0.0047113313, -0.013525365, -0.021267753, -0.021028686, 0.0013519778, -0.05226312]
-sib[11][5][10] = [-0.034883592, -0.009302226, -0.04404863, -0.014543477, -0.019002203, -0.012877224, -0.04815198, -0.017816678, 0.015079191, -0.0015919966, -0.030664032]
-sib[11][5][11] = [-0.0635998, -0.06298838, -0.046151154, -0.079698086, -0.18423282, -0.11698214, -0.14896835, -0.13041297, -0.09058821, -0.121063985, -0.11789097]
-sib[11][6][6] = [-0.14249083, -0.14342183]
-sib[11][6][7] = [0.007503695, -0.0027184573]
-sib[11][6][8] = [-0.034999825, 0.0010730807]
-sib[11][6][9] = [-0.03129263, -0.0020921042]
-sib[11][6][10] = [3.224857E-4, 0.0]
-sib[11][6][11] = [-0.14249083, -0.14342183]
-sib[11][7][7] = [-0.06727515, -0.055649634, -0.047435418, -0.07963485, -0.08700845, -0.10295376, -0.119411334, -0.094068795, -0.092877574, -0.1170065, -0.08640239]
-sib[11][7][8] = [-1.6855371E-11, -0.0019323565, -0.024417153, 0.009085039, 0.024243666, 0.00120843, 0.01756433, -0.023022685, -0.012087113, 0.0, -0.015578586]
-sib[11][7][9] = [-0.0026487454, 0.006723519, -0.020125525, 0.0, -0.029360685, 0.001473264, -0.013388636, -0.03305945, -0.021028686, 0.0013519778, -0.042516686]
-sib[11][7][10] = [-0.032058157, -0.0060932855, -0.059400894, 0.008735007, -0.0151623245, -0.017715154, -0.042483654, -0.0071071237, 0.021815212, 4.7011906E-4, -0.025759025]
-sib[11][7][11] = [-0.06727515, -0.055649634, -0.047435418, -0.07963485, -0.08700845, -0.10295376, -0.119411334, -0.094068795, -0.092877574, -0.1170065, -0.08640239]
-sib[11][8][8] = [-1.1867844E-4, -0.037765916, 0.011240432, -0.1627718, -0.0871527, -0.15140302]
-sib[11][8][9] = [-0.021379888, 0.0043555237, 0.0034294096, 0.0014732641, -0.003512493, -0.004899758]
-sib[11][8][10] = [0.009230928, 2.5665667E-4, -0.021784212, -0.014496746, -0.019540738, -0.019266201]
-sib[11][8][11] = [-1.1867844E-4, -0.037765916, 0.011240432, -0.1627718, -0.0871527, -0.15140302]
-sib[11][9][9] = [-0.0635998, -0.04113502, -0.1097605, -0.04355563, -0.21587107, -0.11415113, -0.11848409, -0.10366356, -0.093662694, -0.11480201, -0.057269786]
-sib[11][9][10] = [-0.029095728, -0.012495045, -0.017741643, -0.01743728, -0.026143162, -0.014496746, -0.03998524, -0.01460873, 0.014109103, -0.001682732, -0.028564185]
-sib[11][9][11] = [-0.0635998, -0.04113502, -0.1097605, -0.04355563, -0.21587107, -0.11415113, -0.11848409, -0.10366356, -0.093662694, -0.11480201, -0.057269786]
-sib[11][10][10] = [0.016185801, 0.050528016, -0.10191259, -0.054291252, -0.0918271, -0.12861837, -0.086728685]
-sib[11][10][11] = [0.016185801, 0.050528016, -0.10191259, -0.054291252, -0.0918271, -0.12861837, -0.086728685]
-sib[11][12][11] = [-0.076583765, 0.1000884, 0.12034315, -0.030947931, -0.05483166, -0.1419828, -0.1134968, -0.111516334, -0.020103946, -0.050117638, -0.1205918]
-sib[11][12][12] = [-0.076583765, 0.1000884, 0.12034315, -0.030947931, -0.05483166, -0.1419828, -0.1134968, -0.111516334, -0.020103946, -0.050117638, -0.1205918]
-sib[11][13][11] = [-0.052365176, 0.08163097, 0.09329194, -0.02060718, -0.12897095, -0.17311844, -0.107881375, -0.14937714, -0.028665144, -0.072424866, -0.122559726]
-sib[11][13][12] = [0.16537258, -0.049174204, -0.051370934, 0.027549144, -0.06851439, -0.04088717, -0.036889978, -0.055520758, -0.009449812, -0.019570488, -0.04900318]
-sib[11][13][13] = [-0.052365176, 0.08163097, 0.09329194, -0.02060718, -0.12897095, -0.17311844, -0.107881375, -0.14937714, -0.028665144, -0.072424866, -0.122559726]
-sib[11][14][11] = [-0.26430094, 0.104408175, 0.012823897, 0.14674018, -0.20307294, -0.051624805, 0.045293376, 0.059221696]
-sib[11][14][12] = [-0.0047579724, 0.07093569, 0.059366412, -0.053807728, 0.0059649916, -0.008774804, 0.10658951, -0.0122389775]
-sib[11][14][13] = [0.009189667, 0.022168335, 0.060918458, -0.06332501, 0.0021388289, -0.008032566, 0.099790245, -0.012318529]
-sib[11][14][14] = [-0.26430094, 0.104408175, 0.012823897, 0.14674018, -0.20307294, -0.051624805, 0.045293376, 0.059221696]
-sib[12][0][0] = [-0.04580705]
-sib[12][0][1] = [0.015740372]
-sib[12][0][2] = [-0.021155044]
-sib[12][0][3] = [-0.004543713]
-sib[12][0][4] = [-0.0065771597]
-sib[12][0][5] = [-0.007920606]
-sib[12][0][6] = [-0.004363601]
-sib[12][0][7] = [1.2192794E-4]
-sib[12][0][8] = [0.0038776542]
-sib[12][0][9] = [-0.023993544]
-sib[12][0][10] = [4.330249E-4]
-sib[12][0][11] = [-0.04719632]
-sib[12][0][12] = [-0.04580705]
-sib[12][1][1] = [-0.07542464, -0.10021604, -0.092530094, -0.17725241, -0.09794984, -0.20757535]
-sib[12][1][2] = [0.035645798, -0.0010550767, -0.018948799, 0.002736577, -0.004425691, -0.0017134671]
-sib[12][1][3] = [0.19754623, -0.0011986856, 0.018373724, -0.0010610658, -0.011354887, -0.0014217427]
-sib[12][1][4] = [0.19996637, 0.0, 0.012518062, -0.0033572963, -0.008851382, -0.0014217427]
-sib[12][1][5] = [0.22279212, 0.0, 0.020722475, -0.0010610658, -0.0100392075, -0.0045994055]
-sib[12][1][6] = [0.049712542, 0.0, -0.013630568, 0.0055411807, 0.015331525, -0.011876351]
-sib[12][1][7] = [0.057650845, -0.0010550767, -0.026815884, -0.0010610658, -0.006077345, -0.0020284676]
-sib[12][1][8] = [0.060459733, -0.006991262, 0.019426785, -0.006166786, 0.0, -0.019727793]
-sib[12][1][9] = [0.018602433, -0.0051660147, 8.552619E-4, 0.0026649372, -0.01014044, -0.0033577022]
-sib[12][1][10] = [0.06866573, -0.015890565, -0.02826008, -0.014496746, -0.02010237, -0.0080662165]
-sib[12][1][11] = [0.041683365, 0.0, -0.007685021, 0.002736577, 0.005665609, -0.0026584687]
-sib[12][1][12] = [-0.07542464, -0.10021604, -0.092530094, -0.17725241, -0.09794984, -0.20757535]
-sib[12][2][2] = [-0.070287675, -0.085538626, -0.17853162, -0.10439081, -0.10050729, -0.099651605, -0.05405833, -0.0690917, -0.09129654, -0.1265269, -0.039931387]
-sib[12][2][3] = [0.0, -0.0011986856, 0.027315225, 0.0, -0.0019767783, -0.0010610659, -0.006648346, -0.032485265, -0.008552926, -0.0052283416, -0.08656964]
-sib[12][2][4] = [0.0, 6.7673783E-12, 0.01738163, -0.004602578, 0.019014481, -0.0010610659, -0.005755012, -0.02589345, -0.011145257, -0.0016539845, -0.09432313]
-sib[12][2][5] = [0.0025123034, 6.7673783E-12, 0.026715722, 9.0263964E-4, 0.014379813, 2.4786548E-4, -0.0074910205, -0.019999389, -0.011145257, 0.0, -0.09268984]
-sib[12][2][6] = [-0.002669402, -0.0024187758, 0.017989459, 0.0035821022, -1.848424E-4, 0.0026807927, -3.935173E-12, -0.005793827, 6.4053755E-11, -0.0033409346, -0.036261305]
-sib[12][2][7] = [0.0, -0.0031338136, 0.047039017, 0.0019135604, 2.9184856E-5, -0.0014732409, -9.805523E-4, -0.015657805, -0.01168974, -0.005065879, -0.08211417]
-sib[12][2][8] = [0.0, -0.006991262, 0.008516844, 0.015022312, 0.021536471, 1.5195471E-4, 0.0021693285, -0.0281388, -0.0126926545, 0.0, -0.015875768]
-sib[12][2][9] = [-6.074951E-11, 9.7394426E-11, -0.014086101, 0.0, -0.040466603, 0.0026649372, -0.014669583, -0.018978458, -0.015576752, 0.0, -0.084910095]
-sib[12][2][10] = [-0.033808216, -0.013953305, -0.037765395, 1.08569344E-4, -0.016909549, -0.017715154, -0.04482095, -0.009717198, 0.021477621, 4.7011906E-4, -0.042719033]
-sib[12][2][11] = [-0.0022680296, 6.7673783E-12, -0.06998387, 0.0, -0.05669004, 0.002736577, -0.014201675, -0.028364774, -0.008958689, 0.0, -0.09505878]
-sib[12][2][12] = [-0.070287675, -0.085538626, -0.17853162, -0.10439081, -0.10050729, -0.099651605, -0.05405833, -0.0690917, -0.09129654, -0.1265269, -0.039931387]
-sib[12][3][3] = [-0.066612326, -0.11355151, -0.1291897, -0.123219885, -0.15597168, -0.11538966, -0.1155584, -0.12066103, -0.09845304, -0.1332959, -0.030332519]
-sib[12][3][4] = [1.9813108E-11, 1.0014907E-10, 0.04262498, 0.0, -0.019905316, 7.305343E-4, 0.0010844865, 0.00540699, -0.011145257, -0.0016539845, -0.0702638]
-sib[12][3][5] = [0.0025123034, 1.0014907E-10, 0.035285797, 9.0263964E-4, 0.0021498424, 0.0020394656, 2.4181162E-4, 0.017892864, -0.013737589, -0.0035770652, -0.07525965]
-sib[12][3][6] = [0.0018903521, -0.0046117287, 0.039827913, 0.0030355034, -1.848424E-4, 0.0055411807, 0.0012310293, -0.0030283711, -0.001245365, -0.0033409346, -0.050878808]
-sib[12][3][7] = [0.0, -0.0031338136, 0.023289941, 0.0019135604, -0.013216533, 3.1835935E-4, 0.0036544318, -0.008762814, -0.016874405, -0.002893438, -0.06396307]
-sib[12][3][8] = [0.0, -0.009266639, -0.005536722, 0.011617387, 0.001163731, 1.5195471E-4, 0.015866034, -0.034351368, -0.0068342835, -0.0051903967, -0.014380393]
-sib[12][3][9] = [0.0, 1.9077612E-10, -0.013675962, 0.0, -0.039862435, 0.0059030047, -0.010863007, -0.0107096005, -0.020761417, 0.0, -0.05307404]
-sib[12][3][10] = [-0.042421516, -0.02459588, -0.043992974, -0.023169914, -0.020156486, -0.012877224, -0.0524456, -0.021688228, 0.032299124, 0.002381786, -0.033646762]
-sib[12][3][11] = [-0.0022680296, 1.0014907E-10, -0.0678906, 2.176337E-12, -0.055077005, 0.0050104028, -0.008798122, -0.014618345, -0.014143352, -5.0404254E-11, -0.06282607]
-sib[12][3][12] = [-0.066612326, -0.11355151, -0.1291897, -0.123219885, -0.15597168, -0.11538966, -0.1155584, -0.12066103, -0.09845304, -0.1332959, -0.030332519]
-sib[12][4][4] = [-0.066612326, -0.11355151, -0.12492451, -0.112929866, -0.16149957, -0.11538966, -0.116998374, -0.13061833, -0.09845304, -0.12543795, -0.061599184]
-sib[12][4][5] = [0.0025123034, 1.0014907E-10, 0.053207457, 9.0263964E-4, -0.020558564, 0.0020394656, 0.0033390545, 0.011301048, -0.012824291, 0.0, -0.07228549]
-sib[12][4][6] = [0.0018903521, -0.0024187758, 0.039827913, 0.0030355034, -1.848424E-4, 0.0055411807, 0.0012310293, -0.0030283711, -0.001245365, -9.997599E-4, -0.050878808]
-sib[12][4][7] = [0.0, -0.0031338136, 0.027766487, 0.0019135604, -0.010698572, 3.1835935E-4, 0.0017899475, -0.008762814, -0.016874405, -0.002893438, -0.06130428]
-sib[12][4][8] = [0.0, -0.009266639, -7.368182E-5, 0.011617387, 0.001163731, 0.0022711253, 0.015866034, -0.034351368, -0.0068342835, -0.004375567, -0.014380393]
-sib[12][4][9] = [0.0, 1.9077612E-10, -0.009199415, 0.0, -0.039862435, 0.0059030047, -0.009266032, -0.0107096005, -0.020761417, 0.0, -0.05307404]
-sib[12][4][10] = [-0.042421516, -0.018512525, -0.043992974, -0.023169914, -0.020156486, -0.012877224, -0.05430849, -0.021688228, 0.032247216, 4.7011906E-4, -0.039712198]
-sib[12][4][11] = [-0.0022680296, 1.0014907E-10, -0.06341405, 2.176337E-12, -0.055077005, 0.0050104028, -0.008798122, -0.014618345, -0.014143352, 0.0, -0.06282607]
-sib[12][4][12] = [-0.066612326, -0.11355151, -0.12492451, -0.112929866, -0.16149957, -0.11538966, -0.116998374, -0.13061833, -0.09845304, -0.12543795, -0.061599184]
-sib[12][5][5] = [-0.066612326, -0.10864625, -0.12343362, -0.11177879, -0.17609362, -0.11538966, -0.1549983, -0.13578743, -0.09845304, -0.1332959, -0.11867592]
-sib[12][5][6] = [0.0018903521, -0.0024187758, 0.03970538, 0.0016454, -1.848424E-4, 0.0055411807, 0.0012310293, -0.00983312, -0.0012453651, -0.0014035378, -0.046716478]
-sib[12][5][7] = [0.0, -0.002131835, 0.02546192, -2.0767644E-4, -0.018888839, 3.1835935E-4, 0.0036544318, -0.01277848, -0.016874405, -0.002893438, -0.060595863]
-sib[12][5][8] = [-0.0018001135, -0.009266639, 0.0025356233, 0.014169742, 0.004475348, 1.5195471E-4, 0.028451074, -0.024820304, -0.00857038, -0.0064024087, -0.014380393]
-sib[12][5][9] = [0.0, 1.9077612E-10, -0.00826835, 0.0, -0.04553474, 0.0059030047, -0.009266032, -0.014725266, -0.020761417, 0.0, -0.04970683]
-sib[12][5][10] = [-0.042421516, -0.02459588, -0.049889874, -0.02549581, -0.018052988, -0.012877224, -0.049359668, -0.021688228, 0.032247216, -0.0015919966, -0.033646762]
-sib[12][5][11] = [-0.0022680296, 1.0014907E-10, -0.0758889, 2.176337E-12, -0.06074931, 0.0050104028, -0.008798122, -0.01863401, -0.014143352, 0.0, -0.059458848]
-sib[12][5][12] = [-0.066612326, -0.10864625, -0.12343362, -0.11177879, -0.17609362, -0.11538966, -0.1549983, -0.13578743, -0.09845304, -0.1332959, -0.11867592]
-sib[12][6][6] = [-0.21977329, -0.14708066]
-sib[12][6][7] = [-0.0031454123, -0.0027184573]
-sib[12][6][8] = [-0.0020657047, 0.0010730807]
-sib[12][6][9] = [-0.031547464, -0.0020921042]
-sib[12][6][10] = [-0.0027999387, 0.0]
-sib[12][6][11] = [-0.038398787, -0.0020921042]
-sib[12][6][12] = [-0.21977329, -0.14708066]
-sib[12][7][7] = [-0.070287675, -0.10130751, -0.12471788, -0.11171554, -0.07886928, -0.10136128, -0.12544128, -0.09944325, -0.1007424, -0.12923843, -0.087187335]
-sib[12][7][8] = [0.0, -0.006991262, 0.008516971, 0.011617387, 0.024243666, 0.00120843, 0.01756433, -0.020783573, -0.01429616, 0.0, -0.016713453]
-sib[12][7][9] = [-0.0026487454, 1.9077612E-10, -0.020380361, 0.0, -0.030911159, 0.0026649372, -0.009129303, -0.026516961, -0.020761417, 0.0, -0.0399604]
-sib[12][7][10] = [-0.03959608, -0.02138694, -0.065242134, -0.002217327, -0.014213109, -0.017715154, -0.04369135, -0.0109786745, 0.038983237, 4.7011906E-4, -0.028741756]
-sib[12][7][11] = [-0.0022680296, 1.0014907E-10, -0.07734001, 0.0, -0.07001731, 0.002736577, -0.008661393, -0.030647058, -0.014143352, 0.0, -0.04481265]
-sib[12][7][12] = [-0.070287675, -0.10130751, -0.12471788, -0.11171554, -0.07886928, -0.10136128, -0.12544128, -0.09944325, -0.1007424, -0.12923843, -0.087187335]
-sib[12][8][8] = [-0.07740114, -0.08342379, -0.020840252, -0.16117935, -0.10326665, -0.152188]
-sib[12][8][9] = [-0.021634724, -0.0023679952, 0.0034294096, 0.0026649372, -0.00571475, -0.0023434684]
-sib[12][8][10] = [0.021962434, -0.015037, -0.03273655, -0.014496746, -0.014775982, -0.021082401]
-sib[12][8][11] = [0.0036583208, 0.0, -0.004733991, 0.002736577, 0.007878454, -0.0025892365]
-sib[12][8][12] = [-0.07740114, -0.08342379, -0.020840252, -0.16117935, -0.10326665, -0.152188]
-sib[12][9][9] = [-0.066612326, -0.086792886, -0.18704298, -0.07563632, -0.2077319, -0.112558655, -0.124514036, -0.10903801, -0.10152752, -0.12703392, -0.05805475]
-sib[12][9][10] = [-0.03663365, -0.0277887, -0.023582887, -0.028389614, -0.025193946, -0.014496746, -0.04119293, -0.01848028, 0.031277128, -0.001682732, -0.032713443]
-sib[12][9][11] = [-0.0022680296, -0.0029060307, -0.017712247, 0.0, -0.078158826, 0.0032188026, -0.009429961, -0.013295274, -0.008958689, 0.0, -0.05821557]
-sib[12][9][12] = [-0.066612326, -0.086792886, -0.18704298, -0.07563632, -0.2077319, -0.112558655, -0.124514036, -0.10903801, -0.10152752, -0.12703392, -0.05805475]
-sib[12][10][10] = [-0.043696746, 0.017504156, -0.108026385, -0.097694285, -0.084334195, -0.13396113, -0.08974121]
-sib[12][10][11] = [-0.046185188, 0.0040996876, 0.002736577, -0.021457953, 0.014619722, -0.044528395, -0.0011340148]
-sib[12][10][12] = [-0.043696746, 0.017504156, -0.108026385, -0.097694285, -0.084334195, -0.13396113, -0.08974121]
-sib[12][11][11] = [-0.05562356, -0.056120094, -0.066163555, -0.02676644, -0.22905226, -0.097308025, -0.078940906, -0.114429586, -0.084635064, -0.12053168, -0.0600905]
-sib[12][11][12] = [-0.05562356, -0.056120094, -0.066163555, -0.02676644, -0.22905226, -0.097308025, -0.078940906, -0.114429586, -0.084635064, -0.12053168, -0.0600905]
-sib[12][13][12] = [-0.0634601, 0.121503256, 0.0905497, 0.03245703, -0.10737981, -0.11269342, -0.08528571, -0.09541298, -0.025729481, -0.062081803, -0.118391044]
-sib[12][13][13] = [-0.0634601, 0.121503256, 0.0905497, 0.03245703, -0.10737981, -0.11269342, -0.08528571, -0.09541298, -0.025729481, -0.062081803, -0.118391044]
-sib[12][14][12] = [-0.2922967, 0.09841027, 0.05751633, 0.13540663, -0.19225334, -0.04868915, 0.03556701, 0.08739309]
-sib[12][14][13] = [-0.048450273, 0.04265136, 0.018110206, -0.08852613, 0.007167372, -0.0075320313, 0.051161762, -0.011463221]
-sib[12][14][14] = [-0.2922967, 0.09841027, 0.05751633, 0.13540663, -0.19225334, -0.04868915, 0.03556701, 0.08739309]
-sib[13][0][0] = [-0.002577262]
-sib[13][0][1] = [0.020385752]
-sib[13][0][2] = [-0.003985493]
-sib[13][0][3] = [0.01262584]
-sib[13][0][4] = [0.010592394]
-sib[13][0][5] = [0.009248944]
-sib[13][0][6] = [-0.0020194987]
-sib[13][0][7] = [0.01729148]
-sib[13][0][8] = [0.0043466156]
-sib[13][0][9] = [-0.015604364]
-sib[13][0][10] = [0.002398637]
-sib[13][0][11] = [-0.029153213]
-sib[13][0][12] = [-0.019152384]
-sib[13][0][13] = [-0.002577262]
-sib[13][1][1] = [-0.0035322793, -0.056849692, -0.09389981, -0.17096713, -0.101472065, -0.19047466]
-sib[13][1][2] = [0.05281534, -0.0010550767, -0.013799829, 0.002736577, -0.004425691, -0.0017134671]
-sib[13][1][3] = [0.21471578, -0.0011986856, 0.018373724, -0.0010610658, -0.011354887, -0.0014217427]
-sib[13][1][4] = [0.21713592, -0.0019344183, 0.012518062, -0.0033572963, -0.008851382, -0.0014217427]
-sib[13][1][5] = [0.23996167, 0.0, 0.019819837, -0.0010610658, -0.0100392075, -0.0045994055]
-sib[13][1][6] = [0.052056644, 0.003251902, -0.008108399, 0.0055411807, 0.015331525, -0.011876351]
-sib[13][1][7] = [0.07482041, -0.0010550767, -0.026815884, -0.0010610658, -0.006077345, -0.0020284676]
-sib[13][1][8] = [0.060928695, -0.003495631, 0.021835841, -0.008007782, 0.0, -0.020987764]
-sib[13][1][9] = [0.026991613, -0.0051660147, -0.0010380638, -0.0010610658, -0.01014044, -0.001910735]
-sib[13][1][10] = [0.07063134, -0.028143845, -0.024677392, -0.014496746, -0.02144141, -0.0075631905]
-sib[13][1][11] = [0.08260161, 0.0, -0.014365587, 0.002736577, 0.005665609, -0.0026584687]
-sib[13][1][12] = [0.14335619, 0.0, 0.01850898, -0.0010610658, -0.009589838, -0.0020284676]
-sib[13][1][13] = [-0.0035322793, -0.056849692, -0.09389981, -0.17096713, -0.101472065, -0.19047466]
-sib[13][2][2] = [-0.072285526, -0.042172294, -0.10663923, -0.10576053, -0.10048705, -0.09336635, -0.05242186, -0.061479766, -0.08743159, -0.1241359, -0.022830697]
-sib[13][2][3] = [0.0, -0.0011986856, 0.044484794, 0.0, -0.0016183588, -0.0010610659, -0.006648346, -0.032485265, -0.008552926, -0.0035743571, -0.08656964]
-sib[13][2][4] = [0.0, -0.0019344183, 0.034551185, -0.004602578, 0.0193729, -0.0010610659, -0.005755012, -0.02589345, -0.011145257, 0.0, -0.09432313]
-sib[13][2][5] = [0.0, 6.7673783E-12, 0.043885276, 1.4115933E-10, 0.014738231, 2.4786548E-4, -0.0074910205, -0.019999389, -0.011145257, 0.0, -0.09268984]
-sib[13][2][6] = [-0.0032348863, 8.3312625E-4, 0.020333562, 0.0091042705, -0.003436745, 0.0026807927, -3.935173E-12, -0.009389484, 6.4053755E-11, 0.0014698936, -0.036261305]
-sib[13][2][7] = [-0.004088621, -0.0031338136, 0.06420857, 0.0019135604, 3.8760272E-4, -0.0014732409, -9.805523E-4, -0.0167017, -0.01168974, -0.005065879, -0.08211417]
-sib[13][2][8] = [0.0, -0.003495631, 0.008985808, 0.017431367, 0.021536471, -0.001689041, 0.0021693285, -0.029445289, -0.01081989, 0.0, -0.017135741]
-sib[13][2][9] = [-0.0014469671, 9.7394426E-11, -0.0056969193, -0.0018933251, -0.036109902, -0.0010610659, -0.019288724, -0.011951676, -0.0139819635, 0.00495839, -0.08346313]
-sib[13][2][10] = [-0.033808216, -0.026206587, -0.035799783, 0.0036912595, -0.016909549, -0.017715154, -0.04581771, -0.010560656, 0.01765244, -0.0037438683, -0.042216007]
-sib[13][2][11] = [-0.0022680296, 6.7673783E-12, -0.056587223, -0.0021093525, -0.058760542, 0.002736577, -0.016456243, -0.03425883, -0.008958689, 0.0, -0.09669206]
-sib[13][2][12] = [-6.074951E-11, 6.7673783E-12, 0.027755236, 0.0, 0.0019314961, -2.0271495E-4, -0.019553484, -0.015146317, -0.016874405, -0.002893438, -0.10847643]
-sib[13][2][13] = [-0.072285526, -0.042172294, -0.10663923, -0.10576053, -0.10048705, -0.09336635, -0.05242186, -0.061479766, -0.08743159, -0.1241359, -0.022830697]
-sib[13][3][3] = [-0.06861018, -0.070185155, -0.05729734, -0.1245896, -0.15595144, -0.1091044, -0.11392195, -0.11304908, -0.094588086, -0.1309049, -0.013231826]
-sib[13][3][4] = [1.9813108E-11, -0.0019344182, 0.05979453, 0.0, -0.019546898, 7.305343E-4, 0.0010844865, 0.00540699, -0.011145257, 0.0, -0.0702638]
-sib[13][3][5] = [1.9813108E-11, 1.0014907E-10, 0.052455343, 1.4115933E-10, 0.002508262, 0.0020394656, 2.4181162E-4, 0.017892864, -0.013737589, -0.0035770652, -0.07525965]
-sib[13][3][6] = [0.0013248676, -0.0013598264, 0.042172015, 0.008557672, -0.003436745, 0.0055411807, 0.0012310293, -0.006624028, -0.001245365, 0.0014698936, -0.050878808]
-sib[13][3][7] = [-0.004088621, -0.0031338136, 0.040459488, 0.0019135604, -0.012858113, 3.1835935E-4, 0.0036544318, -0.009806709, -0.016874405, -0.002893438, -0.06396307]
-sib[13][3][8] = [0.0, -0.005771008, -0.005067763, 0.014026441, 0.001163731, -0.001689041, 0.015866034, -0.035657857, -0.0049615186, -0.0051903967, -0.015640365]
-sib[13][3][9] = [-0.001446967, 1.9077612E-10, -0.0052867793, -0.0018933251, -0.035505734, 0.0021770014, -0.015482147, -0.0036828225, -0.019166628, 0.00495839, -0.051627077]
-sib[13][3][10] = [-0.042421516, -0.036849163, -0.04202736, -0.019587224, -0.020156486, -0.012877224, -0.053442363, -0.022531686, 0.028473942, -0.0018322013, -0.033143736]
-sib[13][3][11] = [-0.0022680296, 1.0014907E-10, -0.054493945, -0.0021093525, -0.05714751, 0.0050104028, -0.01105269, -0.020512402, -0.014143352, -5.0404254E-11, -0.06539341]
-sib[13][3][12] = [0.0, 1.0014907E-10, 0.003179974, 0.0, -0.013400121, 0.0030353526, -0.014149932, -0.006800373, -0.024651403, -0.0064705033, -0.06526662]
-sib[13][3][13] = [-0.06861018, -0.070185155, -0.05729734, -0.1245896, -0.15595144, -0.1091044, -0.11392195, -0.11304908, -0.094588086, -0.1309049, -0.013231826]
-sib[13][4][4] = [-0.06861018, -0.070185155, -0.053032152, -0.11429958, -0.16147934, -0.1091044, -0.11536192, -0.12300641, -0.094588086, -0.12304694, -0.044498492]
-sib[13][4][5] = [1.9813108E-11, 1.0014907E-10, 0.070377015, 1.4115933E-10, -0.020200146, 0.0020394656, 0.0033390545, 0.011301048, -0.012824291, 0.0, -0.07228549]
-sib[13][4][6] = [0.0013248676, 8.3312625E-4, 0.042172015, 0.008557672, -0.003436745, 0.0055411807, 0.0012310293, -0.006624028, -0.001245365, 0.0038110686, -0.050878808]
-sib[13][4][7] = [-0.004088621, -0.0031338136, 0.044936035, 0.0019135604, -0.010340153, 3.1835935E-4, 0.0017899475, -0.009806709, -0.016874405, -0.002893438, -0.06130428]
-sib[13][4][8] = [0.0, -0.005771008, 3.9528054E-4, 0.014026441, 0.001163731, 4.3012958E-4, 0.015866034, -0.035657857, -0.0049615186, -0.004375567, -0.015640365]
-sib[13][4][9] = [-0.001446967, 1.9077612E-10, -8.1023434E-4, -0.0018933251, -0.035505734, 0.0021770014, -0.013885173, -0.0036828225, -0.019166628, 0.00495839, -0.051627077]
-sib[13][4][10] = [-0.042421516, -0.030765804, -0.04202736, -0.019587224, -0.020156486, -0.012877224, -0.05530525, -0.022531686, 0.028422037, -0.0037438683, -0.03920917]
-sib[13][4][11] = [-0.0022680296, 1.0014907E-10, -0.050017398, -0.0021093525, -0.05714751, 0.0050104028, -0.01105269, -0.020512402, -0.014143352, 0.0, -0.06539341]
-sib[13][4][12] = [0.0, 1.0014907E-10, 0.0076565193, 0.0, -0.013400121, 0.0030353526, -0.014149932, -0.006800373, -0.024651403, -0.0064705033, -0.06671913]
-sib[13][4][13] = [-0.06861018, -0.070185155, -0.053032152, -0.11429958, -0.16147934, -0.1091044, -0.11536192, -0.12300641, -0.094588086, -0.12304694, -0.044498492]
-sib[13][5][5] = [-0.06861018, -0.06527991, -0.051541254, -0.1131485, -0.17607339, -0.1091044, -0.15336186, -0.12817547, -0.094588086, -0.1309049, -0.101575226]
-sib[13][5][6] = [0.0013248676, 8.3312625E-4, 0.042049482, 0.0071675684, -0.003436745, 0.0055411807, 0.0012310293, -0.006624028, -0.0012453651, 0.0034072904, -0.046716478]
-sib[13][5][7] = [-0.004088621, -0.002131835, 0.042631466, -2.0767644E-4, -0.01853042, 3.1835935E-4, 0.0036544318, -0.013822373, -0.016874405, -0.002893438, -0.060595863]
-sib[13][5][8] = [-0.0018001135, -0.005771008, 0.0030045856, 0.016578797, 0.004475348, -0.001689041, 0.028451074, -0.026126793, -0.0066976147, -0.0064024087, -0.015640365]
-sib[13][5][9] = [-0.001446967, 1.9077612E-10, 1.2083119E-4, -0.0018933251, -0.04117804, 0.0021770014, -0.013885173, -0.007698486, -0.019166628, 0.00495839, -0.04825986]
-sib[13][5][10] = [-0.042421516, -0.036849163, -0.047924258, -0.021913122, -0.018052988, -0.012877224, -0.05035643, -0.022531686, 0.028422037, -0.005805984, -0.033143736]
-sib[13][5][11] = [-0.0022680296, 1.0014907E-10, -0.062492248, -0.0021093525, -0.062819816, 0.0050104028, -0.01105269, -0.02452807, -0.014143352, 0.0, -0.06202619]
-sib[13][5][12] = [0.0, 1.0014907E-10, 0.0055244016, 0.0, -0.024744734, 0.0030353526, -0.01105269, -0.012537207, -0.024651403, -0.0064705033, -0.058532193]
-sib[13][5][13] = [-0.06861018, -0.06527991, -0.051541254, -0.1131485, -0.17607339, -0.1091044, -0.15336186, -0.12817547, -0.094588086, -0.1309049, -0.101575226]
-sib[13][6][6] = [-0.14788091, -0.13914165]
-sib[13][6][7] = [0.01402414, -0.0027184573]
-sib[13][6][8] = [-0.0015967395, 0.0010730807]
-sib[13][6][9] = [-0.023158282, -0.0028650467]
-sib[13][6][10] = [-8.3432463E-4, -0.001063084]
-sib[13][6][11] = [-0.024725007, -0.0020921042]
-sib[13][6][12] = [-0.021378122, -0.004742817]
-sib[13][6][13] = [-0.14788091, -0.13914165]
-sib[13][7][7] = [-0.072285526, -0.057941165, -0.052825525, -0.113085255, -0.07884905, -0.095076025, -0.12380484, -0.091831304, -0.09687745, -0.1268474, -0.07008666]
-sib[13][7][8] = [0.0, -0.003495631, 0.008985933, 0.014026441, 0.024243666, -6.325657E-4, 0.01756433, -0.02209006, -0.012423395, 0.0, -0.017973425]
-sib[13][7][9] = [-0.0040957127, 1.9077612E-10, -0.01199118, -0.0018933251, -0.026554458, -0.0010610659, -0.013748444, -0.01949018, -0.019166628, 0.00495839, -0.03851343]
-sib[13][7][10] = [-0.03959608, -0.03364022, -0.06327652, 0.0013653624, -0.014213109, -0.017715154, -0.04468811, -0.011822132, 0.035158057, -0.0037438683, -0.028238727]
-sib[13][7][11] = [-0.005686443, 1.0014907E-10, -0.06616777, -0.0021093525, -0.07552003, 0.002736577, -0.010915961, -0.036541115, -0.014143352, 0.0, -0.046445943]
-sib[13][7][12] = [0.0, 1.0014907E-10, -0.00955368, 0.0, -0.016105724, -2.0271495E-4, -0.010915961, -0.020442957, -0.024565026, -0.002893438, -0.048007853]
-sib[13][7][13] = [-0.072285526, -0.057941165, -0.052825525, -0.113085255, -0.07884905, -0.095076025, -0.12380484, -0.091831304, -0.09687745, -0.1268474, -0.07008666]
-sib[13][8][8] = [-0.005508784, -0.040057447, -0.022209981, -0.1548941, -0.10678887, -0.13508728]
-sib[13][8][9] = [-0.013245542, -0.0023679952, 0.0015360848, -0.0010610658, -0.00571475, -8.9650124E-4]
-sib[13][8][10] = [0.023928046, -0.02729028, -0.029153861, -0.014496746, -0.016115021, -0.020579375]
-sib[13][8][11] = [0.032626066, 0.0, -0.020258695, 0.002736577, 0.007878454, -0.0025892365]
-sib[13][8][12] = [0.039524592, 0.0, -0.0035681347, -0.0010610658, -0.0051641474, -0.0016442349]
-sib[13][8][13] = [-0.005508784, -0.040057447, -0.022209981, -0.1548941, -0.10678887, -0.13508728]
-sib[13][9][9] = [-0.06861018, -0.04342656, -0.115150586, -0.077006035, -0.20771168, -0.1062734, -0.12287759, -0.10142606, -0.09766257, -0.124642916, -0.04095405]
-sib[13][9][10] = [-0.03663365, -0.040041983, -0.028703984, -0.027952358, -0.025193946, -0.014496746, -0.04218969, -0.019323738, 0.02745195, -0.005896719, -0.032210417]
-sib[13][9][11] = [-0.0022680296, -0.0029060307, -0.0020718835, -0.0021093525, -0.0809479, 0.0032188026, -0.011684529, -0.021435667, -0.008958689, 0.0, -0.060782917]
-sib[13][9][12] = [0.0, 1.0014907E-10, 0.055907477, -6.03846E-4, -0.03287065, 0.0012437524, -0.008434844, -0.0068599246, -0.016874405, -0.002893438, -0.06725843]
-sib[13][9][13] = [-0.06861018, -0.04342656, -0.115150586, -0.077006035, -0.20771168, -0.1062734, -0.12287759, -0.10142606, -0.09766257, -0.124642916, -0.04095405]
-sib[13][10][10] = [0.028195608, 0.0608705, -0.10174113, -0.09906401, -0.08908608, -0.11686043, -0.091739066]
-sib[13][10][11] = [-0.04299295, 0.0040996876, 0.002736577, -0.023567306, 0.012840907, -0.044528395, -0.0011340148]
-sib[13][10][12] = [-0.026183745, -0.0160307, -0.0010610658, -0.012499432, -0.03429284, -0.04231813, 0.0]
-sib[13][10][13] = [0.028195608, 0.0608705, -0.10174113, -0.09906401, -0.08908608, -0.11686043, -0.091739066]
-sib[13][11][11] = [-0.05762142, -0.055615727, -0.08320304, -0.04724413, -0.20891012, -0.100216396, -0.044462293, -0.09639623, -0.08077011, -0.12666674, -0.010189604]
-sib[13][11][12] = [-6.074951E-11, 6.7673783E-12, 0.05310737, 0.0, -0.033819657, 0.0032234818, -0.014521137, -0.018921316, -0.014282072, -0.002893438, -0.0884412]
-sib[13][11][13] = [-0.05762142, -0.055615727, -0.08320304, -0.04724413, -0.20891012, -0.100216396, -0.044462293, -0.09639623, -0.08077011, -0.12666674, -0.010189604]
-sib[13][12][12] = [-0.07050711, -0.03828383, 0.069364466, -0.075059645, -0.17359406, -0.09716197, -0.16338599, -0.09590105, -0.10625561, -0.11810293, -0.06465854]
-sib[13][12][13] = [-0.07050711, -0.03828383, 0.069364466, -0.075059645, -0.17359406, -0.09716197, -0.16338599, -0.09590105, -0.10625561, -0.11810293, -0.06465854]
-sib[13][14][13] = [-0.1659211, 0.09340296, -0.03943733, 0.11446824, -0.14515284, -0.054249067, 0.0129298, 0.13796264]
-sib[13][14][14] = [-0.1659211, 0.09340296, -0.03943733, 0.11446824, -0.14515284, -0.054249067, 0.0129298, 0.13796264]
-sib[14][0][0] = [-0.26117626]
-sib[14][0][1] = [-0.017622618]
-sib[14][0][2] = [0.019042788]
-sib[14][0][3] = [0.034817807]
-sib[14][0][4] = [0.03715513]
-sib[14][0][5] = [0.07564745]
-sib[14][0][6] = [0.08416031]
-sib[14][0][7] = [0.026421864]
-sib[14][0][8] = [-0.017768983]
-sib[14][0][9] = [0.014121643]
-sib[14][0][10] = [0.01895562]
-sib[14][0][11] = [0.0027374383]
-sib[14][0][12] = [0.0014118538]
-sib[14][0][13] = [-3.5631564E-4]
-sib[14][0][14] = [-0.26117626]
-sib[14][1][1] = [-0.17582023, -0.33003432]
-sib[14][1][2] = [-0.07298219, 0.08017363]
-sib[14][1][3] = [-0.044595454, 0.24184157]
-sib[14][1][4] = [-0.044595454, 0.24863249]
-sib[14][1][5] = [-0.041108444, 0.31129408]
-sib[14][1][6] = [-0.055057786, 0.13690108]
-sib[14][1][7] = [-0.06542454, 0.08888463]
-sib[14][1][8] = [-0.084223025, 0.037911303]
-sib[14][1][9] = [-0.05191639, 0.06165144]
-sib[14][1][10] = [-0.0041375235, 0.085146636]
-sib[14][1][11] = [-0.057649482, 0.11942609]
-sib[14][1][12] = [-0.06268189, 0.19172941]
-sib[14][1][13] = [-0.045791917, 0.1670861]
-sib[14][1][14] = [-0.17582023, -0.33003432]
-sib[14][2][2] = [-0.41633445, -0.3325971, -0.0025394333, -0.103917405, -0.06280382, -0.0606209, -0.06155448, -0.095411405]
-sib[14][2][3] = [0.047140226, -0.17357776, -0.12736656, -0.004048791, 0.0013672397, 0.002382424, -0.003422699, -0.03606269]
-sib[14][2][4] = [0.05560075, -0.17370752, -0.1452667, 0.014709412, -0.0032665338, 0.002382424, -0.008025277, -0.031911064]
-sib[14][2][5] = [0.10477061, -0.19139603, -0.13696872, 0.010074741, -0.0019576023, 0.002382424, -0.0019034167, -0.022194244]
-sib[14][2][6] = [0.10651337, 0.2530592, -0.0836741, 0.0, 0.005372986, -0.0024187758, 0.0035821022, -0.009184968]
-sib[14][2][7] = [0.06782577, -0.059634767, -0.1532801, -8.1344135E-4, -3.3273446E-4, 0.002462812, 0.001316632, -0.024671111]
-sib[14][2][8] = [-0.011346394, 0.013796195, -0.08232155, 0.021307971, -5.158714E-11, 0.0, 0.017145041, -0.02539291]
-sib[14][2][9] = [0.018515907, -0.10642335, -0.14123863, -0.042538613, -0.0017092963, 0.002382424, -5.969284E-4, -0.025626231]
-sib[14][2][10] = [-0.014229231, -0.088017225, -0.03879034, -0.016909549, -0.0055060163, -0.004306007, 0.0022200055, -0.008164193]
-sib[14][2][11] = [-0.030209748, -0.103037186, -0.15945292, -0.05590263, -7.144998E-5, 0.0013483575, -0.0021162108, -0.03075184]
-sib[14][2][12] = [0.038159836, -0.10674603, -0.17853299, 0.0066432473, -0.0038468728, 0.002382424, -0.0021162108, -0.02476873]
-sib[14][2][13] = [0.041038126, -0.10771326, -0.15810171, -0.0029368624, 7.86901E-4, 0.00244402, 0.0050375573, -0.018874675]
-sib[14][2][14] = [-0.41633445, -0.3325971, -0.0025394333, -0.103917405, -0.06280382, -0.0606209, -0.06155448, -0.095411405]
-sib[14][3][3] = [-0.36699247, -0.2039112, 0.0070594307, -0.15938173, -0.07854187, -0.088633776, -0.08038355, -0.14698069]
-sib[14][3][4] = [0.06682073, -0.23289232, -0.11106071, -0.02197733, 0.00315884, 0.002382424, -0.003422699, 0.001829566]
-sib[14][3][5] = [0.11334067, -0.25166684, -0.11953853, -0.0021552278, -1.660022E-4, 0.002382424, -0.0019034167, 0.01569801]
-sib[14][3][6] = [0.12835182, 0.31971252, -0.098291606, 0.0, 0.008233374, -0.0046117287, 0.0030355034, -0.0064195115]
-sib[14][3][7] = [0.044076692, -9.520084E-4, -0.13512899, -0.014059158, 0.0014588658, 0.002462812, 0.001316632, -0.017776119]
-sib[14][3][8] = [-0.02539996, 0.028047346, -0.08082617, 9.35231E-4, -5.158714E-11, -0.002275377, 0.013740117, -0.03160548]
-sib[14][3][9] = [0.018926047, -0.11500114, -0.10940257, -0.041934446, 0.0015287712, 0.002382424, -5.969284E-4, -0.017357375]
-sib[14][3][10] = [-0.020456813, -0.1725777, -0.02971807, -0.020156486, -6.6808646E-4, -0.014948583, -0.02105848, -0.020135224]
-sib[14][3][11] = [-0.028116472, -0.08097203, -0.12815426, -0.054289598, 0.0022023758, 0.0013483576, -0.0021162108, -0.01700541]
-sib[14][3][12] = [0.013584574, -0.11547441, -0.13625723, -0.008688369, -6.0880545E-4, 0.002382424, -0.0021162108, -0.016422788]
-sib[14][3][13] = [0.016462866, -0.11570191, -0.11679992, -0.018268479, 0.0040249685, 0.00244402, 0.0050375573, -0.01052873]
-sib[14][3][14] = [-0.36699247, -0.2039112, 0.0070594307, -0.15938173, -0.07854187, -0.088633776, -0.08038355, -0.14698069]
-sib[14][4][4] = [-0.36272728, -0.2256955, -0.024207238, -0.16490962, -0.07854187, -0.088633776, -0.07009352, -0.156938]
-sib[14][4][5] = [0.117238976, -0.24738343, -0.10641773, -0.022630576, 0.0044677714, 0.002382424, -0.0019034167, 0.011546385]
-sib[14][4][6] = [0.12835182, 0.3320111, -0.098291606, 0.0, 0.008233374, -0.0024187758, 0.0030355034, -0.0064195115]
-sib[14][4][7] = [0.04855324, -0.009776178, -0.1324702, -0.011541197, 0.0014588658, 0.002462812, 0.001316632, -0.017776119]
-sib[14][4][8] = [-0.019936921, 0.019036163, -0.08082617, 9.35231E-4, 0.0021191705, -0.002275377, 0.013740117, -0.03160548]
-sib[14][4][9] = [0.023402592, -0.123825304, -0.10940257, -0.041934446, 0.0015287712, 0.002382424, -5.969284E-4, -0.017357375]
-sib[14][4][10] = [-0.020456813, -0.1725777, -0.035783507, -0.020156486, -6.6808646E-4, -0.008865225, -0.02105848, -0.020135224]
-sib[14][4][11] = [-0.023639925, -0.08979619, -0.12815426, -0.054289598, 0.0022023758, 0.0013483576, -0.0021162108, -0.01700541]
-sib[14][4][12] = [0.01806112, -0.12429859, -0.13770974, -0.008688369, -6.0880545E-4, 0.002382424, -0.0021162108, -0.016422788]
-sib[14][4][13] = [0.020939412, -0.123445585, -0.11679992, -0.018268479, 0.0040249685, 0.00244402, 0.0050375573, -0.01052873]
-sib[14][4][14] = [-0.36272728, -0.2256955, -0.024207238, -0.16490962, -0.07854187, -0.088633776, -0.07009352, -0.156938]
-sib[14][5][5] = [-0.36123642, -0.24482392, -0.081283964, -0.17950368, -0.07854187, -0.08372852, -0.06894244, -0.16210708]
-sib[14][5][6] = [0.11223895, 0.3020243, -0.09068653, 0.0, 0.008233374, -0.0024187758, 0.0016454, -0.0064195115]
-sib[14][5][7] = [0.04624867, -0.008069332, -0.13176179, -0.019731464, 0.0014588658, 0.0034647905, -8.0460485E-4, -0.021791784]
-sib[14][5][8] = [-0.017327616, -0.00891828, -0.08082617, 0.004246848, -5.158714E-11, -0.002275377, 0.016292471, -0.022074414]
-sib[14][5][9] = [0.024333661, -0.122265466, -0.10603536, -0.04760675, 0.0015287712, 0.002382424, -5.969284E-4, -0.021373041]
-sib[14][5][10] = [-0.026353706, -0.16696651, -0.02971807, -0.018052988, -6.6808646E-4, -0.014948583, -0.023384375, -0.020135224]
-sib[14][5][11] = [-0.03611477, -0.10026051, -0.12478705, -0.0599619, 0.0022023758, 0.0013483576, -0.0021162108, -0.021021076]
-sib[14][5][12] = [0.015929002, -0.13113727, -0.12952282, -0.02003298, -6.0880545E-4, 0.002382424, -0.0021162108, -0.022159623]
-sib[14][5][13] = [0.018807292, -0.122472, -0.11006549, -0.029613093, 0.0040249685, 0.00244402, 0.0050375573, -0.016265566]
-sib[14][5][14] = [-0.36123642, -0.24482392, -0.081283964, -0.17950368, -0.07854187, -0.08372852, -0.06894244, -0.16210708]
-sib[14][6][6] = [-0.01986646, -0.4457749]
-sib[14][6][7] = [0.04084371, 0.023154521]
-sib[14][6][8] = [-0.06312829, -0.023712344]
-sib[14][6][9] = [0.1304324, 0.006567724]
-sib[14][6][10] = [0.056466203, 0.015722657]
-sib[14][6][11] = [0.06034638, 0.0071656443]
-sib[14][6][12] = [0.03023277, -0.005183216]
-sib[14][6][13] = [0.044423435, -0.002582052]
-sib[14][6][14] = [-0.01986646, -0.4457749]
-sib[14][7][7] = [-0.36252066, -0.31642604, -0.049795393, -0.082279354, -0.0645135, -0.076389775, -0.068879195, -0.12576294]
-sib[14][7][8] = [-0.009542683, 0.027514502, -0.07787864, 0.024015168, -5.158714E-11, 0.0, 0.013740117, -0.018037684]
-sib[14][7][9] = [0.012221649, -0.108519375, -0.09628893, -0.03298317, -0.0017092963, 0.002382424, -5.969284E-4, -0.03316474]
-sib[14][7][10] = [-0.041705973, -0.09222949, -0.024813062, -0.014213109, -0.0055060163, -0.011739643, -1.05890875E-4, -0.009425669]
-sib[14][7][11] = [-0.039790306, -0.117010556, -0.1092068, -0.07266212, -7.144998E-5, 0.0013483576, -0.0021162108, -0.03303413]
-sib[14][7][12] = [-0.0013734996, -0.15504168, -0.11806441, -0.014826199, -0.0038468728, 0.002382424, -0.0021162108, -0.030065373]
-sib[14][7][13] = [0.0037292093, -0.14397092, -0.09954115, -0.020974083, 7.86901E-4, 0.00244402, 0.0050375573, -0.024171317]
-sib[14][7][14] = [-0.36252066, -0.31642604, -0.049795393, -0.082279354, -0.0645135, -0.076389775, -0.068879195, -0.12576294]
-sib[14][8][8] = [-0.12043289, -0.3320108]
-sib[14][8][9] = [-0.049023703, 0.020810444]
-sib[14][8][10] = [-0.017153706, 0.038443338]
-sib[14][8][11] = [-0.05758025, 0.06945055]
-sib[14][8][12] = [-0.062297665, 0.07594731]
-sib[14][8][13] = [-0.045407683, 0.0632545]
-sib[14][8][14] = [-0.12043289, -0.3320108]
-sib[14][9][9] = [-0.42484578, -0.30829483, -0.020662794, -0.21114197, -0.07571086, -0.061875165, -0.03279999, -0.1353577]
-sib[14][9][10] = [-0.0072616246, -0.10945691, -0.039056044, -0.025193946, -0.0022876072, -0.018141404, -0.023384375, -0.016927276]
-sib[14][9][11] = [0.024305591, -0.067444876, -0.12354376, -0.07808998, 4.107759E-4, -0.0015576731, -0.0021162108, -0.017928675]
-sib[14][9][12] = [0.068555795, -0.093527764, -0.13824904, -0.02887747, -0.0024004057, 0.002382424, -0.0027200566, -0.018728673]
-sib[14][9][13] = [0.06919037, -0.082605064, -0.12528051, -0.034875646, 0.0022333683, 0.00244402, 0.0050375573, -0.010588281]
-sib[14][9][14] = [-0.42484578, -0.30829483, -0.020662794, -0.21114197, -0.07571086, -0.061875165, -0.03279999, -0.1353577]
-sib[14][10][10] = [-0.08593696, -0.30099216, -0.17435792, -0.05781908]
-sib[14][10][11] = [-0.10663833, -9.831986E-4, -0.02013312, -7.1449904E-5]
-sib[14][10][12] = [-0.104243465, -0.016535712, -0.06986312, -0.0047052237]
-sib[14][10][13] = [-0.08735348, -0.008938649, -0.059024725, -7.1449904E-5]
-sib[14][10][14] = [-0.08593696, -0.30099216, -0.17435792, -0.05781908]
-sib[14][11][11] = [-0.39289823, -0.30791253, 0.010101652, -0.21234041, -0.06965387, -0.07406434, -0.0030380678, -0.13032787]
-sib[14][11][12] = [0.04972389, -0.11358053, -0.14835113, -0.021637682, 0.004213098, 0.002382424, -0.0021162108, -0.028382119]
-sib[14][11][13] = [0.058538865, -0.11691623, -0.15007612, -0.01597961, 0.004213098, -3.959747E-4, 0.0050375573, -0.019224772]
-sib[14][11][14] = [-0.39289823, -0.30791253, 0.010101652, -0.21234041, -0.06965387, -0.07406434, -0.0030380678, -0.13032787]
-sib[14][12][12] = [-0.32926255, -0.34232852, -0.011567077, -0.15690242, -0.07579308, -0.09959442, -0.049961574, -0.11941129]
-sib[14][12][13] = [0.027948447, -0.13304974, -0.09411263, -0.03767293, 7.8690104E-4, 0.00244402, 0.0050375573, -0.019369822]
-sib[14][12][14] = [-0.32926255, -0.34232852, -0.011567077, -0.15690242, -0.07579308, -0.09959442, -0.049961574, -0.11941129]
-sib[14][13][13] = [-0.27716342, -0.29918027, 0.002273057, -0.17363767, -0.07579308, -0.09091581, -0.04491078, -0.12332719]
-sib[14][13][14] = [-0.27716342, -0.29918027, 0.002273057, -0.17363767, -0.07579308, -0.09091581, -0.04491078, -0.12332719]
-gra[0][1][0] = [-0.22818854]
-gra[0][1][1] = [-0.22818854]
-gra[0][1][2] = [-0.11684589]
-gra[0][1][3] = [-0.07394948]
-gra[0][1][4] = [-0.0680243]
-gra[0][1][5] = [-0.05763626]
-gra[0][1][6] = [0.041646246]
-gra[0][1][7] = [-0.057812385]
-gra[0][1][8] = [0.0034977961]
-gra[0][1][9] = [-0.07727066]
-gra[0][1][10] = [-0.055504914]
-gra[0][1][11] = [-0.14296876]
-gra[0][1][12] = [-0.12293938]
-gra[0][1][13] = [-0.10813473]
-gra[0][1][14] = [0.45705685]
-gra[0][2][0] = [-0.15013406, -0.2426285]
-gra[0][2][1] = [0.019528074, 0.0660074]
-gra[0][2][2] = [-0.15013406, -0.2426285]
-gra[0][2][3] = [-0.04805225, -0.10163534]
-gra[0][2][4] = [-0.072765164, -0.11548856]
-gra[0][2][5] = [-0.058554545, -0.11241687]
-gra[0][2][6] = [0.019643955, -0.032943882]
-gra[0][2][7] = [-0.06858881, -0.09112317]
-gra[0][2][8] = [-0.04587385, -0.09906794]
-gra[0][2][9] = [-0.08696036, -0.08442209]
-gra[0][2][10] = [-0.06429993, -0.024919685]
-gra[0][2][11] = [-0.12994505, -0.043445118]
-gra[0][2][12] = [-0.14164223, -0.04568313]
-gra[0][2][13] = [-0.099208415, -0.06146796]
-gra[0][2][14] = [0.41737968, 0.14532717]
-gra[0][3][0] = [-0.13910182, -0.2825055]
-gra[0][3][1] = [0.028612794, 0.08540308]
-gra[0][3][2] = [-0.046550658, -0.0182662]
-gra[0][3][3] = [-0.13910182, -0.2825055]
-gra[0][3][4] = [0.0108578075, -0.035993043]
-gra[0][3][5] = [3.5551563E-4, -0.051619668]
-gra[0][3][6] = [0.01169499, -0.048168648]
-gra[0][3][7] = [-0.017285692, -0.09887939]
-gra[0][3][8] = [-0.04997577, -0.14533053]
-gra[0][3][9] = [-0.044813514, -0.06871706]
-gra[0][3][10] = [-0.052825183, 0.04502643]
-gra[0][3][11] = [-0.091644205, -0.039359495]
-gra[0][3][12] = [-0.0813158, -0.079372145]
-gra[0][3][13] = [-0.04325054, -0.08941097]
-gra[0][3][14] = [0.43075097, 0.16887097]
-gra[0][4][0] = [-0.13910182, -0.28454143]
-gra[0][4][1] = [0.028612794, 0.08540308]
-gra[0][4][2] = [-0.053501334, -0.022827461]
-gra[0][4][3] = [0.01548511, 0.022885837]
-gra[0][4][4] = [-0.13910182, -0.28454143]
-gra[0][4][5] = [0.029627925, -0.03535446]
-gra[0][4][6] = [0.01169499, -0.048168648]
-gra[0][4][7] = [-0.017285692, -0.089105465]
-gra[0][4][8] = [-0.04997577, -0.14246826]
-gra[0][4][9] = [-0.044813514, -0.06973502]
-gra[0][4][10] = [-0.052825183, 0.042236067]
-gra[0][4][11] = [-0.091644205, -0.040377453]
-gra[0][4][12] = [-0.0813158, -0.0803901]
-gra[0][4][13] = [-0.04325054, -0.090428926]
-gra[0][4][14] = [0.43075097, 0.16887097]
-gra[0][5][0] = [-0.14515881, -0.29451418]
-gra[0][5][1] = [0.028612794, 0.0703686]
-gra[0][5][2] = [-0.055704843, -0.020307925]
-gra[0][5][3] = [0.0072715217, 0.020844113]
-gra[0][5][4] = [-5.109301E-4, 0.025405373]
-gra[0][5][5] = [-0.14515881, -0.29451418]
-gra[0][5][6] = [0.013943817, -0.036353186]
-gra[0][5][7] = [-0.01461166, -0.08993692]
-gra[0][5][8] = [-0.060220703, -0.10150701]
-gra[0][5][9] = [-0.043248653, -0.05752173]
-gra[0][5][10] = [-0.05493198, 0.042415746]
-gra[0][5][11] = [-0.09857967, -0.030557191]
-gra[0][5][12] = [-0.08693646, -0.07471453]
-gra[0][5][13] = [-0.047174573, -0.076235354]
-gra[0][5][14] = [0.44249806, 0.15094155]
-gra[0][6][0] = [-0.20701182, -0.20022848, -0.104408376]
-gra[0][6][1] = [0.14289244, 0.0283306, -0.029538298]
-gra[0][6][2] = [-0.0082890075, 0.05742196, -0.011392591]
-gra[0][6][3] = [0.0044608647, -0.029823117, -0.017902642]
-gra[0][6][4] = [-0.020159526, -0.029823117, -0.017902642]
-gra[0][6][5] = [0.029669786, -0.044923708, -0.017902642]
-gra[0][6][6] = [-0.20701182, -0.20022848, -0.104408376]
-gra[0][6][7] = [-0.10183145, -0.091028236, -0.04588911]
-gra[0][6][8] = [0.032606296, 0.017808456, -0.008648319]
-gra[0][6][9] = [-0.13632824, -0.07054741, -0.02793441]
-gra[0][6][10] = [-0.059310794, -0.04506547, 0.009192239]
-gra[0][6][11] = [-0.1909292, -0.092181034, -0.0437085]
-gra[0][6][12] = [-0.16031356, -0.065739915, -0.03355049]
-gra[0][6][13] = [-0.15541416, -0.027346965, -0.036728404]
-gra[0][6][14] = [0.7396867, 0.27478725, 0.2738842]
-gra[0][7][0] = [-0.1473084, -0.25213647]
-gra[0][7][1] = [0.035285007, 0.058604628]
-gra[0][7][2] = [-0.05160928, -0.0224412]
-gra[0][7][3] = [0.020225829, -0.029645607]
-gra[0][7][4] = [0.006433309, -0.029645607]
-gra[0][7][5] = [0.034157895, -0.027836025]
-gra[0][7][6] = [-0.02770169, 0.0031483166]
-gra[0][7][7] = [-0.1473084, -0.25213647]
-gra[0][7][8] = [-0.029250327, -0.083425164]
-gra[0][7][9] = [-0.0536678, -0.10675399]
-gra[0][7][10] = [-0.062462002, 0.027226757]
-gra[0][7][11] = [-0.11521182, -0.06146239]
-gra[0][7][12] = [-0.098107755, -0.08854464]
-gra[0][7][13] = [-0.05266825, -0.092032686]
-gra[0][7][14] = [0.4630408, 0.15594469]
-gra[0][8][0] = [-0.2117028]
-gra[0][8][1] = [0.017306514]
-gra[0][8][2] = [-0.09911068]
-gra[0][8][3] = [-0.020114591]
-gra[0][8][4] = [-0.03958766]
-gra[0][8][5] = [-0.0038710376]
-gra[0][8][6] = [-0.06144519]
-gra[0][8][7] = [-0.07898003]
-gra[0][8][8] = [-0.2117028]
-gra[0][8][9] = [-0.11180681]
-gra[0][8][10] = [-0.05344535]
-gra[0][8][11] = [-0.17514]
-gra[0][8][12] = [-0.16525681]
-gra[0][8][13] = [-0.15022904]
-gra[0][8][14] = [0.5003734]
-gra[0][9][0] = [-0.17324714, -0.21192437]
-gra[0][9][1] = [0.026308253, 0.07592523]
-gra[0][9][2] = [-0.062093064, -0.02629318]
-gra[0][9][3] = [0.0027108872, -0.010167679]
-gra[0][9][4] = [-0.011081627, -0.008946633]
-gra[0][9][5] = [0.016642952, -0.004286417]
-gra[0][9][6] = [-0.058611736, 0.0031483166]
-gra[0][9][7] = [-0.07019833, -0.032258406]
-gra[0][9][8] = [-0.020757651, 0.02516887]
-gra[0][9][9] = [-0.17324714, -0.21192437]
-gra[0][9][10] = [-0.03127932, 0.021869836]
-gra[0][9][11] = [-0.14179832, -0.06737257]
-gra[0][9][12] = [-0.12213887, -0.07869322]
-gra[0][9][13] = [-0.08363266, -0.11601491]
-gra[0][9][14] = [0.41314566, 0.14072108]
-gra[0][10][0] = [-0.14749695]
-gra[0][10][1] = [0.042411044]
-gra[0][10][2] = [-0.0708016]
-gra[0][10][3] = [0.012733186]
-gra[0][10][4] = [-0.0067398907]
-gra[0][10][5] = [0.0209847]
-gra[0][10][6] = [-0.080536366]
-gra[0][10][7] = [-0.06538718]
-gra[0][10][8] = [-0.06640356]
-gra[0][10][9] = [-0.029906988]
-gra[0][10][10] = [-0.14749695]
-gra[0][10][11] = [-0.11649244]
-gra[0][10][12] = [-0.12730673]
-gra[0][10][13] = [-0.11145951]
-gra[0][10][14] = [0.3879149]
-gra[0][11][0] = [-0.1370282, -0.23143397]
-gra[0][11][1] = [0.0273618, 0.084600694]
-gra[0][11][2] = [-0.063277826, -0.023195233]
-gra[0][11][3] = [0.004298934, -0.032105718]
-gra[0][11][4] = [-0.00949358, -0.032105718]
-gra[0][11][5] = [0.018230999, -0.027445499]
-gra[0][11][6] = [-0.06418139, 0.0031483166]
-gra[0][11][7] = [-0.07162588, -0.03143182]
-gra[0][11][8] = [-0.06400743, 0.048796967]
-gra[0][11][9] = [-0.021573273, -0.020941049]
-gra[0][11][10] = [0.020022688, -0.024484597]
-gra[0][11][11] = [-0.1370282, -0.23143397]
-gra[0][11][12] = [-0.13074017, -0.035075203]
-gra[0][11][13] = [-0.11738783, -0.0598739]
-gra[0][11][14] = [0.4557841, 0.12184289]
-gra[0][12][0] = [-0.14078712, -0.28310618]
-gra[0][12][1] = [0.02626732, 0.07668723]
-gra[0][12][2] = [-0.05231997, -0.034314517]
-gra[0][12][3] = [0.014959173, -0.0400435]
-gra[0][12][4] = [0.0011666575, -0.0400435]
-gra[0][12][5] = [0.028891241, -0.03924354]
-gra[0][12][6] = [-0.06071323, 0.0031483166]
-gra[0][12][7] = [-0.05261325, -0.0455008]
-gra[0][12][8] = [-0.06375543, 0.04426416]
-gra[0][12][9] = [-0.015454872, -0.03264485]
-gra[0][12][10] = [0.026441302, -0.027270192]
-gra[0][12][11] = [-0.111271694, -0.016094657]
-gra[0][12][12] = [-0.14078712, -0.28310618]
-gra[0][12][13] = [-0.045593165, -0.047326043]
-gra[0][12][14] = [0.43311912, 0.15603168]
-gra[0][13][0] = [-0.16068856, -0.27489665]
-gra[0][13][1] = [0.007832401, 0.04545995]
-gra[0][13][2] = [-0.056557372, -0.024525002]
-gra[0][13][3] = [0.010721763, -0.034435283]
-gra[0][13][4] = [-0.0030707559, -0.031209692]
-gra[0][13][5] = [0.024653831, -0.02940011]
-gra[0][13][6] = [-0.062085137, 0.0031483166]
-gra[0][13][7] = [-0.054515734, -0.038377617]
-gra[0][13][8] = [-0.085020155, 0.015137604]
-gra[0][13][9] = [-0.024306918, -0.02129151]
-gra[0][13][10] = [0.035358965, -0.00568016]
-gra[0][13][11] = [-0.12777625, -0.004063463]
-gra[0][13][12] = [-0.011886083, -0.022303093]
-gra[0][13][13] = [-0.16068856, -0.27489665]
-gra[0][13][14] = [0.45522755, 0.13709247]
-gra[0][14][0] = [-0.17188504, -0.4140188, -0.21580803, -0.30272162]
-gra[0][14][1] = [0.016842496, -0.017852116, -0.037359446, 0.08003807]
-gra[0][14][2] = [-0.036550064, -0.054342628, -0.08685365, -0.065238416]
-gra[0][14][3] = [0.12644783, -0.11217301, -0.1632629, -0.049610063]
-gra[0][14][4] = [0.10285749, -0.11729095, -0.1632629, -0.049610063]
-gra[0][14][5] = [0.13867706, -0.17571141, -0.17718932, -0.04432483]
-gra[0][14][6] = [-0.09154768, 0.12986793, 0.07644551, -0.0072514024]
-gra[0][14][7] = [-0.06673313, -0.07734997, -0.14175922, -0.070629224]
-gra[0][14][8] = [-0.11277676, -0.023170393, -0.014400727, 0.097420625]
-gra[0][14][9] = [5.980348E-4, -0.16348687, -0.13709308, -0.03563946]
-gra[0][14][10] = [0.13337196, -0.08529888, -0.09218985, 0.08115862]
-gra[0][14][11] = [-0.10826583, -0.099610835, -0.077772625, -0.056411043]
-gra[0][14][12] = [0.038882237, -0.11401746, -0.1542461, -0.06652495]
-gra[0][14][13] = [0.013515249, -0.12234244, -0.15172419, -0.04440602]
-gra[0][14][14] = [-0.17188504, -0.4140188, -0.21580803, -0.30272162]
-gra[1][0][0] = [-0.108077995]
-gra[1][0][1] = [-0.108077995]
-gra[1][2][1] = [0.03391336, -0.1725873, 0.0012959396, -0.060160123, -0.25640324, -0.07938032]
-gra[1][2][2] = [0.03391336, -0.1725873, 0.0012959396, -0.060160123, -0.25640324, -0.07938032]
-gra[1][2][3] = [-0.09120312, 0.014431813, 0.11346866, 0.08282627, -0.012589271, -0.035313837]
-gra[1][2][4] = [-0.10589576, -0.0059166737, 0.045106955, 0.053036187, 0.014354843, -0.04964634]
-gra[1][2][5] = [-0.09762943, -0.0027514172, 0.008785598, 0.025530735, 0.019964844, -0.053498782]
-gra[1][2][6] = [0.05597324, 0.01847283, -0.033105604, 0.0642303, -0.0067018787, -0.034922447]
-gra[1][2][7] = [-0.057329256, -0.013323549, 0.009656799, 0.125539, -0.0463543, -0.029764814]
-gra[1][2][8] = [-0.09219575, 0.030391878, -0.16111393, -0.038332492, 0.031330578, 9.5252134E-4]
-gra[1][2][9] = [0.026323536, -0.03530977, 0.2074039, 0.19392449, -0.03207425, -0.023239741]
-gra[1][2][10] = [0.038964078, 0.0069643552, -0.10429216, 0.02605302, -0.04147891, -0.02538526]
-gra[1][2][11] = [0.06267894, -0.034079902, 0.11534285, 0.21231613, -0.07042499, 0.02830124]
-gra[1][2][12] = [0.022294577, -0.07818291, 0.06643256, 0.21217202, -0.059620876, 0.022926517]
-gra[1][2][13] = [0.008492436, -0.08288318, 0.05925089, 0.1912733, -0.024221312, -1.7583044E-4]
-gra[1][2][14] = [0.008239258, -0.0070896456, -0.002662993, 0.023809846, 0.032671068, -0.078601785]
-gra[1][3][1] = [-0.20384672, -0.20074788, -0.15047659, -0.47667956, -0.32233158, -0.18277587]
-gra[1][3][2] = [-0.04078209, -0.00964256, -0.007887523, -0.02920713, 0.048171755, -0.0064258603]
-gra[1][3][3] = [-0.20384672, -0.20074788, -0.15047659, -0.47667956, -0.32233158, -0.18277587]
-gra[1][3][4] = [-0.08607493, -0.011066449, 0.03337828, 0.017589318, 0.053817187, 0.026608063]
-gra[1][3][5] = [-0.11435424, -0.028249675, -0.0713048, -0.041468374, 0.06554918, 0.0051536495]
-gra[1][3][6] = [0.021533351, 0.014141606, -0.02189768, 0.0406683, 0.019845601, -0.050147213]
-gra[1][3][7] = [-0.07811742, -0.015330459, -0.077608146, 0.025373504, -0.028645419, -0.044204023]
-gra[1][3][8] = [-0.11033088, 0.014251199, -0.12801346, -0.030778375, 0.0073718023, -0.045310076]
-gra[1][3][9] = [-0.021687271, -0.07072508, 0.07316658, 0.006834414, 0.018396648, -0.009679461]
-gra[1][3][10] = [-0.043205068, -0.08140806, -0.080073446, 0.03171298, -0.05723045, 0.04153792]
-gra[1][3][11] = [0.02166934, -0.07386948, -0.024203774, 0.03216322, 0.002841484, 0.03024212]
-gra[1][3][12] = [-0.009991158, -0.072576635, -0.04701072, -0.0074484567, -0.019265298, -0.012907258]
-gra[1][3][13] = [-0.015750494, -0.08129193, -0.054456256, -0.04274753, 0.015238559, -0.030263584]
-gra[1][3][14] = [0.011959078, 0.0016981189, 0.002318908, 0.02490218, 0.03298948, -0.055057995]
-gra[1][4][1] = [-0.19834158, -0.1913248, -0.14450346, -0.4738161, -0.33214733, -0.18481179]
-gra[1][4][2] = [-0.037335068, -0.006893658, -0.007887523, -0.034267876, 0.0602602, -0.010987123]
-gra[1][4][3] = [-0.017518334, 0.018093698, -0.016213104, -0.016341481, 0.07057031, 0.037748877]
-gra[1][4][4] = [-0.19834158, -0.1913248, -0.14450346, -0.4738161, -0.33214733, -0.18481179]
-gra[1][4][5] = [-0.08122997, -0.009616363, -0.010314366, -0.019207178, 0.040883962, 0.02032251]
-gra[1][4][6] = [0.021533351, 0.014141606, -0.02189768, 0.0406683, 0.017986417, -0.050147213]
-gra[1][4][7] = [-0.07007887, -0.015330459, -0.077608146, 0.02348224, -0.03466012, -0.034430098]
-gra[1][4][8] = [-0.11033088, 0.017701223, -0.13087574, -0.030211292, 0.009520162, -0.0424478]
-gra[1][4][9] = [-0.013648728, -0.07072508, 0.07316658, 0.004943151, 0.012381943, -0.010697419]
-gra[1][4][10] = [-0.043205068, -0.08140806, -0.080073446, 0.03171298, -0.05618029, 0.038747557]
-gra[1][4][11] = [0.029707883, -0.07386948, -0.024203774, 0.030271959, -0.0031732197, 0.029224155]
-gra[1][4][12] = [-0.0019526065, -0.072576635, -0.04701072, -0.009339724, -0.025280003, -0.013925216]
-gra[1][4][13] = [-0.0077119498, -0.08129193, -0.054456256, -0.044638794, 0.009223858, -0.031281546]
-gra[1][4][14] = [0.011959078, 0.0016981189, 0.002318908, 0.02490218, 0.035166137, -0.055057995]
-gra[1][5][1] = [-0.1474042, -0.12128653, -0.17734613, -0.43427634, -0.26872668, -0.207103]
-gra[1][5][2] = [-0.018892953, -0.006893658, -0.010367418, -0.038954537, 0.058182646, -0.008467588]
-gra[1][5][3] = [-0.0037282254, 0.018976383, -0.018693, -0.02608889, 0.07759199, 0.03570715]
-gra[1][5][4] = [-8.831457E-4, 0.018093698, -0.018693, -0.021028142, 0.071870804, 0.039219104]
-gra[1][5][5] = [-0.1474042, -0.12128653, -0.17734613, -0.43427634, -0.26872668, -0.207103]
-gra[1][5][6] = [0.047771584, 0.015253589, -0.01949577, 0.044564478, 0.021003243, -0.03833175]
-gra[1][5][7] = [-0.06801275, -0.010077919, -0.058173127, 0.021577448, -0.04160948, -0.035261553]
-gra[1][5][8] = [-0.08263614, -0.0093364185, -0.09053127, -0.005192401, -0.008493237, -0.0014865557]
-gra[1][5][9] = [-0.009302059, -0.06351237, 0.10116945, -0.007041836, -0.002656164, 0.0015158653]
-gra[1][5][10] = [-0.059016325, -0.0888929, -0.080073446, 0.021833349, -0.034138784, 0.038927235]
-gra[1][5][11] = [0.040282093, -0.06309896, 0.010262955, 0.018484885, -0.029200297, 0.039044417]
-gra[1][5][12] = [-0.0014948205, -0.06035639, -0.008429811, -0.009474121, -0.060335815, -0.008249627]
-gra[1][5][13] = [-0.009723224, -0.06937733, -0.02150535, -0.048633333, -0.0076052034, -0.01708798]
-gra[1][5][14] = [0.017121516, 0.0016981189, 0.0018258324, 0.016744861, -0.007697665, -0.07298742]
-gra[1][6][1] = [-0.37519073]
-gra[1][6][2] = [-0.020675538]
-gra[1][6][3] = [-0.007164038]
-gra[1][6][4] = [-0.0037859974]
-gra[1][6][5] = [0.0010387793]
-gra[1][6][6] = [-0.37519073]
-gra[1][6][7] = [0.0011221641]
-gra[1][6][8] = [-0.07499262]
-gra[1][6][9] = [-0.04147849]
-gra[1][6][10] = [0.029040512]
-gra[1][6][11] = [-0.031770144]
-gra[1][6][12] = [0.001088425]
-gra[1][6][13] = [0.023952274]
-gra[1][6][14] = [-0.051569473]
-gra[1][7][1] = [-0.1296072, -0.1442439, -0.11772594, -0.02452228, -0.22837678, -0.14893955]
-gra[1][7][2] = [-0.03975167, -0.008707181, -0.010367418, -0.050558057, 0.060622584, -0.010600864]
-gra[1][7][3] = [-0.021678163, 0.013831518, -0.021172896, -0.027095923, 0.07488371, -0.014782568]
-gra[1][7][4] = [-0.023485089, 0.013831518, -0.021172896, -0.027095923, 0.07826175, -0.015831877]
-gra[1][7][5] = [-0.0134816, 0.0073947697, -0.023892898, -0.023722092, 0.073896036, -0.012981238]
-gra[1][7][6] = [-0.013946036, 0.0, -0.009565255, 0.0022181221, -0.013034178, 0.0]
-gra[1][7][7] = [-0.1296072, -0.1442439, -0.11772594, -0.02452228, -0.22837678, -0.14893955]
-gra[1][7][8] = [-0.09351474, -0.0084727695, -0.050743505, -0.068448156, 0.008918113, 0.005457081]
-gra[1][7][9] = [-0.015679458, -0.0576052, 0.2337375, 0.12339698, -0.07801207, -0.04771639]
-gra[1][7][10] = [-0.011989798, -0.018274585, -0.11092469, 0.03623878, -0.067991786, 0.023738246]
-gra[1][7][11] = [0.04772278, -0.09258899, 0.11116379, 0.14959577, -0.087560154, 0.008139222]
-gra[1][7][12] = [0.003004335, -0.08354779, 0.08987856, 0.12448278, -0.101327725, -0.022079729]
-gra[1][7][13] = [-0.019510493, -0.093155615, 0.0728795, 0.07653391, -0.053730335, -0.032885306]
-gra[1][7][14] = [-0.042104535, -0.009785821, -0.01755292, 2.008588E-4, 0.013726235, -0.06798428]
-gra[1][8][1] = [-0.19699688]
-gra[1][8][2] = [-0.0037809995]
-gra[1][8][3] = [-0.0015772863]
-gra[1][8][4] = [0.0018007546]
-gra[1][8][5] = [0.0026140255]
-gra[1][8][6] = [-2.4660824E-11]
-gra[1][8][7] = [-0.0066752536]
-gra[1][8][8] = [-0.19699688]
-gra[1][8][9] = [-0.024493186]
-gra[1][8][10] = [0.025926992]
-gra[1][8][11] = [-0.0053957887]
-gra[1][8][12] = [-0.07335845]
-gra[1][8][13] = [-0.0414089]
-gra[1][8][14] = [-0.03604288]
-gra[1][9][1] = [-0.03215016, -0.13737147, -0.15802538, -0.31892398, -0.20624262, -0.078629926]
-gra[1][9][2] = [-0.05952637, -0.010836507, -0.007887523, -0.041915026, 0.053469047, -0.014452843]
-gra[1][9][3] = [-0.04573596, 0.013338042, -0.016213104, -0.024018865, 0.08665495, 0.004695354]
-gra[1][9][4] = [-0.04754288, 0.010904258, -0.018618636, -0.024018865, 0.090032995, 0.0048670936]
-gra[1][9][5] = [-0.037539396, 0.013338042, -0.021145605, -0.02233195, 0.085607246, 0.010568369]
-gra[1][9][6] = [-0.01127401, 0.0, -0.012245407, -0.0012549662, -0.01517438, -0.0015686363]
-gra[1][9][7] = [-0.05112793, -0.014006899, -0.013934363, -0.017197616, 0.026523141, -0.01844468]
-gra[1][9][8] = [0.016177364, -0.012701306, 0.0, 0.046596747, -0.020700313, -0.012177394]
-gra[1][9][9] = [-0.03215016, -0.13737147, -0.15802538, -0.31892398, -0.20624262, -0.078629926]
-gra[1][9][10] = [-0.027691698, -0.032388207, -0.07824364, 0.059880435, 0.05596056, 0.018381324]
-gra[1][9][11] = [0.103498794, -0.040216103, 0.062177118, 0.110756174, 0.059570715, 0.0022290398]
-gra[1][9][12] = [0.10042124, -0.063853696, 0.026564376, 0.02724505, -8.004056E-4, -0.01222833]
-gra[1][9][13] = [0.03640536, -0.070025615, 0.046619833, -0.0041939775, 0.06556506, -0.056867536]
-gra[1][9][14] = [0.027506243, -0.009208607, 0.041899607, 0.030765705, -0.024402268, -0.083207875]
-gra[1][10][1] = [-0.22700319, -0.1375201, -0.23030068, -0.18327193, -0.06355304]
-gra[1][10][2] = [-0.004317823, -0.030189537, -0.016693661, -0.019362736, 0.0016988069]
-gra[1][10][3] = [-0.006293524, -0.06463695, -0.02939278, -0.022921724, 0.0021310751]
-gra[1][10][4] = [-0.006293524, -0.066443875, -0.02939278, -0.014431438, 0.002968254]
-gra[1][10][5] = [-0.009013527, -0.056440387, -0.02939278, -0.010356696, 0.002968254]
-gra[1][10][6] = [-0.010577854, -0.01692955, 0.0, 0.0, 0.0042515756]
-gra[1][10][7] = [-0.006494678, -0.035746936, -0.014152209, -0.018789249, 0.0016988069]
-gra[1][10][8] = [0.0, -0.034866028, 0.043909788, -0.01032755, 0.0020160119]
-gra[1][10][9] = [-0.006293524, -0.03642938, -0.024016019, -0.021367721, 0.0040959795]
-gra[1][10][10] = [-0.22700319, -0.1375201, -0.23030068, -0.18327193, -0.06355304]
-gra[1][10][11] = [0.016493393, 0.023839124, -0.028824054, -0.03582031, -0.11322439]
-gra[1][10][12] = [0.002408312, -0.02686254, -0.003199962, -0.043980688, -0.07248109]
-gra[1][10][13] = [0.0023821716, -0.02852016, 0.022710027, 0.0024976633, -0.082591094]
-gra[1][10][14] = [-0.006466228, 0.024950877, 0.0045046695, -0.007963004, 9.530978E-4]
-gra[1][11][1] = [0.0115634315, -0.1754307, -0.04472863, -0.21108384, -0.09292723, -0.10085574]
-gra[1][11][2] = [-0.056997687, -0.00916218, -0.007887523, -0.041793864, 0.08209353, -0.011354894]
-gra[1][11][3] = [-0.03058076, 0.00954598, -0.016213104, -0.022438496, 0.0804837, -0.017242681]
-gra[1][11][4] = [-0.032387692, 0.00954598, -0.016213104, -0.022438496, 0.083861746, -0.018291987]
-gra[1][11][5] = [-0.021216994, 0.00954598, -0.018933106, -0.02075158, 0.08062985, -0.012590716]
-gra[1][11][6] = [-0.013345296, 0.0, -0.010166409, 0.0022181221, -0.016150277, -0.0015686363]
-gra[1][11][7] = [-0.058763314, -0.024813319, -0.013934363, -0.018591769, 0.045031175, -0.01761809]
-gra[1][11][8] = [-0.010564283, -0.014879585, 0.0, 0.08221486, -0.020155832, 0.011569124]
-gra[1][11][9] = [-0.03976113, -0.0266835, -0.018693, -0.0038433694, 0.108054, -0.007127323]
-gra[1][11][10] = [0.17253473, -0.0051165284, -0.12898529, 0.05902472, 0.08841419, -0.020457178]
-gra[1][11][11] = [0.0115634315, -0.1754307, -0.04472863, -0.21108384, -0.09292723, -0.10085574]
-gra[1][11][12] = [0.09484108, -0.06539201, 0.11705991, 0.13666858, -0.03076404, 0.030293347]
-gra[1][11][13] = [0.031199355, -0.09599421, 0.03979923, 0.07013954, 0.044424616, -7.2653266E-4]
-gra[1][11][14] = [-0.025792057, -0.010647351, 0.0070905373, 0.006118256, -0.015851455, -0.10208605]
-gra[1][12][1] = [-0.08658051, -0.22899988, -0.10656684, -0.27604854, -0.2197972, -0.18337652]
-gra[1][12][2] = [-0.05547315, -0.012346701, -0.010367418, -0.029486053, 0.05935009, -0.022474179]
-gra[1][12][3] = [-0.024841659, 0.012640656, -0.021172896, -0.013413144, 0.07662204, -0.025180463]
-gra[1][12][4] = [-0.026648592, 0.012640656, -0.021172896, -0.013413144, 0.08000008, -0.026229769]
-gra[1][12][5] = [-0.019367125, 0.012640656, -0.023892898, -0.010039311, 0.07158921, -0.024388755]
-gra[1][12][6] = [-0.0037196823, 0.0, -0.010166409, 0.0016691058, -0.020588506, -0.0015686363]
-gra[1][12][7] = [-0.02981784, -0.023581509, -0.016414259, -0.004626396, 0.03383301, -0.031687073]
-gra[1][12][8] = [0.020993255, -0.010776988, 0.0, 0.05328337, -0.020634232, 0.0070363255]
-gra[1][12][9] = [7.665232E-4, -0.023638166, -0.026132688, 0.0109071825, 0.08044333, -0.018831125]
-gra[1][12][10] = [0.19114436, -0.0047755605, -0.10173453, 0.037046153, 0.09390959, -0.023118684]
-gra[1][12][11] = [-0.038150895, -0.021824643, -0.015327208, -0.012188856, 0.059729155, -0.0058229556]
-gra[1][12][12] = [-0.08658051, -0.22899988, -0.10656684, -0.27604854, -0.2197972, -0.18337652]
-gra[1][12][13] = [0.048063084, -0.09772287, 0.07237538, 0.025829254, 0.03243908, 0.0107249785]
-gra[1][12][14] = [-0.016044322, -0.0119469175, 0.015410181, 0.021360878, 0.016821869, -0.06789728]
-gra[1][13][1] = [-0.06831044, -0.13932145, -0.17696062, -0.22257882, -0.1827164, -0.18075173]
-gra[1][13][2] = [-0.033473175, -0.0138693685, -0.010367418, -0.038903426, 0.0750564, -0.012684662]
-gra[1][13][3] = [-0.0028416929, 0.011117988, -0.021172896, -0.022830518, 0.09346217, -0.019572249]
-gra[1][13][4] = [-0.004648617, 0.011117988, -0.021172896, -0.022830518, 0.09684021, -0.017395958]
-gra[1][13][5] = [0.0014656368, 0.011117988, -0.023892898, -0.019456686, 0.087295525, -0.014545322]
-gra[1][13][6] = [-0.005318578, 0.0, -0.010166409, 0.002189381, -0.023704607, -0.0015686363]
-gra[1][13][7] = [-0.007817864, -0.025104176, -0.016414259, -0.0140437735, 0.045698013, -0.024563886]
-gra[1][13][8] = [0.028921302, -0.011783888, 0.0, 0.080733284, -0.023255521, -0.022090228]
-gra[1][13][9] = [0.025339656, -0.025160834, -0.026132688, 0.0014898069, 0.09561606, -0.0074777785]
-gra[1][13][10] = [0.17559843, -0.0028885743, -0.10483483, 0.025597045, 0.049072396, -0.0015286552]
-gra[1][13][11] = [-0.025382519, -0.02160719, -0.011038008, -0.0280119, 0.079709224, 0.006208241]
-gra[1][13][12] = [0.00560419, -0.02116654, -0.021172896, 0.0062681693, 0.085999615, -0.009809807]
-gra[1][13][13] = [-0.06831044, -0.13932145, -0.17696062, -0.22257882, -0.1827164, -0.18075173]
-gra[1][13][14] = [-0.022765206, -0.008642238, -0.005545456, -0.0016253758, -0.04435316, -0.07088209]
-gra[1][14][1] = [0.44408634, -0.12092721, -0.10570723]
-gra[1][14][2] = [-0.05545547, -0.0048188735, -0.0054277224]
-gra[1][14][3] = [-0.084608115, -0.026899593, -0.011874196]
-gra[1][14][4] = [-0.084608115, -0.028706519, -0.006607729]
-gra[1][14][5] = [-0.084608115, -0.020130698, -0.011874196]
-gra[1][14][6] = [-0.05576598, -0.017983004, 0.0]
-gra[1][14][7] = [-0.062699944, -0.023920042, -0.008650959]
-gra[1][14][8] = [-0.008844429, 0.09213399, 0.0071458695]
-gra[1][14][9] = [-0.05575606, 0.035382736, -0.009415978]
-gra[1][14][10] = [-0.013564611, 0.10450437, 0.0020520482]
-gra[1][14][11] = [-0.06009103, 0.02992522, -0.0086509595]
-gra[1][14][12] = [-0.07773001, 0.0020310916, -0.015097434]
-gra[1][14][13] = [-0.076971106, -0.002655573, -0.015097434]
-gra[1][14][14] = [0.44408634, -0.12092721, -0.10570723]
-gra[2][0][0] = [-0.15201631]
-gra[2][0][1] = [0.031203702]
-gra[2][0][2] = [-0.15201631]
-gra[2][1][0] = [0.0022879262, -0.004365769, 6.20738E-4, 4.4457944E-11, -0.0021720084, 9.538275E-4]
-gra[2][1][1] = [-0.03861488, -0.12361071, -0.14622326, -0.16391519, -0.1494383, -0.26891392]
-gra[2][1][2] = [-0.03861488, -0.12361071, -0.14622326, -0.16391519, -0.1494383, -0.26891392]
-gra[2][3][2] = [-0.008076604, -0.07046831, -0.098895, -0.2321586, -0.36291665, -0.13428082, -0.25642043, -0.34169278, -0.11429488, -0.11130111, -0.1070063]
-gra[2][3][3] = [-0.008076604, -0.07046831, -0.098895, -0.2321586, -0.36291665, -0.13428082, -0.25642043, -0.34169278, -0.11429488, -0.11130111, -0.1070063]
-gra[2][3][4] = [0.0805982, -0.034465823, 0.07598917, -0.090299815, -0.020566557, -0.10127958, -0.07510182, 0.005006507, -6.042392E-4, 0.0012229868, 0.018206563]
-gra[2][3][5] = [0.09489558, -0.06572845, 0.08711138, -0.16550836, -0.070603445, -0.14942205, -0.07379869, 0.0029941553, -6.0423923E-4, 0.0012229868, 0.001831753]
-gra[2][3][6] = [-0.058871817, -0.006554798, 0.017428236, -4.6842685E-4, 0.025027804, -0.05349827, 5.9889373E-4, 0.04711724, 0.0, 0.005120207, -0.05144971]
-gra[2][3][7] = [0.0048280074, -0.023354564, 0.044204026, -0.16188264, -0.020953348, -0.084573716, -0.008120204, -0.115129516, -0.0016438008, -4.6656062E-4, -0.036058363]
-gra[2][3][8] = [-0.051234446, -0.051544387, 0.030227043, -0.011092558, -0.06453305, -0.062376987, -0.055727348, 0.08190204, 0.0, -0.0053235646, -0.04001494]
-gra[2][3][9] = [0.036982387, -0.024936493, 0.13808824, 0.04746171, -0.024963146, -0.10614685, -0.04950322, -0.0445091, -6.042392E-4, 0.0020519749, -0.009407277]
-gra[2][3][10] = [-0.018327229, 0.07086502, 0.044119813, -0.064103216, 0.03483749, -0.028801778, 0.0042893966, -0.0107006235, 0.0, 0.018656848, 0.029459191]
-gra[2][3][11] = [-0.10527698, -0.015317527, 0.038830582, 0.050922435, -0.007117017, -0.102952145, 0.022075849, -0.06960322, -0.0021797004, 0.0012229867, 0.019433094]
-gra[2][3][12] = [-0.02985796, -0.01805034, 0.07844547, 0.018029366, -0.07116665, -0.11370507, 0.00879039, -0.062679075, -0.0032192618, 0.0012229867, -0.003486286]
-gra[2][3][13] = [0.027791135, 0.019933566, 0.13612899, 0.008909401, -0.09267632, -0.10002251, 0.005974208, -0.08863636, -0.0016438005, -0.0028344705, -0.03491522]
-gra[2][3][14] = [0.030786296, -0.0064091478, -0.071676165, 0.038735196, 0.023161378, 0.022532098, 0.113017544, 0.03788906, -1.8203591E-10, 7.318466E-11, -0.051266756]
-gra[2][4][2] = [-0.1294062, -0.20639215, -0.23590136, -0.37099618, -0.48548454, -0.20018376, -0.26166877, -0.41468206, -0.1289629, -0.13497436, -0.21379423]
-gra[2][4][3] = [0.0302227, -0.0062450683, 0.123370245, -0.020649582, -0.01604276, -0.03070876, 0.01188374, 0.023794215, -0.002079915, -0.0077277506, 0.03669957]
-gra[2][4][4] = [-0.1294062, -0.20639215, -0.23590136, -0.37099618, -0.48548454, -0.20018376, -0.26166877, -0.41468206, -0.1289629, -0.13497436, -0.21379423]
-gra[2][4][5] = [0.15102442, -0.008147711, 0.0514243, -0.12282804, -0.043201454, -0.1278645, -0.07646969, -0.014425374, -6.042392E-4, 0.0012229868, 0.02046664]
-gra[2][4][6] = [-0.06091963, -0.011449458, 0.019421639, -0.0049448065, 0.03811474, -0.05349827, 0.0015795783, 0.07086545, 0.0, 0.005120207, -0.050147213]
-gra[2][4][7] = [0.041366346, -0.008510563, 0.010099679, -0.13262556, -9.927137E-4, -0.10384308, -0.005782647, -0.1192376, -0.0016438008, 0.0022671828, -0.020606475]
-gra[2][4][8] = [-0.049276114, -0.058174442, 0.008468347, -0.0711803, -0.05036522, -0.065239266, -0.047402292, 0.10297411, 0.0, -0.0053235646, -0.0424478]
-gra[2][4][9] = [0.09200959, -0.021697182, 0.122298524, 0.07767116, -0.02727232, -0.12138869, -0.049602136, -0.044220224, -6.042392E-4, 0.0020519749, -0.0068372646]
-gra[2][4][10] = [-0.018110096, 0.05372959, 0.0151335355, -0.081490815, 0.033452507, -0.028801778, 0.002071476, -0.0021489211, 0.0, 0.018656848, 0.023107262]
-gra[2][4][11] = [-0.04821482, -0.0013517933, 0.034565553, 0.09703982, -0.0135421455, -0.12116421, 0.027648013, -0.07703965, -0.0021797004, 0.0012229867, 0.032362547]
-gra[2][4][12] = [0.026633851, 0.0017764987, 0.07997461, 0.066489205, -0.064625874, -0.12656163, 0.014263283, -0.052713, -0.0032192618, 0.0012229867, 0.003290647]
-gra[2][4][13] = [0.078414686, 0.020772994, 0.14588076, 0.060945626, -0.09091907, -0.11564237, 0.0066668717, -0.08774518, -0.0016438005, 0.0012229867, -0.02239227]
-gra[2][4][14] = [0.05219944, -0.008933335, 0.0011658408, 0.04304128, 0.02515228, 0.022532098, 0.113017544, 0.022577101, -1.8203591E-10, 0.0, -0.051266756]
-gra[2][5][2] = [-0.109083325, -0.13635391, -0.1724807, -0.32005876, -0.44594473, -0.23302643, -0.24689698, -0.41167107, -0.12679145, -0.13053392, -0.23608541]
-gra[2][5][3] = [0.028576976, -0.01202011, 0.14082508, 0.019831568, -0.025790168, -0.033188656, 0.010665469, 0.025290381, 0.0, -0.0077277506, 0.034657843]
-gra[2][5][4] = [0.043157984, -0.011062228, 0.031184498, -0.0352323, -0.023394702, -0.033188656, 0.013148798, 0.025290381, 0.0, -0.0077277506, 0.039219104]
-gra[2][5][5] = [-0.109083325, -0.13635391, -0.1724807, -0.32005876, -0.44594473, -0.23302643, -0.24689698, -0.41167107, -0.12679145, -0.13053392, -0.23608541]
-gra[2][5][6] = [-0.08106713, -0.009225492, 0.02121906, 0.01605932, 0.04201092, -0.04117418, 0.0030047887, 0.038180098, 0.0, 0.0048741507, -0.03833175]
-gra[2][5][7] = [0.055404905, -0.0032580243, 0.003150314, -0.13055943, -0.002897503, -0.084408045, -0.0074517485, -0.120952904, -0.0016438005, -4.6656062E-4, -0.021437926]
-gra[2][5][8] = [-0.060963377, -0.085212074, -0.009545051, -0.04348558, -0.025346331, -0.024894798, -0.044431817, 0.06334871, 0.0, -0.0053235646, -0.0014865557]
-gra[2][5][9] = [0.100335434, -0.014484472, 0.10726041, 0.08201783, -0.039257314, -0.093385816, -0.038351398, -0.04593553, -6.042392E-4, -1.4442275E-4, 0.0053760214]
-gra[2][5][10] = [-0.018110096, 0.04624476, 0.03717503, -0.09730208, 0.02357287, -0.028801778, 0.002071476, -0.012438461, 0.0, 0.020372767, 0.02328694]
-gra[2][5][11] = [-0.0465424, 0.009418742, 0.0085384855, 0.107614025, -0.025329215, -0.08669748, 0.036276024, -0.07935116, -6.042392E-4, 0.0012229867, 0.0421828]
-gra[2][5][12] = [0.041238375, 0.013996747, 0.04491879, 0.06694699, -0.064760275, -0.08798072, 0.01705242, -0.056739807, 0.0023156772, 0.0012229867, 0.008966238]
-gra[2][5][13] = [0.09660875, 0.032687586, 0.1290517, 0.058934357, -0.09491361, -0.08269146, 0.008766838, -0.08773481, -0.0016438005, 0.0012229867, -0.008198705]
-gra[2][5][14] = [0.02811451, -0.008933335, -0.041697957, 0.04820372, 0.01699496, 0.022039022, 0.09601593, 0.016229236, -1.8203591E-10, 0.0, -0.06919619]
-gra[2][6][2] = [-0.33506277, -0.18281105]
-gra[2][6][3] = [0.050459035, -0.0480888]
-gra[2][6][4] = [-0.058334365, -0.04194749]
-gra[2][6][5] = [-0.050963223, -0.02262903]
-gra[2][6][6] = [-0.33506277, -0.18281105]
-gra[2][6][7] = [0.09761742, -0.01634203]
-gra[2][6][8] = [-0.10002497, 0.04321725]
-gra[2][6][9] = [0.117864504, 0.009139456]
-gra[2][6][10] = [0.11780313, -0.04472417]
-gra[2][6][11] = [0.055395056, -0.035537593]
-gra[2][6][12] = [0.15576944, -0.0030296352]
-gra[2][6][13] = [0.21003558, -0.042242486]
-gra[2][6][14] = [-0.11417418, -0.017581403]
-gra[2][7][2] = [-0.12298199, -0.15931123, -0.13213076, -0.3022618, -0.036190674, -0.17340623, -0.33445278, -0.1409332, -0.0928228, -0.13858096, -0.17792198]
-gra[2][7][3] = [0.035498135, -0.014716316, 0.12900968, 0.0018816409, -0.026797201, -0.035668552, 0.0035608534, 0.005567723, -0.0015440702, -0.0077277506, -0.015831877]
-gra[2][7][4] = [0.0473681, -0.020070724, 0.03502908, -0.039943375, -0.029462483, -0.035668552, 0.0024413813, 0.005567723, 0.0, -0.009627088, -0.015831877]
-gra[2][7][5] = [0.05841018, -0.021761157, 0.033209726, -0.046052434, -0.027980871, -0.036883388, 0.0038042043, 0.005567723, 0.0, 0.0013718933, -0.012981238]
-gra[2][7][6] = [-0.009183083, -0.022087386, -0.06500266, -0.003913735, -0.017434899, -0.015544581, -4.731787E-11, 0.012018705, -9.038228E-4, -0.0016083805, 0.0]
-gra[2][7][7] = [-0.12298199, -0.15931123, -0.13213076, -0.3022618, -0.036190674, -0.17340623, -0.33445278, -0.1409332, -0.0928228, -0.13858096, -0.17792198]
-gra[2][7][8] = [-0.071148, -0.09141699, 0.045326322, -0.02822847, -0.09423955, -0.012837715, -0.034597382, 0.05246252, 0.0, -0.0053235646, 0.005457081]
-gra[2][7][9] = [0.015466833, -0.008577296, 0.03190451, 0.07564043, 0.09118151, 0.039182235, -0.025927924, 0.004676326, -6.042392E-4, -0.0069806715, -0.04385624]
-gra[2][7][10] = [0.034649882, 0.116863064, 0.0033220518, -0.050275527, 0.037978306, -0.059653025, 0.023348592, -0.064188465, 0.0, 0.018263478, 0.008097947]
-gra[2][7][11] = [-0.09295004, -0.020071309, -0.04982135, 0.1150547, 0.10578166, 0.014203327, 0.0359425, -0.011216718, -6.042392E-4, -0.0018316435, 0.011277605]
-gra[2][7][12] = [-0.017506499, -0.009194653, 0.0039268765, 0.071446136, 0.06919665, 0.010327638, 0.0055351285, 0.07338563, -0.0016438005, -0.0018316435, -0.0048638657]
-gra[2][7][13] = [0.023693724, 0.0089093065, 0.082926564, 0.04914708, 0.03025364, 0.011693382, 0.0027329288, 0.04278699, -0.0016438005, -0.0018316435, -0.023996033]
-gra[2][7][14] = [0.030249318, -0.020417277, -0.020274054, -0.011022337, 4.5096013E-4, 0.0026602726, 0.10006753, 0.02086204, -0.0019475454, -0.0010469037, -0.06419305]
-gra[2][8][2] = [-0.098765604, -0.21473517, -0.15407726, -0.2138582, -0.29589483, -0.20712286]
-gra[2][8][3] = [0.045760147, -0.004769299, -0.038730323, -0.023269074, -0.0036128643, -0.0053470596]
-gra[2][8][4] = [-0.059532464, -0.007675047, -0.080555335, -0.023269074, -0.0050796065, -0.0053470596]
-gra[2][8][5] = [-0.056172833, -0.0029287338, -0.07756553, -0.02448391, -0.0017491262, -0.0053470596]
-gra[2][8][6] = [-0.053191774, -0.01284402, -0.0022998422, -0.015544581, -0.005061429, -0.005767472]
-gra[2][8][7] = [-0.024624372, -0.016473431, -0.038519755, -0.0142682865, -0.0017491262, -0.005605762]
-gra[2][8][8] = [-0.098765604, -0.21473517, -0.15407726, -0.2138582, -0.29589483, -0.20712286]
-gra[2][8][9] = [0.14998935, 0.03556885, 0.16636685, -0.07407579, -0.042286556, -0.03358767]
-gra[2][8][10] = [0.10997251, 0.121142365, -0.06810031, -0.012015331, -0.004103984, -0.013681764]
-gra[2][8][11] = [0.09455238, 0.08597852, 0.12715638, -0.044376574, -0.05856059, -0.002812602]
-gra[2][8][12] = [0.09410553, 0.112332866, 0.1220707, -0.021252448, -0.06676871, 0.008941967]
-gra[2][8][13] = [0.15745735, 0.12265156, 0.19168386, -0.016919304, -0.07282984, 0.0030826405]
-gra[2][8][14] = [-0.08871041, -0.015491295, 0.076912574, 0.021117939, 0.020992978, -0.030493984]
-gra[2][9][2] = [-0.105878875, -0.1524388, -0.1099966, -0.20480473, -0.3305924, -0.21370567, -0.33320028, -0.24001853, -0.10375746, -0.11412878, -0.10761234]
-gra[2][9][3] = [0.03317759, -0.016845642, 0.1503404, -0.021122754, -0.023720142, -0.03070876, 0.010665469, 0.02652775, 0.0, -0.0077277506, 0.0036460478]
-gra[2][9][4] = [0.042134404, -0.022997983, 0.046800338, -0.06400117, -0.026385423, -0.03311429, 0.011930525, 0.02652775, -0.002650973, -0.0077277506, 0.0048670936]
-gra[2][9][5] = [0.04673974, -0.015817884, 0.044920944, -0.07011023, -0.02659073, -0.03413609, 0.013293348, 0.02652775, 0.0, -0.006354918, 0.010568369]
-gra[2][9][6] = [-0.012488609, -0.022087386, -0.071482256, -0.0012417086, -0.020907987, -0.018224735, 0.0, 0.012018705, -9.038228E-4, -0.0016083805, -0.0027130097]
-gra[2][9][7] = [0.0716151, -0.03751232, 1.3603596E-4, -0.04638823, -0.023721159, -0.019228077, 0.0046084328, 0.035835125, 0.0047529186, -0.006096343, -0.01602985]
-gra[2][9][8] = [-0.015797166, -0.024351576, -0.0215403, 0.034865953, 0.046004623, 0.034118768, -0.023652218, 0.019558845, 0.0, 0.012150579, -0.007978012]
-gra[2][9][9] = [-0.105878875, -0.1524388, -0.1099966, -0.20480473, -0.3305924, -0.21370567, -0.33320028, -0.24001853, -0.10375746, -0.11412878, -0.10761234]
-gra[2][9][10] = [-0.01967794, 0.10183758, 0.15366054, -0.06979019, 0.05891821, -0.022391455, 0.018301774, 0.021346226, 0.0, 0.020372767, 0.003545857]
-gra[2][9][11] = [-0.06909444, 0.032301586, 0.097309515, 0.1708307, 0.066942066, -0.03478332, 0.08301894, -0.048377972, -0.004067228, 0.002650639, 0.005367422]
-gra[2][9][12] = [-0.01954465, 0.0104994485, 0.104454204, 0.16886304, -0.028041093, -0.052986544, 0.042617302, -0.023035575, -0.0051067895, 0.002650639, 0.004987537]
-gra[2][9][13] = [0.030839257, 0.03203931, 0.20222194, 0.10506295, -0.050474267, -0.014566283, 0.040826432, -0.034744743, -0.0051067895, 0.002650639, -0.047978267]
-gra[2][9][14] = [0.010195935, -0.019840062, -0.05840256, 0.058588445, 0.031015806, 0.062112793, 0.09405385, 0.017498635, 0.0, 0.0, -0.07941664]
-gra[2][10][2] = [-0.077617064, -0.24597266, -0.30084527, -0.33237344, -0.18720393, -0.09771022, -0.20302433]
-gra[2][10][3] = [0.026043031, -0.0037977588, -0.023269074, -0.028983576, -0.0015887114, 0.0010817688, 0.037429087]
-gra[2][10][4] = [-0.07763809, -0.006703506, -0.023269074, -0.07080858, -0.0015887114, 0.002968254, 0.05529735]
-gra[2][10][5] = [-0.071017, -0.0019571928, -0.02448391, -0.076917656, -0.0015887114, 0.002968254, 0.057679832]
-gra[2][10][6] = [-0.053191774, -0.022087386, -0.0177017, -0.0068972483, -0.0022654566, 0.003107202, -0.009080095]
-gra[2][10][7] = [-0.06515035, -0.021679426, -0.0142682865, -0.018913662, -0.0033213743, 0.004113634, 0.07422953]
-gra[2][10][8] = [1.4555454E-4, -0.0073065395, 0.040923893, -0.037498906, 0.0028213095, 0.0035354842, -0.008792204]
-gra[2][10][9] = [0.037463915, 0.030624442, -0.01446133, 0.025323104, 0.0, 0.0040959795, 0.03213553]
-gra[2][10][10] = [-0.077617064, -0.24597266, -0.30084527, -0.33237344, -0.18720393, -0.09771022, -0.20302433]
-gra[2][10][11] = [0.079399094, 0.15027712, -0.07128487, 0.0870506, -0.006525742, -0.108242765, 0.08370259]
-gra[2][10][12] = [0.07473828, 0.1260693, -0.039055545, 0.058323834, 4.2641436E-4, -0.05526523, 0.06886024]
-gra[2][10][13] = [0.1526189, 0.14199956, -0.020716881, 0.056881983, 0.0029196735, -0.073701814, 0.08012534]
-gra[2][10][14] = [-0.07117805, -0.040356413, 0.016607894, 0.07246468, -0.021312775, 0.0047443355, 0.0738589]
-gra[2][11][2] = [-0.17702022, -0.19049807, 0.0033187612, -0.1610911, -0.22275227, -0.1004089, -0.4127527, -0.27582508, -0.097562976, -0.09680039, -0.12983814]
-gra[2][11][3] = [0.03317759, -0.021450516, 0.14371678, -0.007020961, -0.022139775, -0.03070876, 0.0059119724, 0.0074535403, 0.0, -0.0077277506, -0.018291987]
-gra[2][11][4] = [0.043792337, -0.024356263, 0.04062908, -0.048845977, -0.024805054, -0.03070876, 0.007177029, 0.0074535403, 0.0, -0.0077277506, -0.018291987]
-gra[2][11][5] = [0.04839767, -0.019609947, 0.039943546, -0.053787827, -0.02501036, -0.031923596, 0.008539852, 0.008833618, 0.0, -0.0077277506, -0.012590716]
-gra[2][11][6] = [-0.01400961, -0.022087386, -0.072458155, -0.0033129938, -0.017434899, -0.016145736, 0.0, 0.012018705, -9.038228E-4, -0.0016083805, -0.0027130097]
-gra[2][11][7] = [0.071528405, -0.04831874, 0.018644067, -0.054023616, -0.025115307, -0.019228077, 0.0033746741, 0.011975225, 0.0039619114, -0.008320883, -0.015203262]
-gra[2][11][8] = [-0.022458976, -0.026009362, -0.011533938, -0.001877947, 0.08073837, 0.040923893, -0.026807453, 0.042773336, -0.0017965699, 0.018487457, 0.015768506]
-gra[2][11][9] = [0.030610166, 0.0044976464, 0.19679622, 0.019722905, -0.01275599, -0.024380911, 0.0107252635, 0.016309183, 0.0, -0.005151834, -0.007127323]
-gra[2][11][10] = [0.025785115, 0.037166946, 0.014565164, 0.006083017, 0.08089537, -0.09699656, -0.0730818, 0.07966486, 0.0024555703, 0.022535702, -0.0056969775]
-gra[2][11][11] = [-0.17702022, -0.19049807, 0.0033187612, -0.1610911, -0.22275227, -0.1004089, -0.4127527, -0.27582508, -0.097562976, -0.09680039, -0.12983814]
-gra[2][11][12] = [-0.06441311, 0.026440911, 0.12037103, 0.13888726, 0.08138243, 0.010932655, 0.020394541, 0.008380487, -0.0016438005, 0.005044714, 0.04750921]
-gra[2][11][13] = [-0.02790359, 0.0060707172, 0.1810815, 0.09985693, 0.023859262, -0.021386884, 0.0015091486, -0.009860844, -0.0016438005, 0.002642244, 0.008162747]
-gra[2][11][14] = [0.070758194, -0.021278806, -0.049851753, 0.005290147, 0.0063683577, 0.027303727, 0.13471515, 0.040411703, 0.0, 0.0, -0.09829482]
-gra[2][12][2] = [-0.19875024, -0.2440672, -0.123551175, -0.2592351, -0.28771695, -0.16224714, -0.36199668, -0.30089164, -0.11223101, -0.13092594, -0.21235895]
-gra[2][12][3] = [0.03317759, -0.018355839, 0.14098895, -0.0012818617, -0.013114419, -0.035668552, 0.0035608534, 0.011555983, -0.0010550276, -0.005276286, -0.026229769]
-gra[2][12][4] = [0.043792337, -0.021261584, 0.036767416, -0.043106876, -0.0157797, -0.035668552, 0.0048259096, 0.011555983, 5.769341E-4, -0.005476473, -0.026229769]
-gra[2][12][5] = [0.04839767, -0.016515272, 0.030902896, -0.051937968, -0.014298091, -0.036883388, 0.0061887326, 0.010669847, 0.0, -0.005476473, -0.024388755]
-gra[2][12][6] = [-0.014100589, -0.022087386, -0.07689638, 0.006312619, -0.017983915, -0.016145736, 0.0, 0.012018705, -0.0046197325, -0.0016083805, -0.0027130097]
-gra[2][12][7] = [0.071528405, -0.047086928, 0.0074459035, -0.02507813, -0.011149936, -0.02170797, -1.1943467E-4, 0.010529782, 0.0047529186, -0.0060696052, -0.029272247]
-gra[2][12][8] = [-0.025169602, -0.021906763, -0.012012333, 0.029679593, 0.051806875, 0.040923893, -0.041877814, 0.05035637, 0.0, 0.010175859, 0.011235707]
-gra[2][12][9] = [0.033317532, 0.007542981, 0.16918556, 0.060250558, 0.0019945612, -0.0318206, 0.008374144, 0.024137018, 0.0, -0.002900556, -0.018831125]
-gra[2][12][10] = [0.037359554, 0.03554336, 0.010199685, 0.02761072, 0.05891679, -0.0697458, -0.02648961, 0.10116728, 0.002381391, 0.010580534, -0.0068383366]
-gra[2][12][11] = [0.018431593, 0.0055147577, 0.13500987, 0.0076680183, -0.01452204, -0.027323436, 0.0052284813, 0.023991466, 7.6891546E-4, -0.002900556, -4.2205094E-4]
-gra[2][12][12] = [-0.19875024, -0.2440672, -0.123551175, -0.2592351, -0.28771695, -0.16224714, -0.36199668, -0.30089164, -0.11223101, -0.13092594, -0.21235895]
-gra[2][12][13] = [0.086594634, 0.021821834, 0.21497643, 0.09232503, -0.020451026, -0.015387063, -0.013508427, 0.029255526, -0.0016438005, 0.0012229867, 0.019614253]
-gra[2][12][14] = [0.07045497, -0.022578374, -0.017178424, 0.015037881, 0.021610979, 0.035623375, 0.12032417, 0.020360775, 0.0, -2.2505768E-11, -0.06410605]
-gra[2][13][2] = [-0.19951446, -0.15438879, -0.086470366, -0.240965, -0.23424724, -0.2326409, -0.32325682, -0.25252593, -0.12048934, -0.13127431, -0.20973417]
-gra[2][13][3] = [0.034109738, -0.019878507, 0.15669526, 0.020718105, -0.022531796, -0.035668552, 0.007155873, 0.016494725, 0.0, -0.0077277506, -0.020621555]
-gra[2][13][4] = [0.044724483, -0.022784252, 0.053607546, -0.021106908, -0.025197076, -0.035668552, 0.008420929, 0.016494725, 0.0, -0.0077277506, -0.017395958]
-gra[2][13][5] = [0.049483325, -0.018037941, 0.046609215, -0.031105205, -0.023715466, -0.036883388, 0.009783752, 0.015608587, 0.0, -0.0077277506, -0.014545322]
-gra[2][13][6] = [-0.011615532, -0.022087386, -0.08001248, 0.0047137234, -0.01746364, -0.016145736, 0.0, 0.012018705, -9.038228E-4, -0.0016083805, -0.0027130097]
-gra[2][13][7] = [0.07384895, -0.048609596, 0.019310912, -0.0030781596, -0.020567313, -0.02170797, 0.0034755857, 0.018190926, 0.0047529186, -0.006096343, -0.02214906]
-gra[2][13][8] = [-0.022202594, -0.022913663, -0.014633628, 0.03760764, 0.07925679, 0.040923893, -0.046354357, 0.046572696, 0.0019757631, 0.012150579, -0.017890848]
-gra[2][13][9] = [0.037301484, 0.006020313, 0.18435828, 0.08482369, -0.007422815, -0.0318206, 0.011969165, 0.026871076, 0.0, -0.005151834, -0.0074777785]
-gra[2][13][10] = [0.03558677, 0.037430346, -0.034637507, 0.012064794, 0.0474677, -0.07284611, 0.012233781, 0.09341223, 0.002381391, 0.014459286, 0.014751689]
-gra[2][13][11] = [0.01767755, 9.858967E-4, 0.15244359, 0.03832726, -0.030345086, -0.023034235, 0.0076052295, 0.030979762, 7.6891546E-4, -0.005151834, 0.0116091445]
-gra[2][13][12] = [0.054678664, -0.022402693, 0.1139498, 0.065429255, -0.0024198703, -0.029360235, 0.008978962, 0.038531862, -1.4217425E-4, -0.004681904, -0.008489365]
-gra[2][13][13] = [-0.19951446, -0.15438879, -0.086470366, -0.240965, -0.23424724, -0.2326409, -0.32325682, -0.25252593, -0.12048934, -0.13127431, -0.20973417]
-gra[2][13][14] = [0.014282126, -0.014524782, -0.13251245, 0.02636649, -0.0041411947, 0.015749522, 0.08567208, 0.011856999, 0.0, -0.0013691243, -0.067090854]
-gra[2][14][2] = [0.4343303, -0.37244362, -0.28004685, -0.12789774, -0.21803154, -0.12783362, -0.21811707, -0.14185552]
-gra[2][14][3] = [-0.050213013, 0.088265896, 0.0025411625, 0.008415423, -0.030471062, -0.0032232369, 0.046410937, -0.052638464]
-gra[2][14][4] = [-0.05870517, -0.014300982, -0.042183742, 0.0055096745, -0.030471062, 4.3161202E-4, 0.0642792, -0.052638464]
-gra[2][14][5] = [-0.05870517, -0.0060108323, -0.04972046, 0.010255989, -0.030471062, -0.0048348554, 0.06765758, -0.0538533]
-gra[2][14][6] = [-0.054352902, -0.0631387, -0.007950703, -0.022087386, 0.036315702, -9.038228E-4, -0.031075135, -0.015544581]
-gra[2][14][7] = [-0.037878644, -0.019238206, -0.01619927, -0.009466247, -0.03137149, 6.023841E-5, 0.08327374, -0.035573896]
-gra[2][14][8] = [-0.0027976157, 0.047380313, 0.09339658, -0.011650267, -0.008736845, 0.008354038, -0.008792204, 0.037216727]
-gra[2][14][9] = [-0.03965546, 0.12285828, 0.09784784, 0.045220323, -0.016584467, -0.0048348554, 0.04369542, -0.035722323]
-gra[2][14][10] = [-0.017961588, 0.061617773, -0.0027846463, 0.041740574, -0.012447634, 0.0, 0.019691546, -0.011759965]
-gra[2][14][11] = [-0.043990437, 0.08404583, 0.09661607, 0.036632266, -0.022157721, -0.0040659397, 0.033597667, -0.04387355]
-gra[2][14][12] = [-0.043106366, 0.037694193, 0.08272809, 0.01872339, -0.032401294, -0.008058093, 0.07131885, -0.03826637]
-gra[2][14][13] = [-0.03528687, 0.057534255, 0.057536703, 0.023469703, -0.029970387, -0.008058093, 0.071832515, -0.03826637]
-gra[2][14][14] = [0.4343303, -0.37244362, -0.28004685, -0.12789774, -0.21803154, -0.12783362, -0.21811707, -0.14185552]
-gra[3][0][0] = [-0.038961984]
-gra[3][0][1] = [0.11764526]
-gra[3][0][2] = [-0.0029783393]
-gra[3][0][3] = [-0.038961984]
-gra[3][1][0] = [0.0022879262, 0.0031182556, 6.20738E-4, 4.4457944E-11, -0.0021720084, 9.538275E-4]
-gra[3][1][1] = [-0.012393069, -0.15868439, -0.21871509, -0.18274719, -0.15518439, -0.21593317]
-gra[3][1][2] = [0.10560748, -0.042098567, 0.043105654, -0.026443, -0.007685846, -0.035907257]
-gra[3][1][3] = [-0.012393069, -0.15868439, -0.21871509, -0.18274719, -0.15518439, -0.21593317]
-gra[3][2][0] = [-0.0023283148, 0.0050770696, 6.4378075E-4, 0.0042653317, -0.00452922, 7.4807646E-11, -5.665981E-4, -3.050395E-11, 0.0012653338, 0.0024696218, -0.008016303]
-gra[3][2][1] = [-5.13921E-4, -3.7906157E-11, -0.045772243, -0.0041412255, -0.018871907, -0.0028272104, -0.012859132, 0.035186574, -7.720956E-4, 0.0035228117, -0.042637575]
-gra[3][2][2] = [-0.1527792, -0.113233194, -0.054301165, -0.15919417, -0.20111087, -0.16079815, -0.25796932, -0.241832, -0.18616161, -0.13430928, -0.21455298]
-gra[3][2][3] = [-0.1527792, -0.113233194, -0.054301165, -0.15919417, -0.20111087, -0.16079815, -0.25796932, -0.241832, -0.18616161, -0.13430928, -0.21455298]
-gra[3][4][3] = [0.080264926, 0.02579656, -0.16407087, -0.2805622, -0.3278504, -0.15959191, -0.2234307, -0.34202027, -0.100388475, -0.11454372, -0.15381846]
-gra[3][4][4] = [0.080264926, 0.02579656, -0.16407087, -0.2805622, -0.3278504, -0.15959191, -0.2234307, -0.34202027, -0.100388475, -0.11454372, -0.15381846]
-gra[3][4][5] = [0.19779329, 0.004704324, 0.0028100526, -0.19220777, -0.046565086, -0.12838551, -0.07412594, -0.0021814913, -6.042392E-4, 0.0012229872, 0.0031403098]
-gra[3][4][6] = [-0.081183486, -0.028070848, 0.030555831, -0.022723744, 0.025027804, -0.04813345, 0.003595072, 0.047705334, 0.0016591108, 0.002712621, -0.05144971]
-gra[3][4][7] = [0.0039748983, 9.6383225E-4, -0.04841364, -0.22035895, -0.03633671, -0.14051624, -0.0058753714, -0.10428843, -0.0016438008, 0.0022671833, -0.03286426]
-gra[3][4][8] = [-0.040510423, -0.061654296, 0.030528117, 0.02659813, -0.07196968, -0.081996635, -0.055243164, 0.08190204, 0.0, -0.004978219, -0.037152667]
-gra[3][4][9] = [0.11776427, -0.058918525, 0.12595578, -0.11178863, -0.029508589, -0.1381523, -0.047258385, -0.02285704, -6.042392E-4, 0.002051975, -0.022911087]
-gra[3][4][10] = [-0.008554228, 0.0412348, -0.12479799, -0.051410124, 0.030709445, -0.042462237, 0.0072704786, -0.006176661, 0.0, 0.008652416, 0.022637697]
-gra[3][4][11] = [-0.11572003, -0.04492593, -0.009004474, -0.042554148, -0.010522034, -0.16364421, 0.022561576, -0.048643857, -4.865427E-5, -0.0039698915, -0.0014345944]
-gra[3][4][12] = [-0.0069528553, -0.057728425, -0.005433593, -0.06658935, -0.07646103, -0.15282395, 0.011035223, -0.039221756, -0.0032192618, -0.0039698915, -0.010328554]
-gra[3][4][13] = [0.04217954, -0.036901977, 0.05292665, -0.092318825, -0.100017145, -0.15756387, 0.008219042, -0.06517905, -0.0016438005, 0.0012229871, -0.04239282]
-gra[3][4][14] = [-0.00299038, 0.03920348, -0.042208888, 0.05008921, 0.023527399, 0.020578144, 0.1248354, 0.032437425, -1.8203591E-10, 0.0, -0.051266756]
-gra[3][5][3] = [-0.024207622, -0.04951211, -0.22784083, -0.37396744, -0.41374195, -0.26431063, -0.2183969, -0.40905178, -0.11288505, -0.13377653, -0.28086165]
-gra[3][5][4] = [-0.057146087, -0.039673835, 0.17305376, -0.01683017, -0.022667397, -0.02753507, 0.01188374, 0.025290381, 9.0512355E-12, -0.012879585, 0.04504322]
-gra[3][5][5] = [-0.024207622, -0.04951211, -0.22784083, -0.37396744, -0.41374195, -0.26431063, -0.2183969, -0.40905178, -0.11288505, -0.13377653, -0.28086165]
-gra[3][5][6] = [-0.09216936, -0.030741546, 0.03069731, 0.001978191, 0.04201092, -0.037597638, 0.007732113, 0.03876819, 0.0016591108, 0.0048741507, -0.03833175]
-gra[3][5][7] = [0.04825837, 0.021060362, -0.08345264, -0.1970743, -0.016389595, -0.1403506, -0.0074517485, -0.1133868, -0.0016438005, -4.6656025E-4, -0.028017744]
-gra[3][5][8] = [-0.053781927, -0.098772004, -0.011392334, -0.005794887, -0.033350054, -0.041652158, -0.043947633, 0.06334871, 0.0, -0.004978219, -0.0014865557]
-gra[3][5][9] = [0.17482388, -0.048466492, 0.10114264, -0.08527103, -0.041911483, -0.12539127, -0.038351398, -0.027558457, -6.042392E-4, -1.444224E-4, -0.007109831]
-gra[3][5][10] = [-0.008337104, 0.016614538, -0.13279286, -0.08460896, 0.019444827, -0.042462237, 0.0050525577, -0.007914498, 0.0, 0.010368334, 0.019255804]
-gra[3][5][11] = [-0.06327887, -0.020189673, -0.033281863, 0.0060988883, -0.02684297, -0.14738953, 0.034516916, -0.061666783, 0.0015268069, -0.0039698915, 0.022333067]
-gra[3][5][12] = [0.05785005, -0.02568133, -0.03294557, -0.025710281, -0.06816338, -0.12709959, 0.01705242, -0.03655747, 0.0023156772, -0.0039698915, 0.0031419299]
-gra[3][5][13] = [0.10470373, -0.024147956, 0.051864047, -0.050332405, -0.100363165, -0.1402328, 0.008766838, -0.067552485, -0.0016438005, 0.0012229871, -0.0146583365]
-gra[3][5][14] = [-0.0038765296, 0.036679298, -0.014407332, 0.05955772, 0.017360983, 0.020085067, 0.10783379, 0.016229236, -1.8203591E-10, 0.0, -0.06919619]
-gra[3][6][3] = [-0.39042288, -0.20252663]
-gra[3][6][4] = [0.11618018, -0.036191344]
-gra[3][6][5] = [0.013443776, -0.027157694]
-gra[3][6][6] = [-0.39042288, -0.20252663]
-gra[3][6][7] = [0.011014465, -0.016218057]
-gra[3][6][8] = [-0.10187224, 0.029533952]
-gra[3][6][9] = [0.11174672, -0.0030878466]
-gra[3][6][10] = [-0.05216477, -0.034098495]
-gra[3][6][11] = [0.013574712, -0.042492915]
-gra[3][6][12] = [0.07790509, 0.003786453]
-gra[3][6][13] = [0.13284796, -0.02833015]
-gra[3][6][14] = [-0.086883545, -0.032392908]
-gra[3][7][3] = [-0.03810625, -0.07246947, -0.18749088, -0.35617045, -0.0039878795, -0.20469043, -0.30595267, -0.13831393, -0.07891641, -0.14182357, -0.22269824]
-gra[3][7][4] = [-0.054191194, -0.04623367, 0.19473083, -0.019242423, -0.028735178, -0.030014966, 0.0035608534, 0.005567723, 9.0512355E-12, -0.012879585, -0.010007761]
-gra[3][7][5] = [-0.027313534, -0.049789086, 0.0976167, -0.04305214, -0.02725357, -0.030014966, 0.0036596532, 0.005567723, 9.0512355E-12, -0.0037799405, -0.007157123]
-gra[3][7][6] = [-0.022742484, -0.006928928, -0.04051508, -0.003913735, -0.025036301, -0.018571196, -4.731787E-11, 0.0, -0.0045685717, -0.0016083805, 0.0]
-gra[3][7][7] = [-0.03810625, -0.07246947, -0.18749088, -0.35617045, -0.0039878795, -0.20469043, -0.30595267, -0.13831393, -0.07891641, -0.14182357, -0.22269824]
-gra[3][7][8] = [-0.06396654, -0.10820116, 0.026846237, -0.013104029, -0.099735364, -0.02959507, -0.0341132, 0.05246252, 0.0, -0.0033622796, 0.005457081]
-gra[3][7][9] = [0.08995527, -0.042559315, 0.02578675, -0.091648445, 0.08852732, 0.0071767634, -0.025927924, 0.0230534, -6.042392E-4, -0.006980671, -0.056342095]
-gra[3][7][10] = [0.04442288, 0.08723284, -0.16664585, -0.037582442, 0.03385026, -0.07331349, 0.026329678, -0.059664503, 0.0, 0.008259046, 0.0040668105]
-gra[3][7][11] = [-0.10968651, -0.049679715, -0.091641724, 0.0135395825, 0.10426791, -0.04648871, 0.03418339, 0.00646766, 0.0015268069, -0.007024522, -0.00857213]
-gra[3][7][12] = [-8.94831E-4, -0.048872735, -0.07393748, -0.021211132, 0.06579353, -0.028791236, 0.0055351285, 0.09356796, -0.0016438005, -0.007024522, -0.010688173]
-gra[3][7][13] = [0.031788692, -0.047926236, 0.005738914, -0.06011968, 0.024804078, -0.045847956, 0.0027329288, 0.06296933, -0.0016438005, -0.0018316432, -0.030455668]
-gra[3][7][14] = [-0.0017417222, 0.025195358, 0.0070165694, 3.3167237E-4, 8.169799E-4, 7.0631783E-4, 0.11188539, 0.02086204, -0.0019475454, -0.0010469037, -0.06419305]
-gra[3][8][3] = [-0.15412576, -0.12789336, -0.20798595, -0.24514237, -0.30613858, -0.2518991]
-gra[3][8][4] = [0.111481294, -0.036286652, -0.05985439, -0.017615488, -0.005918055, 4.770551E-4]
-gra[3][8][5] = [0.008234154, -0.030956661, -0.07456523, -0.017615488, -0.0025875743, 4.770551E-4]
-gra[3][8][6] = [-0.028704194, 0.002314438, -0.0022998422, -0.018571196, -0.003225636, -0.0043171197]
-gra[3][8][7] = [-0.011244033, -0.016609045, -0.057324897, -0.01446133, -6.4382935E-4, -0.008020589]
-gra[3][8][8] = [-0.15412576, -0.12789336, -0.20798595, -0.24514237, -0.30613858, -0.2518991]
-gra[3][8][9] = [0.14387159, 0.0015868242, -9.2201936E-4, -0.10608127, -0.04583137, -0.046073522]
-gra[3][8][10] = [-0.059995398, 0.09151214, -0.05540722, -0.025675789, -0.004103984, -0.017712904]
-gra[3][8][11] = [0.052732036, 0.056370113, 0.025641251, -0.10506861, -0.06615821, -0.022662342]
-gra[3][8][12] = [0.01624117, 0.07265478, 0.029413441, -0.06037133, -0.069066934, 0.0031176568]
-gra[3][8][13] = [0.08026971, 0.06581602, 0.08241708, -0.07446065, -0.09312223, -0.0033769957]
-gra[3][8][14] = [-0.061419778, 0.030121334, 0.088266574, 0.019163983, 0.020992978, -0.030493984]
-gra[3][9][3] = [-0.021003172, -0.065597035, -0.16535676, -0.25871342, -0.29838958, -0.24498987, -0.3047002, -0.23739927, -0.08985106, -0.117371395, -0.15238857]
-gra[3][9][4] = [-0.056511734, -0.050796784, 0.21606155, -0.04224682, -0.02565812, -0.027460705, 0.010665469, 0.02652775, -0.002650973, -0.012879585, 0.010691209]
-gra[3][9][5] = [-0.03898397, -0.04384581, 0.10932791, -0.067109935, -0.025863424, -0.027267672, 0.013148798, 0.02652775, 9.0512355E-12, -0.011506752, 0.016392484]
-gra[3][9][6] = [-0.026048012, -0.006928928, -0.04699468, -0.0012417085, -0.02850939, -0.02125135, 0.0, 0.0, -0.0045685717, -0.0016083805, -0.0012626576]
-gra[3][9][7] = [-0.0125679895, -0.037647933, 0.01847256, -0.069894865, -0.022533493, -0.01942112, 0.007643792, 0.031788614, -1.4217442E-4, -0.007257821, -0.01844468]
-gra[3][9][8] = [-0.011030057, -0.027001118, -0.016916927, 0.054259032, 0.046004623, 0.027047869, -0.027326334, 0.019558845, 0.0, 0.005164899, -0.010124459]
-gra[3][9][9] = [-0.021003172, -0.065597035, -0.16535676, -0.25871342, -0.29838958, -0.24498987, -0.3047002, -0.23739927, -0.08985106, -0.117371395, -0.15238857]
-gra[3][9][10] = [-0.009904943, 0.08271649, -6.605489E-4, -0.05324988, 0.059516188, -0.03834217, 0.021282855, 0.025870191, 0.0, 0.010368334, -0.0012901137]
-gra[3][9][11] = [-0.08583092, 0.0026931786, 0.055489168, 0.069315575, 0.06542832, -0.09547536, 0.08125984, -0.030693594, -0.001936182, -0.0025422391, -0.014482316]
-gra[3][9][12] = [-0.002932982, -0.029178634, 0.02658984, 0.0762058, -0.03144419, -0.09210541, 0.042617302, -0.0028532404, -0.0051067895, -0.0025422391, -8.367696E-4]
-gra[3][9][13] = [0.03893423, -0.02479623, 0.12503432, -0.0042038285, -0.05592381, -0.072107635, 0.040826432, -0.014562405, -0.0051067895, 0.0026506395, -0.054437894]
-gra[3][9][14] = [-0.021795094, 0.02577257, -0.031111931, 0.06994245, 0.031381827, 0.060158834, 0.10587171, 0.017498635, 0.0, 0.0, -0.07941664]
-gra[3][10][3] = [-0.1329772, -0.15913084, -0.33212945, -0.38628212, -0.17085952, -0.14248645, -0.11814857]
-gra[3][10][4] = [0.09687643, -0.03531511, -0.017615488, -0.050107636, 0.0, 0.008792369, -0.04500673]
-gra[3][10][5] = [-0.0066100135, -0.02998512, -0.017615488, -0.07391735, 0.0, 0.008792369, -0.028043877]
-gra[3][10][6] = [-0.028704194, -0.006928928, -0.020728316, -0.0068972483, -0.0061344863, 0.004557554, -0.022639498]
-gra[3][10][7] = [-0.046813827, -0.02181504, -0.01446133, -0.042420294, -0.0033213743, 0.0016988069, -0.00995356]
-gra[3][10][8] = [-0.003417932, -0.009956081, 0.033852994, -0.012161942, 0.0017278524, 0.0013890374, -0.0040250965]
-gra[3][10][9] = [0.07826676, 0.0033093924, -0.0119619025, -0.03593995, 0.0, 0.009920094, -0.034691177]
-gra[3][10][10] = [-0.1329772, -0.15913084, -0.33212945, -0.38628212, -0.17085952, -0.14248645, -0.11814857]
-gra[3][10][11] = [0.015245715, 0.13007498, -0.116307035, -0.009605885, -0.006525742, -0.1280925, 0.07482027]
-gra[3][10][12] = [-0.0031260774, 0.08639123, -0.07817442, -0.034333423, -0.008802207, -0.061089545, 0.08547191]
-gra[3][10][13] = [0.07543126, 0.08516402, -0.07825824, -0.05238478, -0.005011603, -0.08016144, 0.08822032]
-gra[3][10][14] = [-0.043887418, 0.005256214, 0.014653939, 0.08381868, -0.021312775, 0.0047443355, 0.041867867]
-gra[3][11][3] = [-0.09214447, -0.10365626, -0.052041374, -0.2149998, -0.19054943, -0.13169308, -0.3842526, -0.27320582, -0.08365657, -0.100043, -0.17461441]
-gra[3][11][4] = [-0.056511734, -0.05296787, 0.20943795, -0.028145026, -0.02407775, -0.025055174, 0.0059119724, 0.0074535403, 9.0512355E-12, -0.012879585, -0.012467872]
-gra[3][11][5] = [-0.037326038, -0.04763788, 0.10435052, -0.05078754, -0.024283057, -0.025055174, 0.008395301, 0.008833618, 9.0512355E-12, -0.012879585, -0.006766601]
-gra[3][11][6] = [-0.027569015, -0.006928928, -0.047970586, -0.0033129938, -0.025036301, -0.019172352, 0.0, 0.0, -0.0045685717, -0.0016083805, -0.0012626576]
-gra[3][11][7] = [-0.012654685, -0.048454355, 0.0369806, -0.07753024, -0.023927642, -0.01942112, 0.0064100344, 0.007928713, -9.331818E-4, -0.00948236, -0.01761809]
-gra[3][11][8] = [-0.017691867, -0.028658904, -0.015097424, 0.023459015, 0.08073837, 0.033852994, -0.03048157, 0.042773336, -0.0017965699, 0.011501777, 0.013622059]
-gra[3][11][9] = [-0.036216546, -0.02235225, 0.23496085, -0.04552784, -0.011887079, -0.021881483, 0.008733615, 0.016309183, 9.0512355E-12, -0.0077277506, -0.0013032085]
-gra[3][11][10] = [-2.7178368E-4, -0.06855495, 0.027399302, -0.008799138, 0.102962606, -0.09111658, -0.05898697, 0.083916046, 0.0024555703, 0.023591425, -0.0036736613]
-gra[3][11][11] = [-0.09214447, -0.10365626, -0.052041374, -0.2149998, -0.19054943, -0.13169308, -0.3842526, -0.27320582, -0.08365657, -0.100043, -0.17461441]
-gra[3][11][12] = [-0.04195919, -0.011814356, 0.034449045, 0.049225464, 0.07797931, -0.022044744, 0.020394541, 0.028562825, -0.0016438005, -1.4816411E-4, 0.0416849]
-gra[3][11][13] = [-0.019808618, -0.05076483, 0.10389386, -0.009409836, 0.018409714, -0.07892824, 0.0015091486, 0.010321492, -0.0016438005, 0.0026422446, 0.0017031142]
-gra[3][11][14] = [0.03876716, 0.024333825, -0.022561122, 0.016644152, 0.006734378, 0.025349773, 0.14653301, 0.040411703, 0.0, 0.0, -0.09829482]
-gra[3][12][3] = [-0.11387451, -0.15722544, -0.17891133, -0.31314385, -0.25551414, -0.19353133, -0.33349663, -0.29827237, -0.098324604, -0.13416855, -0.2571352]
-gra[3][12][4] = [-0.056511734, -0.04987319, 0.20671012, -0.022405924, -0.015052397, -0.030014966, 0.0035608534, 0.011555983, 5.769341E-4, -0.010628307, -0.020405654]
-gra[3][12][5] = [-0.037326038, -0.0445432, 0.09530988, -0.04893767, -0.0135707855, -0.030014966, 0.006044182, 0.010669847, 9.0512355E-12, -0.010628307, -0.01856464]
-gra[3][12][6] = [-0.027659994, -0.006928928, -0.0524088, 0.006312619, -0.025585316, -0.019172352, 0.0, 0.0, -0.008284481, -0.0016083805, -0.0012626576]
-gra[3][12][7] = [-0.012654685, -0.047222544, 0.025782429, -0.048584756, -0.009962272, -0.021901015, 0.002915925, 0.0064832703, -1.4217442E-4, -0.007231083, -0.031687073]
-gra[3][12][8] = [-0.020402493, -0.024556305, -0.015575819, 0.055016555, 0.051806875, 0.033852994, -0.04555193, 0.05035637, 0.0, 0.0031901782, 0.0090892585]
-gra[3][12][9] = [-0.033509176, -0.019306917, 0.20735021, -0.005000181, 0.0028634723, -0.029321171, 0.0063824966, 0.024137018, 9.0512355E-12, -0.005476473, -0.013007009]
-gra[3][12][10] = [0.011302657, -0.07017854, 0.023033805, 0.015241189, 0.08098403, -0.06386582, -0.012394784, 0.10541846, 0.002381391, 0.011636256, -0.0048150206]
-gra[3][12][11] = [-0.044727597, -0.0034954008, 0.13743237, -0.05609268, -0.01628504, -0.02166985, 0.0032368335, 0.023991466, 7.6891546E-4, -0.005476473, -0.0042543197]
-gra[3][12][12] = [-0.11387451, -0.15722544, -0.17891133, -0.31314385, -0.25551414, -0.19353133, -0.33349663, -0.29827237, -0.098324604, -0.13416855, -0.2571352]
-gra[3][12][13] = [0.10053188, -0.03359089, 0.12973118, -0.013946263, -0.025900569, -0.06678694, -0.013508427, 0.049437862, -0.0016438005, 0.0012229871, 0.013154621]
-gra[3][12][14] = [0.038463943, 0.023034256, 0.0101122, 0.026391888, 0.021977, 0.03366942, 0.13214202, 0.020360775, 0.0, -2.2505768E-11, -0.06410605]
-gra[3][13][3] = [-0.11463873, -0.06754701, -0.14183052, -0.2948737, -0.20204443, -0.2639251, -0.29475674, -0.24990667, -0.10658293, -0.13451692, -0.2545104]
-gra[3][13][4] = [-0.055579588, -0.051395856, 0.22241642, -4.059528E-4, -0.024469772, -0.030014966, 0.007155873, 0.016494725, 9.0512355E-12, -0.012879585, -0.011571843]
-gra[3][13][5] = [-0.036240384, -0.046065867, 0.111016184, -0.028104905, -0.022988161, -0.030014966, 0.009639202, 0.015608587, 9.0512355E-12, -0.012879585, -0.008721208]
-gra[3][13][6] = [-0.025174934, -0.006928928, -0.0555249, 0.0047137234, -0.025065042, -0.019172352, 0.0, 0.0, -0.0045685717, -0.0016083805, -0.0012626576]
-gra[3][13][7] = [-0.010334147, -0.04874521, 0.037647445, -0.026584785, -0.01937965, -0.021901015, 0.006510945, 0.014144414, -1.4217442E-4, -0.007257821, -0.024563886]
-gra[3][13][8] = [-0.017435485, -0.025563205, -0.018197112, 0.0629446, 0.07925679, 0.033852994, -0.050028473, 0.046572696, 0.0019757631, 0.005164899, -0.020037295]
-gra[3][13][9] = [-0.029525224, -0.020829584, 0.22252294, 0.019572949, -0.006553903, -0.029321171, 0.009977517, 0.026871076, 9.0512355E-12, -0.0077277506, -0.0016536638]
-gra[3][13][10] = [0.009529866, -0.06829155, -0.021803388, -3.047292E-4, 0.06953493, -0.066966124, 0.026328605, 0.09766341, 0.002381391, 0.015515008, 0.016775005]
-gra[3][13][11] = [-0.045481637, -0.009793117, 0.1632958, -0.023134613, -0.032108083, -0.01738065, 0.0056135817, 0.030979762, 7.6891546E-4, -0.0077277506, 0.007776879]
-gra[3][13][12] = [-0.019675596, -0.026981357, 0.1308571, 0.017473653, -0.0012450293, -0.026860807, 0.009749667, 0.03448535, -1.4217423E-4, -0.007257821, -0.008489365]
-gra[3][13][13] = [-0.11463873, -0.06754701, -0.14183052, -0.2948737, -0.20204443, -0.2639251, -0.29475674, -0.24990667, -0.10658293, -0.13451692, -0.2545104]
-gra[3][13][14] = [-0.01722709, 0.032380998, -0.09424367, 0.027259992, -0.0021256413, 0.0184861, 0.09748994, 0.011856999, 0.0, -0.0013691243, -0.067090854]
-gra[3][14][3] = [0.44593877, -0.42780378, -0.3339555, -0.041055933, -0.23774712, -0.11392724, -0.13324136, -0.17313966]
-gra[3][14][4] = [-0.050213013, 0.15398705, -0.018582903, -0.023101933, -0.03499973, 0.0020432305, -0.036024883, -0.046984877]
-gra[3][14][5] = [-0.057042483, 0.058396146, -0.04672017, -0.01777194, -0.03499973, -0.0048348554, -0.01806613, -0.046984877]
-gra[3][14][6] = [-0.055422466, -0.038651124, -0.007950703, -0.006928928, 0.03158737, -0.0045685717, -0.04463454, -0.018571196]
-gra[3][14][7] = [-0.046599343, -9.01673E-4, -0.039705895, -0.009601859, -0.027448343, -0.004834855, -9.093541E-4, -0.03576694]
-gra[3][14][8] = [-0.0027976157, 0.04381682, 0.11873355, -0.014299808, -0.011449244, 0.008354038, -0.0040250965, 0.030145828]
-gra[3][14][9] = [-0.03965546, 0.16102295, 0.032597095, 0.018370427, -0.01859632, -0.0048348554, -0.023131285, -0.033222895]
-gra[3][14][10] = [-0.017961588, 0.074451886, -0.015154174, -0.06398133, -0.012447634, 0.0, -0.006365354, -0.005879982]
-gra[3][14][11] = [-0.043990437, 0.09489804, 0.035154194, 0.025853252, -0.019943671, -0.0040659397, -0.029561525, -0.038219962]
-gra[3][14][12] = [-0.05016438, 0.06303118, 0.037071317, 0.012375867, -0.028478147, -0.008058093, -0.0030354094, -0.03576694]
-gra[3][14][13] = [-0.042344883, 0.07444154, 0.0095811095, 0.018891037, -0.026047245, -0.008058093, -0.002521744, -0.03576694]
-gra[3][14][14] = [0.44593877, -0.42780378, -0.3339555, -0.041055933, -0.23774712, -0.11392724, -0.13324136, -0.17313966]
-gra[4][0][0] = [-0.068558656]
-gra[4][0][1] = [0.11764526]
-gra[4][0][2] = [-0.041710425]
-gra[4][0][3] = [0.0015610885]
-gra[4][0][4] = [-0.068558656]
-gra[4][1][0] = [0.0022879262, -0.001958814, 6.20738E-4, 4.4457944E-11, -0.0021720084, -9.267408E-4]
-gra[4][1][1] = [-0.04198974, -0.15868439, -0.21871509, -0.18274719, -0.15518439, -0.21593317]
-gra[4][1][2] = [0.049908973, -0.060012273, 0.0132662775, -0.026443, -0.0023895265, -0.048535112]
-gra[4][1][3] = [0.046850376, -0.0399934, 0.0010957995, -0.019397447, -0.00574457, -0.047918677]
-gra[4][1][4] = [-0.04198974, -0.15868439, -0.21871509, -0.18274719, -0.15518439, -0.21593317]
-gra[4][2][0] = [-0.0023283148, 0.0, 6.4378075E-4, 0.0042653317, -0.008087347, 0.0031306578, 2.969677E-4, -3.050395E-11, 0.0012653338, 0.0024696218, -0.009896872]
-gra[4][2][1] = [-5.13921E-4, -3.7906157E-11, -0.045836035, -0.0041412255, -0.02294093, -0.0028272104, -0.014439816, 0.035186574, -7.720956E-4, 0.0035228117, -0.034932088]
-gra[4][2][2] = [-0.1527792, -0.16105321, -0.11441286, -0.18570481, -0.263671, -0.16376895, -0.27147496, -0.28773913, -0.20254132, -0.14136088, -0.26420903]
-gra[4][2][3] = [-0.004744318, -0.028696006, -0.047554154, -0.029328587, -0.0108278785, 0.0, 0.012152899, -0.009935487, -0.011329165, -0.0052225264, -0.12551941]
-gra[4][2][4] = [-0.1527792, -0.16105321, -0.11441286, -0.18570481, -0.263671, -0.16376895, -0.27147496, -0.28773913, -0.20254132, -0.14136088, -0.26420903]
-gra[4][3][0] = [-0.0023283148, 0.0, -2.546209E-4, 6.20738E-4, 0.0, 7.4807646E-11, 2.969678E-4, -6.10079E-11, 0.0012653338, 2.1146203E-5, -0.007859215]
-gra[4][3][1] = [-5.13921E-4, 0.0, -0.06842534, -0.010353064, -0.035776734, -0.004779683, -0.043350175, 0.079702035, -7.720956E-4, 0.0, -0.09211975]
-gra[4][3][2] = [-0.0050252816, -0.021862686, -0.05439042, 0.0, -0.0197254, -0.011747527, -0.010851742, 0.0045674103, -0.008396367, 0.016079204, -0.045323726]
-gra[4][3][3] = [-0.15722692, -0.15284958, -0.1687409, -0.21507952, -0.29694274, -0.18014798, -0.21342382, -0.375148, -0.18912332, -0.1695773, -0.22369294]
-gra[4][3][4] = [-0.15722692, -0.15284958, -0.1687409, -0.21507952, -0.29694274, -0.18014798, -0.21342382, -0.375148, -0.18912332, -0.1695773, -0.22369294]
-gra[4][5][4] = [0.014722959, 0.18275993, -0.0636386, -0.22962478, -0.28831062, -0.19243455, -0.20865887, -0.33900928, -0.098217, -0.11010328, -0.17192467]
-gra[4][5][5] = [0.014722959, 0.18275993, -0.0636386, -0.22962478, -0.28831062, -0.19243455, -0.20865887, -0.33900928, -0.098217, -0.11010328, -0.17192467]
-gra[4][5][6] = [-0.09911031, -0.02584689, 0.026706154, 0.0064545716, 0.030568566, -0.037597638, 0.0030047887, 0.024394596, 0.0, 0.0048741507, -0.039634243]
-gra[4][5][7] = [0.010370938, 0.0097888755, -0.04665061, -0.21829283, -0.03931838, -0.12108123, -0.007544473, -0.10600374, -0.0016438005, -4.6656025E-4, -0.03369571]
-gra[4][5][8] = [-0.04795964, -0.08748845, 0.012514722, 0.054292858, -0.046950795, -0.041652158, -0.05227269, 0.042276658, 0.0, -0.004978219, 0.0038085831]
-gra[4][5][9] = [0.118447594, -0.048133302, 0.116975956, -0.10744196, -0.042570457, -0.110149436, -0.036007646, -0.02457235, -6.042392E-4, -1.444224E-4, -0.010697803]
-gra[4][5][10] = [-0.008554228, 0.041264854, -0.11523878, -0.06722138, 0.020829812, -0.042462237, 0.0072704786, -0.017995058, 0.0, 0.012700643, 0.022817375]
-gra[4][5][11] = [-0.12169014, -0.030582886, -0.02897325, -0.031979937, -0.023385987, -0.12917747, 0.031189587, -0.050955363, -6.042392E-4, -0.0039698915, 0.008385656]
-gra[4][5][12] = [9.146053E-6, -0.04193567, -0.034431104, -0.06613156, -0.078815356, -0.11424304, 0.013824362, -0.043248564, 0.0023156772, -0.0039698915, -0.0046529626]
-gra[4][5][13] = [0.05273106, -0.021414878, 0.04215588, -0.09433008, -0.10508856, -0.124612965, 0.010319007, -0.06516868, -0.0016438005, 0.0055478574, -0.02379297]
-gra[4][5][14] = [-0.0270753, 0.041652158, -0.08693187, 0.055251643, 0.015370078, 0.020085067, 0.103559524, 0.026089558, -1.8203591E-10, 0.0, -0.06919619]
-gra[4][6][4] = [-0.35341132, -0.20252663]
-gra[4][6][5] = [0.092977405, -0.02442189]
-gra[4][6][6] = [-0.35341132, -0.20252663]
-gra[4][6][7] = [0.019726846, -0.012724133]
-gra[4][6][8] = [-0.10187224, 0.029533952]
-gra[4][6][9] = [0.11780503, -0.0030878466]
-gra[4][6][10] = [-0.064647116, -0.034098495]
-gra[4][6][11] = [0.019633012, -0.035545427]
-gra[4][6][12] = [0.083963394, 0.003786453]
-gra[4][6][13] = [0.13890627, -0.02833015]
-gra[4][6][14] = [-0.08874273, -0.031247089]
-gra[4][7][4] = [-0.12397108, 0.014455657, -0.15047927, -0.35617045, -0.0039878795, -0.20469043, -0.30595267, -0.13831393, -0.07891641, -0.14182357, -0.21851322]
-gra[4][7][5] = [-0.043149117, -0.0449026, 0.16233759, -0.02765031, -0.02725357, -0.030014966, 0.0047791246, 0.005567723, 9.0512355E-12, -0.0018806041, -0.007157123]
-gra[4][7][6] = [-0.022742484, -0.006928928, -0.04051508, -0.003913735, -0.025036301, -0.018571196, -4.731787E-11, 0.0, -9.038228E-4, -0.0016083805, 0.0]
-gra[4][7][7] = [-0.12397108, 0.014455657, -0.15047927, -0.35617045, -0.0039878795, -0.20469043, -0.30595267, -0.13831393, -0.07891641, -0.14182357, -0.21851322]
-gra[4][7][8] = [-0.059728492, -0.106997676, 0.026846237, -0.013104029, -0.099735364, -0.02959507, -0.0341132, 0.05246252, 0.0, -0.0033622796, 0.005457081]
-gra[4][7][9] = [0.08231275, -0.038986813, 0.031845048, -0.091648445, 0.087450445, 0.0071767634, -0.025927924, 0.0230534, -6.042392E-4, -0.006980671, -0.056342095]
-gra[4][7][10] = [0.04442288, 0.094747745, -0.1791282, -0.037582442, 0.03385026, -0.07331349, 0.026329678, -0.061193362, 0.0, 0.010591356, 0.0040668105]
-gra[4][7][11] = [-0.117329046, -0.046107206, -0.08558342, 0.0135395825, 0.10319102, -0.04648871, 0.03418339, 0.00646766, -6.042392E-4, -0.007024522, -0.00857213]
-gra[4][7][12] = [-0.008537363, -0.045300227, -0.06787919, -0.021211132, 0.063573614, -0.028791236, 0.0055351285, 0.09356796, -0.0016438005, -0.007024522, -0.010688173]
-gra[4][7][13] = [0.024146158, -0.044353727, 0.011797216, -0.06011968, 0.023727208, -0.045847956, 0.0027329288, 0.06296933, -0.0016438005, 0.0024932271, -0.026049387]
-gra[4][7][14] = [-0.0017417222, 0.027644029, 0.005157385, 3.3167237E-4, 8.169799E-4, 7.0631783E-4, 0.10761113, 0.02086204, -0.0019475454, -0.0010469037, -0.06419305]
-gra[4][8][4] = [-0.11711414, -0.040968277, -0.20798595, -0.24514237, -0.30613858, -0.24771409]
-gra[4][8][5] = [0.08426701, -0.028518835, -0.059163406, -0.017615488, -0.0025875743, 4.770551E-4]
-gra[4][8][6] = [-0.028704194, 0.002314438, -0.0022998422, -0.018571196, -0.003225636, -0.0043171197]
-gra[4][8][7] = [-0.016012147, -0.013587542, -0.057324897, -0.01446133, -6.4382935E-4, -0.008020589]
-gra[4][8][8] = [-0.11711414, -0.040968277, -0.20798595, -0.24514237, -0.30613858, -0.24771409]
-gra[4][8][9] = [0.1499299, 0.005159328, -9.2201936E-4, -0.10608127, -0.04583137, -0.046073522]
-gra[4][8][10] = [-0.07247772, 0.099027045, -0.05540722, -0.025675789, -0.004103984, -0.017712904]
-gra[4][8][11] = [0.05879034, 0.059942614, 0.025641251, -0.10506861, -0.058699712, -0.022662342]
-gra[4][8][12] = [0.022299469, 0.076227285, 0.029413441, -0.06037133, -0.07426226, 0.0031176568]
-gra[4][8][13] = [0.086328015, 0.069388516, 0.08241708, -0.07446065, -0.09312223, 0.0010292889]
-gra[4][8][14] = [-0.063278966, 0.032570012, 0.088266574, 0.019163983, 0.020992978, -0.030493984]
-gra[4][9][4] = [-0.10686798, 0.02132809, -0.12834515, -0.25871342, -0.29838958, -0.24498987, -0.3047002, -0.23739927, -0.08985106, -0.117371395, -0.14820358]
-gra[4][9][5] = [-0.051906407, -0.04059518, 0.18360823, -0.050654702, -0.025863424, -0.027267672, 0.01188374, 0.02652775, 9.0512355E-12, -0.011506752, 0.016392484]
-gra[4][9][6] = [-0.026048012, -0.006928928, -0.04699468, -0.0012417085, -0.02850939, -0.02125135, 0.0, 0.0, -9.038228E-4, -0.0016083805, -0.0012626576]
-gra[4][9][7] = [-0.0060619293, -0.03462643, 0.013704447, -0.069894865, -0.022533493, -0.01942112, 0.007643792, 0.031788614, -1.4217423E-4, -0.007257821, -0.01844468]
-gra[4][9][8] = [-0.012241036, -0.027001118, -0.008912949, 0.059138477, 0.046004623, 0.027047869, -0.027326334, 0.019558845, 0.0, 0.005164899, -0.010124459]
-gra[4][9][9] = [-0.10686798, 0.02132809, -0.12834515, -0.25871342, -0.29838958, -0.24498987, -0.3047002, -0.23739927, -0.08985106, -0.117371395, -0.14820358]
-gra[4][9][10] = [-0.009904943, 0.09023139, -0.013142893, -0.05324988, 0.059516188, -0.03834217, 0.021282855, 0.024341332, 0.0, 0.012700643, -0.0012901137]
-gra[4][9][11] = [-0.093473464, 0.0062656836, 0.061547473, 0.069315575, 0.064351425, -0.09547536, 0.08125984, -0.030693594, -0.004067228, -0.0025422391, -0.014482316]
-gra[4][9][12] = [-0.010575512, -0.025606124, 0.03264815, 0.0762058, -0.03366411, -0.09210541, 0.042617302, -0.0028532404, -0.0051067895, -0.0025422391, -8.367696E-4]
-gra[4][9][13] = [0.0312917, -0.02122373, 0.13109264, -0.0042038285, -0.057000685, -0.072107635, 0.040826432, -0.014562405, -0.0051067895, 0.0069755097, -0.05003162]
-gra[4][9][14] = [-0.021795094, 0.028221246, -0.032971114, 0.06994245, 0.031381827, 0.060158834, 0.10159744, 0.017498635, 0.0, 0.0, -0.07941664]
-gra[4][10][4] = [-0.095965564, -0.07220575, -0.33212945, -0.38628212, -0.17085952, -0.13830143, -0.2040134]
-gra[4][10][5] = [0.072923616, -0.027547294, -0.017615488, -0.058515526, 0.0, 0.008792369, -0.042624243]
-gra[4][10][6] = [-0.028704194, -0.006928928, -0.020728316, -0.0068972483, -0.0022654566, 0.004557554, -0.022639498]
-gra[4][10][7] = [-0.051581945, -0.018793536, -0.01446133, -0.042420294, -0.0033213743, 0.0016988069, -0.003447506]
-gra[4][10][8] = [0.0045860405, -0.009956081, 0.033852994, -0.0072824936, 0.0028213095, 0.0013890374, -0.0052360767]
-gra[4][10][9] = [0.073498644, 0.007381615, -0.0119619025, -0.03593995, 0.0, 0.009920094, -0.034691177]
-gra[4][10][10] = [-0.095965564, -0.07220575, -0.33212945, -0.38628212, -0.17085952, -0.13830143, -0.2040134]
-gra[4][10][11] = [0.02130402, 0.13364749, -0.116307035, -0.009605885, -0.006525742, -0.1280925, 0.06717774]
-gra[4][10][12] = [0.0029322281, 0.08996374, -0.07817442, -0.034333423, -0.008802207, -0.061089545, 0.077829376]
-gra[4][10][13] = [0.08148956, 0.08873653, -0.07825824, -0.05238478, -0.005011603, -0.075755164, 0.08057779]
-gra[4][10][14] = [-0.045746606, 0.0077048903, 0.014653939, 0.08381868, -0.021312775, 0.0047443355, 0.041867867]
-gra[4][11][4] = [-0.17800932, -0.016731167, -0.015029761, -0.2149998, -0.19054943, -0.13169308, -0.3842526, -0.27320582, -0.08365657, -0.100043, -0.17042941]
-gra[4][11][5] = [-0.051906407, -0.04520005, 0.1781785, -0.035385706, -0.024283057, -0.025055174, 0.007130244, 0.008833618, 9.0512355E-12, -0.012879585, -0.006766601]
-gra[4][11][6] = [-0.027569015, -0.006928928, -0.047970586, -0.0033129938, -0.025036301, -0.019172352, 0.0, 0.0, -9.038228E-4, -0.0016083805, -0.0012626576]
-gra[4][11][7] = [-0.006148626, -0.04543285, 0.032212485, -0.07753024, -0.023927642, -0.01942112, 0.0064100344, 0.007928713, -9.331816E-4, -0.00948236, -0.01761809]
-gra[4][11][8] = [-0.018902846, -0.028658904, -0.007093447, 0.028338464, 0.08073837, 0.033852994, -0.03048157, 0.042773336, -0.0017965699, 0.011501777, 0.013622059]
-gra[4][11][9] = [-0.036216546, -0.018280027, 0.23019274, -0.04552784, -0.011887079, -0.021881483, 0.008733615, 0.016309183, 9.0512355E-12, -0.0077277506, -0.0013032085]
-gra[4][11][10] = [0.0011478947, -0.06855495, 0.029414356, -0.005431766, 0.102962606, -0.09111658, -0.05898697, 0.083916046, 0.0024555703, 0.023591425, -0.0036736613]
-gra[4][11][11] = [-0.17800932, -0.016731167, -0.015029761, -0.2149998, -0.19054943, -0.13169308, -0.3842526, -0.27320582, -0.08365657, -0.100043, -0.17042941]
-gra[4][11][12] = [-0.04960172, -0.008241851, 0.04050735, 0.049225464, 0.075759396, -0.022044744, 0.020394541, 0.028562825, -0.0016438005, -1.4816411E-4, 0.0416849]
-gra[4][11][13] = [-0.027451143, -0.047192324, 0.10995217, -0.009409836, 0.017332839, -0.07892824, 0.0015091486, 0.010321492, -0.0016438005, 0.0069671148, 0.006109395]
-gra[4][11][14] = [0.03876716, 0.0267825, -0.024420308, 0.016644152, 0.006734378, 0.025349773, 0.14225875, 0.040411703, 0.0, 0.0, -0.09829482]
-gra[4][12][4] = [-0.19973935, -0.070300326, -0.14189972, -0.31314385, -0.25551414, -0.19353133, -0.33349663, -0.29827237, -0.098324604, -0.13416855, -0.2529502]
-gra[4][12][5] = [-0.051906407, -0.042105377, 0.17027168, -0.033535838, -0.0135707855, -0.030014966, 0.0047791246, 0.010669847, 9.0512355E-12, -0.010628307, -0.01856464]
-gra[4][12][6] = [-0.027659994, -0.006928928, -0.0524088, 0.006312619, -0.025585316, -0.019172352, 0.0, 0.0, -0.0046197325, -0.0016083805, -0.0012626576]
-gra[4][12][7] = [-0.006148626, -0.04420104, 0.021014318, -0.048584756, -0.009962272, -0.021901015, 0.002915925, 0.0064832703, -1.4217423E-4, -0.007231083, -0.031687073]
-gra[4][12][8] = [-0.021613473, -0.024556305, -0.007571841, 0.059896007, 0.051806875, 0.033852994, -0.04555193, 0.05035637, 0.0, 0.0031901782, 0.0090892585]
-gra[4][12][9] = [-0.033509176, -0.015234692, 0.20258209, -0.005000181, 0.0028634723, -0.029321171, 0.0063824966, 0.024137018, 9.0512355E-12, -0.005476473, -0.013007009]
-gra[4][12][10] = [0.012722332, -0.07017854, 0.025048874, 0.01860856, 0.08098403, -0.06386582, -0.012394784, 0.10541846, 0.002381391, 0.011636256, -0.0048150206]
-gra[4][12][11] = [-0.044727597, -4.738964E-4, 0.13266425, -0.0487614, -0.01628504, -0.02166985, 0.0032368335, 0.023991466, 7.6891546E-4, -0.005476473, -0.0064276056]
-gra[4][12][12] = [-0.19973935, -0.070300326, -0.14189972, -0.31314385, -0.25551414, -0.19353133, -0.33349663, -0.29827237, -0.098324604, -0.13416855, -0.2529502]
-gra[4][12][13] = [0.09288935, -0.03001839, 0.13578948, -0.013946263, -0.02697745, -0.06678694, -0.013508427, 0.049437862, -0.0016438005, 0.0055478574, 0.017560903]
-gra[4][12][14] = [0.038463943, 0.025482932, 0.008253016, 0.026391888, 0.021977, 0.03366942, 0.12786776, 0.020360775, 0.0, -2.2505768E-11, -0.06410605]
-gra[4][13][4] = [-0.20050356, 0.019378092, -0.10481889, -0.2948737, -0.20204443, -0.2639251, -0.29475674, -0.24990667, -0.10658293, -0.13451692, -0.2503254]
-gra[4][13][5] = [-0.05082075, -0.043628044, 0.18484417, -0.012703076, -0.022988161, -0.030014966, 0.008374145, 0.015608587, 9.0512355E-12, -0.012879585, -0.008721208]
-gra[4][13][6] = [-0.025174934, -0.006928928, -0.0555249, 0.0047137234, -0.025065042, -0.019172352, 0.0, 0.0, -9.038228E-4, -0.0016083805, -0.0012626576]
-gra[4][13][7] = [-0.0038280855, -0.045723706, 0.032879326, -0.026584785, -0.01937965, -0.021901015, 0.006510945, 0.014144414, -1.4217423E-4, -0.007257821, -0.024563886]
-gra[4][13][8] = [-0.018646464, -0.025563205, -0.010193134, 0.06782404, 0.07925679, 0.033852994, -0.050028473, 0.046572696, 0.0019757631, 0.005164899, -0.020037295]
-gra[4][13][9] = [-0.029525224, -0.01675736, 0.21775483, 0.019572949, -0.006553903, -0.029321171, 0.009977517, 0.026871076, 9.0512355E-12, -0.0077277506, -0.0016536638]
-gra[4][13][10] = [0.010949548, -0.06829155, -0.019788323, 0.0030626338, 0.06953493, -0.066966124, 0.026328605, 0.09766341, 0.002381391, 0.015515008, 0.016775005]
-gra[4][13][11] = [-0.045481637, -0.006771613, 0.15852769, -0.015803333, -0.032108083, -0.01738065, 0.0056135817, 0.030979762, 7.6891546E-4, -0.0077277506, 0.005603589]
-gra[4][13][12] = [-0.019675596, -0.023959853, 0.12608898, 0.017473653, -0.002820584, -0.026860807, 0.009749667, 0.03448535, -1.4217423E-4, -0.007257821, -0.008489365]
-gra[4][13][13] = [-0.20050356, 0.019378092, -0.10481889, -0.2948737, -0.20204443, -0.2639251, -0.29475674, -0.24990667, -0.10658293, -0.13451692, -0.2503254]
-gra[4][13][14] = [-0.01722709, 0.034829676, -0.096102856, 0.027259992, -0.0021256413, 0.0184861, 0.093215674, 0.011856999, 0.0, -0.0013691243, -0.067090854]
-gra[4][14][4] = [0.45614722, -0.39079216, -0.3339555, 0.04586918, -0.23774712, -0.11392724, -0.21910615, -0.17313966]
-gra[4][14][5] = [-0.050213013, 0.1317033, -0.028418455, -0.015334114, -0.03740633, -0.0032232369, -0.032646503, -0.046984877]
-gra[4][14][6] = [-0.055422466, -0.038651124, -0.007950703, -0.006928928, 0.03158737, -9.038228E-4, -0.04463454, -0.018571196]
-gra[4][14][7] = [-0.046599343, -0.005669792, -0.039705895, -0.006580356, -0.028630001, -0.0048348545, 0.0055967015, -0.03576694]
-gra[4][14][8] = [-0.005233598, 0.0518208, 0.12361299, -0.014299808, -0.011449244, 0.008354038, -0.0052360767, 0.030145828]
-gra[4][14][9] = [-0.03965546, 0.15625483, 0.032597095, 0.02244265, -0.019777976, -0.0048348554, -0.023131285, -0.033222895]
-gra[4][14][10] = [-0.017961588, 0.076466955, -0.011786802, -0.06398133, -0.012447634, 0.0, -0.004945674, -0.005879982]
-gra[4][14][11] = [-0.043990437, 0.09012992, 0.042485476, 0.028874757, -0.021125326, -0.0040659397, -0.029561525, -0.038219962]
-gra[4][14][12] = [-0.05016438, 0.058263067, 0.037071317, 0.015397372, -0.029659806, -0.008058093, -0.0030354094, -0.03576694]
-gra[4][14][13] = [-0.042344883, 0.06967342, 0.0095811095, 0.021912538, -0.027228897, -0.008058093, -0.002521744, -0.03576694]
-gra[4][14][14] = [0.45614722, -0.39079216, -0.3339555, 0.04586918, -0.23774712, -0.11392724, -0.21910615, -0.17313966]
-gra[5][0][0] = [-0.041981116]
-gra[5][0][1] = [0.11165683]
-gra[5][0][2] = [-0.034699466]
-gra[5][0][3] = [-0.02278647]
-gra[5][0][4] = [0.008478554]
-gra[5][0][5] = [-0.041981116]
-gra[5][1][0] = [0.0022879262, -0.011053883, -0.0029869583, 4.4457944E-11, -0.0021720084, 0.0016348341]
-gra[5][1][1] = [-0.0048823073, -0.17523552, -0.21583569, -0.18218835, -0.15518439, -0.17397918]
-gra[5][1][2] = [0.06058336, -0.05580195, 0.016498303, -0.026443, -0.0023895265, -0.05305188]
-gra[5][1][3] = [0.027758041, -0.051798172, -0.024388602, -0.019397447, -0.00574457, -0.07174558]
-gra[5][1][4] = [0.06279293, -0.035783082, 0.011646223, -0.019397447, -0.00574457, -0.047943484]
-gra[5][1][5] = [-0.0048823073, -0.17523552, -0.21583569, -0.18218835, -0.15518439, -0.17397918]
-gra[5][2][0] = [-0.003264381, -0.009095069, 6.4378075E-4, 6.57636E-4, -0.008087347, 0.0031306578, 2.969677E-4, -3.050395E-11, 0.006577885, 0.0016814994, -0.0073352964]
-gra[5][2][1] = [-5.13921E-4, -3.7906157E-11, -0.034460317, -0.0041412255, -0.02294093, -0.0028272104, -0.014439816, 0.035186574, -7.720956E-4, 0.0035228117, -0.03578559]
-gra[5][2][2] = [-0.1457395, -0.17760435, -0.07730542, -0.1828254, -0.2647875, -0.16321008, -0.27147496, -0.27251524, -0.22298351, -0.12651624, -0.22225499]
-gra[5][2][3] = [-0.0016788694, -0.038602162, -0.05481774, -0.024850672, -0.02118981, 0.0, 0.0043394, -0.00686435, -0.009372383, -0.0052225264, -0.14019503]
-gra[5][2][4] = [-0.004744318, -0.028696006, -0.04212549, -0.023079613, 0.008764084, -0.0016386209, 0.008595209, -0.014020145, -0.011329165, 0.01450398, -0.14975825]
-gra[5][2][5] = [-0.1457395, -0.17760435, -0.07730542, -0.1828254, -0.2647875, -0.16321008, -0.27147496, -0.27251524, -0.22298351, -0.12651624, -0.22225499]
-gra[5][3][0] = [-0.003264381, -0.009095069, -2.546209E-4, -0.0029869583, -0.003558128, 0.0031306578, 2.969677E-4, -6.10079E-11, 0.006577885, -7.669762E-4, -0.00529764]
-gra[5][3][1] = [-5.13921E-4, 0.0, -0.055911075, -0.010353064, -0.043891303, -0.004779683, -0.048092224, 0.07863838, -7.720956E-4, 0.0, -0.081802025]
-gra[5][3][2] = [-0.0050252816, -0.018022431, -0.0586132, 0.0, -0.025096912, -0.010560441, -0.010851742, 0.003503757, -0.008396367, 0.016079204, -0.051743556]
-gra[5][3][3] = [-0.15018721, -0.21722075, -0.16214848, -0.23871076, -0.3606194, -0.1825599, -0.2269295, -0.40583122, -0.22281976, -0.16284533, -0.23139495]
-gra[5][3][4] = [-0.004744318, -0.026590846, 0.0044537648, -0.016619466, -0.014093055, -0.0016386209, -0.014388094, -0.010515601, -0.014348841, 0.0076769954, 0.06554818]
-gra[5][3][5] = [-0.15018721, -0.21722075, -0.16214848, -0.23871076, -0.3606194, -0.1825599, -0.2269295, -0.40583122, -0.22281976, -0.16284533, -0.23139495]
-gra[5][4][0] = [-0.003264381, -0.009095069, 0.002269707, -0.0029869583, 0.0, 7.4807646E-11, 2.969678E-4, -6.10079E-11, 0.006577885, 0.0016814994, -0.00529764]
-gra[5][4][1] = [-5.13921E-4, 0.0, -0.055783495, -0.010353064, -0.035753258, -0.004779683, -0.043350175, 0.07863838, -7.720956E-4, 0.0, -0.09297326]
-gra[5][4][2] = [-0.005025282, -0.015917271, -0.072601005, 0.0, -0.022037786, -0.008486157, -0.010851742, 0.0037559327, -0.008396367, 0.01512564, -0.04806168]
-gra[5][4][3] = [-0.007702251, -0.01236854, -0.09266366, 0.0, -0.013876671, -0.0062228492, -0.0065214084, -2.5217576E-4, -0.017297493, 0.014535915, -0.03168124]
-gra[5][4][4] = [-0.14797053, -0.17172992, -0.13163346, -0.21220012, -0.2980593, -0.17958912, -0.20716432, -0.35681802, -0.2095655, -0.15473267, -0.22386813]
-gra[5][4][5] = [-0.14797053, -0.17172992, -0.13163346, -0.21220012, -0.2980593, -0.17958912, -0.20716432, -0.35681802, -0.2095655, -0.15473267, -0.22386813]
-gra[5][6][5] = [-0.273783, -0.19260272]
-gra[5][6][6] = [-0.273783, -0.19260272]
-gra[5][6][7] = [0.026080359, -0.05859648]
-gra[5][6][8] = [-0.055209685, 0.026170224]
-gra[5][6][9] = [0.10992134, -0.022323119]
-gra[5][6][10] = [-0.050101317, -0.028544003]
-gra[5][6][11] = [0.005098313, -0.056581404]
-gra[5][6][12] = [0.07325858, -0.028917471]
-gra[5][6][13] = [0.12126222, -0.052550822]
-gra[5][6][14] = [-0.18744022, -0.021810113]
-gra[5][7][5] = [-0.088803455, 0.012399701, -0.18343398, -0.33039725, 0.0035305163, -0.20047185, -0.29768315, -0.13658378, -0.07891641, -0.12767604, -0.21282771]
-gra[5][7][6] = [-0.009979254, -0.012053755, -0.037562795, -0.0026720262, -0.029374257, -0.011606998, 0.0022069581, 0.0, -9.038228E-4, -0.0016083805, 0.0]
-gra[5][7][7] = [-0.088803455, 0.012399701, -0.18343398, -0.33039725, 0.0035305163, -0.20047185, -0.29768315, -0.13658378, -0.07891641, -0.12767604, -0.21282771]
-gra[5][7][8] = [-0.03904423, -0.104260705, 0.029854566, 0.018256059, -0.099735364, -0.02959507, -0.0341132, 0.05730655, 3.9559263E-12, -0.0033622796, 0.005457081]
-gra[5][7][9] = [0.056280468, -0.04836492, 0.024749145, -0.11790468, 0.080051094, 0.009676195, -0.023595946, 0.02369406, 4.957353E-4, -0.006980671, -0.056342095]
-gra[5][7][10] = [0.042196833, 0.10275036, -0.16647932, -0.029836236, 0.03385026, -0.07331349, 0.025126554, -0.061193362, 0.0, 0.010591356, 0.0040668105]
-gra[5][7][11] = [-0.14350367, -0.06622134, -0.09880382, -0.029879933, 0.09920868, -0.043989282, 0.03849998, 0.00678799, -6.042392E-4, -0.008943624, -0.00857213]
-gra[5][7][12] = [-0.034875587, -0.068832435, -0.078401625, -0.072721116, 0.059591286, -0.026291808, 0.007867106, 0.09388829, -0.0016438005, -0.007024522, -0.010688173]
-gra[5][7][13] = [0.014372572, -0.05017042, 0.0039873943, -0.12054504, 0.013673367, -0.0408491, 0.007396889, 0.06328966, -0.0016438005, -0.0025402955, -0.030455668]
-gra[5][7][14] = [-0.01984039, 0.02907966, -0.0645227, 0.006852205, 8.169799E-4, 7.0631783E-4, 0.10761113, 0.02086204, -0.0019475454, -0.0010469037, -0.06419305]
-gra[5][8][5] = [-0.15006886, -0.043024227, -0.18221274, -0.24092379, -0.30613858, -0.2420286]
-gra[5][8][6] = [-0.027445583, -0.0028103888, -9.990334E-6, -0.011606998, -0.0011211394, -0.0043171197]
-gra[5][8][7] = [0.02187673, -0.011981823, -0.044713516, -0.01446133, -6.4382935E-4, -0.008020589]
-gra[5][8][8] = [-0.15006886, -0.043024227, -0.18221274, -0.24092379, -0.30613858, -0.2420286]
-gra[5][8][9] = [0.14283398, -0.004218774, -0.02915368, -0.10358184, -0.04583137, -0.046073522]
-gra[5][8][10] = [-0.059828877, 0.10702966, -0.047661014, -0.025675789, -0.004103984, -0.017712904]
-gra[5][8][11] = [0.04556992, 0.039828476, -0.01777824, -0.10256919, -0.05208561, -0.022662342]
-gra[5][8][12] = [0.011777036, 0.052695084, -0.022096545, -0.0578719, -0.07426226, 0.0031176568]
-gra[5][8][13] = [0.0785182, 0.06357183, 0.021991728, -0.0694618, -0.09312223, -0.0033769957]
-gra[5][8][14] = [-0.13295905, 0.034005634, 0.0947871, 0.019163983, 0.020992978, -0.030493984]
-gra[5][9][5] = [-0.07170036, 0.019272119, -0.16129984, -0.2329402, -0.2908712, -0.2407713, -0.29643065, -0.23566912, -0.08985106, -0.10322386, -0.14251806]
-gra[5][9][6] = [-0.01328478, -0.012053755, -0.045736067, 2.3667912E-10, -0.030533638, -0.014287151, 0.0022069581, 0.0, -9.038228E-4, -0.0016083805, -0.0012626576]
-gra[5][9][7] = [-0.019936927, -0.030214485, 0.05159333, -0.057283472, -0.017923662, -0.01942112, 0.007643792, 0.031788614, -1.4217423E-4, -0.008607306, -0.01844468]
-gra[5][9][8] = [-0.011030057, -0.027001118, 0.0011033802, 0.06461177, 0.046004623, 0.027047869, -0.027326334, 0.019558845, 0.0, 0.005164899, -0.010124459]
-gra[5][9][9] = [-0.07170036, 0.019272119, -0.16129984, -0.2329402, -0.2908712, -0.2407713, -0.29643065, -0.23566912, -0.08985106, -0.10322386, -0.14251806]
-gra[5][9][10] = [-0.012130983, 0.09650746, -5.0354283E-4, -0.045503683, 0.059516188, -0.03834217, 0.020079736, 0.024341332, 0.0, 0.012700643, -0.0012901137]
-gra[5][9][11] = [-0.119648054, -0.01384846, 0.04832706, 0.025896091, 0.060369093, -0.09297593, 0.08557644, -0.030373264, -0.004067228, -0.004461341, -0.014482316]
-gra[5][9][12] = [-0.036913738, -0.049138326, 0.022125714, 0.024695782, -0.037646454, -0.089605995, 0.044949282, -0.00253291, -0.0051067895, -0.0025422391, -8.367696E-4]
-gra[5][9][13] = [0.021518111, -0.027040415, 0.12328279, -0.064629175, -0.067054525, -0.06710879, 0.04549039, -0.014242074, -0.0051067895, 0.0019419871, -0.054437894]
-gra[5][9][14] = [-0.03989376, 0.029656876, -0.10265121, 0.076463, 0.031381827, 0.060158834, 0.10159744, 0.017498635, 0.0, 0.0, -0.07941664]
-gra[5][10][5] = [-0.12892027, -0.07426171, -0.32791087, -0.3605089, -0.16736083, -0.13261594, -0.1688458]
-gra[5][10][6] = [-0.027445583, -0.012053756, -0.013764117, -0.0056555397, 0.0011308042, 0.001230255, -0.009876266]
-gra[5][10][7] = [-0.013693058, -0.014381591, -0.01446133, -0.029808905, -0.0033213743, 0.0016988069, -0.0173225]
-gra[5][10][8] = [0.023623126, -0.009956081, 0.033852994, -2.0788843E-4, 0.0, 0.0013890374, -0.0040250965]
-gra[5][10][9] = [0.1047408, 0.008987334, -0.0119619025, -0.02332857, 0.0, 0.009920094, -0.04130316]
-gra[5][10][10] = [-0.12892027, -0.07426171, -0.32791087, -0.3605089, -0.16736083, -0.13261594, -0.1688458]
-gra[5][10][11] = [-0.01158366, 0.10779621, -0.1138076, -0.04182522, -0.006525742, -0.1280925, 0.042965613]
-gra[5][10][12] = [-0.0075902045, 0.066431545, -0.075674996, -0.08584342, -0.008802207, -0.061089545, 0.05149115]
-gra[5][10][13] = [0.073679745, 0.08291984, -0.073259376, -0.11281013, -0.005011603, -0.08016144, 0.07080418]
-gra[5][10][14] = [-0.11542668, 0.009140518, 0.014653939, 0.090339206, -0.020985536, 0.0047443355, 0.023769205]
-gra[5][11][5] = [-0.14284168, -0.018787133, -0.047984466, -0.18922658, -0.18303105, -0.1274745, -0.3759831, -0.27147567, -0.08365657, -0.08589547, -0.1647439]
-gra[5][11][6] = [-0.014805781, -0.012053755, -0.046711966, -0.002071285, -0.029374257, -0.0122081535, 0.0022069581, 0.0, -9.038228E-4, -0.0016083805, -0.0012626576]
-gra[5][11][7] = [-0.020023625, -0.041020907, 0.07010135, -0.06491886, -0.01931781, -0.01942112, 0.0064100344, 0.007928713, -9.331816E-4, -0.010831846, -0.01761809]
-gra[5][11][8] = [-0.017691867, -0.028658904, 0.011943636, 0.03541307, 0.08073837, 0.033852994, -0.03048157, 0.042773336, -0.0017965699, 0.011501777, 0.013622059]
-gra[5][11][9] = [-0.04666806, -0.016674306, 0.25624982, -0.030828482, -0.0072772484, -0.021881483, 0.008733615, 0.017590906, 9.0512355E-12, -0.0077277506, -0.0013032085]
-gra[5][11][10] = [-0.0011052168, -0.06855495, 0.05807885, 0.00960215, 0.10751539, -0.09111658, -0.056654997, 0.088760085, 0.0024555703, 0.023591425, -0.0036736613]
-gra[5][11][11] = [-0.14284168, -0.018787133, -0.047984466, -0.18922658, -0.18303105, -0.1274745, -0.3759831, -0.27147567, -0.08365657, -0.08589547, -0.1647439]
-gra[5][11][12] = [-0.073813826, -0.034093127, 0.007619664, 0.017006135, 0.07177706, -0.019545313, 0.022726525, 0.028883155, -0.0016438005, -1.4816411E-4, 0.0416849]
-gra[5][11][13] = [-0.037224732, -0.05300902, 0.10214235, -0.069835186, 0.0072789937, -0.073929384, 0.006173106, 0.010641823, -0.0016438005, 0.0019335924, 0.0017031142]
-gra[5][11][14] = [0.02066849, 0.028218132, -0.09410041, 0.023164688, 0.006734378, 0.025349773, 0.14225875, 0.040411703, 0.0, 0.0, -0.09829482]
-gra[5][12][5] = [-0.16457172, -0.07235628, -0.17485441, -0.2873706, -0.24799576, -0.18931276, -0.32522708, -0.29654223, -0.098324604, -0.12002101, -0.2472647]
-gra[5][12][6] = [-0.01489676, -0.012053755, -0.043595865, 2.3667912E-10, -0.029923273, -0.0122081535, 0.0022069581, 0.0, -0.0046197325, -0.0016083805, -0.0012626576]
-gra[5][12][7] = [-0.020023625, -0.03978909, 0.05890319, -0.035973374, -0.0053524417, -0.021901015, 0.002915925, 0.0064832703, -1.4217423E-4, -0.008580568, -0.031687073]
-gra[5][12][8] = [-0.020402493, -0.024556305, 0.011465237, 0.06697061, 0.051806875, 0.033852994, -0.04555193, 0.05035637, 0.0, 0.0031901782, 0.0090892585]
-gra[5][12][9] = [-0.043960694, -0.013628973, 0.22863914, 0.009699177, 0.007473303, -0.029321171, 0.0063824966, 0.02541874, 9.0512355E-12, -0.005476473, -0.013007009]
-gra[5][12][10] = [0.010469224, -0.07017854, 0.05371337, 0.033642486, 0.085536815, -0.06386582, -0.0100628035, 0.1102625, 0.002381391, 0.011636256, -0.0048150206]
-gra[5][12][11] = [-0.05133958, 0.0011318253, 0.16840415, -0.03615002, -0.011675207, -0.02166985, 0.0032368335, 0.023991466, -0.001044167, -0.005476473, -0.0042543197]
-gra[5][12][12] = [-0.16457172, -0.07235628, -0.17485441, -0.2873706, -0.24799576, -0.18931276, -0.32522708, -0.29654223, -0.098324604, -0.12002101, -0.2472647]
-gra[5][12][13] = [0.085241884, -0.03815415, 0.105614424, -0.055080954, -0.037031293, -0.061788075, -0.008844467, 0.049758192, -0.0016438005, 5.143347E-4, 0.013154621]
-gra[5][12][14] = [0.020365266, 0.026918562, -0.06142708, 0.032912422, 0.021977, 0.03366942, 0.12786776, 0.020360775, 0.0, -2.2505768E-11, -0.06410605]
-gra[5][13][5] = [-0.16533595, 0.017322127, -0.1377736, -0.26910052, -0.19452605, -0.25970653, -0.28648722, -0.24817653, -0.10658293, -0.12036938, -0.2446399]
-gra[5][13][6] = [-0.012411703, -0.012053755, -0.046711966, 2.3667912E-10, -0.029374257, -0.0122081535, 0.0022069581, 0.0, -9.038228E-4, -0.0016083805, -0.0012626576]
-gra[5][13][7] = [-0.017703082, -0.041311763, 0.0707682, -0.013973404, -0.014769816, -0.021901015, 0.006510945, 0.014144414, -1.4217423E-4, -0.008607306, -0.024563886]
-gra[5][13][8] = [-0.017435485, -0.025563205, 0.008843945, 0.07489865, 0.07925679, 0.033852994, -0.050028473, 0.046572696, 0.0019757631, 0.005164899, -0.020037295]
-gra[5][13][9] = [-0.039976742, -0.015151639, 0.24381188, 0.034272306, -0.0019440728, -0.029321171, 0.009977517, 0.028152797, 9.0512355E-12, -0.0077277506, -0.0016536638]
-gra[5][13][10] = [0.008696433, -0.06829155, 0.008876181, 0.018096564, 0.07408771, -0.066966124, 0.028660584, 0.10250744, 0.002381391, 0.015515008, 0.016775005]
-gra[5][13][11] = [-0.052093625, -0.0051658917, 0.1951475, -0.0031919498, -0.027498253, -0.01738065, 0.0056135817, 0.030979762, -0.001044167, -0.0077277506, 0.007776879]
-gra[5][13][12] = [-0.033426333, -0.02074841, 0.17519033, 0.03881295, 0.0033648005, -0.026860807, 0.009749667, 0.03448535, -1.4217423E-4, -0.007257821, -0.008489365]
-gra[5][13][13] = [-0.16533595, 0.017322127, -0.1377736, -0.26910052, -0.19452605, -0.25970653, -0.28648722, -0.24817653, -0.10658293, -0.12036938, -0.2446399]
-gra[5][13][14] = [-0.019099027, 0.036265306, -0.13302729, 0.02993108, -0.0021256413, 0.0184861, 0.093215674, 0.011856999, 0.0, -0.0013691243, -0.067090854]
-gra[5][14][5] = [0.33870053, -0.42374685, -0.3081823, 0.04381322, -0.23774712, -0.11392724, -0.18393855, -0.16892108]
-gra[5][14][6] = [-0.056123417, -0.037392512, -0.004025396, -0.012053755, 0.022590073, -9.038228E-4, -0.031871308, -0.011606998]
-gra[5][14][7] = [-0.046599343, 0.032219093, -0.027094513, -0.0021684086, -0.03156339, -0.0048348545, -0.00827829, -0.03576694]
-gra[5][14][8] = [-0.0027976157, 0.07085788, 0.1306876, -0.014299808, -0.011449244, 0.008354038, -0.0040250965, 0.030145828]
-gra[5][14][9] = [-0.03965546, 0.18231188, 0.047296464, 0.024048371, -0.01859632, -0.0048348554, -0.033582807, -0.033222895]
-gra[5][14][10] = [-0.017961588, 0.10513146, 0.0032471213, -0.06398133, -0.012447634, 0.0, -0.0071987854, -0.005879982]
-gra[5][14][11] = [-0.043990437, 0.12674975, 0.055096857, 0.030480476, -0.02856384, -0.005879022, -0.036173504, -0.038219962]
-gra[5][14][12] = [-0.05016438, 0.108244374, 0.058410615, 0.018608809, -0.027041396, -0.008058093, -0.01678615, -0.03576694]
-gra[5][14][13] = [-0.042344883, 0.11877477, 0.030920394, 0.02512398, -0.026047245, -0.008058093, -0.0131179225, -0.02687248]
-gra[5][14][14] = [0.33870053, -0.42374685, -0.3081823, 0.04381322, -0.23774712, -0.11392724, -0.18393855, -0.16892108]
-gra[6][0][0] = [-0.0520868]
-gra[6][0][1] = [0.020259421]
-gra[6][0][2] = [0.061750766]
-gra[6][0][3] = [-0.049322076]
-gra[6][0][4] = [-0.047721907]
-gra[6][0][5] = [-0.02267837]
-gra[6][0][6] = [-0.0520868]
-gra[6][1][0] = [0.0031002467, 0.0, -0.002491934, 0.0]
-gra[6][1][1] = [0.049295496, -0.096181266, -0.3106086, -0.1417824]
-gra[6][1][2] = [0.1821127, 0.016802724, -0.02820033, -0.035232577]
-gra[6][1][3] = [0.029964954, -0.06578781, -0.049592726, -0.023792237]
-gra[6][1][4] = [0.04059021, -0.05346136, -0.05182021, -0.021564748]
-gra[6][1][5] = [0.062091388, 0.0072983084, -0.04054499, -0.023792237]
-gra[6][1][6] = [0.049295496, -0.096181266, -0.3106086, -0.1417824]
-gra[6][2][0] = [0.0048480295, -0.00452922, 0.0, 0.0014561015, -0.0013292956, 0.0027307644]
-gra[6][2][1] = [-0.13200061, -0.03380664, 0.054160275, 0.049062416, 7.308892E-4, -0.0031911298]
-gra[6][2][2] = [-0.35208467, -0.16831768, -0.22614019, -0.12026106, -0.290771, -0.13263008]
-gra[6][2][3] = [0.120697245, -0.035563417, -0.021171255, -0.08613308, -0.022132695, 0.012480451]
-gra[6][2][4] = [0.16963743, -0.002057733, -0.026586981, -0.09008388, -0.027917873, 0.029292444]
-gra[6][2][5] = [0.23159663, 7.6528685E-4, -0.022216301, -0.07861159, -0.0074495035, 0.020050207]
-gra[6][2][6] = [-0.35208467, -0.16831768, -0.22614019, -0.12026106, -0.290771, -0.13263008]
-gra[6][3][0] = [-0.0012814738, 0.0, -3.050395E-11, 5.5769994E-4, -0.0013292956, 2.8228876E-4]
-gra[6][3][1] = [-0.1598347, -0.05478049, 0.10485771, 0.037768897, -0.026972052, -0.009370182]
-gra[6][3][2] = [-0.023424674, -0.027183225, 0.041496, 0.06436883, -0.009571605, 0.040809743]
-gra[6][3][3] = [0.0011476716, -0.26414952, -0.35945618, -0.20510413, -0.24622552, -0.16895914]
-gra[6][3][4] = [0.23088562, -0.036115717, -0.023082443, -0.042083472, -0.052124094, 0.017406179]
-gra[6][3][5] = [0.31934902, 3.0982628E-4, -0.020309359, -0.035055503, -0.033990495, 0.018293062]
-gra[6][3][6] = [0.0011476716, -0.26414952, -0.35945618, -0.20510413, -0.24622552, -0.16895914]
-gra[6][4][0] = [0.0012428539, 0.0, -3.050395E-11, 0.0030820277, -0.0013292956, 0.0027307644]
-gra[6][4][1] = [-0.1598347, -0.05478049, 0.10485771, 0.037768897, -0.026972052, -0.009370182]
-gra[6][4][2] = [-0.043183934, -0.02951909, 0.044765297, 0.046928365, -0.009571605, 0.03985618]
-gra[6][4][3] = [0.0027969033, -0.023397336, 0.03161981, -0.034741208, -0.0065214084, 0.076208204]
-gra[6][4][4] = [-0.012960361, -0.26414952, -0.35635012, -0.20510413, -0.23996602, -0.16895914]
-gra[6][4][5] = [0.26218465, -0.026485048, -0.018711757, -0.03359469, -0.03442338, 0.013655335]
-gra[6][4][6] = [-0.012960361, -0.26414952, -0.35635012, -0.20510413, -0.23996602, -0.16895914]
-gra[6][5][0] = [-0.0017187535, 0.0, -3.050395E-11, 0.0030820277, -0.0013292956, 0.0027307644]
-gra[6][5][1] = [-0.10557446, -0.04316245, 0.10485771, 0.029551987, -0.022230003, -0.009370182]
-gra[6][5][2] = [-0.054362144, -0.024124099, 0.034623988, 0.03486527, -0.009571605, 0.040809743]
-gra[6][5][3] = [-0.02192422, -0.02033821, 0.024495622, -0.034176692, -0.0065214084, 0.077751495]
-gra[6][5][4] = [-7.854495E-5, -0.018002346, 0.024495622, -0.03897927, -0.0065214084, 0.077751495]
-gra[6][5][5] = [0.080813274, -0.19254147, -0.32115835, -0.19457859, -0.2488755, -0.1573673]
-gra[6][5][6] = [0.080813274, -0.19254147, -0.32115835, -0.19457859, -0.2488755, -0.1573673]
-gra[6][7][6] = [-0.27941313, 0.13089189, -0.022864778, -0.1894565, -0.24034312, -0.14318681]
-gra[6][7][7] = [-0.27941313, 0.13089189, -0.022864778, -0.1894565, -0.24034312, -0.14318681]
-gra[6][7][8] = [0.13626447, -0.010419474, 0.11848972, -0.0025080154, -0.054712977, -0.015601757]
-gra[6][7][9] = [0.05903992, 0.10894001, 0.07556343, -0.13363816, 0.010766433, 0.02050259]
-gra[6][7][10] = [-0.060981005, 0.036591463, -0.052527767, -0.09514893, 0.08080975, 0.015361834]
-gra[6][7][11] = [0.081102386, 0.14399157, 0.0072408943, -0.10286424, 0.11418423, 0.03336997]
-gra[6][7][12] = [0.0667256, 0.11857207, 0.15086734, -0.070225924, 0.08513642, 0.0020601233]
-gra[6][7][13] = [0.043629616, 0.08298377, 0.14208359, -0.058361705, 0.09083914, 4.4306018E-4]
-gra[6][7][14] = [0.042588964, 0.014345749, 0.010220808, -0.027615786, 0.028633617, 0.092909016]
-gra[6][8][6] = [-0.06964812, -0.019270714, -0.29129454, -0.1736677]
-gra[6][8][7] = [6.975997E-4, -0.07367525, 0.03137342, 0.0]
-gra[6][8][8] = [-0.06964812, -0.019270714, -0.29129454, -0.1736677]
-gra[6][8][9] = [0.0038991189, 0.2681948, 0.018138103, -0.046538807]
-gra[6][8][10] = [0.014519747, -0.070914745, 0.060340714, -0.020789059]
-gra[6][8][11] = [-4.2284792E-4, 0.23502588, 0.05704205, -0.039293878]
-gra[6][8][12] = [-0.0044890544, 0.32156876, 0.055704113, -0.03788216]
-gra[6][8][13] = [0.010043448, 0.362284, 0.05945589, -0.05903426]
-gra[6][8][14] = [-0.057631012, 0.086892076, -0.053914443, -0.0020066085]
-gra[6][9][6] = [-0.23794961, -0.17617488, -0.119824715, -0.13024254, -0.25661156, -0.121382065]
-gra[6][9][7] = [-0.08579465, 0.037450098, 0.015798284, 0.025958829, 0.0491146, -0.0017362321]
-gra[6][9][8] = [-0.07514248, 0.080687106, 0.023700405, -0.053454973, -0.02913708, 0.0046982104]
-gra[6][9][9] = [-0.23794961, -0.17617488, -0.119824715, -0.13024254, -0.25661156, -0.121382065]
-gra[6][9][10] = [-0.032659143, 0.065354556, 0.035408407, 0.034957655, 0.073601834, 0.017471122]
-gra[6][9][11] = [0.16451277, 0.1343211, -0.028546996, 0.022039177, 0.1550293, 0.03785225]
-gra[6][9][12] = [0.1499453, 0.042843826, 0.050664313, 0.025564509, 0.121892266, 0.0065424056]
-gra[6][9][13] = [0.116907224, 0.0015404057, 0.07024962, 0.07451293, 0.1282733, 0.0049253437]
-gra[6][9][14] = [-0.027205631, 0.034512695, 0.0068574054, -0.052349146, 0.022619942, 0.09395592]
-gra[6][10][6] = [-0.15888286, -0.3138391, -0.20539969, -0.090248756, -0.13080679, -0.21882577]
-gra[6][10][7] = [0.039945565, 0.020518731, -0.045851756, -0.016429346, -0.019353565, -0.058723222]
-gra[6][10][8] = [0.02214892, 0.031443782, -0.05955004, -0.0027019721, -0.019615663, 0.084891655]
-gra[6][10][9] = [0.015036379, 0.024928685, -0.058278434, -0.050845973, -0.022102375, -0.06784104]
-gra[6][10][10] = [-0.15888286, -0.3138391, -0.20539969, -0.090248756, -0.13080679, -0.21882577]
-gra[6][10][11] = [0.013768813, 0.01700349, 0.062490392, -0.028850764, -0.014016453, 0.2212303]
-gra[6][10][12] = [0.036062263, 0.08016446, 0.077293545, 0.04093059, -0.0024978905, 0.21134187]
-gra[6][10][13] = [0.016277056, 0.100216605, 0.06005934, 0.06515343, 0.026563412, 0.18100214]
-gra[6][10][14] = [0.008751316, -0.048622817, -0.042715497, -0.01140897, -0.02455731, 0.062376864]
-gra[6][11][6] = [-0.2685444, -0.0683347, -0.15563123, -0.016927153, -0.336164, -0.104053676]
-gra[6][11][7] = [-0.078098536, 0.036055945, -0.008061613, 0.04446686, 0.047880843, -0.0017362321]
-gra[6][11][8] = [-0.10716042, 0.12169289, 0.056964055, -0.02944395, -0.037702125, 0.011035088]
-gra[6][11][9] = [-0.042997826, 0.043761387, -0.040120546, 0.10305196, 0.06304089, 0.002002405]
-gra[6][11][10] = [0.053359248, 0.15490454, 0.15116541, 0.13195065, -0.109551705, 0.041787107]
-gra[6][11][11] = [-0.2685444, -0.0683347, -0.15563123, -0.016927153, -0.336164, -0.104053676]
-gra[6][11][12] = [0.066963956, 0.15725373, 0.06591427, -0.006932204, 0.09140407, 0.008936482]
-gra[6][11][13] = [0.13743879, 0.07587393, 0.09513351, 0.053372484, 0.088956, 0.0049169487]
-gra[6][11][14] = [0.008520744, 0.009865254, 0.029770477, -0.043798335, 0.06328126, 0.09395592]
-gra[6][12][6] = [-0.27087486, -0.13329938, -0.18069777, -0.14379713, -0.28540802, -0.13817921]
-gra[6][12][7] = [-0.091557376, 0.050021313, -0.009507055, 0.033268698, 0.044386722, 5.1504583E-4]
-gra[6][12][8] = [-0.1065508, 0.0927614, 0.0645471, -0.029922348, -0.052772477, 0.0027234897]
-gra[6][12][9] = [-0.06354022, 0.058511935, -0.03229271, 0.07544131, 0.060689773, 0.0042536827]
-gra[6][12][10] = [0.070965834, 0.124543056, 0.1796476, 0.14080608, -0.06596581, 0.029831933]
-gra[6][12][11] = [-0.05151954, 0.032910287, 0.03701201, 0.07359792, 0.054370165, 0.002251278]
-gra[6][12][12] = [-0.27087486, -0.13329938, -0.18069777, -0.14379713, -0.28540802, -0.13817921]
-gra[6][12][13] = [-0.0059878826, 0.036550015, 0.11808377, 0.038853873, 0.06567299, 0.0034976904]
-gra[6][12][14] = [0.0017822781, 0.025107872, 0.009719546, -0.011125006, 0.04889026, 0.09395592]
-gra[6][13][6] = [-0.22575764, -0.07982966, -0.13233209, -0.10671632, -0.24666817, -0.13852759]
-gra[6][13][7] = [-0.09758964, 0.040603936, -0.0018459143, 0.045133702, 0.047981754, -0.0017362321]
-gra[6][13][8] = [-0.09510926, 0.1202113, 0.060763415, -0.032543637, -0.05724903, 0.0046982104]
-gra[6][13][9] = [-0.0669956, 0.049094565, -0.029558651, 0.090614036, 0.064284794, 0.002002405]
-gra[6][13][10] = [0.07920076, 0.11309396, 0.17189252, 0.09596887, -0.027242426, 0.033710685]
-gra[6][13][11] = [-0.058955528, 0.018443067, 0.027779505, 0.08748881, 0.06905725, 8.713861E-11]
-gra[6][13][12] = [-0.101597026, 0.01910264, 0.020095045, 0.07021575, 0.054787323, 4.699302E-4]
-gra[6][13][13] = [-0.22575764, -0.07982966, -0.13233209, -0.10671632, -0.24666817, -0.13852759]
-gra[6][13][14] = [-0.006698521, -0.012949264, -0.010005177, -0.06663247, 0.011589371, 0.08487903]
-gra[6][14][6] = [0.45508236, -0.21231659, -0.25286, -0.33567595, -0.13115937, -0.14486317, -0.18183614, -0.22559977, -0.24659869, -0.08959103, -0.100985184]
-gra[6][14][7] = [-0.04559906, 0.06038591, 0.027435044, 0.004346365, 0.014812058, 0.0385217, -0.06002618, -0.038745835, 0.20625146, -0.011164435, 0.0065670083]
-gra[6][14][8] = [-0.0015442646, -0.0227673, -0.08524036, 0.063609034, 0.0050346516, 0.0035762223, 0.23346017, -0.0061080162, 0.021447917, 0.005901302, -0.0037276738]
-gra[6][14][9] = [-0.038655173, 0.08559073, 0.011954381, 0.026875805, -0.010552221, 0.011435814, -0.00301829, -0.01681796, 0.1082497, -0.011164436, 0.0051845433]
-gra[6][14][10] = [-0.024287913, 0.027374256, 0.0133876195, 0.12225391, -0.0051552514, 0.041741583, -0.03067777, 0.014676357, 0.04385982, 0.0, 0.013415361]
-gra[6][14][11] = [-0.04299015, 0.08978732, 0.060956437, 0.01685282, 0.020332731, 0.07663676, -0.0086626075, -0.025221316, 0.09362389, -0.011164436, 0.006370598]
-gra[6][14][12] = [-0.049164087, 0.08459338, 0.0136726005, -0.011820925, 0.010157926, 0.03883238, -0.01981043, -0.039680198, 0.103250325, -0.014387673, 0.006370598]
-gra[6][14][13] = [-0.041344598, 0.07045057, -0.026481139, 0.0137648545, 0.008764668, 0.033259735, -0.0365325, -0.03504498, 0.0953349, -0.014387673, 0.006370598]
-gra[6][14][14] = [0.45508236, -0.21231659, -0.25286, -0.33567595, -0.13115937, -0.14486317, -0.18183614, -0.22559977, -0.24659869, -0.08959103, -0.100985184]
-gra[7][0][0] = [-0.09400473]
-gra[7][0][1] = [0.063014895]
-gra[7][0][2] = [0.008203407]
-gra[7][0][3] = [0.04336482]
-gra[7][0][4] = [0.04336482]
-gra[7][0][5] = [0.045217585]
-gra[7][0][6] = [-0.012236582]
-gra[7][0][7] = [-0.09400473]
-gra[7][1][0] = [0.0022879262, -0.001958814, 0.002719991, 4.4457944E-11, -0.0021720084, 9.538276E-4]
-gra[7][1][1] = [-0.080664985, -0.1498559, -0.1748334, -0.16505879, -0.15219411, -0.13811535]
-gra[7][1][2] = [0.09982281, -0.042137515, 0.039627425, -0.020901661, -0.008630434, -0.04557295]
-gra[7][1][3] = [0.09390932, -0.037475146, -0.0055839457, -0.019397447, -0.009961956, -0.06605266]
-gra[7][1][4] = [0.10293442, -0.037475146, 0.0012364213, -0.019397447, -0.009961956, -0.06607746]
-gra[7][1][5] = [0.08429182, -0.027172701, 0.036659725, -0.019397447, -0.009961956, -0.05051318]
-gra[7][1][6] = [-0.012236582, 8.6579437E-4, 0.0038837004, -0.016195, 0.002059937, -0.003209465]
-gra[7][1][7] = [-0.080664985, -0.1498559, -0.1748334, -0.16505879, -0.15219411, -0.13811535]
-gra[7][2][0] = [-3.8481143E-5, 0.0, 6.4378075E-4, 0.006364585, -0.00452922, 0.0031306578, 3.69985E-4, 0.0, 0.0012653338, 0.0015309223, -0.008016303]
-gra[7][2][1] = [4.5733654E-4, -3.7906157E-11, -0.0498366, -0.0041412255, -0.02294093, -0.0067321556, -0.014439816, 0.034137405, 0.0019214812, 0.0035228117, -0.034932088]
-gra[7][2][2] = [-0.16109464, -0.1522247, -0.15308808, -0.14182311, -0.24778378, -0.14608057, -0.2882911, -0.2643619, -0.17109688, -0.10580697, -0.18639117]
-gra[7][2][3] = [-0.0130428625, -0.0263843, 0.008692514, -0.008148272, -0.02118981, 0.0, 0.0043394, -0.009604603, -0.0094120335, -0.0052225264, -0.1345021]
-gra[7][2][4] = [-0.01706918, -0.02848946, 0.0072037163, -0.0035270967, -0.0015978473, -0.0016386209, 7.817097E-4, -0.0126001, -0.0094120335, 0.003701211, -0.16767177]
-gra[7][2][5] = [-0.010582655, -0.024485687, -0.010048743, -0.0019876226, 0.008764084, 0.0, 0.01246951, -0.01570706, -0.010316748, -0.0013686286, -0.14882436]
-gra[7][2][6] = [0.019011011, -0.0020981468, -0.043214638, -0.003755305, 0.019529367, -0.015389417, -0.012197308, -0.015615815, 0.0, 0.0, -0.08651045]
-gra[7][2][7] = [-0.16109464, -0.1522247, -0.15308808, -0.14182311, -0.24778378, -0.14608057, -0.2882911, -0.2643619, -0.17109688, -0.10580697, -0.18639117]
-gra[7][3][0] = [-3.8481143E-5, 0.0, -2.546209E-4, 0.002719991, 0.0, 0.0031306578, 3.69985E-4, -3.050395E-11, 0.0012653338, -9.175534E-4, -0.0059786467]
-gra[7][3][1] = [4.5733654E-4, 0.0, -0.06010697, -0.010353064, -0.04391478, -0.012589575, -0.048092224, 0.078652866, 0.0019214812, 0.0, -0.08094852]
-gra[7][3][2] = [-0.00847032, -0.013719019, -0.057563722, 0.0, -0.028270295, -0.0064118747, -0.009571605, 0.0045674103, 0.0011093304, 0.00255187, -0.045079764]
-gra[7][3][3] = [-0.16554235, -0.19184113, -0.23793115, -0.19770847, -0.34361568, -0.16543038, -0.24374564, -0.39767784, -0.17093313, -0.14213605, -0.19553113]
-gra[7][3][4] = [-0.016108312, -0.0263843, 0.05114194, 8.307928E-4, -0.030055411, -0.0016386209, -0.023424516, -0.009095556, -0.01243171, -0.0031257737, 0.04524743]
-gra[7][3][5] = [-0.010582655, -0.024485687, 0.03350733, 0.0044725235, 0.008308632, 0.0, -0.014071485, -0.013800123, -0.014241234, -0.0031257737, 0.048553314]
-gra[7][3][6] = [0.0072282003, 0.0, -0.03128368, 0.0, 0.014126777, -0.01838149, -0.006137472, -0.010240156, 0.0017409262, 3.0340515E-11, -0.06437046]
-gra[7][3][7] = [-0.16554235, -0.19184113, -0.23793115, -0.19770847, -0.34361568, -0.16543038, -0.24374564, -0.39767784, -0.17093313, -0.14213605, -0.19553113]
-gra[7][4][0] = [-3.8481143E-5, 0.0, 0.002269707, 0.002719991, 0.0, 0.0031306578, 3.69985E-4, -3.050395E-11, 0.0012653338, 0.0015309223, -0.0059786467]
-gra[7][4][1] = [4.5733654E-4, 0.0, -0.06010697, -0.010353064, -0.04391478, -0.012589575, -0.048092224, 0.078652866, 0.0019214812, 0.0, -0.08094852]
-gra[7][4][2] = [-0.008470321, -0.013719019, -0.07689501, 0.0, -0.03060616, -0.0108750155, -0.009571605, 0.007836706, 0.001859782, 0.0015983053, -0.049368795]
-gra[7][4][3] = [-0.012485486, -0.012182354, -0.09273422, 0.0, -0.022421567, -0.004148566, -0.0065214084, -2.5217576E-4, -0.0036188248, 0.0010085813, -0.038101066]
-gra[7][4][4] = [-0.16332567, -0.19417033, -0.23793115, -0.19770847, -0.34361568, -0.16543038, -0.23748614, -0.39457178, -0.17093313, -0.14213605, -0.23766032]
-gra[7][4][5] = [-0.010582655, -0.022380527, 0.03301778, 0.0023702672, -0.012885826, -0.0030399878, -0.014504371, -0.012202517, -0.012083008, -0.004008526, 0.06235572]
-gra[7][4][6] = [0.008184545, -0.0015748128, -0.03128368, -0.0013104129, 0.014126777, -0.01838149, -0.006137472, -0.010240156, 0.0, -0.0012154061, -0.066418]
-gra[7][4][7] = [-0.16332567, -0.19417033, -0.23793115, -0.19770847, -0.34361568, -0.16543038, -0.23748614, -0.39457178, -0.17093313, -0.14213605, -0.23766032]
-gra[7][5][0] = [-3.8481143E-5, -0.0019296022, 0.002269707, 0.0013423589, 0.0, -0.0023391629, 3.6998512E-4, -3.050395E-11, 0.0012653338, 0.0015309223, -0.0059786467]
-gra[7][5][1] = [4.5733654E-4, 0.0, -0.06681095, -0.010353064, -0.035776734, -0.012589575, -0.043350175, 0.078652866, 0.0019214812, 0.0, -0.09211975]
-gra[7][5][2] = [-0.00847032, -0.013719019, -0.07761786, 0.0, -0.02521117, -0.0108750155, -0.009571605, 0.004819586, 0.0011093304, 0.00255187, -0.04139789]
-gra[7][5][3] = [-0.012507373, -0.011716097, -0.08894238, 0.0, -0.019362442, -0.008611707, -0.0065214084, -2.5217576E-4, -0.0036188248, 0.00255187, -0.034885447]
-gra[7][5][4] = [-0.010043007, -0.013198066, -0.094590135, 0.0, -0.017026579, -0.0027493846, -0.0065214084, 0.0022252216, -0.0036188248, 0.00255187, -0.03168124]
-gra[7][5][5] = [-0.16332567, -0.18746553, -0.25135505, -0.16596697, -0.28105557, -0.16543038, -0.2368377, -0.3664208, -0.17093313, -0.14213605, -0.2239882]
-gra[7][5][6] = [0.0075485897, 0.0, -0.030092647, 0.0, 0.014126777, -0.01838149, -0.0035625359, -0.013210811, 0.0011668268, 3.0340515E-11, -0.062408306]
-gra[7][5][7] = [-0.16332567, -0.18746553, -0.25135505, -0.16596697, -0.28105557, -0.16543038, -0.2368377, -0.3664208, -0.17093313, -0.14213605, -0.2239882]
-gra[7][6][0] = [6.4378075E-4, 0.0]
-gra[7][6][1] = [-0.060440436, 0.026094327]
-gra[7][6][2] = [-0.08302259, 0.0]
-gra[7][6][3] = [-0.09992734, 0.0026769685]
-gra[7][6][4] = [-0.09992734, 0.0]
-gra[7][6][5] = [-0.113697976, -0.0012286699]
-gra[7][6][6] = [-0.31237385, -0.23130569]
-gra[7][6][7] = [-0.31237385, -0.23130569]
-gra[7][8][7] = [-0.14233668, -0.14756092, -0.044601977, -0.18925315, -0.2837601, -0.16813198]
-gra[7][8][8] = [-0.14233668, -0.14756092, -0.044601977, -0.18925315, -0.2837601, -0.16813198]
-gra[7][8][9] = [0.116245195, -0.0227675, 0.1501364, -0.08012412, -0.035148308, -0.009997491]
-gra[7][8][10] = [0.025993222, 0.049919903, -0.08549047, -0.025898118, -3.6705425E-4, -0.011883774]
-gra[7][8][11] = [0.14915608, -0.0051115504, 0.11367791, -0.048788004, -0.05031695, 0.022126378]
-gra[7][8][12] = [0.10679064, 0.04075294, 0.069916554, -0.023135131, -0.055469196, 0.03254832]
-gra[7][8][13] = [0.10665981, 0.07543501, 0.16509528, -0.02731902, -0.0676342, 0.038390566]
-gra[7][8][14] = [-0.18697277, 0.012405168, 0.06522049, 0.019131955, 0.020992978, -0.030493984]
-gra[7][9][7] = [-0.11762953, -0.14489782, -0.20298205, -0.19647896, -0.34765953, -0.2502451, -0.2935088, -0.25860205, -0.09332765, -0.09703251, -0.110088095]
-gra[7][9][8] = [-0.011532839, -0.024351576, -0.023128346, 0.040395692, 0.054172352, 0.027047869, -0.023652218, 0.01099829, 0.0, 0.005164899, -0.012177394]
-gra[7][9][9] = [-0.11762953, -0.14489782, -0.20298205, -0.19647896, -0.34765953, -0.2502451, -0.2935088, -0.25860205, -0.09332765, -0.09703251, -0.110088095]
-gra[7][9][10] = [-0.0053148326, 0.032591105, 0.08589532, -0.065572426, 0.057028472, -0.0385645, 0.021282855, 0.01835112, 0.0, 0.012099067, 0.008352403]
-gra[7][9][11] = [-0.050017238, -0.052683227, 0.12402754, 0.11143928, 0.06660414, -0.053028144, 0.09611938, -0.04782975, -0.004067228, 8.262127E-4, 0.008645253]
-gra[7][9][12] = [-0.015160622, -0.05497521, 0.054767463, 0.08498106, -0.030994065, -0.06664673, 0.04961324, -0.023644354, -3.876005E-4, 8.262127E-4, 0.011072626]
-gra[7][9][13] = [0.047767337, -0.014375355, 0.10950356, 0.052034695, -0.058833968, -0.04414952, 0.05015435, -0.03535352, -0.0051067895, 8.262127E-4, -0.043190517]
-gra[7][9][14] = [-0.008160759, 0.005809472, -0.15416811, 0.05876962, 0.024954624, 0.059738718, 0.1186391, 0.017498635, 0.0, 0.001237925, -0.07941664]
-gra[7][10][7] = [-0.17060247, -0.23843166, -0.33738467, -0.32404765, -0.16877839, -0.100185975, -0.21477497]
-gra[7][10][8] = [0.0033476613, -0.0073065395, 0.033852994, -0.02442397, 0.0, -6.638963E-4, -0.006660041]
-gra[7][10][9] = [0.055700943, 0.047137737, -0.008807744, 0.04429596, 2.5751462E-4, 0.0040959795, 0.004527896]
-gra[7][10][10] = [-0.17060247, -0.23843166, -0.33738467, -0.32404765, -0.16877839, -0.100185975, -0.21477497]
-gra[7][10][11] = [0.027160797, 0.06803705, -0.07385983, 0.052746348, -0.007360163, -0.10496495, 0.093874976]
-gra[7][10][12] = [0.025051562, 0.060594648, -0.05271573, -0.025558125, 7.2789623E-4, -0.04918014, 0.07324426]
-gra[7][10][13] = [0.059900522, 0.09558491, -0.050300118, 0.003853741, 0.002008081, -0.06891406, 0.09705341]
-gra[7][10][14] = [-0.1669436, -0.014706884, 0.014233817, 0.07264586, -0.01725235, 0.0047443355, 0.05550222]
-gra[7][11][7] = [-0.18877086, -0.18295705, -0.089666635, -0.15276533, -0.23981941, -0.1369483, -0.37306124, -0.29440862, -0.08713316, -0.07970412, -0.1323139]
-gra[7][11][8] = [-0.016062489, -0.026009362, -0.008331828, 0.011196983, 0.08981819, 0.033852994, -0.026807453, 0.03652016, -0.0017965699, 0.011501777, 0.011569124]
-gra[7][11][9] = [-8.3700445E-4, 0.018604184, 0.197153, 0.039537385, 0.004949229, -0.018727323, 0.0107252635, 0.014077867, -0.0137060415, -0.018733032, -0.007127323]
-gra[7][11][10] = [-0.0037351365, -0.039604805, 0.08834917, 0.047203198, 0.09250858, -0.09111658, -0.058497563, 0.08510176, 0.0024555703, 0.023591425, -0.0023401042]
-gra[7][11][11] = [-0.18877086, -0.18295705, -0.089666635, -0.15276533, -0.23981941, -0.1369483, -0.37306124, -0.29440862, -0.08713316, -0.07970412, -0.1323139]
-gra[7][11][12] = [-0.051172394, -0.043835588, 0.05621762, 0.074865945, 0.07842945, 0.0034139452, 0.027390484, 0.007771712, 0.0030753883, 0.0032202876, 0.0535943]
-gra[7][11][13] = [-0.010975514, -0.040343948, 0.0883631, 0.046828676, 0.015499551, -0.050970126, 0.010837065, -0.01046962, -0.0016438005, 8.178175E-4, 0.01295049]
-gra[7][11][14] = [0.052401498, 0.0043707276, -0.14561729, 0.0054713218, 3.071786E-4, 0.024929654, 0.15930042, 0.040411703, 0.0, 0.001237925, -0.09829482]
-gra[7][12][7] = [-0.21050091, -0.23652624, -0.21653661, -0.25090933, -0.3047841, -0.19878656, -0.32230523, -0.31947517, -0.10180121, -0.11382966, -0.21483472]
-gra[7][12][8] = [-0.018773116, -0.021906763, -0.008810226, 0.042754523, 0.061202444, 0.033852994, -0.041877814, 0.04072256, 0.0, 0.0031901782, 0.0070363255]
-gra[7][12][9] = [0.0018703595, 0.021649519, 0.16954234, 0.08006504, 0.019699778, -0.026167009, 0.008374144, 0.021905703, -0.0137060415, -0.016481753, -0.018831125]
-gra[7][12][10] = [0.010217155, -0.0412284, 0.0839837, 0.071243525, 0.07052999, -0.06651417, -0.011905368, 0.106604174, 0.002381391, 0.011636256, -0.0034814635]
-gra[7][12][11] = [-0.010060661, 0.023870783, 0.18013962, 0.027321486, -0.025711982, -0.018515691, 0.0052284813, 0.023991466, 7.689154E-4, -0.0016940457, -0.0042543197]
-gra[7][12][12] = [-0.21050091, -0.23652624, -0.21653661, -0.25090933, -0.3047841, -0.19878656, -0.32230523, -0.31947517, -0.10180121, -0.11382966, -0.21483472]
-gra[7][12][13] = [0.11237939, -0.029394656, 0.10779137, 0.059157457, -0.028810736, -0.038828816, -0.0041805073, 0.028646749, -0.0016438005, -6.0143974E-4, 0.024401996]
-gra[7][12][14] = [0.05209828, 0.00307116, -0.11294398, 0.015219055, 0.015549801, 0.0332493, 0.14490941, 0.020360775, 0.0, 0.001237925, -0.06410605]
-gra[7][13][7] = [-0.21126512, -0.14684778, -0.17945582, -0.23263925, -0.2513144, -0.26918033, -0.28356537, -0.27110946, -0.11005954, -0.11417803, -0.21220993]
-gra[7][13][8] = [-0.017938271, -0.022913663, -0.011431517, 0.05068257, 0.09294045, 0.033852994, -0.046354357, 0.039811414, 0.0019757631, 0.005164899, -0.022090228]
-gra[7][13][9] = [0.0058543156, 0.020126855, 0.18471506, 0.104638174, 0.010282405, -0.026167009, 0.011969165, 0.024639761, -0.0137060415, -0.018733032, -0.0074777785]
-gra[7][13][10] = [0.008444371, -0.039341405, 0.039146483, 0.055697598, 0.059080895, -0.06961448, 0.026818028, 0.09884912, 0.002381391, 0.015515008, 0.018108562]
-gra[7][13][11] = [-0.010814704, 0.019341925, 0.2075875, 0.06027955, -0.041535035, -0.014226491, 0.0076052295, 0.030979762, 7.689154E-4, -0.0039453236, 0.007776879]
-gra[7][13][12] = [0.024077337, -0.012258323, 0.17245317, 0.1343428, -0.014438946, -0.026206074, 0.008978962, 0.03448535, 0.0018748178, -0.0034753936, -0.008489365]
-gra[7][13][13] = [-0.21126512, -0.14684778, -0.17945582, -0.23263925, -0.2513144, -0.26918033, -0.28356537, -0.27110946, -0.11005954, -0.11417803, -0.21220993]
-gra[7][13][14] = [0.010951025, 0.009298121, -0.14688809, 0.01865165, -0.008552837, 0.018065976, 0.10271375, 0.011856999, 0.0, -1.3119925E-4, -0.067090854]
-gra[7][14][7] = [0.5241708, -0.46542898, -0.27172104, -0.12035675, -0.21927318, -0.117403835, -0.22986774, -0.17839494]
-gra[7][14][8] = [-0.0016250344, 0.03413689, 0.10002088, -0.011650267, -0.014161643, 0.008354038, -0.006660041, 0.030145828]
-gra[7][14][9] = [-0.03830725, 0.12321507, 0.117662326, 0.05932686, -0.01487538, -0.018540896, 0.012248252, -0.030068738]
-gra[7][14][10] = [-0.017961588, 0.13540176, 0.040848166, -0.035031192, -0.0056500686, 0.0, -0.007450852, -0.008528335]
-gra[7][14][11] = [-0.043990437, 0.13918974, 0.11856836, 0.054988295, -0.020448634, -0.0040659397, 0.005105417, -0.035065804]
-gra[7][14][12] = [-0.04144368, 0.10621174, 0.15394047, 0.028867757, -0.0306922, -0.0060411, 0.04071752, -0.03511221]
-gra[7][14][13] = [-0.033624183, 0.116037644, 0.12645026, 0.033614065, -0.028261295, -0.0060411, 0.041231185, -0.03511221]
-gra[7][14][14] = [0.5241708, -0.46542898, -0.27172104, -0.12035675, -0.21927318, -0.117403835, -0.22986774, -0.17839494]
-gra[8][0][0] = [-0.14417496]
-gra[8][0][1] = [-0.0045984997]
-gra[8][0][2] = [-0.015381893]
-gra[8][0][3] = [-2.1490036E-5]
-gra[8][0][4] = [-2.1490036E-5]
-gra[8][0][5] = [-0.0015194325]
-gra[8][0][6] = [0.003301489]
-gra[8][0][7] = [0.004572891]
-gra[8][0][8] = [-0.14417496]
-gra[8][1][0] = [0.0016441452]
-gra[8][1][1] = [-0.088203505]
-gra[8][1][2] = [0.07636672]
-gra[8][1][3] = [0.05065222]
-gra[8][1][4] = [0.059677303]
-gra[8][1][5] = [0.037684016]
-gra[8][1][6] = [0.003301489]
-gra[8][1][7] = [0.09311825]
-gra[8][1][8] = [-0.088203505]
-gra[8][2][0] = [0.0036445942, 0.0, 0.0031306578, -0.010473219, -0.0020841712, -0.0070527056]
-gra[8][2][1] = [-0.0041412255, 0.0035309494, -8.747375E-4, -0.024372065, -0.023927271, -0.034932088]
-gra[8][2][2] = [-0.2532087, -0.17914829, -0.24883613, -0.3441101, -0.2326756, -0.24048056]
-gra[8][2][3] = [-0.0055313455, 0.0011138088, -0.011980485, -0.031063369, -0.035564486, -0.1411826]
-gra[8][2][4] = [0.0063980464, 0.0011138088, -0.013619106, -0.010086369, -0.038962904, -0.1785424]
-gra[8][2][5] = [0.009107003, 0.0011138088, -0.011980485, 2.7556764E-4, -0.05956607, -0.159695]
-gra[8][2][6] = [-0.00513966, -0.0020981468, -0.0028909168, 0.018890928, -0.027676575, -0.08680173]
-gra[8][2][7] = [0.0026903795, 0.0011138088, -0.011960017, 0.014541798, -0.015871506, -0.18325953]
-gra[8][2][8] = [-0.2532087, -0.17914829, -0.24883613, -0.3441101, -0.2326756, -0.24048056]
-gra[8][3][0] = [0.0, 0.0, 0.0031306578, -0.005943999, -0.0029825727, -0.005015048]
-gra[8][3][1] = [-0.008866866, 0.001660333, -8.747375E-4, -0.045345914, -0.042694468, -0.08094852]
-gra[8][3][2] = [-0.0024275752, -0.0073068766, -0.008529195, -0.025120389, 0.030459536, -0.04988506]
-gra[8][3][3] = [-0.30909407, -0.21876469, -0.26818597, -0.43994185, -0.31751865, -0.24962053]
-gra[8][3][4] = [0.0063663553, 0.0011138088, -0.013619106, -0.03854393, 0.0068849414, 0.038566932]
-gra[8][3][5] = [0.01556715, 0.0011138088, -0.011980485, -1.798892E-4, -0.016009998, 0.037682675]
-gra[8][3][6] = [-0.0013843551, 0.0, -0.0058829887, 0.013488339, -0.015745612, -0.06466174]
-gra[8][3][7] = [0.0056626936, 0.0011138088, -0.011960017, -0.008537625, -0.0044912873, 0.0040028263]
-gra[8][3][8] = [-0.30909407, -0.21876469, -0.26818597, -0.43994185, -0.31751865, -0.24962053]
-gra[8][4][0] = [0.0, 0.0, 0.0031306578, -0.005943999, -4.5824505E-4, -0.005015048]
-gra[8][4][1] = [-0.008866866, 0.001660333, -8.747375E-4, -0.045345914, -0.042694468, -0.08094852]
-gra[8][4][2] = [-0.0024275752, -0.0073068766, -0.012697934, -0.027456252, 0.0023085428, -0.05417409]
-gra[8][4][3] = [-0.0024275752, -0.0019607393, -0.008350256, -0.01927166, 0.008416267, -0.036242567]
-gra[8][4][4] = [-0.30909407, -0.22109388, -0.26818597, -0.43994185, -0.31751865, -0.29174975]
-gra[8][4][5] = [0.009075312, 0.0011138088, -0.015020473, -0.021374347, -0.014589924, 0.055675216]
-gra[8][4][6] = [-0.002694768, -0.0015748128, -0.0058829887, 0.013488339, -0.015745612, -0.06670928]
-gra[8][4][7] = [0.0056626936, 0.0011138088, -0.011960017, -0.008036301, -0.0044912873, -1.2353621E-4]
-gra[8][4][8] = [-0.30909407, -0.22109388, -0.26818597, -0.43994185, -0.31751865, -0.29174975]
-gra[8][5][0] = [-0.0013776321, -0.0019296022, -0.0023391629, -0.005943999, -4.5824505E-4, -0.005015048]
-gra[8][5][1] = [-0.008866866, 0.001660333, -8.747375E-4, -0.037207868, -0.049398426, -0.09211975]
-gra[8][5][2] = [-0.0024275752, -0.0073068766, -0.012697934, -0.022061262, 0.0015857005, -0.046203177]
-gra[8][5][3] = [-0.0024275752, -0.001494481, -0.012518995, -0.016212534, 0.003388402, -0.03302695]
-gra[8][5][4] = [-0.0024275752, -0.0037581453, -0.004672005, -0.01491863, 0.0065603466, -0.03205142]
-gra[8][5][5] = [-0.2773526, -0.2143891, -0.26818597, -0.37738183, -0.33094257, -0.27807763]
-gra[8][5][6] = [-0.0013843551, 0.0, -0.0074605006, 0.013488339, -0.014554577, -0.064160265]
-gra[8][5][7] = [0.0056626936, 0.0011138088, -0.014376583, -0.01484395, -0.0030712152, -0.0025116857]
-gra[8][5][8] = [-0.2773526, -0.2143891, -0.26818597, -0.37738183, -0.33094257, -0.27807763]
-gra[8][6][0] = [-0.0020841712]
-gra[8][6][1] = [-0.04302792]
-gra[8][6][2] = [-0.0050475206]
-gra[8][6][3] = [-0.008825058]
-gra[8][6][4] = [-0.008825058]
-gra[8][6][5] = [-0.012781609]
-gra[8][6][6] = [-0.41294762]
-gra[8][6][7] = [-0.0036576067]
-gra[8][6][8] = [-0.41294762]
-gra[8][7][0] = [-0.003605175, 0.0, 3.0349702E-11, -0.005943999, 0.0, -0.0034732886]
-gra[8][7][1] = [-0.0047256397, 0.001660333, -8.747375E-4, -0.025625348, -0.029110229, -0.05507951]
-gra[8][7][2] = [-0.0024275752, -0.0073068766, -0.010434626, -0.02700362, 2.0877292E-4, -0.03593757]
-gra[8][7][3] = [0.0059763296, -0.013574859, -0.013208415, -0.016524691, 0.0015131709, -0.02000734]
-gra[8][7][4] = [0.0059763296, -0.015372265, -0.012518995, -0.017566651, 0.0015131709, -0.022236021]
-gra[8][7][5] = [0.0059763296, -0.015372265, -0.00639748, -0.017453253, 0.005679493, -0.021238362]
-gra[8][7][6] = [0.0047623203, -9.316074E-4, 0.003376759, 0.0, -0.0023392674, -0.00691407]
-gra[8][7][7] = [-0.2170329, -0.21450336, -0.23716104, -0.18752718, -0.29549456, -0.22514722]
-gra[8][7][8] = [-0.2170329, -0.21450336, -0.23716104, -0.18752718, -0.29549456, -0.22514722]
-gra[8][9][8] = [-0.022827793, -0.068379566, -0.25837877, -0.21213788, -0.18123251, -0.06280679]
-gra[8][9][9] = [-0.022827793, -0.068379566, -0.25837877, -0.21213788, -0.18123251, -0.06280679]
-gra[8][9][10] = [-0.04248844, -0.015347177, -0.06022135, 0.059880435, 0.030355116, 0.02373868]
-gra[8][9][11] = [0.1324003, -0.03536785, 0.072841264, 0.111723945, 0.16686207, 0.004373795]
-gra[8][9][12] = [0.148417, -0.062015627, 0.03661561, 0.028872918, 0.10492425, -0.00793882]
-gra[8][9][13] = [0.115055285, -0.06980443, 0.03620458, 0.002651147, 0.17650467, -0.051590923]
-gra[8][9][14] = [0.0024404947, -0.014385754, 0.052796006, 0.032367773, -0.037356302, -0.083207875]
-gra[8][10][8] = [-0.3744933, -0.16784373, -0.22703753, -0.27977395, -0.079930805]
-gra[8][10][9] = [-0.00495979, -0.015150558, -0.024016019, -0.024264883, 0.0040959795]
-gra[8][10][10] = [-0.3744933, -0.16784373, -0.22703753, -0.27977395, -0.079930805]
-gra[8][10][11] = [0.009161118, 0.06431773, -0.028824054, 0.06274183, -0.11322439]
-gra[8][10][12] = [0.00397792, 0.034380853, -0.0059177973, 0.060738035, -0.070336334]
-gra[8][10][13] = [-0.0165147, 0.08674023, 0.01999219, 0.1095151, -0.07945923]
-gra[8][10][14] = [0.004430178, -0.009117239, 0.003957929, -0.014807275, 9.530978E-4]
-gra[8][11][8] = [-0.018760176, -0.13557921, -0.19221872, -0.24474324, -0.18942925, -0.117233455]
-gra[8][11][9] = [-0.02862041, -0.0266835, -0.017359264, -0.0026410976, 0.101478025, -0.007127323]
-gra[8][11][10] = [0.12575564, -0.008013563, -0.13465624, 0.042924937, 0.10461114, -0.013226186]
-gra[8][11][11] = [-0.018760176, -0.13557921, -0.19221872, -0.24474324, -0.18942925, -0.117233455]
-gra[8][11][12] = [0.16262418, -0.06352125, 0.13524722, 0.13732867, 0.07395467, 0.032438103]
-gra[8][11][13] = [0.14645974, -0.096206084, 0.02090235, 0.07344408, 0.15144207, 0.0024053212]
-gra[8][11][14] = [-0.059860162, -0.015824499, 0.017986942, 0.0066039376, -0.022695731, -0.10208605]
-gra[8][12][8] = [-0.1169041, -0.18914837, -0.254057, -0.30970794, -0.31629923, -0.19975424]
-gra[8][12][9] = [0.011907245, -0.023638166, -0.024798952, 0.012109455, 0.073867366, -0.018831125]
-gra[8][12][10] = [0.1423337, -0.007672596, -0.10740548, 0.020946361, 0.110106535, -0.014367545]
-gra[8][12][11] = [-0.036603082, -0.021824643, -0.013993474, -0.009670965, 0.062927134, -0.0042543197]
-gra[8][12][12] = [-0.1169041, -0.18914837, -0.254057, -0.30970794, -0.31629923, -0.19975424]
-gra[8][12][13] = [0.1698632, -0.097934745, 0.07009623, 0.029133787, 0.13945653, 0.013856832]
-gra[8][12][14] = [-0.050112426, -0.017124066, 0.026306588, 0.021846559, 0.009977598, -0.06789728]
-gra[8][13][8] = [-0.09863404, -0.09946993, -0.3244508, -0.25623825, -0.27921844, -0.19712944]
-gra[8][13][9] = [0.03648038, -0.025160834, -0.024798952, 0.0026920782, 0.08904009, -0.0074777785]
-gra[8][13][10] = [0.12678777, -0.0057856096, -0.11050579, 0.0094972495, 0.065269336, 0.0072224857]
-gra[8][13][11] = [-0.008817717, -0.02160719, -0.009704274, -0.02549401, 0.08290721, 0.007776879]
-gra[8][13][12] = [0.02728383, -0.02116654, -0.01983916, 0.008786059, 0.08503172, -0.009510772]
-gra[8][13][13] = [-0.09863404, -0.09946993, -0.3244508, -0.25623825, -0.27921844, -0.19712944]
-gra[8][13][14] = [-0.047285203, -0.013819384, -2.9367127E-4, -0.0011396939, -0.051197436, -0.07088209]
-gra[8][14][8] = [0.27659905, -0.15125082, -0.11054209]
-gra[8][14][9] = [-0.04892659, 0.04652346, -0.010434729]
-gra[8][14][10] = [-0.0171581, 0.05569372, 0.0020520485]
-gra[8][14][11] = [-0.057897132, 0.046490017, -0.011281329]
-gra[8][14][12] = [-0.073342204, 0.038727716, -0.019339422]
-gra[8][14][13] = [-0.06552271, 0.016410215, -0.019339422]
-gra[8][14][14] = [0.27659905, -0.15125082, -0.11054209]
-gra[9][0][0] = [-0.1773251]
-gra[9][0][1] = [0.07775881]
-gra[9][0][2] = [-0.03473952]
-gra[9][0][3] = [-7.944107E-4]
-gra[9][0][4] = [-7.944107E-4]
-gra[9][0][5] = [0.00966204]
-gra[9][0][6] = [-0.007829653]
-gra[9][0][7] = [-0.0057671433]
-gra[9][0][8] = [0.020644845]
-gra[9][0][9] = [-0.1773251]
-gra[9][1][0] = [0.0016247655, -0.001958814, 6.20738E-4, 5.2270518E-11, -0.0021720084, 9.538275E-4]
-gra[9][1][1] = [-0.19433363, -0.15237986, -0.23557648, -0.20321801, -0.15950295, -0.17264925]
-gra[9][1][2] = [0.056879885, -0.045482695, 0.028423216, -0.026443, -0.01245614, -0.048355818]
-gra[9][1][3] = [0.049750097, -0.040081326, -0.014490077, -0.021925595, -0.014794135, -0.067049526]
-gra[9][1][4] = [0.058775187, -0.04147892, -0.0076697078, -0.019397447, -0.014794135, -0.06707433]
-gra[9][1][5] = [0.04873628, -0.029277861, 0.024150392, -0.021289404, -0.010774887, -0.051510047]
-gra[9][1][6] = [-0.007829653, -0.0024341857, 0.0038837004, -0.012754725, 0.0061575435, -0.001778353]
-gra[9][1][7] = [0.07907056, -0.033471376, 0.025322549, -0.024018921, -0.006669964, -0.07393278]
-gra[9][1][8] = [0.026585741, -3.4384023E-11, -0.024732247, -0.0073345173, -0.0014129442, -0.0036619226]
-gra[9][1][9] = [-0.19433363, -0.15237986, -0.23557648, -0.20321801, -0.15950295, -0.17264925]
-gra[9][2][0] = [-3.8481143E-5, 0.0, -1.9379833E-5, 0.0042653317, -0.00452922, 0.0040684794, 0.004997642, 0.0, 0.0012653338, 0.012965051, -0.008016303]
-gra[9][2][1] = [-5.13921E-4, -3.7906157E-11, -0.02825313, -0.0041412255, -0.02294093, -0.0013798745, -0.00706416, 0.035186574, -7.720956E-4, 0.019359952, -0.0476656]
-gra[9][2][2] = [-0.15411112, -0.15474868, -0.2667567, -0.2025662, -0.2436716, -0.18423976, -0.27013993, -0.2716599, -0.2620662, -0.12707642, -0.22092506]
-gra[9][2][3] = [-0.010340879, -0.028990483, -0.03546672, -0.0149521455, -0.02118981, -0.0025281478, 0.0043394, -0.00686435, -0.002073156, -0.009318697, -0.13549897]
-gra[9][2][4] = [-0.013003577, -0.03249323, -0.036955513, -0.012433228, -0.0015978473, -0.0016386209, 7.817097E-4, -0.008992363, -0.002073156, 9.969876E-4, -0.16866863]
-gra[9][2][5] = [-0.004744318, -0.026590846, -0.04560429, -0.014496949, 0.008764084, -0.0018919576, 0.012585785, -0.013152661, -0.00433054, -0.004072852, -0.14982122]
-gra[9][2][6] = [0.008839857, -0.005398127, -0.038807712, -0.003755305, 0.018350098, -0.009624145, -0.007742171, -0.015615815, 0.0, 0.004373548, -0.08937369]
-gra[9][2][7] = [-0.005842864, -0.0263843, -0.029211506, -0.020425018, 0.029116679, 0.0024165655, 0.019620195, 0.008007627, -0.0065089096, -0.0107359085, -0.1680537]
-gra[9][2][8] = [0.0028593205, -0.029040482, 0.020325596, -0.0065694638, 0.02993482, -0.006035342, -0.033911515, -0.012498216, 0.002475134, 8.743692E-4, -0.024541838]
-gra[9][2][9] = [-0.15411112, -0.15474868, -0.2667567, -0.2025662, -0.2436716, -0.18423976, -0.27013993, -0.2716599, -0.2620662, -0.12707642, -0.22092506]
-gra[9][3][0] = [-3.8481143E-5, 0.0, -9.177815E-4, 6.20738E-4, 0.0, 0.0040684794, 0.004997642, -3.050395E-11, 0.0012653338, 0.0105165765, -0.0059786467]
-gra[9][3][1] = [-5.13921E-4, 0.0, -0.031104738, -0.010353064, -0.04391478, -0.0033323471, -0.04071657, 0.079702035, -7.720956E-4, 0.01583714, -0.093682036]
-gra[9][3][2] = [-0.009741628, -0.019480554, -0.0440849, 0.0, -0.025120389, -0.0064118747, -0.009571605, 0.0045674103, -0.0014879347, 0.00255187, -0.051743556]
-gra[9][3][3] = [-0.15855883, -0.1943651, -0.3515998, -0.25845155, -0.33950344, -0.20358957, -0.22559446, -0.4049759, -0.26190245, -0.16340552, -0.23006502]
-gra[9][3][4] = [-0.012042707, -0.03038807, 0.006982708, -0.0059730806, -0.030055411, -0.0016386209, -0.023424516, -0.0063553033, -0.0050928323, -0.0058299974, 0.044250567]
-gra[9][3][5] = [-0.004744318, -0.026590846, -0.002048215, -0.008036802, 0.008308632, -0.0018919576, -0.013955208, -0.011245721, -0.008255026, -0.0058299974, 0.04755645]
-gra[9][3][6] = [-0.0029429542, -0.00329998, -0.026876753, 0.0, 0.012947509, -0.012616217, -0.0016823349, -0.010240156, 0.0017409262, 0.004373548, -0.06723371]
-gra[9][3][7] = [-0.0076958933, -0.0263843, -0.017831288, -0.017452704, 0.006037254, 0.0024165655, -0.0066935206, 0.011656271, -0.008786375, -0.008534221, 0.019957142]
-gra[9][3][8] = [0.0, -0.023754772, 0.022294685, -0.0065694638, 0.02787349, -0.006035342, -0.03937225, 0.008614166, 0.002475134, 2.4045661E-11, -0.053164832]
-gra[9][3][9] = [-0.15855883, -0.1943651, -0.3515998, -0.25845155, -0.33950344, -0.20358957, -0.22559446, -0.4049759, -0.26190245, -0.16340552, -0.23006502]
-gra[9][4][0] = [-3.8481143E-5, 0.0, 0.0016065463, 6.20738E-4, 0.0, 0.0040684794, 0.004997642, -3.050395E-11, 0.0012653338, 0.012965051, -0.0059786467]
-gra[9][4][1] = [-5.13921E-4, 0.0, -0.031104738, -0.010353064, -0.04391478, -0.0033323471, -0.04071657, 0.079702035, -7.720956E-4, 0.01583714, -0.093682036]
-gra[9][4][2] = [-0.009741628, -0.019480554, -0.06341619, 0.0, -0.027456252, -0.008486157, -0.009571605, 0.007836706, -0.0015743364, 0.0015983053, -0.056032587]
-gra[9][4][3] = [-0.011068651, -0.0161157, -0.083996825, 0.0032001403, -0.01927166, -0.008297132, -0.0065214084, -2.5217576E-4, -0.009947379, 0.0010085813, -0.038101066]
-gra[9][4][4] = [-0.15634215, -0.1966943, -0.3515998, -0.25845155, -0.33950344, -0.20358957, -0.21933496, -0.40186983, -0.26190245, -0.16340552, -0.27219427]
-gra[9][4][5] = [-0.004744318, -0.024485687, -0.0025377665, -0.008036802, -0.012885826, -0.0049319454, -0.014388094, -0.010515601, -0.0060968003, -0.0067127496, 0.061358854]
-gra[9][4][6] = [-0.00198661, -0.004874793, -0.026876753, -0.0013104129, 0.012947509, -0.012616217, -0.0016823349, -0.010240156, 0.0, 0.0031581419, -0.06928125]
-gra[9][4][7] = [-0.0076958933, -0.0263843, -0.017831288, -0.017452704, 0.0065385774, 0.0024165655, -0.0066935206, 0.011656271, -0.008786375, -0.00811267, 0.01583078]
-gra[9][4][8] = [-0.0030642115, -0.023754772, 0.022294685, -0.0065694638, 0.02787349, -0.006035342, -0.03937225, 0.008614166, 0.0024751339, -5.004493E-4, -0.053164832]
-gra[9][4][9] = [-0.15634215, -0.1966943, -0.3515998, -0.25845155, -0.33950344, -0.20358957, -0.21933496, -0.40186983, -0.26190245, -0.16340552, -0.27219427]
-gra[9][5][0] = [-3.8481143E-5, -0.0019296022, 0.0016065463, -7.568941E-4, 0.0, -0.0014013414, 0.004997642, -3.050395E-11, 0.0012653338, 0.012965051, -0.0059786467]
-gra[9][5][1] = [-5.13921E-4, 0.0, -0.037808705, -0.010353064, -0.035776734, -0.0033323471, -0.03597452, 0.079702035, -7.720956E-4, 0.01583714, -0.10485327]
-gra[9][5][2] = [-0.009741628, -0.019480554, -0.06413903, 0.0, -0.022061262, -0.008486157, -0.009571605, 0.004819586, -0.002324788, 0.00255187, -0.04806168]
-gra[9][5][3] = [-0.0110905375, -0.015649442, -0.08020499, 0.0032001403, -0.016212534, -0.010371415, -0.0065214084, -2.5217576E-4, -0.010784232, 0.00255187, -0.034885447]
-gra[9][5][4] = [-0.008626172, -0.017131412, -0.08585275, 0.0032001403, -0.013876671, -0.006897951, -0.0065214084, 0.0022252216, -0.009080861, 0.00255187, -0.03168124]
-gra[9][5][5] = [-0.15634215, -0.18998952, -0.36502373, -0.22671008, -0.2769434, -0.20358957, -0.21868652, -0.37371886, -0.26190245, -0.16340552, -0.2585221]
-gra[9][5][6] = [-0.0026225648, -0.00329998, -0.025685718, 0.0, 0.012947509, -0.012616217, -7.880372E-4, -0.013210811, 0.0011668268, 0.004373548, -0.06527156]
-gra[9][5][7] = [-0.0076958933, -0.0263843, -0.016411217, -0.017452704, -2.6907446E-4, 4.886615E-13, -0.0057870867, 0.011656271, -0.008786375, -0.00811267, 0.0031243209]
-gra[9][5][8] = [0.0, -0.01895187, 0.022294685, -0.0065694638, 0.022793658, -0.006035342, -0.04394223, 0.014637312, 0.002475134, 2.4045661E-11, -0.06604334]
-gra[9][5][9] = [-0.15634215, -0.18998952, -0.36502373, -0.22671008, -0.2769434, -0.20358957, -0.21868652, -0.37371886, -0.26190245, -0.16340552, -0.2585221]
-gra[9][6][0] = [-1.9379833E-5, -0.004478236]
-gra[9][6][1] = [-0.031438198, 0.030764]
-gra[9][6][2] = [-0.069543764, 0.001318386]
-gra[9][6][3] = [-0.09118996, 0.0026769685]
-gra[9][6][4] = [-0.09118996, 0.0]
-gra[9][6][5] = [-0.10496058, -0.0012286699]
-gra[9][6][6] = [-0.5014086, -0.22156538]
-gra[9][6][7] = [-0.013997644, -0.01767266]
-gra[9][6][8] = [0.0023319586, -6.0892664E-4]
-gra[9][6][9] = [-0.5014086, -0.22156538]
-gra[9][7][0] = [-3.8481143E-5, 0.0, -1.9379833E-5, -0.0029844372, 0.0, 9.378215E-4, 0.004997642, 0.0, 0.0012653338, 0.012965051, -0.004436887]
-gra[9][7][1] = [-5.13921E-4, 0.0, -0.026578074, -0.006211838, -0.02472724, -0.0033323471, -0.0122409295, 0.043953314, 8.230112E-4, 0.018503062, -0.07874879]
-gra[9][7][2] = [-0.011755253, -0.019480554, -0.06551596, 0.0, -0.02700362, -0.0062228492, -0.009571605, 0.0052266098, -0.004360152, 0.0, -0.037890106]
-gra[9][7][3] = [-0.0051616803, -0.02772982, -0.08208022, 0.011604045, -0.016524691, -0.011060836, -0.0065214084, 0.0014358414, -0.010784232, 0.0, -0.02186584]
-gra[9][7][4] = [-0.0035729608, -0.028745532, -0.08208022, 0.011604045, -0.016524691, -0.012650484, -0.0065214084, 0.0039132386, -0.009917714, 0.0, -0.02186584]
-gra[9][7][5] = [-0.0020350767, -0.02772982, -0.09057815, 0.011604045, -0.017453253, -0.008297132, -0.009280194, 0.0016880172, -0.009947379, -0.0020343647, -0.023096858]
-gra[9][7][6] = [-0.0015405889, -9.316074E-4, -0.05381691, 0.0047623203, 0.0, 0.0053935135, 4.2076397E-4, 0.005881849, -6.80316E-4, 0.0016483099, -0.0069982223]
-gra[9][7][7] = [-0.16224875, -0.19711332, -0.36457542, -0.17255223, -0.11015577, -0.17975295, -0.2606367, -0.1860249, -0.28262648, -0.14453895, -0.2916181]
-gra[9][7][8] = [0.0, -0.020787204, 0.022655375, -0.003890037, 0.04273223, -0.006035342, -0.04434924, 7.8614766E-4, 0.0024751343, 2.4045661E-11, -0.05973374]
-gra[9][7][9] = [-0.16224875, -0.19711332, -0.36457542, -0.17255223, -0.11015577, -0.17975295, -0.2606367, -0.1860249, -0.28262648, -0.14453895, -0.2916181]
-gra[9][8][0] = [0.008273305, 0.0, 6.20738E-4, 4.4457944E-11, -0.0021720084, 9.538275E-4]
-gra[9][8][1] = [0.023566004, 0.0, -9.987416E-4, -0.0050757998, 0.005938728, 0.012229878]
-gra[9][8][2] = [-0.05634791, -0.019480554, -0.0053461394, -0.0062228492, 0.009140637, -0.0064943894]
-gra[9][8][3] = [-0.08876743, -0.009889483, -0.002145999, -0.010371415, 0.0069431528, -0.007944971]
-gra[9][8][4] = [-0.07633048, -0.010905196, -0.002145999, -0.012650484, 0.0069431528, -0.007944971]
-gra[9][8][5] = [-0.089960665, -0.009889483, -0.002145999, -0.008297132, 0.0069431528, -0.007944971]
-gra[9][8][6] = [-0.056910094, 0.0, 0.0, -0.012947457, -0.0017974195, -0.0031688735]
-gra[9][8][7] = [-0.06844245, -0.021147298, -0.006194906, -0.0066199475, 0.009164523, -0.011917457]
-gra[9][8][8] = [-0.2550567, -0.09885185, -0.22504526, -0.18872045, -0.1348899, -0.17494895]
-gra[9][8][9] = [-0.2550567, -0.09885185, -0.22504526, -0.18872045, -0.1348899, -0.17494895]
-gra[9][10][9] = [0.10852815, -0.025776992, -0.2302414, -0.31093428, -0.15383463, -0.024499029, -0.094033964]
-gra[9][10][10] = [0.10852815, -0.025776992, -0.2302414, -0.31093428, -0.15383463, -0.024499029, -0.094033964]
-gra[9][10][11] = [-0.02225552, 0.09129608, -0.1057563, -0.024842158, -0.006525742, -0.120727904, 0.11680413]
-gra[9][10][12] = [-0.062789634, 0.061075095, -0.06308911, -0.07374247, -8.7093055E-4, -0.065352134, 0.11862738]
-gra[9][10][13] = [9.415448E-4, 0.09611326, -0.04225102, -0.07940817, 0.0029196735, -0.085086055, 0.15611345]
-gra[9][10][14] = [-0.115164116, -1.8879399E-4, 0.020602407, 0.062252887, -0.01980718, 0.0047443355, 0.026617764]
-gra[9][11][9] = [-0.0668847, -0.040929336, 0.04409513, -0.16642815, -0.20053107, -0.10886454, -0.4057592, -0.2498812, -0.09408637, -0.08808707, -0.14613786]
-gra[9][11][10] = [0.0013266006, 0.0033504684, 0.021805383, 0.052153945, 0.10140834, -0.09087926, -0.06761236, 0.07752701, 0.0014439123, 0.023591425, 0.011768046]
-gra[9][11][11] = [-0.0668847, -0.040929336, 0.04409513, -0.16642815, -0.20053107, -0.10886454, -0.4057592, -0.2498812, -0.09408637, -0.08808707, -0.14613786]
-gra[9][11][12] = [-0.02479161, -0.049128816, -0.046256132, 0.038998794, 0.0664641, -0.013100912, 0.024784435, 0.033664178, -0.0016438005, 0.005044714, 0.0374223]
-gra[9][11][13] = [0.055205453, -0.02576902, 0.062797636, -0.01856041, 0.005523918, -0.04292103, 0.010837065, 0.016201805, -0.0016438005, -9.234785E-4, -0.0032215076]
-gra[9][11][14] = [0.04499191, 0.023527658, -0.11728629, 0.013822016, 0.00838391, 0.031298243, 0.14430822, 0.040411703, 0.0, 0.0, -0.09829482]
-gra[9][12][9] = [-0.088614725, -0.094498485, -0.08277482, -0.2645721, -0.26549575, -0.1707028, -0.3550032, -0.2749477, -0.10875442, -0.1222126, -0.22865866]
-gra[9][12][10] = [0.01290104, -2.3767166E-4, 0.010322846, 0.081089616, 0.07942977, -0.063628495, -0.018640457, 0.09832135, 0.0013697329, 0.011636256, 0.010626682]
-gra[9][12][11] = [-0.032606002, 0.042882897, 0.17033508, -0.0199083, -0.014172083, -0.027323436, 0.004347658, 0.023991466, 7.6891546E-4, -0.002900556, -0.0042543197]
-gra[9][12][12] = [-0.088614725, -0.094498485, -0.08277482, -0.2645721, -0.26549575, -0.1707028, -0.3550032, -0.2749477, -0.10875442, -0.1222126, -0.22865866]
-gra[9][12][13] = [0.17182983, -0.009854233, 0.06964333, -0.0068727885, -0.038786367, -0.036921203, -0.0041805073, 0.05531818, -0.0016438005, -0.0023427363, 0.008229998]
-gra[9][12][14] = [0.044688687, 0.022228086, -0.08461296, 0.023569753, 0.023626532, 0.039617892, 0.12991723, 0.020360775, 0.0, -2.2505768E-11, -0.06410605]
-gra[9][13][9] = [-0.089378946, -0.0048200767, -0.045694027, -0.24630201, -0.21202603, -0.24109656, -0.31626335, -0.22658204, -0.11701275, -0.12256098, -0.22603387]
-gra[9][13][10] = [0.012254806, 0.0016493145, -0.017773198, 0.07629947, 0.07468779, -0.06672881, 0.011702432, 0.09033154, 0.0013697329, 0.015515008, 0.037934404]
-gra[9][13][11] = [-0.03336004, 0.03658518, 0.18911833, 0.004911943, -0.029995129, -0.023034235, 0.006724406, 0.030979762, 7.6891546E-4, -0.005151834, 0.007776879]
-gra[9][13][12] = [-0.0013462165, 0.017152274, 0.14371338, 0.05429946, -0.0017973538, -0.031859662, 0.011744333, 0.03448535, -1.4217425E-4, -0.004681904, -0.008489365]
-gra[9][13][13] = [-0.089378946, -0.0048200767, -0.045694027, -0.24630201, -0.21202603, -0.24109656, -0.31626335, -0.22658204, -0.11701275, -0.12256098, -0.22603387]
-gra[9][13][14] = [2.063606E-4, 0.030281678, -0.17126273, 0.029621735, -0.0021256413, 0.019744035, 0.093215674, 0.011856999, 0.0, -0.0013691243, -0.067090854]
-gra[9][14][9] = [0.4212072, -0.33166724, -0.28538382, 0.02167102, -0.22091122, -0.12435703, -0.107981555, -0.15031114]
-gra[9][14][10] = [-0.017961588, 0.058655586, 0.031953864, 5.054381E-4, -0.0062238164, -0.001011658, -0.0025138534, -0.007839976]
-gra[9][14][11] = [-0.043990437, 0.12072055, 0.06320075, 0.07223154, -0.025583364, -0.0040659397, -0.017439922, -0.04387355]
-gra[9][14][12] = [-0.051827066, 0.06880729, 0.065759294, 0.056509502, -0.034117844, -0.008058093, 0.015293969, -0.040765796]
-gra[9][14][13] = [-0.04400757, 0.087297834, 0.046406917, 0.06302466, -0.03168694, -0.008058093, 0.015807634, -0.040765796]
-gra[9][14][14] = [0.4212072, -0.33166724, -0.28538382, 0.02167102, -0.22091122, -0.12435703, -0.107981555, -0.15031114]
-gra[10][0][0] = [-0.10724866]
-gra[10][0][1] = [-0.023958247]
-gra[10][0][2] = [-0.015149269]
-gra[10][0][3] = [0.021138027]
-gra[10][0][4] = [0.022920009]
-gra[10][0][5] = [0.030904416]
-gra[10][0][6] = [0.0013775101]
-gra[10][0][7] = [0.056586806]
-gra[10][0][8] = [-0.03225985]
-gra[10][0][9] = [0.017028254]
-gra[10][0][10] = [-0.10724866]
-gra[10][1][0] = [0.0016441452, 0.0, -0.0021720084, 0.0]
-gra[10][1][1] = [-0.048993174, -0.25442305, -0.15137123, -0.16780452]
-gra[10][1][2] = [0.07379909, 0.0388396, -0.016389685, -0.026443]
-gra[10][1][3] = [0.06901149, -0.007807495, -0.012324876, -0.02191716]
-gra[10][1][4] = [0.079818554, -9.871258E-4, -0.010499197, -0.020035459]
-gra[10][1][5] = [0.067307614, 0.03540191, -0.012324876, -0.02191716]
-gra[10][1][6] = [0.00137751, 0.0038837004, 6.091478E-4, -0.0039868616]
-gra[10][1][7] = [0.13875346, 0.056739453, -0.011917006, -0.024018921]
-gra[10][1][8] = [-0.023770995, -0.03150455, -0.0077087167, -0.0012991752]
-gra[10][1][9] = [0.07292722, 0.014448465, -0.015642967, -0.019397447]
-gra[10][1][10] = [-0.048993174, -0.25442305, -0.15137123, -0.16780452]
-gra[10][2][0] = [5.761308E-4, -0.0015712132, 0.0036445942, 0.0, 3.5459347E-11, -0.00452922, -9.497553E-4, 0.0031306578]
-gra[10][2][1] = [0.035186574, -0.0010594062, -0.0041412255, -3.7906157E-11, -0.0074518225, -0.026237296, -0.019708391, 0.0068521057]
-gra[10][2][2] = [-0.24751812, -0.1072654, -0.23525298, -0.14890505, -0.2227314, -0.2392259, -0.4945354, -0.15355895]
-gra[10][2][3] = [-0.0034905192, 0.0012402993, -0.012895271, 0.0013912377, -0.014404967, -0.022028076, 0.07092665, -0.002519714]
-gra[10][2][4] = [-0.006486016, -0.002786019, -0.010376353, 0.0013912377, -0.01602141, -0.0024361145, 0.09002073, -0.0022766325]
-gra[10][2][5] = [-0.010646315, -0.0018251493, -0.007871137, -0.0011139774, -0.027142221, 0.00792582, 0.12973902, -0.002519714]
-gra[10][2][6] = [-0.015615815, 0.008577139, -0.002648871, -0.0020981468, -0.028376034, 0.020017283, 0.051820286, -8.903948E-4]
-gra[10][2][7] = [0.011381457, 2.787984E-5, 0.006366184, 0.005368133, 0.030362133, 0.027474642, -0.032702655, 0.0024165655]
-gra[10][2][8] = [-0.02509948, 0.0028593205, -0.0036909212, -0.050199, -0.02083967, 0.04475024, -0.014748111, 3.69642E-11]
-gra[10][2][9] = [0.0010847622, -0.005951785, -0.036049217, 0.0013912377, -0.03142338, 0.051694456, 0.017777147, -1.1858091E-11]
-gra[10][2][10] = [-0.24751812, -0.1072654, -0.23525298, -0.14890505, -0.2227314, -0.2392259, -0.4945354, -0.15355895]
-gra[10][3][0] = [5.7613075E-4, -0.0015712132, 0.0, 0.0, -8.9840154E-4, 0.0, -0.007079258, 0.0031306578]
-gra[10][3][1] = [0.079702035, -0.0010594062, -0.010353064, 0.0, -0.01857777, -0.047211148, -0.027547482, 0.0068521057]
-gra[10][3][2] = [0.0045674103, -0.0020977946, -7.2137534E-4, -0.0011517848, 0.060968373, -0.028034722, -0.019437145, -0.0022633083]
-gra[10][3][3] = [-0.3808341, -0.11171311, -0.29113835, -0.18852146, -0.3075745, -0.33505765, -0.14130302, -0.17290878]
-gra[10][3][4] = [-0.0029814718, -0.0018251492, -0.0039162054, 0.0013912377, 0.02982644, -0.030893678, 0.1712429, -0.0022766325]
-gra[10][3][5] = [-0.0087393755, -0.0018251492, -0.0014109905, -0.0011139774, 0.016413854, 0.007470367, 0.21749142, -0.002519714]
-gra[10][3][6] = [-0.010240156, -0.0032056724, 0.001106434, 0.0, -0.01644507, 0.014614694, 0.10100887, -0.0038824668]
-gra[10][3][7] = [0.015030102, -0.0018251494, 0.0093385, 0.005368133, 0.041742355, 0.0043952167, -0.007053854, 0.0024165655]
-gra[10][3][8] = [-0.0039870986, -1.0503716E-10, -0.0036909212, -0.04491329, -0.018870585, 0.042688906, 0.050200105, 3.69642E-11]
-gra[10][3][9] = [0.022444844, -0.005951785, -0.031732466, 0.0013912377, -0.007614853, -0.0018208846, 0.14795507, 3.051486E-4]
-gra[10][3][10] = [-0.3808341, -0.11171311, -0.29113835, -0.18852146, -0.3075745, -0.33505765, -0.14130302, -0.17290878]
-gra[10][4][0] = [5.7613075E-4, -0.0015712132, 0.0, 0.0, 0.0016259261, 0.0, -0.0045549306, 0.0031306578]
-gra[10][4][1] = [0.079702035, -0.0010594062, -0.010353064, 0.0, -0.01857777, -0.047211148, -0.027547482, 0.0068521057]
-gra[10][4][2] = [0.007836706, -0.0020977946, -7.2137534E-4, -0.0011517848, 0.035989325, -0.030370584, -0.031994678, -0.0022633083]
-gra[10][4][3] = [0.0014574399, -8.537594E-4, 0.0, 0.0035487313, 0.05433384, -0.0207291, -0.0020670719, -0.00507246]
-gra[10][4][4] = [-0.37772804, -0.10949644, -0.29113835, -0.19085066, -0.3075745, -0.33505765, -0.15541108, -0.17290878]
-gra[10][4][5] = [-0.0071417717, -0.0018251492, -0.0014109905, -0.0011139774, 0.017833926, -0.013724092, 0.1913245, -0.0055597015]
-gra[10][4][6] = [-0.010240156, -0.002249328, -2.0397897E-4, -0.0015748128, -0.01644507, 0.014614694, 0.10100887, -0.0038824668]
-gra[10][4][7] = [0.015030102, -0.0018251494, 0.0093385, 0.005368133, 0.041742355, 0.00489654, -0.008712063, 0.0024165655]
-gra[10][4][8] = [-0.0039870986, -0.0030642115, -0.0036909212, -0.04491329, -0.018870585, 0.042688906, 0.054841205, 3.69642E-11]
-gra[10][4][9] = [0.022444844, -0.005951785, -0.031732466, 0.0013912377, -0.007614853, -6.1365584E-4, 0.14629687, 4.9778556E-11]
-gra[10][4][10] = [-0.37772804, -0.10949644, -0.29113835, -0.19085066, -0.3075745, -0.33505765, -0.15541108, -0.17290878]
-gra[10][5][0] = [5.7613075E-4, -0.0015712132, -0.0013776321, -0.0019296022, 0.0016259261, 0.0, -0.0066208825, -0.0023391629]
-gra[10][5][1] = [0.079702035, -0.0010594062, -0.010353064, 0.0, -0.025281731, -0.039073102, 0.0036873422, 0.0068521057]
-gra[10][5][2] = [0.004819586, -0.0020977946, -7.2137534E-4, -0.0011517848, 0.03526648, -0.024975596, -0.02962697, -0.0022633083]
-gra[10][5][3] = [0.0014574399, -8.756455E-4, 0.0, 0.00401499, 0.052477915, -0.017669976, -0.007751686, -0.00507246]
-gra[10][5][4] = [0.00145744, 0.0, 0.0, 0.0054343482, 0.052477915, -0.015334111, 0.0026334636, -0.0013942088]
-gra[10][5][5] = [-0.34957707, -0.10949644, -0.25939685, -0.18414588, -0.32099843, -0.27249756, -0.08553642, -0.17290878]
-gra[10][5][6] = [-0.013210811, -0.002885283, 0.001106434, 0.0, -0.015254037, 0.014614694, 0.0835998, -0.0038824668]
-gra[10][5][7] = [0.015030102, -0.0018251494, 0.0093385, 0.005368133, 0.043162428, -0.0019111116, -0.020885175, 4.886615E-13]
-gra[10][5][8] = [0.0050476207, -1.0503716E-10, -0.0036909212, -0.037708938, -0.018870585, 0.0292247, 0.06806866, 3.69642E-11]
-gra[10][5][9] = [0.022444844, -0.005951785, -0.019626053, 0.0013912377, -0.0061947796, -0.0074213073, 0.13643174, 4.9778556E-11]
-gra[10][5][10] = [-0.34957707, -0.10949644, -0.25939685, -0.18414588, -0.32099843, -0.27249756, -0.08553642, -0.17290878]
-gra[10][6][0] = [0.0019107888, 3.5459347E-11]
-gra[10][6][1] = [0.029803114, -0.018911218]
-gra[10][6][2] = [-5.509861E-4, 0.028633261]
-gra[10][6][3] = [6.034209E-11, 0.040264454]
-gra[10][6][4] = [6.034209E-11, 0.040264454]
-gra[10][6][5] = [4.487872E-11, 0.03214158]
-gra[10][6][6] = [-0.16041966, -0.3927623]
-gra[10][6][7] = [-0.01347043, 0.048356306]
-gra[10][6][8] = [-0.011656463, -0.054429226]
-gra[10][6][9] = [0.016295122, 0.0040693013]
-gra[10][6][10] = [-0.16041966, -0.3927623]
-gra[10][7][0] = [5.761308E-4, -0.0015712132, -0.003605175, 0.0, 3.5459347E-11, 0.0, -9.497553E-4, 3.0349702E-11]
-gra[10][7][1] = [0.043953314, -0.0010594062, -0.006211838, 0.0, -0.0140511, -0.028023608, -0.027011054, 0.0068521057]
-gra[10][7][2] = [0.0052266098, -0.0041114204, -7.2137534E-4, -0.0011517848, 0.033889554, -0.029917952, 0.00254313, -2.2155085E-11]
-gra[10][7][3] = [0.003145457, 0.0050532115, 0.008403905, -0.008065389, 0.050602682, -0.01798213, 0.0076085986, -0.0057618804]
-gra[10][7][4] = [0.0031454572, 0.0050532115, 0.008403905, -0.006179772, 0.050602682, -0.01798213, 0.0076085986, -0.00507246]
-gra[10][7][5] = [0.0031454572, 0.008180746, 0.008403905, -0.008065389, 0.050602682, -0.017407378, 0.009909841, -0.00507246]
-gra[10][7][6] = [0.0010625808, -4.1459492E-4, 0.0036949979, -0.0028234723, -0.0023392674, -0.0028964565, 0.0150217265, 0.003376759]
-gra[10][7][7] = [-0.16188312, -0.115403034, -0.205239, -0.1912697, -0.32055005, -0.10571001, -0.38804692, -0.14907216]
-gra[10][7][8] = [-0.008803545, -1.0503716E-10, -0.0010114949, -0.03954427, -0.025353342, 0.049163274, 0.017981954, 3.69642E-11]
-gra[10][7][9] = [0.0083061075, -0.004127358, -0.03981907, 0.0013912377, -0.015796406, 0.08416972, -0.006380614, 7.39957E-11]
-gra[10][7][10] = [-0.16188312, -0.115403034, -0.205239, -0.1912697, -0.32055005, -0.10571001, -0.38804692, -0.14907216]
-gra[10][8][0] = [0.0076038064, 0.0, -0.0021720084, 0.0]
-gra[10][8][1] = [0.04922101, -9.987416E-4, 0.002922766, 0.007726843]
-gra[10][8][2] = [0.04503881, -0.011413654, 0.004687597, 1.9001073E-11]
-gra[10][8][3] = [0.045896675, -0.010692279, 0.0037861012, -0.00507246]
-gra[10][8][4] = [0.058333617, -0.010692279, 0.0037861012, -0.00507246]
-gra[10][8][5] = [0.053201366, -0.010692279, 0.0037861012, -0.00507246]
-gra[10][8][6] = [-0.007944579, -0.0022261534, -0.010934131, -0.024378616]
-gra[10][8][7] = [0.027071448, -0.010692279, 0.006007472, -0.0045456644]
-gra[10][8][8] = [-0.23839745, -0.27353147, -0.13540275, -0.1630716]
-gra[10][8][9] = [0.045568958, 0.009596035, -0.022897031, -0.016538091]
-gra[10][8][10] = [-0.23839745, -0.27353147, -0.13540275, -0.1630716]
-gra[10][9][0] = [5.761308E-4, -5.123068E-4, 0.0072497693, 0.0, 3.5459347E-11, -0.0018813149, 0.0, 3.0349702E-11]
-gra[10][9][1] = [0.042927664, -0.0029176604, -0.006211838, 0.0, -0.014741326, -0.019474655, -0.004241555, -8.7473745E-4]
-gra[10][9][2] = [0.0043670787, -0.0020977946, -7.2137534E-4, -0.0011517848, 0.034133404, -0.019950185, -0.022405695, -0.0022633083]
-gra[10][9][3] = [0.0014574399, 0.0, 0.0010881305, 0.0, 0.051389784, -0.017669974, -0.018819861, -0.00507246]
-gra[10][9][4] = [0.00145744, 0.0, 0.0010881305, 0.0018856167, 0.051389784, -0.017669974, -0.018819861, -0.00507246]
-gra[10][9][5] = [0.00145744, -4.5008247E-4, 0.0010881305, -3.2877305E-12, 0.051389784, -0.016166661, -0.016518619, -0.00507246]
-gra[10][9][6] = [-0.0021946991, 0.0, 0.0010157842, -0.0018918649, -0.0012785172, -0.004598216, 7.150832E-4, -0.0025067397]
-gra[10][9][7] = [0.0039554364, -0.0011536116, -8.487664E-4, 0.041617688, 0.03015891, -0.020984316, -0.006567695, -0.0022633083]
-gra[10][9][8] = [0.024523886, 0.0, -0.0020706127, -9.234166E-4, -0.0130427005, -0.0047317725, -0.02894469, -0.0021502178]
-gra[10][9][9] = [-0.1832146, -0.103708565, -0.18610916, -0.15677848, -0.16264665, -0.23057386, -0.3202236, -0.170793]
-gra[10][9][10] = [-0.1832146, -0.103708565, -0.18610916, -0.15677848, -0.16264665, -0.23057386, -0.3202236, -0.170793]
-gra[10][11][10] = [-0.26761565, -0.14027157, -0.13171935, -0.124156564, -0.10518143, -0.16079436, -0.2556547, -0.0296514]
-gra[10][11][11] = [-0.26761565, -0.14027157, -0.13171935, -0.124156564, -0.10518143, -0.16079436, -0.2556547, -0.0296514]
-gra[10][11][12] = [0.008379771, -0.058434255, 0.03282719, -0.026505746, 0.037004553, 0.071838595, 0.009776115, -0.022090515]
-gra[10][11][13] = [0.015646577, -0.048322476, 0.087542325, -0.033848234, 0.075140424, 0.02229148, 0.043451987, -0.07398519]
-gra[10][11][14] = [0.03841678, 0.0666777, 0.007093721, -0.049995307, -0.029425904, 0.01705503, 0.02315872, -0.0044668466]
-gra[10][12][10] = [-0.3153644, -0.17907926, -0.2795965, -0.1764041, -0.25483686, -0.26501107, -0.29615897, -0.1761473]
-gra[10][12][11] = [0.021941906, -0.008812627, -0.022413656, -0.032252528, 0.04717913, -0.0048893415, -0.0111137815, -0.01108202]
-gra[10][12][12] = [-0.3153644, -0.17907926, -0.2795965, -0.1764041, -0.25483686, -0.26501107, -0.29615897, -0.1761473]
-gra[10][12][13] = [0.03465397, 0.09053512, 0.070818484, -0.04267802, 0.061774462, -0.023255207, -0.034763303, -0.06168799]
-gra[10][12][14] = [0.023088023, 0.07583694, -0.006512917, -0.050077446, -0.013676573, 0.015877765, 0.017984802, 0.003852799]
-gra[10][13][10] = [-0.26699868, -0.17984349, -0.26132643, -0.08672568, -0.21775608, -0.21154135, -0.2510417, -0.2465411]
-gra[10][13][11] = [0.026880646, -0.007880481, 0.0059093176, -0.032035075, 0.0749675, -0.019367468, -0.025300737, -0.0133296205]
-gra[10][13][12] = [0.03448535, -0.0041715456, 0.028034342, -0.05057187, 0.053446256, 0.008786059, -0.033961922, -0.016927706]
-gra[10][13][13] = [-0.26699868, -0.17984349, -0.26132643, -0.08672568, -0.21775608, -0.21154135, -0.2510417, -0.2465411]
-gra[10][13][14] = [0.014584247, 0.035479832, -4.2649265E-4, -0.046772767, -0.08912952, -0.008224874, 0.024729319, -0.006639992]
-gra[10][14][10] = [0.24545878, -0.13058239, -0.012254239, -0.43756452]
-gra[10][14][11] = [-0.036215328, -0.022168951, -9.78672E-4, -0.020904908]
-gra[10][14][12] = [-0.05016438, -0.018123059, -0.0023689207, -0.024299968]
-gra[10][14][13] = [-0.033437256, -0.018123059, -9.786718E-4, -0.0047152033]
-gra[10][14][14] = [0.24545878, -0.13058239, -0.012254239, -0.43756452]
-gra[11][0][0] = [-0.12389924]
-gra[11][0][1] = [0.11250799]
-gra[11][0][2] = [-0.020803642]
-gra[11][0][3] = [-0.015740056]
-gra[11][0][4] = [-0.015740056]
-gra[11][0][5] = [0.009709348]
-gra[11][0][6] = [-0.011211409]
-gra[11][0][7] = [0.0140898395]
-gra[11][0][8] = [0.10553579]
-gra[11][0][9] = [0.004992515]
-gra[11][0][10] = [0.06241366]
-gra[11][0][11] = [-0.12389924]
-gra[11][1][0] = [0.0022879262, -0.001958814, 6.207379E-4, 4.4457944E-11, -0.0021720084, 9.538275E-4]
-gra[11][1][1] = [-0.0980223, -0.1556874, -0.17940705, -0.191914, -0.15800656, -0.2076993]
-gra[11][1][2] = [0.070815764, -0.04019269, 0.061212253, -0.021304604, -0.008943601, -0.046964385]
-gra[11][1][3] = [0.03480445, -0.040399235, 0.009230967, -0.019397447, -0.010305206, -0.06565809]
-gra[11][1][4] = [0.043829545, -0.040399235, 0.016051337, -0.019397447, -0.010305206, -0.065682895]
-gra[11][1][5] = [0.048783593, -0.030501723, 0.049452126, -0.014411522, -0.010305206, -0.062384807]
-gra[11][1][6] = [-0.011211409, -0.0024341857, -0.0018631071, -0.018473925, 0.002059937, -0.002325139]
-gra[11][1][7] = [0.098927535, -0.030079987, 0.05705068, -0.027755124, -0.0062002833, -0.072541356]
-gra[11][1][8] = [0.112763375, -3.4384023E-11, -0.029062023, -0.009225717, -0.003922395, -0.0036619226]
-gra[11][1][9] = [0.074122116, -0.03479038, 0.0171996, -0.019397447, -0.007929913, -0.04117297]
-gra[11][1][10] = [0.070592314, 0.05356895, 0.025417577, 0.0056302026, 0.005816114, -0.03663111]
-gra[11][1][11] = [-0.0980223, -0.1556874, -0.17940705, -0.191914, -0.15800656, -0.2076993]
-gra[11][2][0] = [-3.8481143E-5, 0.0, 6.4378086E-4, 0.0042653317, -0.00452922, 0.0031306578, 2.969677E-4, -0.0035838732, 0.0012653338, 0.004467465, -0.008016303]
-gra[11][2][1] = [0.030020196, -3.7906157E-11, -0.047747806, -0.0041412255, -0.02294093, -0.0028272104, -0.0042415615, 0.035186574, 0.0038279954, 0.0010309231, -0.03033242]
-gra[11][2][2] = [-0.16756175, -0.15805623, -0.17044538, -0.14639679, -0.26190105, -0.1729358, -0.2613429, -0.26960972, -0.21621762, -0.14156401, -0.25597513]
-gra[11][2][3] = [-0.0045980383, -0.027203228, -0.05041236, 0.0087688975, -0.02118981, 0.0, 0.0055504087, -0.00686435, -0.0013193127, 0.0010214404, -0.13410753]
-gra[11][2][4] = [-0.008624356, -0.031413544, -0.05190116, 0.011287816, -0.0015978473, -0.0016386209, 0.00510925, -0.009859847, -0.0013193127, 0.009945178, -0.16727719]
-gra[11][2][5] = [-0.016839283, -0.027814709, -0.045556985, 0.01080478, 0.008764084, 0.0049859243, 0.024772864, -0.014020145, -0.0065963734, 0.0048753386, -0.160696]
-gra[11][2][6] = [0.010826467, -0.005398127, -0.042189464, -0.009502113, 0.020070488, -0.015343344, -0.007742171, -0.015615815, 0.0, -2.2300222E-11, -0.08992048]
-gra[11][2][7] = [-0.0058104573, -0.022992909, -0.0093545215, 0.011303109, 0.029116679, -0.0013196387, 0.022071034, 0.008007627, -0.009063331, 9.1650593E-4, -0.16666228]
-gra[11][2][8] = [0.0028593205, -0.033843383, 0.10937937, -0.0012483946, 0.045643046, -0.007926542, -0.049703237, -0.029244697, 0.002475134, 8.743692E-4, -0.048316423]
-gra[11][2][9] = [-0.008840187, -0.028816238, -0.04115401, 0.004407729, 0.06700909, -6.163665E-11, 0.03132334, -0.008266031, -0.0051215123, 9.1650593E-4, -0.14523569]
-gra[11][2][10] = [-0.012713343, 0.06271266, 0.03047761, -0.0023483417, 0.085967824, 0.013169683, 7.657199E-4, -0.039369643, 0.0349213, 0.0033671232, -0.056439284]
-gra[11][2][11] = [-0.16756175, -0.15805623, -0.17044538, -0.14639679, -0.26190105, -0.1729358, -0.2613429, -0.26960972, -0.21621762, -0.14156401, -0.25597513]
-gra[11][3][0] = [-3.8481143E-5, 0.0, -2.546208E-4, 6.207379E-4, 0.0, 0.0031306578, 2.969677E-4, -0.0035838732, 0.0012653338, 0.0020189893, -0.0059786467]
-gra[11][3][1] = [0.030020196, 0.0, -0.0709532, -0.010353064, -0.04391478, -0.004779683, -0.03789397, 0.079702035, 0.0038279954, -0.0024918886, -0.076348856]
-gra[11][3][2] = [-0.010050564, -0.020074947, -0.09627534, 0.0, -0.025120389, -0.010792062, -0.009571605, 0.0045674103, -0.005357419, 0.004071039, -0.049354907]
-gra[11][3][3] = [-0.17200947, -0.19767262, -0.25528848, -0.20228212, -0.3577328, -0.19228561, -0.21679747, -0.40292573, -0.21605387, -0.17789312, -0.2651151]
-gra[11][3][4] = [-0.0076634865, -0.027203228, -0.007962941, 0.017747963, -0.030055411, -0.0016386209, -0.02221351, -0.0063553033, -0.004338989, 0.0031181932, 0.045642]
-gra[11][3][5] = [-0.016839283, -0.027814709, -0.0020009093, 0.017264927, 0.008308632, 0.0049859243, -0.0017681323, -0.012113207, -0.01052086, 0.0031181932, 0.036681686]
-gra[11][3][6] = [-9.563443E-4, -0.00329998, -0.030258507, -0.0057468074, 0.0146678975, -0.018335417, -0.0016823349, -0.010240156, 0.0017409262, 8.040292E-12, -0.0677805]
-gra[11][3][7] = [-0.007663487, -0.022992909, 0.002025697, 0.014275422, 0.006037254, -0.0013196387, -0.00424268, 0.011656271, -0.011340797, 0.0031181932, 0.021348575]
-gra[11][3][8] = [0.0, -0.028557673, 0.111348465, -0.0012483946, 0.043581713, -0.007926542, -0.057652134, -0.008132312, 0.002475134, 2.4045661E-11, -0.08010083]
-gra[11][3][9] = [-0.008840187, -0.027703306, -0.01734548, 0.008724481, 0.019094173, 3.0514854E-4, -0.008290166, 0.013094053, -0.0051215123, 0.007877499, 0.033490654]
-gra[11][3][10] = [-0.012713343, 0.055398878, 0.024536688, -0.0044680266, 0.016944142, 0.01225795, 0.009501182, -0.013563797, 0.0349213, -1.8246614E-11, 8.919211E-4]
-gra[11][3][11] = [-0.17200947, -0.19767262, -0.25528848, -0.20228212, -0.3577328, -0.19228561, -0.21679747, -0.40292573, -0.21605387, -0.17789312, -0.2651151]
-gra[11][4][0] = [-3.8481143E-5, 0.0, 0.002269707, 6.207379E-4, 0.0, 0.0031306578, 2.969677E-4, -0.0035838732, 0.0012653338, 0.004467465, -0.0059786467]
-gra[11][4][1] = [0.030020196, 0.0, -0.0709532, -0.010353064, -0.04391478, -0.004779683, -0.03789397, 0.079702035, 0.0038279954, -0.0024918886, -0.076348856]
-gra[11][4][2] = [-0.010050564, -0.020074947, -0.11560663, 0.0, -0.027456252, -0.014940629, -0.009571605, 0.007836706, -0.0046069673, 0.0031174747, -0.05364394]
-gra[11][4][3] = [-0.013581293, -0.023612332, -0.12310233, 0.0, -0.01927166, -0.008297132, -0.0065214084, -2.5217576E-4, -0.009064015, 0.0025277506, -0.040145326]
-gra[11][4][4] = [-0.16979279, -0.20000182, -0.25528848, -0.20228212, -0.3577328, -0.19228561, -0.21053797, -0.39981967, -0.21605387, -0.17789312, -0.3072443]
-gra[11][4][5] = [-0.016839283, -0.02360439, -0.0024904609, 0.017264927, -0.012885826, 0.0019459366, -0.0053175483, -0.010515601, -0.008362633, 0.002235441, 0.05048409]
-gra[11][4][6] = [1.1364407E-11, -0.004874793, -0.030258507, -0.0070572207, 0.0146678975, -0.018335417, -0.0016823349, -0.010240156, 0.0, -0.0012154061, -0.06982803]
-gra[11][4][7] = [-0.007663487, -0.022992909, 0.002025697, 0.014275422, 0.0065385774, -0.0013196387, -0.00424268, 0.011656271, -0.011340797, 0.0035397436, 0.017222213]
-gra[11][4][8] = [-0.0030642115, -0.028557673, 0.111348465, -0.0012483946, 0.043581713, -0.007926542, -0.057652134, -0.008132312, 0.0024751339, -5.004493E-4, -0.08010083]
-gra[11][4][9] = [-0.008840187, -0.027703306, -0.01734548, 0.008724481, 0.020301398, 0.0, -0.008290166, 0.013094053, -0.0051215123, 0.00829905, 0.029364292]
-gra[11][4][10] = [-0.009854687, 0.055398878, 0.024536688, -0.0067656627, 0.016944142, 0.01225795, 0.007954158, -0.013563797, 0.0349213, -1.8246614E-11, -0.0039156247]
-gra[11][4][11] = [-0.16979279, -0.20000182, -0.25528848, -0.20228212, -0.3577328, -0.19228561, -0.21053797, -0.39981967, -0.21605387, -0.17789312, -0.3072443]
-gra[11][5][0] = [-3.8481143E-5, -0.0019296022, 0.002269707, -7.5689424E-4, 0.0, -0.0023391629, 2.969678E-4, -0.0035838732, 0.0012653338, 0.004467465, -0.0059786467]
-gra[11][5][1] = [0.030020196, 0.0, -0.07765716, -0.010353064, -0.035776734, -0.004779683, -0.03315192, 0.079702035, 0.0038279954, -0.0024918886, -0.08752008]
-gra[11][5][2] = [-0.010050564, -0.020074947, -0.11632947, 0.0, -0.022061262, -0.014940629, -0.009571605, 0.004819586, -0.005357419, 0.004071039, -0.045673024]
-gra[11][5][3] = [-0.013603179, -0.023146072, -0.1193105, 0.0, -0.016212534, -0.012445698, -0.0065214084, -2.5217576E-4, -0.009064015, 0.004071039, -0.036929708]
-gra[11][5][4] = [-0.011138814, -0.024628043, -0.124958254, 0.0, -0.013876671, -0.006897951, -0.0065214084, 0.0022252216, -0.009064015, 0.004071039, -0.0337255]
-gra[11][5][5] = [-0.16979279, -0.19329701, -0.26871237, -0.17054062, -0.29517272, -0.19228561, -0.20988953, -0.3716687, -0.21605387, -0.17789312, -0.2935722]
-gra[11][5][6] = [-6.359549E-4, -0.00329998, -0.029067473, -0.0057468074, 0.0146678975, -0.018335417, -7.880372E-4, -0.013210811, 0.0011668268, 3.0340515E-11, -0.06581834]
-gra[11][5][7] = [-0.007663487, -0.022992909, 0.0034457669, 0.014275422, -2.6907446E-4, -0.0037362042, -0.003336246, 0.011656271, -0.011340797, 0.0035397436, 0.004515754]
-gra[11][5][8] = [0.0, -0.021353321, 0.111348465, -0.0012483946, 0.030117506, -0.007926542, -0.06296009, 9.024069E-4, 0.002475134, 2.4045661E-11, -0.10057392]
-gra[11][5][9] = [-0.008840187, -0.027703306, -0.015925407, 0.02083089, 0.00789333, 0.0, -0.00805038, 0.013094053, -0.0051215123, 0.00829905, 0.025783729]
-gra[11][5][10] = [-0.012713343, 0.055398878, 0.024536688, -0.0067656627, 0.014414227, 0.007067173, 0.0078884885, -0.013563797, 0.0349213, -1.8246614E-11, 0.0035325633]
-gra[11][5][11] = [-0.16979279, -0.19329701, -0.26871237, -0.17054062, -0.29517272, -0.19228561, -0.20988953, -0.3716687, -0.21605387, -0.17789312, -0.2935722]
-gra[11][6][0] = [6.4378086E-4, -1.1624451E-11]
-gra[11][6][1] = [-0.071286656, 0.030801235]
-gra[11][6][2] = [-0.1217342, 0.0070741083]
-gra[11][6][3] = [-0.13029547, 0.0013777877]
-gra[11][6][4] = [-0.13029547, -0.0012991808]
-gra[11][6][5] = [-0.1440661, -0.0012286699]
-gra[11][6][6] = [-0.40509716, -0.22688024]
-gra[11][6][7] = [0.0058593405, -0.016482558]
-gra[11][6][8] = [0.084555104, -0.004157832]
-gra[11][6][9] = [-0.007966436, 0.011194]
-gra[11][6][10] = [0.06020448, -0.0011195537]
-gra[11][6][11] = [-0.40509716, -0.22688024]
-gra[11][7][0] = [-3.8481143E-5, 0.0, 6.4378086E-4, -0.0029844372, 0.0, 7.4807646E-11, 2.969678E-4, -0.0035838732, 0.0012653338, 0.004467465, -0.004436887]
-gra[11][7][1] = [0.030020196, 0.0, -0.06642654, -0.006211838, -0.02472724, -0.004779683, -0.009418331, 0.043953314, 0.005423102, 1.7403252E-4, -0.06141561]
-gra[11][7][2] = [-0.012064191, -0.020074947, -0.11770639, 0.0, -0.02700362, -0.01267732, -0.009571605, 0.0052266098, -0.007392783, 0.0015191694, -0.035501458]
-gra[11][7][3] = [-0.0076743215, -0.035226453, -0.12118573, 0.008403905, -0.016524691, -0.013135118, -0.0065214084, 0.0014358414, -0.009064015, 0.0015191694, -0.0239101]
-gra[11][7][4] = [-0.0060856016, -0.036242165, -0.12118573, 0.008403905, -0.016524691, -0.014724767, -0.0065214084, 0.0039132386, -0.009064015, 0.0015191694, -0.0239101]
-gra[11][7][5] = [-0.0029837268, -0.035226453, -0.13455348, 0.008403905, -0.017453253, -0.008297132, -0.009280194, 0.0016880172, -0.009064015, 0.005695792, -0.025141122]
-gra[11][7][6] = [-0.0015405889, -0.0022070524, -0.06335769, 0.0047623203, 0.0, 0.003376759, 0.0, 0.005881849, -6.80316E-4, 0.0021720878, -0.011135231]
-gra[11][7][7] = [-0.17569938, -0.20042084, -0.26826409, -0.1163828, -0.12838514, -0.16844898, -0.2518397, -0.1839747, -0.23677793, -0.15902653, -0.32666808]
-gra[11][7][8] = [0.0, -0.023188654, 0.110703185, 0.0014310319, 0.050056085, -0.007926542, -0.06307818, -0.012948758, 0.0024751343, 2.4045661E-11, -0.09486357]
-gra[11][7][9] = [-0.009591804, -0.027703306, -0.025527036, 6.3787866E-4, 0.09388393, 2.4217142E-11, 0.048461273, -0.0010446829, -0.0051215123, 0.0059014526, -0.068173446]
-gra[11][7][10] = [-0.017215462, 0.05885046, 0.053072125, -0.0054148408, 0.07146499, 0.004019258, 0.012924673, -0.018397888, 0.02149223, -0.0018405669, -0.0021806522]
-gra[11][7][11] = [-0.17569938, -0.20042084, -0.26826409, -0.1163828, -0.12838514, -0.16844898, -0.2518397, -0.1839747, -0.23677793, -0.15902653, -0.32666808]
-gra[11][8][0] = [0.008247588, -0.0055409744, 6.207379E-4, 4.4457944E-11, -0.0021720084, 9.538275E-4]
-gra[11][8][1] = [-0.003154425, 0.0, -9.987416E-4, -0.0039049454, 0.005938728, 0.029147219]
-gra[11][8][2] = [-0.10532865, -0.020074947, -0.010692279, -0.01267732, 0.006616043, -0.0041057393]
-gra[11][8][3] = [-0.12466324, -0.017386114, -0.010692279, -0.012445698, 0.0044185594, -0.009989234]
-gra[11][8][4] = [-0.1122263, -0.018401826, -0.010692279, -0.014724767, 0.0044185594, -0.009989234]
-gra[11][8][5] = [-0.13072634, -0.017386114, -0.010692279, -0.008297132, 0.0044185594, -0.009989234]
-gra[11][8][6] = [-0.07253664, -0.001275445, 0.0, -0.024378616, -0.0017974195, -0.0031688735]
-gra[11][8][7] = [-0.11197672, -0.030472117, -0.011541045, -0.008694231, 0.0066399304, -0.013961719]
-gra[11][8][8] = [-0.28742653, -0.13806987, -0.1985154, -0.18718107, -0.14203808, -0.16507426]
-gra[11][8][9] = [0.057564765, -0.03289177, 0.025465125, -0.016538091, -0.011358074, -0.04761328]
-gra[11][8][10] = [0.12816171, 0.050723344, 0.060807187, 0.0056302026, 0.018332137, -0.008218465]
-gra[11][8][11] = [-0.28742653, -0.13806987, -0.1985154, -0.18718107, -0.14203808, -0.16507426]
-gra[11][9][0] = [0.0010204252, 0.0, 6.4378086E-4, 0.0078705065, -0.0018813149, 7.4807646E-11, 2.969678E-4, -0.0035838732, 5.0569617E-4, 0.004467465, -0.0059786467]
-gra[11][9][1] = [0.028161941, 0.0, -0.06711676, -0.010353064, -0.0019592715, -0.004779683, -0.014528066, 0.042927664, 0.0038279954, -0.017432136, -0.0529898]
-gra[11][9][2] = [-0.010050564, -0.020074947, -0.11746254, 0.0, -0.018879909, -0.014940629, -0.0045123687, -0.0017202278, -0.005357419, 0.0067355065, -0.048507597]
-gra[11][9][3] = [-0.0127275335, -0.027161064, -0.120398626, 0.0010881304, -0.016212534, -0.012445698, -0.00331613, -2.5217576E-4, -0.009064015, 0.0067355065, -0.0414674]
-gra[11][9][4] = [-0.011138814, -0.028176775, -0.120398626, 0.0010881304, -0.016212534, -0.014724767, -0.00331613, 0.0022252216, -0.009064015, 0.0067355065, -0.0414674]
-gra[11][9][5] = [-0.0116145555, -0.027161064, -0.1337664, 0.0010881305, -0.011718331, -0.008297132, -0.00331613, 0.0, -0.009064015, 0.010838056, -0.04269842]
-gra[11][9][6] = [-0.001125994, -0.001275445, -0.06587058, 0.002083107, -0.0033310815, -0.0025067397, 0.0, 0.0067280075, 0.004428481, 0.0, -0.0050727697]
-gra[11][9][7] = [-0.016229458, 0.0032243507, -0.11327399, -0.0016975328, -0.020984316, -0.0064118747, -2.3427873E-4, 0.004819586, -0.0042669233, 0.006619178, -0.03747481]
-gra[11][9][8] = [-0.0030206593, -6.7004E-11, -0.06808654, -0.0041412255, 5.461057E-4, -0.0019524727, -0.005559218, 0.024523886, -1.2932688E-10, -0.012585728, -0.024195785]
-gra[11][9][9] = [-0.17914513, -0.15761071, -0.18235621, -0.111305825, -0.2861288, -0.19290504, -0.27690607, -0.2174945, -0.20727476, -0.15304866, -0.2752755]
-gra[11][9][10] = [-0.03073125, 0.055398878, 0.019012246, -0.004389991, 0.025585605, 0.006306789, 0.004576511, -0.026553776, 0.023517668, 0.0018559321, 0.0010926872]
-gra[11][9][11] = [-0.17914513, -0.15761071, -0.18235621, -0.111305825, -0.2861288, -0.19290504, -0.27690607, -0.2174945, -0.20727476, -0.15304866, -0.2752755]
-gra[11][10][0] = [0.002703113, 2.4087886E-4, 1.3065474E-10, 6.20738E-4, 0.005225119, 0.002607383, 5.579681E-4]
-gra[11][10][1] = [-0.0060856375, -0.004854968, -0.0039049454, 0.0, -0.022862324, -0.026488628, 0.00603679]
-gra[11][10][2] = [-0.12743556, -0.060402133, -0.015324981, -0.0019249346, -9.88245E-11, -0.009251966, -0.008425626]
-gra[11][10][3] = [-0.1443296, -0.047476254, -0.014137894, -0.0060540326, 0.0, -0.012429759, -0.0074963025]
-gra[11][10][4] = [-0.1443296, -0.048491962, -0.016416963, -0.009311951, 0.0, -0.012516822, -0.0059075826]
-gra[11][10][5] = [-0.15567769, -0.051322438, -0.009989329, -0.0060540326, 2.0781049E-10, -0.011479491, -0.004819333]
-gra[11][10][6] = [-0.05157347, -0.001275445, 0.0031626287, -8.813711E-12, -0.011463992, -0.0019164708, -0.001125994]
-gra[11][10][7] = [-0.13018884, -0.0692743, -0.005840762, -0.004201497, -0.0015797014, -0.0077053998, -0.012563205]
-gra[11][10][8] = [-0.05328215, -6.7004E-11, -0.0039049454, 0.0011713473, -0.011135569, -0.020431118, 0.0]
-gra[11][10][9] = [-0.13123956, -0.046941087, -0.019473545, -0.0025065367, 6.714482E-4, -0.009728871, -0.009844616]
-gra[11][10][10] = [-0.003632035, -0.03903123, -0.12923068, -0.17222962, -0.2806601, -0.24402468, -0.1653744]
-gra[11][10][11] = [-0.003632035, -0.03903123, -0.12923068, -0.17222962, -0.2806601, -0.24402468, -0.1653744]
-gra[11][12][11] = [-0.100144096, -0.09158604, 0.0055445293, -0.11755938, -0.16096544, -0.10694665, -0.3415111, -0.27591932, -0.08365657, -0.10801351, -0.113322936]
-gra[11][12][12] = [-0.100144096, -0.09158604, 0.0055445293, -0.11755938, -0.16096544, -0.10694665, -0.3415111, -0.27591932, -0.08365657, -0.10801351, -0.113322936]
-gra[11][12][13] = [0.056215376, -0.01025449, 0.11834774, 0.07818649, -0.021850904, -0.089146726, -0.006384445, 0.068023905, -0.0016438005, 0.0012229871, -0.0060240654]
-gra[11][12][14] = [0.07236886, 0.05657126, -0.059863858, 0.0061641093, 0.019986097, 0.03692759, 0.120455004, 0.0302211, 9.96112E-11, -2.2505768E-11, -0.06410605]
-gra[11][13][11] = [-0.22570372, -0.14725454, -0.08456526, -0.24363197, -0.23292705, -0.24921647, -0.31250927, -0.29759613, -0.10658293, -0.13203514, -0.21545014]
-gra[11][13][12] = [0.021744007, 0.03055122, 0.16523585, 0.059659015, 0.00602818, -0.030682772, 0.0113601005, 0.038531862, -1.4217425E-4, -0.004681904, -0.00916585]
-gra[11][13][13] = [-0.22570372, -0.14725454, -0.08456526, -0.24363197, -0.23292705, -0.24921647, -0.31250927, -0.29759613, -0.10658293, -0.13203514, -0.21545014]
-gra[11][13][14] = [0.040641047, 0.060274042, -0.101044156, 0.018038081, -0.0021256413, 0.021744264, 0.08580291, 0.011856999, 9.96112E-11, -0.0013691243, -0.067090854]
-gra[11][14][11] = [0.46145654, -0.37053853, -0.2827138, -0.120763496, -0.23904912, -0.11392724, -0.24430634, -0.15843105]
-gra[11][14][12] = [-0.04333491, 0.09871555, 0.08215656, 0.070761316, -0.027274026, -0.0064464738, 0.03838419, -0.039588906]
-gra[11][14][13] = [-0.042344883, 0.027202541, 0.02599654, 0.071606465, -0.024843121, -0.008798459, 0.05347822, -0.042369526]
-gra[11][14][14] = [0.46145654, -0.37053853, -0.2827138, -0.120763496, -0.23904912, -0.11392724, -0.24430634, -0.15843105]
-gra[12][0][0] = [-0.10515191]
-gra[12][0][1] = [0.13606499]
-gra[12][0][2] = [-0.0035667932]
-gra[12][0][3] = [0.005201453]
-gra[12][0][4] = [0.005201453]
-gra[12][0][5] = [0.02007929]
-gra[12][0][6] = [-0.010218365]
-gra[12][0][7] = [0.03649012]
-gra[12][0][8] = [0.062039126]
-gra[12][0][9] = [-0.028238326]
-gra[12][0][10] = [0.052713778]
-gra[12][0][11] = [-0.039478898]
-gra[12][0][12] = [-0.10515191]
-gra[12][1][0] = [0.0022879262, -0.001958814, 6.20738E-4, 4.4457944E-11, -0.0021720084, 9.538275E-4]
-gra[12][1][1] = [-0.07858301, -0.17721513, -0.19805442, -0.17806304, -0.16245575, -0.20236821]
-gra[12][1][2] = [0.088052616, -0.04784693, 0.019412948, -0.026443, -0.0077710547, -0.046964385]
-gra[12][1][3] = [0.055745967, -0.050158635, -0.01847103, -0.019397447, -0.00913266, -0.06744409]
-gra[12][1][4] = [0.064771056, -0.050158635, -0.011650659, -0.019397447, -0.00913266, -0.0674689]
-gra[12][1][5] = [0.059153542, -0.03625734, 0.019686403, -0.019397447, -0.00913266, -0.051904615]
-gra[12][1][6] = [-0.010218365, -0.0024341857, 0.0038837004, -0.016613597, 0.002059937, -0.003209465]
-gra[12][1][7] = [0.12132782, -0.03562906, 0.010628009, -0.027755124, -0.005027737, -0.072541356]
-gra[12][1][8] = [0.06926671, 3.8416823E-5, -0.033108108, -0.019686462, -8.5449056E-4, -0.0036619226]
-gra[12][1][9] = [0.040891282, -0.03618892, -0.022440419, -0.019397447, -0.007967199, -0.046652183]
-gra[12][1][10] = [0.07534326, 0.06808784, 0.04575908, -0.0033964338, 0.005816114, -0.03659642]
-gra[12][1][11] = [0.049664095, -0.032417957, 0.040280573, -0.025225509, -0.026482048, -0.044036984]
-gra[12][1][12] = [-0.07858301, -0.17721513, -0.19805442, -0.17806304, -0.16245575, -0.20236821]
-gra[12][2][0] = [-3.8481143E-5, 0.0, 6.4378075E-4, 0.0042653317, -0.009577542, 0.0031306578, 2.969677E-4, 1.1202662E-4, -6.5726263E-4, 0.0015309223, -0.008016303]
-gra[12][2][1] = [-5.13921E-4, -3.7906157E-11, -0.051293716, -0.0041412255, -0.020474708, -0.0028272104, -0.0042415615, 0.035186574, 0.0019214812, 0.0035228117, -0.034274463]
-gra[12][2][2] = [-0.1648293, -0.17958395, -0.15100609, -0.16504414, -0.26511794, -0.15908478, -0.27147496, -0.28317097, -0.20314461, -0.13655183, -0.25064403]
-gra[12][2][3] = [-0.0016788694, -0.03485746, -0.029470855, -0.018933097, -0.02044635, 0.0, 0.0066471035, -0.0063043977, -0.002073156, -0.0052225264, -0.13589352]
-gra[12][2][4] = [-0.0057051876, -0.041172937, -0.030959653, -0.016414179, -8.543874E-4, -0.0016386209, 0.008664845, -0.009299895, -0.002073156, 0.003701211, -0.16906321]
-gra[12][2][5] = [-0.004744318, -0.033570327, -0.035187043, -0.018960936, 0.009507546, 0.0, 0.01801002, -0.013460195, -0.0052353498, -0.0013686286, -0.1502158]
-gra[12][2][6] = [0.010826467, -0.005398127, -0.04119642, -0.003755305, 0.019529367, -0.013483018, -0.007742171, -0.016999522, 0.0, 0.0028889112, -0.09080481]
-gra[12][2][7] = [-0.002891289, -0.028541982, 0.013045758, -0.03511956, 0.029860139, -0.0013196387, 0.024343483, 0.006281326, -0.0067974986, -0.0050971014, -0.16666228]
-gra[12][2][8] = [0.0028593205, -0.033804964, 0.065882705, -0.0052944794, 0.045643046, -0.018387286, -0.05146163, -0.029244697, 0.002475134, 8.743692E-4, -0.048316423]
-gra[12][2][9] = [-0.006218316, -0.030214773, -0.074384846, -0.035232294, 0.06821702, -6.163665E-11, 0.031392615, -0.0077060787, -0.0028556797, -0.0053274613, -0.1507149]
-gra[12][2][10] = [-0.023877224, 0.07723155, 0.025044672, 0.017511534, 0.088458255, 0.004143046, 0.0061719525, -0.040925086, 0.024282468, 0.0033671234, -0.073608294]
-gra[12][2][11] = [-0.004744318, -0.025330877, -0.10397213, -0.023069104, 0.08292447, 0.0076809367, 0.025465066, 0.0034794435, -0.0033134911, -0.008031685, -0.09042414]
-gra[12][2][12] = [-0.1648293, -0.17958395, -0.15100609, -0.16504414, -0.26511794, -0.15908478, -0.27147496, -0.28317097, -0.20314461, -0.13655183, -0.25064403]
-gra[12][3][0] = [-3.8481143E-5, 0.0, -2.546209E-4, 6.20738E-4, -0.0050483216, 0.0031306578, 2.969677E-4, 1.1202659E-4, -6.5726263E-4, -9.175534E-4, -0.0059786467]
-gra[12][3][1] = [-5.13921E-4, 0.0, -0.0740106, -0.010353064, -0.04144856, -0.004779683, -0.03789397, 0.079702035, 0.0019214812, 0.0, -0.0802909]
-gra[12][3][2] = [-0.010050564, -0.027438035, -0.06738606, 0.0, -0.025120389, -0.015896093, -0.009571605, 0.0045674103, 0.0011093304, 0.00255187, -0.054485943]
-gra[12][3][3] = [-0.16927701, -0.21920037, -0.23584919, -0.22092949, -0.36094978, -0.17843461, -0.2269295, -0.41648698, -0.20298086, -0.17288092, -0.25978398]
-gra[12][3][4] = [-0.004744318, -0.03485746, 0.012978567, -0.009954032, -0.029311951, -0.0016386209, -0.018657913, -0.005795351, -0.0050928323, -0.0031257737, 0.043856]
-gra[12][3][5] = [-0.004744318, -0.033570327, 0.008369034, -0.012500789, 0.009052092, 0.0, -0.008530973, -0.011553255, -0.009159835, -0.0031257737, 0.04716188]
-gra[12][3][6] = [-9.563443E-4, -0.00329998, -0.029265463, 0.0, 0.014126777, -0.016475089, -0.0016823349, -0.011623862, 0.0017409262, 0.0028889112, -0.06866483]
-gra[12][3][7] = [-0.0047443183, -0.028541982, 0.024425976, -0.032147244, 0.006780714, -0.0013196387, -0.0019702304, 0.009929972, -0.009074964, -0.0028954144, 0.021348575]
-gra[12][3][8] = [0.0, -0.028519256, 0.06785178, -0.0052944794, 0.043581713, -0.018387286, -0.059410527, -0.008132312, 0.002475134, 2.4045661E-11, -0.08010083]
-gra[12][3][9] = [-0.006218316, -0.029101841, -0.05057632, -0.030915538, 0.020302098, 3.0514854E-4, -0.008220887, 0.013654005, -0.0028556797, 0.0016335323, 0.028011441]
-gra[12][3][10] = [-0.022339152, 0.06991776, 0.01910374, 0.015391848, 0.019434562, 0.0032313145, 0.014907414, -0.015119242, 0.024282468, 1.302987E-10, -0.01627709]
-gra[12][3][11] = [-0.0073551796, -0.025330877, -0.105846174, -0.032042608, 0.014669917, 0.0076809367, -0.017299226, 0.01757557, 1.450358E-4, -0.0010706913, 0.02720009]
-gra[12][3][12] = [-0.16927701, -0.21920037, -0.23584919, -0.22092949, -0.36094978, -0.17843461, -0.2269295, -0.41648698, -0.20298086, -0.17288092, -0.25978398]
-gra[12][4][0] = [-3.8481143E-5, 0.0, 0.002269707, 6.20738E-4, -0.0050483216, 0.0031306578, 2.969677E-4, 1.1202659E-4, -6.5726263E-4, 0.0015309223, -0.0059786467]
-gra[12][4][1] = [-5.13921E-4, 0.0, -0.0740106, -0.010353064, -0.04144856, -0.004779683, -0.03789397, 0.079702035, 0.0019214812, 0.0, -0.0802909]
-gra[12][4][2] = [-0.010050564, -0.027438035, -0.08671735, 0.0, -0.027456252, -0.02211894, -0.009571605, 0.007836706, 0.001859782, 0.0015983053, -0.05877498]
-gra[12][4][3] = [-0.013581293, -0.027913438, -0.10705456, 0.0, -0.01927166, -0.010371415, -0.0065214084, -2.5217576E-4, -0.0047528488, 0.0010085813, -0.038101066]
-gra[12][4][4] = [-0.16706033, -0.22152957, -0.23584919, -0.22092949, -0.36094978, -0.17843461, -0.22067, -0.41338092, -0.20298086, -0.17288092, -0.3019132]
-gra[12][4][5] = [-0.004744318, -0.02725485, 0.007879483, -0.012500789, -0.012142366, -0.0030399878, -0.01208039, -0.009955649, -0.0070016095, -0.004008526, 0.060964286]
-gra[12][4][6] = [1.1364407E-11, -0.004874793, -0.029265463, -0.0013104129, 0.014126777, -0.016475089, -0.0016823349, -0.011623862, 0.0, 0.0016735051, -0.07071236]
-gra[12][4][7] = [-0.0047443183, -0.028541982, 0.024425976, -0.032147244, 0.0072820373, -0.0013196387, -0.0019702304, 0.009929972, -0.009074964, -0.002473864, 0.017222213]
-gra[12][4][8] = [-0.0030642115, -0.028519256, 0.06785178, -0.0052944794, 0.043581713, -0.018387286, -0.059410527, -0.008132312, 0.0024751339, -5.004493E-4, -0.08010083]
-gra[12][4][9] = [-0.006218316, -0.029101841, -0.05057632, -0.030915538, 0.021509323, 0.0, -0.008220887, 0.013654005, -0.0028556797, 0.0020550827, 0.023885079]
-gra[12][4][10] = [-0.019480497, 0.06991776, 0.01910374, 0.013094213, 0.019434562, 0.0032313145, 0.01336039, -0.015119242, 0.024282468, 1.302987E-10, -0.021084636]
-gra[12][4][11] = [-0.0073551796, -0.025330877, -0.105846174, -0.032042608, 0.013415008, 0.0076809367, -0.017299226, 0.01757557, 1.450358E-4, 0.009044054, 0.023073727]
-gra[12][4][12] = [-0.16706033, -0.22152957, -0.23584919, -0.22092949, -0.36094978, -0.17843461, -0.22067, -0.41338092, -0.20298086, -0.17288092, -0.3019132]
-gra[12][5][0] = [-3.8481143E-5, -0.0019296022, 0.002269707, -7.568941E-4, -0.0050483216, -0.0023391629, 2.969678E-4, 1.1202659E-4, -6.5726263E-4, 0.0015309223, -0.0059786467]
-gra[12][5][1] = [-5.13921E-4, 0.0, -0.08071456, -0.010353064, -0.03331051, -0.004779683, -0.03315192, 0.079702035, 0.0019214812, 0.0, -0.09146212]
-gra[12][5][2] = [-0.010050564, -0.027438035, -0.08744019, 0.0, -0.022061262, -0.02211894, -0.009571605, 0.004819586, 0.0011093304, 0.00255187, -0.050804067]
-gra[12][5][3] = [-0.013603179, -0.027447177, -0.10326273, 0.0, -0.016212534, -0.016594263, -0.0065214084, -2.5217576E-4, -0.0047528488, 0.00255187, -0.034885447]
-gra[12][5][4] = [-0.011138814, -0.02892915, -0.10891048, 0.0, -0.013876671, -0.008972234, -0.0065214084, 0.0022252216, -0.0047528488, 0.00255187, -0.03272793]
-gra[12][5][5] = [-0.16706033, -0.21482477, -0.24927308, -0.18918799, -0.29838967, -0.17843461, -0.22002156, -0.38522995, -0.20298086, -0.17288092, -0.28824112]
-gra[12][5][6] = [-6.359549E-4, -0.00329998, -0.02807443, 0.0, 0.014126777, -0.016475089, -7.880372E-4, -0.013210811, 0.0011668268, 0.0028889112, -0.066702664]
-gra[12][5][7] = [-0.0047443183, -0.028541982, 0.025846047, -0.032147244, 4.7438545E-4, -0.0037362042, -0.0010637965, 0.009929972, -0.009074964, -0.002473864, 0.004515754]
-gra[12][5][8] = [0.0, -0.021314904, 0.06785178, -0.0052944794, 0.030117506, -0.018387286, -0.06471848, 9.024069E-4, 0.002475134, 2.4045661E-11, -0.10057392]
-gra[12][5][9] = [-0.006218316, -0.029101841, -0.04915625, -0.018809127, 0.009101256, 0.0, -0.007981101, 0.013654005, -0.0028556797, 0.0020550827, 0.020304516]
-gra[12][5][10] = [-0.022339152, 0.06991776, 0.01910374, 0.013094213, 0.016904647, -0.0019594636, 0.013294723, -0.015119242, 0.024282468, 0.0, -0.013636445]
-gra[12][5][11] = [-0.0073551796, -0.025330877, -0.10442609, -0.032042608, 0.011576987, 0.0076809367, -0.01705944, 0.01757557, 1.450358E-4, -0.0015840135, 0.010367265]
-gra[12][5][12] = [-0.16706033, -0.21482477, -0.24927308, -0.18918799, -0.29838967, -0.17843461, -0.22002156, -0.38522995, -0.20298086, -0.17288092, -0.28824112]
-gra[12][6][0] = [6.4378075E-4, 0.0]
-gra[12][6][1] = [-0.07434406, 0.030801235]
-gra[12][6][2] = [-0.092844926, 0.0]
-gra[12][6][3] = [-0.11424769, 0.0026769685]
-gra[12][6][4] = [-0.11424769, 0.0]
-gra[12][6][5] = [-0.12801832, -0.0012286699]
-gra[12][6][6] = [-0.3856579, -0.2287598]
-gra[12][6][7] = [0.02825962, -0.016482558]
-gra[12][6][8] = [0.041058443, -0.004157832]
-gra[12][6][9] = [-0.041197278, 0.011194]
-gra[12][6][10] = [0.050504595, -0.0011195537]
-gra[12][6][11] = [-0.055323012, -0.0022921383]
-gra[12][6][12] = [-0.3856579, -0.2287598]
-gra[12][7][0] = [-3.8481143E-5, 0.0, 6.4378075E-4, -0.0029844372, -0.0050483216, 7.4807646E-11, 2.969678E-4, 1.1202662E-4, -6.5726263E-4, 0.0015309223, -0.004436887]
-gra[12][7][1] = [-5.13921E-4, 0.0, -0.06948394, -0.006211838, -0.02226102, -0.004779683, -0.009418331, 0.043953314, 0.003516588, 0.002665921, -0.065357655]
-gra[12][7][2] = [-0.012064191, -0.027438035, -0.08881713, 0.0, -0.02700362, -0.019855632, -0.009571605, 0.0052266098, -9.260336E-4, 0.0, -0.0406325]
-gra[12][7][3] = [-0.0076743215, -0.039527558, -0.10513796, 0.008403905, -0.016524691, -0.017283684, -0.0065214084, 0.0014358414, -0.0047528488, 0.0, -0.02186584]
-gra[12][7][4] = [-0.0060856016, -0.04054327, -0.10513796, 0.008403905, -0.016524691, -0.018873332, -0.0065214084, 0.0039132386, -0.0047528488, 0.0, -0.02291253]
-gra[12][7][5] = [-0.0029837268, -0.039527558, -0.11648606, 0.008327524, -0.017453253, -0.010371415, -0.009280194, 0.0016880172, -0.0047528488, 0.0041766223, -0.023096858]
-gra[12][7][6] = [-0.0015405889, -9.316074E-4, -0.071566254, 0.0047623203, 0.0, 0.0029634302, 0.0, 0.0049496302, -6.80316E-4, 0.0021720878, -0.011135231]
-gra[12][7][7] = [-0.17296693, -0.2219486, -0.24882478, -0.13503015, -0.13160208, -0.15459797, -0.2619717, -0.19753595, -0.22370492, -0.15401436, -0.321337]
-gra[12][7][8] = [0.0, -0.023150237, 0.068436705, -0.002615053, 0.050056085, -0.018387286, -0.06659655, -0.012948758, 0.0024751343, 2.4045661E-11, -0.09486357]
-gra[12][7][9] = [-0.0069699325, -0.029101841, -0.05875787, -0.039002147, 0.095091864, 2.4217142E-11, 0.048530553, -4.8473087E-4, -0.0028556797, -3.4251437E-4, -0.073652655]
-gra[12][7][10] = [-0.028379343, 0.07336935, 0.047639176, 0.013497463, 0.07395541, -0.0050073783, 0.01256845, -0.019953335, 0.0108534, -0.0018405669, -0.019349663]
-gra[12][7][11] = [-0.0029198912, -0.025330877, -0.08893005, -0.032638032, 0.121397406, 0.0076809367, 0.033207543, -6.217086E-4, -0.004560237, -0.005408447, -0.07587983]
-gra[12][7][12] = [-0.17296693, -0.2219486, -0.24882478, -0.13503015, -0.13160208, -0.15459797, -0.2619717, -0.19753595, -0.22370492, -0.15401436, -0.321337]
-gra[12][8][0] = [0.008247588, -0.0055409744, 6.20738E-4, 4.4457944E-11, -0.0021720084, 9.538275E-4]
-gra[12][8][1] = [-0.006211823, 0.0, -9.987416E-4, -0.0039049454, 0.005938728, 0.025205178]
-gra[12][8][2] = [-0.07643938, -0.027438035, -0.010692279, -0.019855632, 0.006616043, -0.00923678]
-gra[12][8][3] = [-0.10861548, -0.021687219, -0.010692279, -0.016594263, 0.0044185594, -0.007944971]
-gra[12][8][4] = [-0.09617853, -0.02270293, -0.010692279, -0.018873332, 0.0044185594, -0.008991664]
-gra[12][8][5] = [-0.11265888, -0.021687219, -0.010768659, -0.010371415, 0.0044185594, -0.007944971]
-gra[12][8][6] = [-0.07895839, 0.0, 0.0, -0.024791945, -0.0017974195, -0.0031688735]
-gra[12][8][7] = [-0.08424463, -0.031116845, -0.011541045, -0.010768514, 0.0066399304, -0.011917457]
-gra[12][8][8] = [-0.26798728, -0.15959759, -0.21716277, -0.1733301, -0.14648728, -0.15974315]
-gra[12][8][9] = [0.024333926, -0.034290306, -0.01417489, -0.016538091, -0.01139536, -0.053092495]
-gra[12][8][10] = [0.13705663, 0.06524223, 0.0811487, -0.0033964338, 0.018332137, -0.008183777]
-gra[12][8][11] = [0.015939308, -0.030519342, 0.010764442, -0.016941465, -0.03548946, -0.054613106]
-gra[12][8][12] = [-0.26798728, -0.15959759, -0.21716277, -0.1733301, -0.14648728, -0.15974315]
-gra[12][9][0] = [0.0010204252, 0.0, 6.4378075E-4, 0.0078705065, -0.006929637, 7.4807646E-11, 2.969678E-4, 1.1202662E-4, -0.0014169003, 0.0015309223, -0.0059786467]
-gra[12][9][1] = [-0.002372175, 0.0, -0.070174165, -0.010353064, 5.069508E-4, -0.004779683, -0.014528066, 0.042927664, 0.0019214812, -0.014940248, -0.056931846]
-gra[12][9][2] = [-0.010050564, -0.027438035, -0.08857328, 0.0, -0.018879909, -0.02211894, -0.0045123687, -0.0017202278, 0.0011093304, 0.005216337, -0.05363864]
-gra[12][9][3] = [-0.0127275335, -0.03146217, -0.10435086, 0.0010881304, -0.016212534, -0.016594263, -0.00331613, -2.5217576E-4, -0.0047528488, 0.005216337, -0.039423138]
-gra[12][9][4] = [-0.011138814, -0.03247788, -0.10435086, 0.0010881304, -0.016212534, -0.018873332, -0.00331613, 0.0022252216, -0.0047528488, 0.005216337, -0.04046983]
-gra[12][9][5] = [-0.0116145555, -0.03146217, -0.115698956, 0.0010117503, -0.011718331, -0.010371415, -0.00331613, 0.0, -0.0047528488, 0.009318886, -0.040654156]
-gra[12][9][6] = [-0.001125994, 0.0, -0.07229233, 0.002083107, -0.0033310815, -0.0029200683, 0.0, 0.0057957885, 0.008363578, -4.639659E-12, -0.0050727697]
-gra[12][9][7] = [-0.0187421, 0.0025796203, -0.08554189, -0.0016975328, -0.020984316, -0.008486157, -2.3427873E-4, 0.004819586, 4.4242945E-5, 0.005100009, -0.035430547]
-gra[12][9][8] = [-0.0030206593, 0.0, -0.07876769, -0.0041412255, 0.0054565035, -0.0019524727, -0.005559218, 0.024523886, -1.2932688E-10, -0.012585728, -0.028795455]
-gra[12][9][9] = [-0.17641266, -0.17913842, -0.16291693, -0.12995316, -0.28934565, -0.17905404, -0.28703806, -0.23105575, -0.19420177, -0.1480365, -0.2699444]
-gra[12][9][10] = [-0.041895133, 0.06991776, 0.013579304, 0.015469885, 0.028076027, -0.0027198482, 0.009982745, -0.028109219, 0.012878839, 0.0018559321, -0.01863579]
-gra[12][9][11] = [-0.004744318, -0.025330877, -0.120270304, -0.019102708, 0.01950083, 0.0076809367, 0.030894147, 0.029762033, -0.0033134911, 0.0056220004, 0.05215506]
-gra[12][9][12] = [-0.17641266, -0.17913842, -0.16291693, -0.12995316, -0.28934565, -0.17905404, -0.28703806, -0.23105575, -0.19420177, -0.1480365, -0.2699444]
-gra[12][10][0] = [0.0027031128, 2.4087886E-4, 1.3065474E-10, 6.207381E-4, 0.005225119, 0.002607383, -0.0046446207]
-gra[12][10][1] = [-0.013131462, -0.004854968, -0.0039049454, 0.0, -0.022862324, -0.030430669, 0.0054494757]
-gra[12][10][2] = [-0.11364833, -0.06776521, -0.021547828, -0.0019249347, -9.88245E-11, -0.017155558, -0.009961104]
-gra[12][10][3] = [-0.14122392, -0.051777363, -0.01828646, -0.0060540326, 0.002196358, -0.013158046, -0.010008944]
-gra[12][10][4] = [-0.14122392, -0.05279307, -0.020565528, -0.009311951, 0.002196358, -0.014291802, -0.008420223]
-gra[12][10][5] = [-0.15257202, -0.055623546, -0.012063611, -0.006130413, 0.0031230266, -0.00943523, -0.0073319743]
-gra[12][10][6] = [-0.071703576, 0.0, 0.0027493, -8.813711E-12, -0.0057086376, -0.0019164708, -0.001125994]
-gra[12][10][7] = [-0.11488428, -0.069919035, -0.007915045, -0.004201497, 1.1974003E-4, -0.0056611383, -0.017588487]
-gra[12][10][8] = [-0.06480228, 8.0218556E-4, -0.0039049454, -8.114468E-4, -0.007725291, -0.025030788, 0.0015275365]
-gra[12][10][9] = [-0.12151261, -0.046710342, -0.023622112, -0.0025065367, 6.714482E-4, -0.007684609, -0.014869897]
-gra[12][10][10] = [-0.04098353, -0.09227586, -0.121592574, -0.23921865, -0.34364283, -0.350644, -0.17361926]
-gra[12][10][11] = [0.077353664, -0.025852533, 0.0019329089, -0.045883507, 0.004905568, 0.0060856706, -0.0054457206]
-gra[12][10][12] = [-0.04098353, -0.09227586, -0.121592574, -0.23921865, -0.34364283, -0.350644, -0.17361926]
-gra[12][11][0] = [-3.8481143E-5, 0.0, 6.4378075E-4, 6.20738E-4, -0.0041380986, 7.4807646E-11, 2.969678E-4, 0.0021298332, -3.908082E-4, 0.0015309223, -0.0059786467]
-gra[12][11][1] = [-0.002372175, -3.7906157E-11, -0.0620731, -0.006211838, -0.006399732, -0.004779683, -0.01145776, 0.049474724, 0.0019214812, -4.4388496E-11, -0.06600562]
-gra[12][11][2] = [-0.010050564, -0.025332876, -0.07972554, 0.0, -0.017035853, -0.017464971, -9.650856E-4, 0.004819586, 0.0011093304, 0.005216337, -0.049794633]
-gra[12][11][3] = [-0.0127275335, -0.029357009, -0.09755905, 0.0010881305, -0.013876671, -0.012445698, 2.311531E-4, -2.5217576E-4, -0.0047528488, 0.005216337, -0.035360437]
-gra[12][11][4] = [-0.011138814, -0.03037272, -0.09755905, 0.0010881305, -0.013876671, -0.014724767, 2.311531E-4, 0.0022252216, -0.0047528488, 0.005216337, -0.036407128]
-gra[12][11][5] = [-0.010050564, -0.029357009, -0.108907156, -0.0014421018, -0.013876671, -0.008297132, 2.311531E-4, -7.2720836E-6, -0.0047528488, 0.009392959, -0.036591455]
-gra[12][11][6] = [-0.001125994, 0.0, -0.06849815, 0.0031763045, -0.0016293218, -0.004313529, 0.0, 0.0049496302, 0.007193418, -4.639659E-12, -0.008332037]
-gra[12][11][7] = [-0.017588487, -0.026489059, -0.080878146, -0.0016975328, -0.018648453, -0.004148566, 0.0033130045, 0.004819586, 4.4242945E-5, 0.0065824687, -0.034891326]
-gra[12][11][8] = [-0.004225553, 0.0, -0.09060159, -0.0041412255, 0.010023229, -0.0039049454, -0.012820947, 0.042075388, -1.2932688E-10, -0.012585728, -0.047103584]
-gra[12][11][9] = [-0.013322491, -0.02378166, -0.07438753, 0.0010881305, -0.011540808, -0.021613538, 0.002787061, 0.0013000679, -0.0064115636, 0.00468833, -0.050671246]
-gra[12][11][10] = [-0.0053089955, -0.0055740727, 0.05267254, 0.008118987, 0.0011185199, 0.010369438, -0.033235624, -0.068654336, 5.1445976E-11, 0.0012886577, -0.041671593]
-gra[12][11][11] = [-0.16127247, -0.13955387, -0.076390915, -0.10867561, -0.12649849, -0.1822295, -0.2659423, -0.1655591, -0.20603198, -0.14757687, -0.22842984]
-gra[12][11][12] = [-0.16127247, -0.13955387, -0.076390915, -0.10867561, -0.12649849, -0.1822295, -0.2659423, -0.1655591, -0.20603198, -0.14757687, -0.22842984]
-gra[12][13][12] = [-0.0658199, 0.11616026, 0.005189496, -0.08350004, -0.103413984, -0.20297602, -0.2756635, -0.1898117, -0.0919149, -0.109432496, -0.1414069]
-gra[12][13][13] = [-0.0658199, 0.11616026, 0.005189496, -0.08350004, -0.103413984, -0.20297602, -0.2756635, -0.1898117, -0.0919149, -0.109432496, -0.1414069]
-gra[12][13][14] = [-0.03055281, 0.03228754, -0.1253913, 0.025314178, -0.007795457, 0.02670395, 0.08701053, 0.01655003, 0.0, -0.0013691243, -0.067090854]
-gra[12][14][12] = [0.40465567, -0.40797436, -0.2669245, -0.0026956042, -0.23772454, -0.11392724, -0.20921792, -0.18406665]
-gra[12][14][13] = [-0.037709318, 0.10248319, 0.106661454, 0.087078094, -0.02219873, -0.0064464738, 0.017485827, -0.043919954]
-gra[12][14][14] = [0.40465567, -0.40797436, -0.2669245, -0.0026956042, -0.23772454, -0.11392724, -0.20921792, -0.18406665]
-gra[13][0][0] = [-0.08952447]
-gra[13][0][1] = [0.12116575]
-gra[13][0][2] = [0.020609686]
-gra[13][0][3] = [0.027726827]
-gra[13][0][4] = [0.029377932]
-gra[13][0][5] = [0.037763137]
-gra[13][0][6] = [-0.00922532]
-gra[13][0][7] = [0.050046057]
-gra[13][0][8] = [0.04002815]
-gra[13][0][9] = [0.008192802]
-gra[13][0][10] = [0.08633158]
-gra[13][0][11] = [-0.037312046]
-gra[13][0][12] = [0.036733776]
-gra[13][0][13] = [-0.08952447]
-gra[13][1][0] = [0.0022879262, -0.001958814, 6.20738E-4, 4.4457944E-11, -0.0021720084, 9.538275E-4]
-gra[13][1][1] = [-0.055141833, -0.18159214, -0.2310143, -0.1775042, -0.16245575, -0.17656916]
-gra[13][1][2] = [0.112229094, -0.04588853, 0.020137032, -0.026443, -0.0077710547, -0.046964385]
-gra[13][1][3] = [0.07827134, -0.04609508, -0.017746942, -0.019397447, -0.00913266, -0.06840449]
-gra[13][1][4] = [0.088947535, -0.04609508, -0.010926573, -0.019397447, -0.00913266, -0.0674689]
-gra[13][1][5] = [0.07683738, -0.031788856, 0.018829808, -0.019397447, -0.00913266, -0.04587588]
-gra[13][1][6] = [-0.00922532, -0.0024341857, 0.007006275, -0.0169596, 0.008638527, -0.003209465]
-gra[13][1][7] = [0.13488376, -0.035775825, 0.009771412, -0.024018921, -0.0020519788, -0.072541356]
-gra[13][1][8] = [0.047255743, 0.0037917919, -0.033108108, -0.015537896, -0.0065630274, -0.0026946948]
-gra[13][1][9] = [0.0773224, -0.03633568, -0.021127176, -0.019397447, -0.007967199, -0.051424008]
-gra[13][1][10] = [0.108961046, 0.060693294, 0.054833442, 2.4091253E-11, 0.00469194, -0.033955812]
-gra[13][1][11] = [0.057086185, -0.046474654, 0.018150322, -0.034626793, -0.02501236, -0.06334714]
-gra[13][1][12] = [0.10698522, -0.04167862, -0.016609259, -0.019397447, -0.017039627, -0.050599117]
-gra[13][1][13] = [-0.055141833, -0.18159214, -0.2310143, -0.1775042, -0.16245575, -0.17656916]
-gra[13][2][0] = [-3.8481143E-5, 0.0, 6.4378075E-4, 0.0042653317, -0.008087347, 0.0031306578, 2.969677E-4, -2.252149E-11, 0.0034323288, 0.0015309223, -0.008016303]
-gra[13][2][1] = [-5.4985366E-4, -3.7906157E-11, -0.047306664, -0.0041412255, -0.02294093, -0.0028272104, -0.0042415615, 0.035186574, 0.0019214812, 1.8304982E-4, -0.034932088]
-gra[13][2][2] = [-0.17586473, -0.18396096, -0.12756495, -0.19800399, -0.27966103, -0.15852593, -0.28207782, -0.26794708, -0.21708418, -0.13176982, -0.22484498]
-gra[13][2][3] = [-0.0042467928, -0.032899063, -0.0069454797, -0.018209012, -0.02118981, 0.0, 0.0043394, -0.00686435, -0.002073156, -0.0052225264, -0.13685393]
-gra[13][2][4] = [-0.0057051876, -0.037109382, -0.0067831725, -0.015690094, -0.0015978473, -0.0016386209, 7.817097E-4, -0.012367459, -0.002073156, 0.003701211, -0.16906321]
-gra[13][2][5] = [-0.004744318, -0.029101841, -0.017503193, -0.019817533, 0.010586387, 0.0, 0.012585785, -0.014020145, -0.0052353498, -0.0013686286, -0.14418706]
-gra[13][2][6] = [0.010826467, -0.005398127, -0.040203378, -6.327303E-4, 0.019529367, -0.013829023, -0.007742171, -0.016999522, 0.0, 0.001967366, -0.09080481]
-gra[13][2][7] = [-0.002891289, -0.028688747, 0.026601702, -0.03597616, 0.02752462, 0.0024165655, 0.018569034, 0.008007627, -0.0067974986, -0.0053274613, -0.16666228]
-gra[13][2][8] = [0.0028593205, -0.03005159, 0.04387173, -0.0052944794, 0.045643046, -0.014238721, -0.0491267, -0.02992584, 0.002475134, 8.7436906E-4, -0.047349196]
-gra[13][2][9] = [-0.004744318, -0.030361539, -0.03795372, -0.033919044, 0.06747356, -6.163665E-11, 0.029084913, -0.008266031, -0.0028556797, -0.0053274613, -0.1554867]
-gra[13][2][10] = [-0.02512641, 0.069837, 0.058662485, 0.026585884, 0.09000933, 0.0075394805, 0.004756875, -0.040925086, 0.028262286, 0.004521761, -0.07096769]
-gra[13][2][11] = [-0.0057051876, -0.03748896, -0.08736233, -0.01523703, 0.07181907, -0.0017203483, 0.015343863, 0.004421005, -0.0023095226, -0.008031685, -0.10951381]
-gra[13][2][12] = [-0.004744318, -0.029274868, 0.016431537, -0.037910536, 0.057670604, 0.0, 0.036615655, 0.0033570318, -0.0067974986, -0.0053274613, -0.18969187]
-gra[13][2][13] = [-0.17586473, -0.18396096, -0.12756495, -0.19800399, -0.27966103, -0.15852593, -0.28207782, -0.26794708, -0.21708418, -0.13176982, -0.22484498]
-gra[13][3][0] = [-3.8481143E-5, 0.0, -2.546209E-4, 6.20738E-4, -0.003558128, 0.0031306578, 2.969677E-4, -5.3025438E-11, 0.0034323288, -9.175534E-4, -0.0059786467]
-gra[13][3][1] = [-5.4985366E-4, 0.0, -0.06591385, -0.010353064, -0.04391478, -0.004779683, -0.03789397, 0.079702035, 0.0019214812, -0.0033397619, -0.08094852]
-gra[13][3][2] = [-0.012531618, -0.02149262, -0.08160064, 0.0017225409, -0.025120389, -0.010560441, -0.009571605, 0.0045674103, -0.0010462527, 0.00255187, -0.051743556]
-gra[13][3][3] = [-0.18031244, -0.22357735, -0.21240802, -0.25388938, -0.37549284, -0.17787576, -0.23753236, -0.40126306, -0.21692044, -0.1680989, -0.23398493]
-gra[13][3][4] = [-0.004744318, -0.032899063, 0.03715505, -0.009229947, -0.030055411, -0.0016386209, -0.023424516, -0.008862917, -0.0050928323, -0.0031257737, 0.043856]
-gra[13][3][5] = [-0.004744318, -0.029101841, 0.026052877, -0.013357386, 0.010130936, 0.0, -0.013955208, -0.012113207, -0.009159835, -0.0031257737, 0.053190615]
-gra[13][3][6] = [-9.563443E-4, -0.00329998, -0.02827242, 0.0031225746, 0.014126778, -0.016821094, -0.0016823349, -0.011623862, 0.0017409262, 0.001967366, -0.06866483]
-gra[13][3][7] = [-0.0047443183, -0.028688747, 0.037981912, -0.033003844, 0.004445195, 0.0024165655, -0.007744682, 0.011656271, -0.009074964, -0.0031257737, 0.021348575]
-gra[13][3][8] = [0.0, -0.02476588, 0.045840815, -0.0052944794, 0.043581713, -0.014238721, -0.057075597, -0.008813456, 0.002475134, -1.1985166E-10, -0.07913361]
-gra[13][3][9] = [-0.004744318, -0.029248606, -0.0141451955, -0.029602291, 0.019558635, 3.0514854E-4, -0.010528591, 0.013094053, -0.0028556797, 0.0016335323, 0.023239616]
-gra[13][3][10] = [-0.023588339, 0.062523216, 0.052721545, 0.024466196, 0.020985646, 0.0066277483, 0.013492335, -0.015119242, 0.028262286, 0.0011546377, -0.013636478]
-gra[13][3][11] = [-0.008316049, -0.03748896, -0.089236364, -0.024210531, 0.0035645193, -0.0017203483, -0.02742043, 0.018517133, 0.0011490043, -0.0010706913, 0.013034737]
-gra[13][3][12] = [-0.0047443183, -0.029274868, 0.014905731, -0.04058704, 0.011896652, 0.0, -0.009303885, 0.016553108, -0.005152384, 0.0016335323, 0.017573029]
-gra[13][3][13] = [-0.18031244, -0.22357735, -0.21240802, -0.25388938, -0.37549284, -0.17787576, -0.23753236, -0.40126306, -0.21692044, -0.1680989, -0.23398493]
-gra[13][4][0] = [-3.8481143E-5, 0.0, 0.002269707, 6.20738E-4, -0.003558128, 0.0031306578, 2.969677E-4, -5.3025438E-11, 0.0034323288, 0.0015309223, -0.0059786467]
-gra[13][4][1] = [-5.4985366E-4, 0.0, -0.06591385, -0.010353064, -0.04391478, -0.004779683, -0.03789397, 0.079702035, 0.0019214812, -0.0033397619, -0.08094852]
-gra[13][4][2] = [-0.012531618, -0.02149262, -0.10305554, 0.0017225409, -0.029588522, -0.014709006, -0.009571605, 0.014932039, -2.958011E-4, 0.0015983053, -0.05661193]
-gra[13][4][3] = [-0.014356834, -0.020139834, -0.12048513, 0.0, -0.01927166, -0.008297132, -0.0065214084, -2.5217576E-4, -0.0069084316, 0.0010085813, -0.038101066]
-gra[13][4][4] = [-0.17809576, -0.22590655, -0.21240802, -0.25388938, -0.37549284, -0.17787576, -0.23127286, -0.398157, -0.21692044, -0.1680989, -0.27611417]
-gra[13][4][5] = [-0.004744318, -0.024891522, 0.025563333, -0.013357386, -0.0110635245, -0.0030399878, -0.014388094, -0.010515601, -0.0070016095, -0.004008526, 0.06699301]
-gra[13][4][6] = [1.1364407E-11, -0.004874793, -0.02827242, 0.0018121619, 0.014126778, -0.016821094, -0.0016823349, -0.011623862, 0.0, 7.519599E-4, -0.07071236]
-gra[13][4][7] = [-0.0047443183, -0.028688747, 0.037981912, -0.033003844, 0.0049465187, 0.0024165655, -0.007744682, 0.011656271, -0.009074964, -0.0027042234, 0.017222213]
-gra[13][4][8] = [-0.0030642115, -0.02476588, 0.045840815, -0.0052944794, 0.043581713, -0.014238721, -0.057075597, -0.008813456, 0.0024751339, -5.0044945E-4, -0.07913361]
-gra[13][4][9] = [-0.004744318, -0.029248606, -0.0141451955, -0.029602291, 0.020765867, 0.0, -0.010528591, 0.013094053, -0.0028556797, 0.0020550827, 0.019113258]
-gra[13][4][10] = [-0.020729683, 0.062523216, 0.052721545, 0.02216856, 0.020985646, 0.0066277483, 0.011945313, -0.015119242, 0.028262286, 0.0011546377, -0.018444024]
-gra[13][4][11] = [-0.008316049, -0.03748896, -0.089236364, -0.024210531, 0.0023096106, -0.0017203483, -0.02742043, 0.018517133, 0.0011490043, 0.009044054, 0.008908374]
-gra[13][4][12] = [-0.0047443183, -0.029274868, 0.014905731, -0.04058704, 0.013103877, 0.0, -0.009303885, 0.016553108, -0.009074964, 0.0020550827, 0.0120558515]
-gra[13][4][13] = [-0.17809576, -0.22590655, -0.21240802, -0.25388938, -0.37549284, -0.17787576, -0.23127286, -0.398157, -0.21692044, -0.1680989, -0.27611417]
-gra[13][5][0] = [-3.8481143E-5, -0.0019296022, 0.002269707, -7.568941E-4, -0.003558128, -0.0023391629, 2.969678E-4, -5.3025438E-11, 0.0034323288, 0.0015309223, -0.0059786467]
-gra[13][5][1] = [-5.4985366E-4, 0.0, -0.072617814, -0.010353064, -0.035776734, -0.004779683, -0.03315192, 0.079702035, 0.0019214812, -0.0033397619, -0.09211975]
-gra[13][5][2] = [-0.012531618, -0.02149262, -0.10377838, 0.0017225409, -0.024193535, -0.014709006, -0.009571605, 0.011914919, -0.0010462527, 0.00255187, -0.048641015]
-gra[13][5][3] = [-0.01437872, -0.019673575, -0.1188169, 0.0, -0.018344807, -0.012445698, -0.0065214084, 0.0068431576, -0.0069084316, 0.00255187, -0.03546479]
-gra[13][5][4] = [-0.011914355, -0.021155545, -0.12490728, 0.0, -0.013876671, -0.006897951, -0.0065214084, 0.0022252216, -0.0069084316, 0.00255187, -0.03168124]
-gra[13][5][5] = [-0.17809576, -0.21920177, -0.22583191, -0.22214787, -0.3129328, -0.17787576, -0.23062442, -0.37000602, -0.21692044, -0.1680989, -0.26244205]
-gra[13][5][6] = [-6.359549E-4, -0.00329998, -0.027081385, 6.87819E-11, 0.014126778, -0.016821094, -7.880372E-4, -0.013210811, 0.0011668268, 0.001967366, -0.066702664]
-gra[13][5][7] = [-0.0047443183, -0.028688747, 0.039401986, -0.033003844, -0.0018611331, 4.886615E-13, -0.006838248, 0.011656271, -0.009074964, -0.0027042234, 0.004515754]
-gra[13][5][8] = [0.0, -0.017561529, 0.045840815, -0.0052944794, 0.030117506, -0.014238721, -0.06238355, 2.2126269E-4, 0.002475134, -1.1985166E-10, -0.0996067]
-gra[13][5][9] = [-0.004744318, -0.029248606, -0.012725122, -0.017495878, 0.008357792, 0.0, -0.010288807, 0.013094053, -0.0028556797, 0.0020550827, 0.015532694]
-gra[13][5][10] = [-0.023588339, 0.062523216, 0.052721545, 0.02216856, 0.018455729, 0.0014369704, 0.011879643, -0.015119242, 0.028262286, 0.0011546375, -0.010995837]
-gra[13][5][11] = [-0.0073551796, -0.03748896, -0.08781629, -0.024210531, 4.7158962E-4, -0.0017203483, -0.027180644, 0.018517133, 0.0011490043, -0.0015840135, -0.0015809597]
-gra[13][5][12] = [-0.0047443183, -0.029274868, 0.016325809, -0.04058704, 6.9580355E-4, 0.0, -0.0068243686, 0.016553108, -0.013708543, 0.0020550827, 0.016344428]
-gra[13][5][13] = [-0.17809576, -0.21920177, -0.22583191, -0.22214787, -0.3129328, -0.17787576, -0.23062442, -0.37000602, -0.21692044, -0.1680989, -0.26244205]
-gra[13][6][0] = [6.4378075E-4, 0.0]
-gra[13][6][1] = [-0.06624731, 0.030801235]
-gra[13][6][2] = [-0.10918311, 0.0]
-gra[13][6][3] = [-0.12980185, 0.0026769685]
-gra[13][6][4] = [-0.1323681, 0.0]
-gra[13][6][5] = [-0.14144892, -0.0012286699]
-gra[13][6][6] = [-0.3622168, -0.22078751]
-gra[13][6][7] = [0.041815557, -0.01590641]
-gra[13][6][8] = [0.019047474, -0.0046319123]
-gra[13][6][9] = [-0.004766149, 0.011194]
-gra[13][6][10] = [0.08412241, 0.0011773661]
-gra[13][6][11] = [-0.053156152, -0.0022921383]
-gra[13][6][12] = [0.023595892, -0.0034085575]
-gra[13][6][13] = [-0.3622168, -0.22078751]
-gra[13][7][0] = [-3.8481143E-5, 0.0, 6.4378075E-4, -0.0029844372, -0.003558128, 7.4807646E-11, 2.969678E-4, -2.252149E-11, 0.0034323288, 0.0015309223, -0.004436887]
-gra[13][7][1] = [-5.4985366E-4, 0.0, -0.061387178, -0.006211838, -0.02472724, -0.004779683, -0.009418331, 0.043953314, 0.003516588, -6.7384075E-4, -0.06601527]
-gra[13][7][2] = [-0.014545243, -0.02149262, -0.105155304, 0.0017225409, -0.02913589, -0.012445698, -0.009571605, 0.012321943, -0.0030816167, 0.0, -0.038469456]
-gra[13][7][3] = [-0.008449863, -0.031753954, -0.12069213, 0.008403905, -0.018656962, -0.013135118, -0.0065214084, 0.008531175, -0.0069084316, 0.0, -0.02244518]
-gra[13][7][4] = [-0.0068611433, -0.032769665, -0.12325835, 0.008403905, -0.018656962, -0.014724767, -0.0065214084, 0.011008573, -0.0069084316, 0.0, -0.02244518]
-gra[13][7][5] = [-0.003759268, -0.031753954, -0.12706642, 0.008403905, -0.017453253, -0.008297132, -0.009280194, 0.0016880172, -0.0069084316, 0.0, -0.023096858]
-gra[13][7][6] = [-0.0015405889, -9.316074E-4, -0.07405043, 0.0047623203, -0.0011805353, 0.0038556326, 0.0044427225, 0.0029879243, -6.80316E-4, 0.0021720878, -0.011135231]
-gra[13][7][7] = [-0.18400235, -0.22632557, -0.22538361, -0.16799, -0.1461452, -0.15403911, -0.27257457, -0.18231206, -0.2376445, -0.14923236, -0.295538]
-gra[13][7][8] = [0.0, -0.019396862, 0.05353746, -0.002615053, 0.050056085, -0.014238721, -0.064261615, -0.013629902, 0.0024751343, -1.1985166E-10, -0.09486357]
-gra[13][7][9] = [-0.005495934, -0.029248606, -0.022326747, -0.037688896, 0.0943484, 2.4217142E-11, 0.046222847, -0.0010446829, -0.0028556797, -3.4251437E-4, -0.07842448]
-gra[13][7][10] = [-0.02962853, 0.0659748, 0.08125699, 0.02257181, 0.075506486, -0.0016109447, 0.011153372, -0.019953335, 0.0148332175, -6.8592926E-4, -0.016709048]
-gra[13][7][11] = [-0.0066066366, -0.03748896, -0.072320245, -0.024805957, 0.110292, -0.0017203483, 0.023086337, 3.1985203E-4, -0.0035562683, -0.005408447, -0.087828055]
-gra[13][7][12] = [-0.0016143469, -0.03266932, 0.02244001, -0.0416742, 0.09989443, 2.4217142E-11, 0.064361975, 0.010643414, -0.0067974986, -0.0027042234, -0.102793634]
-gra[13][7][13] = [-0.18400235, -0.22632557, -0.22538361, -0.16799, -0.1461452, -0.15403911, -0.27257457, -0.18231206, -0.2376445, -0.14923236, -0.295538]
-gra[13][8][0] = [0.008247588, -0.0055409744, 6.20738E-4, 4.4457944E-11, -0.0021720084, 9.538275E-4]
-gra[13][8][1] = [0.0018849298, 0.0, -9.987416E-4, -0.0039049454, 0.005938728, 0.02454755]
-gra[13][8][2] = [-0.09277756, -0.02149262, -0.008969738, -0.012445698, 0.006616043, -0.0070737293]
-gra[13][8][3] = [-0.12416965, -0.013913619, -0.010692279, -0.012445698, 0.0044185594, -0.008524312]
-gra[13][8][4] = [-0.11429893, -0.014929331, -0.010692279, -0.014724767, 0.0044185594, -0.008524312]
-gra[13][8][5] = [-0.123239286, -0.013913619, -0.010692279, -0.008297132, 0.0044185594, -0.007944971]
-gra[13][8][6] = [-0.08144255, 0.0, 0.0, -0.023899741, -0.0011061644, -0.0031688735]
-gra[13][8][7] = [-0.0976752, -0.02517143, -0.011541045, -0.008694231, 0.008405002, -0.006917912]
-gra[13][8][8] = [-0.24454613, -0.1639746, -0.25012267, -0.17277125, -0.14648728, -0.1339441]
-gra[13][8][9] = [0.060765058, -0.03443707, -0.012861641, -0.016538091, -0.01139536, -0.05786432]
-gra[13][8][10] = [0.17067443, 0.057847686, 0.09022305, 2.936734E-11, 0.017207963, -0.0055431663]
-gra[13][8][11] = [-0.0031472906, -0.044576038, -0.008100095, -0.02634275, -0.034019772, -0.07583591]
-gra[13][8][12] = [0.050338555, -0.03446333, -0.0013067424, -0.016538091, -0.018642653, -0.041006442]
-gra[13][8][13] = [-0.24454613, -0.1639746, -0.25012267, -0.17277125, -0.14648728, -0.1339441]
-gra[13][9][0] = [0.0010204252, 0.0, 6.4378075E-4, 0.0078705065, -0.0054394426, 7.4807646E-11, 2.969678E-4, -2.252149E-11, 0.002672691, 0.0015309223, -0.0059786467]
-gra[13][9][1] = [-0.0024081077, 0.0, -0.062077407, -0.010353064, -0.0019592715, -0.004779683, -0.014528066, 0.042927664, 0.0019214812, -0.01828001, -0.05758947]
-gra[13][9][2] = [-0.012531618, -0.02149262, -0.104911454, 0.0017225409, -0.021012181, -0.014709006, -0.0045123687, 0.0053751054, -0.0010462527, 0.005216337, -0.05147559]
-gra[13][9][3] = [-0.013503075, -0.023688566, -0.119905025, 0.0010881304, -0.018344807, -0.012445698, -0.00331613, 0.0068431576, -0.0069084316, 0.005216337, -0.040002476]
-gra[13][9][4] = [-0.011914355, -0.024704278, -0.12247125, 0.0010881304, -0.018344807, -0.014724767, -0.00331613, 0.009320555, -0.0069084316, 0.005216337, -0.040002476]
-gra[13][9][5] = [-0.012390098, -0.023688566, -0.12627934, 0.0010881304, -0.011718331, -0.008297132, -0.00331613, 0.0, -0.0069084316, 0.005142264, -0.040654156]
-gra[13][9][6] = [-0.001125994, 0.0, -0.074776486, 0.002083107, -0.002882295, -0.002027866, 0.0044427225, 0.0038340823, 0.0039350963, 0.0, -0.0050727697]
-gra[13][9][7] = [-0.024156814, 0.008525034, -0.09897246, -0.0016975328, -0.020984316, -0.0064118747, -2.3427873E-4, 0.008303378, -0.0046053967, 0.005100009, -0.030431]
-gra[13][9][8] = [-0.003056592, 0.0, -0.07764223, -0.0041412255, 0.0029902817, 5.194387E-4, -0.005559218, 0.024523886, -1.2932688E-10, -0.01592549, -0.028795455]
-gra[13][9][9] = [-0.18744808, -0.18351543, -0.13947575, -0.16291302, -0.3038887, -0.17849518, -0.29764092, -0.21583185, -0.20814133, -0.14325449, -0.24414533]
-gra[13][9][10] = [-0.038269173, 0.062523216, 0.049702324, 0.024544237, 0.029627107, -6.992128E-4, 0.008567667, -0.028109219, 0.016858656, 0.0030105696, -0.01863579]
-gra[13][9][11] = [-0.004744318, -0.03748896, -0.100242846, -0.011270633, 0.00911401, -0.0017203483, 0.016757932, 0.027999457, -0.0023095226, 0.0056220004, 0.04432713]
-gra[13][9][12] = [-0.0047443183, -0.029274868, 0.0074492553, -0.03500275, 0.007803831, 0.0, 0.044764586, 0.031718038, -0.009074964, 0.008326224, 0.09394421]
-gra[13][9][13] = [-0.18744808, -0.18351543, -0.13947575, -0.16291302, -0.3038887, -0.17849518, -0.29764092, -0.21583185, -0.20814133, -0.14325449, -0.24414533]
-gra[13][10][0] = [0.0027031128, 2.4087886E-4, 1.3065474E-10, 6.207381E-4, 0.002889238, 0.002607383, -0.0046446207]
-gra[13][10][1] = [-0.005034707, -0.004854968, -0.0039049454, 0.0, -0.024383903, -0.031088296, 0.005413543]
-gra[13][10][2] = [-0.12998651, -0.061819807, -0.014137894, -2.0239376E-4, -0.005629006, -0.014992505, -0.012442157]
-gra[13][10][3] = [-0.15677811, -0.044003762, -0.014137894, -0.0060540326, 0.002196358, -0.013737386, -0.010784484]
-gra[13][10][4] = [-0.15934435, -0.04501947, -0.016416963, -0.009311951, 0.0025157349, -0.013824449, -0.0091957655]
-gra[13][10][5] = [-0.16315244, -0.047849946, -0.009989329, -0.0060540326, 0.002196358, -0.00943523, -0.008107517]
-gra[13][10][6] = [-0.07418773, 0.0, 0.0036415025, -8.813711E-12, -0.0057086376, -0.0019164708, -0.0011259941]
-gra[13][10][7] = [-0.12831485, -0.06397362, -0.005840762, -0.004201497, 0.0016994415, -6.6159316E-4, -0.023003204]
-gra[13][10][8] = [-0.059567124, 8.0218556E-4, -0.001433034, -8.114468E-4, -0.007725291, -0.025030788, 0.0014916039]
-gra[13][10][9] = [-0.13773312, -0.040764928, -0.01828646, -0.0025065367, 6.714482E-4, -0.007684609, -0.015645439]
-gra[13][10][10] = [-0.01754238, -0.096652865, -0.12103371, -0.27217853, -0.3531466, -0.324845, -0.1846547]
-gra[13][10][11] = [0.06607049, -0.03801062, 0.0019329089, -0.04559043, 0.007320726, 0.0027789439, 2.059529E-4]
-gra[13][10][12] = [0.12691858, -0.029796522, 4.5780465E-4, -0.0508675, -0.0019010571, 0.027822996, -0.0029191687]
-gra[13][10][13] = [-0.01754238, -0.096652865, -0.12103371, -0.27217853, -0.3531466, -0.324845, -0.1846547]
-gra[13][11][0] = [-3.8481143E-5, 0.0, 6.4378075E-4, 6.20738E-4, -0.006206033, 0.0031306578, 2.969677E-4, 0.0020178065, 0.003698783, 0.0015309223, -0.0059786467]
-gra[13][11][1] = [-0.0024081077, -3.7906157E-11, -0.05410392, -0.006211838, -0.017004, -0.004779683, -0.01619981, 0.049474724, 0.0019214812, -0.0033397619, -0.055492003]
-gra[13][11][2] = [-0.012531618, -0.02149262, -0.101407215, 0.0017225409, -0.024563115, -0.016277885, -9.650856E-4, 0.014932039, -2.958011E-4, 0.005216337, -0.055602495]
-gra[13][11][3] = [-0.013503075, -0.023688566, -0.11878066, 0.0010881305, -0.021403933, -0.012445698, 2.311531E-4, 0.009860277, -0.0061579803, 0.005216337, -0.042359605]
-gra[13][11][4] = [-0.011914355, -0.024704278, -0.12134688, 0.0010881305, -0.021403933, -0.014724767, 2.311531E-4, 0.012337675, -0.0061579803, 0.005216337, -0.042359605]
-gra[13][11][5] = [-0.010826106, -0.023688566, -0.12515497, -0.0013657217, -0.01927166, -0.008297132, 2.311531E-4, -7.2720836E-6, -0.0069084316, 0.005216337, -0.04301128]
-gra[13][11][6] = [-0.001125994, 0.0, -0.073497966, 0.0031763045, -0.0011805353, -0.002027866, 0.0044427225, 0.0029879243, 0.0067000333, 0.0, -0.008332037]
-gra[13][11][7] = [-0.023003204, -0.022648802, -0.097360395, -0.0016975328, -0.026379308, -0.004148566, 0.0033130045, 0.008303378, -0.0046053967, 0.0065824687, -0.03631161]
-gra[13][11][8] = [-0.0042614858, 0.0, -0.08549402, -0.0041412255, 0.0011589571, -0.001433034, -0.015982313, 0.042075388, -1.2932688E-10, -0.01592549, -0.034074277]
-gra[13][11][9] = [-0.014098032, -0.019941404, -0.08872916, 0.0010881305, -0.016935797, -0.018041158, 0.0077908346, -5.865624E-10, -0.01072273, 0.005216337, -0.060193244]
-gra[13][11][10] = [-0.0063372697, -0.00724988, 0.09636207, 0.0063281707, 0.013989373, 0.010369438, -0.029499395, -0.07729727, -0.0034266128, 0.001646283, -0.06261036]
-gra[13][11][11] = [-0.1723079, -0.19175091, -0.08346477, -0.16814607, -0.20360166, -0.18464145, -0.29005083, -0.19624236, -0.23322582, -0.15090755, -0.25228682]
-gra[13][11][12] = [-0.004744318, -0.027169708, 0.017387033, -0.033801217, -0.012644364, 0.0, 0.0085210595, 7.166872E-4, -0.0067974986, -0.0027042234, 0.037621047]
-gra[13][11][13] = [-0.1723079, -0.19175091, -0.08346477, -0.16814607, -0.20360166, -0.18464145, -0.29005083, -0.19624236, -0.23322582, -0.15090755, -0.25228682]
-gra[13][12][0] = [-3.8481143E-5, -3.63924E-11, 0.002269707, 6.20738E-4, 0.0, 1.2339335E-10, 2.969678E-4, -2.252149E-11, 0.0034323288, 0.0015309223, -0.0059786467]
-gra[13][12][1] = [-0.0024081077, 0.0, -0.064752415, -0.010353064, -0.040191926, -0.004779683, -0.031112492, 0.079702035, 0.003516588, -0.0060928166, -0.091516405]
-gra[13][12][2] = [-0.012531618, -0.019387461, -0.09771204, 0.0017225409, -0.024051953, -0.0062228492, -0.009571605, 0.011914919, -0.0010462527, 0.005216337, -0.041412294]
-gra[13][12][3] = [-0.0153472, -0.029182535, -0.10223391, 0.009492035, -0.019618789, -0.008297132, -0.0058457484, 0.008531175, -0.0069084316, 0.005216337, -0.028060148]
-gra[13][12][4] = [-0.0137584815, -0.030198246, -0.11609159, 0.009492035, -0.019618789, -0.010576202, -0.0058457484, 0.011008573, -0.0069084316, 0.005216337, -0.028060148]
-gra[13][12][5] = [-0.012670232, -0.029182535, -0.11989968, 0.009492035, -0.017486516, -0.0062228492, -0.0058457484, 0.0016880172, -0.0069084316, 0.010007033, -0.028711826]
-gra[13][12][6] = [-0.001125994, 0.0, -0.07098231, 0.0031763045, -0.0011805353, -0.0034213266, 0.0033354918, 0.0029879243, -0.0012010215, 0.0, -0.0034280284]
-gra[13][12][7] = [-0.023003204, -0.020543642, -0.09406488, -0.0016975328, -0.024594164, -0.002074283, -0.0027638972, 0.008303378, -0.0046053967, 0.005100009, -0.017848626]
-gra[13][12][8] = [-0.0019364218, 0.0, -0.08571632, -0.008282451, -0.01957223, -0.001433034, -0.031315595, 0.056441724, -1.2932688E-10, -0.018678546, -0.059202127]
-gra[13][12][9] = [-0.015066513, -0.025901634, -0.08404164, 0.009492035, -0.014481828, -0.012445698, -0.009366741, 0.0016880166, -0.013032702, 0.005216337, -0.038446993]
-gra[13][12][10] = [-0.0063372697, -0.0044693374, -0.005145481, 0.032773815, -0.004487824, 0.011536914, -0.028929772, -0.08269472, -0.004384591, 0.0020792785, -0.037663452]
-gra[13][12][11] = [-0.018364029, -0.017836245, -0.08268196, -0.0022391165, -0.017753053, -0.005315918, -0.015622217, -5.865624E-10, -0.0069084316, 0.005216337, -0.0551992]
-gra[13][12][12] = [-0.17809576, -0.20573048, -0.15939943, -0.20416664, -0.23387754, -0.17472892, -0.28127974, -0.2316979, -0.23132344, -0.17341352, -0.2193664]
-gra[13][12][13] = [-0.17809576, -0.20573048, -0.15939943, -0.20416664, -0.23387754, -0.17472892, -0.28127974, -0.2316979, -0.23132344, -0.17341352, -0.2193664]
-gra[13][14][13] = [0.35930407, -0.22164108, -0.15753579, 0.02877545, -0.22689001, -0.10909238, -0.14508441, -0.13638566]
-gra[13][14][14] = [0.35930407, -0.22164108, -0.15753579, 0.02877545, -0.22689001, -0.10909238, -0.14508441, -0.13638566]
-gra[14][0][0] = [-0.11582346]
-gra[14][0][1] = [-0.014908389]
-gra[14][0][2] = [0.0010477826]
-gra[14][0][3] = [-0.017838294]
-gra[14][0][4] = [-0.017838294]
-gra[14][0][5] = [-0.020216068]
-gra[14][0][6] = [-0.029175095]
-gra[14][0][7] = [-0.01435264]
-gra[14][0][8] = [-0.010619164]
-gra[14][0][9] = [-0.021713208]
-gra[14][0][10] = [-0.0076314593]
-gra[14][0][11] = [-0.006081218]
-gra[14][0][12] = [-0.029416047]
-gra[14][0][13] = [-0.03016201]
-gra[14][0][14] = [-0.11582346]
-gra[14][1][0] = [0.0, -8.777529E-5]
-gra[14][1][1] = [-0.18727827, -0.042910293]
-gra[14][1][2] = [-0.084219776, 0.098065324]
-gra[14][1][3] = [-0.05922804, 0.038104363]
-gra[14][1][4] = [-0.060603417, 0.047129445]
-gra[14][1][5] = [-0.032511078, 0.024256317]
-gra[14][1][6] = [0.011354224, -0.029175095]
-gra[14][1][7] = [-0.102742985, 0.075883195]
-gra[14][1][8] = [0.024297003, -9.4162335E-4]
-gra[14][1][9] = [-0.045367077, 0.05281453]
-gra[14][1][10] = [-0.03284261, 0.023246054]
-gra[14][1][11] = [-0.106667675, 0.09371514]
-gra[14][1][12] = [-0.04622412, 0.051488757]
-gra[14][1][13] = [0.009459454, 0.047508337]
-gra[14][1][14] = [-0.18727827, -0.042910293]
-gra[14][2][0] = [-0.0017319206, 0.0015840991, -0.008970131, -0.004802999, 0.0031306578, 0.0022224444, 0.0057375417, -0.0018251492]
-gra[14][2][1] = [0.009210461, 0.0012506777, 0.023023957, -0.025324829, -8.747375E-4, -3.7906157E-11, -0.0035353543, 0.035236858]
-gra[14][2][2] = [-0.17584763, -0.5290194, -0.22025661, -0.23991603, -0.19399358, -0.12639932, -0.13731577, -0.289827]
-gra[14][2][3] = [-0.05571494, 0.1321193, -0.14931351, -0.03905928, 0.0, -0.0024315235, -2.567261E-4, -0.0076815435]
-gra[14][2][4] = [-0.05911336, 0.15121338, -0.17879, -0.019467322, -0.0016386209, -0.0024315235, -0.001026748, -0.0106770415]
-gra[14][2][5] = [-0.080596365, 0.2223057, -0.14741457, -0.009105388, 0.0, 0.0013912377, -0.0023956841, -0.0148373395]
-gra[14][2][6] = [-0.06015315, 0.04232933, -0.08102358, 0.018965898, 0.0, -0.0020981468, -0.0014585715, -0.015615815]
-gra[14][2][7] = [-0.042910974, -0.0024921368, -0.21345621, 0.011247204, 0.0024165655, 0.0013912377, 0.0012619573, 0.005793425]
-gra[14][2][8] = [4.0656445E-4, 0.04207531, -0.012648034, 0.04502165, 0.0, -0.03310725, -0.004949766, -0.021638526]
-gra[14][2][9] = [-0.07297369, 0.024562055, -0.16602206, 0.04623389, -6.163665E-11, 2.7830654E-4, -0.0052100876, -0.010190327]
-gra[14][2][10] = [-0.024243463, -0.07057921, -0.0720616, 0.10349874, 2.4562495E-4, 0.011989316, 0.0041656997, -0.04276061]
-gra[14][2][11] = [-0.06124546, -0.029336883, -0.16942665, 0.04144257, -0.0017203483, -0.0024315235, 0.009988822, 0.008239418]
-gra[14][2][12] = [-0.040389307, -3.8161967E-4, -0.20168869, 0.023762133, 0.0, -0.0024315235, -4.8080023E-4, 0.0055930368]
-gra[14][2][13] = [-0.053557433, 0.004121064, -0.14622559, 0.034124065, 0.0, 0.0013912377, -4.8080023E-4, -0.0010566153]
-gra[14][2][14] = [-0.17584763, -0.5290194, -0.22025661, -0.23991603, -0.19399358, -0.12639932, -0.13731577, -0.289827]
-gra[14][3][0] = [-0.0026303222, -0.0045454036, -0.006932474, -2.737789E-4, 0.0031306578, 0.0022224444, 0.0020929475, -0.0018251492]
-gra[14][3][1] = [-0.0019154843, -0.0065884185, -0.020415306, -0.04629868, -8.747375E-4, 0.0, -0.009747193, 0.07975232]
-gra[14][3][2] = [0.03537799, -0.03127152, -0.066523835, -0.020764088, -0.002263308, -0.0024273172, 0.0, 0.0045674103]
-gra[14][3][3] = [-0.26069072, -0.17578714, -0.22939655, -0.33574775, -0.21334341, -0.16601574, -0.19320112, -0.42314297]
-gra[14][3][4] = [-0.013265513, 0.23243552, 0.029085482, -0.047924884, -0.0016386209, -0.0024315235, 0.0054333983, -0.007172498]
-gra[14][3][5] = [-0.037040286, 0.3100581, 0.04996314, -0.009560844, 0.0, 0.0013912377, 0.004064462, -0.012930402]
-gra[14][3][6] = [-0.04822219, 0.09151792, -0.0588836, 0.013563308, -0.0029920721, 0.0, 0.0022967334, -0.010240156]
-gra[14][3][7] = [-0.031530757, 0.02315667, -0.025445353, -0.011832221, 0.0024165655, 0.0013912377, 0.004234272, 0.009442069]
-gra[14][3][8] = [0.002375652, 0.10702352, -0.044432443, 0.042960316, 0.0, -0.027821539, -0.004949766, -5.2614184E-4]
-gra[14][3][9] = [-0.049165167, 0.15115647, 0.012704274, -0.0016810335, 3.0514854E-4, 0.0013912377, -8.933363E-4, 0.011169758]
-gra[14][3][10] = [-0.030184396, -0.041988403, -0.01473039, 0.03447505, -6.6610676E-4, 0.004675532, 0.0020460146, -0.016954768]
-gra[14][3][11] = [-0.0631195, 0.064332634, -0.046878092, -0.026811987, -0.0017203483, -0.0024315235, 0.0010153182, 0.022335548]
-gra[14][3][12] = [-0.041915108, 0.14047132, 0.010500541, -0.022011831, 0.0, -0.0024315235, -0.0031573072, 0.018789113]
-gra[14][3][13] = [-0.055083245, 0.14279011, 0.06103932, -0.004049799, 5.773879E-11, 0.0013912377, -0.0031573072, 0.012139461]
-gra[14][3][14] = [-0.26069072, -0.17578714, -0.22939655, -0.33574775, -0.21334341, -0.16601574, -0.19320112, -0.42314297]
-gra[14][4][0] = [-1.0599452E-4, -0.0020210762, -0.006932474, -2.737789E-4, 0.0031306578, 0.0022224444, 0.0020929475, -0.0018251492]
-gra[14][4][1] = [-0.0019154843, -0.0065884185, -0.020415306, -0.04629868, -8.747375E-4, 0.0, -0.009747193, 0.07975232]
-gra[14][4][2] = [0.010398943, -0.043829054, -0.1425881, -0.02309995, -0.002263308, -0.0024273172, 0.0, 0.007836706]
-gra[14][4][3] = [0.013334723, 0.0012160586, 6.9185626E-4, -0.013261375, 0.0, -1.3790699E-4, 0.0, 1.12758145E-11]
-gra[14][4][4] = [-0.26069072, -0.18989517, -0.27152574, -0.33574775, -0.21334341, -0.16834494, -0.19320112, -0.4200369]
-gra[14][4][5] = [-0.035620213, 0.28389117, 0.05872181, -0.0307553, -0.0030399878, 0.0013912377, 0.004064462, -0.011332796]
-gra[14][4][6] = [-0.04822219, 0.09151792, -0.06093113, 0.013563308, -0.0029920721, -0.0015748128, 9.863207E-4, -0.010240156]
-gra[14][4][7] = [-0.031530757, 0.021498462, -0.029571723, -0.011330896, 0.0024165655, 0.0013912377, 0.004234272, 0.009442069]
-gra[14][4][8] = [0.002375652, 0.11166462, -0.044432443, 0.042960316, 0.0, -0.027821539, -0.004949766, -5.2614184E-4]
-gra[14][4][9] = [-0.049165167, 0.14949825, 0.0085779065, -4.7380285E-4, 0.0, 0.0013912377, -8.933363E-4, 0.011169758]
-gra[14][4][10] = [-0.030184396, -0.041988403, -0.019537935, 0.03447505, -6.6610676E-4, 0.004675532, -2.5162264E-4, -0.016954768]
-gra[14][4][11] = [-0.0631195, 0.06267442, -0.051004462, -0.028066896, -0.0017203483, -0.0024315235, 0.0010153182, 0.022335548]
-gra[14][4][12] = [-0.041915108, 0.13881311, 0.004983356, -0.020804603, 0.0, -0.0024315235, -0.0031573072, 0.018789113]
-gra[14][4][13] = [-0.055083245, 0.14525777, 0.05691296, -0.010442665, 0.0, 0.0013912377, -0.0031573072, 0.012139461]
-gra[14][4][14] = [-0.26069072, -0.18989517, -0.27152574, -0.33574775, -0.21334341, -0.16834494, -0.19320112, -0.4200369]
-gra[14][5][0] = [-1.0599452E-4, -0.004087028, -0.006932474, -2.737789E-4, -0.0023391629, 2.9284216E-4, 7.1531534E-4, -0.0018251492]
-gra[14][5][1] = [-0.008619444, 0.024646414, -0.031586535, -0.038160633, -8.747375E-4, 0.0, -0.009747193, 0.07975232]
-gra[14][5][2] = [0.009676101, -0.04146135, -0.13461716, -0.017704962, -0.002263308, -0.0024273172, 0.0, 0.004819586]
-gra[14][5][3] = [0.011478803, -0.004468556, -0.06786775, -0.0102022495, 0.0, 3.2835128E-4, 0.0, 0.0]
-gra[14][5][4] = [0.0144154765, 0.00820452, 0.0100524295, -0.013484061, 0.0036782513, 0.0011214141, -0.0065619284, -0.0015741112]
-gra[14][5][5] = [-0.27411464, -0.120020434, -0.25785366, -0.27318767, -0.21334341, -0.16164015, -0.16145964, -0.39188594]
-gra[14][5][6] = [-0.047031157, 0.07410885, -0.059514217, 0.013563308, -0.0029920721, 0.0, 0.0022967334, -0.013210811]
-gra[14][5][7] = [-0.030110683, 0.009325346, -0.04227817, -0.018138546, 4.886615E-13, 0.0013912377, 0.004234272, 0.009442069]
-gra[14][5][8] = [0.002375652, 0.12489207, -0.06490553, 0.02949611, 0.0, -0.020617187, -0.004949766, 0.008508578]
-gra[14][5][9] = [-0.047745094, 0.13283329, 0.0049973363, -0.012881876, 0.0, 0.0013912377, 0.011213072, 0.011169758]
-gra[14][5][10] = [-0.030184396, -0.041040756, -0.012089748, 0.03194514, -0.0058568846, 0.004675532, -2.5162264E-4, -0.016954768]
-gra[14][5][11] = [-0.061699428, 0.0680023, -0.06149379, -0.029904917, -0.0017203483, -0.0024315235, 0.0010153182, 0.022335548]
-gra[14][5][12] = [-0.040495034, 0.12351453, 0.011489054, -0.033212673, 0.0, -0.0024315235, -0.0031573072, 0.018789113]
-gra[14][5][13] = [-0.05366317, 0.12029423, 0.05981072, -0.022850737, 0.0, 0.0013912377, -0.0031573072, 0.012139461]
-gra[14][5][14] = [-0.27411464, -0.120020434, -0.25785366, -0.27318767, -0.21334341, -0.16164015, -0.16145964, -0.39188594]
-gra[14][6][0] = [0.0, -0.0017319206]
-gra[14][6][1] = [0.12703063, -0.0022489373]
-gra[14][6][2] = [-0.022769202, 0.0030428797]
-gra[14][6][3] = [0.034883343, -7.346576E-4]
-gra[14][6][4] = [0.02350668, 0.0022020158]
-gra[14][6][5] = [0.106837645, -0.008857531]
-gra[14][6][6] = [-0.20986222, -0.3650282]
-gra[14][6][7] = [-0.045771867, -0.024621688]
-gra[14][6][8] = [0.1393876, -0.031599853]
-gra[14][6][9] = [-0.09390008, -0.034672163]
-gra[14][6][10] = [0.055199683, -0.009840637]
-gra[14][6][11] = [-0.07764719, -0.021925328]
-gra[14][6][12] = [0.0073627643, -0.042553928]
-gra[14][6][13] = [0.03508615, -0.041654322]
-gra[14][6][14] = [-0.20986222, -0.3650282]
-gra[14][7][0] = [-0.0017319206, 0.0015840991, -0.0053907144, -2.737789E-4, 5.7391827E-11, 0.0022224444, -0.0015122276, -0.0018251492]
-gra[14][7][1] = [0.002611183, -0.006051983, -0.0054820664, -0.02711114, -8.747375E-4, 0.0, -0.005605967, 0.0440036]
-gra[14][7][2] = [0.008299174, -0.0092912465, -0.12444562, -0.02264732, 1.5084875E-10, -0.0024273172, 0.0, 0.0052266098]
-gra[14][7][3] = [0.009603571, 0.010891726, -0.054848146, -0.010514407, -6.894202E-4, -0.011752027, 0.008403905, 0.0016880172]
-gra[14][7][4] = [0.0125402445, 0.013179652, -0.051907387, -0.01613208, 2.1011333E-12, -0.010492706, 0.0018419763, 1.1390599E-4]
-gra[14][7][5] = [0.0060317433, 0.013192974, 0.031289365, -0.011442969, 0.0, -0.010492706, 0.008564835, 0.0016880172]
-gra[14][7][6] = [-0.0023392674, -2.9609003E-4, 0.051154956, 8.188048E-4, 0.003376759, -9.316074E-4, 0.0047623203, 0.0]
-gra[14][7][7] = [-0.2736663, -0.42253086, -0.29094955, -0.106400095, -0.18950677, -0.16876397, -0.10730179, -0.20419195]
-gra[14][7][8] = [-0.0041071055, 0.07480537, -0.058009043, 0.049434684, 0.0, -0.023188654, -0.0010114948, -0.0053425874]
-gra[14][7][9] = [-0.057346717, -0.008121707, -0.08895983, 0.07310873, 2.4217142E-11, 0.0013912377, -0.008979938, -0.0029689788]
-gra[14][7][10] = [-0.0016489569, -0.08187189, -0.017802957, 0.0889959, -0.008904799, 0.008127116, 1.516263E-4, -0.021788862]
-gra[14][7][11] = [-0.04620337, -0.033882786, -0.14774089, 0.07991551, -0.0017203483, -0.0024315235, 4.1989092E-4, 0.004138265]
-gra[14][7][12] = [-0.03438083, -0.032883566, -0.10764899, 0.065985955, 2.4217142E-11, -0.0058259796, -0.0042444626, 0.012879416]
-gra[14][7][13] = [-0.047548957, -0.028914813, -0.06369143, 0.07584944, 2.4217142E-11, -0.002003218, -0.0042444626, 0.008871366]
-gra[14][7][14] = [-0.2736663, -0.42253086, -0.29094955, -0.106400095, -0.18950677, -0.16876397, -0.10730179, -0.20419195]
-gra[14][8][0] = [0.0, 0.005871886]
-gra[14][8][1] = [0.095702, 0.06588329]
-gra[14][8][2] = [-0.08645788, 0.019448427]
-gra[14][8][3] = [-0.03433526, 0.004897557]
-gra[14][8][4] = [-0.031394515, 0.02027118]
-gra[14][8][5] = [0.05303327, 0.008630428]
-gra[14][8][6] = [0.050987773, -0.007944579]
-gra[14][8][7] = [0.022163775, 0.00545556]
-gra[14][8][8] = [-0.14465323, -0.23231457]
-gra[14][8][9] = [-0.050460912, 0.036257178]
-gra[14][8][10] = [-0.0044299643, 0.084959425]
-gra[14][8][11] = [-0.11915645, 0.033481665]
-gra[14][8][12] = [-0.0385441, -0.031666603]
-gra[14][8][13] = [0.019052131, -0.009138332]
-gra[14][8][14] = [-0.14465323, -0.23231457]
-gra[14][9][0] = [-0.0017319206, -0.0020210762, -0.006932474, -0.0021550937, 5.7391827E-11, 0.0022224444, 0.009342717, -0.0018251492]
-gra[14][9][1] = [0.0019209567, 0.01677084, 0.0029437453, -0.0043431697, -8.747375E-4, 0.0, -0.009747193, 0.042977948]
-gra[14][9][2] = [0.008543024, -0.034551438, -0.13745174, -0.014523609, -0.002263308, -0.0024273172, 0.0, -0.0017202278]
-gra[14][9][3] = [0.010390673, -0.015848102, -0.07240544, -0.0102022495, 0.0, -0.0036866383, 0.0010881304, 0.0]
-gra[14][9][4] = [0.013327346, -0.013560179, -0.06946468, -0.015819924, 2.1011333E-12, -0.0024273172, -0.005473798, -0.0015741112]
-gra[14][9][5] = [0.006818845, -0.013546857, 0.013732083, -0.005708046, 0.0, -0.0024273172, 0.0012490614, 0.0]
-gra[14][9][6] = [-0.0012785172, 0.00325728, 0.04692239, -8.82955E-4, -0.0025067397, 0.0, 0.002083107, 8.46158E-4]
-gra[14][9][7] = [0.008543024, -0.0074314885, 0.007830054, -0.011769962, -0.0022633083, 0.03059784, -8.487665E-4, 0.004819586]
-gra[14][9][8] = [-0.014772522, 0.009046948, -0.0654257, -0.0023759985, 0.0, 0.0, 0.0021252728, 0.024574166]
-gra[14][9][9] = [-0.18775843, -0.37637526, -0.23955697, -0.26414376, -0.21396284, -0.12595381, -0.10222481, -0.23771174]
-gra[14][9][10] = [-0.03320362, -0.098906405, -0.007155558, 0.043116514, -0.007993068, 0.004675532, 0.0021240492, -0.029944744]
-gra[14][9][11] = [-0.07412598, -0.05661683, -0.015585691, -0.021262497, -0.0017203483, -0.0024315235, 0.013955217, 0.031817872]
-gra[14][9][12] = [-0.04595394, -0.025789274, 0.093209125, -0.025386075, 0.0, -0.0024315235, 0.0024269857, 0.031249907]
-gra[14][9][13] = [-0.06253972, -0.03147722, 0.13741048, -0.014771162, 0.0, -0.0019102512, 0.0024269857, 0.027304392]
-gra[14][9][14] = [-0.18775843, -0.37637526, -0.23955697, -0.26414376, -0.21396284, -0.12595381, -0.10222481, -0.23771174]
-gra[14][10][0] = [0.0016535555, 3.2741146E-4, 0.003204043, 1.1323892E-10]
-gra[14][10][1] = [0.030359399, 0.07058733, -0.017545186, 0.0]
-gra[14][10][2] = [-0.09626371, -0.008757901, -0.013296669, -0.0016921958]
-gra[14][10][3] = [-0.041435387, -0.018708255, 0.002196358, -0.001692196]
-gra[14][10][4] = [-0.038581695, -0.015771583, 0.0044842823, -0.001692196]
-gra[14][10][5] = [0.049655966, -0.022280084, 0.002196358, -0.001692196]
-gra[14][10][6] = [0.05007869, -6.89765E-4, -0.011463992, 0.0031626287]
-gra[14][10][7] = [0.042304426, -0.013025224, 6.205952E-4, -0.001692196]
-gra[14][10][8] = [-0.058169376, 0.02240749, 0.011389386, 0.0]
-gra[14][10][9] = [-0.0039507775, -0.016944697, -0.0052801343, -0.0016921958]
-gra[14][10][10] = [-0.32598376, -0.089373134, -0.42189366, -0.12931946]
-gra[14][10][11] = [-0.011033574, 0.07895074, 0.022978501, 0.0019329089]
-gra[14][10][12] = [0.040658515, 0.058160074, 0.018748194, 4.5780465E-4]
-gra[14][10][13] = [0.07926445, 0.062513635, -0.0019399691, 9.091237E-4]
-gra[14][10][14] = [-0.32598376, -0.089373134, -0.42189366, -0.12931946]
-gra[14][11][0] = [-0.0017319206, -0.0020210762, -0.006932474, -0.0029216837, 0.0031306578, 0.0022224444, 0.0020929475, 1.9265735E-4]
-gra[14][11][1] = [0.009894438, -0.025603905, 0.005041209, -0.019387899, -8.747375E-4, -3.7906157E-11, -0.005605967, 0.049525008]
-gra[14][11][2] = [0.012047265, -0.023770321, -0.14157864, -0.018074542, -0.0038321887, -0.0024273172, 0.0, 0.007836706]
-gra[14][11][3] = [0.011515043, -0.00521922, -0.07476257, -0.013261375, 0.0, -0.0036866383, 0.0010881305, 0.0030171203]
-gra[14][11][4] = [0.014451717, -0.0029312975, -0.07182182, -0.01887905, 2.1011333E-12, -0.0024273172, -0.005473798, 0.0014430091]
-gra[14][11][5] = [0.007943215, 8.847595E-4, 0.011374953, -0.013261375, 0.0, -0.0024273172, -0.0012047905, -7.2720836E-6]
-gra[14][11][6] = [-5.5476942E-12, 0.0021639597, 0.043663118, 8.188048E-4, -0.0025067397, 0.0, 0.0031763045, 0.0]
-gra[14][11][7] = [0.010155093, -0.0013697359, 0.0019494435, -0.017164951, 0.0, -5.7599705E-4, -8.487664E-4, 0.004819586]
-gra[14][11][8] = [-0.015143082, -0.028094402, -0.06812735, -0.0042073233, 0.0, 0.0, 0.0021252728, 0.04212567]
-gra[14][11][9] = [0.017680958, 0.0011989512, -0.042761106, -0.012579497, -0.0038321887, -0.0024273172, 0.0010881305, 0.0]
-gra[14][11][10] = [0.10300264, -0.04740205, -0.034849335, -0.0068523446, 0.003984191, -0.011439133, 0.027201029, -0.07176561]
-gra[14][11][11] = [-0.13174748, -0.4127771, -0.2476984, -0.16385658, -0.22010909, -0.13418928, -0.10745787, -0.21812226]
-gra[14][11][12] = [-0.03901305, -0.01084387, 0.034373622, -0.046552837, -0.004892796, -0.0024315235, 0.00362852, 0.0065014227]
-gra[14][11][13] = [-0.052112397, 0.03198275, 0.06561172, -0.01938964, 0.0, 0.0013912377, 0.00362852, -0.005294564]
-gra[14][11][14] = [-0.13174748, -0.4127771, -0.2476984, -0.16385658, -0.22010909, -0.13418928, -0.10745787, -0.21812226]
-gra[14][12][0] = [-1.0599452E-4, -0.0020210762, -0.006932474, -2.737789E-4, 0.0031306578, 0.0022224444, 0.0020929475, -0.0018251492]
-gra[14][12][1] = [-8.8162685E-4, -6.848867E-4, -0.01981195, -0.05071387, -8.747375E-4, 0.0, -0.009747193, 0.07975232]
-gra[14][12][2] = [0.010398943, -0.028204845, -0.13535935, -0.022958368, 1.5084875E-10, -0.0024273172, 0.0, 0.007836706]
-gra[14][12][3] = [0.022394357, -0.005284174, -0.06688294, -0.016871221, 0.0, -0.011285769, 0.009492035, 0.0047051376]
-gra[14][12][4] = [0.014039585, -0.0029962487, -0.063942194, -0.022488894, 2.1011333E-12, -0.0100264475, 0.0029301066, 0.0031310264]
-gra[14][12][5] = [0.007531083, -6.81683E-4, 0.019254586, -0.016871221, 0.0, -0.0100264475, 0.009652967, 0.0016880172]
-gra[14][12][6] = [-1.1091661E-10, -0.0046882727, 0.048567124, 8.188048E-4, -0.0025067397, 0.0, 0.0031763045, 0.0]
-gra[14][12][7] = [0.010398943, -4.2611733E-5, 0.013992602, -0.02311066, 0.0, -5.7599705E-4, -8.487664E-4, 0.004819586]
-gra[14][12][8] = [-0.015492963, 0.0014628633, -0.08022591, -0.031336557, 0.0, 0.0, -0.0020159527, 0.056492005]
-gra[14][12][9] = [0.017024977, -0.005443506, -0.030536842, -0.015520515, 1.5084875E-10, -0.010492706, 0.009492035, 0.0016880172]
-gra[14][12][10] = [0.01890654, -0.017414961, -0.023150582, -0.009890772, 0.00846618, -0.008658591, 0.0515223, -0.086118296]
-gra[14][12][11] = [0.023150899, 5.922683E-4, -0.07096923, -0.016346559, -0.002111407, -0.004783477, -0.0022391165, 0.0]
-gra[14][12][12] = [-0.23819716, -0.45526987, -0.26443404, -0.25669253, -0.21316737, -0.19598888, -0.16998905, -0.2994849]
-gra[14][12][13] = [-0.03364171, 0.016109705, 0.1436839, 0.01834002, 0.0, 0.0038268352, -0.0037499052, 0.0018075759]
-gra[14][12][14] = [-0.23819716, -0.45526987, -0.26443404, -0.25669253, -0.21316737, -0.19598888, -0.16998905, -0.2994849]
-gra[14][13][0] = [-1.0599452E-4, 0.0, -0.006932474, -2.737789E-4, 3.0349702E-11, 0.0022224444, 0.0020929475, -0.0032232394]
-gra[14][13][1] = [-0.0064263684, 0.032257907, -0.073842674, -0.042575825, -8.747375E-4, 0.0, -0.013392032, 0.07975232]
-gra[14][13][2] = [0.008543024, -0.023793714, -0.08331758, -0.015909398, -4.115616E-11, -0.0024273172, 0.0, 0.004819586]
-gra[14][13][3] = [0.009246991, -0.003999448, -0.024953874, -0.011476233, 0.0, -0.011285769, 0.009492035, 0.0016880172]
-gra[14][13][4] = [0.012183664, -0.0017115228, -0.02201313, -0.01957027, 2.1011333E-12, -0.0100264475, 0.0029301066, 1.1390599E-4]
-gra[14][13][5] = [0.009246991, 6.0304295E-4, 0.016605025, -0.011476233, 0.0, -0.0100264475, 0.009492035, 0.0016880172]
-gra[14][13][6] = [0.0, -0.0022572777, 0.05019716, 0.0, -0.0025067397, 0.0, 0.0031763045, 0.0]
-gra[14][13][7] = [0.011328364, 1.3491325E-4, 0.018187441, -0.015379808, 0.0, -5.7599705E-4, -8.487664E-4, 0.005930855]
-gra[14][13][8] = [-0.021037703, 0.028769845, -0.100073226, -0.02493851, 0.0, 0.0, -0.005660792, 0.056492005]
-gra[14][13][9] = [0.015169059, -0.0041424744, -0.020650156, -0.008471542, -4.115616E-11, -0.010492706, 0.009492035, 0.0016880172]
-gra[14][13][10] = [0.024620136, -0.013816819, -0.008670685, -0.022165136, 0.006513544, -0.008658591, 0.053646676, -0.077163056]
-gra[14][13][11] = [0.02129498, -0.007425433, -0.08519275, -0.010228307, -0.002111407, -0.004783477, -0.0022391165, 0.0]
-gra[14][13][12] = [0.013093872, 0.010518471, -0.011354735, -0.008471542, 0.0020460575, -0.0024273172, 0.0, 0.0]
-gra[14][13][13] = [-0.3152193, -0.4017373, -0.16526677, -0.19256514, -0.19967724, -0.19260567, -0.1575356, -0.23550606]
-gra[14][13][14] = [-0.3152193, -0.4017373, -0.16526677, -0.19256514, -0.19967724, -0.19260567, -0.1575356, -0.23550606]
diff --git a/dependencyParser/examples/edges output.txt b/dependencyParser/examples/edges output.txt
deleted file mode 100644
index c1e80e8..0000000
--- a/dependencyParser/examples/edges output.txt
+++ /dev/null
@@ -1,552 +0,0 @@
-edges[5][6] = [9]
-edges[5][7] = [9, 17]
-edges[5][8] = [9, 17, 30]
-edges[5][9] = [9]
-edges[5][10] = [9, 24, 26, 4]
-edges[5][11] = [9]
-edges[5][12] = [9]
-edges[5][13] = [9]
-edges[5][14] = [9]
-edges[5][15] = [9]
-edges[5][16] = [9]
-edges[5][17] = [9, 17]
-edges[5][18] = [9, 26, 14, 24, 6, 4]
-edges[5][21] = [9]
-edges[5][22] = [9]
-edges[5][23] = [9]
-edges[5][24] = [9]
-edges[5][25] = [9]
-edges[5][26] = [9]
-edges[5][28] = [9]
-edges[5][29] = [9, 17]
-edges[5][31] = [9]
-edges[5][32] = [9]
-edges[5][37] = [9]
-edges[6][6] = [4]
-edges[6][7] = [5, 8, 21, 10, 4, 17]
-edges[6][9] = [21, 5, 15, 4, 17]
-edges[6][10] = [11, 5, 31]
-edges[6][12] = [5, 4, 21, 10, 17]
-edges[6][13] = [5]
-edges[6][14] = [4, 21, 18]
-edges[6][15] = [21, 4, 5]
-edges[6][18] = [5, 4]
-edges[6][19] = [5]
-edges[6][20] = [5, 21]
-edges[6][21] = [5]
-edges[6][22] = [21]
-edges[6][23] = [5]
-edges[6][26] = [5]
-edges[6][27] = [5]
-edges[6][29] = [5, 4, 21, 8]
-edges[6][35] = [21, 5]
-edges[6][37] = [5, 31, 4]
-edges[6][39] = [5, 21]
-edges[6][40] = [5]
-edges[6][41] = [5]
-edges[7][6] = [4, 8, 5, 21, 28, 17]
-edges[7][7] = [7, 8, 4, 5, 10, 21, 15, 12, 31, 30, 17]
-edges[7][8] = [4, 20]
-edges[7][9] = [4, 8, 21, 5, 6, 17, 7]
-edges[7][10] = [11, 4, 5, 8, 20, 31, 7, 21]
-edges[7][11] = [4, 20, 30]
-edges[7][12] = [4, 5, 7, 8]
-edges[7][13] = [4, 8, 20, 14, 5]
-edges[7][14] = [4, 18, 16]
-edges[7][15] = [4, 19, 21]
-edges[7][16] = [4, 20]
-edges[7][17] = [14, 4, 20, 7]
-edges[7][18] = [4, 8, 20, 5, 7, 10, 14, 21]
-edges[7][19] = [4, 5, 10]
-edges[7][20] = [4, 5]
-edges[7][21] = [4]
-edges[7][22] = [4]
-edges[7][23] = [4]
-edges[7][24] = [4, 20]
-edges[7][26] = [4, 5]
-edges[7][27] = [8, 7, 4, 5]
-edges[7][28] = [4, 20]
-edges[7][29] = [4, 5, 8, 7]
-edges[7][31] = [4]
-edges[7][32] = [4]
-edges[7][34] = [4]
-edges[7][37] = [4, 7, 8, 31, 5, 21]
-edges[7][39] = [4, 8, 7]
-edges[7][40] = [4]
-edges[7][41] = [4]
-edges[8][6] = [4, 5, 15, 21]
-edges[8][7] = [6, 10, 12, 4, 15, 30]
-edges[8][8] = [10, 20, 6, 13, 4, 30]
-edges[8][9] = [10, 15, 6, 12, 4, 5]
-edges[8][10] = [11, 15, 6, 4, 14, 12, 5, 20, 10, 31, 30]
-edges[8][11] = [20, 10, 6, 4, 30]
-edges[8][12] = [4, 10, 6, 12]
-edges[8][13] = [20, 14, 4, 15, 12, 10]
-edges[8][14] = [4, 16, 18, 23, 10, 5, 19]
-edges[8][15] = [4, 15, 5, 20, 30, 19]
-edges[8][16] = [20]
-edges[8][17] = [14, 20, 6, 4, 10]
-edges[8][18] = [4, 6, 12, 10, 20, 15, 5, 14]
-edges[8][19] = [10, 12, 6, 4, 15, 30]
-edges[8][20] = [12, 10, 4]
-edges[8][21] = [6, 15, 10]
-edges[8][22] = [19, 4]
-edges[8][23] = [20, 4]
-edges[8][24] = [20, 10, 30]
-edges[8][25] = [22]
-edges[8][26] = [10, 12, 6, 4]
-edges[8][27] = [6, 4, 10]
-edges[8][28] = [13, 20, 30]
-edges[8][29] = [4, 12, 10, 6]
-edges[8][31] = [4]
-edges[8][32] = [30]
-edges[8][33] = [6]
-edges[8][34] = [4]
-edges[8][37] = [30, 10, 6, 4, 31, 12]
-edges[8][38] = [6]
-edges[8][39] = [6, 4]
-edges[8][40] = [4, 30]
-edges[9][6] = [4, 5, 28, 21]
-edges[9][7] = [12, 7, 5, 8, 4, 10, 6, 21]
-edges[9][8] = [20, 4]
-edges[9][9] = [4, 21]
-edges[9][10] = [11, 21, 25, 4]
-edges[9][11] = [20, 4]
-edges[9][12] = [5, 4]
-edges[9][13] = [4]
-edges[9][14] = [4, 18]
-edges[9][15] = [4]
-edges[9][17] = [14]
-edges[9][18] = [20, 5, 4]
-edges[9][19] = [4, 12, 5]
-edges[9][20] = [5]
-edges[9][21] = [4]
-edges[9][22] = [19, 4]
-edges[9][23] = [4]
-edges[9][24] = [20, 4]
-edges[9][26] = [12, 5]
-edges[9][27] = [8]
-edges[9][29] = [5]
-edges[9][31] = [4]
-edges[9][37] = [4, 8]
-edges[10][6] = [17, 4]
-edges[10][7] = [4, 6, 17, 10, 21, 8, 5, 12]
-edges[10][8] = [17, 4]
-edges[10][9] = [17, 4, 6, 21]
-edges[10][10] = [11, 17, 4, 31, 9]
-edges[10][11] = [17, 4]
-edges[10][12] = [21, 17, 6, 12]
-edges[10][13] = [17, 4]
-edges[10][14] = [17, 4]
-edges[10][15] = [17, 4]
-edges[10][16] = [17]
-edges[10][17] = [17]
-edges[10][18] = [17, 4, 21]
-edges[10][19] = [10]
-edges[10][20] = [17]
-edges[10][21] = [17, 4]
-edges[10][22] = [19, 4, 17]
-edges[10][23] = [17]
-edges[10][24] = [17]
-edges[10][25] = [22]
-edges[10][26] = [6]
-edges[10][27] = [17, 21, 4, 5]
-edges[10][28] = [17]
-edges[10][29] = [17]
-edges[10][30] = [17]
-edges[10][31] = [17]
-edges[10][32] = [17]
-edges[10][37] = [21, 8, 17, 31, 6, 5, 4]
-edges[10][40] = [4]
-edges[11][6] = [5, 4, 21, 15]
-edges[11][7] = [15, 6, 10, 12, 4, 30]
-edges[11][8] = [20, 10, 6, 4, 30]
-edges[11][9] = [6, 15, 12, 10, 5, 4]
-edges[11][10] = [11, 6, 15, 10, 12, 5, 4, 20, 8, 31]
-edges[11][11] = [20, 6, 4, 10, 30]
-edges[11][12] = [12, 6, 10, 4, 15, 30]
-edges[11][13] = [15, 20, 6, 14, 4, 10]
-edges[11][14] = [4, 18, 16, 10, 29, 5, 15, 19]
-edges[11][15] = [5, 4, 15, 12, 10]
-edges[11][16] = [20, 6]
-edges[11][17] = [14, 6, 20, 4, 10]
-edges[11][18] = [4, 15, 10, 6, 20, 5, 12, 14]
-edges[11][19] = [12, 10, 6, 15, 4]
-edges[11][20] = [12, 4, 10]
-edges[11][21] = [12, 6, 15]
-edges[11][22] = [19, 4, 6, 20]
-edges[11][23] = [6, 20]
-edges[11][24] = [20, 6, 30, 4]
-edges[11][26] = [10, 6, 12, 4, 15]
-edges[11][27] = [4, 5, 6, 10]
-edges[11][28] = [20, 4, 10]
-edges[11][29] = [6, 12, 10, 15]
-edges[11][31] = [4]
-edges[11][32] = [14, 20]
-edges[11][33] = [6, 4]
-edges[11][34] = [4]
-edges[11][36] = [15, 4]
-edges[11][37] = [15, 6, 31, 4, 12, 10]
-edges[11][40] = [4]
-edges[12][6] = [4, 5]
-edges[12][7] = [5, 21, 4, 17, 10]
-edges[12][8] = [4, 20]
-edges[12][9] = [5, 4, 21]
-edges[12][10] = [11, 5, 21, 31]
-edges[12][11] = [4, 20]
-edges[12][12] = [4, 21]
-edges[12][13] = [4, 5, 20]
-edges[12][14] = [4]
-edges[12][15] = [4]
-edges[12][18] = [5]
-edges[12][19] = [5]
-edges[12][21] = [4]
-edges[12][23] = [4]
-edges[12][24] = [20]
-edges[12][26] = [5]
-edges[12][27] = [21, 5, 4]
-edges[12][29] = [5]
-edges[12][37] = [5, 21]
-edges[13][6] = [4, 5, 28]
-edges[13][7] = [6, 12, 15, 4, 5, 8]
-edges[13][8] = [13, 20]
-edges[13][9] = [6, 4, 12]
-edges[13][10] = [11, 5, 12, 6, 28, 4]
-edges[13][11] = [13, 20]
-edges[13][12] = [6, 4]
-edges[13][14] = [4, 18]
-edges[13][15] = [4, 5, 21]
-edges[13][17] = [13, 4]
-edges[13][18] = [6, 12, 4, 5, 28]
-edges[13][19] = [12, 6, 4]
-edges[13][20] = [12]
-edges[13][22] = [19, 4]
-edges[13][24] = [6]
-edges[13][26] = [12]
-edges[13][27] = [4]
-edges[13][28] = [13]
-edges[13][29] = [12, 6]
-edges[13][31] = [4]
-edges[13][32] = [13, 4]
-edges[13][37] = [12, 4, 31, 6]
-edges[14][6] = [4, 17, 21]
-edges[14][7] = [17, 21, 5, 4, 6]
-edges[14][8] = [20]
-edges[14][9] = [17]
-edges[14][10] = [11]
-edges[14][14] = [4, 21, 18]
-edges[14][15] = [21, 5, 4]
-edges[14][17] = [14]
-edges[14][22] = [21, 4]
-edges[14][25] = [22]
-edges[15][6] = [4, 21, 5]
-edges[15][7] = [4, 6, 17, 5]
-edges[15][8] = [20, 4]
-edges[15][10] = [11, 14, 20]
-edges[15][11] = [4, 20]
-edges[15][13] = [21, 20]
-edges[15][14] = [4, 21, 18]
-edges[15][15] = [4, 21, 5]
-edges[15][16] = [20]
-edges[15][17] = [14, 20]
-edges[15][18] = [20, 14, 5, 21, 4]
-edges[15][22] = [19, 4]
-edges[15][23] = [20]
-edges[15][24] = [20, 4]
-edges[15][26] = [4, 12]
-edges[15][28] = [13, 20]
-edges[16][6] = [4]
-edges[16][7] = [6, 4]
-edges[16][8] = [13]
-edges[16][9] = [6]
-edges[16][10] = [11, 4, 14]
-edges[16][12] = [6]
-edges[16][13] = [14]
-edges[16][14] = [4, 16, 18]
-edges[16][15] = [4]
-edges[16][17] = [14]
-edges[16][18] = [14, 4, 6]
-edges[16][19] = [6]
-edges[16][22] = [4, 19]
-edges[16][25] = [22]
-edges[16][26] = [6]
-edges[16][29] = [6]
-edges[16][37] = [6, 4]
-edges[17][6] = [4, 5, 12, 15, 21]
-edges[17][7] = [10, 12, 4, 15, 6, 5]
-edges[17][8] = [20, 10]
-edges[17][9] = [15, 6, 12, 10, 5, 4]
-edges[17][10] = [11, 10, 15, 4, 20, 5, 31]
-edges[17][11] = [20, 10, 4, 30, 21]
-edges[17][12] = [4, 10, 12, 6]
-edges[17][13] = [10, 4, 20]
-edges[17][14] = [16, 18, 4, 10, 21]
-edges[17][15] = [4, 15, 5]
-edges[17][17] = [14]
-edges[17][18] = [20, 10, 4, 6, 12, 5, 15]
-edges[17][19] = [10, 4, 12, 15, 6, 5]
-edges[17][20] = [12, 10, 4]
-edges[17][22] = [4, 19]
-edges[17][23] = [10, 20]
-edges[17][24] = [10, 20]
-edges[17][26] = [10, 12, 5, 4, 6]
-edges[17][27] = [4, 12]
-edges[17][28] = [13]
-edges[17][29] = [10, 12, 15]
-edges[17][31] = [4]
-edges[17][34] = [4]
-edges[17][37] = [10, 12, 31]
-edges[18][6] = [4, 28, 17, 5]
-edges[18][7] = [17, 6, 5, 4, 10, 8, 12, 7, 31]
-edges[18][8] = [17, 4, 13]
-edges[18][9] = [17, 6, 4, 8, 5]
-edges[18][10] = [11, 17, 6, 4, 31, 24, 10]
-edges[18][11] = [17, 13, 4, 5, 20]
-edges[18][12] = [17, 4, 6, 7, 10]
-edges[18][13] = [4, 17]
-edges[18][14] = [4, 16, 17, 23, 27]
-edges[18][15] = [4, 17, 5]
-edges[18][16] = [17]
-edges[18][17] = [17, 14, 13]
-edges[18][18] = [27, 21, 17, 6, 4, 10, 7, 5]
-edges[18][19] = [4, 6, 10, 17]
-edges[18][20] = [17]
-edges[18][21] = [4, 17]
-edges[18][22] = [19, 4, 21, 17]
-edges[18][23] = [17, 4]
-edges[18][24] = [17, 6]
-edges[18][26] = [17, 6, 10]
-edges[18][27] = [4, 17, 21]
-edges[18][28] = [17, 13]
-edges[18][29] = [17, 6, 9, 10]
-edges[18][31] = [4, 17]
-edges[18][32] = [17]
-edges[18][37] = [17, 6, 4, 31, 5, 10]
-edges[18][39] = [17]
-edges[18][40] = [4]
-edges[19][6] = [4]
-edges[19][7] = [4, 17, 7]
-edges[19][9] = [4]
-edges[19][10] = [11]
-edges[19][13] = [4]
-edges[19][14] = [4]
-edges[19][15] = [4]
-edges[19][18] = [4]
-edges[19][38] = [4]
-edges[20][8] = [4]
-edges[20][9] = [4]
-edges[20][10] = [11]
-edges[20][15] = [4]
-edges[20][18] = [4]
-edges[21][6] = [5, 4, 23]
-edges[21][7] = [10, 12, 15, 4]
-edges[21][8] = [20]
-edges[21][9] = [4]
-edges[21][10] = [10, 11]
-edges[21][11] = [20]
-edges[21][12] = [12, 10]
-edges[21][14] = [16, 4]
-edges[21][15] = [4, 5]
-edges[21][17] = [14]
-edges[21][18] = [12, 10, 4, 5]
-edges[21][19] = [10, 12, 4]
-edges[21][20] = [12]
-edges[21][26] = [12]
-edges[21][29] = [10, 12]
-edges[21][37] = [12, 10]
-edges[22][8] = [20]
-edges[22][10] = [14, 11]
-edges[22][11] = [20]
-edges[22][13] = [20]
-edges[22][14] = [4]
-edges[22][15] = [20]
-edges[22][17] = [14, 20]
-edges[22][18] = [20, 14]
-edges[22][23] = [20]
-edges[22][24] = [14, 20]
-edges[22][25] = [22]
-edges[22][28] = [20]
-edges[22][31] = [20]
-edges[23][6] = [4, 5, 17]
-edges[23][7] = [10, 12, 4, 5]
-edges[23][8] = [20, 10]
-edges[23][9] = [10, 4, 12]
-edges[23][10] = [11, 5, 10]
-edges[23][11] = [20, 10]
-edges[23][12] = [10, 4, 12]
-edges[23][13] = [20]
-edges[23][14] = [18, 4, 16, 23]
-edges[23][15] = [4, 5]
-edges[23][17] = [14]
-edges[23][18] = [10, 20, 4, 5]
-edges[23][19] = [10, 12]
-edges[23][22] = [4, 19]
-edges[23][26] = [10, 4, 12]
-edges[23][29] = [10]
-edges[23][31] = [4]
-edges[23][32] = [4]
-edges[23][37] = [10, 31]
-edges[24][6] = [4, 5, 15]
-edges[24][7] = [6, 15, 12, 4]
-edges[24][8] = [13, 6, 20]
-edges[24][9] = [15, 6, 4, 5]
-edges[24][10] = [11, 6, 24, 31, 15]
-edges[24][11] = [6, 13, 20, 4]
-edges[24][12] = [12, 4, 15, 6]
-edges[24][13] = [20, 15]
-edges[24][14] = [18, 4, 23, 16]
-edges[24][15] = [4, 5, 15]
-edges[24][17] = [14, 6]
-edges[24][18] = [6, 12, 15, 4, 14]
-edges[24][19] = [12, 6]
-edges[24][21] = [15]
-edges[24][22] = [4, 19]
-edges[24][24] = [20]
-edges[24][26] = [12, 6, 15]
-edges[24][28] = [13]
-edges[24][29] = [12, 6, 15]
-edges[24][31] = [4]
-edges[24][33] = [6]
-edges[24][34] = [4]
-edges[24][37] = [4, 15]
-edges[24][40] = [4, 6]
-edges[25][6] = [4, 5]
-edges[25][8] = [13]
-edges[25][10] = [11]
-edges[26][7] = [7, 4]
-edges[26][9] = [4]
-edges[26][10] = [11]
-edges[26][12] = [4]
-edges[26][14] = [4]
-edges[26][38] = [4]
-edges[27][6] = [4]
-edges[27][7] = [4, 7, 5, 8, 10]
-edges[27][9] = [4, 8]
-edges[27][10] = [25, 11, 21, 5, 4]
-edges[27][13] = [4]
-edges[27][14] = [4]
-edges[27][18] = [4, 5]
-edges[27][19] = [4]
-edges[27][21] = [4]
-edges[27][26] = [5]
-edges[27][27] = [5, 4, 21]
-edges[27][29] = [17, 5]
-edges[27][37] = [4, 8, 7]
-edges[28][6] = [4, 5, 21]
-edges[28][7] = [6, 15, 12, 4]
-edges[28][8] = [4]
-edges[28][9] = [15, 4, 6]
-edges[28][10] = [11, 15, 4]
-edges[28][12] = [15, 6]
-edges[28][13] = [5]
-edges[28][14] = [18, 4, 29]
-edges[28][15] = [4, 5, 15]
-edges[28][17] = [14]
-edges[28][18] = [6, 19, 15]
-edges[28][19] = [6]
-edges[28][20] = [15]
-edges[28][22] = [4, 19]
-edges[28][26] = [6, 12]
-edges[28][29] = [6]
-edges[28][31] = [4]
-edges[28][34] = [4]
-edges[28][37] = [15, 6]
-edges[29][6] = [4, 5, 28, 21]
-edges[29][7] = [10, 6, 12, 15, 8, 4, 5]
-edges[29][8] = [20, 4]
-edges[29][9] = [4, 6, 10, 15, 12]
-edges[29][10] = [11, 31, 24, 10, 20]
-edges[29][11] = [20, 4, 10]
-edges[29][12] = [10, 6, 12]
-edges[29][13] = [10, 15, 4, 20]
-edges[29][14] = [16, 4, 18]
-edges[29][15] = [5, 4]
-edges[29][17] = [20, 14, 4]
-edges[29][18] = [10, 5, 4, 12, 6]
-edges[29][19] = [10, 12, 6, 4]
-edges[29][20] = [12]
-edges[29][21] = [4]
-edges[29][22] = [4]
-edges[29][24] = [4]
-edges[29][26] = [10, 12]
-edges[29][27] = [10, 4]
-edges[29][29] = [10, 12]
-edges[29][31] = [4]
-edges[29][37] = [10, 12, 31, 4, 6]
-edges[29][39] = [12]
-edges[31][6] = [5, 4]
-edges[31][7] = [10, 12, 4, 15]
-edges[31][8] = [10, 20]
-edges[31][9] = [4, 5]
-edges[31][10] = [11, 10, 24, 31, 17, 9]
-edges[31][11] = [20, 30]
-edges[31][12] = [10, 12]
-edges[31][13] = [20]
-edges[31][14] = [16, 4, 18, 5]
-edges[31][15] = [4, 5]
-edges[31][17] = [14, 20]
-edges[31][18] = [10, 12, 20, 5, 17]
-edges[31][19] = [12, 10]
-edges[31][20] = [12]
-edges[31][22] = [4]
-edges[31][24] = [20]
-edges[31][27] = [10]
-edges[31][29] = [10]
-edges[31][37] = [10, 4, 31]
-edges[32][6] = [5, 4]
-edges[32][7] = [4, 10, 12]
-edges[32][8] = [20, 10]
-edges[32][9] = [15, 4]
-edges[32][10] = [4, 11, 24, 31, 10]
-edges[32][11] = [20, 10]
-edges[32][12] = [10, 4]
-edges[32][13] = [20]
-edges[32][14] = [4, 18, 16]
-edges[32][15] = [4, 5]
-edges[32][17] = [14, 20]
-edges[32][18] = [12, 10, 4, 5]
-edges[32][19] = [10, 4, 12]
-edges[32][20] = [4, 12, 10]
-edges[32][22] = [4]
-edges[32][26] = [12, 4, 10, 5]
-edges[32][27] = [10]
-edges[32][28] = [10]
-edges[32][31] = [4]
-edges[32][37] = [4, 31, 12]
-edges[33][9] = [4]
-edges[33][10] = [11]
-edges[34][6] = [5]
-edges[34][7] = [10, 4]
-edges[34][8] = [10]
-edges[34][10] = [11]
-edges[34][14] = [18, 4, 16]
-edges[34][15] = [4]
-edges[34][19] = [10]
-edges[35][10] = [11]
-edges[35][15] = [4]
-edges[36][6] = [4, 5]
-edges[37][6] = [4, 5]
-edges[37][7] = [4, 7, 8, 5, 21, 6]
-edges[37][8] = [4, 10]
-edges[37][9] = [4, 21]
-edges[37][10] = [21, 11, 25, 8, 4]
-edges[37][12] = [4, 21]
-edges[37][14] = [4]
-edges[37][15] = [8, 4]
-edges[37][18] = [4]
-edges[37][21] = [4]
-edges[37][27] = [21, 5]
-edges[37][29] = [4]
-edges[37][32] = [4]
-edges[37][37] = [8, 21, 4, 5, 7, 17]
-edges[37][39] = [8]
-edges[37][40] = [4]
-edges[39][6] = [21]
-edges[39][7] = [8]
-edges[39][10] = [11]
-edges[39][14] = [4]
-edges[39][37] = [8]
-edges[40][10] = [11]
-edges[41][10] = [11]
-edges[41][41] = [21]
-def = [4]
diff --git a/dependencyParser/examples/is output.txt b/dependencyParser/examples/is output.txt
deleted file mode 100644
index 24e879b..0000000
--- a/dependencyParser/examples/is output.txt
+++ /dev/null
@@ -1,199 +0,0 @@
------m_encoder-----
-m_featureSets[WORD] = {przestępca: 2237, sypiała: 40681, postawny: 28676, chrzcielnicy: 33013, rodzinne: 17265, rodzinna: 39199, uwięzić: 27792, bieganiu: 27332, zmienione: 18988, bootującej: 16343, przestępcy: 2234, flegmę: 4944, Funkcjonariusze: 17882, wierzchołki: 31813, zmieniona: 36337, odwieźć: 8897, posiłek: 2576, Aaa: 39718, !: 358, ": 5927, wprowadzone: 32738, obłożyło: 26137, BCC: 25412, $: 34107, %: 34067, ': 33700, kategoriach: 37908, (: 2598, wprowadzono: 17264, opiekuje: 10886, ): 2601, kalendarzu: 5441, +: 38035, ,: 27, -: 185, modułu: 37422, .: 16, /: 33255, krytyka: 15299, bliskich: 12516, postawić: 2018, Dorohusk: 9491, zmieniony: 14640, poddawane: 35462, krytyki: 45132, pacjent: 7540, poddawano: 43369, :: 33240, wzór: 977, ;: 4750, wiązać: 9099, chrzcielnica: 33014, ?: 188, A: 990, B: 14265, inwalidę: 33654, C: 26676, utopić: 7389, D: 21028, Faktycznie: 31464, E: 45436, piękne: 17211, G: 2424, H: 10704, odmaterializować: 32056, I: 597, Zanim: 20233, J: 10708, K: 14645, botanik: 32047, piękno: 29553, pokonywania: 34247, L: 39989, M: 1128, N: 10706, O: 2903, P: 13636, podpunkt: 39316, Q: 27885, Pięcioletnia: 18978, piękny: 2167, R: 3578, S: 1894, T: 23370, U: 8598, techniki: 15595, Właścicielką: 2109, V: 42064, W: 24, X: 8522, Aby: 6473, Z: 164, [: 34398, zgłaszających: 28593, poświęcony: 19835, ]: 34399, technika: 15597, zwalczać: 52, zarys: 16637, a: 1000, b: 38728, c: 45216, d: 44297, e: 44042, rodzinny: 6233, Francesca: 33146, g: 38126, Ach: 40856, i: 118, Układy: 14877, j: 40762, rozczarować: 3772, postawił: 14574, choćby: 17341, l: 36850, m: 312, zlikwidujmy: 44456, o: 208, p: 15743, bliskiej: 10632, r: 3158, osadzono: 26935, s: 35796, Act: 37911, u: 346, mięśni: 16459, w: 18, piękna: 2164, z: 35, wzgórza: 26972, wzgórze: 16580, socjusza: 929, Pomorskim: 32111, ochroniarzami: 26672, Ade: 32920, postawną: 28671, włoszczowski: 27202, mówienia: 40887, kastrować: 17185, odreagowywać: 17465, BFR: 37902, bioderku: 28286, opiekuna: 11927, bioderko: 28287, położonych: 34242, Adu: 32916, zawisł: 10846, pasować: 8390, OHIM: 34517, Komendant: 24696, tradycyjnie: 17684, dopuszczony: 11012, misyjne: 23923, posprzątać: 39630, odczują: 11392, Dorucha: 20238, popędzić: 39459, wyluzowanego: 2299, Barcelona: 37732, piękną: 3560, Lodów: 20975, epitetów: 32976, brzucha: 5337, nagrobkiem: 25688, asfaltowej: 19742, efektywnej: 34887, specjalnego: 2172, wiązka: 37020, mikrogram: 37721, czapeczką: 30098, poświęcone: 6307, rozłożyła: 134, rodzinie: 14546, misyjny: 23924, przesadzasz: 24792, sposoby: 34918, »: 40902, umożliwiać: 7217, sposobu: 16316, ministerialny: 31704, Gemini: 18775, międzyrządowych: 26800, szklanki: 31359, Jeleni: 9055, Havlovej: 5342, konfiskatę: 31558, płucnego: 43458, salami: 6906, Aga: 28104, wabiąc: 30678, brzuchu: 37800, Wróblewski: 26732, BIC: 37311, walczyli: 37040, efektywnie: 41728, szklanka: 7907, trzymiesięcznej: 10550, BIG: 26309, dobrego: 10826, chmur: 40922, mniejszej: 38757, finiszowała: 31529, Lędziny: 22545, wyślizgnąć: 39457, ciągnie: 28040, karykatury: 39255, wyssać: 9381, pleść: 29367, monoetylowy: 35498, wodami: 35265, ciągnik: 21017, ściągnęli: 10648, milijednostka: 45203, szelmowskim: 35929, CANCIDAS: 43908, gruzów: 10400, Planował: 35070, rozstrzygania: 34787, utalentowanych: 43924, wiązał: 25080, potrzebujesz: 32483, spadochronowy: 3031, poniesionych: 44410, idziemy: 19257, kłopotliwy: 6355, [import]cie: 26420, karykatura: 31715, bogatsze: 6261, wanadowych: 18734, wyświadczyć: 42368, odymać: 22424, pozwoliły: 10795, benzo[a]pirenu: 35457, współczesność: 9110, suszyła: 25429, krytycy: 19412, koszt: 11264, Lipnik: 30001, prześliźnie: 30967, koszu: 17011, gęstnieć: 28811, czapeczka: 30102, obdarzyła: 43013, dumna: 23426, zrozumieć: 5867, władca: 33474, Partyzanci: 31227, wodach: 31986, sposobność: 25005, wylizać: 27337, starania: 42671, frontowy: 36080, pozwoliła: 6850, odesłać: 23040, standardowy: 39222, twardziel: 17457, tknąć: 20905, staranie: 4587, spacerujących: 29650, reform: 20473, homoseksualizm: 18945, Biodra: 32187, wydajniej: 22061, standardowo: 21153, efektowny: 22025, blasku: 25583, kładziesz: 39426, domowego: 16806, inseminatora: 23392, oczywisty: 11577, złożyć: 4473, ń: 19637, czatowali: 32624, Wycelowała: 13004, Estonii: 32334, opiekują: 19124, snów: 21277, kosztowna: 43102, uważała: 25072, kosztowny: 8830, budowany: 15773, frontowe: 36077, Richard: 35355, pseudoeuropejczyków: 12477, szerokopasmowy: 43242, Treurnicht: 26639, Rybny: 33107, ś: 464, dłuższą: 4165, urzędniczki: 18365, mroźny: 21919, stanął: 1038, oskrzelowa: 16531, BMS: 34953, terytoriach: 38747, zaznaczyć: 15250, Akt: 25387, rozliczalność: 38124, urzędniczka: 18372, BMW: 25915, oczywiste: 11572, oskrzelowy: 16537, weryfikacyjnych: 43732, nastawionych: 28467, zagrożeniach: 35851, mogli: 1044, Garrett: 35309, Ala: 2394, Ale: 65, biologicznego: 36215, budowane: 31971, ż: 23896, Saladyn: 31188, nienawiści: 43362, dociera: 30039, Estonia: 32339, dumny: 21164, stypendium: 13287, włączając: 26727, Angeli: 4481, uzbrojenie: 35747, Alp: 30145, atakować: 2409, wydziału: 2173, Awiwie: 17076, Angela: 4484, Zatrzymanym: 2239, promocyjny: 22286, Singapurze: 21806, Organizatorzy: 7931, MODUł: 37957, Jerozolimski: 31189, szklankę: 7905, Pluj: 25067, Nauki: 13611, przyniesiesz: 38787, artretyzm: 33648, Plus: 42683, warkoczyk: 15700, komórce: 38113, Śrem: 21288, Facet: 32705, nieformalny: 38084, wynagrodzenia: 23439, większej: 35518, nieobowiązkowy: 35340, zasad: 21652, sposobów: 32477, uniezależnić: 28118, wydaniem: 20301, wynagrodzenie: 23443, tabelaryczny: 43978, szerokopasmowa: 43237, Shimada: 23144, nieobowiązkowe: 35338, uzbrojeniu: 35746, Kambakhsha: 40354, żołnierzami: 5492, ruchem: 3794, zmienioną: 34400, Ani: 2797, stanąć: 1041, złożył: 12489, harcerz: 18915, Centralnego: 33835, białaczką: 17529, ważniejszych: 27342, zrozumiał: 5863, posiłki: 37034, Wyrzucili: 30085, dłuższy: 29997, efektowna: 22024, farmakodynamiczny: 37831, nieoficjalnych: 18845, popędzać: 24003, komórek: 14783, mikroprzedsiębiorstwo: 38224, przypadło: 43833, odesłał: 24701, popędzili: 39454, Tych: 12684, dzieciobójstwo: 41508, promocyjne: 40736, przypadły: 32145, kartuski: 13201, kotce: 10495, zapiaszczyć: 38649, niekonwencjonalnych: 29528, pasożytów: 44103, dzieciobójstwa: 41503, Olimpijskie: 9957, BRH: 7444, Koncepcja: 43996, pokrzyżować: 31707, oferent: 35914, strun: 15254, fluorytowy: 18580, Afrykańczyku: 3460, grzybów: 13232, pomocowego: 34648, nagrodzonych: 27252, zagrożeniami: 21381, niewyraźnym: 23125, zaopiekował: 41339, sprowadzenie: 1962, planujemy: 2276, Piotra: 5837, zatrzaśnięty: 1976, odpocząć: 7853, Zgodnie: 6953, woleć: 17913, niezrealizowane: 15016, Asuan: 20901, Tegoroczną: 21140, zatwierdzony: 6780, wymieszać: 19898, Pierwsi: 36302, kamieniarze: 23698, powstanie: 8549, Podpisał: 19215, Spanikowani: 28196, Karaibów: 43788, obejrzał: 9420, starym: 7466, zdołali: 31631, gwiazdy: 8905, dźwigać: 28848, bezpieczną: 14012, powstaniu: 8544, powstrzyma: 35683, Zamaskowany: 1278, umacnianiu: 40842, Trójstronnej: 16714, pokrzyżował: 31706, zatwierdzona: 42812, zadźgać: 14794, lokatorskiej: 29786, zatwierdzone: 42479, Art: 35878, karami: 10602, rzępolić: 11410, powtarzać: 11367, bankowość: 28460, Dante: 43453, Słyszała: 22616, Zgłoszony: 41049, towarzyski: 6270, wolał: 17910, nieformalne: 39775, zaopiekować: 15763, Przerwała: 33451, powstania: 6800, szałasy: 28199, wybaczysz: 38404, uczulać: 16550, Spójrz: 30877, dinozaur: 44030, komórka: 3418, reporter: 23991, obejrzeć: 2436, Wpełzł: 34447, Gazprom: 37514, marketing: 45437, Assicurazioni: 38378, zaimprowizowanych: 22676, naczynku: 36254, Niemniej: 36996, dźwigał: 28846, Milkowszczyzna: 16595, połowach: 33261, poczerwieniała: 24193, uzgadniania: 43867, tortura: 24499, naczynko: 10717, Częstochowy: 15811, Świetnie: 44311, Podlaski: 30768, rysowali: 32697, chińskimi: 41670, naczynie: 13542, sparaliżowany: 1214, naczynia: 13536, zajść: 24383, namysłu: 18126, zoologiczny: 10740, przeważającą: 38513, Pomagasz: 22889, Zgięła: 33980, narodowość: 43685, zbadać: 24138, biznes: 14294, komórki: 3416, biurowiec: 13194, tereny: 45036, Podlaska: 13657, powtarzał: 18223, Początek: 6244, szklanym: 34239, terenu: 6971, sądowych: 45025, karani: 4610, władać: 23215, Bydgoszczanin: 7094, wyliczenie: 21227, białaczki: 38868, pleśniowych: 16482, bydgoszczanin: 7099, białaczka: 17532, Postanowił: 5119, Konwój: 3285, Milkowszczyznę: 16594, sporze: 14174, sforsować: 9458, Paulauskasowi: 23585, Załamała: 13067, rozejrzał: 29663, nawracać: 21769, skrypt: 35056, naczyniu: 44191, ssak: 27790, wymaga: 5691, wyminął: 32521, odmianami: 33643, Jugosławia: 22302, Pańskie: 25998, Barnard: 35078, gwiazda: 916, kompletnym: 40096, wycinać: 35720, zamilknąć: 5108, Jugosławii: 22299, przednich: 34735, Pańskim: 25995, organizatorzy: 23778, obóz: 22188, narkotyki: 12397, zaangażowanych: 36502, 241mg: 41289, postulowanego: 2892, podmiotów: 17436, Odpoczywał: 34842, objeść: 28867, odrobiła: 40754, obój: 17566, wyposażane: 42604, ugodowość: 26636, wybitny: 16171, brazylijski: 41112, Tamalana: 37596, Lyonie: 38549, zasobów: 16773, starsi: 7630, wycinek: 21081, powierzone: 44432, wydawnictw: 16782, Grozi: 9279, sprzedaży: 10599, Grozd: 8860, gimnastycznymi: 6907, wybitni: 38184, rozejrzeć: 15104, Widocznie: 10231, potwierdzającym: 42988, brazylijska: 41111, położyli: 5150, INFORMACYJNE: 37963, czasu: 3265, Ambulatorium: 24976, skrawek: 10746, tradycyjnej: 42173, wykrywa: 18063, Wstyd: 15130, porównywał: 26403, Amber: 45043, BBWR: 5642, potrzebujemy: 3957, Cegielskiego: 16900, podpisany: 27566, pomysłowy: 38585, inwalida: 3767, lotniczych: 36995, wpojono: 23593, Wyłączyła: 4957, ssać: 16919, Danny: 42217, donosów: 13793, Pomagają: 11401, karate: 13884, psychol: 32704, kanalizacja: 6837, darczyńcy: 44531, obdarzy: 44336, czasy: 7365, podpisane: 12856, Chcąc: 27894, charakter: 5179, psychoanalityk: 16245, zielonkawy: 17509, steroid: 16507, kokieteria: 11674, umrze: 37658, czaru: 11669, robimy: 26057, pomysłowa: 38583, drżące: 23773, darczyńca: 44536, gospodarczego: 19318, kokieterii: 11671, zaplanuję: 38954, wolną: 6490, zazdrośnie: 26335, schowana: 5655, bohater: 12527, Rysunek: 42589, codziennego: 41402, ogłaszaną: 20578, paradować: 38016, konkretnych: 23738, rejsowym: 2187, wyrobów: 12864, uwzględniających: 38450, formularzach: 38656, Państwowy: 12941, rozpoznawać: 39288, niezamierzony: 36873, przekroczyć: 8540, wyklucza: 13082, zawyżyć: 5712, Given: 39394, zmienionej: 36646, wynieść: 12369, porównywać: 26405, aktualizacji: 40966, kryteriach: 42686, publikowanie: 33855, Ponieważ: 2132, holdingu: 1860, aktualizacja: 40967, przytaczać: 45505, niezamierzone: 36864, czaty: 21041, wyminąć: 32522, współpracowników: 27674, zgłaszającymi: 43011, migracja: 38700, Częstochowa: 15813, bożych: 13380, puszczamy: 10477, Dojedli: 20970, migracji: 38697, zniszczyła: 32100, współgrać: 32075, Lubuscy: 2769, umożliwiał: 40853, minnesang: 20833, zniszczyły: 43598, pańskiego: 37486, Państwowa: 14495, zarabiać: 10883, zmartwić: 44568, przekroczył: 25916, inhibitorów: 37030, nagrodami: 7010, sekretów: 35451, Mocka: 7548, wolna: 218, stryj: 11451, tętnicy: 3859, wolne: 24619, BYĆ: 17813, wolni: 27864, zbliżony: 12433, Kompanii: 1858, wyposażać: 42605, wolno: 939, zwrot: 2507, kosić: 32323, używanych: 37700, wolny: 226, eksperymentów: 18388, powtarzaj: 19997, tętnica: 3868, wykryta: 31192, czaić: 38918, Dania: 17508, terytoriami: 44704, nieprzytomny: 2402, Tamalanę: 37594, CAI: 33848, przygody: 16862, przyroda: 38563, Albania: 5497, Pękali: 12145, przygoda: 11913, Jagienka: 22848, zbliżona: 40939, Zaleskiego: 1767, Danii: 17507, mających: 19186, fachowi: 13585, przyrody: 41323, Dramatyczny: 19826, większym: 9696, Emil: 25723, języku: 38087, wykryty: 6081, zmierzające: 45103, kłamiesz: 24052, fachowy: 13587, wierzchołek: 12285, emerytalnym: 9224, odporność: 16472, wprowadzony: 36633, języka: 4524, antagonista: 23548, pałeczka: 18951, podpisali: 1522, wykryte: 42250, języki: 10775, chińskich: 36796, skrawać: 14896, skrupuł: 29020, korytarzykiem: 20659, Astry: 9666, dorzecze: 35267, CCD: 41468, krytykę: 15292, siedziała: 25249, ulegająca: 36492, Navarro: 8460, uskakuje: 3516, informując: 7069, doręczyć: 8304, weteran: 30250, Bar: 7854, Badanym: 25111, ścianami: 37609, kupowali: 26036, zatelefonować: 28657, zużyć: 18727, teatrze: 1209, dzieckiem: 9588, radości: 10292, Dumnie: 30538, kinematograficznych: 44918, niewyraźnie: 22008, lekarzem: 17721, odtajnić: 21396, biolog: 27782, homoseksualista: 22929, naciągać: 15268, mydlany: 1117, Zamek: 23380, przeczulony: 14258, łydka: 12996, stres: 17464, mydlana: 1114, macicę: 23363, widowisk: 18589, Simon: 43518, stref: 13115, łydki: 12990, Bogiem: 11215, oprzytomnieć: 32767, zbliżoną: 12429, lateksowych: 44486, Wogau: 44473, palec: 5165, żywności: 7816, futerko: 33155, towarzyszą: 7241, nakładać: 32122, przyłączyć: 16444, hydrauliczny: 20201, zbóż: 27216, obejmować: 9759, instytucjonalny: 37761, zyskania: 36232, seksaferze: 13790, Regis: 24230, rozproszonych: 43661, Zeznania: 18364, punktualność: 12014, mierzynka: 15505, Manifestanci: 5284, cieszył: 29827, podpałka: 14510, ściąga: 32730, kreślić: 32749, przemawiające: 40785, Atalanta: 43294, podpałki: 14509, rodzinnym: 6230, wygramolić: 39232, kwadratowy: 8774, budynkach: 1857, Kierownik: 40864, Szujskiego: 4276, unikają: 1372, ekipie: 8126, MIESZANINACH: 33786, Zwiększyli: 38191, Wybierz: 9948, antykoncentracyjny: 22994, spowodowało: 10753, wstawię: 32470, skrawku: 38436, Nasze: 2058, kanalizację: 6831, hydroliza: 37190, wysięgnik: 3185, polepszyła: 39424, spowodowały: 18700, złożonej: 43554, ogrodowy: 13504, odbijać: 4701, Nasza: 38582, rżniętych: 28912, obracało: 44711, zobaczenia: 17205, najwięcej: 31014, nieznośnie: 6349, wstawić: 20937, Jiang: 26653, antykoncentracyjne: 22992, palca: 9378, nieśli: 30518, Przyznał: 37290, business: 37913, palce: 5162, rozliczyć: 22198, tekstu: 22001, profesora: 3077, obrazkowy: 40194, obiecuje: 33179, hydrolizy: 37181, teksty: 15654, nauczycielski: 42214, Towarzystwie: 22246, cieszyć: 1541, Dokładny: 36392, Stanowi: 26911, statku: 30542, niektórych: 16154, Bez: 5949, papierosach: 43936, robisz: 29518, gangów: 45244, klient: 4457, Kryminalnego: 23188, radykałami: 27974, polepszyły: 33861, statki: 26463, mierzynek: 15507, Źródła: 22803, odbijał: 31172, przenikliwy: 25139, wycieńczony: 2201, Dzianinę: 24205, eksploatację: 39636, nakładki: 23864, baba: 4251, kawalerię: 36061, tężeć: 17879, Algorytm: 9877, oburzeniem: 21840, Natan: 14816, mówiono: 26096, nakładka: 23871, skuteczną: 35848, oddelegowało: 19659, prawdopodobne: 22949, Źródło: 7187, oznakowane: 18517, istotna: 10895, CIF: 34658, 6­9-letni: 14209, czterdziestkę: 20895, istotne: 4174, Nietypowe: 26795, dzisiejszy: 9997, Krzysztofa: 2934, gospodarstwie: 17727, parafialnych: 6786, publicznie: 18013, obracała: 4907, wspiąć: 3425, gwiazdkowy: 44599, bagażem: 12812, strat: 8256, opłakanym: 7667, Naszą: 44927, gwiazdkowe: 45522, Chorób: 39881, istotny: 4183, rodowy: 9483, gminnymi: 25367, szczytowej: 38987, pikować: 41643, Muszę: 15313, czystej: 38281, wprowadziła: 8334, zamierzali: 28189, linkach: 37806, Muszą: 42610, Tramwaj: 30070, Roztwór: 44500, zwycięski: 17717, czeremchy: 8535, pasterz: 19593, Zamku: 36828, bada: 3573, kraksa: 20096, Eliza: 30786, wyrażonym: 18224, CBŚ: 11774, pozwolono: 36396, skrzyń: 41001, zelektryzować: 15573, dopełnić: 28211, ostrożnościowy: 44423, okresowy: 34835, PRZEGRAŁ: 19077, nizina: 20530, przypaść: 32147, przód: 11722, przeliczeniowym: 40458, Określona: 35687, prelekcji: 10135, wspiął: 3422, półtoraroczny: 26046, utrzyma: 10569, prestiżowi: 40704, wspomniano: 45048, nadchodzące: 27092, uwagach: 43151, zmaterializować: 41229, Halina: 23764, węglowodory: 37124, wprowadziło: 22552, morskiego: 7492, rozesłali: 2534, prelekcja: 10137, zwycięsko: 27984, wspomniane: 37836, czeremcha: 8538, baby: 4249, Kubusia: 24662, Towarzystwem: 19674, koordynatora: 42786, prestiżowy: 24999, kraksy: 20095, wspomniana: 32664, prestiżową: 24998, Gabrieli: 805, pozorować: 9455, zostawionych: 13349, niedozwolone: 34917, poczekalni: 30722, Południową: 35075, szpital: 1698, hamulcowe: 23865, dzwoneczków: 37243, nurtu: 45066, Porucznik: 15842, wyładowanie: 41678, dogmatyk: 39550, wyładowania: 43495, nihilizmu: 39373, Andyjskiego: 39920, hamulcowy: 23872, Dolnym: 5054, przeniesie: 2289, obrachunkowych: 34434, skrzynkach: 14693, CML: 41454, filmem: 32234, genetyczne: 31176, bezbożnica: 24241, miauknął: 7340, ChNP: 34171, genetyczna: 39343, zamienić: 3338, emerytowanych: 37414, reflektorów: 23909, Róża: 14273, genetyczny: 18392, goleniowski: 29139, maniak: 31798, Przyznam: 10020, Gabriela: 808, goleniowska: 29158, naszymi: 33195, maniackiej: 43569, niedozwolony: 34920, Spale: 19197, kontrolował: 36383, ChOG: 34173, jeżeliby: 21389, statut: 4650, wychowanek: 6614, status: 18588, zaraz: 4142, Przeważnie: 23001, wychowanie: 17384, kolorów: 35803, CO2: 33590, wstawać: 8379, kominowej: 29858, kazanie: 30321, wychowania: 22248, zaprojektowane: 36400, Izby: 8163, rozpad: 36498, dumpingu: 34655, paliw: 22939, serwisować: 40911, hotelach: 16215, wychodzić: 4730, nieporadnie: 35758, publicznej: 17849, palio: 25826, strop: 27879, stron: 4590,...} (exceeds maximum print length)
-m_featureSets[D] = {LA: 1, <None>: 0, RA: 2}
-m_featureSets[POS] = {aglt: 25, pant: 34, adjp: 35, conj: 18, ppas: 13, num: 12, <None>: 0, STPOS: 4, fin: 11, bedzie: 28, STR: 2, ign: 37, praet: 8, ger: 29, pred: 24, imps: 23, pact: 21, impt: 32, prep: 6, inf: 17, ppron12: 26, comp: 22, numcol: 38, burk: 39, interp: 10, pcon: 31, adj: 9, MID: 1, subst: 7, depr: 33, <root-POS>: 5, brev: 27, adjc: 36, adv: 15, adja: 30, xxx: 41, END: 3, siebie: 20, ppron3: 19, winien: 16, qub: 14, interj: 40}
-m_featureSets[DIST] = {0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, <None>: 0, 10: 7}
-m_featureSets[F] = {com: 25, acc: 2, loc: 12, agl: 34, pun: 31, npraep: 27, <None>: 0, congr: 22, voc: 38, nom: 6, sup: 35, sec: 32, neg: 37, gen: 10, rec: 18, wok: 3, sg: 4, pos: 11, praep: 24, nwok: 13, dat: 21, perf: 8, aff: 19, ter: 16, m1: 7, m2: 33, f: 9, m3: 5, pri: 28, NOFEAT: 1, npun: 36, nagl: 29, imperf: 17, n: 15, p: 30, inst: 20, akc: 23, nakc: 26, pl: 14}
-m_featureSets[REL] = {<root-type>: 2, aglt: 22, aux: 13, <None>: 0, refl: 16, cond: 23, imp: 29, comp_inf: 14, neg: 18, adjunct_qt: 30, coord: 26, pred: 9, pre_coord: 27, coord_punct: 24, conjunct: 17, punct: 11, subj: 6, adjunct: 4, app: 7, comp: 5, item: 31, comp_fin: 20, complm: 19, <no-type>: 3, comp_ag: 28, pd: 15, obj: 10, ne: 8, mwe: 21, END: 1, abbrev_punct: 25, obj_th: 12}
-m_featureSets[SP] = {STR: 1, <None>: 0, END: 2}
-m_featureSets[TYPE] = {F21: 24, F20: 23, F23: 26, F22: 25, F25: 28, F120: 123, F24: 27, F121: 124, F27: 30, F122: 125, F26: 29, F123: 126, F29: 32, F124: 127, F28: 31, F125: 128, F126: 129, F127: 130, F128: 131, F129: 132, F30: 33, F32: 35, F31: 34, F34: 37, F33: 36, F36: 39, F35: 38, F110: 113, F38: 41, F111: 114, F37: 40, F112: 115, F113: 116, F39: 42, F114: 117, F115: 118, F116: 119, F117: 120, F118: 121, F119: 122, POS: 1, F41: 44, F40: 43, F43: 46, F42: 45, F: 2, F45: 48, F140: 143, F44: 47, F141: 144, F47: 50, F142: 145, F46: 49, F143: 146, F49: 52, F144: 147, F48: 51, F145: 148, F146: 149, F147: 150, F148: 151, F149: 152, F50: 53, F52: 55, F51: 54, F54: 57, F53: 56, F56: 59, F55: 58, F130: 133, F58: 61, F131: 134, F57: 60, F132: 135, F133: 136, F59: 62, F134: 137, F135: 138, F136: 139, F137: 140, F138: 141, F139: 142, F61: 64, F60: 63, F63: 66, F62: 65, F65: 68, F64: 67, F67: 70, F66: 69, F69: 72, F68: 71, F70: 73, F72: 75, F71: 74, F74: 77, F73: 76, F76: 79, F75: 78, F78: 81, F77: 80, F79: 82, F0: 3, F1: 4, F2: 5, F3: 6, F4: 7, F5: 8, F6: 9, F7: 10, F8: 11, F9: 12, F81: 84, F80: 83, F83: 86, F82: 85, F85: 88, F84: 87, F87: 90, F86: 89, F89: 92, F88: 91, <None>: 0, F100: 103, F101: 104, F102: 105, F103: 106, F104: 107, F105: 108, F106: 109, F107: 110, F108: 111, F109: 112, F90: 93, F92: 95, F91: 94, F94: 97, F93: 96, F96: 99, F95: 98, F10: 13, F98: 101, F97: 100, F12: 15, F11: 14, F99: 102, F14: 17, F13: 16, F16: 19, F15: 18, F18: 21, F17: 20, F19: 22}
-m_featureCounters = {WORD: 45576, D: 3, POS: 42, DIST: 8, F: 39, REL: 32, SP: 3, TYPE: 153}
-m_featureBits = {WORD: 16, D: 2, POS: 6, DIST: 4, F: 6, REL: 6, SP: 2, TYPE: 8}
-count = 8
-stop = false
--------------------
-size = 1
-capacity = 1
-forms[0][0] = 2
-forms[0][1] = 3
-forms[0][2] = 4
-forms[0][3] = 5
-forms[0][4] = 6
-forms[0][5] = 7
-forms[0][6] = 8
-forms[0][7] = 9
-forms[0][8] = 10
-forms[0][9] = 11
-forms[0][10] = 12
-forms[0][11] = 13
-forms[0][12] = 14
-forms[0][13] = 15
-forms[0][14] = 16
-plemmas[0][0] = 17
-plemmas[0][1] = 18
-plemmas[0][2] = 4
-plemmas[0][3] = 5
-plemmas[0][4] = 6
-plemmas[0][5] = 7
-plemmas[0][6] = 19
-plemmas[0][7] = 20
-plemmas[0][8] = 10
-plemmas[0][9] = 21
-plemmas[0][10] = 22
-plemmas[0][11] = 13
-plemmas[0][12] = 23
-plemmas[0][13] = 15
-plemmas[0][14] = 16
-glemmas[0][0] = 17
-glemmas[0][1] = 18
-glemmas[0][2] = 4
-glemmas[0][3] = 5
-glemmas[0][4] = 6
-glemmas[0][5] = 7
-glemmas[0][6] = 19
-glemmas[0][7] = 20
-glemmas[0][8] = 10
-glemmas[0][9] = 21
-glemmas[0][10] = 22
-glemmas[0][11] = 13
-glemmas[0][12] = 23
-glemmas[0][13] = 15
-glemmas[0][14] = 16
-heads[0][0] = -1
-heads[0][1] = -1
-heads[0][2] = -1
-heads[0][3] = -1
-heads[0][4] = -1
-heads[0][5] = -1
-heads[0][6] = -1
-heads[0][7] = -1
-heads[0][8] = -1
-heads[0][9] = -1
-heads[0][10] = -1
-heads[0][11] = -1
-heads[0][12] = -1
-heads[0][13] = -1
-heads[0][14] = -1
-pheads[0][0] = -1
-pheads[0][1] = -1
-pheads[0][2] = -1
-pheads[0][3] = -1
-pheads[0][4] = -1
-pheads[0][5] = -1
-pheads[0][6] = -1
-pheads[0][7] = -1
-pheads[0][8] = -1
-pheads[0][9] = -1
-pheads[0][10] = -1
-pheads[0][11] = -1
-pheads[0][12] = -1
-pheads[0][13] = -1
-pheads[0][14] = -1
-labels[0][0] = 3
-labels[0][1] = -1
-labels[0][2] = -1
-labels[0][3] = -1
-labels[0][4] = -1
-labels[0][5] = -1
-labels[0][6] = -1
-labels[0][7] = -1
-labels[0][8] = -1
-labels[0][9] = -1
-labels[0][10] = -1
-labels[0][11] = -1
-labels[0][12] = -1
-labels[0][13] = -1
-labels[0][14] = -1
-plabels[0][0] = 3
-plabels[0][1] = -1
-plabels[0][2] = -1
-plabels[0][3] = -1
-plabels[0][4] = -1
-plabels[0][5] = -1
-plabels[0][6] = -1
-plabels[0][7] = -1
-plabels[0][8] = -1
-plabels[0][9] = -1
-plabels[0][10] = -1
-plabels[0][11] = -1
-plabels[0][12] = -1
-plabels[0][13] = -1
-plabels[0][14] = -1
-gpos[0][0] = 5
-gpos[0][1] = 6
-gpos[0][2] = 7
-gpos[0][3] = 7
-gpos[0][4] = 7
-gpos[0][5] = 7
-gpos[0][6] = 8
-gpos[0][7] = 7
-gpos[0][8] = 6
-gpos[0][9] = 7
-gpos[0][10] = 9
-gpos[0][11] = 7
-gpos[0][12] = 7
-gpos[0][13] = 7
-gpos[0][14] = 10
-pposs[0][0] = 5
-pposs[0][1] = 6
-pposs[0][2] = 7
-pposs[0][3] = 7
-pposs[0][4] = 7
-pposs[0][5] = 7
-pposs[0][6] = 8
-pposs[0][7] = 7
-pposs[0][8] = 6
-pposs[0][9] = 7
-pposs[0][10] = 9
-pposs[0][11] = 7
-pposs[0][12] = 7
-pposs[0][13] = 7
-pposs[0][14] = 10
-feats[0][1] = [2, 3]
-feats[0][2] = [4, 2, 5]
-feats[0][3] = [4, 6, 7]
-feats[0][4] = [4, 6, 7]
-feats[0][5] = [4, 6, 7]
-feats[0][6] = [4, 7, 8]
-feats[0][7] = [4, 2, 9]
-feats[0][8] = [10]
-feats[0][9] = [4, 10, 7]
-feats[0][10] = [4, 10, 7, 11]
-feats[0][11] = [4, 10, 5]
-feats[0][12] = [4, 10, 9]
-feats[0][13] = [4, 10, 9]
-pfill [0] = {}
-gfeats[0][0] = -1
-gfeats[0][1] = -1
-gfeats[0][2] = -1
-gfeats[0][3] = -1
-gfeats[0][4] = -1
-gfeats[0][5] = -1
-gfeats[0][6] = -1
-gfeats[0][7] = -1
-gfeats[0][8] = -1
-gfeats[0][9] = -1
-gfeats[0][10] = -1
-gfeats[0][11] = -1
-gfeats[0][12] = -1
-gfeats[0][13] = -1
-gfeats[0][14] = -1
-pfeats[0][0] = 0
-pfeats[0][1] = -1
-pfeats[0][2] = -1
-pfeats[0][3] = -1
-pfeats[0][4] = -1
-pfeats[0][5] = -1
-pfeats[0][6] = -1
-pfeats[0][7] = -1
-pfeats[0][8] = -1
-pfeats[0][9] = -1
-pfeats[0][10] = -1
-pfeats[0][11] = -1
-pfeats[0][12] = -1
-pfeats[0][13] = -1
-pfeats[0][14] = 0
-m_unkown = 0
-m_count = 15
-m_report = false
-m_found = false
diff --git a/dependencyParser/examples/test.csv b/dependencyParser/examples/test.csv
deleted file mode 100644
index 4d1eba0..0000000
--- a/dependencyParser/examples/test.csv
+++ /dev/null
@@ -1,14 +0,0 @@
-1	We	w	w	prep	prep	acc|wok	acc|wok	_	_	_	_	_	_
-2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	_	_	_	_	_	_
-3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	_	_	_	_	_	_
-4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	_	_	_	_	_	_
-5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	_	_	_	_	_	_
-6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	_	_	_	_	_	_
-7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	_	_	_	_	_	_
-8	do	do	do	prep	prep	gen	gen	_	_	_	_	_	_
-9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	_	_	_	_	_	_
-10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	_	_	_	_	_	_
-11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	_	_	_	_	_	_
-12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	_	_	_	_	_	_
-13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	_	_	_	_	_	_
-14	.	.	.	interp	interp	_	_	_	_	_	_	_	_
diff --git a/dependencyParser/examples/test.out b/dependencyParser/examples/test.out
deleted file mode 100644
index 51d709f..0000000
--- a/dependencyParser/examples/test.out
+++ /dev/null
@@ -1,210 +0,0 @@
-1	We	w	w	prep	prep	acc|wok	acc|wok	-1	0	_	pred	_	_
-2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
-3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
-4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	3	_	app	_	_
-5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
-6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	1	_	adjunct	_	_
-7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
-8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
-9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
-10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
-11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
-12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
-13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
-14	.	.	.	interp	interp	_	_	-1	1	_	punct	_	_
-
-1	We	w	w	prep	prep	acc|wok	acc|wok	-1	6	_	adjunct	_	_
-2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	0	_	pred	_	_
-3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
-4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	3	_	app	_	_
-5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
-6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	2	_	adjunct	_	_
-7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
-8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
-9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
-10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
-11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
-12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
-13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
-14	.	.	.	interp	interp	_	_	-1	2	_	punct	_	_
-
-1	We	w	w	prep	prep	acc|wok	acc|wok	-1	6	_	adjunct	_	_
-2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
-3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	0	_	pred	_	_
-4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
-5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
-6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	3	_	adjunct	_	_
-7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
-8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
-9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
-10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
-11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
-12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
-13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
-14	.	.	.	interp	interp	_	_	-1	3	_	punct	_	_
-
-1	We	w	w	prep	prep	acc|wok	acc|wok	-1	4	_	adjunct	_	_
-2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
-3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	adjunct	_	_
-4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	0	_	pred	_	_
-5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
-6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	4	_	comp_fin	_	_
-7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
-8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
-9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
-10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
-11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
-12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
-13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
-14	.	.	.	interp	interp	_	_	-1	4	_	punct	_	_
-
-1	We	w	w	prep	prep	acc|wok	acc|wok	-1	6	_	adjunct	_	_
-2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
-3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
-4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	3	_	app	_	_
-5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	0	_	pred	_	_
-6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	5	_	comp_fin	_	_
-7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
-8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
-9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
-10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
-11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
-12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
-13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
-14	.	.	.	interp	interp	_	_	-1	5	_	punct	_	_
-
-1	We	w	w	prep	prep	acc|wok	acc|wok	-1	6	_	adjunct	_	_
-2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
-3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
-4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	3	_	app	_	_
-5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
-6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	0	_	pred	_	_
-7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
-8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
-9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
-10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
-11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
-12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
-13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
-14	.	.	.	interp	interp	_	_	-1	6	_	punct	_	_
-
-1	We	w	w	prep	prep	acc|wok	acc|wok	-1	6	_	adjunct	_	_
-2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
-3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
-4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	3	_	app	_	_
-5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
-6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	0	_	pred	_	_
-7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
-8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
-9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
-10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
-11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
-12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
-13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
-14	.	.	.	interp	interp	_	_	-1	6	_	punct	_	_
-
-1	We	w	w	prep	prep	acc|wok	acc|wok	-1	6	_	adjunct	_	_
-2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
-3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
-4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	3	_	app	_	_
-5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
-6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	0	_	pred	_	_
-7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
-8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
-9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
-10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
-11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
-12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
-13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
-14	.	.	.	interp	interp	_	_	-1	6	_	punct	_	_
-
-1	We	w	w	prep	prep	acc|wok	acc|wok	-1	6	_	adjunct	_	_
-2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
-3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
-4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	3	_	app	_	_
-5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
-6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	0	_	pred	_	_
-7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
-8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
-9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
-10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
-11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
-12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
-13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
-14	.	.	.	interp	interp	_	_	-1	6	_	punct	_	_
-
-1	We	w	w	prep	prep	acc|wok	acc|wok	-1	6	_	adjunct	_	_
-2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
-3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
-4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	3	_	app	_	_
-5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
-6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	0	_	pred	_	_
-7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
-8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
-9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
-10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
-11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
-12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
-13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
-14	.	.	.	interp	interp	_	_	-1	6	_	punct	_	_
-
-1	We	w	w	prep	prep	acc|wok	acc|wok	-1	6	_	adjunct	_	_
-2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
-3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
-4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	3	_	app	_	_
-5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
-6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	0	_	pred	_	_
-7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
-8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
-9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
-10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
-11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	app	_	_
-12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	11	_	adjunct	_	_
-13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
-14	.	.	.	interp	interp	_	_	-1	6	_	punct	_	_
-
-1	We	w	w	prep	prep	acc|wok	acc|wok	-1	6	_	adjunct	_	_
-2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
-3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
-4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	3	_	app	_	_
-5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
-6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	0	_	pred	_	_
-7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
-8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
-9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
-10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
-11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
-12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
-13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
-14	.	.	.	interp	interp	_	_	-1	6	_	punct	_	_
-
-1	We	w	w	prep	prep	acc|wok	acc|wok	-1	6	_	adjunct	_	_
-2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
-3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
-4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	3	_	app	_	_
-5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
-6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	0	_	pred	_	_
-7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
-8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
-9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
-10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
-11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
-12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
-13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
-14	.	.	.	interp	interp	_	_	-1	6	_	punct	_	_
-
-1	We	w	w	prep	prep	acc|wok	acc|wok	-1	6	_	adjunct	_	_
-2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
-3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
-4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	3	_	app	_	_
-5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
-6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	14	_	conjunct	_	_
-7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
-8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
-9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
-10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
-11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
-12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
-13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
-14	.	.	.	interp	interp	_	_	-1	0	_	pred	_	_
-
diff --git a/dependencyParser/experimental/examples/README.txt b/dependencyParser/experimental/examples/README.txt
new file mode 100644
index 0000000..c5e773a
--- /dev/null
+++ b/dependencyParser/experimental/examples/README.txt
@@ -0,0 +1,5 @@
+test.csv contains an example input to the parser.
+test.out contains the output generated by the parser given the example as the input.
+d2 output.txt contains the value of the variable d2 printed out just before Decoder.decode is called in Parser.parse given the example as the input.
+is output.txt contains the value of the variable is printed out just before Decoder.decode is called in Parser.parse given the example as the input.
+edges output.txt contains the values of the variables Edges.edges and Edges.def printed out at the end of Parser's constructor given the example as the input.
diff --git a/dependencyParser/experimental/examples/d2 output.txt b/dependencyParser/experimental/examples/d2 output.txt
new file mode 100644
index 0000000..4637aa8
--- /dev/null
+++ b/dependencyParser/experimental/examples/d2 output.txt
@@ -0,0 +1,4023 @@
+typesLen = 32
+len = 15
+pl[0][0] = 0.0
+pl[0][1] = 0.0
+pl[0][2] = -0.010866272
+pl[0][3] = -0.043218352
+pl[0][4] = -0.075570434
+pl[0][5] = -0.10792251
+pl[0][6] = 0.038865875
+pl[0][7] = -0.1410935
+pl[0][8] = -0.16593723
+pl[0][9] = -0.18431185
+pl[0][10] = -0.07813574
+pl[0][11] = -0.22914958
+pl[0][12] = -0.26150167
+pl[0][13] = -0.29385376
+pl[0][14] = -0.25755194
+pl[1][0] = 0.0
+pl[1][1] = 0.0
+pl[1][2] = 0.0
+pl[1][3] = -0.06868441
+pl[1][4] = -0.13736881
+pl[1][5] = -0.20605323
+pl[1][6] = 0.0
+pl[1][7] = -0.2864833
+pl[1][8] = -0.057125658
+pl[1][9] = -0.3629666
+pl[1][10] = -0.09364338
+pl[1][11] = -0.48622873
+pl[1][12] = -0.55491316
+pl[1][13] = -0.62359756
+pl[1][14] = -0.2074638
+pl[2][0] = 0.0
+pl[2][1] = 0.0
+pl[2][2] = 0.0
+pl[2][3] = 0.0
+pl[2][4] = -0.05129477
+pl[2][5] = -0.10258954
+pl[2][6] = -0.12634124
+pl[2][7] = -0.1861538
+pl[2][8] = -0.13479765
+pl[2][9] = -0.25604704
+pl[2][10] = -0.09761818
+pl[2][11] = -0.34374037
+pl[2][12] = -0.39503515
+pl[2][13] = -0.44632992
+pl[2][14] = -0.2660829
+pl[3][0] = 0.0
+pl[3][1] = -0.019381773
+pl[3][2] = 0.0
+pl[3][3] = 0.0
+pl[3][4] = 0.0
+pl[3][5] = -0.05129477
+pl[3][6] = -0.084227495
+pl[3][7] = -0.13485903
+pl[3][8] = -0.1083162
+pl[3][9] = -0.20475228
+pl[3][10] = -0.083017066
+pl[3][11] = -0.2924456
+pl[3][12] = -0.34374037
+pl[3][13] = -0.39503515
+pl[3][14] = -0.23725143
+pl[4][0] = 0.0
+pl[4][1] = -0.038763545
+pl[4][2] = -0.022566656
+pl[4][3] = 0.0
+pl[4][4] = 0.0
+pl[4][5] = 0.0
+pl[4][6] = -0.042113747
+pl[4][7] = -0.08356427
+pl[4][8] = -0.08183474
+pl[4][9] = -0.15345752
+pl[4][10] = -0.06841596
+pl[4][11] = -0.24115087
+pl[4][12] = -0.29244563
+pl[4][13] = -0.3437404
+pl[4][14] = -0.20841992
+pl[5][0] = 0.0
+pl[5][1] = -0.05814532
+pl[5][2] = -0.04513331
+pl[5][3] = -0.022566656
+pl[5][4] = 0.0
+pl[5][5] = 0.0
+pl[5][6] = 0.0
+pl[5][7] = -0.032269493
+pl[5][8] = -0.055353288
+pl[5][9] = -0.10216274
+pl[5][10] = -0.05381486
+pl[5][11] = -0.18985608
+pl[5][12] = -0.24115086
+pl[5][13] = -0.29244563
+pl[5][14] = -0.17958842
+pl[6][0] = 0.0
+pl[6][1] = -0.040194526
+pl[6][2] = -0.06450388
+pl[6][3] = -0.043002583
+pl[6][4] = -0.021501292
+pl[6][5] = 0.0
+pl[6][6] = 0.0
+pl[6][7] = 0.0
+pl[6][8] = -0.066330016
+pl[6][9] = -0.073113225
+pl[6][10] = -0.04765781
+pl[6][11] = -0.14876442
+pl[6][12] = -0.20511504
+pl[6][13] = -0.26146567
+pl[6][14] = -0.10682573
+pl[7][0] = 0.0
+pl[7][1] = -0.07608842
+pl[7][2] = -0.069873534
+pl[7][3] = -0.04730688
+pl[7][4] = -0.024740225
+pl[7][5] = -0.0021735686
+pl[7][6] = 0.0
+pl[7][7] = 0.0
+pl[7][8] = 0.0
+pl[7][9] = -0.018598476
+pl[7][10] = -0.030110732
+pl[7][11] = -0.106291816
+pl[7][12] = -0.15758659
+pl[7][13] = -0.20888136
+pl[7][14] = -0.12787816
+pl[8][0] = 0.0
+pl[8][1] = -0.08318254
+pl[8][2] = -0.06289519
+pl[8][3] = -0.047171395
+pl[8][4] = -0.031447597
+pl[8][5] = -0.015723798
+pl[8][6] = -0.0021494746
+pl[8][7] = 0.0
+pl[8][8] = 0.0
+pl[8][9] = 0.0
+pl[8][10] = -0.014698882
+pl[8][11] = -0.12326215
+pl[8][12] = -0.19194657
+pl[8][13] = -0.26063097
+pl[8][14] = -0.06691221
+pl[9][0] = 0.0
+pl[9][1] = -0.10338253
+pl[9][2] = -0.10464167
+pl[9][3] = -0.082075015
+pl[9][4] = -0.05950836
+pl[9][5] = -0.036941703
+pl[9][6] = 0.0
+pl[9][7] = -0.012201479
+pl[9][8] = 0.0
+pl[9][9] = 0.0
+pl[9][10] = 0.0
+pl[9][11] = -0.03639857
+pl[9][12] = -0.08769334
+pl[9][13] = -0.1389881
+pl[9][14] = -0.0852123
+pl[10][0] = 0.0
+pl[10][1] = -0.11613673
+pl[10][2] = -0.035999577
+pl[10][3] = -0.029772816
+pl[10][4] = -0.023546053
+pl[10][5] = -0.017319292
+pl[10][6] = -0.0057317354
+pl[10][7] = -0.011092531
+pl[10][8] = -0.020143617
+pl[10][9] = 0.0
+pl[10][10] = 0.0
+pl[10][11] = 0.0
+pl[10][12] = -0.017717246
+pl[10][13] = -0.035434492
+pl[10][14] = -0.010797325
+pl[11][0] = 0.0
+pl[11][1] = -0.1344459
+pl[11][2] = -0.13636647
+pl[11][3] = -0.11379981
+pl[11][4] = -0.09123316
+pl[11][5] = -0.0686665
+pl[11][6] = 0.0
+pl[11][7] = -0.04392628
+pl[11][8] = -0.031063374
+pl[11][9] = -0.009158145
+pl[11][10] = 0.0
+pl[11][11] = 0.0
+pl[11][12] = 0.0
+pl[11][13] = -0.05129477
+pl[11][14] = -0.05766299
+pl[12][0] = 0.0
+pl[12][1] = -0.15382768
+pl[12][2] = -0.15893313
+pl[12][3] = -0.13636647
+pl[12][4] = -0.11379981
+pl[12][5] = -0.09123316
+pl[12][6] = 0.0
+pl[12][7] = -0.06649294
+pl[12][8] = -0.050445147
+pl[12][9] = -0.0317248
+pl[12][10] = -0.040165026
+pl[12][11] = 0.0
+pl[12][12] = 0.0
+pl[12][13] = 0.0
+pl[12][14] = -0.028831495
+pl[13][0] = 0.0
+pl[13][1] = -0.17320946
+pl[13][2] = -0.1814998
+pl[13][3] = -0.15893313
+pl[13][4] = -0.13636647
+pl[13][5] = -0.11379981
+pl[13][6] = 0.0
+pl[13][7] = -0.08905959
+pl[13][8] = -0.069826916
+pl[13][9] = -0.054291457
+pl[13][10] = -0.08033005
+pl[13][11] = -0.022566656
+pl[13][12] = 0.0
+pl[13][13] = 0.0
+pl[13][14] = 0.0
+pl[14][0] = 0.0
+pl[14][1] = -0.27354294
+pl[14][2] = 0.009959197
+pl[14][3] = -1.7022714E-4
+pl[14][4] = -0.010299649
+pl[14][5] = -0.020429071
+pl[14][6] = -0.08399554
+pl[14][7] = -0.0144728385
+pl[14][8] = -0.11811297
+pl[14][9] = 0.021364588
+pl[14][10] = -0.050320618
+pl[14][11] = 0.020258844
+pl[14][12] = 0.010129422
+pl[14][13] = 0.0
+pl[14][14] = 0.0
+lab[0][0] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
+lab[0][1] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0857121, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[0][2] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.060610943, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.09019457, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[0][3] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.059856206, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.088372804, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[0][4] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.08843574, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.10066992, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[0][5] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.07532123, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.09154862, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[0][6] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.14257567, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.035747826, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.04456647, -100.0]
+lab[0][7] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.08668655, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.07716806, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[0][8] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.048678666, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[0][9] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.11443109, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.075755596, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[0][10] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.064376086, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[0][11] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.067867786, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.10572456, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[0][12] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.07676454, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.07319089, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[0][13] = [-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.15070356, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.092133135, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[0][14] = [-100.0, -100.0, -100.0, -100.0, 0.010659548, -100.0, -100.0, -100.0, -100.0, 0.021760488, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.031423494, -100.0, -0.06268892, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[1][0] = [-100.0, -100.0, -100.0, -100.0, -0.0072993548, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[1][1] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
+lab[1][2] = [-100.0, -100.0, -100.0, -100.0, 0.007805228, 0.06354494, -100.0, -100.0, -0.027950497, -100.0, 0.008368777, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0017291368, -100.0, -100.0, -100.0, 0.012703567, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[1][3] = [-100.0, -100.0, -100.0, -100.0, -0.011061878, -0.033676945, -100.0, -100.0, -0.03869218, -100.0, 0.014225116, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.002365287, -100.0, -100.0, -100.0, 0.0063459743, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[1][4] = [-100.0, -100.0, -100.0, -100.0, -0.0057480163, -0.032733124, -100.0, -100.0, -0.018860167, -100.0, 0.007058848, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0018841489, -100.0, -100.0, -100.0, -7.932577E-4, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[1][5] = [-100.0, -100.0, -100.0, -100.0, -0.008187501, -0.07466402, -100.0, -100.0, -0.04258529, -100.0, 0.012807902, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.004619921, -100.0, -100.0, -100.0, 0.04837003, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[1][6] = [-100.0, -100.0, -100.0, -100.0, -0.0072772917, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[1][7] = [-100.0, -100.0, -100.0, -100.0, -0.0061553996, -0.07721132, -100.0, -100.0, -0.025096273, -100.0, -0.0038240058, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.003359705, -100.0, -100.0, -100.0, 0.124412775, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[1][8] = [-100.0, -100.0, -100.0, -100.0, -0.055956498, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[1][9] = [-100.0, -100.0, -100.0, -100.0, -0.0029725265, -0.096099176, -100.0, -100.0, -0.03457125, -100.0, 0.013646577, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.002417894, -100.0, -100.0, -100.0, 0.048483256, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[1][10] = [-100.0, -100.0, -100.0, -100.0, -0.019577898, -0.05434969, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.011361387, -100.0, -0.016742414, -100.0, -100.0, -100.0, 0.0030374874, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[1][11] = [-100.0, -100.0, -100.0, -100.0, -0.0022678282, -0.05511328, -100.0, -100.0, -0.01873274, -100.0, 0.0031329177, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.006130168, -100.0, -100.0, -100.0, 0.01606226, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[1][12] = [-100.0, -100.0, -100.0, -100.0, 0.0066373865, -0.085802294, -100.0, -100.0, -0.017907545, -100.0, 0.008771209, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0022111083, -100.0, -100.0, -100.0, -0.0019399584, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[1][13] = [-100.0, -100.0, -100.0, -100.0, -0.0061764345, -0.08351106, -100.0, -100.0, -0.013618027, -100.0, -0.0072948383, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.009102309, -100.0, -100.0, -100.0, 0.05033239, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[1][14] = [-100.0, -100.0, -100.0, -100.0, -100.0, -0.051086202, -100.0, -100.0, -100.0, -100.0, -100.0, -0.15393955, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.012258048]
+lab[2][0] = [-100.0, -100.0, -100.0, -100.0, 0.031287532, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[2][1] = [-100.0, -100.0, -100.0, -100.0, 0.019715436, 0.01835772, -100.0, -100.0, -0.021147477, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.021325154, -100.0, -100.0, -100.0, -0.011986047, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.025321336, -100.0, -100.0, -100.0]
+lab[2][2] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
+lab[2][3] = [-100.0, -100.0, -100.0, -100.0, -0.008683903, -0.0071144216, -100.0, -0.07223273, 0.007157893, -100.0, 0.0109011335, -100.0, -0.0032681033, -100.0, -100.0, -0.025956124, -100.0, -0.00907862, -100.0, -100.0, -100.0, -0.005509577, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.007406844, -0.0073494264]
+lab[2][4] = [-100.0, -100.0, -100.0, -100.0, -0.017639821, -0.07690126, -100.0, -7.0552714E-4, -0.043969035, -100.0, 0.011751435, -100.0, -0.002466971, -100.0, -100.0, -0.026199987, -100.0, -0.013000479, -100.0, -100.0, -100.0, 0.0011172746, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.004351847, 0.009639561]
+lab[2][5] = [-100.0, -100.0, -100.0, -100.0, -0.03488801, -0.10307334, -100.0, -0.0684557, 0.020158656, -100.0, -0.006975678, -100.0, -0.012064556, -100.0, -100.0, -0.023857245, -100.0, -0.013141723, -100.0, -100.0, -100.0, 0.0014515971, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.007406844, -0.012931901]
+lab[2][6] = [-100.0, -100.0, -100.0, -100.0, 0.029374115, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.03291245, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[2][7] = [-100.0, -100.0, -100.0, -100.0, -0.06484228, -0.08482167, -100.0, -0.07136143, 0.052072287, -100.0, -0.045210756, -100.0, 0.0022105137, -100.0, -100.0, -0.031402368, -100.0, -0.0041569127, -100.0, -100.0, -100.0, -0.019917594, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.011107417, -0.0064372392]
+lab[2][8] = [-100.0, -100.0, -100.0, -100.0, -0.010947768, -0.16124275, -100.0, -100.0, -0.020897083, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.00955688, -100.0, -100.0, -100.0, 0.017641533, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.01904033, -100.0, -100.0, -100.0]
+lab[2][9] = [-100.0, -100.0, -100.0, -100.0, 0.11203786, 0.08516422, -100.0, -0.067602776, 0.017576952, -100.0, 0.0030263364, -100.0, -7.4397936E-4, -100.0, -100.0, -0.029012637, -100.0, -0.017234312, -100.0, -100.0, -100.0, -0.029723631, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.01241862, -0.013692742]
+lab[2][10] = [-100.0, -100.0, -100.0, -100.0, 0.061739136, -0.06816518, -0.017635567, 0.03411534, 0.027354993, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0042059096, -100.0, -100.0, -100.0, -0.046784803, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[2][11] = [-100.0, -100.0, -100.0, -100.0, 0.0780552, 0.09361959, -100.0, -0.04189497, 0.054181423, -100.0, 0.014132376, -100.0, -0.02349671, -100.0, -100.0, -0.030720538, -100.0, -0.016635802, -100.0, -100.0, -100.0, -0.04262755, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0134480735, -0.009904164]
+lab[2][12] = [-100.0, -100.0, -100.0, -100.0, 0.050173625, 0.12472234, -100.0, 0.02470325, -0.0433001, -100.0, 0.025236022, -100.0, -0.017199075, -100.0, -100.0, -0.036560286, -100.0, -0.0158622, -100.0, -100.0, -100.0, -0.049050692, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.016003763, -0.0027452079]
+lab[2][13] = [-100.0, -100.0, -100.0, -100.0, 0.094317816, 0.09077047, -100.0, -0.04724109, -0.014309814, -100.0, -6.103539E-4, -100.0, -0.007984497, -100.0, -100.0, -0.03456169, -100.0, -0.01148505, -100.0, -100.0, -100.0, -0.0407275, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0090789925, -0.00904469]
+lab[2][14] = [-100.0, -100.0, -100.0, -100.0, 0.13055271, 0.00994876, -100.0, 0.027116202, -0.006811875, -100.0, -100.0, -0.03950805, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.012288794, 0.011942935, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.008141532]
+lab[3][0] = [-100.0, -100.0, -100.0, -100.0, 0.015727764, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[3][1] = [-100.0, -100.0, -100.0, -100.0, 0.026589936, 0.015837692, -100.0, -100.0, -0.018502066, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.013287211, -100.0, -100.0, -100.0, -0.011986047, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.019401088, -100.0, -100.0, -100.0]
+lab[3][2] = [-100.0, -100.0, -100.0, -100.0, -0.07458202, -0.001280698, -100.0, -0.007731626, -0.0056997146, -100.0, -0.014050994, -100.0, -0.020443644, -100.0, -100.0, -0.0304739, -100.0, -0.06522928, -100.0, -100.0, -100.0, -0.009457436, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.004204633, -0.0056973123]
+lab[3][3] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
+lab[3][4] = [-100.0, -100.0, -100.0, -100.0, -0.090102285, -0.08245421, -100.0, 0.20142533, 0.1338391, -100.0, -0.0064666253, -100.0, 0.004834483, -100.0, -100.0, -0.013569326, -100.0, -0.01595074, -100.0, -100.0, -100.0, -0.026188968, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0026644845, -0.008290936]
+lab[3][5] = [-100.0, -100.0, -100.0, -100.0, -0.048254117, -0.11579309, -100.0, 0.1175178, 0.11143502, -100.0, -0.004636286, -100.0, 1.8035388E-4, -100.0, -100.0, -0.014182787, -100.0, -0.01650513, -100.0, -100.0, -100.0, -0.007539835, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0017236789, -0.0094553]
+lab[3][6] = [-100.0, -100.0, -100.0, -100.0, 0.025279988, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.010607917, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[3][7] = [-100.0, -100.0, -100.0, -100.0, 0.015750844, -0.13357572, -100.0, -0.028501447, -0.044795267, -100.0, -0.043282006, -100.0, 0.0054771937, -100.0, -100.0, -0.017991487, -100.0, -0.009471957, -100.0, -100.0, -100.0, -0.027596768, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.006738336, -0.0046989387]
+lab[3][8] = [-100.0, -100.0, -100.0, -100.0, 0.04237008, -0.105790615, -100.0, -100.0, -1.0734936E-4, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.005038883, -100.0, -100.0, -100.0, -0.023716997, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.022824557, -100.0, -100.0, -100.0]
+lab[3][9] = [-100.0, -100.0, -100.0, -100.0, 0.08682765, -0.007630133, -100.0, 0.058125526, -0.0100971535, -100.0, -0.010686963, -100.0, -0.004728324, -100.0, -100.0, -0.021554107, -100.0, -0.023323614, -100.0, -100.0, -100.0, -0.040496103, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0063773906, -0.00847455]
+lab[3][10] = [-100.0, -100.0, -100.0, -100.0, 0.11950284, -0.036674343, -0.020355824, 0.049630567, -0.018184561, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.010001851, -100.0, -100.0, -100.0, -0.024856072, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[3][11] = [-100.0, -100.0, -100.0, -100.0, 0.17998444, -0.045073137, -100.0, -0.011935525, -0.12302958, -100.0, -8.2165695E-4, -100.0, -0.015568759, -100.0, -100.0, -0.023021586, -100.0, -0.021753242, -100.0, -100.0, -100.0, -0.04285603, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0020304294, -0.0046989387]
+lab[3][12] = [-100.0, -100.0, -100.0, -100.0, 0.19373284, 0.035355195, -100.0, 0.061362393, -0.13824204, -100.0, 0.01226894, -100.0, -0.011150414, -100.0, -100.0, -0.023918848, -100.0, -0.013573138, -100.0, -100.0, -100.0, -0.04558915, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0111303255, -0.0065263407]
+lab[3][13] = [-100.0, -100.0, -100.0, -100.0, 0.22340338, -0.010336123, -100.0, -0.004239533, -0.092604324, -100.0, -0.009156614, -100.0, -0.0033510108, -100.0, -100.0, -0.021037031, -100.0, -0.0128913205, -100.0, -100.0, -100.0, -0.03615597, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0030377628, -0.0064372392]
+lab[3][14] = [-100.0, -100.0, -100.0, -100.0, 0.09862638, -0.003327651, -100.0, 0.010758149, -0.02587586, -100.0, -100.0, -0.09787384, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0065550525, 0.02006538, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.008141532]
+lab[4][0] = [-100.0, -100.0, -100.0, -100.0, 6.7530514E-4, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[4][1] = [-100.0, -100.0, -100.0, -100.0, 0.03028285, 0.009687788, -100.0, -100.0, -0.026619883, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020499956, -100.0, -100.0, -100.0, -0.012858687, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.018374441, -100.0, -100.0, -100.0]
+lab[4][2] = [-100.0, -100.0, -100.0, -100.0, -0.030117743, -0.0038273223, -100.0, -0.007731626, 0.0012443475, -100.0, -0.018306747, -100.0, -0.024662271, -100.0, -100.0, -0.025412116, -100.0, -0.060929243, -100.0, -100.0, -100.0, -0.0025727116, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.016990807, 0.0040139747]
+lab[4][3] = [-100.0, -100.0, -100.0, -100.0, 0.04373014, -0.017481847, -100.0, -0.007979904, -4.2995065E-4, -100.0, -0.011803215, -100.0, -0.020359626, -100.0, -100.0, -0.015568075, -100.0, -0.06102489, -100.0, -100.0, -100.0, -0.004197329, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.032539077, -0.0020389904]
+lab[4][4] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
+lab[4][5] = [-100.0, -100.0, -100.0, -100.0, -0.09336954, -0.11855941, -100.0, 0.08626966, 0.23081473, -100.0, -0.012153118, -100.0, 0.0037080436, -100.0, -100.0, -0.019139193, -100.0, -0.01388609, -100.0, -100.0, -100.0, -0.005913306, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0017236789, -0.0064372392]
+lab[4][6] = [-100.0, -100.0, -100.0, -100.0, 0.042744786, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.02801525, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[4][7] = [-100.0, -100.0, -100.0, -100.0, -0.010518864, -0.13629837, -100.0, -0.052703075, 0.038320504, -100.0, -0.03710283, -100.0, 0.006216524, -100.0, -100.0, -0.015964117, -100.0, -0.008941913, -100.0, -100.0, -100.0, -0.02213252, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.006738336, -0.0046989387]
+lab[4][8] = [-100.0, -100.0, -100.0, -100.0, 0.051309794, -0.09528896, -100.0, -100.0, 0.016631264, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.01614249, -100.0, -100.0, -100.0, -0.008856785, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020097349, -100.0, -100.0, -100.0]
+lab[4][9] = [-100.0, -100.0, -100.0, -100.0, 0.058439884, -0.010352795, -100.0, 0.030757695, 0.0748779, -100.0, -0.0067891935, -100.0, 0.0015209867, -100.0, -100.0, -0.020485468, -100.0, -0.022793567, -100.0, -100.0, -100.0, -0.032615256, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0063773906, -0.00847455]
+lab[4][10] = [-100.0, -100.0, -100.0, -100.0, 0.11859293, -0.040470853, -0.014690354, 0.02903986, -0.011157115, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.021043513, -100.0, -100.0, -100.0, -0.031460863, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[4][11] = [-100.0, -100.0, -100.0, -100.0, 0.15236738, -0.047795787, -100.0, -0.03789837, -0.039913785, -100.0, 0.0011355523, -100.0, -0.006762338, -100.0, -100.0, -0.024428759, -100.0, -0.021223197, -100.0, -100.0, -100.0, -0.03739178, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.007406844, -0.0046989387]
+lab[4][12] = [-100.0, -100.0, -100.0, -100.0, 0.17069574, 0.011971382, -100.0, 0.04367266, -0.061951343, -100.0, 0.0017905473, -100.0, -0.0069729253, -100.0, -100.0, -0.017813757, -100.0, -0.016009092, -100.0, -100.0, -100.0, -0.0404248, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.004485974, -0.0065263407]
+lab[4][13] = [-100.0, -100.0, -100.0, -100.0, 0.24953745, -0.0031109904, -100.0, -0.036849722, -0.01940545, -100.0, -0.014683241, -100.0, 0.0021319445, -100.0, -100.0, -0.019291952, -100.0, -0.020483337, -100.0, -100.0, -100.0, -0.03292536, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0030377628, -0.007985065]
+lab[4][14] = [-100.0, -100.0, -100.0, -100.0, 0.07949358, -0.009257822, -100.0, 0.009853234, -0.022547951, -100.0, -100.0, -0.10290189, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.008654622, 0.030426882, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.01004408]
+lab[5][0] = [-100.0, -100.0, -100.0, -100.0, 0.007786015, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[5][1] = [-100.0, -100.0, -100.0, -100.0, 0.02771602, 0.028148944, -100.0, -100.0, -0.018647132, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020499956, -100.0, -100.0, -100.0, -0.011986047, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.019807553, -100.0, -100.0, -100.0]
+lab[5][2] = [-100.0, -100.0, -100.0, -100.0, -0.034447014, -0.0032718359, -100.0, -0.007979904, -0.008797215, -100.0, -0.015350549, -100.0, -0.021705361, -100.0, -100.0, -0.025106095, -100.0, -0.06388942, -100.0, -100.0, -100.0, -0.008526931, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.012114166, -0.0025690359]
+lab[5][3] = [-100.0, -100.0, -100.0, -100.0, 0.02968784, -9.501487E-4, -100.0, -0.007731626, -0.001721808, -100.0, -0.012374148, -100.0, -0.020352686, -100.0, -100.0, -0.02302433, -100.0, -0.05969121, -100.0, -100.0, -100.0, -0.0029919485, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.021506028, 9.690776E-4]
+lab[5][4] = [-100.0, -100.0, -100.0, -100.0, 0.0413489, -0.0037748502, -100.0, -0.009773591, 0.015026659, -100.0, -0.003453567, -100.0, -0.01806766, -100.0, -100.0, -0.015624217, -100.0, -0.06542269, -100.0, -100.0, -100.0, -0.011077607, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.015954167, -0.00413757]
+lab[5][5] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
+lab[5][6] = [-100.0, -100.0, -100.0, -100.0, 0.009874955, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0063589364, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[5][7] = [-100.0, -100.0, -100.0, -100.0, -0.013725653, -0.09517634, -100.0, -0.032420676, 0.056893967, -100.0, -0.035141923, -100.0, 0.01755903, -100.0, -100.0, -0.025872728, -100.0, -0.0060505494, -100.0, -100.0, -100.0, -0.029148407, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.006738336, -0.0057169683]
+lab[5][8] = [-100.0, -100.0, -100.0, -100.0, 0.043727666, -0.13072446, -100.0, -100.0, 0.010142995, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.01695753, -100.0, -100.0, -100.0, -0.0043309685, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.021955507, -100.0, -100.0, -100.0]
+lab[5][9] = [-100.0, -100.0, -100.0, -100.0, 0.046453465, 0.0113611175, -100.0, 0.038369372, 0.10987423, -100.0, -0.014727177, -100.0, 0.0025815582, -100.0, -100.0, -0.023696663, -100.0, -0.020068578, -100.0, -100.0, -100.0, -0.04906127, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0063773906, -0.006955822]
+lab[5][10] = [-100.0, -100.0, -100.0, -100.0, 0.11681521, -0.041773185, -0.014802043, 0.02339334, 0.0023333384, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.025621016, -100.0, -100.0, -100.0, -0.035384513, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[5][11] = [-100.0, -100.0, -100.0, -100.0, 0.12570891, -0.016102754, -100.0, -0.024745505, -0.0016095638, -100.0, -0.0036058084, -100.0, -0.009599689, -100.0, -100.0, -0.025307972, -100.0, -0.023301505, -100.0, -100.0, -100.0, -0.051421203, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.007406844, -0.0046989387]
+lab[5][12] = [-100.0, -100.0, -100.0, -100.0, 0.14795728, 0.02616579, -100.0, 0.066588216, -0.0341523, -100.0, -9.7153184E-5, -100.0, -0.0046272306, -100.0, -100.0, -0.022008631, -100.0, -0.015033025, -100.0, -100.0, -100.0, -0.055872314, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.009962534, -0.0065263407]
+lab[5][13] = [-100.0, -100.0, -100.0, -100.0, 0.22414888, 0.0060834433, -100.0, -0.008835591, 0.01732592, -100.0, -0.018156439, -100.0, 8.6487085E-4, -100.0, -100.0, -0.023486823, -100.0, -0.020483337, -100.0, -100.0, -100.0, -0.04710021, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0030377628, -0.0064372392]
+lab[5][14] = [-100.0, -100.0, -100.0, -100.0, 0.08878266, -0.009180344, -100.0, 0.006302624, -0.018893935, -100.0, -100.0, -0.09531936, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.010326847, 0.029544532, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.008141532]
+lab[6][0] = [-100.0, -100.0, -100.0, -100.0, 0.023033261, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[6][1] = [-100.0, -100.0, -100.0, -100.0, 0.20864604, -0.05089548, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.03976683, -100.0, -100.0, -100.0, -100.0, -100.0, -0.02282291, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[6][2] = [-100.0, -100.0, -100.0, -100.0, 0.12736312, -100.0, -0.038424324, -100.0, -100.0, -100.0, 0.13986121, -100.0, -0.012428051, -100.0, -100.0, -0.05530557, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0043633413, -100.0]
+lab[6][3] = [-100.0, -100.0, -100.0, -100.0, -0.0046778144, -100.0, 0.1888846, -100.0, -100.0, -100.0, -0.0020437245, -100.0, -0.013033396, -100.0, -100.0, -0.056855615, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0037650405, -100.0]
+lab[6][4] = [-100.0, -100.0, -100.0, -100.0, 0.007994813, -100.0, 0.1550787, -100.0, -100.0, -100.0, -0.0059514716, -100.0, 0.011946373, -100.0, -100.0, -0.06274183, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0023011658, -100.0]
+lab[6][5] = [-100.0, -100.0, -100.0, -100.0, 0.0034305025, -100.0, 0.12060462, -100.0, -100.0, -100.0, 6.3503464E-4, -100.0, 0.0068051666, -100.0, -100.0, -0.051002603, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0055534686, -100.0]
+lab[6][6] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
+lab[6][7] = [-100.0, -100.0, -100.0, -100.0, 0.024960238, -100.0, 0.05161933, -100.0, -100.0, -100.0, 0.21018952, -100.0, 0.022909997, -100.0, -100.0, 0.0025447046, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0024014926, -100.0]
+lab[6][8] = [-100.0, -100.0, -100.0, -100.0, 0.034076728, 0.13676485, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.009304508, -100.0, -100.0, -100.0, -100.0, -100.0, 7.967291E-4, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[6][9] = [-100.0, -100.0, -100.0, -100.0, -0.07555324, -100.0, 0.09267018, -100.0, -100.0, -100.0, 0.04892666, -100.0, 0.038491517, -100.0, -100.0, 0.027027639, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.009365095, -100.0]
+lab[6][10] = [-100.0, -100.0, -100.0, -100.0, 0.017195653, 0.0024830988, 0.03209228, -100.0, -100.0, -100.0, -0.04074017, -100.0, -0.03358294, -100.0, -100.0, 0.06644424, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[6][11] = [-100.0, -100.0, -100.0, -100.0, 0.013968601, -100.0, 0.04216479, -100.0, -100.0, -100.0, 0.047949035, -100.0, 0.039137743, -100.0, -100.0, -0.01925468, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.016810946, -100.0]
+lab[6][12] = [-100.0, -100.0, -100.0, -100.0, 0.014872201, -100.0, 0.04419685, -100.0, -100.0, -100.0, 0.12845795, -100.0, 0.0055937013, -100.0, -100.0, -0.028737731, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.006175855, -100.0]
+lab[6][13] = [-100.0, -100.0, -100.0, -100.0, -0.056315172, -100.0, 0.04807967, -100.0, -100.0, -100.0, 0.118796006, -100.0, 0.06304423, -100.0, -100.0, -0.0020268823, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.011274287, -100.0]
+lab[6][14] = [-100.0, -100.0, -100.0, -100.0, 0.037810247, 0.069284454, 0.010218109, -100.0, -100.0, -100.0, 0.042182103, -0.016194848, 0.0046266606, -100.0, 0.018700384, 0.024961736, -100.0, -100.0, -100.0, -100.0, 0.019210849, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.019267486, -0.008150559]
+lab[7][0] = [-100.0, -100.0, -100.0, -100.0, 0.0020415904, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[7][1] = [-100.0, -100.0, -100.0, -100.0, 0.048857834, 0.024895584, -100.0, -100.0, -0.016711766, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020600632, -100.0, -100.0, -100.0, -0.0146774035, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.019822594, -100.0, -100.0, -100.0]
+lab[7][2] = [-100.0, -100.0, -100.0, -100.0, -0.06337702, -0.0052916403, -100.0, -0.007072131, -0.005676318, -100.0, -0.012953629, -100.0, -0.019245291, -100.0, -100.0, -0.028318094, -100.0, -0.067467794, -100.0, -100.0, -100.0, -0.0020377673, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.009418382, -0.00918054]
+lab[7][3] = [-100.0, -100.0, -100.0, -100.0, -0.008698676, -0.0031118554, -100.0, -0.00723242, -0.007731178, -100.0, -0.013173097, -100.0, -0.019161275, -100.0, -100.0, -0.024943981, -100.0, -0.060471296, -100.0, -100.0, -100.0, -0.0037860493, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020058166, -0.00875127]
+lab[7][4] = [-100.0, -100.0, -100.0, -100.0, 0.002013328, 1.0998105E-4, -100.0, -0.01068812, 0.014536993, -100.0, -0.016048206, -100.0, -0.018137963, -100.0, -100.0, -0.01768755, -100.0, -0.06665342, -100.0, -100.0, -100.0, -0.01007092, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.012615616, -0.009968513]
+lab[7][5] = [-100.0, -100.0, -100.0, -100.0, 0.0070634056, 0.0023023428, -100.0, -0.008646155, 0.0076258294, -100.0, -0.0068513555, -100.0, -0.016451048, -100.0, -100.0, -0.023988038, -100.0, -0.06636638, -100.0, -100.0, -100.0, -0.004222147, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0097232275, -0.0076227635]
+lab[7][6] = [-100.0, -100.0, -100.0, -100.0, -0.031167299, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.027433395, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[7][7] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
+lab[7][8] = [-100.0, -100.0, -100.0, -100.0, 0.0049104257, -0.14811467, -100.0, -100.0, -0.0015818988, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.018902455, -100.0, -100.0, -100.0, 0.0035807902, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.007338235, -100.0, -100.0, -100.0]
+lab[7][9] = [-100.0, -100.0, -100.0, -100.0, 0.06587316, 0.14371991, -100.0, -0.049351946, -0.04048246, -100.0, 0.011947182, -100.0, -6.2810676E-4, -100.0, -100.0, -0.01602333, -100.0, -0.022502404, -100.0, -100.0, -100.0, -0.053128764, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.020960134, -0.0073063895]
+lab[7][10] = [-100.0, -100.0, -100.0, -100.0, 0.009259071, -0.076612204, -0.020510068, 0.044047967, 0.0503408, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.017946027, -100.0, -100.0, -100.0, -0.036746453, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[7][11] = [-100.0, -100.0, -100.0, -100.0, 0.037588913, 0.10905088, -100.0, -0.030460993, 0.003721512, -100.0, 0.006805576, -100.0, -0.012384878, -100.0, -100.0, -0.014599603, -100.0, -0.026002733, -100.0, -100.0, -100.0, -0.07514333, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.020023372, -0.005568089]
+lab[7][12] = [-100.0, -100.0, -100.0, -100.0, -0.003176908, 0.1564925, -100.0, 0.08989608, -0.021242943, -100.0, 0.010067976, -100.0, -0.013922423, -100.0, -100.0, -0.02416636, -100.0, -0.024662182, -100.0, -100.0, -100.0, -0.07240346, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.023381695, -0.00648179]
+lab[7][13] = [-100.0, -100.0, -100.0, -100.0, 0.051657975, 0.13402489, -100.0, 0.020865025, 0.013104109, -100.0, -0.0068195877, -100.0, -0.011332986, -100.0, -100.0, -0.019492686, -100.0, -0.026033364, -100.0, -100.0, -100.0, -0.066130616, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.016456924, -0.0073063895]
+lab[7][14] = [-100.0, -100.0, -100.0, -100.0, 0.08149053, -3.2838946E-4, -100.0, 0.025150903, -0.01035606, -100.0, -100.0, -0.0402803, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.01197523, 0.018398318, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.008141532]
+lab[8][0] = [-100.0, -100.0, -100.0, -100.0, -0.010298952, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[8][1] = [-100.0, -100.0, -100.0, -100.0, 0.07720715, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[8][2] = [-100.0, -100.0, -100.0, -100.0, -0.009475322, -0.020047832, -100.0, -100.0, -0.029767666, -100.0, -0.023018487, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.07760017, -100.0, -100.0, -100.0, -0.0069597554, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[8][3] = [-100.0, -100.0, -100.0, -100.0, -0.0177695, -0.01584079, -100.0, -100.0, -0.034220427, -100.0, -0.024995474, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.06809402, -100.0, -100.0, -100.0, -0.0069597554, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[8][4] = [-100.0, -100.0, -100.0, -100.0, -0.016846146, -0.017320994, -100.0, -100.0, -0.030368356, -100.0, -0.023107952, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.07637689, -100.0, -100.0, -100.0, -0.009199989, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[8][5] = [-100.0, -100.0, -100.0, -100.0, -0.019849148, -0.016790282, -100.0, -100.0, -0.0298011, -100.0, -0.026457291, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.06959498, -100.0, -100.0, -100.0, -0.009199989, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[8][6] = [-100.0, -100.0, -100.0, -100.0, -0.0316555, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[8][7] = [-100.0, -100.0, -100.0, -100.0, -0.03086719, -0.012185813, -100.0, -100.0, -0.028345747, -100.0, -0.031858526, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.080215685, -100.0, -100.0, -100.0, -0.010004969, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[8][8] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
+lab[8][9] = [-100.0, -100.0, -100.0, -100.0, 0.024622455, -0.04244198, -100.0, -100.0, -0.0021945783, -100.0, -0.0017560016, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.01365146, -100.0, -100.0, -100.0, 0.034700513, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[8][10] = [-100.0, -100.0, -100.0, -100.0, -0.0067202644, 0.010890665, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.012986096, -100.0, 0.025612151, -100.0, -100.0, -100.0, -0.009904071, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[8][11] = [-100.0, -100.0, -100.0, -100.0, 0.0264671, -0.084497094, -100.0, -100.0, 0.011075877, -100.0, -0.008343452, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.017636344, -100.0, -100.0, -100.0, 0.00929617, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[8][12] = [-100.0, -100.0, -100.0, -100.0, 0.028509734, -0.105624385, -100.0, -100.0, 0.0039734393, -100.0, -3.0099647E-4, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.009284925, -100.0, -100.0, -100.0, -0.025048574, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[8][13] = [-100.0, -100.0, -100.0, -100.0, 0.022118228, -0.066294305, -100.0, -100.0, 0.011478871, -100.0, -0.024278225, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.021096548, -100.0, -100.0, -100.0, 0.037493646, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[8][14] = [-100.0, -100.0, -100.0, -100.0, -100.0, -0.016817383, -100.0, -100.0, -100.0, -100.0, -100.0, -0.13833265, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.012782506]
+lab[9][0] = [-100.0, -100.0, -100.0, -100.0, 4.385016E-4, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[9][1] = [-100.0, -100.0, -100.0, -100.0, 0.030603452, 0.019662967, -100.0, -100.0, -0.026710683, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020499956, -100.0, -100.0, -100.0, -0.011986047, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.019753616, -100.0, -100.0, -100.0]
+lab[9][2] = [-100.0, -100.0, -100.0, -100.0, -0.060118802, -0.00852822, -100.0, -0.0085925935, 0.0017758107, -100.0, -0.0132168485, -100.0, -0.022021595, -100.0, -100.0, -0.026063943, -100.0, -0.06923627, -100.0, -100.0, -100.0, -0.0060219583, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.013042967, -0.011748734]
+lab[9][3] = [-100.0, -100.0, -100.0, -100.0, -0.005694381, -0.0072280634, -100.0, -0.010656882, 9.6388E-4, -100.0, -0.010890223, -100.0, -0.020138862, -100.0, -100.0, -0.02506855, -100.0, -0.06293549, -100.0, -100.0, -100.0, -0.0031594145, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.022359546, -0.012946464]
+lab[9][4] = [-100.0, -100.0, -100.0, -100.0, 0.012697235, -0.0040062284, -100.0, -0.012450568, 0.023232052, -100.0, -0.01436099, -100.0, -0.019115552, -100.0, -100.0, -0.017668435, -100.0, -0.06911761, -100.0, -100.0, -100.0, -0.011040136, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.014916998, -0.012959486]
+lab[9][5] = [-100.0, -100.0, -100.0, -100.0, 0.003959284, -0.005127607, -100.0, -0.012003781, 0.02289455, -100.0, -0.0071145743, -100.0, -0.019540751, -100.0, -100.0, -0.02506855, -100.0, -0.06379605, -100.0, -100.0, -100.0, -0.00631301, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.017563405, -0.014828853]
+lab[9][6] = [-100.0, -100.0, -100.0, -100.0, -0.019865207, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020328699, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[9][7] = [-100.0, -100.0, -100.0, -100.0, -0.033953886, -0.0018636595, -100.0, -0.007731626, -3.6249845E-4, -100.0, -0.007401729, -100.0, -0.02232414, -100.0, -100.0, -0.03200184, -100.0, -0.073828295, -100.0, -100.0, -100.0, -0.0077059413, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.012270593, -0.011864145]
+lab[9][8] = [-100.0, -100.0, -100.0, -100.0, 0.03954214, -0.0033379826, -100.0, -100.0, -0.0149728265, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.022576116, -100.0, -100.0, -100.0, -0.016223626, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.013277006, -100.0, -100.0, -100.0]
+lab[9][9] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
+lab[9][10] = [-100.0, -100.0, -100.0, -100.0, 0.20875499, -0.06758808, -0.01329644, 0.021231992, 0.074203275, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.010264425, -100.0, -100.0, -100.0, -0.040378038, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[9][11] = [-100.0, -100.0, -100.0, -100.0, 0.11447072, 0.016000146, -100.0, 0.12571457, 0.10625105, -100.0, 0.004082323, -100.0, -0.0062507754, -100.0, -100.0, -0.01677507, -100.0, -0.018420275, -100.0, -100.0, -100.0, -0.058186896, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0071156574, 0.002163982]
+lab[9][12] = [-100.0, -100.0, -100.0, -100.0, 0.032018445, 0.024125308, -100.0, 0.2455853, 0.056142658, -100.0, -0.0011152485, -100.0, -0.002792284, -100.0, -100.0, -0.02547044, -100.0, -0.015865061, -100.0, -100.0, -100.0, -0.06419294, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.010473982, -0.00648179]
+lab[9][13] = [-100.0, -100.0, -100.0, -100.0, 0.11447777, 6.697993E-4, -100.0, 0.16682132, 0.09476111, -100.0, -0.02744541, -100.0, 0.0057364157, -100.0, -100.0, -0.025195219, -100.0, -0.021623705, -100.0, -100.0, -100.0, -0.056456704, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 4.941136E-4, -0.00817554]
+lab[9][14] = [-100.0, -100.0, -100.0, -100.0, 0.10525579, -0.008929347, -100.0, 0.03029225, -0.01102661, -100.0, -100.0, -0.07904691, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0047041643, 0.02301877, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.008141532]
+lab[10][0] = [-100.0, -100.0, -100.0, -100.0, -9.267228E-4, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[10][1] = [-100.0, -100.0, -100.0, -100.0, 0.086413674, 8.654366E-4, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.013165251, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.017005188, -100.0, -100.0, -100.0]
+lab[10][2] = [-100.0, -100.0, -100.0, -100.0, -0.022829698, -0.0071389154, -0.029467646, -0.004115135, -0.018250464, -100.0, -0.018737962, -100.0, -0.0094045475, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0066792443, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[10][3] = [-100.0, -100.0, -100.0, -100.0, -0.024376234, -0.0060840566, -0.040475503, -0.0011310256, -0.012411635, -100.0, -0.021031396, -100.0, -0.009896848, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0076555787, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[10][4] = [-100.0, -100.0, -100.0, -100.0, -0.019265706, -0.0060840566, -0.044232056, -0.004807427, -0.018619878, -100.0, -0.013958687, -100.0, -0.010507663, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0076555787, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[10][5] = [-100.0, -100.0, -100.0, -100.0, -0.02919563, -0.0060840566, -0.04374403, -0.002909442, -0.012196044, -100.0, -0.01655533, -100.0, -0.011610778, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0076555787, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[10][6] = [-100.0, -100.0, -100.0, -100.0, -0.014946022, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.026508257, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[10][7] = [-100.0, -100.0, -100.0, -100.0, -0.031692307, -0.007922365, -0.023501813, -0.0058935503, -0.021940108, -100.0, -0.027975522, -100.0, -0.011811018, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.008111444, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[10][8] = [-100.0, -100.0, -100.0, -100.0, 0.08409503, 0.008447876, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.02651535, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.014948052, -100.0, -100.0, -100.0]
+lab[10][9] = [-100.0, -100.0, -100.0, -100.0, -0.03174676, -0.0072506266, -0.025777975, -0.0070578745, -0.023986494, -100.0, -0.019441407, -100.0, -0.011610778, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0076555787, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[10][10] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
+lab[10][11] = [-100.0, -100.0, -100.0, -100.0, -0.020492751, -0.011677122, -0.014922382, -0.008271219, 0.07524326, -100.0, -0.0102564655, -100.0, -0.03576118, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.05996136, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[10][12] = [-100.0, -100.0, -100.0, -100.0, 0.011622721, 0.032384023, -0.0026711538, 0.0038835537, -4.5388937E-5, -100.0, 0.008428662, -100.0, -0.014357973, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.04065571, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[10][13] = [-100.0, -100.0, -100.0, -100.0, 0.0073663713, 0.030481348, -0.010437234, -9.3441224E-4, 0.039967984, -100.0, 0.0064717443, -100.0, -0.024461718, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.046183094, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[10][14] = [-100.0, -100.0, -100.0, -100.0, 0.01587913, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.06235354, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.016389329, -100.0, -100.0, -100.0, -0.02086558, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[11][0] = [-100.0, -100.0, -100.0, -100.0, 0.004183382, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[11][1] = [-100.0, -100.0, -100.0, -100.0, -0.0076409145, 0.024953196, -100.0, -100.0, -0.028889697, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020499956, -100.0, -100.0, -100.0, -0.011986047, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.01859772, -100.0, -100.0, -100.0]
+lab[11][2] = [-100.0, -100.0, -100.0, -100.0, -0.060003787, -0.014070317, -100.0, -0.0059156157, 0.010306167, -100.0, -0.015206532, -100.0, -0.019881038, -100.0, -100.0, -0.028339827, -100.0, -0.067398205, -100.0, -100.0, -100.0, 0.008997908, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.018300084, -0.007920352]
+lab[11][3] = [-100.0, -100.0, -100.0, -100.0, -0.01894506, -0.013162743, -100.0, -0.007979904, -0.0016385664, -100.0, -0.018153787, -100.0, -0.017998304, -100.0, -100.0, -0.021245552, -100.0, -0.05939291, -100.0, -100.0, -100.0, -0.004197329, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.032008335, -0.00921024]
+lab[11][4] = [-100.0, -100.0, -100.0, -100.0, -0.0025721304, -0.009940909, -100.0, -0.009773591, 0.020629605, -100.0, -0.023574987, -100.0, 0.0029413053, -100.0, -100.0, -0.01590158, -100.0, -0.06557504, -100.0, -100.0, -100.0, -0.0120780505, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.02265994, -0.010470008]
+lab[11][5] = [-100.0, -100.0, -100.0, -100.0, -0.004847251, -0.016105207, -100.0, -0.013647844, 0.020292103, -100.0, -0.012678393, -100.0, -0.02244311, -100.0, -100.0, -0.021245552, -100.0, -0.060949195, -100.0, -100.0, -100.0, -0.0073509244, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.027212191, -0.014650679]
+lab[11][6] = [-100.0, -100.0, -100.0, -100.0, -0.033746358, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.023005461, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[11][7] = [-100.0, -100.0, -100.0, -100.0, -0.05617983, -0.011991441, -100.0, -0.009326804, 0.011956559, -100.0, -0.018397594, -100.0, -0.01995382, -100.0, -100.0, -0.030099161, -100.0, -0.07172404, -100.0, -100.0, -100.0, -0.0029683935, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020174116, -0.015947435]
+lab[11][8] = [-100.0, -100.0, -100.0, -100.0, 0.005519841, 9.0104673E-4, -100.0, -100.0, -0.019728117, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020637562, -100.0, -100.0, -100.0, -0.016223626, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.013563827, -100.0, -100.0, -100.0]
+lab[11][9] = [-100.0, -100.0, -100.0, -100.0, 0.015746564, -0.0070220693, -100.0, -0.007731626, 0.022043357, -100.0, -0.016831335, -100.0, -0.014862879, -100.0, -100.0, -0.026977727, -100.0, -0.064945415, -100.0, -100.0, -100.0, -0.00923226, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.014802031, -0.008515398]
+lab[11][10] = [-100.0, -100.0, -100.0, -100.0, 0.17183895, -0.019662648, -0.02055108, -0.022982247, -0.05656849, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.029510943, -100.0, -100.0, -100.0, -0.01362725, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[11][11] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
+lab[11][12] = [-100.0, -100.0, -100.0, -100.0, 0.004987302, 0.11272088, -100.0, 0.13417284, 0.046005733, -100.0, -0.011221319, -100.0, -0.009711958, -100.0, -100.0, -0.029535037, -100.0, -0.010512706, -100.0, -100.0, -100.0, -0.047170322, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.013259491, -0.0056126397]
+lab[11][13] = [-100.0, -100.0, -100.0, -100.0, 0.120297045, 0.09330137, -100.0, 0.070799686, 0.040355153, -100.0, -0.039030172, -100.0, -7.0239895E-4, -100.0, -100.0, -0.032085977, -100.0, -0.011256315, -100.0, -100.0, -100.0, -0.027810505, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.00633472, -0.008622873]
+lab[11][14] = [-100.0, -100.0, -100.0, -100.0, 0.11600753, -0.005624147, -100.0, 0.03412821, -0.012586624, -100.0, -100.0, -0.075249486, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.019362854, 0.013571097, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.008141532]
+lab[12][0] = [-100.0, -100.0, -100.0, -100.0, 0.0020547423, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[12][1] = [-100.0, -100.0, -100.0, -100.0, 0.0396342, -0.015539667, -100.0, -100.0, -0.025371484, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.024309423, -100.0, -100.0, -100.0, -0.011986047, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.027883962, -100.0, -100.0, -100.0]
+lab[12][2] = [-100.0, -100.0, -100.0, -100.0, -0.05916558, -0.016076984, -100.0, -0.005667337, 0.0051087197, -100.0, -0.016055794, -100.0, -0.027272215, -100.0, -100.0, -0.026044102, -100.0, -0.07120015, -100.0, -100.0, -100.0, -0.0015342243, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.021045266, -0.008740985]
+lab[12][3] = [-100.0, -100.0, -100.0, -100.0, 0.0031062858, -0.013976154, -100.0, -0.009553928, -0.005194581, -100.0, -0.013632725, -100.0, -0.026658138, -100.0, -100.0, -0.0232241, -100.0, -0.060299862, -100.0, -100.0, -100.0, -0.0088612195, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.029549452, -0.011608116]
+lab[12][4] = [-100.0, -100.0, -100.0, -100.0, 0.00867251, -0.011926816, -100.0, -0.010248993, 0.01097198, -100.0, -0.018405842, -100.0, -0.026264463, -100.0, -100.0, -0.014724364, -100.0, -0.07129672, -100.0, -100.0, -100.0, -0.010854144, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.023430107, -0.01412765]
+lab[12][5] = [-100.0, -100.0, -100.0, -100.0, 0.0054890797, -0.012925926, -100.0, -0.010225224, 0.0135046225, -100.0, -0.013068038, -100.0, -0.02711486, -100.0, -100.0, -0.0232241, -100.0, -0.06496835, -100.0, -100.0, -100.0, -0.0061270185, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.02475331, -0.020265082]
+lab[12][6] = [-100.0, -100.0, -100.0, -100.0, -0.02469039, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.018911082, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[12][7] = [-100.0, -100.0, -100.0, -100.0, -0.034386136, -0.01227389, -100.0, -0.004852564, 0.005298138, -100.0, -0.015678015, -100.0, -0.02966849, -100.0, -100.0, -0.03331035, -100.0, -0.076273516, -100.0, -100.0, -100.0, -3.9869107E-4, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020319534, -0.0150832]
+lab[12][8] = [-100.0, -100.0, -100.0, -100.0, 0.042473763, -0.026352536, -100.0, -100.0, -0.017569697, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020599995, -100.0, -100.0, -100.0, -0.016223626, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.017437482, -100.0, -100.0, -100.0]
+lab[12][9] = [-100.0, -100.0, -100.0, -100.0, 0.02230397, -0.010012049, -100.0, -0.009553928, 0.017520748, -100.0, -0.014661487, -100.0, -0.024577547, -100.0, -100.0, -0.03023924, -100.0, -0.073132485, -100.0, -100.0, -100.0, -0.007911795, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.021642737, -0.017785992]
+lab[12][10] = [-100.0, -100.0, -100.0, -100.0, 0.2285694, -0.026922856, -0.020569138, -0.02599477, -0.012410844, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.038398586, -100.0, -100.0, -100.0, -0.012401053, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[12][11] = [-100.0, -100.0, -100.0, -100.0, -0.04830719, -0.014254008, -100.0, -0.0038235525, 0.016373483, -100.0, -0.0115593225, -100.0, -0.024683233, -100.0, -100.0, -0.033282496, -100.0, -0.06943184, -100.0, -100.0, -100.0, -0.0022925064, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.0191256, -0.019381609]
+lab[12][12] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
+lab[12][13] = [-100.0, -100.0, -100.0, -100.0, 0.068326406, 0.13544416, -100.0, 0.0998629, 0.097386986, -100.0, -0.034251586, -100.0, -0.0054424014, -100.0, -100.0, -0.019764677, -100.0, -0.03183618, -100.0, -100.0, -100.0, -0.04539673, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.009344805, -0.0098096]
+lab[12][14] = [-100.0, -100.0, -100.0, -100.0, 0.08549086, -0.004960265, -100.0, 0.010753985, -0.007879022, -100.0, -100.0, -0.12814987, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.007242377, 0.008014331, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.008141532]
+lab[13][0] = [-100.0, -100.0, -100.0, -100.0, 0.0020547423, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[13][1] = [-100.0, -100.0, -100.0, -100.0, 0.05739301, 0.020208525, -100.0, -100.0, -0.02736584, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020499956, -100.0, -100.0, -100.0, -0.011986047, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.021537926, -100.0, -100.0, -100.0]
+lab[13][2] = [-100.0, -100.0, -100.0, -100.0, -0.019036207, -0.01617592, -100.0, -0.0059156157, 0.0020330462, -100.0, -0.014504712, -100.0, -0.021567954, -100.0, -100.0, -0.023315748, -100.0, -0.0683606, -100.0, -100.0, -100.0, 3.295847E-4, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.015582237, -0.016198281]
+lab[13][3] = [-100.0, -100.0, -100.0, -100.0, 0.03114741, -0.01407509, -100.0, -0.009802206, -0.005134943, -100.0, -0.010012224, -100.0, -0.020953877, -100.0, -100.0, -0.023286957, -100.0, -0.062059816, -100.0, -100.0, -100.0, -0.0021215002, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.022727123, -0.0130320545]
+lab[13][4] = [-100.0, -100.0, -100.0, -100.0, 0.03841355, -0.011122017, -100.0, -0.011595893, 0.02051436, -100.0, -0.015433424, -100.0, -0.019930566, -100.0, -100.0, -0.015886845, -100.0, -0.06907656, -100.0, -100.0, -100.0, -0.009811342, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.015284575, -0.014291821]
+lab[13][5] = [-100.0, -100.0, -100.0, -100.0, 0.037527163, -0.011974635, -100.0, -0.011149107, 0.019251764, -100.0, -0.007873704, -100.0, -0.019512307, -100.0, -100.0, -0.023286957, -100.0, -0.06205247, -100.0, -100.0, -100.0, -0.005275096, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.01793098, -0.01646095]
+lab[13][6] = [-100.0, -100.0, -100.0, -100.0, -0.02906044, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.021853115, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[13][7] = [-100.0, -100.0, -100.0, -100.0, 0.0051080245, -0.012372827, -100.0, -0.009326804, 0.0060452437, -100.0, -0.013101375, -100.0, -0.022065936, -100.0, -100.0, -0.02896975, -100.0, -0.073357634, -100.0, -100.0, -100.0, -5.846833E-4, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.015330794, -0.015957894]
+lab[13][8] = [-100.0, -100.0, -100.0, -100.0, 0.08354042, 0.003999633, -100.0, -100.0, -0.0148448525, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.020637562, -100.0, -100.0, -100.0, -0.016223626, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.009822253, -100.0, -100.0, -100.0]
+lab[13][9] = [-100.0, -100.0, -100.0, -100.0, 0.06996338, -0.010110986, -100.0, -0.011149107, 0.018004304, -100.0, -0.01152831, -100.0, -0.016974993, -100.0, -100.0, -0.032456063, -100.0, -0.06277614, -100.0, -100.0, -100.0, -0.008038912, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.019617168, -0.018978095]
+lab[13][10] = [-100.0, -100.0, -100.0, -100.0, 0.1966709, -0.037076153, -0.022834187, -0.030513555, 0.010913024, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.029907519, -100.0, -100.0, -100.0, -0.012401054, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[13][11] = [-100.0, -100.0, -100.0, -100.0, -0.022209378, -0.013499531, -100.0, -0.0038235525, 0.013696095, -100.0, -0.009977228, -100.0, -0.018342398, -100.0, -100.0, -0.029386675, -100.0, -0.07173414, -100.0, -100.0, -100.0, -0.00394613, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.014987734, -0.017867286]
+lab[13][12] = [-100.0, -100.0, -100.0, -100.0, 0.09764857, -0.020975709, -100.0, -0.013096463, 0.01657707, -100.0, -0.010012224, -100.0, -0.018349338, -100.0, -100.0, -0.030115183, -100.0, -0.071751185, -100.0, -100.0, -100.0, -0.0040298626, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.018266436, -0.013942889]
+lab[13][13] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
+lab[13][14] = [-100.0, -100.0, -100.0, -100.0, 0.056084678, -0.012318356, -100.0, 0.014322455, -0.014129913, -100.0, -100.0, -0.14917272, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, 0.0063895416, 0.028424421, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.009038948]
+lab[14][0] = [-100.0, -100.0, -100.0, -100.0, -0.008927362, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[14][1] = [-100.0, -100.0, -100.0, -100.0, 0.028905792, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.08073401, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[14][2] = [-100.0, -100.0, -100.0, -100.0, -0.016127275, -0.011781214, -0.029326014, -100.0, -0.0073180962, -100.0, -0.036407348, -100.0, -0.02709568, -100.0, -100.0, -100.0, -100.0, 0.010117588, -100.0, -100.0, -100.0, -0.027180063, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[14][3] = [-100.0, -100.0, -100.0, -100.0, -0.014929585, -0.01646292, 0.010563016, -100.0, -0.003801383, -100.0, -0.021647654, -100.0, -0.04209665, -100.0, -100.0, -100.0, -100.0, 0.02020907, -100.0, -100.0, -100.0, -0.023904413, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[14][4] = [-100.0, -100.0, -100.0, -100.0, -0.021154426, -0.016442642, 0.0037343476, -100.0, -0.0045591975, -100.0, -0.034271818, -100.0, -0.041392848, -100.0, -100.0, -100.0, -100.0, -0.042646084, -100.0, -100.0, -100.0, -0.021064406, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[14][5] = [-100.0, -100.0, -100.0, -100.0, -0.011393564, -0.03390301, 0.009589337, -100.0, -0.01744324, -100.0, -0.007175665, -100.0, -0.043987717, -100.0, -100.0, -100.0, -100.0, 0.035264224, -100.0, -100.0, -100.0, -0.02660139, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[14][6] = [-100.0, -100.0, -100.0, -100.0, -0.0271488, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.03853228, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[14][7] = [-100.0, -100.0, -100.0, -100.0, -0.019168273, -0.011024953, -0.03493552, -100.0, -0.003224189, -100.0, -0.025564909, -100.0, -0.028018715, -100.0, -100.0, -100.0, -100.0, 0.015027219, -100.0, -100.0, -100.0, -0.02618499, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[14][8] = [-100.0, -100.0, -100.0, -100.0, -0.015771415, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.074303724, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[14][9] = [-100.0, -100.0, -100.0, -100.0, -0.014042193, -0.020506615, -0.037382524, -100.0, -0.011863008, -100.0, -0.026074145, -100.0, -0.038123965, -100.0, -100.0, -100.0, -100.0, 0.018390698, -100.0, -100.0, -100.0, -0.025254652, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[14][10] = [-100.0, -100.0, -100.0, -100.0, 0.04561069, -100.0, -0.019445466, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -0.10429093, -100.0, -100.0, -100.0, 0.0013721561, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[14][11] = [-100.0, -100.0, -100.0, -100.0, -0.0128257405, -0.011499481, -0.01790243, -100.0, -0.0073180962, -100.0, -0.03406727, -100.0, -0.032254595, -100.0, -100.0, -100.0, -100.0, 0.03551333, -100.0, -100.0, -100.0, -0.02621014, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[14][12] = [-100.0, -100.0, -100.0, -100.0, -0.005733858, -0.014030532, -0.007075153, -100.0, -0.003224189, -100.0, -0.034181435, -100.0, -0.038144123, -100.0, -100.0, -100.0, -100.0, -0.08827253, -100.0, -100.0, -100.0, -0.026157081, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[14][13] = [-100.0, -100.0, -100.0, -100.0, -0.0042990698, -0.015845833, -0.013813869, -100.0, 0.0018438096, -100.0, -0.028911412, -100.0, -0.035165127, -100.0, -100.0, -100.0, -100.0, -0.041419115, -100.0, -100.0, -100.0, -0.027013248, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0]
+lab[14][14] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
+fv = a feature vector
+sib[0][1][0] = [0.1009304]
+sib[0][1][1] = [0.1009304]
+sib[0][2][0] = [0.077498816, -0.18321107]
+sib[0][2][1] = [0.0, 3.6234892E-4]
+sib[0][2][2] = [0.077498816, -0.18321107]
+sib[0][3][0] = [0.09607812, -0.16572231]
+sib[0][3][1] = [9.148505E-12, 3.6234892E-4]
+sib[0][3][2] = [0.002879443, -0.002180265]
+sib[0][3][3] = [0.09607812, -0.16572231]
+sib[0][4][0] = [0.09607812, -0.16775823]
+sib[0][4][1] = [9.148505E-12, 3.6234892E-4]
+sib[0][4][2] = [0.002879443, 0.013257431]
+sib[0][4][3] = [0.0036714405, -0.012758426]
+sib[0][4][4] = [0.09607812, -0.16775823]
+sib[0][5][0] = [0.07752588, -0.19025701]
+sib[0][5][1] = [0.0, 3.6234892E-4]
+sib[0][5][2] = [0.002879443, -0.0053304173]
+sib[0][5][3] = [0.0036714405, -0.019903192]
+sib[0][5][4] = [0.0, -0.017437585]
+sib[0][5][5] = [0.07752588, -0.19025701]
+sib[0][6][0] = [0.37733674, 0.0030680192, 0.060625646]
+sib[0][6][1] = [0.0, 4.400658E-11, -0.0086955335]
+sib[0][6][2] = [0.0026465259, 8.476209E-4, 0.0]
+sib[0][6][3] = [0.0020373724, -0.0043442375, 0.0050378544]
+sib[0][6][4] = [0.004083242, -0.008529572, 0.0050378544]
+sib[0][6][5] = [-0.00261556, -0.0063765747, -0.0016225355]
+sib[0][6][6] = [0.37733674, 0.0030680192, 0.060625646]
+sib[0][7][0] = [0.05387699, -0.17501158]
+sib[0][7][1] = [0.0, 3.6234892E-4]
+sib[0][7][2] = [0.002879443, 0.0081029795]
+sib[0][7][3] = [0.0138752125, -0.012863668]
+sib[0][7][4] = [0.0023320774, -0.008248902]
+sib[0][7][5] = [-2.8348272E-4, -0.01896391]
+sib[0][7][6] = [-0.08313296, -0.008190515]
+sib[0][7][7] = [0.05387699, -0.17501158]
+sib[0][8][0] = [0.11001998]
+sib[0][8][1] = [1.4472277E-11]
+sib[0][8][2] = [0.0032793367]
+sib[0][8][3] = [0.0036714405]
+sib[0][8][4] = [0.0]
+sib[0][8][5] = [-0.00261556]
+sib[0][8][6] = [-0.08946653]
+sib[0][8][7] = [0.0]
+sib[0][8][8] = [0.11001998]
+sib[0][9][0] = [0.012241538, -0.18679896]
+sib[0][9][1] = [0.0, 3.6234892E-4]
+sib[0][9][2] = [0.002879443, -0.00530215]
+sib[0][9][3] = [0.0036714405, -0.01240495]
+sib[0][9][4] = [0.0, -0.0077901836]
+sib[0][9][5] = [-0.00261556, -0.018505193]
+sib[0][9][6] = [-0.08946653, -0.014085354]
+sib[0][9][7] = [-0.0014011511, -0.027908202]
+sib[0][9][8] = [0.0, 9.841713E-4]
+sib[0][9][9] = [0.012241538, -0.18679896]
+sib[0][10][0] = [0.07278153]
+sib[0][10][1] = [4.5836373E-11]
+sib[0][10][2] = [0.004280594]
+sib[0][10][3] = [0.0036714405]
+sib[0][10][4] = [0.0]
+sib[0][10][5] = [-0.00261556]
+sib[0][10][6] = [-0.08946653]
+sib[0][10][7] = [0.0020818603]
+sib[0][10][8] = [7.797135E-11]
+sib[0][10][9] = [-0.0012656527]
+sib[0][10][10] = [0.07278153]
+sib[0][11][0] = [0.09697626, -0.17547522]
+sib[0][11][1] = [-2.0503228E-10, 3.6234892E-4]
+sib[0][11][2] = [0.002879443, 0.03612773]
+sib[0][11][3] = [0.0036714405, 0.013015134]
+sib[0][11][4] = [0.0, 0.017629903]
+sib[0][11][5] = [-0.00261556, -0.00237903]
+sib[0][11][6] = [-0.08946653, -0.019980194]
+sib[0][11][7] = [-0.0014011511, 5.599223E-4]
+sib[0][11][8] = [-0.0028200145, 0.008869357]
+sib[0][11][9] = [0.0, -0.002049474]
+sib[0][11][10] = [-0.0022987006, -0.03887186]
+sib[0][11][11] = [0.09697626, -0.17547522]
+sib[0][12][0] = [0.07289503, -0.15863656]
+sib[0][12][1] = [9.148505E-12, -0.015169687]
+sib[0][12][2] = [0.002879443, -0.0036189742]
+sib[0][12][3] = [0.0036714405, -0.0075441077]
+sib[0][12][4] = [0.0, -0.002929342]
+sib[0][12][5] = [-0.00261556, -0.022938276]
+sib[0][12][6] = [-0.08667535, -0.014085353]
+sib[0][12][7] = [-0.0014011511, -0.029324945]
+sib[0][12][8] = [9.148505E-12, 9.841713E-4]
+sib[0][12][9] = [0.0, -0.027787007]
+sib[0][12][10] = [0.0021417032, -0.03531133]
+sib[0][12][11] = [0.002296214, -0.026198987]
+sib[0][12][12] = [0.07289503, -0.15863656]
+sib[0][13][0] = [0.022648372, -0.15350725]
+sib[0][13][1] = [0.0, 3.6234892E-4]
+sib[0][13][2] = [0.002879443, -0.026968949]
+sib[0][13][3] = [-0.0014464923, -0.034926094]
+sib[0][13][4] = [0.0, -0.03031133]
+sib[0][13][5] = [-0.00261556, -0.04102634]
+sib[0][13][6] = [-0.08667535, -0.016529191]
+sib[0][13][7] = [-0.0014011511, -0.043380998]
+sib[0][13][8] = [0.0, 9.841713E-4]
+sib[0][13][9] = [0.0, -0.043879043]
+sib[0][13][10] = [0.0021417032, -0.0357359]
+sib[0][13][11] = [0.002296214, -0.035447378]
+sib[0][13][12] = [0.0015939093, -0.057777908]
+sib[0][13][13] = [0.022648372, -0.15350725]
+sib[0][14][0] = [0.31167406, 0.15251747, 0.018790457, 0.012185015]
+sib[0][14][1] = [-0.0030729363, -1.1884883E-10, 9.4561983E-4, 0.0039847502]
+sib[0][14][2] = [0.005333848, -0.004690854, -0.0023448789, -0.013482017]
+sib[0][14][3] = [0.004724694, -0.0049285507, 0.0, -7.5240387E-4]
+sib[0][14][4] = [0.0010532537, -0.0049285507, 8.7857735E-4, 0.013280388]
+sib[0][14][5] = [-0.0015623064, -0.0049285507, 6.6842075E-4, 0.011406964]
+sib[0][14][6] = [-0.08946653, -0.02312115, 7.354752E-12, -2.2225347E-12]
+sib[0][14][7] = [-2.5238388E-4, -0.005386516, 0.0039864522, 0.002022608]
+sib[0][14][8] = [-0.0030729363, -0.0064442162, -0.0020600068, 0.003577187]
+sib[0][14][9] = [-7.0605893E-6, -0.0063338643, -0.0023448789, -0.012578556]
+sib[0][14][10] = [1.4686887E-11, 0.0043251663, 3.665739E-4, 0.0026315032]
+sib[0][14][11] = [0.013265651, -0.0038110844, 0.0, -0.009902528]
+sib[0][14][12] = [0.0015868493, -0.006571561, 0.0, -0.008799822]
+sib[0][14][13] = [-7.0605893E-6, -0.0060651805, 0.0, 0.0010815861]
+sib[0][14][14] = [0.31167406, 0.15251747, 0.018790457, 0.012185015]
+sib[1][0][0] = [-0.14506936]
+sib[1][0][1] = [-0.14506936]
+sib[1][2][1] = [0.8223301, 0.15931079, 0.35679403, 0.096370235, 0.16478507, 0.05396487]
+sib[1][2][2] = [0.8223301, 0.15931079, 0.35679403, 0.096370235, 0.16478507, 0.05396487]
+sib[1][3][1] = [0.7328315, 0.071922556, 0.3353346, -0.084273316, 0.18448874, 0.063882634]
+sib[1][3][2] = [-0.17718247, -0.048298623, -0.08761847, -0.08399954, -0.028174773, -0.016735515]
+sib[1][3][3] = [0.7328315, 0.071922556, 0.3353346, -0.084273316, 0.18448874, 0.063882634]
+sib[1][4][1] = [0.74362266, 0.074151605, 0.33832115, -0.08473284, 0.18674353, 0.061846726]
+sib[1][4][2] = [-0.18171725, -0.042668555, -0.090021595, -0.11272397, -0.03076177, -0.0012978215]
+sib[1][4][3] = [-0.1923438, -0.04521106, -0.065176874, -0.017205017, -0.07633624, -0.009437358]
+sib[1][4][4] = [0.74362266, 0.074151605, 0.33832115, -0.08473284, 0.18674353, 0.061846726]
+sib[1][5][1] = [0.7273429, 0.06951806, 0.37647092, -0.11422935, 0.11937228, 0.02388254]
+sib[1][5][2] = [-0.17346698, -0.03045045, -0.09098843, -0.0948249, -0.015072234, -0.019885667]
+sib[1][5][3] = [-0.1865165, -0.025386048, -0.06763257, -0.027074134, -0.06819977, -0.016582124]
+sib[1][5][4] = [-0.18198171, -0.036187537, -0.056837518, 0.0044096145, -0.06264385, -0.027142761]
+sib[1][5][5] = [0.7273429, 0.06951806, 0.37647092, -0.11422935, 0.11937228, 0.02388254]
+sib[1][6][1] = [0.13799278]
+sib[1][6][2] = [0.026691256]
+sib[1][6][3] = [0.007929184]
+sib[1][6][4] = [0.01669214]
+sib[1][6][5] = [0.012944166]
+sib[1][6][6] = [0.13799278]
+sib[1][7][1] = [0.70997274, 0.09760554, 0.48473144, 0.03187166, 0.1530679, 0.03221134]
+sib[1][7][2] = [-0.18709238, -0.048056874, -0.09347163, -0.062301688, -0.031794682, -0.0064522717]
+sib[1][7][3] = [-0.17118181, -0.054923926, -0.06860041, 0.059358608, -0.015151251, -0.009542598]
+sib[1][7][4] = [-0.17118181, -0.054923926, -0.059294213, 0.06307418, -0.010485761, -0.017954078]
+sib[1][7][5] = [-0.1714512, -0.05614167, -0.066502064, 0.07803505, -0.031801704, -0.028669087]
+sib[1][7][6] = [-0.0066187354, 0.0, 0.0, 0.04309825, -0.009898367, -0.009960687]
+sib[1][7][7] = [0.70997274, 0.09760554, 0.48473144, 0.03187166, 0.1530679, 0.03221134]
+sib[1][8][1] = [0.14466164]
+sib[1][8][2] = [-0.0014932856]
+sib[1][8][3] = [-0.0049484395]
+sib[1][8][4] = [-0.010908695]
+sib[1][8][5] = [-0.047897436]
+sib[1][8][6] = [-0.07205967]
+sib[1][8][7] = [-0.03267007]
+sib[1][8][8] = [0.14466164]
+sib[1][9][1] = [0.7941633, 0.14351022, 0.40630633, 0.101728044, 0.22039162, 0.025832525]
+sib[1][9][2] = [-0.1469763, -0.06074291, -0.09695857, -0.12046871, 0.024239575, -0.019857401]
+sib[1][9][3] = [-0.16942596, -0.052692678, -0.068992, -0.003081635, 0.002428099, -0.00908388]
+sib[1][9][4] = [-0.16942596, -0.052692678, -0.0596858, 6.339379E-4, 0.007093591, -0.01749536]
+sib[1][9][5] = [-0.16969535, -0.05391042, -0.06808764, 0.012101205, -4.7506066E-4, -0.02821037]
+sib[1][9][6] = [-0.00875906, 0.0, -9.955837E-4, 0.028349187, 0.0074102087, -0.015855527]
+sib[1][9][7] = [-0.15999229, -0.05038492, -0.079725966, -0.124766536, -0.031653732, -0.040038418]
+sib[1][9][8] = [-0.021489913, -0.0033509294, 0.0, 0.0039077005, -7.73577E-4, 9.841713E-4]
+sib[1][9][9] = [0.7941633, 0.14351022, 0.40630633, 0.101728044, 0.22039162, 0.025832525]
+sib[1][10][1] = [0.40872738, 0.73735535, 0.11837222, 0.14335588, 0.06470696]
+sib[1][10][2] = [-0.059155826, -0.08133857, -5.3938874E-4, 0.021138674, -0.051489163]
+sib[1][10][3] = [-0.0576928, -0.08749205, 0.04564517, -0.06835486, -0.02692426]
+sib[1][10][4] = [-0.0483866, -0.08749205, 0.04419522, -0.055656735, -0.03858459]
+sib[1][10][5] = [-0.052616727, -0.08993608, 0.04401492, -0.052504648, -0.03858459]
+sib[1][10][6] = [-0.0025701378, 0.0070631346, 0.013442162, -0.01039378, -0.0028068458]
+sib[1][10][7] = [-0.057052415, -0.07474424, -5.647867E-4, -0.058527604, -0.05342383]
+sib[1][10][8] = [-0.021949403, -0.020818597, 0.015592818, -0.0013685953, -0.005767775]
+sib[1][10][9] = [-0.047719967, -0.0930448, 0.040142223, -0.019073889, -0.030611292]
+sib[1][10][10] = [0.40872738, 0.73735535, 0.11837222, 0.14335588, 0.06470696]
+sib[1][11][1] = [0.79462796, 0.12613454, 0.3748815, 0.09253451, 0.22781485, 0.065622464]
+sib[1][11][2] = [-0.21084513, -0.06989765, -0.09474037, -0.126323, -0.02342927, 0.02157248]
+sib[1][11][3] = [-0.20293489, -0.06394496, -0.06758666, -0.01732459, -0.0059071695, 0.016336206]
+sib[1][11][4] = [-0.20293489, -0.06394496, -0.058280464, -0.013609019, -0.0035066297, 0.007924724]
+sib[1][11][5] = [-0.20130599, -0.0651627, -0.06548831, 0.0054604346, -0.005950439, -0.012084208]
+sib[1][11][6] = [-0.00875906, 0.0, 0.0, 0.03143002, -0.017132381, -0.021750366]
+sib[1][11][7] = [-0.18423724, -0.05743317, -0.07596734, -0.11873575, -0.01840756, -0.01157029]
+sib[1][11][8] = [-0.029544512, -0.00955603, 0.0, 0.06702636, 0.033138227, 0.0050735637]
+sib[1][11][9] = [-0.19347359, -0.05170956, -0.075242564, -0.056771394, -0.027734496, -0.008300344]
+sib[1][11][10] = [-0.09004499, 0.052916653, -0.013810598, -0.021381833, 0.014406228, -0.03887186]
+sib[1][11][11] = [0.79462796, 0.12613454, 0.3748815, 0.09253451, 0.22781485, 0.065622464]
+sib[1][12][1] = [0.784679, 0.11406528, 0.4023752, 0.077483386, 0.25407618, 0.070968404]
+sib[1][12][2] = [-0.16144344, -0.058469675, -0.09971817, -0.13266534, -0.012766752, -0.018174225]
+sib[1][12][3] = [-0.19172621, -0.05747579, -0.07180204, -0.005855644, -0.0067007844, -0.0042230384]
+sib[1][12][4] = [-0.19584893, -0.05747579, -0.062495854, -0.002140074, -0.0020352905, -0.012634519]
+sib[1][12][5] = [-0.19611831, -0.061888117, -0.0697037, 0.011901378, -0.001139537, -0.03264345]
+sib[1][12][6] = [-0.01732036, 0.0, 0.0, 0.024115551, -0.023440033, -0.015855527]
+sib[1][12][7] = [-0.17722084, -0.050481066, -0.08330333, -0.124951646, -0.051222946, -0.041455157]
+sib[1][12][8] = [-0.060714513, -0.00955603, -0.005931367, 0.09389506, 0.004548329, -0.0028116223]
+sib[1][12][9] = [-0.1857457, -0.03476999, -0.08091978, -0.06731631, -0.048553277, -0.03403788]
+sib[1][12][10] = [-0.08174297, 0.03556207, -0.010301546, -0.011050482, -0.06616042, -0.03531133]
+sib[1][12][11] = [-0.16741519, -0.041634258, -0.09653928, -0.11845435, -0.07660295, -0.04021944]
+sib[1][12][12] = [0.784679, 0.11406528, 0.4023752, 0.077483386, 0.25407618, 0.070968404]
+sib[1][13][1] = [0.8033916, 0.14681372, 0.4034932, 0.04889268, 0.23028061, 0.072416954]
+sib[1][13][2] = [-0.15708967, -0.05103388, -0.09755864, -0.11520136, 0.010333281, -0.041524198]
+sib[1][13][3] = [-0.17943211, -0.04492206, -0.069642514, 0.0077984845, 0.019408828, -0.031605024]
+sib[1][13][4] = [-0.17943211, -0.050039995, -0.06250434, 0.011514056, 0.024074322, -0.040016502]
+sib[1][13][5] = [-0.17942515, -0.0556522, -0.06754417, 0.024334319, 0.0020352225, -0.050731517]
+sib[1][13][6] = [-0.023741333, 0.0, 0.0, 0.02395995, -0.021758288, -0.018299362]
+sib[1][13][7] = [-0.17054209, -0.04390209, -0.081143804, -0.108708866, -0.043814924, -0.055511214]
+sib[1][13][8] = [-0.06968277, -0.007558679, -0.005931367, 0.08285634, -0.020528413, -0.0028116223]
+sib[1][13][9] = [-0.16852425, -0.027382981, -0.07876025, -0.052584186, -0.08898652, -0.050129913]
+sib[1][13][10] = [-0.07044368, 0.04071981, -0.008472457, -0.009528046, -0.06525004, -0.0357359]
+sib[1][13][11] = [-0.16452362, -0.02551473, -0.09586862, -0.1323378, -0.07599212, -0.049467836]
+sib[1][13][12] = [-0.122956105, -0.022348002, -0.073540114, -0.08561526, -0.10653714, -0.069373325]
+sib[1][13][13] = [0.8033916, 0.14681372, 0.4034932, 0.04889268, 0.23028061, 0.072416954]
+sib[1][14][1] = [-0.1488827, 0.73145366, -0.038691726]
+sib[1][14][2] = [-0.057306655, -0.06834161, -0.013022164]
+sib[1][14][3] = [0.07321883, -0.06438151, -0.010292105]
+sib[1][14][4] = [0.057945795, -0.06438151, -0.0088003315]
+sib[1][14][5] = [0.027987286, -0.07644719, -0.008058093]
+sib[1][14][6] = [0.26787516, 0.009855585, -8.11261E-4]
+sib[1][14][7] = [-0.05378393, -0.10175465, -0.008854454]
+sib[1][14][8] = [-0.010961269, 0.0331846, -0.0051823417]
+sib[1][14][9] = [-0.08712432, -0.08935531, -0.014929943]
+sib[1][14][10] = [-0.07270897, -0.04884997, -0.0023863493]
+sib[1][14][11] = [-0.045111306, -0.0765708, -0.01041195]
+sib[1][14][12] = [-0.03154144, -0.070103265, -0.0088003315]
+sib[1][14][13] = [-0.058957256, -0.07688024, -0.0064464738]
+sib[1][14][14] = [-0.1488827, 0.73145366, -0.038691726]
+sib[2][0][0] = [-0.07002016]
+sib[2][0][1] = [-0.004894569]
+sib[2][0][2] = [-0.07002016]
+sib[2][1][1] = [-0.023300149, -0.07763119, -0.06833927, -0.15426117, -0.08973858, -0.2105893]
+sib[2][1][2] = [-0.023300149, -0.07763119, -0.06833927, -0.15426117, -0.08973858, -0.2105893]
+sib[2][3][2] = [0.0030667265, 0.055973124, 0.16185215, 0.102194816, -0.15181133, -0.069784425, -0.09858685, -0.18661639, -0.033880048, -0.050956592, -0.11497596]
+sib[2][3][3] = [0.0030667265, 0.055973124, 0.16185215, 0.102194816, -0.15181133, -0.069784425, -0.09858685, -0.18661639, -0.033880048, -0.050956592, -0.11497596]
+sib[2][4][2] = [0.017022148, 0.006996327, 0.16085127, 0.10461412, -0.19781941, -0.099051535, -0.1054311, -0.22328228, -0.033880048, -0.058684338, -0.12042834]
+sib[2][4][3] = [-0.045596465, -0.056390677, -0.050062075, -0.097261526, -0.0134103205, -0.02489933, -0.017836481, 0.012028221, -0.0024191486, -0.010112673, -0.006688064]
+sib[2][4][4] = [0.017022148, 0.006996327, 0.16085127, 0.10461412, -0.19781941, -0.099051535, -0.1054311, -0.22328228, -0.033880048, -0.058684338, -0.12042834]
+sib[2][5][2] = [-0.0038128698, 0.0023627656, 0.09348002, 0.088334285, -0.22731593, -0.060901817, -0.09670297, -0.22777005, -0.033880048, -0.058684338, -0.15839253]
+sib[2][5][3] = [-0.00989531, -0.025851687, 0.007153724, -0.10584166, -0.027832221, -0.025866164, -0.011156052, 0.00627356, -0.0024191486, -0.014139971, -0.011174329]
+sib[2][5][4] = [-0.06930705, -0.057231218, -0.09708246, -0.0747798, 0.005082002, -0.024477692, -0.006208457, -0.007032466, -0.0015446771, -0.010112673, -0.019423649]
+sib[2][5][5] = [-0.0038128698, 0.0023627656, 0.09348002, 0.088334285, -0.22731593, -0.060901817, -0.09670297, -0.22777005, -0.033880048, -0.058684338, -0.15839253]
+sib[2][6][2] = [0.0856092, 0.023162715]
+sib[2][6][3] = [0.074589275, -0.012859605]
+sib[2][6][4] = [0.023362318, -0.012741394]
+sib[2][6][5] = [-0.003970602, -0.020858906]
+sib[2][6][6] = [0.0856092, 0.023162715]
+sib[2][7][2] = [-0.02798745, 0.030450236, 0.12717563, 0.07096413, -0.08121491, 0.047358803, -0.04972786, -0.12838377, -0.030403443, -0.04421254, -0.15006372]
+sib[2][7][3] = [-0.025541667, -0.05538957, 0.0556802, -0.08896982, 0.052671146, -0.026833996, -0.0056346385, 0.054540448, -0.005096597, -0.008215474, -0.0067933043]
+sib[2][7][4] = [-0.05304926, -0.070425056, -0.020544259, -0.07220218, 0.061470177, -0.025445525, -0.0056346385, 0.03468742, -0.0042221253, -0.009944886, -0.010234964]
+sib[2][7][5] = [-0.06928063, -0.07644652, -0.069272436, -0.0689533, 0.077528775, -0.025445525, -0.008135341, 0.030741397, -0.0042221253, -0.01183651, -0.020949975]
+sib[2][7][6] = [-0.0025985183, 0.001627638, -0.052818563, -0.008561299, 0.04309825, -0.004009964, 0.0026703556, -0.02746283, -1.643592E-11, -9.703423E-4, -0.008190515]
+sib[2][7][7] = [-0.02798745, 0.030450236, 0.12717563, 0.07096413, -0.08121491, 0.047358803, -0.04972786, -0.12838377, -0.030403443, -0.04421254, -0.15006372]
+sib[2][8][2] = [0.076986805, -0.016464042, 0.08880119, 0.03479346, -0.19845805, -0.12528196]
+sib[2][8][3] = [0.051009394, -0.009787562, 0.047646087, -0.003885689, 0.0010148, -0.009085627]
+sib[2][8][4] = [0.020872638, -0.021129338, 0.048127007, -0.0024972174, 0.002350955, -0.0037509361]
+sib[2][8][5] = [-0.043528356, -0.023956222, 0.047775924, -0.010181325, -0.009281956, -0.009085627]
+sib[2][8][6] = [-0.12178734, 4.2700802E-4, -0.059341986, -0.022653384, -0.0117155025, -0.009019228]
+sib[2][8][7] = [-0.0075305547, -0.023150373, 0.09874402, -0.004103143, -0.006852805, -0.0077615865]
+sib[2][8][8] = [0.076986805, -0.016464042, 0.08880119, 0.03479346, -0.19845805, -0.12528196]
+sib[2][9][2] = [-0.020520642, 0.076354906, 0.1944994, 0.15515459, -0.011358529, -0.031066343, -0.09887106, -0.11063344, -0.032141745, -0.051495682, -0.15644252]
+sib[2][9][3] = [-0.027242858, -0.053158324, 0.07393179, -0.10852734, -0.0051501845, -0.02722559, -0.033271253, 0.0025097397, -0.009558577, -0.0056730197, -0.0063345856]
+sib[2][9][4] = [-0.05229169, -0.0681938, -0.0029649083, -0.07044635, -9.7006967E-4, -0.025837118, -0.034270104, -0.018459626, -0.008684105, -0.0056730197, -0.009776246]
+sib[2][9][5] = [-0.06603368, -0.07421527, -0.037945807, -0.06719745, 0.011594927, -0.027031107, -0.036770806, -0.017832227, -0.008684105, -0.0056730197, -0.020491257]
+sib[2][9][6] = [-0.009841235, 4.2700802E-4, -0.03250438, -0.017214263, 0.032508813, -0.009003615, 0.004312259, -0.023045013, 0.009281213, -0.0061465385, -0.014085354]
+sib[2][9][7] = [0.061626144, -0.07034968, -0.03195047, -0.09455538, -0.120078005, -0.03296606, -0.049614057, -0.026877865, -0.004828308, -0.013543218, -0.028570222]
+sib[2][9][8] = [0.11295945, -0.022145407, -0.0019896077, 0.04971677, -0.01857473, -3.880954E-4, 0.013332176, -0.03681626, -0.0020619298, -0.00273389, 0.003756082]
+sib[2][9][9] = [-0.020520642, 0.076354906, 0.1944994, 0.15515459, -0.011358529, -0.031066343, -0.09887106, -0.11063344, -0.032141745, -0.051495682, -0.15644252]
+sib[2][10][2] = [0.13180268, 0.11493771, -0.0047045387, 0.15951079, -0.15873712, -0.11043491, -0.0255826]
+sib[2][10][3] = [0.008182732, -0.0071631013, -0.0205923, -0.015757592, -0.014230743, -0.033518903, 0.03614378]
+sib[2][10][4] = [-0.051778182, -0.018504877, -0.020471526, 0.0016789434, -0.011928141, -0.030058809, 0.021001622]
+sib[2][10][5] = [-0.07603834, -0.02133176, -0.017493805, 0.0027531967, -0.01069214, -0.030058809, 0.015227638]
+sib[2][10][6] = [-0.04895925, -0.0037904466, -0.0105781695, -0.0013920688, 8.9861406E-4, -0.0010366742, 0.0064062]
+sib[2][10][7] = [-0.044887293, -0.05752436, -0.016226107, -0.01911595, -0.018176608, -0.041148964, 0.032745954]
+sib[2][10][8] = [0.051647864, -0.04317956, -0.022725593, 0.05492984, 0.005214537, 7.999297E-4, 0.049496748]
+sib[2][10][9] = [0.080191016, 0.0143312, -0.0070167757, 0.00965486, -0.010810163, -0.024215773, 0.047102004]
+sib[2][10][10] = [0.13180268, 0.11493771, -0.0047045387, 0.15951079, -0.15873712, -0.11043491, -0.0255826]
+sib[2][11][2] = [0.010808839, 0.058979243, 0.20192263, 0.15561938, -0.020552063, -0.062491164, -0.10430702, -0.068041086, -0.030403443, -0.05217783, -0.11665259]
+sib[2][11][3] = [2.20889E-4, -0.0644106, 0.07165513, -0.12014822, -0.015950715, -0.025820244, -0.040056784, 0.05870781, -0.0059317155, -0.008525055, 0.019085499]
+sib[2][11][4] = [-0.029053152, -0.079446085, -0.013565132, -0.10395525, -0.01521303, -0.024431773, -0.040056784, 0.040202104, -0.0069625564, -0.008525055, 0.015643839]
+sib[2][11][5] = [-0.057436574, -0.08546755, -0.043421194, -0.09880806, 0.0049541546, -0.024431773, -0.04255749, 0.026142383, -0.0069625564, -0.008525055, -0.004365093]
+sib[2][11][6] = [-0.0074269967, 4.2700802E-4, -0.05704697, -0.017214263, 0.035589654, -0.008008031, -0.008562432, -0.027901186, -1.643592E-11, 0.005974566, -0.019980194]
+sib[2][11][7] = [0.009692701, -0.07739792, -0.018704299, -0.11880031, -0.11404723, -0.02920743, -0.05252111, -0.050313536, -0.006090795, -0.016395256, -1.0209717E-4]
+sib[2][11][8] = [0.14200197, -0.033050418, 0.09287813, 0.064871795, 0.042836916, -7.761908E-4, 0.0034649817, -0.043622717, -0.0020619298, 9.1371406E-4, 0.011641268]
+sib[2][11][9] = [0.07109661, -0.050286762, 0.061908476, -0.06479681, -0.059158638, -0.026408441, -0.028151553, 0.0076437136, -0.0061847903, -0.011734949, -0.0027114945]
+sib[2][11][10] = [0.08717857, 0.027359774, -0.08028591, -0.0888139, -0.03766033, -0.014323417, -0.029919054, -0.005170907, -0.0014785305, 2.4921317E-11, -0.03767125]
+sib[2][11][11] = [0.010808839, 0.058979243, 0.20192263, 0.15561938, -0.020552063, -0.062491164, -0.10430702, -0.068041086, -0.030403443, -0.05217783, -0.11665259]
+sib[2][12][2] = [-0.008806081, 0.04691, 0.2281839, 0.1456705, -0.035603188, -0.034997478, -0.12742673, -0.104196735, -0.027057149, -0.04807265, -0.11130665]
+sib[2][12][3] = [0.041237235, -0.057941437, 0.069496565, -0.108939536, -0.005303272, -0.030035634, -0.041630562, 0.026382752, -0.005096597, -0.011700289, 0.0011847559]
+sib[2][12][4] = [0.010378617, -0.07297691, -0.012093794, -0.0968693, -0.0037440853, -0.028647162, -0.041630562, 0.009728894, -0.006127438, -0.011700289, -0.004915405]
+sib[2][12][5] = [-0.03239, -0.082192965, -0.038610287, -0.0936204, 0.0113951005, -0.028647162, -0.040566582, 0.004212398, -0.006127438, -0.011700289, -0.02492434]
+sib[2][12][6] = [-0.0074269967, 4.2700802E-4, -0.06335462, -0.025775561, 0.02827518, -0.008008031, -9.899097E-4, -0.027693516, 0.010466568, 0.0012967229, -0.014085353]
+sib[2][12][7] = [0.05567226, -0.07044582, -0.05151968, -0.11178391, -0.12026312, -0.036543418, -0.06484246, -0.07705597, -0.0070241163, -0.022745721, -0.029986966]
+sib[2][12][8] = [0.109401174, -0.033050418, 0.06428825, 0.0337018, 0.06970561, -0.006707558, 0.037565842, 0.016676368, -0.0020619298, 9.1371406E-4, 0.003756082]
+sib[2][12][9] = [0.11584553, -0.033347193, 0.04108969, -0.057068896, -0.06970354, -0.032085657, -0.03658042, -0.034205142, -0.0053496724, -0.014910184, -0.028449029]
+sib[2][12][10] = [0.050475307, 0.016030503, -0.17972536, -0.07408078, -0.027328981, -0.010814365, -0.036067106, -0.014868278, -0.0014785305, 2.4921317E-11, -0.03556287]
+sib[2][12][11] = [0.1235604, -0.055605866, 0.038780686, -0.043198757, -0.12062013, -0.05599679, -0.06447694, -0.060442697, -0.009797992, -0.013322568, -0.026861008]
+sib[2][12][12] = [-0.008806081, 0.04691, 0.2281839, 0.1456705, -0.035603188, -0.034997478, -0.12742673, -0.104196735, -0.027057149, -0.04807265, -0.11130665]
+sib[2][13][2] = [0.014043956, 0.07965843, 0.20438835, 0.16438305, -0.06419388, -0.03387947, -0.11047739, -0.112318926, -0.035618346, -0.06265212, -0.10985812]
+sib[2][13][3] = [0.017949808, -0.045387708, 0.09065651, -0.10325236, 0.0121607, -0.027876105, -0.03573527, 0.045849197, -0.005096597, -0.0132879075, -0.02216522]
+sib[2][13][4] = [-0.011906292, -0.06554112, 0.01401582, -0.08045248, 0.009910051, -0.02865566, -0.036601953, 0.028000686, -0.0042221253, -0.0132879075, -0.03229739]
+sib[2][13][5] = [-0.038666643, -0.07595705, -0.03543552, -0.07692724, 0.023828043, -0.026487634, -0.031106602, 0.021909405, -0.0042221253, -0.0132879075, -0.043012403]
+sib[2][13][6] = [-0.0025985183, 4.2700802E-4, -0.061672874, -0.032196537, 0.028119579, -0.008008031, -0.0011130623, -0.03201366, -1.643592E-11, 0.0, -0.016529191]
+sib[2][13][7] = [0.049662627, -0.06386685, -0.04411166, -0.10510516, -0.10402035, -0.03438389, -0.055382475, -0.058717933, -0.0014534729, -0.02433334, -0.04404302]
+sib[2][13][8] = [0.092199616, -0.031053064, 0.039211504, 0.02473355, 0.0586669, -0.006707558, 0.037803967, 0.006024688, -0.0020619298, 8.5615006E-4, 0.003756082]
+sib[2][13][9] = [0.09659037, -0.025960183, 6.564618E-4, -0.039847475, -0.054971434, -0.029926129, -0.023374705, -0.0174373, -0.0053496724, -0.016497802, -0.044541065]
+sib[2][13][10] = [0.031881973, 0.021188242, -0.17881499, -0.06278148, -0.025806544, -0.008985275, -0.048415747, -0.020805689, 0.0, 2.4921317E-11, -0.03598744]
+sib[2][13][11] = [0.14344193, -0.03394379, 0.06377165, -0.048529483, -0.13677996, -0.053837266, -0.06477384, -0.056066412, -0.009797992, -0.016497802, -0.0361094]
+sib[2][13][12] = [0.06824247, -0.032865155, -0.05144591, -0.009715655, -0.08558081, -0.03452714, -0.038933642, -0.08403366, -0.0071181115, -0.022780383, -0.05843993]
+sib[2][13][13] = [0.014043956, 0.07965843, 0.20438835, 0.16438305, -0.06419388, -0.03387947, -0.11047739, -0.112318926, -0.035618346, -0.06265212, -0.10985812]
+sib[2][14][2] = [-0.29136357, 0.21550456, 0.19781417, 0.14476764, -0.13681059, -0.058578, 0.1117025, 0.1984607]
+sib[2][14][3] = [0.021534488, 0.045160346, -0.0045002564, -0.031228358, 0.022753827, -0.006190028, -0.023327127, -0.0030455515]
+sib[2][14][4] = [0.05371026, -0.007045494, 0.015167823, -0.042570144, 0.018961541, -0.0053155567, -0.03846929, -0.0016570799]
+sib[2][14][5] = [0.024433777, -0.027317604, 0.0066204155, -0.04539703, 0.018408414, -0.0061849365, -0.039378367, -0.0016570799]
+sib[2][14][6] = [0.30589902, -0.048999812, 0.0014003827, 4.2700802E-4, -0.010726305, 0.0011060901, 0.007897306, -0.008008031]
+sib[2][14][7] = [-0.05841264, -0.007967059, -0.055748023, -0.048123967, 0.02175959, -0.00801485, 0.0010496601, -0.0016570799]
+sib[2][14][8] = [-0.050100226, 0.05648551, 0.10893307, 0.026581593, 0.004339601, -0.0045064306, 0.049496748, -7.761908E-4]
+sib[2][14][9] = [-0.057856422, 0.07628463, 0.019891167, -0.021742167, 0.010795908, -0.014184332, 0.02426618, 0.0022314647]
+sib[2][14][10] = [-0.012750375, -0.13579145, -0.053836614, -0.0510779, 0.01005627, -0.0023863493, 0.023752104, -0.011390338]
+sib[2][14][11] = [-0.0064315833, 0.13281591, 0.01999303, -0.033362556, -0.0044995677, -0.01349137, 0.020228367, -0.007570683]
+sib[2][14][12] = [0.029471051, 0.070170105, 0.0154845975, -0.033804964, 0.011769939, -0.006443104, 0.01857647, -0.005878956]
+sib[2][14][13] = [-0.0030388515, 0.05772932, 0.018012315, -0.03560932, 0.0062698415, -0.005700865, 0.02500667, -0.0059585073]
+sib[2][14][14] = [-0.29136357, 0.21550456, 0.19781417, 0.14476764, -0.13681059, -0.058578, 0.1117025, 0.1984607]
+sib[3][0][0] = [-0.05789368]
+sib[3][0][1] = [0.010715714]
+sib[3][0][2] = [-0.007978581]
+sib[3][0][3] = [-0.05789368]
+sib[3][1][1] = [-0.087511264, -0.12744133, -0.104752496, -0.17722015, -0.092124306, -0.21522388]
+sib[3][1][2] = [0.03430704, -0.0010550766, -0.015493946, 0.002736577, -0.004425691, -0.0017134671]
+sib[3][1][3] = [-0.087511264, -0.12744133, -0.104752496, -0.17722015, -0.092124306, -0.21522388]
+sib[3][2][2] = [-0.06426263, -0.069901936, -0.10168637, -0.09750523, -0.1218078, -0.090425715, -0.08923541, -0.077614814, -0.090978056, -0.121757455, -0.08038013]
+sib[3][2][3] = [-0.06426263, -0.069901936, -0.10168637, -0.09750523, -0.1218078, -0.090425715, -0.08923541, -0.077614814, -0.090978056, -0.121757455, -0.08038013]
+sib[3][4][3] = [0.012380985, -0.04081459, 0.0821533, -0.07474714, -0.20395957, -0.16560583, -0.07983476, -0.19544126, -0.027634017, -0.057838816, -0.14035416]
+sib[3][4][4] = [0.012380985, -0.04081459, 0.0821533, -0.07474714, -0.20395957, -0.16560583, -0.07983476, -0.19544126, -0.027634017, -0.057838816, -0.14035416]
+sib[3][5][3] = [-0.007085464, -0.09665399, 0.011526372, -0.099398784, -0.2790046, -0.15970978, -0.082440555, -0.22966766, -0.027634017, -0.06556656, -0.18173482]
+sib[3][5][4] = [-0.05487947, -0.045098934, 0.052111655, -0.10031113, 0.015462773, -0.02529343, -0.0042411042, 0.005197253, -0.0015446771, -0.006902779, -0.012733134]
+sib[3][5][5] = [-0.007085464, -0.09665399, 0.011526372, -0.099398784, -0.2790046, -0.15970978, -0.082440555, -0.22966766, -0.027634017, -0.06556656, -0.18173482]
+sib[3][6][3] = [0.0036555498, -0.036290288]
+sib[3][6][4] = [0.14733498, -0.0077255554]
+sib[3][6][5] = [0.109134026, -0.019898158]
+sib[3][6][6] = [0.0036555498, -0.036290288]
+sib[3][7][3] = [-0.031260066, -0.06856652, 0.04522199, -0.11676894, -0.13290358, -0.051449183, -0.03546544, -0.13028136, -0.024157416, -0.051094763, -0.17340602]
+sib[3][7][4] = [-0.04330022, -0.058292788, 0.12432846, -0.08908352, 0.06723203, -0.026261263, -0.003667286, 0.05421242, -0.0042221253, -0.006662595, -0.0035444521]
+sib[3][7][5] = [-0.08124242, -0.07744131, 0.043832168, -0.09079691, 0.087276354, -0.026261263, -0.0061679883, 0.031382058, -0.0042221253, -0.008626616, -0.020949975]
+sib[3][7][6] = [-0.031865876, 0.0, -0.051752053, -0.008561299, 0.04309825, -0.004812273, 0.003292874, -0.021627404, 0.0, -9.703423E-4, -0.008190515]
+sib[3][7][7] = [-0.031260066, -0.06856652, 0.04522199, -0.11676894, -0.13290358, -0.051449183, -0.03546544, -0.13028136, -0.024157416, -0.051094763, -0.17340602]
+sib[3][8][3] = [-0.004966825, -0.11548082, -0.09893188, -0.064014524, -0.21564847, -0.14862426]
+sib[3][8][4] = [0.10903192, -0.012690772, 0.044209372, -0.0033129558, 0.0020286364, -0.0037509361]
+sib[3][8][5] = [0.06957626, -0.024951018, 0.025932293, -0.010997063, -0.007393649, -0.009085628]
+sib[3][8][6] = [-0.124904506, 0.0, -0.052829344, -0.021456657, -0.0117155025, -0.009019228]
+sib[3][8][7] = [0.023370812, -0.02231672, 0.112717025, -0.004918881, -0.0049644983, -0.006423532]
+sib[3][8][8] = [-0.004966825, -0.11548082, -0.09893188, -0.064014524, -0.21564847, -0.14862426]
+sib[3][9][3] = [-0.023793247, -0.022661865, 0.11254575, -0.032578483, -0.0630472, -0.12987432, -0.084608644, -0.11253104, -0.025895717, -0.058377907, -0.17978483]
+sib[3][9][4] = [-0.04500141, -0.056061525, 0.14258005, -0.10864104, 0.009410702, -0.026652856, -0.0313039, -0.0019144005, -0.008684105, -0.0024631263, -0.0030857343]
+sib[3][9][5] = [-0.07799548, -0.07521007, 0.07515881, -0.08904107, 0.02134251, -0.027846845, -0.034803454, -0.017191567, -0.008684105, -0.0024631263, -0.020491257]
+sib[3][9][6] = [-0.0391086, 0.0, -0.03562153, -0.010701624, 0.032508813, -0.0078068906, 0.0049347775, -0.018508233, 0.009281213, -0.0061465385, -0.014085354]
+sib[3][9][7] = [0.09251948, -0.06951603, -0.011008778, -0.07883953, -0.11552522, -0.033781793, -0.043712, -0.050451096, -0.0064717247, -0.010333326, -0.027232168]
+sib[3][9][8] = [0.106523976, -0.025107507, -0.027313342, 0.0643436, -0.020281743, -3.880954E-4, 0.013332176, -0.041317776, 0.0, -0.00273389, 0.003756082]
+sib[3][9][9] = [-0.023793247, -0.022661865, 0.11254575, -0.032578483, -0.0630472, -0.12987432, -0.084608644, -0.11253104, -0.025895717, -0.058377907, -0.17978483]
+sib[3][10][3] = [0.049849, 0.015920937, -0.103512526, -0.0282223, -0.15162304, -0.1337772, -0.028855206]
+sib[3][10][4] = [0.08486363, -0.010066313, -0.020019567, -0.015871307, -0.011928141, -0.033518903, 0.01838523]
+sib[3][10][5] = [0.037066273, -0.022326551, -0.018309543, -0.019090429, -0.01069214, -0.030058809, 0.003265826]
+sib[3][10][6] = [-0.052076407, -0.0042174547, -0.009381445, 0.0051205703, 1.1164299E-4, -0.0010366742, -0.022861157]
+sib[3][10][7] = [-0.0239456, -0.0566907, -0.017041847, -0.0034001134, -0.018176608, -0.03981091, 0.06363928]
+sib[3][10][8] = [0.009411858, -0.04614166, -0.022725593, 0.057259593, 0.0027610764, 7.999297E-4, 0.052491844]
+sib[3][10][9] = [0.1020553, 0.018468937, -0.015737467, -0.019766212, -0.015054941, -0.024877794, 0.09240703]
+sib[3][10][10] = [0.049849, 0.015920937, -0.103512526, -0.0282223, -0.15162304, -0.1337772, -0.028855206]
+sib[3][11][3] = [0.007536241, -0.040037517, 0.11996899, -0.032113697, -0.07224075, -0.16129914, -0.090044595, -0.06993868, -0.024157416, -0.059060056, -0.13999487]
+sib[3][11][4] = [-0.017537657, -0.06731382, 0.13803843, -0.12026193, -0.0013898304, -0.02524751, -0.03808943, 0.05428367, -0.0050572436, -0.0053151622, 0.022334352]
+sib[3][11][5] = [-0.06939837, -0.086462356, 0.06968344, -0.120651685, 0.014701741, -0.02524751, -0.040590137, 0.026783044, -0.0069625564, -0.0053151622, -0.0043650935]
+sib[3][11][6] = [-0.03669436, 0.0, -0.060164124, -0.010701624, 0.035589654, -0.006811307, -0.007939913, -0.023364406, 0.0, 0.005974566, -0.019980194]
+sib[3][11][7] = [0.04058604, -0.07656428, 0.0022373926, -0.10308445, -0.10949445, -0.030023169, -0.046619054, -0.073886774, -0.007734212, -0.013185361, 0.0012359582]
+sib[3][11][8] = [0.14499708, -0.036012515, 0.050642148, 0.067201555, 0.041129906, -7.761908E-4, 0.0034649817, -0.04812423, 0.0, 9.137141E-4, 0.011641268]
+sib[3][11][9] = [0.118235655, -0.046149027, 0.062057465, -0.10321512, -0.047871336, -0.035129134, -0.026184201, 0.008284374, -0.003369519, -0.0063851266, -0.0033735158]
+sib[3][11][10] = [0.10789909, 0.037529636, -9.849798E-4, -0.045202315, -0.030076612, -0.015593061, -0.019619161, -0.0038627228, -0.0014785305, -0.0019659526, -0.03767125]
+sib[3][11][11] = [0.007536241, -0.040037517, 0.11996899, -0.032113697, -0.07224075, -0.16129914, -0.090044595, -0.06993868, -0.024157416, -0.059060056, -0.13999487]
+sib[3][12][3] = [-0.012078681, -0.052106764, 0.14623025, -0.042062573, -0.08729188, -0.13380544, -0.11316432, -0.10609435, -0.020811122, -0.054954875, -0.13464893]
+sib[3][12][4] = [0.023478685, -0.06084465, 0.13814482, -0.113175966, 0.009257614, -0.0294629, -0.03966321, 0.021958612, -0.0042221253, -0.008490396, 0.00443361]
+sib[3][12][5] = [-0.0443518, -0.08318776, 0.07449434, -0.11546402, 0.021142684, -0.0294629, -0.03859923, 0.0048530586, -0.006127438, -0.008490396, -0.024924338]
+sib[3][12][6] = [-0.03669436, 0.0, -0.06647178, -0.019262923, 0.02827518, -0.006811307, -3.673914E-4, -0.023156736, 0.010466568, 0.0012967229, -0.014085353]
+sib[3][12][7] = [0.08656559, -0.06961218, -0.030577995, -0.09606805, -0.11571034, -0.037359156, -0.0589404, -0.100629196, -0.008667532, -0.019535828, -0.028648913]
+sib[3][12][8] = [0.11239628, -0.036012515, 0.022052249, 0.03603155, 0.06799861, -0.006707558, 0.037565842, 0.012174852, 0.0, 9.137141E-4, 0.003756082]
+sib[3][12][9] = [0.16298458, -0.029209461, 0.04123869, -0.0954872, -0.058416236, -0.040806353, -0.03461307, -0.033564482, -0.0025344007, -0.00956036, -0.02911105]
+sib[3][12][10] = [0.071195826, 0.02620035, -0.100424424, -0.030469187, -0.01974526, -0.012084009, -0.025767213, -0.013560094, -0.0014785305, -0.0019659526, -0.03556287]
+sib[3][12][11] = [0.19785225, -0.06643538, -0.04062798, -0.063266315, -0.11048587, -0.055547453, -0.06250958, -0.059802037, -0.0032337965, -0.007972743, -0.027523026]
+sib[3][12][12] = [-0.012078681, -0.052106764, 0.14623025, -0.042062573, -0.08729188, -0.13380544, -0.11316432, -0.10609435, -0.020811122, -0.054954875, -0.13464893]
+sib[3][13][3] = [0.010771354, -0.019358344, 0.12243471, -0.023350026, -0.115882576, -0.13268743, -0.09621497, -0.11421653, -0.029372318, -0.06953435, -0.13320039]
+sib[3][13][4] = [1.9125821E-4, -0.05340885, 0.15930477, -0.10336607, 0.026721582, -0.029471397, -0.0346346, 0.041425057, -0.0042221253, -0.010078013, -0.018916365]
+sib[3][13][5] = [-0.050628446, -0.07695184, 0.0776691, -0.098770864, 0.033575624, -0.027303372, -0.02913925, 0.022550065, -0.0042221253, -0.010078013, -0.043012403]
+sib[3][13][6] = [-0.031865876, 0.0, -0.06479003, -0.025683897, 0.028119579, -0.006811307, -4.9054436E-4, -0.02747688, 0.0, 0.0, -0.016529191]
+sib[3][13][7] = [0.08055597, -0.06303321, -0.023169972, -0.0893893, -0.09946756, -0.035199627, -0.04948042, -0.082291186, -0.0030968897, -0.021123445, -0.042704962]
+sib[3][13][8] = [0.09519473, -0.034015164, -0.0030244961, 0.0270633, 0.05695989, -0.006707558, 0.037803967, 0.0015231725, 0.0, 8.561501E-4, 0.003756082]
+sib[3][13][9] = [0.14372943, -0.021822449, 8.054506E-4, -0.07826577, -0.043684132, -0.038646825, -0.021407353, -0.01679664, -0.0025344007, -0.011147978, -0.045203086]
+sib[3][13][10] = [0.052602503, 0.03135809, -0.09951402, -0.019169897, -0.018222826, -0.0102549195, -0.03811585, -0.019497504, 5.0247823E-11, -0.0019659526, -0.03598744]
+sib[3][13][11] = [0.2177338, -0.0447733, -0.009973826, -0.0668631, -0.1266457, -0.053387925, -0.06280649, -0.055425752, -0.0032337965, -0.011147978, -0.03677142]
+sib[3][13][12] = [0.15116192, -0.029928438, -0.0682897, -0.030506752, -0.075446546, -0.034077805, -0.03499894, -0.083393, -0.0059905644, -0.017430559, -0.05910195]
+sib[3][13][13] = [0.010771354, -0.019358344, 0.12243471, -0.023350026, -0.115882576, -0.13268743, -0.09621497, -0.11421653, -0.029372318, -0.06953435, -0.13320039]
+sib[3][14][3] = [-0.26056057, 0.13355096, 0.010081072, 0.04575086, -0.19626357, -0.05233198, 0.108429894, 0.099652715]
+sib[3][14][4] = [-0.0051852446, 0.11604688, -0.00461397, -0.034131575, 0.027734272, -0.0053155567, -0.041085675, -0.0024728184]
+sib[3][14][5] = [0.005049154, 0.08578702, -0.015223209, -0.046391815, 0.019369159, -0.0061849365, -0.05134018, -0.0024728184]
+sib[3][14][6] = [0.29295436, -0.052116968, 0.007913021, 0.0, -0.0017050705, 0.0011060901, -0.021370051, -0.006811307]
+sib[3][14][7] = [-0.05461452, 0.012974637, -0.04003219, -0.047290314, 0.0119293835, -0.009658267, 0.03194299, -0.0024728184]
+sib[3][14][8] = [-0.057784926, 0.014249502, 0.111262836, 0.023619492, 0.012321563, -0.0024445008, 0.052491844, -7.761908E-4]
+sib[3][14][9] = [-0.091370605, 0.07643362, -0.018527146, -0.017604437, 0.006615444, -0.011369062, 0.07140522, -0.0064892285]
+sib[3][14][10] = [-0.0065967264, -0.056490522, -0.010225024, -0.040908042, -0.009007444, -0.0023863493, 0.044472635, -0.012659982]
+sib[3][14][11] = [-0.031473212, 0.059070446, 0.0016594138, -0.044192065, -0.004975613, -0.006927175, 0.094520256, -0.007121347]
+sib[3][14][12] = [0.014797458, 0.058989495, -0.0035725532, -0.030868255, -0.0056242477, -0.0053155567, 0.10149591, -0.00542962]
+sib[3][14][13] = [-0.017712446, 0.040885523, -0.0027787832, -0.034492105, -0.007669338, -0.0045733177, 0.10792611, -0.005509171]
+sib[3][14][14] = [-0.26056057, 0.13355096, 0.010081072, 0.04575086, -0.19626357, -0.05233198, 0.108429894, 0.099652715]
+sib[4][0][0] = [-0.05979176]
+sib[4][0][1] = [0.012160879]
+sib[4][0][2] = [-0.01094074]
+sib[4][0][3] = [0.0063267057]
+sib[4][0][4] = [-0.05979176]
+sib[4][1][1] = [-0.089409344, -0.12744133, -0.104752496, -0.17722015, -0.092124306, -0.21522388]
+sib[4][1][2] = [0.045860104, -0.0010550766, -0.018948799, 0.002736577, -0.004425691, -0.0017134671]
+sib[4][1][3] = [0.18554153, -0.0011986855, 0.022944935, -0.0010610658, -0.011354887, -0.0020284676]
+sib[4][1][4] = [-0.089409344, -0.12744133, -0.104752496, -0.17722015, -0.092124306, -0.21522388]
+sib[4][2][2] = [-0.06426263, -0.11276391, -0.1925163, -0.11661321, -0.10168587, -0.09961935, -0.05639325, -0.06719341, -0.090978056, -0.13028353, -0.04757992]
+sib[4][2][3] = [-1.10459565E-10, -0.0011986855, 0.04283212, 0.0, -0.006403528, -0.0010610659, -0.004545454, -0.030168634, -0.009606322, -0.0035743571, -0.08554308]
+sib[4][2][4] = [-0.06426263, -0.11276391, -0.1925163, -0.11661321, -0.10168587, -0.09961935, -0.05639325, -0.06719341, -0.090978056, -0.13028353, -0.04757992]
+sib[4][3][3] = [-0.06058728, -0.0979148, -0.05424255, -0.11633432, -0.1772722, -0.10616377, -0.1507355, -0.12918414, -0.098134555, -0.12852645, -0.070781246]
+sib[4][3][4] = [-0.06058728, -0.0979148, -0.05424255, -0.11633432, -0.1772722, -0.10616377, -0.1507355, -0.12918414, -0.098134555, -0.12852645, -0.070781246]
+sib[4][5][4] = [-0.054044735, 0.012123318, 0.009650465, -0.09443181, -0.23345609, -0.12745614, -0.071106635, -0.19992904, -0.027634017, -0.057838816, -0.17831837]
+sib[4][5][5] = [-0.054044735, 0.012123318, 0.009650465, -0.09443181, -0.23345609, -0.12745614, -0.071106635, -0.19992904, -0.027634017, -0.057838816, -0.17831837]
+sib[4][6][4] = [-0.0014760229, -0.036290288]
+sib[4][6][5] = [0.12858586, -0.015006369]
+sib[4][6][6] = [-0.0014760229, -0.036290288]
+sib[4][7][4] = [-0.07685082, -0.0109950565, 0.04009042, -0.12017377, -0.13290358, -0.051449183, -0.03546544, -0.13028136, -0.024157416, -0.051094763, -0.17340602]
+sib[4][7][5] = [-0.049684986, -0.07010144, 0.08261798, -0.08824345, 0.08446929, -0.028010322, -0.0058490587, 0.051007185, -0.0042221253, -0.008554218, -0.01425946]
+sib[4][7][6] = [-0.031865876, -0.0034969435, -0.051817406, -0.008561299, 0.04309825, -0.0039980677, 0.0050420538, -0.021627404, -0.0040520946, -9.703423E-4, -0.010745135]
+sib[4][7][7] = [-0.07685082, -0.0109950565, 0.04009042, -0.12017377, -0.13290358, -0.051449183, -0.03546544, -0.13028136, -0.024157416, -0.051094763, -0.17340602]
+sib[4][8][4] = [-0.010098394, -0.057909343, -0.10233671, -0.064014524, -0.21564847, -0.14862426]
+sib[4][8][5] = [0.05164864, -0.021304846, 0.04144946, -0.012746122, -0.007393649, -0.009085628]
+sib[4][8][6] = [-0.12496985, -0.0034969435, -0.052829344, -0.020642452, -0.0117155025, -0.011573848]
+sib[4][8][7] = [0.030665996, -0.02231672, 0.112717025, -0.0066679395, 0.0055457638, -0.006423532]
+sib[4][8][8] = [-0.010098394, -0.057909343, -0.10233671, -0.064014524, -0.21564847, -0.14862426]
+sib[4][9][4] = [-0.06938398, 0.034909606, 0.10741418, -0.035983317, -0.0630472, -0.12987432, -0.084608644, -0.11253104, -0.025895717, -0.058377907, -0.17978483]
+sib[4][9][5] = [-0.048896812, -0.0678702, 0.11461686, -0.10780097, 0.02315436, -0.029595902, -0.033485673, -5.4621685E-4, -0.008684105, -0.0024631263, -0.013800743]
+sib[4][9][6] = [-0.0391086, -0.0034969435, -0.035686884, -0.010701624, 0.032508813, -0.0069926856, 0.0066839578, -0.018508233, 0.0052291187, -0.0061465385, -0.016639974]
+sib[4][9][7] = [0.09522878, -0.06951603, -0.00371359, -0.07883953, -0.11552522, -0.03553085, -0.043712, -0.050451096, -0.0064717247, -0.010333326, -0.027232168]
+sib[4][9][8] = [0.110481456, -0.025107507, -0.027313342, 0.0643436, -0.020281743, -3.880954E-4, 0.013332176, -0.041317776, 0.0, -0.00273389, 0.003756082]
+sib[4][9][9] = [-0.06938398, 0.034909606, 0.10741418, -0.035983317, -0.0630472, -0.12987432, -0.084608644, -0.11253104, -0.025895717, -0.058377907, -0.17978483]
+sib[4][10][4] = [0.044717442, 0.073492415, -0.103512526, -0.031627126, -0.15162304, -0.1337772, -0.07444595]
+sib[4][10][5] = [0.06762118, -0.018680383, -0.018790904, -0.017205872, -0.01069214, -0.033518903, 0.022457847]
+sib[4][10][6] = [-0.052141756, -0.007714398, -0.008567239, 0.0051205703, 1.1164299E-4, -0.0035912949, -0.022861157]
+sib[4][10][7] = [-0.01665042, -0.0566907, -0.018790904, -0.0034001134, -0.018176608, -0.03981091, 0.06634858]
+sib[4][10][8] = [0.009411858, -0.04614166, -0.022725593, 0.057259593, 0.002291532, 7.999297E-4, 0.056449328]
+sib[4][10][9] = [0.10935048, 0.018468937, -0.018297859, -0.019766212, -0.015054941, -0.024877794, 0.09511633]
+sib[4][10][10] = [0.044717442, 0.073492415, -0.103512526, -0.031627126, -0.15162304, -0.1337772, -0.07444595]
+sib[4][11][4] = [-0.038054492, 0.017533954, 0.114837416, -0.035518527, -0.07224075, -0.16129914, -0.090044595, -0.06993868, -0.024157416, -0.059060056, -0.13999487]
+sib[4][11][5] = [-0.036074486, -0.07912248, 0.115200095, -0.11752356, 0.019956019, -0.026996568, -0.040271208, 0.04096473, -0.0050572436, -0.0053151622, 0.0023254189]
+sib[4][11][6] = [-0.03669436, -0.0034969435, -0.060229473, -0.010701624, 0.035589654, -0.005997102, -0.006190733, -0.023364406, -0.0040520946, 0.005974566, -0.022534816]
+sib[4][11][7] = [0.04329534, -0.07656428, 0.00953258, -0.10308445, -0.10949445, -0.031772226, -0.046619054, -0.073886774, -0.007734212, -0.013185361, 0.0012359582]
+sib[4][11][8] = [0.14895456, -0.036012515, 0.050642148, 0.067201555, 0.041129906, -7.761908E-4, 0.0034649817, -0.04812423, 0.0, 9.137141E-4, 0.011641268]
+sib[4][11][9] = [0.12094496, -0.046149027, 0.06935266, -0.10321512, -0.046747983, -0.037689526, -0.026184201, 0.008284374, -0.003369519, -0.0063851266, -0.0033735158]
+sib[4][11][10] = [0.10789909, 0.037529636, -9.849798E-4, -0.045202315, -0.030076612, -0.015593061, -0.019619161, -0.0038627228, -0.0014785305, -0.0019659526, -0.03767125]
+sib[4][11][11] = [-0.038054492, 0.017533954, 0.114837416, -0.035518527, -0.07224075, -0.16129914, -0.090044595, -0.06993868, -0.024157416, -0.059060056, -0.13999487]
+sib[4][12][4] = [-0.05766942, 0.0054647066, 0.1410987, -0.045467407, -0.08729188, -0.13380544, -0.11316432, -0.10609435, -0.020811122, -0.054954875, -0.13464893]
+sib[4][12][5] = [-0.009443326, -0.07584788, 0.11864605, -0.11233589, 0.025575463, -0.031211957, -0.0382803, 0.017182902, -0.0042221253, -0.008490396, -0.015575324]
+sib[4][12][6] = [-0.03669436, -0.0034969435, -0.066537134, -0.019262923, 0.02827518, -0.005997102, 0.0013817883, -0.023156736, 0.0064144735, 0.0012967229, -0.016639974]
+sib[4][12][7] = [0.08927489, -0.06961218, -0.023282807, -0.09606805, -0.11571034, -0.039108217, -0.0589404, -0.100629196, -0.008667532, -0.019535828, -0.028648913]
+sib[4][12][8] = [0.11635375, -0.036012515, 0.022052249, 0.03603155, 0.06799861, -0.006707558, 0.037565842, 0.012174852, 0.0, 9.137141E-4, 0.003756082]
+sib[4][12][9] = [0.16569388, -0.029209461, 0.04853387, -0.0954872, -0.057292882, -0.04336675, -0.03461307, -0.033564482, -0.0025344007, -0.00956036, -0.02911105]
+sib[4][12][10] = [0.071195826, 0.02620035, -0.100424424, -0.030469187, -0.01974526, -0.012084009, -0.025767213, -0.013560094, -0.0014785305, -0.0019659526, -0.03556287]
+sib[4][12][11] = [0.20056158, -0.06643538, -0.032409538, -0.063266315, -0.11048587, -0.057296515, -0.06250958, -0.059802037, -0.0032337965, -0.007972743, -0.027523026]
+sib[4][12][12] = [-0.05766942, 0.0054647066, 0.1410987, -0.045467407, -0.08729188, -0.13380544, -0.11316432, -0.10609435, -0.020811122, -0.054954875, -0.13464893]
+sib[4][13][4] = [-0.034819357, 0.038213126, 0.11730314, -0.02675486, -0.115882576, -0.13268743, -0.09621497, -0.11421653, -0.029372318, -0.06953435, -0.13320039]
+sib[4][13][5] = [-0.016722493, -0.06961197, 0.116871156, -0.10224965, 0.04181824, -0.029052429, -0.028820321, 0.036074564, -0.0042221253, -0.010078013, -0.029631376]
+sib[4][13][6] = [-0.031865876, -0.0034969435, -0.06485539, -0.025683897, 0.028119579, -0.005997102, 0.0012586355, -0.02747688, -0.0040520946, 0.0, -0.019083811]
+sib[4][13][7] = [0.08326527, -0.06303321, -0.015874784, -0.0893893, -0.09946756, -0.03694869, -0.04948042, -0.082291186, -0.0030968897, -0.021123445, -0.042704962]
+sib[4][13][8] = [0.0991522, -0.034015164, -0.0030244961, 0.0270633, 0.05695989, -0.006707558, 0.037803967, 0.0015231725, 0.0, 8.561501E-4, 0.003756082]
+sib[4][13][9] = [0.14643873, -0.021822449, 0.008100649, -0.07826577, -0.04256078, -0.041207217, -0.021407353, -0.01679664, -0.0025344007, -0.011147978, -0.045203086]
+sib[4][13][10] = [0.052602503, 0.03135809, -0.09951402, -0.019169897, -0.018222826, -0.0102549195, -0.03811585, -0.019497504, 5.0247823E-11, -0.0019659526, -0.03598744]
+sib[4][13][11] = [0.2204431, -0.0447733, -0.0017553885, -0.0668631, -0.1266457, -0.055136986, -0.06280649, -0.055425752, -0.0032337965, -0.011147978, -0.03677142]
+sib[4][13][12] = [0.15387122, -0.029928438, -0.049746484, -0.033426255, -0.075446546, -0.03582687, -0.03499894, -0.083393, -0.0048520667, -0.017430559, -0.05910195]
+sib[4][13][13] = [-0.034819357, 0.038213126, 0.11730314, -0.02675486, -0.115882576, -0.13268743, -0.09621497, -0.11421653, -0.029372318, -0.06953435, -0.13320039]
+sib[4][14][4] = [-0.25785947, 0.12841938, 0.006676249, 0.103322335, -0.19626357, -0.05233198, 0.06283919, 0.099652715]
+sib[4][14][5] = [-0.03720701, 0.10279249, -0.0155701935, -0.04274565, 0.024220739, -0.0061849365, -0.032148156, -0.004221876]
+sib[4][14][6] = [0.29295436, -0.05218232, 0.007913021, -0.0034969435, -0.0017050705, -0.0029460045, -0.021370051, -0.005997102]
+sib[4][14][7] = [-0.057200015, 0.02026982, -0.04003219, -0.047290314, 0.0119293835, -0.009658267, 0.034652296, -0.004221876]
+sib[4][14][8] = [-0.057784926, 0.014249502, 0.111262836, 0.023619492, 0.012321563, -0.0024445008, 0.056449328, -7.761908E-4]
+sib[4][14][9] = [-0.09395609, 0.083728805, -0.018527146, -0.017604437, 0.008007561, -0.011369062, 0.074114524, -0.009049619]
+sib[4][14][10] = [-0.0062989416, -0.056490522, -0.010225024, -0.040908042, -0.009007444, -0.0023863493, 0.044472635, -0.012659982]
+sib[4][14][11] = [-0.034058698, 0.06728889, 0.0016594138, -0.044192065, -0.004975613, -0.006927175, 0.09722956, -0.008870404]
+sib[4][14][12] = [0.017230764, 0.0775327, -0.006492055, -0.030868255, -0.0021692405, -0.004177059, 0.104205206, -0.0071786777]
+sib[4][14][13] = [-0.020297935, 0.048180707, -0.0027787832, -0.032672606, -0.007669338, -0.0045733177, 0.110635415, -0.007258229]
+sib[4][14][14] = [-0.25785947, 0.12841938, 0.006676249, 0.103322335, -0.19626357, -0.05233198, 0.06283919, 0.099652715]
+sib[5][0][0] = [-0.013991715]
+sib[5][0][1] = [0.020473363]
+sib[5][0][2] = [-0.0114432555]
+sib[5][0][3] = [0.001716299]
+sib[5][0][4] = [0.0026450125]
+sib[5][0][5] = [-0.013991715]
+sib[5][1][1] = [-0.02070929, -0.10959918, -0.08935779, -0.16785827, -0.092124306, -0.18564034]
+sib[5][1][2] = [0.045357592, -0.0024686644, -0.018948799, 0.002736577, -0.004425691, -0.0017134671]
+sib[5][1][3] = [0.20380627, -0.0011986855, 0.018373724, -0.0010610658, -0.011354887, -0.0020284676]
+sib[5][1][4] = [0.18631344, 1.2342613E-10, 0.017089274, -0.0033572963, -0.008851382, -0.0020284676]
+sib[5][1][5] = [-0.02070929, -0.10959918, -0.08935779, -0.16785827, -0.092124306, -0.18564034]
+sib[5][2][2] = [-0.057222914, -0.09492177, -0.12381624, -0.10121852, -0.10252683, -0.09025747, -0.04938847, -0.059581477, -0.09315635, -0.12234431, -0.01799638]
+sib[5][2][3] = [-1.10459565E-10, -0.0011986855, 0.03549111, 0.0, -0.004048791, -0.0010610659, -0.006800021, -0.03606269, -0.009606322, -0.0042461595, -0.08717637]
+sib[5][2][4] = [-1.10459565E-10, 1.3019351E-10, 0.031250264, -0.004602578, 0.012307799, -0.0010610659, -0.0036521195, -0.023576815, -0.012198655, 0.0, -0.09329657]
+sib[5][2][5] = [-0.057222914, -0.09492177, -0.12381624, -0.10121852, -0.10252683, -0.09025747, -0.04938847, -0.059581477, -0.09315635, -0.12234431, -0.01799638]
+sib[5][3][3] = [-0.053547565, -0.122934654, -0.07447434, -0.12004759, -0.15799122, -0.10599553, -0.11088853, -0.111150794, -0.10031285, -0.1291133, -0.008397517]
+sib[5][3][4] = [-9.0646456E-11, 2.235752E-10, 0.05345586, 0.0, -0.022630576, 7.305343E-4, 0.0031873789, 0.0077236216, -0.012198654, 0.0, -0.06923724]
+sib[5][3][5] = [-0.053547565, -0.122934654, -0.07447434, -0.12004759, -0.15799122, -0.10599553, -0.11088853, -0.111150794, -0.10031285, -0.1291133, -0.008397517]
+sib[5][4][4] = [-0.053547565, -0.080072656, 0.018722693, -0.09064961, -0.18364106, -0.09680189, -0.14517066, -0.13152951, -0.10031285, -0.112729274, -0.07246438]
+sib[5][4][5] = [-0.053547565, -0.080072656, 0.018722693, -0.09064961, -0.18364106, -0.09680189, -0.14517066, -0.13152951, -0.10031285, -0.112729274, -0.07246438]
+sib[5][6][5] = [-0.0069973017, -0.057975613]
+sib[5][6][6] = [-0.0069973017, -0.057975613]
+sib[5][7][5] = [-0.07812354, -0.05433413, -0.05680359, -0.14005183, -0.1564012, -0.045264285, -0.03546544, -0.13028136, -0.024157416, -0.043367013, -0.17340602]
+sib[5][7][6] = [-0.027037395, -0.0016036503, -0.046380665, -0.0064209746, 0.04309825, -0.0039980677, 0.0036118033, -0.019141719, 0.0, -9.703423E-4, -0.008190515]
+sib[5][7][7] = [-0.07812354, -0.05433413, -0.05680359, -0.14005183, -0.1564012, -0.045264285, -0.03546544, -0.13028136, -0.024157416, -0.043367013, -0.17340602]
+sib[5][8][5] = [-0.10699241, -0.101248406, -0.12221478, -0.057829622, -0.21564847, -0.14862426]
+sib[5][8][6] = [-0.1206842, -0.0016036503, -0.045305535, -0.017991304, -0.0117155025, -0.0067315595]
+sib[5][8][7] = [0.039422035, -0.019231547, 0.1148796, -0.0066679395, -0.0049644983, -0.006423532]
+sib[5][8][8] = [-0.10699241, -0.101248406, -0.12221478, -0.057829622, -0.21564847, -0.14862426]
+sib[5][9][5] = [-0.0706567, -0.00842947, 0.0105201565, -0.055861387, -0.0865448, -0.123689435, -0.084608644, -0.11253104, -0.025895717, -0.05065016, -0.17978483]
+sib[5][9][6] = [-0.034280118, -0.0016036503, -0.031616483, -0.008561299, 0.032508813, -0.0069926856, 0.005253707, -0.014723899, 0.009281213, -0.0061465385, -0.014085354]
+sib[5][9][7] = [0.09625212, -0.06643085, 0.008681927, -0.07667696, -0.11552522, -0.03553085, -0.043712, -0.050451096, -0.0062997285, -0.010333326, -0.027232168]
+sib[5][9][8] = [0.0955457, -0.025107507, -0.056608, 0.057471104, -0.016701257, 1.6950024E-4, 0.013332176, -0.041317776, 0.0, -0.004396819, 0.004836182]
+sib[5][9][9] = [-0.0706567, -0.00842947, 0.0105201565, -0.055861387, -0.0865448, -0.123689435, -0.084608644, -0.11253104, -0.025895717, -0.05065016, -0.17978483]
+sib[5][10][5] = [-0.052176554, 0.030153338, -0.097327635, -0.051505208, -0.15162304, -0.1337772, -0.075718686]
+sib[5][10][6] = [-0.046405777, -0.005821105, -0.008567239, 0.0051205703, 1.1164299E-4, -0.0010366742, -0.020446917]
+sib[5][10][7] = [-0.0042549046, -0.053605534, -0.018790904, -0.0012375494, -0.018893855, -0.03981091, 0.06737193]
+sib[5][10][8] = [-0.030470861, -0.04614166, -0.022168, 0.04551848, 0.00461428, 0.00188003, 0.03547753]
+sib[5][10][9] = [0.118106514, 0.021554112, -0.016426917, -0.017603647, -0.015054941, -0.024877794, 0.09857213]
+sib[5][10][10] = [-0.052176554, 0.030153338, -0.097327635, -0.051505208, -0.15162304, -0.1337772, -0.075718686]
+sib[5][11][5] = [-0.039327215, -0.025805116, 0.017943379, -0.0553966, -0.095738366, -0.15511423, -0.090044595, -0.06993868, -0.024157416, -0.051332314, -0.13999487]
+sib[5][11][6] = [-0.029451635, -0.0016036503, -0.051301815, -0.008561299, 0.035589654, -0.005997102, -0.003960719, -0.019580074, 0.0, 0.005974566, -0.019980194]
+sib[5][11][7] = [0.044318676, -0.0734791, 0.021928096, -0.10092189, -0.10949445, -0.031772226, -0.046619054, -0.073886774, -0.0075622164, -0.013185361, 0.0012359582]
+sib[5][11][8] = [0.12798275, -0.036012515, 0.010759438, 0.055460453, 0.044710394, -2.1859515E-4, 0.0034649817, -0.04812423, 0.0, -7.4921496E-4, 0.012721368]
+sib[5][11][9] = [0.122632876, -0.043063845, 0.08343441, -0.10105256, -0.04614701, -0.035818584, -0.026184201, 0.008284374, -0.0058744918, -0.00870971, -0.0033735158]
+sib[5][11][10] = [0.10789909, 0.03907222, 0.0065080505, -0.045202315, -0.030076612, -0.015593061, -0.015956124, -0.0038627228, 0.012713905, -0.0019659526, -0.039875332]
+sib[5][11][11] = [-0.039327215, -0.025805116, 0.017943379, -0.0553966, -0.095738366, -0.15511423, -0.090044595, -0.06993868, -0.024157416, -0.051332314, -0.13999487]
+sib[5][12][5] = [-0.05894215, -0.03787438, 0.044204667, -0.06534549, -0.11078949, -0.12762056, -0.11316432, -0.10609435, -0.020811122, -0.04722713, -0.13464893]
+sib[5][12][6] = [-0.029451635, -0.0016036503, -0.059930466, -0.014982273, 0.02827518, -0.005997102, 0.0036118033, -0.019372404, 0.010466568, 0.0012967229, -0.014085353]
+sib[5][12][7] = [0.090298235, -0.066527, -0.010887292, -0.093905486, -0.11571034, -0.039108217, -0.0589404, -0.100629196, -0.008495537, -0.019535828, -0.028648913]
+sib[5][12][8] = [0.09538196, -0.036012515, -0.017830458, 0.024290444, 0.07157909, -0.0061499625, 0.037565842, 0.012174852, 0.0, -7.4921496E-4, 0.004836182]
+sib[5][12][9] = [0.16738178, -0.02612428, 0.06261563, -0.09332464, -0.05669192, -0.041495804, -0.03461307, -0.033564482, -0.0050393734, -0.0118849445, -0.02911105]
+sib[5][12][10] = [0.071195826, 0.027742948, -0.092931375, -0.030469187, -0.01974526, -0.012084009, -0.02210418, -0.013560094, 0.012713905, -0.0019659526, -0.037766952]
+sib[5][12][11] = [0.20401737, -0.06180762, -0.017890045, -0.061103754, -0.11048587, -0.057296515, -0.06250958, -0.059802037, -0.005738769, -0.007972743, -0.027523026]
+sib[5][12][12] = [-0.05894215, -0.03787438, 0.044204667, -0.06534549, -0.11078949, -0.12762056, -0.11316432, -0.10609435, -0.020811122, -0.04722713, -0.13464893]
+sib[5][13][5] = [-0.03609209, -0.0051259417, 0.020409117, -0.046632934, -0.1393802, -0.12650257, -0.09621497, -0.11421653, -0.029372318, -0.0618066, -0.13320039]
+sib[5][13][6] = [-0.027037395, -0.0016036503, -0.058248725, -0.019262923, 0.028119579, -0.005997102, -1.7161481E-4, -0.023692548, 0.0, 0.0, -0.016529191]
+sib[5][13][7] = [0.084288605, -0.05994803, -0.0034792693, -0.08722674, -0.09946756, -0.03694869, -0.04948042, -0.082291186, -0.0029248935, -0.021123445, -0.042704962]
+sib[5][13][8] = [0.07818041, -0.034015164, -0.0429072, 0.015322188, 0.06054037, -0.0061499625, 0.037803967, 0.0015231725, 0.0, -8.0677896E-4, 0.004836182]
+sib[5][13][9] = [0.14812665, -0.018737271, 0.022182394, -0.07610321, -0.041959807, -0.039336275, -0.021407353, -0.01679664, -0.0050393734, -0.013472561, -0.045203086]
+sib[5][13][10] = [0.052602503, 0.032900687, -0.092021, -0.019169897, -0.018222826, -0.0102549195, -0.03445282, -0.019497504, 0.014192436, -0.0019659526, -0.038191523]
+sib[5][13][11] = [0.22147283, -0.040145542, 0.011916089, -0.06470054, -0.1266457, -0.055136986, -0.06280649, -0.055425752, -0.005738769, -0.011147978, -0.03677142]
+sib[5][13][12] = [0.16193217, -0.025300676, -0.04007332, -0.026181616, -0.075446546, -0.03582687, -0.03499894, -0.083393, -0.008495537, -0.017430559, -0.05910195]
+sib[5][13][13] = [-0.03609209, -0.0051259417, 0.020409117, -0.046632934, -0.1393802, -0.12650257, -0.09621497, -0.11421653, -0.029372318, -0.0618066, -0.13320039]
+sib[5][14][5] = [-0.25537568, 0.03152537, -0.013201834, 0.059983265, -0.15300572, -0.05233198, 0.06156646, 0.1058376]
+sib[5][14][6] = [0.22932234, -0.047896665, 0.00977265, -0.0016036503, 0.0028055469, 0.0011060901, -0.018955812, -0.005997102]
+sib[5][14][7] = [-0.057181142, 0.032665327, -0.03786962, -0.044205137, 0.01412938, -0.009486271, 0.03567564, -0.004221876]
+sib[5][14][8] = [-0.10915528, -0.025633207, 0.09952172, 0.023619492, 0.012321563, -0.0024445008, 0.03547753, -2.1859512E-4]
+sib[5][14][9] = [-0.09114166, 0.09781057, -0.016364582, -0.014519258, 0.010207557, -0.013874034, 0.07580243, -0.0071786777]
+sib[5][14][10] = [-0.022430215, -0.048997488, -0.010225024, -0.039365456, -0.030367618, 0.011806087, 0.044472635, -0.012659982]
+sib[5][14][11] = [-0.03267824, 0.08096037, 0.0038219786, -0.0395643, -0.002775615, -0.009432147, 0.09825929, -0.008870404]
+sib[5][14][12] = [0.013550812, 0.08635787, 7.5257575E-4, -0.026240492, 0.0012436521, -0.007820529, 0.10984009, -0.0071786777]
+sib[5][14][13] = [-0.016257526, 0.06910189, 0.0015463475, -0.028044844, -0.004256447, -0.0070782905, 0.11869636, -0.007258229]
+sib[5][14][14] = [-0.25537568, 0.03152537, -0.013201834, 0.059983265, -0.15300572, -0.05233198, 0.06156646, 0.1058376]
+sib[6][0][0] = [-0.022900363]
+sib[6][0][1] = [-0.057151113]
+sib[6][0][2] = [0.011239517]
+sib[6][0][3] = [0.10355931]
+sib[6][0][4] = [0.10113679]
+sib[6][0][5] = [0.07846503]
+sib[6][0][6] = [-0.022900363]
+sib[6][1][1] = [-8.780435E-4, 0.054963592, -0.19108737, -0.12623905]
+sib[6][1][2] = [0.08165514, 0.020282855, 0.009559401, 0.0]
+sib[6][1][3] = [0.31926402, 0.18964835, 0.0109074125, -0.0049274187]
+sib[6][1][4] = [0.3212951, 0.1837927, 0.0109074125, -0.007223649]
+sib[6][1][5] = [0.27594438, 0.17922972, 0.010594603, -0.0014743196]
+sib[6][1][6] = [-8.780435E-4, 0.054963592, -0.19108737, -0.12623905]
+sib[6][2][2] = [-0.11222258, 0.050404858, 0.047185533, -0.12299454, -0.01300682, -0.12578073]
+sib[6][2][3] = [-0.18014275, 0.024966255, -0.05153896, 0.10415388, 0.0067137536, -0.0041224123]
+sib[6][2][4] = [-0.19134797, 0.055446297, -0.04143285, 0.12907921, 0.0076070875, -5.4805516E-4]
+sib[6][2][5] = [-0.2072391, 0.047943812, -0.038106382, 0.11535951, 0.005871078, -5.480552E-4]
+sib[6][2][6] = [-0.11222258, 0.050404858, 0.047185533, -0.12299454, -0.01300682, -0.12578073]
+sib[6][3][3] = [0.016463423, -0.0050595235, -0.0043837857, -0.07365265, -0.0745069, -0.13254973]
+sib[6][3][4] = [-0.23648699, 0.004247016, -0.013646705, 0.11907454, 0.014446586, -5.4805516E-4]
+sib[6][3][5] = [-0.2675099, 0.035713844, -2.141227E-4, 0.123929575, 0.013603911, -0.0041251206]
+sib[6][3][6] = [0.016463423, -0.0050595235, -0.0043837857, -0.07365265, -0.0745069, -0.13254973]
+sib[6][4][4] = [-0.0053208517, -0.010587407, -0.014341103, -0.06938746, -0.07594687, -0.124691784]
+sib[6][4][5] = [-0.2547534, 0.0011128939, -0.010320229, 0.11575825, 0.016701154, -5.480552E-4]
+sib[6][4][6] = [-0.0053208517, -0.010587407, -0.014341103, -0.06938746, -0.07594687, -0.124691784]
+sib[6][5][5] = [-0.046530344, -0.024754517, -0.026675642, -0.06694023, -0.08020722, -0.122011766]
+sib[6][5][6] = [-0.046530344, -0.024754517, -0.026675642, -0.06694023, -0.08020722, -0.122011766]
+sib[6][7][6] = [-0.06668398, 0.15701908, 0.053081654, -0.041562922, -0.09335676, -0.045879193]
+sib[6][7][7] = [-0.06668398, 0.15701908, 0.053081654, -0.041562922, -0.09335676, -0.045879193]
+sib[6][8][6] = [0.031888455, -0.020159408, -0.115749374, -0.068911076]
+sib[6][8][7] = [0.016328888, 0.31059718, -0.046885177, -0.0030382373]
+sib[6][8][8] = [0.031888455, -0.020159408, -0.115749374, -0.068911076]
+sib[6][9][6] = [-0.015463634, 0.24337994, 0.055914782, 0.0537837, -0.15392841, -0.053162336]
+sib[6][9][7] = [0.10410624, -0.18479788, 0.04730715, 0.012246521, -0.07957622, -8.776218E-4]
+sib[6][9][8] = [0.027913697, 0.05140003, -0.092991486, 0.029301297, 0.0036965762, -0.006102523]
+sib[6][9][9] = [-0.015463634, 0.24337994, 0.055914782, 0.0537837, -0.15392841, -0.053162336]
+sib[6][10][6] = [0.1638811, 0.0075014764, -0.0685837, 0.017256824, 0.009674108, 0.008494894]
+sib[6][10][7] = [-0.09328745, -0.04625144, 0.07584937, 0.09840125, -0.013758433, 0.21754192]
+sib[6][10][8] = [0.030252352, 0.006564774, -0.0014200294, -0.066030756, 0.0021090396, -0.055661373]
+sib[6][10][9] = [-0.030235123, 0.03063292, 1.0149321E-5, 0.02545148, -0.0042993072, 0.029465321]
+sib[6][10][10] = [0.1638811, 0.0075014764, -0.0685837, 0.017256824, 0.009674108, 0.008494894]
+sib[6][11][6] = [-0.01100229, 0.23418641, 0.098507136, 0.06120694, -0.15936437, -0.05384449]
+sib[6][11][7] = [0.054312088, -0.17876709, 0.023871478, 0.02549269, -0.08248328, -0.0037296575]
+sib[6][11][8] = [0.039586127, 0.12569854, -0.084939435, 0.055912003, -0.0021388545, -0.0024549188]
+sib[6][11][9] = [-0.057456873, -0.036878854, 0.0153086055, -0.017903224, -0.02430544, 0.0027138065]
+sib[6][11][10] = [-9.1476756E-4, -0.026575249, -0.045395516, 0.12486483, -0.090377145, 7.5696927E-4]
+sib[6][11][11] = [-0.01100229, 0.23418641, 0.098507136, 0.06120694, -0.15936437, -0.05384449]
+sib[6][12][6] = [-0.02428934, 0.21913527, 0.062351488, 0.08746822, -0.18248409, -0.049739305]
+sib[6][12][7] = [0.08172652, -0.18498299, -0.002870936, -0.0073226904, -0.09480462, -0.010080125]
+sib[6][12][8] = [0.060293876, 0.15256722, -0.024640348, 0.027322117, 0.031962015, -0.0024549188]
+sib[6][12][9] = [-0.035604056, -0.047423758, -0.026540251, -0.038722, -0.032734312, -4.614269E-4]
+sib[6][12][10] = [-0.018368417, -0.0162439, -0.055092886, 0.051493347, -0.09652519, 7.5696927E-4]
+sib[6][12][11] = [-0.0030203306, -0.14671642, -0.01671135, 0.03598261, -0.07687208, -1.0438182E-4]
+sib[6][12][12] = [-0.02428934, 0.21913527, 0.062351488, 0.08746822, -0.18248409, -0.049739305]
+sib[6][13][6] = [-0.03134952, 0.19054458, 0.054229297, 0.06367267, -0.16553473, -0.064318776]
+sib[6][13][7] = [0.03901016, -0.16874021, 0.015467081, 8.532498E-5, -0.085344635, -0.01166774]
+sib[6][13][8] = [0.10142052, 0.14152852, -0.03529203, 0.0022453656, 0.032200135, -0.002512483]
+sib[6][13][9] = [-0.08208025, -0.032691646, -0.009772409, -0.079155244, -0.01952859, -0.0020490438]
+sib[6][13][10] = [-0.026550043, -0.0147214625, -0.061030302, 0.052403733, -0.10887383, 7.5696927E-4]
+sib[6][13][11] = [-0.022819908, -0.16087684, -0.0112027, 0.024575166, -0.067042306, -0.0032796157]
+sib[6][13][12] = [-0.029787974, -0.11174141, -0.028042313, -0.016218323, -0.045164082, -0.0054269037]
+sib[6][13][13] = [-0.03134952, 0.19054458, 0.054229297, 0.06367267, -0.16553473, -0.064318776]
+sib[6][14][6] = [-0.3345765, -0.05440959, 0.040200546, 0.12801376, 0.01691782, 0.08181266, 0.045465887, -0.06269189, 0.19499904, -0.03643303, -0.045039263]
+sib[6][14][7] = [-0.11123689, -0.04801243, 0.108130954, -0.0027912362, 0.019480383, 0.08817583, 0.17541601, 0.03268152, -0.10618995, 8.067688E-4, 0.0019499091]
+sib[6][14][8] = [0.08267829, -0.018383445, -0.0056146653, -0.008550599, -0.012715477, -0.06417089, 0.006681534, -0.05969155, 0.047013845, -0.0024445008, -0.0049756025]
+sib[6][14][9] = [-0.05278799, -0.0128073795, 0.019861616, -0.04254823, 0.049759973, 0.005107398, 0.0054259934, 0.049033057, -0.021200787, -0.0060650813, 0.004518865]
+sib[6][14][10] = [-0.045886233, -0.073182315, -0.0291582, 0.11211588, -0.0011666183, -0.039041538, -0.043296024, -0.025777517, -1.710013E-4, -0.0016210296, -3.3870904E-4]
+sib[6][14][11] = [0.058548182, -0.009585906, 0.049257465, 0.054598287, 0.019539595, 0.034960963, -0.021758793, -0.012782857, -0.07152735, -0.0018835319, -0.0016170464]
+sib[6][14][12] = [0.025623873, -0.0070910985, 0.052799314, 0.029978123, 0.015759178, 0.04479893, -0.010567277, 0.003709057, -0.080064036, 0.0029438091, 0.0021973252]
+sib[6][14][13] = [9.183455E-4, -0.022048544, 0.05698071, 0.05393573, 0.015255726, 0.043666583, 0.0017024414, 0.013851647, -0.06619368, 0.0024183872, 0.0021973252]
+sib[6][14][14] = [-0.3345765, -0.05440959, 0.040200546, 0.12801376, 0.01691782, 0.08181266, 0.045465887, -0.06269189, 0.19499904, -0.03643303, -0.045039263]
+sib[7][0][0] = [0.010996293]
+sib[7][0][1] = [0.021207577]
+sib[7][0][2] = [0.008265113]
+sib[7][0][3] = [0.005559855]
+sib[7][0][4] = [0.0035264082]
+sib[7][0][5] = [0.0021829614]
+sib[7][0][6] = [-0.009157593]
+sib[7][0][7] = [0.010996293]
+sib[7][1][1] = [0.019516613, -0.042894334, -0.04891747, -0.16450386, -0.08597361, -0.16393876]
+sib[7][1][2] = [0.065065965, -0.0010550767, -0.020631796, 0.002736577, -6.542017E-4, -0.00419551]
+sib[7][1][3] = [0.2076498, 0.0028507598, 0.014616444, -0.00858758, -0.008421026, -0.0020284678]
+sib[7][1][4] = [0.21006994, 0.0, 0.010835064, -0.0063792104, -0.008851382, -0.0020284678]
+sib[7][1][5] = [0.23289569, 0.0, 0.019819837, -0.00408298, -0.008851382, -0.0052061304]
+sib[7][1][6] = [0.051611308, -0.0020070989, -0.018679755, -3.151076E-4, 0.013253022, -0.011876351]
+sib[7][1][7] = [0.019516613, -0.042894334, -0.04891747, -0.16450386, -0.08597361, -0.16393876]
+sib[7][2][2] = [-0.057888865, -0.02821692, -0.08359034, -0.06077819, -0.08085317, -0.086903065, -0.058034517, -0.058742765, -0.0870358, -0.108123936, 0.0037051851]
+sib[7][2][3] = [0.005249313, 0.0028507598, 0.03851226, -0.0037572803, -0.012854091, -0.0055656657, 0.023232648, -0.020314965, -0.0013696172, -0.0052313716, -0.08717637]
+sib[7][2][4] = [0.005249313, 6.7673783E-12, 0.027485203, -0.006285575, 0.015750417, -0.00408298, -0.005906687, -0.026932385, -0.0039619496, 0.0, -0.09492986]
+sib[7][2][5] = [0.0, 6.7673783E-12, 0.036819294, 0.0, 0.011115744, -0.0027740486, -0.0076426957, -0.019999389, -0.0039619496, -0.0014217849, -0.09329657]
+sib[7][2][6] = [-0.002669402, -0.004425875, 0.015476611, 0.0035821022, -0.0015197482, -3.1510755E-4, 0.0013554007, -0.008296368, 0.0, -0.0026259448, -0.032617223]
+sib[7][2][7] = [-0.057888865, -0.02821692, -0.08359034, -0.06077819, -0.08085317, -0.086903065, -0.058034517, -0.058742765, -0.0870358, -0.108123936, 0.0037051851]
+sib[7][3][3] = [-0.054213516, -0.056229804, -0.03424845, -0.079607256, -0.13631754, -0.10264112, -0.119534604, -0.11031208, -0.0941923, -0.11489293, 0.013304057]
+sib[7][3][4] = [0.005249313, 1.0014907E-10, 0.053822003, -0.0016829971, -0.023169383, 7.305342E-4, 9.328113E-4, 0.0043680533, -0.003961949, 0.0, -0.070870526]
+sib[7][3][5] = [1.9813108E-11, 1.0014907E-10, 0.04538936, 0.0, -0.0011142243, -9.824485E-4, 9.0136426E-5, 0.017892864, -0.0065542813, -0.00499885, -0.07586638]
+sib[7][3][6] = [0.0018903521, -0.0066188276, 0.037315063, 0.0030355034, -0.0015197482, -3.1510755E-4, 0.00258643, -0.005530912, -0.0012453651, -0.0026259448, -0.04723473]
+sib[7][3][7] = [-0.054213516, -0.056229804, -0.03424845, -0.079607256, -0.13631754, -0.10264112, -0.119534604, -0.11031208, -0.0941923, -0.11489293, 0.013304057]
+sib[7][4][4] = [-0.054213516, -0.056229804, -0.02998326, -0.06931724, -0.14184542, -0.10264112, -0.12097458, -0.120269395, -0.0941923, -0.10703498, -0.01796261]
+sib[7][4][5] = [1.9813108E-11, 1.0014907E-10, 0.06440448, 0.0, -0.02382263, 0.0020394656, 0.0031873793, 0.011301048, -0.0056409836, -0.0014217849, -0.07289222]
+sib[7][4][6] = [0.0018903521, -0.004425875, 0.037315063, 0.0030355034, -0.0015197482, -3.1510755E-4, 0.00258643, -0.005530912, -0.0012453651, -2.8477004E-4, -0.04723473]
+sib[7][4][7] = [-0.054213516, -0.056229804, -0.02998326, -0.06931724, -0.14184542, -0.10264112, -0.12097458, -0.120269395, -0.0941923, -0.10703498, -0.01796261]
+sib[7][5][5] = [-0.054213516, -0.051324546, -0.028492367, -0.06816616, -0.15643947, -0.10264112, -0.15897451, -0.12543847, -0.0941923, -0.11489293, -0.07503934]
+sib[7][5][6] = [0.0018903521, -0.004425875, 0.03719254, 0.0016454, -0.0015197482, -3.1510755E-4, 0.00258643, -0.005530912, -0.0012453651, -0.0026259448, -0.0430724]
+sib[7][5][7] = [-0.054213516, -0.051324546, -0.028492367, -0.06816616, -0.15643947, -0.10264112, -0.15897451, -0.12543847, -0.0941923, -0.11489293, -0.07503934]
+sib[7][6][6] = [-0.085978806, -0.14015438]
+sib[7][6][7] = [-0.085978806, -0.14015438]
+sib[7][8][7] = [0.09145066, -0.07198008, 0.13344514, -0.019058011, -0.19137497, -0.08871789]
+sib[7][8][8] = [0.09145066, -0.07198008, 0.13344514, -0.019058011, -0.19137497, -0.08871789]
+sib[7][9][7] = [-0.031885665, -0.002001539, 0.048732176, 0.06327891, -0.068889074, -0.101456136, -0.06247451, -0.12991948, -0.029551104, -0.047641955, -0.14544168]
+sib[7][9][8] = [0.07952398, -0.017923644, 0.010222033, 0.029505935, -0.0011618757, -3.880954E-4, 0.015562127, -0.018838957, 0.0, -0.004396819, 0.008740568]
+sib[7][9][9] = [-0.031885665, -0.002001539, 0.048732176, 0.06327891, -0.068889074, -0.101456136, -0.06247451, -0.12991948, -0.029551104, -0.047641955, -0.14544168]
+sib[7][10][7] = [-0.013964549, 0.03658127, -0.07509431, 0.067635104, -0.15079187, -0.09943407, -0.036947634]
+sib[7][10][8] = [-0.004245987, -0.038026284, -0.019059833, 0.0013370246, 0.0010751414, 0.005784415, 0.024770517]
+sib[7][10][9] = [0.08163267, -0.0052820547, -0.01810176, -0.037956532, -0.015054941, -0.024215773, 0.023180518]
+sib[7][10][10] = [-0.013964549, 0.03658127, -0.07509431, 0.067635104, -0.15079187, -0.09943407, -0.036947634]
+sib[7][11][7] = [-5.561798E-4, -0.019377183, 0.056155406, 0.06374371, -0.07808261, -0.13288094, -0.06791046, -0.08732714, -0.027812803, -0.048324108, -0.10565175]
+sib[7][11][8] = [0.09843541, -0.028828653, 0.080446735, 0.034427915, 0.06900093, -7.761908E-4, 0.006813285, -0.014959782, 0.0, -7.49215E-4, 0.008740568]
+sib[7][11][9] = [0.047241263, -0.069900006, 0.048805356, -0.112408206, -0.06311045, -0.037493426, -0.024437603, 0.010386061, -0.0050572436, -0.010720863, -0.0027114945]
+sib[7][11][10] = [0.047056198, 0.042475596, -0.047744174, -0.057172924, -0.030490663, -0.014323417, -0.024300834, -0.005170907, -0.00481218, 6.394236E-11, -0.039119426]
+sib[7][11][11] = [-5.561798E-4, -0.019377183, 0.056155406, 0.06374371, -0.07808261, -0.13288094, -0.06791046, -0.08732714, -0.027812803, -0.048324108, -0.10565175]
+sib[7][12][7] = [-0.020171098, -0.031446446, 0.08241671, 0.05379483, -0.09313373, -0.10538727, -0.09103019, -0.1234828, -0.024466509, -0.044218924, -0.1003058]
+sib[7][12][8] = [0.07449598, -0.028828653, 0.05895011, 0.002796925, 0.11660792, -0.006707558, 0.038684193, 0.039116763, 0.0, -7.49215E-4, 0.008740568]
+sib[7][12][9] = [0.09199017, -0.052960448, 0.027986571, -0.104680285, -0.07365536, -0.043170646, -0.03286647, -0.031462796, -0.0042221253, -0.013896097, -0.028449029]
+sib[7][12][10] = [0.010352926, 0.031146316, -0.1471836, -0.042439796, -0.020159317, -0.010814365, -0.030448886, -0.014868278, -0.00481218, 6.394236E-11, -0.037011046]
+sib[7][12][11] = [0.10722286, -0.07493079, 0.025387798, -0.07814595, -0.12289652, -0.058971357, -0.060762983, -0.05770035, -0.0032337965, -0.012308481, -0.026861008]
+sib[7][12][12] = [-0.020171098, -0.031446446, 0.08241671, 0.05379483, -0.09313373, -0.10538727, -0.09103019, -0.1234828, -0.024466509, -0.044218924, -0.1003058]
+sib[7][13][7] = [0.0026789322, 0.0013019902, 0.058621146, 0.07250738, -0.12172444, -0.10426925, -0.07408085, -0.13160497, -0.03302771, -0.058798395, -0.09885727]
+sib[7][13][8] = [0.0631651, -0.02597448, 0.037828177, -0.009120149, 0.11996424, -0.006707558, 0.04226387, 0.04394432, 0.0, -8.06779E-4, 0.008740568]
+sib[7][13][9] = [0.07273503, -0.045573436, -0.012446653, -0.087458864, -0.058923244, -0.041011117, -0.019660754, -0.014694952, -0.0042221253, -0.015483716, -0.044541065]
+sib[7][13][10] = [-0.008240411, 0.036304057, -0.14627323, -0.03114051, -0.018636882, -0.008985275, -0.04279752, -0.020805689, -0.0033336494, 6.394236E-11, -0.037435617]
+sib[7][13][11] = [0.1255262, -0.053268705, 0.068387896, -0.08174273, -0.13905635, -0.05681183, -0.06105988, -0.053324066, -0.0032337965, -0.008510702, -0.03840468]
+sib[7][13][12] = [0.03452136, -0.04630676, -0.02264944, -0.039773952, -0.0878572, -0.03750171, -0.03325234, -0.07886929, -0.0031040115, -0.021766298, -0.05843993]
+sib[7][13][13] = [0.0026789322, 0.0013019902, 0.058621146, 0.07250738, -0.12172444, -0.10426925, -0.07408085, -0.13160497, -0.03302771, -0.058798395, -0.09885727]
+sib[7][14][7] = [-0.26414376, 0.06973738, 0.10593847, 0.0664112, -0.1071457, -0.055987366, 0.10033749, 0.12807092]
+sib[7][14][8] = [-0.11902496, 0.008113168, 0.06471773, 0.016862381, 0.004339601, -0.0024445008, 0.024770517, -7.761908E-4]
+sib[7][14][9] = [-0.045185737, 0.06318151, -0.027720224, -0.041355416, 0.014794314, -0.013056786, 4.108306E-4, -0.00885352]
+sib[7][14][10] = [-0.0061226934, -0.103249714, -0.022195634, -0.035962082, 3.397325E-5, -0.005719999, -0.01637028, -0.011390338]
+sib[7][14][11] = [0.0053691436, 0.13743219, -0.013220221, -0.05268746, 0.0016800195, -0.006927175, 0.0023126388, -0.010545246]
+sib[7][14][12] = [0.055539697, 0.11697571, -0.012839755, -0.047246568, 0.009567992, -0.0024290038, -0.016722832, -0.00885352]
+sib[7][14][13] = [0.021415919, 0.086525775, -0.012045981, -0.049050927, 0.004067893, -0.0016867651, -0.008714438, -0.008933071]
+sib[7][14][14] = [-0.26414376, 0.06973738, 0.10593847, 0.0664112, -0.1071457, -0.055987366, 0.10033749, 0.12807092]
+sib[8][0][0] = [-0.1306883]
+sib[8][0][1] = [-0.0031998698]
+sib[8][0][2] = [-0.013289453]
+sib[8][0][3] = [-0.008273367]
+sib[8][0][4] = [-0.010306813]
+sib[8][0][5] = [-0.010239473]
+sib[8][0][6] = [0.0]
+sib[8][0][7] = [4.4407556E-5]
+sib[8][0][8] = [-0.1306883]
+sib[8][1][1] = [-0.16752008]
+sib[8][1][2] = [0.048054956]
+sib[8][1][3] = [0.19381656]
+sib[8][1][4] = [0.1962367]
+sib[8][1][5] = [0.22047327]
+sib[8][1][6] = [0.05407614]
+sib[8][1][7] = [0.03259886]
+sib[8][1][8] = [-0.16752008]
+sib[8][2][2] = [-0.09066302, -0.13003787, -0.16142634, -0.15207109, -0.26127905, 7.7442965E-5]
+sib[8][2][3] = [-0.0014265252, -0.0077776024, -7.2852474E-11, -0.004048791, 0.019596174, -0.08604795]
+sib[8][2][4] = [-0.006029103, -0.0077776024, -7.2852474E-11, 0.016942471, 0.013651979, -0.09380145]
+sib[8][2][5] = [-0.0014265252, -0.0077776024, -9.664457E-4, 0.012307799, 0.024396855, -0.09329657]
+sib[8][2][6] = [0.0048993025, -0.0024187758, -0.0017435295, -4.2051418E-11, 0.02235306, -0.0348629]
+sib[8][2][7] = [4.8703526E-4, 0.0038177134, -0.001485926, -0.0028415276, 0.05204464, -0.08211417]
+sib[8][2][8] = [-0.09066302, -0.13003787, -0.16142634, -0.15207109, -0.26127905, 7.7442965E-5]
+sib[8][3][3] = [-0.10949209, -0.15805076, -0.17716438, -0.20753546, -0.21193713, 0.009676317]
+sib[8][3][4] = [-0.0014265252, -0.0077776024, 0.0017916001, -0.02197733, 0.03490593, -0.06974211]
+sib[8][3][5] = [-0.0014265252, -0.0077776024, 8.251545E-4, 7.783045E-5, 0.03296693, -0.07586638]
+sib[8][3][6] = [0.0043527037, -0.0046117287, 0.0011168586, -4.2051418E-11, 0.044191517, -0.049480405]
+sib[8][3][7] = [4.8703526E-4, 0.0038177134, 3.0567427E-4, -0.016087243, 0.02829557, -0.06396307]
+sib[8][3][8] = [-0.10949209, -0.15805076, -0.17716438, -0.20753546, -0.21193713, 0.009676317]
+sib[8][4][4] = [-0.09920207, -0.15805076, -0.17716438, -0.21306334, -0.20767194, -0.02159035]
+sib[8][4][5] = [-0.0014265252, -0.0077776024, 8.251545E-4, -0.022630576, 0.046899192, -0.07289222]
+sib[8][4][6] = [0.0043527037, -0.0024187758, 0.0011168586, -4.2051418E-11, 0.044191517, -0.049480405]
+sib[8][4][7] = [4.8703526E-4, 0.0038177134, 3.0567427E-4, -0.013569284, 0.032772113, -0.06130428]
+sib[8][4][8] = [-0.09920207, -0.15805076, -0.17716438, -0.21306334, -0.20767194, -0.02159035]
+sib[8][5][5] = [-0.098051, -0.1531455, -0.17716438, -0.22765741, -0.20618106, -0.07866707]
+sib[8][5][6] = [0.0029626004, -0.0024187758, 0.0011168586, -4.2051418E-11, 0.044068985, -0.045318075]
+sib[8][5][7] = [-0.0016342016, 0.0016858783, 3.0567427E-4, -0.021759551, 0.03046755, -0.060595863]
+sib[8][5][8] = [-0.098051, -0.1531455, -0.17716438, -0.22765741, -0.20618106, -0.07866707]
+sib[8][6][6] = [-0.2945214]
+sib[8][6][7] = [-0.008584548]
+sib[8][6][8] = [-0.2945214]
+sib[8][7][7] = [-0.09558498, -0.14580676, -0.15594773, -0.101749435, -0.22991525, -0.059299488]
+sib[8][7][8] = [-0.09558498, -0.14580676, -0.15594773, -0.101749435, -0.22991525, -0.059299488]
+sib[8][9][8] = [0.78801787, 0.22985879, 0.36780447, 0.1078232, 0.29729065, 0.025334237]
+sib[8][9][9] = [0.78801787, 0.22985879, 0.36780447, 0.1078232, 0.29729065, 0.025334237]
+sib[8][10][8] = [0.3778783, 0.7138954, 0.12205364, 0.21584456, 0.05456043]
+sib[8][10][9] = [-0.059722286, -0.09083596, 0.041860487, -0.028273586, -0.037889853]
+sib[8][10][10] = [0.3778783, 0.7138954, 0.12205364, 0.21584456, 0.05456043]
+sib[8][11][8] = [0.771168, 0.21248314, 0.34403247, 0.09235164, 0.30030355, 0.05547594]
+sib[8][11][9] = [-0.19855681, -0.056822326, -0.0894422, -0.07517671, -0.0369342, -0.015578905]
+sib[8][11][10] = [-0.084116936, 0.050267287, -0.011977294, -0.02446951, 9.7631407E-4, -0.03887186]
+sib[8][11][11] = [0.771168, 0.21248314, 0.34403247, 0.09235164, 0.30030355, 0.05547594]
+sib[8][12][8] = [0.761219, 0.20041385, 0.37152606, 0.07730051, 0.32656485, 0.060821887]
+sib[8][12][9] = [-0.19082892, -0.039882757, -0.095119424, -0.08468197, -0.057752986, -0.04131644]
+sib[8][12][10] = [-0.075814925, 0.0329127, -0.008468242, -0.014138159, -0.079590335, -0.03531133]
+sib[8][12][11] = [-0.17127416, -0.049114514, -0.108307295, -0.13420378, -0.097858824, -0.034285795]
+sib[8][12][12] = [0.761219, 0.20041385, 0.37152606, 0.07730051, 0.32656485, 0.060821887]
+sib[8][13][8] = [0.7799316, 0.23316228, 0.37264413, 0.04870981, 0.3027693, 0.06227043]
+sib[8][13][9] = [-0.17360747, -0.03249575, -0.09295989, -0.06994984, -0.098186225, -0.057408478]
+sib[8][13][10] = [-0.064515635, 0.038070444, -0.006639153, -0.012615723, -0.07867995, -0.0357359]
+sib[8][13][11] = [-0.16899568, -0.032994986, -0.10763662, -0.14808722, -0.09456525, -0.04353419]
+sib[8][13][12] = [-0.1257692, -0.031805098, -0.08162767, -0.09916444, -0.1300085, -0.06586472]
+sib[8][13][13] = [0.7799316, 0.23316228, 0.37264413, 0.04870981, 0.3027693, 0.06227043]
+sib[8][14][8] = [-0.13940644, 0.70799375, -0.04977177]
+sib[8][14][9] = [-0.056291524, -0.09443851, -0.016541561]
+sib[8][14][10] = [-0.090868294, -0.04292191, -0.0012392468]
+sib[8][14][11] = [-0.043322347, -0.081042856, -0.012329705]
+sib[8][14][12] = [-0.048961572, -0.07352945, -0.009252757]
+sib[8][14][13] = [-0.06984594, -0.078610934, -0.006592763]
+sib[8][14][14] = [-0.13940644, 0.70799375, -0.04977177]
+sib[9][0][0] = [-0.07034887]
+sib[9][0][1] = [-0.0113618225]
+sib[9][0][2] = [-0.006281595]
+sib[9][0][3] = [0.012695111]
+sib[9][0][4] = [0.010661664]
+sib[9][0][5] = [0.009318218]
+sib[9][0][6] = [-0.0031773483]
+sib[9][0][7] = [0.009483286]
+sib[9][0][8] = [-0.025391717]
+sib[9][0][9] = [-0.07034887]
+sib[9][1][1] = [-0.1011759, -0.07143136, -0.1059882, -0.17183484, -0.091196485, -0.18513407]
+sib[9][1][2] = [0.052392587, -0.0010550766, -0.018948799, 0.002736577, -0.004425691, -0.0017134671]
+sib[9][1][3] = [0.21478505, -0.0011986855, 0.018373724, -0.0010610658, -0.011354887, -0.0014217426]
+sib[9][1][4] = [0.2172052, 1.2342613E-10, 0.012518062, -0.0060311006, -0.008851382, -0.0014217426]
+sib[9][1][5] = [0.24003094, 1.2342613E-10, 0.019819837, -0.0010610658, -0.008851382, -0.0045994055]
+sib[9][1][6] = [0.0508988, 0.0, -0.013630568, 2.6559156E-11, 0.014032768, -0.011876351]
+sib[9][1][7] = [0.06701221, -0.0010550766, -0.026815884, -0.0017672072, -0.006077345, -0.0020284676]
+sib[9][1][8] = [0.034916025, -0.0017478155, -0.0038286392, -0.006166786, 0.0, -0.014572306]
+sib[9][1][9] = [-0.1011759, -0.07143136, -0.1059882, -0.17183484, -0.091196485, -0.18513407]
+sib[9][2][2] = [-0.062582, -0.056753963, -0.20428288, -0.11784891, -0.10288976, -0.094234064, -0.054490432, -0.06126349, -0.08680433, -0.12707745, -0.017490098]
+sib[9][2][3] = [0.0033699158, -0.0011986855, 0.04455407, 6.7594264E-12, -4.26305E-4, -0.0010610659, -0.006648346, -0.03606269, -0.011389632, -0.0035743571, -0.08656964]
+sib[9][2][4] = [0.0033699158, 1.3019351E-10, 0.03462046, -0.004602578, 0.020564955, -0.0037348699, -0.005755012, -0.025610901, -0.013981964, 0.0, -0.09432313]
+sib[9][2][5] = [0.0033699158, 1.3019351E-10, 0.04395455, 6.7594264E-12, 0.015930286, 2.4786548E-4, -0.0074910205, -0.023576815, -0.013981964, 0.0, -0.09268984]
+sib[9][2][6] = [-0.0066579944, -0.0024187758, 0.019175712, 0.0035821022, -1.848424E-4, -0.002860388, -0.0014214896, -0.01028468, 0.0, 5.837672E-4, -0.036261305]
+sib[9][2][7] = [0.0033699158, -0.0031338134, 0.056400374, 0.0019135604, 0.0015796584, -0.0021793821, -9.805523E-4, -0.015657805, -0.014526446, -0.005065879, -0.08211417]
+sib[9][2][8] = [0.0, -0.0017478155, -0.021038817, 0.009213619, 0.020823805, 1.5195471E-4, 8.020853E-5, -0.009715047, -0.005318772, 0.0, -0.0102435]
+sib[9][2][9] = [-0.062582, -0.056753963, -0.20428288, -0.11784891, -0.10288976, -0.094234064, -0.054490432, -0.06126349, -0.08680433, -0.12707745, -0.017490098]
+sib[9][3][3] = [-0.058906656, -0.084766835, -0.15494096, -0.13667798, -0.15835413, -0.10997212, -0.115990505, -0.11283281, -0.09396083, -0.13384646, -0.007891232]
+sib[9][3][4] = [0.0033699158, 2.235752E-10, 0.059863806, 6.7594264E-12, -0.018354842, -0.0019432697, 0.0010844865, 0.0056895404, -0.0139819635, 0.0, -0.0702638]
+sib[9][3][5] = [0.0033699158, 2.235752E-10, 0.05252462, 6.7594264E-12, 0.0037003167, 0.0020394656, 2.4181162E-4, 0.014315439, -0.016574297, -0.0035770652, -0.07525965]
+sib[9][3][6] = [-0.0020982404, -0.0046117287, 0.041014165, 0.0030355034, -1.848424E-4, 7.584112E-11, -1.9046036E-4, -0.0075192237, -0.0012453651, 5.837672E-4, -0.050878808]
+sib[9][3][7] = [0.0033699158, -0.0031338134, 0.032651298, 0.0019135604, -0.0116660595, -3.87782E-4, 0.0036544318, -0.008762814, -0.01971111, -0.002893438, -0.06396307]
+sib[9][3][8] = [0.0, -0.0017478155, -0.03509238, 0.0058086934, -4.3411588E-4, 1.5195471E-4, 0.007849641, -0.01592761, 5.395991E-4, -0.0051903967, -0.008748124]
+sib[9][3][9] = [-0.058906656, -0.084766835, -0.15494096, -0.13667798, -0.15835413, -0.10997212, -0.115990505, -0.11283281, -0.09396083, -0.13384646, -0.007891232]
+sib[9][4][4] = [-0.058906656, -0.084766835, -0.15067577, -0.12638798, -0.16388203, -0.10997212, -0.11743048, -0.12279012, -0.09396083, -0.1259885, -0.039157894]
+sib[9][4][5] = [0.0033699158, 2.235752E-10, 0.070446275, 6.7594264E-12, -0.01900809, 0.0020394656, 0.0033390545, 0.0077236216, -0.015661, 0.0, -0.07228549]
+sib[9][4][6] = [-0.0020982404, -0.0024187758, 0.041014165, 0.0030355034, -1.848424E-4, 7.584112E-11, -1.9046036E-4, -0.0075192237, -0.0012453651, 0.002924942, -0.050878808]
+sib[9][4][7] = [0.0033699158, -0.0031338134, 0.03712784, 0.0019135604, -0.0091480985, -3.87782E-4, 0.0017899475, -0.008762814, -0.01971111, -0.002893438, -0.06130428]
+sib[9][4][8] = [0.0, -0.0017478155, -0.029629342, 0.0058086934, -4.3411588E-4, 0.0022711253, 0.007849641, -0.01592761, 5.395991E-4, -0.004375567, -0.008748124]
+sib[9][4][9] = [-0.058906656, -0.084766835, -0.15067577, -0.12638798, -0.16388203, -0.10997212, -0.11743048, -0.12279012, -0.09396083, -0.1259885, -0.039157894]
+sib[9][5][5] = [-0.058906656, -0.079861574, -0.14918488, -0.1252369, -0.17847608, -0.10997212, -0.15543042, -0.12795919, -0.09396083, -0.13384646, -0.096234635]
+sib[9][5][6] = [-0.0020982404, -0.0024187758, 0.04089164, 0.0016454, -1.848424E-4, -2.4944128E-11, -1.9046036E-4, -0.0075192237, -0.0012453651, 0.002521164, -0.046716478]
+sib[9][5][7] = [0.0033699158, -0.0021318349, 0.034823276, -2.0767644E-4, -0.017338365, -3.87782E-4, 0.0036544318, -0.01277848, -0.01971111, -0.002893438, -0.060595863]
+sib[9][5][8] = [-0.0018001135, -0.0017478155, -0.02844011, 0.008361049, 0.0012216937, 1.5195471E-4, 0.015772633, -0.010470614, -0.001196497, -0.0064024087, -0.008748124]
+sib[9][5][9] = [-0.058906656, -0.079861574, -0.14918488, -0.1252369, -0.17847608, -0.10997212, -0.15543042, -0.12795919, -0.09396083, -0.13384646, -0.096234635]
+sib[9][6][6] = [-0.24552456, -0.15129414]
+sib[9][6][7] = [0.006215946, -0.0027184573]
+sib[9][6][8] = [-0.023212386, 0.0010730807]
+sib[9][6][9] = [-0.24552456, -0.15129414]
+sib[9][7][7] = [-0.062582, -0.07252283, -0.15046915, -0.12517364, -0.081251726, -0.09594374, -0.12587339, -0.09161502, -0.09625019, -0.12978898, -0.06474607]
+sib[9][7][8] = [0.0, -0.0017478155, -0.022458764, 0.0058086934, 0.021875191, 0.00120843, 0.010813163, -0.0064338804, -0.0069222776, 0.0, -0.009914654]
+sib[9][7][9] = [-0.062582, -0.07252283, -0.15046915, -0.12517364, -0.081251726, -0.09594374, -0.12587339, -0.09161502, -0.09625019, -0.12978898, -0.06474607]
+sib[9][8][8] = [-0.020221319, -0.036588803, -0.04983248, -0.15051144, -0.09741203, -0.1296102]
+sib[9][8][9] = [-0.020221319, -0.036588803, -0.04983248, -0.15051144, -0.09741203, -0.1296102]
+sib[9][10][9] = [0.058185466, 0.18593371, 0.013361546, 0.05250779, -0.15585752, -0.09314026, -0.024650116]
+sib[9][10][10] = [0.058185466, 0.18593371, 0.013361546, 0.05250779, -0.15585752, -0.09314026, -0.024650116]
+sib[9][11][9] = [0.010377872, 0.11967139, 0.13280055, 0.058676593, -0.046707705, -0.072339505, -0.08746066, -0.06420231, -0.029372318, -0.047733497, -0.12351745]
+sib[9][11][10] = [0.13447289, 0.040904917, 0.18432452, -0.04691888, -0.031945646, -0.021555042, -0.01900445, -0.0034406362, -0.0014785305, 2.4921317E-11, -0.03767125]
+sib[9][11][11] = [0.010377872, 0.11967139, 0.13280055, 0.058676593, -0.046707705, -0.072339505, -0.08746066, -0.06420231, -0.029372318, -0.047733497, -0.12351745]
+sib[9][12][9] = [-0.009237043, 0.10760212, 0.1590618, 0.048727725, -0.061758842, -0.044845812, -0.110580385, -0.100357965, -0.026026024, -0.043628313, -0.11817151]
+sib[9][12][10] = [0.09776962, 0.029575646, 0.07672849, -0.03404893, -0.021614298, -0.01804599, -0.025152503, -0.0131380055, -0.0014785305, 2.4921317E-11, -0.03556287]
+sib[9][12][11] = [0.25697288, -0.088507816, -0.009320511, -0.032928392, -0.11276226, -0.057192735, -0.063904464, -0.063531876, -0.0032337965, -0.011226524, -0.028146785]
+sib[9][12][12] = [-0.009237043, 0.10760212, 0.1590618, 0.048727725, -0.061758842, -0.044845812, -0.110580385, -0.100357965, -0.026026024, -0.043628313, -0.11817151]
+sib[9][13][9] = [0.013612992, 0.14035055, 0.13526626, 0.06744026, -0.09034954, -0.0437278, -0.09363104, -0.108480155, -0.034587223, -0.058207784, -0.11672297]
+sib[9][13][10] = [0.07917629, 0.034733385, 0.08110547, -0.022749638, -0.020091861, -0.0162169, -0.035234727, -0.017345145, 0.0, 2.4921317E-11, -0.03598744]
+sib[9][13][11] = [0.2788935, -0.066845745, 0.022597812, -0.039993078, -0.12892209, -0.05503321, -0.06420136, -0.05915559, -0.0032337965, -0.014401756, -0.03739518]
+sib[9][13][12] = [0.18689674, -0.057967238, -0.11454363, 0.031081818, -0.07772294, -0.035723086, -0.034426462, -0.08544957, -0.0071663177, -0.018500524, -0.059725706]
+sib[9][13][13] = [0.013612992, 0.14035055, 0.13526626, 0.06744026, -0.09034954, -0.0437278, -0.09363104, -0.108480155, -0.034587223, -0.058207784, -0.11672297]
+sib[9][14][9] = [-0.25209263, 0.1463825, 0.10087137, 0.20545979, -0.13530877, -0.057546876, 0.11127153, 0.18861237]
+sib[9][14][10] = [-0.050928675, 0.11547458, -0.015944967, -0.037532754, -0.0047936477, -0.0023863493, 0.07104642, -0.018621963]
+sib[9][14][11] = [0.00563729, 0.09164208, 0.028529447, -0.066264495, -0.007344978, -0.006927175, 0.15567993, -0.008766629]
+sib[9][14][12] = [0.008060956, 0.013999755, 0.054548122, -0.058907047, 0.0070343534, -0.00649131, 0.13926981, -0.007074901]
+sib[9][14][13] = [-0.019813104, -0.0053684125, 0.06431517, -0.060711406, 0.0015342542, -0.005749071, 0.14366095, -0.0071544526]
+sib[9][14][14] = [-0.25209263, 0.1463825, 0.10087137, 0.20545979, -0.13530877, -0.057546876, 0.11127153, 0.18861237]
+sib[10][0][0] = [-0.059043508]
+sib[10][0][1] = [0.025374867]
+sib[10][0][2] = [-0.010792654]
+sib[10][0][3] = [-0.017562985]
+sib[10][0][4] = [-0.018177532]
+sib[10][0][5] = [-0.022483138]
+sib[10][0][6] = [0.0017099967]
+sib[10][0][7] = [-0.0060652886]
+sib[10][0][8] = [0.030930744]
+sib[10][0][9] = [-0.010792654]
+sib[10][0][10] = [-0.059043508]
+sib[10][1][1] = [-0.05920863, -0.090162024, -0.102852575, -0.14439504]
+sib[10][1][2] = [0.04903557, -0.018948799, -0.0060798614, 0.0]
+sib[10][1][3] = [0.18755428, 0.01895392, -0.013009057, 0.0]
+sib[10][1][4] = [0.19139335, 0.01121319, -0.007386175, -0.0022962305]
+sib[10][1][5] = [0.21125697, 0.020400032, -0.011000266, 0.0]
+sib[10][1][6] = [0.053369354, -0.015731946, 0.015331525, 0.0034863725]
+sib[10][1][7] = [0.054491006, -0.026815884, -0.0060798614, -7.323949E-4]
+sib[10][1][8] = [0.089037456, 0.019426785, 0.0, -0.005944387]
+sib[10][1][9] = [0.0468777, -0.00752901, -0.0060798614, 0.0]
+sib[10][1][10] = [-0.05920863, -0.090162024, -0.102852575, -0.14439504]
+sib[10][2][2] = [-0.048039384, -0.033936597, -0.1076843, -0.08561048, -0.18102275, -0.063882194, -0.27944726, -0.06961856]
+sib[10][2][3] = [-0.03545773, -4.3242677E-11, 5.80196E-4, 2.0403232E-4, 0.0133339325, -0.0051465426, -0.13283041, -7.2852474E-11]
+sib[10][2][4] = [-0.028865915, -4.3242677E-11, -0.005907449, 2.0403232E-4, 0.008808636, 0.016942471, -0.13296017, -7.2852474E-11]
+sib[10][2][5] = [-0.022971857, -4.3242677E-11, 5.80196E-4, 2.0403232E-4, 0.015180563, 0.008977336, -0.15586855, 0.0013089313]
+sib[10][2][6] = [-0.008296368, -0.002669402, 0.0014807231, -0.0024187758, 0.021646274, -0.0021272162, 0.079501994, 6.259845E-4]
+sib[10][2][7] = [-0.014046128, 0.0, 0.0019135604, -0.004179495, 0.043879174, 0.0041841725, -0.024367616, -0.00114457]
+sib[10][2][8] = [-0.016525857, -0.0025111497, 0.015022312, -9.820932E-4, 0.037353337, 0.022290064, 0.030802153, -8.340767E-4]
+sib[10][2][9] = [-0.023818199, -1.0399219E-10, -2.977391E-11, -0.0010456814, -0.0041673095, -0.039385617, -0.0727223, -7.2852474E-11]
+sib[10][2][10] = [-0.048039384, -0.033936597, -0.1076843, -0.08561048, -0.18102275, -0.063882194, -0.27944726, -0.06961856]
+sib[10][3][3] = [-0.09960871, -0.030261248, -0.12651338, -0.11362336, -0.13168085, -0.11934658, -0.15076126, -0.085356615]
+sib[10][3][4] = [0.0024345233, -2.3429569E-11, -0.0013048707, 2.040324E-4, 0.03006259, -0.02197733, -0.19214498, 0.0017916001]
+sib[10][3][5] = [0.014920399, -2.3429569E-11, 5.80196E-4, 2.040324E-4, 0.023750644, -0.003252635, -0.21613938, 0.0031005316]
+sib[10][3][6] = [-0.005530912, 0.0018903521, 9.3412434E-4, -0.0046117287, 0.043484725, -0.0021272162, 0.1461553, 0.0034863725]
+sib[10][3][7] = [-0.0071511366, 0.0, 0.0019135604, -0.004179495, 0.020130098, -0.009061545, 0.03431515, 6.470303E-4]
+sib[10][3][8] = [-0.022738421, -0.0025111497, 0.011617387, -0.0032574702, 0.023299767, 0.0019173237, 0.045053303, -8.340767E-4]
+sib[10][3][9] = [-0.015549341, -4.3242677E-11, -2.977391E-11, -0.0010456813, -0.0017319783, -0.038781445, -0.08130009, 0.0032380675]
+sib[10][3][10] = [-0.09960871, -0.030261248, -0.12651338, -0.11362336, -0.13168085, -0.11934658, -0.15076126, -0.085356615]
+sib[10][4][4] = [-0.10956604, -0.030261248, -0.11622335, -0.11362336, -0.12741564, -0.12487447, -0.17254554, -0.085356615]
+sib[10][4][5] = [0.008328579, -2.3429569E-11, 5.80196E-4, 2.040324E-4, 0.037682906, -0.02596104, -0.21185596, 0.0031005316]
+sib[10][4][6] = [-0.005530912, 0.0018903521, 9.3412434E-4, -0.0024187758, 0.043484725, -0.0021272162, 0.15845388, 0.0034863725]
+sib[10][4][7] = [-0.0071511366, 0.0, 0.0019135604, -0.004179495, 0.024606647, -0.0065435837, 0.025490979, 6.470303E-4]
+sib[10][4][8] = [-0.022738421, -0.0025111497, 0.011617387, -0.0032574702, 0.028762808, 0.0019173237, 0.036042124, 0.0012850938]
+sib[10][4][9] = [-0.015549341, -4.3242677E-11, -2.977391E-11, -0.0010456813, 0.0027445666, -0.038781445, -0.09012426, 0.0032380675]
+sib[10][4][10] = [-0.10956604, -0.030261248, -0.11622335, -0.11362336, -0.12741564, -0.12487447, -0.17254554, -0.085356615]
+sib[10][5][5] = [-0.11473512, -0.030261248, -0.11507228, -0.108718105, -0.12592475, -0.13946849, -0.19167395, -0.085356615]
+sib[10][5][6] = [-0.005530912, 0.0018903521, -4.5597902E-4, -0.0024187758, 0.0433622, -0.0021272162, 0.13301979, 0.0034863725]
+sib[10][5][7] = [-0.011166802, 0.0, -2.0767644E-4, -0.0031775166, 0.022302076, -0.014733851, 0.027197832, 6.470303E-4]
+sib[10][5][8] = [-0.013207361, -0.004311263, 0.014169742, -0.0032574702, 0.03137211, 0.005228941, 0.008087682, -8.340767E-4]
+sib[10][5][9] = [-0.019565009, -4.3242677E-11, -2.977391E-11, -0.0010456813, -0.0020602378, -0.044453755, -0.086815685, 0.0032380675]
+sib[10][5][10] = [-0.11473512, -0.030261248, -0.11507228, -0.108718105, -0.12592475, -0.13946849, -0.19167395, -0.085356615]
+sib[10][6][6] = [-0.10306311, -0.2031597]
+sib[10][6][7] = [-0.004742817, -0.006305254]
+sib[10][6][8] = [6.8480964E-5, 0.024987387]
+sib[10][6][9] = [-0.0020921042, -0.014598351]
+sib[10][6][10] = [-0.10306311, -0.2031597]
+sib[10][7][7] = [-0.07839093, -0.033936597, -0.11500903, -0.101379365, -0.12720901, -0.04224415, -0.2632762, -0.07132824]
+sib[10][7][8] = [-0.024684515, -0.0025111497, 0.011617387, -9.820932E-4, 0.027987499, 0.02499726, 0.04452046, -8.340767E-4]
+sib[10][7][9] = [-0.031356703, -4.3242677E-11, -2.977391E-11, -0.0010456813, -0.019378543, -0.029830173, -0.0730696, -8.799264E-11]
+sib[10][7][10] = [-0.07839093, -0.033936597, -0.11500903, -0.101379365, -0.12720901, -0.04224415, -0.2632762, -0.07132824]
+sib[10][8][8] = [-0.061185136, -0.018472185, -0.10816938, -0.128322]
+sib[10][8][9] = [-2.1848828E-5, -0.0061198915, -0.003867016, 0.0]
+sib[10][8][10] = [-0.061185136, -0.018472185, -0.10816938, -0.128322]
+sib[10][9][9] = [-0.071560964, -0.030261248, -0.0720657, -0.08686474, -0.093842424, -0.19551773, -0.24368197, -0.07979041]
+sib[10][9][10] = [-0.071560964, -0.030261248, -0.0720657, -0.08686474, -0.093842424, -0.19551773, -0.24368197, -0.07979041]
+sib[10][11][10] = [-0.051991284, -0.06937934, -0.016163576, 0.053064074, 0.08693847, 0.019920709, -0.13684247, -0.1479983]
+sib[10][11][11] = [-0.051991284, -0.06937934, -0.016163576, 0.053064074, 0.08693847, 0.019920709, -0.13684247, -0.1479983]
+sib[10][12][10] = [-0.08531261, -0.06413493, -0.05977267, -0.022204375, 0.051638376, -0.03699434, -0.17177294, -0.1723037]
+sib[10][12][11] = [-0.06677956, 0.068897344, -0.041090466, -0.043190118, -0.10512746, -0.08707124, -0.060287543, -0.04228424]
+sib[10][12][12] = [-0.08531261, -0.06413493, -0.05977267, -0.022204375, 0.051638376, -0.03699434, -0.17177294, -0.1723037]
+sib[10][13][10] = [-0.09343482, -0.0412849, -0.041060112, 0.010544043, 0.027842823, -0.06558503, -0.17883311, -0.17118572]
+sib[10][13][11] = [-0.049473174, 0.08055082, -0.038259365, -0.026170572, -0.08088517, -0.097375445, -0.08329418, -0.04012471]
+sib[10][13][12] = [-0.06825196, 0.03314009, -0.027902417, -0.024682438, -0.1125624, -0.0713303, -0.09034211, -0.032421686]
+sib[10][13][13] = [-0.09343482, -0.0412849, -0.041060112, 0.010544043, 0.027842823, -0.06558503, -0.17883311, -0.17118572]
+sib[10][14][10] = [-0.29800513, 0.06716653, 0.030734247, 0.052991964]
+sib[10][14][11] = [-0.09484864, 0.0031243088, -0.005557349, -0.06585641]
+sib[10][14][12] = [-0.06504598, -0.006278834, -0.0043337257, -0.022472793]
+sib[10][14][13] = [-0.090015024, -0.005038573, 0.0016201909, -0.03029346]
+sib[10][14][14] = [-0.29800513, 0.06716653, 0.030734247, 0.052991964]
+sib[11][0][0] = [-0.007372096]
+sib[11][0][1] = [-0.0117301885]
+sib[11][0][2] = [1.7489446E-4]
+sib[11][0][3] = [-0.00123771]
+sib[11][0][4] = [-0.003271157]
+sib[11][0][5] = [-0.005359205]
+sib[11][0][6] = [-0.002019499]
+sib[11][0][7] = [0.010771036]
+sib[11][0][8] = [-0.029056469]
+sib[11][0][9] = [-0.023738708]
+sib[11][0][10] = [0.0030166223]
+sib[11][0][11] = [-0.007372096]
+sib[11][1][1] = [0.0018578265, -0.054558165, -0.0604494, -0.17884487, -0.08183588, -0.20679036]
+sib[11][1][2] = [0.056975745, 0.005668442, -0.018948799, 0.001544904, -0.004425691, -0.0042697564]
+sib[11][1][3] = [0.20085223, 0.005524833, 0.018373724, -0.002252739, -0.011354887, -0.00299346]
+sib[11][1][4] = [0.20327237, 0.006723519, 0.012518062, -0.0045489697, -0.008851382, -0.0039780317]
+sib[11][1][5] = [0.22535354, 0.006723519, 0.019819837, -0.002252739, -0.008851382, -0.007155695]
+sib[11][1][6] = [0.052056644, 0.0, -0.013630568, -7.422609E-11, 0.015331525, -0.011876351]
+sib[11][1][7] = [0.068299964, 0.005668442, -0.026815884, -0.002252739, -0.006077345, -0.0076014055]
+sib[11][1][8] = [0.027525611, -0.0019323565, 0.016894437, -0.006166786, 0.0011550465, -0.018592926]
+sib[11][1][9] = [0.018857269, 0.0015575043, 8.552619E-4, 0.0014732641, -0.007938184, -0.0059139905]
+sib[11][1][10] = [0.039753977, -5.9690885E-4, -0.017307745, -0.014496746, -0.024867129, -0.0062500164]
+sib[11][1][11] = [0.0018578265, -0.054558165, -0.0604494, -0.17884487, -0.08183588, -0.20679036]
+sib[11][2][2] = [-0.06727515, -0.039880756, -0.101249136, -0.07231011, -0.10864645, -0.101244085, -0.048028372, -0.06371725, -0.08343171, -0.11429499, -0.039146423]
+sib[11][2][3] = [0.0, 0.0055248337, 0.030621234, 0.0, -4.26305E-4, -0.002252739, -0.006648346, -0.03606269, -0.00916679, -0.0052283416, -0.08814137]
+sib[11][2][4] = [0.0, 0.006723519, 0.020687636, -0.004602578, 0.024846062, -0.002252739, -0.005755012, -0.029470876, -0.011759123, -0.0016539845, -0.09687942]
+sib[11][2][5] = [0.0, 0.006723519, 0.029277127, 0.0, 0.015930286, -9.438076E-4, -0.0074910205, -0.023576815, -0.014191874, 0.0, -0.095246136]
+sib[11][2][6] = [-0.002669402, -0.0024187758, 0.020333562, 0.0035821022, -1.848424E-4, -0.002860388, -3.935173E-12, -0.0014916197, 0.0012843906, -7.149898E-4, -0.036261305]
+sib[11][2][7] = [0.0012985886, 0.0035897053, 0.05768812, 0.0019135604, 0.0015796584, -0.002664914, -9.805523E-4, -0.015657805, -0.014526446, -0.005065879, -0.08768711]
+sib[11][2][8] = [-1.6855371E-11, -0.0019323565, -0.02441728, 0.012489964, 0.021536471, 1.5195471E-4, 0.0021693285, -0.030377915, -0.010483608, 0.0, -0.014740901]
+sib[11][2][9] = [-6.074951E-11, 0.006723519, -0.013831265, 0.0, -0.038916126, 0.001473264, -0.018928917, -0.025520945, -0.015844021, 0.0013519778, -0.087466374]
+sib[11][2][10] = [-0.02627029, 0.0013403501, -0.031924155, 0.011060903, -0.017858764, -0.017715154, -0.04361326, -0.0058456473, 0.0043095946, 4.7011906E-4, -0.039736304]
+sib[11][2][11] = [-0.06727515, -0.039880756, -0.101249136, -0.07231011, -0.10864645, -0.101244085, -0.048028372, -0.06371725, -0.08343171, -0.11429499, -0.039146423]
+sib[11][3][3] = [-0.0635998, -0.06789364, -0.051907234, -0.0911392, -0.16411085, -0.11698214, -0.109528445, -0.11528658, -0.09058821, -0.121063985, -0.029547555]
+sib[11][3][4] = [1.9813108E-11, 0.006723519, 0.04593098, 0.0, -0.014073737, -4.6113878E-4, 0.0010844865, 0.001829566, -0.011759122, -0.0016539845, -0.07282009]
+sib[11][3][5] = [1.9813108E-11, 0.006723519, 0.0378472, 0.0, 0.0037003167, 8.477926E-4, 2.4181162E-4, 0.014315439, -0.016784206, -0.0035770652, -0.07781593]
+sib[11][3][6] = [0.0018903521, -0.0046117287, 0.042172015, 0.0030355034, -1.848424E-4, -2.4944128E-11, 0.0012310293, 0.0012738362, 3.9025443E-5, -7.149898E-4, -0.050878808]
+sib[11][3][7] = [0.0012985886, 0.0035897053, 0.03393905, 0.0019135604, -0.0116660595, -8.7331375E-4, 0.0036544318, -0.008762814, -0.01971111, -0.002893438, -0.069536015]
+sib[11][3][8] = [-1.6855371E-11, -0.004207734, -0.038470846, 0.009085039, 0.001163731, 1.5195471E-4, 0.015866034, -0.03659048, -0.0046252366, -0.0051903967, -0.013245526]
+sib[11][3][9] = [0.0, 0.006723519, -0.013421126, 0.0, -0.03831196, 0.0047113313, -0.01512234, -0.017252088, -0.021028686, 0.0013519778, -0.055630326]
+sib[11][3][10] = [-0.034883592, -0.009302226, -0.03815173, -0.012217581, -0.021105701, -0.012877224, -0.05123791, -0.017816678, 0.015131095, 0.002381786, -0.030664032]
+sib[11][3][11] = [-0.0635998, -0.06789364, -0.051907234, -0.0911392, -0.16411085, -0.11698214, -0.109528445, -0.11528658, -0.09058821, -0.121063985, -0.029547555]
+sib[11][4][4] = [-0.0635998, -0.06789364, -0.047642045, -0.08084916, -0.16963877, -0.11698214, -0.11096842, -0.12524389, -0.09058821, -0.11320603, -0.060814228]
+sib[11][4][5] = [1.9813108E-11, 0.006723519, 0.055768855, 0.0, -0.01900809, 8.477926E-4, 0.0033390545, 0.0077236216, -0.015870908, 0.0, -0.07484178]
+sib[11][4][6] = [0.0018903521, -0.0024187758, 0.042172015, 0.0030355034, -1.848424E-4, -2.4944128E-11, 0.0012310293, 0.0012738362, 3.9025443E-5, 0.001626185, -0.050878808]
+sib[11][4][7] = [0.0012985886, 0.0035897053, 0.038415592, 0.0019135604, -0.0091480985, -8.7331375E-4, 0.0017899475, -0.008762814, -0.01971111, -0.002893438, -0.06687723]
+sib[11][4][8] = [-1.6855371E-11, -0.004207734, -0.033007804, 0.009085039, 0.001163731, 0.0022711253, 0.015866034, -0.03659048, -0.0046252366, -0.004375567, -0.013245526]
+sib[11][4][9] = [0.0, 0.006723519, -0.008944579, 0.0, -0.03831196, 0.0047113313, -0.013525365, -0.017252088, -0.021028686, 0.0013519778, -0.055630326]
+sib[11][4][10] = [-0.034883592, -0.0032188678, -0.03815173, -0.012217581, -0.021105701, -0.012877224, -0.0531008, -0.017816678, 0.015079191, 4.7011906E-4, -0.036729466]
+sib[11][4][11] = [-0.0635998, -0.06789364, -0.047642045, -0.08084916, -0.16963877, -0.11698214, -0.11096842, -0.12524389, -0.09058821, -0.11320603, -0.060814228]
+sib[11][5][5] = [-0.0635998, -0.06298838, -0.046151154, -0.079698086, -0.18423282, -0.11698214, -0.14896835, -0.13041297, -0.09058821, -0.121063985, -0.11789097]
+sib[11][5][6] = [0.0018903521, -0.0024187758, 0.042049482, 0.0016454, -1.848424E-4, -2.4944128E-11, 0.0012310293, -0.005530912, 3.9025443E-5, 0.0012224071, -0.046716478]
+sib[11][5][7] = [0.0012985886, 0.004591684, 0.036111027, -2.0767644E-4, -0.017338365, -8.7331375E-4, 0.0036544318, -0.01277848, -0.01971111, -0.002893438, -0.06616881]
+sib[11][5][8] = [-0.0018001135, -0.004207734, -0.030398501, 0.011637394, 0.004475348, 1.5195471E-4, 0.028451074, -0.02705942, -0.0063613327, -0.0064024087, -0.013245526]
+sib[11][5][9] = [0.0, 0.006723519, -0.008013514, 0.0, -0.043984264, 0.0047113313, -0.013525365, -0.021267753, -0.021028686, 0.0013519778, -0.05226312]
+sib[11][5][10] = [-0.034883592, -0.009302226, -0.04404863, -0.014543477, -0.019002203, -0.012877224, -0.04815198, -0.017816678, 0.015079191, -0.0015919966, -0.030664032]
+sib[11][5][11] = [-0.0635998, -0.06298838, -0.046151154, -0.079698086, -0.18423282, -0.11698214, -0.14896835, -0.13041297, -0.09058821, -0.121063985, -0.11789097]
+sib[11][6][6] = [-0.14249083, -0.14342183]
+sib[11][6][7] = [0.007503695, -0.0027184573]
+sib[11][6][8] = [-0.034999825, 0.0010730807]
+sib[11][6][9] = [-0.03129263, -0.0020921042]
+sib[11][6][10] = [3.224857E-4, 0.0]
+sib[11][6][11] = [-0.14249083, -0.14342183]
+sib[11][7][7] = [-0.06727515, -0.055649634, -0.047435418, -0.07963485, -0.08700845, -0.10295376, -0.119411334, -0.094068795, -0.092877574, -0.1170065, -0.08640239]
+sib[11][7][8] = [-1.6855371E-11, -0.0019323565, -0.024417153, 0.009085039, 0.024243666, 0.00120843, 0.01756433, -0.023022685, -0.012087113, 0.0, -0.015578586]
+sib[11][7][9] = [-0.0026487454, 0.006723519, -0.020125525, 0.0, -0.029360685, 0.001473264, -0.013388636, -0.03305945, -0.021028686, 0.0013519778, -0.042516686]
+sib[11][7][10] = [-0.032058157, -0.0060932855, -0.059400894, 0.008735007, -0.0151623245, -0.017715154, -0.042483654, -0.0071071237, 0.021815212, 4.7011906E-4, -0.025759025]
+sib[11][7][11] = [-0.06727515, -0.055649634, -0.047435418, -0.07963485, -0.08700845, -0.10295376, -0.119411334, -0.094068795, -0.092877574, -0.1170065, -0.08640239]
+sib[11][8][8] = [-1.1867844E-4, -0.037765916, 0.011240432, -0.1627718, -0.0871527, -0.15140302]
+sib[11][8][9] = [-0.021379888, 0.0043555237, 0.0034294096, 0.0014732641, -0.003512493, -0.004899758]
+sib[11][8][10] = [0.009230928, 2.5665667E-4, -0.021784212, -0.014496746, -0.019540738, -0.019266201]
+sib[11][8][11] = [-1.1867844E-4, -0.037765916, 0.011240432, -0.1627718, -0.0871527, -0.15140302]
+sib[11][9][9] = [-0.0635998, -0.04113502, -0.1097605, -0.04355563, -0.21587107, -0.11415113, -0.11848409, -0.10366356, -0.093662694, -0.11480201, -0.057269786]
+sib[11][9][10] = [-0.029095728, -0.012495045, -0.017741643, -0.01743728, -0.026143162, -0.014496746, -0.03998524, -0.01460873, 0.014109103, -0.001682732, -0.028564185]
+sib[11][9][11] = [-0.0635998, -0.04113502, -0.1097605, -0.04355563, -0.21587107, -0.11415113, -0.11848409, -0.10366356, -0.093662694, -0.11480201, -0.057269786]
+sib[11][10][10] = [0.016185801, 0.050528016, -0.10191259, -0.054291252, -0.0918271, -0.12861837, -0.086728685]
+sib[11][10][11] = [0.016185801, 0.050528016, -0.10191259, -0.054291252, -0.0918271, -0.12861837, -0.086728685]
+sib[11][12][11] = [-0.076583765, 0.1000884, 0.12034315, -0.030947931, -0.05483166, -0.1419828, -0.1134968, -0.111516334, -0.020103946, -0.050117638, -0.1205918]
+sib[11][12][12] = [-0.076583765, 0.1000884, 0.12034315, -0.030947931, -0.05483166, -0.1419828, -0.1134968, -0.111516334, -0.020103946, -0.050117638, -0.1205918]
+sib[11][13][11] = [-0.052365176, 0.08163097, 0.09329194, -0.02060718, -0.12897095, -0.17311844, -0.107881375, -0.14937714, -0.028665144, -0.072424866, -0.122559726]
+sib[11][13][12] = [0.16537258, -0.049174204, -0.051370934, 0.027549144, -0.06851439, -0.04088717, -0.036889978, -0.055520758, -0.009449812, -0.019570488, -0.04900318]
+sib[11][13][13] = [-0.052365176, 0.08163097, 0.09329194, -0.02060718, -0.12897095, -0.17311844, -0.107881375, -0.14937714, -0.028665144, -0.072424866, -0.122559726]
+sib[11][14][11] = [-0.26430094, 0.104408175, 0.012823897, 0.14674018, -0.20307294, -0.051624805, 0.045293376, 0.059221696]
+sib[11][14][12] = [-0.0047579724, 0.07093569, 0.059366412, -0.053807728, 0.0059649916, -0.008774804, 0.10658951, -0.0122389775]
+sib[11][14][13] = [0.009189667, 0.022168335, 0.060918458, -0.06332501, 0.0021388289, -0.008032566, 0.099790245, -0.012318529]
+sib[11][14][14] = [-0.26430094, 0.104408175, 0.012823897, 0.14674018, -0.20307294, -0.051624805, 0.045293376, 0.059221696]
+sib[12][0][0] = [-0.04580705]
+sib[12][0][1] = [0.015740372]
+sib[12][0][2] = [-0.021155044]
+sib[12][0][3] = [-0.004543713]
+sib[12][0][4] = [-0.0065771597]
+sib[12][0][5] = [-0.007920606]
+sib[12][0][6] = [-0.004363601]
+sib[12][0][7] = [1.2192794E-4]
+sib[12][0][8] = [0.0038776542]
+sib[12][0][9] = [-0.023993544]
+sib[12][0][10] = [4.330249E-4]
+sib[12][0][11] = [-0.04719632]
+sib[12][0][12] = [-0.04580705]
+sib[12][1][1] = [-0.07542464, -0.10021604, -0.092530094, -0.17725241, -0.09794984, -0.20757535]
+sib[12][1][2] = [0.035645798, -0.0010550767, -0.018948799, 0.002736577, -0.004425691, -0.0017134671]
+sib[12][1][3] = [0.19754623, -0.0011986856, 0.018373724, -0.0010610658, -0.011354887, -0.0014217427]
+sib[12][1][4] = [0.19996637, 0.0, 0.012518062, -0.0033572963, -0.008851382, -0.0014217427]
+sib[12][1][5] = [0.22279212, 0.0, 0.020722475, -0.0010610658, -0.0100392075, -0.0045994055]
+sib[12][1][6] = [0.049712542, 0.0, -0.013630568, 0.0055411807, 0.015331525, -0.011876351]
+sib[12][1][7] = [0.057650845, -0.0010550767, -0.026815884, -0.0010610658, -0.006077345, -0.0020284676]
+sib[12][1][8] = [0.060459733, -0.006991262, 0.019426785, -0.006166786, 0.0, -0.019727793]
+sib[12][1][9] = [0.018602433, -0.0051660147, 8.552619E-4, 0.0026649372, -0.01014044, -0.0033577022]
+sib[12][1][10] = [0.06866573, -0.015890565, -0.02826008, -0.014496746, -0.02010237, -0.0080662165]
+sib[12][1][11] = [0.041683365, 0.0, -0.007685021, 0.002736577, 0.005665609, -0.0026584687]
+sib[12][1][12] = [-0.07542464, -0.10021604, -0.092530094, -0.17725241, -0.09794984, -0.20757535]
+sib[12][2][2] = [-0.070287675, -0.085538626, -0.17853162, -0.10439081, -0.10050729, -0.099651605, -0.05405833, -0.0690917, -0.09129654, -0.1265269, -0.039931387]
+sib[12][2][3] = [0.0, -0.0011986856, 0.027315225, 0.0, -0.0019767783, -0.0010610659, -0.006648346, -0.032485265, -0.008552926, -0.0052283416, -0.08656964]
+sib[12][2][4] = [0.0, 6.7673783E-12, 0.01738163, -0.004602578, 0.019014481, -0.0010610659, -0.005755012, -0.02589345, -0.011145257, -0.0016539845, -0.09432313]
+sib[12][2][5] = [0.0025123034, 6.7673783E-12, 0.026715722, 9.0263964E-4, 0.014379813, 2.4786548E-4, -0.0074910205, -0.019999389, -0.011145257, 0.0, -0.09268984]
+sib[12][2][6] = [-0.002669402, -0.0024187758, 0.017989459, 0.0035821022, -1.848424E-4, 0.0026807927, -3.935173E-12, -0.005793827, 6.4053755E-11, -0.0033409346, -0.036261305]
+sib[12][2][7] = [0.0, -0.0031338136, 0.047039017, 0.0019135604, 2.9184856E-5, -0.0014732409, -9.805523E-4, -0.015657805, -0.01168974, -0.005065879, -0.08211417]
+sib[12][2][8] = [0.0, -0.006991262, 0.008516844, 0.015022312, 0.021536471, 1.5195471E-4, 0.0021693285, -0.0281388, -0.0126926545, 0.0, -0.015875768]
+sib[12][2][9] = [-6.074951E-11, 9.7394426E-11, -0.014086101, 0.0, -0.040466603, 0.0026649372, -0.014669583, -0.018978458, -0.015576752, 0.0, -0.084910095]
+sib[12][2][10] = [-0.033808216, -0.013953305, -0.037765395, 1.08569344E-4, -0.016909549, -0.017715154, -0.04482095, -0.009717198, 0.021477621, 4.7011906E-4, -0.042719033]
+sib[12][2][11] = [-0.0022680296, 6.7673783E-12, -0.06998387, 0.0, -0.05669004, 0.002736577, -0.014201675, -0.028364774, -0.008958689, 0.0, -0.09505878]
+sib[12][2][12] = [-0.070287675, -0.085538626, -0.17853162, -0.10439081, -0.10050729, -0.099651605, -0.05405833, -0.0690917, -0.09129654, -0.1265269, -0.039931387]
+sib[12][3][3] = [-0.066612326, -0.11355151, -0.1291897, -0.123219885, -0.15597168, -0.11538966, -0.1155584, -0.12066103, -0.09845304, -0.1332959, -0.030332519]
+sib[12][3][4] = [1.9813108E-11, 1.0014907E-10, 0.04262498, 0.0, -0.019905316, 7.305343E-4, 0.0010844865, 0.00540699, -0.011145257, -0.0016539845, -0.0702638]
+sib[12][3][5] = [0.0025123034, 1.0014907E-10, 0.035285797, 9.0263964E-4, 0.0021498424, 0.0020394656, 2.4181162E-4, 0.017892864, -0.013737589, -0.0035770652, -0.07525965]
+sib[12][3][6] = [0.0018903521, -0.0046117287, 0.039827913, 0.0030355034, -1.848424E-4, 0.0055411807, 0.0012310293, -0.0030283711, -0.001245365, -0.0033409346, -0.050878808]
+sib[12][3][7] = [0.0, -0.0031338136, 0.023289941, 0.0019135604, -0.013216533, 3.1835935E-4, 0.0036544318, -0.008762814, -0.016874405, -0.002893438, -0.06396307]
+sib[12][3][8] = [0.0, -0.009266639, -0.005536722, 0.011617387, 0.001163731, 1.5195471E-4, 0.015866034, -0.034351368, -0.0068342835, -0.0051903967, -0.014380393]
+sib[12][3][9] = [0.0, 1.9077612E-10, -0.013675962, 0.0, -0.039862435, 0.0059030047, -0.010863007, -0.0107096005, -0.020761417, 0.0, -0.05307404]
+sib[12][3][10] = [-0.042421516, -0.02459588, -0.043992974, -0.023169914, -0.020156486, -0.012877224, -0.0524456, -0.021688228, 0.032299124, 0.002381786, -0.033646762]
+sib[12][3][11] = [-0.0022680296, 1.0014907E-10, -0.0678906, 2.176337E-12, -0.055077005, 0.0050104028, -0.008798122, -0.014618345, -0.014143352, -5.0404254E-11, -0.06282607]
+sib[12][3][12] = [-0.066612326, -0.11355151, -0.1291897, -0.123219885, -0.15597168, -0.11538966, -0.1155584, -0.12066103, -0.09845304, -0.1332959, -0.030332519]
+sib[12][4][4] = [-0.066612326, -0.11355151, -0.12492451, -0.112929866, -0.16149957, -0.11538966, -0.116998374, -0.13061833, -0.09845304, -0.12543795, -0.061599184]
+sib[12][4][5] = [0.0025123034, 1.0014907E-10, 0.053207457, 9.0263964E-4, -0.020558564, 0.0020394656, 0.0033390545, 0.011301048, -0.012824291, 0.0, -0.07228549]
+sib[12][4][6] = [0.0018903521, -0.0024187758, 0.039827913, 0.0030355034, -1.848424E-4, 0.0055411807, 0.0012310293, -0.0030283711, -0.001245365, -9.997599E-4, -0.050878808]
+sib[12][4][7] = [0.0, -0.0031338136, 0.027766487, 0.0019135604, -0.010698572, 3.1835935E-4, 0.0017899475, -0.008762814, -0.016874405, -0.002893438, -0.06130428]
+sib[12][4][8] = [0.0, -0.009266639, -7.368182E-5, 0.011617387, 0.001163731, 0.0022711253, 0.015866034, -0.034351368, -0.0068342835, -0.004375567, -0.014380393]
+sib[12][4][9] = [0.0, 1.9077612E-10, -0.009199415, 0.0, -0.039862435, 0.0059030047, -0.009266032, -0.0107096005, -0.020761417, 0.0, -0.05307404]
+sib[12][4][10] = [-0.042421516, -0.018512525, -0.043992974, -0.023169914, -0.020156486, -0.012877224, -0.05430849, -0.021688228, 0.032247216, 4.7011906E-4, -0.039712198]
+sib[12][4][11] = [-0.0022680296, 1.0014907E-10, -0.06341405, 2.176337E-12, -0.055077005, 0.0050104028, -0.008798122, -0.014618345, -0.014143352, 0.0, -0.06282607]
+sib[12][4][12] = [-0.066612326, -0.11355151, -0.12492451, -0.112929866, -0.16149957, -0.11538966, -0.116998374, -0.13061833, -0.09845304, -0.12543795, -0.061599184]
+sib[12][5][5] = [-0.066612326, -0.10864625, -0.12343362, -0.11177879, -0.17609362, -0.11538966, -0.1549983, -0.13578743, -0.09845304, -0.1332959, -0.11867592]
+sib[12][5][6] = [0.0018903521, -0.0024187758, 0.03970538, 0.0016454, -1.848424E-4, 0.0055411807, 0.0012310293, -0.00983312, -0.0012453651, -0.0014035378, -0.046716478]
+sib[12][5][7] = [0.0, -0.002131835, 0.02546192, -2.0767644E-4, -0.018888839, 3.1835935E-4, 0.0036544318, -0.01277848, -0.016874405, -0.002893438, -0.060595863]
+sib[12][5][8] = [-0.0018001135, -0.009266639, 0.0025356233, 0.014169742, 0.004475348, 1.5195471E-4, 0.028451074, -0.024820304, -0.00857038, -0.0064024087, -0.014380393]
+sib[12][5][9] = [0.0, 1.9077612E-10, -0.00826835, 0.0, -0.04553474, 0.0059030047, -0.009266032, -0.014725266, -0.020761417, 0.0, -0.04970683]
+sib[12][5][10] = [-0.042421516, -0.02459588, -0.049889874, -0.02549581, -0.018052988, -0.012877224, -0.049359668, -0.021688228, 0.032247216, -0.0015919966, -0.033646762]
+sib[12][5][11] = [-0.0022680296, 1.0014907E-10, -0.0758889, 2.176337E-12, -0.06074931, 0.0050104028, -0.008798122, -0.01863401, -0.014143352, 0.0, -0.059458848]
+sib[12][5][12] = [-0.066612326, -0.10864625, -0.12343362, -0.11177879, -0.17609362, -0.11538966, -0.1549983, -0.13578743, -0.09845304, -0.1332959, -0.11867592]
+sib[12][6][6] = [-0.21977329, -0.14708066]
+sib[12][6][7] = [-0.0031454123, -0.0027184573]
+sib[12][6][8] = [-0.0020657047, 0.0010730807]
+sib[12][6][9] = [-0.031547464, -0.0020921042]
+sib[12][6][10] = [-0.0027999387, 0.0]
+sib[12][6][11] = [-0.038398787, -0.0020921042]
+sib[12][6][12] = [-0.21977329, -0.14708066]
+sib[12][7][7] = [-0.070287675, -0.10130751, -0.12471788, -0.11171554, -0.07886928, -0.10136128, -0.12544128, -0.09944325, -0.1007424, -0.12923843, -0.087187335]
+sib[12][7][8] = [0.0, -0.006991262, 0.008516971, 0.011617387, 0.024243666, 0.00120843, 0.01756433, -0.020783573, -0.01429616, 0.0, -0.016713453]
+sib[12][7][9] = [-0.0026487454, 1.9077612E-10, -0.020380361, 0.0, -0.030911159, 0.0026649372, -0.009129303, -0.026516961, -0.020761417, 0.0, -0.0399604]
+sib[12][7][10] = [-0.03959608, -0.02138694, -0.065242134, -0.002217327, -0.014213109, -0.017715154, -0.04369135, -0.0109786745, 0.038983237, 4.7011906E-4, -0.028741756]
+sib[12][7][11] = [-0.0022680296, 1.0014907E-10, -0.07734001, 0.0, -0.07001731, 0.002736577, -0.008661393, -0.030647058, -0.014143352, 0.0, -0.04481265]
+sib[12][7][12] = [-0.070287675, -0.10130751, -0.12471788, -0.11171554, -0.07886928, -0.10136128, -0.12544128, -0.09944325, -0.1007424, -0.12923843, -0.087187335]
+sib[12][8][8] = [-0.07740114, -0.08342379, -0.020840252, -0.16117935, -0.10326665, -0.152188]
+sib[12][8][9] = [-0.021634724, -0.0023679952, 0.0034294096, 0.0026649372, -0.00571475, -0.0023434684]
+sib[12][8][10] = [0.021962434, -0.015037, -0.03273655, -0.014496746, -0.014775982, -0.021082401]
+sib[12][8][11] = [0.0036583208, 0.0, -0.004733991, 0.002736577, 0.007878454, -0.0025892365]
+sib[12][8][12] = [-0.07740114, -0.08342379, -0.020840252, -0.16117935, -0.10326665, -0.152188]
+sib[12][9][9] = [-0.066612326, -0.086792886, -0.18704298, -0.07563632, -0.2077319, -0.112558655, -0.124514036, -0.10903801, -0.10152752, -0.12703392, -0.05805475]
+sib[12][9][10] = [-0.03663365, -0.0277887, -0.023582887, -0.028389614, -0.025193946, -0.014496746, -0.04119293, -0.01848028, 0.031277128, -0.001682732, -0.032713443]
+sib[12][9][11] = [-0.0022680296, -0.0029060307, -0.017712247, 0.0, -0.078158826, 0.0032188026, -0.009429961, -0.013295274, -0.008958689, 0.0, -0.05821557]
+sib[12][9][12] = [-0.066612326, -0.086792886, -0.18704298, -0.07563632, -0.2077319, -0.112558655, -0.124514036, -0.10903801, -0.10152752, -0.12703392, -0.05805475]
+sib[12][10][10] = [-0.043696746, 0.017504156, -0.108026385, -0.097694285, -0.084334195, -0.13396113, -0.08974121]
+sib[12][10][11] = [-0.046185188, 0.0040996876, 0.002736577, -0.021457953, 0.014619722, -0.044528395, -0.0011340148]
+sib[12][10][12] = [-0.043696746, 0.017504156, -0.108026385, -0.097694285, -0.084334195, -0.13396113, -0.08974121]
+sib[12][11][11] = [-0.05562356, -0.056120094, -0.066163555, -0.02676644, -0.22905226, -0.097308025, -0.078940906, -0.114429586, -0.084635064, -0.12053168, -0.0600905]
+sib[12][11][12] = [-0.05562356, -0.056120094, -0.066163555, -0.02676644, -0.22905226, -0.097308025, -0.078940906, -0.114429586, -0.084635064, -0.12053168, -0.0600905]
+sib[12][13][12] = [-0.0634601, 0.121503256, 0.0905497, 0.03245703, -0.10737981, -0.11269342, -0.08528571, -0.09541298, -0.025729481, -0.062081803, -0.118391044]
+sib[12][13][13] = [-0.0634601, 0.121503256, 0.0905497, 0.03245703, -0.10737981, -0.11269342, -0.08528571, -0.09541298, -0.025729481, -0.062081803, -0.118391044]
+sib[12][14][12] = [-0.2922967, 0.09841027, 0.05751633, 0.13540663, -0.19225334, -0.04868915, 0.03556701, 0.08739309]
+sib[12][14][13] = [-0.048450273, 0.04265136, 0.018110206, -0.08852613, 0.007167372, -0.0075320313, 0.051161762, -0.011463221]
+sib[12][14][14] = [-0.2922967, 0.09841027, 0.05751633, 0.13540663, -0.19225334, -0.04868915, 0.03556701, 0.08739309]
+sib[13][0][0] = [-0.002577262]
+sib[13][0][1] = [0.020385752]
+sib[13][0][2] = [-0.003985493]
+sib[13][0][3] = [0.01262584]
+sib[13][0][4] = [0.010592394]
+sib[13][0][5] = [0.009248944]
+sib[13][0][6] = [-0.0020194987]
+sib[13][0][7] = [0.01729148]
+sib[13][0][8] = [0.0043466156]
+sib[13][0][9] = [-0.015604364]
+sib[13][0][10] = [0.002398637]
+sib[13][0][11] = [-0.029153213]
+sib[13][0][12] = [-0.019152384]
+sib[13][0][13] = [-0.002577262]
+sib[13][1][1] = [-0.0035322793, -0.056849692, -0.09389981, -0.17096713, -0.101472065, -0.19047466]
+sib[13][1][2] = [0.05281534, -0.0010550767, -0.013799829, 0.002736577, -0.004425691, -0.0017134671]
+sib[13][1][3] = [0.21471578, -0.0011986856, 0.018373724, -0.0010610658, -0.011354887, -0.0014217427]
+sib[13][1][4] = [0.21713592, -0.0019344183, 0.012518062, -0.0033572963, -0.008851382, -0.0014217427]
+sib[13][1][5] = [0.23996167, 0.0, 0.019819837, -0.0010610658, -0.0100392075, -0.0045994055]
+sib[13][1][6] = [0.052056644, 0.003251902, -0.008108399, 0.0055411807, 0.015331525, -0.011876351]
+sib[13][1][7] = [0.07482041, -0.0010550767, -0.026815884, -0.0010610658, -0.006077345, -0.0020284676]
+sib[13][1][8] = [0.060928695, -0.003495631, 0.021835841, -0.008007782, 0.0, -0.020987764]
+sib[13][1][9] = [0.026991613, -0.0051660147, -0.0010380638, -0.0010610658, -0.01014044, -0.001910735]
+sib[13][1][10] = [0.07063134, -0.028143845, -0.024677392, -0.014496746, -0.02144141, -0.0075631905]
+sib[13][1][11] = [0.08260161, 0.0, -0.014365587, 0.002736577, 0.005665609, -0.0026584687]
+sib[13][1][12] = [0.14335619, 0.0, 0.01850898, -0.0010610658, -0.009589838, -0.0020284676]
+sib[13][1][13] = [-0.0035322793, -0.056849692, -0.09389981, -0.17096713, -0.101472065, -0.19047466]
+sib[13][2][2] = [-0.072285526, -0.042172294, -0.10663923, -0.10576053, -0.10048705, -0.09336635, -0.05242186, -0.061479766, -0.08743159, -0.1241359, -0.022830697]
+sib[13][2][3] = [0.0, -0.0011986856, 0.044484794, 0.0, -0.0016183588, -0.0010610659, -0.006648346, -0.032485265, -0.008552926, -0.0035743571, -0.08656964]
+sib[13][2][4] = [0.0, -0.0019344183, 0.034551185, -0.004602578, 0.0193729, -0.0010610659, -0.005755012, -0.02589345, -0.011145257, 0.0, -0.09432313]
+sib[13][2][5] = [0.0, 6.7673783E-12, 0.043885276, 1.4115933E-10, 0.014738231, 2.4786548E-4, -0.0074910205, -0.019999389, -0.011145257, 0.0, -0.09268984]
+sib[13][2][6] = [-0.0032348863, 8.3312625E-4, 0.020333562, 0.0091042705, -0.003436745, 0.0026807927, -3.935173E-12, -0.009389484, 6.4053755E-11, 0.0014698936, -0.036261305]
+sib[13][2][7] = [-0.004088621, -0.0031338136, 0.06420857, 0.0019135604, 3.8760272E-4, -0.0014732409, -9.805523E-4, -0.0167017, -0.01168974, -0.005065879, -0.08211417]
+sib[13][2][8] = [0.0, -0.003495631, 0.008985808, 0.017431367, 0.021536471, -0.001689041, 0.0021693285, -0.029445289, -0.01081989, 0.0, -0.017135741]
+sib[13][2][9] = [-0.0014469671, 9.7394426E-11, -0.0056969193, -0.0018933251, -0.036109902, -0.0010610659, -0.019288724, -0.011951676, -0.0139819635, 0.00495839, -0.08346313]
+sib[13][2][10] = [-0.033808216, -0.026206587, -0.035799783, 0.0036912595, -0.016909549, -0.017715154, -0.04581771, -0.010560656, 0.01765244, -0.0037438683, -0.042216007]
+sib[13][2][11] = [-0.0022680296, 6.7673783E-12, -0.056587223, -0.0021093525, -0.058760542, 0.002736577, -0.016456243, -0.03425883, -0.008958689, 0.0, -0.09669206]
+sib[13][2][12] = [-6.074951E-11, 6.7673783E-12, 0.027755236, 0.0, 0.0019314961, -2.0271495E-4, -0.019553484, -0.015146317, -0.016874405, -0.002893438, -0.10847643]
+sib[13][2][13] = [-0.072285526, -0.042172294, -0.10663923, -0.10576053, -0.10048705, -0.09336635, -0.05242186, -0.061479766, -0.08743159, -0.1241359, -0.022830697]
+sib[13][3][3] = [-0.06861018, -0.070185155, -0.05729734, -0.1245896, -0.15595144, -0.1091044, -0.11392195, -0.11304908, -0.094588086, -0.1309049, -0.013231826]
+sib[13][3][4] = [1.9813108E-11, -0.0019344182, 0.05979453, 0.0, -0.019546898, 7.305343E-4, 0.0010844865, 0.00540699, -0.011145257, 0.0, -0.0702638]
+sib[13][3][5] = [1.9813108E-11, 1.0014907E-10, 0.052455343, 1.4115933E-10, 0.002508262, 0.0020394656, 2.4181162E-4, 0.017892864, -0.013737589, -0.0035770652, -0.07525965]
+sib[13][3][6] = [0.0013248676, -0.0013598264, 0.042172015, 0.008557672, -0.003436745, 0.0055411807, 0.0012310293, -0.006624028, -0.001245365, 0.0014698936, -0.050878808]
+sib[13][3][7] = [-0.004088621, -0.0031338136, 0.040459488, 0.0019135604, -0.012858113, 3.1835935E-4, 0.0036544318, -0.009806709, -0.016874405, -0.002893438, -0.06396307]
+sib[13][3][8] = [0.0, -0.005771008, -0.005067763, 0.014026441, 0.001163731, -0.001689041, 0.015866034, -0.035657857, -0.0049615186, -0.0051903967, -0.015640365]
+sib[13][3][9] = [-0.001446967, 1.9077612E-10, -0.0052867793, -0.0018933251, -0.035505734, 0.0021770014, -0.015482147, -0.0036828225, -0.019166628, 0.00495839, -0.051627077]
+sib[13][3][10] = [-0.042421516, -0.036849163, -0.04202736, -0.019587224, -0.020156486, -0.012877224, -0.053442363, -0.022531686, 0.028473942, -0.0018322013, -0.033143736]
+sib[13][3][11] = [-0.0022680296, 1.0014907E-10, -0.054493945, -0.0021093525, -0.05714751, 0.0050104028, -0.01105269, -0.020512402, -0.014143352, -5.0404254E-11, -0.06539341]
+sib[13][3][12] = [0.0, 1.0014907E-10, 0.003179974, 0.0, -0.013400121, 0.0030353526, -0.014149932, -0.006800373, -0.024651403, -0.0064705033, -0.06526662]
+sib[13][3][13] = [-0.06861018, -0.070185155, -0.05729734, -0.1245896, -0.15595144, -0.1091044, -0.11392195, -0.11304908, -0.094588086, -0.1309049, -0.013231826]
+sib[13][4][4] = [-0.06861018, -0.070185155, -0.053032152, -0.11429958, -0.16147934, -0.1091044, -0.11536192, -0.12300641, -0.094588086, -0.12304694, -0.044498492]
+sib[13][4][5] = [1.9813108E-11, 1.0014907E-10, 0.070377015, 1.4115933E-10, -0.020200146, 0.0020394656, 0.0033390545, 0.011301048, -0.012824291, 0.0, -0.07228549]
+sib[13][4][6] = [0.0013248676, 8.3312625E-4, 0.042172015, 0.008557672, -0.003436745, 0.0055411807, 0.0012310293, -0.006624028, -0.001245365, 0.0038110686, -0.050878808]
+sib[13][4][7] = [-0.004088621, -0.0031338136, 0.044936035, 0.0019135604, -0.010340153, 3.1835935E-4, 0.0017899475, -0.009806709, -0.016874405, -0.002893438, -0.06130428]
+sib[13][4][8] = [0.0, -0.005771008, 3.9528054E-4, 0.014026441, 0.001163731, 4.3012958E-4, 0.015866034, -0.035657857, -0.0049615186, -0.004375567, -0.015640365]
+sib[13][4][9] = [-0.001446967, 1.9077612E-10, -8.1023434E-4, -0.0018933251, -0.035505734, 0.0021770014, -0.013885173, -0.0036828225, -0.019166628, 0.00495839, -0.051627077]
+sib[13][4][10] = [-0.042421516, -0.030765804, -0.04202736, -0.019587224, -0.020156486, -0.012877224, -0.05530525, -0.022531686, 0.028422037, -0.0037438683, -0.03920917]
+sib[13][4][11] = [-0.0022680296, 1.0014907E-10, -0.050017398, -0.0021093525, -0.05714751, 0.0050104028, -0.01105269, -0.020512402, -0.014143352, 0.0, -0.06539341]
+sib[13][4][12] = [0.0, 1.0014907E-10, 0.0076565193, 0.0, -0.013400121, 0.0030353526, -0.014149932, -0.006800373, -0.024651403, -0.0064705033, -0.06671913]
+sib[13][4][13] = [-0.06861018, -0.070185155, -0.053032152, -0.11429958, -0.16147934, -0.1091044, -0.11536192, -0.12300641, -0.094588086, -0.12304694, -0.044498492]
+sib[13][5][5] = [-0.06861018, -0.06527991, -0.051541254, -0.1131485, -0.17607339, -0.1091044, -0.15336186, -0.12817547, -0.094588086, -0.1309049, -0.101575226]
+sib[13][5][6] = [0.0013248676, 8.3312625E-4, 0.042049482, 0.0071675684, -0.003436745, 0.0055411807, 0.0012310293, -0.006624028, -0.0012453651, 0.0034072904, -0.046716478]
+sib[13][5][7] = [-0.004088621, -0.002131835, 0.042631466, -2.0767644E-4, -0.01853042, 3.1835935E-4, 0.0036544318, -0.013822373, -0.016874405, -0.002893438, -0.060595863]
+sib[13][5][8] = [-0.0018001135, -0.005771008, 0.0030045856, 0.016578797, 0.004475348, -0.001689041, 0.028451074, -0.026126793, -0.0066976147, -0.0064024087, -0.015640365]
+sib[13][5][9] = [-0.001446967, 1.9077612E-10, 1.2083119E-4, -0.0018933251, -0.04117804, 0.0021770014, -0.013885173, -0.007698486, -0.019166628, 0.00495839, -0.04825986]
+sib[13][5][10] = [-0.042421516, -0.036849163, -0.047924258, -0.021913122, -0.018052988, -0.012877224, -0.05035643, -0.022531686, 0.028422037, -0.005805984, -0.033143736]
+sib[13][5][11] = [-0.0022680296, 1.0014907E-10, -0.062492248, -0.0021093525, -0.062819816, 0.0050104028, -0.01105269, -0.02452807, -0.014143352, 0.0, -0.06202619]
+sib[13][5][12] = [0.0, 1.0014907E-10, 0.0055244016, 0.0, -0.024744734, 0.0030353526, -0.01105269, -0.012537207, -0.024651403, -0.0064705033, -0.058532193]
+sib[13][5][13] = [-0.06861018, -0.06527991, -0.051541254, -0.1131485, -0.17607339, -0.1091044, -0.15336186, -0.12817547, -0.094588086, -0.1309049, -0.101575226]
+sib[13][6][6] = [-0.14788091, -0.13914165]
+sib[13][6][7] = [0.01402414, -0.0027184573]
+sib[13][6][8] = [-0.0015967395, 0.0010730807]
+sib[13][6][9] = [-0.023158282, -0.0028650467]
+sib[13][6][10] = [-8.3432463E-4, -0.001063084]
+sib[13][6][11] = [-0.024725007, -0.0020921042]
+sib[13][6][12] = [-0.021378122, -0.004742817]
+sib[13][6][13] = [-0.14788091, -0.13914165]
+sib[13][7][7] = [-0.072285526, -0.057941165, -0.052825525, -0.113085255, -0.07884905, -0.095076025, -0.12380484, -0.091831304, -0.09687745, -0.1268474, -0.07008666]
+sib[13][7][8] = [0.0, -0.003495631, 0.008985933, 0.014026441, 0.024243666, -6.325657E-4, 0.01756433, -0.02209006, -0.012423395, 0.0, -0.017973425]
+sib[13][7][9] = [-0.0040957127, 1.9077612E-10, -0.01199118, -0.0018933251, -0.026554458, -0.0010610659, -0.013748444, -0.01949018, -0.019166628, 0.00495839, -0.03851343]
+sib[13][7][10] = [-0.03959608, -0.03364022, -0.06327652, 0.0013653624, -0.014213109, -0.017715154, -0.04468811, -0.011822132, 0.035158057, -0.0037438683, -0.028238727]
+sib[13][7][11] = [-0.005686443, 1.0014907E-10, -0.06616777, -0.0021093525, -0.07552003, 0.002736577, -0.010915961, -0.036541115, -0.014143352, 0.0, -0.046445943]
+sib[13][7][12] = [0.0, 1.0014907E-10, -0.00955368, 0.0, -0.016105724, -2.0271495E-4, -0.010915961, -0.020442957, -0.024565026, -0.002893438, -0.048007853]
+sib[13][7][13] = [-0.072285526, -0.057941165, -0.052825525, -0.113085255, -0.07884905, -0.095076025, -0.12380484, -0.091831304, -0.09687745, -0.1268474, -0.07008666]
+sib[13][8][8] = [-0.005508784, -0.040057447, -0.022209981, -0.1548941, -0.10678887, -0.13508728]
+sib[13][8][9] = [-0.013245542, -0.0023679952, 0.0015360848, -0.0010610658, -0.00571475, -8.9650124E-4]
+sib[13][8][10] = [0.023928046, -0.02729028, -0.029153861, -0.014496746, -0.016115021, -0.020579375]
+sib[13][8][11] = [0.032626066, 0.0, -0.020258695, 0.002736577, 0.007878454, -0.0025892365]
+sib[13][8][12] = [0.039524592, 0.0, -0.0035681347, -0.0010610658, -0.0051641474, -0.0016442349]
+sib[13][8][13] = [-0.005508784, -0.040057447, -0.022209981, -0.1548941, -0.10678887, -0.13508728]
+sib[13][9][9] = [-0.06861018, -0.04342656, -0.115150586, -0.077006035, -0.20771168, -0.1062734, -0.12287759, -0.10142606, -0.09766257, -0.124642916, -0.04095405]
+sib[13][9][10] = [-0.03663365, -0.040041983, -0.028703984, -0.027952358, -0.025193946, -0.014496746, -0.04218969, -0.019323738, 0.02745195, -0.005896719, -0.032210417]
+sib[13][9][11] = [-0.0022680296, -0.0029060307, -0.0020718835, -0.0021093525, -0.0809479, 0.0032188026, -0.011684529, -0.021435667, -0.008958689, 0.0, -0.060782917]
+sib[13][9][12] = [0.0, 1.0014907E-10, 0.055907477, -6.03846E-4, -0.03287065, 0.0012437524, -0.008434844, -0.0068599246, -0.016874405, -0.002893438, -0.06725843]
+sib[13][9][13] = [-0.06861018, -0.04342656, -0.115150586, -0.077006035, -0.20771168, -0.1062734, -0.12287759, -0.10142606, -0.09766257, -0.124642916, -0.04095405]
+sib[13][10][10] = [0.028195608, 0.0608705, -0.10174113, -0.09906401, -0.08908608, -0.11686043, -0.091739066]
+sib[13][10][11] = [-0.04299295, 0.0040996876, 0.002736577, -0.023567306, 0.012840907, -0.044528395, -0.0011340148]
+sib[13][10][12] = [-0.026183745, -0.0160307, -0.0010610658, -0.012499432, -0.03429284, -0.04231813, 0.0]
+sib[13][10][13] = [0.028195608, 0.0608705, -0.10174113, -0.09906401, -0.08908608, -0.11686043, -0.091739066]
+sib[13][11][11] = [-0.05762142, -0.055615727, -0.08320304, -0.04724413, -0.20891012, -0.100216396, -0.044462293, -0.09639623, -0.08077011, -0.12666674, -0.010189604]
+sib[13][11][12] = [-6.074951E-11, 6.7673783E-12, 0.05310737, 0.0, -0.033819657, 0.0032234818, -0.014521137, -0.018921316, -0.014282072, -0.002893438, -0.0884412]
+sib[13][11][13] = [-0.05762142, -0.055615727, -0.08320304, -0.04724413, -0.20891012, -0.100216396, -0.044462293, -0.09639623, -0.08077011, -0.12666674, -0.010189604]
+sib[13][12][12] = [-0.07050711, -0.03828383, 0.069364466, -0.075059645, -0.17359406, -0.09716197, -0.16338599, -0.09590105, -0.10625561, -0.11810293, -0.06465854]
+sib[13][12][13] = [-0.07050711, -0.03828383, 0.069364466, -0.075059645, -0.17359406, -0.09716197, -0.16338599, -0.09590105, -0.10625561, -0.11810293, -0.06465854]
+sib[13][14][13] = [-0.1659211, 0.09340296, -0.03943733, 0.11446824, -0.14515284, -0.054249067, 0.0129298, 0.13796264]
+sib[13][14][14] = [-0.1659211, 0.09340296, -0.03943733, 0.11446824, -0.14515284, -0.054249067, 0.0129298, 0.13796264]
+sib[14][0][0] = [-0.26117626]
+sib[14][0][1] = [-0.017622618]
+sib[14][0][2] = [0.019042788]
+sib[14][0][3] = [0.034817807]
+sib[14][0][4] = [0.03715513]
+sib[14][0][5] = [0.07564745]
+sib[14][0][6] = [0.08416031]
+sib[14][0][7] = [0.026421864]
+sib[14][0][8] = [-0.017768983]
+sib[14][0][9] = [0.014121643]
+sib[14][0][10] = [0.01895562]
+sib[14][0][11] = [0.0027374383]
+sib[14][0][12] = [0.0014118538]
+sib[14][0][13] = [-3.5631564E-4]
+sib[14][0][14] = [-0.26117626]
+sib[14][1][1] = [-0.17582023, -0.33003432]
+sib[14][1][2] = [-0.07298219, 0.08017363]
+sib[14][1][3] = [-0.044595454, 0.24184157]
+sib[14][1][4] = [-0.044595454, 0.24863249]
+sib[14][1][5] = [-0.041108444, 0.31129408]
+sib[14][1][6] = [-0.055057786, 0.13690108]
+sib[14][1][7] = [-0.06542454, 0.08888463]
+sib[14][1][8] = [-0.084223025, 0.037911303]
+sib[14][1][9] = [-0.05191639, 0.06165144]
+sib[14][1][10] = [-0.0041375235, 0.085146636]
+sib[14][1][11] = [-0.057649482, 0.11942609]
+sib[14][1][12] = [-0.06268189, 0.19172941]
+sib[14][1][13] = [-0.045791917, 0.1670861]
+sib[14][1][14] = [-0.17582023, -0.33003432]
+sib[14][2][2] = [-0.41633445, -0.3325971, -0.0025394333, -0.103917405, -0.06280382, -0.0606209, -0.06155448, -0.095411405]
+sib[14][2][3] = [0.047140226, -0.17357776, -0.12736656, -0.004048791, 0.0013672397, 0.002382424, -0.003422699, -0.03606269]
+sib[14][2][4] = [0.05560075, -0.17370752, -0.1452667, 0.014709412, -0.0032665338, 0.002382424, -0.008025277, -0.031911064]
+sib[14][2][5] = [0.10477061, -0.19139603, -0.13696872, 0.010074741, -0.0019576023, 0.002382424, -0.0019034167, -0.022194244]
+sib[14][2][6] = [0.10651337, 0.2530592, -0.0836741, 0.0, 0.005372986, -0.0024187758, 0.0035821022, -0.009184968]
+sib[14][2][7] = [0.06782577, -0.059634767, -0.1532801, -8.1344135E-4, -3.3273446E-4, 0.002462812, 0.001316632, -0.024671111]
+sib[14][2][8] = [-0.011346394, 0.013796195, -0.08232155, 0.021307971, -5.158714E-11, 0.0, 0.017145041, -0.02539291]
+sib[14][2][9] = [0.018515907, -0.10642335, -0.14123863, -0.042538613, -0.0017092963, 0.002382424, -5.969284E-4, -0.025626231]
+sib[14][2][10] = [-0.014229231, -0.088017225, -0.03879034, -0.016909549, -0.0055060163, -0.004306007, 0.0022200055, -0.008164193]
+sib[14][2][11] = [-0.030209748, -0.103037186, -0.15945292, -0.05590263, -7.144998E-5, 0.0013483575, -0.0021162108, -0.03075184]
+sib[14][2][12] = [0.038159836, -0.10674603, -0.17853299, 0.0066432473, -0.0038468728, 0.002382424, -0.0021162108, -0.02476873]
+sib[14][2][13] = [0.041038126, -0.10771326, -0.15810171, -0.0029368624, 7.86901E-4, 0.00244402, 0.0050375573, -0.018874675]
+sib[14][2][14] = [-0.41633445, -0.3325971, -0.0025394333, -0.103917405, -0.06280382, -0.0606209, -0.06155448, -0.095411405]
+sib[14][3][3] = [-0.36699247, -0.2039112, 0.0070594307, -0.15938173, -0.07854187, -0.088633776, -0.08038355, -0.14698069]
+sib[14][3][4] = [0.06682073, -0.23289232, -0.11106071, -0.02197733, 0.00315884, 0.002382424, -0.003422699, 0.001829566]
+sib[14][3][5] = [0.11334067, -0.25166684, -0.11953853, -0.0021552278, -1.660022E-4, 0.002382424, -0.0019034167, 0.01569801]
+sib[14][3][6] = [0.12835182, 0.31971252, -0.098291606, 0.0, 0.008233374, -0.0046117287, 0.0030355034, -0.0064195115]
+sib[14][3][7] = [0.044076692, -9.520084E-4, -0.13512899, -0.014059158, 0.0014588658, 0.002462812, 0.001316632, -0.017776119]
+sib[14][3][8] = [-0.02539996, 0.028047346, -0.08082617, 9.35231E-4, -5.158714E-11, -0.002275377, 0.013740117, -0.03160548]
+sib[14][3][9] = [0.018926047, -0.11500114, -0.10940257, -0.041934446, 0.0015287712, 0.002382424, -5.969284E-4, -0.017357375]
+sib[14][3][10] = [-0.020456813, -0.1725777, -0.02971807, -0.020156486, -6.6808646E-4, -0.014948583, -0.02105848, -0.020135224]
+sib[14][3][11] = [-0.028116472, -0.08097203, -0.12815426, -0.054289598, 0.0022023758, 0.0013483576, -0.0021162108, -0.01700541]
+sib[14][3][12] = [0.013584574, -0.11547441, -0.13625723, -0.008688369, -6.0880545E-4, 0.002382424, -0.0021162108, -0.016422788]
+sib[14][3][13] = [0.016462866, -0.11570191, -0.11679992, -0.018268479, 0.0040249685, 0.00244402, 0.0050375573, -0.01052873]
+sib[14][3][14] = [-0.36699247, -0.2039112, 0.0070594307, -0.15938173, -0.07854187, -0.088633776, -0.08038355, -0.14698069]
+sib[14][4][4] = [-0.36272728, -0.2256955, -0.024207238, -0.16490962, -0.07854187, -0.088633776, -0.07009352, -0.156938]
+sib[14][4][5] = [0.117238976, -0.24738343, -0.10641773, -0.022630576, 0.0044677714, 0.002382424, -0.0019034167, 0.011546385]
+sib[14][4][6] = [0.12835182, 0.3320111, -0.098291606, 0.0, 0.008233374, -0.0024187758, 0.0030355034, -0.0064195115]
+sib[14][4][7] = [0.04855324, -0.009776178, -0.1324702, -0.011541197, 0.0014588658, 0.002462812, 0.001316632, -0.017776119]
+sib[14][4][8] = [-0.019936921, 0.019036163, -0.08082617, 9.35231E-4, 0.0021191705, -0.002275377, 0.013740117, -0.03160548]
+sib[14][4][9] = [0.023402592, -0.123825304, -0.10940257, -0.041934446, 0.0015287712, 0.002382424, -5.969284E-4, -0.017357375]
+sib[14][4][10] = [-0.020456813, -0.1725777, -0.035783507, -0.020156486, -6.6808646E-4, -0.008865225, -0.02105848, -0.020135224]
+sib[14][4][11] = [-0.023639925, -0.08979619, -0.12815426, -0.054289598, 0.0022023758, 0.0013483576, -0.0021162108, -0.01700541]
+sib[14][4][12] = [0.01806112, -0.12429859, -0.13770974, -0.008688369, -6.0880545E-4, 0.002382424, -0.0021162108, -0.016422788]
+sib[14][4][13] = [0.020939412, -0.123445585, -0.11679992, -0.018268479, 0.0040249685, 0.00244402, 0.0050375573, -0.01052873]
+sib[14][4][14] = [-0.36272728, -0.2256955, -0.024207238, -0.16490962, -0.07854187, -0.088633776, -0.07009352, -0.156938]
+sib[14][5][5] = [-0.36123642, -0.24482392, -0.081283964, -0.17950368, -0.07854187, -0.08372852, -0.06894244, -0.16210708]
+sib[14][5][6] = [0.11223895, 0.3020243, -0.09068653, 0.0, 0.008233374, -0.0024187758, 0.0016454, -0.0064195115]
+sib[14][5][7] = [0.04624867, -0.008069332, -0.13176179, -0.019731464, 0.0014588658, 0.0034647905, -8.0460485E-4, -0.021791784]
+sib[14][5][8] = [-0.017327616, -0.00891828, -0.08082617, 0.004246848, -5.158714E-11, -0.002275377, 0.016292471, -0.022074414]
+sib[14][5][9] = [0.024333661, -0.122265466, -0.10603536, -0.04760675, 0.0015287712, 0.002382424, -5.969284E-4, -0.021373041]
+sib[14][5][10] = [-0.026353706, -0.16696651, -0.02971807, -0.018052988, -6.6808646E-4, -0.014948583, -0.023384375, -0.020135224]
+sib[14][5][11] = [-0.03611477, -0.10026051, -0.12478705, -0.0599619, 0.0022023758, 0.0013483576, -0.0021162108, -0.021021076]
+sib[14][5][12] = [0.015929002, -0.13113727, -0.12952282, -0.02003298, -6.0880545E-4, 0.002382424, -0.0021162108, -0.022159623]
+sib[14][5][13] = [0.018807292, -0.122472, -0.11006549, -0.029613093, 0.0040249685, 0.00244402, 0.0050375573, -0.016265566]
+sib[14][5][14] = [-0.36123642, -0.24482392, -0.081283964, -0.17950368, -0.07854187, -0.08372852, -0.06894244, -0.16210708]
+sib[14][6][6] = [-0.01986646, -0.4457749]
+sib[14][6][7] = [0.04084371, 0.023154521]
+sib[14][6][8] = [-0.06312829, -0.023712344]
+sib[14][6][9] = [0.1304324, 0.006567724]
+sib[14][6][10] = [0.056466203, 0.015722657]
+sib[14][6][11] = [0.06034638, 0.0071656443]
+sib[14][6][12] = [0.03023277, -0.005183216]
+sib[14][6][13] = [0.044423435, -0.002582052]
+sib[14][6][14] = [-0.01986646, -0.4457749]
+sib[14][7][7] = [-0.36252066, -0.31642604, -0.049795393, -0.082279354, -0.0645135, -0.076389775, -0.068879195, -0.12576294]
+sib[14][7][8] = [-0.009542683, 0.027514502, -0.07787864, 0.024015168, -5.158714E-11, 0.0, 0.013740117, -0.018037684]
+sib[14][7][9] = [0.012221649, -0.108519375, -0.09628893, -0.03298317, -0.0017092963, 0.002382424, -5.969284E-4, -0.03316474]
+sib[14][7][10] = [-0.041705973, -0.09222949, -0.024813062, -0.014213109, -0.0055060163, -0.011739643, -1.05890875E-4, -0.009425669]
+sib[14][7][11] = [-0.039790306, -0.117010556, -0.1092068, -0.07266212, -7.144998E-5, 0.0013483576, -0.0021162108, -0.03303413]
+sib[14][7][12] = [-0.0013734996, -0.15504168, -0.11806441, -0.014826199, -0.0038468728, 0.002382424, -0.0021162108, -0.030065373]
+sib[14][7][13] = [0.0037292093, -0.14397092, -0.09954115, -0.020974083, 7.86901E-4, 0.00244402, 0.0050375573, -0.024171317]
+sib[14][7][14] = [-0.36252066, -0.31642604, -0.049795393, -0.082279354, -0.0645135, -0.076389775, -0.068879195, -0.12576294]
+sib[14][8][8] = [-0.12043289, -0.3320108]
+sib[14][8][9] = [-0.049023703, 0.020810444]
+sib[14][8][10] = [-0.017153706, 0.038443338]
+sib[14][8][11] = [-0.05758025, 0.06945055]
+sib[14][8][12] = [-0.062297665, 0.07594731]
+sib[14][8][13] = [-0.045407683, 0.0632545]
+sib[14][8][14] = [-0.12043289, -0.3320108]
+sib[14][9][9] = [-0.42484578, -0.30829483, -0.020662794, -0.21114197, -0.07571086, -0.061875165, -0.03279999, -0.1353577]
+sib[14][9][10] = [-0.0072616246, -0.10945691, -0.039056044, -0.025193946, -0.0022876072, -0.018141404, -0.023384375, -0.016927276]
+sib[14][9][11] = [0.024305591, -0.067444876, -0.12354376, -0.07808998, 4.107759E-4, -0.0015576731, -0.0021162108, -0.017928675]
+sib[14][9][12] = [0.068555795, -0.093527764, -0.13824904, -0.02887747, -0.0024004057, 0.002382424, -0.0027200566, -0.018728673]
+sib[14][9][13] = [0.06919037, -0.082605064, -0.12528051, -0.034875646, 0.0022333683, 0.00244402, 0.0050375573, -0.010588281]
+sib[14][9][14] = [-0.42484578, -0.30829483, -0.020662794, -0.21114197, -0.07571086, -0.061875165, -0.03279999, -0.1353577]
+sib[14][10][10] = [-0.08593696, -0.30099216, -0.17435792, -0.05781908]
+sib[14][10][11] = [-0.10663833, -9.831986E-4, -0.02013312, -7.1449904E-5]
+sib[14][10][12] = [-0.104243465, -0.016535712, -0.06986312, -0.0047052237]
+sib[14][10][13] = [-0.08735348, -0.008938649, -0.059024725, -7.1449904E-5]
+sib[14][10][14] = [-0.08593696, -0.30099216, -0.17435792, -0.05781908]
+sib[14][11][11] = [-0.39289823, -0.30791253, 0.010101652, -0.21234041, -0.06965387, -0.07406434, -0.0030380678, -0.13032787]
+sib[14][11][12] = [0.04972389, -0.11358053, -0.14835113, -0.021637682, 0.004213098, 0.002382424, -0.0021162108, -0.028382119]
+sib[14][11][13] = [0.058538865, -0.11691623, -0.15007612, -0.01597961, 0.004213098, -3.959747E-4, 0.0050375573, -0.019224772]
+sib[14][11][14] = [-0.39289823, -0.30791253, 0.010101652, -0.21234041, -0.06965387, -0.07406434, -0.0030380678, -0.13032787]
+sib[14][12][12] = [-0.32926255, -0.34232852, -0.011567077, -0.15690242, -0.07579308, -0.09959442, -0.049961574, -0.11941129]
+sib[14][12][13] = [0.027948447, -0.13304974, -0.09411263, -0.03767293, 7.8690104E-4, 0.00244402, 0.0050375573, -0.019369822]
+sib[14][12][14] = [-0.32926255, -0.34232852, -0.011567077, -0.15690242, -0.07579308, -0.09959442, -0.049961574, -0.11941129]
+sib[14][13][13] = [-0.27716342, -0.29918027, 0.002273057, -0.17363767, -0.07579308, -0.09091581, -0.04491078, -0.12332719]
+sib[14][13][14] = [-0.27716342, -0.29918027, 0.002273057, -0.17363767, -0.07579308, -0.09091581, -0.04491078, -0.12332719]
+gra[0][1][0] = [-0.22818854]
+gra[0][1][1] = [-0.22818854]
+gra[0][1][2] = [-0.11684589]
+gra[0][1][3] = [-0.07394948]
+gra[0][1][4] = [-0.0680243]
+gra[0][1][5] = [-0.05763626]
+gra[0][1][6] = [0.041646246]
+gra[0][1][7] = [-0.057812385]
+gra[0][1][8] = [0.0034977961]
+gra[0][1][9] = [-0.07727066]
+gra[0][1][10] = [-0.055504914]
+gra[0][1][11] = [-0.14296876]
+gra[0][1][12] = [-0.12293938]
+gra[0][1][13] = [-0.10813473]
+gra[0][1][14] = [0.45705685]
+gra[0][2][0] = [-0.15013406, -0.2426285]
+gra[0][2][1] = [0.019528074, 0.0660074]
+gra[0][2][2] = [-0.15013406, -0.2426285]
+gra[0][2][3] = [-0.04805225, -0.10163534]
+gra[0][2][4] = [-0.072765164, -0.11548856]
+gra[0][2][5] = [-0.058554545, -0.11241687]
+gra[0][2][6] = [0.019643955, -0.032943882]
+gra[0][2][7] = [-0.06858881, -0.09112317]
+gra[0][2][8] = [-0.04587385, -0.09906794]
+gra[0][2][9] = [-0.08696036, -0.08442209]
+gra[0][2][10] = [-0.06429993, -0.024919685]
+gra[0][2][11] = [-0.12994505, -0.043445118]
+gra[0][2][12] = [-0.14164223, -0.04568313]
+gra[0][2][13] = [-0.099208415, -0.06146796]
+gra[0][2][14] = [0.41737968, 0.14532717]
+gra[0][3][0] = [-0.13910182, -0.2825055]
+gra[0][3][1] = [0.028612794, 0.08540308]
+gra[0][3][2] = [-0.046550658, -0.0182662]
+gra[0][3][3] = [-0.13910182, -0.2825055]
+gra[0][3][4] = [0.0108578075, -0.035993043]
+gra[0][3][5] = [3.5551563E-4, -0.051619668]
+gra[0][3][6] = [0.01169499, -0.048168648]
+gra[0][3][7] = [-0.017285692, -0.09887939]
+gra[0][3][8] = [-0.04997577, -0.14533053]
+gra[0][3][9] = [-0.044813514, -0.06871706]
+gra[0][3][10] = [-0.052825183, 0.04502643]
+gra[0][3][11] = [-0.091644205, -0.039359495]
+gra[0][3][12] = [-0.0813158, -0.079372145]
+gra[0][3][13] = [-0.04325054, -0.08941097]
+gra[0][3][14] = [0.43075097, 0.16887097]
+gra[0][4][0] = [-0.13910182, -0.28454143]
+gra[0][4][1] = [0.028612794, 0.08540308]
+gra[0][4][2] = [-0.053501334, -0.022827461]
+gra[0][4][3] = [0.01548511, 0.022885837]
+gra[0][4][4] = [-0.13910182, -0.28454143]
+gra[0][4][5] = [0.029627925, -0.03535446]
+gra[0][4][6] = [0.01169499, -0.048168648]
+gra[0][4][7] = [-0.017285692, -0.089105465]
+gra[0][4][8] = [-0.04997577, -0.14246826]
+gra[0][4][9] = [-0.044813514, -0.06973502]
+gra[0][4][10] = [-0.052825183, 0.042236067]
+gra[0][4][11] = [-0.091644205, -0.040377453]
+gra[0][4][12] = [-0.0813158, -0.0803901]
+gra[0][4][13] = [-0.04325054, -0.090428926]
+gra[0][4][14] = [0.43075097, 0.16887097]
+gra[0][5][0] = [-0.14515881, -0.29451418]
+gra[0][5][1] = [0.028612794, 0.0703686]
+gra[0][5][2] = [-0.055704843, -0.020307925]
+gra[0][5][3] = [0.0072715217, 0.020844113]
+gra[0][5][4] = [-5.109301E-4, 0.025405373]
+gra[0][5][5] = [-0.14515881, -0.29451418]
+gra[0][5][6] = [0.013943817, -0.036353186]
+gra[0][5][7] = [-0.01461166, -0.08993692]
+gra[0][5][8] = [-0.060220703, -0.10150701]
+gra[0][5][9] = [-0.043248653, -0.05752173]
+gra[0][5][10] = [-0.05493198, 0.042415746]
+gra[0][5][11] = [-0.09857967, -0.030557191]
+gra[0][5][12] = [-0.08693646, -0.07471453]
+gra[0][5][13] = [-0.047174573, -0.076235354]
+gra[0][5][14] = [0.44249806, 0.15094155]
+gra[0][6][0] = [-0.20701182, -0.20022848, -0.104408376]
+gra[0][6][1] = [0.14289244, 0.0283306, -0.029538298]
+gra[0][6][2] = [-0.0082890075, 0.05742196, -0.011392591]
+gra[0][6][3] = [0.0044608647, -0.029823117, -0.017902642]
+gra[0][6][4] = [-0.020159526, -0.029823117, -0.017902642]
+gra[0][6][5] = [0.029669786, -0.044923708, -0.017902642]
+gra[0][6][6] = [-0.20701182, -0.20022848, -0.104408376]
+gra[0][6][7] = [-0.10183145, -0.091028236, -0.04588911]
+gra[0][6][8] = [0.032606296, 0.017808456, -0.008648319]
+gra[0][6][9] = [-0.13632824, -0.07054741, -0.02793441]
+gra[0][6][10] = [-0.059310794, -0.04506547, 0.009192239]
+gra[0][6][11] = [-0.1909292, -0.092181034, -0.0437085]
+gra[0][6][12] = [-0.16031356, -0.065739915, -0.03355049]
+gra[0][6][13] = [-0.15541416, -0.027346965, -0.036728404]
+gra[0][6][14] = [0.7396867, 0.27478725, 0.2738842]
+gra[0][7][0] = [-0.1473084, -0.25213647]
+gra[0][7][1] = [0.035285007, 0.058604628]
+gra[0][7][2] = [-0.05160928, -0.0224412]
+gra[0][7][3] = [0.020225829, -0.029645607]
+gra[0][7][4] = [0.006433309, -0.029645607]
+gra[0][7][5] = [0.034157895, -0.027836025]
+gra[0][7][6] = [-0.02770169, 0.0031483166]
+gra[0][7][7] = [-0.1473084, -0.25213647]
+gra[0][7][8] = [-0.029250327, -0.083425164]
+gra[0][7][9] = [-0.0536678, -0.10675399]
+gra[0][7][10] = [-0.062462002, 0.027226757]
+gra[0][7][11] = [-0.11521182, -0.06146239]
+gra[0][7][12] = [-0.098107755, -0.08854464]
+gra[0][7][13] = [-0.05266825, -0.092032686]
+gra[0][7][14] = [0.4630408, 0.15594469]
+gra[0][8][0] = [-0.2117028]
+gra[0][8][1] = [0.017306514]
+gra[0][8][2] = [-0.09911068]
+gra[0][8][3] = [-0.020114591]
+gra[0][8][4] = [-0.03958766]
+gra[0][8][5] = [-0.0038710376]
+gra[0][8][6] = [-0.06144519]
+gra[0][8][7] = [-0.07898003]
+gra[0][8][8] = [-0.2117028]
+gra[0][8][9] = [-0.11180681]
+gra[0][8][10] = [-0.05344535]
+gra[0][8][11] = [-0.17514]
+gra[0][8][12] = [-0.16525681]
+gra[0][8][13] = [-0.15022904]
+gra[0][8][14] = [0.5003734]
+gra[0][9][0] = [-0.17324714, -0.21192437]
+gra[0][9][1] = [0.026308253, 0.07592523]
+gra[0][9][2] = [-0.062093064, -0.02629318]
+gra[0][9][3] = [0.0027108872, -0.010167679]
+gra[0][9][4] = [-0.011081627, -0.008946633]
+gra[0][9][5] = [0.016642952, -0.004286417]
+gra[0][9][6] = [-0.058611736, 0.0031483166]
+gra[0][9][7] = [-0.07019833, -0.032258406]
+gra[0][9][8] = [-0.020757651, 0.02516887]
+gra[0][9][9] = [-0.17324714, -0.21192437]
+gra[0][9][10] = [-0.03127932, 0.021869836]
+gra[0][9][11] = [-0.14179832, -0.06737257]
+gra[0][9][12] = [-0.12213887, -0.07869322]
+gra[0][9][13] = [-0.08363266, -0.11601491]
+gra[0][9][14] = [0.41314566, 0.14072108]
+gra[0][10][0] = [-0.14749695]
+gra[0][10][1] = [0.042411044]
+gra[0][10][2] = [-0.0708016]
+gra[0][10][3] = [0.012733186]
+gra[0][10][4] = [-0.0067398907]
+gra[0][10][5] = [0.0209847]
+gra[0][10][6] = [-0.080536366]
+gra[0][10][7] = [-0.06538718]
+gra[0][10][8] = [-0.06640356]
+gra[0][10][9] = [-0.029906988]
+gra[0][10][10] = [-0.14749695]
+gra[0][10][11] = [-0.11649244]
+gra[0][10][12] = [-0.12730673]
+gra[0][10][13] = [-0.11145951]
+gra[0][10][14] = [0.3879149]
+gra[0][11][0] = [-0.1370282, -0.23143397]
+gra[0][11][1] = [0.0273618, 0.084600694]
+gra[0][11][2] = [-0.063277826, -0.023195233]
+gra[0][11][3] = [0.004298934, -0.032105718]
+gra[0][11][4] = [-0.00949358, -0.032105718]
+gra[0][11][5] = [0.018230999, -0.027445499]
+gra[0][11][6] = [-0.06418139, 0.0031483166]
+gra[0][11][7] = [-0.07162588, -0.03143182]
+gra[0][11][8] = [-0.06400743, 0.048796967]
+gra[0][11][9] = [-0.021573273, -0.020941049]
+gra[0][11][10] = [0.020022688, -0.024484597]
+gra[0][11][11] = [-0.1370282, -0.23143397]
+gra[0][11][12] = [-0.13074017, -0.035075203]
+gra[0][11][13] = [-0.11738783, -0.0598739]
+gra[0][11][14] = [0.4557841, 0.12184289]
+gra[0][12][0] = [-0.14078712, -0.28310618]
+gra[0][12][1] = [0.02626732, 0.07668723]
+gra[0][12][2] = [-0.05231997, -0.034314517]
+gra[0][12][3] = [0.014959173, -0.0400435]
+gra[0][12][4] = [0.0011666575, -0.0400435]
+gra[0][12][5] = [0.028891241, -0.03924354]
+gra[0][12][6] = [-0.06071323, 0.0031483166]
+gra[0][12][7] = [-0.05261325, -0.0455008]
+gra[0][12][8] = [-0.06375543, 0.04426416]
+gra[0][12][9] = [-0.015454872, -0.03264485]
+gra[0][12][10] = [0.026441302, -0.027270192]
+gra[0][12][11] = [-0.111271694, -0.016094657]
+gra[0][12][12] = [-0.14078712, -0.28310618]
+gra[0][12][13] = [-0.045593165, -0.047326043]
+gra[0][12][14] = [0.43311912, 0.15603168]
+gra[0][13][0] = [-0.16068856, -0.27489665]
+gra[0][13][1] = [0.007832401, 0.04545995]
+gra[0][13][2] = [-0.056557372, -0.024525002]
+gra[0][13][3] = [0.010721763, -0.034435283]
+gra[0][13][4] = [-0.0030707559, -0.031209692]
+gra[0][13][5] = [0.024653831, -0.02940011]
+gra[0][13][6] = [-0.062085137, 0.0031483166]
+gra[0][13][7] = [-0.054515734, -0.038377617]
+gra[0][13][8] = [-0.085020155, 0.015137604]
+gra[0][13][9] = [-0.024306918, -0.02129151]
+gra[0][13][10] = [0.035358965, -0.00568016]
+gra[0][13][11] = [-0.12777625, -0.004063463]
+gra[0][13][12] = [-0.011886083, -0.022303093]
+gra[0][13][13] = [-0.16068856, -0.27489665]
+gra[0][13][14] = [0.45522755, 0.13709247]
+gra[0][14][0] = [-0.17188504, -0.4140188, -0.21580803, -0.30272162]
+gra[0][14][1] = [0.016842496, -0.017852116, -0.037359446, 0.08003807]
+gra[0][14][2] = [-0.036550064, -0.054342628, -0.08685365, -0.065238416]
+gra[0][14][3] = [0.12644783, -0.11217301, -0.1632629, -0.049610063]
+gra[0][14][4] = [0.10285749, -0.11729095, -0.1632629, -0.049610063]
+gra[0][14][5] = [0.13867706, -0.17571141, -0.17718932, -0.04432483]
+gra[0][14][6] = [-0.09154768, 0.12986793, 0.07644551, -0.0072514024]
+gra[0][14][7] = [-0.06673313, -0.07734997, -0.14175922, -0.070629224]
+gra[0][14][8] = [-0.11277676, -0.023170393, -0.014400727, 0.097420625]
+gra[0][14][9] = [5.980348E-4, -0.16348687, -0.13709308, -0.03563946]
+gra[0][14][10] = [0.13337196, -0.08529888, -0.09218985, 0.08115862]
+gra[0][14][11] = [-0.10826583, -0.099610835, -0.077772625, -0.056411043]
+gra[0][14][12] = [0.038882237, -0.11401746, -0.1542461, -0.06652495]
+gra[0][14][13] = [0.013515249, -0.12234244, -0.15172419, -0.04440602]
+gra[0][14][14] = [-0.17188504, -0.4140188, -0.21580803, -0.30272162]
+gra[1][0][0] = [-0.108077995]
+gra[1][0][1] = [-0.108077995]
+gra[1][2][1] = [0.03391336, -0.1725873, 0.0012959396, -0.060160123, -0.25640324, -0.07938032]
+gra[1][2][2] = [0.03391336, -0.1725873, 0.0012959396, -0.060160123, -0.25640324, -0.07938032]
+gra[1][2][3] = [-0.09120312, 0.014431813, 0.11346866, 0.08282627, -0.012589271, -0.035313837]
+gra[1][2][4] = [-0.10589576, -0.0059166737, 0.045106955, 0.053036187, 0.014354843, -0.04964634]
+gra[1][2][5] = [-0.09762943, -0.0027514172, 0.008785598, 0.025530735, 0.019964844, -0.053498782]
+gra[1][2][6] = [0.05597324, 0.01847283, -0.033105604, 0.0642303, -0.0067018787, -0.034922447]
+gra[1][2][7] = [-0.057329256, -0.013323549, 0.009656799, 0.125539, -0.0463543, -0.029764814]
+gra[1][2][8] = [-0.09219575, 0.030391878, -0.16111393, -0.038332492, 0.031330578, 9.5252134E-4]
+gra[1][2][9] = [0.026323536, -0.03530977, 0.2074039, 0.19392449, -0.03207425, -0.023239741]
+gra[1][2][10] = [0.038964078, 0.0069643552, -0.10429216, 0.02605302, -0.04147891, -0.02538526]
+gra[1][2][11] = [0.06267894, -0.034079902, 0.11534285, 0.21231613, -0.07042499, 0.02830124]
+gra[1][2][12] = [0.022294577, -0.07818291, 0.06643256, 0.21217202, -0.059620876, 0.022926517]
+gra[1][2][13] = [0.008492436, -0.08288318, 0.05925089, 0.1912733, -0.024221312, -1.7583044E-4]
+gra[1][2][14] = [0.008239258, -0.0070896456, -0.002662993, 0.023809846, 0.032671068, -0.078601785]
+gra[1][3][1] = [-0.20384672, -0.20074788, -0.15047659, -0.47667956, -0.32233158, -0.18277587]
+gra[1][3][2] = [-0.04078209, -0.00964256, -0.007887523, -0.02920713, 0.048171755, -0.0064258603]
+gra[1][3][3] = [-0.20384672, -0.20074788, -0.15047659, -0.47667956, -0.32233158, -0.18277587]
+gra[1][3][4] = [-0.08607493, -0.011066449, 0.03337828, 0.017589318, 0.053817187, 0.026608063]
+gra[1][3][5] = [-0.11435424, -0.028249675, -0.0713048, -0.041468374, 0.06554918, 0.0051536495]
+gra[1][3][6] = [0.021533351, 0.014141606, -0.02189768, 0.0406683, 0.019845601, -0.050147213]
+gra[1][3][7] = [-0.07811742, -0.015330459, -0.077608146, 0.025373504, -0.028645419, -0.044204023]
+gra[1][3][8] = [-0.11033088, 0.014251199, -0.12801346, -0.030778375, 0.0073718023, -0.045310076]
+gra[1][3][9] = [-0.021687271, -0.07072508, 0.07316658, 0.006834414, 0.018396648, -0.009679461]
+gra[1][3][10] = [-0.043205068, -0.08140806, -0.080073446, 0.03171298, -0.05723045, 0.04153792]
+gra[1][3][11] = [0.02166934, -0.07386948, -0.024203774, 0.03216322, 0.002841484, 0.03024212]
+gra[1][3][12] = [-0.009991158, -0.072576635, -0.04701072, -0.0074484567, -0.019265298, -0.012907258]
+gra[1][3][13] = [-0.015750494, -0.08129193, -0.054456256, -0.04274753, 0.015238559, -0.030263584]
+gra[1][3][14] = [0.011959078, 0.0016981189, 0.002318908, 0.02490218, 0.03298948, -0.055057995]
+gra[1][4][1] = [-0.19834158, -0.1913248, -0.14450346, -0.4738161, -0.33214733, -0.18481179]
+gra[1][4][2] = [-0.037335068, -0.006893658, -0.007887523, -0.034267876, 0.0602602, -0.010987123]
+gra[1][4][3] = [-0.017518334, 0.018093698, -0.016213104, -0.016341481, 0.07057031, 0.037748877]
+gra[1][4][4] = [-0.19834158, -0.1913248, -0.14450346, -0.4738161, -0.33214733, -0.18481179]
+gra[1][4][5] = [-0.08122997, -0.009616363, -0.010314366, -0.019207178, 0.040883962, 0.02032251]
+gra[1][4][6] = [0.021533351, 0.014141606, -0.02189768, 0.0406683, 0.017986417, -0.050147213]
+gra[1][4][7] = [-0.07007887, -0.015330459, -0.077608146, 0.02348224, -0.03466012, -0.034430098]
+gra[1][4][8] = [-0.11033088, 0.017701223, -0.13087574, -0.030211292, 0.009520162, -0.0424478]
+gra[1][4][9] = [-0.013648728, -0.07072508, 0.07316658, 0.004943151, 0.012381943, -0.010697419]
+gra[1][4][10] = [-0.043205068, -0.08140806, -0.080073446, 0.03171298, -0.05618029, 0.038747557]
+gra[1][4][11] = [0.029707883, -0.07386948, -0.024203774, 0.030271959, -0.0031732197, 0.029224155]
+gra[1][4][12] = [-0.0019526065, -0.072576635, -0.04701072, -0.009339724, -0.025280003, -0.013925216]
+gra[1][4][13] = [-0.0077119498, -0.08129193, -0.054456256, -0.044638794, 0.009223858, -0.031281546]
+gra[1][4][14] = [0.011959078, 0.0016981189, 0.002318908, 0.02490218, 0.035166137, -0.055057995]
+gra[1][5][1] = [-0.1474042, -0.12128653, -0.17734613, -0.43427634, -0.26872668, -0.207103]
+gra[1][5][2] = [-0.018892953, -0.006893658, -0.010367418, -0.038954537, 0.058182646, -0.008467588]
+gra[1][5][3] = [-0.0037282254, 0.018976383, -0.018693, -0.02608889, 0.07759199, 0.03570715]
+gra[1][5][4] = [-8.831457E-4, 0.018093698, -0.018693, -0.021028142, 0.071870804, 0.039219104]
+gra[1][5][5] = [-0.1474042, -0.12128653, -0.17734613, -0.43427634, -0.26872668, -0.207103]
+gra[1][5][6] = [0.047771584, 0.015253589, -0.01949577, 0.044564478, 0.021003243, -0.03833175]
+gra[1][5][7] = [-0.06801275, -0.010077919, -0.058173127, 0.021577448, -0.04160948, -0.035261553]
+gra[1][5][8] = [-0.08263614, -0.0093364185, -0.09053127, -0.005192401, -0.008493237, -0.0014865557]
+gra[1][5][9] = [-0.009302059, -0.06351237, 0.10116945, -0.007041836, -0.002656164, 0.0015158653]
+gra[1][5][10] = [-0.059016325, -0.0888929, -0.080073446, 0.021833349, -0.034138784, 0.038927235]
+gra[1][5][11] = [0.040282093, -0.06309896, 0.010262955, 0.018484885, -0.029200297, 0.039044417]
+gra[1][5][12] = [-0.0014948205, -0.06035639, -0.008429811, -0.009474121, -0.060335815, -0.008249627]
+gra[1][5][13] = [-0.009723224, -0.06937733, -0.02150535, -0.048633333, -0.0076052034, -0.01708798]
+gra[1][5][14] = [0.017121516, 0.0016981189, 0.0018258324, 0.016744861, -0.007697665, -0.07298742]
+gra[1][6][1] = [-0.37519073]
+gra[1][6][2] = [-0.020675538]
+gra[1][6][3] = [-0.007164038]
+gra[1][6][4] = [-0.0037859974]
+gra[1][6][5] = [0.0010387793]
+gra[1][6][6] = [-0.37519073]
+gra[1][6][7] = [0.0011221641]
+gra[1][6][8] = [-0.07499262]
+gra[1][6][9] = [-0.04147849]
+gra[1][6][10] = [0.029040512]
+gra[1][6][11] = [-0.031770144]
+gra[1][6][12] = [0.001088425]
+gra[1][6][13] = [0.023952274]
+gra[1][6][14] = [-0.051569473]
+gra[1][7][1] = [-0.1296072, -0.1442439, -0.11772594, -0.02452228, -0.22837678, -0.14893955]
+gra[1][7][2] = [-0.03975167, -0.008707181, -0.010367418, -0.050558057, 0.060622584, -0.010600864]
+gra[1][7][3] = [-0.021678163, 0.013831518, -0.021172896, -0.027095923, 0.07488371, -0.014782568]
+gra[1][7][4] = [-0.023485089, 0.013831518, -0.021172896, -0.027095923, 0.07826175, -0.015831877]
+gra[1][7][5] = [-0.0134816, 0.0073947697, -0.023892898, -0.023722092, 0.073896036, -0.012981238]
+gra[1][7][6] = [-0.013946036, 0.0, -0.009565255, 0.0022181221, -0.013034178, 0.0]
+gra[1][7][7] = [-0.1296072, -0.1442439, -0.11772594, -0.02452228, -0.22837678, -0.14893955]
+gra[1][7][8] = [-0.09351474, -0.0084727695, -0.050743505, -0.068448156, 0.008918113, 0.005457081]
+gra[1][7][9] = [-0.015679458, -0.0576052, 0.2337375, 0.12339698, -0.07801207, -0.04771639]
+gra[1][7][10] = [-0.011989798, -0.018274585, -0.11092469, 0.03623878, -0.067991786, 0.023738246]
+gra[1][7][11] = [0.04772278, -0.09258899, 0.11116379, 0.14959577, -0.087560154, 0.008139222]
+gra[1][7][12] = [0.003004335, -0.08354779, 0.08987856, 0.12448278, -0.101327725, -0.022079729]
+gra[1][7][13] = [-0.019510493, -0.093155615, 0.0728795, 0.07653391, -0.053730335, -0.032885306]
+gra[1][7][14] = [-0.042104535, -0.009785821, -0.01755292, 2.008588E-4, 0.013726235, -0.06798428]
+gra[1][8][1] = [-0.19699688]
+gra[1][8][2] = [-0.0037809995]
+gra[1][8][3] = [-0.0015772863]
+gra[1][8][4] = [0.0018007546]
+gra[1][8][5] = [0.0026140255]
+gra[1][8][6] = [-2.4660824E-11]
+gra[1][8][7] = [-0.0066752536]
+gra[1][8][8] = [-0.19699688]
+gra[1][8][9] = [-0.024493186]
+gra[1][8][10] = [0.025926992]
+gra[1][8][11] = [-0.0053957887]
+gra[1][8][12] = [-0.07335845]
+gra[1][8][13] = [-0.0414089]
+gra[1][8][14] = [-0.03604288]
+gra[1][9][1] = [-0.03215016, -0.13737147, -0.15802538, -0.31892398, -0.20624262, -0.078629926]
+gra[1][9][2] = [-0.05952637, -0.010836507, -0.007887523, -0.041915026, 0.053469047, -0.014452843]
+gra[1][9][3] = [-0.04573596, 0.013338042, -0.016213104, -0.024018865, 0.08665495, 0.004695354]
+gra[1][9][4] = [-0.04754288, 0.010904258, -0.018618636, -0.024018865, 0.090032995, 0.0048670936]
+gra[1][9][5] = [-0.037539396, 0.013338042, -0.021145605, -0.02233195, 0.085607246, 0.010568369]
+gra[1][9][6] = [-0.01127401, 0.0, -0.012245407, -0.0012549662, -0.01517438, -0.0015686363]
+gra[1][9][7] = [-0.05112793, -0.014006899, -0.013934363, -0.017197616, 0.026523141, -0.01844468]
+gra[1][9][8] = [0.016177364, -0.012701306, 0.0, 0.046596747, -0.020700313, -0.012177394]
+gra[1][9][9] = [-0.03215016, -0.13737147, -0.15802538, -0.31892398, -0.20624262, -0.078629926]
+gra[1][9][10] = [-0.027691698, -0.032388207, -0.07824364, 0.059880435, 0.05596056, 0.018381324]
+gra[1][9][11] = [0.103498794, -0.040216103, 0.062177118, 0.110756174, 0.059570715, 0.0022290398]
+gra[1][9][12] = [0.10042124, -0.063853696, 0.026564376, 0.02724505, -8.004056E-4, -0.01222833]
+gra[1][9][13] = [0.03640536, -0.070025615, 0.046619833, -0.0041939775, 0.06556506, -0.056867536]
+gra[1][9][14] = [0.027506243, -0.009208607, 0.041899607, 0.030765705, -0.024402268, -0.083207875]
+gra[1][10][1] = [-0.22700319, -0.1375201, -0.23030068, -0.18327193, -0.06355304]
+gra[1][10][2] = [-0.004317823, -0.030189537, -0.016693661, -0.019362736, 0.0016988069]
+gra[1][10][3] = [-0.006293524, -0.06463695, -0.02939278, -0.022921724, 0.0021310751]
+gra[1][10][4] = [-0.006293524, -0.066443875, -0.02939278, -0.014431438, 0.002968254]
+gra[1][10][5] = [-0.009013527, -0.056440387, -0.02939278, -0.010356696, 0.002968254]
+gra[1][10][6] = [-0.010577854, -0.01692955, 0.0, 0.0, 0.0042515756]
+gra[1][10][7] = [-0.006494678, -0.035746936, -0.014152209, -0.018789249, 0.0016988069]
+gra[1][10][8] = [0.0, -0.034866028, 0.043909788, -0.01032755, 0.0020160119]
+gra[1][10][9] = [-0.006293524, -0.03642938, -0.024016019, -0.021367721, 0.0040959795]
+gra[1][10][10] = [-0.22700319, -0.1375201, -0.23030068, -0.18327193, -0.06355304]
+gra[1][10][11] = [0.016493393, 0.023839124, -0.028824054, -0.03582031, -0.11322439]
+gra[1][10][12] = [0.002408312, -0.02686254, -0.003199962, -0.043980688, -0.07248109]
+gra[1][10][13] = [0.0023821716, -0.02852016, 0.022710027, 0.0024976633, -0.082591094]
+gra[1][10][14] = [-0.006466228, 0.024950877, 0.0045046695, -0.007963004, 9.530978E-4]
+gra[1][11][1] = [0.0115634315, -0.1754307, -0.04472863, -0.21108384, -0.09292723, -0.10085574]
+gra[1][11][2] = [-0.056997687, -0.00916218, -0.007887523, -0.041793864, 0.08209353, -0.011354894]
+gra[1][11][3] = [-0.03058076, 0.00954598, -0.016213104, -0.022438496, 0.0804837, -0.017242681]
+gra[1][11][4] = [-0.032387692, 0.00954598, -0.016213104, -0.022438496, 0.083861746, -0.018291987]
+gra[1][11][5] = [-0.021216994, 0.00954598, -0.018933106, -0.02075158, 0.08062985, -0.012590716]
+gra[1][11][6] = [-0.013345296, 0.0, -0.010166409, 0.0022181221, -0.016150277, -0.0015686363]
+gra[1][11][7] = [-0.058763314, -0.024813319, -0.013934363, -0.018591769, 0.045031175, -0.01761809]
+gra[1][11][8] = [-0.010564283, -0.014879585, 0.0, 0.08221486, -0.020155832, 0.011569124]
+gra[1][11][9] = [-0.03976113, -0.0266835, -0.018693, -0.0038433694, 0.108054, -0.007127323]
+gra[1][11][10] = [0.17253473, -0.0051165284, -0.12898529, 0.05902472, 0.08841419, -0.020457178]
+gra[1][11][11] = [0.0115634315, -0.1754307, -0.04472863, -0.21108384, -0.09292723, -0.10085574]
+gra[1][11][12] = [0.09484108, -0.06539201, 0.11705991, 0.13666858, -0.03076404, 0.030293347]
+gra[1][11][13] = [0.031199355, -0.09599421, 0.03979923, 0.07013954, 0.044424616, -7.2653266E-4]
+gra[1][11][14] = [-0.025792057, -0.010647351, 0.0070905373, 0.006118256, -0.015851455, -0.10208605]
+gra[1][12][1] = [-0.08658051, -0.22899988, -0.10656684, -0.27604854, -0.2197972, -0.18337652]
+gra[1][12][2] = [-0.05547315, -0.012346701, -0.010367418, -0.029486053, 0.05935009, -0.022474179]
+gra[1][12][3] = [-0.024841659, 0.012640656, -0.021172896, -0.013413144, 0.07662204, -0.025180463]
+gra[1][12][4] = [-0.026648592, 0.012640656, -0.021172896, -0.013413144, 0.08000008, -0.026229769]
+gra[1][12][5] = [-0.019367125, 0.012640656, -0.023892898, -0.010039311, 0.07158921, -0.024388755]
+gra[1][12][6] = [-0.0037196823, 0.0, -0.010166409, 0.0016691058, -0.020588506, -0.0015686363]
+gra[1][12][7] = [-0.02981784, -0.023581509, -0.016414259, -0.004626396, 0.03383301, -0.031687073]
+gra[1][12][8] = [0.020993255, -0.010776988, 0.0, 0.05328337, -0.020634232, 0.0070363255]
+gra[1][12][9] = [7.665232E-4, -0.023638166, -0.026132688, 0.0109071825, 0.08044333, -0.018831125]
+gra[1][12][10] = [0.19114436, -0.0047755605, -0.10173453, 0.037046153, 0.09390959, -0.023118684]
+gra[1][12][11] = [-0.038150895, -0.021824643, -0.015327208, -0.012188856, 0.059729155, -0.0058229556]
+gra[1][12][12] = [-0.08658051, -0.22899988, -0.10656684, -0.27604854, -0.2197972, -0.18337652]
+gra[1][12][13] = [0.048063084, -0.09772287, 0.07237538, 0.025829254, 0.03243908, 0.0107249785]
+gra[1][12][14] = [-0.016044322, -0.0119469175, 0.015410181, 0.021360878, 0.016821869, -0.06789728]
+gra[1][13][1] = [-0.06831044, -0.13932145, -0.17696062, -0.22257882, -0.1827164, -0.18075173]
+gra[1][13][2] = [-0.033473175, -0.0138693685, -0.010367418, -0.038903426, 0.0750564, -0.012684662]
+gra[1][13][3] = [-0.0028416929, 0.011117988, -0.021172896, -0.022830518, 0.09346217, -0.019572249]
+gra[1][13][4] = [-0.004648617, 0.011117988, -0.021172896, -0.022830518, 0.09684021, -0.017395958]
+gra[1][13][5] = [0.0014656368, 0.011117988, -0.023892898, -0.019456686, 0.087295525, -0.014545322]
+gra[1][13][6] = [-0.005318578, 0.0, -0.010166409, 0.002189381, -0.023704607, -0.0015686363]
+gra[1][13][7] = [-0.007817864, -0.025104176, -0.016414259, -0.0140437735, 0.045698013, -0.024563886]
+gra[1][13][8] = [0.028921302, -0.011783888, 0.0, 0.080733284, -0.023255521, -0.022090228]
+gra[1][13][9] = [0.025339656, -0.025160834, -0.026132688, 0.0014898069, 0.09561606, -0.0074777785]
+gra[1][13][10] = [0.17559843, -0.0028885743, -0.10483483, 0.025597045, 0.049072396, -0.0015286552]
+gra[1][13][11] = [-0.025382519, -0.02160719, -0.011038008, -0.0280119, 0.079709224, 0.006208241]
+gra[1][13][12] = [0.00560419, -0.02116654, -0.021172896, 0.0062681693, 0.085999615, -0.009809807]
+gra[1][13][13] = [-0.06831044, -0.13932145, -0.17696062, -0.22257882, -0.1827164, -0.18075173]
+gra[1][13][14] = [-0.022765206, -0.008642238, -0.005545456, -0.0016253758, -0.04435316, -0.07088209]
+gra[1][14][1] = [0.44408634, -0.12092721, -0.10570723]
+gra[1][14][2] = [-0.05545547, -0.0048188735, -0.0054277224]
+gra[1][14][3] = [-0.084608115, -0.026899593, -0.011874196]
+gra[1][14][4] = [-0.084608115, -0.028706519, -0.006607729]
+gra[1][14][5] = [-0.084608115, -0.020130698, -0.011874196]
+gra[1][14][6] = [-0.05576598, -0.017983004, 0.0]
+gra[1][14][7] = [-0.062699944, -0.023920042, -0.008650959]
+gra[1][14][8] = [-0.008844429, 0.09213399, 0.0071458695]
+gra[1][14][9] = [-0.05575606, 0.035382736, -0.009415978]
+gra[1][14][10] = [-0.013564611, 0.10450437, 0.0020520482]
+gra[1][14][11] = [-0.06009103, 0.02992522, -0.0086509595]
+gra[1][14][12] = [-0.07773001, 0.0020310916, -0.015097434]
+gra[1][14][13] = [-0.076971106, -0.002655573, -0.015097434]
+gra[1][14][14] = [0.44408634, -0.12092721, -0.10570723]
+gra[2][0][0] = [-0.15201631]
+gra[2][0][1] = [0.031203702]
+gra[2][0][2] = [-0.15201631]
+gra[2][1][0] = [0.0022879262, -0.004365769, 6.20738E-4, 4.4457944E-11, -0.0021720084, 9.538275E-4]
+gra[2][1][1] = [-0.03861488, -0.12361071, -0.14622326, -0.16391519, -0.1494383, -0.26891392]
+gra[2][1][2] = [-0.03861488, -0.12361071, -0.14622326, -0.16391519, -0.1494383, -0.26891392]
+gra[2][3][2] = [-0.008076604, -0.07046831, -0.098895, -0.2321586, -0.36291665, -0.13428082, -0.25642043, -0.34169278, -0.11429488, -0.11130111, -0.1070063]
+gra[2][3][3] = [-0.008076604, -0.07046831, -0.098895, -0.2321586, -0.36291665, -0.13428082, -0.25642043, -0.34169278, -0.11429488, -0.11130111, -0.1070063]
+gra[2][3][4] = [0.0805982, -0.034465823, 0.07598917, -0.090299815, -0.020566557, -0.10127958, -0.07510182, 0.005006507, -6.042392E-4, 0.0012229868, 0.018206563]
+gra[2][3][5] = [0.09489558, -0.06572845, 0.08711138, -0.16550836, -0.070603445, -0.14942205, -0.07379869, 0.0029941553, -6.0423923E-4, 0.0012229868, 0.001831753]
+gra[2][3][6] = [-0.058871817, -0.006554798, 0.017428236, -4.6842685E-4, 0.025027804, -0.05349827, 5.9889373E-4, 0.04711724, 0.0, 0.005120207, -0.05144971]
+gra[2][3][7] = [0.0048280074, -0.023354564, 0.044204026, -0.16188264, -0.020953348, -0.084573716, -0.008120204, -0.115129516, -0.0016438008, -4.6656062E-4, -0.036058363]
+gra[2][3][8] = [-0.051234446, -0.051544387, 0.030227043, -0.011092558, -0.06453305, -0.062376987, -0.055727348, 0.08190204, 0.0, -0.0053235646, -0.04001494]
+gra[2][3][9] = [0.036982387, -0.024936493, 0.13808824, 0.04746171, -0.024963146, -0.10614685, -0.04950322, -0.0445091, -6.042392E-4, 0.0020519749, -0.009407277]
+gra[2][3][10] = [-0.018327229, 0.07086502, 0.044119813, -0.064103216, 0.03483749, -0.028801778, 0.0042893966, -0.0107006235, 0.0, 0.018656848, 0.029459191]
+gra[2][3][11] = [-0.10527698, -0.015317527, 0.038830582, 0.050922435, -0.007117017, -0.102952145, 0.022075849, -0.06960322, -0.0021797004, 0.0012229867, 0.019433094]
+gra[2][3][12] = [-0.02985796, -0.01805034, 0.07844547, 0.018029366, -0.07116665, -0.11370507, 0.00879039, -0.062679075, -0.0032192618, 0.0012229867, -0.003486286]
+gra[2][3][13] = [0.027791135, 0.019933566, 0.13612899, 0.008909401, -0.09267632, -0.10002251, 0.005974208, -0.08863636, -0.0016438005, -0.0028344705, -0.03491522]
+gra[2][3][14] = [0.030786296, -0.0064091478, -0.071676165, 0.038735196, 0.023161378, 0.022532098, 0.113017544, 0.03788906, -1.8203591E-10, 7.318466E-11, -0.051266756]
+gra[2][4][2] = [-0.1294062, -0.20639215, -0.23590136, -0.37099618, -0.48548454, -0.20018376, -0.26166877, -0.41468206, -0.1289629, -0.13497436, -0.21379423]
+gra[2][4][3] = [0.0302227, -0.0062450683, 0.123370245, -0.020649582, -0.01604276, -0.03070876, 0.01188374, 0.023794215, -0.002079915, -0.0077277506, 0.03669957]
+gra[2][4][4] = [-0.1294062, -0.20639215, -0.23590136, -0.37099618, -0.48548454, -0.20018376, -0.26166877, -0.41468206, -0.1289629, -0.13497436, -0.21379423]
+gra[2][4][5] = [0.15102442, -0.008147711, 0.0514243, -0.12282804, -0.043201454, -0.1278645, -0.07646969, -0.014425374, -6.042392E-4, 0.0012229868, 0.02046664]
+gra[2][4][6] = [-0.06091963, -0.011449458, 0.019421639, -0.0049448065, 0.03811474, -0.05349827, 0.0015795783, 0.07086545, 0.0, 0.005120207, -0.050147213]
+gra[2][4][7] = [0.041366346, -0.008510563, 0.010099679, -0.13262556, -9.927137E-4, -0.10384308, -0.005782647, -0.1192376, -0.0016438008, 0.0022671828, -0.020606475]
+gra[2][4][8] = [-0.049276114, -0.058174442, 0.008468347, -0.0711803, -0.05036522, -0.065239266, -0.047402292, 0.10297411, 0.0, -0.0053235646, -0.0424478]
+gra[2][4][9] = [0.09200959, -0.021697182, 0.122298524, 0.07767116, -0.02727232, -0.12138869, -0.049602136, -0.044220224, -6.042392E-4, 0.0020519749, -0.0068372646]
+gra[2][4][10] = [-0.018110096, 0.05372959, 0.0151335355, -0.081490815, 0.033452507, -0.028801778, 0.002071476, -0.0021489211, 0.0, 0.018656848, 0.023107262]
+gra[2][4][11] = [-0.04821482, -0.0013517933, 0.034565553, 0.09703982, -0.0135421455, -0.12116421, 0.027648013, -0.07703965, -0.0021797004, 0.0012229867, 0.032362547]
+gra[2][4][12] = [0.026633851, 0.0017764987, 0.07997461, 0.066489205, -0.064625874, -0.12656163, 0.014263283, -0.052713, -0.0032192618, 0.0012229867, 0.003290647]
+gra[2][4][13] = [0.078414686, 0.020772994, 0.14588076, 0.060945626, -0.09091907, -0.11564237, 0.0066668717, -0.08774518, -0.0016438005, 0.0012229867, -0.02239227]
+gra[2][4][14] = [0.05219944, -0.008933335, 0.0011658408, 0.04304128, 0.02515228, 0.022532098, 0.113017544, 0.022577101, -1.8203591E-10, 0.0, -0.051266756]
+gra[2][5][2] = [-0.109083325, -0.13635391, -0.1724807, -0.32005876, -0.44594473, -0.23302643, -0.24689698, -0.41167107, -0.12679145, -0.13053392, -0.23608541]
+gra[2][5][3] = [0.028576976, -0.01202011, 0.14082508, 0.019831568, -0.025790168, -0.033188656, 0.010665469, 0.025290381, 0.0, -0.0077277506, 0.034657843]
+gra[2][5][4] = [0.043157984, -0.011062228, 0.031184498, -0.0352323, -0.023394702, -0.033188656, 0.013148798, 0.025290381, 0.0, -0.0077277506, 0.039219104]
+gra[2][5][5] = [-0.109083325, -0.13635391, -0.1724807, -0.32005876, -0.44594473, -0.23302643, -0.24689698, -0.41167107, -0.12679145, -0.13053392, -0.23608541]
+gra[2][5][6] = [-0.08106713, -0.009225492, 0.02121906, 0.01605932, 0.04201092, -0.04117418, 0.0030047887, 0.038180098, 0.0, 0.0048741507, -0.03833175]
+gra[2][5][7] = [0.055404905, -0.0032580243, 0.003150314, -0.13055943, -0.002897503, -0.084408045, -0.0074517485, -0.120952904, -0.0016438005, -4.6656062E-4, -0.021437926]
+gra[2][5][8] = [-0.060963377, -0.085212074, -0.009545051, -0.04348558, -0.025346331, -0.024894798, -0.044431817, 0.06334871, 0.0, -0.0053235646, -0.0014865557]
+gra[2][5][9] = [0.100335434, -0.014484472, 0.10726041, 0.08201783, -0.039257314, -0.093385816, -0.038351398, -0.04593553, -6.042392E-4, -1.4442275E-4, 0.0053760214]
+gra[2][5][10] = [-0.018110096, 0.04624476, 0.03717503, -0.09730208, 0.02357287, -0.028801778, 0.002071476, -0.012438461, 0.0, 0.020372767, 0.02328694]
+gra[2][5][11] = [-0.0465424, 0.009418742, 0.0085384855, 0.107614025, -0.025329215, -0.08669748, 0.036276024, -0.07935116, -6.042392E-4, 0.0012229867, 0.0421828]
+gra[2][5][12] = [0.041238375, 0.013996747, 0.04491879, 0.06694699, -0.064760275, -0.08798072, 0.01705242, -0.056739807, 0.0023156772, 0.0012229867, 0.008966238]
+gra[2][5][13] = [0.09660875, 0.032687586, 0.1290517, 0.058934357, -0.09491361, -0.08269146, 0.008766838, -0.08773481, -0.0016438005, 0.0012229867, -0.008198705]
+gra[2][5][14] = [0.02811451, -0.008933335, -0.041697957, 0.04820372, 0.01699496, 0.022039022, 0.09601593, 0.016229236, -1.8203591E-10, 0.0, -0.06919619]
+gra[2][6][2] = [-0.33506277, -0.18281105]
+gra[2][6][3] = [0.050459035, -0.0480888]
+gra[2][6][4] = [-0.058334365, -0.04194749]
+gra[2][6][5] = [-0.050963223, -0.02262903]
+gra[2][6][6] = [-0.33506277, -0.18281105]
+gra[2][6][7] = [0.09761742, -0.01634203]
+gra[2][6][8] = [-0.10002497, 0.04321725]
+gra[2][6][9] = [0.117864504, 0.009139456]
+gra[2][6][10] = [0.11780313, -0.04472417]
+gra[2][6][11] = [0.055395056, -0.035537593]
+gra[2][6][12] = [0.15576944, -0.0030296352]
+gra[2][6][13] = [0.21003558, -0.042242486]
+gra[2][6][14] = [-0.11417418, -0.017581403]
+gra[2][7][2] = [-0.12298199, -0.15931123, -0.13213076, -0.3022618, -0.036190674, -0.17340623, -0.33445278, -0.1409332, -0.0928228, -0.13858096, -0.17792198]
+gra[2][7][3] = [0.035498135, -0.014716316, 0.12900968, 0.0018816409, -0.026797201, -0.035668552, 0.0035608534, 0.005567723, -0.0015440702, -0.0077277506, -0.015831877]
+gra[2][7][4] = [0.0473681, -0.020070724, 0.03502908, -0.039943375, -0.029462483, -0.035668552, 0.0024413813, 0.005567723, 0.0, -0.009627088, -0.015831877]
+gra[2][7][5] = [0.05841018, -0.021761157, 0.033209726, -0.046052434, -0.027980871, -0.036883388, 0.0038042043, 0.005567723, 0.0, 0.0013718933, -0.012981238]
+gra[2][7][6] = [-0.009183083, -0.022087386, -0.06500266, -0.003913735, -0.017434899, -0.015544581, -4.731787E-11, 0.012018705, -9.038228E-4, -0.0016083805, 0.0]
+gra[2][7][7] = [-0.12298199, -0.15931123, -0.13213076, -0.3022618, -0.036190674, -0.17340623, -0.33445278, -0.1409332, -0.0928228, -0.13858096, -0.17792198]
+gra[2][7][8] = [-0.071148, -0.09141699, 0.045326322, -0.02822847, -0.09423955, -0.012837715, -0.034597382, 0.05246252, 0.0, -0.0053235646, 0.005457081]
+gra[2][7][9] = [0.015466833, -0.008577296, 0.03190451, 0.07564043, 0.09118151, 0.039182235, -0.025927924, 0.004676326, -6.042392E-4, -0.0069806715, -0.04385624]
+gra[2][7][10] = [0.034649882, 0.116863064, 0.0033220518, -0.050275527, 0.037978306, -0.059653025, 0.023348592, -0.064188465, 0.0, 0.018263478, 0.008097947]
+gra[2][7][11] = [-0.09295004, -0.020071309, -0.04982135, 0.1150547, 0.10578166, 0.014203327, 0.0359425, -0.011216718, -6.042392E-4, -0.0018316435, 0.011277605]
+gra[2][7][12] = [-0.017506499, -0.009194653, 0.0039268765, 0.071446136, 0.06919665, 0.010327638, 0.0055351285, 0.07338563, -0.0016438005, -0.0018316435, -0.0048638657]
+gra[2][7][13] = [0.023693724, 0.0089093065, 0.082926564, 0.04914708, 0.03025364, 0.011693382, 0.0027329288, 0.04278699, -0.0016438005, -0.0018316435, -0.023996033]
+gra[2][7][14] = [0.030249318, -0.020417277, -0.020274054, -0.011022337, 4.5096013E-4, 0.0026602726, 0.10006753, 0.02086204, -0.0019475454, -0.0010469037, -0.06419305]
+gra[2][8][2] = [-0.098765604, -0.21473517, -0.15407726, -0.2138582, -0.29589483, -0.20712286]
+gra[2][8][3] = [0.045760147, -0.004769299, -0.038730323, -0.023269074, -0.0036128643, -0.0053470596]
+gra[2][8][4] = [-0.059532464, -0.007675047, -0.080555335, -0.023269074, -0.0050796065, -0.0053470596]
+gra[2][8][5] = [-0.056172833, -0.0029287338, -0.07756553, -0.02448391, -0.0017491262, -0.0053470596]
+gra[2][8][6] = [-0.053191774, -0.01284402, -0.0022998422, -0.015544581, -0.005061429, -0.005767472]
+gra[2][8][7] = [-0.024624372, -0.016473431, -0.038519755, -0.0142682865, -0.0017491262, -0.005605762]
+gra[2][8][8] = [-0.098765604, -0.21473517, -0.15407726, -0.2138582, -0.29589483, -0.20712286]
+gra[2][8][9] = [0.14998935, 0.03556885, 0.16636685, -0.07407579, -0.042286556, -0.03358767]
+gra[2][8][10] = [0.10997251, 0.121142365, -0.06810031, -0.012015331, -0.004103984, -0.013681764]
+gra[2][8][11] = [0.09455238, 0.08597852, 0.12715638, -0.044376574, -0.05856059, -0.002812602]
+gra[2][8][12] = [0.09410553, 0.112332866, 0.1220707, -0.021252448, -0.06676871, 0.008941967]
+gra[2][8][13] = [0.15745735, 0.12265156, 0.19168386, -0.016919304, -0.07282984, 0.0030826405]
+gra[2][8][14] = [-0.08871041, -0.015491295, 0.076912574, 0.021117939, 0.020992978, -0.030493984]
+gra[2][9][2] = [-0.105878875, -0.1524388, -0.1099966, -0.20480473, -0.3305924, -0.21370567, -0.33320028, -0.24001853, -0.10375746, -0.11412878, -0.10761234]
+gra[2][9][3] = [0.03317759, -0.016845642, 0.1503404, -0.021122754, -0.023720142, -0.03070876, 0.010665469, 0.02652775, 0.0, -0.0077277506, 0.0036460478]
+gra[2][9][4] = [0.042134404, -0.022997983, 0.046800338, -0.06400117, -0.026385423, -0.03311429, 0.011930525, 0.02652775, -0.002650973, -0.0077277506, 0.0048670936]
+gra[2][9][5] = [0.04673974, -0.015817884, 0.044920944, -0.07011023, -0.02659073, -0.03413609, 0.013293348, 0.02652775, 0.0, -0.006354918, 0.010568369]
+gra[2][9][6] = [-0.012488609, -0.022087386, -0.071482256, -0.0012417086, -0.020907987, -0.018224735, 0.0, 0.012018705, -9.038228E-4, -0.0016083805, -0.0027130097]
+gra[2][9][7] = [0.0716151, -0.03751232, 1.3603596E-4, -0.04638823, -0.023721159, -0.019228077, 0.0046084328, 0.035835125, 0.0047529186, -0.006096343, -0.01602985]
+gra[2][9][8] = [-0.015797166, -0.024351576, -0.0215403, 0.034865953, 0.046004623, 0.034118768, -0.023652218, 0.019558845, 0.0, 0.012150579, -0.007978012]
+gra[2][9][9] = [-0.105878875, -0.1524388, -0.1099966, -0.20480473, -0.3305924, -0.21370567, -0.33320028, -0.24001853, -0.10375746, -0.11412878, -0.10761234]
+gra[2][9][10] = [-0.01967794, 0.10183758, 0.15366054, -0.06979019, 0.05891821, -0.022391455, 0.018301774, 0.021346226, 0.0, 0.020372767, 0.003545857]
+gra[2][9][11] = [-0.06909444, 0.032301586, 0.097309515, 0.1708307, 0.066942066, -0.03478332, 0.08301894, -0.048377972, -0.004067228, 0.002650639, 0.005367422]
+gra[2][9][12] = [-0.01954465, 0.0104994485, 0.104454204, 0.16886304, -0.028041093, -0.052986544, 0.042617302, -0.023035575, -0.0051067895, 0.002650639, 0.004987537]
+gra[2][9][13] = [0.030839257, 0.03203931, 0.20222194, 0.10506295, -0.050474267, -0.014566283, 0.040826432, -0.034744743, -0.0051067895, 0.002650639, -0.047978267]
+gra[2][9][14] = [0.010195935, -0.019840062, -0.05840256, 0.058588445, 0.031015806, 0.062112793, 0.09405385, 0.017498635, 0.0, 0.0, -0.07941664]
+gra[2][10][2] = [-0.077617064, -0.24597266, -0.30084527, -0.33237344, -0.18720393, -0.09771022, -0.20302433]
+gra[2][10][3] = [0.026043031, -0.0037977588, -0.023269074, -0.028983576, -0.0015887114, 0.0010817688, 0.037429087]
+gra[2][10][4] = [-0.07763809, -0.006703506, -0.023269074, -0.07080858, -0.0015887114, 0.002968254, 0.05529735]
+gra[2][10][5] = [-0.071017, -0.0019571928, -0.02448391, -0.076917656, -0.0015887114, 0.002968254, 0.057679832]
+gra[2][10][6] = [-0.053191774, -0.022087386, -0.0177017, -0.0068972483, -0.0022654566, 0.003107202, -0.009080095]
+gra[2][10][7] = [-0.06515035, -0.021679426, -0.0142682865, -0.018913662, -0.0033213743, 0.004113634, 0.07422953]
+gra[2][10][8] = [1.4555454E-4, -0.0073065395, 0.040923893, -0.037498906, 0.0028213095, 0.0035354842, -0.008792204]
+gra[2][10][9] = [0.037463915, 0.030624442, -0.01446133, 0.025323104, 0.0, 0.0040959795, 0.03213553]
+gra[2][10][10] = [-0.077617064, -0.24597266, -0.30084527, -0.33237344, -0.18720393, -0.09771022, -0.20302433]
+gra[2][10][11] = [0.079399094, 0.15027712, -0.07128487, 0.0870506, -0.006525742, -0.108242765, 0.08370259]
+gra[2][10][12] = [0.07473828, 0.1260693, -0.039055545, 0.058323834, 4.2641436E-4, -0.05526523, 0.06886024]
+gra[2][10][13] = [0.1526189, 0.14199956, -0.020716881, 0.056881983, 0.0029196735, -0.073701814, 0.08012534]
+gra[2][10][14] = [-0.07117805, -0.040356413, 0.016607894, 0.07246468, -0.021312775, 0.0047443355, 0.0738589]
+gra[2][11][2] = [-0.17702022, -0.19049807, 0.0033187612, -0.1610911, -0.22275227, -0.1004089, -0.4127527, -0.27582508, -0.097562976, -0.09680039, -0.12983814]
+gra[2][11][3] = [0.03317759, -0.021450516, 0.14371678, -0.007020961, -0.022139775, -0.03070876, 0.0059119724, 0.0074535403, 0.0, -0.0077277506, -0.018291987]
+gra[2][11][4] = [0.043792337, -0.024356263, 0.04062908, -0.048845977, -0.024805054, -0.03070876, 0.007177029, 0.0074535403, 0.0, -0.0077277506, -0.018291987]
+gra[2][11][5] = [0.04839767, -0.019609947, 0.039943546, -0.053787827, -0.02501036, -0.031923596, 0.008539852, 0.008833618, 0.0, -0.0077277506, -0.012590716]
+gra[2][11][6] = [-0.01400961, -0.022087386, -0.072458155, -0.0033129938, -0.017434899, -0.016145736, 0.0, 0.012018705, -9.038228E-4, -0.0016083805, -0.0027130097]
+gra[2][11][7] = [0.071528405, -0.04831874, 0.018644067, -0.054023616, -0.025115307, -0.019228077, 0.0033746741, 0.011975225, 0.0039619114, -0.008320883, -0.015203262]
+gra[2][11][8] = [-0.022458976, -0.026009362, -0.011533938, -0.001877947, 0.08073837, 0.040923893, -0.026807453, 0.042773336, -0.0017965699, 0.018487457, 0.015768506]
+gra[2][11][9] = [0.030610166, 0.0044976464, 0.19679622, 0.019722905, -0.01275599, -0.024380911, 0.0107252635, 0.016309183, 0.0, -0.005151834, -0.007127323]
+gra[2][11][10] = [0.025785115, 0.037166946, 0.014565164, 0.006083017, 0.08089537, -0.09699656, -0.0730818, 0.07966486, 0.0024555703, 0.022535702, -0.0056969775]
+gra[2][11][11] = [-0.17702022, -0.19049807, 0.0033187612, -0.1610911, -0.22275227, -0.1004089, -0.4127527, -0.27582508, -0.097562976, -0.09680039, -0.12983814]
+gra[2][11][12] = [-0.06441311, 0.026440911, 0.12037103, 0.13888726, 0.08138243, 0.010932655, 0.020394541, 0.008380487, -0.0016438005, 0.005044714, 0.04750921]
+gra[2][11][13] = [-0.02790359, 0.0060707172, 0.1810815, 0.09985693, 0.023859262, -0.021386884, 0.0015091486, -0.009860844, -0.0016438005, 0.002642244, 0.008162747]
+gra[2][11][14] = [0.070758194, -0.021278806, -0.049851753, 0.005290147, 0.0063683577, 0.027303727, 0.13471515, 0.040411703, 0.0, 0.0, -0.09829482]
+gra[2][12][2] = [-0.19875024, -0.2440672, -0.123551175, -0.2592351, -0.28771695, -0.16224714, -0.36199668, -0.30089164, -0.11223101, -0.13092594, -0.21235895]
+gra[2][12][3] = [0.03317759, -0.018355839, 0.14098895, -0.0012818617, -0.013114419, -0.035668552, 0.0035608534, 0.011555983, -0.0010550276, -0.005276286, -0.026229769]
+gra[2][12][4] = [0.043792337, -0.021261584, 0.036767416, -0.043106876, -0.0157797, -0.035668552, 0.0048259096, 0.011555983, 5.769341E-4, -0.005476473, -0.026229769]
+gra[2][12][5] = [0.04839767, -0.016515272, 0.030902896, -0.051937968, -0.014298091, -0.036883388, 0.0061887326, 0.010669847, 0.0, -0.005476473, -0.024388755]
+gra[2][12][6] = [-0.014100589, -0.022087386, -0.07689638, 0.006312619, -0.017983915, -0.016145736, 0.0, 0.012018705, -0.0046197325, -0.0016083805, -0.0027130097]
+gra[2][12][7] = [0.071528405, -0.047086928, 0.0074459035, -0.02507813, -0.011149936, -0.02170797, -1.1943467E-4, 0.010529782, 0.0047529186, -0.0060696052, -0.029272247]
+gra[2][12][8] = [-0.025169602, -0.021906763, -0.012012333, 0.029679593, 0.051806875, 0.040923893, -0.041877814, 0.05035637, 0.0, 0.010175859, 0.011235707]
+gra[2][12][9] = [0.033317532, 0.007542981, 0.16918556, 0.060250558, 0.0019945612, -0.0318206, 0.008374144, 0.024137018, 0.0, -0.002900556, -0.018831125]
+gra[2][12][10] = [0.037359554, 0.03554336, 0.010199685, 0.02761072, 0.05891679, -0.0697458, -0.02648961, 0.10116728, 0.002381391, 0.010580534, -0.0068383366]
+gra[2][12][11] = [0.018431593, 0.0055147577, 0.13500987, 0.0076680183, -0.01452204, -0.027323436, 0.0052284813, 0.023991466, 7.6891546E-4, -0.002900556, -4.2205094E-4]
+gra[2][12][12] = [-0.19875024, -0.2440672, -0.123551175, -0.2592351, -0.28771695, -0.16224714, -0.36199668, -0.30089164, -0.11223101, -0.13092594, -0.21235895]
+gra[2][12][13] = [0.086594634, 0.021821834, 0.21497643, 0.09232503, -0.020451026, -0.015387063, -0.013508427, 0.029255526, -0.0016438005, 0.0012229867, 0.019614253]
+gra[2][12][14] = [0.07045497, -0.022578374, -0.017178424, 0.015037881, 0.021610979, 0.035623375, 0.12032417, 0.020360775, 0.0, -2.2505768E-11, -0.06410605]
+gra[2][13][2] = [-0.19951446, -0.15438879, -0.086470366, -0.240965, -0.23424724, -0.2326409, -0.32325682, -0.25252593, -0.12048934, -0.13127431, -0.20973417]
+gra[2][13][3] = [0.034109738, -0.019878507, 0.15669526, 0.020718105, -0.022531796, -0.035668552, 0.007155873, 0.016494725, 0.0, -0.0077277506, -0.020621555]
+gra[2][13][4] = [0.044724483, -0.022784252, 0.053607546, -0.021106908, -0.025197076, -0.035668552, 0.008420929, 0.016494725, 0.0, -0.0077277506, -0.017395958]
+gra[2][13][5] = [0.049483325, -0.018037941, 0.046609215, -0.031105205, -0.023715466, -0.036883388, 0.009783752, 0.015608587, 0.0, -0.0077277506, -0.014545322]
+gra[2][13][6] = [-0.011615532, -0.022087386, -0.08001248, 0.0047137234, -0.01746364, -0.016145736, 0.0, 0.012018705, -9.038228E-4, -0.0016083805, -0.0027130097]
+gra[2][13][7] = [0.07384895, -0.048609596, 0.019310912, -0.0030781596, -0.020567313, -0.02170797, 0.0034755857, 0.018190926, 0.0047529186, -0.006096343, -0.02214906]
+gra[2][13][8] = [-0.022202594, -0.022913663, -0.014633628, 0.03760764, 0.07925679, 0.040923893, -0.046354357, 0.046572696, 0.0019757631, 0.012150579, -0.017890848]
+gra[2][13][9] = [0.037301484, 0.006020313, 0.18435828, 0.08482369, -0.007422815, -0.0318206, 0.011969165, 0.026871076, 0.0, -0.005151834, -0.0074777785]
+gra[2][13][10] = [0.03558677, 0.037430346, -0.034637507, 0.012064794, 0.0474677, -0.07284611, 0.012233781, 0.09341223, 0.002381391, 0.014459286, 0.014751689]
+gra[2][13][11] = [0.01767755, 9.858967E-4, 0.15244359, 0.03832726, -0.030345086, -0.023034235, 0.0076052295, 0.030979762, 7.6891546E-4, -0.005151834, 0.0116091445]
+gra[2][13][12] = [0.054678664, -0.022402693, 0.1139498, 0.065429255, -0.0024198703, -0.029360235, 0.008978962, 0.038531862, -1.4217425E-4, -0.004681904, -0.008489365]
+gra[2][13][13] = [-0.19951446, -0.15438879, -0.086470366, -0.240965, -0.23424724, -0.2326409, -0.32325682, -0.25252593, -0.12048934, -0.13127431, -0.20973417]
+gra[2][13][14] = [0.014282126, -0.014524782, -0.13251245, 0.02636649, -0.0041411947, 0.015749522, 0.08567208, 0.011856999, 0.0, -0.0013691243, -0.067090854]
+gra[2][14][2] = [0.4343303, -0.37244362, -0.28004685, -0.12789774, -0.21803154, -0.12783362, -0.21811707, -0.14185552]
+gra[2][14][3] = [-0.050213013, 0.088265896, 0.0025411625, 0.008415423, -0.030471062, -0.0032232369, 0.046410937, -0.052638464]
+gra[2][14][4] = [-0.05870517, -0.014300982, -0.042183742, 0.0055096745, -0.030471062, 4.3161202E-4, 0.0642792, -0.052638464]
+gra[2][14][5] = [-0.05870517, -0.0060108323, -0.04972046, 0.010255989, -0.030471062, -0.0048348554, 0.06765758, -0.0538533]
+gra[2][14][6] = [-0.054352902, -0.0631387, -0.007950703, -0.022087386, 0.036315702, -9.038228E-4, -0.031075135, -0.015544581]
+gra[2][14][7] = [-0.037878644, -0.019238206, -0.01619927, -0.009466247, -0.03137149, 6.023841E-5, 0.08327374, -0.035573896]
+gra[2][14][8] = [-0.0027976157, 0.047380313, 0.09339658, -0.011650267, -0.008736845, 0.008354038, -0.008792204, 0.037216727]
+gra[2][14][9] = [-0.03965546, 0.12285828, 0.09784784, 0.045220323, -0.016584467, -0.0048348554, 0.04369542, -0.035722323]
+gra[2][14][10] = [-0.017961588, 0.061617773, -0.0027846463, 0.041740574, -0.012447634, 0.0, 0.019691546, -0.011759965]
+gra[2][14][11] = [-0.043990437, 0.08404583, 0.09661607, 0.036632266, -0.022157721, -0.0040659397, 0.033597667, -0.04387355]
+gra[2][14][12] = [-0.043106366, 0.037694193, 0.08272809, 0.01872339, -0.032401294, -0.008058093, 0.07131885, -0.03826637]
+gra[2][14][13] = [-0.03528687, 0.057534255, 0.057536703, 0.023469703, -0.029970387, -0.008058093, 0.071832515, -0.03826637]
+gra[2][14][14] = [0.4343303, -0.37244362, -0.28004685, -0.12789774, -0.21803154, -0.12783362, -0.21811707, -0.14185552]
+gra[3][0][0] = [-0.038961984]
+gra[3][0][1] = [0.11764526]
+gra[3][0][2] = [-0.0029783393]
+gra[3][0][3] = [-0.038961984]
+gra[3][1][0] = [0.0022879262, 0.0031182556, 6.20738E-4, 4.4457944E-11, -0.0021720084, 9.538275E-4]
+gra[3][1][1] = [-0.012393069, -0.15868439, -0.21871509, -0.18274719, -0.15518439, -0.21593317]
+gra[3][1][2] = [0.10560748, -0.042098567, 0.043105654, -0.026443, -0.007685846, -0.035907257]
+gra[3][1][3] = [-0.012393069, -0.15868439, -0.21871509, -0.18274719, -0.15518439, -0.21593317]
+gra[3][2][0] = [-0.0023283148, 0.0050770696, 6.4378075E-4, 0.0042653317, -0.00452922, 7.4807646E-11, -5.665981E-4, -3.050395E-11, 0.0012653338, 0.0024696218, -0.008016303]
+gra[3][2][1] = [-5.13921E-4, -3.7906157E-11, -0.045772243, -0.0041412255, -0.018871907, -0.0028272104, -0.012859132, 0.035186574, -7.720956E-4, 0.0035228117, -0.042637575]
+gra[3][2][2] = [-0.1527792, -0.113233194, -0.054301165, -0.15919417, -0.20111087, -0.16079815, -0.25796932, -0.241832, -0.18616161, -0.13430928, -0.21455298]
+gra[3][2][3] = [-0.1527792, -0.113233194, -0.054301165, -0.15919417, -0.20111087, -0.16079815, -0.25796932, -0.241832, -0.18616161, -0.13430928, -0.21455298]
+gra[3][4][3] = [0.080264926, 0.02579656, -0.16407087, -0.2805622, -0.3278504, -0.15959191, -0.2234307, -0.34202027, -0.100388475, -0.11454372, -0.15381846]
+gra[3][4][4] = [0.080264926, 0.02579656, -0.16407087, -0.2805622, -0.3278504, -0.15959191, -0.2234307, -0.34202027, -0.100388475, -0.11454372, -0.15381846]
+gra[3][4][5] = [0.19779329, 0.004704324, 0.0028100526, -0.19220777, -0.046565086, -0.12838551, -0.07412594, -0.0021814913, -6.042392E-4, 0.0012229872, 0.0031403098]
+gra[3][4][6] = [-0.081183486, -0.028070848, 0.030555831, -0.022723744, 0.025027804, -0.04813345, 0.003595072, 0.047705334, 0.0016591108, 0.002712621, -0.05144971]
+gra[3][4][7] = [0.0039748983, 9.6383225E-4, -0.04841364, -0.22035895, -0.03633671, -0.14051624, -0.0058753714, -0.10428843, -0.0016438008, 0.0022671833, -0.03286426]
+gra[3][4][8] = [-0.040510423, -0.061654296, 0.030528117, 0.02659813, -0.07196968, -0.081996635, -0.055243164, 0.08190204, 0.0, -0.004978219, -0.037152667]
+gra[3][4][9] = [0.11776427, -0.058918525, 0.12595578, -0.11178863, -0.029508589, -0.1381523, -0.047258385, -0.02285704, -6.042392E-4, 0.002051975, -0.022911087]
+gra[3][4][10] = [-0.008554228, 0.0412348, -0.12479799, -0.051410124, 0.030709445, -0.042462237, 0.0072704786, -0.006176661, 0.0, 0.008652416, 0.022637697]
+gra[3][4][11] = [-0.11572003, -0.04492593, -0.009004474, -0.042554148, -0.010522034, -0.16364421, 0.022561576, -0.048643857, -4.865427E-5, -0.0039698915, -0.0014345944]
+gra[3][4][12] = [-0.0069528553, -0.057728425, -0.005433593, -0.06658935, -0.07646103, -0.15282395, 0.011035223, -0.039221756, -0.0032192618, -0.0039698915, -0.010328554]
+gra[3][4][13] = [0.04217954, -0.036901977, 0.05292665, -0.092318825, -0.100017145, -0.15756387, 0.008219042, -0.06517905, -0.0016438005, 0.0012229871, -0.04239282]
+gra[3][4][14] = [-0.00299038, 0.03920348, -0.042208888, 0.05008921, 0.023527399, 0.020578144, 0.1248354, 0.032437425, -1.8203591E-10, 0.0, -0.051266756]
+gra[3][5][3] = [-0.024207622, -0.04951211, -0.22784083, -0.37396744, -0.41374195, -0.26431063, -0.2183969, -0.40905178, -0.11288505, -0.13377653, -0.28086165]
+gra[3][5][4] = [-0.057146087, -0.039673835, 0.17305376, -0.01683017, -0.022667397, -0.02753507, 0.01188374, 0.025290381, 9.0512355E-12, -0.012879585, 0.04504322]
+gra[3][5][5] = [-0.024207622, -0.04951211, -0.22784083, -0.37396744, -0.41374195, -0.26431063, -0.2183969, -0.40905178, -0.11288505, -0.13377653, -0.28086165]
+gra[3][5][6] = [-0.09216936, -0.030741546, 0.03069731, 0.001978191, 0.04201092, -0.037597638, 0.007732113, 0.03876819, 0.0016591108, 0.0048741507, -0.03833175]
+gra[3][5][7] = [0.04825837, 0.021060362, -0.08345264, -0.1970743, -0.016389595, -0.1403506, -0.0074517485, -0.1133868, -0.0016438005, -4.6656025E-4, -0.028017744]
+gra[3][5][8] = [-0.053781927, -0.098772004, -0.011392334, -0.005794887, -0.033350054, -0.041652158, -0.043947633, 0.06334871, 0.0, -0.004978219, -0.0014865557]
+gra[3][5][9] = [0.17482388, -0.048466492, 0.10114264, -0.08527103, -0.041911483, -0.12539127, -0.038351398, -0.027558457, -6.042392E-4, -1.444224E-4, -0.007109831]
+gra[3][5][10] = [-0.008337104, 0.016614538, -0.13279286, -0.08460896, 0.019444827, -0.042462237, 0.0050525577, -0.007914498, 0.0, 0.010368334, 0.019255804]
+gra[3][5][11] = [-0.06327887, -0.020189673, -0.033281863, 0.0060988883, -0.02684297, -0.14738953, 0.034516916, -0.061666783, 0.0015268069, -0.0039698915, 0.022333067]
+gra[3][5][12] = [0.05785005, -0.02568133, -0.03294557, -0.025710281, -0.06816338, -0.12709959, 0.01705242, -0.03655747, 0.0023156772, -0.0039698915, 0.0031419299]
+gra[3][5][13] = [0.10470373, -0.024147956, 0.051864047, -0.050332405, -0.100363165, -0.1402328, 0.008766838, -0.067552485, -0.0016438005, 0.0012229871, -0.0146583365]
+gra[3][5][14] = [-0.0038765296, 0.036679298, -0.014407332, 0.05955772, 0.017360983, 0.020085067, 0.10783379, 0.016229236, -1.8203591E-10, 0.0, -0.06919619]
+gra[3][6][3] = [-0.39042288, -0.20252663]
+gra[3][6][4] = [0.11618018, -0.036191344]
+gra[3][6][5] = [0.013443776, -0.027157694]
+gra[3][6][6] = [-0.39042288, -0.20252663]
+gra[3][6][7] = [0.011014465, -0.016218057]
+gra[3][6][8] = [-0.10187224, 0.029533952]
+gra[3][6][9] = [0.11174672, -0.0030878466]
+gra[3][6][10] = [-0.05216477, -0.034098495]
+gra[3][6][11] = [0.013574712, -0.042492915]
+gra[3][6][12] = [0.07790509, 0.003786453]
+gra[3][6][13] = [0.13284796, -0.02833015]
+gra[3][6][14] = [-0.086883545, -0.032392908]
+gra[3][7][3] = [-0.03810625, -0.07246947, -0.18749088, -0.35617045, -0.0039878795, -0.20469043, -0.30595267, -0.13831393, -0.07891641, -0.14182357, -0.22269824]
+gra[3][7][4] = [-0.054191194, -0.04623367, 0.19473083, -0.019242423, -0.028735178, -0.030014966, 0.0035608534, 0.005567723, 9.0512355E-12, -0.012879585, -0.010007761]
+gra[3][7][5] = [-0.027313534, -0.049789086, 0.0976167, -0.04305214, -0.02725357, -0.030014966, 0.0036596532, 0.005567723, 9.0512355E-12, -0.0037799405, -0.007157123]
+gra[3][7][6] = [-0.022742484, -0.006928928, -0.04051508, -0.003913735, -0.025036301, -0.018571196, -4.731787E-11, 0.0, -0.0045685717, -0.0016083805, 0.0]
+gra[3][7][7] = [-0.03810625, -0.07246947, -0.18749088, -0.35617045, -0.0039878795, -0.20469043, -0.30595267, -0.13831393, -0.07891641, -0.14182357, -0.22269824]
+gra[3][7][8] = [-0.06396654, -0.10820116, 0.026846237, -0.013104029, -0.099735364, -0.02959507, -0.0341132, 0.05246252, 0.0, -0.0033622796, 0.005457081]
+gra[3][7][9] = [0.08995527, -0.042559315, 0.02578675, -0.091648445, 0.08852732, 0.0071767634, -0.025927924, 0.0230534, -6.042392E-4, -0.006980671, -0.056342095]
+gra[3][7][10] = [0.04442288, 0.08723284, -0.16664585, -0.037582442, 0.03385026, -0.07331349, 0.026329678, -0.059664503, 0.0, 0.008259046, 0.0040668105]
+gra[3][7][11] = [-0.10968651, -0.049679715, -0.091641724, 0.0135395825, 0.10426791, -0.04648871, 0.03418339, 0.00646766, 0.0015268069, -0.007024522, -0.00857213]
+gra[3][7][12] = [-8.94831E-4, -0.048872735, -0.07393748, -0.021211132, 0.06579353, -0.028791236, 0.0055351285, 0.09356796, -0.0016438005, -0.007024522, -0.010688173]
+gra[3][7][13] = [0.031788692, -0.047926236, 0.005738914, -0.06011968, 0.024804078, -0.045847956, 0.0027329288, 0.06296933, -0.0016438005, -0.0018316432, -0.030455668]
+gra[3][7][14] = [-0.0017417222, 0.025195358, 0.0070165694, 3.3167237E-4, 8.169799E-4, 7.0631783E-4, 0.11188539, 0.02086204, -0.0019475454, -0.0010469037, -0.06419305]
+gra[3][8][3] = [-0.15412576, -0.12789336, -0.20798595, -0.24514237, -0.30613858, -0.2518991]
+gra[3][8][4] = [0.111481294, -0.036286652, -0.05985439, -0.017615488, -0.005918055, 4.770551E-4]
+gra[3][8][5] = [0.008234154, -0.030956661, -0.07456523, -0.017615488, -0.0025875743, 4.770551E-4]
+gra[3][8][6] = [-0.028704194, 0.002314438, -0.0022998422, -0.018571196, -0.003225636, -0.0043171197]
+gra[3][8][7] = [-0.011244033, -0.016609045, -0.057324897, -0.01446133, -6.4382935E-4, -0.008020589]
+gra[3][8][8] = [-0.15412576, -0.12789336, -0.20798595, -0.24514237, -0.30613858, -0.2518991]
+gra[3][8][9] = [0.14387159, 0.0015868242, -9.2201936E-4, -0.10608127, -0.04583137, -0.046073522]
+gra[3][8][10] = [-0.059995398, 0.09151214, -0.05540722, -0.025675789, -0.004103984, -0.017712904]
+gra[3][8][11] = [0.052732036, 0.056370113, 0.025641251, -0.10506861, -0.06615821, -0.022662342]
+gra[3][8][12] = [0.01624117, 0.07265478, 0.029413441, -0.06037133, -0.069066934, 0.0031176568]
+gra[3][8][13] = [0.08026971, 0.06581602, 0.08241708, -0.07446065, -0.09312223, -0.0033769957]
+gra[3][8][14] = [-0.061419778, 0.030121334, 0.088266574, 0.019163983, 0.020992978, -0.030493984]
+gra[3][9][3] = [-0.021003172, -0.065597035, -0.16535676, -0.25871342, -0.29838958, -0.24498987, -0.3047002, -0.23739927, -0.08985106, -0.117371395, -0.15238857]
+gra[3][9][4] = [-0.056511734, -0.050796784, 0.21606155, -0.04224682, -0.02565812, -0.027460705, 0.010665469, 0.02652775, -0.002650973, -0.012879585, 0.010691209]
+gra[3][9][5] = [-0.03898397, -0.04384581, 0.10932791, -0.067109935, -0.025863424, -0.027267672, 0.013148798, 0.02652775, 9.0512355E-12, -0.011506752, 0.016392484]
+gra[3][9][6] = [-0.026048012, -0.006928928, -0.04699468, -0.0012417085, -0.02850939, -0.02125135, 0.0, 0.0, -0.0045685717, -0.0016083805, -0.0012626576]
+gra[3][9][7] = [-0.0125679895, -0.037647933, 0.01847256, -0.069894865, -0.022533493, -0.01942112, 0.007643792, 0.031788614, -1.4217442E-4, -0.007257821, -0.01844468]
+gra[3][9][8] = [-0.011030057, -0.027001118, -0.016916927, 0.054259032, 0.046004623, 0.027047869, -0.027326334, 0.019558845, 0.0, 0.005164899, -0.010124459]
+gra[3][9][9] = [-0.021003172, -0.065597035, -0.16535676, -0.25871342, -0.29838958, -0.24498987, -0.3047002, -0.23739927, -0.08985106, -0.117371395, -0.15238857]
+gra[3][9][10] = [-0.009904943, 0.08271649, -6.605489E-4, -0.05324988, 0.059516188, -0.03834217, 0.021282855, 0.025870191, 0.0, 0.010368334, -0.0012901137]
+gra[3][9][11] = [-0.08583092, 0.0026931786, 0.055489168, 0.069315575, 0.06542832, -0.09547536, 0.08125984, -0.030693594, -0.001936182, -0.0025422391, -0.014482316]
+gra[3][9][12] = [-0.002932982, -0.029178634, 0.02658984, 0.0762058, -0.03144419, -0.09210541, 0.042617302, -0.0028532404, -0.0051067895, -0.0025422391, -8.367696E-4]
+gra[3][9][13] = [0.03893423, -0.02479623, 0.12503432, -0.0042038285, -0.05592381, -0.072107635, 0.040826432, -0.014562405, -0.0051067895, 0.0026506395, -0.054437894]
+gra[3][9][14] = [-0.021795094, 0.02577257, -0.031111931, 0.06994245, 0.031381827, 0.060158834, 0.10587171, 0.017498635, 0.0, 0.0, -0.07941664]
+gra[3][10][3] = [-0.1329772, -0.15913084, -0.33212945, -0.38628212, -0.17085952, -0.14248645, -0.11814857]
+gra[3][10][4] = [0.09687643, -0.03531511, -0.017615488, -0.050107636, 0.0, 0.008792369, -0.04500673]
+gra[3][10][5] = [-0.0066100135, -0.02998512, -0.017615488, -0.07391735, 0.0, 0.008792369, -0.028043877]
+gra[3][10][6] = [-0.028704194, -0.006928928, -0.020728316, -0.0068972483, -0.0061344863, 0.004557554, -0.022639498]
+gra[3][10][7] = [-0.046813827, -0.02181504, -0.01446133, -0.042420294, -0.0033213743, 0.0016988069, -0.00995356]
+gra[3][10][8] = [-0.003417932, -0.009956081, 0.033852994, -0.012161942, 0.0017278524, 0.0013890374, -0.0040250965]
+gra[3][10][9] = [0.07826676, 0.0033093924, -0.0119619025, -0.03593995, 0.0, 0.009920094, -0.034691177]
+gra[3][10][10] = [-0.1329772, -0.15913084, -0.33212945, -0.38628212, -0.17085952, -0.14248645, -0.11814857]
+gra[3][10][11] = [0.015245715, 0.13007498, -0.116307035, -0.009605885, -0.006525742, -0.1280925, 0.07482027]
+gra[3][10][12] = [-0.0031260774, 0.08639123, -0.07817442, -0.034333423, -0.008802207, -0.061089545, 0.08547191]
+gra[3][10][13] = [0.07543126, 0.08516402, -0.07825824, -0.05238478, -0.005011603, -0.08016144, 0.08822032]
+gra[3][10][14] = [-0.043887418, 0.005256214, 0.014653939, 0.08381868, -0.021312775, 0.0047443355, 0.041867867]
+gra[3][11][3] = [-0.09214447, -0.10365626, -0.052041374, -0.2149998, -0.19054943, -0.13169308, -0.3842526, -0.27320582, -0.08365657, -0.100043, -0.17461441]
+gra[3][11][4] = [-0.056511734, -0.05296787, 0.20943795, -0.028145026, -0.02407775, -0.025055174, 0.0059119724, 0.0074535403, 9.0512355E-12, -0.012879585, -0.012467872]
+gra[3][11][5] = [-0.037326038, -0.04763788, 0.10435052, -0.05078754, -0.024283057, -0.025055174, 0.008395301, 0.008833618, 9.0512355E-12, -0.012879585, -0.006766601]
+gra[3][11][6] = [-0.027569015, -0.006928928, -0.047970586, -0.0033129938, -0.025036301, -0.019172352, 0.0, 0.0, -0.0045685717, -0.0016083805, -0.0012626576]
+gra[3][11][7] = [-0.012654685, -0.048454355, 0.0369806, -0.07753024, -0.023927642, -0.01942112, 0.0064100344, 0.007928713, -9.331818E-4, -0.00948236, -0.01761809]
+gra[3][11][8] = [-0.017691867, -0.028658904, -0.015097424, 0.023459015, 0.08073837, 0.033852994, -0.03048157, 0.042773336, -0.0017965699, 0.011501777, 0.013622059]
+gra[3][11][9] = [-0.036216546, -0.02235225, 0.23496085, -0.04552784, -0.011887079, -0.021881483, 0.008733615, 0.016309183, 9.0512355E-12, -0.0077277506, -0.0013032085]
+gra[3][11][10] = [-2.7178368E-4, -0.06855495, 0.027399302, -0.008799138, 0.102962606, -0.09111658, -0.05898697, 0.083916046, 0.0024555703, 0.023591425, -0.0036736613]
+gra[3][11][11] = [-0.09214447, -0.10365626, -0.052041374, -0.2149998, -0.19054943, -0.13169308, -0.3842526, -0.27320582, -0.08365657, -0.100043, -0.17461441]
+gra[3][11][12] = [-0.04195919, -0.011814356, 0.034449045, 0.049225464, 0.07797931, -0.022044744, 0.020394541, 0.028562825, -0.0016438005, -1.4816411E-4, 0.0416849]
+gra[3][11][13] = [-0.019808618, -0.05076483, 0.10389386, -0.009409836, 0.018409714, -0.07892824, 0.0015091486, 0.010321492, -0.0016438005, 0.0026422446, 0.0017031142]
+gra[3][11][14] = [0.03876716, 0.024333825, -0.022561122, 0.016644152, 0.006734378, 0.025349773, 0.14653301, 0.040411703, 0.0, 0.0, -0.09829482]
+gra[3][12][3] = [-0.11387451, -0.15722544, -0.17891133, -0.31314385, -0.25551414, -0.19353133, -0.33349663, -0.29827237, -0.098324604, -0.13416855, -0.2571352]
+gra[3][12][4] = [-0.056511734, -0.04987319, 0.20671012, -0.022405924, -0.015052397, -0.030014966, 0.0035608534, 0.011555983, 5.769341E-4, -0.010628307, -0.020405654]
+gra[3][12][5] = [-0.037326038, -0.0445432, 0.09530988, -0.04893767, -0.0135707855, -0.030014966, 0.006044182, 0.010669847, 9.0512355E-12, -0.010628307, -0.01856464]
+gra[3][12][6] = [-0.027659994, -0.006928928, -0.0524088, 0.006312619, -0.025585316, -0.019172352, 0.0, 0.0, -0.008284481, -0.0016083805, -0.0012626576]
+gra[3][12][7] = [-0.012654685, -0.047222544, 0.025782429, -0.048584756, -0.009962272, -0.021901015, 0.002915925, 0.0064832703, -1.4217442E-4, -0.007231083, -0.031687073]
+gra[3][12][8] = [-0.020402493, -0.024556305, -0.015575819, 0.055016555, 0.051806875, 0.033852994, -0.04555193, 0.05035637, 0.0, 0.0031901782, 0.0090892585]
+gra[3][12][9] = [-0.033509176, -0.019306917, 0.20735021, -0.005000181, 0.0028634723, -0.029321171, 0.0063824966, 0.024137018, 9.0512355E-12, -0.005476473, -0.013007009]
+gra[3][12][10] = [0.011302657, -0.07017854, 0.023033805, 0.015241189, 0.08098403, -0.06386582, -0.012394784, 0.10541846, 0.002381391, 0.011636256, -0.0048150206]
+gra[3][12][11] = [-0.044727597, -0.0034954008, 0.13743237, -0.05609268, -0.01628504, -0.02166985, 0.0032368335, 0.023991466, 7.6891546E-4, -0.005476473, -0.0042543197]
+gra[3][12][12] = [-0.11387451, -0.15722544, -0.17891133, -0.31314385, -0.25551414, -0.19353133, -0.33349663, -0.29827237, -0.098324604, -0.13416855, -0.2571352]
+gra[3][12][13] = [0.10053188, -0.03359089, 0.12973118, -0.013946263, -0.025900569, -0.06678694, -0.013508427, 0.049437862, -0.0016438005, 0.0012229871, 0.013154621]
+gra[3][12][14] = [0.038463943, 0.023034256, 0.0101122, 0.026391888, 0.021977, 0.03366942, 0.13214202, 0.020360775, 0.0, -2.2505768E-11, -0.06410605]
+gra[3][13][3] = [-0.11463873, -0.06754701, -0.14183052, -0.2948737, -0.20204443, -0.2639251, -0.29475674, -0.24990667, -0.10658293, -0.13451692, -0.2545104]
+gra[3][13][4] = [-0.055579588, -0.051395856, 0.22241642, -4.059528E-4, -0.024469772, -0.030014966, 0.007155873, 0.016494725, 9.0512355E-12, -0.012879585, -0.011571843]
+gra[3][13][5] = [-0.036240384, -0.046065867, 0.111016184, -0.028104905, -0.022988161, -0.030014966, 0.009639202, 0.015608587, 9.0512355E-12, -0.012879585, -0.008721208]
+gra[3][13][6] = [-0.025174934, -0.006928928, -0.0555249, 0.0047137234, -0.025065042, -0.019172352, 0.0, 0.0, -0.0045685717, -0.0016083805, -0.0012626576]
+gra[3][13][7] = [-0.010334147, -0.04874521, 0.037647445, -0.026584785, -0.01937965, -0.021901015, 0.006510945, 0.014144414, -1.4217442E-4, -0.007257821, -0.024563886]
+gra[3][13][8] = [-0.017435485, -0.025563205, -0.018197112, 0.0629446, 0.07925679, 0.033852994, -0.050028473, 0.046572696, 0.0019757631, 0.005164899, -0.020037295]
+gra[3][13][9] = [-0.029525224, -0.020829584, 0.22252294, 0.019572949, -0.006553903, -0.029321171, 0.009977517, 0.026871076, 9.0512355E-12, -0.0077277506, -0.0016536638]
+gra[3][13][10] = [0.009529866, -0.06829155, -0.021803388, -3.047292E-4, 0.06953493, -0.066966124, 0.026328605, 0.09766341, 0.002381391, 0.015515008, 0.016775005]
+gra[3][13][11] = [-0.045481637, -0.009793117, 0.1632958, -0.023134613, -0.032108083, -0.01738065, 0.0056135817, 0.030979762, 7.6891546E-4, -0.0077277506, 0.007776879]
+gra[3][13][12] = [-0.019675596, -0.026981357, 0.1308571, 0.017473653, -0.0012450293, -0.026860807, 0.009749667, 0.03448535, -1.4217423E-4, -0.007257821, -0.008489365]
+gra[3][13][13] = [-0.11463873, -0.06754701, -0.14183052, -0.2948737, -0.20204443, -0.2639251, -0.29475674, -0.24990667, -0.10658293, -0.13451692, -0.2545104]
+gra[3][13][14] = [-0.01722709, 0.032380998, -0.09424367, 0.027259992, -0.0021256413, 0.0184861, 0.09748994, 0.011856999, 0.0, -0.0013691243, -0.067090854]
+gra[3][14][3] = [0.44593877, -0.42780378, -0.3339555, -0.041055933, -0.23774712, -0.11392724, -0.13324136, -0.17313966]
+gra[3][14][4] = [-0.050213013, 0.15398705, -0.018582903, -0.023101933, -0.03499973, 0.0020432305, -0.036024883, -0.046984877]
+gra[3][14][5] = [-0.057042483, 0.058396146, -0.04672017, -0.01777194, -0.03499973, -0.0048348554, -0.01806613, -0.046984877]
+gra[3][14][6] = [-0.055422466, -0.038651124, -0.007950703, -0.006928928, 0.03158737, -0.0045685717, -0.04463454, -0.018571196]
+gra[3][14][7] = [-0.046599343, -9.01673E-4, -0.039705895, -0.009601859, -0.027448343, -0.004834855, -9.093541E-4, -0.03576694]
+gra[3][14][8] = [-0.0027976157, 0.04381682, 0.11873355, -0.014299808, -0.011449244, 0.008354038, -0.0040250965, 0.030145828]
+gra[3][14][9] = [-0.03965546, 0.16102295, 0.032597095, 0.018370427, -0.01859632, -0.0048348554, -0.023131285, -0.033222895]
+gra[3][14][10] = [-0.017961588, 0.074451886, -0.015154174, -0.06398133, -0.012447634, 0.0, -0.006365354, -0.005879982]
+gra[3][14][11] = [-0.043990437, 0.09489804, 0.035154194, 0.025853252, -0.019943671, -0.0040659397, -0.029561525, -0.038219962]
+gra[3][14][12] = [-0.05016438, 0.06303118, 0.037071317, 0.012375867, -0.028478147, -0.008058093, -0.0030354094, -0.03576694]
+gra[3][14][13] = [-0.042344883, 0.07444154, 0.0095811095, 0.018891037, -0.026047245, -0.008058093, -0.002521744, -0.03576694]
+gra[3][14][14] = [0.44593877, -0.42780378, -0.3339555, -0.041055933, -0.23774712, -0.11392724, -0.13324136, -0.17313966]
+gra[4][0][0] = [-0.068558656]
+gra[4][0][1] = [0.11764526]
+gra[4][0][2] = [-0.041710425]
+gra[4][0][3] = [0.0015610885]
+gra[4][0][4] = [-0.068558656]
+gra[4][1][0] = [0.0022879262, -0.001958814, 6.20738E-4, 4.4457944E-11, -0.0021720084, -9.267408E-4]
+gra[4][1][1] = [-0.04198974, -0.15868439, -0.21871509, -0.18274719, -0.15518439, -0.21593317]
+gra[4][1][2] = [0.049908973, -0.060012273, 0.0132662775, -0.026443, -0.0023895265, -0.048535112]
+gra[4][1][3] = [0.046850376, -0.0399934, 0.0010957995, -0.019397447, -0.00574457, -0.047918677]
+gra[4][1][4] = [-0.04198974, -0.15868439, -0.21871509, -0.18274719, -0.15518439, -0.21593317]
+gra[4][2][0] = [-0.0023283148, 0.0, 6.4378075E-4, 0.0042653317, -0.008087347, 0.0031306578, 2.969677E-4, -3.050395E-11, 0.0012653338, 0.0024696218, -0.009896872]
+gra[4][2][1] = [-5.13921E-4, -3.7906157E-11, -0.045836035, -0.0041412255, -0.02294093, -0.0028272104, -0.014439816, 0.035186574, -7.720956E-4, 0.0035228117, -0.034932088]
+gra[4][2][2] = [-0.1527792, -0.16105321, -0.11441286, -0.18570481, -0.263671, -0.16376895, -0.27147496, -0.28773913, -0.20254132, -0.14136088, -0.26420903]
+gra[4][2][3] = [-0.004744318, -0.028696006, -0.047554154, -0.029328587, -0.0108278785, 0.0, 0.012152899, -0.009935487, -0.011329165, -0.0052225264, -0.12551941]
+gra[4][2][4] = [-0.1527792, -0.16105321, -0.11441286, -0.18570481, -0.263671, -0.16376895, -0.27147496, -0.28773913, -0.20254132, -0.14136088, -0.26420903]
+gra[4][3][0] = [-0.0023283148, 0.0, -2.546209E-4, 6.20738E-4, 0.0, 7.4807646E-11, 2.969678E-4, -6.10079E-11, 0.0012653338, 2.1146203E-5, -0.007859215]
+gra[4][3][1] = [-5.13921E-4, 0.0, -0.06842534, -0.010353064, -0.035776734, -0.004779683, -0.043350175, 0.079702035, -7.720956E-4, 0.0, -0.09211975]
+gra[4][3][2] = [-0.0050252816, -0.021862686, -0.05439042, 0.0, -0.0197254, -0.011747527, -0.010851742, 0.0045674103, -0.008396367, 0.016079204, -0.045323726]
+gra[4][3][3] = [-0.15722692, -0.15284958, -0.1687409, -0.21507952, -0.29694274, -0.18014798, -0.21342382, -0.375148, -0.18912332, -0.1695773, -0.22369294]
+gra[4][3][4] = [-0.15722692, -0.15284958, -0.1687409, -0.21507952, -0.29694274, -0.18014798, -0.21342382, -0.375148, -0.18912332, -0.1695773, -0.22369294]
+gra[4][5][4] = [0.014722959, 0.18275993, -0.0636386, -0.22962478, -0.28831062, -0.19243455, -0.20865887, -0.33900928, -0.098217, -0.11010328, -0.17192467]
+gra[4][5][5] = [0.014722959, 0.18275993, -0.0636386, -0.22962478, -0.28831062, -0.19243455, -0.20865887, -0.33900928, -0.098217, -0.11010328, -0.17192467]
+gra[4][5][6] = [-0.09911031, -0.02584689, 0.026706154, 0.0064545716, 0.030568566, -0.037597638, 0.0030047887, 0.024394596, 0.0, 0.0048741507, -0.039634243]
+gra[4][5][7] = [0.010370938, 0.0097888755, -0.04665061, -0.21829283, -0.03931838, -0.12108123, -0.007544473, -0.10600374, -0.0016438005, -4.6656025E-4, -0.03369571]
+gra[4][5][8] = [-0.04795964, -0.08748845, 0.012514722, 0.054292858, -0.046950795, -0.041652158, -0.05227269, 0.042276658, 0.0, -0.004978219, 0.0038085831]
+gra[4][5][9] = [0.118447594, -0.048133302, 0.116975956, -0.10744196, -0.042570457, -0.110149436, -0.036007646, -0.02457235, -6.042392E-4, -1.444224E-4, -0.010697803]
+gra[4][5][10] = [-0.008554228, 0.041264854, -0.11523878, -0.06722138, 0.020829812, -0.042462237, 0.0072704786, -0.017995058, 0.0, 0.012700643, 0.022817375]
+gra[4][5][11] = [-0.12169014, -0.030582886, -0.02897325, -0.031979937, -0.023385987, -0.12917747, 0.031189587, -0.050955363, -6.042392E-4, -0.0039698915, 0.008385656]
+gra[4][5][12] = [9.146053E-6, -0.04193567, -0.034431104, -0.06613156, -0.078815356, -0.11424304, 0.013824362, -0.043248564, 0.0023156772, -0.0039698915, -0.0046529626]
+gra[4][5][13] = [0.05273106, -0.021414878, 0.04215588, -0.09433008, -0.10508856, -0.124612965, 0.010319007, -0.06516868, -0.0016438005, 0.0055478574, -0.02379297]
+gra[4][5][14] = [-0.0270753, 0.041652158, -0.08693187, 0.055251643, 0.015370078, 0.020085067, 0.103559524, 0.026089558, -1.8203591E-10, 0.0, -0.06919619]
+gra[4][6][4] = [-0.35341132, -0.20252663]
+gra[4][6][5] = [0.092977405, -0.02442189]
+gra[4][6][6] = [-0.35341132, -0.20252663]
+gra[4][6][7] = [0.019726846, -0.012724133]
+gra[4][6][8] = [-0.10187224, 0.029533952]
+gra[4][6][9] = [0.11780503, -0.0030878466]
+gra[4][6][10] = [-0.064647116, -0.034098495]
+gra[4][6][11] = [0.019633012, -0.035545427]
+gra[4][6][12] = [0.083963394, 0.003786453]
+gra[4][6][13] = [0.13890627, -0.02833015]
+gra[4][6][14] = [-0.08874273, -0.031247089]
+gra[4][7][4] = [-0.12397108, 0.014455657, -0.15047927, -0.35617045, -0.0039878795, -0.20469043, -0.30595267, -0.13831393, -0.07891641, -0.14182357, -0.21851322]
+gra[4][7][5] = [-0.043149117, -0.0449026, 0.16233759, -0.02765031, -0.02725357, -0.030014966, 0.0047791246, 0.005567723, 9.0512355E-12, -0.0018806041, -0.007157123]
+gra[4][7][6] = [-0.022742484, -0.006928928, -0.04051508, -0.003913735, -0.025036301, -0.018571196, -4.731787E-11, 0.0, -9.038228E-4, -0.0016083805, 0.0]
+gra[4][7][7] = [-0.12397108, 0.014455657, -0.15047927, -0.35617045, -0.0039878795, -0.20469043, -0.30595267, -0.13831393, -0.07891641, -0.14182357, -0.21851322]
+gra[4][7][8] = [-0.059728492, -0.106997676, 0.026846237, -0.013104029, -0.099735364, -0.02959507, -0.0341132, 0.05246252, 0.0, -0.0033622796, 0.005457081]
+gra[4][7][9] = [0.08231275, -0.038986813, 0.031845048, -0.091648445, 0.087450445, 0.0071767634, -0.025927924, 0.0230534, -6.042392E-4, -0.006980671, -0.056342095]
+gra[4][7][10] = [0.04442288, 0.094747745, -0.1791282, -0.037582442, 0.03385026, -0.07331349, 0.026329678, -0.061193362, 0.0, 0.010591356, 0.0040668105]
+gra[4][7][11] = [-0.117329046, -0.046107206, -0.08558342, 0.0135395825, 0.10319102, -0.04648871, 0.03418339, 0.00646766, -6.042392E-4, -0.007024522, -0.00857213]
+gra[4][7][12] = [-0.008537363, -0.045300227, -0.06787919, -0.021211132, 0.063573614, -0.028791236, 0.0055351285, 0.09356796, -0.0016438005, -0.007024522, -0.010688173]
+gra[4][7][13] = [0.024146158, -0.044353727, 0.011797216, -0.06011968, 0.023727208, -0.045847956, 0.0027329288, 0.06296933, -0.0016438005, 0.0024932271, -0.026049387]
+gra[4][7][14] = [-0.0017417222, 0.027644029, 0.005157385, 3.3167237E-4, 8.169799E-4, 7.0631783E-4, 0.10761113, 0.02086204, -0.0019475454, -0.0010469037, -0.06419305]
+gra[4][8][4] = [-0.11711414, -0.040968277, -0.20798595, -0.24514237, -0.30613858, -0.24771409]
+gra[4][8][5] = [0.08426701, -0.028518835, -0.059163406, -0.017615488, -0.0025875743, 4.770551E-4]
+gra[4][8][6] = [-0.028704194, 0.002314438, -0.0022998422, -0.018571196, -0.003225636, -0.0043171197]
+gra[4][8][7] = [-0.016012147, -0.013587542, -0.057324897, -0.01446133, -6.4382935E-4, -0.008020589]
+gra[4][8][8] = [-0.11711414, -0.040968277, -0.20798595, -0.24514237, -0.30613858, -0.24771409]
+gra[4][8][9] = [0.1499299, 0.005159328, -9.2201936E-4, -0.10608127, -0.04583137, -0.046073522]
+gra[4][8][10] = [-0.07247772, 0.099027045, -0.05540722, -0.025675789, -0.004103984, -0.017712904]
+gra[4][8][11] = [0.05879034, 0.059942614, 0.025641251, -0.10506861, -0.058699712, -0.022662342]
+gra[4][8][12] = [0.022299469, 0.076227285, 0.029413441, -0.06037133, -0.07426226, 0.0031176568]
+gra[4][8][13] = [0.086328015, 0.069388516, 0.08241708, -0.07446065, -0.09312223, 0.0010292889]
+gra[4][8][14] = [-0.063278966, 0.032570012, 0.088266574, 0.019163983, 0.020992978, -0.030493984]
+gra[4][9][4] = [-0.10686798, 0.02132809, -0.12834515, -0.25871342, -0.29838958, -0.24498987, -0.3047002, -0.23739927, -0.08985106, -0.117371395, -0.14820358]
+gra[4][9][5] = [-0.051906407, -0.04059518, 0.18360823, -0.050654702, -0.025863424, -0.027267672, 0.01188374, 0.02652775, 9.0512355E-12, -0.011506752, 0.016392484]
+gra[4][9][6] = [-0.026048012, -0.006928928, -0.04699468, -0.0012417085, -0.02850939, -0.02125135, 0.0, 0.0, -9.038228E-4, -0.0016083805, -0.0012626576]
+gra[4][9][7] = [-0.0060619293, -0.03462643, 0.013704447, -0.069894865, -0.022533493, -0.01942112, 0.007643792, 0.031788614, -1.4217423E-4, -0.007257821, -0.01844468]
+gra[4][9][8] = [-0.012241036, -0.027001118, -0.008912949, 0.059138477, 0.046004623, 0.027047869, -0.027326334, 0.019558845, 0.0, 0.005164899, -0.010124459]
+gra[4][9][9] = [-0.10686798, 0.02132809, -0.12834515, -0.25871342, -0.29838958, -0.24498987, -0.3047002, -0.23739927, -0.08985106, -0.117371395, -0.14820358]
+gra[4][9][10] = [-0.009904943, 0.09023139, -0.013142893, -0.05324988, 0.059516188, -0.03834217, 0.021282855, 0.024341332, 0.0, 0.012700643, -0.0012901137]
+gra[4][9][11] = [-0.093473464, 0.0062656836, 0.061547473, 0.069315575, 0.064351425, -0.09547536, 0.08125984, -0.030693594, -0.004067228, -0.0025422391, -0.014482316]
+gra[4][9][12] = [-0.010575512, -0.025606124, 0.03264815, 0.0762058, -0.03366411, -0.09210541, 0.042617302, -0.0028532404, -0.0051067895, -0.0025422391, -8.367696E-4]
+gra[4][9][13] = [0.0312917, -0.02122373, 0.13109264, -0.0042038285, -0.057000685, -0.072107635, 0.040826432, -0.014562405, -0.0051067895, 0.0069755097, -0.05003162]
+gra[4][9][14] = [-0.021795094, 0.028221246, -0.032971114, 0.06994245, 0.031381827, 0.060158834, 0.10159744, 0.017498635, 0.0, 0.0, -0.07941664]
+gra[4][10][4] = [-0.095965564, -0.07220575, -0.33212945, -0.38628212, -0.17085952, -0.13830143, -0.2040134]
+gra[4][10][5] = [0.072923616, -0.027547294, -0.017615488, -0.058515526, 0.0, 0.008792369, -0.042624243]
+gra[4][10][6] = [-0.028704194, -0.006928928, -0.020728316, -0.0068972483, -0.0022654566, 0.004557554, -0.022639498]
+gra[4][10][7] = [-0.051581945, -0.018793536, -0.01446133, -0.042420294, -0.0033213743, 0.0016988069, -0.003447506]
+gra[4][10][8] = [0.0045860405, -0.009956081, 0.033852994, -0.0072824936, 0.0028213095, 0.0013890374, -0.0052360767]
+gra[4][10][9] = [0.073498644, 0.007381615, -0.0119619025, -0.03593995, 0.0, 0.009920094, -0.034691177]
+gra[4][10][10] = [-0.095965564, -0.07220575, -0.33212945, -0.38628212, -0.17085952, -0.13830143, -0.2040134]
+gra[4][10][11] = [0.02130402, 0.13364749, -0.116307035, -0.009605885, -0.006525742, -0.1280925, 0.06717774]
+gra[4][10][12] = [0.0029322281, 0.08996374, -0.07817442, -0.034333423, -0.008802207, -0.061089545, 0.077829376]
+gra[4][10][13] = [0.08148956, 0.08873653, -0.07825824, -0.05238478, -0.005011603, -0.075755164, 0.08057779]
+gra[4][10][14] = [-0.045746606, 0.0077048903, 0.014653939, 0.08381868, -0.021312775, 0.0047443355, 0.041867867]
+gra[4][11][4] = [-0.17800932, -0.016731167, -0.015029761, -0.2149998, -0.19054943, -0.13169308, -0.3842526, -0.27320582, -0.08365657, -0.100043, -0.17042941]
+gra[4][11][5] = [-0.051906407, -0.04520005, 0.1781785, -0.035385706, -0.024283057, -0.025055174, 0.007130244, 0.008833618, 9.0512355E-12, -0.012879585, -0.006766601]
+gra[4][11][6] = [-0.027569015, -0.006928928, -0.047970586, -0.0033129938, -0.025036301, -0.019172352, 0.0, 0.0, -9.038228E-4, -0.0016083805, -0.0012626576]
+gra[4][11][7] = [-0.006148626, -0.04543285, 0.032212485, -0.07753024, -0.023927642, -0.01942112, 0.0064100344, 0.007928713, -9.331816E-4, -0.00948236, -0.01761809]
+gra[4][11][8] = [-0.018902846, -0.028658904, -0.007093447, 0.028338464, 0.08073837, 0.033852994, -0.03048157, 0.042773336, -0.0017965699, 0.011501777, 0.013622059]
+gra[4][11][9] = [-0.036216546, -0.018280027, 0.23019274, -0.04552784, -0.011887079, -0.021881483, 0.008733615, 0.016309183, 9.0512355E-12, -0.0077277506, -0.0013032085]
+gra[4][11][10] = [0.0011478947, -0.06855495, 0.029414356, -0.005431766, 0.102962606, -0.09111658, -0.05898697, 0.083916046, 0.0024555703, 0.023591425, -0.0036736613]
+gra[4][11][11] = [-0.17800932, -0.016731167, -0.015029761, -0.2149998, -0.19054943, -0.13169308, -0.3842526, -0.27320582, -0.08365657, -0.100043, -0.17042941]
+gra[4][11][12] = [-0.04960172, -0.008241851, 0.04050735, 0.049225464, 0.075759396, -0.022044744, 0.020394541, 0.028562825, -0.0016438005, -1.4816411E-4, 0.0416849]
+gra[4][11][13] = [-0.027451143, -0.047192324, 0.10995217, -0.009409836, 0.017332839, -0.07892824, 0.0015091486, 0.010321492, -0.0016438005, 0.0069671148, 0.006109395]
+gra[4][11][14] = [0.03876716, 0.0267825, -0.024420308, 0.016644152, 0.006734378, 0.025349773, 0.14225875, 0.040411703, 0.0, 0.0, -0.09829482]
+gra[4][12][4] = [-0.19973935, -0.070300326, -0.14189972, -0.31314385, -0.25551414, -0.19353133, -0.33349663, -0.29827237, -0.098324604, -0.13416855, -0.2529502]
+gra[4][12][5] = [-0.051906407, -0.042105377, 0.17027168, -0.033535838, -0.0135707855, -0.030014966, 0.0047791246, 0.010669847, 9.0512355E-12, -0.010628307, -0.01856464]
+gra[4][12][6] = [-0.027659994, -0.006928928, -0.0524088, 0.006312619, -0.025585316, -0.019172352, 0.0, 0.0, -0.0046197325, -0.0016083805, -0.0012626576]
+gra[4][12][7] = [-0.006148626, -0.04420104, 0.021014318, -0.048584756, -0.009962272, -0.021901015, 0.002915925, 0.0064832703, -1.4217423E-4, -0.007231083, -0.031687073]
+gra[4][12][8] = [-0.021613473, -0.024556305, -0.007571841, 0.059896007, 0.051806875, 0.033852994, -0.04555193, 0.05035637, 0.0, 0.0031901782, 0.0090892585]
+gra[4][12][9] = [-0.033509176, -0.015234692, 0.20258209, -0.005000181, 0.0028634723, -0.029321171, 0.0063824966, 0.024137018, 9.0512355E-12, -0.005476473, -0.013007009]
+gra[4][12][10] = [0.012722332, -0.07017854, 0.025048874, 0.01860856, 0.08098403, -0.06386582, -0.012394784, 0.10541846, 0.002381391, 0.011636256, -0.0048150206]
+gra[4][12][11] = [-0.044727597, -4.738964E-4, 0.13266425, -0.0487614, -0.01628504, -0.02166985, 0.0032368335, 0.023991466, 7.6891546E-4, -0.005476473, -0.0064276056]
+gra[4][12][12] = [-0.19973935, -0.070300326, -0.14189972, -0.31314385, -0.25551414, -0.19353133, -0.33349663, -0.29827237, -0.098324604, -0.13416855, -0.2529502]
+gra[4][12][13] = [0.09288935, -0.03001839, 0.13578948, -0.013946263, -0.02697745, -0.06678694, -0.013508427, 0.049437862, -0.0016438005, 0.0055478574, 0.017560903]
+gra[4][12][14] = [0.038463943, 0.025482932, 0.008253016, 0.026391888, 0.021977, 0.03366942, 0.12786776, 0.020360775, 0.0, -2.2505768E-11, -0.06410605]
+gra[4][13][4] = [-0.20050356, 0.019378092, -0.10481889, -0.2948737, -0.20204443, -0.2639251, -0.29475674, -0.24990667, -0.10658293, -0.13451692, -0.2503254]
+gra[4][13][5] = [-0.05082075, -0.043628044, 0.18484417, -0.012703076, -0.022988161, -0.030014966, 0.008374145, 0.015608587, 9.0512355E-12, -0.012879585, -0.008721208]
+gra[4][13][6] = [-0.025174934, -0.006928928, -0.0555249, 0.0047137234, -0.025065042, -0.019172352, 0.0, 0.0, -9.038228E-4, -0.0016083805, -0.0012626576]
+gra[4][13][7] = [-0.0038280855, -0.045723706, 0.032879326, -0.026584785, -0.01937965, -0.021901015, 0.006510945, 0.014144414, -1.4217423E-4, -0.007257821, -0.024563886]
+gra[4][13][8] = [-0.018646464, -0.025563205, -0.010193134, 0.06782404, 0.07925679, 0.033852994, -0.050028473, 0.046572696, 0.0019757631, 0.005164899, -0.020037295]
+gra[4][13][9] = [-0.029525224, -0.01675736, 0.21775483, 0.019572949, -0.006553903, -0.029321171, 0.009977517, 0.026871076, 9.0512355E-12, -0.0077277506, -0.0016536638]
+gra[4][13][10] = [0.010949548, -0.06829155, -0.019788323, 0.0030626338, 0.06953493, -0.066966124, 0.026328605, 0.09766341, 0.002381391, 0.015515008, 0.016775005]
+gra[4][13][11] = [-0.045481637, -0.006771613, 0.15852769, -0.015803333, -0.032108083, -0.01738065, 0.0056135817, 0.030979762, 7.6891546E-4, -0.0077277506, 0.005603589]
+gra[4][13][12] = [-0.019675596, -0.023959853, 0.12608898, 0.017473653, -0.002820584, -0.026860807, 0.009749667, 0.03448535, -1.4217423E-4, -0.007257821, -0.008489365]
+gra[4][13][13] = [-0.20050356, 0.019378092, -0.10481889, -0.2948737, -0.20204443, -0.2639251, -0.29475674, -0.24990667, -0.10658293, -0.13451692, -0.2503254]
+gra[4][13][14] = [-0.01722709, 0.034829676, -0.096102856, 0.027259992, -0.0021256413, 0.0184861, 0.093215674, 0.011856999, 0.0, -0.0013691243, -0.067090854]
+gra[4][14][4] = [0.45614722, -0.39079216, -0.3339555, 0.04586918, -0.23774712, -0.11392724, -0.21910615, -0.17313966]
+gra[4][14][5] = [-0.050213013, 0.1317033, -0.028418455, -0.015334114, -0.03740633, -0.0032232369, -0.032646503, -0.046984877]
+gra[4][14][6] = [-0.055422466, -0.038651124, -0.007950703, -0.006928928, 0.03158737, -9.038228E-4, -0.04463454, -0.018571196]
+gra[4][14][7] = [-0.046599343, -0.005669792, -0.039705895, -0.006580356, -0.028630001, -0.0048348545, 0.0055967015, -0.03576694]
+gra[4][14][8] = [-0.005233598, 0.0518208, 0.12361299, -0.014299808, -0.011449244, 0.008354038, -0.0052360767, 0.030145828]
+gra[4][14][9] = [-0.03965546, 0.15625483, 0.032597095, 0.02244265, -0.019777976, -0.0048348554, -0.023131285, -0.033222895]
+gra[4][14][10] = [-0.017961588, 0.076466955, -0.011786802, -0.06398133, -0.012447634, 0.0, -0.004945674, -0.005879982]
+gra[4][14][11] = [-0.043990437, 0.09012992, 0.042485476, 0.028874757, -0.021125326, -0.0040659397, -0.029561525, -0.038219962]
+gra[4][14][12] = [-0.05016438, 0.058263067, 0.037071317, 0.015397372, -0.029659806, -0.008058093, -0.0030354094, -0.03576694]
+gra[4][14][13] = [-0.042344883, 0.06967342, 0.0095811095, 0.021912538, -0.027228897, -0.008058093, -0.002521744, -0.03576694]
+gra[4][14][14] = [0.45614722, -0.39079216, -0.3339555, 0.04586918, -0.23774712, -0.11392724, -0.21910615, -0.17313966]
+gra[5][0][0] = [-0.041981116]
+gra[5][0][1] = [0.11165683]
+gra[5][0][2] = [-0.034699466]
+gra[5][0][3] = [-0.02278647]
+gra[5][0][4] = [0.008478554]
+gra[5][0][5] = [-0.041981116]
+gra[5][1][0] = [0.0022879262, -0.011053883, -0.0029869583, 4.4457944E-11, -0.0021720084, 0.0016348341]
+gra[5][1][1] = [-0.0048823073, -0.17523552, -0.21583569, -0.18218835, -0.15518439, -0.17397918]
+gra[5][1][2] = [0.06058336, -0.05580195, 0.016498303, -0.026443, -0.0023895265, -0.05305188]
+gra[5][1][3] = [0.027758041, -0.051798172, -0.024388602, -0.019397447, -0.00574457, -0.07174558]
+gra[5][1][4] = [0.06279293, -0.035783082, 0.011646223, -0.019397447, -0.00574457, -0.047943484]
+gra[5][1][5] = [-0.0048823073, -0.17523552, -0.21583569, -0.18218835, -0.15518439, -0.17397918]
+gra[5][2][0] = [-0.003264381, -0.009095069, 6.4378075E-4, 6.57636E-4, -0.008087347, 0.0031306578, 2.969677E-4, -3.050395E-11, 0.006577885, 0.0016814994, -0.0073352964]
+gra[5][2][1] = [-5.13921E-4, -3.7906157E-11, -0.034460317, -0.0041412255, -0.02294093, -0.0028272104, -0.014439816, 0.035186574, -7.720956E-4, 0.0035228117, -0.03578559]
+gra[5][2][2] = [-0.1457395, -0.17760435, -0.07730542, -0.1828254, -0.2647875, -0.16321008, -0.27147496, -0.27251524, -0.22298351, -0.12651624, -0.22225499]
+gra[5][2][3] = [-0.0016788694, -0.038602162, -0.05481774, -0.024850672, -0.02118981, 0.0, 0.0043394, -0.00686435, -0.009372383, -0.0052225264, -0.14019503]
+gra[5][2][4] = [-0.004744318, -0.028696006, -0.04212549, -0.023079613, 0.008764084, -0.0016386209, 0.008595209, -0.014020145, -0.011329165, 0.01450398, -0.14975825]
+gra[5][2][5] = [-0.1457395, -0.17760435, -0.07730542, -0.1828254, -0.2647875, -0.16321008, -0.27147496, -0.27251524, -0.22298351, -0.12651624, -0.22225499]
+gra[5][3][0] = [-0.003264381, -0.009095069, -2.546209E-4, -0.0029869583, -0.003558128, 0.0031306578, 2.969677E-4, -6.10079E-11, 0.006577885, -7.669762E-4, -0.00529764]
+gra[5][3][1] = [-5.13921E-4, 0.0, -0.055911075, -0.010353064, -0.043891303, -0.004779683, -0.048092224, 0.07863838, -7.720956E-4, 0.0, -0.081802025]
+gra[5][3][2] = [-0.0050252816, -0.018022431, -0.0586132, 0.0, -0.025096912, -0.010560441, -0.010851742, 0.003503757, -0.008396367, 0.016079204, -0.051743556]
+gra[5][3][3] = [-0.15018721, -0.21722075, -0.16214848, -0.23871076, -0.3606194, -0.1825599, -0.2269295, -0.40583122, -0.22281976, -0.16284533, -0.23139495]
+gra[5][3][4] = [-0.004744318, -0.026590846, 0.0044537648, -0.016619466, -0.014093055, -0.0016386209, -0.014388094, -0.010515601, -0.014348841, 0.0076769954, 0.06554818]
+gra[5][3][5] = [-0.15018721, -0.21722075, -0.16214848, -0.23871076, -0.3606194, -0.1825599, -0.2269295, -0.40583122, -0.22281976, -0.16284533, -0.23139495]
+gra[5][4][0] = [-0.003264381, -0.009095069, 0.002269707, -0.0029869583, 0.0, 7.4807646E-11, 2.969678E-4, -6.10079E-11, 0.006577885, 0.0016814994, -0.00529764]
+gra[5][4][1] = [-5.13921E-4, 0.0, -0.055783495, -0.010353064, -0.035753258, -0.004779683, -0.043350175, 0.07863838, -7.720956E-4, 0.0, -0.09297326]
+gra[5][4][2] = [-0.005025282, -0.015917271, -0.072601005, 0.0, -0.022037786, -0.008486157, -0.010851742, 0.0037559327, -0.008396367, 0.01512564, -0.04806168]
+gra[5][4][3] = [-0.007702251, -0.01236854, -0.09266366, 0.0, -0.013876671, -0.0062228492, -0.0065214084, -2.5217576E-4, -0.017297493, 0.014535915, -0.03168124]
+gra[5][4][4] = [-0.14797053, -0.17172992, -0.13163346, -0.21220012, -0.2980593, -0.17958912, -0.20716432, -0.35681802, -0.2095655, -0.15473267, -0.22386813]
+gra[5][4][5] = [-0.14797053, -0.17172992, -0.13163346, -0.21220012, -0.2980593, -0.17958912, -0.20716432, -0.35681802, -0.2095655, -0.15473267, -0.22386813]
+gra[5][6][5] = [-0.273783, -0.19260272]
+gra[5][6][6] = [-0.273783, -0.19260272]
+gra[5][6][7] = [0.026080359, -0.05859648]
+gra[5][6][8] = [-0.055209685, 0.026170224]
+gra[5][6][9] = [0.10992134, -0.022323119]
+gra[5][6][10] = [-0.050101317, -0.028544003]
+gra[5][6][11] = [0.005098313, -0.056581404]
+gra[5][6][12] = [0.07325858, -0.028917471]
+gra[5][6][13] = [0.12126222, -0.052550822]
+gra[5][6][14] = [-0.18744022, -0.021810113]
+gra[5][7][5] = [-0.088803455, 0.012399701, -0.18343398, -0.33039725, 0.0035305163, -0.20047185, -0.29768315, -0.13658378, -0.07891641, -0.12767604, -0.21282771]
+gra[5][7][6] = [-0.009979254, -0.012053755, -0.037562795, -0.0026720262, -0.029374257, -0.011606998, 0.0022069581, 0.0, -9.038228E-4, -0.0016083805, 0.0]
+gra[5][7][7] = [-0.088803455, 0.012399701, -0.18343398, -0.33039725, 0.0035305163, -0.20047185, -0.29768315, -0.13658378, -0.07891641, -0.12767604, -0.21282771]
+gra[5][7][8] = [-0.03904423, -0.104260705, 0.029854566, 0.018256059, -0.099735364, -0.02959507, -0.0341132, 0.05730655, 3.9559263E-12, -0.0033622796, 0.005457081]
+gra[5][7][9] = [0.056280468, -0.04836492, 0.024749145, -0.11790468, 0.080051094, 0.009676195, -0.023595946, 0.02369406, 4.957353E-4, -0.006980671, -0.056342095]
+gra[5][7][10] = [0.042196833, 0.10275036, -0.16647932, -0.029836236, 0.03385026, -0.07331349, 0.025126554, -0.061193362, 0.0, 0.010591356, 0.0040668105]
+gra[5][7][11] = [-0.14350367, -0.06622134, -0.09880382, -0.029879933, 0.09920868, -0.043989282, 0.03849998, 0.00678799, -6.042392E-4, -0.008943624, -0.00857213]
+gra[5][7][12] = [-0.034875587, -0.068832435, -0.078401625, -0.072721116, 0.059591286, -0.026291808, 0.007867106, 0.09388829, -0.0016438005, -0.007024522, -0.010688173]
+gra[5][7][13] = [0.014372572, -0.05017042, 0.0039873943, -0.12054504, 0.013673367, -0.0408491, 0.007396889, 0.06328966, -0.0016438005, -0.0025402955, -0.030455668]
+gra[5][7][14] = [-0.01984039, 0.02907966, -0.0645227, 0.006852205, 8.169799E-4, 7.0631783E-4, 0.10761113, 0.02086204, -0.0019475454, -0.0010469037, -0.06419305]
+gra[5][8][5] = [-0.15006886, -0.043024227, -0.18221274, -0.24092379, -0.30613858, -0.2420286]
+gra[5][8][6] = [-0.027445583, -0.0028103888, -9.990334E-6, -0.011606998, -0.0011211394, -0.0043171197]
+gra[5][8][7] = [0.02187673, -0.011981823, -0.044713516, -0.01446133, -6.4382935E-4, -0.008020589]
+gra[5][8][8] = [-0.15006886, -0.043024227, -0.18221274, -0.24092379, -0.30613858, -0.2420286]
+gra[5][8][9] = [0.14283398, -0.004218774, -0.02915368, -0.10358184, -0.04583137, -0.046073522]
+gra[5][8][10] = [-0.059828877, 0.10702966, -0.047661014, -0.025675789, -0.004103984, -0.017712904]
+gra[5][8][11] = [0.04556992, 0.039828476, -0.01777824, -0.10256919, -0.05208561, -0.022662342]
+gra[5][8][12] = [0.011777036, 0.052695084, -0.022096545, -0.0578719, -0.07426226, 0.0031176568]
+gra[5][8][13] = [0.0785182, 0.06357183, 0.021991728, -0.0694618, -0.09312223, -0.0033769957]
+gra[5][8][14] = [-0.13295905, 0.034005634, 0.0947871, 0.019163983, 0.020992978, -0.030493984]
+gra[5][9][5] = [-0.07170036, 0.019272119, -0.16129984, -0.2329402, -0.2908712, -0.2407713, -0.29643065, -0.23566912, -0.08985106, -0.10322386, -0.14251806]
+gra[5][9][6] = [-0.01328478, -0.012053755, -0.045736067, 2.3667912E-10, -0.030533638, -0.014287151, 0.0022069581, 0.0, -9.038228E-4, -0.0016083805, -0.0012626576]
+gra[5][9][7] = [-0.019936927, -0.030214485, 0.05159333, -0.057283472, -0.017923662, -0.01942112, 0.007643792, 0.031788614, -1.4217423E-4, -0.008607306, -0.01844468]
+gra[5][9][8] = [-0.011030057, -0.027001118, 0.0011033802, 0.06461177, 0.046004623, 0.027047869, -0.027326334, 0.019558845, 0.0, 0.005164899, -0.010124459]
+gra[5][9][9] = [-0.07170036, 0.019272119, -0.16129984, -0.2329402, -0.2908712, -0.2407713, -0.29643065, -0.23566912, -0.08985106, -0.10322386, -0.14251806]
+gra[5][9][10] = [-0.012130983, 0.09650746, -5.0354283E-4, -0.045503683, 0.059516188, -0.03834217, 0.020079736, 0.024341332, 0.0, 0.012700643, -0.0012901137]
+gra[5][9][11] = [-0.119648054, -0.01384846, 0.04832706, 0.025896091, 0.060369093, -0.09297593, 0.08557644, -0.030373264, -0.004067228, -0.004461341, -0.014482316]
+gra[5][9][12] = [-0.036913738, -0.049138326, 0.022125714, 0.024695782, -0.037646454, -0.089605995, 0.044949282, -0.00253291, -0.0051067895, -0.0025422391, -8.367696E-4]
+gra[5][9][13] = [0.021518111, -0.027040415, 0.12328279, -0.064629175, -0.067054525, -0.06710879, 0.04549039, -0.014242074, -0.0051067895, 0.0019419871, -0.054437894]
+gra[5][9][14] = [-0.03989376, 0.029656876, -0.10265121, 0.076463, 0.031381827, 0.060158834, 0.10159744, 0.017498635, 0.0, 0.0, -0.07941664]
+gra[5][10][5] = [-0.12892027, -0.07426171, -0.32791087, -0.3605089, -0.16736083, -0.13261594, -0.1688458]
+gra[5][10][6] = [-0.027445583, -0.012053756, -0.013764117, -0.0056555397, 0.0011308042, 0.001230255, -0.009876266]
+gra[5][10][7] = [-0.013693058, -0.014381591, -0.01446133, -0.029808905, -0.0033213743, 0.0016988069, -0.0173225]
+gra[5][10][8] = [0.023623126, -0.009956081, 0.033852994, -2.0788843E-4, 0.0, 0.0013890374, -0.0040250965]
+gra[5][10][9] = [0.1047408, 0.008987334, -0.0119619025, -0.02332857, 0.0, 0.009920094, -0.04130316]
+gra[5][10][10] = [-0.12892027, -0.07426171, -0.32791087, -0.3605089, -0.16736083, -0.13261594, -0.1688458]
+gra[5][10][11] = [-0.01158366, 0.10779621, -0.1138076, -0.04182522, -0.006525742, -0.1280925, 0.042965613]
+gra[5][10][12] = [-0.0075902045, 0.066431545, -0.075674996, -0.08584342, -0.008802207, -0.061089545, 0.05149115]
+gra[5][10][13] = [0.073679745, 0.08291984, -0.073259376, -0.11281013, -0.005011603, -0.08016144, 0.07080418]
+gra[5][10][14] = [-0.11542668, 0.009140518, 0.014653939, 0.090339206, -0.020985536, 0.0047443355, 0.023769205]
+gra[5][11][5] = [-0.14284168, -0.018787133, -0.047984466, -0.18922658, -0.18303105, -0.1274745, -0.3759831, -0.27147567, -0.08365657, -0.08589547, -0.1647439]
+gra[5][11][6] = [-0.014805781, -0.012053755, -0.046711966, -0.002071285, -0.029374257, -0.0122081535, 0.0022069581, 0.0, -9.038228E-4, -0.0016083805, -0.0012626576]
+gra[5][11][7] = [-0.020023625, -0.041020907, 0.07010135, -0.06491886, -0.01931781, -0.01942112, 0.0064100344, 0.007928713, -9.331816E-4, -0.010831846, -0.01761809]
+gra[5][11][8] = [-0.017691867, -0.028658904, 0.011943636, 0.03541307, 0.08073837, 0.033852994, -0.03048157, 0.042773336, -0.0017965699, 0.011501777, 0.013622059]
+gra[5][11][9] = [-0.04666806, -0.016674306, 0.25624982, -0.030828482, -0.0072772484, -0.021881483, 0.008733615, 0.017590906, 9.0512355E-12, -0.0077277506, -0.0013032085]
+gra[5][11][10] = [-0.0011052168, -0.06855495, 0.05807885, 0.00960215, 0.10751539, -0.09111658, -0.056654997, 0.088760085, 0.0024555703, 0.023591425, -0.0036736613]
+gra[5][11][11] = [-0.14284168, -0.018787133, -0.047984466, -0.18922658, -0.18303105, -0.1274745, -0.3759831, -0.27147567, -0.08365657, -0.08589547, -0.1647439]
+gra[5][11][12] = [-0.073813826, -0.034093127, 0.007619664, 0.017006135, 0.07177706, -0.019545313, 0.022726525, 0.028883155, -0.0016438005, -1.4816411E-4, 0.0416849]
+gra[5][11][13] = [-0.037224732, -0.05300902, 0.10214235, -0.069835186, 0.0072789937, -0.073929384, 0.006173106, 0.010641823, -0.0016438005, 0.0019335924, 0.0017031142]
+gra[5][11][14] = [0.02066849, 0.028218132, -0.09410041, 0.023164688, 0.006734378, 0.025349773, 0.14225875, 0.040411703, 0.0, 0.0, -0.09829482]
+gra[5][12][5] = [-0.16457172, -0.07235628, -0.17485441, -0.2873706, -0.24799576, -0.18931276, -0.32522708, -0.29654223, -0.098324604, -0.12002101, -0.2472647]
+gra[5][12][6] = [-0.01489676, -0.012053755, -0.043595865, 2.3667912E-10, -0.029923273, -0.0122081535, 0.0022069581, 0.0, -0.0046197325, -0.0016083805, -0.0012626576]
+gra[5][12][7] = [-0.020023625, -0.03978909, 0.05890319, -0.035973374, -0.0053524417, -0.021901015, 0.002915925, 0.0064832703, -1.4217423E-4, -0.008580568, -0.031687073]
+gra[5][12][8] = [-0.020402493, -0.024556305, 0.011465237, 0.06697061, 0.051806875, 0.033852994, -0.04555193, 0.05035637, 0.0, 0.0031901782, 0.0090892585]
+gra[5][12][9] = [-0.043960694, -0.013628973, 0.22863914, 0.009699177, 0.007473303, -0.029321171, 0.0063824966, 0.02541874, 9.0512355E-12, -0.005476473, -0.013007009]
+gra[5][12][10] = [0.010469224, -0.07017854, 0.05371337, 0.033642486, 0.085536815, -0.06386582, -0.0100628035, 0.1102625, 0.002381391, 0.011636256, -0.0048150206]
+gra[5][12][11] = [-0.05133958, 0.0011318253, 0.16840415, -0.03615002, -0.011675207, -0.02166985, 0.0032368335, 0.023991466, -0.001044167, -0.005476473, -0.0042543197]
+gra[5][12][12] = [-0.16457172, -0.07235628, -0.17485441, -0.2873706, -0.24799576, -0.18931276, -0.32522708, -0.29654223, -0.098324604, -0.12002101, -0.2472647]
+gra[5][12][13] = [0.085241884, -0.03815415, 0.105614424, -0.055080954, -0.037031293, -0.061788075, -0.008844467, 0.049758192, -0.0016438005, 5.143347E-4, 0.013154621]
+gra[5][12][14] = [0.020365266, 0.026918562, -0.06142708, 0.032912422, 0.021977, 0.03366942, 0.12786776, 0.020360775, 0.0, -2.2505768E-11, -0.06410605]
+gra[5][13][5] = [-0.16533595, 0.017322127, -0.1377736, -0.26910052, -0.19452605, -0.25970653, -0.28648722, -0.24817653, -0.10658293, -0.12036938, -0.2446399]
+gra[5][13][6] = [-0.012411703, -0.012053755, -0.046711966, 2.3667912E-10, -0.029374257, -0.0122081535, 0.0022069581, 0.0, -9.038228E-4, -0.0016083805, -0.0012626576]
+gra[5][13][7] = [-0.017703082, -0.041311763, 0.0707682, -0.013973404, -0.014769816, -0.021901015, 0.006510945, 0.014144414, -1.4217423E-4, -0.008607306, -0.024563886]
+gra[5][13][8] = [-0.017435485, -0.025563205, 0.008843945, 0.07489865, 0.07925679, 0.033852994, -0.050028473, 0.046572696, 0.0019757631, 0.005164899, -0.020037295]
+gra[5][13][9] = [-0.039976742, -0.015151639, 0.24381188, 0.034272306, -0.0019440728, -0.029321171, 0.009977517, 0.028152797, 9.0512355E-12, -0.0077277506, -0.0016536638]
+gra[5][13][10] = [0.008696433, -0.06829155, 0.008876181, 0.018096564, 0.07408771, -0.066966124, 0.028660584, 0.10250744, 0.002381391, 0.015515008, 0.016775005]
+gra[5][13][11] = [-0.052093625, -0.0051658917, 0.1951475, -0.0031919498, -0.027498253, -0.01738065, 0.0056135817, 0.030979762, -0.001044167, -0.0077277506, 0.007776879]
+gra[5][13][12] = [-0.033426333, -0.02074841, 0.17519033, 0.03881295, 0.0033648005, -0.026860807, 0.009749667, 0.03448535, -1.4217423E-4, -0.007257821, -0.008489365]
+gra[5][13][13] = [-0.16533595, 0.017322127, -0.1377736, -0.26910052, -0.19452605, -0.25970653, -0.28648722, -0.24817653, -0.10658293, -0.12036938, -0.2446399]
+gra[5][13][14] = [-0.019099027, 0.036265306, -0.13302729, 0.02993108, -0.0021256413, 0.0184861, 0.093215674, 0.011856999, 0.0, -0.0013691243, -0.067090854]
+gra[5][14][5] = [0.33870053, -0.42374685, -0.3081823, 0.04381322, -0.23774712, -0.11392724, -0.18393855, -0.16892108]
+gra[5][14][6] = [-0.056123417, -0.037392512, -0.004025396, -0.012053755, 0.022590073, -9.038228E-4, -0.031871308, -0.011606998]
+gra[5][14][7] = [-0.046599343, 0.032219093, -0.027094513, -0.0021684086, -0.03156339, -0.0048348545, -0.00827829, -0.03576694]
+gra[5][14][8] = [-0.0027976157, 0.07085788, 0.1306876, -0.014299808, -0.011449244, 0.008354038, -0.0040250965, 0.030145828]
+gra[5][14][9] = [-0.03965546, 0.18231188, 0.047296464, 0.024048371, -0.01859632, -0.0048348554, -0.033582807, -0.033222895]
+gra[5][14][10] = [-0.017961588, 0.10513146, 0.0032471213, -0.06398133, -0.012447634, 0.0, -0.0071987854, -0.005879982]
+gra[5][14][11] = [-0.043990437, 0.12674975, 0.055096857, 0.030480476, -0.02856384, -0.005879022, -0.036173504, -0.038219962]
+gra[5][14][12] = [-0.05016438, 0.108244374, 0.058410615, 0.018608809, -0.027041396, -0.008058093, -0.01678615, -0.03576694]
+gra[5][14][13] = [-0.042344883, 0.11877477, 0.030920394, 0.02512398, -0.026047245, -0.008058093, -0.0131179225, -0.02687248]
+gra[5][14][14] = [0.33870053, -0.42374685, -0.3081823, 0.04381322, -0.23774712, -0.11392724, -0.18393855, -0.16892108]
+gra[6][0][0] = [-0.0520868]
+gra[6][0][1] = [0.020259421]
+gra[6][0][2] = [0.061750766]
+gra[6][0][3] = [-0.049322076]
+gra[6][0][4] = [-0.047721907]
+gra[6][0][5] = [-0.02267837]
+gra[6][0][6] = [-0.0520868]
+gra[6][1][0] = [0.0031002467, 0.0, -0.002491934, 0.0]
+gra[6][1][1] = [0.049295496, -0.096181266, -0.3106086, -0.1417824]
+gra[6][1][2] = [0.1821127, 0.016802724, -0.02820033, -0.035232577]
+gra[6][1][3] = [0.029964954, -0.06578781, -0.049592726, -0.023792237]
+gra[6][1][4] = [0.04059021, -0.05346136, -0.05182021, -0.021564748]
+gra[6][1][5] = [0.062091388, 0.0072983084, -0.04054499, -0.023792237]
+gra[6][1][6] = [0.049295496, -0.096181266, -0.3106086, -0.1417824]
+gra[6][2][0] = [0.0048480295, -0.00452922, 0.0, 0.0014561015, -0.0013292956, 0.0027307644]
+gra[6][2][1] = [-0.13200061, -0.03380664, 0.054160275, 0.049062416, 7.308892E-4, -0.0031911298]
+gra[6][2][2] = [-0.35208467, -0.16831768, -0.22614019, -0.12026106, -0.290771, -0.13263008]
+gra[6][2][3] = [0.120697245, -0.035563417, -0.021171255, -0.08613308, -0.022132695, 0.012480451]
+gra[6][2][4] = [0.16963743, -0.002057733, -0.026586981, -0.09008388, -0.027917873, 0.029292444]
+gra[6][2][5] = [0.23159663, 7.6528685E-4, -0.022216301, -0.07861159, -0.0074495035, 0.020050207]
+gra[6][2][6] = [-0.35208467, -0.16831768, -0.22614019, -0.12026106, -0.290771, -0.13263008]
+gra[6][3][0] = [-0.0012814738, 0.0, -3.050395E-11, 5.5769994E-4, -0.0013292956, 2.8228876E-4]
+gra[6][3][1] = [-0.1598347, -0.05478049, 0.10485771, 0.037768897, -0.026972052, -0.009370182]
+gra[6][3][2] = [-0.023424674, -0.027183225, 0.041496, 0.06436883, -0.009571605, 0.040809743]
+gra[6][3][3] = [0.0011476716, -0.26414952, -0.35945618, -0.20510413, -0.24622552, -0.16895914]
+gra[6][3][4] = [0.23088562, -0.036115717, -0.023082443, -0.042083472, -0.052124094, 0.017406179]
+gra[6][3][5] = [0.31934902, 3.0982628E-4, -0.020309359, -0.035055503, -0.033990495, 0.018293062]
+gra[6][3][6] = [0.0011476716, -0.26414952, -0.35945618, -0.20510413, -0.24622552, -0.16895914]
+gra[6][4][0] = [0.0012428539, 0.0, -3.050395E-11, 0.0030820277, -0.0013292956, 0.0027307644]
+gra[6][4][1] = [-0.1598347, -0.05478049, 0.10485771, 0.037768897, -0.026972052, -0.009370182]
+gra[6][4][2] = [-0.043183934, -0.02951909, 0.044765297, 0.046928365, -0.009571605, 0.03985618]
+gra[6][4][3] = [0.0027969033, -0.023397336, 0.03161981, -0.034741208, -0.0065214084, 0.076208204]
+gra[6][4][4] = [-0.012960361, -0.26414952, -0.35635012, -0.20510413, -0.23996602, -0.16895914]
+gra[6][4][5] = [0.26218465, -0.026485048, -0.018711757, -0.03359469, -0.03442338, 0.013655335]
+gra[6][4][6] = [-0.012960361, -0.26414952, -0.35635012, -0.20510413, -0.23996602, -0.16895914]
+gra[6][5][0] = [-0.0017187535, 0.0, -3.050395E-11, 0.0030820277, -0.0013292956, 0.0027307644]
+gra[6][5][1] = [-0.10557446, -0.04316245, 0.10485771, 0.029551987, -0.022230003, -0.009370182]
+gra[6][5][2] = [-0.054362144, -0.024124099, 0.034623988, 0.03486527, -0.009571605, 0.040809743]
+gra[6][5][3] = [-0.02192422, -0.02033821, 0.024495622, -0.034176692, -0.0065214084, 0.077751495]
+gra[6][5][4] = [-7.854495E-5, -0.018002346, 0.024495622, -0.03897927, -0.0065214084, 0.077751495]
+gra[6][5][5] = [0.080813274, -0.19254147, -0.32115835, -0.19457859, -0.2488755, -0.1573673]
+gra[6][5][6] = [0.080813274, -0.19254147, -0.32115835, -0.19457859, -0.2488755, -0.1573673]
+gra[6][7][6] = [-0.27941313, 0.13089189, -0.022864778, -0.1894565, -0.24034312, -0.14318681]
+gra[6][7][7] = [-0.27941313, 0.13089189, -0.022864778, -0.1894565, -0.24034312, -0.14318681]
+gra[6][7][8] = [0.13626447, -0.010419474, 0.11848972, -0.0025080154, -0.054712977, -0.015601757]
+gra[6][7][9] = [0.05903992, 0.10894001, 0.07556343, -0.13363816, 0.010766433, 0.02050259]
+gra[6][7][10] = [-0.060981005, 0.036591463, -0.052527767, -0.09514893, 0.08080975, 0.015361834]
+gra[6][7][11] = [0.081102386, 0.14399157, 0.0072408943, -0.10286424, 0.11418423, 0.03336997]
+gra[6][7][12] = [0.0667256, 0.11857207, 0.15086734, -0.070225924, 0.08513642, 0.0020601233]
+gra[6][7][13] = [0.043629616, 0.08298377, 0.14208359, -0.058361705, 0.09083914, 4.4306018E-4]
+gra[6][7][14] = [0.042588964, 0.014345749, 0.010220808, -0.027615786, 0.028633617, 0.092909016]
+gra[6][8][6] = [-0.06964812, -0.019270714, -0.29129454, -0.1736677]
+gra[6][8][7] = [6.975997E-4, -0.07367525, 0.03137342, 0.0]
+gra[6][8][8] = [-0.06964812, -0.019270714, -0.29129454, -0.1736677]
+gra[6][8][9] = [0.0038991189, 0.2681948, 0.018138103, -0.046538807]
+gra[6][8][10] = [0.014519747, -0.070914745, 0.060340714, -0.020789059]
+gra[6][8][11] = [-4.2284792E-4, 0.23502588, 0.05704205, -0.039293878]
+gra[6][8][12] = [-0.0044890544, 0.32156876, 0.055704113, -0.03788216]
+gra[6][8][13] = [0.010043448, 0.362284, 0.05945589, -0.05903426]
+gra[6][8][14] = [-0.057631012, 0.086892076, -0.053914443, -0.0020066085]
+gra[6][9][6] = [-0.23794961, -0.17617488, -0.119824715, -0.13024254, -0.25661156, -0.121382065]
+gra[6][9][7] = [-0.08579465, 0.037450098, 0.015798284, 0.025958829, 0.0491146, -0.0017362321]
+gra[6][9][8] = [-0.07514248, 0.080687106, 0.023700405, -0.053454973, -0.02913708, 0.0046982104]
+gra[6][9][9] = [-0.23794961, -0.17617488, -0.119824715, -0.13024254, -0.25661156, -0.121382065]
+gra[6][9][10] = [-0.032659143, 0.065354556, 0.035408407, 0.034957655, 0.073601834, 0.017471122]
+gra[6][9][11] = [0.16451277, 0.1343211, -0.028546996, 0.022039177, 0.1550293, 0.03785225]
+gra[6][9][12] = [0.1499453, 0.042843826, 0.050664313, 0.025564509, 0.121892266, 0.0065424056]
+gra[6][9][13] = [0.116907224, 0.0015404057, 0.07024962, 0.07451293, 0.1282733, 0.0049253437]
+gra[6][9][14] = [-0.027205631, 0.034512695, 0.0068574054, -0.052349146, 0.022619942, 0.09395592]
+gra[6][10][6] = [-0.15888286, -0.3138391, -0.20539969, -0.090248756, -0.13080679, -0.21882577]
+gra[6][10][7] = [0.039945565, 0.020518731, -0.045851756, -0.016429346, -0.019353565, -0.058723222]
+gra[6][10][8] = [0.02214892, 0.031443782, -0.05955004, -0.0027019721, -0.019615663, 0.084891655]
+gra[6][10][9] = [0.015036379, 0.024928685, -0.058278434, -0.050845973, -0.022102375, -0.06784104]
+gra[6][10][10] = [-0.15888286, -0.3138391, -0.20539969, -0.090248756, -0.13080679, -0.21882577]
+gra[6][10][11] = [0.013768813, 0.01700349, 0.062490392, -0.028850764, -0.014016453, 0.2212303]
+gra[6][10][12] = [0.036062263, 0.08016446, 0.077293545, 0.04093059, -0.0024978905, 0.21134187]
+gra[6][10][13] = [0.016277056, 0.100216605, 0.06005934, 0.06515343, 0.026563412, 0.18100214]
+gra[6][10][14] = [0.008751316, -0.048622817, -0.042715497, -0.01140897, -0.02455731, 0.062376864]
+gra[6][11][6] = [-0.2685444, -0.0683347, -0.15563123, -0.016927153, -0.336164, -0.104053676]
+gra[6][11][7] = [-0.078098536, 0.036055945, -0.008061613, 0.04446686, 0.047880843, -0.0017362321]
+gra[6][11][8] = [-0.10716042, 0.12169289, 0.056964055, -0.02944395, -0.037702125, 0.011035088]
+gra[6][11][9] = [-0.042997826, 0.043761387, -0.040120546, 0.10305196, 0.06304089, 0.002002405]
+gra[6][11][10] = [0.053359248, 0.15490454, 0.15116541, 0.13195065, -0.109551705, 0.041787107]
+gra[6][11][11] = [-0.2685444, -0.0683347, -0.15563123, -0.016927153, -0.336164, -0.104053676]
+gra[6][11][12] = [0.066963956, 0.15725373, 0.06591427, -0.006932204, 0.09140407, 0.008936482]
+gra[6][11][13] = [0.13743879, 0.07587393, 0.09513351, 0.053372484, 0.088956, 0.0049169487]
+gra[6][11][14] = [0.008520744, 0.009865254, 0.029770477, -0.043798335, 0.06328126, 0.09395592]
+gra[6][12][6] = [-0.27087486, -0.13329938, -0.18069777, -0.14379713, -0.28540802, -0.13817921]
+gra[6][12][7] = [-0.091557376, 0.050021313, -0.009507055, 0.033268698, 0.044386722, 5.1504583E-4]
+gra[6][12][8] = [-0.1065508, 0.0927614, 0.0645471, -0.029922348, -0.052772477, 0.0027234897]
+gra[6][12][9] = [-0.06354022, 0.058511935, -0.03229271, 0.07544131, 0.060689773, 0.0042536827]
+gra[6][12][10] = [0.070965834, 0.124543056, 0.1796476, 0.14080608, -0.06596581, 0.029831933]
+gra[6][12][11] = [-0.05151954, 0.032910287, 0.03701201, 0.07359792, 0.054370165, 0.002251278]
+gra[6][12][12] = [-0.27087486, -0.13329938, -0.18069777, -0.14379713, -0.28540802, -0.13817921]
+gra[6][12][13] = [-0.0059878826, 0.036550015, 0.11808377, 0.038853873, 0.06567299, 0.0034976904]
+gra[6][12][14] = [0.0017822781, 0.025107872, 0.009719546, -0.011125006, 0.04889026, 0.09395592]
+gra[6][13][6] = [-0.22575764, -0.07982966, -0.13233209, -0.10671632, -0.24666817, -0.13852759]
+gra[6][13][7] = [-0.09758964, 0.040603936, -0.0018459143, 0.045133702, 0.047981754, -0.0017362321]
+gra[6][13][8] = [-0.09510926, 0.1202113, 0.060763415, -0.032543637, -0.05724903, 0.0046982104]
+gra[6][13][9] = [-0.0669956, 0.049094565, -0.029558651, 0.090614036, 0.064284794, 0.002002405]
+gra[6][13][10] = [0.07920076, 0.11309396, 0.17189252, 0.09596887, -0.027242426, 0.033710685]
+gra[6][13][11] = [-0.058955528, 0.018443067, 0.027779505, 0.08748881, 0.06905725, 8.713861E-11]
+gra[6][13][12] = [-0.101597026, 0.01910264, 0.020095045, 0.07021575, 0.054787323, 4.699302E-4]
+gra[6][13][13] = [-0.22575764, -0.07982966, -0.13233209, -0.10671632, -0.24666817, -0.13852759]
+gra[6][13][14] = [-0.006698521, -0.012949264, -0.010005177, -0.06663247, 0.011589371, 0.08487903]
+gra[6][14][6] = [0.45508236, -0.21231659, -0.25286, -0.33567595, -0.13115937, -0.14486317, -0.18183614, -0.22559977, -0.24659869, -0.08959103, -0.100985184]
+gra[6][14][7] = [-0.04559906, 0.06038591, 0.027435044, 0.004346365, 0.014812058, 0.0385217, -0.06002618, -0.038745835, 0.20625146, -0.011164435, 0.0065670083]
+gra[6][14][8] = [-0.0015442646, -0.0227673, -0.08524036, 0.063609034, 0.0050346516, 0.0035762223, 0.23346017, -0.0061080162, 0.021447917, 0.005901302, -0.0037276738]
+gra[6][14][9] = [-0.038655173, 0.08559073, 0.011954381, 0.026875805, -0.010552221, 0.011435814, -0.00301829, -0.01681796, 0.1082497, -0.011164436, 0.0051845433]
+gra[6][14][10] = [-0.024287913, 0.027374256, 0.0133876195, 0.12225391, -0.0051552514, 0.041741583, -0.03067777, 0.014676357, 0.04385982, 0.0, 0.013415361]
+gra[6][14][11] = [-0.04299015, 0.08978732, 0.060956437, 0.01685282, 0.020332731, 0.07663676, -0.0086626075, -0.025221316, 0.09362389, -0.011164436, 0.006370598]
+gra[6][14][12] = [-0.049164087, 0.08459338, 0.0136726005, -0.011820925, 0.010157926, 0.03883238, -0.01981043, -0.039680198, 0.103250325, -0.014387673, 0.006370598]
+gra[6][14][13] = [-0.041344598, 0.07045057, -0.026481139, 0.0137648545, 0.008764668, 0.033259735, -0.0365325, -0.03504498, 0.0953349, -0.014387673, 0.006370598]
+gra[6][14][14] = [0.45508236, -0.21231659, -0.25286, -0.33567595, -0.13115937, -0.14486317, -0.18183614, -0.22559977, -0.24659869, -0.08959103, -0.100985184]
+gra[7][0][0] = [-0.09400473]
+gra[7][0][1] = [0.063014895]
+gra[7][0][2] = [0.008203407]
+gra[7][0][3] = [0.04336482]
+gra[7][0][4] = [0.04336482]
+gra[7][0][5] = [0.045217585]
+gra[7][0][6] = [-0.012236582]
+gra[7][0][7] = [-0.09400473]
+gra[7][1][0] = [0.0022879262, -0.001958814, 0.002719991, 4.4457944E-11, -0.0021720084, 9.538276E-4]
+gra[7][1][1] = [-0.080664985, -0.1498559, -0.1748334, -0.16505879, -0.15219411, -0.13811535]
+gra[7][1][2] = [0.09982281, -0.042137515, 0.039627425, -0.020901661, -0.008630434, -0.04557295]
+gra[7][1][3] = [0.09390932, -0.037475146, -0.0055839457, -0.019397447, -0.009961956, -0.06605266]
+gra[7][1][4] = [0.10293442, -0.037475146, 0.0012364213, -0.019397447, -0.009961956, -0.06607746]
+gra[7][1][5] = [0.08429182, -0.027172701, 0.036659725, -0.019397447, -0.009961956, -0.05051318]
+gra[7][1][6] = [-0.012236582, 8.6579437E-4, 0.0038837004, -0.016195, 0.002059937, -0.003209465]
+gra[7][1][7] = [-0.080664985, -0.1498559, -0.1748334, -0.16505879, -0.15219411, -0.13811535]
+gra[7][2][0] = [-3.8481143E-5, 0.0, 6.4378075E-4, 0.006364585, -0.00452922, 0.0031306578, 3.69985E-4, 0.0, 0.0012653338, 0.0015309223, -0.008016303]
+gra[7][2][1] = [4.5733654E-4, -3.7906157E-11, -0.0498366, -0.0041412255, -0.02294093, -0.0067321556, -0.014439816, 0.034137405, 0.0019214812, 0.0035228117, -0.034932088]
+gra[7][2][2] = [-0.16109464, -0.1522247, -0.15308808, -0.14182311, -0.24778378, -0.14608057, -0.2882911, -0.2643619, -0.17109688, -0.10580697, -0.18639117]
+gra[7][2][3] = [-0.0130428625, -0.0263843, 0.008692514, -0.008148272, -0.02118981, 0.0, 0.0043394, -0.009604603, -0.0094120335, -0.0052225264, -0.1345021]
+gra[7][2][4] = [-0.01706918, -0.02848946, 0.0072037163, -0.0035270967, -0.0015978473, -0.0016386209, 7.817097E-4, -0.0126001, -0.0094120335, 0.003701211, -0.16767177]
+gra[7][2][5] = [-0.010582655, -0.024485687, -0.010048743, -0.0019876226, 0.008764084, 0.0, 0.01246951, -0.01570706, -0.010316748, -0.0013686286, -0.14882436]
+gra[7][2][6] = [0.019011011, -0.0020981468, -0.043214638, -0.003755305, 0.019529367, -0.015389417, -0.012197308, -0.015615815, 0.0, 0.0, -0.08651045]
+gra[7][2][7] = [-0.16109464, -0.1522247, -0.15308808, -0.14182311, -0.24778378, -0.14608057, -0.2882911, -0.2643619, -0.17109688, -0.10580697, -0.18639117]
+gra[7][3][0] = [-3.8481143E-5, 0.0, -2.546209E-4, 0.002719991, 0.0, 0.0031306578, 3.69985E-4, -3.050395E-11, 0.0012653338, -9.175534E-4, -0.0059786467]
+gra[7][3][1] = [4.5733654E-4, 0.0, -0.06010697, -0.010353064, -0.04391478, -0.012589575, -0.048092224, 0.078652866, 0.0019214812, 0.0, -0.08094852]
+gra[7][3][2] = [-0.00847032, -0.013719019, -0.057563722, 0.0, -0.028270295, -0.0064118747, -0.009571605, 0.0045674103, 0.0011093304, 0.00255187, -0.045079764]
+gra[7][3][3] = [-0.16554235, -0.19184113, -0.23793115, -0.19770847, -0.34361568, -0.16543038, -0.24374564, -0.39767784, -0.17093313, -0.14213605, -0.19553113]
+gra[7][3][4] = [-0.016108312, -0.0263843, 0.05114194, 8.307928E-4, -0.030055411, -0.0016386209, -0.023424516, -0.009095556, -0.01243171, -0.0031257737, 0.04524743]
+gra[7][3][5] = [-0.010582655, -0.024485687, 0.03350733, 0.0044725235, 0.008308632, 0.0, -0.014071485, -0.013800123, -0.014241234, -0.0031257737, 0.048553314]
+gra[7][3][6] = [0.0072282003, 0.0, -0.03128368, 0.0, 0.014126777, -0.01838149, -0.006137472, -0.010240156, 0.0017409262, 3.0340515E-11, -0.06437046]
+gra[7][3][7] = [-0.16554235, -0.19184113, -0.23793115, -0.19770847, -0.34361568, -0.16543038, -0.24374564, -0.39767784, -0.17093313, -0.14213605, -0.19553113]
+gra[7][4][0] = [-3.8481143E-5, 0.0, 0.002269707, 0.002719991, 0.0, 0.0031306578, 3.69985E-4, -3.050395E-11, 0.0012653338, 0.0015309223, -0.0059786467]
+gra[7][4][1] = [4.5733654E-4, 0.0, -0.06010697, -0.010353064, -0.04391478, -0.012589575, -0.048092224, 0.078652866, 0.0019214812, 0.0, -0.08094852]
+gra[7][4][2] = [-0.008470321, -0.013719019, -0.07689501, 0.0, -0.03060616, -0.0108750155, -0.009571605, 0.007836706, 0.001859782, 0.0015983053, -0.049368795]
+gra[7][4][3] = [-0.012485486, -0.012182354, -0.09273422, 0.0, -0.022421567, -0.004148566, -0.0065214084, -2.5217576E-4, -0.0036188248, 0.0010085813, -0.038101066]
+gra[7][4][4] = [-0.16332567, -0.19417033, -0.23793115, -0.19770847, -0.34361568, -0.16543038, -0.23748614, -0.39457178, -0.17093313, -0.14213605, -0.23766032]
+gra[7][4][5] = [-0.010582655, -0.022380527, 0.03301778, 0.0023702672, -0.012885826, -0.0030399878, -0.014504371, -0.012202517, -0.012083008, -0.004008526, 0.06235572]
+gra[7][4][6] = [0.008184545, -0.0015748128, -0.03128368, -0.0013104129, 0.014126777, -0.01838149, -0.006137472, -0.010240156, 0.0, -0.0012154061, -0.066418]
+gra[7][4][7] = [-0.16332567, -0.19417033, -0.23793115, -0.19770847, -0.34361568, -0.16543038, -0.23748614, -0.39457178, -0.17093313, -0.14213605, -0.23766032]
+gra[7][5][0] = [-3.8481143E-5, -0.0019296022, 0.002269707, 0.0013423589, 0.0, -0.0023391629, 3.6998512E-4, -3.050395E-11, 0.0012653338, 0.0015309223, -0.0059786467]
+gra[7][5][1] = [4.5733654E-4, 0.0, -0.06681095, -0.010353064, -0.035776734, -0.012589575, -0.043350175, 0.078652866, 0.0019214812, 0.0, -0.09211975]
+gra[7][5][2] = [-0.00847032, -0.013719019, -0.07761786, 0.0, -0.02521117, -0.0108750155, -0.009571605, 0.004819586, 0.0011093304, 0.00255187, -0.04139789]
+gra[7][5][3] = [-0.012507373, -0.011716097, -0.08894238, 0.0, -0.019362442, -0.008611707, -0.0065214084, -2.5217576E-4, -0.0036188248, 0.00255187, -0.034885447]
+gra[7][5][4] = [-0.010043007, -0.013198066, -0.094590135, 0.0, -0.017026579, -0.0027493846, -0.0065214084, 0.0022252216, -0.0036188248, 0.00255187, -0.03168124]
+gra[7][5][5] = [-0.16332567, -0.18746553, -0.25135505, -0.16596697, -0.28105557, -0.16543038, -0.2368377, -0.3664208, -0.17093313, -0.14213605, -0.2239882]
+gra[7][5][6] = [0.0075485897, 0.0, -0.030092647, 0.0, 0.014126777, -0.01838149, -0.0035625359, -0.013210811, 0.0011668268, 3.0340515E-11, -0.062408306]
+gra[7][5][7] = [-0.16332567, -0.18746553, -0.25135505, -0.16596697, -0.28105557, -0.16543038, -0.2368377, -0.3664208, -0.17093313, -0.14213605, -0.2239882]
+gra[7][6][0] = [6.4378075E-4, 0.0]
+gra[7][6][1] = [-0.060440436, 0.026094327]
+gra[7][6][2] = [-0.08302259, 0.0]
+gra[7][6][3] = [-0.09992734, 0.0026769685]
+gra[7][6][4] = [-0.09992734, 0.0]
+gra[7][6][5] = [-0.113697976, -0.0012286699]
+gra[7][6][6] = [-0.31237385, -0.23130569]
+gra[7][6][7] = [-0.31237385, -0.23130569]
+gra[7][8][7] = [-0.14233668, -0.14756092, -0.044601977, -0.18925315, -0.2837601, -0.16813198]
+gra[7][8][8] = [-0.14233668, -0.14756092, -0.044601977, -0.18925315, -0.2837601, -0.16813198]
+gra[7][8][9] = [0.116245195, -0.0227675, 0.1501364, -0.08012412, -0.035148308, -0.009997491]
+gra[7][8][10] = [0.025993222, 0.049919903, -0.08549047, -0.025898118, -3.6705425E-4, -0.011883774]
+gra[7][8][11] = [0.14915608, -0.0051115504, 0.11367791, -0.048788004, -0.05031695, 0.022126378]
+gra[7][8][12] = [0.10679064, 0.04075294, 0.069916554, -0.023135131, -0.055469196, 0.03254832]
+gra[7][8][13] = [0.10665981, 0.07543501, 0.16509528, -0.02731902, -0.0676342, 0.038390566]
+gra[7][8][14] = [-0.18697277, 0.012405168, 0.06522049, 0.019131955, 0.020992978, -0.030493984]
+gra[7][9][7] = [-0.11762953, -0.14489782, -0.20298205, -0.19647896, -0.34765953, -0.2502451, -0.2935088, -0.25860205, -0.09332765, -0.09703251, -0.110088095]
+gra[7][9][8] = [-0.011532839, -0.024351576, -0.023128346, 0.040395692, 0.054172352, 0.027047869, -0.023652218, 0.01099829, 0.0, 0.005164899, -0.012177394]
+gra[7][9][9] = [-0.11762953, -0.14489782, -0.20298205, -0.19647896, -0.34765953, -0.2502451, -0.2935088, -0.25860205, -0.09332765, -0.09703251, -0.110088095]
+gra[7][9][10] = [-0.0053148326, 0.032591105, 0.08589532, -0.065572426, 0.057028472, -0.0385645, 0.021282855, 0.01835112, 0.0, 0.012099067, 0.008352403]
+gra[7][9][11] = [-0.050017238, -0.052683227, 0.12402754, 0.11143928, 0.06660414, -0.053028144, 0.09611938, -0.04782975, -0.004067228, 8.262127E-4, 0.008645253]
+gra[7][9][12] = [-0.015160622, -0.05497521, 0.054767463, 0.08498106, -0.030994065, -0.06664673, 0.04961324, -0.023644354, -3.876005E-4, 8.262127E-4, 0.011072626]
+gra[7][9][13] = [0.047767337, -0.014375355, 0.10950356, 0.052034695, -0.058833968, -0.04414952, 0.05015435, -0.03535352, -0.0051067895, 8.262127E-4, -0.043190517]
+gra[7][9][14] = [-0.008160759, 0.005809472, -0.15416811, 0.05876962, 0.024954624, 0.059738718, 0.1186391, 0.017498635, 0.0, 0.001237925, -0.07941664]
+gra[7][10][7] = [-0.17060247, -0.23843166, -0.33738467, -0.32404765, -0.16877839, -0.100185975, -0.21477497]
+gra[7][10][8] = [0.0033476613, -0.0073065395, 0.033852994, -0.02442397, 0.0, -6.638963E-4, -0.006660041]
+gra[7][10][9] = [0.055700943, 0.047137737, -0.008807744, 0.04429596, 2.5751462E-4, 0.0040959795, 0.004527896]
+gra[7][10][10] = [-0.17060247, -0.23843166, -0.33738467, -0.32404765, -0.16877839, -0.100185975, -0.21477497]
+gra[7][10][11] = [0.027160797, 0.06803705, -0.07385983, 0.052746348, -0.007360163, -0.10496495, 0.093874976]
+gra[7][10][12] = [0.025051562, 0.060594648, -0.05271573, -0.025558125, 7.2789623E-4, -0.04918014, 0.07324426]
+gra[7][10][13] = [0.059900522, 0.09558491, -0.050300118, 0.003853741, 0.002008081, -0.06891406, 0.09705341]
+gra[7][10][14] = [-0.1669436, -0.014706884, 0.014233817, 0.07264586, -0.01725235, 0.0047443355, 0.05550222]
+gra[7][11][7] = [-0.18877086, -0.18295705, -0.089666635, -0.15276533, -0.23981941, -0.1369483, -0.37306124, -0.29440862, -0.08713316, -0.07970412, -0.1323139]
+gra[7][11][8] = [-0.016062489, -0.026009362, -0.008331828, 0.011196983, 0.08981819, 0.033852994, -0.026807453, 0.03652016, -0.0017965699, 0.011501777, 0.011569124]
+gra[7][11][9] = [-8.3700445E-4, 0.018604184, 0.197153, 0.039537385, 0.004949229, -0.018727323, 0.0107252635, 0.014077867, -0.0137060415, -0.018733032, -0.007127323]
+gra[7][11][10] = [-0.0037351365, -0.039604805, 0.08834917, 0.047203198, 0.09250858, -0.09111658, -0.058497563, 0.08510176, 0.0024555703, 0.023591425, -0.0023401042]
+gra[7][11][11] = [-0.18877086, -0.18295705, -0.089666635, -0.15276533, -0.23981941, -0.1369483, -0.37306124, -0.29440862, -0.08713316, -0.07970412, -0.1323139]
+gra[7][11][12] = [-0.051172394, -0.043835588, 0.05621762, 0.074865945, 0.07842945, 0.0034139452, 0.027390484, 0.007771712, 0.0030753883, 0.0032202876, 0.0535943]
+gra[7][11][13] = [-0.010975514, -0.040343948, 0.0883631, 0.046828676, 0.015499551, -0.050970126, 0.010837065, -0.01046962, -0.0016438005, 8.178175E-4, 0.01295049]
+gra[7][11][14] = [0.052401498, 0.0043707276, -0.14561729, 0.0054713218, 3.071786E-4, 0.024929654, 0.15930042, 0.040411703, 0.0, 0.001237925, -0.09829482]
+gra[7][12][7] = [-0.21050091, -0.23652624, -0.21653661, -0.25090933, -0.3047841, -0.19878656, -0.32230523, -0.31947517, -0.10180121, -0.11382966, -0.21483472]
+gra[7][12][8] = [-0.018773116, -0.021906763, -0.008810226, 0.042754523, 0.061202444, 0.033852994, -0.041877814, 0.04072256, 0.0, 0.0031901782, 0.0070363255]
+gra[7][12][9] = [0.0018703595, 0.021649519, 0.16954234, 0.08006504, 0.019699778, -0.026167009, 0.008374144, 0.021905703, -0.0137060415, -0.016481753, -0.018831125]
+gra[7][12][10] = [0.010217155, -0.0412284, 0.0839837, 0.071243525, 0.07052999, -0.06651417, -0.011905368, 0.106604174, 0.002381391, 0.011636256, -0.0034814635]
+gra[7][12][11] = [-0.010060661, 0.023870783, 0.18013962, 0.027321486, -0.025711982, -0.018515691, 0.0052284813, 0.023991466, 7.689154E-4, -0.0016940457, -0.0042543197]
+gra[7][12][12] = [-0.21050091, -0.23652624, -0.21653661, -0.25090933, -0.3047841, -0.19878656, -0.32230523, -0.31947517, -0.10180121, -0.11382966, -0.21483472]
+gra[7][12][13] = [0.11237939, -0.029394656, 0.10779137, 0.059157457, -0.028810736, -0.038828816, -0.0041805073, 0.028646749, -0.0016438005, -6.0143974E-4, 0.024401996]
+gra[7][12][14] = [0.05209828, 0.00307116, -0.11294398, 0.015219055, 0.015549801, 0.0332493, 0.14490941, 0.020360775, 0.0, 0.001237925, -0.06410605]
+gra[7][13][7] = [-0.21126512, -0.14684778, -0.17945582, -0.23263925, -0.2513144, -0.26918033, -0.28356537, -0.27110946, -0.11005954, -0.11417803, -0.21220993]
+gra[7][13][8] = [-0.017938271, -0.022913663, -0.011431517, 0.05068257, 0.09294045, 0.033852994, -0.046354357, 0.039811414, 0.0019757631, 0.005164899, -0.022090228]
+gra[7][13][9] = [0.0058543156, 0.020126855, 0.18471506, 0.104638174, 0.010282405, -0.026167009, 0.011969165, 0.024639761, -0.0137060415, -0.018733032, -0.0074777785]
+gra[7][13][10] = [0.008444371, -0.039341405, 0.039146483, 0.055697598, 0.059080895, -0.06961448, 0.026818028, 0.09884912, 0.002381391, 0.015515008, 0.018108562]
+gra[7][13][11] = [-0.010814704, 0.019341925, 0.2075875, 0.06027955, -0.041535035, -0.014226491, 0.0076052295, 0.030979762, 7.689154E-4, -0.0039453236, 0.007776879]
+gra[7][13][12] = [0.024077337, -0.012258323, 0.17245317, 0.1343428, -0.014438946, -0.026206074, 0.008978962, 0.03448535, 0.0018748178, -0.0034753936, -0.008489365]
+gra[7][13][13] = [-0.21126512, -0.14684778, -0.17945582, -0.23263925, -0.2513144, -0.26918033, -0.28356537, -0.27110946, -0.11005954, -0.11417803, -0.21220993]
+gra[7][13][14] = [0.010951025, 0.009298121, -0.14688809, 0.01865165, -0.008552837, 0.018065976, 0.10271375, 0.011856999, 0.0, -1.3119925E-4, -0.067090854]
+gra[7][14][7] = [0.5241708, -0.46542898, -0.27172104, -0.12035675, -0.21927318, -0.117403835, -0.22986774, -0.17839494]
+gra[7][14][8] = [-0.0016250344, 0.03413689, 0.10002088, -0.011650267, -0.014161643, 0.008354038, -0.006660041, 0.030145828]
+gra[7][14][9] = [-0.03830725, 0.12321507, 0.117662326, 0.05932686, -0.01487538, -0.018540896, 0.012248252, -0.030068738]
+gra[7][14][10] = [-0.017961588, 0.13540176, 0.040848166, -0.035031192, -0.0056500686, 0.0, -0.007450852, -0.008528335]
+gra[7][14][11] = [-0.043990437, 0.13918974, 0.11856836, 0.054988295, -0.020448634, -0.0040659397, 0.005105417, -0.035065804]
+gra[7][14][12] = [-0.04144368, 0.10621174, 0.15394047, 0.028867757, -0.0306922, -0.0060411, 0.04071752, -0.03511221]
+gra[7][14][13] = [-0.033624183, 0.116037644, 0.12645026, 0.033614065, -0.028261295, -0.0060411, 0.041231185, -0.03511221]
+gra[7][14][14] = [0.5241708, -0.46542898, -0.27172104, -0.12035675, -0.21927318, -0.117403835, -0.22986774, -0.17839494]
+gra[8][0][0] = [-0.14417496]
+gra[8][0][1] = [-0.0045984997]
+gra[8][0][2] = [-0.015381893]
+gra[8][0][3] = [-2.1490036E-5]
+gra[8][0][4] = [-2.1490036E-5]
+gra[8][0][5] = [-0.0015194325]
+gra[8][0][6] = [0.003301489]
+gra[8][0][7] = [0.004572891]
+gra[8][0][8] = [-0.14417496]
+gra[8][1][0] = [0.0016441452]
+gra[8][1][1] = [-0.088203505]
+gra[8][1][2] = [0.07636672]
+gra[8][1][3] = [0.05065222]
+gra[8][1][4] = [0.059677303]
+gra[8][1][5] = [0.037684016]
+gra[8][1][6] = [0.003301489]
+gra[8][1][7] = [0.09311825]
+gra[8][1][8] = [-0.088203505]
+gra[8][2][0] = [0.0036445942, 0.0, 0.0031306578, -0.010473219, -0.0020841712, -0.0070527056]
+gra[8][2][1] = [-0.0041412255, 0.0035309494, -8.747375E-4, -0.024372065, -0.023927271, -0.034932088]
+gra[8][2][2] = [-0.2532087, -0.17914829, -0.24883613, -0.3441101, -0.2326756, -0.24048056]
+gra[8][2][3] = [-0.0055313455, 0.0011138088, -0.011980485, -0.031063369, -0.035564486, -0.1411826]
+gra[8][2][4] = [0.0063980464, 0.0011138088, -0.013619106, -0.010086369, -0.038962904, -0.1785424]
+gra[8][2][5] = [0.009107003, 0.0011138088, -0.011980485, 2.7556764E-4, -0.05956607, -0.159695]
+gra[8][2][6] = [-0.00513966, -0.0020981468, -0.0028909168, 0.018890928, -0.027676575, -0.08680173]
+gra[8][2][7] = [0.0026903795, 0.0011138088, -0.011960017, 0.014541798, -0.015871506, -0.18325953]
+gra[8][2][8] = [-0.2532087, -0.17914829, -0.24883613, -0.3441101, -0.2326756, -0.24048056]
+gra[8][3][0] = [0.0, 0.0, 0.0031306578, -0.005943999, -0.0029825727, -0.005015048]
+gra[8][3][1] = [-0.008866866, 0.001660333, -8.747375E-4, -0.045345914, -0.042694468, -0.08094852]
+gra[8][3][2] = [-0.0024275752, -0.0073068766, -0.008529195, -0.025120389, 0.030459536, -0.04988506]
+gra[8][3][3] = [-0.30909407, -0.21876469, -0.26818597, -0.43994185, -0.31751865, -0.24962053]
+gra[8][3][4] = [0.0063663553, 0.0011138088, -0.013619106, -0.03854393, 0.0068849414, 0.038566932]
+gra[8][3][5] = [0.01556715, 0.0011138088, -0.011980485, -1.798892E-4, -0.016009998, 0.037682675]
+gra[8][3][6] = [-0.0013843551, 0.0, -0.0058829887, 0.013488339, -0.015745612, -0.06466174]
+gra[8][3][7] = [0.0056626936, 0.0011138088, -0.011960017, -0.008537625, -0.0044912873, 0.0040028263]
+gra[8][3][8] = [-0.30909407, -0.21876469, -0.26818597, -0.43994185, -0.31751865, -0.24962053]
+gra[8][4][0] = [0.0, 0.0, 0.0031306578, -0.005943999, -4.5824505E-4, -0.005015048]
+gra[8][4][1] = [-0.008866866, 0.001660333, -8.747375E-4, -0.045345914, -0.042694468, -0.08094852]
+gra[8][4][2] = [-0.0024275752, -0.0073068766, -0.012697934, -0.027456252, 0.0023085428, -0.05417409]
+gra[8][4][3] = [-0.0024275752, -0.0019607393, -0.008350256, -0.01927166, 0.008416267, -0.036242567]
+gra[8][4][4] = [-0.30909407, -0.22109388, -0.26818597, -0.43994185, -0.31751865, -0.29174975]
+gra[8][4][5] = [0.009075312, 0.0011138088, -0.015020473, -0.021374347, -0.014589924, 0.055675216]
+gra[8][4][6] = [-0.002694768, -0.0015748128, -0.0058829887, 0.013488339, -0.015745612, -0.06670928]
+gra[8][4][7] = [0.0056626936, 0.0011138088, -0.011960017, -0.008036301, -0.0044912873, -1.2353621E-4]
+gra[8][4][8] = [-0.30909407, -0.22109388, -0.26818597, -0.43994185, -0.31751865, -0.29174975]
+gra[8][5][0] = [-0.0013776321, -0.0019296022, -0.0023391629, -0.005943999, -4.5824505E-4, -0.005015048]
+gra[8][5][1] = [-0.008866866, 0.001660333, -8.747375E-4, -0.037207868, -0.049398426, -0.09211975]
+gra[8][5][2] = [-0.0024275752, -0.0073068766, -0.012697934, -0.022061262, 0.0015857005, -0.046203177]
+gra[8][5][3] = [-0.0024275752, -0.001494481, -0.012518995, -0.016212534, 0.003388402, -0.03302695]
+gra[8][5][4] = [-0.0024275752, -0.0037581453, -0.004672005, -0.01491863, 0.0065603466, -0.03205142]
+gra[8][5][5] = [-0.2773526, -0.2143891, -0.26818597, -0.37738183, -0.33094257, -0.27807763]
+gra[8][5][6] = [-0.0013843551, 0.0, -0.0074605006, 0.013488339, -0.014554577, -0.064160265]
+gra[8][5][7] = [0.0056626936, 0.0011138088, -0.014376583, -0.01484395, -0.0030712152, -0.0025116857]
+gra[8][5][8] = [-0.2773526, -0.2143891, -0.26818597, -0.37738183, -0.33094257, -0.27807763]
+gra[8][6][0] = [-0.0020841712]
+gra[8][6][1] = [-0.04302792]
+gra[8][6][2] = [-0.0050475206]
+gra[8][6][3] = [-0.008825058]
+gra[8][6][4] = [-0.008825058]
+gra[8][6][5] = [-0.012781609]
+gra[8][6][6] = [-0.41294762]
+gra[8][6][7] = [-0.0036576067]
+gra[8][6][8] = [-0.41294762]
+gra[8][7][0] = [-0.003605175, 0.0, 3.0349702E-11, -0.005943999, 0.0, -0.0034732886]
+gra[8][7][1] = [-0.0047256397, 0.001660333, -8.747375E-4, -0.025625348, -0.029110229, -0.05507951]
+gra[8][7][2] = [-0.0024275752, -0.0073068766, -0.010434626, -0.02700362, 2.0877292E-4, -0.03593757]
+gra[8][7][3] = [0.0059763296, -0.013574859, -0.013208415, -0.016524691, 0.0015131709, -0.02000734]
+gra[8][7][4] = [0.0059763296, -0.015372265, -0.012518995, -0.017566651, 0.0015131709, -0.022236021]
+gra[8][7][5] = [0.0059763296, -0.015372265, -0.00639748, -0.017453253, 0.005679493, -0.021238362]
+gra[8][7][6] = [0.0047623203, -9.316074E-4, 0.003376759, 0.0, -0.0023392674, -0.00691407]
+gra[8][7][7] = [-0.2170329, -0.21450336, -0.23716104, -0.18752718, -0.29549456, -0.22514722]
+gra[8][7][8] = [-0.2170329, -0.21450336, -0.23716104, -0.18752718, -0.29549456, -0.22514722]
+gra[8][9][8] = [-0.022827793, -0.068379566, -0.25837877, -0.21213788, -0.18123251, -0.06280679]
+gra[8][9][9] = [-0.022827793, -0.068379566, -0.25837877, -0.21213788, -0.18123251, -0.06280679]
+gra[8][9][10] = [-0.04248844, -0.015347177, -0.06022135, 0.059880435, 0.030355116, 0.02373868]
+gra[8][9][11] = [0.1324003, -0.03536785, 0.072841264, 0.111723945, 0.16686207, 0.004373795]
+gra[8][9][12] = [0.148417, -0.062015627, 0.03661561, 0.028872918, 0.10492425, -0.00793882]
+gra[8][9][13] = [0.115055285, -0.06980443, 0.03620458, 0.002651147, 0.17650467, -0.051590923]
+gra[8][9][14] = [0.0024404947, -0.014385754, 0.052796006, 0.032367773, -0.037356302, -0.083207875]
+gra[8][10][8] = [-0.3744933, -0.16784373, -0.22703753, -0.27977395, -0.079930805]
+gra[8][10][9] = [-0.00495979, -0.015150558, -0.024016019, -0.024264883, 0.0040959795]
+gra[8][10][10] = [-0.3744933, -0.16784373, -0.22703753, -0.27977395, -0.079930805]
+gra[8][10][11] = [0.009161118, 0.06431773, -0.028824054, 0.06274183, -0.11322439]
+gra[8][10][12] = [0.00397792, 0.034380853, -0.0059177973, 0.060738035, -0.070336334]
+gra[8][10][13] = [-0.0165147, 0.08674023, 0.01999219, 0.1095151, -0.07945923]
+gra[8][10][14] = [0.004430178, -0.009117239, 0.003957929, -0.014807275, 9.530978E-4]
+gra[8][11][8] = [-0.018760176, -0.13557921, -0.19221872, -0.24474324, -0.18942925, -0.117233455]
+gra[8][11][9] = [-0.02862041, -0.0266835, -0.017359264, -0.0026410976, 0.101478025, -0.007127323]
+gra[8][11][10] = [0.12575564, -0.008013563, -0.13465624, 0.042924937, 0.10461114, -0.013226186]
+gra[8][11][11] = [-0.018760176, -0.13557921, -0.19221872, -0.24474324, -0.18942925, -0.117233455]
+gra[8][11][12] = [0.16262418, -0.06352125, 0.13524722, 0.13732867, 0.07395467, 0.032438103]
+gra[8][11][13] = [0.14645974, -0.096206084, 0.02090235, 0.07344408, 0.15144207, 0.0024053212]
+gra[8][11][14] = [-0.059860162, -0.015824499, 0.017986942, 0.0066039376, -0.022695731, -0.10208605]
+gra[8][12][8] = [-0.1169041, -0.18914837, -0.254057, -0.30970794, -0.31629923, -0.19975424]
+gra[8][12][9] = [0.011907245, -0.023638166, -0.024798952, 0.012109455, 0.073867366, -0.018831125]
+gra[8][12][10] = [0.1423337, -0.007672596, -0.10740548, 0.020946361, 0.110106535, -0.014367545]
+gra[8][12][11] = [-0.036603082, -0.021824643, -0.013993474, -0.009670965, 0.062927134, -0.0042543197]
+gra[8][12][12] = [-0.1169041, -0.18914837, -0.254057, -0.30970794, -0.31629923, -0.19975424]
+gra[8][12][13] = [0.1698632, -0.097934745, 0.07009623, 0.029133787, 0.13945653, 0.013856832]
+gra[8][12][14] = [-0.050112426, -0.017124066, 0.026306588, 0.021846559, 0.009977598, -0.06789728]
+gra[8][13][8] = [-0.09863404, -0.09946993, -0.3244508, -0.25623825, -0.27921844, -0.19712944]
+gra[8][13][9] = [0.03648038, -0.025160834, -0.024798952, 0.0026920782, 0.08904009, -0.0074777785]
+gra[8][13][10] = [0.12678777, -0.0057856096, -0.11050579, 0.0094972495, 0.065269336, 0.0072224857]
+gra[8][13][11] = [-0.008817717, -0.02160719, -0.009704274, -0.02549401, 0.08290721, 0.007776879]
+gra[8][13][12] = [0.02728383, -0.02116654, -0.01983916, 0.008786059, 0.08503172, -0.009510772]
+gra[8][13][13] = [-0.09863404, -0.09946993, -0.3244508, -0.25623825, -0.27921844, -0.19712944]
+gra[8][13][14] = [-0.047285203, -0.013819384, -2.9367127E-4, -0.0011396939, -0.051197436, -0.07088209]
+gra[8][14][8] = [0.27659905, -0.15125082, -0.11054209]
+gra[8][14][9] = [-0.04892659, 0.04652346, -0.010434729]
+gra[8][14][10] = [-0.0171581, 0.05569372, 0.0020520485]
+gra[8][14][11] = [-0.057897132, 0.046490017, -0.011281329]
+gra[8][14][12] = [-0.073342204, 0.038727716, -0.019339422]
+gra[8][14][13] = [-0.06552271, 0.016410215, -0.019339422]
+gra[8][14][14] = [0.27659905, -0.15125082, -0.11054209]
+gra[9][0][0] = [-0.1773251]
+gra[9][0][1] = [0.07775881]
+gra[9][0][2] = [-0.03473952]
+gra[9][0][3] = [-7.944107E-4]
+gra[9][0][4] = [-7.944107E-4]
+gra[9][0][5] = [0.00966204]
+gra[9][0][6] = [-0.007829653]
+gra[9][0][7] = [-0.0057671433]
+gra[9][0][8] = [0.020644845]
+gra[9][0][9] = [-0.1773251]
+gra[9][1][0] = [0.0016247655, -0.001958814, 6.20738E-4, 5.2270518E-11, -0.0021720084, 9.538275E-4]
+gra[9][1][1] = [-0.19433363, -0.15237986, -0.23557648, -0.20321801, -0.15950295, -0.17264925]
+gra[9][1][2] = [0.056879885, -0.045482695, 0.028423216, -0.026443, -0.01245614, -0.048355818]
+gra[9][1][3] = [0.049750097, -0.040081326, -0.014490077, -0.021925595, -0.014794135, -0.067049526]
+gra[9][1][4] = [0.058775187, -0.04147892, -0.0076697078, -0.019397447, -0.014794135, -0.06707433]
+gra[9][1][5] = [0.04873628, -0.029277861, 0.024150392, -0.021289404, -0.010774887, -0.051510047]
+gra[9][1][6] = [-0.007829653, -0.0024341857, 0.0038837004, -0.012754725, 0.0061575435, -0.001778353]
+gra[9][1][7] = [0.07907056, -0.033471376, 0.025322549, -0.024018921, -0.006669964, -0.07393278]
+gra[9][1][8] = [0.026585741, -3.4384023E-11, -0.024732247, -0.0073345173, -0.0014129442, -0.0036619226]
+gra[9][1][9] = [-0.19433363, -0.15237986, -0.23557648, -0.20321801, -0.15950295, -0.17264925]
+gra[9][2][0] = [-3.8481143E-5, 0.0, -1.9379833E-5, 0.0042653317, -0.00452922, 0.0040684794, 0.004997642, 0.0, 0.0012653338, 0.012965051, -0.008016303]
+gra[9][2][1] = [-5.13921E-4, -3.7906157E-11, -0.02825313, -0.0041412255, -0.02294093, -0.0013798745, -0.00706416, 0.035186574, -7.720956E-4, 0.019359952, -0.0476656]
+gra[9][2][2] = [-0.15411112, -0.15474868, -0.2667567, -0.2025662, -0.2436716, -0.18423976, -0.27013993, -0.2716599, -0.2620662, -0.12707642, -0.22092506]
+gra[9][2][3] = [-0.010340879, -0.028990483, -0.03546672, -0.0149521455, -0.02118981, -0.0025281478, 0.0043394, -0.00686435, -0.002073156, -0.009318697, -0.13549897]
+gra[9][2][4] = [-0.013003577, -0.03249323, -0.036955513, -0.012433228, -0.0015978473, -0.0016386209, 7.817097E-4, -0.008992363, -0.002073156, 9.969876E-4, -0.16866863]
+gra[9][2][5] = [-0.004744318, -0.026590846, -0.04560429, -0.014496949, 0.008764084, -0.0018919576, 0.012585785, -0.013152661, -0.00433054, -0.004072852, -0.14982122]
+gra[9][2][6] = [0.008839857, -0.005398127, -0.038807712, -0.003755305, 0.018350098, -0.009624145, -0.007742171, -0.015615815, 0.0, 0.004373548, -0.08937369]
+gra[9][2][7] = [-0.005842864, -0.0263843, -0.029211506, -0.020425018, 0.029116679, 0.0024165655, 0.019620195, 0.008007627, -0.0065089096, -0.0107359085, -0.1680537]
+gra[9][2][8] = [0.0028593205, -0.029040482, 0.020325596, -0.0065694638, 0.02993482, -0.006035342, -0.033911515, -0.012498216, 0.002475134, 8.743692E-4, -0.024541838]
+gra[9][2][9] = [-0.15411112, -0.15474868, -0.2667567, -0.2025662, -0.2436716, -0.18423976, -0.27013993, -0.2716599, -0.2620662, -0.12707642, -0.22092506]
+gra[9][3][0] = [-3.8481143E-5, 0.0, -9.177815E-4, 6.20738E-4, 0.0, 0.0040684794, 0.004997642, -3.050395E-11, 0.0012653338, 0.0105165765, -0.0059786467]
+gra[9][3][1] = [-5.13921E-4, 0.0, -0.031104738, -0.010353064, -0.04391478, -0.0033323471, -0.04071657, 0.079702035, -7.720956E-4, 0.01583714, -0.093682036]
+gra[9][3][2] = [-0.009741628, -0.019480554, -0.0440849, 0.0, -0.025120389, -0.0064118747, -0.009571605, 0.0045674103, -0.0014879347, 0.00255187, -0.051743556]
+gra[9][3][3] = [-0.15855883, -0.1943651, -0.3515998, -0.25845155, -0.33950344, -0.20358957, -0.22559446, -0.4049759, -0.26190245, -0.16340552, -0.23006502]
+gra[9][3][4] = [-0.012042707, -0.03038807, 0.006982708, -0.0059730806, -0.030055411, -0.0016386209, -0.023424516, -0.0063553033, -0.0050928323, -0.0058299974, 0.044250567]
+gra[9][3][5] = [-0.004744318, -0.026590846, -0.002048215, -0.008036802, 0.008308632, -0.0018919576, -0.013955208, -0.011245721, -0.008255026, -0.0058299974, 0.04755645]
+gra[9][3][6] = [-0.0029429542, -0.00329998, -0.026876753, 0.0, 0.012947509, -0.012616217, -0.0016823349, -0.010240156, 0.0017409262, 0.004373548, -0.06723371]
+gra[9][3][7] = [-0.0076958933, -0.0263843, -0.017831288, -0.017452704, 0.006037254, 0.0024165655, -0.0066935206, 0.011656271, -0.008786375, -0.008534221, 0.019957142]
+gra[9][3][8] = [0.0, -0.023754772, 0.022294685, -0.0065694638, 0.02787349, -0.006035342, -0.03937225, 0.008614166, 0.002475134, 2.4045661E-11, -0.053164832]
+gra[9][3][9] = [-0.15855883, -0.1943651, -0.3515998, -0.25845155, -0.33950344, -0.20358957, -0.22559446, -0.4049759, -0.26190245, -0.16340552, -0.23006502]
+gra[9][4][0] = [-3.8481143E-5, 0.0, 0.0016065463, 6.20738E-4, 0.0, 0.0040684794, 0.004997642, -3.050395E-11, 0.0012653338, 0.012965051, -0.0059786467]
+gra[9][4][1] = [-5.13921E-4, 0.0, -0.031104738, -0.010353064, -0.04391478, -0.0033323471, -0.04071657, 0.079702035, -7.720956E-4, 0.01583714, -0.093682036]
+gra[9][4][2] = [-0.009741628, -0.019480554, -0.06341619, 0.0, -0.027456252, -0.008486157, -0.009571605, 0.007836706, -0.0015743364, 0.0015983053, -0.056032587]
+gra[9][4][3] = [-0.011068651, -0.0161157, -0.083996825, 0.0032001403, -0.01927166, -0.008297132, -0.0065214084, -2.5217576E-4, -0.009947379, 0.0010085813, -0.038101066]
+gra[9][4][4] = [-0.15634215, -0.1966943, -0.3515998, -0.25845155, -0.33950344, -0.20358957, -0.21933496, -0.40186983, -0.26190245, -0.16340552, -0.27219427]
+gra[9][4][5] = [-0.004744318, -0.024485687, -0.0025377665, -0.008036802, -0.012885826, -0.0049319454, -0.014388094, -0.010515601, -0.0060968003, -0.0067127496, 0.061358854]
+gra[9][4][6] = [-0.00198661, -0.004874793, -0.026876753, -0.0013104129, 0.012947509, -0.012616217, -0.0016823349, -0.010240156, 0.0, 0.0031581419, -0.06928125]
+gra[9][4][7] = [-0.0076958933, -0.0263843, -0.017831288, -0.017452704, 0.0065385774, 0.0024165655, -0.0066935206, 0.011656271, -0.008786375, -0.00811267, 0.01583078]
+gra[9][4][8] = [-0.0030642115, -0.023754772, 0.022294685, -0.0065694638, 0.02787349, -0.006035342, -0.03937225, 0.008614166, 0.0024751339, -5.004493E-4, -0.053164832]
+gra[9][4][9] = [-0.15634215, -0.1966943, -0.3515998, -0.25845155, -0.33950344, -0.20358957, -0.21933496, -0.40186983, -0.26190245, -0.16340552, -0.27219427]
+gra[9][5][0] = [-3.8481143E-5, -0.0019296022, 0.0016065463, -7.568941E-4, 0.0, -0.0014013414, 0.004997642, -3.050395E-11, 0.0012653338, 0.012965051, -0.0059786467]
+gra[9][5][1] = [-5.13921E-4, 0.0, -0.037808705, -0.010353064, -0.035776734, -0.0033323471, -0.03597452, 0.079702035, -7.720956E-4, 0.01583714, -0.10485327]
+gra[9][5][2] = [-0.009741628, -0.019480554, -0.06413903, 0.0, -0.022061262, -0.008486157, -0.009571605, 0.004819586, -0.002324788, 0.00255187, -0.04806168]
+gra[9][5][3] = [-0.0110905375, -0.015649442, -0.08020499, 0.0032001403, -0.016212534, -0.010371415, -0.0065214084, -2.5217576E-4, -0.010784232, 0.00255187, -0.034885447]
+gra[9][5][4] = [-0.008626172, -0.017131412, -0.08585275, 0.0032001403, -0.013876671, -0.006897951, -0.0065214084, 0.0022252216, -0.009080861, 0.00255187, -0.03168124]
+gra[9][5][5] = [-0.15634215, -0.18998952, -0.36502373, -0.22671008, -0.2769434, -0.20358957, -0.21868652, -0.37371886, -0.26190245, -0.16340552, -0.2585221]
+gra[9][5][6] = [-0.0026225648, -0.00329998, -0.025685718, 0.0, 0.012947509, -0.012616217, -7.880372E-4, -0.013210811, 0.0011668268, 0.004373548, -0.06527156]
+gra[9][5][7] = [-0.0076958933, -0.0263843, -0.016411217, -0.017452704, -2.6907446E-4, 4.886615E-13, -0.0057870867, 0.011656271, -0.008786375, -0.00811267, 0.0031243209]
+gra[9][5][8] = [0.0, -0.01895187, 0.022294685, -0.0065694638, 0.022793658, -0.006035342, -0.04394223, 0.014637312, 0.002475134, 2.4045661E-11, -0.06604334]
+gra[9][5][9] = [-0.15634215, -0.18998952, -0.36502373, -0.22671008, -0.2769434, -0.20358957, -0.21868652, -0.37371886, -0.26190245, -0.16340552, -0.2585221]
+gra[9][6][0] = [-1.9379833E-5, -0.004478236]
+gra[9][6][1] = [-0.031438198, 0.030764]
+gra[9][6][2] = [-0.069543764, 0.001318386]
+gra[9][6][3] = [-0.09118996, 0.0026769685]
+gra[9][6][4] = [-0.09118996, 0.0]
+gra[9][6][5] = [-0.10496058, -0.0012286699]
+gra[9][6][6] = [-0.5014086, -0.22156538]
+gra[9][6][7] = [-0.013997644, -0.01767266]
+gra[9][6][8] = [0.0023319586, -6.0892664E-4]
+gra[9][6][9] = [-0.5014086, -0.22156538]
+gra[9][7][0] = [-3.8481143E-5, 0.0, -1.9379833E-5, -0.0029844372, 0.0, 9.378215E-4, 0.004997642, 0.0, 0.0012653338, 0.012965051, -0.004436887]
+gra[9][7][1] = [-5.13921E-4, 0.0, -0.026578074, -0.006211838, -0.02472724, -0.0033323471, -0.0122409295, 0.043953314, 8.230112E-4, 0.018503062, -0.07874879]
+gra[9][7][2] = [-0.011755253, -0.019480554, -0.06551596, 0.0, -0.02700362, -0.0062228492, -0.009571605, 0.0052266098, -0.004360152, 0.0, -0.037890106]
+gra[9][7][3] = [-0.0051616803, -0.02772982, -0.08208022, 0.011604045, -0.016524691, -0.011060836, -0.0065214084, 0.0014358414, -0.010784232, 0.0, -0.02186584]
+gra[9][7][4] = [-0.0035729608, -0.028745532, -0.08208022, 0.011604045, -0.016524691, -0.012650484, -0.0065214084, 0.0039132386, -0.009917714, 0.0, -0.02186584]
+gra[9][7][5] = [-0.0020350767, -0.02772982, -0.09057815, 0.011604045, -0.017453253, -0.008297132, -0.009280194, 0.0016880172, -0.009947379, -0.0020343647, -0.023096858]
+gra[9][7][6] = [-0.0015405889, -9.316074E-4, -0.05381691, 0.0047623203, 0.0, 0.0053935135, 4.2076397E-4, 0.005881849, -6.80316E-4, 0.0016483099, -0.0069982223]
+gra[9][7][7] = [-0.16224875, -0.19711332, -0.36457542, -0.17255223, -0.11015577, -0.17975295, -0.2606367, -0.1860249, -0.28262648, -0.14453895, -0.2916181]
+gra[9][7][8] = [0.0, -0.020787204, 0.022655375, -0.003890037, 0.04273223, -0.006035342, -0.04434924, 7.8614766E-4, 0.0024751343, 2.4045661E-11, -0.05973374]
+gra[9][7][9] = [-0.16224875, -0.19711332, -0.36457542, -0.17255223, -0.11015577, -0.17975295, -0.2606367, -0.1860249, -0.28262648, -0.14453895, -0.2916181]
+gra[9][8][0] = [0.008273305, 0.0, 6.20738E-4, 4.4457944E-11, -0.0021720084, 9.538275E-4]
+gra[9][8][1] = [0.023566004, 0.0, -9.987416E-4, -0.0050757998, 0.005938728, 0.012229878]
+gra[9][8][2] = [-0.05634791, -0.019480554, -0.0053461394, -0.0062228492, 0.009140637, -0.0064943894]
+gra[9][8][3] = [-0.08876743, -0.009889483, -0.002145999, -0.010371415, 0.0069431528, -0.007944971]
+gra[9][8][4] = [-0.07633048, -0.010905196, -0.002145999, -0.012650484, 0.0069431528, -0.007944971]
+gra[9][8][5] = [-0.089960665, -0.009889483, -0.002145999, -0.008297132, 0.0069431528, -0.007944971]
+gra[9][8][6] = [-0.056910094, 0.0, 0.0, -0.012947457, -0.0017974195, -0.0031688735]
+gra[9][8][7] = [-0.06844245, -0.021147298, -0.006194906, -0.0066199475, 0.009164523, -0.011917457]
+gra[9][8][8] = [-0.2550567, -0.09885185, -0.22504526, -0.18872045, -0.1348899, -0.17494895]
+gra[9][8][9] = [-0.2550567, -0.09885185, -0.22504526, -0.18872045, -0.1348899, -0.17494895]
+gra[9][10][9] = [0.10852815, -0.025776992, -0.2302414, -0.31093428, -0.15383463, -0.024499029, -0.094033964]
+gra[9][10][10] = [0.10852815, -0.025776992, -0.2302414, -0.31093428, -0.15383463, -0.024499029, -0.094033964]
+gra[9][10][11] = [-0.02225552, 0.09129608, -0.1057563, -0.024842158, -0.006525742, -0.120727904, 0.11680413]
+gra[9][10][12] = [-0.062789634, 0.061075095, -0.06308911, -0.07374247, -8.7093055E-4, -0.065352134, 0.11862738]
+gra[9][10][13] = [9.415448E-4, 0.09611326, -0.04225102, -0.07940817, 0.0029196735, -0.085086055, 0.15611345]
+gra[9][10][14] = [-0.115164116, -1.8879399E-4, 0.020602407, 0.062252887, -0.01980718, 0.0047443355, 0.026617764]
+gra[9][11][9] = [-0.0668847, -0.040929336, 0.04409513, -0.16642815, -0.20053107, -0.10886454, -0.4057592, -0.2498812, -0.09408637, -0.08808707, -0.14613786]
+gra[9][11][10] = [0.0013266006, 0.0033504684, 0.021805383, 0.052153945, 0.10140834, -0.09087926, -0.06761236, 0.07752701, 0.0014439123, 0.023591425, 0.011768046]
+gra[9][11][11] = [-0.0668847, -0.040929336, 0.04409513, -0.16642815, -0.20053107, -0.10886454, -0.4057592, -0.2498812, -0.09408637, -0.08808707, -0.14613786]
+gra[9][11][12] = [-0.02479161, -0.049128816, -0.046256132, 0.038998794, 0.0664641, -0.013100912, 0.024784435, 0.033664178, -0.0016438005, 0.005044714, 0.0374223]
+gra[9][11][13] = [0.055205453, -0.02576902, 0.062797636, -0.01856041, 0.005523918, -0.04292103, 0.010837065, 0.016201805, -0.0016438005, -9.234785E-4, -0.0032215076]
+gra[9][11][14] = [0.04499191, 0.023527658, -0.11728629, 0.013822016, 0.00838391, 0.031298243, 0.14430822, 0.040411703, 0.0, 0.0, -0.09829482]
+gra[9][12][9] = [-0.088614725, -0.094498485, -0.08277482, -0.2645721, -0.26549575, -0.1707028, -0.3550032, -0.2749477, -0.10875442, -0.1222126, -0.22865866]
+gra[9][12][10] = [0.01290104, -2.3767166E-4, 0.010322846, 0.081089616, 0.07942977, -0.063628495, -0.018640457, 0.09832135, 0.0013697329, 0.011636256, 0.010626682]
+gra[9][12][11] = [-0.032606002, 0.042882897, 0.17033508, -0.0199083, -0.014172083, -0.027323436, 0.004347658, 0.023991466, 7.6891546E-4, -0.002900556, -0.0042543197]
+gra[9][12][12] = [-0.088614725, -0.094498485, -0.08277482, -0.2645721, -0.26549575, -0.1707028, -0.3550032, -0.2749477, -0.10875442, -0.1222126, -0.22865866]
+gra[9][12][13] = [0.17182983, -0.009854233, 0.06964333, -0.0068727885, -0.038786367, -0.036921203, -0.0041805073, 0.05531818, -0.0016438005, -0.0023427363, 0.008229998]
+gra[9][12][14] = [0.044688687, 0.022228086, -0.08461296, 0.023569753, 0.023626532, 0.039617892, 0.12991723, 0.020360775, 0.0, -2.2505768E-11, -0.06410605]
+gra[9][13][9] = [-0.089378946, -0.0048200767, -0.045694027, -0.24630201, -0.21202603, -0.24109656, -0.31626335, -0.22658204, -0.11701275, -0.12256098, -0.22603387]
+gra[9][13][10] = [0.012254806, 0.0016493145, -0.017773198, 0.07629947, 0.07468779, -0.06672881, 0.011702432, 0.09033154, 0.0013697329, 0.015515008, 0.037934404]
+gra[9][13][11] = [-0.03336004, 0.03658518, 0.18911833, 0.004911943, -0.029995129, -0.023034235, 0.006724406, 0.030979762, 7.6891546E-4, -0.005151834, 0.007776879]
+gra[9][13][12] = [-0.0013462165, 0.017152274, 0.14371338, 0.05429946, -0.0017973538, -0.031859662, 0.011744333, 0.03448535, -1.4217425E-4, -0.004681904, -0.008489365]
+gra[9][13][13] = [-0.089378946, -0.0048200767, -0.045694027, -0.24630201, -0.21202603, -0.24109656, -0.31626335, -0.22658204, -0.11701275, -0.12256098, -0.22603387]
+gra[9][13][14] = [2.063606E-4, 0.030281678, -0.17126273, 0.029621735, -0.0021256413, 0.019744035, 0.093215674, 0.011856999, 0.0, -0.0013691243, -0.067090854]
+gra[9][14][9] = [0.4212072, -0.33166724, -0.28538382, 0.02167102, -0.22091122, -0.12435703, -0.107981555, -0.15031114]
+gra[9][14][10] = [-0.017961588, 0.058655586, 0.031953864, 5.054381E-4, -0.0062238164, -0.001011658, -0.0025138534, -0.007839976]
+gra[9][14][11] = [-0.043990437, 0.12072055, 0.06320075, 0.07223154, -0.025583364, -0.0040659397, -0.017439922, -0.04387355]
+gra[9][14][12] = [-0.051827066, 0.06880729, 0.065759294, 0.056509502, -0.034117844, -0.008058093, 0.015293969, -0.040765796]
+gra[9][14][13] = [-0.04400757, 0.087297834, 0.046406917, 0.06302466, -0.03168694, -0.008058093, 0.015807634, -0.040765796]
+gra[9][14][14] = [0.4212072, -0.33166724, -0.28538382, 0.02167102, -0.22091122, -0.12435703, -0.107981555, -0.15031114]
+gra[10][0][0] = [-0.10724866]
+gra[10][0][1] = [-0.023958247]
+gra[10][0][2] = [-0.015149269]
+gra[10][0][3] = [0.021138027]
+gra[10][0][4] = [0.022920009]
+gra[10][0][5] = [0.030904416]
+gra[10][0][6] = [0.0013775101]
+gra[10][0][7] = [0.056586806]
+gra[10][0][8] = [-0.03225985]
+gra[10][0][9] = [0.017028254]
+gra[10][0][10] = [-0.10724866]
+gra[10][1][0] = [0.0016441452, 0.0, -0.0021720084, 0.0]
+gra[10][1][1] = [-0.048993174, -0.25442305, -0.15137123, -0.16780452]
+gra[10][1][2] = [0.07379909, 0.0388396, -0.016389685, -0.026443]
+gra[10][1][3] = [0.06901149, -0.007807495, -0.012324876, -0.02191716]
+gra[10][1][4] = [0.079818554, -9.871258E-4, -0.010499197, -0.020035459]
+gra[10][1][5] = [0.067307614, 0.03540191, -0.012324876, -0.02191716]
+gra[10][1][6] = [0.00137751, 0.0038837004, 6.091478E-4, -0.0039868616]
+gra[10][1][7] = [0.13875346, 0.056739453, -0.011917006, -0.024018921]
+gra[10][1][8] = [-0.023770995, -0.03150455, -0.0077087167, -0.0012991752]
+gra[10][1][9] = [0.07292722, 0.014448465, -0.015642967, -0.019397447]
+gra[10][1][10] = [-0.048993174, -0.25442305, -0.15137123, -0.16780452]
+gra[10][2][0] = [5.761308E-4, -0.0015712132, 0.0036445942, 0.0, 3.5459347E-11, -0.00452922, -9.497553E-4, 0.0031306578]
+gra[10][2][1] = [0.035186574, -0.0010594062, -0.0041412255, -3.7906157E-11, -0.0074518225, -0.026237296, -0.019708391, 0.0068521057]
+gra[10][2][2] = [-0.24751812, -0.1072654, -0.23525298, -0.14890505, -0.2227314, -0.2392259, -0.4945354, -0.15355895]
+gra[10][2][3] = [-0.0034905192, 0.0012402993, -0.012895271, 0.0013912377, -0.014404967, -0.022028076, 0.07092665, -0.002519714]
+gra[10][2][4] = [-0.006486016, -0.002786019, -0.010376353, 0.0013912377, -0.01602141, -0.0024361145, 0.09002073, -0.0022766325]
+gra[10][2][5] = [-0.010646315, -0.0018251493, -0.007871137, -0.0011139774, -0.027142221, 0.00792582, 0.12973902, -0.002519714]
+gra[10][2][6] = [-0.015615815, 0.008577139, -0.002648871, -0.0020981468, -0.028376034, 0.020017283, 0.051820286, -8.903948E-4]
+gra[10][2][7] = [0.011381457, 2.787984E-5, 0.006366184, 0.005368133, 0.030362133, 0.027474642, -0.032702655, 0.0024165655]
+gra[10][2][8] = [-0.02509948, 0.0028593205, -0.0036909212, -0.050199, -0.02083967, 0.04475024, -0.014748111, 3.69642E-11]
+gra[10][2][9] = [0.0010847622, -0.005951785, -0.036049217, 0.0013912377, -0.03142338, 0.051694456, 0.017777147, -1.1858091E-11]
+gra[10][2][10] = [-0.24751812, -0.1072654, -0.23525298, -0.14890505, -0.2227314, -0.2392259, -0.4945354, -0.15355895]
+gra[10][3][0] = [5.7613075E-4, -0.0015712132, 0.0, 0.0, -8.9840154E-4, 0.0, -0.007079258, 0.0031306578]
+gra[10][3][1] = [0.079702035, -0.0010594062, -0.010353064, 0.0, -0.01857777, -0.047211148, -0.027547482, 0.0068521057]
+gra[10][3][2] = [0.0045674103, -0.0020977946, -7.2137534E-4, -0.0011517848, 0.060968373, -0.028034722, -0.019437145, -0.0022633083]
+gra[10][3][3] = [-0.3808341, -0.11171311, -0.29113835, -0.18852146, -0.3075745, -0.33505765, -0.14130302, -0.17290878]
+gra[10][3][4] = [-0.0029814718, -0.0018251492, -0.0039162054, 0.0013912377, 0.02982644, -0.030893678, 0.1712429, -0.0022766325]
+gra[10][3][5] = [-0.0087393755, -0.0018251492, -0.0014109905, -0.0011139774, 0.016413854, 0.007470367, 0.21749142, -0.002519714]
+gra[10][3][6] = [-0.010240156, -0.0032056724, 0.001106434, 0.0, -0.01644507, 0.014614694, 0.10100887, -0.0038824668]
+gra[10][3][7] = [0.015030102, -0.0018251494, 0.0093385, 0.005368133, 0.041742355, 0.0043952167, -0.007053854, 0.0024165655]
+gra[10][3][8] = [-0.0039870986, -1.0503716E-10, -0.0036909212, -0.04491329, -0.018870585, 0.042688906, 0.050200105, 3.69642E-11]
+gra[10][3][9] = [0.022444844, -0.005951785, -0.031732466, 0.0013912377, -0.007614853, -0.0018208846, 0.14795507, 3.051486E-4]
+gra[10][3][10] = [-0.3808341, -0.11171311, -0.29113835, -0.18852146, -0.3075745, -0.33505765, -0.14130302, -0.17290878]
+gra[10][4][0] = [5.7613075E-4, -0.0015712132, 0.0, 0.0, 0.0016259261, 0.0, -0.0045549306, 0.0031306578]
+gra[10][4][1] = [0.079702035, -0.0010594062, -0.010353064, 0.0, -0.01857777, -0.047211148, -0.027547482, 0.0068521057]
+gra[10][4][2] = [0.007836706, -0.0020977946, -7.2137534E-4, -0.0011517848, 0.035989325, -0.030370584, -0.031994678, -0.0022633083]
+gra[10][4][3] = [0.0014574399, -8.537594E-4, 0.0, 0.0035487313, 0.05433384, -0.0207291, -0.0020670719, -0.00507246]
+gra[10][4][4] = [-0.37772804, -0.10949644, -0.29113835, -0.19085066, -0.3075745, -0.33505765, -0.15541108, -0.17290878]
+gra[10][4][5] = [-0.0071417717, -0.0018251492, -0.0014109905, -0.0011139774, 0.017833926, -0.013724092, 0.1913245, -0.0055597015]
+gra[10][4][6] = [-0.010240156, -0.002249328, -2.0397897E-4, -0.0015748128, -0.01644507, 0.014614694, 0.10100887, -0.0038824668]
+gra[10][4][7] = [0.015030102, -0.0018251494, 0.0093385, 0.005368133, 0.041742355, 0.00489654, -0.008712063, 0.0024165655]
+gra[10][4][8] = [-0.0039870986, -0.0030642115, -0.0036909212, -0.04491329, -0.018870585, 0.042688906, 0.054841205, 3.69642E-11]
+gra[10][4][9] = [0.022444844, -0.005951785, -0.031732466, 0.0013912377, -0.007614853, -6.1365584E-4, 0.14629687, 4.9778556E-11]
+gra[10][4][10] = [-0.37772804, -0.10949644, -0.29113835, -0.19085066, -0.3075745, -0.33505765, -0.15541108, -0.17290878]
+gra[10][5][0] = [5.7613075E-4, -0.0015712132, -0.0013776321, -0.0019296022, 0.0016259261, 0.0, -0.0066208825, -0.0023391629]
+gra[10][5][1] = [0.079702035, -0.0010594062, -0.010353064, 0.0, -0.025281731, -0.039073102, 0.0036873422, 0.0068521057]
+gra[10][5][2] = [0.004819586, -0.0020977946, -7.2137534E-4, -0.0011517848, 0.03526648, -0.024975596, -0.02962697, -0.0022633083]
+gra[10][5][3] = [0.0014574399, -8.756455E-4, 0.0, 0.00401499, 0.052477915, -0.017669976, -0.007751686, -0.00507246]
+gra[10][5][4] = [0.00145744, 0.0, 0.0, 0.0054343482, 0.052477915, -0.015334111, 0.0026334636, -0.0013942088]
+gra[10][5][5] = [-0.34957707, -0.10949644, -0.25939685, -0.18414588, -0.32099843, -0.27249756, -0.08553642, -0.17290878]
+gra[10][5][6] = [-0.013210811, -0.002885283, 0.001106434, 0.0, -0.015254037, 0.014614694, 0.0835998, -0.0038824668]
+gra[10][5][7] = [0.015030102, -0.0018251494, 0.0093385, 0.005368133, 0.043162428, -0.0019111116, -0.020885175, 4.886615E-13]
+gra[10][5][8] = [0.0050476207, -1.0503716E-10, -0.0036909212, -0.037708938, -0.018870585, 0.0292247, 0.06806866, 3.69642E-11]
+gra[10][5][9] = [0.022444844, -0.005951785, -0.019626053, 0.0013912377, -0.0061947796, -0.0074213073, 0.13643174, 4.9778556E-11]
+gra[10][5][10] = [-0.34957707, -0.10949644, -0.25939685, -0.18414588, -0.32099843, -0.27249756, -0.08553642, -0.17290878]
+gra[10][6][0] = [0.0019107888, 3.5459347E-11]
+gra[10][6][1] = [0.029803114, -0.018911218]
+gra[10][6][2] = [-5.509861E-4, 0.028633261]
+gra[10][6][3] = [6.034209E-11, 0.040264454]
+gra[10][6][4] = [6.034209E-11, 0.040264454]
+gra[10][6][5] = [4.487872E-11, 0.03214158]
+gra[10][6][6] = [-0.16041966, -0.3927623]
+gra[10][6][7] = [-0.01347043, 0.048356306]
+gra[10][6][8] = [-0.011656463, -0.054429226]
+gra[10][6][9] = [0.016295122, 0.0040693013]
+gra[10][6][10] = [-0.16041966, -0.3927623]
+gra[10][7][0] = [5.761308E-4, -0.0015712132, -0.003605175, 0.0, 3.5459347E-11, 0.0, -9.497553E-4, 3.0349702E-11]
+gra[10][7][1] = [0.043953314, -0.0010594062, -0.006211838, 0.0, -0.0140511, -0.028023608, -0.027011054, 0.0068521057]
+gra[10][7][2] = [0.0052266098, -0.0041114204, -7.2137534E-4, -0.0011517848, 0.033889554, -0.029917952, 0.00254313, -2.2155085E-11]
+gra[10][7][3] = [0.003145457, 0.0050532115, 0.008403905, -0.008065389, 0.050602682, -0.01798213, 0.0076085986, -0.0057618804]
+gra[10][7][4] = [0.0031454572, 0.0050532115, 0.008403905, -0.006179772, 0.050602682, -0.01798213, 0.0076085986, -0.00507246]
+gra[10][7][5] = [0.0031454572, 0.008180746, 0.008403905, -0.008065389, 0.050602682, -0.017407378, 0.009909841, -0.00507246]
+gra[10][7][6] = [0.0010625808, -4.1459492E-4, 0.0036949979, -0.0028234723, -0.0023392674, -0.0028964565, 0.0150217265, 0.003376759]
+gra[10][7][7] = [-0.16188312, -0.115403034, -0.205239, -0.1912697, -0.32055005, -0.10571001, -0.38804692, -0.14907216]
+gra[10][7][8] = [-0.008803545, -1.0503716E-10, -0.0010114949, -0.03954427, -0.025353342, 0.049163274, 0.017981954, 3.69642E-11]
+gra[10][7][9] = [0.0083061075, -0.004127358, -0.03981907, 0.0013912377, -0.015796406, 0.08416972, -0.006380614, 7.39957E-11]
+gra[10][7][10] = [-0.16188312, -0.115403034, -0.205239, -0.1912697, -0.32055005, -0.10571001, -0.38804692, -0.14907216]
+gra[10][8][0] = [0.0076038064, 0.0, -0.0021720084, 0.0]
+gra[10][8][1] = [0.04922101, -9.987416E-4, 0.002922766, 0.007726843]
+gra[10][8][2] = [0.04503881, -0.011413654, 0.004687597, 1.9001073E-11]
+gra[10][8][3] = [0.045896675, -0.010692279, 0.0037861012, -0.00507246]
+gra[10][8][4] = [0.058333617, -0.010692279, 0.0037861012, -0.00507246]
+gra[10][8][5] = [0.053201366, -0.010692279, 0.0037861012, -0.00507246]
+gra[10][8][6] = [-0.007944579, -0.0022261534, -0.010934131, -0.024378616]
+gra[10][8][7] = [0.027071448, -0.010692279, 0.006007472, -0.0045456644]
+gra[10][8][8] = [-0.23839745, -0.27353147, -0.13540275, -0.1630716]
+gra[10][8][9] = [0.045568958, 0.009596035, -0.022897031, -0.016538091]
+gra[10][8][10] = [-0.23839745, -0.27353147, -0.13540275, -0.1630716]
+gra[10][9][0] = [5.761308E-4, -5.123068E-4, 0.0072497693, 0.0, 3.5459347E-11, -0.0018813149, 0.0, 3.0349702E-11]
+gra[10][9][1] = [0.042927664, -0.0029176604, -0.006211838, 0.0, -0.014741326, -0.019474655, -0.004241555, -8.7473745E-4]
+gra[10][9][2] = [0.0043670787, -0.0020977946, -7.2137534E-4, -0.0011517848, 0.034133404, -0.019950185, -0.022405695, -0.0022633083]
+gra[10][9][3] = [0.0014574399, 0.0, 0.0010881305, 0.0, 0.051389784, -0.017669974, -0.018819861, -0.00507246]
+gra[10][9][4] = [0.00145744, 0.0, 0.0010881305, 0.0018856167, 0.051389784, -0.017669974, -0.018819861, -0.00507246]
+gra[10][9][5] = [0.00145744, -4.5008247E-4, 0.0010881305, -3.2877305E-12, 0.051389784, -0.016166661, -0.016518619, -0.00507246]
+gra[10][9][6] = [-0.0021946991, 0.0, 0.0010157842, -0.0018918649, -0.0012785172, -0.004598216, 7.150832E-4, -0.0025067397]
+gra[10][9][7] = [0.0039554364, -0.0011536116, -8.487664E-4, 0.041617688, 0.03015891, -0.020984316, -0.006567695, -0.0022633083]
+gra[10][9][8] = [0.024523886, 0.0, -0.0020706127, -9.234166E-4, -0.0130427005, -0.0047317725, -0.02894469, -0.0021502178]
+gra[10][9][9] = [-0.1832146, -0.103708565, -0.18610916, -0.15677848, -0.16264665, -0.23057386, -0.3202236, -0.170793]
+gra[10][9][10] = [-0.1832146, -0.103708565, -0.18610916, -0.15677848, -0.16264665, -0.23057386, -0.3202236, -0.170793]
+gra[10][11][10] = [-0.26761565, -0.14027157, -0.13171935, -0.124156564, -0.10518143, -0.16079436, -0.2556547, -0.0296514]
+gra[10][11][11] = [-0.26761565, -0.14027157, -0.13171935, -0.124156564, -0.10518143, -0.16079436, -0.2556547, -0.0296514]
+gra[10][11][12] = [0.008379771, -0.058434255, 0.03282719, -0.026505746, 0.037004553, 0.071838595, 0.009776115, -0.022090515]
+gra[10][11][13] = [0.015646577, -0.048322476, 0.087542325, -0.033848234, 0.075140424, 0.02229148, 0.043451987, -0.07398519]
+gra[10][11][14] = [0.03841678, 0.0666777, 0.007093721, -0.049995307, -0.029425904, 0.01705503, 0.02315872, -0.0044668466]
+gra[10][12][10] = [-0.3153644, -0.17907926, -0.2795965, -0.1764041, -0.25483686, -0.26501107, -0.29615897, -0.1761473]
+gra[10][12][11] = [0.021941906, -0.008812627, -0.022413656, -0.032252528, 0.04717913, -0.0048893415, -0.0111137815, -0.01108202]
+gra[10][12][12] = [-0.3153644, -0.17907926, -0.2795965, -0.1764041, -0.25483686, -0.26501107, -0.29615897, -0.1761473]
+gra[10][12][13] = [0.03465397, 0.09053512, 0.070818484, -0.04267802, 0.061774462, -0.023255207, -0.034763303, -0.06168799]
+gra[10][12][14] = [0.023088023, 0.07583694, -0.006512917, -0.050077446, -0.013676573, 0.015877765, 0.017984802, 0.003852799]
+gra[10][13][10] = [-0.26699868, -0.17984349, -0.26132643, -0.08672568, -0.21775608, -0.21154135, -0.2510417, -0.2465411]
+gra[10][13][11] = [0.026880646, -0.007880481, 0.0059093176, -0.032035075, 0.0749675, -0.019367468, -0.025300737, -0.0133296205]
+gra[10][13][12] = [0.03448535, -0.0041715456, 0.028034342, -0.05057187, 0.053446256, 0.008786059, -0.033961922, -0.016927706]
+gra[10][13][13] = [-0.26699868, -0.17984349, -0.26132643, -0.08672568, -0.21775608, -0.21154135, -0.2510417, -0.2465411]
+gra[10][13][14] = [0.014584247, 0.035479832, -4.2649265E-4, -0.046772767, -0.08912952, -0.008224874, 0.024729319, -0.006639992]
+gra[10][14][10] = [0.24545878, -0.13058239, -0.012254239, -0.43756452]
+gra[10][14][11] = [-0.036215328, -0.022168951, -9.78672E-4, -0.020904908]
+gra[10][14][12] = [-0.05016438, -0.018123059, -0.0023689207, -0.024299968]
+gra[10][14][13] = [-0.033437256, -0.018123059, -9.786718E-4, -0.0047152033]
+gra[10][14][14] = [0.24545878, -0.13058239, -0.012254239, -0.43756452]
+gra[11][0][0] = [-0.12389924]
+gra[11][0][1] = [0.11250799]
+gra[11][0][2] = [-0.020803642]
+gra[11][0][3] = [-0.015740056]
+gra[11][0][4] = [-0.015740056]
+gra[11][0][5] = [0.009709348]
+gra[11][0][6] = [-0.011211409]
+gra[11][0][7] = [0.0140898395]
+gra[11][0][8] = [0.10553579]
+gra[11][0][9] = [0.004992515]
+gra[11][0][10] = [0.06241366]
+gra[11][0][11] = [-0.12389924]
+gra[11][1][0] = [0.0022879262, -0.001958814, 6.207379E-4, 4.4457944E-11, -0.0021720084, 9.538275E-4]
+gra[11][1][1] = [-0.0980223, -0.1556874, -0.17940705, -0.191914, -0.15800656, -0.2076993]
+gra[11][1][2] = [0.070815764, -0.04019269, 0.061212253, -0.021304604, -0.008943601, -0.046964385]
+gra[11][1][3] = [0.03480445, -0.040399235, 0.009230967, -0.019397447, -0.010305206, -0.06565809]
+gra[11][1][4] = [0.043829545, -0.040399235, 0.016051337, -0.019397447, -0.010305206, -0.065682895]
+gra[11][1][5] = [0.048783593, -0.030501723, 0.049452126, -0.014411522, -0.010305206, -0.062384807]
+gra[11][1][6] = [-0.011211409, -0.0024341857, -0.0018631071, -0.018473925, 0.002059937, -0.002325139]
+gra[11][1][7] = [0.098927535, -0.030079987, 0.05705068, -0.027755124, -0.0062002833, -0.072541356]
+gra[11][1][8] = [0.112763375, -3.4384023E-11, -0.029062023, -0.009225717, -0.003922395, -0.0036619226]
+gra[11][1][9] = [0.074122116, -0.03479038, 0.0171996, -0.019397447, -0.007929913, -0.04117297]
+gra[11][1][10] = [0.070592314, 0.05356895, 0.025417577, 0.0056302026, 0.005816114, -0.03663111]
+gra[11][1][11] = [-0.0980223, -0.1556874, -0.17940705, -0.191914, -0.15800656, -0.2076993]
+gra[11][2][0] = [-3.8481143E-5, 0.0, 6.4378086E-4, 0.0042653317, -0.00452922, 0.0031306578, 2.969677E-4, -0.0035838732, 0.0012653338, 0.004467465, -0.008016303]
+gra[11][2][1] = [0.030020196, -3.7906157E-11, -0.047747806, -0.0041412255, -0.02294093, -0.0028272104, -0.0042415615, 0.035186574, 0.0038279954, 0.0010309231, -0.03033242]
+gra[11][2][2] = [-0.16756175, -0.15805623, -0.17044538, -0.14639679, -0.26190105, -0.1729358, -0.2613429, -0.26960972, -0.21621762, -0.14156401, -0.25597513]
+gra[11][2][3] = [-0.0045980383, -0.027203228, -0.05041236, 0.0087688975, -0.02118981, 0.0, 0.0055504087, -0.00686435, -0.0013193127, 0.0010214404, -0.13410753]
+gra[11][2][4] = [-0.008624356, -0.031413544, -0.05190116, 0.011287816, -0.0015978473, -0.0016386209, 0.00510925, -0.009859847, -0.0013193127, 0.009945178, -0.16727719]
+gra[11][2][5] = [-0.016839283, -0.027814709, -0.045556985, 0.01080478, 0.008764084, 0.0049859243, 0.024772864, -0.014020145, -0.0065963734, 0.0048753386, -0.160696]
+gra[11][2][6] = [0.010826467, -0.005398127, -0.042189464, -0.009502113, 0.020070488, -0.015343344, -0.007742171, -0.015615815, 0.0, -2.2300222E-11, -0.08992048]
+gra[11][2][7] = [-0.0058104573, -0.022992909, -0.0093545215, 0.011303109, 0.029116679, -0.0013196387, 0.022071034, 0.008007627, -0.009063331, 9.1650593E-4, -0.16666228]
+gra[11][2][8] = [0.0028593205, -0.033843383, 0.10937937, -0.0012483946, 0.045643046, -0.007926542, -0.049703237, -0.029244697, 0.002475134, 8.743692E-4, -0.048316423]
+gra[11][2][9] = [-0.008840187, -0.028816238, -0.04115401, 0.004407729, 0.06700909, -6.163665E-11, 0.03132334, -0.008266031, -0.0051215123, 9.1650593E-4, -0.14523569]
+gra[11][2][10] = [-0.012713343, 0.06271266, 0.03047761, -0.0023483417, 0.085967824, 0.013169683, 7.657199E-4, -0.039369643, 0.0349213, 0.0033671232, -0.056439284]
+gra[11][2][11] = [-0.16756175, -0.15805623, -0.17044538, -0.14639679, -0.26190105, -0.1729358, -0.2613429, -0.26960972, -0.21621762, -0.14156401, -0.25597513]
+gra[11][3][0] = [-3.8481143E-5, 0.0, -2.546208E-4, 6.207379E-4, 0.0, 0.0031306578, 2.969677E-4, -0.0035838732, 0.0012653338, 0.0020189893, -0.0059786467]
+gra[11][3][1] = [0.030020196, 0.0, -0.0709532, -0.010353064, -0.04391478, -0.004779683, -0.03789397, 0.079702035, 0.0038279954, -0.0024918886, -0.076348856]
+gra[11][3][2] = [-0.010050564, -0.020074947, -0.09627534, 0.0, -0.025120389, -0.010792062, -0.009571605, 0.0045674103, -0.005357419, 0.004071039, -0.049354907]
+gra[11][3][3] = [-0.17200947, -0.19767262, -0.25528848, -0.20228212, -0.3577328, -0.19228561, -0.21679747, -0.40292573, -0.21605387, -0.17789312, -0.2651151]
+gra[11][3][4] = [-0.0076634865, -0.027203228, -0.007962941, 0.017747963, -0.030055411, -0.0016386209, -0.02221351, -0.0063553033, -0.004338989, 0.0031181932, 0.045642]
+gra[11][3][5] = [-0.016839283, -0.027814709, -0.0020009093, 0.017264927, 0.008308632, 0.0049859243, -0.0017681323, -0.012113207, -0.01052086, 0.0031181932, 0.036681686]
+gra[11][3][6] = [-9.563443E-4, -0.00329998, -0.030258507, -0.0057468074, 0.0146678975, -0.018335417, -0.0016823349, -0.010240156, 0.0017409262, 8.040292E-12, -0.0677805]
+gra[11][3][7] = [-0.007663487, -0.022992909, 0.002025697, 0.014275422, 0.006037254, -0.0013196387, -0.00424268, 0.011656271, -0.011340797, 0.0031181932, 0.021348575]
+gra[11][3][8] = [0.0, -0.028557673, 0.111348465, -0.0012483946, 0.043581713, -0.007926542, -0.057652134, -0.008132312, 0.002475134, 2.4045661E-11, -0.08010083]
+gra[11][3][9] = [-0.008840187, -0.027703306, -0.01734548, 0.008724481, 0.019094173, 3.0514854E-4, -0.008290166, 0.013094053, -0.0051215123, 0.007877499, 0.033490654]
+gra[11][3][10] = [-0.012713343, 0.055398878, 0.024536688, -0.0044680266, 0.016944142, 0.01225795, 0.009501182, -0.013563797, 0.0349213, -1.8246614E-11, 8.919211E-4]
+gra[11][3][11] = [-0.17200947, -0.19767262, -0.25528848, -0.20228212, -0.3577328, -0.19228561, -0.21679747, -0.40292573, -0.21605387, -0.17789312, -0.2651151]
+gra[11][4][0] = [-3.8481143E-5, 0.0, 0.002269707, 6.207379E-4, 0.0, 0.0031306578, 2.969677E-4, -0.0035838732, 0.0012653338, 0.004467465, -0.0059786467]
+gra[11][4][1] = [0.030020196, 0.0, -0.0709532, -0.010353064, -0.04391478, -0.004779683, -0.03789397, 0.079702035, 0.0038279954, -0.0024918886, -0.076348856]
+gra[11][4][2] = [-0.010050564, -0.020074947, -0.11560663, 0.0, -0.027456252, -0.014940629, -0.009571605, 0.007836706, -0.0046069673, 0.0031174747, -0.05364394]
+gra[11][4][3] = [-0.013581293, -0.023612332, -0.12310233, 0.0, -0.01927166, -0.008297132, -0.0065214084, -2.5217576E-4, -0.009064015, 0.0025277506, -0.040145326]
+gra[11][4][4] = [-0.16979279, -0.20000182, -0.25528848, -0.20228212, -0.3577328, -0.19228561, -0.21053797, -0.39981967, -0.21605387, -0.17789312, -0.3072443]
+gra[11][4][5] = [-0.016839283, -0.02360439, -0.0024904609, 0.017264927, -0.012885826, 0.0019459366, -0.0053175483, -0.010515601, -0.008362633, 0.002235441, 0.05048409]
+gra[11][4][6] = [1.1364407E-11, -0.004874793, -0.030258507, -0.0070572207, 0.0146678975, -0.018335417, -0.0016823349, -0.010240156, 0.0, -0.0012154061, -0.06982803]
+gra[11][4][7] = [-0.007663487, -0.022992909, 0.002025697, 0.014275422, 0.0065385774, -0.0013196387, -0.00424268, 0.011656271, -0.011340797, 0.0035397436, 0.017222213]
+gra[11][4][8] = [-0.0030642115, -0.028557673, 0.111348465, -0.0012483946, 0.043581713, -0.007926542, -0.057652134, -0.008132312, 0.0024751339, -5.004493E-4, -0.08010083]
+gra[11][4][9] = [-0.008840187, -0.027703306, -0.01734548, 0.008724481, 0.020301398, 0.0, -0.008290166, 0.013094053, -0.0051215123, 0.00829905, 0.029364292]
+gra[11][4][10] = [-0.009854687, 0.055398878, 0.024536688, -0.0067656627, 0.016944142, 0.01225795, 0.007954158, -0.013563797, 0.0349213, -1.8246614E-11, -0.0039156247]
+gra[11][4][11] = [-0.16979279, -0.20000182, -0.25528848, -0.20228212, -0.3577328, -0.19228561, -0.21053797, -0.39981967, -0.21605387, -0.17789312, -0.3072443]
+gra[11][5][0] = [-3.8481143E-5, -0.0019296022, 0.002269707, -7.5689424E-4, 0.0, -0.0023391629, 2.969678E-4, -0.0035838732, 0.0012653338, 0.004467465, -0.0059786467]
+gra[11][5][1] = [0.030020196, 0.0, -0.07765716, -0.010353064, -0.035776734, -0.004779683, -0.03315192, 0.079702035, 0.0038279954, -0.0024918886, -0.08752008]
+gra[11][5][2] = [-0.010050564, -0.020074947, -0.11632947, 0.0, -0.022061262, -0.014940629, -0.009571605, 0.004819586, -0.005357419, 0.004071039, -0.045673024]
+gra[11][5][3] = [-0.013603179, -0.023146072, -0.1193105, 0.0, -0.016212534, -0.012445698, -0.0065214084, -2.5217576E-4, -0.009064015, 0.004071039, -0.036929708]
+gra[11][5][4] = [-0.011138814, -0.024628043, -0.124958254, 0.0, -0.013876671, -0.006897951, -0.0065214084, 0.0022252216, -0.009064015, 0.004071039, -0.0337255]
+gra[11][5][5] = [-0.16979279, -0.19329701, -0.26871237, -0.17054062, -0.29517272, -0.19228561, -0.20988953, -0.3716687, -0.21605387, -0.17789312, -0.2935722]
+gra[11][5][6] = [-6.359549E-4, -0.00329998, -0.029067473, -0.0057468074, 0.0146678975, -0.018335417, -7.880372E-4, -0.013210811, 0.0011668268, 3.0340515E-11, -0.06581834]
+gra[11][5][7] = [-0.007663487, -0.022992909, 0.0034457669, 0.014275422, -2.6907446E-4, -0.0037362042, -0.003336246, 0.011656271, -0.011340797, 0.0035397436, 0.004515754]
+gra[11][5][8] = [0.0, -0.021353321, 0.111348465, -0.0012483946, 0.030117506, -0.007926542, -0.06296009, 9.024069E-4, 0.002475134, 2.4045661E-11, -0.10057392]
+gra[11][5][9] = [-0.008840187, -0.027703306, -0.015925407, 0.02083089, 0.00789333, 0.0, -0.00805038, 0.013094053, -0.0051215123, 0.00829905, 0.025783729]
+gra[11][5][10] = [-0.012713343, 0.055398878, 0.024536688, -0.0067656627, 0.014414227, 0.007067173, 0.0078884885, -0.013563797, 0.0349213, -1.8246614E-11, 0.0035325633]
+gra[11][5][11] = [-0.16979279, -0.19329701, -0.26871237, -0.17054062, -0.29517272, -0.19228561, -0.20988953, -0.3716687, -0.21605387, -0.17789312, -0.2935722]
+gra[11][6][0] = [6.4378086E-4, -1.1624451E-11]
+gra[11][6][1] = [-0.071286656, 0.030801235]
+gra[11][6][2] = [-0.1217342, 0.0070741083]
+gra[11][6][3] = [-0.13029547, 0.0013777877]
+gra[11][6][4] = [-0.13029547, -0.0012991808]
+gra[11][6][5] = [-0.1440661, -0.0012286699]
+gra[11][6][6] = [-0.40509716, -0.22688024]
+gra[11][6][7] = [0.0058593405, -0.016482558]
+gra[11][6][8] = [0.084555104, -0.004157832]
+gra[11][6][9] = [-0.007966436, 0.011194]
+gra[11][6][10] = [0.06020448, -0.0011195537]
+gra[11][6][11] = [-0.40509716, -0.22688024]
+gra[11][7][0] = [-3.8481143E-5, 0.0, 6.4378086E-4, -0.0029844372, 0.0, 7.4807646E-11, 2.969678E-4, -0.0035838732, 0.0012653338, 0.004467465, -0.004436887]
+gra[11][7][1] = [0.030020196, 0.0, -0.06642654, -0.006211838, -0.02472724, -0.004779683, -0.009418331, 0.043953314, 0.005423102, 1.7403252E-4, -0.06141561]
+gra[11][7][2] = [-0.012064191, -0.020074947, -0.11770639, 0.0, -0.02700362, -0.01267732, -0.009571605, 0.0052266098, -0.007392783, 0.0015191694, -0.035501458]
+gra[11][7][3] = [-0.0076743215, -0.035226453, -0.12118573, 0.008403905, -0.016524691, -0.013135118, -0.0065214084, 0.0014358414, -0.009064015, 0.0015191694, -0.0239101]
+gra[11][7][4] = [-0.0060856016, -0.036242165, -0.12118573, 0.008403905, -0.016524691, -0.014724767, -0.0065214084, 0.0039132386, -0.009064015, 0.0015191694, -0.0239101]
+gra[11][7][5] = [-0.0029837268, -0.035226453, -0.13455348, 0.008403905, -0.017453253, -0.008297132, -0.009280194, 0.0016880172, -0.009064015, 0.005695792, -0.025141122]
+gra[11][7][6] = [-0.0015405889, -0.0022070524, -0.06335769, 0.0047623203, 0.0, 0.003376759, 0.0, 0.005881849, -6.80316E-4, 0.0021720878, -0.011135231]
+gra[11][7][7] = [-0.17569938, -0.20042084, -0.26826409, -0.1163828, -0.12838514, -0.16844898, -0.2518397, -0.1839747, -0.23677793, -0.15902653, -0.32666808]
+gra[11][7][8] = [0.0, -0.023188654, 0.110703185, 0.0014310319, 0.050056085, -0.007926542, -0.06307818, -0.012948758, 0.0024751343, 2.4045661E-11, -0.09486357]
+gra[11][7][9] = [-0.009591804, -0.027703306, -0.025527036, 6.3787866E-4, 0.09388393, 2.4217142E-11, 0.048461273, -0.0010446829, -0.0051215123, 0.0059014526, -0.068173446]
+gra[11][7][10] = [-0.017215462, 0.05885046, 0.053072125, -0.0054148408, 0.07146499, 0.004019258, 0.012924673, -0.018397888, 0.02149223, -0.0018405669, -0.0021806522]
+gra[11][7][11] = [-0.17569938, -0.20042084, -0.26826409, -0.1163828, -0.12838514, -0.16844898, -0.2518397, -0.1839747, -0.23677793, -0.15902653, -0.32666808]
+gra[11][8][0] = [0.008247588, -0.0055409744, 6.207379E-4, 4.4457944E-11, -0.0021720084, 9.538275E-4]
+gra[11][8][1] = [-0.003154425, 0.0, -9.987416E-4, -0.0039049454, 0.005938728, 0.029147219]
+gra[11][8][2] = [-0.10532865, -0.020074947, -0.010692279, -0.01267732, 0.006616043, -0.0041057393]
+gra[11][8][3] = [-0.12466324, -0.017386114, -0.010692279, -0.012445698, 0.0044185594, -0.009989234]
+gra[11][8][4] = [-0.1122263, -0.018401826, -0.010692279, -0.014724767, 0.0044185594, -0.009989234]
+gra[11][8][5] = [-0.13072634, -0.017386114, -0.010692279, -0.008297132, 0.0044185594, -0.009989234]
+gra[11][8][6] = [-0.07253664, -0.001275445, 0.0, -0.024378616, -0.0017974195, -0.0031688735]
+gra[11][8][7] = [-0.11197672, -0.030472117, -0.011541045, -0.008694231, 0.0066399304, -0.013961719]
+gra[11][8][8] = [-0.28742653, -0.13806987, -0.1985154, -0.18718107, -0.14203808, -0.16507426]
+gra[11][8][9] = [0.057564765, -0.03289177, 0.025465125, -0.016538091, -0.011358074, -0.04761328]
+gra[11][8][10] = [0.12816171, 0.050723344, 0.060807187, 0.0056302026, 0.018332137, -0.008218465]
+gra[11][8][11] = [-0.28742653, -0.13806987, -0.1985154, -0.18718107, -0.14203808, -0.16507426]
+gra[11][9][0] = [0.0010204252, 0.0, 6.4378086E-4, 0.0078705065, -0.0018813149, 7.4807646E-11, 2.969678E-4, -0.0035838732, 5.0569617E-4, 0.004467465, -0.0059786467]
+gra[11][9][1] = [0.028161941, 0.0, -0.06711676, -0.010353064, -0.0019592715, -0.004779683, -0.014528066, 0.042927664, 0.0038279954, -0.017432136, -0.0529898]
+gra[11][9][2] = [-0.010050564, -0.020074947, -0.11746254, 0.0, -0.018879909, -0.014940629, -0.0045123687, -0.0017202278, -0.005357419, 0.0067355065, -0.048507597]
+gra[11][9][3] = [-0.0127275335, -0.027161064, -0.120398626, 0.0010881304, -0.016212534, -0.012445698, -0.00331613, -2.5217576E-4, -0.009064015, 0.0067355065, -0.0414674]
+gra[11][9][4] = [-0.011138814, -0.028176775, -0.120398626, 0.0010881304, -0.016212534, -0.014724767, -0.00331613, 0.0022252216, -0.009064015, 0.0067355065, -0.0414674]
+gra[11][9][5] = [-0.0116145555, -0.027161064, -0.1337664, 0.0010881305, -0.011718331, -0.008297132, -0.00331613, 0.0, -0.009064015, 0.010838056, -0.04269842]
+gra[11][9][6] = [-0.001125994, -0.001275445, -0.06587058, 0.002083107, -0.0033310815, -0.0025067397, 0.0, 0.0067280075, 0.004428481, 0.0, -0.0050727697]
+gra[11][9][7] = [-0.016229458, 0.0032243507, -0.11327399, -0.0016975328, -0.020984316, -0.0064118747, -2.3427873E-4, 0.004819586, -0.0042669233, 0.006619178, -0.03747481]
+gra[11][9][8] = [-0.0030206593, -6.7004E-11, -0.06808654, -0.0041412255, 5.461057E-4, -0.0019524727, -0.005559218, 0.024523886, -1.2932688E-10, -0.012585728, -0.024195785]
+gra[11][9][9] = [-0.17914513, -0.15761071, -0.18235621, -0.111305825, -0.2861288, -0.19290504, -0.27690607, -0.2174945, -0.20727476, -0.15304866, -0.2752755]
+gra[11][9][10] = [-0.03073125, 0.055398878, 0.019012246, -0.004389991, 0.025585605, 0.006306789, 0.004576511, -0.026553776, 0.023517668, 0.0018559321, 0.0010926872]
+gra[11][9][11] = [-0.17914513, -0.15761071, -0.18235621, -0.111305825, -0.2861288, -0.19290504, -0.27690607, -0.2174945, -0.20727476, -0.15304866, -0.2752755]
+gra[11][10][0] = [0.002703113, 2.4087886E-4, 1.3065474E-10, 6.20738E-4, 0.005225119, 0.002607383, 5.579681E-4]
+gra[11][10][1] = [-0.0060856375, -0.004854968, -0.0039049454, 0.0, -0.022862324, -0.026488628, 0.00603679]
+gra[11][10][2] = [-0.12743556, -0.060402133, -0.015324981, -0.0019249346, -9.88245E-11, -0.009251966, -0.008425626]
+gra[11][10][3] = [-0.1443296, -0.047476254, -0.014137894, -0.0060540326, 0.0, -0.012429759, -0.0074963025]
+gra[11][10][4] = [-0.1443296, -0.048491962, -0.016416963, -0.009311951, 0.0, -0.012516822, -0.0059075826]
+gra[11][10][5] = [-0.15567769, -0.051322438, -0.009989329, -0.0060540326, 2.0781049E-10, -0.011479491, -0.004819333]
+gra[11][10][6] = [-0.05157347, -0.001275445, 0.0031626287, -8.813711E-12, -0.011463992, -0.0019164708, -0.001125994]
+gra[11][10][7] = [-0.13018884, -0.0692743, -0.005840762, -0.004201497, -0.0015797014, -0.0077053998, -0.012563205]
+gra[11][10][8] = [-0.05328215, -6.7004E-11, -0.0039049454, 0.0011713473, -0.011135569, -0.020431118, 0.0]
+gra[11][10][9] = [-0.13123956, -0.046941087, -0.019473545, -0.0025065367, 6.714482E-4, -0.009728871, -0.009844616]
+gra[11][10][10] = [-0.003632035, -0.03903123, -0.12923068, -0.17222962, -0.2806601, -0.24402468, -0.1653744]
+gra[11][10][11] = [-0.003632035, -0.03903123, -0.12923068, -0.17222962, -0.2806601, -0.24402468, -0.1653744]
+gra[11][12][11] = [-0.100144096, -0.09158604, 0.0055445293, -0.11755938, -0.16096544, -0.10694665, -0.3415111, -0.27591932, -0.08365657, -0.10801351, -0.113322936]
+gra[11][12][12] = [-0.100144096, -0.09158604, 0.0055445293, -0.11755938, -0.16096544, -0.10694665, -0.3415111, -0.27591932, -0.08365657, -0.10801351, -0.113322936]
+gra[11][12][13] = [0.056215376, -0.01025449, 0.11834774, 0.07818649, -0.021850904, -0.089146726, -0.006384445, 0.068023905, -0.0016438005, 0.0012229871, -0.0060240654]
+gra[11][12][14] = [0.07236886, 0.05657126, -0.059863858, 0.0061641093, 0.019986097, 0.03692759, 0.120455004, 0.0302211, 9.96112E-11, -2.2505768E-11, -0.06410605]
+gra[11][13][11] = [-0.22570372, -0.14725454, -0.08456526, -0.24363197, -0.23292705, -0.24921647, -0.31250927, -0.29759613, -0.10658293, -0.13203514, -0.21545014]
+gra[11][13][12] = [0.021744007, 0.03055122, 0.16523585, 0.059659015, 0.00602818, -0.030682772, 0.0113601005, 0.038531862, -1.4217425E-4, -0.004681904, -0.00916585]
+gra[11][13][13] = [-0.22570372, -0.14725454, -0.08456526, -0.24363197, -0.23292705, -0.24921647, -0.31250927, -0.29759613, -0.10658293, -0.13203514, -0.21545014]
+gra[11][13][14] = [0.040641047, 0.060274042, -0.101044156, 0.018038081, -0.0021256413, 0.021744264, 0.08580291, 0.011856999, 9.96112E-11, -0.0013691243, -0.067090854]
+gra[11][14][11] = [0.46145654, -0.37053853, -0.2827138, -0.120763496, -0.23904912, -0.11392724, -0.24430634, -0.15843105]
+gra[11][14][12] = [-0.04333491, 0.09871555, 0.08215656, 0.070761316, -0.027274026, -0.0064464738, 0.03838419, -0.039588906]
+gra[11][14][13] = [-0.042344883, 0.027202541, 0.02599654, 0.071606465, -0.024843121, -0.008798459, 0.05347822, -0.042369526]
+gra[11][14][14] = [0.46145654, -0.37053853, -0.2827138, -0.120763496, -0.23904912, -0.11392724, -0.24430634, -0.15843105]
+gra[12][0][0] = [-0.10515191]
+gra[12][0][1] = [0.13606499]
+gra[12][0][2] = [-0.0035667932]
+gra[12][0][3] = [0.005201453]
+gra[12][0][4] = [0.005201453]
+gra[12][0][5] = [0.02007929]
+gra[12][0][6] = [-0.010218365]
+gra[12][0][7] = [0.03649012]
+gra[12][0][8] = [0.062039126]
+gra[12][0][9] = [-0.028238326]
+gra[12][0][10] = [0.052713778]
+gra[12][0][11] = [-0.039478898]
+gra[12][0][12] = [-0.10515191]
+gra[12][1][0] = [0.0022879262, -0.001958814, 6.20738E-4, 4.4457944E-11, -0.0021720084, 9.538275E-4]
+gra[12][1][1] = [-0.07858301, -0.17721513, -0.19805442, -0.17806304, -0.16245575, -0.20236821]
+gra[12][1][2] = [0.088052616, -0.04784693, 0.019412948, -0.026443, -0.0077710547, -0.046964385]
+gra[12][1][3] = [0.055745967, -0.050158635, -0.01847103, -0.019397447, -0.00913266, -0.06744409]
+gra[12][1][4] = [0.064771056, -0.050158635, -0.011650659, -0.019397447, -0.00913266, -0.0674689]
+gra[12][1][5] = [0.059153542, -0.03625734, 0.019686403, -0.019397447, -0.00913266, -0.051904615]
+gra[12][1][6] = [-0.010218365, -0.0024341857, 0.0038837004, -0.016613597, 0.002059937, -0.003209465]
+gra[12][1][7] = [0.12132782, -0.03562906, 0.010628009, -0.027755124, -0.005027737, -0.072541356]
+gra[12][1][8] = [0.06926671, 3.8416823E-5, -0.033108108, -0.019686462, -8.5449056E-4, -0.0036619226]
+gra[12][1][9] = [0.040891282, -0.03618892, -0.022440419, -0.019397447, -0.007967199, -0.046652183]
+gra[12][1][10] = [0.07534326, 0.06808784, 0.04575908, -0.0033964338, 0.005816114, -0.03659642]
+gra[12][1][11] = [0.049664095, -0.032417957, 0.040280573, -0.025225509, -0.026482048, -0.044036984]
+gra[12][1][12] = [-0.07858301, -0.17721513, -0.19805442, -0.17806304, -0.16245575, -0.20236821]
+gra[12][2][0] = [-3.8481143E-5, 0.0, 6.4378075E-4, 0.0042653317, -0.009577542, 0.0031306578, 2.969677E-4, 1.1202662E-4, -6.5726263E-4, 0.0015309223, -0.008016303]
+gra[12][2][1] = [-5.13921E-4, -3.7906157E-11, -0.051293716, -0.0041412255, -0.020474708, -0.0028272104, -0.0042415615, 0.035186574, 0.0019214812, 0.0035228117, -0.034274463]
+gra[12][2][2] = [-0.1648293, -0.17958395, -0.15100609, -0.16504414, -0.26511794, -0.15908478, -0.27147496, -0.28317097, -0.20314461, -0.13655183, -0.25064403]
+gra[12][2][3] = [-0.0016788694, -0.03485746, -0.029470855, -0.018933097, -0.02044635, 0.0, 0.0066471035, -0.0063043977, -0.002073156, -0.0052225264, -0.13589352]
+gra[12][2][4] = [-0.0057051876, -0.041172937, -0.030959653, -0.016414179, -8.543874E-4, -0.0016386209, 0.008664845, -0.009299895, -0.002073156, 0.003701211, -0.16906321]
+gra[12][2][5] = [-0.004744318, -0.033570327, -0.035187043, -0.018960936, 0.009507546, 0.0, 0.01801002, -0.013460195, -0.0052353498, -0.0013686286, -0.1502158]
+gra[12][2][6] = [0.010826467, -0.005398127, -0.04119642, -0.003755305, 0.019529367, -0.013483018, -0.007742171, -0.016999522, 0.0, 0.0028889112, -0.09080481]
+gra[12][2][7] = [-0.002891289, -0.028541982, 0.013045758, -0.03511956, 0.029860139, -0.0013196387, 0.024343483, 0.006281326, -0.0067974986, -0.0050971014, -0.16666228]
+gra[12][2][8] = [0.0028593205, -0.033804964, 0.065882705, -0.0052944794, 0.045643046, -0.018387286, -0.05146163, -0.029244697, 0.002475134, 8.743692E-4, -0.048316423]
+gra[12][2][9] = [-0.006218316, -0.030214773, -0.074384846, -0.035232294, 0.06821702, -6.163665E-11, 0.031392615, -0.0077060787, -0.0028556797, -0.0053274613, -0.1507149]
+gra[12][2][10] = [-0.023877224, 0.07723155, 0.025044672, 0.017511534, 0.088458255, 0.004143046, 0.0061719525, -0.040925086, 0.024282468, 0.0033671234, -0.073608294]
+gra[12][2][11] = [-0.004744318, -0.025330877, -0.10397213, -0.023069104, 0.08292447, 0.0076809367, 0.025465066, 0.0034794435, -0.0033134911, -0.008031685, -0.09042414]
+gra[12][2][12] = [-0.1648293, -0.17958395, -0.15100609, -0.16504414, -0.26511794, -0.15908478, -0.27147496, -0.28317097, -0.20314461, -0.13655183, -0.25064403]
+gra[12][3][0] = [-3.8481143E-5, 0.0, -2.546209E-4, 6.20738E-4, -0.0050483216, 0.0031306578, 2.969677E-4, 1.1202659E-4, -6.5726263E-4, -9.175534E-4, -0.0059786467]
+gra[12][3][1] = [-5.13921E-4, 0.0, -0.0740106, -0.010353064, -0.04144856, -0.004779683, -0.03789397, 0.079702035, 0.0019214812, 0.0, -0.0802909]
+gra[12][3][2] = [-0.010050564, -0.027438035, -0.06738606, 0.0, -0.025120389, -0.015896093, -0.009571605, 0.0045674103, 0.0011093304, 0.00255187, -0.054485943]
+gra[12][3][3] = [-0.16927701, -0.21920037, -0.23584919, -0.22092949, -0.36094978, -0.17843461, -0.2269295, -0.41648698, -0.20298086, -0.17288092, -0.25978398]
+gra[12][3][4] = [-0.004744318, -0.03485746, 0.012978567, -0.009954032, -0.029311951, -0.0016386209, -0.018657913, -0.005795351, -0.0050928323, -0.0031257737, 0.043856]
+gra[12][3][5] = [-0.004744318, -0.033570327, 0.008369034, -0.012500789, 0.009052092, 0.0, -0.008530973, -0.011553255, -0.009159835, -0.0031257737, 0.04716188]
+gra[12][3][6] = [-9.563443E-4, -0.00329998, -0.029265463, 0.0, 0.014126777, -0.016475089, -0.0016823349, -0.011623862, 0.0017409262, 0.0028889112, -0.06866483]
+gra[12][3][7] = [-0.0047443183, -0.028541982, 0.024425976, -0.032147244, 0.006780714, -0.0013196387, -0.0019702304, 0.009929972, -0.009074964, -0.0028954144, 0.021348575]
+gra[12][3][8] = [0.0, -0.028519256, 0.06785178, -0.0052944794, 0.043581713, -0.018387286, -0.059410527, -0.008132312, 0.002475134, 2.4045661E-11, -0.08010083]
+gra[12][3][9] = [-0.006218316, -0.029101841, -0.05057632, -0.030915538, 0.020302098, 3.0514854E-4, -0.008220887, 0.013654005, -0.0028556797, 0.0016335323, 0.028011441]
+gra[12][3][10] = [-0.022339152, 0.06991776, 0.01910374, 0.015391848, 0.019434562, 0.0032313145, 0.014907414, -0.015119242, 0.024282468, 1.302987E-10, -0.01627709]
+gra[12][3][11] = [-0.0073551796, -0.025330877, -0.105846174, -0.032042608, 0.014669917, 0.0076809367, -0.017299226, 0.01757557, 1.450358E-4, -0.0010706913, 0.02720009]
+gra[12][3][12] = [-0.16927701, -0.21920037, -0.23584919, -0.22092949, -0.36094978, -0.17843461, -0.2269295, -0.41648698, -0.20298086, -0.17288092, -0.25978398]
+gra[12][4][0] = [-3.8481143E-5, 0.0, 0.002269707, 6.20738E-4, -0.0050483216, 0.0031306578, 2.969677E-4, 1.1202659E-4, -6.5726263E-4, 0.0015309223, -0.0059786467]
+gra[12][4][1] = [-5.13921E-4, 0.0, -0.0740106, -0.010353064, -0.04144856, -0.004779683, -0.03789397, 0.079702035, 0.0019214812, 0.0, -0.0802909]
+gra[12][4][2] = [-0.010050564, -0.027438035, -0.08671735, 0.0, -0.027456252, -0.02211894, -0.009571605, 0.007836706, 0.001859782, 0.0015983053, -0.05877498]
+gra[12][4][3] = [-0.013581293, -0.027913438, -0.10705456, 0.0, -0.01927166, -0.010371415, -0.0065214084, -2.5217576E-4, -0.0047528488, 0.0010085813, -0.038101066]
+gra[12][4][4] = [-0.16706033, -0.22152957, -0.23584919, -0.22092949, -0.36094978, -0.17843461, -0.22067, -0.41338092, -0.20298086, -0.17288092, -0.3019132]
+gra[12][4][5] = [-0.004744318, -0.02725485, 0.007879483, -0.012500789, -0.012142366, -0.0030399878, -0.01208039, -0.009955649, -0.0070016095, -0.004008526, 0.060964286]
+gra[12][4][6] = [1.1364407E-11, -0.004874793, -0.029265463, -0.0013104129, 0.014126777, -0.016475089, -0.0016823349, -0.011623862, 0.0, 0.0016735051, -0.07071236]
+gra[12][4][7] = [-0.0047443183, -0.028541982, 0.024425976, -0.032147244, 0.0072820373, -0.0013196387, -0.0019702304, 0.009929972, -0.009074964, -0.002473864, 0.017222213]
+gra[12][4][8] = [-0.0030642115, -0.028519256, 0.06785178, -0.0052944794, 0.043581713, -0.018387286, -0.059410527, -0.008132312, 0.0024751339, -5.004493E-4, -0.08010083]
+gra[12][4][9] = [-0.006218316, -0.029101841, -0.05057632, -0.030915538, 0.021509323, 0.0, -0.008220887, 0.013654005, -0.0028556797, 0.0020550827, 0.023885079]
+gra[12][4][10] = [-0.019480497, 0.06991776, 0.01910374, 0.013094213, 0.019434562, 0.0032313145, 0.01336039, -0.015119242, 0.024282468, 1.302987E-10, -0.021084636]
+gra[12][4][11] = [-0.0073551796, -0.025330877, -0.105846174, -0.032042608, 0.013415008, 0.0076809367, -0.017299226, 0.01757557, 1.450358E-4, 0.009044054, 0.023073727]
+gra[12][4][12] = [-0.16706033, -0.22152957, -0.23584919, -0.22092949, -0.36094978, -0.17843461, -0.22067, -0.41338092, -0.20298086, -0.17288092, -0.3019132]
+gra[12][5][0] = [-3.8481143E-5, -0.0019296022, 0.002269707, -7.568941E-4, -0.0050483216, -0.0023391629, 2.969678E-4, 1.1202659E-4, -6.5726263E-4, 0.0015309223, -0.0059786467]
+gra[12][5][1] = [-5.13921E-4, 0.0, -0.08071456, -0.010353064, -0.03331051, -0.004779683, -0.03315192, 0.079702035, 0.0019214812, 0.0, -0.09146212]
+gra[12][5][2] = [-0.010050564, -0.027438035, -0.08744019, 0.0, -0.022061262, -0.02211894, -0.009571605, 0.004819586, 0.0011093304, 0.00255187, -0.050804067]
+gra[12][5][3] = [-0.013603179, -0.027447177, -0.10326273, 0.0, -0.016212534, -0.016594263, -0.0065214084, -2.5217576E-4, -0.0047528488, 0.00255187, -0.034885447]
+gra[12][5][4] = [-0.011138814, -0.02892915, -0.10891048, 0.0, -0.013876671, -0.008972234, -0.0065214084, 0.0022252216, -0.0047528488, 0.00255187, -0.03272793]
+gra[12][5][5] = [-0.16706033, -0.21482477, -0.24927308, -0.18918799, -0.29838967, -0.17843461, -0.22002156, -0.38522995, -0.20298086, -0.17288092, -0.28824112]
+gra[12][5][6] = [-6.359549E-4, -0.00329998, -0.02807443, 0.0, 0.014126777, -0.016475089, -7.880372E-4, -0.013210811, 0.0011668268, 0.0028889112, -0.066702664]
+gra[12][5][7] = [-0.0047443183, -0.028541982, 0.025846047, -0.032147244, 4.7438545E-4, -0.0037362042, -0.0010637965, 0.009929972, -0.009074964, -0.002473864, 0.004515754]
+gra[12][5][8] = [0.0, -0.021314904, 0.06785178, -0.0052944794, 0.030117506, -0.018387286, -0.06471848, 9.024069E-4, 0.002475134, 2.4045661E-11, -0.10057392]
+gra[12][5][9] = [-0.006218316, -0.029101841, -0.04915625, -0.018809127, 0.009101256, 0.0, -0.007981101, 0.013654005, -0.0028556797, 0.0020550827, 0.020304516]
+gra[12][5][10] = [-0.022339152, 0.06991776, 0.01910374, 0.013094213, 0.016904647, -0.0019594636, 0.013294723, -0.015119242, 0.024282468, 0.0, -0.013636445]
+gra[12][5][11] = [-0.0073551796, -0.025330877, -0.10442609, -0.032042608, 0.011576987, 0.0076809367, -0.01705944, 0.01757557, 1.450358E-4, -0.0015840135, 0.010367265]
+gra[12][5][12] = [-0.16706033, -0.21482477, -0.24927308, -0.18918799, -0.29838967, -0.17843461, -0.22002156, -0.38522995, -0.20298086, -0.17288092, -0.28824112]
+gra[12][6][0] = [6.4378075E-4, 0.0]
+gra[12][6][1] = [-0.07434406, 0.030801235]
+gra[12][6][2] = [-0.092844926, 0.0]
+gra[12][6][3] = [-0.11424769, 0.0026769685]
+gra[12][6][4] = [-0.11424769, 0.0]
+gra[12][6][5] = [-0.12801832, -0.0012286699]
+gra[12][6][6] = [-0.3856579, -0.2287598]
+gra[12][6][7] = [0.02825962, -0.016482558]
+gra[12][6][8] = [0.041058443, -0.004157832]
+gra[12][6][9] = [-0.041197278, 0.011194]
+gra[12][6][10] = [0.050504595, -0.0011195537]
+gra[12][6][11] = [-0.055323012, -0.0022921383]
+gra[12][6][12] = [-0.3856579, -0.2287598]
+gra[12][7][0] = [-3.8481143E-5, 0.0, 6.4378075E-4, -0.0029844372, -0.0050483216, 7.4807646E-11, 2.969678E-4, 1.1202662E-4, -6.5726263E-4, 0.0015309223, -0.004436887]
+gra[12][7][1] = [-5.13921E-4, 0.0, -0.06948394, -0.006211838, -0.02226102, -0.004779683, -0.009418331, 0.043953314, 0.003516588, 0.002665921, -0.065357655]
+gra[12][7][2] = [-0.012064191, -0.027438035, -0.08881713, 0.0, -0.02700362, -0.019855632, -0.009571605, 0.0052266098, -9.260336E-4, 0.0, -0.0406325]
+gra[12][7][3] = [-0.0076743215, -0.039527558, -0.10513796, 0.008403905, -0.016524691, -0.017283684, -0.0065214084, 0.0014358414, -0.0047528488, 0.0, -0.02186584]
+gra[12][7][4] = [-0.0060856016, -0.04054327, -0.10513796, 0.008403905, -0.016524691, -0.018873332, -0.0065214084, 0.0039132386, -0.0047528488, 0.0, -0.02291253]
+gra[12][7][5] = [-0.0029837268, -0.039527558, -0.11648606, 0.008327524, -0.017453253, -0.010371415, -0.009280194, 0.0016880172, -0.0047528488, 0.0041766223, -0.023096858]
+gra[12][7][6] = [-0.0015405889, -9.316074E-4, -0.071566254, 0.0047623203, 0.0, 0.0029634302, 0.0, 0.0049496302, -6.80316E-4, 0.0021720878, -0.011135231]
+gra[12][7][7] = [-0.17296693, -0.2219486, -0.24882478, -0.13503015, -0.13160208, -0.15459797, -0.2619717, -0.19753595, -0.22370492, -0.15401436, -0.321337]
+gra[12][7][8] = [0.0, -0.023150237, 0.068436705, -0.002615053, 0.050056085, -0.018387286, -0.06659655, -0.012948758, 0.0024751343, 2.4045661E-11, -0.09486357]
+gra[12][7][9] = [-0.0069699325, -0.029101841, -0.05875787, -0.039002147, 0.095091864, 2.4217142E-11, 0.048530553, -4.8473087E-4, -0.0028556797, -3.4251437E-4, -0.073652655]
+gra[12][7][10] = [-0.028379343, 0.07336935, 0.047639176, 0.013497463, 0.07395541, -0.0050073783, 0.01256845, -0.019953335, 0.0108534, -0.0018405669, -0.019349663]
+gra[12][7][11] = [-0.0029198912, -0.025330877, -0.08893005, -0.032638032, 0.121397406, 0.0076809367, 0.033207543, -6.217086E-4, -0.004560237, -0.005408447, -0.07587983]
+gra[12][7][12] = [-0.17296693, -0.2219486, -0.24882478, -0.13503015, -0.13160208, -0.15459797, -0.2619717, -0.19753595, -0.22370492, -0.15401436, -0.321337]
+gra[12][8][0] = [0.008247588, -0.0055409744, 6.20738E-4, 4.4457944E-11, -0.0021720084, 9.538275E-4]
+gra[12][8][1] = [-0.006211823, 0.0, -9.987416E-4, -0.0039049454, 0.005938728, 0.025205178]
+gra[12][8][2] = [-0.07643938, -0.027438035, -0.010692279, -0.019855632, 0.006616043, -0.00923678]
+gra[12][8][3] = [-0.10861548, -0.021687219, -0.010692279, -0.016594263, 0.0044185594, -0.007944971]
+gra[12][8][4] = [-0.09617853, -0.02270293, -0.010692279, -0.018873332, 0.0044185594, -0.008991664]
+gra[12][8][5] = [-0.11265888, -0.021687219, -0.010768659, -0.010371415, 0.0044185594, -0.007944971]
+gra[12][8][6] = [-0.07895839, 0.0, 0.0, -0.024791945, -0.0017974195, -0.0031688735]
+gra[12][8][7] = [-0.08424463, -0.031116845, -0.011541045, -0.010768514, 0.0066399304, -0.011917457]
+gra[12][8][8] = [-0.26798728, -0.15959759, -0.21716277, -0.1733301, -0.14648728, -0.15974315]
+gra[12][8][9] = [0.024333926, -0.034290306, -0.01417489, -0.016538091, -0.01139536, -0.053092495]
+gra[12][8][10] = [0.13705663, 0.06524223, 0.0811487, -0.0033964338, 0.018332137, -0.008183777]
+gra[12][8][11] = [0.015939308, -0.030519342, 0.010764442, -0.016941465, -0.03548946, -0.054613106]
+gra[12][8][12] = [-0.26798728, -0.15959759, -0.21716277, -0.1733301, -0.14648728, -0.15974315]
+gra[12][9][0] = [0.0010204252, 0.0, 6.4378075E-4, 0.0078705065, -0.006929637, 7.4807646E-11, 2.969678E-4, 1.1202662E-4, -0.0014169003, 0.0015309223, -0.0059786467]
+gra[12][9][1] = [-0.002372175, 0.0, -0.070174165, -0.010353064, 5.069508E-4, -0.004779683, -0.014528066, 0.042927664, 0.0019214812, -0.014940248, -0.056931846]
+gra[12][9][2] = [-0.010050564, -0.027438035, -0.08857328, 0.0, -0.018879909, -0.02211894, -0.0045123687, -0.0017202278, 0.0011093304, 0.005216337, -0.05363864]
+gra[12][9][3] = [-0.0127275335, -0.03146217, -0.10435086, 0.0010881304, -0.016212534, -0.016594263, -0.00331613, -2.5217576E-4, -0.0047528488, 0.005216337, -0.039423138]
+gra[12][9][4] = [-0.011138814, -0.03247788, -0.10435086, 0.0010881304, -0.016212534, -0.018873332, -0.00331613, 0.0022252216, -0.0047528488, 0.005216337, -0.04046983]
+gra[12][9][5] = [-0.0116145555, -0.03146217, -0.115698956, 0.0010117503, -0.011718331, -0.010371415, -0.00331613, 0.0, -0.0047528488, 0.009318886, -0.040654156]
+gra[12][9][6] = [-0.001125994, 0.0, -0.07229233, 0.002083107, -0.0033310815, -0.0029200683, 0.0, 0.0057957885, 0.008363578, -4.639659E-12, -0.0050727697]
+gra[12][9][7] = [-0.0187421, 0.0025796203, -0.08554189, -0.0016975328, -0.020984316, -0.008486157, -2.3427873E-4, 0.004819586, 4.4242945E-5, 0.005100009, -0.035430547]
+gra[12][9][8] = [-0.0030206593, 0.0, -0.07876769, -0.0041412255, 0.0054565035, -0.0019524727, -0.005559218, 0.024523886, -1.2932688E-10, -0.012585728, -0.028795455]
+gra[12][9][9] = [-0.17641266, -0.17913842, -0.16291693, -0.12995316, -0.28934565, -0.17905404, -0.28703806, -0.23105575, -0.19420177, -0.1480365, -0.2699444]
+gra[12][9][10] = [-0.041895133, 0.06991776, 0.013579304, 0.015469885, 0.028076027, -0.0027198482, 0.009982745, -0.028109219, 0.012878839, 0.0018559321, -0.01863579]
+gra[12][9][11] = [-0.004744318, -0.025330877, -0.120270304, -0.019102708, 0.01950083, 0.0076809367, 0.030894147, 0.029762033, -0.0033134911, 0.0056220004, 0.05215506]
+gra[12][9][12] = [-0.17641266, -0.17913842, -0.16291693, -0.12995316, -0.28934565, -0.17905404, -0.28703806, -0.23105575, -0.19420177, -0.1480365, -0.2699444]
+gra[12][10][0] = [0.0027031128, 2.4087886E-4, 1.3065474E-10, 6.207381E-4, 0.005225119, 0.002607383, -0.0046446207]
+gra[12][10][1] = [-0.013131462, -0.004854968, -0.0039049454, 0.0, -0.022862324, -0.030430669, 0.0054494757]
+gra[12][10][2] = [-0.11364833, -0.06776521, -0.021547828, -0.0019249347, -9.88245E-11, -0.017155558, -0.009961104]
+gra[12][10][3] = [-0.14122392, -0.051777363, -0.01828646, -0.0060540326, 0.002196358, -0.013158046, -0.010008944]
+gra[12][10][4] = [-0.14122392, -0.05279307, -0.020565528, -0.009311951, 0.002196358, -0.014291802, -0.008420223]
+gra[12][10][5] = [-0.15257202, -0.055623546, -0.012063611, -0.006130413, 0.0031230266, -0.00943523, -0.0073319743]
+gra[12][10][6] = [-0.071703576, 0.0, 0.0027493, -8.813711E-12, -0.0057086376, -0.0019164708, -0.001125994]
+gra[12][10][7] = [-0.11488428, -0.069919035, -0.007915045, -0.004201497, 1.1974003E-4, -0.0056611383, -0.017588487]
+gra[12][10][8] = [-0.06480228, 8.0218556E-4, -0.0039049454, -8.114468E-4, -0.007725291, -0.025030788, 0.0015275365]
+gra[12][10][9] = [-0.12151261, -0.046710342, -0.023622112, -0.0025065367, 6.714482E-4, -0.007684609, -0.014869897]
+gra[12][10][10] = [-0.04098353, -0.09227586, -0.121592574, -0.23921865, -0.34364283, -0.350644, -0.17361926]
+gra[12][10][11] = [0.077353664, -0.025852533, 0.0019329089, -0.045883507, 0.004905568, 0.0060856706, -0.0054457206]
+gra[12][10][12] = [-0.04098353, -0.09227586, -0.121592574, -0.23921865, -0.34364283, -0.350644, -0.17361926]
+gra[12][11][0] = [-3.8481143E-5, 0.0, 6.4378075E-4, 6.20738E-4, -0.0041380986, 7.4807646E-11, 2.969678E-4, 0.0021298332, -3.908082E-4, 0.0015309223, -0.0059786467]
+gra[12][11][1] = [-0.002372175, -3.7906157E-11, -0.0620731, -0.006211838, -0.006399732, -0.004779683, -0.01145776, 0.049474724, 0.0019214812, -4.4388496E-11, -0.06600562]
+gra[12][11][2] = [-0.010050564, -0.025332876, -0.07972554, 0.0, -0.017035853, -0.017464971, -9.650856E-4, 0.004819586, 0.0011093304, 0.005216337, -0.049794633]
+gra[12][11][3] = [-0.0127275335, -0.029357009, -0.09755905, 0.0010881305, -0.013876671, -0.012445698, 2.311531E-4, -2.5217576E-4, -0.0047528488, 0.005216337, -0.035360437]
+gra[12][11][4] = [-0.011138814, -0.03037272, -0.09755905, 0.0010881305, -0.013876671, -0.014724767, 2.311531E-4, 0.0022252216, -0.0047528488, 0.005216337, -0.036407128]
+gra[12][11][5] = [-0.010050564, -0.029357009, -0.108907156, -0.0014421018, -0.013876671, -0.008297132, 2.311531E-4, -7.2720836E-6, -0.0047528488, 0.009392959, -0.036591455]
+gra[12][11][6] = [-0.001125994, 0.0, -0.06849815, 0.0031763045, -0.0016293218, -0.004313529, 0.0, 0.0049496302, 0.007193418, -4.639659E-12, -0.008332037]
+gra[12][11][7] = [-0.017588487, -0.026489059, -0.080878146, -0.0016975328, -0.018648453, -0.004148566, 0.0033130045, 0.004819586, 4.4242945E-5, 0.0065824687, -0.034891326]
+gra[12][11][8] = [-0.004225553, 0.0, -0.09060159, -0.0041412255, 0.010023229, -0.0039049454, -0.012820947, 0.042075388, -1.2932688E-10, -0.012585728, -0.047103584]
+gra[12][11][9] = [-0.013322491, -0.02378166, -0.07438753, 0.0010881305, -0.011540808, -0.021613538, 0.002787061, 0.0013000679, -0.0064115636, 0.00468833, -0.050671246]
+gra[12][11][10] = [-0.0053089955, -0.0055740727, 0.05267254, 0.008118987, 0.0011185199, 0.010369438, -0.033235624, -0.068654336, 5.1445976E-11, 0.0012886577, -0.041671593]
+gra[12][11][11] = [-0.16127247, -0.13955387, -0.076390915, -0.10867561, -0.12649849, -0.1822295, -0.2659423, -0.1655591, -0.20603198, -0.14757687, -0.22842984]
+gra[12][11][12] = [-0.16127247, -0.13955387, -0.076390915, -0.10867561, -0.12649849, -0.1822295, -0.2659423, -0.1655591, -0.20603198, -0.14757687, -0.22842984]
+gra[12][13][12] = [-0.0658199, 0.11616026, 0.005189496, -0.08350004, -0.103413984, -0.20297602, -0.2756635, -0.1898117, -0.0919149, -0.109432496, -0.1414069]
+gra[12][13][13] = [-0.0658199, 0.11616026, 0.005189496, -0.08350004, -0.103413984, -0.20297602, -0.2756635, -0.1898117, -0.0919149, -0.109432496, -0.1414069]
+gra[12][13][14] = [-0.03055281, 0.03228754, -0.1253913, 0.025314178, -0.007795457, 0.02670395, 0.08701053, 0.01655003, 0.0, -0.0013691243, -0.067090854]
+gra[12][14][12] = [0.40465567, -0.40797436, -0.2669245, -0.0026956042, -0.23772454, -0.11392724, -0.20921792, -0.18406665]
+gra[12][14][13] = [-0.037709318, 0.10248319, 0.106661454, 0.087078094, -0.02219873, -0.0064464738, 0.017485827, -0.043919954]
+gra[12][14][14] = [0.40465567, -0.40797436, -0.2669245, -0.0026956042, -0.23772454, -0.11392724, -0.20921792, -0.18406665]
+gra[13][0][0] = [-0.08952447]
+gra[13][0][1] = [0.12116575]
+gra[13][0][2] = [0.020609686]
+gra[13][0][3] = [0.027726827]
+gra[13][0][4] = [0.029377932]
+gra[13][0][5] = [0.037763137]
+gra[13][0][6] = [-0.00922532]
+gra[13][0][7] = [0.050046057]
+gra[13][0][8] = [0.04002815]
+gra[13][0][9] = [0.008192802]
+gra[13][0][10] = [0.08633158]
+gra[13][0][11] = [-0.037312046]
+gra[13][0][12] = [0.036733776]
+gra[13][0][13] = [-0.08952447]
+gra[13][1][0] = [0.0022879262, -0.001958814, 6.20738E-4, 4.4457944E-11, -0.0021720084, 9.538275E-4]
+gra[13][1][1] = [-0.055141833, -0.18159214, -0.2310143, -0.1775042, -0.16245575, -0.17656916]
+gra[13][1][2] = [0.112229094, -0.04588853, 0.020137032, -0.026443, -0.0077710547, -0.046964385]
+gra[13][1][3] = [0.07827134, -0.04609508, -0.017746942, -0.019397447, -0.00913266, -0.06840449]
+gra[13][1][4] = [0.088947535, -0.04609508, -0.010926573, -0.019397447, -0.00913266, -0.0674689]
+gra[13][1][5] = [0.07683738, -0.031788856, 0.018829808, -0.019397447, -0.00913266, -0.04587588]
+gra[13][1][6] = [-0.00922532, -0.0024341857, 0.007006275, -0.0169596, 0.008638527, -0.003209465]
+gra[13][1][7] = [0.13488376, -0.035775825, 0.009771412, -0.024018921, -0.0020519788, -0.072541356]
+gra[13][1][8] = [0.047255743, 0.0037917919, -0.033108108, -0.015537896, -0.0065630274, -0.0026946948]
+gra[13][1][9] = [0.0773224, -0.03633568, -0.021127176, -0.019397447, -0.007967199, -0.051424008]
+gra[13][1][10] = [0.108961046, 0.060693294, 0.054833442, 2.4091253E-11, 0.00469194, -0.033955812]
+gra[13][1][11] = [0.057086185, -0.046474654, 0.018150322, -0.034626793, -0.02501236, -0.06334714]
+gra[13][1][12] = [0.10698522, -0.04167862, -0.016609259, -0.019397447, -0.017039627, -0.050599117]
+gra[13][1][13] = [-0.055141833, -0.18159214, -0.2310143, -0.1775042, -0.16245575, -0.17656916]
+gra[13][2][0] = [-3.8481143E-5, 0.0, 6.4378075E-4, 0.0042653317, -0.008087347, 0.0031306578, 2.969677E-4, -2.252149E-11, 0.0034323288, 0.0015309223, -0.008016303]
+gra[13][2][1] = [-5.4985366E-4, -3.7906157E-11, -0.047306664, -0.0041412255, -0.02294093, -0.0028272104, -0.0042415615, 0.035186574, 0.0019214812, 1.8304982E-4, -0.034932088]
+gra[13][2][2] = [-0.17586473, -0.18396096, -0.12756495, -0.19800399, -0.27966103, -0.15852593, -0.28207782, -0.26794708, -0.21708418, -0.13176982, -0.22484498]
+gra[13][2][3] = [-0.0042467928, -0.032899063, -0.0069454797, -0.018209012, -0.02118981, 0.0, 0.0043394, -0.00686435, -0.002073156, -0.0052225264, -0.13685393]
+gra[13][2][4] = [-0.0057051876, -0.037109382, -0.0067831725, -0.015690094, -0.0015978473, -0.0016386209, 7.817097E-4, -0.012367459, -0.002073156, 0.003701211, -0.16906321]
+gra[13][2][5] = [-0.004744318, -0.029101841, -0.017503193, -0.019817533, 0.010586387, 0.0, 0.012585785, -0.014020145, -0.0052353498, -0.0013686286, -0.14418706]
+gra[13][2][6] = [0.010826467, -0.005398127, -0.040203378, -6.327303E-4, 0.019529367, -0.013829023, -0.007742171, -0.016999522, 0.0, 0.001967366, -0.09080481]
+gra[13][2][7] = [-0.002891289, -0.028688747, 0.026601702, -0.03597616, 0.02752462, 0.0024165655, 0.018569034, 0.008007627, -0.0067974986, -0.0053274613, -0.16666228]
+gra[13][2][8] = [0.0028593205, -0.03005159, 0.04387173, -0.0052944794, 0.045643046, -0.014238721, -0.0491267, -0.02992584, 0.002475134, 8.7436906E-4, -0.047349196]
+gra[13][2][9] = [-0.004744318, -0.030361539, -0.03795372, -0.033919044, 0.06747356, -6.163665E-11, 0.029084913, -0.008266031, -0.0028556797, -0.0053274613, -0.1554867]
+gra[13][2][10] = [-0.02512641, 0.069837, 0.058662485, 0.026585884, 0.09000933, 0.0075394805, 0.004756875, -0.040925086, 0.028262286, 0.004521761, -0.07096769]
+gra[13][2][11] = [-0.0057051876, -0.03748896, -0.08736233, -0.01523703, 0.07181907, -0.0017203483, 0.015343863, 0.004421005, -0.0023095226, -0.008031685, -0.10951381]
+gra[13][2][12] = [-0.004744318, -0.029274868, 0.016431537, -0.037910536, 0.057670604, 0.0, 0.036615655, 0.0033570318, -0.0067974986, -0.0053274613, -0.18969187]
+gra[13][2][13] = [-0.17586473, -0.18396096, -0.12756495, -0.19800399, -0.27966103, -0.15852593, -0.28207782, -0.26794708, -0.21708418, -0.13176982, -0.22484498]
+gra[13][3][0] = [-3.8481143E-5, 0.0, -2.546209E-4, 6.20738E-4, -0.003558128, 0.0031306578, 2.969677E-4, -5.3025438E-11, 0.0034323288, -9.175534E-4, -0.0059786467]
+gra[13][3][1] = [-5.4985366E-4, 0.0, -0.06591385, -0.010353064, -0.04391478, -0.004779683, -0.03789397, 0.079702035, 0.0019214812, -0.0033397619, -0.08094852]
+gra[13][3][2] = [-0.012531618, -0.02149262, -0.08160064, 0.0017225409, -0.025120389, -0.010560441, -0.009571605, 0.0045674103, -0.0010462527, 0.00255187, -0.051743556]
+gra[13][3][3] = [-0.18031244, -0.22357735, -0.21240802, -0.25388938, -0.37549284, -0.17787576, -0.23753236, -0.40126306, -0.21692044, -0.1680989, -0.23398493]
+gra[13][3][4] = [-0.004744318, -0.032899063, 0.03715505, -0.009229947, -0.030055411, -0.0016386209, -0.023424516, -0.008862917, -0.0050928323, -0.0031257737, 0.043856]
+gra[13][3][5] = [-0.004744318, -0.029101841, 0.026052877, -0.013357386, 0.010130936, 0.0, -0.013955208, -0.012113207, -0.009159835, -0.0031257737, 0.053190615]
+gra[13][3][6] = [-9.563443E-4, -0.00329998, -0.02827242, 0.0031225746, 0.014126778, -0.016821094, -0.0016823349, -0.011623862, 0.0017409262, 0.001967366, -0.06866483]
+gra[13][3][7] = [-0.0047443183, -0.028688747, 0.037981912, -0.033003844, 0.004445195, 0.0024165655, -0.007744682, 0.011656271, -0.009074964, -0.0031257737, 0.021348575]
+gra[13][3][8] = [0.0, -0.02476588, 0.045840815, -0.0052944794, 0.043581713, -0.014238721, -0.057075597, -0.008813456, 0.002475134, -1.1985166E-10, -0.07913361]
+gra[13][3][9] = [-0.004744318, -0.029248606, -0.0141451955, -0.029602291, 0.019558635, 3.0514854E-4, -0.010528591, 0.013094053, -0.0028556797, 0.0016335323, 0.023239616]
+gra[13][3][10] = [-0.023588339, 0.062523216, 0.052721545, 0.024466196, 0.020985646, 0.0066277483, 0.013492335, -0.015119242, 0.028262286, 0.0011546377, -0.013636478]
+gra[13][3][11] = [-0.008316049, -0.03748896, -0.089236364, -0.024210531, 0.0035645193, -0.0017203483, -0.02742043, 0.018517133, 0.0011490043, -0.0010706913, 0.013034737]
+gra[13][3][12] = [-0.0047443183, -0.029274868, 0.014905731, -0.04058704, 0.011896652, 0.0, -0.009303885, 0.016553108, -0.005152384, 0.0016335323, 0.017573029]
+gra[13][3][13] = [-0.18031244, -0.22357735, -0.21240802, -0.25388938, -0.37549284, -0.17787576, -0.23753236, -0.40126306, -0.21692044, -0.1680989, -0.23398493]
+gra[13][4][0] = [-3.8481143E-5, 0.0, 0.002269707, 6.20738E-4, -0.003558128, 0.0031306578, 2.969677E-4, -5.3025438E-11, 0.0034323288, 0.0015309223, -0.0059786467]
+gra[13][4][1] = [-5.4985366E-4, 0.0, -0.06591385, -0.010353064, -0.04391478, -0.004779683, -0.03789397, 0.079702035, 0.0019214812, -0.0033397619, -0.08094852]
+gra[13][4][2] = [-0.012531618, -0.02149262, -0.10305554, 0.0017225409, -0.029588522, -0.014709006, -0.009571605, 0.014932039, -2.958011E-4, 0.0015983053, -0.05661193]
+gra[13][4][3] = [-0.014356834, -0.020139834, -0.12048513, 0.0, -0.01927166, -0.008297132, -0.0065214084, -2.5217576E-4, -0.0069084316, 0.0010085813, -0.038101066]
+gra[13][4][4] = [-0.17809576, -0.22590655, -0.21240802, -0.25388938, -0.37549284, -0.17787576, -0.23127286, -0.398157, -0.21692044, -0.1680989, -0.27611417]
+gra[13][4][5] = [-0.004744318, -0.024891522, 0.025563333, -0.013357386, -0.0110635245, -0.0030399878, -0.014388094, -0.010515601, -0.0070016095, -0.004008526, 0.06699301]
+gra[13][4][6] = [1.1364407E-11, -0.004874793, -0.02827242, 0.0018121619, 0.014126778, -0.016821094, -0.0016823349, -0.011623862, 0.0, 7.519599E-4, -0.07071236]
+gra[13][4][7] = [-0.0047443183, -0.028688747, 0.037981912, -0.033003844, 0.0049465187, 0.0024165655, -0.007744682, 0.011656271, -0.009074964, -0.0027042234, 0.017222213]
+gra[13][4][8] = [-0.0030642115, -0.02476588, 0.045840815, -0.0052944794, 0.043581713, -0.014238721, -0.057075597, -0.008813456, 0.0024751339, -5.0044945E-4, -0.07913361]
+gra[13][4][9] = [-0.004744318, -0.029248606, -0.0141451955, -0.029602291, 0.020765867, 0.0, -0.010528591, 0.013094053, -0.0028556797, 0.0020550827, 0.019113258]
+gra[13][4][10] = [-0.020729683, 0.062523216, 0.052721545, 0.02216856, 0.020985646, 0.0066277483, 0.011945313, -0.015119242, 0.028262286, 0.0011546377, -0.018444024]
+gra[13][4][11] = [-0.008316049, -0.03748896, -0.089236364, -0.024210531, 0.0023096106, -0.0017203483, -0.02742043, 0.018517133, 0.0011490043, 0.009044054, 0.008908374]
+gra[13][4][12] = [-0.0047443183, -0.029274868, 0.014905731, -0.04058704, 0.013103877, 0.0, -0.009303885, 0.016553108, -0.009074964, 0.0020550827, 0.0120558515]
+gra[13][4][13] = [-0.17809576, -0.22590655, -0.21240802, -0.25388938, -0.37549284, -0.17787576, -0.23127286, -0.398157, -0.21692044, -0.1680989, -0.27611417]
+gra[13][5][0] = [-3.8481143E-5, -0.0019296022, 0.002269707, -7.568941E-4, -0.003558128, -0.0023391629, 2.969678E-4, -5.3025438E-11, 0.0034323288, 0.0015309223, -0.0059786467]
+gra[13][5][1] = [-5.4985366E-4, 0.0, -0.072617814, -0.010353064, -0.035776734, -0.004779683, -0.03315192, 0.079702035, 0.0019214812, -0.0033397619, -0.09211975]
+gra[13][5][2] = [-0.012531618, -0.02149262, -0.10377838, 0.0017225409, -0.024193535, -0.014709006, -0.009571605, 0.011914919, -0.0010462527, 0.00255187, -0.048641015]
+gra[13][5][3] = [-0.01437872, -0.019673575, -0.1188169, 0.0, -0.018344807, -0.012445698, -0.0065214084, 0.0068431576, -0.0069084316, 0.00255187, -0.03546479]
+gra[13][5][4] = [-0.011914355, -0.021155545, -0.12490728, 0.0, -0.013876671, -0.006897951, -0.0065214084, 0.0022252216, -0.0069084316, 0.00255187, -0.03168124]
+gra[13][5][5] = [-0.17809576, -0.21920177, -0.22583191, -0.22214787, -0.3129328, -0.17787576, -0.23062442, -0.37000602, -0.21692044, -0.1680989, -0.26244205]
+gra[13][5][6] = [-6.359549E-4, -0.00329998, -0.027081385, 6.87819E-11, 0.014126778, -0.016821094, -7.880372E-4, -0.013210811, 0.0011668268, 0.001967366, -0.066702664]
+gra[13][5][7] = [-0.0047443183, -0.028688747, 0.039401986, -0.033003844, -0.0018611331, 4.886615E-13, -0.006838248, 0.011656271, -0.009074964, -0.0027042234, 0.004515754]
+gra[13][5][8] = [0.0, -0.017561529, 0.045840815, -0.0052944794, 0.030117506, -0.014238721, -0.06238355, 2.2126269E-4, 0.002475134, -1.1985166E-10, -0.0996067]
+gra[13][5][9] = [-0.004744318, -0.029248606, -0.012725122, -0.017495878, 0.008357792, 0.0, -0.010288807, 0.013094053, -0.0028556797, 0.0020550827, 0.015532694]
+gra[13][5][10] = [-0.023588339, 0.062523216, 0.052721545, 0.02216856, 0.018455729, 0.0014369704, 0.011879643, -0.015119242, 0.028262286, 0.0011546375, -0.010995837]
+gra[13][5][11] = [-0.0073551796, -0.03748896, -0.08781629, -0.024210531, 4.7158962E-4, -0.0017203483, -0.027180644, 0.018517133, 0.0011490043, -0.0015840135, -0.0015809597]
+gra[13][5][12] = [-0.0047443183, -0.029274868, 0.016325809, -0.04058704, 6.9580355E-4, 0.0, -0.0068243686, 0.016553108, -0.013708543, 0.0020550827, 0.016344428]
+gra[13][5][13] = [-0.17809576, -0.21920177, -0.22583191, -0.22214787, -0.3129328, -0.17787576, -0.23062442, -0.37000602, -0.21692044, -0.1680989, -0.26244205]
+gra[13][6][0] = [6.4378075E-4, 0.0]
+gra[13][6][1] = [-0.06624731, 0.030801235]
+gra[13][6][2] = [-0.10918311, 0.0]
+gra[13][6][3] = [-0.12980185, 0.0026769685]
+gra[13][6][4] = [-0.1323681, 0.0]
+gra[13][6][5] = [-0.14144892, -0.0012286699]
+gra[13][6][6] = [-0.3622168, -0.22078751]
+gra[13][6][7] = [0.041815557, -0.01590641]
+gra[13][6][8] = [0.019047474, -0.0046319123]
+gra[13][6][9] = [-0.004766149, 0.011194]
+gra[13][6][10] = [0.08412241, 0.0011773661]
+gra[13][6][11] = [-0.053156152, -0.0022921383]
+gra[13][6][12] = [0.023595892, -0.0034085575]
+gra[13][6][13] = [-0.3622168, -0.22078751]
+gra[13][7][0] = [-3.8481143E-5, 0.0, 6.4378075E-4, -0.0029844372, -0.003558128, 7.4807646E-11, 2.969678E-4, -2.252149E-11, 0.0034323288, 0.0015309223, -0.004436887]
+gra[13][7][1] = [-5.4985366E-4, 0.0, -0.061387178, -0.006211838, -0.02472724, -0.004779683, -0.009418331, 0.043953314, 0.003516588, -6.7384075E-4, -0.06601527]
+gra[13][7][2] = [-0.014545243, -0.02149262, -0.105155304, 0.0017225409, -0.02913589, -0.012445698, -0.009571605, 0.012321943, -0.0030816167, 0.0, -0.038469456]
+gra[13][7][3] = [-0.008449863, -0.031753954, -0.12069213, 0.008403905, -0.018656962, -0.013135118, -0.0065214084, 0.008531175, -0.0069084316, 0.0, -0.02244518]
+gra[13][7][4] = [-0.0068611433, -0.032769665, -0.12325835, 0.008403905, -0.018656962, -0.014724767, -0.0065214084, 0.011008573, -0.0069084316, 0.0, -0.02244518]
+gra[13][7][5] = [-0.003759268, -0.031753954, -0.12706642, 0.008403905, -0.017453253, -0.008297132, -0.009280194, 0.0016880172, -0.0069084316, 0.0, -0.023096858]
+gra[13][7][6] = [-0.0015405889, -9.316074E-4, -0.07405043, 0.0047623203, -0.0011805353, 0.0038556326, 0.0044427225, 0.0029879243, -6.80316E-4, 0.0021720878, -0.011135231]
+gra[13][7][7] = [-0.18400235, -0.22632557, -0.22538361, -0.16799, -0.1461452, -0.15403911, -0.27257457, -0.18231206, -0.2376445, -0.14923236, -0.295538]
+gra[13][7][8] = [0.0, -0.019396862, 0.05353746, -0.002615053, 0.050056085, -0.014238721, -0.064261615, -0.013629902, 0.0024751343, -1.1985166E-10, -0.09486357]
+gra[13][7][9] = [-0.005495934, -0.029248606, -0.022326747, -0.037688896, 0.0943484, 2.4217142E-11, 0.046222847, -0.0010446829, -0.0028556797, -3.4251437E-4, -0.07842448]
+gra[13][7][10] = [-0.02962853, 0.0659748, 0.08125699, 0.02257181, 0.075506486, -0.0016109447, 0.011153372, -0.019953335, 0.0148332175, -6.8592926E-4, -0.016709048]
+gra[13][7][11] = [-0.0066066366, -0.03748896, -0.072320245, -0.024805957, 0.110292, -0.0017203483, 0.023086337, 3.1985203E-4, -0.0035562683, -0.005408447, -0.087828055]
+gra[13][7][12] = [-0.0016143469, -0.03266932, 0.02244001, -0.0416742, 0.09989443, 2.4217142E-11, 0.064361975, 0.010643414, -0.0067974986, -0.0027042234, -0.102793634]
+gra[13][7][13] = [-0.18400235, -0.22632557, -0.22538361, -0.16799, -0.1461452, -0.15403911, -0.27257457, -0.18231206, -0.2376445, -0.14923236, -0.295538]
+gra[13][8][0] = [0.008247588, -0.0055409744, 6.20738E-4, 4.4457944E-11, -0.0021720084, 9.538275E-4]
+gra[13][8][1] = [0.0018849298, 0.0, -9.987416E-4, -0.0039049454, 0.005938728, 0.02454755]
+gra[13][8][2] = [-0.09277756, -0.02149262, -0.008969738, -0.012445698, 0.006616043, -0.0070737293]
+gra[13][8][3] = [-0.12416965, -0.013913619, -0.010692279, -0.012445698, 0.0044185594, -0.008524312]
+gra[13][8][4] = [-0.11429893, -0.014929331, -0.010692279, -0.014724767, 0.0044185594, -0.008524312]
+gra[13][8][5] = [-0.123239286, -0.013913619, -0.010692279, -0.008297132, 0.0044185594, -0.007944971]
+gra[13][8][6] = [-0.08144255, 0.0, 0.0, -0.023899741, -0.0011061644, -0.0031688735]
+gra[13][8][7] = [-0.0976752, -0.02517143, -0.011541045, -0.008694231, 0.008405002, -0.006917912]
+gra[13][8][8] = [-0.24454613, -0.1639746, -0.25012267, -0.17277125, -0.14648728, -0.1339441]
+gra[13][8][9] = [0.060765058, -0.03443707, -0.012861641, -0.016538091, -0.01139536, -0.05786432]
+gra[13][8][10] = [0.17067443, 0.057847686, 0.09022305, 2.936734E-11, 0.017207963, -0.0055431663]
+gra[13][8][11] = [-0.0031472906, -0.044576038, -0.008100095, -0.02634275, -0.034019772, -0.07583591]
+gra[13][8][12] = [0.050338555, -0.03446333, -0.0013067424, -0.016538091, -0.018642653, -0.041006442]
+gra[13][8][13] = [-0.24454613, -0.1639746, -0.25012267, -0.17277125, -0.14648728, -0.1339441]
+gra[13][9][0] = [0.0010204252, 0.0, 6.4378075E-4, 0.0078705065, -0.0054394426, 7.4807646E-11, 2.969678E-4, -2.252149E-11, 0.002672691, 0.0015309223, -0.0059786467]
+gra[13][9][1] = [-0.0024081077, 0.0, -0.062077407, -0.010353064, -0.0019592715, -0.004779683, -0.014528066, 0.042927664, 0.0019214812, -0.01828001, -0.05758947]
+gra[13][9][2] = [-0.012531618, -0.02149262, -0.104911454, 0.0017225409, -0.021012181, -0.014709006, -0.0045123687, 0.0053751054, -0.0010462527, 0.005216337, -0.05147559]
+gra[13][9][3] = [-0.013503075, -0.023688566, -0.119905025, 0.0010881304, -0.018344807, -0.012445698, -0.00331613, 0.0068431576, -0.0069084316, 0.005216337, -0.040002476]
+gra[13][9][4] = [-0.011914355, -0.024704278, -0.12247125, 0.0010881304, -0.018344807, -0.014724767, -0.00331613, 0.009320555, -0.0069084316, 0.005216337, -0.040002476]
+gra[13][9][5] = [-0.012390098, -0.023688566, -0.12627934, 0.0010881304, -0.011718331, -0.008297132, -0.00331613, 0.0, -0.0069084316, 0.005142264, -0.040654156]
+gra[13][9][6] = [-0.001125994, 0.0, -0.074776486, 0.002083107, -0.002882295, -0.002027866, 0.0044427225, 0.0038340823, 0.0039350963, 0.0, -0.0050727697]
+gra[13][9][7] = [-0.024156814, 0.008525034, -0.09897246, -0.0016975328, -0.020984316, -0.0064118747, -2.3427873E-4, 0.008303378, -0.0046053967, 0.005100009, -0.030431]
+gra[13][9][8] = [-0.003056592, 0.0, -0.07764223, -0.0041412255, 0.0029902817, 5.194387E-4, -0.005559218, 0.024523886, -1.2932688E-10, -0.01592549, -0.028795455]
+gra[13][9][9] = [-0.18744808, -0.18351543, -0.13947575, -0.16291302, -0.3038887, -0.17849518, -0.29764092, -0.21583185, -0.20814133, -0.14325449, -0.24414533]
+gra[13][9][10] = [-0.038269173, 0.062523216, 0.049702324, 0.024544237, 0.029627107, -6.992128E-4, 0.008567667, -0.028109219, 0.016858656, 0.0030105696, -0.01863579]
+gra[13][9][11] = [-0.004744318, -0.03748896, -0.100242846, -0.011270633, 0.00911401, -0.0017203483, 0.016757932, 0.027999457, -0.0023095226, 0.0056220004, 0.04432713]
+gra[13][9][12] = [-0.0047443183, -0.029274868, 0.0074492553, -0.03500275, 0.007803831, 0.0, 0.044764586, 0.031718038, -0.009074964, 0.008326224, 0.09394421]
+gra[13][9][13] = [-0.18744808, -0.18351543, -0.13947575, -0.16291302, -0.3038887, -0.17849518, -0.29764092, -0.21583185, -0.20814133, -0.14325449, -0.24414533]
+gra[13][10][0] = [0.0027031128, 2.4087886E-4, 1.3065474E-10, 6.207381E-4, 0.002889238, 0.002607383, -0.0046446207]
+gra[13][10][1] = [-0.005034707, -0.004854968, -0.0039049454, 0.0, -0.024383903, -0.031088296, 0.005413543]
+gra[13][10][2] = [-0.12998651, -0.061819807, -0.014137894, -2.0239376E-4, -0.005629006, -0.014992505, -0.012442157]
+gra[13][10][3] = [-0.15677811, -0.044003762, -0.014137894, -0.0060540326, 0.002196358, -0.013737386, -0.010784484]
+gra[13][10][4] = [-0.15934435, -0.04501947, -0.016416963, -0.009311951, 0.0025157349, -0.013824449, -0.0091957655]
+gra[13][10][5] = [-0.16315244, -0.047849946, -0.009989329, -0.0060540326, 0.002196358, -0.00943523, -0.008107517]
+gra[13][10][6] = [-0.07418773, 0.0, 0.0036415025, -8.813711E-12, -0.0057086376, -0.0019164708, -0.0011259941]
+gra[13][10][7] = [-0.12831485, -0.06397362, -0.005840762, -0.004201497, 0.0016994415, -6.6159316E-4, -0.023003204]
+gra[13][10][8] = [-0.059567124, 8.0218556E-4, -0.001433034, -8.114468E-4, -0.007725291, -0.025030788, 0.0014916039]
+gra[13][10][9] = [-0.13773312, -0.040764928, -0.01828646, -0.0025065367, 6.714482E-4, -0.007684609, -0.015645439]
+gra[13][10][10] = [-0.01754238, -0.096652865, -0.12103371, -0.27217853, -0.3531466, -0.324845, -0.1846547]
+gra[13][10][11] = [0.06607049, -0.03801062, 0.0019329089, -0.04559043, 0.007320726, 0.0027789439, 2.059529E-4]
+gra[13][10][12] = [0.12691858, -0.029796522, 4.5780465E-4, -0.0508675, -0.0019010571, 0.027822996, -0.0029191687]
+gra[13][10][13] = [-0.01754238, -0.096652865, -0.12103371, -0.27217853, -0.3531466, -0.324845, -0.1846547]
+gra[13][11][0] = [-3.8481143E-5, 0.0, 6.4378075E-4, 6.20738E-4, -0.006206033, 0.0031306578, 2.969677E-4, 0.0020178065, 0.003698783, 0.0015309223, -0.0059786467]
+gra[13][11][1] = [-0.0024081077, -3.7906157E-11, -0.05410392, -0.006211838, -0.017004, -0.004779683, -0.01619981, 0.049474724, 0.0019214812, -0.0033397619, -0.055492003]
+gra[13][11][2] = [-0.012531618, -0.02149262, -0.101407215, 0.0017225409, -0.024563115, -0.016277885, -9.650856E-4, 0.014932039, -2.958011E-4, 0.005216337, -0.055602495]
+gra[13][11][3] = [-0.013503075, -0.023688566, -0.11878066, 0.0010881305, -0.021403933, -0.012445698, 2.311531E-4, 0.009860277, -0.0061579803, 0.005216337, -0.042359605]
+gra[13][11][4] = [-0.011914355, -0.024704278, -0.12134688, 0.0010881305, -0.021403933, -0.014724767, 2.311531E-4, 0.012337675, -0.0061579803, 0.005216337, -0.042359605]
+gra[13][11][5] = [-0.010826106, -0.023688566, -0.12515497, -0.0013657217, -0.01927166, -0.008297132, 2.311531E-4, -7.2720836E-6, -0.0069084316, 0.005216337, -0.04301128]
+gra[13][11][6] = [-0.001125994, 0.0, -0.073497966, 0.0031763045, -0.0011805353, -0.002027866, 0.0044427225, 0.0029879243, 0.0067000333, 0.0, -0.008332037]
+gra[13][11][7] = [-0.023003204, -0.022648802, -0.097360395, -0.0016975328, -0.026379308, -0.004148566, 0.0033130045, 0.008303378, -0.0046053967, 0.0065824687, -0.03631161]
+gra[13][11][8] = [-0.0042614858, 0.0, -0.08549402, -0.0041412255, 0.0011589571, -0.001433034, -0.015982313, 0.042075388, -1.2932688E-10, -0.01592549, -0.034074277]
+gra[13][11][9] = [-0.014098032, -0.019941404, -0.08872916, 0.0010881305, -0.016935797, -0.018041158, 0.0077908346, -5.865624E-10, -0.01072273, 0.005216337, -0.060193244]
+gra[13][11][10] = [-0.0063372697, -0.00724988, 0.09636207, 0.0063281707, 0.013989373, 0.010369438, -0.029499395, -0.07729727, -0.0034266128, 0.001646283, -0.06261036]
+gra[13][11][11] = [-0.1723079, -0.19175091, -0.08346477, -0.16814607, -0.20360166, -0.18464145, -0.29005083, -0.19624236, -0.23322582, -0.15090755, -0.25228682]
+gra[13][11][12] = [-0.004744318, -0.027169708, 0.017387033, -0.033801217, -0.012644364, 0.0, 0.0085210595, 7.166872E-4, -0.0067974986, -0.0027042234, 0.037621047]
+gra[13][11][13] = [-0.1723079, -0.19175091, -0.08346477, -0.16814607, -0.20360166, -0.18464145, -0.29005083, -0.19624236, -0.23322582, -0.15090755, -0.25228682]
+gra[13][12][0] = [-3.8481143E-5, -3.63924E-11, 0.002269707, 6.20738E-4, 0.0, 1.2339335E-10, 2.969678E-4, -2.252149E-11, 0.0034323288, 0.0015309223, -0.0059786467]
+gra[13][12][1] = [-0.0024081077, 0.0, -0.064752415, -0.010353064, -0.040191926, -0.004779683, -0.031112492, 0.079702035, 0.003516588, -0.0060928166, -0.091516405]
+gra[13][12][2] = [-0.012531618, -0.019387461, -0.09771204, 0.0017225409, -0.024051953, -0.0062228492, -0.009571605, 0.011914919, -0.0010462527, 0.005216337, -0.041412294]
+gra[13][12][3] = [-0.0153472, -0.029182535, -0.10223391, 0.009492035, -0.019618789, -0.008297132, -0.0058457484, 0.008531175, -0.0069084316, 0.005216337, -0.028060148]
+gra[13][12][4] = [-0.0137584815, -0.030198246, -0.11609159, 0.009492035, -0.019618789, -0.010576202, -0.0058457484, 0.011008573, -0.0069084316, 0.005216337, -0.028060148]
+gra[13][12][5] = [-0.012670232, -0.029182535, -0.11989968, 0.009492035, -0.017486516, -0.0062228492, -0.0058457484, 0.0016880172, -0.0069084316, 0.010007033, -0.028711826]
+gra[13][12][6] = [-0.001125994, 0.0, -0.07098231, 0.0031763045, -0.0011805353, -0.0034213266, 0.0033354918, 0.0029879243, -0.0012010215, 0.0, -0.0034280284]
+gra[13][12][7] = [-0.023003204, -0.020543642, -0.09406488, -0.0016975328, -0.024594164, -0.002074283, -0.0027638972, 0.008303378, -0.0046053967, 0.005100009, -0.017848626]
+gra[13][12][8] = [-0.0019364218, 0.0, -0.08571632, -0.008282451, -0.01957223, -0.001433034, -0.031315595, 0.056441724, -1.2932688E-10, -0.018678546, -0.059202127]
+gra[13][12][9] = [-0.015066513, -0.025901634, -0.08404164, 0.009492035, -0.014481828, -0.012445698, -0.009366741, 0.0016880166, -0.013032702, 0.005216337, -0.038446993]
+gra[13][12][10] = [-0.0063372697, -0.0044693374, -0.005145481, 0.032773815, -0.004487824, 0.011536914, -0.028929772, -0.08269472, -0.004384591, 0.0020792785, -0.037663452]
+gra[13][12][11] = [-0.018364029, -0.017836245, -0.08268196, -0.0022391165, -0.017753053, -0.005315918, -0.015622217, -5.865624E-10, -0.0069084316, 0.005216337, -0.0551992]
+gra[13][12][12] = [-0.17809576, -0.20573048, -0.15939943, -0.20416664, -0.23387754, -0.17472892, -0.28127974, -0.2316979, -0.23132344, -0.17341352, -0.2193664]
+gra[13][12][13] = [-0.17809576, -0.20573048, -0.15939943, -0.20416664, -0.23387754, -0.17472892, -0.28127974, -0.2316979, -0.23132344, -0.17341352, -0.2193664]
+gra[13][14][13] = [0.35930407, -0.22164108, -0.15753579, 0.02877545, -0.22689001, -0.10909238, -0.14508441, -0.13638566]
+gra[13][14][14] = [0.35930407, -0.22164108, -0.15753579, 0.02877545, -0.22689001, -0.10909238, -0.14508441, -0.13638566]
+gra[14][0][0] = [-0.11582346]
+gra[14][0][1] = [-0.014908389]
+gra[14][0][2] = [0.0010477826]
+gra[14][0][3] = [-0.017838294]
+gra[14][0][4] = [-0.017838294]
+gra[14][0][5] = [-0.020216068]
+gra[14][0][6] = [-0.029175095]
+gra[14][0][7] = [-0.01435264]
+gra[14][0][8] = [-0.010619164]
+gra[14][0][9] = [-0.021713208]
+gra[14][0][10] = [-0.0076314593]
+gra[14][0][11] = [-0.006081218]
+gra[14][0][12] = [-0.029416047]
+gra[14][0][13] = [-0.03016201]
+gra[14][0][14] = [-0.11582346]
+gra[14][1][0] = [0.0, -8.777529E-5]
+gra[14][1][1] = [-0.18727827, -0.042910293]
+gra[14][1][2] = [-0.084219776, 0.098065324]
+gra[14][1][3] = [-0.05922804, 0.038104363]
+gra[14][1][4] = [-0.060603417, 0.047129445]
+gra[14][1][5] = [-0.032511078, 0.024256317]
+gra[14][1][6] = [0.011354224, -0.029175095]
+gra[14][1][7] = [-0.102742985, 0.075883195]
+gra[14][1][8] = [0.024297003, -9.4162335E-4]
+gra[14][1][9] = [-0.045367077, 0.05281453]
+gra[14][1][10] = [-0.03284261, 0.023246054]
+gra[14][1][11] = [-0.106667675, 0.09371514]
+gra[14][1][12] = [-0.04622412, 0.051488757]
+gra[14][1][13] = [0.009459454, 0.047508337]
+gra[14][1][14] = [-0.18727827, -0.042910293]
+gra[14][2][0] = [-0.0017319206, 0.0015840991, -0.008970131, -0.004802999, 0.0031306578, 0.0022224444, 0.0057375417, -0.0018251492]
+gra[14][2][1] = [0.009210461, 0.0012506777, 0.023023957, -0.025324829, -8.747375E-4, -3.7906157E-11, -0.0035353543, 0.035236858]
+gra[14][2][2] = [-0.17584763, -0.5290194, -0.22025661, -0.23991603, -0.19399358, -0.12639932, -0.13731577, -0.289827]
+gra[14][2][3] = [-0.05571494, 0.1321193, -0.14931351, -0.03905928, 0.0, -0.0024315235, -2.567261E-4, -0.0076815435]
+gra[14][2][4] = [-0.05911336, 0.15121338, -0.17879, -0.019467322, -0.0016386209, -0.0024315235, -0.001026748, -0.0106770415]
+gra[14][2][5] = [-0.080596365, 0.2223057, -0.14741457, -0.009105388, 0.0, 0.0013912377, -0.0023956841, -0.0148373395]
+gra[14][2][6] = [-0.06015315, 0.04232933, -0.08102358, 0.018965898, 0.0, -0.0020981468, -0.0014585715, -0.015615815]
+gra[14][2][7] = [-0.042910974, -0.0024921368, -0.21345621, 0.011247204, 0.0024165655, 0.0013912377, 0.0012619573, 0.005793425]
+gra[14][2][8] = [4.0656445E-4, 0.04207531, -0.012648034, 0.04502165, 0.0, -0.03310725, -0.004949766, -0.021638526]
+gra[14][2][9] = [-0.07297369, 0.024562055, -0.16602206, 0.04623389, -6.163665E-11, 2.7830654E-4, -0.0052100876, -0.010190327]
+gra[14][2][10] = [-0.024243463, -0.07057921, -0.0720616, 0.10349874, 2.4562495E-4, 0.011989316, 0.0041656997, -0.04276061]
+gra[14][2][11] = [-0.06124546, -0.029336883, -0.16942665, 0.04144257, -0.0017203483, -0.0024315235, 0.009988822, 0.008239418]
+gra[14][2][12] = [-0.040389307, -3.8161967E-4, -0.20168869, 0.023762133, 0.0, -0.0024315235, -4.8080023E-4, 0.0055930368]
+gra[14][2][13] = [-0.053557433, 0.004121064, -0.14622559, 0.034124065, 0.0, 0.0013912377, -4.8080023E-4, -0.0010566153]
+gra[14][2][14] = [-0.17584763, -0.5290194, -0.22025661, -0.23991603, -0.19399358, -0.12639932, -0.13731577, -0.289827]
+gra[14][3][0] = [-0.0026303222, -0.0045454036, -0.006932474, -2.737789E-4, 0.0031306578, 0.0022224444, 0.0020929475, -0.0018251492]
+gra[14][3][1] = [-0.0019154843, -0.0065884185, -0.020415306, -0.04629868, -8.747375E-4, 0.0, -0.009747193, 0.07975232]
+gra[14][3][2] = [0.03537799, -0.03127152, -0.066523835, -0.020764088, -0.002263308, -0.0024273172, 0.0, 0.0045674103]
+gra[14][3][3] = [-0.26069072, -0.17578714, -0.22939655, -0.33574775, -0.21334341, -0.16601574, -0.19320112, -0.42314297]
+gra[14][3][4] = [-0.013265513, 0.23243552, 0.029085482, -0.047924884, -0.0016386209, -0.0024315235, 0.0054333983, -0.007172498]
+gra[14][3][5] = [-0.037040286, 0.3100581, 0.04996314, -0.009560844, 0.0, 0.0013912377, 0.004064462, -0.012930402]
+gra[14][3][6] = [-0.04822219, 0.09151792, -0.0588836, 0.013563308, -0.0029920721, 0.0, 0.0022967334, -0.010240156]
+gra[14][3][7] = [-0.031530757, 0.02315667, -0.025445353, -0.011832221, 0.0024165655, 0.0013912377, 0.004234272, 0.009442069]
+gra[14][3][8] = [0.002375652, 0.10702352, -0.044432443, 0.042960316, 0.0, -0.027821539, -0.004949766, -5.2614184E-4]
+gra[14][3][9] = [-0.049165167, 0.15115647, 0.012704274, -0.0016810335, 3.0514854E-4, 0.0013912377, -8.933363E-4, 0.011169758]
+gra[14][3][10] = [-0.030184396, -0.041988403, -0.01473039, 0.03447505, -6.6610676E-4, 0.004675532, 0.0020460146, -0.016954768]
+gra[14][3][11] = [-0.0631195, 0.064332634, -0.046878092, -0.026811987, -0.0017203483, -0.0024315235, 0.0010153182, 0.022335548]
+gra[14][3][12] = [-0.041915108, 0.14047132, 0.010500541, -0.022011831, 0.0, -0.0024315235, -0.0031573072, 0.018789113]
+gra[14][3][13] = [-0.055083245, 0.14279011, 0.06103932, -0.004049799, 5.773879E-11, 0.0013912377, -0.0031573072, 0.012139461]
+gra[14][3][14] = [-0.26069072, -0.17578714, -0.22939655, -0.33574775, -0.21334341, -0.16601574, -0.19320112, -0.42314297]
+gra[14][4][0] = [-1.0599452E-4, -0.0020210762, -0.006932474, -2.737789E-4, 0.0031306578, 0.0022224444, 0.0020929475, -0.0018251492]
+gra[14][4][1] = [-0.0019154843, -0.0065884185, -0.020415306, -0.04629868, -8.747375E-4, 0.0, -0.009747193, 0.07975232]
+gra[14][4][2] = [0.010398943, -0.043829054, -0.1425881, -0.02309995, -0.002263308, -0.0024273172, 0.0, 0.007836706]
+gra[14][4][3] = [0.013334723, 0.0012160586, 6.9185626E-4, -0.013261375, 0.0, -1.3790699E-4, 0.0, 1.12758145E-11]
+gra[14][4][4] = [-0.26069072, -0.18989517, -0.27152574, -0.33574775, -0.21334341, -0.16834494, -0.19320112, -0.4200369]
+gra[14][4][5] = [-0.035620213, 0.28389117, 0.05872181, -0.0307553, -0.0030399878, 0.0013912377, 0.004064462, -0.011332796]
+gra[14][4][6] = [-0.04822219, 0.09151792, -0.06093113, 0.013563308, -0.0029920721, -0.0015748128, 9.863207E-4, -0.010240156]
+gra[14][4][7] = [-0.031530757, 0.021498462, -0.029571723, -0.011330896, 0.0024165655, 0.0013912377, 0.004234272, 0.009442069]
+gra[14][4][8] = [0.002375652, 0.11166462, -0.044432443, 0.042960316, 0.0, -0.027821539, -0.004949766, -5.2614184E-4]
+gra[14][4][9] = [-0.049165167, 0.14949825, 0.0085779065, -4.7380285E-4, 0.0, 0.0013912377, -8.933363E-4, 0.011169758]
+gra[14][4][10] = [-0.030184396, -0.041988403, -0.019537935, 0.03447505, -6.6610676E-4, 0.004675532, -2.5162264E-4, -0.016954768]
+gra[14][4][11] = [-0.0631195, 0.06267442, -0.051004462, -0.028066896, -0.0017203483, -0.0024315235, 0.0010153182, 0.022335548]
+gra[14][4][12] = [-0.041915108, 0.13881311, 0.004983356, -0.020804603, 0.0, -0.0024315235, -0.0031573072, 0.018789113]
+gra[14][4][13] = [-0.055083245, 0.14525777, 0.05691296, -0.010442665, 0.0, 0.0013912377, -0.0031573072, 0.012139461]
+gra[14][4][14] = [-0.26069072, -0.18989517, -0.27152574, -0.33574775, -0.21334341, -0.16834494, -0.19320112, -0.4200369]
+gra[14][5][0] = [-1.0599452E-4, -0.004087028, -0.006932474, -2.737789E-4, -0.0023391629, 2.9284216E-4, 7.1531534E-4, -0.0018251492]
+gra[14][5][1] = [-0.008619444, 0.024646414, -0.031586535, -0.038160633, -8.747375E-4, 0.0, -0.009747193, 0.07975232]
+gra[14][5][2] = [0.009676101, -0.04146135, -0.13461716, -0.017704962, -0.002263308, -0.0024273172, 0.0, 0.004819586]
+gra[14][5][3] = [0.011478803, -0.004468556, -0.06786775, -0.0102022495, 0.0, 3.2835128E-4, 0.0, 0.0]
+gra[14][5][4] = [0.0144154765, 0.00820452, 0.0100524295, -0.013484061, 0.0036782513, 0.0011214141, -0.0065619284, -0.0015741112]
+gra[14][5][5] = [-0.27411464, -0.120020434, -0.25785366, -0.27318767, -0.21334341, -0.16164015, -0.16145964, -0.39188594]
+gra[14][5][6] = [-0.047031157, 0.07410885, -0.059514217, 0.013563308, -0.0029920721, 0.0, 0.0022967334, -0.013210811]
+gra[14][5][7] = [-0.030110683, 0.009325346, -0.04227817, -0.018138546, 4.886615E-13, 0.0013912377, 0.004234272, 0.009442069]
+gra[14][5][8] = [0.002375652, 0.12489207, -0.06490553, 0.02949611, 0.0, -0.020617187, -0.004949766, 0.008508578]
+gra[14][5][9] = [-0.047745094, 0.13283329, 0.0049973363, -0.012881876, 0.0, 0.0013912377, 0.011213072, 0.011169758]
+gra[14][5][10] = [-0.030184396, -0.041040756, -0.012089748, 0.03194514, -0.0058568846, 0.004675532, -2.5162264E-4, -0.016954768]
+gra[14][5][11] = [-0.061699428, 0.0680023, -0.06149379, -0.029904917, -0.0017203483, -0.0024315235, 0.0010153182, 0.022335548]
+gra[14][5][12] = [-0.040495034, 0.12351453, 0.011489054, -0.033212673, 0.0, -0.0024315235, -0.0031573072, 0.018789113]
+gra[14][5][13] = [-0.05366317, 0.12029423, 0.05981072, -0.022850737, 0.0, 0.0013912377, -0.0031573072, 0.012139461]
+gra[14][5][14] = [-0.27411464, -0.120020434, -0.25785366, -0.27318767, -0.21334341, -0.16164015, -0.16145964, -0.39188594]
+gra[14][6][0] = [0.0, -0.0017319206]
+gra[14][6][1] = [0.12703063, -0.0022489373]
+gra[14][6][2] = [-0.022769202, 0.0030428797]
+gra[14][6][3] = [0.034883343, -7.346576E-4]
+gra[14][6][4] = [0.02350668, 0.0022020158]
+gra[14][6][5] = [0.106837645, -0.008857531]
+gra[14][6][6] = [-0.20986222, -0.3650282]
+gra[14][6][7] = [-0.045771867, -0.024621688]
+gra[14][6][8] = [0.1393876, -0.031599853]
+gra[14][6][9] = [-0.09390008, -0.034672163]
+gra[14][6][10] = [0.055199683, -0.009840637]
+gra[14][6][11] = [-0.07764719, -0.021925328]
+gra[14][6][12] = [0.0073627643, -0.042553928]
+gra[14][6][13] = [0.03508615, -0.041654322]
+gra[14][6][14] = [-0.20986222, -0.3650282]
+gra[14][7][0] = [-0.0017319206, 0.0015840991, -0.0053907144, -2.737789E-4, 5.7391827E-11, 0.0022224444, -0.0015122276, -0.0018251492]
+gra[14][7][1] = [0.002611183, -0.006051983, -0.0054820664, -0.02711114, -8.747375E-4, 0.0, -0.005605967, 0.0440036]
+gra[14][7][2] = [0.008299174, -0.0092912465, -0.12444562, -0.02264732, 1.5084875E-10, -0.0024273172, 0.0, 0.0052266098]
+gra[14][7][3] = [0.009603571, 0.010891726, -0.054848146, -0.010514407, -6.894202E-4, -0.011752027, 0.008403905, 0.0016880172]
+gra[14][7][4] = [0.0125402445, 0.013179652, -0.051907387, -0.01613208, 2.1011333E-12, -0.010492706, 0.0018419763, 1.1390599E-4]
+gra[14][7][5] = [0.0060317433, 0.013192974, 0.031289365, -0.011442969, 0.0, -0.010492706, 0.008564835, 0.0016880172]
+gra[14][7][6] = [-0.0023392674, -2.9609003E-4, 0.051154956, 8.188048E-4, 0.003376759, -9.316074E-4, 0.0047623203, 0.0]
+gra[14][7][7] = [-0.2736663, -0.42253086, -0.29094955, -0.106400095, -0.18950677, -0.16876397, -0.10730179, -0.20419195]
+gra[14][7][8] = [-0.0041071055, 0.07480537, -0.058009043, 0.049434684, 0.0, -0.023188654, -0.0010114948, -0.0053425874]
+gra[14][7][9] = [-0.057346717, -0.008121707, -0.08895983, 0.07310873, 2.4217142E-11, 0.0013912377, -0.008979938, -0.0029689788]
+gra[14][7][10] = [-0.0016489569, -0.08187189, -0.017802957, 0.0889959, -0.008904799, 0.008127116, 1.516263E-4, -0.021788862]
+gra[14][7][11] = [-0.04620337, -0.033882786, -0.14774089, 0.07991551, -0.0017203483, -0.0024315235, 4.1989092E-4, 0.004138265]
+gra[14][7][12] = [-0.03438083, -0.032883566, -0.10764899, 0.065985955, 2.4217142E-11, -0.0058259796, -0.0042444626, 0.012879416]
+gra[14][7][13] = [-0.047548957, -0.028914813, -0.06369143, 0.07584944, 2.4217142E-11, -0.002003218, -0.0042444626, 0.008871366]
+gra[14][7][14] = [-0.2736663, -0.42253086, -0.29094955, -0.106400095, -0.18950677, -0.16876397, -0.10730179, -0.20419195]
+gra[14][8][0] = [0.0, 0.005871886]
+gra[14][8][1] = [0.095702, 0.06588329]
+gra[14][8][2] = [-0.08645788, 0.019448427]
+gra[14][8][3] = [-0.03433526, 0.004897557]
+gra[14][8][4] = [-0.031394515, 0.02027118]
+gra[14][8][5] = [0.05303327, 0.008630428]
+gra[14][8][6] = [0.050987773, -0.007944579]
+gra[14][8][7] = [0.022163775, 0.00545556]
+gra[14][8][8] = [-0.14465323, -0.23231457]
+gra[14][8][9] = [-0.050460912, 0.036257178]
+gra[14][8][10] = [-0.0044299643, 0.084959425]
+gra[14][8][11] = [-0.11915645, 0.033481665]
+gra[14][8][12] = [-0.0385441, -0.031666603]
+gra[14][8][13] = [0.019052131, -0.009138332]
+gra[14][8][14] = [-0.14465323, -0.23231457]
+gra[14][9][0] = [-0.0017319206, -0.0020210762, -0.006932474, -0.0021550937, 5.7391827E-11, 0.0022224444, 0.009342717, -0.0018251492]
+gra[14][9][1] = [0.0019209567, 0.01677084, 0.0029437453, -0.0043431697, -8.747375E-4, 0.0, -0.009747193, 0.042977948]
+gra[14][9][2] = [0.008543024, -0.034551438, -0.13745174, -0.014523609, -0.002263308, -0.0024273172, 0.0, -0.0017202278]
+gra[14][9][3] = [0.010390673, -0.015848102, -0.07240544, -0.0102022495, 0.0, -0.0036866383, 0.0010881304, 0.0]
+gra[14][9][4] = [0.013327346, -0.013560179, -0.06946468, -0.015819924, 2.1011333E-12, -0.0024273172, -0.005473798, -0.0015741112]
+gra[14][9][5] = [0.006818845, -0.013546857, 0.013732083, -0.005708046, 0.0, -0.0024273172, 0.0012490614, 0.0]
+gra[14][9][6] = [-0.0012785172, 0.00325728, 0.04692239, -8.82955E-4, -0.0025067397, 0.0, 0.002083107, 8.46158E-4]
+gra[14][9][7] = [0.008543024, -0.0074314885, 0.007830054, -0.011769962, -0.0022633083, 0.03059784, -8.487665E-4, 0.004819586]
+gra[14][9][8] = [-0.014772522, 0.009046948, -0.0654257, -0.0023759985, 0.0, 0.0, 0.0021252728, 0.024574166]
+gra[14][9][9] = [-0.18775843, -0.37637526, -0.23955697, -0.26414376, -0.21396284, -0.12595381, -0.10222481, -0.23771174]
+gra[14][9][10] = [-0.03320362, -0.098906405, -0.007155558, 0.043116514, -0.007993068, 0.004675532, 0.0021240492, -0.029944744]
+gra[14][9][11] = [-0.07412598, -0.05661683, -0.015585691, -0.021262497, -0.0017203483, -0.0024315235, 0.013955217, 0.031817872]
+gra[14][9][12] = [-0.04595394, -0.025789274, 0.093209125, -0.025386075, 0.0, -0.0024315235, 0.0024269857, 0.031249907]
+gra[14][9][13] = [-0.06253972, -0.03147722, 0.13741048, -0.014771162, 0.0, -0.0019102512, 0.0024269857, 0.027304392]
+gra[14][9][14] = [-0.18775843, -0.37637526, -0.23955697, -0.26414376, -0.21396284, -0.12595381, -0.10222481, -0.23771174]
+gra[14][10][0] = [0.0016535555, 3.2741146E-4, 0.003204043, 1.1323892E-10]
+gra[14][10][1] = [0.030359399, 0.07058733, -0.017545186, 0.0]
+gra[14][10][2] = [-0.09626371, -0.008757901, -0.013296669, -0.0016921958]
+gra[14][10][3] = [-0.041435387, -0.018708255, 0.002196358, -0.001692196]
+gra[14][10][4] = [-0.038581695, -0.015771583, 0.0044842823, -0.001692196]
+gra[14][10][5] = [0.049655966, -0.022280084, 0.002196358, -0.001692196]
+gra[14][10][6] = [0.05007869, -6.89765E-4, -0.011463992, 0.0031626287]
+gra[14][10][7] = [0.042304426, -0.013025224, 6.205952E-4, -0.001692196]
+gra[14][10][8] = [-0.058169376, 0.02240749, 0.011389386, 0.0]
+gra[14][10][9] = [-0.0039507775, -0.016944697, -0.0052801343, -0.0016921958]
+gra[14][10][10] = [-0.32598376, -0.089373134, -0.42189366, -0.12931946]
+gra[14][10][11] = [-0.011033574, 0.07895074, 0.022978501, 0.0019329089]
+gra[14][10][12] = [0.040658515, 0.058160074, 0.018748194, 4.5780465E-4]
+gra[14][10][13] = [0.07926445, 0.062513635, -0.0019399691, 9.091237E-4]
+gra[14][10][14] = [-0.32598376, -0.089373134, -0.42189366, -0.12931946]
+gra[14][11][0] = [-0.0017319206, -0.0020210762, -0.006932474, -0.0029216837, 0.0031306578, 0.0022224444, 0.0020929475, 1.9265735E-4]
+gra[14][11][1] = [0.009894438, -0.025603905, 0.005041209, -0.019387899, -8.747375E-4, -3.7906157E-11, -0.005605967, 0.049525008]
+gra[14][11][2] = [0.012047265, -0.023770321, -0.14157864, -0.018074542, -0.0038321887, -0.0024273172, 0.0, 0.007836706]
+gra[14][11][3] = [0.011515043, -0.00521922, -0.07476257, -0.013261375, 0.0, -0.0036866383, 0.0010881305, 0.0030171203]
+gra[14][11][4] = [0.014451717, -0.0029312975, -0.07182182, -0.01887905, 2.1011333E-12, -0.0024273172, -0.005473798, 0.0014430091]
+gra[14][11][5] = [0.007943215, 8.847595E-4, 0.011374953, -0.013261375, 0.0, -0.0024273172, -0.0012047905, -7.2720836E-6]
+gra[14][11][6] = [-5.5476942E-12, 0.0021639597, 0.043663118, 8.188048E-4, -0.0025067397, 0.0, 0.0031763045, 0.0]
+gra[14][11][7] = [0.010155093, -0.0013697359, 0.0019494435, -0.017164951, 0.0, -5.7599705E-4, -8.487664E-4, 0.004819586]
+gra[14][11][8] = [-0.015143082, -0.028094402, -0.06812735, -0.0042073233, 0.0, 0.0, 0.0021252728, 0.04212567]
+gra[14][11][9] = [0.017680958, 0.0011989512, -0.042761106, -0.012579497, -0.0038321887, -0.0024273172, 0.0010881305, 0.0]
+gra[14][11][10] = [0.10300264, -0.04740205, -0.034849335, -0.0068523446, 0.003984191, -0.011439133, 0.027201029, -0.07176561]
+gra[14][11][11] = [-0.13174748, -0.4127771, -0.2476984, -0.16385658, -0.22010909, -0.13418928, -0.10745787, -0.21812226]
+gra[14][11][12] = [-0.03901305, -0.01084387, 0.034373622, -0.046552837, -0.004892796, -0.0024315235, 0.00362852, 0.0065014227]
+gra[14][11][13] = [-0.052112397, 0.03198275, 0.06561172, -0.01938964, 0.0, 0.0013912377, 0.00362852, -0.005294564]
+gra[14][11][14] = [-0.13174748, -0.4127771, -0.2476984, -0.16385658, -0.22010909, -0.13418928, -0.10745787, -0.21812226]
+gra[14][12][0] = [-1.0599452E-4, -0.0020210762, -0.006932474, -2.737789E-4, 0.0031306578, 0.0022224444, 0.0020929475, -0.0018251492]
+gra[14][12][1] = [-8.8162685E-4, -6.848867E-4, -0.01981195, -0.05071387, -8.747375E-4, 0.0, -0.009747193, 0.07975232]
+gra[14][12][2] = [0.010398943, -0.028204845, -0.13535935, -0.022958368, 1.5084875E-10, -0.0024273172, 0.0, 0.007836706]
+gra[14][12][3] = [0.022394357, -0.005284174, -0.06688294, -0.016871221, 0.0, -0.011285769, 0.009492035, 0.0047051376]
+gra[14][12][4] = [0.014039585, -0.0029962487, -0.063942194, -0.022488894, 2.1011333E-12, -0.0100264475, 0.0029301066, 0.0031310264]
+gra[14][12][5] = [0.007531083, -6.81683E-4, 0.019254586, -0.016871221, 0.0, -0.0100264475, 0.009652967, 0.0016880172]
+gra[14][12][6] = [-1.1091661E-10, -0.0046882727, 0.048567124, 8.188048E-4, -0.0025067397, 0.0, 0.0031763045, 0.0]
+gra[14][12][7] = [0.010398943, -4.2611733E-5, 0.013992602, -0.02311066, 0.0, -5.7599705E-4, -8.487664E-4, 0.004819586]
+gra[14][12][8] = [-0.015492963, 0.0014628633, -0.08022591, -0.031336557, 0.0, 0.0, -0.0020159527, 0.056492005]
+gra[14][12][9] = [0.017024977, -0.005443506, -0.030536842, -0.015520515, 1.5084875E-10, -0.010492706, 0.009492035, 0.0016880172]
+gra[14][12][10] = [0.01890654, -0.017414961, -0.023150582, -0.009890772, 0.00846618, -0.008658591, 0.0515223, -0.086118296]
+gra[14][12][11] = [0.023150899, 5.922683E-4, -0.07096923, -0.016346559, -0.002111407, -0.004783477, -0.0022391165, 0.0]
+gra[14][12][12] = [-0.23819716, -0.45526987, -0.26443404, -0.25669253, -0.21316737, -0.19598888, -0.16998905, -0.2994849]
+gra[14][12][13] = [-0.03364171, 0.016109705, 0.1436839, 0.01834002, 0.0, 0.0038268352, -0.0037499052, 0.0018075759]
+gra[14][12][14] = [-0.23819716, -0.45526987, -0.26443404, -0.25669253, -0.21316737, -0.19598888, -0.16998905, -0.2994849]
+gra[14][13][0] = [-1.0599452E-4, 0.0, -0.006932474, -2.737789E-4, 3.0349702E-11, 0.0022224444, 0.0020929475, -0.0032232394]
+gra[14][13][1] = [-0.0064263684, 0.032257907, -0.073842674, -0.042575825, -8.747375E-4, 0.0, -0.013392032, 0.07975232]
+gra[14][13][2] = [0.008543024, -0.023793714, -0.08331758, -0.015909398, -4.115616E-11, -0.0024273172, 0.0, 0.004819586]
+gra[14][13][3] = [0.009246991, -0.003999448, -0.024953874, -0.011476233, 0.0, -0.011285769, 0.009492035, 0.0016880172]
+gra[14][13][4] = [0.012183664, -0.0017115228, -0.02201313, -0.01957027, 2.1011333E-12, -0.0100264475, 0.0029301066, 1.1390599E-4]
+gra[14][13][5] = [0.009246991, 6.0304295E-4, 0.016605025, -0.011476233, 0.0, -0.0100264475, 0.009492035, 0.0016880172]
+gra[14][13][6] = [0.0, -0.0022572777, 0.05019716, 0.0, -0.0025067397, 0.0, 0.0031763045, 0.0]
+gra[14][13][7] = [0.011328364, 1.3491325E-4, 0.018187441, -0.015379808, 0.0, -5.7599705E-4, -8.487664E-4, 0.005930855]
+gra[14][13][8] = [-0.021037703, 0.028769845, -0.100073226, -0.02493851, 0.0, 0.0, -0.005660792, 0.056492005]
+gra[14][13][9] = [0.015169059, -0.0041424744, -0.020650156, -0.008471542, -4.115616E-11, -0.010492706, 0.009492035, 0.0016880172]
+gra[14][13][10] = [0.024620136, -0.013816819, -0.008670685, -0.022165136, 0.006513544, -0.008658591, 0.053646676, -0.077163056]
+gra[14][13][11] = [0.02129498, -0.007425433, -0.08519275, -0.010228307, -0.002111407, -0.004783477, -0.0022391165, 0.0]
+gra[14][13][12] = [0.013093872, 0.010518471, -0.011354735, -0.008471542, 0.0020460575, -0.0024273172, 0.0, 0.0]
+gra[14][13][13] = [-0.3152193, -0.4017373, -0.16526677, -0.19256514, -0.19967724, -0.19260567, -0.1575356, -0.23550606]
+gra[14][13][14] = [-0.3152193, -0.4017373, -0.16526677, -0.19256514, -0.19967724, -0.19260567, -0.1575356, -0.23550606]
diff --git a/dependencyParser/experimental/examples/edges output.txt b/dependencyParser/experimental/examples/edges output.txt
new file mode 100644
index 0000000..c1e80e8
--- /dev/null
+++ b/dependencyParser/experimental/examples/edges output.txt
@@ -0,0 +1,552 @@
+edges[5][6] = [9]
+edges[5][7] = [9, 17]
+edges[5][8] = [9, 17, 30]
+edges[5][9] = [9]
+edges[5][10] = [9, 24, 26, 4]
+edges[5][11] = [9]
+edges[5][12] = [9]
+edges[5][13] = [9]
+edges[5][14] = [9]
+edges[5][15] = [9]
+edges[5][16] = [9]
+edges[5][17] = [9, 17]
+edges[5][18] = [9, 26, 14, 24, 6, 4]
+edges[5][21] = [9]
+edges[5][22] = [9]
+edges[5][23] = [9]
+edges[5][24] = [9]
+edges[5][25] = [9]
+edges[5][26] = [9]
+edges[5][28] = [9]
+edges[5][29] = [9, 17]
+edges[5][31] = [9]
+edges[5][32] = [9]
+edges[5][37] = [9]
+edges[6][6] = [4]
+edges[6][7] = [5, 8, 21, 10, 4, 17]
+edges[6][9] = [21, 5, 15, 4, 17]
+edges[6][10] = [11, 5, 31]
+edges[6][12] = [5, 4, 21, 10, 17]
+edges[6][13] = [5]
+edges[6][14] = [4, 21, 18]
+edges[6][15] = [21, 4, 5]
+edges[6][18] = [5, 4]
+edges[6][19] = [5]
+edges[6][20] = [5, 21]
+edges[6][21] = [5]
+edges[6][22] = [21]
+edges[6][23] = [5]
+edges[6][26] = [5]
+edges[6][27] = [5]
+edges[6][29] = [5, 4, 21, 8]
+edges[6][35] = [21, 5]
+edges[6][37] = [5, 31, 4]
+edges[6][39] = [5, 21]
+edges[6][40] = [5]
+edges[6][41] = [5]
+edges[7][6] = [4, 8, 5, 21, 28, 17]
+edges[7][7] = [7, 8, 4, 5, 10, 21, 15, 12, 31, 30, 17]
+edges[7][8] = [4, 20]
+edges[7][9] = [4, 8, 21, 5, 6, 17, 7]
+edges[7][10] = [11, 4, 5, 8, 20, 31, 7, 21]
+edges[7][11] = [4, 20, 30]
+edges[7][12] = [4, 5, 7, 8]
+edges[7][13] = [4, 8, 20, 14, 5]
+edges[7][14] = [4, 18, 16]
+edges[7][15] = [4, 19, 21]
+edges[7][16] = [4, 20]
+edges[7][17] = [14, 4, 20, 7]
+edges[7][18] = [4, 8, 20, 5, 7, 10, 14, 21]
+edges[7][19] = [4, 5, 10]
+edges[7][20] = [4, 5]
+edges[7][21] = [4]
+edges[7][22] = [4]
+edges[7][23] = [4]
+edges[7][24] = [4, 20]
+edges[7][26] = [4, 5]
+edges[7][27] = [8, 7, 4, 5]
+edges[7][28] = [4, 20]
+edges[7][29] = [4, 5, 8, 7]
+edges[7][31] = [4]
+edges[7][32] = [4]
+edges[7][34] = [4]
+edges[7][37] = [4, 7, 8, 31, 5, 21]
+edges[7][39] = [4, 8, 7]
+edges[7][40] = [4]
+edges[7][41] = [4]
+edges[8][6] = [4, 5, 15, 21]
+edges[8][7] = [6, 10, 12, 4, 15, 30]
+edges[8][8] = [10, 20, 6, 13, 4, 30]
+edges[8][9] = [10, 15, 6, 12, 4, 5]
+edges[8][10] = [11, 15, 6, 4, 14, 12, 5, 20, 10, 31, 30]
+edges[8][11] = [20, 10, 6, 4, 30]
+edges[8][12] = [4, 10, 6, 12]
+edges[8][13] = [20, 14, 4, 15, 12, 10]
+edges[8][14] = [4, 16, 18, 23, 10, 5, 19]
+edges[8][15] = [4, 15, 5, 20, 30, 19]
+edges[8][16] = [20]
+edges[8][17] = [14, 20, 6, 4, 10]
+edges[8][18] = [4, 6, 12, 10, 20, 15, 5, 14]
+edges[8][19] = [10, 12, 6, 4, 15, 30]
+edges[8][20] = [12, 10, 4]
+edges[8][21] = [6, 15, 10]
+edges[8][22] = [19, 4]
+edges[8][23] = [20, 4]
+edges[8][24] = [20, 10, 30]
+edges[8][25] = [22]
+edges[8][26] = [10, 12, 6, 4]
+edges[8][27] = [6, 4, 10]
+edges[8][28] = [13, 20, 30]
+edges[8][29] = [4, 12, 10, 6]
+edges[8][31] = [4]
+edges[8][32] = [30]
+edges[8][33] = [6]
+edges[8][34] = [4]
+edges[8][37] = [30, 10, 6, 4, 31, 12]
+edges[8][38] = [6]
+edges[8][39] = [6, 4]
+edges[8][40] = [4, 30]
+edges[9][6] = [4, 5, 28, 21]
+edges[9][7] = [12, 7, 5, 8, 4, 10, 6, 21]
+edges[9][8] = [20, 4]
+edges[9][9] = [4, 21]
+edges[9][10] = [11, 21, 25, 4]
+edges[9][11] = [20, 4]
+edges[9][12] = [5, 4]
+edges[9][13] = [4]
+edges[9][14] = [4, 18]
+edges[9][15] = [4]
+edges[9][17] = [14]
+edges[9][18] = [20, 5, 4]
+edges[9][19] = [4, 12, 5]
+edges[9][20] = [5]
+edges[9][21] = [4]
+edges[9][22] = [19, 4]
+edges[9][23] = [4]
+edges[9][24] = [20, 4]
+edges[9][26] = [12, 5]
+edges[9][27] = [8]
+edges[9][29] = [5]
+edges[9][31] = [4]
+edges[9][37] = [4, 8]
+edges[10][6] = [17, 4]
+edges[10][7] = [4, 6, 17, 10, 21, 8, 5, 12]
+edges[10][8] = [17, 4]
+edges[10][9] = [17, 4, 6, 21]
+edges[10][10] = [11, 17, 4, 31, 9]
+edges[10][11] = [17, 4]
+edges[10][12] = [21, 17, 6, 12]
+edges[10][13] = [17, 4]
+edges[10][14] = [17, 4]
+edges[10][15] = [17, 4]
+edges[10][16] = [17]
+edges[10][17] = [17]
+edges[10][18] = [17, 4, 21]
+edges[10][19] = [10]
+edges[10][20] = [17]
+edges[10][21] = [17, 4]
+edges[10][22] = [19, 4, 17]
+edges[10][23] = [17]
+edges[10][24] = [17]
+edges[10][25] = [22]
+edges[10][26] = [6]
+edges[10][27] = [17, 21, 4, 5]
+edges[10][28] = [17]
+edges[10][29] = [17]
+edges[10][30] = [17]
+edges[10][31] = [17]
+edges[10][32] = [17]
+edges[10][37] = [21, 8, 17, 31, 6, 5, 4]
+edges[10][40] = [4]
+edges[11][6] = [5, 4, 21, 15]
+edges[11][7] = [15, 6, 10, 12, 4, 30]
+edges[11][8] = [20, 10, 6, 4, 30]
+edges[11][9] = [6, 15, 12, 10, 5, 4]
+edges[11][10] = [11, 6, 15, 10, 12, 5, 4, 20, 8, 31]
+edges[11][11] = [20, 6, 4, 10, 30]
+edges[11][12] = [12, 6, 10, 4, 15, 30]
+edges[11][13] = [15, 20, 6, 14, 4, 10]
+edges[11][14] = [4, 18, 16, 10, 29, 5, 15, 19]
+edges[11][15] = [5, 4, 15, 12, 10]
+edges[11][16] = [20, 6]
+edges[11][17] = [14, 6, 20, 4, 10]
+edges[11][18] = [4, 15, 10, 6, 20, 5, 12, 14]
+edges[11][19] = [12, 10, 6, 15, 4]
+edges[11][20] = [12, 4, 10]
+edges[11][21] = [12, 6, 15]
+edges[11][22] = [19, 4, 6, 20]
+edges[11][23] = [6, 20]
+edges[11][24] = [20, 6, 30, 4]
+edges[11][26] = [10, 6, 12, 4, 15]
+edges[11][27] = [4, 5, 6, 10]
+edges[11][28] = [20, 4, 10]
+edges[11][29] = [6, 12, 10, 15]
+edges[11][31] = [4]
+edges[11][32] = [14, 20]
+edges[11][33] = [6, 4]
+edges[11][34] = [4]
+edges[11][36] = [15, 4]
+edges[11][37] = [15, 6, 31, 4, 12, 10]
+edges[11][40] = [4]
+edges[12][6] = [4, 5]
+edges[12][7] = [5, 21, 4, 17, 10]
+edges[12][8] = [4, 20]
+edges[12][9] = [5, 4, 21]
+edges[12][10] = [11, 5, 21, 31]
+edges[12][11] = [4, 20]
+edges[12][12] = [4, 21]
+edges[12][13] = [4, 5, 20]
+edges[12][14] = [4]
+edges[12][15] = [4]
+edges[12][18] = [5]
+edges[12][19] = [5]
+edges[12][21] = [4]
+edges[12][23] = [4]
+edges[12][24] = [20]
+edges[12][26] = [5]
+edges[12][27] = [21, 5, 4]
+edges[12][29] = [5]
+edges[12][37] = [5, 21]
+edges[13][6] = [4, 5, 28]
+edges[13][7] = [6, 12, 15, 4, 5, 8]
+edges[13][8] = [13, 20]
+edges[13][9] = [6, 4, 12]
+edges[13][10] = [11, 5, 12, 6, 28, 4]
+edges[13][11] = [13, 20]
+edges[13][12] = [6, 4]
+edges[13][14] = [4, 18]
+edges[13][15] = [4, 5, 21]
+edges[13][17] = [13, 4]
+edges[13][18] = [6, 12, 4, 5, 28]
+edges[13][19] = [12, 6, 4]
+edges[13][20] = [12]
+edges[13][22] = [19, 4]
+edges[13][24] = [6]
+edges[13][26] = [12]
+edges[13][27] = [4]
+edges[13][28] = [13]
+edges[13][29] = [12, 6]
+edges[13][31] = [4]
+edges[13][32] = [13, 4]
+edges[13][37] = [12, 4, 31, 6]
+edges[14][6] = [4, 17, 21]
+edges[14][7] = [17, 21, 5, 4, 6]
+edges[14][8] = [20]
+edges[14][9] = [17]
+edges[14][10] = [11]
+edges[14][14] = [4, 21, 18]
+edges[14][15] = [21, 5, 4]
+edges[14][17] = [14]
+edges[14][22] = [21, 4]
+edges[14][25] = [22]
+edges[15][6] = [4, 21, 5]
+edges[15][7] = [4, 6, 17, 5]
+edges[15][8] = [20, 4]
+edges[15][10] = [11, 14, 20]
+edges[15][11] = [4, 20]
+edges[15][13] = [21, 20]
+edges[15][14] = [4, 21, 18]
+edges[15][15] = [4, 21, 5]
+edges[15][16] = [20]
+edges[15][17] = [14, 20]
+edges[15][18] = [20, 14, 5, 21, 4]
+edges[15][22] = [19, 4]
+edges[15][23] = [20]
+edges[15][24] = [20, 4]
+edges[15][26] = [4, 12]
+edges[15][28] = [13, 20]
+edges[16][6] = [4]
+edges[16][7] = [6, 4]
+edges[16][8] = [13]
+edges[16][9] = [6]
+edges[16][10] = [11, 4, 14]
+edges[16][12] = [6]
+edges[16][13] = [14]
+edges[16][14] = [4, 16, 18]
+edges[16][15] = [4]
+edges[16][17] = [14]
+edges[16][18] = [14, 4, 6]
+edges[16][19] = [6]
+edges[16][22] = [4, 19]
+edges[16][25] = [22]
+edges[16][26] = [6]
+edges[16][29] = [6]
+edges[16][37] = [6, 4]
+edges[17][6] = [4, 5, 12, 15, 21]
+edges[17][7] = [10, 12, 4, 15, 6, 5]
+edges[17][8] = [20, 10]
+edges[17][9] = [15, 6, 12, 10, 5, 4]
+edges[17][10] = [11, 10, 15, 4, 20, 5, 31]
+edges[17][11] = [20, 10, 4, 30, 21]
+edges[17][12] = [4, 10, 12, 6]
+edges[17][13] = [10, 4, 20]
+edges[17][14] = [16, 18, 4, 10, 21]
+edges[17][15] = [4, 15, 5]
+edges[17][17] = [14]
+edges[17][18] = [20, 10, 4, 6, 12, 5, 15]
+edges[17][19] = [10, 4, 12, 15, 6, 5]
+edges[17][20] = [12, 10, 4]
+edges[17][22] = [4, 19]
+edges[17][23] = [10, 20]
+edges[17][24] = [10, 20]
+edges[17][26] = [10, 12, 5, 4, 6]
+edges[17][27] = [4, 12]
+edges[17][28] = [13]
+edges[17][29] = [10, 12, 15]
+edges[17][31] = [4]
+edges[17][34] = [4]
+edges[17][37] = [10, 12, 31]
+edges[18][6] = [4, 28, 17, 5]
+edges[18][7] = [17, 6, 5, 4, 10, 8, 12, 7, 31]
+edges[18][8] = [17, 4, 13]
+edges[18][9] = [17, 6, 4, 8, 5]
+edges[18][10] = [11, 17, 6, 4, 31, 24, 10]
+edges[18][11] = [17, 13, 4, 5, 20]
+edges[18][12] = [17, 4, 6, 7, 10]
+edges[18][13] = [4, 17]
+edges[18][14] = [4, 16, 17, 23, 27]
+edges[18][15] = [4, 17, 5]
+edges[18][16] = [17]
+edges[18][17] = [17, 14, 13]
+edges[18][18] = [27, 21, 17, 6, 4, 10, 7, 5]
+edges[18][19] = [4, 6, 10, 17]
+edges[18][20] = [17]
+edges[18][21] = [4, 17]
+edges[18][22] = [19, 4, 21, 17]
+edges[18][23] = [17, 4]
+edges[18][24] = [17, 6]
+edges[18][26] = [17, 6, 10]
+edges[18][27] = [4, 17, 21]
+edges[18][28] = [17, 13]
+edges[18][29] = [17, 6, 9, 10]
+edges[18][31] = [4, 17]
+edges[18][32] = [17]
+edges[18][37] = [17, 6, 4, 31, 5, 10]
+edges[18][39] = [17]
+edges[18][40] = [4]
+edges[19][6] = [4]
+edges[19][7] = [4, 17, 7]
+edges[19][9] = [4]
+edges[19][10] = [11]
+edges[19][13] = [4]
+edges[19][14] = [4]
+edges[19][15] = [4]
+edges[19][18] = [4]
+edges[19][38] = [4]
+edges[20][8] = [4]
+edges[20][9] = [4]
+edges[20][10] = [11]
+edges[20][15] = [4]
+edges[20][18] = [4]
+edges[21][6] = [5, 4, 23]
+edges[21][7] = [10, 12, 15, 4]
+edges[21][8] = [20]
+edges[21][9] = [4]
+edges[21][10] = [10, 11]
+edges[21][11] = [20]
+edges[21][12] = [12, 10]
+edges[21][14] = [16, 4]
+edges[21][15] = [4, 5]
+edges[21][17] = [14]
+edges[21][18] = [12, 10, 4, 5]
+edges[21][19] = [10, 12, 4]
+edges[21][20] = [12]
+edges[21][26] = [12]
+edges[21][29] = [10, 12]
+edges[21][37] = [12, 10]
+edges[22][8] = [20]
+edges[22][10] = [14, 11]
+edges[22][11] = [20]
+edges[22][13] = [20]
+edges[22][14] = [4]
+edges[22][15] = [20]
+edges[22][17] = [14, 20]
+edges[22][18] = [20, 14]
+edges[22][23] = [20]
+edges[22][24] = [14, 20]
+edges[22][25] = [22]
+edges[22][28] = [20]
+edges[22][31] = [20]
+edges[23][6] = [4, 5, 17]
+edges[23][7] = [10, 12, 4, 5]
+edges[23][8] = [20, 10]
+edges[23][9] = [10, 4, 12]
+edges[23][10] = [11, 5, 10]
+edges[23][11] = [20, 10]
+edges[23][12] = [10, 4, 12]
+edges[23][13] = [20]
+edges[23][14] = [18, 4, 16, 23]
+edges[23][15] = [4, 5]
+edges[23][17] = [14]
+edges[23][18] = [10, 20, 4, 5]
+edges[23][19] = [10, 12]
+edges[23][22] = [4, 19]
+edges[23][26] = [10, 4, 12]
+edges[23][29] = [10]
+edges[23][31] = [4]
+edges[23][32] = [4]
+edges[23][37] = [10, 31]
+edges[24][6] = [4, 5, 15]
+edges[24][7] = [6, 15, 12, 4]
+edges[24][8] = [13, 6, 20]
+edges[24][9] = [15, 6, 4, 5]
+edges[24][10] = [11, 6, 24, 31, 15]
+edges[24][11] = [6, 13, 20, 4]
+edges[24][12] = [12, 4, 15, 6]
+edges[24][13] = [20, 15]
+edges[24][14] = [18, 4, 23, 16]
+edges[24][15] = [4, 5, 15]
+edges[24][17] = [14, 6]
+edges[24][18] = [6, 12, 15, 4, 14]
+edges[24][19] = [12, 6]
+edges[24][21] = [15]
+edges[24][22] = [4, 19]
+edges[24][24] = [20]
+edges[24][26] = [12, 6, 15]
+edges[24][28] = [13]
+edges[24][29] = [12, 6, 15]
+edges[24][31] = [4]
+edges[24][33] = [6]
+edges[24][34] = [4]
+edges[24][37] = [4, 15]
+edges[24][40] = [4, 6]
+edges[25][6] = [4, 5]
+edges[25][8] = [13]
+edges[25][10] = [11]
+edges[26][7] = [7, 4]
+edges[26][9] = [4]
+edges[26][10] = [11]
+edges[26][12] = [4]
+edges[26][14] = [4]
+edges[26][38] = [4]
+edges[27][6] = [4]
+edges[27][7] = [4, 7, 5, 8, 10]
+edges[27][9] = [4, 8]
+edges[27][10] = [25, 11, 21, 5, 4]
+edges[27][13] = [4]
+edges[27][14] = [4]
+edges[27][18] = [4, 5]
+edges[27][19] = [4]
+edges[27][21] = [4]
+edges[27][26] = [5]
+edges[27][27] = [5, 4, 21]
+edges[27][29] = [17, 5]
+edges[27][37] = [4, 8, 7]
+edges[28][6] = [4, 5, 21]
+edges[28][7] = [6, 15, 12, 4]
+edges[28][8] = [4]
+edges[28][9] = [15, 4, 6]
+edges[28][10] = [11, 15, 4]
+edges[28][12] = [15, 6]
+edges[28][13] = [5]
+edges[28][14] = [18, 4, 29]
+edges[28][15] = [4, 5, 15]
+edges[28][17] = [14]
+edges[28][18] = [6, 19, 15]
+edges[28][19] = [6]
+edges[28][20] = [15]
+edges[28][22] = [4, 19]
+edges[28][26] = [6, 12]
+edges[28][29] = [6]
+edges[28][31] = [4]
+edges[28][34] = [4]
+edges[28][37] = [15, 6]
+edges[29][6] = [4, 5, 28, 21]
+edges[29][7] = [10, 6, 12, 15, 8, 4, 5]
+edges[29][8] = [20, 4]
+edges[29][9] = [4, 6, 10, 15, 12]
+edges[29][10] = [11, 31, 24, 10, 20]
+edges[29][11] = [20, 4, 10]
+edges[29][12] = [10, 6, 12]
+edges[29][13] = [10, 15, 4, 20]
+edges[29][14] = [16, 4, 18]
+edges[29][15] = [5, 4]
+edges[29][17] = [20, 14, 4]
+edges[29][18] = [10, 5, 4, 12, 6]
+edges[29][19] = [10, 12, 6, 4]
+edges[29][20] = [12]
+edges[29][21] = [4]
+edges[29][22] = [4]
+edges[29][24] = [4]
+edges[29][26] = [10, 12]
+edges[29][27] = [10, 4]
+edges[29][29] = [10, 12]
+edges[29][31] = [4]
+edges[29][37] = [10, 12, 31, 4, 6]
+edges[29][39] = [12]
+edges[31][6] = [5, 4]
+edges[31][7] = [10, 12, 4, 15]
+edges[31][8] = [10, 20]
+edges[31][9] = [4, 5]
+edges[31][10] = [11, 10, 24, 31, 17, 9]
+edges[31][11] = [20, 30]
+edges[31][12] = [10, 12]
+edges[31][13] = [20]
+edges[31][14] = [16, 4, 18, 5]
+edges[31][15] = [4, 5]
+edges[31][17] = [14, 20]
+edges[31][18] = [10, 12, 20, 5, 17]
+edges[31][19] = [12, 10]
+edges[31][20] = [12]
+edges[31][22] = [4]
+edges[31][24] = [20]
+edges[31][27] = [10]
+edges[31][29] = [10]
+edges[31][37] = [10, 4, 31]
+edges[32][6] = [5, 4]
+edges[32][7] = [4, 10, 12]
+edges[32][8] = [20, 10]
+edges[32][9] = [15, 4]
+edges[32][10] = [4, 11, 24, 31, 10]
+edges[32][11] = [20, 10]
+edges[32][12] = [10, 4]
+edges[32][13] = [20]
+edges[32][14] = [4, 18, 16]
+edges[32][15] = [4, 5]
+edges[32][17] = [14, 20]
+edges[32][18] = [12, 10, 4, 5]
+edges[32][19] = [10, 4, 12]
+edges[32][20] = [4, 12, 10]
+edges[32][22] = [4]
+edges[32][26] = [12, 4, 10, 5]
+edges[32][27] = [10]
+edges[32][28] = [10]
+edges[32][31] = [4]
+edges[32][37] = [4, 31, 12]
+edges[33][9] = [4]
+edges[33][10] = [11]
+edges[34][6] = [5]
+edges[34][7] = [10, 4]
+edges[34][8] = [10]
+edges[34][10] = [11]
+edges[34][14] = [18, 4, 16]
+edges[34][15] = [4]
+edges[34][19] = [10]
+edges[35][10] = [11]
+edges[35][15] = [4]
+edges[36][6] = [4, 5]
+edges[37][6] = [4, 5]
+edges[37][7] = [4, 7, 8, 5, 21, 6]
+edges[37][8] = [4, 10]
+edges[37][9] = [4, 21]
+edges[37][10] = [21, 11, 25, 8, 4]
+edges[37][12] = [4, 21]
+edges[37][14] = [4]
+edges[37][15] = [8, 4]
+edges[37][18] = [4]
+edges[37][21] = [4]
+edges[37][27] = [21, 5]
+edges[37][29] = [4]
+edges[37][32] = [4]
+edges[37][37] = [8, 21, 4, 5, 7, 17]
+edges[37][39] = [8]
+edges[37][40] = [4]
+edges[39][6] = [21]
+edges[39][7] = [8]
+edges[39][10] = [11]
+edges[39][14] = [4]
+edges[39][37] = [8]
+edges[40][10] = [11]
+edges[41][10] = [11]
+edges[41][41] = [21]
+def = [4]
diff --git a/dependencyParser/experimental/examples/is output.txt b/dependencyParser/experimental/examples/is output.txt
new file mode 100644
index 0000000..24e879b
--- /dev/null
+++ b/dependencyParser/experimental/examples/is output.txt
@@ -0,0 +1,199 @@
+-----m_encoder-----
+m_featureSets[WORD] = {przestępca: 2237, sypiała: 40681, postawny: 28676, chrzcielnicy: 33013, rodzinne: 17265, rodzinna: 39199, uwięzić: 27792, bieganiu: 27332, zmienione: 18988, bootującej: 16343, przestępcy: 2234, flegmę: 4944, Funkcjonariusze: 17882, wierzchołki: 31813, zmieniona: 36337, odwieźć: 8897, posiłek: 2576, Aaa: 39718, !: 358, ": 5927, wprowadzone: 32738, obłożyło: 26137, BCC: 25412, $: 34107, %: 34067, ': 33700, kategoriach: 37908, (: 2598, wprowadzono: 17264, opiekuje: 10886, ): 2601, kalendarzu: 5441, +: 38035, ,: 27, -: 185, modułu: 37422, .: 16, /: 33255, krytyka: 15299, bliskich: 12516, postawić: 2018, Dorohusk: 9491, zmieniony: 14640, poddawane: 35462, krytyki: 45132, pacjent: 7540, poddawano: 43369, :: 33240, wzór: 977, ;: 4750, wiązać: 9099, chrzcielnica: 33014, ?: 188, A: 990, B: 14265, inwalidę: 33654, C: 26676, utopić: 7389, D: 21028, Faktycznie: 31464, E: 45436, piękne: 17211, G: 2424, H: 10704, odmaterializować: 32056, I: 597, Zanim: 20233, J: 10708, K: 14645, botanik: 32047, piękno: 29553, pokonywania: 34247, L: 39989, M: 1128, N: 10706, O: 2903, P: 13636, podpunkt: 39316, Q: 27885, Pięcioletnia: 18978, piękny: 2167, R: 3578, S: 1894, T: 23370, U: 8598, techniki: 15595, Właścicielką: 2109, V: 42064, W: 24, X: 8522, Aby: 6473, Z: 164, [: 34398, zgłaszających: 28593, poświęcony: 19835, ]: 34399, technika: 15597, zwalczać: 52, zarys: 16637, a: 1000, b: 38728, c: 45216, d: 44297, e: 44042, rodzinny: 6233, Francesca: 33146, g: 38126, Ach: 40856, i: 118, Układy: 14877, j: 40762, rozczarować: 3772, postawił: 14574, choćby: 17341, l: 36850, m: 312, zlikwidujmy: 44456, o: 208, p: 15743, bliskiej: 10632, r: 3158, osadzono: 26935, s: 35796, Act: 37911, u: 346, mięśni: 16459, w: 18, piękna: 2164, z: 35, wzgórza: 26972, wzgórze: 16580, socjusza: 929, Pomorskim: 32111, ochroniarzami: 26672, Ade: 32920, postawną: 28671, włoszczowski: 27202, mówienia: 40887, kastrować: 17185, odreagowywać: 17465, BFR: 37902, bioderku: 28286, opiekuna: 11927, bioderko: 28287, położonych: 34242, Adu: 32916, zawisł: 10846, pasować: 8390, OHIM: 34517, Komendant: 24696, tradycyjnie: 17684, dopuszczony: 11012, misyjne: 23923, posprzątać: 39630, odczują: 11392, Dorucha: 20238, popędzić: 39459, wyluzowanego: 2299, Barcelona: 37732, piękną: 3560, Lodów: 20975, epitetów: 32976, brzucha: 5337, nagrobkiem: 25688, asfaltowej: 19742, efektywnej: 34887, specjalnego: 2172, wiązka: 37020, mikrogram: 37721, czapeczką: 30098, poświęcone: 6307, rozłożyła: 134, rodzinie: 14546, misyjny: 23924, przesadzasz: 24792, sposoby: 34918, »: 40902, umożliwiać: 7217, sposobu: 16316, ministerialny: 31704, Gemini: 18775, międzyrządowych: 26800, szklanki: 31359, Jeleni: 9055, Havlovej: 5342, konfiskatę: 31558, płucnego: 43458, salami: 6906, Aga: 28104, wabiąc: 30678, brzuchu: 37800, Wróblewski: 26732, BIC: 37311, walczyli: 37040, efektywnie: 41728, szklanka: 7907, trzymiesięcznej: 10550, BIG: 26309, dobrego: 10826, chmur: 40922, mniejszej: 38757, finiszowała: 31529, Lędziny: 22545, wyślizgnąć: 39457, ciągnie: 28040, karykatury: 39255, wyssać: 9381, pleść: 29367, monoetylowy: 35498, wodami: 35265, ciągnik: 21017, ściągnęli: 10648, milijednostka: 45203, szelmowskim: 35929, CANCIDAS: 43908, gruzów: 10400, Planował: 35070, rozstrzygania: 34787, utalentowanych: 43924, wiązał: 25080, potrzebujesz: 32483, spadochronowy: 3031, poniesionych: 44410, idziemy: 19257, kłopotliwy: 6355, [import]cie: 26420, karykatura: 31715, bogatsze: 6261, wanadowych: 18734, wyświadczyć: 42368, odymać: 22424, pozwoliły: 10795, benzo[a]pirenu: 35457, współczesność: 9110, suszyła: 25429, krytycy: 19412, koszt: 11264, Lipnik: 30001, prześliźnie: 30967, koszu: 17011, gęstnieć: 28811, czapeczka: 30102, obdarzyła: 43013, dumna: 23426, zrozumieć: 5867, władca: 33474, Partyzanci: 31227, wodach: 31986, sposobność: 25005, wylizać: 27337, starania: 42671, frontowy: 36080, pozwoliła: 6850, odesłać: 23040, standardowy: 39222, twardziel: 17457, tknąć: 20905, staranie: 4587, spacerujących: 29650, reform: 20473, homoseksualizm: 18945, Biodra: 32187, wydajniej: 22061, standardowo: 21153, efektowny: 22025, blasku: 25583, kładziesz: 39426, domowego: 16806, inseminatora: 23392, oczywisty: 11577, złożyć: 4473, ń: 19637, czatowali: 32624, Wycelowała: 13004, Estonii: 32334, opiekują: 19124, snów: 21277, kosztowna: 43102, uważała: 25072, kosztowny: 8830, budowany: 15773, frontowe: 36077, Richard: 35355, pseudoeuropejczyków: 12477, szerokopasmowy: 43242, Treurnicht: 26639, Rybny: 33107, ś: 464, dłuższą: 4165, urzędniczki: 18365, mroźny: 21919, stanął: 1038, oskrzelowa: 16531, BMS: 34953, terytoriach: 38747, zaznaczyć: 15250, Akt: 25387, rozliczalność: 38124, urzędniczka: 18372, BMW: 25915, oczywiste: 11572, oskrzelowy: 16537, weryfikacyjnych: 43732, nastawionych: 28467, zagrożeniach: 35851, mogli: 1044, Garrett: 35309, Ala: 2394, Ale: 65, biologicznego: 36215, budowane: 31971, ż: 23896, Saladyn: 31188, nienawiści: 43362, dociera: 30039, Estonia: 32339, dumny: 21164, stypendium: 13287, włączając: 26727, Angeli: 4481, uzbrojenie: 35747, Alp: 30145, atakować: 2409, wydziału: 2173, Awiwie: 17076, Angela: 4484, Zatrzymanym: 2239, promocyjny: 22286, Singapurze: 21806, Organizatorzy: 7931, MODUł: 37957, Jerozolimski: 31189, szklankę: 7905, Pluj: 25067, Nauki: 13611, przyniesiesz: 38787, artretyzm: 33648, Plus: 42683, warkoczyk: 15700, komórce: 38113, Śrem: 21288, Facet: 32705, nieformalny: 38084, wynagrodzenia: 23439, większej: 35518, nieobowiązkowy: 35340, zasad: 21652, sposobów: 32477, uniezależnić: 28118, wydaniem: 20301, wynagrodzenie: 23443, tabelaryczny: 43978, szerokopasmowa: 43237, Shimada: 23144, nieobowiązkowe: 35338, uzbrojeniu: 35746, Kambakhsha: 40354, żołnierzami: 5492, ruchem: 3794, zmienioną: 34400, Ani: 2797, stanąć: 1041, złożył: 12489, harcerz: 18915, Centralnego: 33835, białaczką: 17529, ważniejszych: 27342, zrozumiał: 5863, posiłki: 37034, Wyrzucili: 30085, dłuższy: 29997, efektowna: 22024, farmakodynamiczny: 37831, nieoficjalnych: 18845, popędzać: 24003, komórek: 14783, mikroprzedsiębiorstwo: 38224, przypadło: 43833, odesłał: 24701, popędzili: 39454, Tych: 12684, dzieciobójstwo: 41508, promocyjne: 40736, przypadły: 32145, kartuski: 13201, kotce: 10495, zapiaszczyć: 38649, niekonwencjonalnych: 29528, pasożytów: 44103, dzieciobójstwa: 41503, Olimpijskie: 9957, BRH: 7444, Koncepcja: 43996, pokrzyżować: 31707, oferent: 35914, strun: 15254, fluorytowy: 18580, Afrykańczyku: 3460, grzybów: 13232, pomocowego: 34648, nagrodzonych: 27252, zagrożeniami: 21381, niewyraźnym: 23125, zaopiekował: 41339, sprowadzenie: 1962, planujemy: 2276, Piotra: 5837, zatrzaśnięty: 1976, odpocząć: 7853, Zgodnie: 6953, woleć: 17913, niezrealizowane: 15016, Asuan: 20901, Tegoroczną: 21140, zatwierdzony: 6780, wymieszać: 19898, Pierwsi: 36302, kamieniarze: 23698, powstanie: 8549, Podpisał: 19215, Spanikowani: 28196, Karaibów: 43788, obejrzał: 9420, starym: 7466, zdołali: 31631, gwiazdy: 8905, dźwigać: 28848, bezpieczną: 14012, powstaniu: 8544, powstrzyma: 35683, Zamaskowany: 1278, umacnianiu: 40842, Trójstronnej: 16714, pokrzyżował: 31706, zatwierdzona: 42812, zadźgać: 14794, lokatorskiej: 29786, zatwierdzone: 42479, Art: 35878, karami: 10602, rzępolić: 11410, powtarzać: 11367, bankowość: 28460, Dante: 43453, Słyszała: 22616, Zgłoszony: 41049, towarzyski: 6270, wolał: 17910, nieformalne: 39775, zaopiekować: 15763, Przerwała: 33451, powstania: 6800, szałasy: 28199, wybaczysz: 38404, uczulać: 16550, Spójrz: 30877, dinozaur: 44030, komórka: 3418, reporter: 23991, obejrzeć: 2436, Wpełzł: 34447, Gazprom: 37514, marketing: 45437, Assicurazioni: 38378, zaimprowizowanych: 22676, naczynku: 36254, Niemniej: 36996, dźwigał: 28846, Milkowszczyzna: 16595, połowach: 33261, poczerwieniała: 24193, uzgadniania: 43867, tortura: 24499, naczynko: 10717, Częstochowy: 15811, Świetnie: 44311, Podlaski: 30768, rysowali: 32697, chińskimi: 41670, naczynie: 13542, sparaliżowany: 1214, naczynia: 13536, zajść: 24383, namysłu: 18126, zoologiczny: 10740, przeważającą: 38513, Pomagasz: 22889, Zgięła: 33980, narodowość: 43685, zbadać: 24138, biznes: 14294, komórki: 3416, biurowiec: 13194, tereny: 45036, Podlaska: 13657, powtarzał: 18223, Początek: 6244, szklanym: 34239, terenu: 6971, sądowych: 45025, karani: 4610, władać: 23215, Bydgoszczanin: 7094, wyliczenie: 21227, białaczki: 38868, pleśniowych: 16482, bydgoszczanin: 7099, białaczka: 17532, Postanowił: 5119, Konwój: 3285, Milkowszczyznę: 16594, sporze: 14174, sforsować: 9458, Paulauskasowi: 23585, Załamała: 13067, rozejrzał: 29663, nawracać: 21769, skrypt: 35056, naczyniu: 44191, ssak: 27790, wymaga: 5691, wyminął: 32521, odmianami: 33643, Jugosławia: 22302, Pańskie: 25998, Barnard: 35078, gwiazda: 916, kompletnym: 40096, wycinać: 35720, zamilknąć: 5108, Jugosławii: 22299, przednich: 34735, Pańskim: 25995, organizatorzy: 23778, obóz: 22188, narkotyki: 12397, zaangażowanych: 36502, 241mg: 41289, postulowanego: 2892, podmiotów: 17436, Odpoczywał: 34842, objeść: 28867, odrobiła: 40754, obój: 17566, wyposażane: 42604, ugodowość: 26636, wybitny: 16171, brazylijski: 41112, Tamalana: 37596, Lyonie: 38549, zasobów: 16773, starsi: 7630, wycinek: 21081, powierzone: 44432, wydawnictw: 16782, Grozi: 9279, sprzedaży: 10599, Grozd: 8860, gimnastycznymi: 6907, wybitni: 38184, rozejrzeć: 15104, Widocznie: 10231, potwierdzającym: 42988, brazylijska: 41111, położyli: 5150, INFORMACYJNE: 37963, czasu: 3265, Ambulatorium: 24976, skrawek: 10746, tradycyjnej: 42173, wykrywa: 18063, Wstyd: 15130, porównywał: 26403, Amber: 45043, BBWR: 5642, potrzebujemy: 3957, Cegielskiego: 16900, podpisany: 27566, pomysłowy: 38585, inwalida: 3767, lotniczych: 36995, wpojono: 23593, Wyłączyła: 4957, ssać: 16919, Danny: 42217, donosów: 13793, Pomagają: 11401, karate: 13884, psychol: 32704, kanalizacja: 6837, darczyńcy: 44531, obdarzy: 44336, czasy: 7365, podpisane: 12856, Chcąc: 27894, charakter: 5179, psychoanalityk: 16245, zielonkawy: 17509, steroid: 16507, kokieteria: 11674, umrze: 37658, czaru: 11669, robimy: 26057, pomysłowa: 38583, drżące: 23773, darczyńca: 44536, gospodarczego: 19318, kokieterii: 11671, zaplanuję: 38954, wolną: 6490, zazdrośnie: 26335, schowana: 5655, bohater: 12527, Rysunek: 42589, codziennego: 41402, ogłaszaną: 20578, paradować: 38016, konkretnych: 23738, rejsowym: 2187, wyrobów: 12864, uwzględniających: 38450, formularzach: 38656, Państwowy: 12941, rozpoznawać: 39288, niezamierzony: 36873, przekroczyć: 8540, wyklucza: 13082, zawyżyć: 5712, Given: 39394, zmienionej: 36646, wynieść: 12369, porównywać: 26405, aktualizacji: 40966, kryteriach: 42686, publikowanie: 33855, Ponieważ: 2132, holdingu: 1860, aktualizacja: 40967, przytaczać: 45505, niezamierzone: 36864, czaty: 21041, wyminąć: 32522, współpracowników: 27674, zgłaszającymi: 43011, migracja: 38700, Częstochowa: 15813, bożych: 13380, puszczamy: 10477, Dojedli: 20970, migracji: 38697, zniszczyła: 32100, współgrać: 32075, Lubuscy: 2769, umożliwiał: 40853, minnesang: 20833, zniszczyły: 43598, pańskiego: 37486, Państwowa: 14495, zarabiać: 10883, zmartwić: 44568, przekroczył: 25916, inhibitorów: 37030, nagrodami: 7010, sekretów: 35451, Mocka: 7548, wolna: 218, stryj: 11451, tętnicy: 3859, wolne: 24619, BYĆ: 17813, wolni: 27864, zbliżony: 12433, Kompanii: 1858, wyposażać: 42605, wolno: 939, zwrot: 2507, kosić: 32323, używanych: 37700, wolny: 226, eksperymentów: 18388, powtarzaj: 19997, tętnica: 3868, wykryta: 31192, czaić: 38918, Dania: 17508, terytoriami: 44704, nieprzytomny: 2402, Tamalanę: 37594, CAI: 33848, przygody: 16862, przyroda: 38563, Albania: 5497, Pękali: 12145, przygoda: 11913, Jagienka: 22848, zbliżona: 40939, Zaleskiego: 1767, Danii: 17507, mających: 19186, fachowi: 13585, przyrody: 41323, Dramatyczny: 19826, większym: 9696, Emil: 25723, języku: 38087, wykryty: 6081, zmierzające: 45103, kłamiesz: 24052, fachowy: 13587, wierzchołek: 12285, emerytalnym: 9224, odporność: 16472, wprowadzony: 36633, języka: 4524, antagonista: 23548, pałeczka: 18951, podpisali: 1522, wykryte: 42250, języki: 10775, chińskich: 36796, skrawać: 14896, skrupuł: 29020, korytarzykiem: 20659, Astry: 9666, dorzecze: 35267, CCD: 41468, krytykę: 15292, siedziała: 25249, ulegająca: 36492, Navarro: 8460, uskakuje: 3516, informując: 7069, doręczyć: 8304, weteran: 30250, Bar: 7854, Badanym: 25111, ścianami: 37609, kupowali: 26036, zatelefonować: 28657, zużyć: 18727, teatrze: 1209, dzieckiem: 9588, radości: 10292, Dumnie: 30538, kinematograficznych: 44918, niewyraźnie: 22008, lekarzem: 17721, odtajnić: 21396, biolog: 27782, homoseksualista: 22929, naciągać: 15268, mydlany: 1117, Zamek: 23380, przeczulony: 14258, łydka: 12996, stres: 17464, mydlana: 1114, macicę: 23363, widowisk: 18589, Simon: 43518, stref: 13115, łydki: 12990, Bogiem: 11215, oprzytomnieć: 32767, zbliżoną: 12429, lateksowych: 44486, Wogau: 44473, palec: 5165, żywności: 7816, futerko: 33155, towarzyszą: 7241, nakładać: 32122, przyłączyć: 16444, hydrauliczny: 20201, zbóż: 27216, obejmować: 9759, instytucjonalny: 37761, zyskania: 36232, seksaferze: 13790, Regis: 24230, rozproszonych: 43661, Zeznania: 18364, punktualność: 12014, mierzynka: 15505, Manifestanci: 5284, cieszył: 29827, podpałka: 14510, ściąga: 32730, kreślić: 32749, przemawiające: 40785, Atalanta: 43294, podpałki: 14509, rodzinnym: 6230, wygramolić: 39232, kwadratowy: 8774, budynkach: 1857, Kierownik: 40864, Szujskiego: 4276, unikają: 1372, ekipie: 8126, MIESZANINACH: 33786, Zwiększyli: 38191, Wybierz: 9948, antykoncentracyjny: 22994, spowodowało: 10753, wstawię: 32470, skrawku: 38436, Nasze: 2058, kanalizację: 6831, hydroliza: 37190, wysięgnik: 3185, polepszyła: 39424, spowodowały: 18700, złożonej: 43554, ogrodowy: 13504, odbijać: 4701, Nasza: 38582, rżniętych: 28912, obracało: 44711, zobaczenia: 17205, najwięcej: 31014, nieznośnie: 6349, wstawić: 20937, Jiang: 26653, antykoncentracyjne: 22992, palca: 9378, nieśli: 30518, Przyznał: 37290, business: 37913, palce: 5162, rozliczyć: 22198, tekstu: 22001, profesora: 3077, obrazkowy: 40194, obiecuje: 33179, hydrolizy: 37181, teksty: 15654, nauczycielski: 42214, Towarzystwie: 22246, cieszyć: 1541, Dokładny: 36392, Stanowi: 26911, statku: 30542, niektórych: 16154, Bez: 5949, papierosach: 43936, robisz: 29518, gangów: 45244, klient: 4457, Kryminalnego: 23188, radykałami: 27974, polepszyły: 33861, statki: 26463, mierzynek: 15507, Źródła: 22803, odbijał: 31172, przenikliwy: 25139, wycieńczony: 2201, Dzianinę: 24205, eksploatację: 39636, nakładki: 23864, baba: 4251, kawalerię: 36061, tężeć: 17879, Algorytm: 9877, oburzeniem: 21840, Natan: 14816, mówiono: 26096, nakładka: 23871, skuteczną: 35848, oddelegowało: 19659, prawdopodobne: 22949, Źródło: 7187, oznakowane: 18517, istotna: 10895, CIF: 34658, 6­9-letni: 14209, czterdziestkę: 20895, istotne: 4174, Nietypowe: 26795, dzisiejszy: 9997, Krzysztofa: 2934, gospodarstwie: 17727, parafialnych: 6786, publicznie: 18013, obracała: 4907, wspiąć: 3425, gwiazdkowy: 44599, bagażem: 12812, strat: 8256, opłakanym: 7667, Naszą: 44927, gwiazdkowe: 45522, Chorób: 39881, istotny: 4183, rodowy: 9483, gminnymi: 25367, szczytowej: 38987, pikować: 41643, Muszę: 15313, czystej: 38281, wprowadziła: 8334, zamierzali: 28189, linkach: 37806, Muszą: 42610, Tramwaj: 30070, Roztwór: 44500, zwycięski: 17717, czeremchy: 8535, pasterz: 19593, Zamku: 36828, bada: 3573, kraksa: 20096, Eliza: 30786, wyrażonym: 18224, CBŚ: 11774, pozwolono: 36396, skrzyń: 41001, zelektryzować: 15573, dopełnić: 28211, ostrożnościowy: 44423, okresowy: 34835, PRZEGRAŁ: 19077, nizina: 20530, przypaść: 32147, przód: 11722, przeliczeniowym: 40458, Określona: 35687, prelekcji: 10135, wspiął: 3422, półtoraroczny: 26046, utrzyma: 10569, prestiżowi: 40704, wspomniano: 45048, nadchodzące: 27092, uwagach: 43151, zmaterializować: 41229, Halina: 23764, węglowodory: 37124, wprowadziło: 22552, morskiego: 7492, rozesłali: 2534, prelekcja: 10137, zwycięsko: 27984, wspomniane: 37836, czeremcha: 8538, baby: 4249, Kubusia: 24662, Towarzystwem: 19674, koordynatora: 42786, prestiżowy: 24999, kraksy: 20095, wspomniana: 32664, prestiżową: 24998, Gabrieli: 805, pozorować: 9455, zostawionych: 13349, niedozwolone: 34917, poczekalni: 30722, Południową: 35075, szpital: 1698, hamulcowe: 23865, dzwoneczków: 37243, nurtu: 45066, Porucznik: 15842, wyładowanie: 41678, dogmatyk: 39550, wyładowania: 43495, nihilizmu: 39373, Andyjskiego: 39920, hamulcowy: 23872, Dolnym: 5054, przeniesie: 2289, obrachunkowych: 34434, skrzynkach: 14693, CML: 41454, filmem: 32234, genetyczne: 31176, bezbożnica: 24241, miauknął: 7340, ChNP: 34171, genetyczna: 39343, zamienić: 3338, emerytowanych: 37414, reflektorów: 23909, Róża: 14273, genetyczny: 18392, goleniowski: 29139, maniak: 31798, Przyznam: 10020, Gabriela: 808, goleniowska: 29158, naszymi: 33195, maniackiej: 43569, niedozwolony: 34920, Spale: 19197, kontrolował: 36383, ChOG: 34173, jeżeliby: 21389, statut: 4650, wychowanek: 6614, status: 18588, zaraz: 4142, Przeważnie: 23001, wychowanie: 17384, kolorów: 35803, CO2: 33590, wstawać: 8379, kominowej: 29858, kazanie: 30321, wychowania: 22248, zaprojektowane: 36400, Izby: 8163, rozpad: 36498, dumpingu: 34655, paliw: 22939, serwisować: 40911, hotelach: 16215, wychodzić: 4730, nieporadnie: 35758, publicznej: 17849, palio: 25826, strop: 27879, stron: 4590,...} (exceeds maximum print length)
+m_featureSets[D] = {LA: 1, <None>: 0, RA: 2}
+m_featureSets[POS] = {aglt: 25, pant: 34, adjp: 35, conj: 18, ppas: 13, num: 12, <None>: 0, STPOS: 4, fin: 11, bedzie: 28, STR: 2, ign: 37, praet: 8, ger: 29, pred: 24, imps: 23, pact: 21, impt: 32, prep: 6, inf: 17, ppron12: 26, comp: 22, numcol: 38, burk: 39, interp: 10, pcon: 31, adj: 9, MID: 1, subst: 7, depr: 33, <root-POS>: 5, brev: 27, adjc: 36, adv: 15, adja: 30, xxx: 41, END: 3, siebie: 20, ppron3: 19, winien: 16, qub: 14, interj: 40}
+m_featureSets[DIST] = {0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, <None>: 0, 10: 7}
+m_featureSets[F] = {com: 25, acc: 2, loc: 12, agl: 34, pun: 31, npraep: 27, <None>: 0, congr: 22, voc: 38, nom: 6, sup: 35, sec: 32, neg: 37, gen: 10, rec: 18, wok: 3, sg: 4, pos: 11, praep: 24, nwok: 13, dat: 21, perf: 8, aff: 19, ter: 16, m1: 7, m2: 33, f: 9, m3: 5, pri: 28, NOFEAT: 1, npun: 36, nagl: 29, imperf: 17, n: 15, p: 30, inst: 20, akc: 23, nakc: 26, pl: 14}
+m_featureSets[REL] = {<root-type>: 2, aglt: 22, aux: 13, <None>: 0, refl: 16, cond: 23, imp: 29, comp_inf: 14, neg: 18, adjunct_qt: 30, coord: 26, pred: 9, pre_coord: 27, coord_punct: 24, conjunct: 17, punct: 11, subj: 6, adjunct: 4, app: 7, comp: 5, item: 31, comp_fin: 20, complm: 19, <no-type>: 3, comp_ag: 28, pd: 15, obj: 10, ne: 8, mwe: 21, END: 1, abbrev_punct: 25, obj_th: 12}
+m_featureSets[SP] = {STR: 1, <None>: 0, END: 2}
+m_featureSets[TYPE] = {F21: 24, F20: 23, F23: 26, F22: 25, F25: 28, F120: 123, F24: 27, F121: 124, F27: 30, F122: 125, F26: 29, F123: 126, F29: 32, F124: 127, F28: 31, F125: 128, F126: 129, F127: 130, F128: 131, F129: 132, F30: 33, F32: 35, F31: 34, F34: 37, F33: 36, F36: 39, F35: 38, F110: 113, F38: 41, F111: 114, F37: 40, F112: 115, F113: 116, F39: 42, F114: 117, F115: 118, F116: 119, F117: 120, F118: 121, F119: 122, POS: 1, F41: 44, F40: 43, F43: 46, F42: 45, F: 2, F45: 48, F140: 143, F44: 47, F141: 144, F47: 50, F142: 145, F46: 49, F143: 146, F49: 52, F144: 147, F48: 51, F145: 148, F146: 149, F147: 150, F148: 151, F149: 152, F50: 53, F52: 55, F51: 54, F54: 57, F53: 56, F56: 59, F55: 58, F130: 133, F58: 61, F131: 134, F57: 60, F132: 135, F133: 136, F59: 62, F134: 137, F135: 138, F136: 139, F137: 140, F138: 141, F139: 142, F61: 64, F60: 63, F63: 66, F62: 65, F65: 68, F64: 67, F67: 70, F66: 69, F69: 72, F68: 71, F70: 73, F72: 75, F71: 74, F74: 77, F73: 76, F76: 79, F75: 78, F78: 81, F77: 80, F79: 82, F0: 3, F1: 4, F2: 5, F3: 6, F4: 7, F5: 8, F6: 9, F7: 10, F8: 11, F9: 12, F81: 84, F80: 83, F83: 86, F82: 85, F85: 88, F84: 87, F87: 90, F86: 89, F89: 92, F88: 91, <None>: 0, F100: 103, F101: 104, F102: 105, F103: 106, F104: 107, F105: 108, F106: 109, F107: 110, F108: 111, F109: 112, F90: 93, F92: 95, F91: 94, F94: 97, F93: 96, F96: 99, F95: 98, F10: 13, F98: 101, F97: 100, F12: 15, F11: 14, F99: 102, F14: 17, F13: 16, F16: 19, F15: 18, F18: 21, F17: 20, F19: 22}
+m_featureCounters = {WORD: 45576, D: 3, POS: 42, DIST: 8, F: 39, REL: 32, SP: 3, TYPE: 153}
+m_featureBits = {WORD: 16, D: 2, POS: 6, DIST: 4, F: 6, REL: 6, SP: 2, TYPE: 8}
+count = 8
+stop = false
+-------------------
+size = 1
+capacity = 1
+forms[0][0] = 2
+forms[0][1] = 3
+forms[0][2] = 4
+forms[0][3] = 5
+forms[0][4] = 6
+forms[0][5] = 7
+forms[0][6] = 8
+forms[0][7] = 9
+forms[0][8] = 10
+forms[0][9] = 11
+forms[0][10] = 12
+forms[0][11] = 13
+forms[0][12] = 14
+forms[0][13] = 15
+forms[0][14] = 16
+plemmas[0][0] = 17
+plemmas[0][1] = 18
+plemmas[0][2] = 4
+plemmas[0][3] = 5
+plemmas[0][4] = 6
+plemmas[0][5] = 7
+plemmas[0][6] = 19
+plemmas[0][7] = 20
+plemmas[0][8] = 10
+plemmas[0][9] = 21
+plemmas[0][10] = 22
+plemmas[0][11] = 13
+plemmas[0][12] = 23
+plemmas[0][13] = 15
+plemmas[0][14] = 16
+glemmas[0][0] = 17
+glemmas[0][1] = 18
+glemmas[0][2] = 4
+glemmas[0][3] = 5
+glemmas[0][4] = 6
+glemmas[0][5] = 7
+glemmas[0][6] = 19
+glemmas[0][7] = 20
+glemmas[0][8] = 10
+glemmas[0][9] = 21
+glemmas[0][10] = 22
+glemmas[0][11] = 13
+glemmas[0][12] = 23
+glemmas[0][13] = 15
+glemmas[0][14] = 16
+heads[0][0] = -1
+heads[0][1] = -1
+heads[0][2] = -1
+heads[0][3] = -1
+heads[0][4] = -1
+heads[0][5] = -1
+heads[0][6] = -1
+heads[0][7] = -1
+heads[0][8] = -1
+heads[0][9] = -1
+heads[0][10] = -1
+heads[0][11] = -1
+heads[0][12] = -1
+heads[0][13] = -1
+heads[0][14] = -1
+pheads[0][0] = -1
+pheads[0][1] = -1
+pheads[0][2] = -1
+pheads[0][3] = -1
+pheads[0][4] = -1
+pheads[0][5] = -1
+pheads[0][6] = -1
+pheads[0][7] = -1
+pheads[0][8] = -1
+pheads[0][9] = -1
+pheads[0][10] = -1
+pheads[0][11] = -1
+pheads[0][12] = -1
+pheads[0][13] = -1
+pheads[0][14] = -1
+labels[0][0] = 3
+labels[0][1] = -1
+labels[0][2] = -1
+labels[0][3] = -1
+labels[0][4] = -1
+labels[0][5] = -1
+labels[0][6] = -1
+labels[0][7] = -1
+labels[0][8] = -1
+labels[0][9] = -1
+labels[0][10] = -1
+labels[0][11] = -1
+labels[0][12] = -1
+labels[0][13] = -1
+labels[0][14] = -1
+plabels[0][0] = 3
+plabels[0][1] = -1
+plabels[0][2] = -1
+plabels[0][3] = -1
+plabels[0][4] = -1
+plabels[0][5] = -1
+plabels[0][6] = -1
+plabels[0][7] = -1
+plabels[0][8] = -1
+plabels[0][9] = -1
+plabels[0][10] = -1
+plabels[0][11] = -1
+plabels[0][12] = -1
+plabels[0][13] = -1
+plabels[0][14] = -1
+gpos[0][0] = 5
+gpos[0][1] = 6
+gpos[0][2] = 7
+gpos[0][3] = 7
+gpos[0][4] = 7
+gpos[0][5] = 7
+gpos[0][6] = 8
+gpos[0][7] = 7
+gpos[0][8] = 6
+gpos[0][9] = 7
+gpos[0][10] = 9
+gpos[0][11] = 7
+gpos[0][12] = 7
+gpos[0][13] = 7
+gpos[0][14] = 10
+pposs[0][0] = 5
+pposs[0][1] = 6
+pposs[0][2] = 7
+pposs[0][3] = 7
+pposs[0][4] = 7
+pposs[0][5] = 7
+pposs[0][6] = 8
+pposs[0][7] = 7
+pposs[0][8] = 6
+pposs[0][9] = 7
+pposs[0][10] = 9
+pposs[0][11] = 7
+pposs[0][12] = 7
+pposs[0][13] = 7
+pposs[0][14] = 10
+feats[0][1] = [2, 3]
+feats[0][2] = [4, 2, 5]
+feats[0][3] = [4, 6, 7]
+feats[0][4] = [4, 6, 7]
+feats[0][5] = [4, 6, 7]
+feats[0][6] = [4, 7, 8]
+feats[0][7] = [4, 2, 9]
+feats[0][8] = [10]
+feats[0][9] = [4, 10, 7]
+feats[0][10] = [4, 10, 7, 11]
+feats[0][11] = [4, 10, 5]
+feats[0][12] = [4, 10, 9]
+feats[0][13] = [4, 10, 9]
+pfill [0] = {}
+gfeats[0][0] = -1
+gfeats[0][1] = -1
+gfeats[0][2] = -1
+gfeats[0][3] = -1
+gfeats[0][4] = -1
+gfeats[0][5] = -1
+gfeats[0][6] = -1
+gfeats[0][7] = -1
+gfeats[0][8] = -1
+gfeats[0][9] = -1
+gfeats[0][10] = -1
+gfeats[0][11] = -1
+gfeats[0][12] = -1
+gfeats[0][13] = -1
+gfeats[0][14] = -1
+pfeats[0][0] = 0
+pfeats[0][1] = -1
+pfeats[0][2] = -1
+pfeats[0][3] = -1
+pfeats[0][4] = -1
+pfeats[0][5] = -1
+pfeats[0][6] = -1
+pfeats[0][7] = -1
+pfeats[0][8] = -1
+pfeats[0][9] = -1
+pfeats[0][10] = -1
+pfeats[0][11] = -1
+pfeats[0][12] = -1
+pfeats[0][13] = -1
+pfeats[0][14] = 0
+m_unkown = 0
+m_count = 15
+m_report = false
+m_found = false
diff --git a/dependencyParser/experimental/examples/test.csv b/dependencyParser/experimental/examples/test.csv
new file mode 100644
index 0000000..4d1eba0
--- /dev/null
+++ b/dependencyParser/experimental/examples/test.csv
@@ -0,0 +1,14 @@
+1	We	w	w	prep	prep	acc|wok	acc|wok	_	_	_	_	_	_
+2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	_	_	_	_	_	_
+3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	_	_	_	_	_	_
+4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	_	_	_	_	_	_
+5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	_	_	_	_	_	_
+6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	_	_	_	_	_	_
+7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	_	_	_	_	_	_
+8	do	do	do	prep	prep	gen	gen	_	_	_	_	_	_
+9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	_	_	_	_	_	_
+10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	_	_	_	_	_	_
+11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	_	_	_	_	_	_
+12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	_	_	_	_	_	_
+13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	_	_	_	_	_	_
+14	.	.	.	interp	interp	_	_	_	_	_	_	_	_
diff --git a/dependencyParser/experimental/examples/test.out b/dependencyParser/experimental/examples/test.out
new file mode 100644
index 0000000..51d709f
--- /dev/null
+++ b/dependencyParser/experimental/examples/test.out
@@ -0,0 +1,210 @@
+1	We	w	w	prep	prep	acc|wok	acc|wok	-1	0	_	pred	_	_
+2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
+3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
+4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	3	_	app	_	_
+5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
+6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	1	_	adjunct	_	_
+7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
+8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
+9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
+10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
+11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
+12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
+13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
+14	.	.	.	interp	interp	_	_	-1	1	_	punct	_	_
+
+1	We	w	w	prep	prep	acc|wok	acc|wok	-1	6	_	adjunct	_	_
+2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	0	_	pred	_	_
+3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
+4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	3	_	app	_	_
+5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
+6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	2	_	adjunct	_	_
+7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
+8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
+9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
+10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
+11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
+12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
+13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
+14	.	.	.	interp	interp	_	_	-1	2	_	punct	_	_
+
+1	We	w	w	prep	prep	acc|wok	acc|wok	-1	6	_	adjunct	_	_
+2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
+3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	0	_	pred	_	_
+4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
+5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
+6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	3	_	adjunct	_	_
+7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
+8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
+9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
+10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
+11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
+12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
+13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
+14	.	.	.	interp	interp	_	_	-1	3	_	punct	_	_
+
+1	We	w	w	prep	prep	acc|wok	acc|wok	-1	4	_	adjunct	_	_
+2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
+3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	adjunct	_	_
+4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	0	_	pred	_	_
+5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
+6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	4	_	comp_fin	_	_
+7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
+8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
+9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
+10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
+11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
+12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
+13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
+14	.	.	.	interp	interp	_	_	-1	4	_	punct	_	_
+
+1	We	w	w	prep	prep	acc|wok	acc|wok	-1	6	_	adjunct	_	_
+2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
+3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
+4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	3	_	app	_	_
+5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	0	_	pred	_	_
+6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	5	_	comp_fin	_	_
+7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
+8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
+9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
+10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
+11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
+12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
+13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
+14	.	.	.	interp	interp	_	_	-1	5	_	punct	_	_
+
+1	We	w	w	prep	prep	acc|wok	acc|wok	-1	6	_	adjunct	_	_
+2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
+3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
+4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	3	_	app	_	_
+5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
+6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	0	_	pred	_	_
+7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
+8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
+9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
+10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
+11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
+12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
+13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
+14	.	.	.	interp	interp	_	_	-1	6	_	punct	_	_
+
+1	We	w	w	prep	prep	acc|wok	acc|wok	-1	6	_	adjunct	_	_
+2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
+3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
+4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	3	_	app	_	_
+5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
+6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	0	_	pred	_	_
+7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
+8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
+9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
+10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
+11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
+12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
+13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
+14	.	.	.	interp	interp	_	_	-1	6	_	punct	_	_
+
+1	We	w	w	prep	prep	acc|wok	acc|wok	-1	6	_	adjunct	_	_
+2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
+3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
+4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	3	_	app	_	_
+5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
+6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	0	_	pred	_	_
+7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
+8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
+9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
+10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
+11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
+12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
+13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
+14	.	.	.	interp	interp	_	_	-1	6	_	punct	_	_
+
+1	We	w	w	prep	prep	acc|wok	acc|wok	-1	6	_	adjunct	_	_
+2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
+3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
+4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	3	_	app	_	_
+5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
+6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	0	_	pred	_	_
+7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
+8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
+9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
+10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
+11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
+12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
+13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
+14	.	.	.	interp	interp	_	_	-1	6	_	punct	_	_
+
+1	We	w	w	prep	prep	acc|wok	acc|wok	-1	6	_	adjunct	_	_
+2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
+3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
+4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	3	_	app	_	_
+5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
+6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	0	_	pred	_	_
+7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
+8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
+9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
+10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
+11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
+12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
+13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
+14	.	.	.	interp	interp	_	_	-1	6	_	punct	_	_
+
+1	We	w	w	prep	prep	acc|wok	acc|wok	-1	6	_	adjunct	_	_
+2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
+3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
+4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	3	_	app	_	_
+5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
+6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	0	_	pred	_	_
+7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
+8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
+9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
+10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
+11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	app	_	_
+12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	11	_	adjunct	_	_
+13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
+14	.	.	.	interp	interp	_	_	-1	6	_	punct	_	_
+
+1	We	w	w	prep	prep	acc|wok	acc|wok	-1	6	_	adjunct	_	_
+2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
+3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
+4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	3	_	app	_	_
+5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
+6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	0	_	pred	_	_
+7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
+8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
+9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
+10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
+11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
+12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
+13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
+14	.	.	.	interp	interp	_	_	-1	6	_	punct	_	_
+
+1	We	w	w	prep	prep	acc|wok	acc|wok	-1	6	_	adjunct	_	_
+2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
+3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
+4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	3	_	app	_	_
+5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
+6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	0	_	pred	_	_
+7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
+8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
+9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
+10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
+11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
+12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
+13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
+14	.	.	.	interp	interp	_	_	-1	6	_	punct	_	_
+
+1	We	w	w	prep	prep	acc|wok	acc|wok	-1	6	_	adjunct	_	_
+2	wtorek	wtorek	wtorek	subst	subst	sg|acc|m3	sg|acc|m3	-1	1	_	comp	_	_
+3	prezydent	prezydent	prezydent	subst	subst	sg|nom|m1	sg|nom|m1	-1	6	_	subj	_	_
+4	Robert	Robert	Robert	subst	subst	sg|nom|m1	sg|nom|m1	-1	3	_	app	_	_
+5	Choma	Choma	Choma	subst	subst	sg|nom|m1	sg|nom|m1	-1	4	_	ne	_	_
+6	skierował	skierować	skierować	praet	praet	sg|m1|perf	sg|m1|perf	-1	14	_	conjunct	_	_
+7	sprawę	sprawa	sprawa	subst	subst	sg|acc|f	sg|acc|f	-1	6	_	obj	_	_
+8	do	do	do	prep	prep	gen	gen	-1	6	_	comp	_	_
+9	rzecznika	rzecznik	rzecznik	subst	subst	sg|gen|m1	sg|gen|m1	-1	8	_	comp	_	_
+10	dyscyplinarnego	dyscyplinarny	dyscyplinarny	adj	adj	sg|gen|m1|pos	sg|gen|m1|pos	-1	9	_	adjunct	_	_
+11	UM	UM	UM	subst	subst	sg|gen|m3	sg|gen|m3	-1	9	_	adjunct	_	_
+12	Danuty	Danuta	Danuta	subst	subst	sg|gen|f	sg|gen|f	-1	9	_	app	_	_
+13	Wiech	Wiech	Wiech	subst	subst	sg|gen|f	sg|gen|f	-1	12	_	ne	_	_
+14	.	.	.	interp	interp	_	_	-1	0	_	pred	_	_
+
diff --git a/dependencyParser/experimental/mate-tools/.classpath b/dependencyParser/experimental/mate-tools/.classpath
new file mode 100644
index 0000000..4d8fea6
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="lib" path="lib/commons-math-2.2.jar"/>
+	<classpathentry kind="lib" path="/home/masterofu/workspace/mate-tools/lib/trove-2.0.4.jar"/>
+	<classpathentry kind="output" path="classes"/>
+</classpath>
diff --git a/dependencyParser/experimental/mate-tools/.externalToolBuilders/New_Builder.launch b/dependencyParser/experimental/mate-tools/.externalToolBuilders/New_Builder.launch
new file mode 100644
index 0000000..eca73f7
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/.externalToolBuilders/New_Builder.launch
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<launchConfiguration type="org.eclipse.ui.externaltools.ProgramBuilderLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/mate-tools/.project}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/mate-tools}"/>
+</launchConfiguration>
diff --git a/dependencyParser/experimental/mate-tools/.externalToolBuilders/ana.launch b/dependencyParser/experimental/mate-tools/.externalToolBuilders/ana.launch
new file mode 100644
index 0000000..09df90d
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/.externalToolBuilders/ana.launch
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/mate-tools/scripts/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="mate-tools"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_BUILDER_ENABLED" value="false"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/mate-tools/scripts/build.xml}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/mate-tools}"/>
+</launchConfiguration>
diff --git a/dependencyParser/experimental/mate-tools/.project b/dependencyParser/experimental/mate-tools/.project
new file mode 100644
index 0000000..f813b9e
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>mate-tools</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/dependencyParser/experimental/mate-tools/build.xml b/dependencyParser/experimental/mate-tools/build.xml
new file mode 100644
index 0000000..c558279
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/build.xml
@@ -0,0 +1,64 @@
+<project name="analyse" default="compile" basedir=".">
+    <description>
+        The base ant build file.
+    </description>
+    
+  <!-- set global properties for this build -->
+  <property name="src" location="src"/>
+  <property name="classes" location="classes"/>
+  <property name="dist" location="dist"/>
+  	<property name="include" location="include"/>
+
+  
+  <target name="init" description="Clears the /class directory">
+    <!-- Create the time stamp -->
+    <tstamp/> 
+    <mkdir dir="dist"/>
+    <mkdir dir="javadoc"/>
+    <mkdir dir="classes"/>
+  </target>
+
+  <target name="compile" depends="init" description="Compile the source" >
+    <!-- Compile the java code from ${src} into ${build}   executable="javac" -->
+  
+    <javac  srcdir="${src}"   
+           destdir="${classes}"          
+    	 includeantruntime="false"
+    	executable="javac.exe"
+    	   optimize="true"
+    	   debug="off"
+	   classpath=""/>
+	
+  </target>
+
+  <target name="build"  description="Build the distribution .jar file" >
+    <!-- Create the temporary distribution directory -->
+    <delete includeEmptyDirs="true"><fileset dir="dist" includes="**/*" excludes="gtc*.jar"/></delete>  
+    <mkdir dir="${dist}/temp-${DSTAMP}"/>  
+    <copy todir="${dist}/temp-${DSTAMP}"><fileset dir="${classes}" /></copy>  
+  	<copy todir="${dist}/temp-${DSTAMP}"><fileset dir="${include}" /></copy>
+    <!-- copy everything from /include/others to dist 
+    <copy todir="${dist}/temp-${DSTAMP}"><fileset dir="${include}/others" /></copy>-->
+    <!-- copy everything from /include/classes to dist 
+    <copy todir="${dist}/temp-${DSTAMP}"><fileset dir="${include}/classes" /></copy>-->
+    <!-- pack everything into a .jar file -->
+    <jar jarfile="${dist}/anna-3.5.jar" 
+         basedir="${dist}/temp-${DSTAMP}"/>
+    <delete dir="${dist}/temp-{DSTAMP}" />
+  </target>
+  
+  <target name="javadoc" depends="init" description="Create the javadoc API documentation" >
+        <delete includeEmptyDirs="true"><fileset dir="javadoc" includes="**/*"/></delete>  
+        <!-- TODO: you might add new packages to packagenames -->
+        <javadoc destdir="javadoc" access="package" source="1.4"
+            use="false" notree="false" nonavbar="false" noindex="true"
+            splitindex="false" author="true" version="true"
+            nodeprecatedlist="true" nodeprecated="false"
+            packagenames="gtc.*.*"
+            sourcepath="src" classpath="class"/>
+   </target>
+   
+
+	 <target name="all" depends="init,compile,javadoc" description="Make all" />
+</project>
+
diff --git a/dependencyParser/experimental/mate-tools/classes/decoder/ParallelDecoder$DSet.class b/dependencyParser/experimental/mate-tools/classes/decoder/ParallelDecoder$DSet.class
new file mode 100644
index 0000000..afd509c
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/decoder/ParallelDecoder$DSet.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/decoder/ParallelDecoder.class b/dependencyParser/experimental/mate-tools/classes/decoder/ParallelDecoder.class
new file mode 100644
index 0000000..238fd06
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/decoder/ParallelDecoder.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/decoder/ParallelRearrangeNBest$PA.class b/dependencyParser/experimental/mate-tools/classes/decoder/ParallelRearrangeNBest$PA.class
new file mode 100644
index 0000000..3edcd6b
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/decoder/ParallelRearrangeNBest$PA.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/decoder/ParallelRearrangeNBest.class b/dependencyParser/experimental/mate-tools/classes/decoder/ParallelRearrangeNBest.class
new file mode 100644
index 0000000..c604932
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/decoder/ParallelRearrangeNBest.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/decoder/ParallelRearrangeNBest2$PA.class b/dependencyParser/experimental/mate-tools/classes/decoder/ParallelRearrangeNBest2$PA.class
new file mode 100644
index 0000000..f1639e7
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/decoder/ParallelRearrangeNBest2$PA.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/decoder/ParallelRearrangeNBest2.class b/dependencyParser/experimental/mate-tools/classes/decoder/ParallelRearrangeNBest2.class
new file mode 100644
index 0000000..80e8921
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/decoder/ParallelRearrangeNBest2.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/examples/DependencyParser.class b/dependencyParser/experimental/mate-tools/classes/examples/DependencyParser.class
new file mode 100644
index 0000000..89ed2d4
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/examples/DependencyParser.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/examples/FullPipelineSpanish.class b/dependencyParser/experimental/mate-tools/classes/examples/FullPipelineSpanish.class
new file mode 100644
index 0000000..256caa9
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/examples/FullPipelineSpanish.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/examples/FullPipelineTest.class b/dependencyParser/experimental/mate-tools/classes/examples/FullPipelineTest.class
new file mode 100644
index 0000000..d76a879
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/examples/FullPipelineTest.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/examples/MorphTagger.class b/dependencyParser/experimental/mate-tools/classes/examples/MorphTagger.class
new file mode 100644
index 0000000..305225c
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/examples/MorphTagger.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/examples/ParseOnly.class b/dependencyParser/experimental/mate-tools/classes/examples/ParseOnly.class
new file mode 100644
index 0000000..73a8f49
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/examples/ParseOnly.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/examples/Pipeline.class b/dependencyParser/experimental/mate-tools/classes/examples/Pipeline.class
new file mode 100644
index 0000000..b8631e1
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/examples/Pipeline.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/extractors/Extractor.class b/dependencyParser/experimental/mate-tools/classes/extractors/Extractor.class
new file mode 100644
index 0000000..47ad699
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/extractors/Extractor.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/extractors/ExtractorClusterStacked.class b/dependencyParser/experimental/mate-tools/classes/extractors/ExtractorClusterStacked.class
new file mode 100644
index 0000000..d8cc567
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/extractors/ExtractorClusterStacked.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/extractors/ExtractorClusterStackedR2.class b/dependencyParser/experimental/mate-tools/classes/extractors/ExtractorClusterStackedR2.class
new file mode 100644
index 0000000..2c32133
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/extractors/ExtractorClusterStackedR2.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/extractors/ExtractorFactory.class b/dependencyParser/experimental/mate-tools/classes/extractors/ExtractorFactory.class
new file mode 100644
index 0000000..9f8fa84
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/extractors/ExtractorFactory.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/extractors/ExtractorReranker.class b/dependencyParser/experimental/mate-tools/classes/extractors/ExtractorReranker.class
new file mode 100644
index 0000000..6173744
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/extractors/ExtractorReranker.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/extractors/ParallelExtract$DSet.class b/dependencyParser/experimental/mate-tools/classes/extractors/ParallelExtract$DSet.class
new file mode 100644
index 0000000..f7ef6bf
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/extractors/ParallelExtract$DSet.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/extractors/ParallelExtract.class b/dependencyParser/experimental/mate-tools/classes/extractors/ParallelExtract.class
new file mode 100644
index 0000000..1ef577d
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/extractors/ParallelExtract.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/Closed.class b/dependencyParser/experimental/mate-tools/classes/is2/data/Closed.class
new file mode 100644
index 0000000..e7abce7
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/Closed.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/Cluster.class b/dependencyParser/experimental/mate-tools/classes/is2/data/Cluster.class
new file mode 100644
index 0000000..330151f
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/Cluster.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/D4.class b/dependencyParser/experimental/mate-tools/classes/is2/data/D4.class
new file mode 100644
index 0000000..544eae0
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/D4.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/D6.class b/dependencyParser/experimental/mate-tools/classes/is2/data/D6.class
new file mode 100644
index 0000000..274867a
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/D6.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/D7.class b/dependencyParser/experimental/mate-tools/classes/is2/data/D7.class
new file mode 100644
index 0000000..4cf1121
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/D7.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/DPSTree.class b/dependencyParser/experimental/mate-tools/classes/is2/data/DPSTree.class
new file mode 100644
index 0000000..c3cf0a4
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/DPSTree.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/DX.class b/dependencyParser/experimental/mate-tools/classes/is2/data/DX.class
new file mode 100644
index 0000000..773f0d7
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/DX.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/DataF.class b/dependencyParser/experimental/mate-tools/classes/is2/data/DataF.class
new file mode 100644
index 0000000..eb52b0e
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/DataF.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/DataFES.class b/dependencyParser/experimental/mate-tools/classes/is2/data/DataFES.class
new file mode 100644
index 0000000..c4c1f7d
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/DataFES.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/DataT.class b/dependencyParser/experimental/mate-tools/classes/is2/data/DataT.class
new file mode 100644
index 0000000..5ed10d3
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/DataT.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/Edges$C.class b/dependencyParser/experimental/mate-tools/classes/is2/data/Edges$C.class
new file mode 100644
index 0000000..b57036e
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/Edges$C.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/Edges.class b/dependencyParser/experimental/mate-tools/classes/is2/data/Edges.class
new file mode 100644
index 0000000..e293bbe
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/Edges.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/F2S.class b/dependencyParser/experimental/mate-tools/classes/is2/data/F2S.class
new file mode 100644
index 0000000..1c9ed89
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/F2S.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/F2SD.class b/dependencyParser/experimental/mate-tools/classes/is2/data/F2SD.class
new file mode 100644
index 0000000..a2b7a83
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/F2SD.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/F2SF.class b/dependencyParser/experimental/mate-tools/classes/is2/data/F2SF.class
new file mode 100644
index 0000000..f782eef
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/F2SF.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/F2SP.class b/dependencyParser/experimental/mate-tools/classes/is2/data/F2SP.class
new file mode 100644
index 0000000..34b66e0
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/F2SP.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/F2ST.class b/dependencyParser/experimental/mate-tools/classes/is2/data/F2ST.class
new file mode 100644
index 0000000..a88c6a6
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/F2ST.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/FV.class b/dependencyParser/experimental/mate-tools/classes/is2/data/FV.class
new file mode 100644
index 0000000..b4c89d2
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/FV.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/FVR.class b/dependencyParser/experimental/mate-tools/classes/is2/data/FVR.class
new file mode 100644
index 0000000..9d75826
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/FVR.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/IEncoder.class b/dependencyParser/experimental/mate-tools/classes/is2/data/IEncoder.class
new file mode 100644
index 0000000..48b863c
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/IEncoder.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/IEncoderPlus.class b/dependencyParser/experimental/mate-tools/classes/is2/data/IEncoderPlus.class
new file mode 100644
index 0000000..4ea4883
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/IEncoderPlus.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/IFV.class b/dependencyParser/experimental/mate-tools/classes/is2/data/IFV.class
new file mode 100644
index 0000000..652636d
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/IFV.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/Instances.class b/dependencyParser/experimental/mate-tools/classes/is2/data/Instances.class
new file mode 100644
index 0000000..014416a
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/Instances.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/InstancesTagger.class b/dependencyParser/experimental/mate-tools/classes/is2/data/InstancesTagger.class
new file mode 100644
index 0000000..dc155f8
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/InstancesTagger.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/IntIntHash.class b/dependencyParser/experimental/mate-tools/classes/is2/data/IntIntHash.class
new file mode 100644
index 0000000..246e0c9
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/IntIntHash.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/Long2Int.class b/dependencyParser/experimental/mate-tools/classes/is2/data/Long2Int.class
new file mode 100644
index 0000000..c11b75c
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/Long2Int.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/Long2IntExact.class b/dependencyParser/experimental/mate-tools/classes/is2/data/Long2IntExact.class
new file mode 100644
index 0000000..830c90c
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/Long2IntExact.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/Long2IntInterface.class b/dependencyParser/experimental/mate-tools/classes/is2/data/Long2IntInterface.class
new file mode 100644
index 0000000..af26b65
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/Long2IntInterface.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/Long2IntQuick.class b/dependencyParser/experimental/mate-tools/classes/is2/data/Long2IntQuick.class
new file mode 100644
index 0000000..054e0e2
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/Long2IntQuick.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/MFB.class b/dependencyParser/experimental/mate-tools/classes/is2/data/MFB.class
new file mode 100644
index 0000000..58aa597
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/MFB.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/MFC.class b/dependencyParser/experimental/mate-tools/classes/is2/data/MFC.class
new file mode 100644
index 0000000..fa3e098
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/MFC.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/MFO$Data4.class b/dependencyParser/experimental/mate-tools/classes/is2/data/MFO$Data4.class
new file mode 100644
index 0000000..dbc74bd
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/MFO$Data4.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/MFO.class b/dependencyParser/experimental/mate-tools/classes/is2/data/MFO.class
new file mode 100644
index 0000000..1125008
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/MFO.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/Open.class b/dependencyParser/experimental/mate-tools/classes/is2/data/Open.class
new file mode 100644
index 0000000..a34e40f
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/Open.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/PSTree.class b/dependencyParser/experimental/mate-tools/classes/is2/data/PSTree.class
new file mode 100644
index 0000000..3b68f29
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/PSTree.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/Parameter.class b/dependencyParser/experimental/mate-tools/classes/is2/data/Parameter.class
new file mode 100644
index 0000000..f9a70aa
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/Parameter.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/ParametersFloat.class b/dependencyParser/experimental/mate-tools/classes/is2/data/ParametersFloat.class
new file mode 100644
index 0000000..53c3f0a
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/ParametersFloat.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/Parse.class b/dependencyParser/experimental/mate-tools/classes/is2/data/Parse.class
new file mode 100644
index 0000000..bfec325
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/Parse.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/ParseNBest.class b/dependencyParser/experimental/mate-tools/classes/is2/data/ParseNBest.class
new file mode 100644
index 0000000..180e58c
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/ParseNBest.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/PipeGen.class b/dependencyParser/experimental/mate-tools/classes/is2/data/PipeGen.class
new file mode 100644
index 0000000..d3400c4
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/PipeGen.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/PrimeFinder.class b/dependencyParser/experimental/mate-tools/classes/is2/data/PrimeFinder.class
new file mode 100644
index 0000000..ec51f13
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/PrimeFinder.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/RandomIndex.class b/dependencyParser/experimental/mate-tools/classes/is2/data/RandomIndex.class
new file mode 100644
index 0000000..954f57c
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/RandomIndex.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/SentenceData09.class b/dependencyParser/experimental/mate-tools/classes/is2/data/SentenceData09.class
new file mode 100644
index 0000000..ee6d068
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/SentenceData09.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/data/Thesaurus.class b/dependencyParser/experimental/mate-tools/classes/is2/data/Thesaurus.class
new file mode 100644
index 0000000..a7d20d4
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/data/Thesaurus.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/io/CONLLReader04.class b/dependencyParser/experimental/mate-tools/classes/is2/io/CONLLReader04.class
new file mode 100644
index 0000000..3d0103f
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/io/CONLLReader04.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/io/CONLLReader06.class b/dependencyParser/experimental/mate-tools/classes/is2/io/CONLLReader06.class
new file mode 100644
index 0000000..06f8226
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/io/CONLLReader06.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/io/CONLLReader08.class b/dependencyParser/experimental/mate-tools/classes/is2/io/CONLLReader08.class
new file mode 100644
index 0000000..b1c4919
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/io/CONLLReader08.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/io/CONLLReader09.class b/dependencyParser/experimental/mate-tools/classes/is2/io/CONLLReader09.class
new file mode 100644
index 0000000..98cbf01
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/io/CONLLReader09.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/io/CONLLWriter06.class b/dependencyParser/experimental/mate-tools/classes/is2/io/CONLLWriter06.class
new file mode 100644
index 0000000..e1cdf31
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/io/CONLLWriter06.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/io/CONLLWriter09.class b/dependencyParser/experimental/mate-tools/classes/is2/io/CONLLWriter09.class
new file mode 100644
index 0000000..2697f96
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/io/CONLLWriter09.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/io/IOGenerals.class b/dependencyParser/experimental/mate-tools/classes/is2/io/IOGenerals.class
new file mode 100644
index 0000000..5346483
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/io/IOGenerals.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/io/PSReader.class b/dependencyParser/experimental/mate-tools/classes/is2/io/PSReader.class
new file mode 100644
index 0000000..d197ad7
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/io/PSReader.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/io/TigerReader$Line.class b/dependencyParser/experimental/mate-tools/classes/is2/io/TigerReader$Line.class
new file mode 100644
index 0000000..7c14ffa
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/io/TigerReader$Line.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/io/TigerReader.class b/dependencyParser/experimental/mate-tools/classes/is2/io/TigerReader.class
new file mode 100644
index 0000000..eb6aa37
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/io/TigerReader.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Evaluator$1.class b/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Evaluator$1.class
new file mode 100644
index 0000000..e015840
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Evaluator$1.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Evaluator.class b/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Evaluator.class
new file mode 100644
index 0000000..53e79f4
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Evaluator.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Lemmatizer$1.class b/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Lemmatizer$1.class
new file mode 100644
index 0000000..fce30de
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Lemmatizer$1.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Lemmatizer.class b/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Lemmatizer.class
new file mode 100644
index 0000000..b6d3745
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Lemmatizer.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/MFO.class b/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/MFO.class
new file mode 100644
index 0000000..651e2ae
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/MFO.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Options.class b/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Options.class
new file mode 100644
index 0000000..cbe3419
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Options.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Pipe$1.class b/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Pipe$1.class
new file mode 100644
index 0000000..b445f21
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Pipe$1.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Pipe.class b/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Pipe.class
new file mode 100644
index 0000000..af22121
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/Pipe.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/StringEdit.class b/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/StringEdit.class
new file mode 100644
index 0000000..22ddb78
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/lemmatizer/StringEdit.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/mtag/Convert.class b/dependencyParser/experimental/mate-tools/classes/is2/mtag/Convert.class
new file mode 100644
index 0000000..6814212
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/mtag/Convert.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/mtag/Evaluator$1.class b/dependencyParser/experimental/mate-tools/classes/is2/mtag/Evaluator$1.class
new file mode 100644
index 0000000..9ad12ae
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/mtag/Evaluator$1.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/mtag/Evaluator.class b/dependencyParser/experimental/mate-tools/classes/is2/mtag/Evaluator.class
new file mode 100644
index 0000000..5f05944
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/mtag/Evaluator.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/mtag/ExtractorM.class b/dependencyParser/experimental/mate-tools/classes/is2/mtag/ExtractorM.class
new file mode 100644
index 0000000..1dfb207
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/mtag/ExtractorM.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/mtag/MFO$Data.class b/dependencyParser/experimental/mate-tools/classes/is2/mtag/MFO$Data.class
new file mode 100644
index 0000000..fb46d59
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/mtag/MFO$Data.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/mtag/MFO$Data4.class b/dependencyParser/experimental/mate-tools/classes/is2/mtag/MFO$Data4.class
new file mode 100644
index 0000000..a3346d7
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/mtag/MFO$Data4.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/mtag/MFO.class b/dependencyParser/experimental/mate-tools/classes/is2/mtag/MFO.class
new file mode 100644
index 0000000..5014e54
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/mtag/MFO.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/mtag/Options.class b/dependencyParser/experimental/mate-tools/classes/is2/mtag/Options.class
new file mode 100644
index 0000000..a1ffdcb
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/mtag/Options.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/mtag/Pipe.class b/dependencyParser/experimental/mate-tools/classes/is2/mtag/Pipe.class
new file mode 100644
index 0000000..4d3ae21
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/mtag/Pipe.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/mtag/Tagger.class b/dependencyParser/experimental/mate-tools/classes/is2/mtag/Tagger.class
new file mode 100644
index 0000000..37af1ef
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/mtag/Tagger.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parser/Closed.class b/dependencyParser/experimental/mate-tools/classes/is2/parser/Closed.class
new file mode 100644
index 0000000..7e6161a
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parser/Closed.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parser/D5.class b/dependencyParser/experimental/mate-tools/classes/is2/parser/D5.class
new file mode 100644
index 0000000..11da4cc
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parser/D5.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parser/Decoder.class b/dependencyParser/experimental/mate-tools/classes/is2/parser/Decoder.class
new file mode 100644
index 0000000..35fbe20
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parser/Decoder.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parser/Edges$C.class b/dependencyParser/experimental/mate-tools/classes/is2/parser/Edges$C.class
new file mode 100644
index 0000000..bcbfa2e
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parser/Edges$C.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parser/Edges.class b/dependencyParser/experimental/mate-tools/classes/is2/parser/Edges.class
new file mode 100644
index 0000000..62f892e
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parser/Edges.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parser/Evaluator$Results.class b/dependencyParser/experimental/mate-tools/classes/is2/parser/Evaluator$Results.class
new file mode 100644
index 0000000..52913a2
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parser/Evaluator$Results.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parser/Evaluator.class b/dependencyParser/experimental/mate-tools/classes/is2/parser/Evaluator.class
new file mode 100644
index 0000000..cd8680f
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parser/Evaluator.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parser/Extractor.class b/dependencyParser/experimental/mate-tools/classes/is2/parser/Extractor.class
new file mode 100644
index 0000000..cb576f0
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parser/Extractor.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parser/MFO.class b/dependencyParser/experimental/mate-tools/classes/is2/parser/MFO.class
new file mode 100644
index 0000000..e2f5d9f
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parser/MFO.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parser/Open.class b/dependencyParser/experimental/mate-tools/classes/is2/parser/Open.class
new file mode 100644
index 0000000..8d4ef9b
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parser/Open.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parser/Options.class b/dependencyParser/experimental/mate-tools/classes/is2/parser/Options.class
new file mode 100644
index 0000000..806b3d0
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parser/Options.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelDecoder$DSet.class b/dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelDecoder$DSet.class
new file mode 100644
index 0000000..534b87c
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelDecoder$DSet.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelDecoder.class b/dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelDecoder.class
new file mode 100644
index 0000000..dd112d0
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelDecoder.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelExtract$DSet.class b/dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelExtract$DSet.class
new file mode 100644
index 0000000..823130d
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelExtract$DSet.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelExtract.class b/dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelExtract.class
new file mode 100644
index 0000000..7dfe35c
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelExtract.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelRearrange$PA.class b/dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelRearrange$PA.class
new file mode 100644
index 0000000..d1b8bfe
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelRearrange$PA.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelRearrange.class b/dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelRearrange.class
new file mode 100644
index 0000000..fcfed43
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parser/ParallelRearrange.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parser/Parameters.class b/dependencyParser/experimental/mate-tools/classes/is2/parser/Parameters.class
new file mode 100644
index 0000000..bc64375
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parser/Parameters.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parser/ParametersFloat.class b/dependencyParser/experimental/mate-tools/classes/is2/parser/ParametersFloat.class
new file mode 100644
index 0000000..524da17
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parser/ParametersFloat.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parser/Parser.class b/dependencyParser/experimental/mate-tools/classes/is2/parser/Parser.class
new file mode 100644
index 0000000..575c9da
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parser/Parser.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parser/Pipe.class b/dependencyParser/experimental/mate-tools/classes/is2/parser/Pipe.class
new file mode 100644
index 0000000..ea909ad
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parser/Pipe.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parser/package.html b/dependencyParser/experimental/mate-tools/classes/is2/parser/package.html
new file mode 100755
index 0000000..a4f40a2
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/classes/is2/parser/package.html
@@ -0,0 +1,11 @@
+Package info
+<ul>
+  <li> separate cluster feature to keep speed since two many features in a function reduce speed drastically. </li>
+  <li> try second order stacking features </li>
+  <li> parser stacking features </li>
+  <li> lots of cluster features </li>
+  <li> Iteration over edges and not extraction of all edges each time </li>
+  <li> integrated new structurer writer </li>
+</ul>
+  Change in FS, I observed lots of duplicated grand-children features
+<br>
\ No newline at end of file
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parserR2/Decoder.class b/dependencyParser/experimental/mate-tools/classes/is2/parserR2/Decoder.class
new file mode 100644
index 0000000..fd23b35
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parserR2/Decoder.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parserR2/Options.class b/dependencyParser/experimental/mate-tools/classes/is2/parserR2/Options.class
new file mode 100644
index 0000000..c36af6b
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parserR2/Options.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parserR2/Parameters.class b/dependencyParser/experimental/mate-tools/classes/is2/parserR2/Parameters.class
new file mode 100644
index 0000000..3ff4ebe
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parserR2/Parameters.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parserR2/ParametersFloat.class b/dependencyParser/experimental/mate-tools/classes/is2/parserR2/ParametersFloat.class
new file mode 100644
index 0000000..3837dc0
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parserR2/ParametersFloat.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parserR2/Parser.class b/dependencyParser/experimental/mate-tools/classes/is2/parserR2/Parser.class
new file mode 100644
index 0000000..2b1b742
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parserR2/Parser.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parserR2/Pipe.class b/dependencyParser/experimental/mate-tools/classes/is2/parserR2/Pipe.class
new file mode 100644
index 0000000..7067c95
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parserR2/Pipe.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parserR2/PipeReranker.class b/dependencyParser/experimental/mate-tools/classes/is2/parserR2/PipeReranker.class
new file mode 100644
index 0000000..fc6cb91
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parserR2/PipeReranker.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parserR2/Reranker.class b/dependencyParser/experimental/mate-tools/classes/is2/parserR2/Reranker.class
new file mode 100644
index 0000000..5177b92
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/parserR2/Reranker.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/parserR2/package.html b/dependencyParser/experimental/mate-tools/classes/is2/parserR2/package.html
new file mode 100755
index 0000000..6b06482
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/classes/is2/parserR2/package.html
@@ -0,0 +1,3 @@
+Package info
+ - n-best parser
+<br>
\ No newline at end of file
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/tag/ExtractorT2.class b/dependencyParser/experimental/mate-tools/classes/is2/tag/ExtractorT2.class
new file mode 100644
index 0000000..44dba9e
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/tag/ExtractorT2.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/tag/Lexicon.class b/dependencyParser/experimental/mate-tools/classes/is2/tag/Lexicon.class
new file mode 100644
index 0000000..1ea1e85
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/tag/Lexicon.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/tag/MFO$Data4.class b/dependencyParser/experimental/mate-tools/classes/is2/tag/MFO$Data4.class
new file mode 100644
index 0000000..3627f10
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/tag/MFO$Data4.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/tag/MFO.class b/dependencyParser/experimental/mate-tools/classes/is2/tag/MFO.class
new file mode 100644
index 0000000..10ea428
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/tag/MFO.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/tag/Options.class b/dependencyParser/experimental/mate-tools/classes/is2/tag/Options.class
new file mode 100644
index 0000000..e6ec2c0
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/tag/Options.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/tag/POS.class b/dependencyParser/experimental/mate-tools/classes/is2/tag/POS.class
new file mode 100644
index 0000000..8ea2052
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/tag/POS.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/tag/Tagger.class b/dependencyParser/experimental/mate-tools/classes/is2/tag/Tagger.class
new file mode 100644
index 0000000..11ac1aa
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/tag/Tagger.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/tag/package.html b/dependencyParser/experimental/mate-tools/classes/is2/tag/package.html
new file mode 100644
index 0000000..469fdf6
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/classes/is2/tag/package.html
@@ -0,0 +1,4 @@
+Package info
+<br><br>
+This parser includes a tagger into the dependency parser
+<br>
\ No newline at end of file
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/tools/IPipe.class b/dependencyParser/experimental/mate-tools/classes/is2/tools/IPipe.class
new file mode 100644
index 0000000..37a51d1
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/tools/IPipe.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/tools/Retrainable.class b/dependencyParser/experimental/mate-tools/classes/is2/tools/Retrainable.class
new file mode 100644
index 0000000..3675e0f
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/tools/Retrainable.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/tools/Tool.class b/dependencyParser/experimental/mate-tools/classes/is2/tools/Tool.class
new file mode 100644
index 0000000..0ba217e
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/tools/Tool.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/tools/ToolIO.class b/dependencyParser/experimental/mate-tools/classes/is2/tools/ToolIO.class
new file mode 100644
index 0000000..a6f87ab
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/tools/ToolIO.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/tools/Train.class b/dependencyParser/experimental/mate-tools/classes/is2/tools/Train.class
new file mode 100644
index 0000000..0551298
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/tools/Train.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/Convert.class b/dependencyParser/experimental/mate-tools/classes/is2/util/Convert.class
new file mode 100644
index 0000000..cc00ef1
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/Convert.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/Convert0409.class b/dependencyParser/experimental/mate-tools/classes/is2/util/Convert0409.class
new file mode 100644
index 0000000..ded4be5
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/Convert0409.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/ConvertADJ.class b/dependencyParser/experimental/mate-tools/classes/is2/util/ConvertADJ.class
new file mode 100644
index 0000000..c080750
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/ConvertADJ.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/ConvertLowerCase0909.class b/dependencyParser/experimental/mate-tools/classes/is2/util/ConvertLowerCase0909.class
new file mode 100644
index 0000000..d2ffbf4
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/ConvertLowerCase0909.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/ConvertTiger2CoNLL.class b/dependencyParser/experimental/mate-tools/classes/is2/util/ConvertTiger2CoNLL.class
new file mode 100644
index 0000000..d9c9cdf
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/ConvertTiger2CoNLL.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/DB.class b/dependencyParser/experimental/mate-tools/classes/is2/util/DB.class
new file mode 100644
index 0000000..50c83a6
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/DB.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/Edges$C.class b/dependencyParser/experimental/mate-tools/classes/is2/util/Edges$C.class
new file mode 100644
index 0000000..e3c539b
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/Edges$C.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/Edges.class b/dependencyParser/experimental/mate-tools/classes/is2/util/Edges.class
new file mode 100644
index 0000000..6fd6eeb
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/Edges.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/Evaluator$1.class b/dependencyParser/experimental/mate-tools/classes/is2/util/Evaluator$1.class
new file mode 100644
index 0000000..11c15b6
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/Evaluator$1.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/Evaluator$Results.class b/dependencyParser/experimental/mate-tools/classes/is2/util/Evaluator$Results.class
new file mode 100644
index 0000000..c8a450a
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/Evaluator$Results.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/Evaluator.class b/dependencyParser/experimental/mate-tools/classes/is2/util/Evaluator.class
new file mode 100644
index 0000000..c9a50ff
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/Evaluator.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/EvaluatorTagger$1.class b/dependencyParser/experimental/mate-tools/classes/is2/util/EvaluatorTagger$1.class
new file mode 100644
index 0000000..129c2f1
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/EvaluatorTagger$1.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/EvaluatorTagger$2.class b/dependencyParser/experimental/mate-tools/classes/is2/util/EvaluatorTagger$2.class
new file mode 100644
index 0000000..7a634d1
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/EvaluatorTagger$2.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/EvaluatorTagger$Results.class b/dependencyParser/experimental/mate-tools/classes/is2/util/EvaluatorTagger$Results.class
new file mode 100644
index 0000000..fc57ccc
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/EvaluatorTagger$Results.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/EvaluatorTagger.class b/dependencyParser/experimental/mate-tools/classes/is2/util/EvaluatorTagger.class
new file mode 100644
index 0000000..20d5d22
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/EvaluatorTagger.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/ExtractParagraphs.class b/dependencyParser/experimental/mate-tools/classes/is2/util/ExtractParagraphs.class
new file mode 100644
index 0000000..dc00415
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/ExtractParagraphs.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/IntStack.class b/dependencyParser/experimental/mate-tools/classes/is2/util/IntStack.class
new file mode 100644
index 0000000..4af4316
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/IntStack.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/Long2Int.class b/dependencyParser/experimental/mate-tools/classes/is2/util/Long2Int.class
new file mode 100644
index 0000000..c816fd5
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/Long2Int.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/Options.class b/dependencyParser/experimental/mate-tools/classes/is2/util/Options.class
new file mode 100644
index 0000000..8071ebb
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/Options.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/OptionsSuper.class b/dependencyParser/experimental/mate-tools/classes/is2/util/OptionsSuper.class
new file mode 100644
index 0000000..8f8a181
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/OptionsSuper.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/ParserEvaluator$Results.class b/dependencyParser/experimental/mate-tools/classes/is2/util/ParserEvaluator$Results.class
new file mode 100644
index 0000000..154033d
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/ParserEvaluator$Results.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/ParserEvaluator.class b/dependencyParser/experimental/mate-tools/classes/is2/util/ParserEvaluator.class
new file mode 100644
index 0000000..72c4f35
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/ParserEvaluator.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/Split.class b/dependencyParser/experimental/mate-tools/classes/is2/util/Split.class
new file mode 100644
index 0000000..d665e7e
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/Split.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/Split2.class b/dependencyParser/experimental/mate-tools/classes/is2/util/Split2.class
new file mode 100644
index 0000000..3222aee
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/Split2.class differ
diff --git a/dependencyParser/experimental/mate-tools/classes/is2/util/Split3.class b/dependencyParser/experimental/mate-tools/classes/is2/util/Split3.class
new file mode 100644
index 0000000..a16bbc6
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/classes/is2/util/Split3.class differ
diff --git a/dependencyParser/experimental/mate-tools/lib/commons-math-2.2.jar b/dependencyParser/experimental/mate-tools/lib/commons-math-2.2.jar
new file mode 100644
index 0000000..b29a39c
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/lib/commons-math-2.2.jar differ
diff --git a/dependencyParser/experimental/mate-tools/lib/trove-2.0.4.jar b/dependencyParser/experimental/mate-tools/lib/trove-2.0.4.jar
new file mode 100644
index 0000000..cb1c8f1
Binary files /dev/null and b/dependencyParser/experimental/mate-tools/lib/trove-2.0.4.jar differ
diff --git a/dependencyParser/experimental/mate-tools/src/decoder/ParallelDecoder.java b/dependencyParser/experimental/mate-tools/src/decoder/ParallelDecoder.java
new file mode 100755
index 0000000..cf4cfa9
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/decoder/ParallelDecoder.java
@@ -0,0 +1,189 @@
+package decoder;
+
+import java.util.ArrayList;
+import java.util.concurrent.Callable;
+
+import is2.data.Closed;
+import is2.data.DataF;
+import is2.data.Edges;
+import is2.data.Open;
+
+/**
+ * @author Bernd Bohnet, 30.08.2009
+ *
+ *         This class implements a parallel feature extractor.
+ */
+final public class ParallelDecoder implements Callable<Object> {
+	// some constants
+	private static final float INIT_BEST = (-1.0F / 0.0F);
+	private static final boolean[] DIR = { false, true };
+
+	// the data space of the weights for a dependency tree
+	final private DataF x;
+
+	private short[] pos;
+
+	private Open O[][][][];
+	private Closed C[][][][];
+
+	private int n;
+
+	boolean done = false;
+	public boolean waiting = false;
+
+	/**
+	 * Initialize the parallel decoder.
+	 *
+	 * @param pos
+	 *            part-of-speech
+	 * @param d
+	 *            data
+	 * @param edges
+	 *            part-of-speech edge mapping
+	 * @param o
+	 *            open spans
+	 * @param c
+	 *            closed spans
+	 * @param n
+	 *            number of words
+	 */
+	public ParallelDecoder(short[] pos, DataF d, Open o[][][][], Closed c[][][][], int n) {
+
+		this.pos = pos;
+		this.x = d;
+
+		this.O = o;
+		this.C = c;
+		this.n = n;
+	}
+
+	private static class DSet {
+		short w1, w2;
+	}
+
+	@Override
+	public Object call() {
+
+		while (true) {
+
+			DSet set = get();
+			if (done && set == null)
+				break;
+
+			if (set == null)
+				return null;
+
+			short s = set.w1, t = set.w2;
+
+			for (short dir = 1; dir >= 0; dir--) {
+
+				short[] labs = (dir == 1) ? Edges.get(pos[s], pos[t], false) : Edges.get(pos[t], pos[s], true);
+
+				O[s][t][dir] = new Open[labs.length];
+				for (int l = O[s][t][dir].length - 1; l >= 0; l--) {
+
+					double tRP = INIT_BEST;
+
+					Closed tL = null, tR = null;
+
+					for (int r = s; r < t; r++) {
+
+						if (s == 0 && r != 0)
+							continue;
+
+						double tLPr = INIT_BEST, tRPr = INIT_BEST;
+						Closed tLCld = null, tRCld = null;
+
+						if (r == s)
+							tLPr = dir == 1 ? x.sib[s][t][s][0][l] : x.gra[t][s][s][1][l];
+						else
+							for (int i = s + 1; i <= r; i++)
+								if (((dir == 1 ? x.sib[s][t][i][0][l] : x.gra[t][s][i][1][l])
+										+ C[s][r][1][i].p) > tLPr) {
+									tLPr = ((dir == 1 ? x.sib[s][t][i][0][l] : x.gra[t][s][i][1][l]) + C[s][r][1][i].p);
+									tLCld = C[s][r][1][i];
+								}
+
+						if (r == t - 1)
+							tRPr = dir == 1 ? x.gra[s][t][s][0][l] : x.sib[t][s][s][1][l];
+						else
+							for (int i = r + 1; i < t; i++)
+								if (((dir == 1 ? x.gra[s][t][i][0][l] : x.sib[t][s][i][1][l])
+										+ C[r + 1][t][0][i].p) > tRPr) {
+									tRPr = ((dir == 1 ? x.gra[s][t][i][0][l] : x.sib[t][s][i][1][l])
+											+ C[r + 1][t][0][i].p);
+									tRCld = C[r + 1][t][0][i];
+								}
+
+						if (tLPr + tRPr > tRP) {
+							tRP = tLPr + tRPr;
+							tL = tLCld;
+							tR = tRCld;
+						}
+					}
+					O[s][t][dir][l] = new Open(s, t, dir, labs[l], tL, tR,
+							(float) (tRP + ((dir == 1) ? x.pl[s][t] : x.pl[t][s])
+									+ ((dir == 1) ? x.lab[s][t][labs[l]][0] : x.lab[t][s][labs[l]][1])));
+				}
+			}
+			C[s][t][1] = new Closed[n];
+			C[s][t][0] = new Closed[n];
+
+			for (int m = s; m <= t; m++) {
+				for (boolean d : DIR) {
+					if ((d && m != s) || !d && (m != t && s != 0)) {
+
+						// create closed structure
+
+						double top = INIT_BEST;
+
+						Open tU = null;
+						Closed tL = null;
+						int numLabels = O[(d ? s : m)][(d ? m : t)][d ? 1 : 0].length;
+
+						// for (int l = numLabels-1; l >=0; l--) {
+						for (int l = 0; l < numLabels; l++) {
+
+							Open hi = O[(d ? s : m)][(d ? m : t)][d ? 1 : 0][l];
+							for (int amb = m + (d ? 1 : -1); amb != (d ? t : s) + (d ? 1 : -1); amb += (d ? 1 : -1)) {
+
+								if ((hi.p + C[d ? m : s][d ? t : m][d ? 1 : 0][amb].p
+										+ x.gra[d ? s : t][m][amb][d ? 0 : 1][l]) > top) {
+									top = (hi.p + C[d ? m : s][d ? t : m][d ? 1 : 0][amb].p
+											+ x.gra[d ? s : t][m][amb][(d ? 0 : 1)][l]);
+									tU = hi;
+									tL = C[d ? m : s][d ? t : m][d ? 1 : 0][amb];
+								}
+							}
+
+							if ((m == (d ? t : s)) && (hi.p + x.gra[d ? s : t][m][d ? s : t][(d ? 0 : 1)][l]) > top) {
+								top = (hi.p + x.gra[(d ? s : t)][m][d ? s : t][d ? 0 : 1][l]);
+								tU = hi;
+								tL = null;
+							}
+						}
+						C[s][t][d ? 1 : 0][m] = new Closed(s, t, m, d ? 1 : 0, tU, tL, (float) top);
+					}
+				}
+			}
+		}
+		return null;
+	}
+
+	public static ArrayList<DSet> sets = new ArrayList<DSet>();
+
+	static synchronized private DSet get() {
+		synchronized (sets) {
+			if (sets.size() == 0)
+				return null;
+			return sets.remove(sets.size() - 1);
+		}
+	}
+
+	public static void add(short w1, short w2) {
+		DSet ds = new DSet();
+		ds.w1 = w1;
+		ds.w2 = w2;
+		sets.add(ds);
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/decoder/ParallelRearrangeNBest.java b/dependencyParser/experimental/mate-tools/src/decoder/ParallelRearrangeNBest.java
new file mode 100755
index 0000000..5a16211
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/decoder/ParallelRearrangeNBest.java
@@ -0,0 +1,144 @@
+package decoder;
+
+import java.util.ArrayList;
+import java.util.concurrent.Callable;
+
+import extractors.Extractor;
+import is2.data.DataF;
+import is2.data.Edges;
+import is2.data.Parse;
+import is2.data.ParseNBest;
+
+/**
+ * @author Dr. Bernd Bohnet, 30.08.2009
+ *
+ *         This class implements a parallel edge rearrangement for
+ *         non-projective parsing; The linear method was first suggest by Rayn
+ *         McDonald et. al. 2005.
+ */
+final public class ParallelRearrangeNBest implements Callable<Object> {
+
+	// new parent child combination to explore
+	final static class PA {
+		final float p;
+		final short ch, pa;
+
+		float best;
+
+		public PA(float p2, short ch2, short pa2) {
+			p = p2;
+			ch = ch2;
+			pa = pa2;
+		}
+	}
+
+	// some data from the dependency tree
+	private short[] pos;
+	private DataF x;
+	private boolean[][] isChild;
+	public short[] heads, types;
+	private float lastNBest;
+	private float best; // best so far
+	private float threshold;
+	private Extractor extractor;
+
+	/**
+	 * Initialize the parallel rearrange thread
+	 *
+	 * @param isChild2
+	 *            is a child
+	 * @param edgesC
+	 *            the part-of-speech edge mapping
+	 * @param pos
+	 *            the part-of-speech
+	 * @param x
+	 *            the data
+	 * @param lastNBest
+	 * @param s
+	 *            the heads
+	 * @param ts
+	 *            the types
+	 */
+	public ParallelRearrangeNBest(short[] pos, DataF x, Parse p, float lastNBest, Extractor extractor, float best,
+			float threshold) {
+
+		heads = p.heads;
+
+		types = p.labels;
+
+		isChild = new boolean[heads.length][heads.length];
+
+		for (int i = 1, l1 = 1; i < heads.length; i++, l1 = i)
+			while ((l1 = heads[l1]) != -1)
+				isChild[l1][i] = true;
+
+		this.lastNBest = lastNBest;
+		this.pos = pos;
+		this.x = x;
+
+		this.extractor = extractor;
+		this.best = best;
+		this.threshold = threshold;
+	}
+
+	public ArrayList<ParseNBest> parses = new ArrayList<ParseNBest>();
+
+	@Override
+	public Object call() {
+
+		// check the list of new possible parents and children for a better
+		// combination
+		for (int ch = 1; ch < heads.length; ch++) {
+			for (short pa = 0; pa < heads.length; pa++) {
+				if (ch == pa || pa == heads[ch] || isChild[ch][pa])
+					continue;
+
+				short oldP = heads[ch], oldT = types[ch];
+				heads[ch] = pa;
+
+				short[] labels = Edges.get(pos[pa], pos[ch], ch < pa);
+
+				for (short label : labels) {
+
+					types[ch] = label;
+					float p_new = extractor.encode3(pos, heads, types, x);
+
+					if (p_new < lastNBest || ((best + this.threshold) > p_new))
+						continue;
+
+					ParseNBest p = new ParseNBest();
+					p.signature(heads, types);
+					p.f1 = p_new;
+					parses.add(p);
+				}
+
+				// change back
+				heads[ch] = oldP;
+				types[ch] = oldT;
+
+				// consider changes to labels only
+				labels = Edges.get(pos[oldP], pos[ch], ch < oldP);
+
+				for (short label : labels) {
+
+					types[ch] = label;
+					float p_new = extractor.encode3(pos, heads, types, x);
+
+					// optimization: add only if larger than smallest of n-best
+					if (p_new < lastNBest || ((best + this.threshold) > p_new))
+						continue;
+
+					ParseNBest p = new ParseNBest();
+					p.signature(heads, types);
+					p.f1 = p_new;
+					parses.add(p);
+				}
+
+				heads[ch] = oldP;
+				types[ch] = oldT;
+			}
+		}
+		return parses;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/decoder/ParallelRearrangeNBest2.java b/dependencyParser/experimental/mate-tools/src/decoder/ParallelRearrangeNBest2.java
new file mode 100644
index 0000000..6795b7b
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/decoder/ParallelRearrangeNBest2.java
@@ -0,0 +1,158 @@
+package decoder;
+
+import java.util.ArrayList;
+import java.util.concurrent.Callable;
+
+import extractors.Extractor;
+import is2.data.DataF;
+import is2.data.Edges;
+import is2.data.Parse;
+import is2.data.ParseNBest;
+
+/**
+ * @author Dr. Bernd Bohnet, 30.08.2009
+ *
+ *         This class implements a parallel edge rearrangement for
+ *         non-projective parsing; The linear method was first suggest by Rayn
+ *         McDonald et. al. 2005.
+ */
+final public class ParallelRearrangeNBest2 implements Callable<Object> {
+
+	// new parent child combination to explore
+	final static class PA {
+		final float p;
+		final short ch, pa;
+
+		public short[] heads, types;
+
+		public PA(Parse p, short ch2, short pa2) {
+			this.p = (float) p.f1;
+			heads = p.heads;
+			types = p.labels;
+			ch = ch2;
+			pa = pa2;
+
+		}
+	}
+
+	// list of parent child combinations
+	private static ArrayList<PA> parents = new ArrayList<PA>();
+
+	// some data from the dependency tree
+	private short[] pos;
+	private DataF x;
+	private float lastNBest;
+	private float threshold;
+	private Extractor extractor;
+
+	/**
+	 * Initialize the parallel rearrange thread
+	 * 
+	 * @param pos
+	 *            the part-of-speech
+	 * @param x
+	 *            the data
+	 * @param lastNBest
+	 * @param isChild2
+	 *            is a child
+	 * @param edgesC
+	 *            the part-of-speech edge mapping
+	 * @param s
+	 *            the heads
+	 * @param ts
+	 *            the types
+	 */
+	public ParallelRearrangeNBest2(short[] pos, DataF x, float lastNBest, Extractor extractor, float threshold) {
+
+		this.lastNBest = lastNBest;
+		this.pos = pos;
+		this.x = x;
+
+		this.extractor = extractor;
+		this.threshold = threshold;
+	}
+
+	public ArrayList<ParseNBest> parses = new ArrayList<ParseNBest>();
+
+	@Override
+	public Object call() {
+
+		try {
+
+			while (true) {
+				PA p = getPA();
+
+				if (p == null)
+					return parses;
+
+				short oldP = p.heads[p.ch], oldT = p.types[p.ch];
+				p.heads[p.ch] = p.pa;
+
+				short[] labels = Edges.get(pos[p.pa], pos[p.ch], p.ch < p.pa);
+
+				for (short label : labels) {
+
+					p.types[p.ch] = label;
+					float p_new = extractor.encode3(pos, p.heads, p.types, x);
+
+					if (p_new < lastNBest || ((p.p + this.threshold) > p_new))
+						continue;
+
+					ParseNBest x = new ParseNBest();
+					x.signature(p.heads, p.types);
+					x.f1 = p_new;
+					parses.add(x);
+				}
+
+				// change back
+				p.heads[p.ch] = oldP;
+				p.types[p.ch] = oldT;
+
+				// consider changes to labels only
+				labels = Edges.get(pos[oldP], pos[p.ch], p.ch < oldP);
+
+				for (short label : labels) {
+
+					p.types[p.ch] = label;
+					float p_new = extractor.encode3(pos, p.heads, p.types, x);
+
+					// optimization: add only if larger than smallest of n-best
+					if (p_new < lastNBest || ((p.p + this.threshold) > p_new))
+						continue;
+
+					ParseNBest x = new ParseNBest();
+					x.signature(p.heads, p.types);
+					x.f1 = p_new;
+					parses.add(x);
+				}
+
+				p.heads[p.ch] = oldP;
+				p.types[p.ch] = oldT;
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return parses;
+	}
+
+	/**
+	 * Add a child-parent combination which are latter explored for
+	 * rearrangement
+	 *
+	 * @param p2
+	 * @param ch2
+	 * @param pa
+	 */
+	public static void add(Parse p, short ch2, short pa) {
+		parents.add(new PA(p, ch2, pa));
+	}
+
+	public static PA getPA() {
+		synchronized (parents) {
+			if (parents.size() == 0)
+				return null;
+			return parents.remove(parents.size() - 1);
+		}
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/examples/DependencyParser.java b/dependencyParser/experimental/mate-tools/src/examples/DependencyParser.java
new file mode 100644
index 0000000..917dc04
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/examples/DependencyParser.java
@@ -0,0 +1,90 @@
+package examples;
+
+import java.io.File;
+import java.util.Arrays;
+
+import is2.data.InstancesTagger;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.io.IOGenerals;
+import is2.lemmatizer.Lemmatizer;
+import is2.lemmatizer.MFO;
+import is2.parser.Parser;
+import is2.tag.Tagger;
+//import org.apache.log4j.Logger;
+
+/**
+ * Dependency parsing
+ *
+ * @author B. Piwowarski <benjamin@bpiwowar.net>
+ * @date 10/10/12
+ */
+// @TaskDescription(name = "dependency-parser", project = "mate-tools")
+public class DependencyParser {
+	// final static private Logger LOGGER =
+	// Logger.getLogger(DependencyParser.class);
+	// @Argument(name = "lemmatizer", required = true, checkers =
+	// IOChecker.Readable.class)
+	File lemmatizerFile;
+
+	// @Argument(name = "tagger", required = true)
+	File taggerFile;
+
+	// @Argument(name = "parser", required = true)
+	File parserFile;
+
+	// @Override
+	public int execute() throws Throwable {
+
+		// Load lemmatizer
+		// LOGGER.info("Loading lemmatizer");
+		// true = do uppercase lemmatization
+		Lemmatizer lemmatizer = new Lemmatizer(lemmatizerFile.getAbsolutePath());
+
+		// Load tagger
+		// LOGGER.info("Loading tagger");
+		Tagger tagger = new Tagger(taggerFile.getAbsolutePath());
+
+		// Load parser
+		// LOGGER.info("Loading parser");
+		Parser parser = new Parser(parserFile.getAbsolutePath());
+
+		// Sentences to parse
+		String sentences[] = new String[] { "Airfields have been constructed on a number of the islands .",
+				"Private investment has even made an increasingly modern ferry fleet possible .",
+				"Politically , the 1990s have been relatively quite times for the islands ." };
+
+		CONLLReader09 reader = new CONLLReader09(CONLLReader09.NO_NORMALIZE);
+
+		for (String sentence : sentences) {
+			// Prepare the sentence
+			InstancesTagger instanceTagger = new InstancesTagger();
+			instanceTagger.init(1, new MFO());
+
+			String[] split = sentence.split("\\s+");
+			String[] splitRoot = new String[split.length + 1];
+			System.arraycopy(split, 0, splitRoot, 1, split.length);
+			splitRoot[0] = IOGenerals.ROOT;
+
+			SentenceData09 instance = new SentenceData09();
+			instance.init(splitRoot);
+
+			reader.insert(instanceTagger, instance);
+
+			SentenceData09 result = lemmatizer.apply(instance);
+			tagger.apply(result);
+			result = parser.parse(result, parser.params, false, parser.options);
+
+			// Output
+			System.out.println(Arrays.toString(result.forms));
+			System.out.println(Arrays.toString(result.plemmas));
+			System.out.println(Arrays.toString(result.ppos));
+			System.out.println(Arrays.toString(result.pheads));
+			System.out.println(Arrays.toString(result.plabels));
+			System.out.println();
+
+		}
+
+		return 0;
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/examples/FullPipelineSpanish.java b/dependencyParser/experimental/mate-tools/src/examples/FullPipelineSpanish.java
new file mode 100644
index 0000000..9bfff59
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/examples/FullPipelineSpanish.java
@@ -0,0 +1,108 @@
+package examples;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+
+import is2.data.SentenceData09;
+import is2.io.CONLLWriter09;
+import is2.lemmatizer.Lemmatizer;
+import is2.parser.Parser;
+import is2.tag.Tagger;
+import is2.tools.Tool;
+
+/**
+ * @author Bernd Bohnet, 13.09.2010
+ *
+ *         Illustrates the application the full pipeline: lemmatizer,
+ *         morphologic, tagger, and parser
+ */
+public class FullPipelineSpanish {
+
+	// shows how to parse a sentences and call the tools
+	public static void main(String[] args) throws IOException {
+
+		// Create a data container for a sentence
+		SentenceData09 i = new SentenceData09();
+
+		if (args.length == 1) { // input might be a sentence: "This is another
+								// test ."
+			StringTokenizer st = new StringTokenizer(args[0]);
+			ArrayList<String> forms = new ArrayList<String>();
+
+			forms.add("<root>");
+			while (st.hasMoreTokens())
+				forms.add(st.nextToken());
+
+			i.init(forms.toArray(new String[0]));
+
+		} else {
+			// provide a default sentence: Haus has a mutated vowel
+			i.init(new String[] { "<root>", "También", "estuve", "emocionado", "pero", "no", "pude", "imaginar", "mi",
+					"vida", "sin", "la", "gente", "tan", "intima", "a", "mí", "." });
+
+		}
+
+		// lemmatizing
+
+		System.out.println("\nReading the model of the lemmatizer");
+		Tool lemmatizer = new Lemmatizer("models/lemma-spa.model"); // create a
+																	// lemmatizer
+
+		System.out.println("Applying the lemmatizer");
+		lemmatizer.apply(i);
+
+		System.out.print(i.toString());
+		System.out.print("Lemmata: ");
+		for (String l : i.plemmas)
+			System.out.print(l + " ");
+		System.out.println();
+
+		// morphologic tagging
+
+		System.out.println("\nReading the model of the morphologic tagger");
+		is2.mtag.Tagger morphTagger = new is2.mtag.Tagger("models/mtag-spa.model");
+
+		System.out.println("\nApplying the morpholoigc tagger");
+		morphTagger.apply(i);
+
+		System.out.print(i.toString());
+		System.out.print("Morph: ");
+		for (String f : i.pfeats)
+			System.out.print(f + " ");
+		System.out.println();
+
+		// part-of-speech tagging
+
+		System.out.println("\nReading the model of the part-of-speech tagger");
+		Tool tagger = new Tagger("models/tag-spa.model");
+
+		System.out.println("\nApplying the part-of-speech tagger");
+		tagger.apply(i);
+
+		System.out.print(i.toString());
+		System.out.print("Part-of-Speech tags: ");
+		for (String p : i.ppos)
+			System.out.print(p + " ");
+		System.out.println();
+
+		// parsing
+
+		System.out.println("\nReading the model of the dependency parser");
+		Tool parser = new Parser("models/prs-spa.model");
+
+		System.out.println("\nApplying the parser");
+		parser.apply(i);
+
+		System.out.println(i.toString());
+
+		// write the result to a file
+
+		CONLLWriter09 writer = new is2.io.CONLLWriter09("example-out.txt");
+
+		writer.write(i, CONLLWriter09.NO_ROOT);
+		writer.finishWriting();
+
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/examples/FullPipelineTest.java b/dependencyParser/experimental/mate-tools/src/examples/FullPipelineTest.java
new file mode 100644
index 0000000..4aecdc2
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/examples/FullPipelineTest.java
@@ -0,0 +1,110 @@
+package examples;
+
+import java.io.File;
+
+import is2.data.InstancesTagger;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.io.CONLLWriter09;
+import is2.lemmatizer.Lemmatizer;
+import is2.lemmatizer.MFO;
+import is2.parser.Parser;
+import is2.tag.Tagger;
+//import org.apache.log4j.Logger;
+
+/**
+ * Dependency parsing
+ *
+ * @author B. Piwowarski <benjamin@bpiwowar.net>
+ * @date 10/10/12
+ */
+// @TaskDescription(name = "dependency-parser", project = "mate-tools")
+public class FullPipelineTest {
+	// final static private Logger LOGGER =
+	// Logger.getLogger(DependencyParser.class);
+	// @Argument(name = "lemmatizer", required = true, checkers =
+	// IOChecker.Readable.class)
+	public File lemmatizerFile;
+
+	// @Argument(name = "tagger", required = true)
+	public File taggerFile;
+
+	public File mtaggerFile;
+
+	// @Argument(name = "parser", required = true)
+	public File parserFile;
+
+	// @Override
+	public int execute(String source, String target) throws Throwable {
+
+		// Load lemmatizer
+		// LOGGER.info("Loading lemmatizer");
+		// true = do uppercase lemmatization
+		Lemmatizer lemmatizer = new Lemmatizer(lemmatizerFile.getAbsolutePath());
+
+		// Load tagger
+		// LOGGER.info("Loading tagger");
+		Tagger tagger = new Tagger(taggerFile.getAbsolutePath());
+
+		is2.mtag.Tagger mtagger = new is2.mtag.Tagger(mtaggerFile.getAbsolutePath());
+
+		// Load parser
+		// LOGGER.info("Loading parser");
+		Parser parser = new Parser(parserFile.getAbsolutePath());
+
+		CONLLReader09 reader = new CONLLReader09(source);
+		CONLLWriter09 writer = new CONLLWriter09(target);
+
+		int count = 0;
+		while (true) {
+			// Prepare the sentence
+			InstancesTagger is = new InstancesTagger();
+			is.init(1, new MFO());
+
+			SentenceData09 instance = reader.getNext(is);
+			if (instance == null)
+				break;
+			SentenceData09 result = null;
+			try {
+
+				System.out.print("\b\b\b\b" + count);
+				result = lemmatizer.apply(instance);
+
+				result = tagger.apply(result);
+				result = mtagger.apply(result);
+				result = parser.apply(result);
+
+				count++;
+			} catch (Exception e) {
+
+				System.out.println("error" + result);
+				System.out.println("error" + instance);
+				e.printStackTrace();
+				break;
+			}
+
+			// Output
+			writer.write(result);
+
+		}
+		writer.finishWriting();
+		return 0;
+	}
+
+	public static void main(String args[]) throws Throwable {
+
+		if (args.length < 3) {
+			System.out.println("lemmatizer-model tagger-model parser-model source target");
+			System.exit(0);
+		}
+		FullPipelineTest p = new FullPipelineTest();
+		p.lemmatizerFile = new File(args[0]);
+		p.taggerFile = new File(args[1]);
+		p.mtaggerFile = new File(args[2]);
+		p.parserFile = new File(args[3]);
+
+		p.execute(args[4], args[5]);
+
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/examples/MorphTagger.java b/dependencyParser/experimental/mate-tools/src/examples/MorphTagger.java
new file mode 100644
index 0000000..75bfc28
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/examples/MorphTagger.java
@@ -0,0 +1,79 @@
+package examples;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+
+import is2.data.SentenceData09;
+import is2.lemmatizer.Lemmatizer;
+import is2.lemmatizer.Options;
+
+/**
+ * @author Bernd Bohnet, 13.09.2010
+ *
+ *         Illustrates the application of some components: lemmatizer, tagger,
+ *         and parser
+ */
+public class MorphTagger {
+
+	/**
+	 * How to lemmatize a sentences?
+	 */
+	public static void main(String[] args) throws IOException {
+
+		// Create a data container for a sentence
+		SentenceData09 i = new SentenceData09();
+
+		if (args.length == 1) { // input might be a sentence: "This is another
+								// test ."
+			StringTokenizer st = new StringTokenizer(args[0]);
+			ArrayList<String> forms = new ArrayList<String>();
+
+			forms.add("<root>");
+			while (st.hasMoreTokens())
+				forms.add(st.nextToken());
+
+			i.init(forms.toArray(new String[0]));
+
+		} else {
+			// provide a default sentence
+			i.init(new String[] { "<root>", "Häuser", "hat", "ein", "Umlaut", "." });
+		}
+
+		// print the forms
+		for (String l : i.forms)
+			System.out.println("forms : " + l);
+
+		// tell the lemmatizer the location of the model
+		is2.lemmatizer.Options optsLemmatizer = new Options(new String[] { "-model", "models/lemma-ger.model" });
+
+		// create a lemmatizer
+		Lemmatizer lemmatizer = new Lemmatizer(optsLemmatizer.modelName);
+
+		// lemmatize a sentence; the result is stored in the stenenceData09 i
+		lemmatizer.apply(i);
+
+		// output the lemmata
+		for (String l : i.plemmas)
+			System.out.println("lemma : " + l);
+
+		is2.mtag.Options morphologicTaggerOptions = new is2.mtag.Options(
+				new String[] { "-model", "models/mtag-ger.model" });
+
+		is2.mtag.Tagger mt = new is2.mtag.Tagger(morphologicTaggerOptions);
+
+		try {
+
+			// SentenceData09 snt = is2.mtag.Main.out(i.forms, lemmata);
+
+			SentenceData09 snt = mt.apply(i);
+			for (String f : snt.pfeats)
+				System.out.println("feats " + f);
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/examples/ParseOnly.java b/dependencyParser/experimental/mate-tools/src/examples/ParseOnly.java
new file mode 100755
index 0000000..23eaf59
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/examples/ParseOnly.java
@@ -0,0 +1,48 @@
+package examples;
+
+import is2.data.SentenceData09;
+import is2.parser.Options;
+import is2.parser.Parser;
+
+public class ParseOnly {
+
+	public static void main(String[] args) {
+
+		if (args.length == 0) {
+			plain();
+		}
+
+	}
+
+	/**
+	 * This example shows how to parse a sentence.
+	 */
+	public static void plain() {
+
+		// initialize the options
+		String[] opts = { "-model", "models/prs-eng-x.model" };
+		Options options = new Options(opts);
+
+		// create a parser
+		Parser parser = new Parser(options);
+
+		// Create a data container for a sentence
+		SentenceData09 i = new SentenceData09();
+
+		// Provide the sentence
+		i.init(new String[] { "<root>", "This", "is", "a", "test", "." });
+		i.setPPos(new String[] { "<root-POS>", "DT", "VBZ", "DT", "NN", "." });
+
+		// parse the sentence
+		SentenceData09 out = parser.apply(i);
+
+		// output the sentence and dependency tree
+		System.out.println(out.toString());
+
+		// Get the parsing results
+		out.getLabels();
+		out.getParents();
+
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/examples/Pipeline.java b/dependencyParser/experimental/mate-tools/src/examples/Pipeline.java
new file mode 100644
index 0000000..dcb5a24
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/examples/Pipeline.java
@@ -0,0 +1,90 @@
+package examples;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+
+import is2.data.SentenceData09;
+import is2.lemmatizer.Lemmatizer;
+import is2.parser.Options;
+import is2.parser.Parser;
+import is2.tag.Tagger;
+
+/**
+ * @author Bernd Bohnet, 13.09.2010
+ *
+ *         Illustrates the application of some components: lemmatizer, tagger,
+ *         and parser
+ */
+public class Pipeline {
+
+	// how to parse a sentences and call the tools
+	public static void main(String[] args) throws IOException {
+
+		// Create a data container for a sentence
+		SentenceData09 i = new SentenceData09();
+
+		if (args.length == 1) { // input might be a sentence: "This is another
+								// test ."
+			StringTokenizer st = new StringTokenizer(args[0]);
+			ArrayList<String> forms = new ArrayList<String>();
+
+			forms.add("<root>");
+			while (st.hasMoreTokens())
+				forms.add(st.nextToken());
+
+			i.init(forms.toArray(new String[0]));
+
+		} else {
+			// provide a default sentence
+			i.init(new String[] { "<root>", "This", "is", "a", "test", "." });
+		}
+
+		// print the forms
+		for (String l : i.forms)
+			System.out.println("form : " + l);
+
+		// tell the lemmatizer the location of the model
+		is2.lemmatizer.Options optsLemmatizer = new is2.lemmatizer.Options(
+				new String[] { "-model", "models/lemma-eng.model" });
+
+		// create a lemmatizer
+		Lemmatizer lemmatizer = new Lemmatizer(optsLemmatizer.modelName);
+
+		// lemmatize a sentence; the result is stored in the stenenceData09 i
+		i = lemmatizer.apply(i);
+
+		// output the lemmata
+		for (String l : i.plemmas)
+			System.out.println("lemma : " + l);
+
+		// tell the tagger the location of the model
+		is2.tag.Options optsTagger = new is2.tag.Options(new String[] { "-model", "models/tag-eng.model" });
+		Tagger tagger = new Tagger(optsTagger);
+
+		// String pos[] =tagger.tag(i.forms, i.lemmas);
+		// i.setPPos(pos);
+
+		SentenceData09 tagged = tagger.tag(i);
+		for (String p : tagged.ppos)
+			System.out.println("pos " + p);
+
+		// initialize the options
+		Options optsParser = new Options(new String[] { "-model", "models/prs-eng-x.model" });
+
+		// create a parser
+		Parser parser = new Parser(optsParser);
+
+		// parse the sentence (you get a copy of the input i)
+		SentenceData09 parse = parser.apply(tagged);
+
+		System.out.println(parse.toString());
+
+		// create some trash on the hard drive :-)
+		is2.io.CONLLWriter09 writer = new is2.io.CONLLWriter09("example-out.txt");
+
+		writer.write(i);
+		writer.finishWriting();
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/extractors/Extractor.java b/dependencyParser/experimental/mate-tools/src/extractors/Extractor.java
new file mode 100644
index 0000000..190ccc6
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/extractors/Extractor.java
@@ -0,0 +1,52 @@
+/**
+ *
+ */
+package extractors;
+
+import is2.data.Cluster;
+import is2.data.DataF;
+import is2.data.FV;
+import is2.data.IFV;
+import is2.data.Instances;
+
+/**
+ * @author Dr. Bernd Bohnet, 29.04.2011
+ *
+ *
+ */
+public interface Extractor {
+
+	/**
+	 * Initializes the Extractor general parts
+	 */
+	public void initStat();
+
+	/**
+	 * Initializes the Extractor specific parts
+	 */
+	public void init();
+
+	public int basic(short[] pos, int[] forms, int w1, int w2, Cluster cluster, IFV f);
+
+	public void firstm(Instances is, int i, int w1, int w2, int j, Cluster cluster, long[] svs);
+
+	public void siblingm(Instances is, int i, short[] pos, int[] forms, int[] lemmas, short[][] feats, int w1, int w2,
+			int g, int j, Cluster cluster, long[] svs, int n);
+
+	public void gcm(Instances is, int i, int w1, int w2, int g, int j, Cluster cluster, long[] svs);
+
+	public int getType();
+
+	public FV encodeCat(Instances is, int n, short[] pos, int[] is2, int[] is3, short[] heads, short[] labels,
+			short[][] s, Cluster cl, FV pred);
+
+	public void setMaxForm(int integer);
+
+	/**
+	 * @return
+	 */
+	public int getMaxForm();
+
+	public float encode3(short[] pos, short[] heads, short[] labs, DataF x);
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/extractors/ExtractorClusterStacked.java b/dependencyParser/experimental/mate-tools/src/extractors/ExtractorClusterStacked.java
new file mode 100755
index 0000000..436bd5c
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/extractors/ExtractorClusterStacked.java
@@ -0,0 +1,1946 @@
+package extractors;
+
+import is2.data.Cluster;
+import is2.data.D4;
+import is2.data.DataF;
+import is2.data.Edges;
+import is2.data.FV;
+import is2.data.IFV;
+import is2.data.Instances;
+import is2.data.Long2IntInterface;
+import is2.data.MFB;
+
+final public class ExtractorClusterStacked implements Extractor {
+
+	public static int s_rel, s_word, s_type, s_dir, s_dist, s_feat, s_child, s_spath, s_lpath, s_pos;
+
+	final D4 d0, dl1, dl2, dwr, dr, dwwp, dw, dwp, dlf, d3lp, d2lp, d2pw, d2pp;
+
+	public final Long2IntInterface li;
+
+	public ExtractorClusterStacked(Long2IntInterface li) {
+
+		ExtractorClusterStacked.initFeatures();
+		this.li = li;
+		d0 = new D4(li);
+		dl1 = new D4(li);
+		dl2 = new D4(li);
+		dwr = new D4(li);
+		dr = new D4(li);
+		dwwp = new D4(li);
+
+		dw = new D4(li);
+		dwp = new D4(li);
+
+		dlf = new D4(li);
+		d3lp = new D4(li);
+		d2lp = new D4(li);
+		d2pw = new D4(li);
+		d2pp = new D4(li);
+
+	}
+
+	@Override
+	public void initStat() {
+
+		MFB mf = new MFB();
+		s_rel = mf.getFeatureCounter().get(REL).intValue();
+		s_pos = mf.getFeatureCounter().get(POS).intValue();
+		s_word = mf.getFeatureCounter().get(WORD).intValue();
+		s_type = mf.getFeatureCounter().get(TYPE).intValue();// mf.getFeatureBits();
+		s_dir = mf.getFeatureCounter().get(DIR);
+		la = mf.getValue(DIR, LA);
+		ra = mf.getValue(DIR, RA);
+		s_dist = mf.getFeatureCounter().get(DIST);// mf.getFeatureBits(DIST);
+		s_feat = mf.getFeatureCounter().get(FEAT);// mf.getFeatureBits(Pipe.FEAT);
+		s_spath = mf.getFeatureCounter().get(Cluster.SPATH) == null ? 0 : mf.getFeatureCounter().get(Cluster.SPATH);// mf.getFeatureBits(Cluster.SPATH);
+		s_lpath = mf.getFeatureCounter().get(Cluster.LPATH) == null ? 0 : mf.getFeatureCounter().get(Cluster.LPATH);// mf.getFeatureBits(Cluster.LPATH);
+	}
+
+	@Override
+	public void init() {
+		// DB.println("init");
+		d0.a0 = s_type;
+		d0.a1 = s_pos;
+		d0.a2 = s_pos;
+		d0.a3 = s_pos;
+		d0.a4 = s_pos;
+		d0.a5 = s_pos;
+		d0.a6 = s_pos;
+		d0.a7 = s_pos;
+		dl1.a0 = s_type;
+		dl1.a1 = s_rel;
+		dl1.a2 = s_pos;
+		dl1.a3 = s_pos;
+		dl1.a4 = s_pos;
+		dl1.a5 = s_pos;
+		dl1.a6 = s_pos;
+		dl1.a7 = s_pos;
+		dl2.a0 = s_type;
+		dl2.a1 = s_rel;
+		dl2.a2 = s_word;
+		dl2.a3 = s_pos;
+		dl2.a4 = s_pos;
+		dl2.a5 = s_pos;
+		dl2.a6 = s_pos;
+		dl2.a7 = s_pos;
+		dwp.a0 = s_type;
+		dwp.a1 = s_rel;
+		dwp.a2 = s_word;
+		dwp.a3 = s_pos;
+		dwp.a4 = s_pos;
+		dwp.a5 = s_word;
+		dwwp.a0 = s_type;
+		dwwp.a1 = s_rel;
+		dwwp.a2 = s_word;
+		dwwp.a3 = s_word;
+		dwwp.a4 = s_pos;
+		dwwp.a5 = s_word;
+		dlf.a0 = s_type;
+		dlf.a1 = s_rel;
+		dlf.a2 = s_pos;
+		dlf.a3 = s_pos;
+		dlf.a4 = s_feat;
+		dlf.a5 = s_feat;
+		dlf.a6 = s_pos;
+		dlf.a7 = s_pos;
+		d3lp.a0 = s_type;
+		d3lp.a1 = s_rel;
+		d3lp.a2 = s_lpath;
+		d3lp.a3 = s_lpath;
+		d3lp.a4 = s_lpath;
+		d3lp.a5 = s_word;
+		d3lp.a6 = s_spath;
+		d3lp.a7 = s_spath;
+		d2lp.a0 = s_type;
+		d2lp.a1 = s_rel;
+		d2lp.a2 = s_lpath;
+		d2lp.a3 = s_lpath;
+		d2lp.a4 = s_word;
+		d2lp.a5 = s_word; // d3lp.a6 = s_spath; d3lp.a7 = s_spath;
+		d2pw.a0 = s_type;
+		d2pw.a1 = s_rel;
+		d2pw.a2 = s_lpath;
+		d2pw.a3 = s_lpath;
+		d2pw.a4 = s_word;
+		d2pw.a5 = s_word; // d3lp.a6 = s_spath; d3lp.a7 = s_spath;
+		d2pp.a0 = s_type;
+		d2pp.a1 = s_rel;
+		d2pp.a2 = s_lpath;
+		d2pp.a3 = s_lpath;
+		d2pp.a4 = s_pos;
+		d2pp.a5 = s_pos; // d3lp.a6 = s_spath; d3lp.a7 = s_spath;
+	}
+
+	@Override
+	public int basic(short[] pposs, int[] form, int p, int d, Cluster cluster, IFV f) {
+
+		d0.clean();
+		dl1.clean();
+		dl2.clean();
+		dwp.clean();
+		dwwp.clean();
+		dlf.clean();
+		d3lp.clean();
+
+		d3lp.clean();
+		d2lp.clean();
+		d2pw.clean();
+		d2pp.clean();
+
+		int n = 1;
+		int dir = (p < d) ? ra : la;
+		d0.v0 = n++;
+		d0.v1 = pposs[p];
+		d0.v2 = pposs[d]; // d0.stop=4;
+		int end = (p >= d ? p : d);
+		int start = (p >= d ? d : p) + 1;
+
+		for (int i = start; i < end; i++) {
+			d0.v3 = pposs[i];
+			d0.cz4();
+			d0.csa(s_dir, dir, f);
+		}
+		return n;
+	}
+
+	@Override
+	public void firstm(Instances is, int i, int prnt, int dpnt, int label, Cluster cluster, long[] f) {
+
+		// short[] pposs, int[] form, int[] lemmas, short[][] feats
+		for (int k = 0; k < f.length; k++)
+			f[k] = 0;
+
+		short[] pposs = is.pposs[i];
+		int[] form = is.forms[i];
+		short[][] feats = is.feats[i];
+
+		int pF = form[prnt], dF = form[dpnt];
+		int pL = is.plemmas[i][prnt], dL = is.plemmas[i][dpnt];
+		int pP = pposs[prnt], dP = pposs[dpnt];
+
+		int prntLS = pF == -1 ? -1 : cluster.getLP(pF), chldLS = dF == -1 ? -1 : cluster.getLP(dF);
+
+		final int dir = (prnt < dpnt) ? ra : la;
+
+		if (pF > maxForm)
+			pF = -1;
+		if (pL > maxForm)
+			pL = -1;
+
+		if (dF > maxForm)
+			dF = -1;
+		if (dL > maxForm)
+			dL = -1;
+
+		int n = 3, c = 0;
+
+		dl2.v1 = label;
+		dl2.v0 = n++;
+		dl2.v2 = pF;
+		dl2.v3 = dP;
+		dl2.cz4();
+		f[c++] = dl2.csa(s_dir, dir);
+		dl2.v0 = n++;
+		dl2.cz3();
+		f[c++] = dl2.csa(s_dir, dir);
+		dl2.v0 = n++;
+		dl2.v2 = dF;
+		dl2.v3 = pP;
+		dl2.cz4();
+		f[c++] = dl2.csa(s_dir, dir);
+		dl2.v0 = n++;
+		dl2.cz3();
+		f[c++] = dl2.csa(s_dir, dir);
+
+		dwwp.v1 = label;
+		dwwp.v0 = n++;
+		dwwp.v2 = pF;
+		dwwp.v3 = dF;
+		dwwp.cz4();
+		f[c++] = dwwp.csa(s_dir, dir);
+
+		dl1.v1 = label;
+		dl1.v0 = n++;
+		dl1.v2 = dP;
+		dl1.cz3();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = pP;
+		dl1.cz3();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v3 = dP;
+		dl1.cz4();
+		f[c++] = dl1.csa(s_dir, dir);
+
+		int pPm1 = prnt > 0 ? pposs[prnt - 1] : s_str, dPm1 = dpnt > 0 ? pposs[dpnt - 1] : s_str;
+		int pPp1 = prnt < pposs.length - 1 ? pposs[prnt + 1] : s_end,
+				dPp1 = dpnt < pposs.length - 1 ? pposs[dpnt + 1] : s_end;
+
+		int pPm2 = prnt > 1 ? pposs[prnt - 2] : s_str, dPm2 = dpnt > 1 ? pposs[dpnt - 2] : s_str;
+		int pPp2 = prnt < pposs.length - 2 ? pposs[prnt + 2] : s_end,
+				dPp2 = dpnt < pposs.length - 2 ? pposs[dpnt + 2] : s_end;
+
+		int pFm1 = prnt > 0 ? form[prnt - 1] : s_stwrd, dFm1 = dpnt > 0 ? form[dpnt - 1] : s_stwrd;
+		int pFp1 = prnt < form.length - 1 ? form[prnt + 1] : s_stwrd,
+				dFp1 = dpnt < form.length - 1 ? form[dpnt + 1] : s_stwrd;
+
+		dl1.v0 = n++;
+		dl1.v2 = pP;
+		dl1.v3 = pPp1;
+		dl1.v4 = dP;
+		dl1.v5 = dPp1;
+		dl1.cz6();
+		f[n++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v5 = dPm1;
+		dl1.cz6();
+		f[n++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v3 = pPm1;
+		dl1.cz6();
+		f[n++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v5 = dPp1;
+		dl1.cz6();
+		f[n++] = dl1.csa(s_dir, dir);
+
+		dl1.v0 = n++;
+		dl1.v3 = pPm1;
+		dl1.cz5();
+		f[n++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v3 = dPm1;
+		dl1.cz5();
+		f[n++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v3 = dPp1;
+		dl1.cz5();
+		f[n++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v3 = pPp1;
+		dl1.cz5();
+		f[n++] = dl1.csa(s_dir, dir);
+
+		dl1.v0 = n++;
+		dl1.v2 = pP;
+		dl1.v3 = pPp2;
+		dl1.v4 = dP;
+		dl1.v5 = dPp2;
+		dl1.cz6();
+		f[n++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v5 = dPm2;
+		dl1.cz6();
+		f[n++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v3 = pPm2;
+		dl1.cz6();
+		f[n++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v5 = dPp2;
+		dl1.cz6();
+		f[n++] = dl1.csa(s_dir, dir);
+
+		dl1.v0 = n++;
+		dl1.v3 = pPm2;
+		dl1.cz5();
+		f[n++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v3 = dPm2;
+		dl1.cz5();
+		f[n++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v3 = dPp2;
+		dl1.cz5();
+		f[n++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v3 = pPp2;
+		dl1.cz5();
+		f[n++] = dl1.csa(s_dir, dir);
+
+		dl2.v0 = n++;
+		dl2.v3 = dFm1;
+		dl2.v3 = pPp1;
+		dl2.v4 = pP;
+		dl2.cz5();
+		f[n++] = dl2.getVal();
+		dl2.v0 = n++;
+		dl2.v3 = dFp1;
+		dl2.v3 = pPm1;
+		dl2.cz5();
+		f[n++] = dl2.getVal();
+		dl2.v0 = n++;
+		dl2.v3 = pFm1;
+		dl2.v3 = dPp1;
+		dl2.v4 = dP;
+		dl2.cz5();
+		f[n++] = dl2.getVal();
+		dl2.v0 = n++;
+		dl2.v3 = pFp1;
+		dl2.v3 = dPm1;
+		dl2.cz5();
+		f[n++] = dl2.getVal();
+
+		dl2.v0 = n++;
+		dl2.v3 = dFm1;
+		dl2.v3 = dPm2;
+		dl2.v4 = pP;
+		dl2.cz5();
+		f[n++] = dl2.getVal();
+		dl2.v0 = n++;
+		dl2.v3 = dFp1;
+		dl2.v3 = dPp2;
+		dl2.cz5();
+		f[n++] = dl2.getVal();
+		dl2.v0 = n++;
+		dl2.v3 = pFm1;
+		dl2.v3 = pPm2;
+		dl2.v4 = dP;
+		dl2.cz5();
+		f[n++] = dl2.getVal();
+		dl2.v0 = n++;
+		dl2.v3 = pFp1;
+		dl2.v3 = pPp2;
+		dl2.cz5();
+		f[n++] = dl2.getVal();
+
+		dwwp.v0 = n++;
+		dwwp.v2 = pF;
+		dwwp.v3 = dF;
+		dwwp.v4 = dP;
+		dwwp.cz5();
+		f[n++] = dwwp.csa(s_dir, dir);
+		dwwp.v0 = n++;
+		dwwp.v2 = pF;
+		dwwp.v3 = dF;
+		dwwp.v4 = pP;
+		dwwp.cz5();
+		f[n++] = dwwp.csa(s_dir, dir);
+		dwwp.v0 = n++;
+		dwwp.v2 = dF;
+		dwwp.v3 = pF;
+		dwwp.v4 = pP;
+		dwwp.v4 = dP;
+		dwwp.cz6();
+		f[n++] = dwwp.csa(s_dir, dir);
+
+		// lemmas
+
+		dl2.v1 = label;
+		dl2.v0 = n++;
+		dl2.v2 = pL;
+		dl2.v3 = dP;
+		dl2.cz4();
+		f[c++] = dl2.csa(s_dir, dir);
+		dl2.v0 = n++;
+		dl2.cz3();
+		f[c++] = dl2.csa(s_dir, dir);
+		dl2.v0 = n++;
+		dl2.v2 = dL;
+		dl2.v3 = pP;
+		dl2.cz4();
+		f[c++] = dl2.csa(s_dir, dir);
+		dl2.v0 = n++;
+		dl2.cz3();
+		f[c++] = dl2.csa(s_dir, dir);
+
+		dwwp.v1 = label;
+		dwwp.v0 = n++;
+		dwwp.v2 = pL;
+		dwwp.v3 = dL;
+		dwwp.cz4();
+		f[c++] = dwwp.csa(s_dir, dir);
+
+		dwp.v1 = label;
+		dwp.v0 = n++;
+		dwp.v2 = dL;
+		dwp.v3 = pP;
+		dwp.v4 = dP;
+		dwp.v5 = pL;
+		dwp.cz6();
+		f[c++] = dwp.csa(s_dir, dir);
+		dwp.v0 = n++;
+		dwp.cz5();
+		f[c++] = dwp.csa(s_dir, dir);
+
+		dwp.v0 = n++;
+		dwp.v2 = pL;
+		dwp.cz5();
+		f[c++] = dwp.csa(s_dir, dir);
+		dwwp.v0 = n++;
+		dwwp.v2 = pL;
+		dwwp.v3 = dL;
+		dwwp.v4 = dP;
+		dwwp.cz5();
+		f[c++] = dwwp.csa(s_dir, dir);
+		dwwp.v0 = n++;
+		dwwp.v4 = pP;
+		dwwp.cz5();
+		f[c++] = dwwp.csa(s_dir, dir);
+
+		// cluster
+
+		d2pw.v1 = label;
+		d2pw.v0 = n++;
+		d2pw.v2 = prntLS;
+		d2pw.v3 = chldLS;
+		d2pw.cz4();
+		f[c++] = d2pw.csa(s_dir, dir);
+		d2pw.v0 = n++;
+		d2pw.v4 = pF;
+		d2pw.cz5();
+		f[c++] = d2pw.csa(s_dir, dir);
+		d2pw.v0 = n++;
+		d2pw.v4 = dF;
+		d2pw.cz5();
+		f[c++] = d2pw.csa(s_dir, dir);
+		d2pw.v0 = n++;
+		d2pw.v5 = pF;
+		d2pw.cz6();
+		f[c++] = d2pw.csa(s_dir, dir);
+
+		d2pp.v1 = label;
+		d2pp.v0 = n++;
+		d2pp.v2 = prntLS;
+		d2pp.v3 = chldLS;
+		d2pp.cz4();
+		f[c++] = d2pp.csa(s_dir, dir);
+		d2pp.v0 = n++;
+		d2pp.v4 = pP;
+		d2pp.cz5();
+		f[c++] = d2pp.csa(s_dir, dir);
+		d2pp.v0 = n++;
+		d2pp.v4 = dP;
+		d2pp.cz5();
+		f[c++] = d2pp.csa(s_dir, dir);
+		d2pp.v0 = n++;
+		d2pp.v5 = pP;
+		d2pp.cz6();
+		f[c++] = d2pp.csa(s_dir, dir);
+
+		// take those in for stacking
+		// dl2.v1=label;
+		// dl2.v0= n++;dl2.v2=prel[dpnt];dl2.v3=pP;dl2.v4=dP;
+		// dl2.v5=prnt==phead[dpnt]?1:2; dl2.cz6(); f[c++]=dl2.csa(s_dir,dir);
+		// dl2.v0= n++;dl2.v2=pP;dl2.v3=dP; dl2.v4=prnt==phead[dpnt]?1:2;
+		// dl2.cz5(); f[c++]=dl2.csa(s_dir,dir);
+
+		if (feats == null)
+			return;
+
+		short[] featsP = feats[prnt], featsD = feats[dpnt];
+		dlf.v0 = n++;
+		dlf.v1 = label;
+		dlf.v2 = pP;
+		dlf.v3 = dP;
+		extractFeat(f, c, dir, featsP, featsD);
+
+		return;
+	}
+
+	@Override
+	public void gcm(Instances is, int i, int p, int d, int gc, int label, Cluster cluster, long[] f) {
+
+		for (int k = 0; k < f.length; k++)
+			f[k] = 0;
+
+		short[] pos = is.pposs[i];
+		int[] forms = is.forms[i];
+		int[] lemmas = is.plemmas[i];
+		short[][] feats = is.feats[i];
+
+		int pP = pos[p], dP = pos[d];
+		int prntF = forms[p], chldF = forms[d];
+		int prntL = lemmas[p], chldL = lemmas[d];
+		int prntLS = prntF == -1 ? -1 : cluster.getLP(prntF), chldLS = chldF == -1 ? -1 : cluster.getLP(chldF);
+
+		int gP = gc != -1 ? pos[gc] : s_str;
+		int gcF = gc != -1 ? forms[gc] : s_stwrd;
+		int gcL = gc != -1 ? lemmas[gc] : s_stwrd;
+		int gcLS = (gc != -1) && (gcF != -1) ? cluster.getLP(gcF) : s_stwrd;
+
+		if (prntF > maxForm)
+			prntF = -1;
+		if (prntL > maxForm)
+			prntL = -1;
+
+		if (chldF > maxForm)
+			chldF = -1;
+		if (chldL > maxForm)
+			chldL = -1;
+
+		if (gcF > maxForm)
+			gcF = -1;
+		if (gcL > maxForm)
+			gcL = -1;
+
+		int dir = (p < d) ? ra : la, dir_gra = (d < gc) ? ra : la;
+
+		int n = 84, c = 0;
+
+		// dl1.v023();
+		dl1.v1 = label;
+		dl1.v0 = n++;
+		dl1.v2 = pP;
+		dl1.v3 = dP;
+		dl1.v4 = gP;
+		dl1.cz5();
+		dl1.cs(s_dir, dir);
+		f[c++] = dl1.csa(s_dir, dir_gra);
+		dl1.v0 = n++;
+		dl1.v2 = pP;
+		dl1.v3 = gP;
+		dl1.cz4();
+		dl1.cs(s_dir, dir);
+		f[c++] = dl1.csa(s_dir, dir_gra);
+		dl1.v0 = n++;
+		dl1.v2 = dP;
+		dl1.cz4();
+		dl1.cs(s_dir, dir);
+		f[c++] = dl1.csa(s_dir, dir_gra);
+
+		dwwp.v1 = label;
+		dwwp.v0 = n++;
+		dwwp.v2 = prntF;
+		dwwp.v3 = gcF;
+		dwwp.cz4();
+		dwwp.cs(s_dir, dir);
+		f[c++] = dwwp.csa(s_dir, dir_gra);
+
+		dwwp.v0 = n++;
+		dwwp.v2 = chldF;
+		dwwp.v3 = gcF;
+		dwwp.cz4();
+		dwwp.cs(s_dir, dir);
+		f[c++] = dwwp.csa(s_dir, dir_gra);
+
+		dwp.v1 = label;
+		dwp.v0 = n++;
+		dwp.v2 = gcF;
+		dwp.v3 = pP;
+		dwp.cz4();
+		dwp.cs(s_dir, dir);
+		f[c++] = dwp.csa(s_dir, dir_gra);
+
+		dwp.v0 = n++;
+		dwp.v2 = gcF;
+		dwp.v3 = dP;
+		dwp.cz4();
+		dwp.cs(s_dir, dir);
+		f[c++] = dwp.csa(s_dir, dir_gra);
+
+		dwp.v0 = n++;
+		dwp.v2 = prntF;
+		dwp.v3 = gP;
+		dwp.cz4();
+		dwp.cs(s_dir, dir);
+		f[c++] = dwp.csa(s_dir, dir_gra);
+
+		dwp.v0 = n++;
+		dwp.v2 = chldF;
+		dwp.v3 = gP;
+		dwp.cz4();
+		dwp.cs(s_dir, dir);
+		f[c++] = dwp.csa(s_dir, dir_gra);
+
+		// lemma
+
+		dwwp.v0 = n++;
+		dwwp.v2 = prntL;
+		dwwp.v3 = gcL;
+		dwwp.cz4();
+		dwwp.cs(s_dir, dir);
+		f[c++] = dwwp.csa(s_dir, dir_gra);
+
+		dwwp.v0 = n++;
+		dwwp.v2 = chldL;
+		dwwp.v3 = gcL;
+		dwwp.cz4();
+		dwwp.cs(s_dir, dir);
+		f[c++] = dwwp.csa(s_dir, dir_gra);
+
+		dwp.v0 = n++;
+		dwp.v2 = gcL;
+		dwp.v3 = pP;
+		dwp.cz4();
+		dwp.cs(s_dir, dir);
+		f[c++] = dwp.csa(s_dir, dir_gra);
+
+		dwp.v0 = n++;
+		dwp.v2 = gcL;
+		dwp.v3 = dP;
+		dwp.cz4();
+		dwp.cs(s_dir, dir);
+		f[c++] = dwp.csa(s_dir, dir_gra);
+
+		dwp.v0 = n++;
+		dwp.v2 = prntL;
+		dwp.v3 = gP;
+		dwp.cz4();
+		dwp.cs(s_dir, dir);
+		f[c++] = dwp.csa(s_dir, dir_gra);
+
+		dwp.v0 = n++;
+		dwp.v2 = chldL;
+		dwp.v3 = gP;
+		dwp.cz4();
+		dwp.cs(s_dir, dir);
+		f[c++] = dwp.csa(s_dir, dir_gra);
+
+		// clusters
+
+		d2lp.v1 = label;
+		d2lp.v0 = n++;
+		d2lp.v2 = prntLS;
+		d2lp.v3 = gcLS;
+		d2lp.cz4();
+		d2lp.cs(s_dir, dir);
+		f[c++] = d2lp.csa(s_dir, dir_gra);// f.add(li.l2i(l));
+		d2lp.v0 = n++;
+		d2lp.v2 = chldLS;
+		d2lp.v3 = gcLS;
+		d2lp.cz4();
+		d2lp.cs(s_dir, dir);
+		f[c++] = d2lp.csa(s_dir, dir_gra);
+		d3lp.v0 = n++;
+		d3lp.v1 = label;
+		d3lp.v2 = prntLS;
+		d3lp.v3 = chldLS;
+		d3lp.v4 = gcLS;
+		d3lp.cz5();
+		d3lp.cs(s_dir, dir);
+		f[c++] = d3lp.csa(s_dir, dir_gra);
+
+		// _f83;
+		d2lp.v0 = n++;
+		d2lp.v2 = prntLS;
+		d2lp.v3 = chldLS;
+		d2lp.v4 = gcF;
+		d2lp.cz5();
+		f[c++] = d2lp.csa(s_dir, dir);
+		d2lp.v0 = n++;
+		d2lp.v2 = prntLS;
+		d2lp.v3 = gcLS;
+		d2lp.v4 = chldF;
+		d2lp.cz5();
+		f[c++] = d2lp.csa(s_dir, dir);
+		d2lp.v0 = n++;
+		d2lp.v2 = chldLS;
+		d2lp.v3 = gcLS;
+		d2lp.v4 = prntF;
+		d2lp.cz5();
+		f[c++] = d2lp.csa(s_dir, dir);
+
+		d2pp.v1 = label;
+		d2pp.v0 = n++;
+		d2pp.v2 = prntLS;
+		d2pp.v3 = chldLS;
+		d2pp.v4 = gP;
+		d2pp.cz5();
+		f[c++] = d2pp.csa(s_dir, dir);
+		d2pp.v0 = n++;
+		d2pp.v2 = prntLS;
+		d2pp.v3 = gcLS;
+		d2pp.v4 = dP;
+		d2pp.cz5();
+		f[c++] = d2pp.csa(s_dir, dir);
+		d2pp.v0 = n++;
+		d2pp.v2 = chldLS;
+		d2pp.v3 = gcLS;
+		d2pp.v4 = pP;
+		d2pp.cz5();
+		f[c++] = d2pp.csa(s_dir, dir);
+
+		// linear features
+
+		int prntPm1 = p != 0 ? pos[p - 1] : s_str; // parent-pos-minus1
+		int chldPm1 = d - 1 >= 0 ? pos[d - 1] : s_str; // child-pos-minus1
+		int prntPp1 = p != pos.length - 1 ? pos[p + 1] : s_end;
+		int chldPp1 = d != pos.length - 1 ? pos[d + 1] : s_end;
+
+		int gcPm1 = gc > 0 ? pos[gc - 1] : s_str;
+		int gcPp1 = gc < pos.length - 1 ? pos[gc + 1] : s_end;
+
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcPp1;
+		dl1.v4 = dP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcPm1;
+		dl1.v4 = dP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = dP;
+		dl1.v4 = chldPp1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = dP;
+		dl1.v4 = chldPm1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcPp1;
+		dl1.v4 = chldPm1;
+		dl1.v5 = dP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gcPm1;
+		dl1.v3 = gP;
+		dl1.v4 = chldPm1;
+		dl1.v5 = dP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcPp1;
+		dl1.v4 = dP;
+		dl1.v5 = chldPp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gcPm1;
+		dl1.v3 = gP;
+		dl1.v4 = dP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcPp1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcPm1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = pP;
+		dl1.v4 = prntPp1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = pP;
+		dl1.v4 = prntPm1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcPp1;
+		dl1.v4 = prntPm1;
+		dl1.v5 = pP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gcPm1;
+		dl1.v3 = gP;
+		dl1.v4 = prntPm1;
+		dl1.v5 = pP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcPp1;
+		dl1.v4 = pP;
+		dl1.v5 = prntPp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gcPm1;
+		dl1.v3 = gP;
+		dl1.v4 = pP;
+		dl1.v5 = prntPp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+
+		int pLSp1 = p != pos.length - 1 ? forms[p + 1] == -1 ? -1 : cluster.getLP(forms[p + 1]) : _cend;
+		int cLSp1 = d != pos.length - 1 ? forms[d + 1] == -1 ? -1 : cluster.getLP(forms[d + 1]) : _cend;
+		int gcLSp1 = gc < pos.length - 1 ? forms[gc + 1] == -1 ? -1 : cluster.getLP(forms[gc + 1]) : s_end;
+
+		int pLSm1 = p != 0 ? lemmas[p - 1] == -1 ? -1 : cluster.getLP(lemmas[p - 1]) : _cstr;
+		int cLSm1 = d - 1 >= 0 ? lemmas[d - 1] == -1 ? -1 : cluster.getLP(lemmas[d - 1]) : _cstr;
+		int gcLSm1 = gc > 0 ? lemmas[gc - 1] == -1 ? -1 : cluster.getLP(lemmas[gc - 1]) : _cstr;
+
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcLSp1;
+		dl1.v4 = dP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcLSm1;
+		dl1.v4 = dP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = dP;
+		dl1.v4 = cLSp1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = dP;
+		dl1.v4 = cLSm1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcLSp1;
+		dl1.v4 = cLSm1;
+		dl1.v5 = dP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gcLSm1;
+		dl1.v3 = gP;
+		dl1.v4 = cLSm1;
+		dl1.v5 = dP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcLSp1;
+		dl1.v4 = dP;
+		dl1.v5 = cLSp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = cLSm1;
+		dl1.v3 = gP;
+		dl1.v4 = dP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcLSp1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcLSm1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = pP;
+		dl1.v4 = pLSp1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = pP;
+		dl1.v4 = pLSm1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcLSp1;
+		dl1.v4 = pLSm1;
+		dl1.v5 = pP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gcLSm1;
+		dl1.v3 = gP;
+		dl1.v4 = pLSm1;
+		dl1.v5 = pP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcLSp1;
+		dl1.v4 = pP;
+		dl1.v5 = pLSp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gcLSm1;
+		dl1.v3 = gP;
+		dl1.v4 = pP;
+		dl1.v5 = pLSp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+
+		if (gc >= 0) {
+		}
+
+		// take those in for stacking
+		/*
+		 * dl2.v1=label; dl2.v0=
+		 * n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=gP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.
+		 * csa(s_dir,dir); dl2.v0=
+		 * n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=gP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.
+		 * csa(s_dir,dir); dl2.v0=
+		 * n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=gP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f
+		 * [c++]=dl2.csa(s_dir,dir);
+		 * 
+		 * dl2.v0=
+		 * n++;dl2.v2=gr;dl2.v3=g;dl2.v4=gP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.csa(
+		 * s_dir,dir); dl2.v0=
+		 * n++;dl2.v2=gr;dl2.v3=g;dl2.v4=gP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.csa(
+		 * s_dir,dir); dl2.v0=
+		 * n++;dl2.v2=gr;dl2.v3=g;dl2.v4=gP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f[c++]
+		 * =dl2.csa(s_dir,dir);
+		 * 
+		 */
+		if (feats == null)
+			return;
+
+		short[] featsP = feats[d];
+		short[] featsD = gc != -1 ? feats[gc] : null;
+
+		dlf.v0 = n++;
+		dlf.v1 = label;
+		dlf.v2 = gP;
+		dlf.v3 = dP;
+		extractFeat(f, c, dir, featsP, featsD);
+		return;
+	}
+
+	@Override
+	public void siblingm(Instances is, int i, short pos[], int forms[], int[] lemmas, short[][] feats, int prnt, int d,
+			int sblng, int label, Cluster cluster, long[] f, int v) {
+
+		for (int k = 0; k < f.length; k++)
+			f[k] = 0;
+
+		int pP = pos[prnt], dP = pos[d];
+		int prntF = forms[prnt], chldF = forms[d];
+		int prntL = lemmas[prnt], chldL = lemmas[d];
+		int prntLS = prntF == -1 ? -1 : cluster.getLP(prntF), chldLS = chldF == -1 ? -1 : cluster.getLP(chldF);
+
+		int sP = sblng != -1 ? pos[sblng] : s_str, sblF = sblng != -1 ? forms[sblng] : s_stwrd,
+				sblL = sblng != -1 ? lemmas[sblng] : s_stwrd;
+
+		int sblLS = (sblng != -1) && (sblF != -1) ? cluster.getLP(sblF) : s_stwrd;
+
+		int dir = (prnt < d) ? ra : la;
+
+		int abs = Math.abs(prnt - d);
+
+		final int dist;
+		if (abs > 10)
+			dist = d10;
+		else if (abs > 5)
+			dist = d5;
+		else if (abs == 5)
+			dist = d4;
+		else if (abs == 4)
+			dist = d3;
+		else if (abs == 3)
+			dist = d2;
+		else if (abs == 2)
+			dist = d1;
+		else
+			dist = di0;
+
+		int n = 147;
+
+		if (prntF > maxForm)
+			prntF = -1;
+		if (prntL > maxForm)
+			prntL = -1;
+
+		if (chldF > maxForm)
+			chldF = -1;
+		if (chldL > maxForm)
+			chldL = -1;
+
+		if (sblF > maxForm)
+			sblF = -1;
+		if (sblL > maxForm)
+			sblL = -1;
+
+		dl1.v0 = n++;
+		dl1.v1 = label;
+		dl1.v2 = pP;
+		dl1.v3 = dP;
+		dl1.v4 = sP;
+		dl1.cz5();
+		f[0] = dl1.csa(s_dir, dir);
+		f[1] = dl1.csa(s_dist, dist);
+		dl1.v0 = n++;
+		dl1.v3 = sP;
+		dl1.cz4();
+		f[2] = dl1.csa(s_dir, dir);
+		f[3] = dl1.csa(s_dist, dist);
+		dl1.v0 = n++;
+		dl1.v2 = dP;
+		dl1.cz4();
+		f[4] = dl1.csa(s_dir, dir);
+		f[5] = dl1.csa(s_dist, dist);
+
+		// sibling only could be tried
+		dwwp.v1 = label;
+		dwwp.v0 = n++;
+		dwwp.v2 = prntF;
+		dwwp.v3 = sblF;
+		dwwp.cz4();
+		f[6] = dwwp.csa(s_dir, dir);
+		f[7] = dwwp.csa(s_dist, dist);
+		dwwp.v0 = n++;
+		dwwp.v2 = chldF;
+		dwwp.cz4();
+		f[8] = dwwp.csa(s_dir, dir);
+		f[9] = dwwp.csa(s_dist, dist);
+		dwp.v0 = n++;
+		dwp.v1 = label;
+		dwp.v2 = sblF;
+		dwp.v3 = pP;
+		dwp.cz4();
+		f[10] = dwp.csa(s_dir, dir);
+		f[11] = dwp.csa(s_dist, dist);
+		dwp.v0 = n++;
+		/* dwp.v1=label; */dwp.v3 = dP;
+		dwp.cz4();
+		f[12] = dwp.csa(s_dir, dir);
+		f[13] = dwp.csa(s_dist, dist);
+		dwp.v0 = n++;
+		/* dwp.v1=label; */ dwp.v2 = prntF;
+		dwp.v3 = sP;
+		dwp.cz4();
+		f[14] = dwp.csa(s_dir, dir);
+		f[15] = dwp.csa(s_dist, dist);
+		dwp.v0 = n++;
+		/* dwp.v1=label; */ dwp.v2 = chldF;
+		dwp.cz4();
+		f[16] = dwp.csa(s_dir, dir);
+		f[17] = dwp.csa(s_dist, dist);
+
+		// lemmas
+		dwwp.v0 = n++;
+		dwwp.v2 = prntL;
+		dwwp.v3 = sblL;
+		dwwp.cz4();
+		f[18] = dwwp.csa(s_dir, dir);
+		dwwp.v0 = n++;
+		dwwp.v2 = chldL;
+		dwwp.cz4();
+		f[19] = dwwp.csa(s_dir, dir);
+		f[20] = dwwp.csa(s_dist, dist);
+		dwp.v0 = n++;
+		/* dwp.v1=label; */ dwp.v2 = sblL;
+		dwp.v3 = pP;
+		dwp.cz4();
+		f[21] = dwp.csa(s_dir, dir);
+		f[22] = dwp.csa(s_dist, dist);
+		dwp.v0 = n++;
+		/* dwp.v1=label; */ dwp.v3 = dP;
+		dwp.cz4();
+		f[23] = dwp.csa(s_dir, dir);
+		f[24] = dwp.csa(s_dist, dist);
+		dwp.v0 = n++;
+		/* dwp.v1=label; */ dwp.v2 = prntL;
+		dwp.v3 = sP;
+		dwp.cz4();
+		f[25] = dwp.csa(s_dir, dir);
+		f[26] = dwp.csa(s_dist, dist);
+		dwp.v0 = n++;
+		/* dwp.v1=label; */ dwp.v2 = chldL;
+		dwp.cz4();
+		f[27] = dwp.csa(s_dir, dir);
+		f[28] = dwp.csa(s_dist, dist);
+
+		// clusters
+
+		d2lp.v1 = label;
+		d2lp.v0 = n++;
+		d2lp.v2 = prntLS;
+		d2lp.v3 = sblLS;
+		d2lp.cz4();
+		f[29] = d2lp.csa(s_dir, dir);
+		d2lp.v0 = n++;
+		d2lp.v2 = chldLS;
+		d2lp.v3 = sblLS;
+		d2lp.cz4();
+		f[30] = d2lp.csa(s_dir, dir);
+		f[31] = d2lp.csa(s_dist, dist);
+
+		d3lp.v1 = label;
+		d3lp.v0 = n++;
+		d3lp.v2 = prntLS;
+		d3lp.v3 = chldLS;
+		d3lp.v4 = sblLS;
+		d3lp.cz5();
+		f[32] = d3lp.csa(s_dir, dir);
+
+		d2lp.v0 = n++;
+		d2lp.v2 = prntLS;
+		d2lp.v3 = chldLS;
+		d2lp.v4 = sblF;
+		d2lp.cz5();
+		f[33] = d2lp.csa(s_dir, dir);
+		f[34] = d2lp.csa(s_dist, dist);
+		d2lp.v0 = n++;
+		d2lp.v2 = prntLS;
+		d2lp.v3 = sblLS;
+		d2lp.v4 = chldF;
+		d2lp.cz5();
+		f[35] = d2lp.csa(s_dir, dir);
+		f[36] = d2lp.csa(s_dist, dist);
+		d2lp.v0 = n++;
+		d2lp.v2 = chldLS;
+		d2lp.v3 = sblLS;
+		d2lp.v4 = prntF;
+		d2lp.cz5();
+		f[37] = d2lp.csa(s_dir, dir);
+		f[38] = d2lp.csa(s_dist, dist);
+
+		d2pp.v1 = label;
+		d2pp.v0 = n++;
+		d2pp.v2 = prntLS;
+		d2pp.v3 = chldLS;
+		d2pp.v4 = sP;
+		d2pp.cz5();
+		f[39] = d2pp.csa(s_dir, dir);
+		f[40] = d2pp.csa(s_dist, dist);
+		d2pp.v0 = n++;
+		d2pp.v2 = prntLS;
+		d2pp.v3 = sblLS;
+		d2pp.v4 = dP;
+		d2pp.cz5();
+		f[41] = d2pp.csa(s_dir, dir);
+		f[42] = d2pp.csa(s_dist, dist);
+		d2pp.v0 = n++;
+		d2pp.v2 = chldLS;
+		d2pp.v3 = sblLS;
+		d2pp.v4 = pP;
+		d2pp.cz5();
+		f[43] = d2pp.csa(s_dir, dir);
+		f[44] = d2pp.csa(s_dist, dist);
+
+		int prntPm1 = prnt != 0 ? pos[prnt - 1] : s_str;
+		int chldPm1 = d - 1 >= 0 ? pos[d - 1] : s_str;
+		int prntPp1 = prnt != pos.length - 1 ? pos[prnt + 1] : s_end;
+		int chldPp1 = d != pos.length - 1 ? pos[d + 1] : s_end;
+
+		// sibling part of speech minus and plus 1
+		int sblPm1 = sblng > 0 ? pos[sblng - 1] : s_str;
+		int sblPp1 = sblng < pos.length - 1 ? pos[sblng + 1] : s_end;
+
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sblPp1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[45] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sblPm1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[46] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = pP;
+		dl1.v4 = prntPp1;
+		dl1.cz5();
+		f[47] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = pP;
+		dl1.v4 = prntPm1;
+		dl1.cz5();
+		f[48] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sblPp1;
+		dl1.v4 = prntPm1;
+		dl1.v5 = pP;
+		dl1.cz6();
+		f[49] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sblPm1;
+		dl1.v3 = sP;
+		dl1.v4 = prntPm1;
+		dl1.v5 = pP;
+		dl1.cz6();
+		f[50] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sblPp1;
+		dl1.v4 = pP;
+		dl1.v5 = prntPp1;
+		dl1.cz6();
+		f[51] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
+		dl1.v0 = n++;
+		dl1.v2 = sblPm1;
+		dl1.v3 = sP;
+		dl1.v4 = pP;
+		dl1.v5 = prntPp1;
+		dl1.cz6();
+		f[52] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sblPp1;
+		dl1.v4 = dP;
+		dl1.cz5();
+		f[53] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sblPm1;
+		dl1.v4 = dP;
+		dl1.cz5();
+		f[54] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = dP;
+		dl1.v4 = chldPp1;
+		dl1.cz5();
+		f[55] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = dP;
+		dl1.v4 = chldPm1;
+		dl1.cz5();
+		f[56] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sblPp1;
+		dl1.v4 = chldPm1;
+		dl1.v5 = dP;
+		dl1.cz6();
+		f[57] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
+		dl1.v0 = n++;
+		dl1.v2 = sblPm1;
+		dl1.v3 = sP;
+		dl1.v4 = chldPm1;
+		dl1.v5 = dP;
+		dl1.cz6();
+		f[58] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sblPp1;
+		dl1.v4 = dP;
+		dl1.v5 = chldPp1;
+		dl1.cz6();
+		f[59] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
+		dl1.v0 = n++;
+		dl1.v2 = sblPm1;
+		dl1.v3 = sP;
+		dl1.v4 = dP;
+		dl1.v5 = chldPp1;
+		dl1.cz6();
+		f[60] = dl1.csa(s_dir, dir);
+
+		int c = 61;
+
+		int pLSp1 = prnt != pos.length - 1 ? forms[prnt + 1] == -1 ? -1 : cluster.getLP(forms[prnt + 1]) : _cend;
+		int cLSp1 = d != pos.length - 1 ? forms[d + 1] == -1 ? -1 : cluster.getLP(forms[d + 1]) : _cend;
+		int sLSp1 = sblng < pos.length - 1 ? forms[sblng + 1] == -1 ? -1 : cluster.getLP(forms[sblng + 1]) : _cend;
+
+		int pLSm1 = prnt != 0 ? forms[prnt - 1] == -1 ? -1 : cluster.getLP(forms[prnt - 1]) : _cstr;
+		int cLSm1 = d - 1 >= 0 ? forms[d - 1] == -1 ? -1 : cluster.getLP(forms[d - 1]) : _cstr;
+		int sLSm1 = sblng > 0 ? forms[sblng - 1] == -1 ? -1 : cluster.getLP(forms[sblng - 1]) : _cstr;
+
+		// int c=61;
+
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSm1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = pP;
+		dl1.v4 = pLSp1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = pP;
+		dl1.v4 = pLSm1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = pLSm1;
+		dl1.v5 = pP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sLSm1;
+		dl1.v3 = sP;
+		dl1.v4 = pLSm1;
+		dl1.v5 = pP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = pP;
+		dl1.v5 = pLSp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sLSm1;
+		dl1.v3 = sP;
+		dl1.v4 = pP;
+		dl1.v5 = pLSp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = dP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSm1;
+		dl1.v4 = dP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = dP;
+		dl1.v4 = cLSp1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = dP;
+		dl1.v4 = cLSm1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSm1;
+		dl1.v4 = cLSm1;
+		dl1.v5 = dP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sLSm1;
+		dl1.v3 = sP;
+		dl1.v4 = cLSm1;
+		dl1.v5 = dP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = dP;
+		dl1.v5 = cLSp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sLSm1;
+		dl1.v3 = sP;
+		dl1.v4 = dP;
+		dl1.v5 = cLSp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSm1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = pP;
+		dl1.v4 = pLSp1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = pP;
+		dl1.v4 = pLSm1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = pLSm1;
+		dl1.v5 = pP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sLSm1;
+		dl1.v3 = sP;
+		dl1.v4 = pLSm1;
+		dl1.v5 = pP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = pP;
+		dl1.v5 = pLSp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sLSm1;
+		dl1.v3 = sP;
+		dl1.v4 = pP;
+		dl1.v5 = pLSp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = dP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSm1;
+		dl1.v4 = dP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = dP;
+		dl1.v4 = cLSp1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = dP;
+		dl1.v4 = cLSm1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSm1;
+		dl1.v4 = cLSm1;
+		dl1.v5 = dP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sLSm1;
+		dl1.v3 = sP;
+		dl1.v4 = cLSm1;
+		dl1.v5 = dP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = dP;
+		dl1.v5 = cLSp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sLSm1;
+		dl1.v3 = sP;
+		dl1.v4 = dP;
+		dl1.v5 = cLSp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+
+		// take those in for stacking
+
+		/*
+		 * short[] prel = is.plabels[i],phead=is.pheads[i];
+		 * 
+		 * int g = prnt==phead[d]?1:2 ; if (sblng>=0) g +=
+		 * prnt==phead[sblng]?4:8;
+		 * 
+		 * int gr = sblng==-1?s_relend:prel[sblng];
+		 * 
+		 * 
+		 * dl2.v0=
+		 * n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=sP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.
+		 * csa(s_dir,dir); dl2.v0=
+		 * n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.
+		 * csa(s_dir,dir); dl2.v0=
+		 * n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f
+		 * [c++]=dl2.csa(s_dir,dir);
+		 * 
+		 * dl2.v0=
+		 * n++;dl2.v2=gr;dl2.v3=g;dl2.v4=sP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.csa(
+		 * s_dir,dir); dl2.v0=
+		 * n++;dl2.v2=gr;dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.csa(
+		 * s_dir,dir); dl2.v0=
+		 * n++;dl2.v2=gr;dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f[c++]
+		 * =dl2.csa(s_dir,dir);
+		 */
+
+		if (feats == null)
+			return;
+
+		int cnt = c;
+
+		short[] featsP = feats[d];
+		short[] featsSbl = sblng != -1 ? feats[sblng] : null;
+
+		dlf.v0 = n++;
+		dlf.v1 = label;
+		dlf.v2 = sP;
+		dlf.v3 = dP;
+
+		cnt = extractFeat(f, cnt, dir, featsP, featsSbl);
+
+		featsP = feats[prnt];
+		featsSbl = sblng != -1 ? feats[sblng] : null;
+
+		dlf.v0 = n++;
+		dlf.v1 = label;
+		dlf.v2 = pP;
+		dlf.v3 = sP;
+		if (featsP != null && featsSbl != null) {
+			for (short i1 = 0; i1 < featsP.length; i1++) {
+				for (short i2 = 0; i2 < featsSbl.length; i2++) {
+					dlf.v4 = featsP[i1];
+					dlf.v5 = featsSbl[i2];
+					dlf.cz6();
+					f[cnt++] = dlf.csa(s_dir, prnt < sblng ? 1 : 2);
+				}
+			}
+		} else if (featsP == null && featsSbl != null) {
+
+			for (short i2 = 0; i2 < featsSbl.length; i2++) {
+				dlf.v4 = nofeat;
+				dlf.v5 = featsSbl[i2];
+				dlf.cz6();
+				f[cnt++] = dlf.csa(s_dir, dir);
+			}
+
+		} else if (featsP != null && featsSbl == null) {
+
+			for (short i1 = 0; i1 < featsP.length; i1++) {
+				dlf.v4 = featsP[i1];
+				dlf.v5 = nofeat;
+				dlf.cz6();
+				f[cnt++] = dlf.csa(s_dir, dir);
+			}
+		}
+
+		return;
+	}
+
+	private int extractFeat(long[] f, int cnt, int dir, short[] featsP, short[] featsD) {
+		if (featsP != null && featsD != null) {
+			for (short i1 = 0; i1 < featsP.length; i1++) {
+				for (short i2 = 0; i2 < featsD.length; i2++) {
+					dlf.v4 = featsP[i1];
+					dlf.v5 = featsD[i2];
+					dlf.cz6();
+					f[cnt++] = dlf.csa(s_dir, dir);
+				}
+			}
+		} else if (featsP == null && featsD != null) {
+
+			for (short i2 = 0; i2 < featsD.length; i2++) {
+				dlf.v4 = nofeat;
+				dlf.v5 = featsD[i2];
+				dlf.cz6();
+				f[cnt++] = dlf.csa(s_dir, dir);
+
+			}
+		} else if (featsP != null && featsD == null) {
+
+			for (short i1 = 0; i1 < featsP.length; i1++) {
+				dlf.v4 = featsP[i1];
+				dlf.v5 = nofeat;
+				dlf.cz6();
+				f[cnt++] = dlf.csa(s_dir, dir);
+
+			}
+		}
+		return cnt;
+	}
+
+	public IFV encodeCat2(Instances is, int ic, short pposs[], int forms[], int[] lemmas, short[] heads, short[] types,
+			short feats[][], Cluster cluster, IFV f, Long2IntInterface li) {
+
+		long[] svs = new long[250];
+
+		for (int i = 1; i < heads.length; i++) {
+
+			int n = basic(pposs, forms, heads[i], i, cluster, f);
+			firstm(is, ic, heads[i], i, types[i], cluster, svs);
+			for (long sv : svs)
+				f.add(li.l2i(sv));
+
+			int ch, cmi, cmo;
+			if (heads[i] < i) {
+				ch = rightmostRight(heads, heads[i], i);
+				cmi = leftmostLeft(heads, i, heads[i]);
+				cmo = rightmostRight(heads, i, heads.length);
+
+			} else {
+				ch = leftmostLeft(heads, heads[i], i);
+				cmi = rightmostRight(heads, i, heads[i]);
+				cmo = leftmostLeft(heads, i, 0);
+			}
+
+			siblingm(is, ic, pposs, forms, lemmas, feats, heads[i], i, ch, types[i], cluster, svs, n);
+			for (long sv : svs)
+				f.add(li.l2i(sv));
+
+			gcm(is, ic, heads[i], i, cmi, types[i], cluster, svs);
+			for (long sv : svs)
+				f.add(li.l2i(sv));
+
+			gcm(is, ic, heads[i], i, cmo, types[i], cluster, svs);
+			for (long sv : svs)
+				f.add(li.l2i(sv));
+		}
+
+		return f;
+	}
+
+	@Override
+	public FV encodeCat(Instances is, int ic, short pposs[], int forms[], int[] lemmas, short[] heads, short[] types,
+			short feats[][], Cluster cluster, FV f) {
+
+		long[] svs = new long[250];
+
+		for (int i = 1; i < heads.length; i++) {
+
+			int n = basic(pposs, forms, heads[i], i, cluster, f);
+			firstm(is, ic, heads[i], i, types[i], cluster, svs);
+			for (long sv : svs)
+				dl1.map(f, sv);
+
+			int ch, cmi, cmo;
+			if (heads[i] < i) {
+				ch = rightmostRight(heads, heads[i], i);
+				cmi = leftmostLeft(heads, i, heads[i]);
+				cmo = rightmostRight(heads, i, heads.length);
+
+			} else {
+				ch = leftmostLeft(heads, heads[i], i);
+				cmi = rightmostRight(heads, i, heads[i]);
+				cmo = leftmostLeft(heads, i, 0);
+			}
+
+			siblingm(is, ic, pposs, forms, lemmas, feats, heads[i], i, ch, types[i], cluster, svs, n);
+			for (long sv : svs)
+				dl1.map(f, sv);
+
+			gcm(is, ic, heads[i], i, cmi, types[i], cluster, svs);
+			for (long sv : svs)
+				dl1.map(f, sv);
+
+			gcm(is, ic, heads[i], i, cmo, types[i], cluster, svs);
+			for (long sv : svs)
+				dl1.map(f, sv);
+		}
+
+		return f;
+	}
+
+	@Override
+	public float encode3(short[] pos, short heads[], short[] types, DataF d2) {
+
+		double v = 0;
+		for (int i = 1; i < heads.length; i++) {
+
+			int dir = (heads[i] < i) ? 0 : 1;
+
+			v += d2.pl[heads[i]][i];
+			v += d2.lab[heads[i]][i][types[i]][dir];
+
+			boolean left = i < heads[i];
+			short[] labels = Edges.get(pos[heads[i]], pos[i], left);
+			int lid = -1;
+			for (int k = 0; k < labels.length; k++)
+				if (types[i] == labels[k]) {
+					lid = k;
+					break;
+				}
+
+			int ch, cmi, cmo;
+			if (heads[i] < i) {
+				ch = rightmostRight(heads, heads[i], i);
+				cmi = leftmostLeft(heads, i, heads[i]);
+				cmo = rightmostRight(heads, i, heads.length);
+
+				if (ch == -1)
+					ch = heads[i];
+				if (cmi == -1)
+					cmi = heads[i];
+				if (cmo == -1)
+					cmo = heads[i];
+
+			} else {
+				ch = leftmostLeft(heads, heads[i], i);
+				cmi = rightmostRight(heads, i, heads[i]);
+				cmo = leftmostLeft(heads, i, 0);
+
+				if (ch == -1)
+					ch = i;
+				if (cmi == -1)
+					cmi = i;
+				if (cmo == -1)
+					cmo = i;
+			}
+			v += d2.sib[heads[i]][i][ch][dir][lid];
+			v += d2.gra[heads[i]][i][cmi][dir][lid];
+			v += d2.gra[heads[i]][i][cmo][dir][lid];
+		}
+		return (float) v;
+	}
+
+	/**
+	 * Provide the scores of the edges
+	 * 
+	 * @param pos
+	 * @param heads
+	 * @param types
+	 * @param edgesScores
+	 * @param d2
+	 * @return
+	 */
+	public static float encode3(short[] pos, short heads[], short[] types, float[] edgesScores, DataF d2) {
+
+		double v = 0;
+		for (int i = 1; i < heads.length; i++) {
+
+			int dir = (heads[i] < i) ? 0 : 1;
+
+			edgesScores[i] = d2.pl[heads[i]][i];
+			edgesScores[i] += d2.lab[heads[i]][i][types[i]][dir];
+
+			boolean left = i < heads[i];
+			short[] labels = Edges.get(pos[heads[i]], pos[i], left);
+			int lid = -1;
+			for (int k = 0; k < labels.length; k++)
+				if (types[i] == labels[k]) {
+					lid = k;
+					break;
+				}
+
+			int ch, cmi, cmo;
+			if (heads[i] < i) {
+				ch = rightmostRight(heads, heads[i], i);
+				cmi = leftmostLeft(heads, i, heads[i]);
+				cmo = rightmostRight(heads, i, heads.length);
+
+				if (ch == -1)
+					ch = heads[i];
+				if (cmi == -1)
+					cmi = heads[i];
+				if (cmo == -1)
+					cmo = heads[i];
+
+			} else {
+				ch = leftmostLeft(heads, heads[i], i);
+				cmi = rightmostRight(heads, i, heads[i]);
+				cmo = leftmostLeft(heads, i, 0);
+
+				if (ch == -1)
+					ch = i;
+				if (cmi == -1)
+					cmi = i;
+				if (cmo == -1)
+					cmo = i;
+			}
+			edgesScores[i] += d2.sib[heads[i]][i][ch][dir][lid];
+			edgesScores[i] += d2.gra[heads[i]][i][cmi][dir][lid];
+			edgesScores[i] += d2.gra[heads[i]][i][cmo][dir][lid];
+			v += edgesScores[i];
+		}
+		return (float) v;
+	}
+
+	private static int rightmostRight(short[] heads, int head, int max) {
+		int rightmost = -1;
+		for (int i = head + 1; i < max; i++)
+			if (heads[i] == head)
+				rightmost = i;
+
+		return rightmost;
+	}
+
+	private static int leftmostLeft(short[] heads, int head, int min) {
+		int leftmost = -1;
+		for (int i = head - 1; i > min; i--)
+			if (heads[i] == head)
+				leftmost = i;
+		return leftmost;
+	}
+
+	public static final String REL = "REL", END = "END", STR = "STR", LA = "LA", RA = "RA";
+
+	private static int ra, la;
+	private static int s_str;
+	private static int s_end, _cend, _cstr, s_stwrd;
+
+	protected static final String TYPE = "TYPE", DIR = "D";
+	public static final String POS = "POS";
+	protected static final String DIST = "DIST", MID = "MID", FEAT = "F";
+
+	private static final String _0 = "0", _4 = "4", _3 = "3", _2 = "2", _1 = "1", _5 = "5", _10 = "10";
+
+	private static int di0, d4, d3, d2, d1, d5, d10;
+
+	private static final String WORD = "WORD", STWRD = "STWRD", STPOS = "STPOS";
+
+	private static int nofeat;
+
+	public static int maxForm;
+
+	/**
+	 * Initialize the features.
+	 * 
+	 * @param maxFeatures
+	 */
+	static public void initFeatures() {
+
+		MFB mf = new MFB();
+		mf.register(POS, MID);
+		s_str = mf.register(POS, STR);
+		s_end = mf.register(POS, END);
+
+		mf.register(REL, END);
+
+		_cstr = mf.register(Cluster.SPATH, STR);
+		_cend = mf.register(Cluster.SPATH, END);
+
+		mf.register(TYPE, POS);
+
+		s_stwrd = mf.register(WORD, STWRD);
+		mf.register(POS, STPOS);
+
+		la = mf.register(DIR, LA);
+		ra = mf.register(DIR, RA);
+
+		// mf.register(TYPE, CHAR);
+
+		mf.register(TYPE, FEAT);
+		nofeat = mf.register(FEAT, "NOFEAT");
+
+		for (int k = 0; k < 215; k++)
+			mf.register(TYPE, "F" + k);
+
+		di0 = mf.register(DIST, _0);
+		d1 = mf.register(DIST, _1);
+		d2 = mf.register(DIST, _2);
+		d3 = mf.register(DIST, _3);
+		d4 = mf.register(DIST, _4);
+		d5 = mf.register(DIST, _5);
+		// d5l=mf.register(DIST, _5l);
+		d10 = mf.register(DIST, _10);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see extractors.Extractor#getType()
+	 */
+	@Override
+	public int getType() {
+
+		return s_type;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see extractors.Extractor#setMaxForm(int)
+	 */
+	@Override
+	public void setMaxForm(int max) {
+		maxForm = max;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see extractors.Extractor#getMaxForm()
+	 */
+	@Override
+	public int getMaxForm() {
+		return maxForm;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/extractors/ExtractorClusterStackedR2.java b/dependencyParser/experimental/mate-tools/src/extractors/ExtractorClusterStackedR2.java
new file mode 100644
index 0000000..d1776b6
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/extractors/ExtractorClusterStackedR2.java
@@ -0,0 +1,1929 @@
+package extractors;
+
+import java.util.Arrays;
+
+import is2.data.Cluster;
+import is2.data.D4;
+import is2.data.DataF;
+import is2.data.Edges;
+import is2.data.FV;
+import is2.data.IFV;
+import is2.data.Instances;
+import is2.data.Long2IntInterface;
+import is2.data.MFB;
+
+final public class ExtractorClusterStackedR2 implements Extractor {
+
+	public static int s_rel, s_word, s_type, s_dir, s_dist, s_feat, s_child, s_spath, s_lpath, s_pos;
+
+	MFB mf;
+
+	final D4 d0, dl1, dl2, dwr, dr, dwwp, dw, dwp, dlf, d3lp, d2lp, d2pw, d2pp;
+
+	public final Long2IntInterface li;
+
+	public ExtractorClusterStackedR2(Long2IntInterface li) {
+
+		initFeatures();
+		this.li = li;
+		d0 = new D4(li);
+		dl1 = new D4(li);
+		dl2 = new D4(li);
+		dwr = new D4(li);
+		dr = new D4(li);
+		dwwp = new D4(li);
+
+		dw = new D4(li);
+		dwp = new D4(li);
+
+		dlf = new D4(li);
+		d3lp = new D4(li);
+		d2lp = new D4(li);
+		d2pw = new D4(li);
+		d2pp = new D4(li);
+
+	}
+
+	@Override
+	public void initStat() {
+
+		mf = new MFB();
+		s_rel = mf.getFeatureCounter().get(REL).intValue();
+		s_pos = mf.getFeatureCounter().get(POS).intValue();
+		s_word = mf.getFeatureCounter().get(WORD).intValue();
+		s_type = mf.getFeatureCounter().get(TYPE).intValue();// mf.getFeatureBits();
+		s_dir = mf.getFeatureCounter().get(DIR);
+		la = mf.getValue(DIR, LA);
+		ra = mf.getValue(DIR, RA);
+		s_dist = mf.getFeatureCounter().get(DIST);// mf.getFeatureBits(DIST);
+		s_feat = mf.getFeatureCounter().get(FEAT);// mf.getFeatureBits(Pipe.FEAT);
+		s_spath = mf.getFeatureCounter().get(Cluster.SPATH) == null ? 0 : mf.getFeatureCounter().get(Cluster.SPATH);// mf.getFeatureBits(Cluster.SPATH);
+		s_lpath = mf.getFeatureCounter().get(Cluster.LPATH) == null ? 0 : mf.getFeatureCounter().get(Cluster.LPATH);// mf.getFeatureBits(Cluster.LPATH);
+	}
+
+	@Override
+	public void init() {
+		// DB.println("init");
+		d0.a0 = s_type;
+		d0.a1 = s_pos;
+		d0.a2 = s_pos;
+		d0.a3 = s_pos;
+		d0.a4 = s_pos;
+		d0.a5 = s_pos;
+		d0.a6 = s_pos;
+		d0.a7 = s_pos;
+		dl1.a0 = s_type;
+		dl1.a1 = s_rel;
+		dl1.a2 = s_pos;
+		dl1.a3 = s_pos;
+		dl1.a4 = s_pos;
+		dl1.a5 = s_pos;
+		dl1.a6 = s_pos;
+		dl1.a7 = s_pos;
+		dl2.a0 = s_type;
+		dl2.a1 = s_rel;
+		dl2.a2 = s_word;
+		dl2.a3 = s_pos;
+		dl2.a4 = s_pos;
+		dl2.a5 = s_pos;
+		dl2.a6 = s_pos;
+		dl2.a7 = s_pos;
+		dwp.a0 = s_type;
+		dwp.a1 = s_rel;
+		dwp.a2 = s_word;
+		dwp.a3 = s_pos;
+		dwp.a4 = s_pos;
+		dwp.a5 = s_word;
+		dwwp.a0 = s_type;
+		dwwp.a1 = s_rel;
+		dwwp.a2 = s_word;
+		dwwp.a3 = s_word;
+		dwwp.a4 = s_pos;
+		dwwp.a5 = s_word;
+		dlf.a0 = s_type;
+		dlf.a1 = s_rel;
+		dlf.a2 = s_pos;
+		dlf.a3 = s_pos;
+		dlf.a4 = s_feat;
+		dlf.a5 = s_feat;
+		dlf.a6 = s_pos;
+		dlf.a7 = s_pos;
+		d3lp.a0 = s_type;
+		d3lp.a1 = s_rel;
+		d3lp.a2 = s_lpath;
+		d3lp.a3 = s_lpath;
+		d3lp.a4 = s_lpath;
+		d3lp.a5 = s_word;
+		d3lp.a6 = s_spath;
+		d3lp.a7 = s_spath;
+		d2lp.a0 = s_type;
+		d2lp.a1 = s_rel;
+		d2lp.a2 = s_lpath;
+		d2lp.a3 = s_lpath;
+		d2lp.a4 = s_word;
+		d2lp.a5 = s_word; // d3lp.a6 = s_spath; d3lp.a7 = s_spath;
+		d2pw.a0 = s_type;
+		d2pw.a1 = s_rel;
+		d2pw.a2 = s_lpath;
+		d2pw.a3 = s_lpath;
+		d2pw.a4 = s_word;
+		d2pw.a5 = s_word; // d3lp.a6 = s_spath; d3lp.a7 = s_spath;
+		d2pp.a0 = s_type;
+		d2pp.a1 = s_rel;
+		d2pp.a2 = s_lpath;
+		d2pp.a3 = s_lpath;
+		d2pp.a4 = s_pos;
+		d2pp.a5 = s_pos; // d3lp.a6 = s_spath; d3lp.a7 = s_spath;
+	}
+
+	@Override
+	public int basic(short[] pposs, int[] form, int p, int d, Cluster cluster, IFV f) {
+
+		d0.clean();
+		dl1.clean();
+		dl2.clean();
+		dwp.clean();
+		dwwp.clean();
+		dlf.clean();
+		d3lp.clean();
+
+		d3lp.clean();
+		d2lp.clean();
+		d2pw.clean();
+		d2pp.clean();
+
+		int n = 1;
+		int dir = (p < d) ? ra : la;
+		// d0.v0= n; d0.v1=pposs[p]; d0.v2=pposs[d]; //d0.stop=4;
+		int end = (p >= d ? p : d);
+		int start = (p >= d ? d : p) + 1;
+
+		StringBuilder s = new StringBuilder(end - start);
+		int[] x = new int[end - start];
+		int c = 0;
+		for (int i = start; i < end; i++) {
+			// d0.v3=pposs[i];
+			// d0.cz4();
+			// d0.csa(s_dir,dir,f);
+			// s.append((char)pposs[i]);
+			x[c++] = pposs[i];
+		}
+
+		Arrays.sort(x);
+		for (int i = 0; i < x.length; i++) {
+			if (i == 0 || x[i] != x[i - 1])
+				s.append(x[i]);
+		}
+		int v = mf.register("px", s.toString());
+
+		dwp.v0 = n++;
+		dwp.v1 = 1;
+		dwp.v2 = v;
+		dwp.v3 = pposs[p];
+		dwp.v4 = pposs[d];
+		dwp.cz5();
+		dwp.csa(s_dir, dir, f);
+
+		return n;
+	}
+
+	@Override
+	public void firstm(Instances is, int i, int prnt, int dpnt, int label, Cluster cluster, long[] f) {
+
+		// short[] pposs, int[] form, int[] lemmas, short[][] feats
+		for (int k = 0; k < f.length; k++)
+			f[k] = 0;
+
+		short[] pposs = is.pposs[i];
+		int[] form = is.forms[i];
+		short[][] feats = is.feats[i];
+
+		int pF = form[prnt], dF = form[dpnt];
+		int pL = is.plemmas[i][prnt], dL = is.plemmas[i][dpnt];
+		int pP = pposs[prnt], dP = pposs[dpnt];
+
+		int prntLS = pF == -1 ? -1 : cluster.getLP(pF), chldLS = dF == -1 ? -1 : cluster.getLP(dF);
+
+		final int dir = (prnt < dpnt) ? ra : la;
+
+		if (pF > maxForm)
+			pF = -1;
+		if (pL > maxForm)
+			pL = -1;
+
+		if (dF > maxForm)
+			dF = -1;
+		if (dL > maxForm)
+			dL = -1;
+
+		int n = 3, c = 0;
+
+		dl2.v1 = label;
+		dl2.v0 = n++;
+		dl2.v2 = pF;
+		dl2.v3 = dP;
+		dl2.cz4();
+		f[c++] = dl2.csa(s_dir, dir);
+		dl2.v0 = n++;
+		dl2.cz3();
+		f[c++] = dl2.csa(s_dir, dir);
+		dl2.v0 = n++;
+		dl2.v2 = dF;
+		dl2.v3 = pP;
+		dl2.cz4();
+		f[c++] = dl2.csa(s_dir, dir);
+		dl2.v0 = n++;
+		dl2.cz3();
+		f[c++] = dl2.csa(s_dir, dir);
+
+		dwwp.v1 = label;
+		dwwp.v0 = n++;
+		dwwp.v2 = pF;
+		dwwp.v3 = dF;
+		dwwp.cz4();
+		f[c++] = dwwp.csa(s_dir, dir);
+
+		dl1.v1 = label;
+		dl1.v0 = n++;
+		dl1.v2 = dP;
+		dl1.cz3();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = pP;
+		dl1.cz3();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v3 = dP;
+		dl1.cz4();
+		f[c++] = dl1.csa(s_dir, dir);
+
+		int pPm1 = prnt > 0 ? pposs[prnt - 1] : s_str, dPm1 = dpnt > 0 ? pposs[dpnt - 1] : s_str;
+		int pPp1 = prnt < pposs.length - 1 ? pposs[prnt + 1] : s_end,
+				dPp1 = dpnt < pposs.length - 1 ? pposs[dpnt + 1] : s_end;
+
+		int pPm2 = prnt > 1 ? pposs[prnt - 2] : s_str, dPm2 = dpnt > 1 ? pposs[dpnt - 2] : s_str;
+		int pPp2 = prnt < pposs.length - 2 ? pposs[prnt + 2] : s_end,
+				dPp2 = dpnt < pposs.length - 2 ? pposs[dpnt + 2] : s_end;
+
+		int pFm1 = prnt > 0 ? form[prnt - 1] : s_stwrd, dFm1 = dpnt > 0 ? form[dpnt - 1] : s_stwrd;
+		int pFp1 = prnt < form.length - 1 ? form[prnt + 1] : s_stwrd,
+				dFp1 = dpnt < form.length - 1 ? form[dpnt + 1] : s_stwrd;
+
+		dl1.v0 = n++;
+		dl1.v2 = pP;
+		dl1.v3 = pPp1;
+		dl1.v4 = dP;
+		dl1.v5 = dPp1;
+		dl1.cz6();
+		f[n++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v5 = dPm1;
+		dl1.cz6();
+		f[n++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v3 = pPm1;
+		dl1.cz6();
+		f[n++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v5 = dPp1;
+		dl1.cz6();
+		f[n++] = dl1.csa(s_dir, dir);
+
+		dl1.v0 = n++;
+		dl1.v3 = pPm1;
+		dl1.cz5();
+		f[n++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v3 = dPm1;
+		dl1.cz5();
+		f[n++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v3 = dPp1;
+		dl1.cz5();
+		f[n++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v3 = pPp1;
+		dl1.cz5();
+		f[n++] = dl1.csa(s_dir, dir);
+
+		dl1.v0 = n++;
+		dl1.v2 = pP;
+		dl1.v3 = pPp2;
+		dl1.v4 = dP;
+		dl1.v5 = dPp2;
+		dl1.cz6();
+		f[n++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v5 = dPm2;
+		dl1.cz6();
+		f[n++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v3 = pPm2;
+		dl1.cz6();
+		f[n++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v5 = dPp2;
+		dl1.cz6();
+		f[n++] = dl1.csa(s_dir, dir);
+
+		dl1.v0 = n++;
+		dl1.v3 = pPm2;
+		dl1.cz5();
+		f[n++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v3 = dPm2;
+		dl1.cz5();
+		f[n++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v3 = dPp2;
+		dl1.cz5();
+		f[n++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v3 = pPp2;
+		dl1.cz5();
+		f[n++] = dl1.csa(s_dir, dir);
+
+		dl2.v0 = n++;
+		dl2.v3 = dFm1;
+		dl2.v3 = pPp1;
+		dl2.v4 = pP;
+		dl2.cz5();
+		f[n++] = dl2.getVal();
+		dl2.v0 = n++;
+		dl2.v3 = dFp1;
+		dl2.v3 = pPm1;
+		dl2.cz5();
+		f[n++] = dl2.getVal();
+		dl2.v0 = n++;
+		dl2.v3 = pFm1;
+		dl2.v3 = dPp1;
+		dl2.v4 = dP;
+		dl2.cz5();
+		f[n++] = dl2.getVal();
+		dl2.v0 = n++;
+		dl2.v3 = pFp1;
+		dl2.v3 = dPm1;
+		dl2.cz5();
+		f[n++] = dl2.getVal();
+
+		dl2.v0 = n++;
+		dl2.v3 = dFm1;
+		dl2.v3 = dPm2;
+		dl2.v4 = pP;
+		dl2.cz5();
+		f[n++] = dl2.getVal();
+		dl2.v0 = n++;
+		dl2.v3 = dFp1;
+		dl2.v3 = dPp2;
+		dl2.cz5();
+		f[n++] = dl2.getVal();
+		dl2.v0 = n++;
+		dl2.v3 = pFm1;
+		dl2.v3 = pPm2;
+		dl2.v4 = dP;
+		dl2.cz5();
+		f[n++] = dl2.getVal();
+		dl2.v0 = n++;
+		dl2.v3 = pFp1;
+		dl2.v3 = pPp2;
+		dl2.cz5();
+		f[n++] = dl2.getVal();
+
+		dwwp.v0 = n++;
+		dwwp.v2 = pF;
+		dwwp.v3 = dF;
+		dwwp.v4 = dP;
+		dwwp.cz5();
+		f[n++] = dwwp.csa(s_dir, dir);
+		dwwp.v0 = n++;
+		dwwp.v2 = pF;
+		dwwp.v3 = dF;
+		dwwp.v4 = pP;
+		dwwp.cz5();
+		f[n++] = dwwp.csa(s_dir, dir);
+		dwwp.v0 = n++;
+		dwwp.v2 = dF;
+		dwwp.v3 = pF;
+		dwwp.v4 = pP;
+		dwwp.v4 = dP;
+		dwwp.cz6();
+		f[n++] = dwwp.csa(s_dir, dir);
+
+		// lemmas
+
+		dl2.v1 = label;
+		dl2.v0 = n++;
+		dl2.v2 = pL;
+		dl2.v3 = dP;
+		dl2.cz4();
+		f[c++] = dl2.csa(s_dir, dir);
+		dl2.v0 = n++;
+		dl2.cz3();
+		f[c++] = dl2.csa(s_dir, dir);
+		dl2.v0 = n++;
+		dl2.v2 = dL;
+		dl2.v3 = pP;
+		dl2.cz4();
+		f[c++] = dl2.csa(s_dir, dir);
+		dl2.v0 = n++;
+		dl2.cz3();
+		f[c++] = dl2.csa(s_dir, dir);
+
+		dwwp.v1 = label;
+		dwwp.v0 = n++;
+		dwwp.v2 = pL;
+		dwwp.v3 = dL;
+		dwwp.cz4();
+		f[c++] = dwwp.csa(s_dir, dir);
+
+		dwp.v1 = label;
+		dwp.v0 = n++;
+		dwp.v2 = dL;
+		dwp.v3 = pP;
+		dwp.v4 = dP;
+		dwp.v5 = pL;
+		dwp.cz6();
+		f[c++] = dwp.csa(s_dir, dir);
+		dwp.v0 = n++;
+		dwp.cz5();
+		f[c++] = dwp.csa(s_dir, dir);
+
+		dwp.v0 = n++;
+		dwp.v2 = pL;
+		dwp.cz5();
+		f[c++] = dwp.csa(s_dir, dir);
+		dwwp.v0 = n++;
+		dwwp.v2 = pL;
+		dwwp.v3 = dL;
+		dwwp.v4 = dP;
+		dwwp.cz5();
+		f[c++] = dwwp.csa(s_dir, dir);
+		dwwp.v0 = n++;
+		dwwp.v4 = pP;
+		dwwp.cz5();
+		f[c++] = dwwp.csa(s_dir, dir);
+
+		// cluster
+
+		d2pw.v1 = label;
+		d2pw.v0 = n++;
+		d2pw.v2 = prntLS;
+		d2pw.v3 = chldLS;
+		d2pw.cz4();
+		f[c++] = d2pw.csa(s_dir, dir);
+		d2pw.v0 = n++;
+		d2pw.v4 = pF;
+		d2pw.cz5();
+		f[c++] = d2pw.csa(s_dir, dir);
+		d2pw.v0 = n++;
+		d2pw.v4 = dF;
+		d2pw.cz5();
+		f[c++] = d2pw.csa(s_dir, dir);
+		d2pw.v0 = n++;
+		d2pw.v5 = pF;
+		d2pw.cz6();
+		f[c++] = d2pw.csa(s_dir, dir);
+
+		d2pp.v1 = label;
+		d2pp.v0 = n++;
+		d2pp.v2 = prntLS;
+		d2pp.v3 = chldLS;
+		d2pp.cz4();
+		f[c++] = d2pp.csa(s_dir, dir);
+		d2pp.v0 = n++;
+		d2pp.v4 = pP;
+		d2pp.cz5();
+		f[c++] = d2pp.csa(s_dir, dir);
+		d2pp.v0 = n++;
+		d2pp.v4 = dP;
+		d2pp.cz5();
+		f[c++] = d2pp.csa(s_dir, dir);
+		d2pp.v0 = n++;
+		d2pp.v5 = pP;
+		d2pp.cz6();
+		f[c++] = d2pp.csa(s_dir, dir);
+
+		// take those in for stacking
+		// dl2.v1=label;
+		// dl2.v0= n++;dl2.v2=prel[dpnt];dl2.v3=pP;dl2.v4=dP;
+		// dl2.v5=prnt==phead[dpnt]?1:2; dl2.cz6(); f[c++]=dl2.csa(s_dir,dir);
+		// dl2.v0= n++;dl2.v2=pP;dl2.v3=dP; dl2.v4=prnt==phead[dpnt]?1:2;
+		// dl2.cz5(); f[c++]=dl2.csa(s_dir,dir);
+
+		if (feats == null)
+			return;
+
+		short[] featsP = feats[prnt], featsD = feats[dpnt];
+		dlf.v0 = n++;
+		dlf.v1 = label;
+		dlf.v2 = pP;
+		dlf.v3 = dP;
+		extractFeat(f, c, dir, featsP, featsD);
+
+		return;
+	}
+
+	@Override
+	public void gcm(Instances is, int i, int p, int d, int gc, int label, Cluster cluster, long[] f) {
+
+		for (int k = 0; k < f.length; k++)
+			f[k] = 0;
+
+		short[] pos = is.pposs[i];
+		int[] forms = is.forms[i];
+		int[] lemmas = is.plemmas[i];
+		short[][] feats = is.feats[i];
+
+		int pP = pos[p], dP = pos[d];
+		int prntF = forms[p], chldF = forms[d];
+		int prntL = lemmas[p], chldL = lemmas[d];
+		int prntLS = prntF == -1 ? -1 : cluster.getLP(prntF), chldLS = chldF == -1 ? -1 : cluster.getLP(chldF);
+
+		int gP = gc != -1 ? pos[gc] : s_str;
+		int gcF = gc != -1 ? forms[gc] : s_stwrd;
+		int gcL = gc != -1 ? lemmas[gc] : s_stwrd;
+		int gcLS = (gc != -1) && (gcF != -1) ? cluster.getLP(gcF) : s_stwrd;
+
+		if (prntF > maxForm)
+			prntF = -1;
+		if (prntL > maxForm)
+			prntL = -1;
+
+		if (chldF > maxForm)
+			chldF = -1;
+		if (chldL > maxForm)
+			chldL = -1;
+
+		if (gcF > maxForm)
+			gcF = -1;
+		if (gcL > maxForm)
+			gcL = -1;
+
+		int dir = (p < d) ? ra : la, dir_gra = (d < gc) ? ra : la;
+
+		int n = 84, c = 0;
+
+		// dl1.v023();
+		dl1.v1 = label;
+		dl1.v0 = n++;
+		dl1.v2 = pP;
+		dl1.v3 = dP;
+		dl1.v4 = gP;
+		dl1.cz5();
+		dl1.cs(s_dir, dir);
+		f[c++] = dl1.csa(s_dir, dir_gra);
+		dl1.v0 = n++;
+		dl1.v2 = pP;
+		dl1.v3 = gP;
+		dl1.cz4();
+		dl1.cs(s_dir, dir);
+		f[c++] = dl1.csa(s_dir, dir_gra);
+		dl1.v0 = n++;
+		dl1.v2 = dP;
+		dl1.cz4();
+		dl1.cs(s_dir, dir);
+		f[c++] = dl1.csa(s_dir, dir_gra);
+
+		dwwp.v1 = label;
+		dwwp.v0 = n++;
+		dwwp.v2 = prntF;
+		dwwp.v3 = gcF;
+		dwwp.cz4();
+		dwwp.cs(s_dir, dir);
+		f[c++] = dwwp.csa(s_dir, dir_gra);
+
+		dwwp.v0 = n++;
+		dwwp.v2 = chldF;
+		dwwp.v3 = gcF;
+		dwwp.cz4();
+		dwwp.cs(s_dir, dir);
+		f[c++] = dwwp.csa(s_dir, dir_gra);
+
+		dwp.v1 = label;
+		dwp.v0 = n++;
+		dwp.v2 = gcF;
+		dwp.v3 = pP;
+		dwp.cz4();
+		dwp.cs(s_dir, dir);
+		f[c++] = dwp.csa(s_dir, dir_gra);
+
+		dwp.v0 = n++;
+		dwp.v2 = gcF;
+		dwp.v3 = dP;
+		dwp.cz4();
+		dwp.cs(s_dir, dir);
+		f[c++] = dwp.csa(s_dir, dir_gra);
+
+		dwp.v0 = n++;
+		dwp.v2 = prntF;
+		dwp.v3 = gP;
+		dwp.cz4();
+		dwp.cs(s_dir, dir);
+		f[c++] = dwp.csa(s_dir, dir_gra);
+
+		dwp.v0 = n++;
+		dwp.v2 = chldF;
+		dwp.v3 = gP;
+		dwp.cz4();
+		dwp.cs(s_dir, dir);
+		f[c++] = dwp.csa(s_dir, dir_gra);
+
+		// lemma
+
+		dwwp.v0 = n++;
+		dwwp.v2 = prntL;
+		dwwp.v3 = gcL;
+		dwwp.cz4();
+		dwwp.cs(s_dir, dir);
+		f[c++] = dwwp.csa(s_dir, dir_gra);
+
+		dwwp.v0 = n++;
+		dwwp.v2 = chldL;
+		dwwp.v3 = gcL;
+		dwwp.cz4();
+		dwwp.cs(s_dir, dir);
+		f[c++] = dwwp.csa(s_dir, dir_gra);
+
+		dwp.v0 = n++;
+		dwp.v2 = gcL;
+		dwp.v3 = pP;
+		dwp.cz4();
+		dwp.cs(s_dir, dir);
+		f[c++] = dwp.csa(s_dir, dir_gra);
+
+		dwp.v0 = n++;
+		dwp.v2 = gcL;
+		dwp.v3 = dP;
+		dwp.cz4();
+		dwp.cs(s_dir, dir);
+		f[c++] = dwp.csa(s_dir, dir_gra);
+
+		dwp.v0 = n++;
+		dwp.v2 = prntL;
+		dwp.v3 = gP;
+		dwp.cz4();
+		dwp.cs(s_dir, dir);
+		f[c++] = dwp.csa(s_dir, dir_gra);
+
+		dwp.v0 = n++;
+		dwp.v2 = chldL;
+		dwp.v3 = gP;
+		dwp.cz4();
+		dwp.cs(s_dir, dir);
+		f[c++] = dwp.csa(s_dir, dir_gra);
+
+		// clusters
+
+		d2lp.v1 = label;
+		d2lp.v0 = n++;
+		d2lp.v2 = prntLS;
+		d2lp.v3 = gcLS;
+		d2lp.cz4();
+		d2lp.cs(s_dir, dir);
+		f[c++] = d2lp.csa(s_dir, dir_gra);// f.add(li.l2i(l));
+		d2lp.v0 = n++;
+		d2lp.v2 = chldLS;
+		d2lp.v3 = gcLS;
+		d2lp.cz4();
+		d2lp.cs(s_dir, dir);
+		f[c++] = d2lp.csa(s_dir, dir_gra);
+		d3lp.v0 = n++;
+		d3lp.v1 = label;
+		d3lp.v2 = prntLS;
+		d3lp.v3 = chldLS;
+		d3lp.v4 = gcLS;
+		d3lp.cz5();
+		d3lp.cs(s_dir, dir);
+		f[c++] = d3lp.csa(s_dir, dir_gra);
+
+		// _f83;
+		d2lp.v0 = n++;
+		d2lp.v2 = prntLS;
+		d2lp.v3 = chldLS;
+		d2lp.v4 = gcF;
+		d2lp.cz5();
+		f[c++] = d2lp.csa(s_dir, dir);
+		d2lp.v0 = n++;
+		d2lp.v2 = prntLS;
+		d2lp.v3 = gcLS;
+		d2lp.v4 = chldF;
+		d2lp.cz5();
+		f[c++] = d2lp.csa(s_dir, dir);
+		d2lp.v0 = n++;
+		d2lp.v2 = chldLS;
+		d2lp.v3 = gcLS;
+		d2lp.v4 = prntF;
+		d2lp.cz5();
+		f[c++] = d2lp.csa(s_dir, dir);
+
+		d2pp.v1 = label;
+		d2pp.v0 = n++;
+		d2pp.v2 = prntLS;
+		d2pp.v3 = chldLS;
+		d2pp.v4 = gP;
+		d2pp.cz5();
+		f[c++] = d2pp.csa(s_dir, dir);
+		d2pp.v0 = n++;
+		d2pp.v2 = prntLS;
+		d2pp.v3 = gcLS;
+		d2pp.v4 = dP;
+		d2pp.cz5();
+		f[c++] = d2pp.csa(s_dir, dir);
+		d2pp.v0 = n++;
+		d2pp.v2 = chldLS;
+		d2pp.v3 = gcLS;
+		d2pp.v4 = pP;
+		d2pp.cz5();
+		f[c++] = d2pp.csa(s_dir, dir);
+
+		// linear features
+
+		int prntPm1 = p != 0 ? pos[p - 1] : s_str; // parent-pos-minus1
+		int chldPm1 = d - 1 >= 0 ? pos[d - 1] : s_str; // child-pos-minus1
+		int prntPp1 = p != pos.length - 1 ? pos[p + 1] : s_end;
+		int chldPp1 = d != pos.length - 1 ? pos[d + 1] : s_end;
+
+		int gcPm1 = gc > 0 ? pos[gc - 1] : s_str;
+		int gcPp1 = gc < pos.length - 1 ? pos[gc + 1] : s_end;
+
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcPp1;
+		dl1.v4 = dP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcPm1;
+		dl1.v4 = dP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = dP;
+		dl1.v4 = chldPp1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = dP;
+		dl1.v4 = chldPm1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcPp1;
+		dl1.v4 = chldPm1;
+		dl1.v5 = dP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gcPm1;
+		dl1.v3 = gP;
+		dl1.v4 = chldPm1;
+		dl1.v5 = dP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcPp1;
+		dl1.v4 = dP;
+		dl1.v5 = chldPp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gcPm1;
+		dl1.v3 = gP;
+		dl1.v4 = dP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcPp1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcPm1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = pP;
+		dl1.v4 = prntPp1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = pP;
+		dl1.v4 = prntPm1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcPp1;
+		dl1.v4 = prntPm1;
+		dl1.v5 = pP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gcPm1;
+		dl1.v3 = gP;
+		dl1.v4 = prntPm1;
+		dl1.v5 = pP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcPp1;
+		dl1.v4 = pP;
+		dl1.v5 = prntPp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gcPm1;
+		dl1.v3 = gP;
+		dl1.v4 = pP;
+		dl1.v5 = prntPp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+
+		int pLSp1 = p != pos.length - 1 ? forms[p + 1] == -1 ? -1 : cluster.getLP(forms[p + 1]) : _cend;
+		int cLSp1 = d != pos.length - 1 ? forms[d + 1] == -1 ? -1 : cluster.getLP(forms[d + 1]) : _cend;
+		int gcLSp1 = gc < pos.length - 1 ? forms[gc + 1] == -1 ? -1 : cluster.getLP(forms[gc + 1]) : s_end;
+
+		int pLSm1 = p != 0 ? lemmas[p - 1] == -1 ? -1 : cluster.getLP(lemmas[p - 1]) : _cstr;
+		int cLSm1 = d - 1 >= 0 ? lemmas[d - 1] == -1 ? -1 : cluster.getLP(lemmas[d - 1]) : _cstr;
+		int gcLSm1 = gc > 0 ? lemmas[gc - 1] == -1 ? -1 : cluster.getLP(lemmas[gc - 1]) : _cstr;
+
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcLSp1;
+		dl1.v4 = dP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcLSm1;
+		dl1.v4 = dP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = dP;
+		dl1.v4 = cLSp1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = dP;
+		dl1.v4 = cLSm1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcLSp1;
+		dl1.v4 = cLSm1;
+		dl1.v5 = dP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gcLSm1;
+		dl1.v3 = gP;
+		dl1.v4 = cLSm1;
+		dl1.v5 = dP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcLSp1;
+		dl1.v4 = dP;
+		dl1.v5 = cLSp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = cLSm1;
+		dl1.v3 = gP;
+		dl1.v4 = dP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcLSp1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcLSm1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = pP;
+		dl1.v4 = pLSp1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = pP;
+		dl1.v4 = pLSm1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcLSp1;
+		dl1.v4 = pLSm1;
+		dl1.v5 = pP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gcLSm1;
+		dl1.v3 = gP;
+		dl1.v4 = pLSm1;
+		dl1.v5 = pP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gP;
+		dl1.v3 = gcLSp1;
+		dl1.v4 = pP;
+		dl1.v5 = pLSp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = gcLSm1;
+		dl1.v3 = gP;
+		dl1.v4 = pP;
+		dl1.v5 = pLSp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+
+		if (gc >= 0) {
+		}
+
+		// take those in for stacking
+		/*
+		 * dl2.v1=label; dl2.v0=
+		 * n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=gP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.
+		 * csa(s_dir,dir); dl2.v0=
+		 * n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=gP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.
+		 * csa(s_dir,dir); dl2.v0=
+		 * n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=gP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f
+		 * [c++]=dl2.csa(s_dir,dir);
+		 * 
+		 * dl2.v0=
+		 * n++;dl2.v2=gr;dl2.v3=g;dl2.v4=gP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.csa(
+		 * s_dir,dir); dl2.v0=
+		 * n++;dl2.v2=gr;dl2.v3=g;dl2.v4=gP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.csa(
+		 * s_dir,dir); dl2.v0=
+		 * n++;dl2.v2=gr;dl2.v3=g;dl2.v4=gP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f[c++]
+		 * =dl2.csa(s_dir,dir);
+		 * 
+		 */
+		if (feats == null)
+			return;
+
+		short[] featsP = feats[d];
+		short[] featsD = gc != -1 ? feats[gc] : null;
+
+		dlf.v0 = n++;
+		dlf.v1 = label;
+		dlf.v2 = gP;
+		dlf.v3 = dP;
+		extractFeat(f, c, dir, featsP, featsD);
+		return;
+	}
+
+	@Override
+	public void siblingm(Instances is, int i, short pos[], int forms[], int[] lemmas, short[][] feats, int prnt, int d,
+			int sblng, int label, Cluster cluster, long[] f, int v) {
+
+		for (int k = 0; k < f.length; k++)
+			f[k] = 0;
+
+		int pP = pos[prnt], dP = pos[d];
+		int prntF = forms[prnt], chldF = forms[d];
+		int prntL = lemmas[prnt], chldL = lemmas[d];
+		int prntLS = prntF == -1 ? -1 : cluster.getLP(prntF), chldLS = chldF == -1 ? -1 : cluster.getLP(chldF);
+
+		int sP = sblng != -1 ? pos[sblng] : s_str, sblF = sblng != -1 ? forms[sblng] : s_stwrd,
+				sblL = sblng != -1 ? lemmas[sblng] : s_stwrd;
+
+		int sblLS = (sblng != -1) && (sblF != -1) ? cluster.getLP(sblF) : s_stwrd;
+
+		int dir = (prnt < d) ? ra : la;
+
+		int abs = Math.abs(prnt - d);
+
+		final int dist;
+		if (abs > 10)
+			dist = d10;
+		else if (abs > 5)
+			dist = d5;
+		else if (abs == 5)
+			dist = d4;
+		else if (abs == 4)
+			dist = d3;
+		else if (abs == 3)
+			dist = d2;
+		else if (abs == 2)
+			dist = d1;
+		else
+			dist = di0;
+
+		int n = 147;
+
+		if (prntF > maxForm)
+			prntF = -1;
+		if (prntL > maxForm)
+			prntL = -1;
+
+		if (chldF > maxForm)
+			chldF = -1;
+		if (chldL > maxForm)
+			chldL = -1;
+
+		if (sblF > maxForm)
+			sblF = -1;
+		if (sblL > maxForm)
+			sblL = -1;
+
+		dl1.v0 = n++;
+		dl1.v1 = label;
+		dl1.v2 = pP;
+		dl1.v3 = dP;
+		dl1.v4 = sP;
+		dl1.cz5();
+		f[0] = dl1.csa(s_dir, dir);
+		f[1] = dl1.csa(s_dist, dist);
+		dl1.v0 = n++;
+		dl1.v3 = sP;
+		dl1.cz4();
+		f[2] = dl1.csa(s_dir, dir);
+		f[3] = dl1.csa(s_dist, dist);
+		dl1.v0 = n++;
+		dl1.v2 = dP;
+		dl1.cz4();
+		f[4] = dl1.csa(s_dir, dir);
+		f[5] = dl1.csa(s_dist, dist);
+
+		// sibling only could be tried
+		dwwp.v1 = label;
+		dwwp.v0 = n++;
+		dwwp.v2 = prntF;
+		dwwp.v3 = sblF;
+		dwwp.cz4();
+		f[6] = dwwp.csa(s_dir, dir);
+		f[7] = dwwp.csa(s_dist, dist);
+		dwwp.v0 = n++;
+		dwwp.v2 = chldF;
+		dwwp.cz4();
+		f[8] = dwwp.csa(s_dir, dir);
+		f[9] = dwwp.csa(s_dist, dist);
+		dwp.v0 = n++;
+		dwp.v1 = label;
+		dwp.v2 = sblF;
+		dwp.v3 = pP;
+		dwp.cz4();
+		f[10] = dwp.csa(s_dir, dir);
+		f[11] = dwp.csa(s_dist, dist);
+		dwp.v0 = n++;
+		/* dwp.v1=label; */dwp.v3 = dP;
+		dwp.cz4();
+		f[12] = dwp.csa(s_dir, dir);
+		f[13] = dwp.csa(s_dist, dist);
+		dwp.v0 = n++;
+		/* dwp.v1=label; */ dwp.v2 = prntF;
+		dwp.v3 = sP;
+		dwp.cz4();
+		f[14] = dwp.csa(s_dir, dir);
+		f[15] = dwp.csa(s_dist, dist);
+		dwp.v0 = n++;
+		/* dwp.v1=label; */ dwp.v2 = chldF;
+		dwp.cz4();
+		f[16] = dwp.csa(s_dir, dir);
+		f[17] = dwp.csa(s_dist, dist);
+
+		// lemmas
+		dwwp.v0 = n++;
+		dwwp.v2 = prntL;
+		dwwp.v3 = sblL;
+		dwwp.cz4();
+		f[18] = dwwp.csa(s_dir, dir);
+		dwwp.v0 = n++;
+		dwwp.v2 = chldL;
+		dwwp.cz4();
+		f[19] = dwwp.csa(s_dir, dir);
+		f[20] = dwwp.csa(s_dist, dist);
+		dwp.v0 = n++;
+		/* dwp.v1=label; */ dwp.v2 = sblL;
+		dwp.v3 = pP;
+		dwp.cz4();
+		f[21] = dwp.csa(s_dir, dir);
+		f[22] = dwp.csa(s_dist, dist);
+		dwp.v0 = n++;
+		/* dwp.v1=label; */ dwp.v3 = dP;
+		dwp.cz4();
+		f[23] = dwp.csa(s_dir, dir);
+		f[24] = dwp.csa(s_dist, dist);
+		dwp.v0 = n++;
+		/* dwp.v1=label; */ dwp.v2 = prntL;
+		dwp.v3 = sP;
+		dwp.cz4();
+		f[25] = dwp.csa(s_dir, dir);
+		f[26] = dwp.csa(s_dist, dist);
+		dwp.v0 = n++;
+		/* dwp.v1=label; */ dwp.v2 = chldL;
+		dwp.cz4();
+		f[27] = dwp.csa(s_dir, dir);
+		f[28] = dwp.csa(s_dist, dist);
+
+		// clusters
+
+		d2lp.v1 = label;
+		d2lp.v0 = n++;
+		d2lp.v2 = prntLS;
+		d2lp.v3 = sblLS;
+		d2lp.cz4();
+		f[29] = d2lp.csa(s_dir, dir);
+		d2lp.v0 = n++;
+		d2lp.v2 = chldLS;
+		d2lp.v3 = sblLS;
+		d2lp.cz4();
+		f[30] = d2lp.csa(s_dir, dir);
+		f[31] = d2lp.csa(s_dist, dist);
+
+		d3lp.v1 = label;
+		d3lp.v0 = n++;
+		d3lp.v2 = prntLS;
+		d3lp.v3 = chldLS;
+		d3lp.v4 = sblLS;
+		d3lp.cz5();
+		f[32] = d3lp.csa(s_dir, dir);
+
+		d2lp.v0 = n++;
+		d2lp.v2 = prntLS;
+		d2lp.v3 = chldLS;
+		d2lp.v4 = sblF;
+		d2lp.cz5();
+		f[33] = d2lp.csa(s_dir, dir);
+		f[34] = d2lp.csa(s_dist, dist);
+		d2lp.v0 = n++;
+		d2lp.v2 = prntLS;
+		d2lp.v3 = sblLS;
+		d2lp.v4 = chldF;
+		d2lp.cz5();
+		f[35] = d2lp.csa(s_dir, dir);
+		f[36] = d2lp.csa(s_dist, dist);
+		d2lp.v0 = n++;
+		d2lp.v2 = chldLS;
+		d2lp.v3 = sblLS;
+		d2lp.v4 = prntF;
+		d2lp.cz5();
+		f[37] = d2lp.csa(s_dir, dir);
+		f[38] = d2lp.csa(s_dist, dist);
+
+		d2pp.v1 = label;
+		d2pp.v0 = n++;
+		d2pp.v2 = prntLS;
+		d2pp.v3 = chldLS;
+		d2pp.v4 = sP;
+		d2pp.cz5();
+		f[39] = d2pp.csa(s_dir, dir);
+		f[40] = d2pp.csa(s_dist, dist);
+		d2pp.v0 = n++;
+		d2pp.v2 = prntLS;
+		d2pp.v3 = sblLS;
+		d2pp.v4 = dP;
+		d2pp.cz5();
+		f[41] = d2pp.csa(s_dir, dir);
+		f[42] = d2pp.csa(s_dist, dist);
+		d2pp.v0 = n++;
+		d2pp.v2 = chldLS;
+		d2pp.v3 = sblLS;
+		d2pp.v4 = pP;
+		d2pp.cz5();
+		f[43] = d2pp.csa(s_dir, dir);
+		f[44] = d2pp.csa(s_dist, dist);
+
+		int prntPm1 = prnt != 0 ? pos[prnt - 1] : s_str;
+		int chldPm1 = d - 1 >= 0 ? pos[d - 1] : s_str;
+		int prntPp1 = prnt != pos.length - 1 ? pos[prnt + 1] : s_end;
+		int chldPp1 = d != pos.length - 1 ? pos[d + 1] : s_end;
+
+		// sibling part of speech minus and plus 1
+		int sblPm1 = sblng > 0 ? pos[sblng - 1] : s_str;
+		int sblPp1 = sblng < pos.length - 1 ? pos[sblng + 1] : s_end;
+
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sblPp1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[45] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sblPm1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[46] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = pP;
+		dl1.v4 = prntPp1;
+		dl1.cz5();
+		f[47] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = pP;
+		dl1.v4 = prntPm1;
+		dl1.cz5();
+		f[48] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sblPp1;
+		dl1.v4 = prntPm1;
+		dl1.v5 = pP;
+		dl1.cz6();
+		f[49] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sblPm1;
+		dl1.v3 = sP;
+		dl1.v4 = prntPm1;
+		dl1.v5 = pP;
+		dl1.cz6();
+		f[50] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sblPp1;
+		dl1.v4 = pP;
+		dl1.v5 = prntPp1;
+		dl1.cz6();
+		f[51] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
+		dl1.v0 = n++;
+		dl1.v2 = sblPm1;
+		dl1.v3 = sP;
+		dl1.v4 = pP;
+		dl1.v5 = prntPp1;
+		dl1.cz6();
+		f[52] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sblPp1;
+		dl1.v4 = dP;
+		dl1.cz5();
+		f[53] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sblPm1;
+		dl1.v4 = dP;
+		dl1.cz5();
+		f[54] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = dP;
+		dl1.v4 = chldPp1;
+		dl1.cz5();
+		f[55] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = dP;
+		dl1.v4 = chldPm1;
+		dl1.cz5();
+		f[56] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sblPp1;
+		dl1.v4 = chldPm1;
+		dl1.v5 = dP;
+		dl1.cz6();
+		f[57] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
+		dl1.v0 = n++;
+		dl1.v2 = sblPm1;
+		dl1.v3 = sP;
+		dl1.v4 = chldPm1;
+		dl1.v5 = dP;
+		dl1.cz6();
+		f[58] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sblPp1;
+		dl1.v4 = dP;
+		dl1.v5 = chldPp1;
+		dl1.cz6();
+		f[59] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
+		dl1.v0 = n++;
+		dl1.v2 = sblPm1;
+		dl1.v3 = sP;
+		dl1.v4 = dP;
+		dl1.v5 = chldPp1;
+		dl1.cz6();
+		f[60] = dl1.csa(s_dir, dir);
+
+		int c = 61;
+
+		int pLSp1 = prnt != pos.length - 1 ? forms[prnt + 1] == -1 ? -1 : cluster.getLP(forms[prnt + 1]) : _cend;
+		int cLSp1 = d != pos.length - 1 ? forms[d + 1] == -1 ? -1 : cluster.getLP(forms[d + 1]) : _cend;
+		int sLSp1 = sblng < pos.length - 1 ? forms[sblng + 1] == -1 ? -1 : cluster.getLP(forms[sblng + 1]) : _cend;
+
+		int pLSm1 = prnt != 0 ? forms[prnt - 1] == -1 ? -1 : cluster.getLP(forms[prnt - 1]) : _cstr;
+		int cLSm1 = d - 1 >= 0 ? forms[d - 1] == -1 ? -1 : cluster.getLP(forms[d - 1]) : _cstr;
+		int sLSm1 = sblng > 0 ? forms[sblng - 1] == -1 ? -1 : cluster.getLP(forms[sblng - 1]) : _cstr;
+
+		// int c=61;
+
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSm1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = pP;
+		dl1.v4 = pLSp1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = pP;
+		dl1.v4 = pLSm1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = pLSm1;
+		dl1.v5 = pP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sLSm1;
+		dl1.v3 = sP;
+		dl1.v4 = pLSm1;
+		dl1.v5 = pP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = pP;
+		dl1.v5 = pLSp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sLSm1;
+		dl1.v3 = sP;
+		dl1.v4 = pP;
+		dl1.v5 = pLSp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = dP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSm1;
+		dl1.v4 = dP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = dP;
+		dl1.v4 = cLSp1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = dP;
+		dl1.v4 = cLSm1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSm1;
+		dl1.v4 = cLSm1;
+		dl1.v5 = dP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sLSm1;
+		dl1.v3 = sP;
+		dl1.v4 = cLSm1;
+		dl1.v5 = dP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = dP;
+		dl1.v5 = cLSp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sLSm1;
+		dl1.v3 = sP;
+		dl1.v4 = dP;
+		dl1.v5 = cLSp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSm1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = pP;
+		dl1.v4 = pLSp1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = pP;
+		dl1.v4 = pLSm1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = pLSm1;
+		dl1.v5 = pP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sLSm1;
+		dl1.v3 = sP;
+		dl1.v4 = pLSm1;
+		dl1.v5 = pP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = pP;
+		dl1.v5 = pLSp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sLSm1;
+		dl1.v3 = sP;
+		dl1.v4 = pP;
+		dl1.v5 = pLSp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = dP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSm1;
+		dl1.v4 = dP;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = dP;
+		dl1.v4 = cLSp1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = dP;
+		dl1.v4 = cLSm1;
+		dl1.cz5();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSm1;
+		dl1.v4 = cLSm1;
+		dl1.v5 = dP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sLSm1;
+		dl1.v3 = sP;
+		dl1.v4 = cLSm1;
+		dl1.v5 = dP;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = dP;
+		dl1.v5 = cLSp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+		dl1.v0 = n++;
+		dl1.v2 = sLSm1;
+		dl1.v3 = sP;
+		dl1.v4 = dP;
+		dl1.v5 = cLSp1;
+		dl1.cz6();
+		f[c++] = dl1.csa(s_dir, dir);
+
+		// take those in for stacking
+
+		/*
+		 * short[] prel = is.plabels[i],phead=is.pheads[i];
+		 * 
+		 * int g = prnt==phead[d]?1:2 ; if (sblng>=0) g +=
+		 * prnt==phead[sblng]?4:8;
+		 * 
+		 * int gr = sblng==-1?s_relend:prel[sblng];
+		 * 
+		 * 
+		 * dl2.v0=
+		 * n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=sP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.
+		 * csa(s_dir,dir); dl2.v0=
+		 * n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.
+		 * csa(s_dir,dir); dl2.v0=
+		 * n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f
+		 * [c++]=dl2.csa(s_dir,dir);
+		 * 
+		 * dl2.v0=
+		 * n++;dl2.v2=gr;dl2.v3=g;dl2.v4=sP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.csa(
+		 * s_dir,dir); dl2.v0=
+		 * n++;dl2.v2=gr;dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.csa(
+		 * s_dir,dir); dl2.v0=
+		 * n++;dl2.v2=gr;dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f[c++]
+		 * =dl2.csa(s_dir,dir);
+		 */
+
+		if (feats == null)
+			return;
+
+		int cnt = c;
+
+		short[] featsP = feats[d];
+		short[] featsSbl = sblng != -1 ? feats[sblng] : null;
+
+		dlf.v0 = n++;
+		dlf.v1 = label;
+		dlf.v2 = sP;
+		dlf.v3 = dP;
+
+		cnt = extractFeat(f, cnt, dir, featsP, featsSbl);
+
+		featsP = feats[prnt];
+		featsSbl = sblng != -1 ? feats[sblng] : null;
+
+		dlf.v0 = n++;
+		dlf.v1 = label;
+		dlf.v2 = pP;
+		dlf.v3 = sP;
+		if (featsP != null && featsSbl != null) {
+			for (short i1 = 0; i1 < featsP.length; i1++) {
+				for (short i2 = 0; i2 < featsSbl.length; i2++) {
+					dlf.v4 = featsP[i1];
+					dlf.v5 = featsSbl[i2];
+					dlf.cz6();
+					f[cnt++] = dlf.csa(s_dir, prnt < sblng ? 1 : 2);
+				}
+			}
+		} else if (featsP == null && featsSbl != null) {
+
+			for (short i2 = 0; i2 < featsSbl.length; i2++) {
+				dlf.v4 = nofeat;
+				dlf.v5 = featsSbl[i2];
+				dlf.cz6();
+				f[cnt++] = dlf.csa(s_dir, dir);
+			}
+
+		} else if (featsP != null && featsSbl == null) {
+
+			for (short i1 = 0; i1 < featsP.length; i1++) {
+				dlf.v4 = featsP[i1];
+				dlf.v5 = nofeat;
+				dlf.cz6();
+				f[cnt++] = dlf.csa(s_dir, dir);
+			}
+		}
+
+		return;
+	}
+
+	private int extractFeat(long[] f, int cnt, int dir, short[] featsP, short[] featsD) {
+		if (featsP != null && featsD != null) {
+			for (short i1 = 0; i1 < featsP.length; i1++) {
+				for (short i2 = 0; i2 < featsD.length; i2++) {
+					dlf.v4 = featsP[i1];
+					dlf.v5 = featsD[i2];
+					dlf.cz6();
+					f[cnt++] = dlf.csa(s_dir, dir);
+				}
+			}
+		} else if (featsP == null && featsD != null) {
+
+			for (short i2 = 0; i2 < featsD.length; i2++) {
+				dlf.v4 = nofeat;
+				dlf.v5 = featsD[i2];
+				dlf.cz6();
+				f[cnt++] = dlf.csa(s_dir, dir);
+
+			}
+		} else if (featsP != null && featsD == null) {
+
+			for (short i1 = 0; i1 < featsP.length; i1++) {
+				dlf.v4 = featsP[i1];
+				dlf.v5 = nofeat;
+				dlf.cz6();
+				f[cnt++] = dlf.csa(s_dir, dir);
+
+			}
+		}
+		return cnt;
+	}
+
+	@Override
+	public FV encodeCat(Instances is, int ic, short pposs[], int forms[], int[] lemmas, short[] heads, short[] types,
+			short feats[][], Cluster cluster, FV f) {
+
+		long[] svs = new long[250];
+
+		for (int i = 1; i < heads.length; i++) {
+
+			int n = basic(pposs, forms, heads[i], i, cluster, f);
+
+			firstm(is, ic, heads[i], i, types[i], cluster, svs);
+			for (long sv : svs)
+				dl1.map(f, sv);
+
+			int ch, cmi, cmo;
+			if (heads[i] < i) {
+				ch = rightmostRight(heads, heads[i], i);
+				cmi = leftmostLeft(heads, i, heads[i]);
+				cmo = rightmostRight(heads, i, heads.length);
+
+			} else {
+				ch = leftmostLeft(heads, heads[i], i);
+				cmi = rightmostRight(heads, i, heads[i]);
+				cmo = leftmostLeft(heads, i, 0);
+			}
+
+			siblingm(is, ic, pposs, forms, lemmas, feats, heads[i], i, ch, types[i], cluster, svs, n);
+			for (long sv : svs)
+				dl1.map(f, sv);
+
+			gcm(is, ic, heads[i], i, cmi, types[i], cluster, svs);
+			for (long sv : svs)
+				dl1.map(f, sv);
+
+			gcm(is, ic, heads[i], i, cmo, types[i], cluster, svs);
+			for (long sv : svs)
+				dl1.map(f, sv);
+		}
+
+		return f;
+	}
+
+	@Override
+	public float encode3(short[] pos, short heads[], short[] types, DataF d2) {
+
+		double v = 0;
+		for (int i = 1; i < heads.length; i++) {
+
+			int dir = (heads[i] < i) ? 0 : 1;
+
+			v += d2.pl[heads[i]][i];
+			v += d2.lab[heads[i]][i][types[i]][dir];
+
+			boolean left = i < heads[i];
+			short[] labels = Edges.get(pos[heads[i]], pos[i], left);
+			int lid = -1;
+			for (int k = 0; k < labels.length; k++)
+				if (types[i] == labels[k]) {
+					lid = k;
+					break;
+				}
+
+			int ch, cmi, cmo;
+			if (heads[i] < i) {
+				ch = rightmostRight(heads, heads[i], i);
+				cmi = leftmostLeft(heads, i, heads[i]);
+				cmo = rightmostRight(heads, i, heads.length);
+
+				if (ch == -1)
+					ch = heads[i];
+				if (cmi == -1)
+					cmi = heads[i];
+				if (cmo == -1)
+					cmo = heads[i];
+
+			} else {
+				ch = leftmostLeft(heads, heads[i], i);
+				cmi = rightmostRight(heads, i, heads[i]);
+				cmo = leftmostLeft(heads, i, 0);
+
+				if (ch == -1)
+					ch = i;
+				if (cmi == -1)
+					cmi = i;
+				if (cmo == -1)
+					cmo = i;
+			}
+			v += d2.sib[heads[i]][i][ch][dir][lid];
+			v += d2.gra[heads[i]][i][cmi][dir][lid];
+			v += d2.gra[heads[i]][i][cmo][dir][lid];
+		}
+		return (float) v;
+	}
+
+	/**
+	 * Provide the scores of the edges
+	 * 
+	 * @param pos
+	 * @param heads
+	 * @param types
+	 * @param edgesScores
+	 * @param d2
+	 * @return
+	 */
+	public static float encode3(short[] pos, short heads[], short[] types, float[] edgesScores, DataF d2) {
+
+		double v = 0;
+		for (int i = 1; i < heads.length; i++) {
+
+			int dir = (heads[i] < i) ? 0 : 1;
+
+			edgesScores[i] = d2.pl[heads[i]][i];
+			edgesScores[i] += d2.lab[heads[i]][i][types[i]][dir];
+
+			boolean left = i < heads[i];
+			short[] labels = Edges.get(pos[heads[i]], pos[i], left);
+			int lid = -1;
+			for (int k = 0; k < labels.length; k++)
+				if (types[i] == labels[k]) {
+					lid = k;
+					break;
+				}
+
+			int ch, cmi, cmo;
+			if (heads[i] < i) {
+				ch = rightmostRight(heads, heads[i], i);
+				cmi = leftmostLeft(heads, i, heads[i]);
+				cmo = rightmostRight(heads, i, heads.length);
+
+				if (ch == -1)
+					ch = heads[i];
+				if (cmi == -1)
+					cmi = heads[i];
+				if (cmo == -1)
+					cmo = heads[i];
+
+			} else {
+				ch = leftmostLeft(heads, heads[i], i);
+				cmi = rightmostRight(heads, i, heads[i]);
+				cmo = leftmostLeft(heads, i, 0);
+
+				if (ch == -1)
+					ch = i;
+				if (cmi == -1)
+					cmi = i;
+				if (cmo == -1)
+					cmo = i;
+			}
+			edgesScores[i] += d2.sib[heads[i]][i][ch][dir][lid];
+			edgesScores[i] += d2.gra[heads[i]][i][cmi][dir][lid];
+			edgesScores[i] += d2.gra[heads[i]][i][cmo][dir][lid];
+			v += edgesScores[i];
+		}
+		return (float) v;
+	}
+
+	private static int rightmostRight(short[] heads, int head, int max) {
+		int rightmost = -1;
+		for (int i = head + 1; i < max; i++)
+			if (heads[i] == head)
+				rightmost = i;
+
+		return rightmost;
+	}
+
+	private static int leftmostLeft(short[] heads, int head, int min) {
+		int leftmost = -1;
+		for (int i = head - 1; i > min; i--)
+			if (heads[i] == head)
+				leftmost = i;
+		return leftmost;
+	}
+
+	public static final String REL = "REL", END = "END", STR = "STR", LA = "LA", RA = "RA";
+
+	private static int ra, la;
+	private static int s_str;
+	private static int s_end, _cend, _cstr, s_stwrd;
+
+	protected static final String TYPE = "TYPE", DIR = "D", FEAT = "F";
+	public static final String POS = "POS";
+	protected static final String DIST = "DIST", MID = "MID";
+
+	private static final String _0 = "0", _4 = "4", _3 = "3", _2 = "2", _1 = "1", _5 = "5", _10 = "10";
+
+	private static int di0, d4, d3, d2, d1, d5, d10;
+
+	private static final String WORD = "WORD", STWRD = "STWRD", STPOS = "STPOS";
+
+	private static int nofeat;
+
+	private static int maxForm;
+
+	/**
+	 * Initialize the features.
+	 * 
+	 * @param maxFeatures
+	 */
+	static public void initFeatures() {
+
+		MFB mf = new MFB();
+		mf.register(POS, MID);
+		s_str = mf.register(POS, STR);
+		s_end = mf.register(POS, END);
+
+		mf.register(REL, END);
+
+		_cstr = mf.register(Cluster.SPATH, STR);
+		_cend = mf.register(Cluster.SPATH, END);
+
+		mf.register(TYPE, POS);
+
+		s_stwrd = mf.register(WORD, STWRD);
+		mf.register(POS, STPOS);
+
+		la = mf.register(DIR, LA);
+		ra = mf.register(DIR, RA);
+
+		// mf.register(TYPE, CHAR);
+
+		mf.register(TYPE, FEAT);
+		nofeat = mf.register(FEAT, "NOFEAT");
+
+		for (int k = 0; k < 215; k++)
+			mf.register(TYPE, "F" + k);
+
+		di0 = mf.register(DIST, _0);
+		d1 = mf.register(DIST, _1);
+		d2 = mf.register(DIST, _2);
+		d3 = mf.register(DIST, _3);
+		d4 = mf.register(DIST, _4);
+		d5 = mf.register(DIST, _5);
+		// d5l=mf.register(DIST, _5l);
+		d10 = mf.register(DIST, _10);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see extractors.Extractor#getType()
+	 */
+	@Override
+	public int getType() {
+		return s_type;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see extractors.Extractor#setMaxForm(java.lang.Integer)
+	 */
+	@Override
+	public void setMaxForm(int max) {
+		maxForm = max;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see extractors.Extractor#getMaxForm()
+	 */
+	@Override
+	public int getMaxForm() {
+		return maxForm;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/extractors/ExtractorFactory.java b/dependencyParser/experimental/mate-tools/src/extractors/ExtractorFactory.java
new file mode 100644
index 0000000..20827d4
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/extractors/ExtractorFactory.java
@@ -0,0 +1,42 @@
+/**
+ *
+ */
+package extractors;
+
+import is2.data.Long2IntInterface;
+
+/**
+ * @author Dr. Bernd Bohnet, 29.04.2011
+ *
+ *
+ */
+public class ExtractorFactory {
+
+	public static final int StackedClustered = 4;
+	public static final int StackedClusteredR2 = 5;
+
+	private int type = -1;
+
+	/**
+	 * @param stackedClusteredR22
+	 */
+	public ExtractorFactory(int t) {
+		type = t;
+	}
+
+	/**
+	 * @param stackedClusteredR22
+	 * @param l2i
+	 * @return
+	 */
+	public Extractor getExtractor(Long2IntInterface l2i) {
+		switch (type) {
+		case StackedClustered:
+			return new ExtractorClusterStacked(l2i);
+		case StackedClusteredR2:
+			return new ExtractorClusterStackedR2(l2i);
+		}
+		return null;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/extractors/ExtractorReranker.java b/dependencyParser/experimental/mate-tools/src/extractors/ExtractorReranker.java
new file mode 100644
index 0000000..bf068b2
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/extractors/ExtractorReranker.java
@@ -0,0 +1,1080 @@
+package extractors;
+
+import java.util.Arrays;
+
+import is2.data.Cluster;
+import is2.data.D4;
+import is2.data.Instances;
+import is2.data.Long2IntInterface;
+import is2.data.MFB;
+import is2.data.ParseNBest;
+import is2.util.DB;
+
+final public class ExtractorReranker {
+
+	public static int s_rel, s_word, s_type, s_dir, s_dist, s_feat, s_child, s_spath, s_lpath, s_pos;
+	public static int d0, d1, d2, d3, d4, d5, d10;
+
+	MFB mf;
+
+	final D4 dl1, dl2, dwr, dr, dwwp, dw, dwp, dlf, d3lp, d2lp, d2pw, d2pp;
+
+	public final Long2IntInterface li;
+
+	public ExtractorReranker(Long2IntInterface li) {
+		this.li = li;
+		dl1 = new D4(li);
+		dl2 = new D4(li);
+		dwr = new D4(li);
+		dr = new D4(li);
+		dwwp = new D4(li);
+
+		dw = new D4(li);
+		dwp = new D4(li);
+
+		dlf = new D4(li);
+		d3lp = new D4(li);
+		d2lp = new D4(li);
+		d2pw = new D4(li);
+		d2pp = new D4(li);
+
+	}
+
+	public static void initStat() {
+		DB.println("init called ");
+		MFB mf = new MFB();
+		s_rel = mf.getFeatureCounter().get(REL).intValue();
+		;
+		s_pos = mf.getFeatureCounter().get(POS).intValue();
+		s_word = mf.getFeatureCounter().get(WORD).intValue();
+		s_type = mf.getFeatureCounter().get(TYPE).intValue();// mf.getFeatureBits();
+		s_dir = mf.getFeatureCounter().get(DIR);
+		mf.getValue(DIR, LA);
+		mf.getValue(DIR, RA);
+		s_dist = mf.getFeatureCounter().get(DIST);// mf.getFeatureBits(DIST);
+		s_feat = mf.getFeatureCounter().get(FEAT);// mf.getFeatureBits(Pipe.FEAT);
+		s_spath = mf.getFeatureCounter().get(Cluster.SPATH) == null ? 0 : mf.getFeatureCounter().get(Cluster.SPATH);// mf.getFeatureBits(Cluster.SPATH);
+		s_lpath = mf.getFeatureCounter().get(Cluster.LPATH) == null ? 0 : mf.getFeatureCounter().get(Cluster.LPATH);// mf.getFeatureBits(Cluster.LPATH);
+	}
+
+	public void init() {
+		mf = new MFB();
+
+		dl1.a0 = s_type;
+		dl1.a1 = 3;
+		dl1.a2 = s_pos;
+		dl1.a3 = s_pos;
+		dl1.a4 = s_pos;
+		dl1.a5 = s_pos;
+		dl1.a6 = s_pos;
+		dl1.a7 = s_pos;
+		dl2.a0 = s_type;
+		dl2.a1 = 3;
+		dl2.a2 = s_rel;
+		dl2.a3 = s_rel;
+		dl2.a4 = s_rel;
+		dl2.a5 = s_rel;
+		dl2.a6 = s_rel;
+		dl2.a7 = s_rel;
+		dl2.a8 = s_rel;
+		dl2.a9 = s_rel;
+		dwp.a0 = s_type;
+		dwp.a1 = 3;
+		dwp.a2 = s_word;
+		dwp.a3 = s_rel;
+		dwp.a4 = s_rel;
+		dwp.a5 = s_rel;
+		dwp.a6 = s_rel;
+		dwp.a7 = s_rel;
+		dwwp.a0 = s_type;
+		dwwp.a1 = 3;
+		dwwp.a2 = s_word;
+		dwwp.a3 = s_word;
+		dwwp.a4 = s_pos;
+		dwwp.a5 = s_word;
+		dwwp.a6 = s_pos;
+		dwwp.a7 = s_pos;
+	}
+
+	public static final String REL = "REL", END = "END", STR = "STR", LA = "LA", RA = "RA", FEAT = "F";
+
+	private static int s_end, s_stwrd, s_relend;
+
+	protected static final String TYPE = "TYPE", DIR = "D";
+	public static final String POS = "POS";
+	protected static final String DIST = "DIST", MID = "MID";
+
+	private static final String _0 = "0", _4 = "4", _3 = "3", _2 = "2", _1 = "1", _5 = "5", _10 = "10";
+
+	private static final String WORD = "WORD", STWRD = "STWRD", STPOS = "STPOS";
+
+	public static int maxForm;
+
+	final public static int _FC = 60;
+
+	/**
+	 * Initialize the features.
+	 * 
+	 * @param maxFeatures
+	 */
+	static public void initFeatures() {
+
+		MFB mf = new MFB();
+		mf.register(POS, MID);
+		mf.register(POS, STR);
+		s_end = mf.register(POS, END);
+
+		s_relend = mf.register(REL, END);
+
+		mf.register(Cluster.SPATH, STR);
+		mf.register(Cluster.SPATH, END);
+
+		mf.register(TYPE, POS);
+
+		s_stwrd = mf.register(WORD, STWRD);
+		mf.register(POS, STPOS);
+
+		mf.register(DIR, LA);
+		mf.register(DIR, RA);
+
+		// mf.register(TYPE, CHAR);
+
+		mf.register(TYPE, FEAT);
+		mf.register(FEAT, "NOFEAT");
+
+		for (int k = 0; k < 60; k++)
+			mf.register(TYPE, "F" + k);
+
+		d0 = mf.register(DIST, _0);
+		d1 = mf.register(DIST, _1);
+		d2 = mf.register(DIST, _2);
+		d3 = mf.register(DIST, _3);
+		d4 = mf.register(DIST, _4);
+		d5 = mf.register(DIST, _5);
+		// d5l=mf.register(DIST, _5l);
+		d10 = mf.register(DIST, _10);
+
+	}
+
+	/**
+	 * @param is
+	 * @param n
+	 * @param parseNBest
+	 * @param vs
+	 */
+	public void extractFeatures3(Instances is, int i, ParseNBest parse, int rank, long[] v) {
+
+		int f = 1, n = 0;
+
+		for (short k = 0; k < is.length(i) - 1; k++) {
+
+			short[] chld = children(parse.heads, k);
+
+			f = 2;
+
+			int fm = is.forms[i][k];
+			int hh = k != 0 ? is.pposs[i][parse.heads[k]] : s_end;
+			int h = is.pposs[i][k];
+			int hrel = parse.labels[k];
+			int hhrel = k != 0 ? parse.labels[parse.heads[k]] : s_relend;
+			int hhf = k != 0 ? is.forms[i][parse.heads[k]] : s_stwrd;
+
+			int rlast = chld.length > 0 ? parse.labels[chld[chld.length - 1]] : s_relend;
+
+			int[] rels = new int[chld.length];
+			int[] pss = new int[chld.length];
+			for (int j = 0; j < chld.length; j++) {
+				rels[j] = parse.labels[chld[j]];
+				pss[j] = is.pposs[i][chld[j]];
+			}
+
+			StringBuilder rl = new StringBuilder(chld.length);
+			StringBuilder psl = new StringBuilder(chld.length);
+			for (int j = 0; j < chld.length; j++) {
+				rl.append((char) rels[j]);
+				psl.append((char) pss[j]);
+			}
+
+			int rli = mf.register("rli", rl.toString());
+			int pli = mf.register("pli", psl.toString());
+
+			dwwp.v0 = f++;
+			dwwp.v2 = rli;
+			dwwp.cz3();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.cz3();
+			v[n++] = dwwp.getVal();
+
+			dwwp.v0 = f++;
+			dwwp.v2 = rli;
+			dwwp.v3 = h;
+			dwwp.cz4();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = h;
+			dwwp.cz4();
+			v[n++] = dwwp.getVal();
+
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = hh;
+			dwwp.v4 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = rli;
+			dwwp.v3 = hh;
+			dwwp.v4 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = rli;
+			dwwp.v4 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = fm;
+			dwwp.v3 = rli;
+			dwwp.v4 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = fm;
+			dwwp.v4 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = rli;
+			dwwp.v4 = hh;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = rli;
+			dwwp.v4 = hh;
+			dwwp.v5 = h;
+			dwwp.cz6();
+			v[n++] = dwwp.getVal();
+
+			dwp.v0 = f++;
+			dwp.v2 = rli;
+			dwp.v3 = hrel;
+			dwp.v4 = hh;
+			dwp.v5 = h;
+			dwp.cz6();
+			v[n++] = dwp.getVal();
+
+			Arrays.sort(rels);
+			Arrays.sort(pss);
+
+			rl = new StringBuilder(chld.length);
+			psl = new StringBuilder(chld.length);
+			for (int j = 0; j < chld.length; j++) {
+				rl.append((char) rels[j]);
+				psl.append((char) pss[j]);
+			}
+			rli = mf.register("rli", rl.toString());
+			pli = mf.register("pli", psl.toString());
+
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = rli;
+			dwwp.v4 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = fm;
+			dwwp.v3 = rli;
+			dwwp.v4 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = fm;
+			dwwp.v4 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+
+			dwwp.v0 = f++;
+			dwwp.v2 = rli;
+			dwwp.v3 = h;
+			dwwp.cz4();
+			v[n++] = dwwp.getVal();
+
+			dl1.v0 = f++;
+			dl1.v2 = h;
+			dl1.v3 = hrel;
+			dl1.v4 = hhrel;
+			dl1.v5 = hh;
+			dl1.v6 = rlast;
+			dl1.cz6();
+			v[n++] = dl1.getVal();
+			dwp.v0 = f++;
+			dwp.v2 = fm;
+			dwp.v3 = hrel;
+			dwp.v4 = hh;
+			dwp.cz5();
+			v[n++] = dwp.getVal();
+			dwp.v0 = f++;
+			dwp.v2 = hhf;
+			dwp.v3 = hrel;
+			dwp.v4 = hh;
+			dwp.v5 = h;
+			dwp.cz6();
+			v[n++] = dwp.getVal();
+
+			dwwp.v0 = f++;
+			dwwp.v2 = fm;
+			dwwp.v3 = hhf;
+			dwwp.v4 = hrel;
+			dwwp.v5 = hhrel;
+			dwwp.cz6();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = h;
+			dwwp.v3 = hhf;
+			dwwp.v4 = hrel;
+			dwwp.v5 = hhrel;
+			dwwp.cz6();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = fm;
+			dwwp.v3 = hh;
+			dwwp.v4 = hrel;
+			dwwp.v5 = hhrel;
+			dwwp.cz6();
+			v[n++] = dwwp.getVal();
+
+			dwwp.v0 = f++;
+			dwwp.v2 = fm;
+			dwwp.v3 = hhf;
+			dwwp.v4 = h;
+			dwwp.v5 = hh;
+			dwwp.cz6();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = h;
+			dwwp.v3 = hhf;
+			dwwp.v4 = hrel;
+			dwwp.v5 = hh;
+			dwwp.cz6();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = fm;
+			dwwp.v3 = hh;
+			dwwp.v4 = h;
+			dwwp.v5 = hrel;
+			dwwp.cz6();
+			v[n++] = dwwp.getVal();
+
+			// dl1.v0= f++; dl1.v2=h;dl1.v3=hrel; dl1.v4=hhrel;dl1.v5=hh;
+			// dl1.v6=hhhrel;dl1.v7=hhh; dl1.v8=rlast; dl1.cz9();
+			// v[n++]=dl1.getVal();
+			// dl1.v0= f++; dl1.v2=h;dl1.v3=hrel; dl1.v4=hhrel;dl1.v5=hh;
+			// dl1.v6=hhhrel;dl1.v7=hhh; dl1.v8=rlast; dl1.cz9();
+			// v[n++]=dl1.getVal();
+			// dl1.v0= f++; dl1.v2=h;dl1.v3=hrel; dl1.v4=dir;dl1.v5=hh;
+			// dl1.v6=hhh;dl1.v7=rlast; dl1.v8=r1; dl1.cz9();
+			// v[n++]=dl1.getVal();
+			// dl1.v0= f++; dl1.v2=h;dl1.v3=hh; dl1.v4=hhh;dl1.v5=hrel;
+			// dl1.cz6(); v[n++]=dl1.getVal();
+
+			short hp = parse.heads[k];
+			short[] hchld = hp == -1 ? new short[0] : children(parse.heads, hp);
+
+			int[] hrels = new int[hchld.length];
+			int[] hpss = new int[hchld.length];
+			for (int j = 0; j < hchld.length; j++) {
+				hrels[j] = parse.labels[hchld[j]];
+				hpss[j] = is.pposs[i][hchld[j]];
+			}
+
+			StringBuilder hrl = new StringBuilder(hchld.length);
+			StringBuilder hpsl = new StringBuilder(hchld.length);
+			for (int j = 0; j < hchld.length; j++) {
+				hrl.append((char) hrels[j]);
+				hpsl.append((char) hpss[j]);
+			}
+			int hrli = mf.register("rli", hrl.toString());
+			int hpli = mf.register("pli", hpsl.toString());
+
+			dwwp.v0 = f++;
+			dwwp.v2 = hpli;
+			dwwp.v3 = hrli;
+			dwwp.cz4();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = fm;
+			dwwp.v3 = hrli;
+			dwwp.cz4();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = hpli;
+			dwwp.v3 = fm;
+			dwwp.cz4();
+			v[n++] = dwwp.getVal();
+
+			dwwp.v0 = f++;
+			dwwp.v2 = hpli;
+			dwwp.v3 = rli;
+			dwwp.v4 = hrel;
+			dwwp.v5 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = hrli;
+			dwwp.v4 = hrel;
+			dwwp.v5 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = hpli;
+			dwwp.v3 = hpli;
+			dwwp.v4 = hrel;
+			dwwp.v5 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+
+		}
+
+		v[n] = Integer.MIN_VALUE;
+	}
+
+	/**
+	 * This works seem works well with n-best n=8 (88.858074) , n=10
+	 * (88.836884), n=12 (88.858) n=14 (88.913417) n=16 (88.79546) n=20
+	 * (88.80621) n 50 (88.729364) 1-best: 88.749605
+	 *
+	 * @param is
+	 * @param i
+	 * @param parse
+	 * @param rank
+	 * @param v
+	 * @param cluster
+	 */
+	public void extractFeatures(Instances is, int i, ParseNBest parse, int rank, long[] v, Cluster cluster) {
+
+		// mf.getValue(REL, "SB");
+
+		int f = 1, n = 0;
+
+		for (short k = 0; k < is.length(i) - 1; k++) {
+
+			short[] chld = children(parse.heads, k);
+
+			int abs = Math.abs(parse.heads[k] - k);
+			if (abs > 10) {
+			} else if (abs > 5) {
+			} else if (abs == 5) {
+			} else if (abs == 4) {
+			} else if (abs == 3) {
+			} else if (abs == 2) {
+			} else {
+			}
+
+			f = 2;
+
+			int fm = is.forms[i][k];
+			int hh = k != 0 ? is.pposs[i][parse.heads[k]] : s_end;
+			int h = is.pposs[i][k];
+			int hrel = parse.labels[k];// is.labels[i][k];
+			int hhrel = k != 0 ? parse.labels[parse.heads[k]] : s_relend;
+			int hhf = k != 0 ? is.forms[i][parse.heads[k]] : s_stwrd;
+
+			int rlast = chld.length > 0 ? parse.labels[chld[chld.length - 1]] : s_relend;
+
+			int[] rels = new int[chld.length];
+			int[] pss = new int[chld.length];
+			int[] rc = new int[30]; // 20 was a good length
+
+			for (int j = 0; j < chld.length; j++) {
+				rels[j] = parse.labels[chld[j]];
+				if (rels[j] < rc.length)
+					rc[rels[j]]++;
+				pss[j] = is.pposs[i][chld[j]];
+				// cls[j] =
+				// is.forms[i][chld[j]]==-1?0:cluster.getLP(is.forms[i][chld[j]]);
+				// cls[j] = cls[j]==-1?0:cls[j];
+			}
+
+			StringBuilder rl = new StringBuilder(chld.length);
+			StringBuilder psl = new StringBuilder(chld.length);
+			new StringBuilder(chld.length);
+			for (int j = 0; j < chld.length; j++) {
+				rl.append((char) rels[j]);
+				psl.append((char) pss[j]);
+				// csl.append((char)cls[j]);
+			}
+
+			int rli = mf.register("rli", rl.toString());
+			int pli = mf.register("pli", psl.toString());
+			// int cli = mf.register("cli", csl.toString());
+
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = rli;
+			dwwp.v4 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = fm;
+			dwwp.v3 = rli;
+			dwwp.v4 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = fm;
+			dwwp.v4 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+			// dwwp.v0=f++; dwwp.v2=cli; dwwp.v3=fm; dwwp.v4=h; dwwp.cz5();
+			// v[n++]=dwwp.getVal();
+
+			dwwp.v0 = f++;
+			dwwp.v2 = rli;
+			dwwp.cz3();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.cz3();
+			v[n++] = dwwp.getVal();
+			// dwwp.v0=f++; dwwp.v2=cli; dwwp.cz3(); v[n++]=dwwp.getVal();
+
+			// dwwp.v0=f++; dwwp.v2=cli;dwwp.v3=h; dwwp.cz4();
+			// v[n++]=dwwp.getVal();
+
+			for (int j = 1; j < rc.length; j++) {
+				dwwp.v0 = f++;
+				dwwp.v2 = rc[j] == 0 ? 1 : rc[j] == 1 ? 2 : 3;
+				dwwp.v3 = j;
+				dwwp.cz4();
+				v[n++] = dwwp.getVal();//
+			}
+
+			dwwp.v0 = f++;
+			dwwp.v2 = rli;
+			dwwp.v3 = h;
+			dwwp.cz4();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = h;
+			dwwp.cz4();
+			v[n++] = dwwp.getVal();
+
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = hh;
+			dwwp.v4 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = rli;
+			dwwp.v3 = hh;
+			dwwp.v4 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = rli;
+			dwwp.v4 = hh;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = rli;
+			dwwp.v4 = hh;
+			dwwp.v5 = h;
+			dwwp.cz6();
+			v[n++] = dwwp.getVal();
+
+			dwp.v0 = f++;
+			dwp.v2 = rli;
+			dwp.v3 = hrel;
+			dwp.v4 = hh;
+			dwp.v5 = h;
+			dwp.cz6();
+			v[n++] = dwp.getVal();
+
+			// dwwp.v0=f++; dwwp.v2=h; dwwp.v3=hh; dwwp.v4=dist; dwwp.cz5();
+			// v[n++]=dwwp.getVal();
+
+			Arrays.sort(rels);
+			Arrays.sort(pss);
+
+			rl = new StringBuilder(chld.length);
+			psl = new StringBuilder(chld.length);
+			for (int j = 0; j < chld.length; j++) {
+				rl.append((char) rels[j]);
+				psl.append((char) pss[j]);
+			}
+			rli = mf.register("rli", rl.toString());
+			pli = mf.register("pli", psl.toString());
+
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = rli;
+			dwwp.v4 = 1;
+			dwwp.v5 = h;
+			dwwp.cz6();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = fm;
+			dwwp.v3 = rli;
+			dwwp.v4 = 1;
+			dwwp.v5 = h;
+			dwwp.cz6();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = fm;
+			dwwp.v4 = 1;
+			dwwp.v5 = h;
+			dwwp.cz6();
+			v[n++] = dwwp.getVal();
+
+			dwwp.v0 = f++;
+			dwwp.v2 = rli;
+			dwwp.v3 = h;
+			dwwp.cz4();
+			v[n++] = dwwp.getVal();
+
+			dl1.v0 = f++;
+			dl1.v2 = h;
+			dl1.v3 = hrel;
+			dl1.v4 = hhrel;
+			dl1.v5 = hh;
+			dl1.v6 = rlast;
+			dl1.cz6();
+			v[n++] = dl1.getVal();
+			dwp.v0 = f++;
+			dwp.v2 = fm;
+			dwp.v3 = hrel;
+			dwp.v4 = hh;
+			dwp.cz5();
+			v[n++] = dwp.getVal();
+			dwp.v0 = f++;
+			dwp.v2 = hhf;
+			dwp.v3 = hrel;
+			dwp.v4 = hh;
+			dwp.v5 = h;
+			dwp.cz6();
+			v[n++] = dwp.getVal();
+		}
+
+		v[n] = Integer.MIN_VALUE;
+	}
+
+	/**
+	 * 
+	 * Works well!
+	 * 
+	 * @param is
+	 * @param i
+	 * @param parse
+	 * @param rank
+	 * @param v
+	 */
+	public void extractFeatures6(Instances is, int i, ParseNBest parse, int rank, long[] v) {
+
+		// mf.getValue(REL, "SB");
+
+		int f = 1, n = 0;
+
+		for (short k = 0; k < is.length(i) - 1; k++) {
+
+			short[] chld = children(parse.heads, k);
+
+			f = 2;
+
+			int fm = is.forms[i][k];
+			int hh = k != 0 ? is.pposs[i][parse.heads[k]] : s_end;
+			int h = is.pposs[i][k];
+			int hrel = parse.labels[k];// is.labels[i][k];
+			int hhrel = k != 0 ? parse.labels[parse.heads[k]] : s_relend;
+			int hhf = k != 0 ? is.forms[i][parse.heads[k]] : s_stwrd;
+
+			int rlast = chld.length > 0 ? parse.labels[chld[chld.length - 1]] : s_relend;
+
+			int[] rels = new int[chld.length];
+			int[] pss = new int[chld.length];
+
+			int[] rc = new int[30]; // 20 was a good length
+
+			for (int j = 0; j < chld.length; j++) {
+				rels[j] = parse.labels[chld[j]];
+				if (rels[j] < rc.length)
+					rc[rels[j]]++;
+				// if (rels[j]==sb) numSB++;
+				pss[j] = is.pposs[i][chld[j]];
+			}
+
+			StringBuilder rl = new StringBuilder(chld.length);
+			StringBuilder psl = new StringBuilder(chld.length);
+			for (int j = 0; j < chld.length; j++) {
+				rl.append((char) rels[j]);
+				psl.append((char) pss[j]);
+			}
+
+			int rli = mf.register("rli", rl.toString());
+			int pli = mf.register("pli", psl.toString());
+
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = rli;
+			dwwp.v4 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = fm;
+			dwwp.v3 = rli;
+			dwwp.v4 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = fm;
+			dwwp.v4 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+
+			dwwp.v0 = f++;
+			dwwp.v2 = rli;
+			dwwp.cz3();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.cz3();
+			v[n++] = dwwp.getVal();
+
+			for (int j = 1; j < rc.length; j++) {
+				dwwp.v0 = f++;
+				dwwp.v2 = rc[j] == 0 ? 1 : rc[j] == 1 ? 2 : 3;
+				dwwp.v3 = j;
+				dwwp.cz4();
+				v[n++] = dwwp.getVal();//
+			}
+
+			dwwp.v0 = f++;
+			dwwp.v2 = rli;
+			dwwp.v3 = h;
+			dwwp.cz4();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = h;
+			dwwp.cz4();
+			v[n++] = dwwp.getVal();
+
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = hh;
+			dwwp.v4 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = rli;
+			dwwp.v3 = hh;
+			dwwp.v4 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = rli;
+			dwwp.v4 = hh;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = rli;
+			dwwp.v4 = hh;
+			dwwp.v5 = h;
+			dwwp.cz6();
+			v[n++] = dwwp.getVal();
+
+			dwp.v0 = f++;
+			dwp.v2 = rli;
+			dwp.v3 = hrel;
+			dwp.v4 = hh;
+			dwp.v5 = h;
+			dwp.cz6();
+			v[n++] = dwp.getVal();
+
+			Arrays.sort(rels);
+			Arrays.sort(pss);
+
+			rl = new StringBuilder(chld.length);
+			psl = new StringBuilder(chld.length);
+			for (int j = 0; j < chld.length; j++) {
+				rl.append((char) rels[j]);
+				psl.append((char) pss[j]);
+			}
+			rli = mf.register("rli", rl.toString());
+			pli = mf.register("pli", psl.toString());
+
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = rli;
+			dwwp.v4 = 1;
+			dwwp.v5 = h;
+			dwwp.cz6();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = fm;
+			dwwp.v3 = rli;
+			dwwp.v4 = 1;
+			dwwp.v5 = h;
+			dwwp.cz6();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = fm;
+			dwwp.v4 = 1;
+			dwwp.v5 = h;
+			dwwp.cz6();
+			v[n++] = dwwp.getVal();
+
+			dwwp.v0 = f++;
+			dwwp.v2 = rli;
+			dwwp.v3 = h;
+			dwwp.cz4();
+			v[n++] = dwwp.getVal();
+
+			dl1.v0 = f++;
+			dl1.v2 = h;
+			dl1.v3 = hrel;
+			dl1.v4 = hhrel;
+			dl1.v5 = hh;
+			dl1.v6 = rlast;
+			dl1.cz6();
+			v[n++] = dl1.getVal();
+			dwp.v0 = f++;
+			dwp.v2 = fm;
+			dwp.v3 = hrel;
+			dwp.v4 = hh;
+			dwp.cz5();
+			v[n++] = dwp.getVal();
+			dwp.v0 = f++;
+			dwp.v2 = hhf;
+			dwp.v3 = hrel;
+			dwp.v4 = hh;
+			dwp.v5 = h;
+			dwp.cz6();
+			v[n++] = dwp.getVal();
+
+		}
+
+		v[n] = Integer.MIN_VALUE;
+	}
+
+	public void extractFeatures2(Instances is, int i, ParseNBest parse, int rank, long[] v) {
+
+		int f = 1, n = 0;
+
+		for (short k = 0; k < is.length(i) - 1; k++) {
+
+			short[] chld = children(parse.heads, k);
+
+			f = 2;
+
+			int fm = is.forms[i][k];
+			int hh = k != 0 ? is.pposs[i][parse.heads[k]] : s_end;
+			int h = is.pposs[i][k];
+			int hrel = parse.labels[k];// is.labels[i][k];
+			int hhrel = k != 0 ? parse.labels[parse.heads[k]] : s_relend;
+			int hhf = k != 0 ? is.forms[i][parse.heads[k]] : s_stwrd;
+
+			int rlast = chld.length > 0 ? parse.labels[chld[chld.length - 1]] : s_relend;
+
+			int[] rels = new int[chld.length];
+			int[] pss = new int[chld.length];
+
+			for (int j = 0; j < chld.length; j++) {
+				rels[j] = parse.labels[chld[j]];
+				pss[j] = is.pposs[i][chld[j]];
+			}
+
+			StringBuilder rl = new StringBuilder(chld.length);
+			StringBuilder psl = new StringBuilder(chld.length);
+			for (int j = 0; j < chld.length; j++) {
+				rl.append((char) rels[j]);
+				psl.append((char) pss[j]);
+			}
+
+			int rli = mf.register("rli", rl.toString());
+			int pli = mf.register("pli", psl.toString());
+
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = rli;
+			dwwp.v4 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = fm;
+			dwwp.v3 = rli;
+			dwwp.v4 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = fm;
+			dwwp.v4 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+
+			dwwp.v0 = f++;
+			dwwp.v2 = rli;
+			dwwp.cz3();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.cz3();
+			v[n++] = dwwp.getVal();
+
+			dwwp.v0 = f++;
+			dwwp.v2 = rli;
+			dwwp.v3 = h;
+			dwwp.cz4();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = h;
+			dwwp.cz4();
+			v[n++] = dwwp.getVal();
+
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = hh;
+			dwwp.v4 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = rli;
+			dwwp.v3 = hh;
+			dwwp.v4 = h;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = rli;
+			dwwp.v4 = hh;
+			dwwp.cz5();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = rli;
+			dwwp.v4 = hh;
+			dwwp.v5 = h;
+			dwwp.cz6();
+			v[n++] = dwwp.getVal();
+
+			dwp.v0 = f++;
+			dwp.v2 = rli;
+			dwp.v3 = hrel;
+			dwp.v4 = hh;
+			dwp.v5 = h;
+			dwp.cz6();
+			v[n++] = dwp.getVal();
+
+			Arrays.sort(rels);
+			Arrays.sort(pss);
+
+			rl = new StringBuilder(chld.length);
+			psl = new StringBuilder(chld.length);
+			for (int j = 0; j < chld.length; j++) {
+				rl.append((char) rels[j]);
+				psl.append((char) pss[j]);
+			}
+			rli = mf.register("rli", rl.toString());
+			pli = mf.register("pli", psl.toString());
+
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = rli;
+			dwwp.v4 = 1;
+			dwwp.v5 = h;
+			dwwp.cz6();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = fm;
+			dwwp.v3 = rli;
+			dwwp.v4 = 1;
+			dwwp.v5 = h;
+			dwwp.cz6();
+			v[n++] = dwwp.getVal();
+			dwwp.v0 = f++;
+			dwwp.v2 = pli;
+			dwwp.v3 = fm;
+			dwwp.v4 = 1;
+			dwwp.v5 = h;
+			dwwp.cz6();
+			v[n++] = dwwp.getVal();
+
+			dwwp.v0 = f++;
+			dwwp.v2 = rli;
+			dwwp.v3 = h;
+			dwwp.cz4();
+			v[n++] = dwwp.getVal();
+
+			dl1.v0 = f++;
+			dl1.v2 = h;
+			dl1.v3 = hrel;
+			dl1.v4 = hhrel;
+			dl1.v5 = hh;
+			dl1.v6 = rlast;
+			dl1.cz6();
+			v[n++] = dl1.getVal();
+			dwp.v0 = f++;
+			dwp.v2 = fm;
+			dwp.v3 = hrel;
+			dwp.v4 = hh;
+			dwp.cz5();
+			v[n++] = dwp.getVal();
+			dwp.v0 = f++;
+			dwp.v2 = hhf;
+			dwp.v3 = hrel;
+			dwp.v4 = hh;
+			dwp.v5 = h;
+			dwp.cz6();
+			v[n++] = dwp.getVal();
+
+		}
+
+		v[n] = Integer.MIN_VALUE;
+	}
+
+	/**
+	 * @param parse
+	 * @param k
+	 * @return
+	 */
+	private short[] children(short[] heads, short h) {
+
+		int c = 0;
+		for (short head : heads)
+			if (head == h)
+				c++;
+
+		short[] clds = new short[c];
+		c = 0;
+		for (int k = 0; k < heads.length; k++)
+			if (heads[k] == h)
+				clds[c++] = (short) k;
+		return clds;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/extractors/ParallelExtract.java b/dependencyParser/experimental/mate-tools/src/extractors/ParallelExtract.java
new file mode 100755
index 0000000..5e0ec08
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/extractors/ParallelExtract.java
@@ -0,0 +1,193 @@
+package extractors;
+
+import java.util.ArrayList;
+import java.util.concurrent.Callable;
+
+import is2.data.Cluster;
+import is2.data.DataF;
+import is2.data.Edges;
+import is2.data.F2SF;
+import is2.data.Instances;
+import is2.data.Long2IntInterface;
+
+/**
+ * @author Bernd Bohnet, 30.08.2009
+ *
+ *         This class implements a parallel feature extractor.
+ */
+final public class ParallelExtract implements Callable<Object> {
+	// the data space of the weights for a dependency tree
+	final DataF d;
+
+	// the data extractor does the actual work
+	final Extractor extractor;
+
+	private Instances is;
+	private int i;
+
+	private F2SF para;
+
+	private Cluster cluster;
+
+	private Long2IntInterface li;
+
+	public ParallelExtract(Extractor e, Instances is, int i, DataF d, F2SF para, Cluster cluster,
+			Long2IntInterface li) {
+
+		this.is = is;
+		extractor = e;
+		this.d = d;
+		this.i = i;
+		this.para = para;
+		this.cluster = cluster;
+		this.li = li;
+	}
+
+	public static class DSet {
+		int w1, w2;
+	}
+
+	@Override
+	public Object call() {
+
+		try {
+
+			F2SF f = para;
+
+			short[] pos = is.pposs[i];
+			int[] forms = is.forms[i];
+			int[] lemmas = is.plemmas[i];
+			short[][] feats = is.feats[i];
+			int length = pos.length;
+
+			long[] svs = new long[250];
+
+			int type = extractor.getType();
+
+			while (true) {
+
+				DSet set = get();
+				if (set == null)
+					break;
+
+				int w1 = set.w1;
+				int w2 = set.w2;
+
+				f.clear();
+				int n = extractor.basic(pos, forms, w1, w2, cluster, f);
+				d.pl[w1][w2] = f.getScoreF();
+
+				short[] labels = Edges.get(pos[w1], pos[w2], false);
+				float[][] lab = d.lab[w1][w2];
+
+				extractor.firstm(is, i, w1, w2, 0, cluster, svs);
+
+				if (labels != null) {
+
+					for (int l = labels.length - 1; l >= 0; l--) {
+
+						short label = labels[l];
+
+						f.clear();
+						for (int k = svs.length - 1; k >= 0; k--)
+							if (svs[k] > 0)
+								f.add(li.l2i(svs[k] + label * type));
+						lab[label][0] = f.getScoreF();
+					}
+				}
+
+				labels = Edges.get(pos[w1], pos[w2], true);
+
+				if (labels != null) {
+
+					for (int l = labels.length - 1; l >= 0; l--) {
+
+						int label = labels[l];
+						f.clear();
+						for (int k = svs.length - 1; k >= 0; k--)
+							if (svs[k] > 0)
+								f.add(li.l2i(svs[k] + label * type));
+						lab[label][1] = f.getScoreF();
+					}
+				}
+
+				int s = w1 < w2 ? w1 : w2;
+				int e = w1 < w2 ? w2 : w1;
+
+				int sg = w1 < w2 ? w1 : 0;
+				int eg = w1 < w2 ? length : w1 + 1;
+
+				for (int m = s; m < e; m++) {
+					for (int dir = 0; dir < 2; dir++) {
+						labels = Edges.get(pos[w1], pos[w2], dir == 1);
+						float lab2[] = new float[labels.length];
+
+						int g = (m == s || e == m) ? -1 : m;
+
+						extractor.siblingm(is, i, pos, forms, lemmas, feats, w1, w2, g, 0, cluster, svs, n);
+
+						for (int l = labels.length - 1; l >= 0; l--) {
+
+							int label = labels[l];
+							f.clear();
+
+							for (int k = svs.length - 1; k >= 0; k--) {
+								if (svs[k] > 0)
+									f.add(li.l2i(svs[k] + label * type));
+							}
+							lab2[l] = f.score;// f.getScoreF();
+						}
+						d.sib[w1][w2][m][dir] = lab2;
+					}
+				}
+
+				for (int m = sg; m < eg; m++) {
+					for (int dir = 0; dir < 2; dir++) {
+						labels = Edges.get(pos[w1], pos[w2], dir == 1);
+						float[] lab2 = new float[labels.length];
+
+						int g = (m == s || e == m) ? -1 : m;
+
+						extractor.gcm(is, i, w1, w2, g, 0, cluster, svs);
+
+						for (int l = labels.length - 1; l >= 0; l--) {
+
+							int label = labels[l];
+
+							f.clear();
+							for (int k = svs.length - 1; k >= 0; k--) {
+								if (svs[k] > 0)
+									f.add(li.l2i(svs[k] + label * type));
+							}
+							lab2[l] = f.getScoreF();
+						}
+						d.gra[w1][w2][m][dir] = lab2;
+					}
+				}
+
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+	static ArrayList<DSet> sets = new ArrayList<DSet>();
+
+	private DSet get() {
+
+		synchronized (sets) {
+			if (sets.size() == 0)
+				return null;
+			return sets.remove(sets.size() - 1);
+		}
+	}
+
+	static public void add(int w1, int w2) {
+		DSet ds = new DSet();
+		ds.w1 = w1;
+		ds.w2 = w2;
+		sets.add(ds);
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/Closed.java b/dependencyParser/experimental/mate-tools/src/is2/data/Closed.java
new file mode 100755
index 0000000..3e938a8
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/Closed.java
@@ -0,0 +1,28 @@
+package is2.data;
+
+final public class Closed {
+
+	public double p;
+	short b, e, m;
+	byte dir;
+
+	Closed d;
+	Open u;
+
+	public Closed(short s, short t, int m, int dir, Open u, Closed d, float score) {
+		this.b = s;
+		this.e = t;
+		this.m = (short) m;
+		this.dir = (byte) dir;
+		this.u = u;
+		this.d = d;
+		p = score;
+	}
+
+	public void create(Parse parse) {
+		if (u != null)
+			u.create(parse);
+		if (d != null)
+			d.create(parse);
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/Cluster.java b/dependencyParser/experimental/mate-tools/src/is2/data/Cluster.java
new file mode 100644
index 0000000..5cc8427
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/Cluster.java
@@ -0,0 +1,163 @@
+/**
+ *
+ */
+package is2.data;
+
+import java.io.BufferedReader;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import is2.util.DB;
+
+/**
+ * @author Dr. Bernd Bohnet, 28.10.2010
+ *
+ *
+ */
+final public class Cluster {
+
+	public static final String LPATH = "LP";
+	public static final String SPATH = "SP";
+
+	// [word][p] p = [0:long-path | 1:short-path]
+	final private short[][] word2path;
+
+	public Cluster() {
+		word2path = new short[0][0];
+	}
+
+	/**
+	 * @param clusterFile
+	 * @param mf
+	 *
+	 */
+	public Cluster(String clusterFile, IEncoderPlus mf, int ls) {
+
+		final String REGEX = "\t";
+
+		// register words
+		try {
+			BufferedReader inputReader = new BufferedReader(
+					new InputStreamReader(new FileInputStream(clusterFile), "UTF-8"), 32768);
+
+			int cnt = 0;
+			String line;
+			while ((line = inputReader.readLine()) != null) {
+
+				cnt++;
+				try {
+					String[] split = line.split(REGEX);
+					mf.register(SPATH, split[0].length() < ls ? split[0] : split[0].substring(0, ls));
+					mf.register(LPATH, split[0]);
+					mf.register(PipeGen.WORD, split[1]);
+				} catch (Exception e) {
+					System.out.println("Error in cluster line " + cnt + " error: " + e.getMessage());
+				}
+			}
+			System.out.println("read number of clusters " + cnt);
+			inputReader.close();
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		word2path = new short[mf.getFeatureCounter().get(PipeGen.WORD)][2];
+
+		// insert words
+		try {
+			String line;
+			BufferedReader inputReader = new BufferedReader(
+					new InputStreamReader(new FileInputStream(clusterFile), "UTF-8"), 32768);
+
+			while ((line = inputReader.readLine()) != null) {
+
+				String[] split = line.split(REGEX);
+				int wd = mf.getValue(PipeGen.WORD, split[1]);
+				word2path[wd][0] = (short) mf.getValue(SPATH,
+						split[0].length() < ls ? split[0] : split[0].substring(0, ls));
+				word2path[wd][1] = (short) mf.getValue(LPATH, split[0]);
+			}
+			inputReader.close();
+			int fill = 0;
+			for (short[] element : word2path) {
+				if (element[0] != 0)
+					fill++;
+			}
+			/*
+			 * for(int l = 0; l<word2path.length; l++ ){ if (word2path[l][1]!=0)
+			 * fillL++; if (word2path[l][1]<-1)
+			 * System.out.println("lower "+word2path[l][1]); }
+			 */
+			System.out.println("filled " + fill + " of " + word2path.length);
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * Read the cluster
+	 * 
+	 * @param dos
+	 * @throws IOException
+	 */
+	public Cluster(DataInputStream dis) throws IOException {
+
+		word2path = new short[dis.readInt()][2];
+		for (int i = 0; i < word2path.length; i++) {
+			word2path[i][0] = dis.readShort();
+			word2path[i][1] = dis.readShort();
+		}
+		DB.println("Read cluster with " + word2path.length + " words ");
+	}
+
+	/**
+	 * Write the cluster
+	 * 
+	 * @param dos
+	 * @throws IOException
+	 */
+	public void write(DataOutputStream dos) throws IOException {
+
+		dos.writeInt(word2path.length);
+		for (short[] i : word2path) {
+			dos.writeShort(i[0]);
+			dos.writeShort(i[1]);
+		}
+
+	}
+
+	/**
+	 * @param form
+	 *            the id of a word form
+	 * @return the short path to the word form in the cluster
+	 * 
+	 *         final public int getSP(int form) { if (word2path.length<form)
+	 *         return -1; return word2path[form][0]; }
+	 */
+	/**
+	 * get the long path to a word form in the cluster
+	 * 
+	 * @param form
+	 *            the id of a word form
+	 * @return the long path to the word
+	 */
+	final public int getLP(int form) {
+		if (word2path.length <= form || word2path[form].length <= 0)
+			return -1;
+		return word2path[form][0] == 0 ? -1 : word2path[form][0];
+	}
+
+	final public int getLP(int form, int l) {
+		if (word2path.length < form)
+			return -1;
+		return word2path[form][l] == 0 ? -1 : word2path[form][l];
+	}
+
+	final public int size() {
+		return word2path.length;
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/D4.java b/dependencyParser/experimental/mate-tools/src/is2/data/D4.java
new file mode 100644
index 0000000..d607668
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/D4.java
@@ -0,0 +1,252 @@
+/**
+ *
+ */
+package is2.data;
+
+/**
+ * @author Dr. Bernd Bohnet, 30.10.2010
+ * 
+ *         This class computes the mapping of features to the weight vector.
+ */
+final public class D4 extends DX {
+	private long shift;
+	private long h;
+
+	private final Long2IntInterface _li;
+
+	public D4(Long2IntInterface li) {
+		_li = li;
+	}
+
+	@Override
+	final public void clean() {
+		v0 = 0;
+		v1 = 0;
+		v2 = 0;
+		v3 = 0;
+		v4 = 0;
+		v5 = 0;
+		v6 = 0;
+		v7 = 0;
+		v8 = 0;
+		shift = 0;
+		h = 0;
+	}
+
+	@Override
+	final public void cz3() {
+		if (v0 < 0 || v1 < 0 || v2 < 0) {
+			h = -1;
+			return;
+		}
+
+		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1);
+		shift *= a2;
+	}
+
+	final public long c3() {
+		if (v0 < 0 || v1 < 0 || v2 < 0) {
+			h = -1;
+			return h;
+		}
+
+		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1);
+		shift *= a2;
+		return h;
+	}
+
+	@Override
+	final public void cz4() {
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0) {
+			h = -1;
+			return;
+		}
+
+		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2);
+		shift *= a3;
+	}
+
+	final public long c4() {
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0) {
+			h = -1;
+			return h;
+		}
+
+		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2);
+		shift *= a3;
+		return h;
+	}
+
+	@Override
+	final public void cz5() {
+
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0) {
+			h = -1;
+			return;
+		}
+
+		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2) + v4 * (shift *= a3);
+		shift *= a4;
+
+	}
+
+	final public long c5() {
+
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0) {
+			h = -1;
+			return h;
+		}
+
+		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2) + v4 * (shift *= a3);
+		shift *= a4;
+		return h;
+	}
+
+	@Override
+	final public void cz6() {
+
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0) {
+			h = -1;
+			return;
+		}
+
+		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2);
+		h += v4 * (shift *= a3) + v5 * (shift *= a4);
+		shift *= a5;
+	}
+
+	final public long c6() {
+
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0) {
+			h = -1;
+			return h;
+		}
+
+		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2);
+		h += v4 * (shift *= a3) + v5 * (shift *= a4);
+		shift *= a5;
+		return h;
+	}
+
+	@Override
+	final public long cs(int b, int v) {
+		if (h < 0) {
+			h = -1;
+			return h;
+		}
+
+		h += v * shift;
+		shift *= b;
+		return h;
+
+	}
+
+	@Override
+	final public void csa(int b, int v, IFV f) {
+		if (h < 0) {
+			h = -1;
+			return;
+		}
+
+		h += v * shift;
+		shift *= b;
+		f.add(_li.l2i(h));
+	}
+
+	@Override
+	final public long csa(int b, int v) {
+		if (h < 0) {
+			h = -1;
+			return -1;
+		}
+
+		h += v * shift;
+		shift *= b;
+		return h;
+	}
+
+	@Override
+	public final long getVal() {
+		return h;
+	}
+
+	@Override
+	public final void map(IFV f, long l) {
+		if (l > 0)
+			f.add(this._li.l2i(l));
+	}
+
+	/**
+	 * @param f
+	 */
+	final public void add(IFV f) {
+		f.add(_li.l2i(h));
+	}
+
+	@Override
+	final public void cz7() {
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0) {
+			h = -1;
+			return;
+		}
+
+		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2);
+		h += v4 * (shift *= a3) + v5 * (shift *= a4) + v6 * (shift *= a5);
+		shift *= a6;
+
+	}
+
+	final public long c7() {
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0) {
+			h = -1;
+			return h;
+		}
+
+		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2);
+		h += v4 * (shift *= a3) + v5 * (shift *= a4) + v6 * (shift *= a5);
+		shift *= a6;
+		return h;
+	}
+
+	/**
+	 *
+	 */
+	@Override
+	final public void cz8() {
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0 || v7 < 0) {
+			h = -1;
+			return;
+		}
+
+		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2);
+		h += v4 * (shift *= a3) + v5 * (shift *= a4) + v6 * (shift *= a5) + v7 * (shift *= a6);
+		shift *= a7;
+	}
+
+	final public void cz9() {
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0 || v7 < 0 || v8 < 0) {
+			h = -1;
+			return;
+		}
+
+		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2);
+		h += v4 * (shift *= a3) + v5 * (shift *= a4) + v6 * (shift *= a5) + v7 * (shift *= a6) + v8 * (shift *= a7);
+		shift *= a8;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.data.DX#computeLabeValue(short, short)
+	 */
+	@Override
+	public int computeLabeValue(int label, int shift) {
+		return label * shift;
+	}
+
+	@Override
+	public void fix() {
+
+	}
+
+}
\ No newline at end of file
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/D6.java b/dependencyParser/experimental/mate-tools/src/is2/data/D6.java
new file mode 100644
index 0000000..0a17d51
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/D6.java
@@ -0,0 +1,260 @@
+/**
+ *
+ */
+package is2.data;
+
+import is2.util.DB;
+
+/**
+ * @author Dr. Bernd Bohnet, 30.10.2010
+ * 
+ *         This class computes the mapping of features to the weight vector.
+ */
+final public class D6 extends DX {
+	private long shift;
+	private long h;
+
+	private final Long2IntInterface _li;
+
+	public D6(Long2IntInterface li) {
+		_li = li;
+	}
+
+	boolean fixed = false;
+
+	@Override
+	public void fix() {
+
+		if (fixed) {
+			DB.println("warning: already fixed");
+			// return;
+		}
+
+		long t0 = 1, t1 = a0, t2 = t1 * a1, t3 = t2 * a2, t4 = t3 * a3, t5 = t4 * a4, t6 = t5 * a5, t7 = t6 * a6,
+				t8 = t7 * a7, t9 = t8 * a8;
+
+		a0 = t0;
+		a1 = t1;
+		a2 = t2;
+		a3 = t3;
+		a4 = t4;
+		a5 = t5;
+		a6 = t6;
+		a7 = t7;
+		a8 = t8;
+		a9 = t9;
+
+		fixed = true;
+	}
+
+	@Override
+	final public void clean() {
+		v0 = 0;
+		v1 = 0;
+		v2 = 0;
+		v3 = 0;
+		v4 = 0;
+		v5 = 0;
+		v6 = 0;
+		v7 = 0;
+		v8 = 0;
+		shift = 0;
+		h = 0;
+	}
+
+	@Override
+	final public void cz3() {
+		if (v0 < 0 || v1 < 0 || v2 < 0) {
+			h = -1;
+			return;
+		}
+
+		h = v0 + v1 * a1 + v2 * a2;
+		shift = a3;
+	}
+
+	final public long c3() {
+		if (v0 < 0 || v1 < 0 || v2 < 0) {
+			h = -1;
+			return h;
+		}
+
+		h = v0 + v1 * a1 + v2 * a2;
+		shift = a3;
+		return h;
+	}
+
+	@Override
+	final public void cz4() {
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0) {
+			h = -1;
+			return;
+		}
+
+		h = v0 + v1 * a1 + v2 * a2 + v3 * a3;
+		shift = a4;
+	}
+
+	final public long c4() {
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0) {
+			h = -1;
+			return h;
+		}
+
+		h = v0 + v1 * a1 + v2 * a2 + v3 * a3;
+		shift = a4;
+		return h;
+	}
+
+	@Override
+	final public void cz5() {
+
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0) {
+			h = -1;
+			return;
+		}
+
+		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4;
+		shift = a5;
+
+	}
+
+	final public long c5() {
+
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0) {
+			h = -1;
+			return h;
+		}
+
+		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4;
+		shift = a5;
+		return h;
+	}
+
+	@Override
+	final public void cz6() {
+
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0) {
+			h = -1;
+			return;
+		}
+
+		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5;
+		shift = a6;
+	}
+
+	final public long c6() {
+
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0) {
+			h = -1;
+			return h;
+		}
+
+		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5;
+		shift = a6;
+		return h;
+	}
+
+	@Override
+	final public long cs(int b, int v) {
+		if (h < 0) {
+			h = -1;
+			return h;
+		}
+
+		h += v * shift;
+		shift *= b;
+		return h;
+
+	}
+
+	@Override
+	final public void csa(int b, int v, IFV f) {
+		if (h < 0) {
+			h = -1;
+			return;
+		}
+
+		h += v * shift;
+		shift *= b;
+		f.add(_li.l2i(h));
+	}
+
+	@Override
+	final public long csa(int b, int v) {
+		if (h < 0) {
+			h = -1;
+			return -1;
+		}
+
+		h += v * shift;
+		shift *= b;
+		return h;
+	}
+
+	@Override
+	public final long getVal() {
+		return h;
+	}
+
+	@Override
+	public final void map(IFV f, long l) {
+		if (l > 0)
+			f.add(this._li.l2i(l));
+	}
+
+	/**
+	 * @param f
+	 */
+	final public void add(IFV f) {
+		f.add(_li.l2i(h));
+	}
+
+	@Override
+	final public void cz7() {
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0) {
+			h = -1;
+			return;
+		}
+
+		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5 + v6 * a6;
+		shift = a7;
+
+	}
+
+	final public long c7() {
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0) {
+			h = -1;
+			return h;
+		}
+
+		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5 + v6 * a6;
+		shift = a7;
+		return h;
+	}
+
+	/**
+	 *
+	 */
+	@Override
+	final public void cz8() {
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0 || v7 < 0) {
+			h = -1;
+			return;
+		}
+
+		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5 + v6 * a6 + v7 * a7;
+		shift = a8;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.data.DX#computeLabeValue(short, short)
+	 */
+	@Override
+	public int computeLabeValue(int label, int shift) {
+		return label * shift;
+	}
+
+}
\ No newline at end of file
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/D7.java b/dependencyParser/experimental/mate-tools/src/is2/data/D7.java
new file mode 100644
index 0000000..319c54a
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/D7.java
@@ -0,0 +1,290 @@
+/**
+ *
+ */
+package is2.data;
+
+/**
+ * @author Dr. Bernd Bohnet, 30.10.2010
+ * 
+ *         This class computes the mapping of features to the weight vector.
+ */
+final public class D7 extends DX {
+
+	private long shift;
+	private long h;
+	private final Long2IntInterface _li;
+
+	public D7(Long2IntInterface li) {
+		_li = li;
+	}
+
+	boolean fixed = false;
+
+	@Override
+	public void fix() {
+
+		long t0 = 1, t1 = a0, t2 = t1 * a1, t3 = t2 * a2, t4 = t3 * a3, t5 = t4 * a4, t6 = t5 * a5, t7 = t6 * a6,
+				t8 = t7 * a7, t9 = t8 * a8;
+
+		a0 = t0;
+		a1 = t1;
+		a2 = t2;
+		a3 = t3;
+		a4 = t4;
+		a5 = t5;
+		a6 = t6;
+		a7 = t7;
+		a8 = t8;
+		a9 = t9;
+
+	}
+
+	@Override
+	final public void clean() {
+		v0 = 0;
+		v1 = 0;
+		v2 = 0;
+		v3 = 0;
+		v4 = 0;
+		v5 = 0;
+		v6 = 0;
+		v7 = 0;
+		v8 = 0;
+		shift = 0;
+		h = 0;
+	}
+
+	@Override
+	final public void cz3() {
+		if (v2 < 0) {
+			h = -1;
+			return;
+		}
+
+		h = v0 + v1 * a1 + v2 * a2;
+		shift = a3;
+	}
+
+	final public long c3() {
+		if (v2 < 0) {
+			h = -1;
+			return h;
+		}
+
+		h = v0 + v1 * a1 + v2 * a2;
+		shift = a3;
+		return h;
+	}
+
+	final public long d3() {
+		if (v2 < 0)
+			return -1;
+		return v0 + v2 * a2;
+	}
+
+	@Override
+	final public void cz4() {
+		// if (v0<0||v1<0||v2<0||v3<0) {h=-1;return;}
+		if (v2 < 0 || v3 < 0) {
+			h = -1;
+			return;
+		}
+
+		h = v0 + v1 * a1 + v2 * a2 + v3 * a3;
+		shift = a4;
+	}
+
+	final public long c4() {
+		if (v2 < 0 || v3 < 0) {
+			h = -1;
+			return h;
+		}
+
+		h = v0 + v1 * a1 + v2 * a2 + v3 * a3;
+		shift = a4;
+		return h;
+	}
+
+	final public long d4() {
+		if (v2 < 0 || v3 < 0)
+			return -1;
+		return v0 + v2 * a2 + v3 * a3;
+	}
+
+	@Override
+	final public void cz5() {
+
+		if (v2 < 0 || v3 < 0 || v4 < 0) {
+			h = -1;
+			return;
+		}
+
+		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4;
+		shift = a5;
+
+	}
+
+	final public long c5() {
+
+		if (v2 < 0 || v3 < 0 || v4 < 0) {
+			h = -1;
+			return h;
+		}
+
+		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4;
+		shift = a5;
+		return h;
+	}
+
+	final public long d5() {
+		if (v2 < 0 || v3 < 0 || v4 < 0)
+			return -1;
+		return v0 + v2 * a2 + v3 * a3 + v4 * a4;
+	}
+
+	@Override
+	final public void cz6() {
+
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0) {
+			h = -1;
+			return;
+		}
+
+		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5;
+		shift = a6;
+	}
+
+	final public long c6() {
+
+		if (v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0) {
+			h = -1;
+			return h;
+		}
+
+		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5;
+		shift = a6;
+		return h;
+	}
+
+	final public long d6() {
+		if (v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0)
+			return -1;
+		return v0 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5;
+	}
+
+	@Override
+	final public long cs(int b, int v) {
+		if (h < 0) {
+			h = -1;
+			return h;
+		}
+
+		h += v * shift;
+		shift *= b;
+		return h;
+
+	}
+
+	@Override
+	final public void csa(int b, int v, IFV f) {
+		if (h < 0) {
+			h = -1;
+			return;
+		}
+
+		h += v * shift;
+		shift *= b;
+		f.add(_li.l2i(h));
+	}
+
+	@Override
+	final public long csa(int b, int v) {
+		if (h < 0) {
+			h = -1;
+			return -1;
+		}
+
+		h += v * shift;
+		shift *= b;
+		return h;
+	}
+
+	@Override
+	public final long getVal() {
+		return h;
+	}
+
+	@Override
+	public final void map(IFV f, long l) {
+		if (l > 0)
+			f.add(this._li.l2i(l));
+	}
+
+	/**
+	 * @param f
+	 */
+	final public void add(IFV f) {
+		f.add(_li.l2i(h));
+	}
+
+	@Override
+	final public void cz7() {
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0) {
+			h = -1;
+			return;
+		}
+
+		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5 + v6 * a6;
+		shift = a7;
+
+	}
+
+	final public long c7() {
+		if (v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0) {
+			h = -1;
+			return h;
+		}
+
+		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5 + v6 * a6;
+		shift = a7;
+		return h;
+	}
+
+	final public long d7() {
+		if (v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0)
+			return -1;
+		return v0 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5 + v6 * a6;
+	}
+
+	/**
+	 *
+	 */
+	@Override
+	final public void cz8() {
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0 || v7 < 0) {
+			h = -1;
+			return;
+		}
+
+		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5 + v6 * a6 + v7 * a7;
+		shift = a8;
+	}
+
+	final public long d8() {
+		if (v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0 || v7 < 0) {
+			return -1;
+		}
+		return v0 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5 + v6 * a6 + v7 * a7;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.data.DX#computeLabeValue(short, short)
+	 */
+	@Override
+	public int computeLabeValue(int label, int shift) {
+		return label * shift;
+	}
+
+}
\ No newline at end of file
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/DPSTree.java b/dependencyParser/experimental/mate-tools/src/is2/data/DPSTree.java
new file mode 100644
index 0000000..085c0c7
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/DPSTree.java
@@ -0,0 +1,109 @@
+/**
+ *
+ */
+package is2.data;
+
+/**
+ * @author Dr. Bernd Bohnet, 17.01.2011
+ *
+ *         Dynamic phrase structure tree.
+ */
+public class DPSTree {
+
+	private int size = 0;
+
+	public int[] heads;
+	public int[] labels;
+
+	public DPSTree() {
+		this(30);
+	}
+
+	public DPSTree(int initialCapacity) {
+		heads = new int[initialCapacity];
+		labels = new int[initialCapacity];
+	}
+
+	/**
+	 * Increases the capacity of this <tt>Graph</tt> instance, if necessary, to
+	 * ensure that it can hold at least the number of nodes specified by the
+	 * minimum capacity argument.
+	 *
+	 * @param minCapacity
+	 *            the desired minimum capacity.
+	 */
+	private void ensureCapacity(int minCapacity) {
+
+		if (minCapacity > heads.length) {
+
+			int newCapacity = minCapacity + 1;
+
+			if (newCapacity < minCapacity)
+				newCapacity = minCapacity;
+			int oldIndex[] = heads;
+			heads = new int[newCapacity];
+			System.arraycopy(oldIndex, 0, heads, 0, oldIndex.length);
+
+			oldIndex = labels;
+			labels = new int[newCapacity];
+			System.arraycopy(oldIndex, 0, labels, 0, oldIndex.length);
+
+		}
+	}
+
+	final public int size() {
+		return size;
+	}
+
+	final public boolean isEmpty() {
+		return size == 0;
+	}
+
+	final public void clear() {
+		size = 0;
+	}
+
+	final public void createTerminals(int terminals) {
+		ensureCapacity(terminals + 1);
+		size = terminals + 1;
+	}
+
+	final public int create(int phrase) {
+
+		ensureCapacity(size + 1);
+		labels[size] = phrase;
+		size++;
+		return size - 1;
+	}
+
+	public int create(int phrase, int nodeId) {
+
+		if (nodeId < 0)
+			return this.create(phrase);
+		// DB.println("create phrase "+nodeId+" label "+phrase);
+		ensureCapacity(nodeId + 1);
+		labels[nodeId] = phrase;
+		if (size < nodeId)
+			size = nodeId + 1;
+		return nodeId;
+	}
+
+	public void createEdge(int i, int j) {
+		heads[i] = j;
+		// DB.println("create edge "+i+"\t "+j);
+	}
+
+	@Override
+	public DPSTree clone() {
+		DPSTree ps = new DPSTree(this.size + 1);
+
+		for (int k = 0; k < size; k++) {
+			ps.heads[k] = heads[k];
+			ps.labels[k] = labels[k];
+		}
+		ps.size = size;
+		return ps;
+
+	}
+
+}
\ No newline at end of file
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/DX.java b/dependencyParser/experimental/mate-tools/src/is2/data/DX.java
new file mode 100644
index 0000000..8650038
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/DX.java
@@ -0,0 +1,56 @@
+/**
+ *
+ */
+package is2.data;
+
+/**
+ * @author Dr. Bernd Bohnet, 30.08.2011
+ *
+ *
+ */
+public abstract class DX {
+
+	public long a0, a1, a2, a3, a4, a5, a6, a7, a8, a9;
+	public long v0, v1, v2, v3, v4, v5, v6, v7, v8, v9;
+
+	public abstract void cz3();
+
+	public abstract void cz4();
+
+	public abstract void cz5();
+
+	public abstract void cz6();
+
+	public abstract void cz7();
+
+	public abstract void cz8();
+
+	public abstract void clean();
+
+	public abstract long cs(int b, int v);
+
+	public abstract long csa(int b, int v);
+
+	public abstract void csa(int b, int v, IFV f);
+
+	/**
+	 * @return
+	 */
+	public abstract long getVal();
+
+	/**
+	 * @param f
+	 * @param l
+	 */
+	public abstract void map(IFV f, long l);
+
+	/**
+	 * @param label
+	 * @param s_type
+	 * @return
+	 */
+	public abstract int computeLabeValue(int label, int s_type);
+
+	public abstract void fix();
+
+}
\ No newline at end of file
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/DataF.java b/dependencyParser/experimental/mate-tools/src/is2/data/DataF.java
new file mode 100755
index 0000000..0ec145f
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/DataF.java
@@ -0,0 +1,35 @@
+package is2.data;
+
+final public class DataF {
+
+	final public short typesLen;
+	final public int len;
+
+	// first order features
+	final public float[][] pl;
+
+	// remove !!!!
+	// final public float[][] highestLab;
+
+	// final public FV[][][] label;
+	final public float[][][][] lab;
+
+	public FV fv;
+
+	final public float[][][][][] sib;
+
+	final public float[][][][][] gra;
+
+	public DataF(int length, short types) {
+		typesLen = types;
+		len = length;
+
+		pl = new float[length][length];
+		lab = new float[length][length][types][2];
+		// highestLab = new float[length][length];
+
+		sib = new float[length][length][length][2][];
+		gra = new float[length][length][length][2][];
+
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/DataFES.java b/dependencyParser/experimental/mate-tools/src/is2/data/DataFES.java
new file mode 100644
index 0000000..751ddc3
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/DataFES.java
@@ -0,0 +1,71 @@
+package is2.data;
+
+import java.util.Arrays;
+
+final public class DataFES {
+
+	final public short typesLen;
+	final public int len;
+
+	// first order features
+	final public float[][] pl;
+
+	// remove !!!!
+	// final public float[][] highestLab;
+
+	// final public FV[][][] label;
+	final public float[][][] lab;
+
+	public FV fv;
+
+	final public float[][][][] sib;
+
+	final public float[][][][] gra;
+
+	public DataFES(int length, short types) {
+		typesLen = types;
+		len = length;
+
+		pl = new float[length][length];
+		lab = new float[length][length][types];
+
+		sib = new float[length][length][length][];
+		gra = new float[length][length][length][];
+
+	}
+	
+	public void print2DFloatArray(float[][] a, String name) {
+		for(int i = 0; i < a.length; ++i)
+			if(a[i] != null)
+				for(int j = 0; j < a[i].length; ++j)
+					System.out.println(name + "[" + i + "][" + j + "] = " + a[i][j]);
+	}
+	
+	public void print3DFloatArray(float[][][] a, String name) {
+		for(int i = 0; i < a.length; ++i)
+			if(a[i] != null)
+				for(int j = 0; j < a[i].length; ++j)
+					if(a[i][j] != null)
+						System.out.println(name + "[" + i + "][" + j + "] = " + Arrays.toString(a[i][j]));
+	}
+	
+	public void print4DFloatArray(float[][][][] a, String name) {
+		for(int i = 0; i < a.length; ++i)
+			if(a[i] != null)
+				for(int j = 0; j < a[i].length; ++j)
+					if(a[i][j] != null)
+						for(int k = 0; k < a[i][j].length; ++k)
+							if(a[i][j][k] != null)
+								System.out.println(name + "[" + i + "][" + j + "][" + k + "] = " + Arrays.toString(a[i][j][k]));
+	}
+	
+	public void print() {
+		System.out.println("typesLen = " + typesLen);
+		System.out.println("len = " + len);
+		print2DFloatArray(pl, "pl");
+		print3DFloatArray(lab, "lab");
+		System.out.println("fv = a feature vector");
+		print4DFloatArray(sib, "sib");
+		print4DFloatArray(gra, "gra");
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/DataT.java b/dependencyParser/experimental/mate-tools/src/is2/data/DataT.java
new file mode 100644
index 0000000..2ae816d
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/DataT.java
@@ -0,0 +1,19 @@
+package is2.data;
+
+final public class DataT {
+
+	final public short typesLen;
+	final public int len;
+
+	// final public FV[][][] label;
+	// a b lab op
+	final public float[][][][] lab;
+
+	public DataT(int length, short types) {
+		typesLen = types;
+		len = length;
+
+		lab = new float[length][length][types][4];
+
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/Edges.java b/dependencyParser/experimental/mate-tools/src/is2/data/Edges.java
new file mode 100644
index 0000000..a14db91
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/Edges.java
@@ -0,0 +1,216 @@
+/**
+ *
+ */
+package is2.data;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Map.Entry;
+
+/**
+ * @author Dr. Bernd Bohnet, 13.05.2009;
+ *
+ *
+ */
+public final class Edges {
+
+	private static short[][][][] edges;
+	private static HashMap<Short, Integer> labelCount = new HashMap<Short, Integer>();
+
+	private static HashMap<String, Integer> slabelCount = new HashMap<String, Integer>();
+
+	static short[] def = new short[1];
+
+	private Edges() {
+	}
+
+	/**
+	 * @param length
+	 */
+	public static void init(int length) {
+		edges = new short[length][length][2][];
+	}
+
+	public static void findDefault() {
+
+		int best = 0;
+
+		for (Entry<Short, Integer> e : labelCount.entrySet()) {
+
+			if (best < e.getValue()) {
+				best = e.getValue();
+				def[0] = e.getKey();
+			}
+		}
+
+		// labelCount=null;
+		// String[] types = new String[mf.getFeatureCounter().get(PipeGen.REL)];
+		// for (Entry<String, Integer> e :
+		// MFO.getFeatureSet().get(PipeGen.REL).entrySet()) types[e.getValue()]
+		// = e.getKey();
+
+		is2.util.DB.println("set default label to " + def[0] + " ");
+
+		// System.out.println("found default "+def[0]);
+
+	}
+
+	final static public void put(int pos1, int pos2, boolean dir, short label) {
+		putD(pos1, pos2, dir, label);
+		// putD(pos2, pos1,!dir, label);
+	}
+
+	final static public void putD(int pos1, int pos2, boolean dir, short label) {
+
+		Integer lc = labelCount.get(label);
+		if (lc == null)
+			labelCount.put(label, 1);
+		else
+			labelCount.put(label, lc + 1);
+
+		String key = pos1 + "-" + pos2 + dir + label;
+		Integer lcs = slabelCount.get(key);
+		if (lcs == null)
+			slabelCount.put(key, 1);
+		else
+			slabelCount.put(key, lcs + 1);
+
+		if (edges[pos1][pos2][dir ? 0 : 1] == null) {
+			edges[pos1][pos2][dir ? 0 : 1] = new short[1];
+			edges[pos1][pos2][dir ? 0 : 1][0] = label;
+
+			// edgesh[pos1][pos2][dir?0:1] = new TIntHashSet(2);
+			// edgesh[pos1][pos2][dir?0:1].add(label);
+		} else {
+			short labels[] = edges[pos1][pos2][dir ? 0 : 1];
+			for (short l : labels) {
+				// contains label already?
+				if (l == label)
+					return;
+			}
+
+			short[] nlabels = new short[labels.length + 1];
+			System.arraycopy(labels, 0, nlabels, 0, labels.length);
+			nlabels[labels.length] = label;
+			edges[pos1][pos2][dir ? 0 : 1] = nlabels;
+
+			// edgesh[pos1][pos2][dir?0:1].add(label);
+		}
+	}
+
+	final static public short[] get(int pos1, int pos2, boolean dir) {
+
+		if (pos1 < 0 || pos2 < 0 || edges[pos1][pos2][dir ? 0 : 1] == null)
+			return def;
+		return edges[pos1][pos2][dir ? 0 : 1];
+	}
+
+	/**
+	 * @param dis
+	 */
+	static public void write(DataOutputStream d) throws IOException {
+
+		int len = edges.length;
+		d.writeShort(len);
+
+		for (int p1 = 0; p1 < len; p1++) {
+			for (int p2 = 0; p2 < len; p2++) {
+				if (edges[p1][p2][0] == null)
+					d.writeShort(0);
+				else {
+					d.writeShort(edges[p1][p2][0].length);
+					for (int l = 0; l < edges[p1][p2][0].length; l++) {
+						d.writeShort(edges[p1][p2][0][l]);
+					}
+
+				}
+
+				if (edges[p1][p2][1] == null)
+					d.writeShort(0);
+				else {
+					d.writeShort(edges[p1][p2][1].length);
+					for (int l = 0; l < edges[p1][p2][1].length; l++) {
+						d.writeShort(edges[p1][p2][1][l]);
+					}
+				}
+			}
+		}
+
+		d.writeShort(def[0]);
+
+	}
+
+	/**
+	 * @param dis
+	 */
+	public static void read(DataInputStream d) throws IOException {
+		int len = d.readShort();
+
+		edges = new short[len][len][2][];
+		for (int p1 = 0; p1 < len; p1++) {
+			for (int p2 = 0; p2 < len; p2++) {
+				int ll = d.readShort();
+				if (ll == 0) {
+					edges[p1][p2][0] = null;
+				} else {
+					edges[p1][p2][0] = new short[ll];
+					for (int l = 0; l < ll; l++) {
+						edges[p1][p2][0][l] = d.readShort();
+					}
+				}
+
+				ll = d.readShort();
+				if (ll == 0) {
+					edges[p1][p2][1] = null;
+				} else {
+					edges[p1][p2][1] = new short[ll];
+					for (int l = 0; l < ll; l++) {
+						edges[p1][p2][1][l] = d.readShort();
+					}
+				}
+			}
+		}
+
+		def[0] = d.readShort();
+
+	}
+
+	public static class C implements Comparator<Short> {
+
+		public C() {
+			super();
+		}
+
+		String _key;
+
+		public C(String key) {
+			super();
+			_key = key;
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+		 */
+		@Override
+		public int compare(Short l1, Short l2) {
+
+			// int c1 = labelCount.get(l1);
+			// int c2 = labelCount.get(l2);
+			// if (true) return c1==c2?0:c1>c2?-1:1;
+
+			int x1 = slabelCount.get(_key + l1.shortValue());
+			int x2 = slabelCount.get(_key + l2.shortValue());
+			// System.out.println(x1+" "+x2);
+
+			return x1 == x2 ? 0 : x1 > x2 ? -1 : 1;
+
+		}
+
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/F2S.java b/dependencyParser/experimental/mate-tools/src/is2/data/F2S.java
new file mode 100755
index 0000000..37ee11a
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/F2S.java
@@ -0,0 +1,54 @@
+package is2.data;
+
+final public class F2S extends IFV {
+
+	private double[] parameters;
+
+	public F2S() {
+	}
+
+	public double score;
+
+	/**
+	 * @param parameters2
+	 */
+	public F2S(double[] parameters2) {
+		parameters = parameters2;
+	}
+
+	@Override
+	public void add(int i) {
+		if (i > 0)
+			score += parameters[i];
+	}
+
+	public void setParameters(double[] p) {
+		parameters = p;
+	}
+
+	@Override
+	public void clear() {
+		score = 0;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.IFV#getScore()
+	 */
+	@Override
+	public double getScore() {
+		return score;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.IFV#clone()
+	 */
+	@Override
+	public IFV clone() {
+		return new F2S(parameters);
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/F2SD.java b/dependencyParser/experimental/mate-tools/src/is2/data/F2SD.java
new file mode 100755
index 0000000..2cdd793
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/F2SD.java
@@ -0,0 +1,44 @@
+package is2.data;
+
+final public class F2SD extends IFV {
+
+	final private double[] parameters;
+
+	public double score = 0;
+
+	public F2SD(double[] p) {
+		parameters = p;
+	}
+
+	@Override
+	public void add(int i) {
+		if (i > 0)
+			score += parameters[i];
+	}
+
+	@Override
+	public void clear() {
+		score = 0;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.IFV#getScore()
+	 */
+	@Override
+	public double getScore() {
+		return score;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.IFV#clone()
+	 */
+	@Override
+	public IFV clone() {
+		return new F2SD(parameters);
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/F2SF.java b/dependencyParser/experimental/mate-tools/src/is2/data/F2SF.java
new file mode 100755
index 0000000..394352f
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/F2SF.java
@@ -0,0 +1,77 @@
+package is2.data;
+
+final public class F2SF extends IFV {
+
+	final private float[] parameters;
+
+	public float score = 0;
+
+	public F2SF(float[] p) {
+		parameters = p;
+	}
+
+	@Override
+	final public void add(int i) {
+		if (i > 0)
+			score += parameters[i];
+	}
+
+	final public void add(int[] i) {
+		for (int element : i) {
+			if (element > 0)
+				score += parameters[element];
+		}
+	}
+
+	final public void sub(float[] px, int i, Long2IntInterface li) {
+
+		if (i > 0) {
+			score -= px[li.l2i(i)];
+			// score -= px[i];
+			// else score -=px[];
+		}
+	}
+
+	@Override
+	public void clear() {
+		score = 0;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.IFV#getScore()
+	 */
+	@Override
+	public double getScore() {
+		return score;
+	}
+
+	public float getScoreF() {
+		return score;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.IFV#clone()
+	 */
+	@Override
+	public IFV clone() {
+		return new F2SF(this.parameters);
+	}
+
+	/**
+	 * @param l2i
+	 */
+	public void addRel(int i, float f) {
+		if (i > 0)
+			score += parameters[i] * f;
+
+	}
+
+	public int length() {
+		return this.parameters.length;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/F2SP.java b/dependencyParser/experimental/mate-tools/src/is2/data/F2SP.java
new file mode 100644
index 0000000..513fa33
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/F2SP.java
@@ -0,0 +1,77 @@
+package is2.data;
+
+final public class F2SP extends IFV {
+
+	final private float[] parameters;
+
+	public double score = 0;
+
+	public F2SP(float[] p) {
+		parameters = p;
+	}
+
+	@Override
+	final public void add(int i) {
+		if (i > 0)
+			score += parameters[i];
+	}
+
+	final public void add(int[] i) {
+		for (int element : i) {
+			if (element > 0)
+				score += parameters[element];
+		}
+	}
+
+	final public void sub(float[] px, int i, Long2IntInterface li) {
+
+		if (i > 0) {
+			score -= px[li.l2i(i)];
+			// score -= px[i];
+			// else score -=px[];
+		}
+	}
+
+	@Override
+	public void clear() {
+		score = 0;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.IFV#getScore()
+	 */
+	@Override
+	public double getScore() {
+		return score;
+	}
+
+	public double getScoreF() {
+		return score;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.IFV#clone()
+	 */
+	@Override
+	public IFV clone() {
+		return new F2SP(this.parameters);
+	}
+
+	/**
+	 * @param l2i
+	 */
+	public void addRel(int i, float f) {
+		if (i > 0)
+			score += parameters[i] * f;
+
+	}
+
+	public int length() {
+		return this.parameters.length;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/F2ST.java b/dependencyParser/experimental/mate-tools/src/is2/data/F2ST.java
new file mode 100644
index 0000000..4c30144
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/F2ST.java
@@ -0,0 +1,48 @@
+package is2.data;
+
+final public class F2ST extends IFV {
+
+	final private short[] parameters;
+
+	public int score = 0;
+
+	public F2ST(short[] p) {
+		parameters = p;
+	}
+
+	@Override
+	final public void add(int i) {
+		if (i > 0)
+			score += parameters[i];
+	}
+
+	@Override
+	public void clear() {
+		score = 0;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.IFV#getScore()
+	 */
+	@Override
+	public double getScore() {
+		return score;
+	}
+
+	public float getScoreF() {
+		return score;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.IFV#clone()
+	 */
+	@Override
+	public IFV clone() {
+		return new F2ST(this.parameters);
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/FV.java b/dependencyParser/experimental/mate-tools/src/is2/data/FV.java
new file mode 100755
index 0000000..10c0030
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/FV.java
@@ -0,0 +1,562 @@
+package is2.data;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+public final class FV extends IFV {
+
+	private FV subfv1;
+	private FV subfv2;
+	private boolean negateSecondSubFV = false;
+
+	private int size;
+
+	// content of the nodes NxC
+	private int m_index[];
+
+	// type of the nodes NxT
+
+	public FV() {
+		this(10);
+	}
+
+	public FV(int initialCapacity) {
+		m_index = new int[initialCapacity];
+	}
+
+	public FV(FV fv1, FV fv2) {
+		subfv1 = fv1;
+		subfv2 = fv2;
+	}
+
+	public FV(FV fv1, FV fv2, boolean negSecond) {
+		this(0);
+		subfv1 = fv1;
+		subfv2 = fv2;
+		negateSecondSubFV = negSecond;
+	}
+
+	/**
+	 * Read a feature vector
+	 * 
+	 * @param index
+	 * @param value
+	 */
+	public FV(DataInputStream dos, int capacity) throws IOException {
+		this(capacity);
+		size = m_index.length;
+
+		for (int i = 0; i < size; i++)
+			m_index[i] = dos.readInt();
+	}
+
+	/**
+	 * Read a feature vector
+	 * 
+	 * @param index
+	 * @param value
+	 */
+	public FV(DataInputStream dos) throws IOException {
+		this(dos.readInt());
+		size = m_index.length;
+
+		for (int i = 0; i < size; i++)
+			m_index[i] = dos.readInt();
+
+	}
+
+	/**
+	 * Increases the capacity of this <tt>Graph</tt> instance, if necessary, to
+	 * ensure that it can hold at least the number of nodes specified by the
+	 * minimum capacity argument.
+	 *
+	 * @param minCapacity
+	 *            the desired minimum capacity.
+	 */
+	private void ensureCapacity(int minCapacity) {
+
+		if (minCapacity > m_index.length) {
+
+			int oldIndex[] = m_index;
+
+			int newCapacity = (m_index.length * 3) / 2 + 1;
+
+			if (newCapacity < minCapacity)
+				newCapacity = minCapacity;
+
+			m_index = new int[newCapacity];
+			System.arraycopy(oldIndex, 0, m_index, 0, oldIndex.length);
+
+		}
+	}
+
+	final public int size() {
+		return size;
+	}
+
+	final public boolean isEmpty() {
+		return size == 0;
+	}
+
+	@Override
+	final public void clear() {
+		size = 0;
+	}
+
+	final public int createFeature(int i, double v) {
+
+		ensureCapacity(size + 1);
+		m_index[size] = i;
+		size++;
+		return size - 1;
+	}
+
+	final public int createFeature(int i) {
+
+		ensureCapacity(size + 1);
+		m_index[size] = i;
+		size++;
+		return size - 1;
+	}
+
+	final public int getIndex(int i) {
+		return m_index[i];
+	}
+
+	public void setIndex(int p, int i) {
+		m_index[p] = i;
+	}
+
+	/**
+	 * Trims the capacity of this <tt>Graph</tt> instance to true size. An
+	 * application can use this operation to minimize the storage of an
+	 * <tt>Graph</tt> instance.
+	 */
+	public void trimToSize() {
+
+		if (size < m_index.length) {
+
+			int oldIndex[] = m_index;
+
+			m_index = new int[size];
+			System.arraycopy(oldIndex, 0, m_index, 0, size);
+
+		}
+
+	}
+
+	@Override
+	final public void add(int i) {
+		if (i >= 0) {
+			ensureCapacity(size + 1);
+			m_index[size] = i;
+			size++;
+		}
+	}
+
+	final public void add(int[] i) {
+
+		for (int element : i)
+			add(element);
+
+	}
+
+	final public void put(int i, double f) {
+		if (i >= 0)
+			createFeature(i, f);
+	}
+
+	// fv1 - fv2
+	public FV getDistVector(FV fl2) {
+		return new FV(this, fl2, true);
+	}
+
+	public double getScore(double[] parameters, boolean negate) {
+		double score = 0.0;
+
+		if (null != subfv1) {
+			score += subfv1.getScore(parameters, negate);
+
+			if (null != subfv2) {
+				if (negate)
+					score += subfv2.getScore(parameters, !negateSecondSubFV);
+				else
+					score += subfv2.getScore(parameters, negateSecondSubFV);
+
+			}
+		}
+
+		if (negate)
+			for (int i = 0; i < size; i++)
+				score -= parameters[m_index[i]];
+		else
+			for (int i = 0; i < size; i++)
+				score += parameters[m_index[i]];
+
+		return score;
+	}
+
+	final public float getScore(float[] parameters, boolean negate) {
+		float score = 0.0F;
+
+		if (null != subfv1) {
+			score += subfv1.getScore(parameters, negate);
+
+			if (null != subfv2) {
+				if (negate)
+					score += subfv2.getScore(parameters, !negateSecondSubFV);
+				else
+					score += subfv2.getScore(parameters, negateSecondSubFV);
+
+			}
+		}
+
+		// warning changed the the value
+
+		if (negate)
+			for (int i = 0; i < size; i++)
+				score -= parameters[m_index[i]];// *m_value[i];
+		else
+			for (int i = 0; i < size; i++)
+				score += parameters[m_index[i]];// *m_value[i];
+
+		return score;
+	}
+
+	final public int getScore(short[] parameters, boolean negate) {
+		int score = 0;
+
+		if (null != subfv1) {
+			score += subfv1.getScore(parameters, negate);
+
+			if (null != subfv2) {
+				if (negate)
+					score += subfv2.getScore(parameters, !negateSecondSubFV);
+				else
+					score += subfv2.getScore(parameters, negateSecondSubFV);
+
+			}
+		}
+
+		// warning changed the value
+
+		if (negate)
+			for (int i = 0; i < size; i++)
+				score -= parameters[m_index[i]];// *m_value[i];
+		else
+			for (int i = 0; i < size; i++)
+				score += parameters[m_index[i]];// *m_value[i];
+
+		return score;
+	}
+
+	public void update(double[] parameters, double[] total, double alpha_k, double upd) {
+		update(parameters, total, alpha_k, upd, false);
+	}
+
+	public final void update(double[] parameters, double[] total, double alpha_k, double upd, boolean negate) {
+
+		if (null != subfv1) {
+			subfv1.update(parameters, total, alpha_k, upd, negate);
+
+			if (null != subfv2) {
+				if (negate)
+					subfv2.update(parameters, total, alpha_k, upd, !negateSecondSubFV);
+				else
+					subfv2.update(parameters, total, alpha_k, upd, negateSecondSubFV);
+			}
+		}
+
+		if (negate) {
+			for (int i = 0; i < size; i++) {
+				parameters[m_index[i]] -= alpha_k;// *getValue(i);
+				total[m_index[i]] -= upd * alpha_k;// *getValue(i);
+			}
+		} else {
+			for (int i = 0; i < size; i++) {
+				parameters[m_index[i]] += alpha_k;// *getValue(i);
+				total[m_index[i]] += upd * alpha_k;// *getValue(i);
+			}
+		}
+
+	}
+
+	public final void update(short[] parameters, short[] total, double alpha_k, double upd, boolean negate) {
+
+		if (null != subfv1) {
+			subfv1.update(parameters, total, alpha_k, upd, negate);
+
+			if (null != subfv2) {
+				if (negate)
+					subfv2.update(parameters, total, alpha_k, upd, !negateSecondSubFV);
+				else
+					subfv2.update(parameters, total, alpha_k, upd, negateSecondSubFV);
+			}
+		}
+
+		if (negate) {
+			for (int i = 0; i < size; i++) {
+				parameters[m_index[i]] -= alpha_k;// *getValue(i);
+				total[m_index[i]] -= upd * alpha_k;// *getValue(i);
+			}
+		} else {
+			for (int i = 0; i < size; i++) {
+				parameters[m_index[i]] += alpha_k;// *getValue(i);
+				total[m_index[i]] += upd * alpha_k;// *getValue(i);
+			}
+		}
+
+	}
+
+	public final void update(float[] parameters, float[] total, double alpha_k, double upd, boolean negate) {
+
+		if (null != subfv1) {
+			subfv1.update(parameters, total, alpha_k, upd, negate);
+
+			if (null != subfv2 && negate) {
+				subfv2.update(parameters, total, alpha_k, upd, !negateSecondSubFV);
+			} else {
+				subfv2.update(parameters, total, alpha_k, upd, negateSecondSubFV);
+			}
+
+		}
+
+		if (negate) {
+			for (int i = 0; i < size; i++) {
+				parameters[getIndex(i)] -= alpha_k;
+				total[getIndex(i)] -= upd * alpha_k;
+			}
+		} else {
+			for (int i = 0; i < size; i++) {
+				parameters[getIndex(i)] += alpha_k;
+				total[getIndex(i)] += upd * alpha_k; //
+			}
+		}
+
+	}
+
+	public final void update(float[] parameters, float[] total, double alpha_k, double upd, boolean negate,
+			float[] totalp, Long2IntInterface li) {
+
+		if (null != subfv1) {
+			subfv1.update(parameters, total, alpha_k, upd, negate, totalp, li);
+
+			if (null != subfv2 && negate) {
+				subfv2.update(parameters, total, alpha_k, upd, !negateSecondSubFV, totalp, li);
+			} else {
+				subfv2.update(parameters, total, alpha_k, upd, negateSecondSubFV, totalp, li);
+			}
+		}
+
+		if (negate) {
+			for (int i = 0; i < size; i++) {
+				parameters[getIndex(i)] -= alpha_k;
+				total[getIndex(i)] -= upd * alpha_k;
+
+				totalp[li.l2i(getIndex(i))] -= upd * alpha_k;
+				// totalp[getIndex(i)] -=upd*alpha_k;
+			}
+		} else {
+			for (int i = 0; i < size; i++) {
+				parameters[getIndex(i)] += alpha_k;
+				total[getIndex(i)] += upd * alpha_k; //
+
+				totalp[li.l2i(getIndex(i))] += upd * alpha_k;
+				// totalp[getIndex(i)] +=upd*alpha_k;
+			}
+		}
+	}
+
+	private static IntIntHash hm1;
+	private static IntIntHash hm2;
+
+	public int dotProduct(FV fl2) {
+
+		if (hm1 == null)
+			hm1 = new IntIntHash(size(), 0.4F);
+		else
+			hm1.clear();
+
+		addFeaturesToMap(hm1);
+
+		if (hm2 == null)
+			hm2 = new IntIntHash(fl2.size, 0.4F);
+		else
+			hm2.clear();
+
+		fl2.addFeaturesToMap(hm2);
+
+		int[] keys = hm1.keys();
+
+		int result = 0;
+		for (int key : keys)
+			result += hm1.get(key) * hm2.get(key);
+
+		return result;
+
+	}
+
+	public double twoNorm(FV fl2) {
+
+		if (hm1 == null)
+			hm1 = new IntIntHash(size(), 0.4F);
+		else
+			hm1.clear();
+
+		addFeaturesToMap(hm1);
+
+		if (hm2 == null)
+			hm2 = new IntIntHash(fl2.size, 0.4F);
+		else
+			hm2.clear();
+
+		fl2.addFeaturesToMap(hm2);
+
+		int[] keys = hm1.keys();
+
+		int result = 0;
+		for (int key : keys)
+			result += hm1.get(key) * hm2.get(key);
+
+		return Math.sqrt(result);
+
+	}
+
+	public void addFeaturesToMap(IntIntHash map) {
+
+		if (null != subfv1) {
+			subfv1.addFeaturesToMap(map);
+
+			if (null != subfv2) {
+				subfv2.addFeaturesToMap(map, negateSecondSubFV);
+
+			}
+		}
+
+		for (int i = 0; i < size; i++)
+			if (!map.adjustValue(getIndex(i), 1))
+				map.put(getIndex(i), 1);
+
+	}
+
+	private void addFeaturesToMap(IntIntHash map, boolean negate) {
+
+		if (null != subfv1) {
+			subfv1.addFeaturesToMap(map, negate);
+
+			if (null != subfv2) {
+				if (negate)
+					subfv2.addFeaturesToMap(map, !negateSecondSubFV);
+				else
+					subfv2.addFeaturesToMap(map, negateSecondSubFV);
+
+			}
+		}
+
+		if (negate) {
+			for (int i = 0; i < size; i++)
+				if (!map.adjustValue(getIndex(i), -1))
+					map.put(getIndex(i), -1);
+		} else {
+			for (int i = 0; i < size; i++)
+				if (!map.adjustValue(getIndex(i), 1))
+					map.put(getIndex(i), 1);
+		}
+
+	}
+
+	@Override
+	public final String toString() {
+		StringBuilder sb = new StringBuilder();
+		toString(sb);
+		return sb.toString();
+	}
+
+	private final void toString(StringBuilder sb) {
+		if (null != subfv1) {
+			subfv1.toString(sb);
+
+			if (null != subfv2)
+				subfv2.toString(sb);
+		}
+		for (int i = 0; i < size; i++)
+			sb.append(getIndex(i)).append(' ');
+	}
+
+	public void writeKeys(DataOutputStream dos) throws IOException {
+
+		// int keys[] = keys();
+		// dos.writeInt(keys.length);
+		// for(int i=0;i<keys.length;i++) {
+		// dos.writeInt(keys[i]);
+		// }
+
+		// int keys[] = keys();
+		dos.writeInt(size);
+		for (int i = 0; i < size; i++) {
+			dos.writeInt(m_index[i]);
+		}
+
+	}
+
+	public void readKeys(DataInputStream dos) throws IOException {
+
+		int keys = dos.readInt();
+		for (int i = 0; i < keys; i++)
+			createFeature(dos.readInt(), 1.0);
+
+	}
+
+	final public static FV cat(FV f1, FV f2) {
+		if (f1 == null)
+			return f2;
+		if (f2 == null)
+			return f1;
+		return new FV(f1, f2);
+	}
+
+	final public static FV cat(FV f1, FV f2, FV f3) {
+		return FV.cat(f1, FV.cat(f2, f3));
+	}
+
+	final public static FV cat(FV f1, FV f2, FV f3, FV f4) {
+		return FV.cat(f1, FV.cat(f2, FV.cat(f3, f4)));
+	}
+
+	final public static FV read(DataInputStream dis) throws IOException {
+		int cap = dis.readInt();
+		if (cap == 0)
+			return null;
+		return new FV(dis, cap);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.IFV#getScore()
+	 */
+	@Override
+	public double getScore() {
+		// System.out.println("not implemented");
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.IFV#clone()
+	 */
+	@Override
+	public IFV clone() {
+		FV f = new FV(this.size);
+		for (int i = 0; i < this.size; i++) {
+			f.m_index[i] = m_index[i];
+		}
+		f.size = this.size;
+		return f;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/FVR.java b/dependencyParser/experimental/mate-tools/src/is2/data/FVR.java
new file mode 100644
index 0000000..c5bc073
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/FVR.java
@@ -0,0 +1,435 @@
+package is2.data;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import gnu.trove.TIntDoubleHashMap;
+
+public final class FVR extends IFV {
+
+	private FVR subfv1;
+	private FVR subfv2;
+	private boolean negateSecondSubFV = false;
+
+	private int size;
+
+	// content of the nodes NxC
+	private int m_index[];
+	private float m_value[];
+
+	// type of the nodes NxT
+
+	public FVR() {
+		this(10);
+	}
+
+	public FVR(int initialCapacity) {
+		m_index = new int[initialCapacity];
+		m_value = new float[initialCapacity];
+	}
+
+	/*
+	 * public FVR (FVR fv1, FVR fv2) { subfv1 = fv1; subfv2 = fv2; }
+	 */
+	public FVR(FVR fv1, FVR fv2, boolean negSecond) {
+		this(0);
+		subfv1 = fv1;
+		subfv2 = fv2;
+		negateSecondSubFV = negSecond;
+	}
+
+	/**
+	 * Read a feature vector
+	 * 
+	 * @param index
+	 * @param value
+	 */
+	public FVR(DataInputStream dos, int capacity) throws IOException {
+		this(capacity);
+		size = m_index.length;
+
+		for (int i = 0; i < size; i++)
+			m_index[i] = dos.readInt();
+	}
+
+	/**
+	 * Read a feature vector
+	 * 
+	 * @param index
+	 * @param value
+	 */
+	public FVR(DataInputStream dos) throws IOException {
+		this(dos.readInt());
+		size = m_index.length;
+
+		for (int i = 0; i < size; i++)
+			m_index[i] = dos.readInt();
+
+	}
+
+	/**
+	 * Increases the capacity of this <tt>Graph</tt> instance, if necessary, to
+	 * ensure that it can hold at least the number of nodes specified by the
+	 * minimum capacity argument.
+	 *
+	 * @param minCapacity
+	 *            the desired minimum capacity.
+	 */
+	private void ensureCapacity(int minCapacity) {
+
+		if (minCapacity > m_index.length) {
+
+			int oldIndex[] = m_index;
+			float oldValue[] = m_value;
+
+			int newCapacity = (m_index.length * 3) / 2 + 1;
+
+			if (newCapacity < minCapacity)
+				newCapacity = minCapacity;
+
+			m_index = new int[newCapacity];
+			m_value = new float[newCapacity];
+
+			System.arraycopy(oldIndex, 0, m_index, 0, oldIndex.length);
+			System.arraycopy(oldValue, 0, m_value, 0, oldValue.length);
+
+		}
+	}
+
+	final public int size() {
+		return size;
+	}
+
+	final public boolean isEmpty() {
+		return size == 0;
+	}
+
+	@Override
+	final public void clear() {
+		size = 0;
+	}
+
+	final public int createFeature(int i, float v) {
+
+		ensureCapacity(size + 1);
+		m_index[size] = i;
+		m_value[size] = v;
+		size++;
+		return size - 1;
+	}
+	/*
+	 * final public int createFeature(int i) {
+	 * 
+	 * ensureCapacity(size+1); m_index[size] =i; size++; return size-1; }
+	 */
+
+	final public int getIndex(int i) {
+		return m_index[i];
+	}
+
+	public void setIndex(int p, int i) {
+		m_index[p] = i;
+	}
+
+	/**
+	 * Trims the capacity of this <tt>Graph</tt> instance to true size. An
+	 * application can use this operation to minimize the storage of an
+	 * <tt>Graph</tt> instance.
+	 */
+	public void trimToSize() {
+
+		if (size < m_index.length) {
+
+			int oldIndex[] = m_index;
+
+			m_index = new int[size];
+			System.arraycopy(oldIndex, 0, m_index, 0, size);
+
+		}
+
+	}
+
+	@Override
+	final public void add(int i) {
+		if (i >= 0) {
+			ensureCapacity(size + 1);
+			m_index[size] = i;
+			m_value[size] = 1.0f;
+			size++;
+		}
+	}
+
+	final public void add(int i, float f) {
+		if (i >= 0)
+			createFeature(i, f);
+	}
+
+	// fv1 - fv2
+	public FVR getDistVector(FVR fl2) {
+		return new FVR(this, fl2, true);
+	}
+
+	public double getScore(double[] parameters, boolean negate) {
+		double score = 0.0;
+
+		if (null != subfv1) {
+			score += subfv1.getScore(parameters, negate);
+
+			if (null != subfv2) {
+				if (negate)
+					score += subfv2.getScore(parameters, !negateSecondSubFV);
+				else
+					score += subfv2.getScore(parameters, negateSecondSubFV);
+
+			}
+		}
+
+		if (negate)
+			for (int i = 0; i < size; i++)
+				score -= parameters[m_index[i]];
+		else
+			for (int i = 0; i < size; i++)
+				score += parameters[m_index[i]];
+
+		return score;
+	}
+
+	final public float getScore(float[] parameters, boolean negate) {
+		float score = 0.0F;
+
+		if (null != subfv1) {
+			score += subfv1.getScore(parameters, negate);
+
+			if (null != subfv2) {
+				if (negate)
+					score += subfv2.getScore(parameters, !negateSecondSubFV);
+				else
+					score += subfv2.getScore(parameters, negateSecondSubFV);
+
+			}
+		}
+
+		// warning changed the value
+
+		if (negate)
+			for (int i = 0; i < size; i++)
+				score -= parameters[m_index[i]] * m_value[i];
+		else
+			for (int i = 0; i < size; i++)
+				score += parameters[m_index[i]] * m_value[i];
+
+		return score;
+	}
+
+	final public int getScore(short[] parameters, boolean negate) {
+		int score = 0;
+
+		if (null != subfv1) {
+			score += subfv1.getScore(parameters, negate);
+
+			if (null != subfv2) {
+				if (negate)
+					score += subfv2.getScore(parameters, !negateSecondSubFV);
+				else
+					score += subfv2.getScore(parameters, negateSecondSubFV);
+
+			}
+		}
+
+		// warning changed the value
+
+		if (negate)
+			for (int i = 0; i < size; i++)
+				score -= parameters[m_index[i]] * m_value[i];
+		else
+			for (int i = 0; i < size; i++)
+				score += parameters[m_index[i]] * m_value[i];
+
+		return score;
+	}
+
+	public final void update(float[] parameters, float[] total, double alpha_k, double upd, boolean negate) {
+
+		if (null != subfv1) {
+			subfv1.update(parameters, total, alpha_k, upd, negate);
+
+			if (null != subfv2 && negate) {
+				subfv2.update(parameters, total, alpha_k, upd, !negateSecondSubFV);
+			} else {
+				subfv2.update(parameters, total, alpha_k, upd, negateSecondSubFV);
+			}
+
+		}
+
+		if (negate) {
+			for (int i = 0; i < size; i++) {
+				parameters[getIndex(i)] -= alpha_k * m_value[i];
+				total[getIndex(i)] -= upd * alpha_k * m_value[i];
+			}
+		} else {
+			for (int i = 0; i < size; i++) {
+				parameters[getIndex(i)] += alpha_k * m_value[i];
+				total[getIndex(i)] += upd * alpha_k * m_value[i]; //
+			}
+		}
+
+	}
+
+	// private static IntIntHash hm1;
+	// private static IntIntHash hm2;
+
+	private static TIntDoubleHashMap hd1;
+	private static TIntDoubleHashMap hd2;
+
+	public int dotProduct(FVR fl2) {
+
+		if (hd1 == null)
+			hd1 = new TIntDoubleHashMap(size(), 0.4F);
+		else
+			hd1.clear();
+
+		addFeaturesToMap(hd1);
+
+		if (hd2 == null)
+			hd2 = new TIntDoubleHashMap(fl2.size, 0.4F);
+		else
+			hd2.clear();
+
+		fl2.addFeaturesToMap(hd2);
+
+		int[] keys = hd1.keys();
+
+		int result = 0;
+		for (int key : keys)
+			result += hd1.get(key) * hd2.get(key);
+
+		return result;
+
+	}
+
+	private void addFeaturesToMap(TIntDoubleHashMap map) {
+
+		if (null != subfv1) {
+			subfv1.addFeaturesToMap(map);
+
+			if (null != subfv2) {
+				subfv2.addFeaturesToMap(map, negateSecondSubFV);
+
+			}
+		}
+
+		for (int i = 0; i < size; i++)
+			if (!map.adjustValue(getIndex(i), m_value[i]))
+				map.put(getIndex(i), m_value[i]);
+
+	}
+
+	private void addFeaturesToMap(TIntDoubleHashMap map, boolean negate) {
+
+		if (null != subfv1) {
+			subfv1.addFeaturesToMap(map, negate);
+
+			if (null != subfv2) {
+				if (negate)
+					subfv2.addFeaturesToMap(map, !negateSecondSubFV);
+				else
+					subfv2.addFeaturesToMap(map, negateSecondSubFV);
+
+			}
+		}
+
+		if (negate) {
+			for (int i = 0; i < size; i++)
+				if (!map.adjustValue(getIndex(i), -m_value[i]))
+					map.put(getIndex(i), -m_value[i]);
+		} else {
+			for (int i = 0; i < size; i++)
+				if (!map.adjustValue(getIndex(i), m_value[i]))
+					map.put(getIndex(i), m_value[i]);
+		}
+
+	}
+
+	@Override
+	public final String toString() {
+		StringBuilder sb = new StringBuilder();
+		toString(sb);
+		return sb.toString();
+	}
+
+	private final void toString(StringBuilder sb) {
+		if (null != subfv1) {
+			subfv1.toString(sb);
+
+			if (null != subfv2)
+				subfv2.toString(sb);
+		}
+		for (int i = 0; i < size; i++)
+			sb.append(getIndex(i)).append('=').append(m_value[i]).append(' ');
+	}
+
+	public void writeKeys(DataOutputStream dos) throws IOException {
+
+		// int keys[] = keys();
+		// dos.writeInt(keys.length);
+		// for(int i=0;i<keys.length;i++) {
+		// dos.writeInt(keys[i]);
+		// }
+
+		// int keys[] = keys();
+		dos.writeInt(size);
+		for (int i = 0; i < size; i++) {
+			dos.writeInt(m_index[i]);
+		}
+
+	}
+
+	/*
+	 * 
+	 * final public static FVR cat(FVR f1,FVR f2) { if (f1==null) return f2; if
+	 * (f2==null) return f1; return new FVR(f1, f2); }
+	 * 
+	 * final public static FVR cat(FVR f1,FVR f2, FVR f3) { return FVR.cat(f1,
+	 * FVR.cat(f2, f3)); } final public static FVR cat(FVR f1,FVR f2, FVR f3,
+	 * FVR f4) { return FVR.cat(f1, FVR.cat(f2, FVR.cat(f3, f4))); }
+	 */
+
+	final public static FVR read(DataInputStream dis) throws IOException {
+		int cap = dis.readInt();
+		if (cap == 0)
+			return null;
+		return new FVR(dis, cap);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.IFV#getScore()
+	 */
+	@Override
+	public double getScore() {
+		System.out.println("not implemented");
+		new Exception().printStackTrace();
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.IFV#clone()
+	 */
+	@Override
+	public IFV clone() {
+		FVR f = new FVR(this.size);
+		for (int i = 0; i < this.size; i++) {
+			f.m_index[i] = m_index[i];
+			f.m_value[i] = m_value[i];
+		}
+		f.size = this.size;
+		return f;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/IEncoder.java b/dependencyParser/experimental/mate-tools/src/is2/data/IEncoder.java
new file mode 100755
index 0000000..2a784af
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/IEncoder.java
@@ -0,0 +1,27 @@
+/**
+ *
+ */
+package is2.data;
+
+/**
+ * @author Bernd Bohnet, 20.09.2009
+ *
+ *
+ */
+public interface IEncoder {
+	public int getValue(String a, String v);
+
+	default public void print() {
+		throw new UnsupportedOperationException();
+	};
+	/**
+	 * @param spath
+	 * @param substring
+	 */
+	// public int register(String spath, String substring);
+
+	/**
+	 * @return
+	 */
+	// public HashMap<String,Integer> getFeatureCounter();
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/IEncoderPlus.java b/dependencyParser/experimental/mate-tools/src/is2/data/IEncoderPlus.java
new file mode 100644
index 0000000..b033381
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/IEncoderPlus.java
@@ -0,0 +1,27 @@
+/**
+ *
+ */
+package is2.data;
+
+import java.util.HashMap;
+
+/**
+ * @author Bernd Bohnet, 20.09.2009
+ *
+ *
+ */
+public interface IEncoderPlus extends IEncoder {
+
+	final public static String NONE = "<None>";
+
+	/**
+	 * @param spath
+	 * @param substring
+	 */
+	public int register(String spath, String substring);
+
+	/**
+	 * @return
+	 */
+	public HashMap<String, Integer> getFeatureCounter();
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/IFV.java b/dependencyParser/experimental/mate-tools/src/is2/data/IFV.java
new file mode 100755
index 0000000..010f411
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/IFV.java
@@ -0,0 +1,29 @@
+package is2.data;
+
+public abstract class IFV {
+
+	// public double score=0;
+
+	public abstract void add(int i);
+
+	public abstract double getScore();
+
+	public abstract void clear();
+
+	@Override
+	public abstract IFV clone();
+
+	/**
+	 * @param gvs
+	 * @param li
+	 */
+	public void add(long[] gvs, Long2IntInterface li, int l) {
+		for (long gv : gvs) {
+			if (gv == Integer.MIN_VALUE)
+				break;
+			if (gv > 0)
+				add(li.l2i(gv + l));
+		}
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/Instances.java b/dependencyParser/experimental/mate-tools/src/is2/data/Instances.java
new file mode 100755
index 0000000..20493a9
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/Instances.java
@@ -0,0 +1,408 @@
+package is2.data;
+
+import java.util.Arrays;
+import java.util.BitSet;
+
+public class Instances {
+
+	public IEncoder m_encoder;
+
+	protected int size = 0;
+
+	protected int capacity;
+
+	public int[][] forms;
+
+	public int[][] plemmas;
+	public int[][] glemmas;
+
+	public short[][] heads;
+	public short[][] pheads;
+
+	public short[][] labels;
+	public short[][] plabels;
+
+	public short[][] gpos;
+	public short[][] pposs;
+
+	public short[][][] feats;
+
+	public int[][] predicat;
+
+	public short[][] predicateId;
+
+	public short[][] semposition;
+
+	public short[][][] arg;
+
+	public short[][][] argposition;
+
+	public BitSet[] pfill;
+
+	public short[][] gfeats;
+	public short[][] pfeats;
+
+	public Instances() {
+	}
+
+	public static int m_unkown = 0;
+	public static int m_count = 0;
+
+	public static boolean m_report;
+	public static boolean m_found = false;
+
+	final public void setForm(int i, int p, String x) {
+
+		forms[i][p] = m_encoder.getValue(PipeGen.WORD, x);
+		if (forms[i][p] == -1) {
+			if (m_report)
+				System.out.println("unkwrd " + x);
+			m_unkown++;
+			m_found = true;
+		}
+		m_count++;
+	}
+
+	final public void setRel(int i, int p, String x) {
+		labels[i][p] = (short) m_encoder.getValue(PipeGen.REL, x);
+
+	}
+
+	final public void setHead(int i, int c, int p) {
+		heads[i][c] = (short) p;
+	}
+
+	final public int size() {
+		return size;
+	}
+
+	public void setSize(int n) {
+		size = n;
+	}
+
+	public void init(int ic, IEncoder mf) {
+		init(ic, mf, -1);
+	}
+
+	public void init(int ic, IEncoder mf, int version) {
+		capacity = ic;
+		m_encoder = mf;
+
+		forms = new int[capacity][];
+		plemmas = new int[capacity][];
+		glemmas = new int[capacity][];
+		pposs = new short[capacity][];
+
+		gpos = new short[capacity][];
+		labels = new short[capacity][];
+		heads = new short[capacity][];
+		plabels = new short[capacity][];
+		pheads = new short[capacity][];
+		feats = new short[capacity][][];
+		gfeats = new short[capacity][];
+		pfeats = new short[capacity][];
+
+		predicat = new int[ic][];
+		predicateId = new short[ic][];
+		semposition = new short[ic][];
+		arg = new short[ic][][];
+		argposition = new short[ic][][];
+
+		pfill = new BitSet[ic];
+	}
+
+	public int length(int i) {
+		return forms[i].length;
+	}
+
+	public int createInstance09(int length) {
+
+		forms[size] = new int[length];
+		plemmas[size] = new int[length];
+		glemmas[size] = new int[length];
+
+		pposs[size] = new short[length];
+
+		gpos[size] = new short[length];
+
+		labels[size] = new short[length];
+		heads[size] = new short[length];
+
+		this.pfill[size] = new BitSet(length);
+
+		feats[size] = new short[length][];
+		gfeats[size] = new short[length];
+		pfeats[size] = new short[length];
+		plabels[size] = new short[length];
+		pheads[size] = new short[length];
+
+		size++;
+
+		return size - 1;
+
+	}
+
+	/*
+	 * public final void setPPos(int i, int p, String x) { ppos[i][p] =
+	 * (short)m_encoder.getValue(PipeGen.POS,x);
+	 * 
+	 * }
+	 */
+
+	public final void setPPoss(int i, int p, String x) {
+		pposs[i][p] = (short) m_encoder.getValue(PipeGen.POS, x);
+
+	}
+
+	public final void setGPos(int i, int p, String x) {
+		gpos[i][p] = (short) m_encoder.getValue(PipeGen.POS, x);
+	}
+
+	public void setLemma(int i, int p, String x) {
+		plemmas[i][p] = m_encoder.getValue(PipeGen.WORD, x);
+	}
+
+	public void setGLemma(int i, int p, String x) {
+		glemmas[i][p] = m_encoder.getValue(PipeGen.WORD, x);
+	}
+
+	public void setFeats(int i, int p, String[] fts) {
+		if (fts == null) {
+			feats[i][p] = null;
+			return;
+		}
+		feats[i][p] = new short[fts.length];
+
+		for (int k = 0; k < fts.length; k++) {
+			feats[i][p][k] = (short) m_encoder.getValue(PipeGen.FEAT, fts[k]);
+		}
+
+	}
+
+	public void setFeature(int i, int p, String feature) {
+		if (feature == null)
+			return;
+		this.gfeats[i][p] = (short) m_encoder.getValue(PipeGen.FFEATS, feature);
+		/*
+		 * if (gfeats[i][p]==-1) { System.out.println("+"+feature); new
+		 * Exception().printStackTrace(); System.exit(0); }
+		 */
+	}
+
+	public void setPFeature(int i, int p, String feature) {
+		if (feature == null)
+			return;
+		this.pfeats[i][p] = (short) m_encoder.getValue(PipeGen.FFEATS, feature);
+	}
+
+	public int getWValue(String v) {
+		return m_encoder.getValue(PipeGen.WORD, v);
+	}
+
+	public final void setPRel(int i, int p, String x) {
+		plabels[i][p] = (short) m_encoder.getValue(PipeGen.REL, x);
+	}
+
+	public final void setPHead(int i, int c, int p) {
+		pheads[i][c] = (short) p;
+	}
+
+	/*
+	 * public String toString(int c) { StringBuffer s = new StringBuffer();
+	 * for(int i=0;i<length(c);i++) {
+	 * s.append(i).append('\t').append(forms[c][i]).append("\t_\t").append(ppos[
+	 * c][i]).append('\t'). append('\t').append(heads[c][i]).append('\n'); }
+	 * 
+	 * return s.toString(); }
+	 */
+
+	/*
+	 * public void setPos(int i, int p, String x) { ppos[i][p] =
+	 * (short)m_encoder.getValue(PipeGen.POS,x);
+	 * 
+	 * }
+	 */
+
+	/**
+	 * Create the semantic representation
+	 * 
+	 * @param inst
+	 * @param it
+	 * @return
+	 */
+	public boolean createSem(int inst, SentenceData09 it) {
+
+		boolean error = false;
+
+		if (it.sem == null)
+			return error;
+
+		predicat[inst] = new int[it.sem.length];
+		semposition[inst] = new short[it.sem.length];
+		predicateId[inst] = new short[it.sem.length];
+
+		if (it.sem != null) {
+			arg[inst] = new short[it.sem.length][];
+			argposition[inst] = new short[it.sem.length][];
+		}
+		if (it.sem == null)
+			return error;
+
+		// init sems
+
+		for (int i = 0; i < it.sem.length; i++) {
+
+			String pred;
+			short predSense = 0;
+			if (it.sem[i].indexOf('.') > 0) {
+				pred = it.sem[i].substring(0, it.sem[i].indexOf('.'));
+				predSense = (short) m_encoder.getValue(PipeGen.SENSE,
+						it.sem[i].substring(it.sem[i].indexOf('.') + 1, it.sem[i].length()));
+				// Short.parseShort(it.sem[i].substring(it.sem[i].indexOf('.')+1,
+				// it.sem[i].length()));
+			} else {
+				pred = it.sem[i];
+				predSense = (short) m_encoder.getValue(PipeGen.SENSE, "");
+			}
+
+			predicat[inst][i] = m_encoder.getValue(PipeGen.PRED, pred);
+			predicateId[inst][i] = predSense;
+
+			semposition[inst][i] = (short) it.semposition[i];
+
+			// this can happen too when no arguments have values
+			if (it.arg == null) {
+				// DB.println("error arg == null "+i+" sem"+it.sem[i]+" inst
+				// number "+inst);
+				// error =true;
+				continue;
+			}
+
+			// last pred(s) might have no argument
+			if (it.arg.length <= i) {
+				// DB.println("error in instance "+inst+" argument list and
+				// number of predicates different arg lists: "+it.arg.length+"
+				// preds "+sem.length);
+				// error =true;
+				continue;
+			}
+
+			// this happens from time to time, if the predicate has no arguments
+			if (it.arg[i] == null) {
+				// DB.println("error no args for pred "+i+" "+it.sem[i]+" length
+				// "+it.ppos.length);
+				// error =true;
+				continue;
+			}
+
+			int argCount = it.arg[i].length;
+			arg[inst][i] = new short[it.arg[i].length];
+			argposition[inst][i] = new short[it.arg[i].length];
+
+			// add the content of the argument
+			for (int a = 0; a < argCount; a++) {
+				arg[inst][i][a] = (short) m_encoder.getValue(PipeGen.ARG, it.arg[i][a]);
+				argposition[inst][i][a] = (short) it.argposition[i][a];
+
+				// System.out.print(" #"+a+" pos: "+argposition[inst][i][a]+"
+				// "+it.arg[i][a]+" ");
+			}
+			// System.out.println("");
+
+		}
+
+		return error;
+
+	}
+
+	public int predCount(int n) {
+		return pfill[n].cardinality();
+	}
+
+	public void print2DIntArray(int[][] a, String name) {
+		for(int i = 0; i < a.length; ++i)
+			if(a[i] != null)
+				for(int j = 0; j < a[i].length; ++j)
+					System.out.println(name + "[" + i + "][" + j + "] = " + a[i][j]);
+	}
+	
+	public void print2DShortArray(short[][] a, String name) {
+		for(int i = 0; i < a.length; ++i)
+			if(a[i] != null)
+				for(int j = 0; j < a[i].length; ++j)
+					System.out.println(name + "[" + i + "][" + j + "] = " + a[i][j]);
+	}
+	
+	public void print3DShortArray(short[][][] a, String name) {
+		for(int i = 0; i < a.length; ++i)
+			if(a[i] != null)
+				for(int j = 0; j < a[i].length; ++j)
+					if(a[i][j] != null)
+						System.out.println(name + "[" + i + "][" + j + "] = " + Arrays.toString(a[i][j]));
+	}
+	
+	public void print() {
+		System.out.println("-----m_encoder-----");
+		m_encoder.print();
+		System.out.println("-------------------");
+		
+		System.out.println("size = " + size);
+		System.out.println("capacity = " + capacity);
+		
+		print2DIntArray(forms, "forms");
+		print2DIntArray(plemmas, "plemmas");
+		print2DIntArray(glemmas, "glemmas");
+		print2DShortArray(heads, "heads");
+		print2DShortArray(pheads, "pheads");
+		print2DShortArray(labels, "labels");
+		print2DShortArray(plabels, "plabels");
+		print2DShortArray(gpos, "gpos");
+		print2DShortArray(pposs, "pposs");
+		print3DShortArray(feats, "feats");
+		print2DIntArray(predicat, "predicat");
+		print2DShortArray(predicateId, "predicateId");
+		print2DShortArray(semposition, "semposition");
+		print3DShortArray(arg, "arg");
+		print3DShortArray(argposition, "argposition");
+		for(int i = 0; i < pfill.length; ++i)
+			System.out.println("pfill [" + i + "] = " + pfill[i]);
+		print2DShortArray(gfeats, "gfeats");
+		print2DShortArray(pfeats, "pfeats");
+		
+		System.out.println("m_unkown = " + m_unkown);
+		System.out.println("m_count = " + m_count);
+		System.out.println("m_report = " + m_report);
+		System.out.println("m_found = " + m_found);
+	}
+	
+	/**
+	 * @param pscnt
+	 * @return
+	 */
+	public String print(int pscnt) {
+		StringBuilder s = new StringBuilder();
+
+		for (int i = 0; i < this.length(pscnt); i++) {
+			s.append(i + "\t" + forms[pscnt][i] + "\t" + this.glemmas[pscnt][i] + "\t" + this.plemmas[pscnt][i] + "\t"
+					+ this.gpos[pscnt][i] + "\t" + this.pposs[pscnt][i] + "\t" + this.gfeats[pscnt][i] + "\t"
+					+ (this.feats[pscnt][i] != null && this.feats[pscnt][i].length > 0 ? this.feats[pscnt][i][0] : null)
+					+ "\t l " + (labels[pscnt] != null && labels[pscnt].length > i ? labels[pscnt][i] : null) + "\t"
+					+ "\t" + heads[pscnt][i] + "\t"
+					+ (plabels[pscnt] != null && plabels[pscnt].length > i ? plabels[pscnt][i] : null) + "\t"
+					+ this.predicat[pscnt][i] + "\n");
+		}
+		return s.toString();
+	}
+
+	public String print1(int pscnt) {
+		StringBuilder s = new StringBuilder();
+
+		for (int i = 0; i < this.length(pscnt); i++) {
+			s.append(i + "\t" + forms[pscnt][i] + "\t" + "\t" + this.plemmas[pscnt][i] + "\t" + +this.pposs[pscnt][i]
+					+ "\t l " + (labels[pscnt] != null && labels[pscnt].length > i ? labels[pscnt][i] : null) + "\t"
+					+ "\t" + heads[pscnt][i] + "\t"
+					+ (plabels[pscnt] != null && plabels[pscnt].length > i ? plabels[pscnt][i] : null) + "\n");
+		}
+		return s.toString();
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/InstancesTagger.java b/dependencyParser/experimental/mate-tools/src/is2/data/InstancesTagger.java
new file mode 100644
index 0000000..4cf894a
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/InstancesTagger.java
@@ -0,0 +1,95 @@
+/**
+ *
+ */
+package is2.data;
+
+/**
+ * @author Dr. Bernd Bohnet, 06.11.2010
+ *
+ *
+ */
+public class InstancesTagger extends Instances {
+
+	public short[][][] chars;
+	public int[][] formlc;
+
+	@Override
+	public void init(int ic, IEncoder mf) {
+		super.init(ic, mf, 9);
+		chars = new short[capacity][][];
+		formlc = new int[capacity][];
+		// System.out.println("create chars "+capacity );
+	}
+
+	public void fillChars(SentenceData09 instance, int i, int cend) {
+		chars[i] = new short[instance.length()][13];
+		formlc[i] = new int[instance.length()];
+
+		for (int k = 0; k < instance.length(); k++) {
+			chars[i][k][0] = (short) (instance.forms[k].length() > 0
+					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(instance.forms[k].charAt(0))) : cend);
+			chars[i][k][1] = (short) (instance.forms[k].length() > 1
+					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(instance.forms[k].charAt(1))) : cend);// m_encoder.getValue(PipeGen.CHAR,
+																											// END);
+			chars[i][k][2] = (short) (instance.forms[k].length() > 2
+					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(instance.forms[k].charAt(2))) : cend);
+			chars[i][k][3] = (short) (instance.forms[k].length() > 3
+					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(instance.forms[k].charAt(3))) : cend);
+			chars[i][k][4] = (short) (instance.forms[k].length() > 4
+					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(instance.forms[k].charAt(4))) : cend);
+			chars[i][k][5] = (short) (instance.forms[k].length() > 5
+					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(instance.forms[k].charAt(5))) : cend);
+
+			chars[i][k][6] = (short) (instance.forms[k].length() > 0 ? m_encoder.getValue(PipeGen.CHAR,
+					String.valueOf(instance.forms[k].charAt(instance.forms[k].length() - 1))) : cend);
+			chars[i][k][7] = (short) (instance.forms[k].length() > 1 ? m_encoder.getValue(PipeGen.CHAR,
+					String.valueOf(instance.forms[k].charAt(instance.forms[k].length() - 2))) : cend);// m_encoder.getValue(PipeGen.CHAR,
+																										// END);
+			chars[i][k][8] = (short) (instance.forms[k].length() > 2 ? m_encoder.getValue(PipeGen.CHAR,
+					String.valueOf(instance.forms[k].charAt(instance.forms[k].length() - 3))) : cend);
+			chars[i][k][9] = (short) (instance.forms[k].length() > 3 ? m_encoder.getValue(PipeGen.CHAR,
+					String.valueOf(instance.forms[k].charAt(instance.forms[k].length() - 4))) : cend);
+			chars[i][k][10] = (short) (instance.forms[k].length() > 4 ? m_encoder.getValue(PipeGen.CHAR,
+					String.valueOf(instance.forms[k].charAt(instance.forms[k].length() - 5))) : cend);
+			chars[i][k][11] = (short) instance.forms[k].length();
+			chars[i][k][12] = (short) (instance.forms[k].length() > 0
+					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(instance.forms[k].charAt(0))) : cend);
+			formlc[i][k] = m_encoder.getValue(PipeGen.WORD, instance.forms[k].toLowerCase());
+		}
+	}
+
+	public void fillChars(SentenceData09 instance, int i, String[] what, int cend) {
+		chars[i] = new short[instance.length()][13];
+		formlc[i] = new int[instance.length()];
+
+		for (int k = 0; k < instance.length(); k++) {
+			chars[i][k][0] = (short) m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(0)));
+			chars[i][k][1] = (short) (what[k].length() > 1
+					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(1))) : cend);// m_encoder.getValue(PipeGen.CHAR,
+																									// END);
+			chars[i][k][2] = (short) (what[k].length() > 2
+					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(2))) : cend);
+			chars[i][k][3] = (short) (what[k].length() > 3
+					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(3))) : cend);
+			chars[i][k][4] = (short) (what[k].length() > 4
+					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(4))) : cend);
+			chars[i][k][5] = (short) (what[k].length() > 5
+					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(5))) : cend);
+
+			chars[i][k][6] = (short) (m_encoder.getValue(PipeGen.CHAR,
+					String.valueOf(what[k].charAt(what[k].length() - 1))));
+			chars[i][k][7] = (short) (what[k].length() > 1
+					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(what[k].length() - 2))) : cend);// m_encoder.getValue(PipeGen.CHAR,
+																														// END);
+			chars[i][k][8] = (short) (what[k].length() > 2
+					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(what[k].length() - 3))) : cend);
+			chars[i][k][9] = (short) (what[k].length() > 3
+					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(what[k].length() - 4))) : cend);
+			chars[i][k][10] = (short) (what[k].length() > 4
+					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(what[k].length() - 5))) : cend);
+			chars[i][k][11] = (short) what[k].length();
+			formlc[i][k] = m_encoder.getValue(PipeGen.WORD, what[k].toLowerCase());
+		}
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/IntIntHash.java b/dependencyParser/experimental/mate-tools/src/is2/data/IntIntHash.java
new file mode 100644
index 0000000..1019507
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/IntIntHash.java
@@ -0,0 +1,255 @@
+package is2.data;
+
+import java.util.Arrays;
+
+final public class IntIntHash {
+
+	protected int _size;
+	protected int _free;
+	protected float _loadFactor;
+	public int _maxSize;
+	protected int _autoCompactRemovesRemaining;
+	protected float _autoCompactionFactor;
+	public int _set[];
+	private int _values[];
+
+	public IntIntHash() {
+		this(102877, 0.5F);
+	}
+
+	public IntIntHash(int initialCapacity, float loadFactor) {
+		_loadFactor = loadFactor;
+		_autoCompactionFactor = loadFactor;
+		setUp((int) Math.ceil(initialCapacity / loadFactor));
+	}
+
+	public int size() {
+		return _size;
+	}
+
+	public void ensureCapacity(int desiredCapacity) {
+
+		if (desiredCapacity > _maxSize - size()) {
+			rehash(PrimeFinder.nextPrime((int) Math.ceil((desiredCapacity + size()) / _loadFactor) + 1));
+			computeMaxSize(capacity());
+		}
+	}
+
+	public void compact() {
+		rehash(PrimeFinder.nextPrime((int) Math.ceil(size() / _loadFactor) + 1));
+		computeMaxSize(capacity());
+		if (_autoCompactionFactor != 0.0F)
+			computeNextAutoCompactionAmount(size());
+	}
+
+	public void setAutoCompactionFactor(float factor) {
+		if (factor < 0.0F) {
+			throw new IllegalArgumentException(
+					(new StringBuilder()).append("Factor must be >= 0: ").append(factor).toString());
+		} else {
+			_autoCompactionFactor = factor;
+			return;
+		}
+	}
+
+	public float getAutoCompactionFactor() {
+		return _autoCompactionFactor;
+	}
+
+	private void computeMaxSize(int capacity) {
+		_maxSize = Math.min(capacity - 1, (int) Math.floor(capacity * _loadFactor));
+		_free = capacity - _size;
+	}
+
+	private void computeNextAutoCompactionAmount(int size) {
+		if (_autoCompactionFactor != 0.0F)
+			_autoCompactRemovesRemaining = Math.round(size * _autoCompactionFactor);
+	}
+
+	protected final void postInsertHook(boolean usedFreeSlot) {
+		if (usedFreeSlot)
+			_free--;
+		if (++_size > _maxSize || _free == 0) {
+			int newCapacity = _size <= _maxSize ? capacity() : PrimeFinder.nextPrime(capacity() << 1);
+			rehash(newCapacity);
+			computeMaxSize(capacity());
+		}
+	}
+
+	protected int calculateGrownCapacity() {
+		return capacity() << 1;
+	}
+
+	protected int capacity() {
+		return _values.length;
+	}
+
+	public boolean contains(int val) {
+		return index(val) >= 0;
+	}
+
+	private int index(int v) {
+
+		int length = _set.length;
+		int index = Math.abs((computeHashCode(v) /* & 2147483647 */ ) % length);
+
+		while (true) {
+			// first
+			long l = _set[index];
+			if (l == 0) {
+				// good++;
+				return -1;
+			}
+			// second
+			if (l == v) {
+				return index;
+			}
+			if (--index < 0)
+				index += length;
+		}
+		// return -1;
+	}
+
+	protected int insertionIndex(long val) {
+		int length = _set.length;
+		int index = Math.abs((computeHashCode(val) /* & 2147483647 */ ) % length);
+		while (true) {
+			if (_set[index] == 0)
+				return index;
+			if (_set[index] == val)
+				return -index - 1;
+			if (--index < 0)
+				index += length;
+
+		}
+	}
+
+	public int computeHashCode(long value) {
+		return (int) ((value ^ (value & 0xffffffff00000000L) >>> 32) * 31);// 0x811c9dc5
+																			// ^
+																			// //
+																			// 29
+	}
+
+	protected int setUp(int initialCapacity) {
+		int capacity = PrimeFinder.nextPrime(initialCapacity);
+		computeMaxSize(capacity);
+		computeNextAutoCompactionAmount(initialCapacity);
+		_set = new int[capacity];
+		_values = new int[capacity];
+		return capacity;
+	}
+
+	public void put(int key, int value) {
+		int index = insertionIndex(key);
+		doPut(key, value, index);
+	}
+
+	private void doPut(int key, int value, int index) {
+		boolean isNewMapping = true;
+		if (index < 0) {
+			index = -index - 1;
+			isNewMapping = false;
+		}
+		_set[index] = key;
+		_values[index] = value;
+		if (isNewMapping)
+			postInsertHook(true);
+
+	}
+
+	protected void rehash(int newCapacity) {
+		int oldCapacity = _set.length;
+		int oldKeys[] = _set;
+		int oldVals[] = _values;
+		_set = new int[newCapacity];
+		_values = new int[newCapacity];
+		int i = oldCapacity;
+
+		while (true) {
+			if (i-- <= 0)
+				break;
+			if (oldVals[i] != 0) {
+				int o = oldKeys[i];
+				int index = insertionIndex(o);
+				_set[index] = o;
+				_values[index] = oldVals[i];
+			}
+		}
+	}
+
+	int index = 0;
+
+	public int get(int key) {
+		int index = index(key);
+		return index >= 0 ? _values[index] : 0;
+	}
+
+	public void clear() {
+		_size = 0;
+		_free = capacity();
+		Arrays.fill(_set, 0, _set.length, 0);
+		// Arrays.fill(_values, 0, _values.length, 0);
+	}
+
+	public int remove(int key) {
+		int prev = 0;
+		int index = index(key);
+		if (index >= 0) {
+			prev = _values[index];
+			_values[index] = 0;
+			_set[index] = 0;
+			_size--;
+			if (_autoCompactionFactor != 0.0F) {
+				_autoCompactRemovesRemaining--;
+				if (_autoCompactRemovesRemaining <= 0)
+					compact();
+			}
+		}
+		return prev;
+	}
+
+	public int[] getValues() {
+		int vals[] = new int[size()];
+		int v[] = _values;
+		int i = v.length;
+		int j = 0;
+		do {
+			if (i-- <= 0)
+				break;
+			if (v[i] != 0)
+				vals[j++] = v[i];
+		} while (true);
+		return vals;
+	}
+
+	public int[] keys() {
+		int keys[] = new int[size()];
+		int k[] = _set;
+		// byte states[] = _states;
+		int i = k.length;
+		int j = 0;
+		do {
+			if (i-- <= 0)
+				break;
+			if (k[i] != 0)
+				keys[j++] = k[i];
+		} while (true);
+		return keys;
+	}
+
+	/**
+	 * @param index2
+	 * @param i
+	 * @return
+	 */
+	public boolean adjustValue(int key, int i) {
+		int index = index(key);
+		if (index >= 0) {
+			_values[index] += i;
+			return true;
+		}
+		return false;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/Long2Int.java b/dependencyParser/experimental/mate-tools/src/is2/data/Long2Int.java
new file mode 100755
index 0000000..1a4a3c4
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/Long2Int.java
@@ -0,0 +1,112 @@
+package is2.data;
+
+/**
+ * @author Bernd Bohnet, 01.09.2009
+ *
+ *         Maps for the Hash Kernel the long values to the int values.
+ */
+final public class Long2Int implements Long2IntInterface {
+
+	public Long2Int() {
+		size = 115911564;
+	}
+
+	public Long2Int(int s) {
+		size = s;
+	}
+
+	public static void main(String args[]) {
+
+		long l = 123456;
+		long l2 = 1010119;
+		System.out.println("l \t" + l + "\t" + printBits(l));
+
+		long x = 100000000;
+		System.out.println("1m\t" + l2 + "\t" + printBits(x) + "\t" + x);
+
+		System.out.println("l2\t" + l2 + "\t" + printBits(l));
+
+		System.out.println("l2*l\t" + l2 + "\t" + printBits(l * l2) + " \t " + l * l2);
+
+		System.out.println("l2*l*l2\t" + l2 + "\t" + printBits(l * l2 * l2) + " \t " + l * l2 * l2);
+
+		System.out.println("l2*l*l2\t" + l2 + "\t" + printBits(l * l2 * l2 * l2) + " \t " + l * l2 * l2 * l2);
+
+		System.out.println(
+				"l2*l*l2\t" + l2 + "\t" + printBits((l * l2) % 0xfffff) + " \t " + l * l2 * l2 * l2 + "\t " + 0xfffff);
+		System.out.println("l2*l*l2\t" + l2 + "\t" + printBits((l * l2) & 0xfffffff) + " \t " + l * l2 * l2 * l2);
+	}
+
+	/** Integer counter for long2int */
+	final private int size; // 0x03ffffff //0x07ffffff
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.sp09k9992.Long2IntIterface#size()
+	 */
+	@Override
+	public int size() {
+		return size;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.sp09k9992.Long2IntIterface#start() has no meaning for this
+	 * implementation
+	 */
+	final public void start() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.sp09k9992.Long2IntIterface#l2i(long)
+	 */
+	@Override
+	final public int l2i(long l) {
+		if (l < 0)
+			return -1;
+
+		// this works well LAS 88.138
+		// int r= (int)(( l ^ (l&0xffffffff00000000L) >>> 29 ));//0x811c9dc5 ^
+		// // 29
+		// return Math.abs(r % size);
+		// this works a bit better and good with 0x03ffffff
+		//
+		/*
+		 * long r= l;//26 l = (l>>12)&0xfffffffffffff000L; r ^= l;//38 l =
+		 * (l>>11)&0xffffffffffffc000L; r ^= l;//49 l = (l>>9)&
+		 * 0xffffffffffff0000L; //53 r ^= l;//58 l = (l>>7)&0xfffffffffffc0000L;
+		 * //62 r ^=l;//65 int x = (int)r; x = x % size; // return x >= 0 ? x :
+		 * -x ;// Math.abs(r % size);
+		 * 
+		 */
+		// 26 0x03ffffff
+		// together with 0x07ffffff 27 88.372
+		long r = l;// 27
+		l = (l >> 13) & 0xffffffffffffe000L;
+		r ^= l; // 40
+		l = (l >> 11) & 0xffffffffffff0000L;
+		r ^= l; // 51
+		l = (l >> 9) & 0xfffffffffffc0000L; // 53
+		r ^= l; // 60
+		l = (l >> 7) & 0xfffffffffff00000L; // 62
+		r ^= l; // 67
+		int x = ((int) r) % size;
+
+		return x >= 0 ? x : -x;
+	}
+
+	static public StringBuffer printBits(long out) {
+		StringBuffer s = new StringBuffer();
+
+		for (int k = 0; k < 65; k++) {
+			s.append((out & 1) == 1 ? "1" : "0");
+			out >>= 1;
+		}
+		s.reverse();
+		return s;
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/Long2IntExact.java b/dependencyParser/experimental/mate-tools/src/is2/data/Long2IntExact.java
new file mode 100644
index 0000000..debf455
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/Long2IntExact.java
@@ -0,0 +1,65 @@
+package is2.data;
+
+/**
+ * @author Bernd Bohnet, 01.09.2009
+ *
+ *         Maps for the Hash Kernel the long values to the int values.
+ */
+final public class Long2IntExact implements Long2IntInterface {
+
+	static gnu.trove.TLongIntHashMap mapt = new gnu.trove.TLongIntHashMap();
+
+	static int cnt = 0;
+
+	public Long2IntExact() {
+		size = 115911564;
+	}
+
+	public Long2IntExact(int s) {
+		size = s;
+	}
+
+	/** Integer counter for long2int */
+	final private int size; // 0x03ffffff //0x07ffffff
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.sp09k9992.Long2IntIterface#size()
+	 */
+	@Override
+	public int size() {
+		return size;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.sp09k9992.Long2IntIterface#start() has no meaning for this
+	 * implementation
+	 */
+	final public void start() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.sp09k9992.Long2IntIterface#l2i(long)
+	 */
+	@Override
+	final public int l2i(long l) {
+		if (l < 0)
+			return -1;
+
+		int i = mapt.get(l);
+		if (i != 0)
+			return i;
+
+		if (i == 0 && cnt < size - 1) {
+			cnt++;
+			mapt.put(l, cnt);
+			return cnt;
+		}
+		return -1;
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/Long2IntInterface.java b/dependencyParser/experimental/mate-tools/src/is2/data/Long2IntInterface.java
new file mode 100755
index 0000000..8401c1f
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/Long2IntInterface.java
@@ -0,0 +1,16 @@
+package is2.data;
+
+public interface Long2IntInterface {
+
+	public abstract int size();
+
+	/**
+	 * Maps a long to a integer value. This is very useful to save memory for
+	 * sparse data long values
+	 * 
+	 * @param l
+	 * @return the integer
+	 */
+	public abstract int l2i(long l);
+
+}
\ No newline at end of file
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/Long2IntQuick.java b/dependencyParser/experimental/mate-tools/src/is2/data/Long2IntQuick.java
new file mode 100644
index 0000000..9956173
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/Long2IntQuick.java
@@ -0,0 +1,51 @@
+package is2.data;
+
+/**
+ * @author Bernd Bohnet, 01.09.2009
+ *
+ *         Maps for the Hash Kernel the long values to the int values.
+ */
+final public class Long2IntQuick implements Long2IntInterface {
+
+	/** Integer counter for long2int */
+	final private int size;
+
+	public Long2IntQuick() {
+		size = 0x07ffffff;
+	}
+
+	public Long2IntQuick(int s) {
+		size = s;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.sp09k9992.Long2IntIterface#size()
+	 */
+	@Override
+	public int size() {
+		return size;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.sp09k9992.Long2IntIterface#start() has no meaning for this
+	 * implementation
+	 */
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.sp09k9992.Long2IntIterface#l2i(long)
+	 */
+	@Override
+	final public int l2i(long r) {
+		long l = (r >> 16) & 0xfffffffffffff000L;
+		r ^= l;
+		r ^= l = (l >> 12) & 0xffffffffffff0000L;
+		r ^= l = (l >> 8) & 0xfffffffffffc0000L;
+		return (int) (r % size);
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/MFB.java b/dependencyParser/experimental/mate-tools/src/is2/data/MFB.java
new file mode 100755
index 0000000..9fa4e3c
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/MFB.java
@@ -0,0 +1,248 @@
+package is2.data;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map.Entry;
+
+import is2.util.DB;
+
+/**
+ * Map Features, do not map long to integer
+ *
+ * @author Bernd Bohnet, 20.09.2009
+ */
+
+final public class MFB implements IEncoderPlus {
+
+	/** The features and its values */
+	static private final HashMap<String, HashMap<String, Integer>> m_featureSets = new HashMap<String, HashMap<String, Integer>>();
+
+	/** The feature class and the number of values */
+	static private final HashMap<String, Integer> m_featureCounters = new HashMap<String, Integer>();
+
+	/** The number of bits needed to encode a feature */
+	static final HashMap<String, Integer> m_featureBits = new HashMap<String, Integer>();
+
+	/** Integer counter for long2int */
+	static private int count = 0;
+
+	/** Stop growing */
+	public boolean stop = false;
+
+	final public static String NONE = "<None>";
+
+	public MFB() {
+	}
+
+	public int size() {
+		return count;
+	}
+
+	/**
+	 * Register an attribute class, if it not exists and add a possible value
+	 * 
+	 * @param type
+	 * @param type2
+	 */
+	@Override
+	final public int register(String a, String v) {
+
+		synchronized (m_featureCounters) {
+
+			HashMap<String, Integer> fs = getFeatureSet().get(a);
+			if (fs == null) {
+				fs = new HashMap<String, Integer>();
+				getFeatureSet().put(a, fs);
+				fs.put(NONE, 0);
+				getFeatureCounter().put(a, 1);
+			}
+
+			Integer i = fs.get(v);
+			if (i == null) {
+				Integer c = getFeatureCounter().get(a);
+				fs.put(v, c);
+				c++;
+				getFeatureCounter().put(a, c);
+				return c - 1;
+			} else
+				return i;
+		}
+	}
+
+	/**
+	 * Calculates the number of bits needed to encode a feature
+	 */
+	public void calculateBits() {
+
+		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
+			int bits = (int) Math.ceil((Math.log(e.getValue() + 1) / Math.log(2)));
+			m_featureBits.put(e.getKey(), bits);
+		}
+
+		// System.out.println("total number of needed bits "+total);
+	}
+
+	@Override
+	public String toString() {
+
+		StringBuffer content = new StringBuffer();
+		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
+			content.append(e.getKey() + " " + e.getValue());
+			content.append(':');
+			// HashMap<String,Integer> vs = getFeatureSet().get(e.getKey());
+			content.append(getFeatureBits(e.getKey()));
+
+			/*
+			 * if (vs.size()<120) for(Entry<String,Integer> e2 : vs.entrySet())
+			 * { content.append(e2.getKey()+" ("+e2.getValue()+") "); }
+			 */
+			content.append('\n');
+
+		}
+		return content.toString();
+	}
+
+	static final public short getFeatureBits(String a) {
+		if (m_featureBits.get(a) == null)
+			return 0;
+		return (short) m_featureBits.get(a).intValue();
+	}
+
+	/**
+	 * Get the integer place holder of the string value v of the type a
+	 *
+	 * @param t
+	 *            the type
+	 * @param v
+	 *            the value
+	 * @return the integer place holder of v
+	 */
+	@Override
+	final public int getValue(String t, String v) {
+
+		if (m_featureSets.get(t) == null)
+			return -1;
+		Integer vi = m_featureSets.get(t).get(v);
+		if (vi == null)
+			return -1; // stop &&
+		return vi.intValue();
+	}
+
+	/**
+	 * Static version of getValue
+	 * 
+	 * @see getValue
+	 */
+	static final public int getValueS(String a, String v) {
+
+		if (m_featureSets.get(a) == null)
+			return -1;
+		Integer vi = m_featureSets.get(a).get(v);
+		if (vi == null)
+			return -1; // stop &&
+		return vi.intValue();
+	}
+
+	public int hasValue(String a, String v) {
+
+		Integer vi = m_featureSets.get(a).get(v);
+		if (vi == null)
+			return -1;
+		return vi.intValue();
+	}
+
+	public static String printBits(int k) {
+		StringBuffer s = new StringBuffer();
+		for (int i = 0; i < 31; i++) {
+			s.append((k & 0x00000001) == 1 ? '1' : '0');
+			k = k >> 1;
+
+		}
+		s.reverse();
+		return s.toString();
+	}
+
+	/**
+	 * Maps a long to a integer value. This is very useful to save memory for
+	 * sparse data long values
+	 * 
+	 * @param l
+	 * @return the integer
+	 */
+	static public int misses = 0;
+	static public int good = 0;
+
+	/**
+	 * Write the data
+	 * 
+	 * @param dos
+	 * @throws IOException
+	 */
+	static public void writeData(DataOutputStream dos) throws IOException {
+		dos.writeInt(getFeatureSet().size());
+		// DB.println("write"+getFeatureSet().size());
+		for (Entry<String, HashMap<String, Integer>> e : getFeatureSet().entrySet()) {
+			dos.writeUTF(e.getKey());
+			dos.writeInt(e.getValue().size());
+
+			for (Entry<String, Integer> e2 : e.getValue().entrySet()) {
+
+				if (e2.getKey() == null)
+					DB.println("key " + e2.getKey() + " value " + e2.getValue() + " e -key " + e.getKey());
+				dos.writeUTF(e2.getKey());
+				dos.writeInt(e2.getValue());
+
+			}
+
+		}
+	}
+
+	public void read(DataInputStream din) throws IOException {
+
+		int size = din.readInt();
+		for (int i = 0; i < size; i++) {
+			String k = din.readUTF();
+			int size2 = din.readInt();
+
+			HashMap<String, Integer> h = new HashMap<String, Integer>();
+			getFeatureSet().put(k, h);
+			for (int j = 0; j < size2; j++) {
+				h.put(din.readUTF(), din.readInt());
+			}
+			getFeatureCounter().put(k, size2);
+		}
+
+		count = size;
+		// stop();
+		calculateBits();
+	}
+
+	/**
+	 * Clear the data
+	 */
+	static public void clearData() {
+		getFeatureSet().clear();
+		m_featureBits.clear();
+		getFeatureSet().clear();
+	}
+
+	@Override
+	public HashMap<String, Integer> getFeatureCounter() {
+		return m_featureCounters;
+	}
+
+	static public HashMap<String, HashMap<String, Integer>> getFeatureSet() {
+		return m_featureSets;
+	}
+
+	static public String[] reverse(HashMap<String, Integer> v) {
+		String[] set = new String[v.size()];
+		for (Entry<String, Integer> e : v.entrySet()) {
+			set[e.getValue()] = e.getKey();
+		}
+		return set;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/MFC.java b/dependencyParser/experimental/mate-tools/src/is2/data/MFC.java
new file mode 100644
index 0000000..859a8ce
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/MFC.java
@@ -0,0 +1,243 @@
+package is2.data;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map.Entry;
+
+import is2.util.DB;
+
+/**
+ * Map Features, do not map long to integer
+ *
+ * @author Bernd Bohnet, 17.09.2011
+ */
+
+final public class MFC implements IEncoderPlus {
+
+	/** The features and its values */
+	private final HashMap<String, HashMap<String, Integer>> m_featureSets = new HashMap<String, HashMap<String, Integer>>();
+
+	/** The feature class and the number of values */
+	private final HashMap<String, Integer> m_featureCounters = new HashMap<String, Integer>();
+
+	/** The number of bits needed to encode a feature */
+	final HashMap<String, Integer> m_featureBits = new HashMap<String, Integer>();
+
+	/** Integer counter for long2int */
+	private int count = 0;
+
+	public MFC() {
+	}
+
+	public int size() {
+		return count;
+	}
+
+	/**
+	 * Register an attribute class, if it not exists and add a possible value
+	 * 
+	 * @param type
+	 * @param type2
+	 */
+	@Override
+	final public int register(String a, String v) {
+
+		synchronized (m_featureCounters) {
+
+			HashMap<String, Integer> fs = getFeatureSet().get(a);
+			if (fs == null) {
+				fs = new HashMap<String, Integer>();
+				getFeatureSet().put(a, fs);
+				fs.put(NONE, 0);
+				getFeatureCounter().put(a, 1);
+			}
+
+			Integer i = fs.get(v);
+			if (i == null) {
+				Integer c = getFeatureCounter().get(a);
+				fs.put(v, c);
+				c++;
+				getFeatureCounter().put(a, c);
+				return c - 1;
+			} else
+				return i;
+		}
+	}
+
+	/**
+	 * Calculates the number of bits needed to encode a feature
+	 */
+	public void calculateBits() {
+
+		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
+			int bits = (int) Math.ceil((Math.log(e.getValue() + 1) / Math.log(2)));
+			m_featureBits.put(e.getKey(), bits);
+		}
+
+		// System.out.println("total number of needed bits "+total);
+	}
+
+	@Override
+	public String toString() {
+
+		StringBuffer content = new StringBuffer();
+		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
+			content.append(e.getKey() + " " + e.getValue());
+			content.append(':');
+			// HashMap<String,Integer> vs = getFeatureSet().get(e.getKey());
+			content.append(getFeatureBits(e.getKey()));
+
+			/*
+			 * if (vs.size()<120) for(Entry<String,Integer> e2 : vs.entrySet())
+			 * { content.append(e2.getKey()+" ("+e2.getValue()+") "); }
+			 */
+			content.append('\n');
+
+		}
+		return content.toString();
+	}
+
+	final public short getFeatureBits(String a) {
+		if (m_featureBits.get(a) == null)
+			return 0;
+		return (short) m_featureBits.get(a).intValue();
+	}
+
+	/**
+	 * Get the integer place holder of the string value v of the type a
+	 *
+	 * @param t
+	 *            the type
+	 * @param v
+	 *            the value
+	 * @return the integer place holder of v
+	 */
+	@Override
+	final public int getValue(String t, String v) {
+
+		if (m_featureSets.get(t) == null)
+			return -1;
+		Integer vi = m_featureSets.get(t).get(v);
+		if (vi == null)
+			return -1; // stop &&
+		return vi.intValue();
+	}
+
+	/**
+	 * Static version of getValue
+	 * 
+	 * @see getValue
+	 */
+	final public int getValueS(String a, String v) {
+
+		if (m_featureSets.get(a) == null)
+			return -1;
+		Integer vi = m_featureSets.get(a).get(v);
+		if (vi == null)
+			return -1; // stop &&
+		return vi.intValue();
+	}
+
+	public int hasValue(String a, String v) {
+
+		Integer vi = m_featureSets.get(a).get(v);
+		if (vi == null)
+			return -1;
+		return vi.intValue();
+	}
+
+	public static String printBits(int k) {
+		StringBuffer s = new StringBuffer();
+		for (int i = 0; i < 31; i++) {
+			s.append((k & 0x00000001) == 1 ? '1' : '0');
+			k = k >> 1;
+
+		}
+		s.reverse();
+		return s.toString();
+	}
+
+	/**
+	 * Maps a long to a integer value. This is very useful to save memory for
+	 * sparse data long values
+	 * 
+	 * @param l
+	 * @return the integer
+	 */
+	static public int misses = 0;
+	static public int good = 0;
+
+	/**
+	 * Write the data
+	 * 
+	 * @param dos
+	 * @throws IOException
+	 */
+	public void writeData(DataOutputStream dos) throws IOException {
+		dos.writeInt(getFeatureSet().size());
+		// DB.println("write"+getFeatureSet().size());
+		for (Entry<String, HashMap<String, Integer>> e : getFeatureSet().entrySet()) {
+			dos.writeUTF(e.getKey());
+			dos.writeInt(e.getValue().size());
+
+			for (Entry<String, Integer> e2 : e.getValue().entrySet()) {
+
+				if (e2.getKey() == null)
+					DB.println("key " + e2.getKey() + " value " + e2.getValue() + " e -key " + e.getKey());
+				dos.writeUTF(e2.getKey());
+				dos.writeInt(e2.getValue());
+
+			}
+
+		}
+	}
+
+	public void read(DataInputStream din) throws IOException {
+
+		int size = din.readInt();
+		for (int i = 0; i < size; i++) {
+			String k = din.readUTF();
+			int size2 = din.readInt();
+
+			HashMap<String, Integer> h = new HashMap<String, Integer>();
+			getFeatureSet().put(k, h);
+			for (int j = 0; j < size2; j++) {
+				h.put(din.readUTF(), din.readInt());
+			}
+			getFeatureCounter().put(k, size2);
+		}
+
+		count = size;
+		// stop();
+		calculateBits();
+	}
+
+	/**
+	 * Clear the data
+	 */
+	public void clearData() {
+		getFeatureSet().clear();
+		m_featureBits.clear();
+		getFeatureSet().clear();
+	}
+
+	@Override
+	public HashMap<String, Integer> getFeatureCounter() {
+		return m_featureCounters;
+	}
+
+	public HashMap<String, HashMap<String, Integer>> getFeatureSet() {
+		return m_featureSets;
+	}
+
+	public String[] reverse(HashMap<String, Integer> v) {
+		String[] set = new String[v.size()];
+		for (Entry<String, Integer> e : v.entrySet()) {
+			set[e.getValue()] = e.getKey();
+		}
+		return set;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/MFO.java b/dependencyParser/experimental/mate-tools/src/is2/data/MFO.java
new file mode 100755
index 0000000..a8bc441
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/MFO.java
@@ -0,0 +1,380 @@
+package is2.data;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map.Entry;
+
+import is2.util.DB;
+
+/**
+ * Map Features, do not map long to integer
+ *
+ * @author Bernd Bohnet, 20.09.2009
+ */
+
+final public class MFO implements IEncoderPlus {
+
+	/** The features and its values */
+	static private final HashMap<String, HashMap<String, Integer>> m_featureSets = new HashMap<String, HashMap<String, Integer>>();
+
+	/** The feature class and the number of values */
+	static private final HashMap<String, Integer> m_featureCounters = new HashMap<String, Integer>();
+
+	/** The number of bits needed to encode a feature */
+	static final HashMap<String, Integer> m_featureBits = new HashMap<String, Integer>();
+
+	final public static String NONE = "<None>";
+
+	final public static class Data4 {
+		public int shift;
+		public short a0, a1, a2, a3, a4, a5, a6, a7, a8, a9;
+		public int v0, v1, v2, v3, v4, v5, v6, v7, v8, v9;
+
+		final public long calcs(int b, long v, long l) {
+			if (l < 0)
+				return l;
+			l |= v << shift;
+			shift += b;
+			return l;
+		}
+
+	}
+
+	public MFO() {
+	}
+
+	/**
+	 * Register an attribute class, if it not exists and add a possible value
+	 * 
+	 * @param type
+	 * @param type2
+	 */
+	@Override
+	final public int register(String a, String v) {
+
+		HashMap<String, Integer> fs = getFeatureSet().get(a);
+		if (fs == null) {
+			fs = new HashMap<String, Integer>();
+			getFeatureSet().put(a, fs);
+			fs.put(NONE, 0);
+			getFeatureCounter().put(a, 1);
+		}
+		Integer c = getFeatureCounter().get(a);
+
+		Integer i = fs.get(v);
+		if (i == null) {
+			fs.put(v, c);
+			c++;
+			getFeatureCounter().put(a, c);
+			return c - 1;
+		} else
+			return i;
+	}
+
+	/**
+	 * Calculates the number of bits needed to encode a feature
+	 */
+	public void calculateBits() {
+
+		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
+			int bits = (int) Math.ceil((Math.log(e.getValue() + 1) / Math.log(2)));
+			m_featureBits.put(e.getKey(), bits);
+		}
+
+		// System.out.println("total number of needed bits "+total);
+	}
+
+	@Override
+	public String toString() {
+
+		StringBuffer content = new StringBuffer();
+		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
+			content.append(e.getKey() + " " + e.getValue());
+			content.append(':');
+			// HashMap<String,Integer> vs = getFeatureSet().get(e.getKey());
+			content.append(getFeatureBits(e.getKey()));
+
+			/*
+			 * if (vs.size()<120) for(Entry<String,Integer> e2 : vs.entrySet())
+			 * { content.append(e2.getKey()+" ("+e2.getValue()+") "); }
+			 */
+			content.append('\n');
+
+		}
+		return content.toString();
+	}
+
+	static final public long calcs(Data4 d, int b, long v, long l) {
+		if (l < 0)
+			return l;
+		l |= v << d.shift;
+		d.shift += b;
+		return l;
+	}
+
+	static final public short getFeatureBits(String a) {
+		return (short) m_featureBits.get(a).intValue();
+	}
+
+	/**
+	 * Get the integer place holder of the string value v of the type a
+	 *
+	 * @param t
+	 *            the type
+	 * @param v
+	 *            the value
+	 * @return the integer place holder of v
+	 */
+	@Override
+	final public int getValue(String t, String v) {
+
+		if (m_featureSets.get(t) == null)
+			return -1;
+		Integer vi = m_featureSets.get(t).get(v);
+		if (vi == null)
+			return -1; // stop &&
+		return vi.intValue();
+	}
+
+	/**
+	 * Static version of getValue
+	 * 
+	 * @see getValue
+	 */
+	static final public int getValueS(String a, String v) {
+
+		if (m_featureSets.get(a) == null)
+			return -1;
+		Integer vi = m_featureSets.get(a).get(v);
+		if (vi == null)
+			return -1; // stop &&
+		return vi.intValue();
+	}
+
+	public int hasValue(String a, String v) {
+
+		Integer vi = m_featureSets.get(a).get(v);
+		if (vi == null)
+			return -1;
+		return vi.intValue();
+	}
+
+	final public long calc2(Data4 d) {
+
+		if (d.v0 < 0 || d.v1 < 0)
+			return -1;
+		// if (d.v1<0||d.v2<0) return -1;
+
+		long l = d.v0;
+		short shift = d.a0;
+		l |= (long) d.v1 << shift;
+		shift += d.a1;
+		// l |= (long)d.v2<<shift;
+		d.shift = shift;
+
+		// d.shift=;
+		return l;
+	}
+
+	final public long calc3(Data4 d) {
+
+		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0)
+			return -1;
+		// if (d.v1<0||d.v2<0) return -1;
+
+		long l = d.v0;
+		short shift = d.a0;
+		l |= (long) d.v1 << shift;
+		shift += d.a1;
+		l |= (long) d.v2 << shift;
+		d.shift = shift + d.a2;
+
+		// d.shift=;
+		return l;
+	}
+
+	final public long calc4(Data4 d) {
+		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0)
+			return -1;
+
+		long l = d.v0;
+		int shift = d.a0;
+		l |= (long) d.v1 << shift;
+		shift += d.a1;
+		l |= (long) d.v2 << shift;
+		shift += d.a2;
+		l |= (long) d.v3 << shift;
+		d.shift = shift + d.a3;
+
+		return l;
+	}
+
+	final public long calc5(Data4 d) {
+
+		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0 || d.v4 < 0)
+			return -1;
+
+		long l = d.v0;
+		int shift = d.a0;
+		l |= (long) d.v1 << shift;
+		shift += d.a1;
+		l |= (long) d.v2 << shift;
+		shift += d.a2;
+		l |= (long) d.v3 << shift;
+		shift += d.a3;
+		l |= (long) d.v4 << shift;
+		d.shift = shift + d.a4;
+
+		return l;
+	}
+
+	static final public long calc6(Data4 d) {
+
+		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0 || d.v4 < 0 || d.v5 < 0)
+			return -1;
+
+		long l = d.v0;
+		int shift = d.a0;
+		l |= (long) d.v1 << shift;
+		shift += d.a1;
+		l |= (long) d.v2 << shift;
+		shift += d.a2;
+		l |= (long) d.v3 << shift;
+		shift += d.a3;
+		l |= (long) d.v4 << shift;
+		shift += d.a4;
+		l |= (long) d.v5 << shift;
+		d.shift = shift + d.a5;
+
+		return l;
+	}
+
+	final public long calc7(Data4 d) {
+
+		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0 || d.v4 < 0 || d.v5 < 0 || d.v6 < 0)
+			return -1;
+
+		long l = d.v0;
+		int shift = d.a0;
+		l |= (long) d.v1 << shift;
+		shift += d.a1;
+		l |= (long) d.v2 << shift;
+		shift += d.a2;
+		l |= (long) d.v3 << shift;
+		shift += d.a3;
+		l |= (long) d.v4 << shift;
+		shift += d.a4;
+		l |= (long) d.v5 << shift;
+		shift += d.a5;
+		l |= (long) d.v6 << shift;
+		d.shift = shift + d.a6;
+
+		return l;
+	}
+
+	final public long calc8(Data4 d) {
+
+		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0 || d.v4 < 0 || d.v5 < 0 || d.v6 < 0 || d.v7 < 0)
+			return -1;
+
+		long l = d.v0;
+		int shift = d.a0;
+		l |= (long) d.v1 << shift;
+		shift += d.a1;
+		l |= (long) d.v2 << shift;
+		shift += d.a2;
+		l |= (long) d.v3 << shift;
+		shift += d.a3;
+		l |= (long) d.v4 << shift;
+		shift += d.a4;
+		l |= (long) d.v5 << shift;
+		shift += d.a5;
+		l |= (long) d.v6 << shift;
+		shift += d.a6;
+		l |= (long) d.v7 << shift;
+		d.shift = shift + d.a7;
+
+		return l;
+	}
+
+	/**
+	 * Maps a long to a integer value. This is very useful to save memory for
+	 * sparse data long values
+	 * 
+	 * @param node
+	 * @return the integer
+	 */
+	static public int misses = 0;
+	static public int good = 0;
+
+	/**
+	 * Write the data
+	 * 
+	 * @param dos
+	 * @throws IOException
+	 */
+	public void writeData(DataOutputStream dos) throws IOException {
+		dos.writeInt(getFeatureSet().size());
+		for (Entry<String, HashMap<String, Integer>> e : getFeatureSet().entrySet()) {
+			dos.writeUTF(e.getKey());
+			dos.writeInt(e.getValue().size());
+
+			for (Entry<String, Integer> e2 : e.getValue().entrySet()) {
+
+				if (e2.getKey() == null)
+					DB.println("key " + e2.getKey() + " value " + e2.getValue() + " e -key " + e.getKey());
+				dos.writeUTF(e2.getKey());
+				dos.writeInt(e2.getValue());
+
+			}
+
+		}
+	}
+
+	public void read(DataInputStream din) throws IOException {
+
+		int size = din.readInt();
+		for (int i = 0; i < size; i++) {
+			String k = din.readUTF();
+			int size2 = din.readInt();
+
+			HashMap<String, Integer> h = new HashMap<String, Integer>();
+			getFeatureSet().put(k, h);
+			for (int j = 0; j < size2; j++) {
+				h.put(din.readUTF(), din.readInt());
+			}
+			getFeatureCounter().put(k, size2);
+		}
+
+		calculateBits();
+	}
+
+	/**
+	 * Clear the data
+	 */
+	static public void clearData() {
+		getFeatureSet().clear();
+		m_featureBits.clear();
+		getFeatureSet().clear();
+	}
+
+	@Override
+	public HashMap<String, Integer> getFeatureCounter() {
+		return m_featureCounters;
+	}
+
+	static public HashMap<String, HashMap<String, Integer>> getFeatureSet() {
+		return m_featureSets;
+	}
+
+	static public String[] reverse(HashMap<String, Integer> v) {
+		String[] set = new String[v.size()];
+		for (Entry<String, Integer> e : v.entrySet()) {
+			set[e.getValue()] = e.getKey();
+		}
+		return set;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/Open.java b/dependencyParser/experimental/mate-tools/src/is2/data/Open.java
new file mode 100755
index 0000000..d9bf0e6
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/Open.java
@@ -0,0 +1,38 @@
+package is2.data;
+
+final public class Open {
+
+	public float p;
+	short s, e, label;
+	byte dir;
+
+	Closed left;
+	Closed right;
+
+	public Open(short s, short t, short dir, short label, Closed left, Closed right, float p) {
+		this.s = s;
+		this.e = t;
+		this.label = label;
+		this.dir = (byte) dir;
+		this.left = left;
+		this.right = right;
+		this.p = p;
+	}
+
+	void create(Parse parse) {
+		if (dir == 0) {
+			parse.heads[s] = e;
+			if (label != -1)
+				parse.labels[s] = label;
+		} else {
+			parse.heads[e] = s;
+			if (label != -1)
+				parse.labels[e] = label;
+		}
+		if (left != null)
+			left.create(parse);
+		if (right != null)
+			right.create(parse);
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/PSTree.java b/dependencyParser/experimental/mate-tools/src/is2/data/PSTree.java
new file mode 100644
index 0000000..e916548
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/PSTree.java
@@ -0,0 +1,745 @@
+/**
+ *
+ */
+package is2.data;
+
+import java.util.ArrayList;
+import java.util.Collections;
+
+import is2.util.DB;
+
+/**
+ * @author Dr. Bernd Bohnet, 17.01.2011
+ *
+ *
+ */
+public class PSTree {
+
+	int wordCount = 0;
+	public String entries[];
+	public String lemmas[];
+	public int head[];
+	public String pos[];
+	public int[] ok;
+	public int non;
+	public int terminalCount;
+	public String[] morph;
+
+	public int[] forms;
+	public int[] phrases;
+	public int[][] psfeats;
+	public int[] ppos;
+
+	/**
+	 * @param d
+	 */
+	public PSTree(SentenceData09 d) {
+		create(d.length() - 1, d.length() * 20);
+		for (int i = 1; i < d.length(); i++) {
+			entries[i - 1] = d.forms[i];
+			pos[i - 1] = d.ppos[i];
+		}
+	}
+
+	/**
+	 * Create an undefined phrase tree
+	 */
+	public PSTree() {
+	}
+
+	/**
+	 * @param terminals
+	 * @param nonTerminals
+	 */
+	public void create(int terminals, int nonTerminals) {
+		entries = new String[terminals + nonTerminals];
+		pos = new String[terminals + nonTerminals];
+		head = new int[terminals + nonTerminals];
+		lemmas = new String[terminals + nonTerminals];
+		morph = new String[terminals + nonTerminals];
+		non = terminals;
+		wordCount = terminals;
+
+		for (int i = terminals + 1; i < head.length; i++)
+			head[i] = -1;
+	}
+
+	@Override
+	public String toString() {
+
+		StringBuffer s = new StringBuffer();
+
+		for (int i = 0; i < entries.length; i++) {
+			if (head[i] == -1 && entries[i] == null)
+				break;
+
+			s.append(i + "\t" + pos[i] + "\t" + entries[i] + "\t" + head[i] + (ok == null ? "" : ("\t" + (ok[i] == 1)))
+					+ " \n");
+
+		}
+		// DB.println("entries "+entries.length);
+		return s.toString();
+	}
+
+	/**
+	 * @return
+	 */
+	public boolean containsNull() {
+		for (int k = 0; k < wordCount - 1; k++) {
+			if (entries[k] == null)
+				return true;
+		}
+		return false;
+	}
+
+	public int equals(SentenceData09 s) {
+
+		int j = 1; // starts with root
+		for (int i = 0; i < terminalCount - 1; i++) {
+
+			// if (s.forms[j].equals("erschrekkend")) s.forms[j]="erschreckend";
+
+			if (s.forms.length < j) {
+				DB.println("" + s + " " + this.toString());
+				return i;
+
+			}
+
+			if (!entries[i].equals(s.forms[j])) {
+				// System.out.println("ps "+entries[i]+" != ds "+s.forms[j]);
+				// Rolls-Royce
+				if (entries[i].startsWith(s.forms[j]) && s.forms.length > i + 2 && s.forms[j + 1].equals("-")) {
+					j += 2;
+					if (entries[i].contains(s.forms[j - 1]) && s.forms.length > i + 3 && s.forms[j + 1].equals("-")) {
+						j += 2; // &&
+						// System.out.println("s.forms[j] "+s.forms[j]+"
+						// s.forms[j-1] "+s.forms[j-1]+" "+entries[i]);
+						if (entries[i].contains(s.forms[j - 1]) && s.forms.length > i + 3
+								&& s.forms[j + 1].equals("-")) {
+							j += 2; // &&
+							// System.out.println("s.forms[j] "+s.forms[j]+"
+							// s.forms[j-1] "+s.forms[j-1]+" "+entries[i]);
+						}
+					}
+					// Interstate\/Johnson
+				} else if (entries[i].startsWith(s.forms[j]) && s.forms.length > i + 2 && s.forms[j + 1].equals("/")) {
+					j += 2;
+					if (entries[i].contains(s.forms[j - 1]) && s.forms.length > i + 3 && s.forms[j + 1].equals("/")) {
+						j += 2; // &&
+						// System.out.println("s.forms[j] "+s.forms[j]+"
+						// s.forms[j-1] "+s.forms[j-1]+" "+entries[i]);
+					}
+
+					// U.S.-Japan -> U . S . - Japan
+				} else if (entries[i].startsWith(s.forms[j]) && s.forms.length > i + 2 && s.forms[j + 1].equals(".")) {
+					j += 2;
+					if (entries[i].contains(s.forms[j - 1]) && s.forms.length > i + 3 && s.forms[j + 1].equals(".")) {
+						j += 2; // &&
+						// System.out.println("s.forms[j] "+s.forms[j]+"
+						// s.forms[j-1] "+s.forms[j-1]+" "+entries[i]);
+					}
+				} else if (entries[i].startsWith(s.forms[j]) && s.forms.length > i + 1 && s.forms[j + 1].equals("'S")) {
+					j += 1;
+
+				} else {
+
+					// chech those !!!
+					// System.out.print("entry "+entries[i]+" form
+					// "+s.forms[j]+" ");
+					return j;
+				}
+
+			}
+			j++;
+
+		}
+
+		// without root
+		return s.length();
+		// return j;
+
+	}
+
+	/**
+	 * @param dn
+	 * @return
+	 */
+	public int getPS(int dn) {
+
+		return this.head[dn - 1];
+	}
+
+	/**
+	 * @param dn
+	 * @param n
+	 * @param commonHead
+	 *            the common head in the phrase structure
+	 * @return
+	 */
+	public String getChain(int dn, int n, int commonHead) {
+
+		int pdn = dn - 1;
+		// int phraseHead =head[pdh];
+
+		// System.out.println("phrase head "+phraseHead+" common head
+		// "+commonHead);
+
+		int[] ch = new int[20];
+		int head = this.head[pdn];
+		int i = 0;
+		ch[i++] = head;
+		while (commonHead != head && head != 0) {
+
+			head = this.head[head];
+			ch[i++] = head;
+		}
+		StringBuffer chain = new StringBuffer();
+
+		for (int k = 0; k < i; k++) {
+			chain.append(entries[ch[k]]).append(" ");
+		}
+		return chain.toString();
+	}
+
+	/**
+	 * @param dn
+	 * @param n
+	 * @return
+	 */
+	public int getCommonHead(int d, int dh) {
+		int pdh = this.getPS(dh), pd = this.getPS(d);
+
+		ArrayList<Integer> path2root = getPath2Root(pdh);
+
+		// System.out.println("path 2 root "+path2root+" pdh "+pdh);
+
+		for (int n : path2root) {
+			int candidateHead = pd;
+			while (candidateHead != 0 && candidateHead != -1) {
+				if (n == candidateHead)
+					return n;
+				candidateHead = this.head[candidateHead];
+			}
+		}
+		return -1;
+	}
+
+	/**
+	 * @param pdh
+	 */
+	private ArrayList<Integer> getPath2Root(int pdh) {
+		ArrayList<Integer> path = new ArrayList<Integer>();
+
+		// restrict the number in case its a cycle which should never be
+		for (int k = 0; k < 100; k++) {
+			if (pdh == -1)
+				break;
+			path.add(pdh);
+			pdh = this.head[pdh];
+			if (pdh == 0)
+				break;
+		}
+		return path;
+	}
+
+	/**
+	 * Get operations to create root see operation in method getOperation
+	 * 
+	 * @param pr
+	 */
+	public String getOperationRoot(int pr) {
+
+		StringBuffer o = new StringBuffer();
+		int h = pr;
+		int[] path = new int[10];
+		// System.out.println(" start node "+pr);
+		int k = 0;
+		for (; k < 10; k++) {
+			h = head[h];
+			if (h == -1) {
+				break;
+			}
+			path[k] = h;
+			if (h == 0) {
+				break;
+			}
+
+		}
+		k -= 2;
+
+		boolean first = true;
+		for (; k >= 0; k--) {
+
+			// create phrase
+			if (first) {
+				o.append("c:").append(entries[path[k]]);
+				first = false;
+			}
+
+			// insert and create phrase
+			else {
+				o.append(":ci:").append(entries[path[k]]);
+			}
+		}
+
+		// insert dependent node
+		// if (o.length()>0)
+		o.append(":in:d");
+		// else o.append("in:d"); // insert root into nothing
+		return o.toString();
+	}
+
+	/**
+	 * Create operation to include dependency edges in phrase structure
+	 * Operations: c - create ; i - insert ; in - insert (dependent) node ; up:X
+	 * go the (phrase) X up ci create and insert ...
+	 *
+	 * @param dn
+	 * @param n
+	 * @param commonHead
+	 * @return
+	 */
+	public String getOperation(int dn, int n, int commonHead) {
+
+		StringBuffer o = new StringBuffer();
+
+		// from n move up to common head, if needed
+		int ph = n - 1, pd = dn - 1;
+
+		int[] path = new int[20];
+		int h = ph;
+
+		boolean nth = false;
+		for (int k = 0; k < 10; k++) {
+			h = head[h];
+			path[k] = h;
+			if (nth)
+				o.append(':');
+			o.append("up:" + entries[h]);
+			nth = true;
+			if (h == commonHead)
+				break;
+		}
+
+		// from common head to the node
+		int k = 0;
+		h = pd;
+		for (; k < 10; k++) {
+			h = head[h];
+			path[k] = h;
+			if (h == commonHead) {
+				break;
+			}
+
+		}
+		k -= 1;
+
+		// boolean first=true;
+		for (; k >= 0; k--) {
+
+			// create phrase
+			if (!nth) {
+				o.append("ci:").append(entries[path[k]]);
+				nth = true;
+			}
+
+			// insert and create phrase
+			else {
+				o.append(":ci:").append(entries[path[k]]);
+			}
+		}
+
+		// insert dependent node
+		o.append(":in:d");
+
+		return o.toString();
+	}
+
+	/**
+	 * @param ph
+	 *            node in the phrase structure corresponding to the head in the
+	 *            dependency structure
+	 * @param pt
+	 *            node in the prhase structure corresponding to the dependent in
+	 *            the ds.
+	 * @param check
+	 * @return rules was applicable
+	 */
+	public boolean exec(String r, int ph, int pt, boolean check) {
+
+		String o[] = r.split(":");
+
+		int last = -1, headP = -1;
+
+		// create root node
+
+		// System.out.println("operation "+r+" "+ph+" "+pt);
+		boolean done = true;
+		for (int i = 0; i < o.length; i++) {
+
+			if (o[i].equals("c")) {
+				if (check)
+					return true;
+
+				if (ph < 0) {
+					last = non++;
+				}
+
+				entries[non] = o[++i]; // create
+				head[pt] = non;
+				head[non] = last; // insert into root
+				last = non++;
+			} else if (o[i].equals("ci")) {
+				if (check)
+					return true;
+				entries[non] = o[++i]; // create
+				head[non] = last; // insert
+				last = non;
+				non++;
+			} else if (o[i].equals("in") && o[i + 1].equals("d")) {
+				if (check)
+					return true;
+				head[pt] = last; // insert
+				i++; // move forward because of 'd'
+			} else if (o[i].equals("up")) {
+
+				if (ph == -1) {
+					// System.out.println("ph is -1 please check this "+ph+"
+					// there is a bug ");
+					return false;
+				}
+
+				if (headP == -1)
+					headP = head[ph];
+				else
+					headP = head[headP];
+
+				try {
+					if (headP == -1 || entries[headP] == null || !entries[headP].equals(o[i + 1]))
+						return false;
+
+				} catch (Exception e) {
+					e.printStackTrace();
+					System.out.println(
+							"" + entries[headP] + " o[i+1] " + o[i + 1] + " " + headP + " " + this.terminalCount);
+					// System.out.println(""+ this.toString());
+					System.exit(0);
+				}
+
+				i++;
+				last = headP;
+			} else {
+				done = false;
+			}
+
+		}
+
+		return done;
+	}
+
+	/**
+	 * More tolerant mapping
+	 *
+	 * @param ph
+	 *            node in the phrase structure corresponding to the head in the
+	 *            dependency structure
+	 * @param pt
+	 *            node in the prhase structure corresponding to the dependent in
+	 *            the ds.
+	 * @param check
+	 * @return rules was applicable
+	 */
+	public boolean execT(String r, int ph, int pt, boolean check) {
+
+		String o[] = r.split(":");
+
+		int last = -1, headP = -1;
+
+		int up = 0;
+
+		boolean done = true;
+		for (int i = 0; i < o.length; i++) {
+
+			if (o[i].equals("c")) {
+				if (check)
+					return true;
+
+				// create root node
+				if (ph < 0) {
+					last = non++;
+				}
+
+				entries[non] = o[++i]; // create
+				head[pt] = non;
+				head[non] = last; // insert into root
+				last = non++;
+			} else if (o[i].equals("ci")) {
+
+				if (check)
+					return true;
+				entries[non] = o[++i]; // create
+				head[non] = last; // insert
+				last = non;
+				non++;
+			} else if (o[i].equals("in") && o[i + 1].equals("d")) {
+				if (check)
+					return true;
+
+				// DB.println("hallo");
+
+				if (last != -1)
+					head[pt] = last; // insert
+
+				// i am not sure if this does much good?
+
+				// if (last ==-1)
+
+				// done=true;
+
+				i++; // move forward because of 'd'
+
+			} else if (o[i].equals("up")) {
+				up++;
+				if (ph == -1) {
+					return false;
+				}
+
+				if (headP == -1)
+					headP = head[ph];
+				else
+					headP = head[headP];
+
+				try {
+
+					// tolerant mapping
+					if (headP == -1 || entries[headP] == null || ((!entries[headP].equals(o[i + 1])) && up > 1))
+						return false; // >1
+					// && entries[headP].charAt(0)!=o[i+1].charAt(0)
+				} catch (Exception e) {
+					e.printStackTrace();
+					System.out.println(
+							"" + entries[headP] + " o[i+1] " + o[i + 1] + " " + headP + " " + this.terminalCount);
+				}
+
+				i++;
+				last = headP;
+			} else {
+				done = false;
+			}
+
+		}
+
+		return done;
+	}
+
+	public final static boolean INSERT_NEWLINE = true;
+
+	/**
+	 * Convert to bracket format
+	 * 
+	 * @param newLine
+	 * @return
+	 */
+	public String toPennBracket(boolean newLine) {
+
+		StringBuffer b = new StringBuffer();
+		ArrayList<Integer> current = null;// = new ArrayList<Integer>();
+		int open = 0;
+		for (int i = 0; i < terminalCount; i++) {
+			ArrayList<Integer> path = getPathToRoot(i);
+
+			ArrayList<Integer> diff = getDiffPath(path, current);
+
+			boolean spaces = false;
+
+			ArrayList<Integer> common = this.getDiffCommon(path, current);
+
+			if (current != null && (current.size() > common.size())) {
+
+				// close brackets
+				for (int bc = 0; bc < current.size() - common.size(); bc++) {
+					b.append(")");
+					open--;
+				}
+				if (diff.size() == 0 && newLine)
+					b.append("\n");
+				spaces = true;
+			}
+
+			if (i != 0 && diff.size() > 0 && newLine)
+				b.append("\n").append(createSpaces(open));
+
+			for (int k = diff.size() - 1; k >= 0; k--) {
+				open++;
+				b.append("(" + (entries[path.get(k)] == null ? " " : entries[path.get(k)]));
+				if (k != 0 && path.size() - 1 != k && newLine)
+					b.append("\n").append(createSpaces(open));
+				spaces = false;
+			}
+			if (spaces)
+				b.append(createSpaces(open));
+			else
+				b.append(" ");
+
+			String term = entries[i];
+			if (term.equals("("))
+				term = "-LRB-";
+			if (term.equals(")"))
+				term = "-RRB-";
+			if (term.equals("{"))
+				term = "-LCB-";
+			if (term.equals("}"))
+				term = "-RCB-";
+
+			String ps = pos[i];
+			if (ps.equals("("))
+				ps = "-LRB-";
+			if (ps.equals("$("))
+				ps = "-LRB-";
+
+			if (ps.equals(")"))
+				ps = "-RRB-";
+			if (ps.equals("{"))
+				ps = "-LCB-";
+			if (ps.equals("}"))
+				ps = "-RCB-";
+
+			b.append("(").append(ps).append(" ").append(term).append(')');
+			current = path;
+			// break;
+		}
+		for (; open > 0; open--) {
+			b.append(")");
+		}
+		// b.append("\n");
+
+		return b.toString();
+	}
+
+	static int cnt = 0;
+
+	/**
+	 * @param path
+	 * @param current
+	 * @return
+	 */
+	private ArrayList<Integer> getDiffPath(ArrayList<Integer> path, ArrayList<Integer> current) {
+		if (current == null)
+			return path;
+
+		ArrayList<Integer> common = new ArrayList<Integer>();
+
+		int pindex = path.size() - 1;
+		int cindex = current.size() - 1;
+
+		while (cindex >= 0 && pindex >= 0) {
+
+			if (path.get(pindex) == current.get(cindex)) {
+				cindex--;
+				pindex--;
+			} else
+				break;
+		}
+
+		for (int k = 0; k <= pindex; k++) {
+			common.add(path.get(k));
+		}
+
+		return common;
+	}
+
+	private ArrayList<Integer> getDiffCommon(ArrayList<Integer> path, ArrayList<Integer> current) {
+		if (current == null)
+			return path;
+
+		ArrayList<Integer> common = new ArrayList<Integer>();
+
+		int pindex = path.size() - 1;
+		int cindex = current.size() - 1;
+
+		while (cindex >= 0 && pindex >= 0) {
+
+			if (path.get(pindex) == current.get(cindex)) {
+				common.add(path.get(pindex));
+				cindex--;
+				pindex--;
+			} else
+				break;
+		}
+
+		Collections.reverse(common);
+		// System.out.println("common "+pindex+" "+common);
+
+		return common;
+	}
+
+	/**
+	 * @param i
+	 * @return
+	 */
+	private StringBuffer createSpaces(int i) {
+		StringBuffer s = new StringBuffer();
+		for (int k = 0; k < i; k++)
+			s.append("  ");
+		return s;
+	}
+
+	/**
+	 * @param i
+	 * @return
+	 */
+	private ArrayList<Integer> getPathToRoot(int i) {
+
+		ArrayList<Integer> path = new ArrayList<Integer>();
+
+		int h = i;
+		while (true) {
+			h = this.head[h];
+			if (h < this.terminalCount || path.contains(h))
+				break;
+			path.add(h);
+		}
+
+		// Collections.reverse(list)
+
+		return path;
+	}
+
+	public String conll09() {
+
+		StringBuilder s = new StringBuilder();
+		for (int i = 0; i < this.terminalCount; i++) {
+			if (head[i] == -1 && entries[i] == null)
+				break;
+
+			s.append((i + 1)).append('\t').append(entries[i]).append("\t_\t_\t").append(pos[i])
+					.append("\t_\t_\t_\t_\t_\t_\t_\t_\n");
+
+		}
+
+		return s.toString();
+	}
+
+	/**
+	 * @param phead
+	 * @return
+	 */
+	public int[] getChilds(int head) {
+
+		int count = 0;
+		for (int i = 0; i < this.entries.length; i++) {
+			if (this.head[i] == head)
+				count++;
+		}
+
+		int[] clds = new int[count];
+		count = 0;
+		for (int i = 0; i < this.entries.length; i++) {
+			if (this.head[i] == head)
+				clds[count++] = i;
+		}
+
+		return clds;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/Parameter.java b/dependencyParser/experimental/mate-tools/src/is2/data/Parameter.java
new file mode 100644
index 0000000..7b1f870
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/Parameter.java
@@ -0,0 +1,13 @@
+/**
+ *
+ */
+package is2.data;
+
+/**
+ * @author Dr. Bernd Bohnet, 23.12.2010
+ *
+ *
+ */
+public class Parameter {
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/ParametersFloat.java b/dependencyParser/experimental/mate-tools/src/is2/data/ParametersFloat.java
new file mode 100755
index 0000000..17837ef
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/ParametersFloat.java
@@ -0,0 +1,181 @@
+package is2.data;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import is2.util.DB;
+
+final public class ParametersFloat {
+
+	public float[] parameters;
+	public float[] total;
+
+	public ParametersFloat(int size) {
+
+		parameters = new float[size];
+		total = new float[size];
+		for (int i = 0; i < parameters.length; i++) {
+			parameters[i] = 0F;
+			total[i] = 0F;
+		}
+	}
+
+	/**
+	 * @param parameters2
+	 */
+	public ParametersFloat(float[] p) {
+		parameters = p;
+	}
+
+	public void average(double avVal) {
+		for (int j = 0; j < total.length; j++) {
+			parameters[j] = total[j] / ((float) avVal);
+		}
+		total = null;
+	}
+
+	public ParametersFloat average2(double avVal) {
+		float[] px = new float[this.parameters.length];
+		for (int j = 0; j < total.length; j++) {
+			px[j] = total[j] / ((float) avVal);
+		}
+		ParametersFloat pf = new ParametersFloat(px);
+		return pf;
+	}
+
+	public void update(FV pred, FV act, float upd, float err) {
+
+		float lam_dist = act.getScore(parameters, false) - pred.getScore(parameters, false);
+		float loss = err - lam_dist;
+
+		FV dist = act.getDistVector(pred);
+
+		float alpha;
+		float A = dist.dotProduct(dist);
+		if (A <= 0.0000000000000001)
+			alpha = 0.0f;
+		else
+			alpha = loss / A;
+
+		// alpha = Math.min(alpha, 0.00578125F);
+
+		dist.update(parameters, total, alpha, upd, false);
+
+	}
+
+	public void update(FV pred, FV act, float upd, float err, float C) {
+
+		float lam_dist = act.getScore(parameters, false) - pred.getScore(parameters, false);
+		float loss = err - lam_dist;
+
+		FV dist = act.getDistVector(pred);
+
+		float alpha;
+		float A = dist.dotProduct(dist);
+		if (A <= 0.0000000000000001)
+			alpha = 0.0f;
+		else
+			alpha = loss / A;
+
+		alpha = Math.min(alpha, C);
+
+		dist.update(parameters, total, alpha, upd, false);
+
+	}
+
+	public double update(FV a, double b) {
+
+		double A = a.dotProduct(a);
+		if (A <= 0.0000000000000000001)
+			return 0.0;
+		return b / A;
+	}
+
+	public double getScore(FV fv) {
+		if (fv == null)
+			return 0.0F;
+		return fv.getScore(parameters, false);
+
+	}
+
+	final public void write(DataOutputStream dos) throws IOException {
+
+		dos.writeInt(parameters.length);
+		for (float d : parameters)
+			dos.writeFloat(d);
+
+	}
+
+	public void read(DataInputStream dis) throws IOException {
+
+		parameters = new float[dis.readInt()];
+		int notZero = 0;
+		for (int i = 0; i < parameters.length; i++) {
+			parameters[i] = dis.readFloat();
+			if (parameters[i] != 0.0F)
+				notZero++;
+		}
+
+		DB.println("read parameters " + parameters.length + " not zero " + notZero);
+
+	}
+
+	public int countNZ() {
+
+		int notZero = 0;
+		for (float parameter : parameters) {
+			if (parameter != 0.0F)
+				notZero++;
+		}
+		return notZero;
+
+	}
+
+	public F2SF getFV() {
+		return new F2SF(parameters);
+	}
+
+	public int size() {
+		return parameters.length;
+	}
+
+	public void update(FVR act, FVR pred, Instances isd, int instc, Parse dx, double upd, double e, float lam_dist) {
+
+		e++;
+
+		float b = (float) e - lam_dist;
+
+		FVR dist = act.getDistVector(pred);
+
+		dist.update(parameters, total, hildreth(dist, b), upd, false);
+	}
+
+	public void update(FVR pred, FVR act, float upd, float e) {
+
+		e++;
+		float lam_dist = act.getScore(parameters, false) - pred.getScore(parameters, false);
+
+		float b = e - lam_dist;
+
+		FVR dist = act.getDistVector(pred);
+
+		dist.update(parameters, total, hildreth(dist, b), upd, false);
+	}
+
+	protected double hildreth(FVR a, double b) {
+
+		double A = a.dotProduct(a);
+		if (A <= 0.0000000000000000001)
+			return 0.0;
+		return b / A;
+	}
+
+	public float getScore(FVR fv) { // xx
+		if (fv == null)
+			return 0.0F;
+		return fv.getScore(parameters, false);
+
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/Parse.java b/dependencyParser/experimental/mate-tools/src/is2/data/Parse.java
new file mode 100755
index 0000000..aa24005
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/Parse.java
@@ -0,0 +1,157 @@
+package is2.data;
+
+import java.util.BitSet;
+
+public class Parse implements Comparable<Parse> {
+
+	public short[] heads;
+	public short[] labels;
+	public double f1;
+
+	public Parse() {
+	}
+
+	public Parse(int i) {
+		heads = new short[i];
+		labels = new short[i];
+
+	}
+
+	/**
+	 * @param heads2
+	 * @param types2
+	 * @param p_new
+	 */
+	public Parse(short[] heads2, short[] types2, float p_new) {
+		this.heads = new short[heads2.length];
+		this.labels = new short[types2.length];
+		// this.heads=heads2;
+		// this.labels=types2;
+		System.arraycopy(heads2, 0, heads, 0, heads.length);
+		System.arraycopy(types2, 0, labels, 0, labels.length);
+		f1 = p_new;
+
+	}
+
+	/**
+	 * @param heads2
+	 * @param types2
+	 * @param p_new
+	 */
+	public Parse(String parse, float p_new) {
+
+		// this(parse.length()/2);
+
+		signature2parse(parse);
+
+		f1 = p_new;
+
+	}
+
+	public void signature2parse(String parse) {
+		int p = 0;
+		heads = new short[parse.length() / 2];
+		labels = new short[heads.length];
+		// DB.println("pl "+parse.length());
+		for (int k = 0; k < heads.length; k++) {
+			heads[k] = (short) parse.charAt(p++);
+			labels[k] = (short) parse.charAt(p++);
+		}
+	}
+
+	@Override
+	public Parse clone() {
+		Parse p = new Parse();
+		p.heads = new short[heads.length];
+		p.labels = new short[labels.length];
+
+		System.arraycopy(heads, 0, p.heads, 0, heads.length);
+		System.arraycopy(labels, 0, p.labels, 0, labels.length);
+
+		p.f1 = f1;
+
+		return p;
+	}
+
+	/**
+	 * Check if it is a tree
+	 * 
+	 * @return
+	 */
+	public boolean checkTree() {
+
+		BitSet set = new BitSet(heads.length);
+		set.set(0);
+		return checkTree(set, 0);
+
+	}
+
+	/**
+	 * @param set
+	 * @return
+	 */
+	private boolean checkTree(BitSet set, int h) {
+		// System.out.print(" h "+h);
+
+		for (int i = 0; i < heads.length; i++) {
+			if (heads[i] == h) {
+				// System.out.print(" "+i);
+				if (!set.get(i))
+					checkTree(set, i);
+				set.set(i);
+
+			}
+		}
+
+		for (int i = 0; i < heads.length; i++) {
+			if (!set.get(i))
+				return false;
+		}
+		return true;
+	}
+
+	@Override
+	public String toString() {
+		StringBuilder b = new StringBuilder();
+		for (int k = 0; k < this.heads.length; k++) {
+			b.append(k).append(" ").append(heads[k] + " ").append(this.labels[k]).append("\n");
+		}
+		return b.toString();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see java.lang.Comparable#compareTo(java.lang.Object)
+	 */
+	@Override
+	public int compareTo(Parse o) {
+
+		if (f1 == o.f1)
+			return this.signature().compareTo(o.signature());
+		return f1 < o.f1 ? 1 : f1 == o.f1 ? 0 : -1;
+	}
+
+	/**
+	 * @return the signature of a parse
+	 */
+	public String signature() {
+		StringBuilder b = new StringBuilder(heads.length * 2);
+		for (int k = 0; k < heads.length; k++) {
+			b.append((char) heads[k]).append((char) labels[k]);
+		}
+		return b.toString();
+	}
+
+	/**
+	 * @return the signature of a parse
+	 */
+	public StringBuilder signatureSB() {
+		StringBuilder b = new StringBuilder(heads.length * 2);
+		for (int k = 0; k < heads.length; k++) {
+			b.append((char) heads[k]).append((char) labels[k]);
+		}
+		return b;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/ParseNBest.java b/dependencyParser/experimental/mate-tools/src/is2/data/ParseNBest.java
new file mode 100644
index 0000000..cb02b71
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/ParseNBest.java
@@ -0,0 +1,103 @@
+package is2.data;
+
+final public class ParseNBest extends Parse {
+
+	private String signature = null;
+
+	// public float[] scores;
+
+	public ParseNBest() {
+	}
+
+	public ParseNBest(short[] heads2, short[] types2, float p_new) {
+		super(heads2, types2, p_new);
+	}
+
+	public ParseNBest(int i) {
+		super(i);
+	}
+
+	/**
+	 * @param sig
+	 * @param readFloat
+	 */
+	public ParseNBest(String sig, float score) {
+		super(sig, score);
+	}
+
+	/**
+	 * create a total order to provide replicable deterministic results
+	 * 
+	 * @param o
+	 * @return
+	 */
+	public int compareTo(ParseNBest o) {
+		if (f1 < o.f1)
+			return 1;
+		if (f1 == o.f1) {
+			if (signature == null)
+				signature = signature();
+			if (o.signature == null)
+				o.signature = o.signature();
+			return o.signature.compareTo(signature);
+
+		}
+		return -1;
+	}
+
+	/**
+	 * @return the signature of a parse
+	 */
+	@Override
+	public String signature() {
+		if (signature != null)
+			return signature;
+		signature = super.signature();
+		return signature;
+	}
+
+	/**
+	 * @return the signature of a parse
+	 */
+	public String signature(short[] heads, short[] labels) {
+		StringBuilder b = new StringBuilder(heads.length * 2);
+		for (int k = 0; k < heads.length; k++) {
+			b.append((char) heads[k]).append((char) labels[k]);
+		}
+		signature = b.toString();
+		return signature;
+	}
+
+	/**
+	 * @param heads
+	 * @param types
+	 * @param oldP
+	 * @param ch
+	 * @param s
+	 */
+	public String signature(short[] heads, short[] types, short p, short ch, short l) {
+		StringBuilder b = new StringBuilder(heads.length * 2);
+		for (int k = 0; k < heads.length; k++) {
+
+			b.append(k == ch ? (char) p : (char) heads[k]).append(k == ch ? (char) l : (char) types[k]);
+		}
+		signature = b.toString();
+		return signature;
+
+	}
+
+	@Override
+	public Parse clone() {
+		ParseNBest p = new ParseNBest();
+		p.heads = new short[heads.length];
+		p.labels = new short[labels.length];
+
+		System.arraycopy(heads, 0, p.heads, 0, heads.length);
+		System.arraycopy(labels, 0, p.labels, 0, labels.length);
+
+		p.f1 = f1;
+
+		return p;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/PipeGen.java b/dependencyParser/experimental/mate-tools/src/is2/data/PipeGen.java
new file mode 100755
index 0000000..728666f
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/PipeGen.java
@@ -0,0 +1,83 @@
+package is2.data;
+
+public class PipeGen {
+
+	public static final String SENSE = "SENSE", POS = "POS", DIST = "DIST", WORD = "WORD", PRED = "PRED", ARG = "ARG",
+			FEAT = "F", REL = "REL", TYPE = "TYPE", CHAR = "C", FFEATS = "FF", DIR = "DIR", LA = "LA", RA = "RA";
+
+	public static final String GPOS = "GPOS", MID = "MID", END = "END", STR = "STR", FM = "FM", NOFEAT = "NOFEAT";
+
+	public static final String _0 = "0", _4 = "4", _3 = "3", _2 = "2", _1 = "1", _5 = "5", _10 = "10";
+
+	static public int outValue(int num1, int del) {
+		String out = "" + num1;
+		StringBuffer delS = new StringBuffer();
+		for (int k = 0; k < del; k++)
+			delS.append('\b');
+		del = out.length();
+		System.out.print(delS + out);
+		return del;
+	}
+
+	static public int outValue(int num1, int del, long last) {
+		String out = "" + num1 + " (" + (System.currentTimeMillis() - last) / (num1 + 1) + " ms/instance)";
+		StringBuffer delS = new StringBuffer();
+		for (int k = 0; k < del; k++)
+			delS.append('\b');
+		del = out.length();
+		System.out.print(delS + out);
+		return del;
+	}
+
+	static public int outValueErr(int num1, float err, float f1, int del, long last) {
+
+		String out = "" + num1 + " (" + (System.currentTimeMillis() - last) / (num1 + 1) + " ms/instance "
+				+ (err / num1) + " err/instance f1=" + f1 + ") ";
+		StringBuffer delS = new StringBuffer();
+		for (int k = 0; k < del; k++)
+			delS.append('\b');
+		del = out.length();
+		System.out.print(delS + out);
+		return del;
+	}
+
+	static public int outValueErr(int num1, float err, float f1, int del, long last, double upd) {
+		String out = "" + num1 + " (" + (System.currentTimeMillis() - last) / (num1 + 1) + " ms/instance "
+				+ (err / num1) + " err/instance f1=" + f1 + ") upd " + upd;
+		StringBuffer delS = new StringBuffer();
+		for (int k = 0; k < del; k++)
+			delS.append('\b');
+		del = out.length();
+		System.out.print(delS + out);
+		return del;
+	}
+
+	static public int outValueErr(int num1, float err, float f1, int del, long last, double upd, String info) {
+		String out = "" + num1 + " (" + (System.currentTimeMillis() - last) / (num1 + 1) + " ms/instance "
+				+ (err / num1) + " err/instance f1=" + f1 + ") upd " + upd + " " + info;
+		StringBuffer delS = new StringBuffer();
+		for (int k = 0; k < del; k++)
+			delS.append('\b');
+		del = out.length();
+		System.out.print(delS + out);
+		return del;
+	}
+
+	/**
+	 * @param cnt
+	 * @param l
+	 * @return
+	 */
+	public static String getSecondsPerInstnace(int cnt, long l) {
+		return " " + (l / (cnt * 1000f)) + " seconds/sentnece ";
+	}
+
+	/**
+	 * @param l
+	 * @return
+	 */
+	public static String getUsedTime(long l) {
+		return "Used time " + ((l) / 1000f) + " seconds ";
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/PrimeFinder.java b/dependencyParser/experimental/mate-tools/src/is2/data/PrimeFinder.java
new file mode 100644
index 0000000..fab0901
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/PrimeFinder.java
@@ -0,0 +1,51 @@
+/**
+ *
+ */
+package is2.data;
+
+import java.util.Arrays;
+
+/**
+ * @author Dr. Bernd Bohnet, 13.05.2010
+ *
+ *
+ */
+public class PrimeFinder {
+
+	public PrimeFinder() {
+	}
+
+	public static final int nextPrime(int desiredCapacity) {
+		int i = Arrays.binarySearch(primeCapacities, desiredCapacity);
+		if (i < 0)
+			i = -i - 1;
+		return primeCapacities[i];
+	}
+
+	public static final int largestPrime = 2147483647;
+	private static final int primeCapacities[] = { 2147483647, 5, 11, 23, 47, 97, 197, 397, 797, 1597, 3203, 6421,
+			12853, 25717, 51437, 102877, 205759, 411527, 823117, 1646237, 3292489, 6584983, 13169977, 26339969,
+			52679969, 105359939, 210719881, 421439783, 842879579, 1685759167, 433, 877, 1759, 3527, 7057, 14143, 28289,
+			56591, 113189, 226379, 452759, 905551, 1811107, 3622219, 7244441, 14488931, 28977863, 57955739, 115911563,
+			231823147, 463646329, 927292699, 1854585413, 953, 1907, 3821, 7643, 15287, 30577, 61169, 122347, 244703,
+			489407, 978821, 1957651, 3915341, 7830701, 15661423, 31322867, 62645741, 125291483, 250582987, 501165979,
+			1002331963, 2004663929, 1039, 2081, 4177, 8363, 16729, 33461, 66923, 133853, 267713, 535481, 1070981,
+			2141977, 4283963, 8567929, 17135863, 34271747, 68543509, 137087021, 274174111, 548348231, 1096696463, 31,
+			67, 137, 277, 557, 1117, 2237, 4481, 8963, 17929, 35863, 71741, 143483, 286973, 573953, 1147921, 2295859,
+			4591721, 9183457, 18366923, 36733847, 73467739, 146935499, 293871013, 587742049, 1175484103, 599, 1201,
+			2411, 4831, 9677, 19373, 38747, 77509, 155027, 310081, 620171, 1240361, 2480729, 4961459, 9922933, 19845871,
+			39691759, 79383533, 158767069, 317534141, 635068283, 1270136683, 311, 631, 1277, 2557, 5119, 10243, 20507,
+			41017, 82037, 164089, 328213, 656429, 1312867, 2625761, 5251529, 10503061, 21006137, 42012281, 84024581,
+			168049163, 336098327, 672196673, 1344393353, 3, 7, 17, 37, 79, 163, 331, 673, 1361, 2729, 5471, 10949,
+			21911, 43853, 87719, 175447, 350899, 701819, 1403641, 2807303, 5614657, 11229331, 22458671, 44917381,
+			89834777, 179669557, 359339171, 718678369, 1437356741, 43, 89, 179, 359, 719, 1439, 2879, 5779, 11579,
+			23159, 46327, 92657, 185323, 370661, 741337, 1482707, 2965421, 5930887, 11861791, 23723597, 47447201,
+			94894427, 189788857, 379577741, 759155483, 1518310967, 379, 761, 1523, 3049, 6101, 12203, 24407, 48817,
+			97649, 195311, 390647, 781301, 1562611, 3125257, 6250537, 12501169, 25002389, 50004791, 100009607,
+			200019221, 400038451, 800076929, 1600153859 };
+
+	static {
+		Arrays.sort(primeCapacities);
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/RandomIndex.java b/dependencyParser/experimental/mate-tools/src/is2/data/RandomIndex.java
new file mode 100644
index 0000000..8ab61e9
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/RandomIndex.java
@@ -0,0 +1,150 @@
+/**
+ *
+ */
+package is2.data;
+
+import is2.util.DB;
+
+/**
+ * @author Dr. Bernd Bohnet, 20.05.2011
+ *
+ *
+ */
+public class RandomIndex implements Long2IntInterface {
+
+	final int[] prims = { 52349171, 199951347, 89990, 5001, 32891, 17, 19, 23, 29, 31, 37, 47, 53, 59, 61, 67, 71 };
+	// final int[] prims = {1,3,5,7,11,17,19,23,29,31,37,47,53,59,61,67,71};
+
+	final long hashFunctionModifiers[];
+
+	final int kbit, lbit;
+	final int hsize; // maximal size of hash
+
+	final int bits; // available bits
+	final int moves; // needed moves to put a number into
+
+	/**
+	 * Creates the random functions.
+	 *
+	 * @param kbit
+	 *            The bits to be mapped
+	 * @param lbit
+	 *            The left shift of the bits
+	 * @param hsize
+	 *            The size of the featurs space (not included in the original
+	 *            algorithm)
+	 * @param numberFunctions
+	 *            The number of the hash functions
+	 */
+	public RandomIndex(int kbit, int lbit, int hsize, int numberFunctions) {
+
+		this.kbit = kbit;
+		this.lbit = lbit;
+
+		if (hsize <= 0)
+			this.hsize = 67000001; // default value
+		else
+			this.hsize = hsize;
+
+		bits = (int) Math.ceil(Math.log(this.hsize) / Math.log(2));
+
+		moves = (int) Math.ceil(64f / bits);
+
+		DB.println("moves " + moves + " bits " + bits + " hsize " + hsize);
+
+		hashFunctionModifiers = new long[numberFunctions];
+
+		for (int f = 0; f < numberFunctions; f++)
+			hashFunctionModifiers[f] = prims[f];
+	}
+
+	public int[] hash(long x) {
+		int[] hvals = new int[hashFunctionModifiers.length];
+
+		for (int k = 0; k < hashFunctionModifiers.length; k++) {
+
+			// the original function: value = ((x+1) * hashFunctionModifiers[k]
+			// & m ) >> n;
+
+			// the first part of the original function
+			long value = (x + 1) * hashFunctionModifiers[k];
+
+			// do the above >> n with a maximal size of the available hash
+			// values
+			// Shift all bits until they have been each xor-ed (^) in the range
+			// of the hash
+			// in order the have all information potentially represented there.
+
+			for (int j = 1; j <= moves; j++)
+				value = value ^ (value >> (bits * j));
+
+			// Map the value to the range of the available space should be the
+			// same as (value & m) .
+			hvals[k] = Math.abs((int) value % hsize);
+		}
+		return hvals;
+	}
+
+	public int[] hashU(long x) {
+		int[] hvals = new int[hashFunctionModifiers.length];
+
+		long y = Long.reverse(x);
+		for (int k = 0; k < hashFunctionModifiers.length; k++) {
+
+			// the original function: value = ((x+1) * hashFunctionModifiers[k]
+			// & m ) >> n;
+
+			// the first part of the original function
+			long value1 = (((y + 1) * hashFunctionModifiers[k]) /* % 2 pow 64 */ ) >> (kbit - lbit);
+
+			// I get probably only the first part lets get the second part too
+			// long value2 = (((y+1>>20) * hashFunctionModifiers[k]) /* % 2 pow
+			// 64 */ ) >> (kbit-lbit);
+
+			// the modulo (%) 2 pow 64 is done since the long number can not be
+			// larger than 2 pow 64.
+			// System.out.println("value "+value+" shift "+(lbit-kbit));
+			hvals[k] = Math.abs((int) value1);
+		}
+		return hvals;
+	}
+
+	/*
+	 * (defun generate-hash-fn (&key (k-bit 32) (l-bit 8) verbosep constants
+	 * (count 4))
+	 * 
+	 * (labels ((random-constant () (let ((a (+ (random (- (expt 2 k-bit) 1))
+	 * 1))) (logior a 1)))) ;; inclusive OR ensures odd number. (let ((pdiff (-
+	 * (- k-bit l-bit)));; neg. sign to do a rightshift, see ash() (sub1 (-
+	 * (expt 2 k-bit) 1)) (constants (copy-list constants))) (unless constants
+	 * (loop ;; a = odd number a where 0 < a < u. until (= count (length
+	 * constants)) do (pushnew (random-constant) constants))) (when verbosep
+	 * (format t "~&generate-hash-fn(): using random constants: ~a~%"
+	 * constants)) (values #'(lambda (x) (loop for a in constants ;;; always add
+	 * 1 to x to avoid f(0)=0. collect (ash (logand (* (+ 1 x) a) sub1) pdiff)))
+	 * constants))))
+	 * 
+	 */
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.data.Long2IntInterface#l2i(long)
+	 */
+	@Override
+	public int l2i(long l) {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.data.Long2IntInterface#size()
+	 */
+	@Override
+	public int size() {
+		return hsize;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/SentenceData09.java b/dependencyParser/experimental/mate-tools/src/is2/data/SentenceData09.java
new file mode 100755
index 0000000..386fa39
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/SentenceData09.java
@@ -0,0 +1,530 @@
+package is2.data;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.StringWriter;
+import java.util.ArrayList;
+
+import is2.io.CONLLWriter09;
+import is2.io.IOGenerals;
+
+public class SentenceData09 {
+
+	public String[] id;
+	public String[] forms;
+
+	public String[] lemmas;
+	public String[] plemmas;
+
+	public int[] heads;
+	public int[] pheads;
+
+	public String[] labels;
+	public String[] plabels;
+
+	public String[] gpos; // gold pos
+	public String[] ppos;
+
+	public String feats[][];
+	// public String[] split_lemma;
+
+	public String[] sem;
+	public int[] semposition;
+
+	// predicate number, argument number -> argument string
+	public String[][] arg;
+	public int[][] argposition;
+
+	public String[] fillp;
+
+	public String[] ofeats;
+	public String[] pfeats;
+
+	public SentenceData09() {
+	}
+
+	public SentenceData09(String[] forms, String[] postags, String[] labs, int[] heads) {
+		this.forms = forms;
+		gpos = postags;
+		labels = labs;
+		this.heads = heads;
+	}
+
+	public SentenceData09(String[] forms, String[] lemmas, String[] postags, String[] labs, int[] heads) {
+		this.forms = forms;
+		gpos = postags;
+		// ppos = postags;
+
+		labels = labs;
+		this.heads = heads;
+		this.plemmas = lemmas;
+	}
+
+	public SentenceData09(String[] forms, String[] lemmas, String[] gpos, String[] ppos, String[] labs, int[] heads) {
+		this.forms = forms;
+		this.gpos = gpos;
+		this.ppos = ppos;
+
+		labels = labs;
+		this.heads = heads;
+		this.plemmas = lemmas;
+
+	}
+
+	public SentenceData09(String[] forms, String[] lemmas, String[] gpos, String[] ppos, String[] labs, int[] heads,
+			String[] fillpred) {
+		this.forms = forms;
+		this.gpos = gpos;
+		this.ppos = ppos;
+
+		labels = labs;
+		this.heads = heads;
+		this.plemmas = lemmas;
+
+		fillp = fillpred;
+	}
+
+	public SentenceData09(String[] forms, String[] lemmas, String[] olemmas, String[] gpos, String[] ppos,
+			String[] labs, int[] heads, String[] fillpred) {
+		this.forms = forms;
+		this.gpos = gpos;
+		this.ppos = ppos;
+
+		labels = labs;
+		this.heads = heads;
+		this.plemmas = lemmas;
+		this.lemmas = olemmas;
+		fillp = fillpred;
+	}
+
+	public SentenceData09(String[] forms, String[] olemmas, String[] lemmas, String[] gpos, String[] ppos,
+			String[] labs, int[] heads, String[] fillpred, String[] of, String[] pf) {
+		this.forms = forms;
+		this.gpos = gpos;
+		this.ppos = ppos;
+
+		labels = labs;
+		this.heads = heads;
+		this.pheads = heads;
+		this.plabels = labs;
+		this.plemmas = lemmas;
+		this.lemmas = olemmas;
+
+		this.ofeats = of;
+		this.pfeats = pf;
+		fillp = fillpred;
+	}
+
+	/**
+	 * Create an instance without root of the input instance
+	 * 
+	 * @param instance
+	 */
+	public SentenceData09(SentenceData09 i) {
+
+		int length = i.length() - 1;
+
+		forms = new String[length];
+		gpos = new String[length];
+		ppos = new String[length];
+		plemmas = new String[length];
+		plabels = new String[length];
+		lemmas = new String[length];
+		heads = new int[length];
+		pheads = new int[length];
+		ofeats = new String[length];
+		pfeats = new String[length];
+		labels = new String[length];
+		fillp = new String[length];
+		id = new String[length];
+
+		for (int j = 0; j < length; j++) {
+			forms[j] = i.forms[j + 1];
+			ppos[j] = i.ppos[j + 1];
+			gpos[j] = i.gpos[j + 1];
+
+			labels[j] = i.labels[j + 1];
+			heads[j] = i.heads[j + 1];
+
+			if (i.pheads != null)
+				pheads[j] = i.pheads[j + 1];
+			if (i.plabels != null)
+				plabels[j] = i.plabels[j + 1];
+
+			if (i.lemmas != null)
+				lemmas[j] = i.lemmas[j + 1];
+
+			plemmas[j] = i.plemmas[j + 1];
+
+			if (i.ofeats != null)
+				ofeats[j] = i.ofeats[j + 1];
+			if (i.pfeats != null)
+				pfeats[j] = i.pfeats[j + 1];
+
+			if (i.fillp != null)
+				fillp[j] = i.fillp[j + 1];
+			if (i.id != null)
+				id[j] = i.id[j + 1];
+		}
+
+	}
+
+	public void setPPos(String[] pos) {
+		ppos = pos;
+	}
+
+	public void setLemmas(String[] lemmas) {
+		this.plemmas = lemmas;
+	}
+
+	public void setFeats(String[] fts) {
+		feats = new String[fts.length][];
+		for (int i = 0; i < fts.length; i++) {
+			feats[i] = fts[i].split("\\|");
+		}
+		pfeats = fts;
+	}
+
+	public int length() {
+		return forms.length;
+	}
+
+	@Override
+	public String toString() {
+		// prepare the output
+		StringWriter sw = new StringWriter();
+		CONLLWriter09 snt2str = new is2.io.CONLLWriter09(sw);
+		try {
+			snt2str.write(this, CONLLWriter09.NO_ROOT);
+			snt2str.finishWriting();
+			return sw.toString();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		// backup
+		StringBuffer sb = new StringBuffer();
+		for (int k = 0; k < forms.length; k++)
+			sb.append(k + 1).append('\t').append(forms[k]).append('\t').append(heads[k]).append('\t').append(labels[k])
+					.append('\n');
+		return sw.toString();
+	}
+
+	final public void write(DataOutputStream out) throws IOException {
+
+		out.writeInt(forms.length);
+		for (int k = 0; k < forms.length; k++) {
+			out.writeUTF(forms[k]);
+			out.writeUTF(ppos[k]);
+			out.writeUTF(gpos[k]);
+			out.writeInt(heads[k]);
+			out.writeUTF(labels[k]);
+			out.writeUTF(lemmas[k]);
+			out.writeUTF(plemmas[k]);
+			out.writeUTF(ofeats[k]); // needed for mtag
+			out.writeUTF(fillp[k]);
+		}
+
+		// out.writeUTF(actParseTree);
+
+	}
+
+	final public void read(DataInputStream dis) throws IOException {
+
+		int l = dis.readInt();
+
+		forms = new String[l];
+		lemmas = new String[l];
+		plemmas = new String[l];
+		ppos = new String[l];
+		gpos = new String[l];
+		labels = new String[l];
+		heads = new int[l];
+		fillp = new String[l];
+		ofeats = new String[l];
+
+		for (int k = 0; k < l; k++) {
+			forms[k] = dis.readUTF();
+			ppos[k] = dis.readUTF();
+			gpos[k] = dis.readUTF();
+			heads[k] = dis.readInt();
+			labels[k] = dis.readUTF();
+			lemmas[k] = dis.readUTF();
+			plemmas[k] = dis.readUTF();
+			ofeats[k] = dis.readUTF();
+			fillp[k] = dis.readUTF();
+
+		}
+	}
+
+	private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
+		forms = (String[]) in.readObject();
+		plemmas = (String[]) in.readObject();
+		ppos = (String[]) in.readObject();
+		heads = (int[]) in.readObject();
+		labels = (String[]) in.readObject();
+	}
+
+	public void addPredicate(int i, String s) {
+
+		int predId;
+		if (sem == null) {
+			predId = 0;
+			sem = new String[1];
+			semposition = new int[1];
+		} else {
+			predId = sem.length;
+			String p[] = new String[sem.length + 1];
+			System.arraycopy(sem, 0, p, 0, sem.length);
+			int id[] = new int[sem.length + 1];
+			System.arraycopy(semposition, 0, id, 0, semposition.length);
+			sem = p;
+			semposition = id;
+		}
+		sem[predId] = s;
+		semposition[predId] = i;
+	}
+
+	/**
+	 * Add an argument
+	 * 
+	 * @param i
+	 *            the instance (the child)
+	 * @param predId
+	 *            the id of the predicate (the head)
+	 * @param a
+	 *            the label of the argument
+	 */
+	public void addArgument(int i, int predId, String a) {
+
+		if (a == null || a.equals("_"))
+			return;
+
+		// ensure the space for the argument in the data structure
+		if (arg == null) {
+			arg = new String[predId + 1][];
+			argposition = new int[predId + 1][];
+		} else if (arg.length <= predId) {
+			String p[][] = new String[predId + 1][];
+			System.arraycopy(arg, 0, p, 0, arg.length);
+			arg = p;
+
+			int id[][] = new int[predId + 1][];
+			System.arraycopy(argposition, 0, id, 0, argposition.length);
+			argposition = id;
+		}
+
+		int aId;
+		if (arg[predId] == null) {
+			aId = 0;
+			arg[predId] = new String[1];
+			argposition[predId] = new int[1];
+		} else {
+			aId = arg[predId].length;
+			String args[] = new String[arg[predId].length + 1];
+			System.arraycopy(arg[predId], 0, args, 0, arg[predId].length);
+			arg[predId] = args;
+
+			int argsId[] = new int[argposition[predId].length + 1];
+			System.arraycopy(argposition[predId], 0, argsId, 0, argposition[predId].length);
+			argposition[predId] = argsId;
+		}
+
+		arg[predId][aId] = a;
+		argposition[predId][aId] = i;
+
+	}
+
+	public int[] getParents() {
+		return heads;
+	}
+
+	public String[] getLabels() {
+		return labels;
+	}
+
+	public String printSem() {
+
+		if (sem == null)
+			return "";
+		StringBuilder s = new StringBuilder();
+
+		for (int k = 0; k < sem.length; k++) {
+			s.append(sem[k]).append("\n");
+
+			if (arg == null) {
+				s.append("arg == null");
+			} else if (arg.length <= k) {
+				s.append("args.length <=k arg.length:" + arg.length + " k:" + k);
+			} else if (arg[k] != null) {
+				for (int a = 0; a < arg[k].length; a++) {
+					s.append("  ").append(arg[k][a]);
+				}
+			} else {
+				s.append("args == null ");
+			}
+			s.append('\n');
+		}
+		return s.toString();
+	}
+
+	/**
+	 * Initialize a instance so that a tagger, parser, etc. could be applied
+	 * 
+	 * @param forms
+	 */
+	public void init(String[] forms) {
+		this.forms = forms;
+		heads = new int[forms.length];
+		gpos = new String[forms.length];
+		ppos = new String[forms.length];
+		plemmas = new String[forms.length];
+		feats = new String[forms.length][0];
+		labels = new String[forms.length];
+	}
+
+	/**
+	 * @param instance
+	 * @param fillp2
+	 * @param i09
+	 */
+	public void createSemantic(SentenceData09 instance) {
+
+		this.sem = instance.sem;
+		this.semposition = instance.semposition;
+
+		if (instance.semposition != null)
+			for (int k = 0; k < instance.semposition.length; k++) {
+				this.semposition[k] = instance.semposition[k] - 1;
+			}
+
+		this.arg = instance.arg;
+
+		this.argposition = instance.argposition;
+
+		if (this.argposition != null)
+			for (int p = 0; p < instance.argposition.length; p++) {
+				if (this.argposition[p] != null)
+					for (int a = 0; a < instance.argposition[p].length; a++)
+						this.argposition[p][a] = instance.argposition[p][a] - 1;
+			}
+
+	}
+
+	/**
+	 *
+	 */
+	public String oneLine() {
+
+		StringBuffer o = new StringBuffer();
+		for (int i = 1; i < this.length(); i++) {
+
+			if (i != 1)
+				o.append(" ");
+			o.append(this.forms[i]);
+		}
+		return o.toString();
+	}
+
+	/**
+	 * Get the children of this instance
+	 * 
+	 * @param head
+	 * @return children of the head
+	 */
+	public ArrayList<Integer> getChildren(int head) {
+
+		ArrayList<Integer> children = new ArrayList<Integer>();
+		for (int i = 0; i < length(); i++) {
+			if (heads[i] == head)
+				children.add(i);
+		}
+		return children;
+	}
+
+	public void createWithRoot(SentenceData09 i) {
+
+		int length = i.length();
+		int offset = 0;
+		if (!i.forms[0].equals(IOGenerals.ROOT)) {
+			length++;
+			offset = -1;
+		}
+
+		forms = new String[length];
+		gpos = new String[length];
+		ppos = new String[length];
+		plemmas = new String[length];
+		plabels = new String[length];
+		lemmas = new String[length];
+		heads = new int[length];
+		pheads = new int[length];
+		ofeats = new String[length];
+		pfeats = new String[length];
+		labels = new String[length];
+		fillp = new String[length];
+		id = new String[length];
+		feats = new String[forms.length][];
+
+		for (int j = 1; j < length; j++) {
+			forms[j] = i.forms[j + offset];
+			ppos[j] = i.ppos[j + offset];
+			gpos[j] = i.gpos[j + offset];
+
+			labels[j] = i.labels[j + offset];
+			heads[j] = i.heads[j + offset];
+
+			if (i.pheads != null)
+				pheads[j] = i.pheads[j + offset];
+			if (i.plabels != null)
+				plabels[j] = i.plabels[j + offset];
+
+			if (i.lemmas != null)
+				lemmas[j] = i.lemmas[j + offset];
+
+			plemmas[j] = i.plemmas[j + offset];
+
+			// if (i.ofeats!=null) ofeats[j] = i.ofeats[j+offset];
+
+			ofeats[j] = i.ofeats[j + offset].equals(CONLLWriter09.DASH) ? "_" : i.ofeats[j + offset];
+
+			// if (i.pfeats!=null) pfeats[j] = i.pfeats[j+offset];
+
+			if (i.pfeats != null && i.pfeats[j + offset] != null) {
+				if (i.pfeats[j + offset].equals(CONLLWriter09.DASH))
+					feats[j] = null;
+				else {
+					feats[j] = i.pfeats[j + offset].split(IOGenerals.PIPE);
+
+					// if (info[7].equals(CONLLWriter09.DASH)) it.feats[i]=null;
+					// else {
+					// it.feats[i] =info[7].split(PIPE);
+					pfeats[j] = i.pfeats[j + offset];
+					// }
+				}
+			}
+
+			if (i.fillp != null)
+				fillp[j] = i.fillp[j + offset];
+			if (i.id != null)
+				id[j] = i.id[j + offset];
+		}
+
+		forms[0] = IOGenerals.ROOT;
+		plemmas[0] = IOGenerals.ROOT_LEMMA;
+		fillp[0] = "N";
+		lemmas[0] = IOGenerals.ROOT_LEMMA;
+
+		gpos[0] = IOGenerals.ROOT_POS;
+		ppos[0] = IOGenerals.ROOT_POS;
+		labels[0] = IOGenerals.NO_TYPE;
+		heads[0] = -1;
+		plabels[0] = IOGenerals.NO_TYPE;
+		pheads[0] = -1;
+		ofeats[0] = IOGenerals.NO_TYPE;
+		id[0] = "0";
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/data/Thesaurus.java b/dependencyParser/experimental/mate-tools/src/is2/data/Thesaurus.java
new file mode 100644
index 0000000..bafc3b9
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/data/Thesaurus.java
@@ -0,0 +1,200 @@
+/**
+ *
+ */
+package is2.data;
+
+import java.io.BufferedReader;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+
+import is2.util.DB;
+
+/**
+ * @author Dr. Bernd Bohnet, 28.10.2010
+ *
+ *
+ */
+final public class Thesaurus {
+
+	public static final String LPATH = "LP";
+	public static final String SPATH = "SP";
+
+	// [word][p] p = [0:long-path | 1:short-path]
+	final private int[][] word2path;
+
+	public Thesaurus() {
+		word2path = new int[0][];
+	}
+
+	/**
+	 * @param clusterFile
+	 * @param mf
+	 *
+	 */
+	public Thesaurus(String clusterFile, IEncoderPlus mf, int ls) {
+
+		final String REGEX = "\t";
+
+		// register words
+		try {
+			BufferedReader inputReader = new BufferedReader(
+					new InputStreamReader(new FileInputStream(clusterFile), "UTF-8"), 32768);
+
+			int cnt = 0;
+			String line;
+			while ((line = inputReader.readLine()) != null) {
+
+				cnt++;
+				try {
+					String[] split = line.split(REGEX);
+					// mf.register(LPATH,
+					// split[0].length()<ls?split[0]:split[0].substring(0,ls));
+					mf.register(PipeGen.WORD, split[0]);
+					mf.register(PipeGen.WORD, split[1]);
+				} catch (Exception e) {
+					System.out.println("Error in cluster line " + cnt + " error: " + e.getMessage());
+				}
+			}
+			System.out.println("read number of thesaury entries " + cnt);
+			inputReader.close();
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		word2path = new int[mf.getFeatureCounter().get(PipeGen.WORD)][];
+
+		// insert words
+		try {
+			String line;
+			BufferedReader inputReader = new BufferedReader(
+					new InputStreamReader(new FileInputStream(clusterFile), "UTF-8"), 32768);
+
+			int startWd = -1;
+			ArrayList<Integer> wrds = new ArrayList<Integer>();
+			while ((line = inputReader.readLine()) != null) {
+
+				String[] split = line.split(REGEX);
+				int wd = mf.getValue(PipeGen.WORD, split[0]);
+				// DB.println("wd "+wd+" "+startWd);
+				if (startWd == wd) {
+					int thesaurusWrd = mf.getValue(PipeGen.WORD, split[1]);
+					if (thesaurusWrd != wd)
+						wrds.add(thesaurusWrd);
+				} else if (startWd != -1) {
+					int[] ths = new int[wrds.size()];
+					for (int k = 0; k < ths.length; k++)
+						ths[k] = wrds.get(k);
+					word2path[startWd] = ths;
+					// DB.println(""+wrds+" size "+ths.length);
+					wrds.clear();
+					int thesaurusWrd = mf.getValue(PipeGen.WORD, split[1]);
+					if (thesaurusWrd != wd)
+						wrds.add(thesaurusWrd);
+				}
+				startWd = wd;
+			}
+
+			if (wrds.size() != 0) {
+				// put rest of the words
+				int[] ths = new int[wrds.size()];
+				for (int k = 0; k < ths.length; k++)
+					ths[k] = wrds.get(k);
+				word2path[startWd] = ths;
+				// DB.println(""+wrds+" size "+ths.length);
+				wrds.clear();
+
+			}
+
+			inputReader.close();
+			int fill = 0;
+			for (int[] element : word2path) {
+				if (element != null)
+					fill++;
+			}
+			/*
+			 * for(int l = 0; l<word2path.length; l++ ){ if (word2path[l][1]!=0)
+			 * fillL++; if (word2path[l][1]<-1)
+			 * System.out.println("lower "+word2path[l][1]); }
+			 */
+			System.out.println("filled " + fill + " of " + word2path.length);
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * Read the cluster
+	 * 
+	 * @param dos
+	 * @throws IOException
+	 */
+	public Thesaurus(DataInputStream dis) throws IOException {
+
+		word2path = new int[dis.readInt()][];
+		for (int i = 0; i < word2path.length; i++) {
+			int len = dis.readInt();
+			if (len > 0) {
+				word2path[i] = new int[len];
+				for (int j = 0; j < len; j++) {
+					word2path[i][j] = dis.readInt();
+
+				}
+			}
+
+			word2path[i][0] = dis.readShort();
+		}
+		DB.println("Read cluster with " + word2path.length + " words ");
+	}
+
+	/**
+	 * Write the cluster
+	 * 
+	 * @param dos
+	 * @throws IOException
+	 */
+	public void write(DataOutputStream dos) throws IOException {
+
+		dos.writeInt(word2path.length);
+		for (int[] i : word2path) {
+			dos.writeInt(i == null ? 0 : i.length);
+
+			if (i != null) {
+				for (int element : i) {
+
+					dos.writeInt(element);
+
+				}
+
+			}
+		}
+
+	}
+
+	/**
+	 * @param form
+	 *            the id of a word form
+	 * @return the short path to the word form in the cluster
+	 * 
+	 *         final public int getSP(int form) { if (word2path.length<form)
+	 *         return -1; return word2path[form][0]; }
+	 */
+	/**
+	 * get the long path to a word form in the cluster
+	 * 
+	 * @param form
+	 *            the id of a word form
+	 * @return the long path to the word
+	 */
+	final public int get(int form, int k) {
+		if (word2path.length < form || word2path[form] == null)
+			return -1;
+		return word2path[form][k];
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/io/CONLLReader04.java b/dependencyParser/experimental/mate-tools/src/is2/io/CONLLReader04.java
new file mode 100644
index 0000000..695f10d
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/io/CONLLReader04.java
@@ -0,0 +1,264 @@
+
+package is2.io;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+
+import is2.data.Instances;
+import is2.data.SentenceData09;
+import is2.util.DB;
+
+/**
+ * This class reads files in the CONLL-08 and CONLL-09 format.
+ *
+ * @author Bernd Bohnet
+ */
+public class CONLLReader04 {
+
+	private static final String US = "_";
+	private static final String REGEX = "\t";
+	public static final String STRING = "*";
+	public static final String PIPE = "\\|";
+	public static final String NO_TYPE = "<no-type>";
+	public static final String ROOT_POS = "<root-POS>";
+	public static final String ROOT_LEMMA = "<root-LEMMA>";
+	public static final String ROOT = "<root>";
+	public static final String EMPTY_FEAT = "<ef>";
+
+	private static final String NUMBER = "[0-9]+|[0-9]+\\.[0-9]+|[0-9]+[0-9,]+";
+	private static final String NUM = "<num>";
+
+	private BufferedReader inputReader;
+
+	public static final int TASK08 = 8;
+	public static final int TASK09 = 9;
+
+	public static boolean normalizeOn = true;
+
+	private int lineNumber = 0;
+
+	public CONLLReader04() {
+	}
+
+	public CONLLReader04(String file) {
+		lineNumber = 0;
+		try {
+			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"), 32768); // ,"UTF-8"
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public CONLLReader04(String file, int task) {
+		this(file);
+	}
+
+	public void startReading(String file) {
+		lineNumber = 0;
+		try {
+			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"), 32768);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * i.forms[heads[l]-1]+" "+rel+" "+ Read a instance
+	 * 
+	 * @return a instance
+	 * @throws Exception
+	 */
+	public SentenceData09 getNext() throws Exception {
+
+		try {
+
+			ArrayList<String[]> lineList = new ArrayList<String[]>();
+
+			String line = inputReader.readLine();
+
+			while (line != null && line.length() < 2) {
+				line = inputReader.readLine();
+				lineNumber++;
+				System.out.println("skip empty line at line " + lineNumber);
+			}
+
+			while (line != null && line.length() != 0 && !line.startsWith(STRING) && !line.startsWith(REGEX)) {
+				lineList.add(line.split(REGEX));
+				line = inputReader.readLine();
+				lineNumber++;
+			}
+
+			int length = lineList.size();
+
+			if (length == 0) {
+				inputReader.close();
+				return null;
+			}
+
+			SentenceData09 it = new SentenceData09();
+
+			// column content
+			// 1 id
+			// 2 form
+			// 3 lemma
+			// 4 cpos-tag
+			// 5 pos-tog
+			// 6 feats
+			// 7 head
+			// 8 deprel
+
+			it.forms = new String[length + 1];
+
+			it.plemmas = new String[length + 1];
+			it.gpos = new String[length + 1];
+			it.labels = new String[length + 1];
+			it.heads = new int[length + 1];
+			it.pheads = new int[length + 1];
+			it.plabels = new String[length + 1];
+
+			it.ppos = new String[length + 1];
+			it.lemmas = new String[length + 1];
+			it.fillp = new String[length + 1];
+			it.feats = new String[length + 1][];
+			it.ofeats = new String[length + 1];
+			it.pfeats = new String[length + 1];
+
+			it.forms[0] = ROOT;
+			it.plemmas[0] = ROOT_LEMMA;
+			it.fillp[0] = "N";
+			it.lemmas[0] = ROOT_LEMMA;
+
+			it.gpos[0] = ROOT_POS;
+			it.ppos[0] = ROOT_POS;
+			it.labels[0] = NO_TYPE;
+			it.heads[0] = -1;
+			it.plabels[0] = NO_TYPE;
+			it.pheads[0] = -1;
+			it.ofeats[0] = NO_TYPE;
+
+			// root is 0 therefore start with 1
+
+			for (int i = 1; i <= length; i++) {
+
+				String[] info = lineList.get(i - 1);
+
+				it.forms[i] = info[0]; // normalize(
+
+				it.lemmas[i] = "_";
+				it.plemmas[i] = "_";
+
+				// 3 cpos
+
+				it.gpos[i] = info[1];
+				it.ppos[i] = info[1];
+
+				it.ofeats[i] = "_";
+
+				it.feats[i] = null;
+				// it.feats[i] =info[5].split(PIPE);
+				it.pfeats[i] = "_";
+
+				if (info[2].equals(US))
+					it.heads[i] = -1;
+				else
+					it.heads[i] = Integer.parseInt(info[2]);// head
+
+				it.labels[i] = info[3];
+
+			}
+			return it;
+
+		} catch (Exception e) {
+			System.out.println("\n!!! Error in input file at line : " + lineNumber + " " + e.toString());
+			e.printStackTrace();
+			throw new Exception();
+			// return null;
+		}
+
+	}
+
+	/**
+	 * Read a instance an store it in a compressed format
+	 * 
+	 * @param is
+	 * @return
+	 * @throws IOException
+	 */
+	final public SentenceData09 getNext(Instances is) throws Exception {
+
+		SentenceData09 it = getNext();
+
+		if (is != null)
+			insert(is, it);
+
+		return it;
+
+	}
+
+	final public boolean insert(Instances is, SentenceData09 it) throws IOException {
+
+		try {
+
+			if (it == null) {
+				inputReader.close();
+				return false;
+			}
+
+			int i = is.createInstance09(it.length());
+
+			for (int p = 0; p < it.length(); p++) {
+
+				is.setForm(i, p, normalize(it.forms[p]));
+				is.setGPos(i, p, it.gpos[p]);
+
+				if (it.ppos[p] == null || it.ppos[p].equals(US)) {
+					is.setPPoss(i, p, it.gpos[p]);
+				} else
+					is.setPPoss(i, p, it.ppos[p]);
+
+				if (it.plemmas[p] == null || it.plemmas[p].equals(US)) {
+					is.setLemma(i, p, normalize(it.forms[p]));
+				} else
+					is.setLemma(i, p, normalize(it.plemmas[p]));
+
+				is.setFeats(i, p, it.feats[p]);
+
+				is.setFeature(i, p, it.ofeats[p]);
+
+				is.setRel(i, p, it.labels[p]);
+				if (it.plabels != null)
+					is.setPRel(i, p, it.plabels[p]);
+				is.setHead(i, p, it.heads[p]);
+				if (it.pheads != null)
+					is.setPHead(i, p, it.pheads[p]);
+
+				if (it.fillp != null && it.fillp[p] != null && it.fillp[p].startsWith("Y"))
+					is.pfill[i].set(p);
+				else
+					is.pfill[i].clear(p);
+			}
+
+			if (is.createSem(i, it)) {
+				DB.println("count " + i + " len " + it.length());
+				DB.println(it.printSem());
+			}
+		} catch (Exception e) {
+			DB.println("head " + it);
+			e.printStackTrace();
+		}
+		return true;
+
+	}
+
+	public static String normalize(String s) {
+		if (!normalizeOn)
+			return s;
+		if (s.matches(NUMBER))
+			return NUM;
+		return s;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/io/CONLLReader06.java b/dependencyParser/experimental/mate-tools/src/is2/io/CONLLReader06.java
new file mode 100755
index 0000000..10d1d2d
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/io/CONLLReader06.java
@@ -0,0 +1,271 @@
+
+package is2.io;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+
+import is2.data.Instances;
+import is2.data.SentenceData09;
+import is2.util.DB;
+
+/**
+ * This class reads files in the CONLL-08 and CONLL-09 format.
+ *
+ * @author Bernd Bohnet
+ */
+public class CONLLReader06 {
+
+	private static final String US = "_";
+	private static final String REGEX = "\t";
+	public static final String STRING = "*";
+	public static final String PIPE = "\\|";
+	public static final String NO_TYPE = "<no-type>";
+	public static final String ROOT_POS = "<root-POS>";
+	public static final String ROOT_LEMMA = "<root-LEMMA>";
+	public static final String ROOT = "<root>";
+	public static final String EMPTY_FEAT = "<ef>";
+
+	private static final String NUMBER = "[0-9]+|[0-9]+\\.[0-9]+|[0-9]+[0-9,]+";
+	private static final String NUM = "<num>";
+
+	private BufferedReader inputReader;
+
+	public static final int TASK08 = 8;
+	public static final int TASK09 = 9;
+
+	public static boolean normalizeOn = true;
+
+	private int lineNumber = 0;
+
+	public CONLLReader06() {
+	}
+
+	public CONLLReader06(String file) {
+		lineNumber = 0;
+		try {
+			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"), 32768); // ,"UTF-8"
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public CONLLReader06(String file, int task) {
+		this(file);
+	}
+
+	public void startReading(String file) {
+		lineNumber = 0;
+		try {
+			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"), 32768);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * i.forms[heads[l]-1]+" "+rel+" "+ Read a instance
+	 * 
+	 * @return a instance
+	 * @throws Exception
+	 */
+	public SentenceData09 getNext() throws Exception {
+
+		try {
+
+			ArrayList<String[]> lineList = new ArrayList<String[]>();
+
+			String line = inputReader.readLine();
+
+			while (line != null && line.length() == 0) {
+				line = inputReader.readLine();
+				lineNumber++;
+				System.out.println("skip empty line at line " + lineNumber);
+			}
+
+			while (line != null && line.length() != 0 && !line.startsWith(STRING) && !line.startsWith(REGEX)) {
+				lineList.add(line.split(REGEX));
+				line = inputReader.readLine();
+				lineNumber++;
+			}
+
+			int length = lineList.size();
+
+			if (length == 0) {
+				inputReader.close();
+				return null;
+			}
+
+			SentenceData09 it = new SentenceData09();
+
+			// column content
+			// 1 id
+			// 2 form
+			// 3 lemma
+			// 4 cpos-tag
+			// 5 pos-tog
+			// 6 feats
+			// 7 head
+			// 8 deprel
+
+			it.forms = new String[length + 1];
+
+			it.plemmas = new String[length + 1];
+			it.gpos = new String[length + 1];
+			it.labels = new String[length + 1];
+			it.heads = new int[length + 1];
+			it.pheads = new int[length + 1];
+			it.plabels = new String[length + 1];
+
+			it.ppos = new String[length + 1];
+			it.lemmas = new String[length + 1];
+			it.fillp = new String[length + 1];
+			it.feats = new String[length + 1][];
+			it.ofeats = new String[length + 1];
+			it.pfeats = new String[length + 1];
+
+			it.forms[0] = ROOT;
+			it.plemmas[0] = ROOT_LEMMA;
+			it.fillp[0] = "N";
+			it.lemmas[0] = ROOT_LEMMA;
+
+			it.gpos[0] = ROOT_POS;
+			it.ppos[0] = ROOT_POS;
+			it.labels[0] = NO_TYPE;
+			it.heads[0] = -1;
+			it.plabels[0] = NO_TYPE;
+			it.pheads[0] = -1;
+			it.ofeats[0] = NO_TYPE;
+
+			// root is 0 therefore start with 1
+
+			for (int i = 1; i <= length; i++) {
+
+				String[] info = lineList.get(i - 1);
+
+				it.forms[i] = info[1]; // normalize(
+
+				it.lemmas[i] = info[2];
+				it.plemmas[i] = info[2];
+
+				// 3 cpos
+
+				it.gpos[i] = info[3];
+				it.ppos[i] = info[4];
+
+				it.ofeats[i] = info[5].equals(CONLLWriter09.DASH) ? "" : info[5];
+
+				if (info[5].equals(CONLLWriter09.DASH))
+					it.feats[i] = null;
+				else {
+					it.feats[i] = info[5].split(PIPE);
+					it.pfeats[i] = info[5];
+				}
+
+				if (info[6].equals(US))
+					it.heads[i] = -1;
+				else
+					it.heads[i] = Integer.parseInt(info[6]);// head
+
+				// it.phead[i]=info[9].equals(US) ? it.phead[i]=-1:
+				// Integer.parseInt(info[9]);// head
+
+				it.labels[i] = info[7];
+				// it.pedge[i] = info[11];
+
+			}
+			return it;
+
+		} catch (Exception e) {
+			System.out.println("\n!!! Error in input file at line : " + lineNumber + " " + e.toString());
+			e.printStackTrace();
+			throw new Exception();
+			// return null;
+		}
+
+	}
+
+	/**
+	 * Read a instance an store it in a compressed format
+	 * 
+	 * @param is
+	 * @return
+	 * @throws IOException
+	 */
+	final public SentenceData09 getNext(Instances is) throws Exception {
+
+		SentenceData09 it = getNext();
+
+		if (is != null)
+			insert(is, it);
+
+		return it;
+
+	}
+
+	final public boolean insert(Instances is, SentenceData09 it) throws IOException {
+
+		try {
+
+			if (it == null) {
+				inputReader.close();
+				return false;
+			}
+
+			int i = is.createInstance09(it.length());
+
+			for (int p = 0; p < it.length(); p++) {
+
+				is.setForm(i, p, normalize(it.forms[p]));
+				is.setGPos(i, p, it.gpos[p]);
+
+				if (it.ppos[p] == null || it.ppos[p].equals(US)) {
+					is.setPPoss(i, p, it.gpos[p]);
+				} else
+					is.setPPoss(i, p, it.ppos[p]);
+
+				if (it.plemmas[p] == null || it.plemmas[p].equals(US)) {
+					is.setLemma(i, p, normalize(it.forms[p]));
+				} else
+					is.setLemma(i, p, normalize(it.plemmas[p]));
+
+				is.setFeats(i, p, it.feats[p]);
+
+				is.setFeature(i, p, it.ofeats[p]);
+
+				is.setRel(i, p, it.labels[p]);
+				if (it.plabels != null)
+					is.setPRel(i, p, it.plabels[p]);
+				is.setHead(i, p, it.heads[p]);
+				if (it.pheads != null)
+					is.setPHead(i, p, it.pheads[p]);
+
+				if (it.fillp != null && it.fillp[p] != null && it.fillp[p].startsWith("Y"))
+					is.pfill[i].set(p);
+				else
+					is.pfill[i].clear(p);
+			}
+
+			if (is.createSem(i, it)) {
+				DB.println("count " + i + " len " + it.length());
+				DB.println(it.printSem());
+			}
+		} catch (Exception e) {
+			DB.println("head " + it);
+			e.printStackTrace();
+		}
+		return true;
+
+	}
+
+	public static String normalize(String s) {
+		if (!normalizeOn)
+			return s;
+		if (s.matches(NUMBER))
+			return NUM;
+		return s;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/io/CONLLReader08.java b/dependencyParser/experimental/mate-tools/src/is2/io/CONLLReader08.java
new file mode 100644
index 0000000..467e853
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/io/CONLLReader08.java
@@ -0,0 +1,407 @@
+
+package is2.io;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+
+import is2.data.Instances;
+import is2.data.SentenceData09;
+import is2.util.DB;
+
+/**
+ * This class reads files in the CONLL-09 format.
+ * 
+ * @author Bernd Bohnet
+ */
+public class CONLLReader08 extends IOGenerals {
+
+	private BufferedReader inputReader;
+
+	public static final boolean NORMALIZE = true;
+
+	public static final boolean NO_NORMALIZE = false;
+
+	public boolean normalizeOn = true;
+
+	private int format = 0;
+
+	private int lineNumber = 0;
+
+	public CONLLReader08(boolean normalize) {
+
+		normalizeOn = normalize;
+	}
+
+	public CONLLReader08(String file) {
+		lineNumber = 0;
+		try {
+			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"), 32768);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public CONLLReader08(String file, boolean normalize) {
+		this(file);
+		normalizeOn = normalize;
+	}
+
+	/**
+	 * Sets the input format:
+	 *
+	 * CONLL09 is standard, ONE_LINE
+	 *
+	 * @param format
+	 *            the fomrat (see the constants starting with F_).
+	 */
+	public void setInputFormat(int format) {
+		this.format = format;
+	}
+
+	/**
+	 *
+	 */
+	public CONLLReader08() {
+	}
+
+	/**
+	 * @param testfile
+	 * @param formatTask
+	 */
+	public CONLLReader08(String testfile, int formatTask) {
+		this(testfile);
+	}
+
+	public void startReading(String file) {
+		lineNumber = 0;
+		try {
+			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"), 32768);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public SentenceData09 getNext() {
+
+		if (F_ONE_LINE == format)
+			return getNextOneLine();
+		else
+			return getNextCoNLL09();
+	}
+
+	/**
+	 * @return
+	 */
+	private SentenceData09 getNextOneLine() {
+
+		String line = null;
+		int i = 0;
+		try {
+
+			line = inputReader.readLine();
+			lineNumber++;
+
+			if (line == null) {
+				inputReader.close();
+				return null;
+			}
+
+			String[] tokens = line.split(" ");
+			int length = tokens.length;
+			if (line.isEmpty())
+				length = 0;
+
+			SentenceData09 it = new SentenceData09();
+
+			it.forms = new String[length + 1];
+
+			it.plemmas = new String[length + 1];
+			// it.ppos = new String[length+1];
+			it.gpos = new String[length + 1];
+			it.labels = new String[length + 1];
+			it.heads = new int[length + 1];
+			it.pheads = new int[length + 1];
+			it.plabels = new String[length + 1];
+
+			it.ppos = new String[length + 1];
+			it.lemmas = new String[length + 1];
+			it.fillp = new String[length + 1];
+			it.feats = new String[length + 1][];
+			it.ofeats = new String[length + 1];
+			it.pfeats = new String[length + 1];
+			it.id = new String[length + 1];
+
+			it.forms[0] = ROOT;
+			it.plemmas[0] = ROOT_LEMMA;
+			it.fillp[0] = "N";
+			it.lemmas[0] = ROOT_LEMMA;
+
+			it.gpos[0] = ROOT_POS;
+			it.ppos[0] = ROOT_POS;
+			it.labels[0] = NO_TYPE;
+			it.heads[0] = -1;
+			it.plabels[0] = NO_TYPE;
+			it.pheads[0] = -1;
+			it.ofeats[0] = NO_TYPE;
+			it.id[0] = "0";
+
+			// root is 0 therefore start with 1
+
+			for (i = 1; i <= length; i++) {
+
+				it.id[i] = "" + i;
+
+				it.forms[i] = this.normalizeOn ? normalize(tokens[i - 1]) : tokens[i - 1]; // normalize(
+
+			}
+
+			return it;
+
+		} catch (Exception e) {
+			System.out.println("\n!!! Error in input file sentence before line: " + lineNumber + " (in sentence line "
+					+ i + " ) " + e.toString());
+			e.printStackTrace();
+			System.exit(0);
+
+			// throw new Exception();
+			return null;
+		}
+
+	}
+
+	/**
+	 * i.forms[heads[l]-1]+" "+rel+" "+ Read a instance
+	 * 
+	 * @return a instance
+	 * @throws Exception
+	 */
+
+	public SentenceData09 getNextCoNLL09() {
+
+		String line = null;
+		int i = 0;
+		try {
+
+			ArrayList<String[]> lineList = new ArrayList<String[]>();
+
+			line = inputReader.readLine();
+			lineNumber++;
+
+			while (line != null && line.length() == 0) {
+				line = inputReader.readLine();
+				lineNumber++;
+				System.out.println("skip empty line at line " + lineNumber);
+			}
+
+			while (line != null && line.length() != 0 && !line.startsWith(STRING) && !line.startsWith(REGEX)) {
+				lineList.add(line.split(REGEX));
+				line = inputReader.readLine();
+				lineNumber++;
+			}
+
+			int length = lineList.size();
+
+			if (length == 0) {
+				inputReader.close();
+				return null;
+			}
+
+			SentenceData09 it = new SentenceData09();
+
+			it.forms = new String[length + 1];
+
+			it.plemmas = new String[length + 1];
+			// it.ppos = new String[length+1];
+			it.gpos = new String[length + 1];
+			it.labels = new String[length + 1];
+			it.heads = new int[length + 1];
+			it.pheads = new int[length + 1];
+			it.plabels = new String[length + 1];
+
+			it.ppos = new String[length + 1];
+			it.lemmas = new String[length + 1];
+			it.fillp = new String[length + 1];
+			it.feats = new String[length + 1][];
+			it.ofeats = new String[length + 1];
+			it.pfeats = new String[length + 1];
+			it.id = new String[length + 1];
+
+			it.forms[0] = ROOT;
+			it.plemmas[0] = ROOT_LEMMA;
+			it.fillp[0] = "N";
+			it.lemmas[0] = ROOT_LEMMA;
+
+			it.gpos[0] = ROOT_POS;
+			it.ppos[0] = ROOT_POS;
+			it.labels[0] = NO_TYPE;
+			it.heads[0] = -1;
+			it.plabels[0] = NO_TYPE;
+			it.pheads[0] = -1;
+			it.ofeats[0] = NO_TYPE;
+			it.id[0] = "0";
+
+			// root is 0 therefore start with 1
+
+			for (i = 1; i <= length; i++) {
+
+				String[] info = lineList.get(i - 1);
+
+				it.id[i] = info[0];
+				it.forms[i] = info[5]; // normalize(
+				if (info.length < 3)
+					continue;
+
+				// it.lemmas[i] = info[2];
+				it.plemmas[i] = info[6];
+				it.gpos[i] = info[3];
+
+				if (info.length < 5)
+					continue;
+				it.ppos[i] = info[7];// .split("\\|")[0];
+
+				// feat 6
+				// pfeat 7
+
+				// this causes trouble in the perl eval09 scirpt
+				// it.ofeats[i]=info[6].equals(CONLLWriter09.DASH)? "" :
+				// info[6];
+
+				// now we try underscore
+				it.ofeats[i] = "_";
+
+				// it.feats[i] ="_";
+				it.pfeats[i] = "_";
+
+				if (info[8].equals(US))
+					it.heads[i] = -1;
+				else
+					it.heads[i] = Integer.parseInt(info[8]);// head
+
+				it.pheads[i] = -1;// head
+
+				it.labels[i] = info[9];
+				it.plabels[i] = "_";
+
+				it.fillp[i] = info[10];
+
+				if (info.length > 11) {
+					if (!info[10].equals(US))
+						it.addPredicate(i, info[10]);
+					for (int k = 11; k < info.length; k++)
+						it.addArgument(i, k - 11, info[k]);
+				}
+
+			}
+			return it;
+
+		} catch (Exception e) {
+			System.out.println("\n!!! Error in input file sentence before line: " + lineNumber + " (in sentence line "
+					+ i + " ) " + e.toString());
+			e.printStackTrace();
+			System.exit(0);
+
+			// throw new Exception();
+			return null;
+		}
+
+	}
+
+	/**
+	 * Read a instance an store it in a compressed format
+	 * 
+	 * @param is
+	 * @return
+	 * @throws IOException
+	 */
+	final public SentenceData09 getNext(Instances is) {
+
+		SentenceData09 it = getNext();
+
+		if (is != null)
+			insert(is, it);
+
+		return it;
+
+	}
+
+	final public boolean insert(Instances is, SentenceData09 it) {
+
+		try {
+
+			if (it == null) {
+				inputReader.close();
+				return false;
+			}
+
+			int i = is.createInstance09(it.length());
+
+			for (int p = 0; p < it.length(); p++) {
+
+				is.setForm(i, p, normalize(it.forms[p]));
+				is.setGPos(i, p, it.gpos[p]);
+
+				// System.out.println(""+is.gpos[i][p]);
+
+				if (it.ppos[p] == null || it.ppos[p].equals(US)) {
+
+					is.setPPoss(i, p, it.gpos[p]);
+				} else
+					is.setPPoss(i, p, it.ppos[p]);
+
+				if (it.plemmas[p] == null || it.plemmas[p].equals(US)) {
+					is.setLemma(i, p, normalize(it.forms[p]));
+				} else
+					is.setLemma(i, p, normalize(it.plemmas[p]));
+
+				if (it.lemmas != null)
+					if (it.lemmas[p] == null) { // ||it.org_lemmas[p].equals(US)
+												// that harms a lot the
+												// lemmatizer
+						is.setGLemma(i, p, it.plemmas[p]);
+					} else
+						is.setGLemma(i, p, it.lemmas[p]);
+
+				if (it.feats != null && it.feats[p] != null)
+					is.setFeats(i, p, it.feats[p]);
+
+				if (it.ofeats != null)
+					is.setFeature(i, p, it.ofeats[p]);
+
+				is.setRel(i, p, it.labels[p]);
+				if (it.plabels != null)
+					is.setPRel(i, p, it.plabels[p]);
+
+				is.setHead(i, p, it.heads[p]);
+				if (it.pheads != null)
+					is.setPHead(i, p, it.pheads[p]);
+
+				if (it.fillp != null && it.fillp[p] != null && it.fillp[p].startsWith("Y"))
+					is.pfill[i].set(p);
+				else
+					is.pfill[i].clear(p);
+			}
+
+			if (is.createSem(i, it)) {
+				DB.println("count " + i + " len " + it.length());
+				DB.println(it.printSem());
+			}
+		} catch (Exception e) {
+			DB.println("head " + it);
+			e.printStackTrace();
+		}
+		return true;
+
+	}
+
+	public String normalize(String s) {
+		if (!normalizeOn)
+			return s;
+		if (s.matches(NUMBER))
+			return NUM;
+		return s;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/io/CONLLReader09.java b/dependencyParser/experimental/mate-tools/src/is2/io/CONLLReader09.java
new file mode 100755
index 0000000..cee897a
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/io/CONLLReader09.java
@@ -0,0 +1,409 @@
+
+package is2.io;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+
+import is2.data.Instances;
+import is2.data.SentenceData09;
+import is2.util.DB;
+
+/**
+ * This class reads files in the CONLL-09 format.
+ * 
+ * @author Bernd Bohnet
+ */
+public class CONLLReader09 extends IOGenerals {
+
+	private BufferedReader inputReader;
+
+	public static final boolean NORMALIZE = true;
+
+	public static final boolean NO_NORMALIZE = false;
+
+	public boolean normalizeOn = true;
+
+	static public String joint = "";
+
+	private int format = 0;
+
+	private int lineNumber = 0;
+
+	public CONLLReader09(boolean normalize) {
+
+		normalizeOn = normalize;
+	}
+
+	public CONLLReader09(String file) {
+		lineNumber = 0;
+		try {
+			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"), 32768);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public CONLLReader09(String file, boolean normalize) {
+		this(file);
+		normalizeOn = normalize;
+	}
+
+	/**
+	 * Sets the input format:
+	 *
+	 * CONLL09 is standard, ONE_LINE
+	 *
+	 * @param format
+	 *            the fomrat (see the constants starting with F_).
+	 */
+	public void setInputFormat(int format) {
+		this.format = format;
+	}
+
+	/**
+	 *
+	 */
+	public CONLLReader09() {
+	}
+
+	/**
+	 * @param testfile
+	 * @param formatTask
+	 */
+	public CONLLReader09(String testfile, int formatTask) {
+		this(testfile);
+	}
+
+	public void startReading(String file) {
+		lineNumber = 0;
+		try {
+			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"), 32768);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public SentenceData09 getNext() {
+
+		if (F_ONE_LINE == format)
+			return getNextOneLine();
+		else
+			return getNextCoNLL09();
+	}
+
+	/**
+	 * @return
+	 */
+	private SentenceData09 getNextOneLine() {
+
+		String line = null;
+		int i = 0;
+		try {
+
+			line = inputReader.readLine();
+			lineNumber++;
+
+			if (line == null) {
+				inputReader.close();
+				return null;
+			}
+
+			String[] tokens = line.split(" ");
+			int length = tokens.length;
+			if (line.isEmpty())
+				length = 0;
+
+			SentenceData09 it = new SentenceData09();
+
+			it.forms = new String[length + 1];
+
+			it.plemmas = new String[length + 1];
+			// it.ppos = new String[length+1];
+			it.gpos = new String[length + 1];
+			it.labels = new String[length + 1];
+			it.heads = new int[length + 1];
+			it.pheads = new int[length + 1];
+			it.plabels = new String[length + 1];
+
+			it.ppos = new String[length + 1];
+			it.lemmas = new String[length + 1];
+			it.fillp = new String[length + 1];
+			it.feats = new String[length + 1][];
+			it.ofeats = new String[length + 1];
+			it.pfeats = new String[length + 1];
+			it.id = new String[length + 1];
+
+			it.forms[0] = ROOT;
+			it.plemmas[0] = ROOT_LEMMA;
+			it.fillp[0] = "N";
+			it.lemmas[0] = ROOT_LEMMA;
+
+			it.gpos[0] = ROOT_POS;
+			it.ppos[0] = ROOT_POS;
+			it.labels[0] = NO_TYPE;
+			it.heads[0] = -1;
+			it.plabels[0] = NO_TYPE;
+			it.pheads[0] = -1;
+			it.ofeats[0] = NO_TYPE;
+			it.id[0] = "0";
+
+			// root is 0 therefore start with 1
+
+			for (i = 1; i <= length; i++) {
+
+				it.id[i] = "" + i;
+
+				it.forms[i] = this.normalizeOn ? normalize(tokens[i - 1]) : tokens[i - 1]; // normalize(
+
+			}
+
+			return it;
+
+		} catch (Exception e) {
+			System.out.println("\n!!! Error in input file sentence before line: " + lineNumber + " (in sentence line "
+					+ i + " ) " + e.toString());
+			e.printStackTrace();
+
+			// throw new Exception();
+			return null;
+		}
+
+	}
+
+	/**
+	 * i.forms[heads[l]-1]+" "+rel+" "+ Read a instance
+	 * 
+	 * @return a instance
+	 * @throws Exception
+	 */
+
+	public SentenceData09 getNextCoNLL09() {
+
+		String line = null;
+		int i = 0;
+		try {
+
+			ArrayList<String[]> lineList = new ArrayList<String[]>();
+
+			line = inputReader.readLine();
+			lineNumber++;
+
+			while (line != null && line.length() == 0) {
+				line = inputReader.readLine();
+				lineNumber++;
+				System.out.println("skip empty line at line " + lineNumber);
+			}
+
+			while (line != null && line.length() != 0 && !line.startsWith(STRING) && !line.startsWith(REGEX)) {
+				lineList.add(line.split(REGEX));
+				line = inputReader.readLine();
+				lineNumber++;
+			}
+
+			int length = lineList.size();
+
+			if (length == 0) {
+				inputReader.close();
+				return null;
+			}
+
+			SentenceData09 it = new SentenceData09();
+
+			it.forms = new String[length + 1];
+
+			it.plemmas = new String[length + 1];
+			// it.ppos = new String[length+1];
+			it.gpos = new String[length + 1];
+			it.labels = new String[length + 1];
+			it.heads = new int[length + 1];
+			it.pheads = new int[length + 1];
+			it.plabels = new String[length + 1];
+
+			it.ppos = new String[length + 1];
+			it.lemmas = new String[length + 1];
+			it.fillp = new String[length + 1];
+			it.feats = new String[length + 1][];
+			it.ofeats = new String[length + 1];
+			it.pfeats = new String[length + 1];
+			it.id = new String[length + 1];
+
+			it.forms[0] = ROOT;
+			it.plemmas[0] = ROOT_LEMMA;
+			it.fillp[0] = "N";
+			it.lemmas[0] = ROOT_LEMMA;
+
+			it.gpos[0] = ROOT_POS;
+			it.ppos[0] = ROOT_POS;
+			it.labels[0] = NO_TYPE;
+			it.heads[0] = -1;
+			it.plabels[0] = NO_TYPE;
+			it.pheads[0] = -1;
+			it.ofeats[0] = NO_TYPE;
+			it.id[0] = "0";
+
+			// root is 0 therefore start with 1
+
+			for (i = 1; i <= length; i++) {
+
+				String[] info = lineList.get(i - 1);
+
+				it.id[i] = info[0];
+				it.forms[i] = info[1]; // normalize(
+				if (info.length < 3)
+					continue;
+
+				it.lemmas[i] = info[2];
+				it.plemmas[i] = info[3];
+				it.gpos[i] = info[4];
+
+				if (info.length < 5)
+					continue;
+				it.ppos[i] = info[5];// .split("\\|")[0];
+				// feat 6
+
+				// now we try underscore
+				it.ofeats[i] = info[6].equals(CONLLWriter09.DASH) ? "_" : info[6];
+
+				if (info[7].equals(CONLLWriter09.DASH))
+					it.feats[i] = null;
+				else {
+					it.feats[i] = info[7].split(PIPE);
+					it.pfeats[i] = info[7];
+				}
+
+				if (info[8].equals(US))
+					it.heads[i] = -1;
+				else
+					it.heads[i] = Integer.parseInt(info[8]);// head
+
+				it.pheads[i] = info[9].equals(US) ? it.pheads[i] = -1 : Integer.parseInt(info[9]);// head
+
+				it.labels[i] = info[10];
+				it.plabels[i] = info[11];
+				it.fillp[i] = info[12];
+
+				if (info.length > 13) {
+					if (!info[13].equals(US))
+						it.addPredicate(i, info[13]);
+					for (int k = 14; k < info.length; k++)
+						it.addArgument(i, k - 14, info[k]);
+
+				}
+
+			}
+			return it;
+
+		} catch (Exception e) {
+			System.out.println("\n!!! Error in input file sentence before line: " + lineNumber + " (in sentence line "
+					+ i + " ) " + e.toString());
+			e.printStackTrace();
+			System.exit(0);
+
+			// throw new Exception();
+			return null;
+		}
+
+	}
+
+	/**
+	 * Read a instance an store it in a compressed format
+	 * 
+	 * @param is
+	 * @return
+	 * @throws IOException
+	 */
+	final public SentenceData09 getNext(Instances is) {
+
+		SentenceData09 it = getNext();
+
+		if (is != null)
+			insert(is, it);
+
+		return it;
+
+	}
+
+	final public boolean insert(Instances is, SentenceData09 it) {
+
+		try {
+
+			if (it == null) {
+				inputReader.close();
+				return false;
+			}
+
+			int i = is.createInstance09(it.length());
+
+			for (int p = 0; p < it.length(); p++) {
+
+				is.setForm(i, p, normalize(it.forms[p]));
+				// is.setFormOrg(i, p, it.forms[p]);
+				is.setGPos(i, p, it.gpos[p]);
+
+				// System.out.println(""+is.gpos[i][p]);
+
+				if (it.ppos[p] == null || it.ppos[p].equals(US)) {
+
+					is.setPPoss(i, p, it.gpos[p]);
+				} else
+					is.setPPoss(i, p, it.ppos[p]);
+
+				if (it.plemmas[p] == null || it.plemmas[p].equals(US)) {
+					is.setLemma(i, p, normalize(it.forms[p]));
+				} else
+					is.setLemma(i, p, normalize(it.plemmas[p]));
+
+				if (it.lemmas != null)
+					if (it.lemmas[p] == null) { // ||it.org_lemmas[p].equals(US)
+												// that harms a lot the
+												// lemmatizer
+						is.setGLemma(i, p, it.plemmas[p]);
+					} else
+						is.setGLemma(i, p, it.lemmas[p]);
+
+				if (it.feats != null && it.feats[p] != null)
+					is.setFeats(i, p, it.feats[p]);
+
+				if (it.ofeats != null)
+					is.setFeature(i, p, it.ofeats[p]);
+				if (it.pfeats != null)
+					is.setPFeature(i, p, it.pfeats[p]);
+
+				is.setRel(i, p, it.labels[p]);
+				if (it.plabels != null)
+					is.setPRel(i, p, it.plabels[p]);
+
+				is.setHead(i, p, it.heads[p]);
+				if (it.pheads != null)
+					is.setPHead(i, p, it.pheads[p]);
+
+				if (it.fillp != null && it.fillp[p] != null && it.fillp[p].startsWith("Y"))
+					is.pfill[i].set(p);
+				else
+					is.pfill[i].clear(p);
+			}
+
+			if (is.createSem(i, it)) {
+				DB.println("count " + i + " len " + it.length());
+				DB.println(it.printSem());
+			}
+		} catch (Exception e) {
+			DB.println("head " + it);
+			e.printStackTrace();
+		}
+		return true;
+
+	}
+
+	public String normalize(String s) {
+		if (!normalizeOn)
+			return s;
+		if (s.matches(NUMBER))
+			return NUM;
+		return s;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/io/CONLLWriter06.java b/dependencyParser/experimental/mate-tools/src/is2/io/CONLLWriter06.java
new file mode 100755
index 0000000..24446b5
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/io/CONLLWriter06.java
@@ -0,0 +1,199 @@
+package is2.io;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.util.StringTokenizer;
+
+import is2.data.SentenceData09;
+import is2.util.DB;
+
+public class CONLLWriter06 {
+
+	public static final String DASH = "_";
+
+	protected BufferedWriter writer;
+
+	public CONLLWriter06() {
+	}
+
+	public static void main(String args[]) throws IOException {
+
+		if (args.length == 2) {
+			File f = new File(args[0]);
+			File f2 = new File(args[1]);
+			// BufferedReader bf = new BufferedReader(new FileInputStream(new
+			// File(args[0]),"UTF-8"),32768);
+			BufferedReader ir = new BufferedReader(new InputStreamReader(new FileInputStream(f), "ISO-8859"), 32768);
+			BufferedWriter br = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f2), "UTF-8"));
+			;
+			boolean found = false;
+			boolean tab = false;
+			while (true) {
+				String l = ir.readLine();
+				if (l == null)
+					break;
+				String x = l.trim();
+				if (x.endsWith("\t"))
+					tab = true;
+				br.write(x);
+				br.newLine();
+				if (!l.equals(x))
+					found = true;
+
+			}
+			ir.close();
+			br.flush();
+			br.close();
+
+			if (found)
+				DB.println("found diff. found tab? " + tab);
+		} else if (args.length == 3) {
+			File f1 = new File(args[1]);
+			File f2 = new File(args[2]);
+
+			BufferedReader ir1 = new BufferedReader(new InputStreamReader(new FileInputStream(f1), "ISO-8859"), 32768);
+			BufferedReader ir2 = new BufferedReader(new InputStreamReader(new FileInputStream(f2), "UTF-8"), 32768);
+
+			int line = 0, alltabs1 = 0, alltabs2 = 0;
+			while (true) {
+				String l1 = ir1.readLine();
+				String l2 = ir2.readLine();
+
+				if (l1 == null && l2 != null)
+					DB.println("files do not end at the same line ");
+				if (l1 != null && l2 == null)
+					DB.println("files do not end at the same line ");
+				if (l1 == null)
+					break;
+				StringTokenizer t1 = new StringTokenizer(l1, "\t");
+				StringTokenizer t2 = new StringTokenizer(l2, "\t");
+				int tabs1 = 0;
+				while (t1.hasMoreTokens()) {
+
+					t1.nextElement();
+					tabs1++;
+					alltabs1++;
+				}
+
+				int tabs2 = 0;
+				while (t2.hasMoreTokens()) {
+
+					t2.nextElement();
+					tabs2++;
+					alltabs2++;
+				}
+				line++;
+				if (tabs1 != tabs2) {
+					DB.println("number of tabs different in line " + line + " file1-tabs " + tabs1 + " file2-tabs "
+							+ tabs2);
+					System.exit(0);
+				}
+
+			}
+			ir1.close();
+			ir2.close();
+			DB.println("checked lines " + line + " with tabs in file 1 " + alltabs1 + " in file2 " + alltabs2);
+
+		} else {
+			File f = new File(args[0]);
+			String[] dir = f.list();
+			for (String fx : dir) {
+				BufferedReader ir = new BufferedReader(
+						new InputStreamReader(new FileInputStream(args[0] + File.separatorChar + fx), "UTF-8"), 32768);
+				System.out.println("check file " + fx);
+				while (true) {
+					String l = ir.readLine();
+					if (l == null)
+						break;
+					if (l.endsWith("\t")) {
+						DB.println("found tab in file " + fx);
+						break;
+					}
+				}
+				ir.close();
+			}
+		}
+
+	}
+
+	// public int version = CONLLReader09.TASK08;
+
+	public CONLLWriter06(String file) {
+
+		try {
+			writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public CONLLWriter06(String outfile, int formatTask) {
+		this(outfile);
+		// version = formatTask;
+	}
+
+	public void write(SentenceData09 inst) throws IOException {
+
+		for (int i = 0; i < inst.length(); i++) {
+
+			writer.write(Integer.toString(i + 1));
+			writer.write('\t'); // id
+			writer.write(inst.forms[i]);
+			writer.write('\t'); // form
+
+			if (inst.lemmas != null && inst.lemmas[i] != null) {
+				writer.write(inst.lemmas[i]);
+			} else
+				writer.write(DASH); // lemma
+			writer.write('\t');
+
+			// writer.write(DASH); // cpos
+			// writer.write('\t');
+
+			writer.write(inst.gpos[i]); // cpos has to be included
+			writer.write('\t');
+
+			writer.write(inst.gpos[i]); // gpos
+			writer.write('\t');
+
+			if (inst.ofeats[i].isEmpty() || inst.ofeats[i].equals(" "))
+				writer.write(DASH);
+			else
+				writer.write(inst.ofeats[i]);
+			writer.write('\t');
+
+			// writer.write(DASH); writer.write('\t'); // pfeat
+
+			writer.write(Integer.toString(inst.heads[i]));
+			writer.write('\t'); // head
+
+			if (inst.labels[i] != null)
+				writer.write(inst.labels[i]); // rel
+			else
+				writer.write(DASH);
+			writer.write('\t');
+
+			writer.write(DASH);
+			writer.write('\t');
+
+			writer.write(DASH);
+			writer.write('\t');
+
+			writer.newLine();
+		}
+		writer.newLine();
+
+	}
+
+	public void finishWriting() throws IOException {
+		writer.flush();
+		writer.close();
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/io/CONLLWriter09.java b/dependencyParser/experimental/mate-tools/src/is2/io/CONLLWriter09.java
new file mode 100755
index 0000000..c28ab24
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/io/CONLLWriter09.java
@@ -0,0 +1,334 @@
+package is2.io;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.util.StringTokenizer;
+
+import is2.data.SentenceData09;
+import is2.util.DB;
+
+public class CONLLWriter09 extends IOGenerals {
+
+	int format = 0;
+
+	public static final String DASH = "_";
+
+	public static final boolean NO_ROOT = true, ROOT = false;
+
+	protected BufferedWriter writer;
+
+	public CONLLWriter09() {
+	}
+
+	public static void main(String args[]) throws IOException {
+
+		if (args.length == 2) {
+			File f = new File(args[0]);
+			File f2 = new File(args[1]);
+			BufferedReader ir = new BufferedReader(new InputStreamReader(new FileInputStream(f), "UTF-8"), 32768);
+			BufferedWriter br = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f2), "UTF8"));
+			;
+			boolean found = false;
+			boolean tab = false;
+			while (true) {
+				String l = ir.readLine();
+				if (l == null)
+					break;
+				String x = l.trim();
+				if (x.endsWith("\t"))
+					tab = true;
+				br.write(x);
+				br.newLine();
+				if (!l.equals(x))
+					found = true;
+
+			}
+			ir.close();
+			br.flush();
+			br.close();
+
+			if (found)
+				DB.println("found diff. found tab? " + tab);
+		} else if (args.length == 3) {
+			File f1 = new File(args[1]);
+			File f2 = new File(args[2]);
+
+			BufferedReader ir1 = new BufferedReader(new InputStreamReader(new FileInputStream(f1), "UTF-8"), 32768);
+			BufferedReader ir2 = new BufferedReader(new InputStreamReader(new FileInputStream(f2), "UTF-8"), 32768);
+
+			int line = 0, alltabs1 = 0, alltabs2 = 0;
+			while (true) {
+				String l1 = ir1.readLine();
+				String l2 = ir2.readLine();
+
+				if (l1 == null && l2 != null)
+					DB.println("files do not end at the same line ");
+				if (l1 != null && l2 == null)
+					DB.println("files do not end at the same line ");
+				if (l1 == null)
+					break;
+				StringTokenizer t1 = new StringTokenizer(l1, "\t");
+				StringTokenizer t2 = new StringTokenizer(l2, "\t");
+				int tabs1 = 0;
+				while (t1.hasMoreTokens()) {
+
+					t1.nextElement();
+					tabs1++;
+					alltabs1++;
+				}
+
+				int tabs2 = 0;
+				while (t2.hasMoreTokens()) {
+
+					t2.nextElement();
+					tabs2++;
+					alltabs2++;
+				}
+				line++;
+				if (tabs1 != tabs2) {
+					DB.println("number of tabs different in line " + line + " file1-tabs " + tabs1 + " file2-tabs "
+							+ tabs2);
+					System.exit(0);
+				}
+
+			}
+			ir1.close();
+			ir2.close();
+			DB.println("checked lines " + line + " with tabs in file 1 " + alltabs1 + " in file2 " + alltabs2);
+
+		} else {
+			File f = new File(args[0]);
+			String[] dir = f.list();
+			for (String fx : dir) {
+				BufferedReader ir = new BufferedReader(
+						new InputStreamReader(new FileInputStream(args[0] + File.separatorChar + fx), "UTF-8"), 32768);
+				System.out.println("check file " + fx);
+				while (true) {
+					String l = ir.readLine();
+					if (l == null)
+						break;
+					if (l.endsWith("\t")) {
+						DB.println("found tab in file " + fx);
+						break;
+					}
+				}
+				ir.close();
+			}
+		}
+
+	}
+
+	public CONLLWriter09(String file) {
+
+		try {
+			writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF8"));
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public CONLLWriter09(Writer writer) {
+		this.writer = new BufferedWriter(writer);
+	}
+
+	public CONLLWriter09(String outfile, int formatTask) {
+		this(outfile);
+	}
+
+	public void write(SentenceData09 inst) throws IOException {
+		write(inst, NO_ROOT);
+	}
+
+	/**
+	 *
+	 * @param inst
+	 * @param root
+	 *            true: remove root node
+	 * @throws IOException
+	 */
+	public void write(SentenceData09 inst, boolean root) throws IOException {
+
+		int i, mod;
+		if (root && (inst.forms[0].startsWith("<root")
+				|| (inst.lemmas[0] != null && inst.lemmas[0].startsWith("<root")))) {
+			i = 1;
+			mod = 0;
+		} else {
+			i = 0;
+			mod = 1;
+		}
+		// =()?1:0;
+
+		if (format == IOGenerals.F_ONE_LINE) {
+			boolean first = true;
+			for (; i < inst.length(); i++) {
+				if (first) {
+					first = false;
+				} else
+					writer.write(" ");
+				writer.write(inst.plemmas[i]);
+			}
+			writer.newLine();
+
+			return;
+		}
+
+		for (; i < inst.length(); i++) {
+
+			if (inst.id == null || inst.id[i] == null) {
+				writer.write(Integer.toString(i + mod));
+				writer.write('\t');
+			} // id
+			else {
+				writer.write(inst.id[i]);
+				writer.write('\t');
+			}
+
+			writer.write(inst.forms[i]);
+			writer.write('\t'); // form
+
+			if (inst.lemmas != null && inst.lemmas[i] != null) {
+				writer.write(inst.lemmas[i]);
+			} else
+				writer.write(DASH); // lemma
+			writer.write('\t');
+
+			if (inst.plemmas != null && inst.plemmas[i] != null)
+				writer.write(inst.plemmas[i]);
+			else
+				writer.write(DASH); // plemma
+			writer.write('\t');
+
+			if (inst.gpos[i] != null)
+				writer.write(inst.gpos[i]); // gpos
+			else
+				writer.write(DASH);
+			writer.write('\t');
+
+			if (inst.ppos != null && inst.ppos[i] != null)
+				writer.write(inst.ppos[i]);
+			else
+				writer.write(DASH); // ppos
+			writer.write('\t');
+
+			if (inst.ofeats != null && inst.ofeats[i] != null)
+				writer.write(inst.ofeats[i]);
+			else
+				writer.write(DASH);
+			writer.write('\t');
+
+			// writer.write(DASH); writer.write('\t'); // feat
+			if (inst.pfeats != null && inst.pfeats[i] != null) {
+				// System.out.println(""+inst.pfeats[i]);
+				writer.write(inst.pfeats[i]);
+			} else
+				writer.write(DASH);
+			writer.write('\t');
+
+			writer.write(Integer.toString(inst.heads[i]));
+			writer.write('\t'); // head
+
+			if (inst.pheads != null)
+				writer.write(Integer.toString(inst.pheads[i]));
+			else
+				writer.write(DASH);
+			writer.write('\t'); // phead
+
+			if (inst.labels[i] != null)
+				writer.write(inst.labels[i]); // rel
+			else
+				writer.write(DASH);
+			writer.write('\t');
+
+			if (inst.plabels != null && inst.plabels[i] != null)
+				writer.write(inst.plabels[i]); // rel
+			else
+				writer.write(DASH);
+			writer.write('\t');
+
+			if (inst.fillp != null && inst.fillp[i] != null)
+				writer.write(inst.fillp[i]); // fill p
+			else {
+				writer.write(DASH);
+			}
+
+			// writer.write('\t');
+
+			if (inst.sem == null) {
+				writer.write('\t');
+				writer.write(DASH);
+
+			} else {
+
+				boolean foundPred = false;
+				// print the predicate
+				for (int p = 0; p < inst.sem.length; p++) {
+					if (inst.semposition[p] == i) {
+						foundPred = true;
+						// System.out.println("write pred "+inst.sem[p] );
+						writer.write('\t');
+						writer.write(inst.sem[p]);
+
+						// if (inst.sem[p].startsWith(".")) DB.println("error
+						// "+inst.sem[p]);
+					}
+				}
+
+				if (!foundPred) {
+					writer.write('\t');
+					writer.write(DASH);
+					// writer.write('\t');
+					// writer.write(DASH);
+				}
+
+				// print the arguments
+				for (int p = 0; p < inst.sem.length; p++) {
+
+					boolean found = false;
+					if (inst.arg != null && inst.arg.length > p && inst.arg[p] != null)
+						for (int a = 0; a < inst.arg[p].length; a++) {
+
+							if (i == inst.argposition[p][a]) {
+								writer.write('\t');
+								writer.write(inst.arg[p][a]);
+								found = true;
+								break;
+							}
+
+						}
+					if (!found) {
+						writer.write('\t');
+						writer.write(DASH);
+					}
+
+				}
+
+			}
+			writer.newLine();
+		}
+		writer.newLine();
+	}
+
+	public void finishWriting() throws IOException {
+		writer.flush();
+		writer.close();
+	}
+
+	/**
+	 * Sets the output format such as CoNLL or one line for the lemmata of the
+	 * sentence (see F_xxxx constants).
+	 * 
+	 * @param formatTask
+	 */
+	public void setOutputFormat(int formatTask) {
+		format = formatTask;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/io/IOGenerals.java b/dependencyParser/experimental/mate-tools/src/is2/io/IOGenerals.java
new file mode 100644
index 0000000..030bedd
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/io/IOGenerals.java
@@ -0,0 +1,32 @@
+/**
+ *
+ */
+package is2.io;
+
+/**
+ * @author Dr. Bernd Bohnet, 18.08.2011
+ *
+ *
+ */
+public class IOGenerals {
+
+	// some constants
+	public static final String US = "_";
+	public static final String REGEX = "\t";
+	public static final String STRING = "*";
+	public static final String PIPE = "\\|";
+	public static final String NO_TYPE = "<no-type>";
+	public static final String ROOT_POS = "<root-POS>";
+	public static final String ROOT_LEMMA = "<root-LEMMA>";
+	public static final String ROOT = "<root>";
+	public static final String EMPTY_FEAT = "<ef>";
+
+	// the different readers
+	public static final int F_CONLL09 = 0;
+	public static final int F_ONE_LINE = 1;
+
+	// normalization of the input
+	public static final String NUMBER = "[0-9]+|[0-9]+\\.[0-9]+|[0-9]+[0-9,]+";
+	public static final String NUM = "<num>";
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/io/PSReader.java b/dependencyParser/experimental/mate-tools/src/is2/io/PSReader.java
new file mode 100644
index 0000000..5e8b1ad
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/io/PSReader.java
@@ -0,0 +1,23 @@
+/**
+ *
+ */
+package is2.io;
+
+import is2.data.PSTree;
+
+/**
+ * @author Dr. Bernd Bohnet, 07.02.2011
+ *
+ *
+ */
+public interface PSReader {
+
+	public PSTree getNext();
+
+	/**
+	 * @param ps
+	 * @param filter
+	 */
+	public void startReading(String ps, String[] filter);
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/io/TigerReader.java b/dependencyParser/experimental/mate-tools/src/is2/io/TigerReader.java
new file mode 100644
index 0000000..10fa0ea
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/io/TigerReader.java
@@ -0,0 +1,208 @@
+/**
+ *
+ */
+package is2.io;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+
+import is2.data.PSTree;
+
+/**
+ * @author Dr. Bernd Bohnet, 17.01.2011
+ *
+ *         Reads a sentences in Penn Tree Bank bracket style and return
+ *         sentences.
+ */
+public class TigerReader implements PSReader {
+
+	BufferedReader inputReader;
+	ArrayList<File> psFiles = new ArrayList<File>();
+	ArrayList<PSTree> psCache = new ArrayList<PSTree>();
+
+	String filter[] = null;
+	int startFilter = -1;
+	int endFilter = -1;
+
+	public TigerReader() {
+	}
+
+	public TigerReader(String file) {
+
+		try {
+			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "ISO-8859-1"), 32768);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * @param ps
+	 */
+	@Override
+	public void startReading(String file, String[] filter) {
+
+		try {
+			this.filter = filter;
+			startFilter = filter == null ? -1 : 1;
+			endFilter = filter == null ? -1 : 1;
+
+			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "ISO-8859-1"), 32768);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+	}
+
+	public static class Line {
+		String form;
+		String lemma;
+		String morph;
+		String pos;
+		int parent;
+		String edge;
+
+	}
+
+	static int stop = 0;
+
+	/**
+	 * @return
+	 */
+	@Override
+	public PSTree getNext() {
+
+		PSTree ps = null;
+		String l = null;
+		ArrayList<Line> lines = new ArrayList<Line>();
+		try {
+			int state = 1, terminals = 0, nonterminals = 0;
+			while ((l = inputReader.readLine()) != null) {
+
+				if (startFilter == 1 && l.startsWith("#BOS " + filter[0])) {
+					System.out.println("found start " + l);
+					startFilter = 2;
+				}
+				if (endFilter == 1 && l.startsWith("#EOS " + filter[1])) {
+					System.out.println("found end " + l);
+
+					endFilter = 2;
+				}
+
+				if (startFilter == 1 || endFilter == 2)
+					continue;
+
+				if (l.startsWith("#BOS")) {
+
+					state = 2;
+					continue;
+				}
+				if (l.startsWith("#500"))
+					state = 3;
+				if (l.startsWith("#EOS"))
+					state = 4;
+				if (state < 2)
+					continue;
+
+				if (state == 4) {
+
+					ps = new PSTree();
+					ps.create(terminals, nonterminals);
+					// System.out.println("terminals "+terminals);
+					// build ps tree
+
+					int cnt = 0;
+					// ps.entries[0] =CONLLReader09.ROOT;
+					// ps.head[0]=-1;
+					int root = -1;
+					for (Line line : lines) {
+
+						/*
+						 * if (cnt==terminals) { // insert root root =cnt;
+						 * cnt++; }
+						 */
+						ps.entries[cnt] = line.form;
+						if (cnt < terminals)
+							ps.pos[cnt] = line.pos;
+						else
+							ps.entries[cnt] = line.pos;
+						ps.lemmas[cnt] = line.lemma;
+						ps.head[cnt] = line.parent == 0 ? lines.size() - 1
+								: line.parent >= 500 ? line.parent - 500 + terminals : line.parent;
+						// ps.head[cnt] =
+						// line.parent==0?lines.size()-1:line.parent>=500?line.parent-500+terminals:line.parent;
+						ps.morph[cnt] = line.morph;
+						cnt++;
+
+					}
+
+					if (root == -1)
+						root = terminals;
+					ps.head[cnt - 1] = 0; // root
+					ps.terminalCount = terminals;
+					lines.clear();
+					state = 1;
+
+					/*
+					 * for(int k=0;k<ps.head.length;k++) { if
+					 * (ps.head[k]<terminals && k!=root) { ps.head[k]=root; //
+					 * DB.println("error "+k+" "+ps.head[k]); } }
+					 */
+					// System.out.println(""+ps.toString());
+					// if (stop++ == 4)System.exit(0);
+					return ps;
+				}
+
+				StringTokenizer t = new StringTokenizer(l, "\t");
+				int tc = 0;
+				Line line = new Line();
+				lines.add(line);
+				while (t.hasMoreTokens()) {
+					String token = t.nextToken();
+					if (token.equals("\t"))
+						continue;
+					if (tc == 0) {
+						if (token.startsWith("#5") || token.startsWith("#6")) {
+							nonterminals++;
+
+						} else {
+							terminals++;
+
+							// change it back to the wrong format since the
+							// conll stuff was derived from this.
+							// if (token.equals("durchblicken"))
+							// token="durchblikken";
+							line.form = token;
+						}
+
+					} else if (tc == 1) {
+						line.lemma = token;
+					} else if (tc == 2) {
+						line.pos = token;
+					} else if (tc == 3) {
+						line.morph = token;
+					} else if (tc == 4) {
+						line.edge = token;
+					} else if (tc == 5) {
+						line.parent = Integer.parseInt(token);
+					}
+
+					if (token.length() > 0)
+						tc++;
+				}
+
+				// read till #EOS
+
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return ps;
+
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/lemmatizer/Evaluator.java b/dependencyParser/experimental/mate-tools/src/is2/lemmatizer/Evaluator.java
new file mode 100755
index 0000000..cc1b423
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/lemmatizer/Evaluator.java
@@ -0,0 +1,108 @@
+package is2.lemmatizer;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Hashtable;
+import java.util.Map.Entry;
+
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+
+public class Evaluator {
+
+	public static void evaluate(String act_file, String pred_file, String format) throws Exception {
+
+		CONLLReader09 goldReader = new CONLLReader09(act_file, CONLLReader09.NO_NORMALIZE);
+		CONLLReader09 predictedReader = new CONLLReader09(pred_file, CONLLReader09.NO_NORMALIZE);
+		// predictedReader.startReading(pred_file);
+
+		Hashtable<String, Integer> errors = new Hashtable<String, Integer>();
+
+		int total = 0, corrL = 0, corrT = 0;
+		int numsent = 0;
+		SentenceData09 goldInstance = goldReader.getNext();
+		SentenceData09 predInstance = predictedReader.getNext();
+
+		while (goldInstance != null) {
+
+			int instanceLength = goldInstance.length();
+
+			if (instanceLength != predInstance.length())
+				System.out.println("Lengths do not match on sentence " + numsent);
+
+			String gold[] = goldInstance.lemmas;
+			String pred[] = predInstance.plemmas;
+
+			boolean whole = true;
+			boolean wholeL = true;
+
+			// NOTE: the first item is the root info added during
+			// nextInstance(), so we skip it.
+
+			for (int i = 1; i < instanceLength; i++) {
+				if (gold[i].toLowerCase().equals(pred[i].toLowerCase()))
+					corrT++;
+
+				if (gold[i].equals(pred[i]))
+					corrL++;
+				else {
+
+					// System.out.println("error gold:"+goldPos[i]+"
+					// pred:"+predPos[i]+" "+goldInstance.forms[i]+" snt
+					// "+numsent+" i:"+i);
+					String key = "gold: '" + gold[i] + "' pred: '" + pred[i] + "'";
+					Integer cnt = errors.get(key);
+					if (cnt == null) {
+						errors.put(key, 1);
+					} else {
+						errors.put(key, cnt + 1);
+					}
+				}
+
+			}
+			total += instanceLength - 1; // Subtract one to not score fake root
+											// token
+
+			if (whole) {
+			}
+			if (wholeL) {
+			}
+			numsent++;
+
+			goldInstance = goldReader.getNext();
+			predInstance = predictedReader.getNext();
+		}
+		ArrayList<Entry<String, Integer>> opsl = new ArrayList<Entry<String, Integer>>();
+		for (Entry<String, Integer> e : errors.entrySet()) {
+			opsl.add(e);
+		}
+
+		Collections.sort(opsl, new Comparator<Entry<String, Integer>>() {
+
+			@Override
+			public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
+
+				return o1.getValue() == o2.getValue() ? 0 : o1.getValue() > o2.getValue() ? 1 : -1;
+			}
+
+		});
+
+		/*
+		 * for(Entry<String, Integer> e : opsl) {
+		 * System.out.println(e.getKey()+"  "+e.getValue()); }
+		 */
+
+		System.out.println("Tokens: " + total + " Correct: " + corrT + " " + (float) corrT / total
+				+ " correct uppercase " + (float) corrL / total);
+	}
+
+	public static void main(String[] args) throws Exception {
+		String format = "CONLL";
+		if (args.length > 2)
+			format = args[2];
+
+		evaluate(args[0], args[1], format);
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/lemmatizer/Lemmatizer.java b/dependencyParser/experimental/mate-tools/src/is2/lemmatizer/Lemmatizer.java
new file mode 100755
index 0000000..b15aaa7
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/lemmatizer/Lemmatizer.java
@@ -0,0 +1,543 @@
+package is2.lemmatizer;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Map.Entry;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+import java.util.zip.ZipOutputStream;
+
+import is2.data.Cluster;
+import is2.data.F2SF;
+import is2.data.FV;
+import is2.data.Instances;
+import is2.data.InstancesTagger;
+import is2.data.Long2Int;
+import is2.data.ParametersFloat;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.io.CONLLWriter09;
+import is2.tools.IPipe;
+import is2.tools.Tool;
+import is2.tools.Train;
+import is2.util.DB;
+import is2.util.OptionsSuper;
+
+public class Lemmatizer implements Tool, Train {
+
+	public Pipe pipe;
+	public ParametersFloat params;
+	private Long2Int li;
+
+	private boolean doUppercase = false;
+
+	private long[] vs = new long[40];
+
+	/**
+	 * Creates a lemmatizer due to the model stored in modelFileName
+	 * 
+	 * @param modelFileName
+	 *            the path and file name to a lemmatizer model
+	 */
+	public Lemmatizer(String modelFileName) {
+
+		// tell the lemmatizer the location of the model
+		try {
+			Options m_options = new Options(new String[] { "-model", modelFileName });
+			li = new Long2Int(m_options.hsize);
+
+			// initialize the lemmatizer
+			readModel(m_options);
+
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+	public Lemmatizer(boolean doUppercase) {
+		this.doUppercase = doUppercase;
+	}
+
+	public static void main(String[] args) throws FileNotFoundException, Exception {
+
+		Options options = new Options(args);
+		Lemmatizer lemmatizer = new Lemmatizer(options.upper);
+
+		long start = System.currentTimeMillis();
+
+		if (options.train) {
+
+			lemmatizer.li = new Long2Int(options.hsize);
+			lemmatizer.pipe = new Pipe(options, lemmatizer.li);
+
+			InstancesTagger is = lemmatizer.pipe.createInstances(options.trainfile);
+
+			DB.println("Features: " + lemmatizer.pipe.mf.size() + " Operations "
+					+ lemmatizer.pipe.mf.getFeatureCounter().get(Pipe.OPERATION));
+
+			ParametersFloat params = new ParametersFloat(lemmatizer.li.size());
+
+			lemmatizer.train(options, lemmatizer.pipe, params, is);
+
+			lemmatizer.writeModel(options, lemmatizer.pipe, params);
+		}
+
+		if (options.test) {
+
+			lemmatizer.readModel(options);
+
+			lemmatizer.out(options, lemmatizer.pipe, lemmatizer.params);
+		}
+
+		System.out.println();
+
+		if (options.eval) {
+			System.out.println("\nEVALUATION PERFORMANCE:");
+			Evaluator.evaluate(options.goldfile, options.outfile, options.format);
+		}
+		long end = System.currentTimeMillis();
+		System.out.println("used time " + ((float) ((end - start) / 100) / 10));
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.tools.Train#writeModel(is2.util.OptionsSuper, is2.tools.IPipe,
+	 * is2.data.ParametersFloat)
+	 */
+	@Override
+	public void writeModel(OptionsSuper options, IPipe pipe, ParametersFloat params) {
+		try {
+			// store the model
+			ZipOutputStream zos = new ZipOutputStream(
+					new BufferedOutputStream(new FileOutputStream(options.modelName)));
+			zos.putNextEntry(new ZipEntry("data"));
+			DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(zos));
+
+			MFO.writeData(dos);
+
+			dos.flush();
+			params.write(dos);
+
+			pipe.write(dos);
+
+			dos.writeBoolean(this.doUppercase);
+
+			dos.flush();
+			dos.close();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	@Override
+	public void readModel(OptionsSuper options) {
+
+		try {
+
+			// load the model
+			ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(options.modelName)));
+			zis.getNextEntry();
+			DataInputStream dis = new DataInputStream(new BufferedInputStream(zis));
+
+			MFO mf = new MFO();
+			mf.read(dis);
+			params = new ParametersFloat(0);
+			params.read(dis);
+			li = new Long2Int(params.size());
+			pipe = new Pipe(options, li);
+			pipe.mf = mf;
+
+			pipe.initFeatures();
+			pipe.initValues();
+
+			pipe.readMap(dis);
+
+			for (Entry<String, Integer> e : MFO.getFeatureSet().get(Pipe.OPERATION).entrySet()) {
+				this.pipe.types[e.getValue()] = e.getKey();
+				// System.out.println("set pos "+e.getKey());
+			}
+
+			pipe.cl = new Cluster(dis);
+
+			if (dis.available() > 0)
+				this.doUppercase = dis.readBoolean();
+
+			dis.close();
+			DB.println("Loading data finished. ");
+
+			DB.println("number of params  " + params.parameters.length);
+			DB.println("number of classes " + pipe.types.length);
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+	}
+
+	/**
+	 * Do the training
+	 * 
+	 * @param instanceLengths
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @param li
+	 * @throws IOException
+	 * @throws InterruptedException
+	 * @throws ClassNotFoundException
+	 */
+	@Override
+	public void train(OptionsSuper options, IPipe p, ParametersFloat params, Instances ist) {
+
+		InstancesTagger is = (InstancesTagger) ist;
+
+		int i = 0, del = 0;
+		FV g = new FV(), f = new FV();
+
+		int LC = this.pipe.types.length + 1, UC = LC + 1;
+
+		String wds[] = MFO.reverse(MFO.getFeatureSet().get(PipeGen.WORD));
+
+		F2SF fs = params.getFV();
+		double upd = 0;
+
+		for (i = 0; i < options.numIters; i++) {
+
+			System.out.print("Iteration " + i + ": ");
+
+			long start = System.currentTimeMillis();
+			int numInstances = is.size();
+			int correct = 0, count = 0;
+
+			long last = System.currentTimeMillis();
+			int wrongOp = 0, correctOp = 0, correctUC = 0, wrongUC = 0;
+
+			HashMap<String, Integer> map = new HashMap<String, Integer>();
+
+			for (int n = 0; n < numInstances; n++) {
+
+				if ((n + 1) % 500 == 0)
+					del = PipeGen.outValueErr(n + 1, count - correct, (float) correct / (float) count, del, last, upd);
+
+				upd = options.numIters * numInstances - (numInstances * i + (n + 1)) + 1;
+
+				for (int k = 0; k < is.length(n); k++) {
+
+					double best = -1000;
+					String bestOp = "";
+
+					count++;
+					pipe.addCoreFeatures(is, n, k, 0, wds[is.forms[n][k]], vs);
+
+					String lemma = pipe.opse.get(wds[is.forms[n][k]].toLowerCase());
+
+					// predict
+					if (lemma == null)
+						for (int t = 0; t < pipe.types.length; t++) {
+
+							fs.clear();
+							for (int l = vs.length - 1; l >= 0; l--)
+								if (vs[l] > 0)
+									fs.add(li.l2i(vs[l] + (t * Pipe.s_type)));
+
+							float score = (float) fs.getScore();
+							if (score > best) {
+								bestOp = pipe.types[t];
+								best = score;
+							}
+						}
+
+					if (doUppercase) {
+						fs.clear();
+						for (int l = vs.length - 1; l >= 0; l--)
+							if (vs[l] > 0)
+								fs.add(li.l2i(vs[l] + (LC * Pipe.s_type)));
+
+						int correctOP = -1, selectedOP = -1;
+						if (wds[is.glemmas[n][k]].length() > 0 && Character.isUpperCase(wds[is.glemmas[n][k]].charAt(0))
+								&& fs.score > 0) {
+
+							correctOP = UC;
+							selectedOP = LC;
+						} else if (wds[is.glemmas[n][k]].length() > 0
+								&& Character.isLowerCase(wds[is.glemmas[n][k]].charAt(0)) && fs.score <= 0) {
+
+							correctOP = LC;
+							selectedOP = UC;
+						}
+
+						if (correctOP != -1 && wds[is.glemmas[n][k]].length() > 0) {
+
+							wrongUC++;
+							f.clear();
+							for (int l = vs.length - 1; l >= 0; l--)
+								if (vs[l] > 0)
+									f.add(li.l2i(vs[l] + (selectedOP * Pipe.s_type)));
+
+							g.clear();
+							for (int l = vs.length - 1; l >= 0; l--)
+								if (vs[l] > 0)
+									g.add(li.l2i(vs[l] + (correctOP * Pipe.s_type)));
+
+							double lam_dist = params.getScore(g) - params.getScore(f);// f
+							double loss = 1 - lam_dist;
+
+							FV dist = g.getDistVector(f);
+							dist.update(params.parameters, params.total, params.update(dist, loss), upd, false);
+
+						} else {
+							correctUC++;
+						}
+					}
+					if (lemma != null) {
+						correct++;
+						correctOp++;
+						continue;
+					}
+
+					String op = Pipe.getOperation(is, n, k, wds);
+					if (op.equals(bestOp)) {
+						correct++;
+						correctOp++;
+						continue;
+					}
+					wrongOp++;
+
+					f.clear();
+					int bop = pipe.mf.getValue(Pipe.OPERATION, bestOp);
+					for (int r = vs.length - 1; r >= 0; r--)
+						if (vs[r] > 0)
+							f.add(li.l2i(vs[r] + (bop * Pipe.s_type)));
+
+					g.clear();
+					int gop = pipe.mf.getValue(Pipe.OPERATION, op);
+					for (int r = vs.length - 1; r >= 0; r--)
+						if (vs[r] > 0)
+							g.add(li.l2i(vs[r] + (gop * Pipe.s_type)));
+					double lam_dist = params.getScore(g) - params.getScore(f);// f
+
+					double loss = 1 - lam_dist;
+
+					FV dist = g.getDistVector(f);
+
+					dist.update(params.parameters, params.total, params.update(dist, loss), upd, false); // 0.05
+
+				}
+
+			}
+			ArrayList<Entry<String, Integer>> opsl = new ArrayList<Entry<String, Integer>>();
+			for (Entry<String, Integer> e : map.entrySet()) {
+				if (e.getValue() > 1) {
+					opsl.add(e);
+				}
+			}
+
+			Collections.sort(opsl, new Comparator<Entry<String, Integer>>() {
+				@Override
+				public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
+
+					return o1.getValue() == o2.getValue() ? 0 : o1.getValue() > o2.getValue() ? 1 : -1;
+				}
+			});
+
+			if (opsl.size() > 0)
+				System.out.println();
+			for (Entry<String, Integer> e : opsl) {
+				System.out.println(e.getKey() + "  " + e.getValue());
+			}
+			map.clear();
+
+			del = PipeGen.outValueErr(numInstances, count - correct, (float) correct / (float) count, del, last, upd,
+					"time " + (System.currentTimeMillis() - start) + " corr/wrong " + correctOp + " " + wrongOp
+							+ " uppercase corr/wrong  " + correctUC + " " + wrongUC);
+			del = 0;
+			System.out.println();
+		}
+
+		params.average(i * is.size());
+
+	}
+
+	/**
+	 * Do the work
+	 * 
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @throws IOException
+	 */
+	@Override
+	public void out(OptionsSuper options, IPipe pipe, ParametersFloat params) {
+
+		long start = System.currentTimeMillis();
+
+		CONLLReader09 depReader = new CONLLReader09(options.testfile, CONLLReader09.NO_NORMALIZE);
+		depReader.setInputFormat(options.formatTask);
+		CONLLWriter09 depWriter = new CONLLWriter09(options.outfile);
+		depWriter.setOutputFormat(options.formatTask);
+
+		System.out.print("Processing Sentence: ");
+
+		int cnt = 0;
+		int del = 0;
+
+		try {
+
+			while (true) {
+
+				InstancesTagger is = new InstancesTagger();
+
+				is.init(1, new MFO());
+				SentenceData09 instance = depReader.getNext(is);// pipe.nextInstance(null,
+																// depReader);
+
+				if (instance == null)
+					break;
+				is.fillChars(instance, 0, Pipe._CEND);
+				cnt++;
+				SentenceData09 i09 = lemmatize(is, instance, this.li);
+
+				if (options.normalize)
+					for (int k = 0; k < i09.length(); k++) {
+						boolean save = depReader.normalizeOn;
+						depReader.normalizeOn = true;
+						i09.plemmas[k] = depReader.normalize(i09.plemmas[k]);
+						depReader.normalizeOn = save;
+					}
+
+				if (options.overwritegold)
+					i09.lemmas = i09.plemmas;
+
+				depWriter.write(i09);
+
+				if (cnt % 100 == 0)
+					del = PipeGen.outValue(cnt, del);
+
+			}
+			depWriter.finishWriting();
+			del = PipeGen.outValue(cnt, del);
+			long end = System.currentTimeMillis();
+
+			System.out.println(PipeGen.getSecondsPerInstnace(cnt, (end - start)));
+			System.out.println(PipeGen.getUsedTime(end - start));
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	private SentenceData09 lemmatize(InstancesTagger is, SentenceData09 instance, Long2Int li) {
+
+		int LC = pipe.types.length + 1;
+
+		is.feats[0] = new short[instance.length()][11];
+
+		is.fillChars(instance, 0, Pipe._CEND);
+
+		int length = instance.length();
+
+		F2SF fs = new F2SF(params.parameters);
+
+		for (int w1 = 0; w1 < length; w1++) {
+			instance.plemmas[w1] = "_";
+			pipe.addCoreFeatures(is, 0, w1, 0, instance.forms[w1], vs);
+
+			String f = null;
+			if (is.forms[0][w1] != -1) {
+				f = pipe.opse.get(instance.forms[w1].toLowerCase());
+				if (f != null) {
+					instance.plemmas[w1] = f;
+				}
+			}
+			double best = -1000.0;
+			int bestOp = 0;
+
+			for (int t = 0; t < pipe.types.length; t++) {
+
+				fs.clear();
+				for (int l = vs.length - 1; l >= 0; l--)
+					if (vs[l] > 0)
+						fs.add(li.l2i(vs[l] + (t * Pipe.s_type)));
+
+				if (fs.score >= best) {
+					best = fs.score;
+					bestOp = t;
+				}
+			}
+			// instance.ppos[w1]=""+bestOp;
+			if (f == null)
+				instance.plemmas[w1] = StringEdit.change(
+						(doUppercase ? instance.forms[w1] : instance.forms[w1].toLowerCase()), pipe.types[bestOp]);
+
+			// check for empty string
+			if (instance.plemmas[w1].length() == 0)
+				instance.plemmas[w1] = "_";
+
+			if (doUppercase) {
+				fs.clear();
+				for (int l = vs.length - 1; l >= 0; l--)
+					if (vs[l] > 0)
+						fs.add(li.l2i(vs[l] + (LC * Pipe.s_type)));
+
+				try {
+
+					if (fs.score <= 0 && instance.plemmas[w1].length() > 1) {
+						instance.plemmas[w1] = Character.toUpperCase(instance.plemmas[w1].charAt(0))
+								+ instance.plemmas[w1].substring(1);
+					} else if (fs.score <= 0 && instance.plemmas[w1].length() > 0) {
+						instance.plemmas[w1] = String.valueOf(Character.toUpperCase(instance.plemmas[w1].charAt(0)));
+					} else if (fs.score > 0) {
+						instance.plemmas[w1] = instance.plemmas[w1].toLowerCase();
+					}
+
+				} catch (Exception e) {
+					e.printStackTrace();
+					// System.out.println("error "+pipe.types[bestOp]+"
+					// "+instance.forms[w1]);
+				}
+			}
+		}
+
+		SentenceData09 i09 = new SentenceData09(instance);
+		i09.createSemantic(instance);
+		return i09;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.tools.Tool#apply(is2.data.SentenceData09)
+	 */
+	@Override
+	public SentenceData09 apply(SentenceData09 snt) {
+		InstancesTagger is = new InstancesTagger();
+
+		// be robust
+		if (snt.length() == 0)
+			return snt;
+
+		SentenceData09 it = new SentenceData09();
+		it.createWithRoot(snt);
+
+		is.init(1, new MFO());
+		is.createInstance09(it.length());
+		is.fillChars(it, 0, Pipe._CEND);
+
+		for (int j = 0; j < it.length(); j++)
+			is.setForm(0, j, it.forms[j]);
+
+		return lemmatize(is, it, li);
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/lemmatizer/MFO.java b/dependencyParser/experimental/mate-tools/src/is2/lemmatizer/MFO.java
new file mode 100755
index 0000000..305e827
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/lemmatizer/MFO.java
@@ -0,0 +1,246 @@
+package is2.lemmatizer;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map.Entry;
+
+import is2.data.IEncoderPlus;
+import is2.util.DB;
+
+/**
+ * Map Features, do not map long to integer
+ *
+ * @author Bernd Bohnet, 20.09.2009
+ */
+
+final public class MFO implements IEncoderPlus {
+
+	/** The features and its values */
+	static private final HashMap<String, HashMap<String, Integer>> m_featureSets = new HashMap<String, HashMap<String, Integer>>();
+
+	/** The feature class and the number of values */
+	static private final HashMap<String, Integer> m_featureCounters = new HashMap<String, Integer>();
+
+	/** The number of bits needed to encode a feature */
+	static final HashMap<String, Integer> m_featureBits = new HashMap<String, Integer>();
+
+	/** Integer counter for long2int */
+	static private int count = 0;
+
+	/** Stop growing */
+	public boolean stop = false;
+
+	final public static String NONE = "<None>";
+
+	public MFO() {
+	}
+
+	public int size() {
+		return count;
+	}
+
+	/**
+	 * Register an attribute class, if it not exists and add a possible value
+	 * 
+	 * @param type
+	 * @param type2
+	 */
+	@Override
+	final public int register(String a, String v) {
+
+		HashMap<String, Integer> fs = getFeatureSet().get(a);
+		if (fs == null) {
+			fs = new HashMap<String, Integer>();
+			getFeatureSet().put(a, fs);
+			fs.put(NONE, 0);
+			getFeatureCounter().put(a, 1);
+		}
+		Integer c = getFeatureCounter().get(a);
+
+		Integer i = fs.get(v);
+		if (i == null) {
+			fs.put(v, c);
+			c++;
+			getFeatureCounter().put(a, c);
+			return c - 1;
+		} else
+			return i;
+	}
+
+	/**
+	 * Calculates the number of bits needed to encode a feature
+	 */
+	public void calculateBits() {
+
+		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
+			int bits = (int) Math.ceil((Math.log(e.getValue() + 1) / Math.log(2)));
+			m_featureBits.put(e.getKey(), bits);
+		}
+
+		// System.out.println("total number of needed bits "+total);
+	}
+
+	@Override
+	public String toString() {
+
+		StringBuffer content = new StringBuffer();
+		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
+			content.append(e.getKey() + " " + e.getValue());
+			content.append(':');
+			// HashMap<String,Integer> vs = getFeatureSet().get(e.getKey());
+			content.append(getFeatureBits(e.getKey()));
+
+			/*
+			 * if (vs.size()<120) for(Entry<String,Integer> e2 : vs.entrySet())
+			 * { content.append(e2.getKey()+" ("+e2.getValue()+") "); }
+			 */
+			content.append('\n');
+
+		}
+		return content.toString();
+	}
+
+	static final public short getFeatureBits(String a) {
+		if (m_featureBits.get(a) == null)
+			return 0;
+		return (short) m_featureBits.get(a).intValue();
+	}
+
+	/**
+	 * Get the integer place holder of the string value v of the type a
+	 *
+	 * @param t
+	 *            the type
+	 * @param v
+	 *            the value
+	 * @return the integer place holder of v
+	 */
+	@Override
+	final public int getValue(String t, String v) {
+
+		if (m_featureSets.get(t) == null)
+			return -1;
+		Integer vi = m_featureSets.get(t).get(v);
+		if (vi == null)
+			return -1; // stop &&
+		return vi.intValue();
+	}
+
+	/**
+	 * Static version of getValue
+	 * 
+	 * @see getValue
+	 */
+	static final public int getValueS(String a, String v) {
+
+		if (m_featureSets.get(a) == null)
+			return -1;
+		Integer vi = m_featureSets.get(a).get(v);
+		if (vi == null)
+			return -1; // stop &&
+		return vi.intValue();
+	}
+
+	public int hasValue(String a, String v) {
+
+		Integer vi = m_featureSets.get(a).get(v);
+		if (vi == null)
+			return -1;
+		return vi.intValue();
+	}
+
+	public static String printBits(int k) {
+		StringBuffer s = new StringBuffer();
+		for (int i = 0; i < 31; i++) {
+			s.append((k & 0x00000001) == 1 ? '1' : '0');
+			k = k >> 1;
+
+		}
+		s.reverse();
+		return s.toString();
+	}
+
+	/**
+	 * Maps a long to a integer value. This is very useful to save memory for
+	 * sparse data long values
+	 * 
+	 * @param l
+	 * @return the integer
+	 */
+	static public int misses = 0;
+	static public int good = 0;
+
+	/**
+	 * Write the data
+	 * 
+	 * @param dos
+	 * @throws IOException
+	 */
+	static public void writeData(DataOutputStream dos) throws IOException {
+		dos.writeInt(getFeatureSet().size());
+		// DB.println("write"+getFeatureSet().size());
+		for (Entry<String, HashMap<String, Integer>> e : getFeatureSet().entrySet()) {
+			dos.writeUTF(e.getKey());
+			dos.writeInt(e.getValue().size());
+
+			for (Entry<String, Integer> e2 : e.getValue().entrySet()) {
+
+				if (e2.getKey() == null)
+					DB.println("key " + e2.getKey() + " value " + e2.getValue() + " e -key " + e.getKey());
+				dos.writeUTF(e2.getKey());
+				dos.writeInt(e2.getValue());
+
+			}
+
+		}
+	}
+
+	public void read(DataInputStream din) throws IOException {
+
+		int size = din.readInt();
+		for (int i = 0; i < size; i++) {
+			String k = din.readUTF();
+			int size2 = din.readInt();
+
+			HashMap<String, Integer> h = new HashMap<String, Integer>();
+			getFeatureSet().put(k, h);
+			for (int j = 0; j < size2; j++) {
+				h.put(din.readUTF(), din.readInt());
+			}
+			getFeatureCounter().put(k, size2);
+		}
+
+		count = size;
+		// stop();
+		calculateBits();
+	}
+
+	/**
+	 * Clear the data
+	 */
+	static public void clearData() {
+		getFeatureSet().clear();
+		m_featureBits.clear();
+		getFeatureSet().clear();
+	}
+
+	@Override
+	public HashMap<String, Integer> getFeatureCounter() {
+		return m_featureCounters;
+	}
+
+	static public HashMap<String, HashMap<String, Integer>> getFeatureSet() {
+		return m_featureSets;
+	}
+
+	static public String[] reverse(HashMap<String, Integer> v) {
+		String[] set = new String[v.size()];
+		for (Entry<String, Integer> e : v.entrySet()) {
+			set[e.getValue()] = e.getKey();
+		}
+		return set;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/lemmatizer/Options.java b/dependencyParser/experimental/mate-tools/src/is2/lemmatizer/Options.java
new file mode 100755
index 0000000..30c2567
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/lemmatizer/Options.java
@@ -0,0 +1,72 @@
+package is2.lemmatizer;
+
+import java.io.File;
+import java.io.IOException;
+
+import is2.util.OptionsSuper;
+
+public final class Options extends OptionsSuper {
+
+	public Options(String[] args) throws IOException {
+
+		for (int i = 0; i < args.length; i++) {
+
+			if (args[i].equals("--help"))
+				explain();
+
+			if (args[i].equals("-normalize")) {
+				normalize = Boolean.parseBoolean(args[++i]);
+			} else if (args[i].equals("-features")) {
+				features = args[i + 1];
+				i++;
+			} else if (args[i].equals("-hsize")) {
+				hsize = Integer.parseInt(args[i + 1]);
+				i++;
+			} else if (args[i].equals("-len")) {
+				maxLen = Integer.parseInt(args[i + 1]);
+				i++;
+			} else if (args[i].equals("-tmp")) {
+				tmp = args[i + 1];
+				i++;
+			} else if (args[i].equals("-uc")) {
+				upper = true;
+				System.out.println("set uppercase " + upper);
+
+			} else
+				super.addOption(args, i);
+
+		}
+
+		if (trainfile != null) {
+
+			if (tmp != null)
+				trainforest = File.createTempFile("train", ".tmp", new File(tmp));
+			else
+				trainforest = File.createTempFile("train", ".tmp"); // ,new
+																	// File("F:\\")
+			trainforest.deleteOnExit();
+		}
+
+	}
+
+	private void explain() {
+		System.out.println("Usage: ");
+		System.out.println("java -class mate.jar is2.lemmatizer.Lemmatizer [Options]");
+		System.out.println();
+		System.out.println("Options:");
+		System.out.println("");
+		System.out.println(" -train  <file>    the corpus a model is trained on; default " + this.trainfile);
+		System.out.println(" -test   <file>    the input corpus for testing; default " + this.testfile);
+		System.out.println(" -out    <file>    the output corpus (result) of a test run; default " + this.outfile);
+		System.out.println(" -model  <file>    the parsing model for traing the model is stored in the files");
+		System.out.println(
+				"                   and for parsing the model is load from this file; default " + this.modelName);
+		System.out.println(
+				" -i      <number>  the number of training iterations; good numbers are 10 for smaller corpora and 6 for bigger; default "
+						+ this.numIters);
+		System.out.println(" -count  <number>  the n first sentences of the corpus are take for the training default "
+				+ this.count);
+
+		System.exit(0);
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/lemmatizer/Pipe.java b/dependencyParser/experimental/mate-tools/src/is2/lemmatizer/Pipe.java
new file mode 100755
index 0000000..c8b4bba
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/lemmatizer/Pipe.java
@@ -0,0 +1,671 @@
+package is2.lemmatizer;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map.Entry;
+
+import is2.data.Cluster;
+import is2.data.D4;
+import is2.data.Instances;
+import is2.data.InstancesTagger;
+import is2.data.Long2Int;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.tools.IPipe;
+import is2.util.DB;
+import is2.util.OptionsSuper;
+
+final public class Pipe extends PipeGen implements IPipe {
+
+	private static final int _MIN_WORDS_MAPPED_BY_SCRIPT = 1;
+	private static final int _MIN_OCCURENT_FOR_SCRIPT_USE = 4;
+
+	private static final String _F0 = "F0";
+	private static final String _F1 = "F1", _F2 = "F2", _F3 = "F3", _F4 = "F4", _F5 = "F5", _F6 = "F6", _F7 = "F7",
+			_F8 = "F8", _F9 = "F9", _F10 = "F10";
+	private static final String _F11 = "F11", _F12 = "F12", _F13 = "F13", _F14 = "F14", _F15 = "F15", _F16 = "F16",
+			_F17 = "F17", _F18 = "F18", _F19 = "F19", _F20 = "F20";
+	private static final String _F21 = "F21", _F22 = "F22", _F23 = "F23", _F24 = "F24", _F25 = "F25", _F26 = "F26",
+			_F27 = "F27", _F28 = "F28", _F29 = "F29", _F30 = "F30";
+	private static final String _F31 = "F31", _F32 = "F32", _F33 = "F33", _F34 = "F34", _F35 = "F35", _F36 = "F36",
+			_F37 = "F37", _F38 = "F38";
+	private static int _f0, _f1, _f4, _f5, _f6, _f7, _f8, _f9, _f10, _f11, _f12, _f13, _f14, _f15, _f16, _f17, _f18,
+			_f19;
+	private static int _f21, _f27, _f28, _f31, _f32, _f33;
+	public static int _CEND, _swrd, _ewrd;
+
+	public static final String MID = "MID", END = "END", STR = "STR", OPERATION = "OP";
+
+	private CONLLReader09 depReader;
+
+	public HashMap<String, String> opse = new HashMap<String, String>();
+
+	public String[] types;
+
+	public MFO mf = new MFO();
+	private D4 z, x;
+
+	Cluster cl;
+	OptionsSuper options;
+	Long2Int li;
+
+	public Pipe(OptionsSuper options2, Long2Int l) {
+
+		options = options2;
+		li = l;
+	}
+
+	@Override
+	public InstancesTagger createInstances(String file) {
+
+		InstancesTagger is = new InstancesTagger();
+
+		depReader = new CONLLReader09(CONLLReader09.NO_NORMALIZE);
+
+		depReader.startReading(file);
+		mf.register(REL, "<root-type>");
+		mf.register(POS, "<root-POS>");
+
+		System.out.print("Registering feature parts ");
+		HashMap<String, Integer> ops = new HashMap<String, Integer>();
+		HashMap<String, HashSet<String>> op2form = new HashMap<String, HashSet<String>>();
+		int ic = 0;
+		int del = 0;
+		HashSet<String> rm = new HashSet<String>();
+
+		while (true) {
+			SentenceData09 instance1 = depReader.getNext();
+			if (instance1 == null)
+				break;
+			ic++;
+			if (ic % 100 == 0) {
+				del = outValue(ic, del);
+			}
+
+			String[] labs1 = instance1.labels;
+			for (String element : labs1) {
+				// typeAlphabet.lookupIndex(labs1[i1]);
+				mf.register(REL, element);
+			}
+
+			String[] w = instance1.forms;
+			for (int i1 = 0; i1 < w.length; i1++) {
+				// saw the first time?
+				if (mf.getValue(WORD, w[i1].toLowerCase()) == -1)
+					opse.put(instance1.forms[i1].toLowerCase(), instance1.lemmas[i1]);
+
+				mf.register(WORD, w[i1].toLowerCase());
+			}
+			for (String element : w)
+				mf.register(WORD, element);
+
+			w = instance1.lemmas;
+			for (String element : w)
+				mf.register(WORD, element);
+			for (String element : w)
+				mf.register(WORD, element.toLowerCase());
+
+			w = instance1.plemmas;
+			for (String element : w)
+				mf.register(WORD, element);
+			for (String element : w)
+				mf.register(WORD, element.toLowerCase());
+
+			for (String element : w)
+				registerChars(CHAR, element);
+
+			w = instance1.ppos;
+			for (String element : w)
+				mf.register(POS, element);
+
+			w = instance1.gpos;
+			for (String element : w)
+				mf.register(POS, element);
+
+			for (int i1 = 1; i1 < w.length; i1++) {
+				String op = getOperation(instance1, i1);
+				if (ops.get(op) == null)
+					ops.put(op, 1);
+				else {
+					ops.put(op, (ops.get(op) + 1));
+					if (ops.get(op) > 4)
+						rm.add(instance1.forms[i1].toLowerCase());
+				}
+
+				HashSet<String> forms = op2form.get(op);
+				if (forms == null) {
+					forms = new HashSet<String>();
+					op2form.put(op, forms);
+				}
+				forms.add(instance1.forms[i1].toLowerCase());
+
+			}
+
+		}
+
+		int countFreqSingleMappings = 0;
+
+		int sc = 0;
+		ArrayList<Entry<String, Integer>> opsl = new ArrayList<Entry<String, Integer>>();
+		for (Entry<String, Integer> e : ops.entrySet()) {
+
+			// do not use scripts for infrequent cases or frequent single
+			// mappings (der -> die)
+			if (e.getValue() > _MIN_OCCURENT_FOR_SCRIPT_USE
+					&& op2form.get(e.getKey()).size() > _MIN_WORDS_MAPPED_BY_SCRIPT) {
+				mf.register(OPERATION, e.getKey());
+				sc++;
+				opsl.add(e);
+			} else {
+				// do not remove the infrequent cases
+				rm.removeAll(op2form.get(e.getKey()));
+
+				if (op2form.get(e.getKey()).size() <= 1)
+					countFreqSingleMappings += op2form.get(e.getKey()).size();
+			}
+		}
+		for (String k : rm) {
+			opse.remove(k);
+		}
+
+		Collections.sort(opsl, new Comparator<Entry<String, Integer>>() {
+
+			@Override
+			public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
+
+				return o1.getValue() == o2.getValue() ? 0 : o1.getValue() > o2.getValue() ? 1 : -1;
+			}
+		});
+
+		/*
+		 * for(Entry<String, Integer> e : opsl) {
+		 * System.out.println(e.getKey()+"  "+e.getValue()); }
+		 */
+
+		if (options.clusterFile == null)
+			cl = new Cluster();
+		else
+			cl = new Cluster(options.clusterFile, mf, 6);
+
+		System.out.println("\nfound scripts " + ops.size() + " used scripts " + sc);
+		System.out.println("found mappings of single words " + countFreqSingleMappings);
+		System.out.println("use word maps instead of scripts " + this.opse.size());
+		// System.out.println(" "+opse);
+		System.out.println("" + mf.toString());
+
+		initFeatures();
+
+		mf.calculateBits();
+		initValues();
+
+		depReader.startReading(options.trainfile);
+
+		int i = 0;
+		long start1 = System.currentTimeMillis();
+
+		System.out.print("Creating Features: ");
+		is.init(ic, mf);
+		del = 0;
+		while (true) {
+			try {
+				if (i % 100 == 0) {
+					del = outValue(i, del);
+				}
+				SentenceData09 instance1 = depReader.getNext(is);
+				if (instance1 == null)
+					break;
+
+				is.fillChars(instance1, i, _CEND);
+
+				if (i > options.count)
+					break;
+
+				i++;
+			} catch (Exception e) {
+				DB.println("error in sentnence " + i);
+				e.printStackTrace();
+			}
+		}
+		long end1 = System.currentTimeMillis();
+		System.gc();
+		long mem2 = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
+		System.out.print("  time " + (end1 - start1) + " mem " + (mem2 / 1024) + " kb");
+
+		types = new String[mf.getFeatureCounter().get(OPERATION)];
+
+		for (Entry<String, Integer> e : MFO.getFeatureSet().get(OPERATION).entrySet()) {
+			types[e.getValue()] = e.getKey();
+			// System.out.println("set pos "+e.getKey());
+		}
+
+		System.out.println("Num Features: " + mf.size());
+
+		return is;
+
+	}
+
+	/**
+	 * @param is
+	 * @param n
+	 * @param k
+	 * @param wds
+	 * @return
+	 */
+	public static String getOperation(Instances is, int n, int k, String[] wds) {
+
+		String form = wds[is.forms[n][k]];
+		String olemma = wds[is.glemmas[n][k]];
+
+		String s = new StringBuffer(form.toLowerCase()).reverse().toString();
+		String t = new StringBuffer(olemma.toLowerCase()).reverse().toString();
+
+		return getOperation2(s, t);
+	}
+
+	public static String getOperation(SentenceData09 instance1, int i1) {
+		String s = new StringBuffer(instance1.forms[i1].toLowerCase()).reverse().toString();
+		String t = new StringBuffer(instance1.lemmas[i1].toLowerCase()).reverse().toString();
+
+		return getOperation2(s, t);
+	}
+
+	public static String getOperation(String si, String ti) {
+		String s = new StringBuffer(si.toLowerCase()).reverse().toString();
+		String t = new StringBuffer(ti.toLowerCase()).reverse().toString();
+
+		return getOperation2(s, t);
+	}
+
+	private static String getOperation2(String s, String t) {
+		StringBuffer po = new StringBuffer();
+		String op;
+		if (!s.equals(t)) {
+
+			int[][] d = StringEdit.LD(s, t);
+			StringEdit.searchPath(s, t, d, po, false);
+			op = po.toString();
+
+		} else
+			op = "0"; // do nothing
+		return op;
+	}
+
+	private void registerChars(String type, String word) {
+		for (int i = 0; i < word.length(); i++)
+			mf.register(type, Character.toString(word.charAt(i)));
+	}
+
+	@Override
+	public void initValues() {
+
+		z = new D4(li);
+
+		x = new D4(li);
+		x.a0 = s_type;
+
+		s_pos = mf.getFeatureCounter().get(POS).intValue();// mf.getFeatureBits(POS);
+		s_word = mf.getFeatureCounter().get(WORD);
+		s_type = mf.getFeatureCounter().get(TYPE).intValue();// mf.getFeatureBits(TYPE);
+		s_char = mf.getFeatureCounter().get(CHAR).intValue();// mf.getFeatureBits(CHAR);
+		s_oper = mf.getFeatureCounter().get(OPERATION).intValue();// mf.getFeatureBits(OPERATION);
+
+		types = new String[mf.getFeatureCounter().get(Pipe.OPERATION)];
+		for (Entry<String, Integer> e : MFO.getFeatureSet().get(Pipe.OPERATION).entrySet())
+			types[e.getValue()] = e.getKey();
+
+		// wds = new String[mf.getFeatureCounter().get(Pipe.WORD)];
+		// for(Entry<String,Integer> e :
+		// mf.getFeatureSet().get(Pipe.WORD).entrySet()) wds[e.getValue()] =
+		// e.getKey();
+
+		z.a0 = s_type;
+		z.a1 = s_oper;
+		z.a2 = s_char;
+		z.a3 = s_char;
+		z.a4 = s_char;
+		z.a5 = s_char;
+		z.a6 = s_char;
+		z.a7 = s_char;
+		x.a0 = s_type;
+		x.a1 = s_oper;
+		x.a2 = s_word;
+		x.a3 = s_word;
+		x.a4 = s_word;
+		x.a5 = s_char;
+		x.a6 = s_char;
+		x.a7 = s_char;
+
+	}
+
+	public static int s_pos, s_word, s_type, s_dir, s_dist, s_char, s_oper;
+
+	/**
+	 * Initialize the features.
+	 * 
+	 * @param maxFeatures
+	 */
+	@Override
+	public void initFeatures() {
+
+		for (int k = 0; k < 50; k++) {
+			mf.register(TYPE, "F" + k);
+		}
+
+		_f0 = mf.register(TYPE, _F0);
+		_f1 = mf.register(TYPE, _F1);
+		mf.register(TYPE, _F2);
+		mf.register(TYPE, _F3);
+		_f4 = mf.register(TYPE, _F4);
+		_f5 = mf.register(TYPE, _F5);
+		_f6 = mf.register(TYPE, _F6);
+		_f7 = mf.register(TYPE, _F7);
+		_f8 = mf.register(TYPE, _F8);
+		_f9 = mf.register(TYPE, _F9);
+		_f10 = mf.register(TYPE, _F10);
+		_f11 = mf.register(TYPE, _F11);
+		_f12 = mf.register(TYPE, _F12);
+		_f13 = mf.register(TYPE, _F13);
+		_f14 = mf.register(TYPE, _F14);
+		_f15 = mf.register(TYPE, _F15);
+		_f16 = mf.register(TYPE, _F16);
+		_f17 = mf.register(TYPE, _F17);
+		_f18 = mf.register(TYPE, _F18);
+		_f19 = mf.register(TYPE, _F19);
+		mf.register(TYPE, _F20);
+		_f21 = mf.register(TYPE, _F21);
+		mf.register(TYPE, _F22);
+		mf.register(TYPE, _F23);
+		mf.register(TYPE, _F24);
+		mf.register(TYPE, _F25);
+		mf.register(TYPE, _F26);
+		_f27 = mf.register(TYPE, _F27);
+		_f28 = mf.register(TYPE, _F28);
+		mf.register(TYPE, _F29);
+		mf.register(TYPE, _F30);
+
+		_f31 = mf.register(TYPE, _F31);
+		_f32 = mf.register(TYPE, _F32);
+		_f33 = mf.register(TYPE, _F33);
+		mf.register(TYPE, _F34);
+
+		mf.register(TYPE, _F35);
+		mf.register(TYPE, _F36);
+		mf.register(TYPE, _F37);
+		mf.register(TYPE, _F38);
+
+		mf.register(POS, MID);
+		mf.register(POS, STR);
+		mf.register(POS, END);
+		mf.register(TYPE, CHAR);
+
+		_swrd = mf.register(WORD, STR);
+		_ewrd = mf.register(WORD, END);
+
+		_CEND = mf.register(CHAR, END);
+
+	}
+
+	final public void addCoreFeatures(InstancesTagger is, int ic, int i, int oper, String form, long[] f) {
+
+		for (int l = f.length - 1; l >= 0; l--)
+			f[l] = 0;
+
+		int formi = is.forms[ic][i];
+		int wl = is.chars[ic][i][11];// .forms[i].length();
+
+		int position = 1 + (i < 3 ? i : 3);
+
+		int c0 = is.chars[ic][i][0], c1 = is.chars[ic][i][1], c2 = is.chars[ic][i][2], c3 = is.chars[ic][i][3],
+				c4 = is.chars[ic][i][4];
+		int e0 = is.chars[ic][i][6], e1 = is.chars[ic][i][7], e2 = is.chars[ic][i][8], e3 = is.chars[ic][i][9],
+				e4 = is.chars[ic][i][10];
+
+		int len = is.length(ic);
+
+		x.v1 = oper;
+		x.v0 = _f0;
+		x.v2 = formi;
+		x.cz3();
+		f[0] = x.getVal();
+		f[1] = x.csa(3, position);
+		x.v0 = _f1;
+		x.v2 = formi;
+		x.v3 = i + 1 >= len ? x.v3 = _ewrd : is.forms[ic][i + 1];
+		x.cz4();
+		f[2] = x.getVal();
+
+		// contains upper case include again!!!
+
+		short upper = 0;
+		short number = 1;
+		for (int k1 = 0; k1 < wl; k1++) {
+			char c = form.charAt(k1);
+			if (Character.isUpperCase(c)) {
+				if (k1 == 0)
+					upper = 1;
+				else {
+					// first char + another
+					if (upper == 1)
+						upper = 3;
+					// another uppercase in the word
+					else if (upper == 0)
+						upper = 2;
+				}
+			}
+
+			if (Character.isDigit(c) && k1 == 0)
+				number = 2;
+			else if (Character.isDigit(c) && number == 1)
+				number = 3;
+
+		}
+
+		// contains a number
+		z.v0 = _f21;
+		z.v2 = number;
+		z.cz3();
+		f[3] = z.getVal();
+
+		z.v0 = _f4;
+		z.v1 = oper;
+		z.v2 = c0;
+		z.cz3();
+		f[4] = z.getVal();
+		z.v0 = _f5;
+		z.v2 = e0;
+		z.cz3();
+		f[5] = z.getVal();
+
+		z.v2 = c0;
+		z.v3 = c1;
+		z.v4 = c2;
+		z.v5 = c3;
+		z.v6 = c4;
+		z.v0 = _f6;
+		z.cz4();
+		f[6] = z.getVal();
+		z.v0 = _f7;
+		z.cz5();
+		f[7] = z.getVal();
+		z.v0 = _f8;
+		z.cz6();
+		f[8] = z.getVal();
+		z.v0 = _f9;
+		z.cz7();
+		f[9] = z.getVal();
+
+		int c = 10;
+		z.v2 = e0;
+		z.v3 = e1;
+		z.v4 = e2;
+		z.v5 = e3;
+		z.v6 = e4;
+		z.v0 = _f10;
+		z.cz4();
+		f[c++] = z.getVal();
+		f[c++] = z.csa(3, upper);
+		z.v0 = _f11;
+		z.cz5();
+		f[c++] = z.getVal();
+		f[c++] = z.csa(3, upper);
+		z.v0 = _f12;
+		z.cz6();
+		f[c++] = z.getVal();
+		f[c++] = z.csa(3, upper);
+		z.v0 = _f13;
+		z.cz7();
+		f[c++] = z.getVal();
+		f[c++] = z.csa(3, upper);
+
+		if (len > i + 1) {
+
+			z.v0 = _f14;
+			z.v2 = is.chars[ic][i + 1][0];
+			z.cz3();
+			f[c++] = z.getVal();
+
+			z.v0 = _f15;
+			z.v2 = is.chars[ic][i + 1][5];
+			z.cz3();
+			f[c++] = z.getVal();
+
+			if (is.chars[ic][i + 1][11] > 1) {
+				z.v0 = _f16;
+				z.v2 = is.chars[ic][i + 1][0];
+				z.v3 = is.chars[ic][i + 1][2];
+				z.cz4();
+				f[c++] = z.getVal();
+
+				z.v0 = _f17;
+				z.v2 = is.chars[ic][i + 1][1];
+				z.v3 = is.chars[ic][i + 1][6];
+				z.cz4();
+				f[c++] = z.getVal();// fv.add(li.l2i(mf.calc4(b)));
+			}
+
+			x.v0 = _f18;
+			x.v2 = is.forms[ic][i + 1];
+			x.cz3();
+			f[c++] = x.getVal();
+
+			if (len > i + 2) {
+				x.v0 = _f32;
+				x.v2 = is.forms[ic][i + 2];
+				x.v3 = is.forms[ic][i + 1];
+				x.cz4();
+				f[c++] = x.getVal();
+				x.cz3();
+				f[c++] = x.getVal();// fv.add(li.l2i(mf.calc3(b)));
+
+			}
+
+			if (len > i + 3) {
+				x.v0 = _f33;
+				x.v2 = is.forms[ic][i + 3];
+				x.v3 = is.forms[ic][i + 2];
+				x.cz4();
+				f[c++] = x.getVal();// fv.add(li.l2i(mf.calc4(b)));
+				x.cz3();
+				f[27] = x.getVal();// fv.add(li.l2i(mf.calc3(b)));
+			}
+		}
+
+		// length
+
+		z.v0 = _f19;
+		z.v1 = oper;
+		z.v2 = wl;
+		z.cz3();
+		f[c++] = z.getVal();// fv.add(li.l2i(mf.calc3(dl1)));
+
+		if (i < 1)
+			return;
+
+		x.v0 = _f27;
+		x.v1 = oper;
+		x.v2 = is.forms[ic][i - 1];
+		x.cz3();
+		f[c++] = x.getVal();// fv.add(li.l2i(mf.calc3(b)));
+
+		if (i < 2)
+			return;
+
+		// added this before it was 99.46
+		x.v0 = _f28;
+		x.v2 = is.forms[ic][i - 2];
+		x.cz3();
+		f[c++] = x.getVal();// fv.add(li.l2i(mf.calc3(b)));
+
+		// result 99.484
+		if (i < 3)
+			return;
+
+		x.v0 = _f31;
+		x.v1 = oper;
+		x.v2 = is.forms[ic][i - 3];
+		x.v3 = is.forms[ic][i - 2];
+		x.cz4();
+		f[c++] = x.getVal();// fv.add(li.l2i(mf.calc4(b)));
+
+	}
+
+	// public String[] wds;
+
+	/**
+	 * Write the lemma that are not mapped by operations
+	 * 
+	 * @param dos
+	 */
+	private void writeMap(DataOutputStream dos) {
+
+		try {
+			dos.writeInt(opse.size());
+			for (Entry<String, String> e : opse.entrySet()) {
+				dos.writeUTF(e.getKey());
+				dos.writeUTF(e.getValue());
+			}
+		} catch (IOException e1) {
+			e1.printStackTrace();
+		}
+	}
+
+	/**
+	 * Read the form-lemma mapping not read by operations
+	 * 
+	 * @param dis
+	 */
+	public void readMap(DataInputStream dis) {
+		try {
+			int size = dis.readInt();
+			for (int i = 0; i < size; i++) {
+				opse.put(dis.readUTF(), dis.readUTF());
+			}
+		} catch (IOException e1) {
+			e1.printStackTrace();
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.tools.IPipe#write(java.io.DataOutputStream)
+	 */
+	@Override
+	public void write(DataOutputStream dos) {
+		this.writeMap(dos);
+		try {
+			cl.write(dos);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/lemmatizer/StringEdit.java b/dependencyParser/experimental/mate-tools/src/is2/lemmatizer/StringEdit.java
new file mode 100755
index 0000000..69fd872
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/lemmatizer/StringEdit.java
@@ -0,0 +1,303 @@
+package is2.lemmatizer;
+
+import java.util.ArrayList;
+
+public class StringEdit {
+
+	public static void main(String args[]) {
+
+		String s = new StringBuffer(args[0]).reverse().toString();
+		String t = new StringBuffer(args[1]).reverse().toString();
+
+		int d[][] = LD(s, t);
+
+		StringBuffer opersations = new StringBuffer();
+		searchPath(s, t, d, opersations, false);
+		System.out.println("resuylt " + " " + opersations);
+
+	}
+
+	// ****************************
+	// Get minimum of three values
+	// ****************************
+
+	static private int Minimum(int a, int b, int c) {
+		int mi;
+
+		mi = a;
+		if (b < mi)
+			mi = b;
+		if (c < mi)
+			mi = c;
+
+		return mi;
+
+	}
+
+	// *****************************
+	// Compute Levenshtein distance
+	// *****************************
+
+	static public int[][] LD(String s, String t) {
+
+		int n = s.length();
+		int m = t.length();
+		; // length of t
+		// char s_i; // ith character of s
+		// char t_j; // jth character of t
+		int cost; // cost
+
+		// Step 1
+
+		int[][] d = new int[n + 1][m + 1];
+
+		if (n == 0)
+			return d;
+		if (m == 0)
+			return d;
+
+		// Step 2
+
+		for (int i = 0; i <= n; i++)
+			d[i][0] = i;
+		for (int j = 0; j <= m; j++)
+			d[0][j] = j;
+
+		// Step 3
+
+		for (int i = 1; i <= n; i++) {
+
+			int s_i = s.charAt(i - 1);
+
+			// Step 4
+
+			for (int j = 1; j <= m; j++) {
+
+				// t_j = t.charAt (j - 1);
+
+				// Step 5
+
+				if (s_i == t.charAt(j - 1))
+					cost = 0;
+				else
+					cost = 1;
+
+				// Step 6
+
+				d[i][j] = Minimum(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + cost);
+
+			}
+
+		}
+
+		// Step 7
+
+		return d;
+
+	}
+
+	static String searchPath(String s, String t, int[][] d, StringBuffer operations, boolean debug) {
+
+		StringBuffer result = new StringBuffer(s);
+
+		int n = d.length;
+		int m = d[0].length;
+
+		int x = n - 1;
+		int y = m - 1;
+		boolean changed = false;
+		while (true) {
+			if (debug && changed)
+				System.out.println("result " + new StringBuffer(result).reverse());
+
+			if (d[x][y] == 0)
+				break;
+			if (y > 0 && x > 0 && d[x - 1][y - 1] < d[x][y]) {
+				if (debug)
+					System.out.println("min d[x-1][y-1] " + d[x - 1][y - 1] + " d[x][y] " + d[x][y] + " rep "
+							+ s.charAt(x - 1) + " with " + t.charAt(y - 1) + " at " + (x - 1));
+
+				operations.append('R').append(Character.toString((char) (x - 1))).append(s.charAt(x - 1))
+						.append(t.charAt(y - 1));
+				if (debug)
+					result.setCharAt(x - 1, t.charAt(y - 1));
+				y--;
+				x--;
+				changed = true;
+				continue;
+			}
+			if (y > 0 && d[x][y - 1] < d[x][y]) {
+				if (debug)
+					System.out.println("min d[x][y-1] " + d[x][y - 1] + "  d[x][y] " + d[x][y] + " ins "
+							+ t.charAt(y - 1) + " at " + (x));
+				operations.append('I').append(Character.toString((char) (x))).append(t.charAt(y - 1));
+				if (debug)
+					result.insert(x, t.charAt(y - 1));
+				y--;
+				changed = true;
+				continue;
+			}
+			if (x > 0 && d[x - 1][y] < d[x][y]) {
+				if (debug)
+					System.out.println("min d[x-1][y] " + d[x - 1][y] + " d[x][y] " + d[x][y] + " del "
+							+ s.charAt(x - 1) + " at " + (x - 1));
+				operations.append('D').append(Character.toString((char) (x - 1))).append(s.charAt(x - 1));
+				if (debug)
+					result.deleteCharAt(x - 1);
+				x--;
+				changed = true;
+				continue;
+			}
+			changed = false;
+			if (x > 0 && y > 0 && d[x - 1][y - 1] == d[x][y]) {
+				x--;
+				y--;
+				continue;
+			}
+			if (x > 0 && d[x - 1][y] == d[x][y]) {
+				x--;
+				continue;
+			}
+			if (y > 0 && d[x][y - 1] == d[x][y]) {
+				y--;
+				continue;
+			}
+
+		}
+		if (debug)
+			return result.reverse().toString();
+		else
+			return null;
+	}
+
+	public static String change(String s, String operations) {
+
+		StringBuffer result = new StringBuffer(s).reverse();
+
+		int pc = 0;
+		while (true) {
+			if (operations.length() <= pc)
+				break;
+			char nextOperation = operations.charAt(pc);
+			pc++;
+			if (nextOperation == 'R') {
+				// pc++;
+				int xm1 = operations.charAt(pc);
+				pc++;
+				char replace = operations.charAt(pc);
+				pc++;
+				char with = operations.charAt(pc);
+				// operations.append('R').append((char)x-1).append(s.charAt(x-1)).append(t.charAt(y-1));
+				// System.out.println(""+result+" xm1 "+xm1+" op "+operations);
+
+				if (result.length() <= xm1)
+					return s;
+
+				if (result.charAt(xm1) == replace)
+					result.setCharAt(xm1, with);
+				// if (debug) result.setCharAt(x-1, t.charAt(y-1));
+				pc++;
+
+			} else if (nextOperation == 'I') {
+				// if (debug) System.out.println("min d[x][y-1] "+d[x][y-1]+"
+				// d[x][y] "+d[x][y]+" ins "+t.charAt(y-1)+" at "+(x));
+				// operations.append('I').append((char)x).append(t.charAt(y-1));
+
+				// if (debug)result.insert(x, t.charAt(y-1));
+				// y--;
+				// changed =true;
+				// pc++;
+				int x = operations.charAt(pc);
+				pc++;
+				char in = operations.charAt(pc);
+
+				if (result.length() < x)
+					return s;
+
+				result.insert(x, in);
+				pc++;
+			} else if (nextOperation == 'D') {
+				// pc++;
+				int xm1 = operations.charAt(pc);
+
+				if (result.length() <= xm1)
+					return s;
+
+				result.deleteCharAt(xm1);
+				pc++;
+				// delete with
+				pc++;
+				// operations.append('D').append((char)x-1).append(s.charAt(x-1));
+				// if (debug)result.deleteCharAt(x-1);
+			}
+
+		}
+		return result.reverse().toString();
+		// else return null;
+	}
+
+	/**
+	 * @param opers
+	 * @param postion
+	 * @return
+	 */
+	public static String get(ArrayList<String> opers, int position) {
+		for (String s : opers) {
+			int p = s.charAt(1);
+			if (p == position) {
+				return s;
+			}
+		}
+		return "0";
+	}
+
+	/**
+	 * @param form
+	 * @param string
+	 * @param c
+	 * @return
+	 */
+	public static String changeSimple(String form, String operation, int c) {
+
+		if (operation.equals("0"))
+			return form;
+
+		if (operation.charAt(0) == 'I') {
+			StringBuffer f = new StringBuffer(form);
+			if (f.length() <= c) {
+				// DB.println("fail insert ");
+				return form;
+			}
+			f.insert(c + 1, operation.charAt(1));
+			return f.toString();
+		}
+		if (operation.charAt(0) == 'R') {
+			StringBuffer f = new StringBuffer(form);
+			// if (f.length()<=c) f.append(' ');
+			if (f.length() <= c) {
+				// DB.println("fail replace ");
+				return form;
+			}
+			f.setCharAt(c, operation.charAt(2));
+			return f.toString();
+		}
+
+		if (operation.charAt(0) == 'D') {
+			StringBuffer f = new StringBuffer(form);
+			f.delete(c, c + 1);// .append(' ');
+			return f.toString();
+		}
+		return form;
+	}
+
+	/**
+	 * @param string
+	 * @return
+	 */
+	public static String simple(String o) {
+		StringBuffer s = new StringBuffer(o);
+		s.delete(1, 2);
+		return s.toString();
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/mtag/Convert.java b/dependencyParser/experimental/mate-tools/src/is2/mtag/Convert.java
new file mode 100755
index 0000000..05b0741
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/mtag/Convert.java
@@ -0,0 +1,99 @@
+/**
+ *
+ */
+package is2.mtag;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.util.ArrayList;
+
+/**
+ * @author Dr. Bernd Bohnet, 20.01.2010
+ *
+ *
+ */
+public class Convert {
+
+	public static void main(String[] args) throws IOException {
+
+		Options options = new Options(args);
+
+		split(options.trainfile);
+
+	}
+
+	/**
+	 * @param trainfile
+	 * @throws IOException
+	 */
+	private static void split(String trainfile) throws IOException {
+
+		String dir = "split";
+		boolean success = (new File("split")).mkdir();
+		if (success)
+			System.out.println("Directory: " + dir + " created");
+
+		ArrayList<String> corpus = new ArrayList<String>();
+
+		BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(trainfile), "UTF-8"),
+				32768);
+		String l = null;
+		int sentences = 0;
+		try {
+			while ((l = reader.readLine()) != null) {
+
+				corpus.add(l);
+				if (l.length() < 8)
+					sentences++;
+
+			}
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		System.out.println("Corpus has " + sentences + " sentences.");
+
+		int partSize = sentences / 20;
+		System.out.println("Prepare corpus for cross annotations with 20 parts with part size " + partSize
+				+ " number of lines " + corpus.size());
+
+		for (int k = 0; k < 20; k++) {
+			BufferedWriter br = new BufferedWriter(
+					new OutputStreamWriter(new FileOutputStream("split/p-" + k), "UTF-8"));
+			BufferedWriter rest = new BufferedWriter(
+					new OutputStreamWriter(new FileOutputStream("split/r-" + k), "UTF-8"));
+			int skip = k * partSize;
+
+			int countSentences = 0;
+			int countSentencesWrote = 0;
+			System.out.println("skip from " + skip + " to " + (skip + partSize - 1));
+			for (String x : corpus) {
+				if (countSentences >= skip && (countSentences < (skip + partSize) || k == 19)) {
+					rest.write(x);
+					rest.newLine();
+					if (x.length() < 8)
+						countSentencesWrote++;
+				} else {
+					br.write(x);
+					br.newLine();
+				}
+
+				if (x.length() < 8)
+					countSentences++;
+			}
+			System.out.println("wrote for this part " + countSentencesWrote);
+			br.flush();
+			br.close();
+			rest.flush();
+			rest.close();
+
+		}
+
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/mtag/Evaluator.java b/dependencyParser/experimental/mate-tools/src/is2/mtag/Evaluator.java
new file mode 100755
index 0000000..16c7bba
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/mtag/Evaluator.java
@@ -0,0 +1,149 @@
+package is2.mtag;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Hashtable;
+import java.util.Map.Entry;
+
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+
+public class Evaluator {
+
+	public static void evaluate(String act_file, String pred_file, String format) throws Exception {
+
+		CONLLReader09 goldReader = new CONLLReader09(act_file);// DependencyReader.createDependencyReader();
+		// boolean labeled = goldReader.startReading(act_file);
+
+		CONLLReader09 predictedReader = new CONLLReader09();
+		predictedReader.startReading(pred_file);
+
+		// if (labeled != predLabeled)
+		// System.out.println("Gold file and predicted file appear to differ on
+		// whether or not they are labeled. Expect problems!!!");
+
+		int total = 0, totalP = 0, corrT = 0;
+		int totalD = 0, corrD = 0, err = 0;
+		int numsent = 0;
+		SentenceData09 goldInstance = goldReader.getNext();
+		SentenceData09 predInstance = predictedReader.getNext();
+
+		Hashtable<String, Integer> errors = new Hashtable<String, Integer>();
+		Hashtable<String, StringBuffer> words = new Hashtable<String, StringBuffer>();
+
+		while (goldInstance != null) {
+
+			int instanceLength = goldInstance.length();
+
+			if (instanceLength != predInstance.length())
+				System.out.println("Lengths do not match on sentence " + numsent);
+
+			String gold[] = goldInstance.ofeats;
+			String pred[] = predInstance.pfeats;
+
+			boolean whole = true;
+			boolean wholeL = true;
+
+			// NOTE: the first item is the root info added during
+			// nextInstance(), so we skip it.
+
+			for (int i = 1; i < instanceLength; i++) {
+				if (gold[i].equals(pred[i]) || (gold[i].equals("_") && pred[i] == null))
+					corrT++;
+				else {
+					// System.out.println("gold:"+goldFeats[i]+"
+					// pred:"+predFeats[i]+" "+goldInstance.forms[i]+" snt
+					// "+numsent+" i:"+i);
+					// for (int k = 1; k < instanceLength; k++) {
+
+					// System.out.print(goldInstance.forms[k]+":"+goldInstance.gpos[k]);
+					// if (k==i) System.out.print(":"+predInstance.gpos[k]);
+					// System.out.print(" ");
+
+					// }
+					// System.out.println();
+					String key = "gold: '" + gold[i] + "' pred: '" + pred[i] + "'";
+					Integer cnt = errors.get(key);
+					StringBuffer errWrd = words.get(key);
+					if (cnt == null) {
+						errors.put(key, 1);
+						words.put(key, new StringBuffer().append(goldInstance.forms[i]));
+					} else {
+						errors.put(key, cnt + 1);
+						errWrd.append(" " + goldInstance.forms[i]);
+					}
+					err++;
+
+				}
+				String[] gf = gold[i].split("|");
+				int eq = 0;
+
+				if (pred[i] != null) {
+					String[] pf = pred[i].split("|");
+					totalP += pf.length;
+
+					if (pf.length > gf.length) {
+					} else {
+					}
+
+					for (String g : gf) {
+						for (String p : pf) {
+							if (g.equals(p)) {
+								eq++;
+								break;
+							}
+						}
+					}
+				} else {
+				}
+				totalD += gf.length;
+				corrD += eq;
+			}
+			total += instanceLength - 1; // Subtract one to not score fake root
+											// token
+
+			if (whole) {
+			}
+			if (wholeL) {
+			}
+			numsent++;
+
+			goldInstance = goldReader.getNext();
+			predInstance = predictedReader.getNext();
+		}
+
+		ArrayList<Entry<String, Integer>> opsl = new ArrayList<Entry<String, Integer>>();
+		for (Entry<String, Integer> e : errors.entrySet()) {
+			opsl.add(e);
+		}
+
+		Collections.sort(opsl, new Comparator<Entry<String, Integer>>() {
+
+			@Override
+			public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
+
+				return o1.getValue() == o2.getValue() ? 0 : o1.getValue() > o2.getValue() ? -1 : 1;
+			}
+
+		});
+
+		System.out.println("10 top most errors:");
+
+		System.out.println("Tokens: " + total + " Correct: " + corrT + " " + (float) corrT / total + " R "
+				+ ((float) corrD / totalD) + " tP " + totalP + " tG " + totalD + " P " + (float) corrD / totalP);
+		System.out.println("err: " + err + " total " + total + " corr " + corrT);
+		// System.out.println("Unlabeled Complete Correct: " +
+		// ((double)corrsent/numsent));
+
+	}
+
+	public static void main(String[] args) throws Exception {
+		String format = "CONLL";
+		if (args.length > 2)
+			format = args[2];
+
+		evaluate(args[0], args[1], format);
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/mtag/ExtractorM.java b/dependencyParser/experimental/mate-tools/src/is2/mtag/ExtractorM.java
new file mode 100644
index 0000000..e84f859
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/mtag/ExtractorM.java
@@ -0,0 +1,683 @@
+package is2.mtag;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map.Entry;
+
+import is2.data.Cluster;
+import is2.data.F2SF;
+import is2.data.Instances;
+import is2.data.InstancesTagger;
+import is2.data.Long2Int;
+import is2.data.Long2IntInterface;
+import is2.data.ParametersFloat;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.io.IOGenerals;
+import is2.tools.IPipe;
+import is2.util.OptionsSuper;
+
+final public class ExtractorM extends PipeGen implements IPipe {
+
+	public static int _CEND;
+
+	private static final String STWRD = "STWRD", STPOS = "STPOS", END = "END", STR = "STR";
+
+	public String[] types;
+
+	Cluster cl;
+
+	final public MFO mf = new MFO();
+	public Long2IntInterface li;
+
+	final MFO.Data4 d1 = new MFO.Data4(), d2 = new MFO.Data4(), d3 = new MFO.Data4(), dw = new MFO.Data4();
+	final MFO.Data4 dwp = new MFO.Data4(), dp = new MFO.Data4();
+
+	private OptionsSuper options;
+	private int _ewrd;
+	static private int _strp;
+
+	public ExtractorM(Options options, Long2Int long2Int) throws IOException {
+		this.options = options;
+
+		li = long2Int;
+	}
+
+	public ExtractorM(OptionsSuper options) {
+		this.options = options;
+	}
+
+	public HashMap<Integer, Integer> form2morph = new HashMap<Integer, Integer>();
+
+	@Override
+	public Instances createInstances(String file) {
+
+		CONLLReader09 depReader = new CONLLReader09(CONLLReader09.NO_NORMALIZE);
+
+		depReader.startReading(file);
+		mf.register(POS, "<root-POS>");
+
+		mf.register(FFEATS, IOGenerals.NO_TYPE);
+		mf.register(FFEATS, "");
+
+		InstancesTagger is = new InstancesTagger();
+
+		System.out.println("Registering feature parts ");
+
+		HashMap<String, HashSet<String>> op2form = new HashMap<String, HashSet<String>>();
+		HashMap<String, Integer> freq = new HashMap<String, Integer>();
+
+		int ic = 0;
+		while (true) {
+			SentenceData09 instance1 = depReader.getNext();
+			if (instance1 == null)
+				break;
+			ic++;
+
+			String[] w = instance1.forms;
+			for (String element : w)
+				mf.register(WORD, element);
+			for (String element : w)
+				registerChars(CHAR, element);
+
+			for (int i1 = 0; i1 < w.length; i1++) {
+				mf.register(WORD, w[i1].toLowerCase());
+				Integer f = freq.get(w[i1].toLowerCase());
+
+				if (f == null)
+					freq.put(w[i1].toLowerCase(), 1);
+				else
+					freq.put(w[i1].toLowerCase(), f + 1);
+
+				HashSet<String> forms = op2form.get(w[i1].toLowerCase());
+				if (forms == null) {
+					forms = new HashSet<String>();
+					op2form.put(w[i1].toLowerCase(), forms);
+				}
+				forms.add(instance1.ofeats[i1] == null ? "_" : instance1.ofeats[i1]);
+			}
+			for (String element : w)
+				registerChars(CHAR, element.toLowerCase());
+
+			w = instance1.plemmas;
+			for (String element : w)
+				mf.register(WORD, element);
+			for (String element : w)
+				registerChars(CHAR, element);
+
+			w = instance1.ppos;
+			for (String element : w)
+				mf.register(POS, element);
+
+			w = instance1.gpos;
+			for (String element : w)
+				mf.register(POS, element);
+
+			w = instance1.ofeats;
+			for (String element : w)
+				if (element != null)
+					mf.register(FEAT, element);
+			for (String element : w)
+				if (element != null)
+					mf.register(FFEATS, element);
+
+			// w = instance1.pfeats;
+			// for(int i1 = 0; i1 < w.length; i1++) if (w[i1]!=null)
+			// mf.register(FEAT, w[i1]);
+		}
+
+		for (Entry<String, HashSet<String>> e : op2form.entrySet()) {
+			if (e.getValue().size() == 1 && freq.get(e.getKey()) > 10) {
+				// System.out.println("found map "+e.getKey()+" "+e.getValue()+"
+				// "+freq.get(e.getKey()));
+				form2morph.put(mf.getValue(PipeGen.WORD, e.getKey()),
+						mf.getValue(FFEATS, (String) e.getValue().toArray()[0]));
+			}
+		}
+
+		initFeatures();
+
+		mf.calculateBits();
+		initValues();
+
+		System.out.println("" + mf.toString());
+
+		depReader.startReading(file);
+
+		int num1 = 0;
+		long start1 = System.currentTimeMillis();
+
+		System.out.print("Creating Features: ");
+		is.init(ic, mf);
+		int del = 0;
+
+		while (true) {
+			if (num1 % 100 == 0) {
+				del = outValue(num1, del);
+			}
+			SentenceData09 instance1 = depReader.getNext(is);
+			if (instance1 == null)
+				break;
+
+			if (num1 > options.count)
+				break;
+
+			num1++;
+		}
+		long end1 = System.currentTimeMillis();
+		System.gc();
+		long mem2 = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
+		System.out.print("  time " + (end1 - start1) + " mem " + (mem2 / 1024) + " kb");
+
+		types = new String[mf.getFeatureCounter().get(FFEATS)];
+
+		for (Entry<String, Integer> e : MFO.getFeatureSet().get(FFEATS).entrySet()) {
+			types[e.getValue()] = e.getKey();
+		}
+
+		if (options.clusterFile == null)
+			cl = new Cluster();
+		else
+			cl = new Cluster(options.clusterFile, mf, 6);
+
+		System.out.println("Num Features: " + types.length);
+
+		depReader.startReading(file);
+
+		int num11 = 0;
+
+		while (true) {
+
+			SentenceData09 instance = depReader.getNext();
+			if (instance == null)
+				break;
+
+			is.fillChars(instance, num11, _CEND);
+
+			if (num11 > options.count)
+				break;
+
+			num11++;
+		}
+
+		return is;// .toNativeArray();
+
+	}
+
+	private void registerChars(String type, String word) {
+		for (int i = 0; i < word.length(); i++)
+			mf.register(type, Character.toString(word.charAt(i)));
+	}
+
+	@Override
+	public void initValues() {
+		s_feat = MFO.getFeatureBits(FFEATS);
+		s_word = MFO.getFeatureBits(WORD);
+		s_type = MFO.getFeatureBits(TYPE);
+		s_char = MFO.getFeatureBits(CHAR);
+		s_pos = MFO.getFeatureBits(POS);
+		// dl1.a[0] = s_type; dl1.a[1] = s_pos;
+		// for (int k = 2; k < 7; k++) dl1.a[k] = s_pos;
+
+		d1.a0 = s_type;
+		d1.a1 = s_feat;
+		d1.a2 = s_word;
+		d2.a0 = s_type;
+		d2.a1 = s_feat;
+		d2.a2 = s_feat;
+		d2.a3 = s_feat;
+		d2.a4 = s_feat;
+		d2.a5 = s_feat;
+		d2.a6 = s_feat;
+		d3.a0 = s_type;
+		d3.a1 = s_feat;
+		d3.a2 = s_char;
+		d3.a3 = s_char;
+		d3.a4 = s_char;
+		d3.a5 = s_char;
+		d3.a6 = s_char;
+		d3.a7 = s_char;
+		dp.a0 = s_type;
+		dp.a1 = s_feat;
+		dp.a2 = s_pos;
+		dp.a3 = s_pos;
+		dp.a4 = s_feat;// dp.a5= s_char; dp.a6= s_char; dp.a7= s_char;
+		dw.a0 = s_type;
+		dw.a1 = s_feat;
+		dw.a2 = s_word;
+		dw.a3 = s_word;
+		dw.a4 = s_word;
+		dw.a5 = s_word;
+		dw.a6 = s_word;
+		dw.a7 = s_word;
+		dwp.a0 = s_type;
+		dwp.a1 = s_feat;
+		dwp.a2 = s_word;
+		dwp.a3 = s_feat;
+		dwp.a4 = s_word;
+
+	}
+
+	public static short s_feat, s_word, s_type, s_dir, s_dist, s_char, s_pos;
+
+	/**
+	 * Initialize the features types.
+	 */
+	@Override
+	public void initFeatures() {
+
+		for (int t = 0; t < 62; t++) {
+			mf.register(TYPE, "F" + t);
+		}
+
+		// _mid = mf.register(POS, MID);
+		_strp = mf.register(POS, STR);
+		mf.register(POS, END);
+
+		mf.register(WORD, STR);
+		_ewrd = mf.register(WORD, END);
+
+		_CEND = mf.register(CHAR, END);
+
+		// optional features
+		mf.register(WORD, STWRD);
+		mf.register(POS, STPOS);
+
+	}
+
+	final public void addCF(InstancesTagger is, int ic, String fs, int i, short pfeat[], short ppos[], int[] forms,
+			int[] lemmas, long[] vs) {
+
+		int c0 = is.chars[ic][i][0], c1 = is.chars[ic][i][1], c2 = is.chars[ic][i][2], c3 = is.chars[ic][i][3],
+				c4 = is.chars[ic][i][4], c5 = is.chars[ic][i][5];
+		int e0 = is.chars[ic][i][6], e1 = is.chars[ic][i][7], e2 = is.chars[ic][i][8], e3 = is.chars[ic][i][9],
+				e4 = is.chars[ic][i][10];
+
+		int f = 1, n = 0;
+		short upper = 0, number = 1;
+		for (int k1 = 0; k1 < fs.length(); k1++) {
+			char c = fs.charAt(k1);
+			if (Character.isUpperCase(c)) {
+				if (k1 == 0)
+					upper = 1;
+				else {
+					// first char + another
+					if (upper == 1)
+						upper = 3;
+					// another uppercase in the word
+					else if (upper == 0)
+						upper = 2;
+				}
+			}
+
+			if (Character.isDigit(c) && k1 == 0)
+				number = 2;
+			else if (Character.isDigit(c) && number == 1)
+				number = 3;
+		}
+
+		int form = forms[i];
+
+		int len = forms.length;
+		long l;
+		d1.v0 = f++;
+		d1.v2 = form;
+		l = mf.calc3(d1);
+		vs[n++] = mf.calc3(d1);
+
+		d1.v0 = f++;
+		d1.v2 = is.formlc[ic][i];
+		vs[n++] = mf.calc3(d1);
+
+		d3.v2 = c0;
+		d3.v3 = c1;
+		d3.v4 = c2;
+		d3.v5 = c3;
+		d3.v6 = c4;
+		d3.v0 = f++;
+		vs[n++] = mf.calc3(d3);
+		d3.v0 = f++;
+		vs[n++] = mf.calc4(d3);
+		d3.v0 = f++;
+		vs[n++] = mf.calc5(d3);
+		d3.v0 = f++;
+		vs[n++] = mf.calc6(d3);
+		d3.v0 = f++;
+		vs[n++] = mf.calc7(d3);
+
+		if (form != -1) {
+			d3.v2 = c2;
+			d3.v3 = c3;
+			d3.v4 = c4;
+			d3.v5 = c5;
+			d3.v6 = cl.getLP(form);
+			d3.v0 = f;
+			vs[n++] = mf.calc6(d3);
+			d3.v0 = f + 1;
+			vs[n++] = mf.calc7(d3);
+		}
+		f += 2;
+
+		if (form > 0) {
+			d3.v0 = f;
+			d3.v5 = cl.getLP(form);
+			vs[n++] = mf.calc6(d3);
+			d3.v0 = f + 1;
+			d3.v4 = cl.getLP(form);
+			vs[n++] = mf.calc5(d3);
+			d3.v0 = f + 2;
+			d3.v3 = cl.getLP(form);
+			vs[n++] = mf.calc4(d3);
+		}
+		f += 3;
+
+		d3.v2 = e0;
+		d3.v3 = e1;
+		d3.v4 = e2;
+		d3.v5 = e3;
+		d3.v6 = e4;
+		d3.v0 = f++;
+		vs[n++] = mf.calc3(d3);
+		d3.v0 = f++;
+		vs[n++] = l = mf.calc4(d3);
+		vs[n++] = d3.calcs(3, upper, l);
+		d3.v0 = f++;
+		vs[n++] = l = mf.calc5(d3);
+		vs[n++] = d3.calcs(3, upper, l);
+		d3.v0 = f++;
+		vs[n++] = l = mf.calc6(d3);
+		vs[n++] = d3.calcs(3, upper, l);
+		d3.v0 = f++;
+		vs[n++] = l = mf.calc7(d3);
+		vs[n++] = d3.calcs(3, upper, l);
+
+		if (form > 0) {
+			d3.v0 = f;
+			d3.v5 = cl.getLP(form);
+			vs[n++] = mf.calc6(d3);
+			d3.v0 = f + 1;
+			d3.v4 = cl.getLP(form);
+			vs[n++] = mf.calc5(d3);
+			d3.v0 = f + 2;
+			d3.v3 = cl.getLP(form);
+			vs[n++] = mf.calc4(d3);
+		}
+		f += 3;
+
+		dw.v0 = f++;
+		dw.v2 = i + 1 < len ? forms[i + 1] : _ewrd;
+		dw.v3 = forms[i];
+		vs[n++] = mf.calc4(dw);
+
+		if (len > i + 1) {
+
+			dw.v0 = f;
+			dw.v2 = forms[i + 1];
+			vs[n++] = mf.calc3(dw);
+			d3.v0 = f + 1;
+			d3.v2 = is.chars[ic][i + 1][0];
+			vs[n++] = mf.calc3(d3);
+			d3.v0 = f + 2;
+			d3.v2 = is.chars[ic][i + 1][6];
+			vs[n++] = mf.calc3(d3);
+
+			d3.v2 = e0;
+			d3.v3 = e1;
+
+			d3.v0 = f + 3;
+			d3.v4 = is.chars[ic][i + 1][0];
+			vs[n++] = mf.calc5(d3);
+			d3.v0 = f + 4;
+			d3.v4 = is.chars[ic][i + 1][6];
+			vs[n++] = mf.calc5(d3);
+
+			if (is.chars[ic][i + 1][11] > 1) { // instance.forms[i+1].length()
+
+				d3.v0 = f + 5;
+				d3.v2 = is.chars[ic][i + 1][0];
+				d3.v3 = is.chars[ic][i + 1][1];
+				vs[n++] = mf.calc4(d3);
+				d3.v0 = f + 6;
+				d3.v2 = is.chars[ic][i + 1][6];
+				d3.v3 = is.chars[ic][i + 1][7];
+				vs[n++] = mf.calc4(d3);
+
+				d3.v2 = e0;
+				d3.v3 = e1;
+
+				d3.v0 = f + 7;
+				d3.v4 = is.chars[ic][i + 1][0];
+				d3.v5 = is.chars[ic][i + 1][1];
+				vs[n++] = mf.calc6(d3);
+				d3.v0 = f + 8;
+				d3.v4 = is.chars[ic][i + 1][6];
+				d3.v5 = is.chars[ic][i + 1][7];
+				vs[n++] = mf.calc6(d3);
+
+				if (forms[i + 1] > 0) {
+					d3.v0 = f + 9;
+					d3.v2 = is.chars[ic][i + 1][0];
+					d3.v3 = is.chars[ic][i + 1][1];
+					d3.v4 = cl.getLP(forms[i + 1]);
+					vs[n++] = mf.calc5(d3);
+					d3.v0 = f + 10;
+					d3.v2 = is.chars[ic][i + 1][6];
+					d3.v3 = is.chars[ic][i + 1][7];
+					d3.v4 = cl.getLP(forms[i + 1]);
+					vs[n++] = mf.calc5(d3);
+				}
+			}
+
+			if (forms[i + 1] > 0) {
+				dw.v0 = f + 11;
+				dw.v2 = cl.getLP(forms[i + 1]);
+				dw.v3 = forms[i];
+				vs[n++] = mf.calc4(dw);
+			}
+
+			if (len > i + 2) {
+				dw.v0 = f + 12;
+				dw.v2 = forms[i + 2];
+				dw.v3 = forms[i + 1];
+				vs[n++] = mf.calc4(dw);
+				vs[n++] = mf.calc3(dw);
+				// d2.v0=f+13; d2.v2=pfeat[i+1]; d2.v3= pfeat[i+2];
+				// vs[n++]=mf.calc4(d2);
+				// dp.v0= f+14; dp.v2=ppos[i+1]; dp.v3=ppos[i+2];
+				// vs[n++]=mf.calc4(dp);
+
+			}
+
+			if (len > i + 3) {
+				dw.v0 = f + 14;
+				dw.v2 = forms[i + 3];
+				dw.v3 = forms[i + 2];
+				vs[n++] = mf.calc4(dw);
+				vs[n++] = mf.calc3(dw);
+
+			}
+		}
+		f += 16;
+
+		// length
+		d2.v0 = f++;
+		d2.v2 = is.chars[ic][i][11];
+		vs[n++] = mf.calc3(d2);
+
+		// contains a number
+		d2.v0 = f++;
+		d2.v2 = number;
+		vs[n++] = mf.calc3(d2);
+		d1.v0 = f++;
+		d1.v2 = lemmas[i];
+		vs[n++] = mf.calc3(d1);
+
+		if (i != 0 && len > i + 1) {
+			dw.v0 = f;
+			dw.v2 = lemmas[i - 1];
+			dw.v3 = lemmas[i + 1];
+			vs[n++] = mf.calc4(dw);
+			d2.v0 = f + 1;
+			d2.v2 = pfeat[i - 1];
+			d2.v3 = pfeat[i + 1];
+			vs[n++] = mf.calc4(d2);
+		}
+		f += 2;
+
+		d2.v0 = f++;
+		d2.v2 = i >= 1 ? pfeat[i - 1] : _strp;
+		vs[n++] = mf.calc3(d2);
+		dp.v0 = f++;
+		dp.v2 = ppos[i];
+		vs[n++] = mf.calc3(dp);
+
+		if (i > 0) {
+			dw.v0 = f++;
+			dw.v2 = i >= 1 ? forms[i - 1] : _strp;
+			vs[n++] = mf.calc3(dw);
+			dw.v0 = f++;
+			dw.v2 = i >= 1 ? lemmas[i - 1] : _strp;
+			vs[n++] = mf.calc3(dw);
+
+			if (len > i + 1) {
+				// d2.v0=f; d2.v2= pfeat[i-1];d2.v3= pfeat[i+1];
+				// vs[n++]=mf.calc4(d2);
+				// dp.v0= f+1; dp.v2=ppos[i-1]; dp.v3=ppos[i+1];
+				// vs[n++]=mf.calc4(dp);
+
+			}
+			f++;
+			dp.v0 = f++;
+			dp.v2 = ppos[i];
+			dp.v3 = ppos[i - 1];
+			vs[n++] = mf.calc4(dp);
+
+			if (i > 1) {
+				d2.v0 = f++;
+				d2.v2 = i < 2 ? _strp : pfeat[i - 2];
+				vs[n++] = mf.calc3(d2);
+				d2.v0 = f++;
+				d2.v2 = pfeat[i - 1];
+				d2.v3 = pfeat[i - 2];
+				vs[n++] = mf.calc4(d2);
+
+				dw.v0 = f++;
+				dw.v2 = forms[i - 2];
+				vs[n++] = mf.calc3(dw);
+				dwp.v0 = f++;
+				dwp.v2 = forms[i - 1];
+				dwp.v3 = pfeat[i - 2];
+				vs[n++] = mf.calc4(dwp);
+				dwp.v0 = f++;
+				dwp.v2 = forms[i - 2];
+				dwp.v3 = pfeat[i - 1];
+				vs[n++] = mf.calc4(dwp);
+
+				if (i > 2) {
+					d2.v0 = f++;
+					d2.v2 = pfeat[i - 3];
+					vs[n++] = mf.calc3(d2);
+					d2.v0 = f++;
+					d2.v2 = pfeat[i - 2];
+					d2.v3 = pfeat[i - 3];
+					vs[n++] = mf.calc4(d2);
+					dw.v0 = f++;
+					dw.v2 = forms[i - 3];
+					dw.v3 = forms[i - 2];
+					vs[n++] = mf.calc4(dw);
+					// dp.v0= f++; dp.v2=ppos[i-3]; dp.v3=ppos[i-2];
+					// vs[n++]=mf.calc4(dp);
+				}
+			}
+		}
+		vs[n] = Integer.MIN_VALUE;
+	}
+
+	public int fillFeatureVectorsOne(ParametersFloat params, int w1, String form, Instances is, int n, short[] features,
+			long[] vs) {
+		double best = -1;
+		int bestType = -1;
+
+		F2SF f = new F2SF(params.parameters);
+		// is.gfeats[n]
+		addCF((InstancesTagger) is, n, form, w1, features, is.pposs[n], is.forms[n], is.plemmas[n], vs);
+
+		for (int t = 0; t < types.length; t++) {
+
+			f.clear();
+			int p = t << ExtractorM.s_type;
+			for (long element : vs) {
+				if (element == Integer.MIN_VALUE)
+					break;
+				if (element >= 0)
+					f.add(li.l2i(element + p));
+			}
+			if (f.score > best) {
+				bestType = t;
+				best = f.score;
+			}
+
+		}
+		return bestType;
+
+	}
+
+	// static ArrayList<T> todo = new ArrayList<T>();
+	static SentenceData09 instance;
+
+	public static int _FC = 200;
+
+	/**
+	 * Write the lemma that are not mapped by operations
+	 * 
+	 * @param dos
+	 */
+	public void writeMap(DataOutputStream dos) {
+
+		try {
+			dos.writeInt(this.form2morph.size());
+			for (Entry<Integer, Integer> e : form2morph.entrySet()) {
+				dos.writeInt(e.getKey());
+				dos.writeInt(e.getValue());
+			}
+		} catch (IOException e1) {
+			e1.printStackTrace();
+		}
+	}
+
+	/**
+	 * Read the form-lemma mapping not read by operations
+	 * 
+	 * @param dis
+	 */
+	public void readMap(DataInputStream dis) {
+		try {
+			int size = dis.readInt();
+			for (int i = 0; i < size; i++) {
+				form2morph.put(dis.readInt(), dis.readInt());
+			}
+		} catch (IOException e1) {
+			e1.printStackTrace();
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.tools.IPipe#write(java.io.DataOutputStream)
+	 */
+	@Override
+	public void write(DataOutputStream dos) {
+		try {
+			cl.write(dos);
+			writeMap(dos);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/mtag/MFO.java b/dependencyParser/experimental/mate-tools/src/is2/mtag/MFO.java
new file mode 100755
index 0000000..e315ba4
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/mtag/MFO.java
@@ -0,0 +1,532 @@
+package is2.mtag;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map.Entry;
+
+import is2.data.IEncoderPlus;
+import is2.util.DB;
+
+/**
+ * Map Features, do not map long to integer
+ *
+ * @author Bernd Bohnet, 20.09.2009
+ */
+
+final public class MFO implements IEncoderPlus {
+
+	/** The features and its values */
+	static private final HashMap<String, HashMap<String, Integer>> m_featureSets = new HashMap<String, HashMap<String, Integer>>();
+
+	/** The feature class and the number of values */
+	static private final HashMap<String, Integer> m_featureCounters = new HashMap<String, Integer>();
+
+	/** The number of bits needed to encode a feature */
+	static final HashMap<String, Integer> m_featureBits = new HashMap<String, Integer>();
+
+	/** Integer counter for long2int */
+	// private int count=0;
+
+	/** Stop growing */
+	public boolean stop = false;
+
+	final public static String NONE = "<None>";
+
+	public static class Data {
+		public final String[] a = new String[8];
+		public final String[] v = new String[8];
+		final short[] s = new short[9];
+
+		public void clear(int i) {
+			v[i] = null;
+		}
+	}
+
+	final public static class Data4 {
+		public int shift;
+		public short a0, a1, a2, a3, a4, a5, a6, a7, a8, a9;
+		public int v0, v1, v2, v3, v4, v5, v6, v7, v8, v9;
+
+		final public long calcs(int b, long v, long l) {
+			if (l < 0)
+				return l;
+			l |= v << shift;
+			shift += b;
+			return l;
+		}
+
+		final public long calc2() {
+
+			if (v0 < 0 || v1 < 0)
+				return -1;
+
+			long l = v0;
+			shift = a0;
+			l |= (long) v1 << shift;
+			shift += a1;
+
+			return l;
+		}
+
+		final public long calc3() {
+
+			if (v0 < 0 || v1 < 0 || v2 < 0)
+				return -1;
+			// if (v1<0||v2<0) return -1;
+
+			long l = v0;
+			shift = a0;
+			l |= (long) v1 << shift;
+			shift += a1;
+			l |= (long) v2 << shift;
+			shift = (short) (shift + a2);
+
+			// shift=;
+			return l;
+		}
+
+		final public long calc4() {
+			if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0)
+				return -1;
+
+			long l = v0;
+			shift = a0;
+			l |= (long) v1 << shift;
+			shift += a1;
+			l |= (long) v2 << shift;
+			shift += a2;
+			l |= (long) v3 << shift;
+			shift = shift + a3;
+
+			return l;
+		}
+
+		final public long calc5() {
+
+			if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0)
+				return -1;
+
+			long l = v0;
+			shift = a0;
+			l |= (long) v1 << shift;
+			shift += a1;
+			l |= (long) v2 << shift;
+			shift += a2;
+			l |= (long) v3 << shift;
+			shift += a3;
+			l |= (long) v4 << shift;
+			shift = shift + a4;
+
+			return l;
+		}
+
+		final public long calc6() {
+
+			if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0)
+				return -1;
+
+			long l = v0;
+			shift = a0;
+			l |= (long) v1 << shift;
+			shift += a1;
+			l |= (long) v2 << shift;
+			shift += a2;
+			l |= (long) v3 << shift;
+			shift += a3;
+			l |= (long) v4 << shift;
+			shift += a4;
+			l |= (long) v5 << shift;
+			shift = shift + a5;
+
+			return l;
+		}
+
+		final public long calc7() {
+
+			if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0)
+				return -1;
+
+			long l = v0;
+			shift = a0;
+			l |= (long) v1 << shift;
+			shift += a1;
+			l |= (long) v2 << shift;
+			shift += a2;
+			l |= (long) v3 << shift;
+			shift += a3;
+			l |= (long) v4 << shift;
+			shift += a4;
+			l |= (long) v5 << shift;
+			shift += a5;
+			l |= (long) v6 << shift;
+			shift = shift + a6;
+
+			return l;
+		}
+
+		final public long calc8() {
+
+			if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0 || v7 < 0)
+				return -1;
+
+			long l = v0;
+			shift = a0;
+			l |= (long) v1 << shift;
+			shift += a1;
+			l |= (long) v2 << shift;
+			shift += a2;
+			l |= (long) v3 << shift;
+			shift += a3;
+			l |= (long) v4 << shift;
+			shift += a4;
+			l |= (long) v5 << shift;
+			shift += a5;
+			l |= (long) v6 << shift;
+			shift += a6;
+			l |= (long) v7 << shift;
+			shift = shift + a7;
+
+			return l;
+		}
+
+	}
+
+	public MFO() {
+	}
+
+	// public int size() {return count;}
+
+	/**
+	 * Register an attribute class, if it not exists and add a possible value
+	 * 
+	 * @param type
+	 * @param type2
+	 */
+	@Override
+	final public int register(String a, String v) {
+
+		HashMap<String, Integer> fs = getFeatureSet().get(a);
+		if (fs == null) {
+			fs = new HashMap<String, Integer>();
+			getFeatureSet().put(a, fs);
+			fs.put(NONE, 0);
+			getFeatureCounter().put(a, 1);
+		}
+		Integer c = getFeatureCounter().get(a);
+
+		Integer i = fs.get(v);
+		if (i == null) {
+			fs.put(v, c);
+			c++;
+			getFeatureCounter().put(a, c);
+			return c - 1;
+		} else
+			return i;
+	}
+
+	/**
+	 * Calculates the number of bits needed to encode a feature
+	 */
+	public void calculateBits() {
+
+		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
+			int bits = (int) Math.ceil((Math.log(e.getValue() + 1) / Math.log(2)));
+			m_featureBits.put(e.getKey(), bits);
+		}
+
+		// System.out.println("total number of needed bits "+total);
+	}
+
+	@Override
+	public String toString() {
+
+		StringBuffer content = new StringBuffer();
+		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
+			content.append(e.getKey() + " " + e.getValue());
+			content.append(':');
+			// HashMap<String,Integer> vs = getFeatureSet().get(e.getKey());
+			content.append(getFeatureBits(e.getKey()));
+
+			/*
+			 * if (vs.size()<120) for(Entry<String,Integer> e2 : vs.entrySet())
+			 * { content.append(e2.getKey()+" ("+e2.getValue()+") "); }
+			 */
+			content.append('\n');
+
+		}
+		return content.toString();
+	}
+
+	static final public long calcs(Data4 d, int b, long v, long l) {
+		if (l < 0)
+			return l;
+		l |= v << d.shift;
+		d.shift += b;
+		return l;
+	}
+
+	static final public short getFeatureBits(String a) {
+		return (short) m_featureBits.get(a).intValue();
+	}
+
+	/**
+	 * Get the integer place holder of the string value v of the type a
+	 *
+	 * @param t
+	 *            the type
+	 * @param v
+	 *            the value
+	 * @return the integer place holder of v
+	 */
+	@Override
+	final public int getValue(String t, String v) {
+
+		if (m_featureSets.get(t) == null)
+			return -1;
+		Integer vi = m_featureSets.get(t).get(v);
+		if (vi == null)
+			return -1; // stop &&
+		return vi.intValue();
+	}
+
+	/**
+	 * Static version of getValue
+	 * 
+	 * @see getValue
+	 */
+	static final public int getValueS(String a, String v) {
+
+		if (m_featureSets.get(a) == null)
+			return -1;
+		Integer vi = m_featureSets.get(a).get(v);
+		if (vi == null)
+			return -1; // stop &&
+		return vi.intValue();
+	}
+
+	public int hasValue(String a, String v) {
+
+		Integer vi = m_featureSets.get(a).get(v);
+		if (vi == null)
+			return -1;
+		return vi.intValue();
+	}
+
+	final public long calc2(Data4 d) {
+
+		if (d.v0 < 0 || d.v1 < 0)
+			return -1;
+		// if (d.v1<0||d.v2<0) return -1;
+
+		long l = d.v0;
+		short shift = d.a0;
+		l |= (long) d.v1 << shift;
+		shift += d.a1;
+		// l |= (long)d.v2<<shift;
+		d.shift = shift;
+
+		// d.shift=;
+		return l;
+	}
+
+	final public long calc3(Data4 d) {
+
+		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0)
+			return -1;
+		// if (d.v1<0||d.v2<0) return -1;
+
+		long l = d.v0;
+		short shift = d.a0;
+		l |= (long) d.v1 << shift;
+		shift += d.a1;
+		l |= (long) d.v2 << shift;
+		d.shift = shift + d.a2;
+
+		// d.shift=;
+		return l;
+	}
+
+	final public long calc4(Data4 d) {
+		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0)
+			return -1;
+
+		long l = d.v0;
+		int shift = d.a0;
+		l |= (long) d.v1 << shift;
+		shift += d.a1;
+		l |= (long) d.v2 << shift;
+		shift += d.a2;
+		l |= (long) d.v3 << shift;
+		d.shift = shift + d.a3;
+
+		return l;
+	}
+
+	final public long calc5(Data4 d) {
+
+		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0 || d.v4 < 0)
+			return -1;
+
+		long l = d.v0;
+		int shift = d.a0;
+		l |= (long) d.v1 << shift;
+		shift += d.a1;
+		l |= (long) d.v2 << shift;
+		shift += d.a2;
+		l |= (long) d.v3 << shift;
+		shift += d.a3;
+		l |= (long) d.v4 << shift;
+		d.shift = shift + d.a4;
+
+		return l;
+	}
+
+	final public long calc6(Data4 d) {
+
+		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0 || d.v4 < 0 || d.v5 < 0)
+			return -1;
+
+		long l = d.v0;
+		int shift = d.a0;
+		l |= (long) d.v1 << shift;
+		shift += d.a1;
+		l |= (long) d.v2 << shift;
+		shift += d.a2;
+		l |= (long) d.v3 << shift;
+		shift += d.a3;
+		l |= (long) d.v4 << shift;
+		shift += d.a4;
+		l |= (long) d.v5 << shift;
+		d.shift = shift + d.a5;
+
+		return l;
+	}
+
+	final public long calc7(Data4 d) {
+
+		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0 || d.v4 < 0 || d.v5 < 0 || d.v6 < 0)
+			return -1;
+
+		long l = d.v0;
+		int shift = d.a0;
+		l |= (long) d.v1 << shift;
+		shift += d.a1;
+		l |= (long) d.v2 << shift;
+		shift += d.a2;
+		l |= (long) d.v3 << shift;
+		shift += d.a3;
+		l |= (long) d.v4 << shift;
+		shift += d.a4;
+		l |= (long) d.v5 << shift;
+		shift += d.a5;
+		l |= (long) d.v6 << shift;
+		d.shift = shift + d.a6;
+
+		return l;
+	}
+
+	final public long calc8(Data4 d) {
+
+		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0 || d.v4 < 0 || d.v5 < 0 || d.v6 < 0 || d.v7 < 0)
+			return -1;
+
+		long l = d.v0;
+		int shift = d.a0;
+		l |= (long) d.v1 << shift;
+		shift += d.a1;
+		l |= (long) d.v2 << shift;
+		shift += d.a2;
+		l |= (long) d.v3 << shift;
+		shift += d.a3;
+		l |= (long) d.v4 << shift;
+		shift += d.a4;
+		l |= (long) d.v5 << shift;
+		shift += d.a5;
+		l |= (long) d.v6 << shift;
+		shift += d.a6;
+		l |= (long) d.v7 << shift;
+		d.shift = shift + d.a7;
+
+		return l;
+	}
+
+	/**
+	 * Maps a long to a integer value. This is very useful to save memory for
+	 * sparse data long values
+	 * 
+	 * @param node
+	 * @return the integer
+	 */
+	static public int misses = 0;
+	static public int good = 0;
+
+	/**
+	 * Write the data
+	 * 
+	 * @param dos
+	 * @throws IOException
+	 */
+	static public void writeData(DataOutputStream dos) throws IOException {
+
+		dos.writeInt(getFeatureSet().size());
+		for (Entry<String, HashMap<String, Integer>> e : getFeatureSet().entrySet()) {
+			dos.writeUTF(e.getKey());
+			dos.writeInt(e.getValue().size());
+
+			for (Entry<String, Integer> e2 : e.getValue().entrySet()) {
+
+				if (e2.getKey() == null)
+					DB.println("key " + e2.getKey() + " value " + e2.getValue() + " e -key " + e.getKey());
+				dos.writeUTF(e2.getKey());
+				dos.writeInt(e2.getValue());
+			}
+		}
+	}
+
+	public void read(DataInputStream din) throws IOException {
+
+		int size = din.readInt();
+		for (int i = 0; i < size; i++) {
+			String k = din.readUTF();
+			int size2 = din.readInt();
+
+			HashMap<String, Integer> h = new HashMap<String, Integer>();
+			getFeatureSet().put(k, h);
+			for (int j = 0; j < size2; j++) {
+				h.put(din.readUTF(), din.readInt());
+			}
+			getFeatureCounter().put(k, size2);
+		}
+
+		calculateBits();
+	}
+
+	/**
+	 * Clear the data
+	 */
+	static public void clearData() {
+		getFeatureSet().clear();
+		m_featureBits.clear();
+		getFeatureSet().clear();
+	}
+
+	@Override
+	public HashMap<String, Integer> getFeatureCounter() {
+		return m_featureCounters;
+	}
+
+	static public HashMap<String, HashMap<String, Integer>> getFeatureSet() {
+		return m_featureSets;
+	}
+
+	static public String[] reverse(HashMap<String, Integer> v) {
+		String[] set = new String[v.size()];
+		for (Entry<String, Integer> e : v.entrySet()) {
+			set[e.getValue()] = e.getKey();
+		}
+		return set;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/mtag/Options.java b/dependencyParser/experimental/mate-tools/src/is2/mtag/Options.java
new file mode 100755
index 0000000..20969ff
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/mtag/Options.java
@@ -0,0 +1,54 @@
+package is2.mtag;
+
+import is2.util.OptionsSuper;
+
+public final class Options extends OptionsSuper {
+
+	public Options(String[] args) {
+
+		for (int i = 0; i < args.length; i++) {
+
+			if (args[i].equals("--help"))
+				explain();
+
+			if (args[i].equals("-nonormalize")) {
+				normalize = false;
+			} else if (args[i].equals("-features")) {
+				features = args[i + 1];
+				i++;
+			} else if (args[i].equals("-hsize")) {
+				hsize = Integer.parseInt(args[i + 1]);
+				i++;
+			} else if (args[i].equals("-len")) {
+				maxLen = Integer.parseInt(args[i + 1]);
+				i++;
+			} else
+				super.addOption(args, i);
+		}
+	}
+
+	private void explain() {
+		System.out.println("Usage: ");
+		System.out.println("java -cp anna.jar is2.mtag.Tagger [Options]");
+		System.out.println();
+		System.out.println("Example: ");
+		System.out.println(
+				" java -cp mate.jar is2.mtag.Tagger -model eps3.model -train corpora/conll08st/train/train.closed -test corpora/conll08st/devel/devel.closed  -out b3.test -eval corpora/conll08st/devel/devel.closed  -count 2000 -i 6");
+		System.out.println("");
+		System.out.println("Options:");
+		System.out.println("");
+		System.out.println(" -train  <file>    the corpus a model is trained on; default " + this.trainfile);
+		System.out.println(" -test   <file>    the input corpus for testing; default " + this.testfile);
+		System.out.println(" -out    <file>    the output corpus (result) of a test run; default " + this.outfile);
+		System.out.println(" -model  <file>    the parsing model for traing the model is stored in the files");
+		System.out.println(
+				"                   and for parsing the model is load from this file; default " + this.modelName);
+		System.out.println(
+				" -i      <number>  the number of training iterations; good numbers are 10 for smaller corpora and 6 for bigger; default "
+						+ this.numIters);
+		System.out.println(" -count  <number>  the n first sentences of the corpus are take for the training default "
+				+ this.count);
+
+		System.exit(0);
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/mtag/Pipe.java b/dependencyParser/experimental/mate-tools/src/is2/mtag/Pipe.java
new file mode 100755
index 0000000..75fb3fe
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/mtag/Pipe.java
@@ -0,0 +1,675 @@
+package is2.mtag;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map.Entry;
+
+import is2.data.Cluster;
+import is2.data.F2SF;
+import is2.data.Instances;
+import is2.data.InstancesTagger;
+import is2.data.Long2Int;
+import is2.data.Long2IntInterface;
+import is2.data.ParametersFloat;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.io.IOGenerals;
+import is2.tools.IPipe;
+import is2.util.OptionsSuper;
+
+final public class Pipe extends PipeGen implements IPipe {
+
+	public static int _CEND;
+
+	private static final String STWRD = "STWRD", STPOS = "STPOS", END = "END", STR = "STR";
+
+	public String[] types;
+
+	Cluster cl;
+
+	final public MFO mf = new MFO();
+	public Long2IntInterface li;
+
+	final MFO.Data4 d1 = new MFO.Data4(), d2 = new MFO.Data4(), d3 = new MFO.Data4(), dw = new MFO.Data4();
+	final MFO.Data4 dwp = new MFO.Data4(), dp = new MFO.Data4();
+
+	private OptionsSuper options;
+	private int _ewrd;
+	static private int _strp;
+
+	public Pipe(Options options, Long2Int long2Int) throws IOException {
+		this.options = options;
+
+		li = long2Int;
+	}
+
+	public Pipe(OptionsSuper options) {
+		this.options = options;
+	}
+
+	public HashMap<Integer, Integer> form2morph = new HashMap<Integer, Integer>();
+
+	@Override
+	public Instances createInstances(String file) {
+
+		CONLLReader09 depReader = new CONLLReader09(CONLLReader09.NO_NORMALIZE);
+
+		depReader.startReading(file);
+		mf.register(POS, "<root-POS>");
+
+		mf.register(FEAT, IOGenerals.NO_TYPE);
+		mf.register(FEAT, "");
+
+		InstancesTagger is = new InstancesTagger();
+
+		System.out.println("Registering feature parts ");
+
+		HashMap<String, HashSet<String>> op2form = new HashMap<String, HashSet<String>>();
+		HashMap<String, Integer> freq = new HashMap<String, Integer>();
+
+		int ic = 0;
+		while (true) {
+			SentenceData09 instance1 = depReader.getNext();
+			if (instance1 == null)
+				break;
+			ic++;
+
+			String[] w = instance1.forms;
+			for (String element : w)
+				mf.register(WORD, element);
+			for (String element : w)
+				registerChars(CHAR, element);
+			for (int i1 = 0; i1 < w.length; i1++) {
+				mf.register(WORD, w[i1].toLowerCase());
+				Integer f = freq.get(w[i1].toLowerCase());
+				if (f == null)
+					freq.put(w[i1].toLowerCase(), 1);
+				else
+					freq.put(w[i1].toLowerCase(), f + 1);
+
+				HashSet<String> forms = op2form.get(w[i1].toLowerCase());
+				if (forms == null) {
+					forms = new HashSet<String>();
+					op2form.put(w[i1].toLowerCase(), forms);
+				}
+				forms.add(instance1.ofeats[i1] == null ? "_" : instance1.ofeats[i1]);
+			}
+			for (String element : w)
+				registerChars(CHAR, element.toLowerCase());
+
+			w = instance1.plemmas;
+			for (String element : w)
+				mf.register(WORD, element);
+			for (String element : w)
+				registerChars(CHAR, element);
+
+			w = instance1.ppos;
+			for (String element : w)
+				mf.register(POS, element);
+
+			w = instance1.gpos;
+			for (String element : w)
+				mf.register(POS, element);
+
+			w = instance1.ofeats;
+			for (String element : w)
+				if (element != null)
+					mf.register(FEAT, element);
+
+			// w = instance1.pfeats;
+			// for(int i1 = 0; i1 < w.length; i1++) if (w[i1]!=null)
+			// mf.register(FEAT, w[i1]);
+		}
+
+		for (Entry<String, HashSet<String>> e : op2form.entrySet()) {
+			if (e.getValue().size() == 1 && freq.get(e.getKey()) > 10) {
+				// System.out.println("found map "+e.getKey()+" "+e.getValue()+"
+				// "+freq.get(e.getKey()));
+				form2morph.put(mf.getValue(PipeGen.WORD, e.getKey()),
+						mf.getValue(FEAT, (String) e.getValue().toArray()[0]));
+			}
+		}
+
+		initFeatures();
+
+		mf.calculateBits();
+		initValues();
+
+		System.out.println("" + mf.toString());
+
+		depReader.startReading(file);
+
+		int num1 = 0;
+		long start1 = System.currentTimeMillis();
+
+		System.out.print("Creating Features: ");
+		is.init(ic, mf);
+		int del = 0;
+
+		while (true) {
+			if (num1 % 100 == 0) {
+				del = outValue(num1, del);
+			}
+			SentenceData09 instance1 = depReader.getNext(is);
+			if (instance1 == null)
+				break;
+
+			if (num1 > options.count)
+				break;
+
+			num1++;
+		}
+		long end1 = System.currentTimeMillis();
+		System.gc();
+		long mem2 = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
+		System.out.print("  time " + (end1 - start1) + " mem " + (mem2 / 1024) + " kb");
+
+		types = new String[mf.getFeatureCounter().get(FEAT)];
+
+		for (Entry<String, Integer> e : MFO.getFeatureSet().get(FEAT).entrySet()) {
+			types[e.getValue()] = e.getKey();
+		}
+
+		if (options.clusterFile == null)
+			cl = new Cluster();
+		else
+			cl = new Cluster(options.clusterFile, mf, 6);
+
+		System.out.println("Num Features: " + types.length);
+
+		depReader.startReading(file);
+
+		int num11 = 0;
+
+		while (true) {
+
+			SentenceData09 instance = depReader.getNext();
+			if (instance == null)
+				break;
+
+			is.fillChars(instance, num11, _CEND);
+
+			if (num11 > options.count)
+				break;
+
+			num11++;
+		}
+
+		return is;// .toNativeArray();
+
+	}
+
+	private void registerChars(String type, String word) {
+		for (int i = 0; i < word.length(); i++)
+			mf.register(type, Character.toString(word.charAt(i)));
+	}
+
+	@Override
+	public void initValues() {
+		s_feat = MFO.getFeatureBits(FEAT);
+		s_word = MFO.getFeatureBits(WORD);
+		s_type = MFO.getFeatureBits(TYPE);
+		s_char = MFO.getFeatureBits(CHAR);
+		s_pos = MFO.getFeatureBits(POS);
+		// dl1.a[0] = s_type; dl1.a[1] = s_pos;
+		// for (int k = 2; k < 7; k++) dl1.a[k] = s_pos;
+
+		d1.a0 = s_type;
+		d1.a1 = s_feat;
+		d1.a2 = s_word;
+		d2.a0 = s_type;
+		d2.a1 = s_feat;
+		d2.a2 = s_feat;
+		d2.a3 = s_feat;
+		d2.a4 = s_feat;
+		d2.a5 = s_feat;
+		d2.a6 = s_feat;
+		d3.a0 = s_type;
+		d3.a1 = s_feat;
+		d3.a2 = s_char;
+		d3.a3 = s_char;
+		d3.a4 = s_char;
+		d3.a5 = s_char;
+		d3.a6 = s_char;
+		d3.a7 = s_char;
+		dp.a0 = s_type;
+		dp.a1 = s_feat;
+		dp.a2 = s_pos;
+		dp.a3 = s_pos;
+		dp.a4 = s_feat;// dp.a5= s_char; dp.a6= s_char; dp.a7= s_char;
+		dw.a0 = s_type;
+		dw.a1 = s_feat;
+		dw.a2 = s_word;
+		dw.a3 = s_word;
+		dw.a4 = s_word;
+		dw.a5 = s_word;
+		dw.a6 = s_word;
+		dw.a7 = s_word;
+		dwp.a0 = s_type;
+		dwp.a1 = s_feat;
+		dwp.a2 = s_word;
+		dwp.a3 = s_feat;
+		dwp.a4 = s_word;
+
+	}
+
+	public static short s_feat, s_word, s_type, s_dir, s_dist, s_char, s_pos;
+
+	/**
+	 * Initialize the features types.
+	 */
+	@Override
+	public void initFeatures() {
+
+		for (int t = 0; t < 62; t++) {
+			mf.register(TYPE, "F" + t);
+		}
+
+		// _mid = mf.register(POS, MID);
+		_strp = mf.register(POS, STR);
+		mf.register(POS, END);
+
+		mf.register(WORD, STR);
+		_ewrd = mf.register(WORD, END);
+
+		_CEND = mf.register(CHAR, END);
+
+		// optional features
+		mf.register(WORD, STWRD);
+		mf.register(POS, STPOS);
+
+	}
+
+	final public void addCF(InstancesTagger is, int ic, String fs, int i, int pfeat[], short ppos[], int[] forms,
+			int[] lemmas, long[] vs) {
+
+		int c0 = is.chars[ic][i][0], c1 = is.chars[ic][i][1], c2 = is.chars[ic][i][2], c3 = is.chars[ic][i][3],
+				c4 = is.chars[ic][i][4], c5 = is.chars[ic][i][5];
+		int e0 = is.chars[ic][i][6], e1 = is.chars[ic][i][7], e2 = is.chars[ic][i][8], e3 = is.chars[ic][i][9],
+				e4 = is.chars[ic][i][10];
+
+		int f = 1, n = 0;
+		short upper = 0, number = 1;
+		for (int k1 = 0; k1 < fs.length(); k1++) {
+			char c = fs.charAt(k1);
+			if (Character.isUpperCase(c)) {
+				if (k1 == 0)
+					upper = 1;
+				else {
+					// first char + another
+					if (upper == 1)
+						upper = 3;
+					// another uppercase in the word
+					else if (upper == 0)
+						upper = 2;
+				}
+			}
+
+			if (Character.isDigit(c) && k1 == 0)
+				number = 2;
+			else if (Character.isDigit(c) && number == 1)
+				number = 3;
+		}
+
+		int form = forms[i];
+
+		int len = forms.length;
+		long l;
+		d1.v0 = f++;
+		d1.v2 = form;
+		l = mf.calc3(d1);
+		vs[n++] = mf.calc3(d1);
+
+		d1.v0 = f++;
+		d1.v2 = is.formlc[ic][i];
+		vs[n++] = mf.calc3(d1);
+
+		d3.v2 = c0;
+		d3.v3 = c1;
+		d3.v4 = c2;
+		d3.v5 = c3;
+		d3.v6 = c4;
+		d3.v0 = f++;
+		vs[n++] = mf.calc3(d3);
+		d3.v0 = f++;
+		vs[n++] = mf.calc4(d3);
+		d3.v0 = f++;
+		vs[n++] = mf.calc5(d3);
+		d3.v0 = f++;
+		vs[n++] = mf.calc6(d3);
+		d3.v0 = f++;
+		vs[n++] = mf.calc7(d3);
+
+		if (form != -1) {
+			d3.v2 = c2;
+			d3.v3 = c3;
+			d3.v4 = c4;
+			d3.v5 = c5;
+			d3.v6 = cl.getLP(form);
+			d3.v0 = f;
+			vs[n++] = mf.calc6(d3);
+			d3.v0 = f + 1;
+			vs[n++] = mf.calc7(d3);
+		}
+		f += 2;
+
+		if (form > 0) {
+			d3.v0 = f;
+			d3.v5 = cl.getLP(form);
+			vs[n++] = mf.calc6(d3);
+			d3.v0 = f + 1;
+			d3.v4 = cl.getLP(form);
+			vs[n++] = mf.calc5(d3);
+			d3.v0 = f + 2;
+			d3.v3 = cl.getLP(form);
+			vs[n++] = mf.calc4(d3);
+		}
+		f += 3;
+
+		d3.v2 = e0;
+		d3.v3 = e1;
+		d3.v4 = e2;
+		d3.v5 = e3;
+		d3.v6 = e4;
+		d3.v0 = f++;
+		vs[n++] = mf.calc3(d3);
+		d3.v0 = f++;
+		vs[n++] = l = mf.calc4(d3);
+		vs[n++] = d3.calcs(3, upper, l);
+		d3.v0 = f++;
+		vs[n++] = l = mf.calc5(d3);
+		vs[n++] = d3.calcs(3, upper, l);
+		d3.v0 = f++;
+		vs[n++] = l = mf.calc6(d3);
+		vs[n++] = d3.calcs(3, upper, l);
+		d3.v0 = f++;
+		vs[n++] = l = mf.calc7(d3);
+		vs[n++] = d3.calcs(3, upper, l);
+
+		if (form > 0) {
+			d3.v0 = f;
+			d3.v5 = cl.getLP(form);
+			vs[n++] = mf.calc6(d3);
+			d3.v0 = f + 1;
+			d3.v4 = cl.getLP(form);
+			vs[n++] = mf.calc5(d3);
+			d3.v0 = f + 2;
+			d3.v3 = cl.getLP(form);
+			vs[n++] = mf.calc4(d3);
+		}
+		f += 3;
+
+		dw.v0 = f++;
+		dw.v2 = i + 1 < len ? forms[i + 1] : _ewrd;
+		dw.v3 = forms[i];
+		vs[n++] = mf.calc4(dw);
+
+		if (len > i + 1) {
+
+			dw.v0 = f;
+			dw.v2 = forms[i + 1];
+			vs[n++] = mf.calc3(dw);
+			d3.v0 = f + 1;
+			d3.v2 = is.chars[ic][i + 1][0];
+			vs[n++] = mf.calc3(d3);
+			d3.v0 = f + 2;
+			d3.v2 = is.chars[ic][i + 1][6];
+			vs[n++] = mf.calc3(d3);
+
+			d3.v2 = e0;
+			d3.v3 = e1;
+
+			d3.v0 = f + 3;
+			d3.v4 = is.chars[ic][i + 1][0];
+			vs[n++] = mf.calc5(d3);
+			d3.v0 = f + 4;
+			d3.v4 = is.chars[ic][i + 1][6];
+			vs[n++] = mf.calc5(d3);
+
+			if (is.chars[ic][i + 1][11] > 1) { // instance.forms[i+1].length()
+
+				d3.v0 = f + 5;
+				d3.v2 = is.chars[ic][i + 1][0];
+				d3.v3 = is.chars[ic][i + 1][1];
+				vs[n++] = mf.calc4(d3);
+				d3.v0 = f + 6;
+				d3.v2 = is.chars[ic][i + 1][6];
+				d3.v3 = is.chars[ic][i + 1][7];
+				vs[n++] = mf.calc4(d3);
+
+				d3.v2 = e0;
+				d3.v3 = e1;
+
+				d3.v0 = f + 7;
+				d3.v4 = is.chars[ic][i + 1][0];
+				d3.v5 = is.chars[ic][i + 1][1];
+				vs[n++] = mf.calc6(d3);
+				d3.v0 = f + 8;
+				d3.v4 = is.chars[ic][i + 1][6];
+				d3.v5 = is.chars[ic][i + 1][7];
+				vs[n++] = mf.calc6(d3);
+
+				if (forms[i + 1] > 0) {
+					d3.v0 = f + 9;
+					d3.v2 = is.chars[ic][i + 1][0];
+					d3.v3 = is.chars[ic][i + 1][1];
+					d3.v4 = cl.getLP(forms[i + 1]);
+					vs[n++] = mf.calc5(d3);
+					d3.v0 = f + 10;
+					d3.v2 = is.chars[ic][i + 1][6];
+					d3.v3 = is.chars[ic][i + 1][7];
+					d3.v4 = cl.getLP(forms[i + 1]);
+					vs[n++] = mf.calc5(d3);
+				}
+			}
+
+			if (forms[i + 1] > 0) {
+				dw.v0 = f + 11;
+				dw.v2 = cl.getLP(forms[i + 1]);
+				dw.v3 = forms[i];
+				vs[n++] = mf.calc4(dw);
+			}
+
+			if (len > i + 2) {
+				dw.v0 = f + 12;
+				dw.v2 = forms[i + 2];
+				dw.v3 = forms[i + 1];
+				vs[n++] = mf.calc4(dw);
+				vs[n++] = mf.calc3(dw);
+				// d2.v0=f+13; d2.v2=pfeat[i+1]; d2.v3= pfeat[i+2];
+				// vs[n++]=mf.calc4(d2);
+				// dp.v0= f+14; dp.v2=ppos[i+1]; dp.v3=ppos[i+2];
+				// vs[n++]=mf.calc4(dp);
+
+			}
+
+			if (len > i + 3) {
+				dw.v0 = f + 14;
+				dw.v2 = forms[i + 3];
+				dw.v3 = forms[i + 2];
+				vs[n++] = mf.calc4(dw);
+				vs[n++] = mf.calc3(dw);
+
+			}
+		}
+		f += 16;
+
+		// length
+		d2.v0 = f++;
+		d2.v2 = is.chars[ic][i][11];
+		vs[n++] = mf.calc3(d2);
+
+		// contains a number
+		d2.v0 = f++;
+		d2.v2 = number;
+		vs[n++] = mf.calc3(d2);
+		d1.v0 = f++;
+		d1.v2 = lemmas[i];
+		vs[n++] = mf.calc3(d1);
+
+		if (i != 0 && len > i + 1) {
+			dw.v0 = f;
+			dw.v2 = lemmas[i - 1];
+			dw.v3 = lemmas[i + 1];
+			vs[n++] = mf.calc4(dw);
+			d2.v0 = f + 1;
+			d2.v2 = pfeat[i - 1];
+			d2.v3 = pfeat[i + 1];
+			vs[n++] = mf.calc4(d2);
+		}
+		f += 2;
+
+		d2.v0 = f++;
+		d2.v2 = i >= 1 ? pfeat[i - 1] : _strp;
+		vs[n++] = mf.calc3(d2);
+		dp.v0 = f++;
+		dp.v2 = ppos[i];
+		vs[n++] = mf.calc3(dp);
+
+		if (i > 0) {
+			dw.v0 = f++;
+			dw.v2 = i >= 1 ? forms[i - 1] : _strp;
+			vs[n++] = mf.calc3(dw);
+			dw.v0 = f++;
+			dw.v2 = i >= 1 ? lemmas[i - 1] : _strp;
+			vs[n++] = mf.calc3(dw);
+
+			if (len > i + 1) {
+				// d2.v0=f; d2.v2= pfeat[i-1];d2.v3= pfeat[i+1];
+				// vs[n++]=mf.calc4(d2);
+				// dp.v0= f+1; dp.v2=ppos[i-1]; dp.v3=ppos[i+1];
+				// vs[n++]=mf.calc4(dp);
+
+			}
+			f++;
+			dp.v0 = f++;
+			dp.v2 = ppos[i];
+			dp.v3 = ppos[i - 1];
+			vs[n++] = mf.calc4(dp);
+
+			if (i > 1) {
+				d2.v0 = f++;
+				d2.v2 = i < 2 ? _strp : pfeat[i - 2];
+				vs[n++] = mf.calc3(d2);
+				d2.v0 = f++;
+				d2.v2 = pfeat[i - 1];
+				d2.v3 = pfeat[i - 2];
+				vs[n++] = mf.calc4(d2);
+
+				dw.v0 = f++;
+				dw.v2 = forms[i - 2];
+				vs[n++] = mf.calc3(dw);
+				dwp.v0 = f++;
+				dwp.v2 = forms[i - 1];
+				dwp.v3 = pfeat[i - 2];
+				vs[n++] = mf.calc4(dwp);
+				dwp.v0 = f++;
+				dwp.v2 = forms[i - 2];
+				dwp.v3 = pfeat[i - 1];
+				vs[n++] = mf.calc4(dwp);
+
+				if (i > 2) {
+					d2.v0 = f++;
+					d2.v2 = pfeat[i - 3];
+					vs[n++] = mf.calc3(d2);
+					d2.v0 = f++;
+					d2.v2 = pfeat[i - 2];
+					d2.v3 = pfeat[i - 3];
+					vs[n++] = mf.calc4(d2);
+					dw.v0 = f++;
+					dw.v2 = forms[i - 3];
+					dw.v3 = forms[i - 2];
+					vs[n++] = mf.calc4(dw);
+					// dp.v0= f++; dp.v2=ppos[i-3]; dp.v3=ppos[i-2];
+					// vs[n++]=mf.calc4(dp);
+				}
+			}
+		}
+		vs[n] = Integer.MIN_VALUE;
+	}
+
+	public int fillFeatureVectorsOne(ParametersFloat params, int w1, String form, Instances is, int n, int[] features,
+			long[] vs) {
+		double best = -1;
+		int bestType = -1;
+
+		F2SF f = new F2SF(params.parameters);
+		// is.gfeats[n]
+		addCF((InstancesTagger) is, n, form, w1, features, is.pposs[n], is.forms[n], is.plemmas[n], vs);
+
+		for (int t = 0; t < types.length; t++) {
+
+			f.clear();
+			int p = t << Pipe.s_type;
+			for (int k = vs.length - 1; k >= 0; k--)
+				if (vs[k] >= 0)
+					f.add(li.l2i(vs[k] + p));
+			if (f.score > best) {
+				bestType = t;
+				best = f.score;
+			}
+
+		}
+		return bestType;
+
+	}
+
+	// static ArrayList<T> todo = new ArrayList<T>();
+	static SentenceData09 instance;
+
+	public static int _FC = 200;
+
+	/**
+	 * Write the lemma that are not mapped by operations
+	 * 
+	 * @param dos
+	 */
+	public void writeMap(DataOutputStream dos) {
+
+		try {
+			dos.writeInt(this.form2morph.size());
+			for (Entry<Integer, Integer> e : form2morph.entrySet()) {
+				dos.writeInt(e.getKey());
+				dos.writeInt(e.getValue());
+			}
+		} catch (IOException e1) {
+			e1.printStackTrace();
+		}
+	}
+
+	/**
+	 * Read the form-lemma mapping not read by operations
+	 * 
+	 * @param dis
+	 */
+	public void readMap(DataInputStream dis) {
+		try {
+			int size = dis.readInt();
+			for (int i = 0; i < size; i++) {
+				form2morph.put(dis.readInt(), dis.readInt());
+			}
+		} catch (IOException e1) {
+			e1.printStackTrace();
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.tools.IPipe#write(java.io.DataOutputStream)
+	 */
+	@Override
+	public void write(DataOutputStream dos) {
+		try {
+			cl.write(dos);
+			writeMap(dos);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/mtag/Tagger.java b/dependencyParser/experimental/mate-tools/src/is2/mtag/Tagger.java
new file mode 100644
index 0000000..05aa8d7
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/mtag/Tagger.java
@@ -0,0 +1,386 @@
+package is2.mtag;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.Map.Entry;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+import java.util.zip.ZipOutputStream;
+
+import is2.data.Cluster;
+import is2.data.FV;
+import is2.data.Instances;
+import is2.data.InstancesTagger;
+import is2.data.Long2Int;
+import is2.data.ParametersFloat;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.io.CONLLWriter09;
+import is2.tools.IPipe;
+import is2.tools.Tool;
+import is2.tools.Train;
+import is2.util.DB;
+import is2.util.OptionsSuper;
+
+public class Tagger implements Tool, Train {
+
+	ExtractorM pipe;
+	ParametersFloat params;
+
+	/**
+	 * Initialize
+	 * 
+	 * @param options
+	 */
+	public Tagger(Options options) {
+
+		// load the model
+		try {
+			readModel(options);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+	}
+
+	/**
+	 * @param string
+	 * @throws IOException
+	 */
+	public Tagger(String modelFileName) {
+		this(new Options(new String[] { "-model", modelFileName }));
+	}
+
+	public Tagger() {
+	}
+
+	public static void main(String[] args) throws FileNotFoundException, Exception {
+
+		Options options = new Options(args);
+
+		Tagger tagger = new Tagger();
+
+		if (options.train) {
+
+			Long2Int li = new Long2Int(options.hsize);
+			tagger.pipe = new ExtractorM(options, li);
+			InstancesTagger is = (InstancesTagger) tagger.pipe.createInstances(options.trainfile);
+			ParametersFloat params = new ParametersFloat(li.size());
+
+			tagger.train(options, tagger.pipe, params, is);
+			tagger.writeModel(options, tagger.pipe, params);
+		}
+
+		if (options.test) {
+
+			tagger.readModel(options);
+			tagger.out(options, tagger.pipe, tagger.params);
+		}
+
+		if (options.eval) {
+
+			System.out.println("\nEvaluate:");
+			Evaluator.evaluate(options.goldfile, options.outfile, options.format);
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.mtag2.Learn#writeModel(is2.mtag2.Options, is2.mtag2.Pipe,
+	 * is2.data.ParametersFloat)
+	 */
+	@Override
+	public void writeModel(OptionsSuper options, IPipe pipe, ParametersFloat params) {
+
+		try {
+			ZipOutputStream zos = new ZipOutputStream(
+					new BufferedOutputStream(new FileOutputStream(options.modelName)));
+			zos.putNextEntry(new ZipEntry("data"));
+			DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(zos));
+
+			MFO.writeData(dos);
+
+			MFO.clearData();
+
+			DB.println("number of parameters " + params.parameters.length);
+			dos.flush();
+			params.write(dos);
+			pipe.write(dos);
+			dos.flush();
+			dos.close();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.mtag2.Learn#readModel(is2.mtag2.Options)
+	 */
+	@Override
+	public void readModel(OptionsSuper options) {
+
+		try {
+			pipe = new ExtractorM(options);
+			params = new ParametersFloat(0);
+
+			// load the model
+			ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(options.modelName)));
+			zis.getNextEntry();
+			DataInputStream dis = new DataInputStream(new BufferedInputStream(zis));
+			pipe.mf.read(dis);
+			pipe.initValues();
+			pipe.initFeatures();
+
+			params.read(dis);
+			pipe.li = new Long2Int(params.parameters.length);
+			pipe.cl = new Cluster(dis);
+			pipe.readMap(dis);
+			dis.close();
+
+			this.pipe.types = new String[pipe.mf.getFeatureCounter().get(PipeGen.FFEATS)];
+			for (Entry<String, Integer> e : MFO.getFeatureSet().get(PipeGen.FFEATS).entrySet())
+				this.pipe.types[e.getValue()] = e.getKey();
+
+			DB.println("Loading data finished. ");
+
+			DB.println("number of parameter " + params.parameters.length);
+			DB.println("number of classes   " + this.pipe.types.length);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.mtag2.Learn#train(is2.mtag2.Options, is2.mtag2.Pipe,
+	 * is2.data.ParametersFloat, is2.data.InstancesTagger)
+	 */
+	@Override
+	public void train(OptionsSuper options, IPipe pipe, ParametersFloat params, Instances is) {
+
+		int i = 0;
+		int del = 0;
+
+		String[] wds = MFO.reverse(MFO.getFeatureSet().get(PipeGen.WORD));
+		int numInstances = is.size();
+
+		float upd = (options.numIters * numInstances + 1);
+
+		for (i = 0; i < options.numIters; i++) {
+
+			long start = System.currentTimeMillis();
+
+			long last = System.currentTimeMillis();
+
+			FV pred = new FV(), gold = new FV();
+			int correct = 0, count = 0;
+
+			for (int n = 0; n < numInstances; n++) {
+
+				upd--;
+
+				if ((n + 1) % 500 == 0)
+					del = PipeGen.outValueErr(n + 1, (count - correct), (float) correct / (float) count, del, last,
+							upd);
+
+				int length = is.length(n);
+
+				int feats[] = new int[length];
+				long[] vs = new long[ExtractorM._FC];
+
+				for (int w1 = 0; w1 < length; w1++) {
+
+					count++;
+
+					if (this.pipe.form2morph.get(is.forms[n][w1]) != null) {
+						correct++;
+						continue;
+					}
+
+					int bestType = this.pipe.fillFeatureVectorsOne(params, w1, wds[is.forms[n][w1]], is, n,
+							is.gfeats[n], vs);
+					feats[w1] = bestType;
+
+					if (bestType == is.gfeats[n][w1]) {
+						correct++;
+						continue;
+					}
+
+					pred.clear();
+					int p = bestType << ExtractorM.s_type;
+					// System.out.println("test type "+bestType+" ex type
+					// "+ExtractorM.s_type);
+					for (long element : vs) {
+						if (element == Integer.MIN_VALUE)
+							break;
+						if (element >= 0)
+							pred.add(this.pipe.li.l2i(element + p));
+					}
+
+					gold.clear();
+					p = is.gfeats[n][w1] << ExtractorM.s_type;
+					for (long element : vs) {
+						if (element == Integer.MIN_VALUE)
+							break;
+						if (element >= 0)
+							gold.add(this.pipe.li.l2i(element + p));
+					}
+					params.update(pred, gold, upd, 1.0f);
+				}
+
+			}
+
+			long end = System.currentTimeMillis();
+			String info = "time " + (end - start);
+			del = PipeGen.outValueErr(numInstances, (count - correct), (float) correct / (float) count, del, last, 0,
+					info);
+
+			System.out.println();
+		}
+
+		params.average(i * is.size());
+
+	}
+
+	@Override
+	public void out(OptionsSuper options, IPipe pipe, ParametersFloat params) {
+
+		try {
+			long start = System.currentTimeMillis();
+
+			CONLLReader09 depReader = new CONLLReader09(options.testfile, options.formatTask);
+			CONLLWriter09 depWriter = new CONLLWriter09(options.outfile, options.formatTask);
+
+			depReader.normalizeOn = false;
+
+			System.out.print("Processing Sentence: ");
+			pipe.initValues();
+
+			int cnt = 0;
+			int del = 0;
+			while (true) {
+
+				InstancesTagger is = new InstancesTagger();
+				is.init(1, this.pipe.mf);
+				cnt++;
+
+				SentenceData09 instance = depReader.getNext(is);
+				if (instance == null || instance.forms == null)
+					break;
+				is.fillChars(instance, 0, ExtractorM._CEND);
+
+				instance = exec(instance, this.pipe, params, is);
+
+				SentenceData09 i09 = new SentenceData09(instance);
+				i09.createSemantic(instance);
+
+				if (options.overwritegold)
+					i09.ofeats = i09.pfeats;
+
+				depWriter.write(i09);
+
+				if (cnt % 100 == 0)
+					del = PipeGen.outValue(cnt, del);
+
+			}
+			depWriter.finishWriting();
+
+			del = PipeGen.outValue(cnt, del);
+
+			long end = System.currentTimeMillis();
+			System.out.println(PipeGen.getSecondsPerInstnace(cnt, (end - start)));
+			System.out.println(PipeGen.getUsedTime((end - start)));
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	private SentenceData09 exec(SentenceData09 instance, ExtractorM pipe, ParametersFloat params, InstancesTagger is) {
+
+		int length = instance.ppos.length;
+
+		short[] feats = new short[instance.gpos.length];
+
+		long vs[] = new long[ExtractorM._FC];
+
+		String[] forms = instance.forms;
+
+		instance.pfeats = new String[instance.gpos.length];
+
+		for (int j = 0; j < length; j++) {
+			if (pipe.form2morph.get(is.forms[0][j]) != null) {
+				feats[j] = (short) pipe.form2morph.get(is.forms[0][j]).intValue();
+				instance.pfeats[j] = this.pipe.types[feats[j]];
+			} else {
+
+				int bestType = pipe.fillFeatureVectorsOne(params, j, forms[j], is, 0, feats, vs);
+				feats[j] = (short) bestType;
+				instance.pfeats[j] = this.pipe.types[bestType];
+			}
+		}
+		for (int j = 0; j < length; j++) {
+			if (pipe.form2morph.get(is.forms[0][j]) != null) {
+				feats[j] = (short) pipe.form2morph.get(is.forms[0][j]).intValue();
+				instance.pfeats[j] = this.pipe.types[feats[j]];
+			} else {
+
+				int bestType = pipe.fillFeatureVectorsOne(params, j, forms[j], is, 0, feats, vs);
+				feats[j] = (short) bestType;
+				instance.pfeats[j] = this.pipe.types[bestType];
+			}
+		}
+		return instance;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.tools.Tool#apply(is2.data.SentenceData09)
+	 */
+	@Override
+	public SentenceData09 apply(SentenceData09 snt) {
+
+		try {
+			SentenceData09 it = new SentenceData09();
+			it.createWithRoot(snt);
+
+			InstancesTagger is = new InstancesTagger();
+			is.init(1, pipe.mf);
+			is.createInstance09(it.forms.length);
+
+			String[] forms = it.forms;
+
+			int length = forms.length;
+
+			// is.setForm(0, 0, CONLLReader09.ROOT);
+			for (int i = 0; i < length; i++)
+				is.setForm(0, i, forms[i]);
+			for (int i = 0; i < length; i++)
+				is.setLemma(0, i, it.plemmas[i]);
+			for (int i = 0; i < length; i++)
+				is.setPPoss(0, i, it.ppos[i]);
+
+			is.fillChars(it, 0, ExtractorM._CEND);
+
+			exec(it, pipe, params, is);
+			SentenceData09 i09 = new SentenceData09(it);
+			i09.createSemantic(it);
+			return i09;
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		return null;
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parser/Closed.java b/dependencyParser/experimental/mate-tools/src/is2/parser/Closed.java
new file mode 100755
index 0000000..af491aa
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parser/Closed.java
@@ -0,0 +1,30 @@
+package is2.parser;
+
+import is2.data.Parse;
+
+final public class Closed {
+
+	public float p;
+	// short b,e,m;
+	byte dir;
+
+	Closed d;
+	Open u;
+
+	public Closed(short s, short t, int m, int dir, Open u, Closed d, float score) {
+		// this.b = s;
+		// this.e = t;
+		// this.m = (short)m;
+		this.dir = (byte) dir;
+		this.u = u;
+		this.d = d;
+		p = score;
+	}
+
+	public void create(Parse parse) {
+		if (u != null)
+			u.create(parse);
+		if (d != null)
+			d.create(parse);
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parser/D5.java b/dependencyParser/experimental/mate-tools/src/is2/parser/D5.java
new file mode 100644
index 0000000..407b4e1
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parser/D5.java
@@ -0,0 +1,293 @@
+/**
+ *
+ */
+package is2.parser;
+
+import is2.data.DX;
+import is2.data.IFV;
+import is2.data.Long2IntInterface;
+
+/**
+ * @author Dr. Bernd Bohnet, 30.10.2010
+ *
+ *
+ */
+final public class D5 extends DX {
+
+	public long shift;
+	private long h;
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.parser52L.DX#cz2()
+	 */
+	final public void cz2() {
+
+		if (v0 < 0 || v1 < 0) {
+			shift = 0;
+			h = -1;
+			return;
+		}
+
+		h = v0 | v1 << (shift = a0);
+		shift += a1;
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.parser52L.DX#cz3()
+	 */
+	@Override
+	final public void cz3() {
+
+		if (v0 < 0 || v1 < 0 || v2 < 0) {
+			shift = 0;
+			h = -1;
+			return;
+
+		}
+
+		h = v0 | v1 << (shift = a0) | v2 << (shift += a1);
+		shift = shift + a2;
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.parser52L.DX#cz4()
+	 */
+	@Override
+	final public void cz4() {
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0) {
+			shift = 0;
+			h = -1;
+			return;
+		}
+
+		h = v0 | v1 << (shift = a0) | v2 << (shift += a1) | v3 << (shift += a2);
+		shift = shift + a3;
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.parser52L.DX#cz5()
+	 */
+	@Override
+	final public void cz5() {
+
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0) {
+			shift = 0;
+			h = -1;
+			return;
+		}
+
+		h = v0 | v1 << (shift = a0) | v2 << (shift += a1) | v3 << (shift += a2) | v4 << (shift += a3);
+		shift = shift + a4;
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.parser52L.DX#cz6()
+	 */
+	@Override
+	final public void cz6() {
+
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0) {
+			shift = 0;
+			h = -1;
+			return;
+		}
+
+		h = v0 | v1 << (shift = a0) | v2 << (shift += a1) | v3 << (shift += a2) | v4 << (shift += a3)
+				| v5 << (shift += a4);
+		shift = shift + a5;
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.parser52L.DX#cz7()
+	 */
+	@Override
+	final public void cz7() {
+
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0) {
+			shift = 0;
+			h = -1;
+			return;
+		}
+
+		h = v0 | v1 << (shift = a0) | v2 << (shift += a1) | v3 << (shift += a2) | v4 << (shift += a3)
+				| v5 << (shift += a4) | v6 << (shift += a5);
+		shift = shift + a6;
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.parser52L.DX#cz8()
+	 */
+	@Override
+	final public void cz8() {
+
+		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0 || v7 < 0) {
+			h = -1;
+			shift = 0;
+			return;
+		}
+
+		h = v0 | v1 << (shift = a0) | v2 << (shift += a1) | v3 << (shift += a2) | v4 << (shift += a3)
+				| v5 << (shift += a4) | v6 << (shift += a5) | v7 << (shift += a6);
+		shift = shift + a7;
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.parser52L.DX#clean()
+	 */
+	@Override
+	final public void clean() {
+		v0 = 0;
+		v1 = 0;
+		v2 = 0;
+		v3 = 0;
+		v4 = 0;
+		v5 = 0;
+		v6 = 0;
+		v7 = 0;
+		v8 = 0;
+		shift = 0;
+		h = 0;
+	}
+
+	public final Long2IntInterface _li;
+
+	public D5(Long2IntInterface li) {
+		_li = li;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.parser52L.DX#cs(int, int)
+	 */
+	@Override
+	final public long cs(int b, int v) {
+		if (h < 0) {
+			h = -1;
+			shift = 0;
+			return -1;
+		}
+
+		h |= (long) v << shift;
+		shift += b;
+		if (shift > 64) {
+			System.out.println("shift too large " + shift);
+			new Exception().printStackTrace();
+		}
+
+		return h;
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.parser52L.DX#csa(int, int)
+	 */
+	@Override
+	final public long csa(int b, int v) {
+		if (h < 0) {
+			h = -1;
+			shift = 0;
+			return -1;
+		}
+
+		h |= (long) v << shift;
+		shift += b;
+		if (shift > 64) {
+			System.out.println("shift too large " + shift);
+			new Exception().printStackTrace();
+		}
+
+		return h;
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.parser52L.DX#csa(int, int, is2.data.IFV)
+	 */
+	@Override
+	final public void csa(int b, int v, IFV f) {
+		if (h < 0) {
+			h = -1;
+			shift = 0;
+			return;
+		}
+
+		h |= (long) v << shift;
+		shift += b;
+		if (shift > 64) {
+			System.out.println("shift too large " + shift);
+			new Exception().printStackTrace();
+		}
+
+		f.add(_li.l2i(h));
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.parser52L.DX#getVal()
+	 */
+	@Override
+	public long getVal() {
+		if (h < 0) {
+			h = -1;
+			shift = 0;
+			return h;
+		}
+		return h;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.parser52L.DX#map(is2.data.IFV, long)
+	 */
+	@Override
+	public void map(IFV f, long l) {
+		if (l > 0)
+			f.add(_li.l2i(l));
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.data.DX#computeLabeValue(short, short)
+	 */
+	@Override
+	public int computeLabeValue(int label, int shift) {
+		return label << shift;
+	}
+
+	@Override
+	public void fix() {
+
+	}
+
+}
\ No newline at end of file
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parser/Decoder.java b/dependencyParser/experimental/mate-tools/src/is2/parser/Decoder.java
new file mode 100755
index 0000000..1fe2340
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parser/Decoder.java
@@ -0,0 +1,243 @@
+package is2.parser;
+
+import java.util.ArrayList;
+import java.util.concurrent.ExecutorService;
+
+import is2.data.DataFES;
+import is2.data.Parse;
+
+/**
+ * @author Bernd Bohnet, 01.09.2009
+ *
+ *         This methods do the actual work and they build the dependency trees.
+ */
+final public class Decoder {
+
+	public static final boolean TRAINING = true;
+	public static long timeDecotder;
+	public static long timeRearrange;
+
+	/**
+	 * Threshold for rearrange edges non-projective
+	 */
+	public static float NON_PROJECTIVITY_THRESHOLD = 0.3F;
+
+	static ExecutorService executerService = java.util.concurrent.Executors.newFixedThreadPool(Parser.THREADS);
+
+	// do not initialize
+	private Decoder() {
+	};
+
+	/**
+	 * Build a dependency tree based on the data
+	 * 
+	 * @param pos
+	 *            part-of-speech tags
+	 * @param x
+	 *            the data
+	 * @param projective
+	 *            projective or non-projective
+	 * @param edges
+	 *            the edges
+	 * @return a parse tree
+	 * @throws InterruptedException
+	 */
+	public static Parse decode(short[] pos, DataFES x, boolean projective, boolean training)
+			throws InterruptedException {
+
+		long ts = System.nanoTime();
+
+		if (executerService.isShutdown())
+			executerService = java.util.concurrent.Executors.newCachedThreadPool();
+		final int n = pos.length;
+
+		final Open O[][][][] = new Open[n][n][2][];
+		final Closed C[][][][] = new Closed[n][n][2][];
+
+		ArrayList<ParallelDecoder> pe = new ArrayList<ParallelDecoder>();
+
+		for (int i = 0; i < Parser.THREADS; i++)
+			pe.add(new ParallelDecoder(pos, x, O, C, n));
+
+		for (short k = 1; k < n; k++) {
+
+			// provide the threads the data
+			for (short s = 0; s < n; s++) {
+				short t = (short) (s + k);
+				if (t >= n)
+					break;
+
+				ParallelDecoder.add(s, t);
+			}
+
+			executerService.invokeAll(pe);
+		}
+
+		float bestSpanScore = (-1.0F / 0.0F);
+		Closed bestSpan = null;
+		for (int m = 1; m < n; m++)
+			if (C[0][n - 1][1][m].p > bestSpanScore) {
+				bestSpanScore = C[0][n - 1][1][m].p;
+				bestSpan = C[0][n - 1][1][m];
+			}
+
+		// build the dependency tree from the chart
+		Parse out = new Parse(pos.length);
+
+		bestSpan.create(out);
+
+		out.heads[0] = -1;
+		out.labels[0] = 0;
+
+		timeDecotder += (System.nanoTime() - ts);
+
+		ts = System.nanoTime();
+
+		if (!projective)
+			rearrange(pos, out.heads, out.labels, x, training);
+
+		timeRearrange += (System.nanoTime() - ts);
+
+		return out;
+	}
+
+	public static Parse[] decodeAll(short[] pos, DataFES x, boolean projective, boolean training)
+			throws InterruptedException {
+
+		long ts = System.nanoTime();
+
+		if (executerService.isShutdown())
+			executerService = java.util.concurrent.Executors.newCachedThreadPool();
+		final int n = pos.length;
+
+		final Open O[][][][] = new Open[n][n][2][];
+		final Closed C[][][][] = new Closed[n][n][2][];
+
+		ArrayList<ParallelDecoder> pe = new ArrayList<ParallelDecoder>();
+
+		for (int i = 0; i < Parser.THREADS; i++)
+			pe.add(new ParallelDecoder(pos, x, O, C, n));
+
+		for (short k = 1; k < n; k++) {
+
+			// provide the threads the data
+			for (short s = 0; s < n; s++) {
+				short t = (short) (s + k);
+				if (t >= n)
+					break;
+
+				ParallelDecoder.add(s, t);
+			}
+
+			executerService.invokeAll(pe);
+		}
+
+		Parse[] out = new Parse[n - 1];
+
+		// float bestSpanScore = (-1.0F / 0.0F);
+		// Closed bestSpan = null;
+		for (int m = 1; m < n; m++) {
+			// if (C[0][n - 1][1][m].p > bestSpanScore) {
+			// bestSpanScore = C[0][n - 1][1][m].p;
+			// bestSpan = C[0][n - 1][1][m];
+			// }
+			out[m - 1] = new Parse(pos.length);
+			C[0][n - 1][1][m].create(out[m - 1]);
+			out[m - 1].heads[0] = -1;
+			out[m - 1].labels[0] = 0;
+		}
+
+		// build the dependency tree from the chart
+		// Parse out= new Parse(pos.length);
+
+		// bestSpan.create(out);
+
+		// out.heads[0]=-1;
+		// out.labels[0]=0;
+
+		timeDecotder += (System.nanoTime() - ts);
+
+		ts = System.nanoTime();
+
+		if (!projective)
+			for (Parse p : out)
+				rearrange(pos, p.heads, p.labels, x, training);
+		// if (!projective) rearrange(pos, out.heads, out.labels,x,training);
+
+		timeRearrange += (System.nanoTime() - ts);
+
+		return out;
+	}
+
+	/**
+	 * This is the parallel non-projective edge re-arranger
+	 * 
+	 * @param pos
+	 *            part-of-speech tags
+	 * @param heads
+	 *            parent child relation
+	 * @param labs
+	 *            edge labels
+	 * @param x
+	 *            the data
+	 * @param edges
+	 *            the existing edges defined by part-of-speech tags
+	 * @throws InterruptedException
+	 */
+	public static void rearrange(short[] pos, short[] heads, short[] labs, DataFES x, boolean training)
+			throws InterruptedException {
+
+		int threads = (pos.length > Parser.THREADS) ? Parser.THREADS : pos.length;
+
+		// wh what to change, nPar - new parent, nType - new type
+		short wh = -1, nPar = -1, nType = -1;
+		ArrayList<ParallelRearrange> pe = new ArrayList<ParallelRearrange>();
+
+		while (true) {
+			boolean[][] isChild = new boolean[heads.length][heads.length];
+			for (int i = 1, l1 = 1; i < heads.length; i++, l1 = i)
+				while ((l1 = heads[l1]) != -1)
+					isChild[l1][i] = true;
+
+			float max = Float.NEGATIVE_INFINITY;
+			float p = Extractor.encode3(pos, heads, labs, x);
+
+			pe.clear();
+			for (int i = 0; i < threads; i++)
+				pe.add(new ParallelRearrange(isChild, pos, x, heads, labs));
+
+			for (int ch = 1; ch < heads.length; ch++) {
+
+				for (short pa = 0; pa < heads.length; pa++) {
+					if (ch == pa || pa == heads[ch] || isChild[ch][pa])
+						continue;
+
+					ParallelRearrange.add(p, (short) ch, pa);
+				}
+			}
+			executerService.invokeAll(pe);
+
+			for (ParallelRearrange.PA rp : ParallelRearrange.order)
+				if (max < rp.max) {
+					max = rp.max;
+					wh = rp.wh;
+					nPar = rp.nPar;
+					nType = rp.nType;
+				}
+			ParallelRearrange.order.clear();
+
+			if (max <= NON_PROJECTIVITY_THRESHOLD)
+				break; // bb: changed from 0.0
+
+			heads[wh] = nPar;
+			labs[wh] = nType;
+
+		}
+	}
+
+	public static String getInfo() {
+
+		return "Decoder non-projectivity threshold: " + NON_PROJECTIVITY_THRESHOLD;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parser/Edges.java b/dependencyParser/experimental/mate-tools/src/is2/parser/Edges.java
new file mode 100644
index 0000000..39a0190
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parser/Edges.java
@@ -0,0 +1,208 @@
+/**
+ *
+ */
+package is2.parser;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Map.Entry;
+
+/**
+ * @author Dr. Bernd Bohnet, 13.05.2009;
+ *
+ *
+ */
+public final class Edges {
+
+	private static short[][][] edges;
+	private static HashMap<Short, Integer> labelCount = new HashMap<Short, Integer>();
+
+	private static HashMap<String, Integer> slabelCount = new HashMap<String, Integer>();
+
+	static short[] def = new short[1];
+
+	private Edges() {
+	}
+
+	/**
+	 * @param length
+	 */
+	public static void init(int length) {
+		edges = new short[length][length][];
+	}
+
+	public static void findDefault() {
+
+		int best = 0;
+
+		for (Entry<Short, Integer> e : labelCount.entrySet()) {
+
+			if (best < e.getValue()) {
+				best = e.getValue();
+				def[0] = e.getKey();
+			}
+		}
+
+		// labelCount=null;
+		// String[] types = new String[mf.getFeatureCounter().get(PipeGen.REL)];
+		// for (Entry<String, Integer> e :
+		// MFO.getFeatureSet().get(PipeGen.REL).entrySet()) types[e.getValue()]
+		// = e.getKey();
+
+		is2.util.DB.println("set default label to " + def[0] + " ");
+
+		// System.out.println("found default "+def[0]);
+
+	}
+
+	final static public void put(int pos1, int pos2, short label) {
+		putD(pos1, pos2, label);
+		// putD(pos2, pos1,!dir, label);
+	}
+
+	final static public void putD(int pos1, int pos2, short label) {
+
+		Integer lc = labelCount.get(label);
+		if (lc == null)
+			labelCount.put(label, 1);
+		else
+			labelCount.put(label, lc + 1);
+
+		String key = pos1 + "-" + pos2 + label;
+		Integer lcs = slabelCount.get(key);
+		if (lcs == null)
+			slabelCount.put(key, 1);
+		else
+			slabelCount.put(key, lcs + 1);
+
+		if (edges[pos1][pos2] == null) {
+			edges[pos1][pos2] = new short[1];
+			edges[pos1][pos2][0] = label;
+
+			// edgesh[pos1][pos2][dir?0:1] = new TIntHashSet(2);
+			// edgesh[pos1][pos2][dir?0:1].add(label);
+		} else {
+			short labels[] = edges[pos1][pos2];
+			for (short l : labels) {
+				// contains label already?
+				if (l == label)
+					return;
+			}
+
+			short[] nlabels = new short[labels.length + 1];
+			System.arraycopy(labels, 0, nlabels, 0, labels.length);
+			nlabels[labels.length] = label;
+			edges[pos1][pos2] = nlabels;
+
+			// edgesh[pos1][pos2][dir?0:1].add(label);
+		}
+	}
+
+	final static public short[] get(int pos1, int pos2) {
+
+		if (pos1 < 0 || pos2 < 0 || edges[pos1][pos2] == null)
+			return def;
+		return edges[pos1][pos2];
+	}
+
+	/**
+	 * @param dis
+	 */
+	static public void write(DataOutputStream d) throws IOException {
+
+		int len = edges.length;
+		d.writeShort(len);
+
+		for (int p1 = 0; p1 < len; p1++) {
+			for (int p2 = 0; p2 < len; p2++) {
+				if (edges[p1][p2] == null)
+					d.writeShort(0);
+				else {
+					d.writeShort(edges[p1][p2].length);
+					for (int l = 0; l < edges[p1][p2].length; l++) {
+						d.writeShort(edges[p1][p2][l]);
+					}
+
+				}
+			}
+		}
+
+		d.writeShort(def[0]);
+
+	}
+
+	/**
+	 * @param dis
+	 */
+	public static void read(DataInputStream d) throws IOException {
+		int len = d.readShort();
+
+		edges = new short[len][len][];
+		for (int p1 = 0; p1 < len; p1++) {
+			for (int p2 = 0; p2 < len; p2++) {
+				int ll = d.readShort();
+				if (ll == 0) {
+					edges[p1][p2] = null;
+				} else {
+					edges[p1][p2] = new short[ll];
+					for (int l = 0; l < ll; l++) {
+						edges[p1][p2][l] = d.readShort();
+					}
+				}
+			}
+		}
+
+		def[0] = d.readShort();
+
+	}
+
+	public static void print() {
+		for(int i = 0; i < edges.length; ++i)
+			for(int j = 0; j < edges[i].length; ++j)
+				if(edges[i][j] != null)
+					System.out.println("edges[" + i + "][" + j + "] = " + Arrays.toString(edges[i][j]));
+		
+		assert def.length == 0;
+		System.out.println("def = [" + def[0] + "]");
+	}
+	
+	public static class C implements Comparator<Short> {
+
+		public C() {
+			super();
+		}
+
+		String _key;
+
+		public C(String key) {
+			super();
+			_key = key;
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+		 */
+		@Override
+		public int compare(Short l1, Short l2) {
+
+			// int c1 = labelCount.get(l1);
+			// int c2 = labelCount.get(l2);
+			// if (true) return c1==c2?0:c1>c2?-1:1;
+
+			int x1 = slabelCount.get(_key + l1.shortValue());
+			int x2 = slabelCount.get(_key + l2.shortValue());
+			// System.out.println(x1+" "+x2);
+
+			return x1 == x2 ? 0 : x1 > x2 ? -1 : 1;
+
+		}
+
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parser/Evaluator.java b/dependencyParser/experimental/mate-tools/src/is2/parser/Evaluator.java
new file mode 100755
index 0000000..f0d45ec
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parser/Evaluator.java
@@ -0,0 +1,100 @@
+package is2.parser;
+
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+
+public class Evaluator {
+
+	public static final String PUNCT = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
+
+	public static class Results {
+
+		public int total;
+		public int corr;
+		public float las;
+		public float ula;
+
+	}
+
+	public static Results evaluate(String act_file, String pred_file) throws Exception {
+
+		CONLLReader09 goldReader = new CONLLReader09(act_file, -1);
+		CONLLReader09 predictedReader = new CONLLReader09(pred_file, -1);
+
+		int total = 0, corr = 0, corrL = 0;
+		int numsent = 0, corrsent = 0, corrsentL = 0;
+		SentenceData09 goldInstance = goldReader.getNext();
+		SentenceData09 predInstance = predictedReader.getNext();
+
+		while (goldInstance != null) {
+
+			int instanceLength = goldInstance.length();
+
+			if (instanceLength != predInstance.length())
+				System.out.println("Lengths do not match on sentence " + numsent);
+
+			int[] goldHeads = goldInstance.heads;
+			String[] goldLabels = goldInstance.labels;
+			int[] predHeads = predInstance.heads;
+			String[] predLabels = predInstance.labels;
+
+			boolean whole = true;
+			boolean wholeL = true;
+
+			// NOTE: the first item is the root info added during
+			// nextInstance(), so we skip it.
+
+			int punc = 0;
+			for (int i = 1; i < instanceLength; i++) {
+				if (predHeads[i] == goldHeads[i]) {
+					corr++;
+
+					if (goldLabels[i].equals(predLabels[i]))
+						corrL++;
+					else {
+						// System.out.println(numsent+" error gold
+						// "+goldLabels[i]+" "+predLabels[i]+" head
+						// "+goldHeads[i]+" child "+i);
+						wholeL = false;
+					}
+				} else {
+					// System.out.println(numsent+"error gold "+goldLabels[i]+"
+					// "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
+					whole = false;
+					wholeL = false;
+				}
+			}
+			total += ((instanceLength - 1) - punc); // Subtract one to not score
+													// fake root token
+
+			if (whole)
+				corrsent++;
+			if (wholeL)
+				corrsentL++;
+			numsent++;
+
+			goldInstance = goldReader.getNext();
+			predInstance = predictedReader.getNext();
+		}
+
+		Results r = new Results();
+
+		r.total = total;
+		r.corr = corr;
+		r.las = (float) Math.round(((double) corrL / total) * 100000) / 1000;
+		r.ula = (float) Math.round(((double) corr / total) * 100000) / 1000;
+		System.out.print("Total: " + total + " \tCorrect: " + corr + " ");
+		System.out.println("LAS: " + (double) Math.round(((double) corrL / total) * 100000) / 1000 + " \tTotal: "
+				+ (double) Math.round(((double) corrsentL / numsent) * 100000) / 1000 + " \tULA: "
+				+ (double) Math.round(((double) corr / total) * 100000) / 1000 + " \tTotal: "
+				+ (double) Math.round(((double) corrsent / numsent) * 100000) / 1000);
+
+		return r;
+	}
+
+	public static float round(double v) {
+
+		return Math.round(v * 10000F) / 10000F;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parser/Extractor.java b/dependencyParser/experimental/mate-tools/src/is2/parser/Extractor.java
new file mode 100755
index 0000000..3ba9cc9
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parser/Extractor.java
@@ -0,0 +1,1726 @@
+package is2.parser;
+
+import is2.data.Cluster;
+import is2.data.D6;
+import is2.data.DX;
+import is2.data.DataFES;
+import is2.data.F2SF;
+import is2.data.FV;
+import is2.data.IFV;
+import is2.data.Instances;
+import is2.data.Long2IntInterface;
+import is2.data.PipeGen;
+import is2.util.DB;
+import is2.util.OptionsSuper;
+
+final public class Extractor {
+
+	static final int _SIB = 85;
+	public static int s_rel, s_word, s_type, s_dir, s_dist, s_feat, s_child, s_spath, s_lpath, s_pos, s_rel1;
+	public final DX d0, dl1, dl2, dwr, dr, dwwp, dw, dwp, dlf, d3lp, d2lp, d2pw, d2pp;
+
+	public final Long2IntInterface li;
+
+	public boolean s_stack = false;
+
+	public Extractor(Long2IntInterface li, boolean stack, int what) {
+
+		s_stack = stack;
+
+		this.li = li;
+
+		if (what == OptionsSuper.MULTIPLICATIVE) {
+			d0 = new D6(li);
+			dl1 = new D6(li);
+			dl2 = new D6(li);
+			dwr = new D6(li);
+			dr = new D6(li);
+			dwwp = new D6(li);
+			dw = new D6(li);
+			dwp = new D6(li);
+			dlf = new D6(li);
+			d3lp = new D6(li);
+			d2lp = new D6(li);
+			d2pw = new D6(li);
+			d2pp = new D6(li);
+		} else {
+			d0 = new D5(li);
+			dl1 = new D5(li);
+			dl2 = new D5(li);
+			dwr = new D5(li);
+			dr = new D5(li);
+			dwwp = new D5(li);
+			dw = new D5(li);
+			dwp = new D5(li);
+			dlf = new D5(li);
+			d3lp = new D5(li);
+			d2lp = new D5(li);
+			d2pw = new D5(li);
+			d2pp = new D5(li);
+		}
+
+	}
+
+	public static void initStat(int what) {
+		MFO mf = new MFO();
+		if (what == OptionsSuper.MULTIPLICATIVE) {
+
+			DB.println("mult  (d4) ");
+
+			s_rel = mf.getFeatureCounter().get(REL).intValue() * 16;
+			s_rel1 = mf.getFeatureCounter().get(REL).intValue() + 1;
+			s_pos = mf.getFeatureCounter().get(POS).intValue();
+			s_word = mf.getFeatureCounter().get(WORD).intValue();
+			s_type = mf.getFeatureCounter().get(TYPE).intValue();
+			s_dir = (mf.getFeatureCounter().get(DIR));
+			la = (mf.getValue(DIR, LA));
+			ra = (mf.getValue(DIR, RA));
+			s_dist = (mf.getFeatureCounter().get(DIST));// mf.getFeatureBits(DIST);
+			s_feat = (mf.getFeatureCounter().get(PipeGen.FEAT));// mf.getFeatureBits(Pipe.FEAT);
+			s_spath = (mf.getFeatureCounter().get(Cluster.SPATH) == null ? 0
+					: mf.getFeatureCounter().get(Cluster.SPATH));// mf.getFeatureBits(Cluster.SPATH);
+			s_lpath = (mf.getFeatureCounter().get(Cluster.LPATH) == null ? 0
+					: mf.getFeatureCounter().get(Cluster.LPATH));// mf.getFeatureBits(Cluster.LPATH);
+
+		} else {
+
+			s_rel = MFO.getFeatureBits(REL);
+			s_pos = MFO.getFeatureBits(POS);
+			s_word = MFO.getFeatureBits(WORD);
+			s_type = MFO.getFeatureBits(TYPE);
+			s_dir = MFO.getFeatureBits(DIR);
+			la = mf.getValue(DIR, LA);
+			ra = mf.getValue(DIR, RA);
+			s_dist = MFO.getFeatureBits(DIST);
+			s_feat = MFO.getFeatureBits(PipeGen.FEAT);
+			s_spath = MFO.getFeatureBits(Cluster.SPATH);
+			s_lpath = MFO.getFeatureBits(Cluster.LPATH);
+
+			DB.println("shift init (d5) ");
+		}
+
+	}
+
+	public void init() {
+
+		d0.a0 = s_type;
+		d0.a1 = s_pos;
+		d0.a2 = s_pos;
+		d0.a3 = s_pos;
+		d0.a4 = s_pos;
+		d0.a5 = s_pos;
+		d0.a6 = s_pos;
+		d0.a7 = s_pos;
+		d0.fix();
+		dl1.a0 = s_type;
+		dl1.a1 = s_rel;
+		dl1.a2 = s_pos;
+		dl1.a3 = s_pos;
+		dl1.a4 = s_pos;
+		dl1.a5 = s_pos;
+		dl1.a6 = s_pos;
+		dl1.a7 = s_pos;
+		dl1.fix();
+		dl2.a0 = s_type;
+		dl2.a1 = s_rel;
+		dl2.a2 = s_word;
+		dl2.a3 = s_pos;
+		dl2.a4 = s_pos;
+		dl2.a5 = s_pos;
+		dl2.a6 = s_pos;
+		dl2.a7 = s_pos;
+		dl2.fix();
+		dwp.a0 = s_type;
+		dwp.a1 = s_rel;
+		dwp.a2 = s_word;
+		dwp.a3 = s_pos;
+		dwp.a4 = s_pos;
+		dwp.a5 = s_word;
+		dwp.fix();
+		dwwp.a0 = s_type;
+		dwwp.a1 = s_rel;
+		dwwp.a2 = s_word;
+		dwwp.a3 = s_word;
+		dwwp.a4 = s_pos;
+		dwwp.a5 = s_word;
+		dwwp.fix();
+		dlf.a0 = s_type;
+		dlf.a1 = s_rel;
+		dlf.a2 = s_pos;
+		dlf.a3 = s_pos;
+		dlf.a4 = s_feat;
+		dlf.a5 = s_feat;
+		dlf.a6 = s_pos;
+		dlf.a7 = s_pos;
+		dlf.fix();
+		d3lp.a0 = s_type;
+		d3lp.a1 = s_rel;
+		d3lp.a2 = s_lpath;
+		d3lp.a3 = s_lpath;
+		d3lp.a4 = s_lpath;
+		d3lp.a5 = s_word;
+		d3lp.a6 = s_spath;
+		d3lp.a7 = s_spath;
+		d3lp.fix();
+		d2lp.a0 = s_type;
+		d2lp.a1 = s_rel;
+		d2lp.a2 = s_lpath;
+		d2lp.a3 = s_lpath;
+		d2lp.a4 = s_word;
+		d2lp.a5 = s_word;
+		d2lp.fix(); // d3lp.a6 = s_spath; d3lp.a7 = s_spath;
+		d2pw.a0 = s_type;
+		d2pw.a1 = s_rel;
+		d2pw.a2 = s_lpath;
+		d2pw.a3 = s_lpath;
+		d2pw.a4 = s_word;
+		d2pw.a5 = s_word;
+		d2pw.fix(); // d3lp.a6 = s_spath; d3lp.a7 = s_spath;
+		d2pp.a0 = s_type;
+		d2pp.a1 = s_rel;
+		d2pp.a2 = s_lpath;
+		d2pp.a3 = s_lpath;
+		d2pp.a4 = s_pos;
+		d2pp.a5 = s_pos;
+		d2pp.fix(); // d3lp.a6 = s_spath; d3lp.a7 = s_spath;
+	}
+
+	public int basic(short[] pposs, int p, int d, IFV f) {
+
+		d0.clean();
+		dl1.clean();
+		dl2.clean();
+		dwp.clean();
+		dwwp.clean();
+		dlf.clean();
+		d3lp.clean();
+
+		d3lp.clean();
+		d2lp.clean();
+		d2pw.clean();
+		d2pp.clean();
+
+		int n = 1;
+		int dir = (p < d) ? ra : la;
+		d0.v0 = n++;
+		d0.v1 = pposs[p];
+		d0.v2 = pposs[d]; // d0.stop=4;
+		int end = (p >= d ? p : d);
+		int start = (p >= d ? d : p) + 1;
+
+		for (int i = start; i < end; i++) {
+			d0.v3 = pposs[i];
+			d0.cz4();
+			d0.csa(s_dir, dir, f);
+		}
+		return n;
+	}
+
+	public int firstm(Instances is, int i, int prnt, int dpnt, int label, Cluster cluster, long[] f) {
+
+		for (int k = 0; k < f.length; k++)
+			f[k] = 0;
+
+		short[] pposs = is.pposs[i];
+		int[] form = is.forms[i];
+		short[][] feats = is.feats[i];
+
+		int pF = form[prnt], dF = form[dpnt];
+		int pL = is.plemmas[i][prnt], dL = is.plemmas[i][dpnt];
+		int pP = pposs[prnt], dP = pposs[dpnt];
+
+		int prntLS = pF == -1 ? -1 : cluster.getLP(pF), chldLS = dF == -1 ? -1 : cluster.getLP(dF);
+
+		// final int dir= (prnt < dpnt)? ra:la;
+
+		if (pF > maxForm)
+			pF = -1;
+		if (pL > maxForm)
+			pL = -1;
+
+		if (dF > maxForm)
+			dF = -1;
+		if (dL > maxForm)
+			dL = -1;
+
+		int n = 3, c = 0;
+
+		dl2.v1 = label;
+		dl2.v0 = n++;
+		dl2.v2 = pF;
+		dl2.v3 = dP;
+		dl2.cz4();
+		f[c++] = dl2.getVal();
+		dl2.v0 = n++;
+		dl2.cz3();
+		f[c++] = dl2.getVal();
+		dl2.v0 = n++;
+		dl2.v2 = dF;
+		dl2.v3 = pP;
+		dl2.cz4();
+		f[c++] = dl2.getVal();
+		dl2.v0 = n++;
+		dl2.cz3();
+		f[c++] = dl2.getVal();
+
+		dwwp.v1 = label;
+		dwwp.v0 = n++;
+		dwwp.v2 = pF;
+		dwwp.v3 = dF;
+		dwwp.cz4();
+		f[c++] = dwwp.getVal();
+
+		dl1.v1 = label;
+		dl1.v0 = n++;
+		dl1.v2 = dP;
+		dl1.cz3();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = pP;
+		dl1.cz3();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v3 = dP;
+		dl1.cz4();
+		f[c++] = dl1.getVal();
+
+		int pPm1 = prnt > 0 ? pposs[prnt - 1] : s_str, dPm1 = dpnt > 0 ? pposs[dpnt - 1] : s_str;
+		int pPp1 = prnt < pposs.length - 1 ? pposs[prnt + 1] : s_end,
+				dPp1 = dpnt < pposs.length - 1 ? pposs[dpnt + 1] : s_end;
+
+		int pPm2 = prnt > 1 ? pposs[prnt - 2] : s_str, dPm2 = dpnt > 1 ? pposs[dpnt - 2] : s_str;
+		int pPp2 = prnt < pposs.length - 2 ? pposs[prnt + 2] : s_end,
+				dPp2 = dpnt < pposs.length - 2 ? pposs[dpnt + 2] : s_end;
+
+		int pFm1 = prnt > 0 ? form[prnt - 1] : s_stwrd, dFm1 = dpnt > 0 ? form[dpnt - 1] : s_stwrd;
+		int pFp1 = prnt < form.length - 1 ? form[prnt + 1] : s_stwrd,
+				dFp1 = dpnt < form.length - 1 ? form[dpnt + 1] : s_stwrd;
+
+		if (prnt - 1 == dpnt)
+			pPm1 = -1;
+		if (prnt == dpnt - 1)
+			dPm1 = -1;
+
+		if (prnt + 1 == dpnt)
+			pPp1 = -1;
+		if (prnt == dpnt + 1)
+			dPp1 = -1;
+
+		if (prnt - 2 == dpnt)
+			pPm2 = -1;
+		if (prnt == dpnt - 2)
+			dPm2 = -1;
+
+		if (prnt + 2 == dpnt)
+			pPp2 = -1;
+		if (prnt == dpnt + 2)
+			dPp2 = -1;
+
+		dl1.v0 = n++;
+		dl1.v2 = pP;
+		dl1.v3 = pPp1;
+		dl1.v4 = dP;
+		dl1.v5 = dPp1;
+		dl1.v6 = (prnt + 1 == dpnt ? 4 : prnt == dpnt + 1 ? 5 : 6);
+		dl1.cz7();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v5 = dPm1;
+		dl1.v6 = (prnt + 1 == dpnt ? 4 : prnt == dpnt - 1 ? 5 : 6);
+		dl1.cz7();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v3 = pPm1;
+		dl1.v6 = (prnt - 1 == dpnt ? 4 : prnt == dpnt - 1 ? 5 : 6);
+		dl1.cz7();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v5 = dPp1;
+		dl1.v6 = (prnt - 1 == dpnt ? 4 : prnt == dpnt + 1 ? 5 : 6);
+		dl1.cz7();
+		f[c++] = dl1.getVal();
+
+		dl1.v0 = n++;
+		dl1.v3 = pPm1;
+		dl1.v5 = (prnt - 1 == dpnt ? 4 : 5);
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v3 = dPm1;
+		dl1.v5 = (prnt == dpnt - 1 ? 4 : 5);
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v3 = dPp1;
+		dl1.v5 = (prnt == dpnt + 1 ? 4 : 5);
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v3 = pPp1;
+		dl1.v5 = (prnt + 1 == dpnt ? 4 : 5);
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+
+		dl1.v0 = n++;
+		dl1.v2 = pP;
+		dl1.v3 = pPp2;
+		dl1.v4 = dP;
+		dl1.v5 = dPp2;
+		dl1.v6 = (prnt + 2 == dpnt ? 4 : prnt == dpnt + 2 ? 5 : 6);
+		dl1.cz7();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v5 = dPm2;
+		dl1.v6 = (prnt + 2 == dpnt ? 4 : prnt == dpnt - 2 ? 5 : 6);
+		dl1.cz7();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v3 = pPm2;
+		dl1.v6 = (prnt - 2 == dpnt ? 4 : prnt == dpnt - 2 ? 5 : 6);
+		dl1.cz7();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v5 = dPp2;
+		dl1.v6 = (prnt - 2 == dpnt ? 4 : prnt == dpnt + 2 ? 5 : 6);
+		dl1.cz7();
+		f[c++] = dl1.getVal();
+
+		// remove this again
+		dl1.v0 = n++;
+		dl1.v3 = pPm2;
+		dl1.v5 = (prnt - 2 == dpnt ? 4 : 5);
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v3 = dPm2;
+		dl1.v5 = (prnt == dpnt - 2 ? 4 : 5);
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v3 = dPp2;
+		dl1.v5 = (prnt == dpnt + 2 ? 4 : 5);
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v3 = pPp2;
+		dl1.v5 = (prnt + 2 == dpnt ? 4 : 5);
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+
+		dl2.v0 = n++;
+		dl2.v3 = dFm1;
+		dl2.v3 = pPp1;
+		dl2.v4 = pP;
+		dl2.v5 = (prnt + 1 == dpnt ? 4 : prnt == dpnt - 1 ? 5 : 6);
+		dl2.cz6();
+		f[c++] = dl2.getVal();
+		dl2.v0 = n++;
+		dl2.v3 = dFp1;
+		dl2.v3 = pPm1;
+		dl2.v5 = (prnt - 1 == dpnt ? 4 : prnt == dpnt + 1 ? 5 : 6);
+		dl2.cz6();
+		f[c++] = dl2.getVal();
+		dl2.v0 = n++;
+		dl2.v3 = pFm1;
+		dl2.v3 = dPp1;
+		dl2.v4 = dP;
+		dl2.v5 = (prnt - 1 == dpnt ? 4 : prnt == dpnt + 1 ? 5 : 6);
+		dl2.cz6();
+		f[c++] = dl2.getVal();
+		dl2.v0 = n++;
+		dl2.v3 = pFp1;
+		dl2.v3 = dPm1;
+		dl2.v5 = (prnt + 1 == dpnt ? 4 : prnt == dpnt - 1 ? 5 : 6);
+		dl2.cz6();
+		f[c++] = dl2.getVal();
+
+		// maybe without dir
+		dl2.v0 = n++;
+		dl2.v3 = dFm1;
+		dl2.v3 = dPm2;
+		dl2.v4 = pP;
+		dl2.v5 = (prnt == dpnt - 1 ? 4 : prnt == dpnt - 2 ? 5 : 6);
+		dl2.cz6();
+		f[c++] = dl2.getVal();
+		dl2.v0 = n++;
+		dl2.v3 = dFp1;
+		dl2.v3 = dPp2;
+		dl2.v5 = (prnt == dpnt + 1 ? 4 : prnt == dpnt + 2 ? 5 : 6);
+		dl2.cz6();
+		f[c++] = dl2.getVal();
+		dl2.v0 = n++;
+		dl2.v3 = pFm1;
+		dl2.v3 = pPm2;
+		dl2.v4 = dP;
+		dl2.v5 = (prnt - 1 == dpnt ? 4 : prnt - 2 == dpnt ? 5 : 6);
+		dl2.cz6();
+		f[c++] = dl2.getVal();
+		dl2.v0 = n++;
+		dl2.v3 = pFp1;
+		dl2.v3 = pPp2;
+		dl2.v5 = (prnt + 1 == dpnt ? 4 : prnt + 2 == dpnt ? 5 : 6);
+		dl2.cz6();
+		f[c++] = dl2.getVal();
+
+		dwwp.v0 = n++;
+		dwwp.v2 = pF;
+		dwwp.v3 = dF;
+		dwwp.v4 = dP;
+		dwwp.cz5();
+		f[c++] = dwwp.getVal();
+		dwwp.v0 = n++;
+		dwwp.v2 = pF;
+		dwwp.v3 = dF;
+		dwwp.v4 = pP;
+		dwwp.cz5();
+		f[c++] = dwwp.getVal();
+		// dwwp.v0= n++; dwwp.v2=dF; dwwp.v3=pF; dwwp.v4=pP; dwwp.v4=dP;
+		// dwwp.cz6(); f[c++]=dwwp.getVal();
+
+		// until here
+
+		// lemmas
+
+		dl2.v1 = label;
+		dl2.v0 = n++;
+		dl2.v2 = pL;
+		dl2.v3 = dP;
+		dl2.cz4();
+		f[c++] = dl2.getVal();
+		dl2.v0 = n++;
+		dl2.cz3();
+		f[c++] = dl2.getVal();
+		dl2.v0 = n++;
+		dl2.v2 = dL;
+		dl2.v3 = pP;
+		dl2.cz4();
+		f[c++] = dl2.getVal();
+		dl2.v0 = n++;
+		dl2.cz3();
+		f[c++] = dl2.getVal();
+
+		dwwp.v1 = label;
+		dwwp.v0 = n++;
+		dwwp.v2 = pL;
+		dwwp.v3 = dL;
+		dwwp.cz4();
+		f[c++] = dwwp.getVal();
+
+		dwp.v1 = label;
+		dwp.v0 = n++;
+		dwp.v2 = dL;
+		dwp.v3 = pP;
+		dwp.v4 = dP;
+		dwp.v5 = pL; // dwp.cz6(); f[c++]=dwp.getVal();
+
+		dwp.v0 = n++;
+		dwp.v2 = pL;
+		dwp.v3 = pP;
+		dwp.v4 = dP;
+		dwp.v0 = n++;
+		dwp.cz5();
+		f[c++] = dwp.getVal();
+
+		dwp.v0 = n++;
+		dwp.v2 = pL;
+		dwp.cz5();
+		f[c++] = dwp.getVal();
+		dwwp.v0 = n++;
+		dwwp.v2 = pL;
+		dwwp.v3 = dL;
+		dwwp.v4 = dP;
+		dwwp.cz5();
+		f[c++] = dwwp.getVal();
+		dwwp.v0 = n++;
+		dwwp.v4 = pP;
+		dwwp.cz5();
+		f[c++] = dwwp.getVal();
+
+		// cluster
+		if (cluster.size() > 10) {
+			d2pw.v1 = label;
+			d2pw.v0 = n++;
+			d2pw.v2 = prntLS;
+			d2pw.v3 = chldLS;
+			d2pw.cz4();
+			f[c++] = d2pw.getVal();
+			d2pw.v0 = n++;
+			d2pw.v4 = pF;
+			d2pw.cz5();
+			f[c++] = d2pw.getVal();
+			d2pw.v0 = n++;
+			d2pw.v4 = dF;
+			d2pw.cz5();
+			f[c++] = d2pw.getVal();
+			// d2pw.v0=n++; d2pw.v5=pF; d2pw.cz6(); f[c++]=d2pw.getVal();
+
+			d2pp.v1 = label;
+			d2pp.v0 = n++;
+			d2pp.v2 = prntLS;
+			d2pp.v3 = chldLS;
+			d2pp.cz4();
+			f[c++] = d2pp.getVal();
+			d2pp.v0 = n++;
+			d2pp.v4 = pP;
+			d2pp.cz5();
+			f[c++] = d2pp.getVal();
+			d2pp.v0 = n++;
+			d2pp.v4 = dP;
+			d2pp.cz5();
+			f[c++] = d2pp.getVal();
+			d2pp.v0 = n++;
+			d2pp.v5 = pP;
+			d2pp.cz6();
+			f[c++] = d2pp.getVal();
+		}
+
+		if (s_stack) {
+
+			short[] prel = is.plabels[i];
+			short[] phead = is.pheads[i];
+
+			// take those in for stacking
+			dl2.v1 = label;
+			dl2.v0 = n++;
+			dl2.v2 = prel[dpnt];
+			dl2.v3 = pP;
+			dl2.v4 = dP;
+			dl2.v5 = prnt == phead[dpnt] ? 1 : 2;
+			dl2.cz6();
+			f[c++] = dl2.getVal();
+			dl2.v0 = n++;
+			dl2.v2 = pP;
+			dl2.v3 = dP;
+			dl2.v4 = prnt == phead[dpnt] ? 1 : 2;
+			dl2.cz5();
+			f[c++] = dl2.getVal();
+		}
+
+		if (feats == null)
+			return c;
+
+		short[] featsP = feats[prnt], featsD = feats[dpnt];
+		dlf.v0 = n++;
+		dlf.v1 = label;
+		dlf.v2 = pP;
+		dlf.v3 = dP;
+		c = extractFeat(f, c, featsP, featsD);
+
+		return c;
+	}
+
+	public int second(Instances is, int i, int p, int d, int x, int label, Cluster cluster, long[] f) {
+
+		// for(int k=0;k<f.length;k++) f[k]=0;
+
+		dl1.clean();
+		dwp.clean();
+		dlf.clean();
+		dwwp.clean();
+
+		short[] pos = is.pposs[i];
+		int[] forms = is.forms[i], lemmas = is.plemmas[i];
+
+		int pP = pos[p], dP = pos[d];
+		int pF = forms[p], dF = forms[d];
+		int pL = lemmas[p], cL = lemmas[d];
+
+		int sP = x != -1 ? pos[x] : s_str, sF = x != -1 ? forms[x] : s_stwrd, sL = x != -1 ? lemmas[x] : s_stwrd;
+
+		int n = _SIB;
+		if (pF > maxForm)
+			pF = -1;
+		if (pL > maxForm)
+			pL = -1;
+
+		if (dF > maxForm)
+			dF = -1;
+		if (cL > maxForm)
+			cL = -1;
+
+		if (sF > maxForm)
+			sF = -1;
+		if (sL > maxForm)
+			sL = -1;
+
+		int c = 0;
+
+		dl1.v1 = label;
+		dwwp.v1 = label;
+		dwp.v1 = label;
+
+		dl1.v0 = n++;
+		dl1.v2 = pP;
+		dl1.v3 = dP;
+		dl1.v4 = sP;
+		dl1.cz5();
+		f[c++] = dl1.getVal(); // f[c++]=dl1.csa(s_dist,dist);
+		dl1.v0 = n++;
+		dl1.v3 = sP;
+		dl1.cz4();
+		f[c++] = dl1.getVal(); // f[c++]=dl1.csa(s_dist,dist);
+		dl1.v0 = n++;
+		dl1.v2 = dP;
+		dl1.cz4();
+		f[c++] = dl1.getVal(); // f[c++]=dl1.csa(s_dist,dist);
+
+		// sibling only could be tried
+
+		dwwp.v0 = n++;
+		dwwp.v2 = pF;
+		dwwp.v3 = sF;
+		dwwp.cz4();
+		f[c++] = dwwp.getVal(); // f[c++]=dwwp.csa(s_dist,dist);
+		dwwp.v0 = n++;
+		dwwp.v2 = dF;
+		dwwp.cz4();
+		f[c++] = dwwp.getVal(); // f[c++]=dwwp.csa(s_dist,dist);
+
+		// 154
+		dwp.v0 = n++;
+		dwp.v2 = sF;
+		dwp.v3 = pP;
+		dwp.cz4();
+		f[c++] = dwp.getVal(); // f[c++]=dwp.csa(s_dist,dist);
+		dwp.v0 = n++;
+		/* dwp.v1=label; */dwp.v3 = dP;
+		dwp.cz4();
+		f[c++] = dwp.getVal(); // f[c++]=dwp.csa(s_dist,dist);
+		dwp.v0 = n++;
+		/* dwp.v1=label; */ dwp.v2 = pF;
+		dwp.v3 = sP;
+		dwp.cz4();
+		f[c++] = dwp.getVal(); // f[c++]=dwp.csa(s_dist,dist);
+		dwp.v0 = n++;
+		/* dwp.v1=label; */ dwp.v2 = dF;
+		dwp.cz4();
+		f[c++] = dwp.getVal();// f[c++]=dwp.csa(s_dist,dist);
+
+		// 158
+		// lemmas
+
+		dwwp.v0 = n++;
+		dwwp.v2 = pL;
+		dwwp.v3 = sL;
+		dwwp.cz4();
+		f[c++] = dwwp.getVal();
+		dwwp.v0 = n++;
+		dwwp.v2 = cL;
+		dwwp.cz4();
+		f[c++] = dwwp.getVal(); // f[c++]=dwwp.csa(s_dist,dist);
+		dwp.v0 = n++;
+		dwp.v2 = sL;
+		dwp.v3 = pP;
+		dwp.cz4();
+		f[c++] = dwp.getVal();// f[c++]=dwp.csa(s_dist,dist);
+		dwp.v0 = n++;
+		dwp.v3 = dP;
+		dwp.cz4();
+		f[c++] = dwp.getVal(); // f[c++]=dwp.csa(s_dist,dist);
+
+		// 162
+		dwp.v0 = n++;
+		dwp.v2 = pL;
+		dwp.v3 = sP;
+		dwp.cz4();
+		f[c++] = dwp.getVal(); // f[c++]=dwp.csa(s_dist,dist);
+		dwp.v0 = n++;
+		dwp.v2 = cL;
+		dwp.cz4();
+		f[c++] = dwp.getVal();// f[c++]=dwp.csa(s_dist,dist);
+
+		// clusters
+		if (cluster.size() > 10) {
+
+		}
+
+		int pPm1 = p != 0 ? pos[p - 1] : s_str;
+		int chldPm1 = d - 1 >= 0 ? pos[d - 1] : s_str;
+		int prntPp1 = p != pos.length - 1 ? pos[p + 1] : s_end;
+		int chldPp1 = d != pos.length - 1 ? pos[d + 1] : s_end;
+
+		// sibling part of speech minus and plus 1
+		int sPm1 = x > 0 ? pos[x - 1] : s_str;
+		int sPp1 = x < pos.length - 1 ? pos[x + 1] : s_end;
+
+		if (x + 1 == x || x + 1 == p || x + 1 == d)
+			sPp1 = -1;
+		if (p + 1 == x || p + 1 == p || p + 1 == d)
+			prntPp1 = -1;
+		if (d + 1 == x || d + 1 == p || d + 1 == d)
+			chldPp1 = -1;
+
+		if (x - 1 == x || x - 1 == p || x - 1 == d)
+			sPm1 = -1;
+		if (d - 1 == x || d - 1 == p || d - 1 == d)
+			chldPm1 = -1;
+		if (p - 1 == x || p - 1 == p || p - 1 == d)
+			pPm1 = -1;
+
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sPp1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[c++] = dl1.getVal();
+		// 165
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sPm1;
+		dl1.v4 = pP;
+		dl1.v5 = (x - 1 == p ? 3 : x - 1 == d ? 4 : 5);
+		dl1.cz6();
+		f[c++] = dl1.getVal(); // dl1.getVal();// f.add(li.l2i(l));
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = pP;
+		dl1.v4 = prntPp1;
+		dl1.v5 = (x == p + 1 ? 3 : 4);
+		dl1.cz6();
+		f[c++] = dl1.getVal();// f.add(li.l2i(l));
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = pP;
+		dl1.v4 = pPm1;
+		dl1.v5 = (x == p - 1 ? 3 : 4);
+		dl1.cz6();
+		f[c++] = dl1.getVal();// f.add(li.l2i(l));
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sPp1;
+		dl1.v4 = pPm1;
+		dl1.v5 = pP;
+		dl1.v6 = (x == p - 1 ? 3 : x == p + 1 ? 4 : 5);
+		dl1.cz7();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sPm1;
+		dl1.v3 = sP;
+		dl1.v4 = pPm1;
+		dl1.v5 = pP;
+		dl1.v6 = (x == p - 1 ? 3 : x - 1 == p ? 4 : 5);
+		dl1.cz7();
+		f[c++] = dl1.getVal();// f.add(li.l2i(l));
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sPp1;
+		dl1.v4 = pP;
+		dl1.v5 = prntPp1;
+		dl1.v6 = (x + 1 == p ? 3 : x == p + 1 ? 4 : 5);
+		dl1.cz7();
+		f[c++] = dl1.getVal();// f.add(li.l2i(l));
+		dl1.v0 = n++;
+		dl1.v2 = sPm1;
+		dl1.v3 = sP;
+		dl1.v4 = pP;
+		dl1.v5 = prntPp1;
+		dl1.v6 = (x == p - 1 ? 3 : x == p + 1 ? 4 : 5);
+		dl1.cz7();
+		f[c++] = dl1.getVal();// f.add(li.l2i(l));
+
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sPp1;
+		dl1.v4 = dP;
+		dl1.v5 = (x + 1 == d ? 3 : x + 1 == p ? 4 : 5);
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sPm1;
+		dl1.v4 = dP;
+		dl1.v5 = (x - 1 == d ? 3 : x - 1 == p ? 4 : 5);
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = dP;
+		dl1.v4 = chldPp1;
+		dl1.v5 = (x == d + 1 ? 3 : d + 1 == p ? 4 : 5);
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = dP;
+		dl1.v4 = chldPm1;
+		dl1.v5 = (x == d - 1 ? 3 : d - 1 == p ? 4 : 5);
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sPp1;
+		dl1.v4 = chldPm1;
+		dl1.v5 = dP;
+		dl1.v6 = (x == d - 1 ? 3 : x + 1 == d ? 4 : 5);
+		dl1.cz7();
+		f[c++] = dl1.getVal();// f.add(li.l2i(l));
+		dl1.v0 = n++;
+		dl1.v2 = sPm1;
+		dl1.v3 = sP;
+		dl1.v4 = chldPm1;
+		dl1.v5 = dP;
+		dl1.v6 = (x - 1 == d ? 3 : d - 1 == x ? 4 : 5);
+		dl1.cz7();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sPp1;
+		dl1.v4 = dP;
+		dl1.v5 = chldPp1;
+		dl1.v6 = (x == d + 1 ? 3 : x + 1 == d ? 4 : 5);
+		dl1.cz7();
+		f[c++] = dl1.getVal();// f.add(li.l2i(l));
+		dl1.v0 = n++;
+		dl1.v2 = sPm1;
+		dl1.v3 = sP;
+		dl1.v4 = dP;
+		dl1.v5 = chldPp1;
+		dl1.v6 = (x - 1 == d ? 3 : d + 1 == x ? 4 : 5);
+		dl1.cz7();
+		f[c++] = dl1.getVal();
+
+		// c=61;
+		/*
+		 * if (cluster.size()>10) { AtomicInteger N = new AtomicInteger(n); c =
+		 * addClusterFeatures(d, p, x, pos, forms, cluster, N, c, f,label); n =
+		 * N.get(); }
+		 */
+		// take those in for stacking
+
+		if (s_stack) {
+			short[] prel = is.plabels[i], phead = is.pheads[i];
+
+			int g = p == phead[d] ? 1 : 2;
+			if (x >= 0)
+				g += p == phead[x] ? 4 : 8;
+
+			int gr = x == -1 ? s_relend : prel[x];
+
+			dl2.v1 = label;
+			dl2.v0 = n++;
+			dl2.v2 = prel[d];
+			dl2.v3 = g;
+			dl2.v4 = sP;
+			dl2.v5 = dP;
+			dl2.cz6();
+			f[c++] = dl2.getVal();
+			dl2.v0 = n++;
+			dl2.v2 = prel[d];
+			dl2.v3 = g;
+			dl2.v4 = sP;
+			dl2.v5 = pP;
+			dl2.cz6();
+			f[c++] = dl2.getVal();
+			dl2.v0 = n++;
+			dl2.v2 = prel[d];
+			dl2.v3 = g;
+			dl2.v4 = sP;
+			dl2.v5 = pP;
+			dl2.v6 = dP;
+			dl2.cz7();
+			f[c++] = dl2.getVal();
+
+			dl2.v0 = n++;
+			dl2.v2 = gr;
+			dl2.v3 = g;
+			dl2.v4 = sP;
+			dl2.v5 = dP;
+			dl2.cz6();
+			f[c++] = dl2.getVal();
+			dl2.v0 = n++;
+			dl2.v2 = gr;
+			dl2.v3 = g;
+			dl2.v4 = sP;
+			dl2.v5 = pP;
+			dl2.cz6();
+			f[c++] = dl2.getVal();
+			dl2.v0 = n++;
+			dl2.v2 = gr;
+			dl2.v3 = g;
+			dl2.v4 = sP;
+			dl2.v5 = pP;
+			dl2.v6 = dP;
+			dl2.cz7();
+			f[c++] = dl2.getVal();
+		}
+
+		short[][] feats = is.feats[i];
+
+		if (feats == null)
+			return c;
+
+		short[] featsP = feats[d];
+		short[] featsSbl = x != -1 ? feats[x] : null;
+		dlf.v1 = label;
+		dlf.v0 = n++;
+		dlf.v2 = sP;
+		dlf.v3 = dP;
+		c = extractFeat(f, c, featsP, featsSbl);
+
+		featsP = feats[p];
+
+		dlf.v0 = n++;
+		dlf.v1 = label;
+		dlf.v2 = sP;
+		dlf.v3 = pP;
+		c = extractFeat(f, c, featsP, featsSbl);
+
+		return c;
+	}
+
+	/**
+	 * Separated this method to speed up parsing
+	 * 
+	 * @param d
+	 * @param p
+	 * @param x
+	 * @param pos
+	 * @param forms
+	 * @param cluster
+	 * @param N
+	 * @param c
+	 * @param f
+	 * @return
+	 */
+	int addClusterFeatures(Instances is, int i, int d, int p, int x, Cluster cluster, int c, long[] f, int label) {
+
+		// int n= N.get();
+
+		short[] pos = is.pposs[i];
+		int[] forms = is.forms[i];
+
+		int n = 190;
+		int pP = pos[p], dP = pos[d];
+		int sP = x != -1 ? pos[x] : s_str;
+
+		int pLSp1 = p != pos.length - 1 ? forms[p + 1] == -1 ? -1 : cluster.getLP(forms[p + 1]) : _cend;
+		int cLSp1 = d != pos.length - 1 ? forms[d + 1] == -1 ? -1 : cluster.getLP(forms[d + 1]) : _cend;
+		int sLSp1 = x < pos.length - 1 ? forms[x + 1] == -1 ? -1 : cluster.getLP(forms[x + 1]) : _cend;
+
+		int pLSm1 = p != 0 ? forms[p - 1] == -1 ? -1 : cluster.getLP(forms[p - 1]) : _cstr;
+		int cLSm1 = d - 1 >= 0 ? forms[d - 1] == -1 ? -1 : cluster.getLP(forms[d - 1]) : _cstr;
+		int sLSm1 = x > 0 ? forms[x - 1] == -1 ? -1 : cluster.getLP(forms[x - 1]) : _cstr;
+
+		// int c=61;
+		int pF = forms[p], dF = forms[d], sF = x != -1 ? forms[x] : s_stwrd;
+		int prntLS = pF == -1 ? -1 : cluster.getLP(pF), chldLS = dF == -1 ? -1 : cluster.getLP(dF);
+
+		int sblLS = (x != -1) && (sF != -1) ? cluster.getLP(sF) : s_stwrd;
+
+		d2lp.v1 = label;
+		d2lp.v0 = n++;
+		d2lp.v2 = prntLS;
+		d2lp.v3 = sblLS;
+		d2lp.cz4();
+		f[c++] = d2lp.getVal();
+		d2lp.v0 = n++;
+		d2lp.v2 = chldLS;
+		d2lp.v3 = sblLS;
+		d2lp.cz4();
+		f[c++] = d2lp.getVal();// f[c++]=d2lp.csa(s_dist,dist);
+
+		d3lp.v1 = label;
+		d3lp.v0 = n++;
+		d3lp.v2 = prntLS;
+		d3lp.v3 = chldLS;
+		d3lp.v4 = sblLS;
+		d3lp.cz5();
+		f[c++] = d3lp.getVal();
+
+		d2lp.v0 = n++;
+		d2lp.v2 = prntLS;
+		d2lp.v3 = chldLS;
+		d2lp.v4 = sF;
+		d2lp.cz5();
+		f[c++] = d2lp.getVal(); // f[c++]=d2lp.csa(s_dist,dist);
+		d2lp.v0 = n++;
+		d2lp.v2 = prntLS;
+		d2lp.v3 = sblLS;
+		d2lp.v4 = dF;
+		d2lp.cz5();
+		f[c++] = d2lp.getVal(); // f[c++]=d2lp.csa(s_dist,dist);
+		d2lp.v0 = n++;
+		d2lp.v2 = chldLS;
+		d2lp.v3 = sblLS;
+		d2lp.v4 = pF;
+		d2lp.cz5();
+		f[c++] = d2lp.getVal(); // f[c++]=d2lp.csa(s_dist,dist);
+
+		d2pp.v1 = label;
+		d2pp.v0 = n++;
+		d2pp.v2 = prntLS;
+		d2pp.v3 = chldLS;
+		d2pp.v4 = sP;
+		d2pp.cz5();
+		f[c++] = d2pp.getVal(); // f[c++]=d2pp.csa(s_dist,dist);
+		d2pp.v0 = n++;
+		d2pp.v2 = prntLS;
+		d2pp.v3 = sblLS;
+		d2pp.v4 = dP;
+		d2pp.cz5();
+		f[c++] = d2pp.getVal(); // f[c++]=d2pp.csa(s_dist,dist);
+		d2pp.v0 = n++;
+		d2pp.v2 = chldLS;
+		d2pp.v3 = sblLS;
+		d2pp.v4 = pP;
+		d2pp.cz5();
+		f[c++] = d2pp.getVal(); // f[c++]=d2pp.csa(s_dist,dist);
+
+		if (x + 1 == x || x + 1 == p || x + 1 == d)
+			sLSp1 = -1;
+		if (p + 1 == x || p + 1 == p || p + 1 == d)
+			pLSp1 = -1;
+		if (d + 1 == x || d + 1 == p || d + 1 == d)
+			cLSp1 = -1;
+
+		if (x - 1 == x || x - 1 == p || x - 1 == d)
+			sLSm1 = -1;
+		if (d - 1 == x || d - 1 == p || d - 1 == d)
+			cLSm1 = -1;
+		if (p - 1 == x || p - 1 == p || p - 1 == d)
+			pLSm1 = -1;
+
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSm1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = pP;
+		dl1.v4 = pLSp1;
+		dl1.cz5();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = pP;
+		dl1.v4 = pLSm1;
+		dl1.cz5();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = pLSm1;
+		dl1.v5 = pP;
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sLSm1;
+		dl1.v3 = sP;
+		dl1.v4 = pLSm1;
+		dl1.v5 = pP;
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = pP;
+		dl1.v5 = pLSp1;
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sLSm1;
+		dl1.v3 = sP;
+		dl1.v4 = pP;
+		dl1.v5 = pLSp1;
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = dP;
+		dl1.cz5();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSm1;
+		dl1.v4 = dP;
+		dl1.cz5();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = dP;
+		dl1.v4 = cLSp1;
+		dl1.cz5();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = dP;
+		dl1.v4 = cLSm1;
+		dl1.cz5();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSm1;
+		dl1.v4 = cLSm1;
+		dl1.v5 = dP;
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sLSm1;
+		dl1.v3 = sP;
+		dl1.v4 = cLSm1;
+		dl1.v5 = dP;
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = dP;
+		dl1.v5 = cLSp1;
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sLSm1;
+		dl1.v3 = sP;
+		dl1.v4 = dP;
+		dl1.v5 = cLSp1;
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSm1;
+		dl1.v4 = pP;
+		dl1.cz5();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = pP;
+		dl1.v4 = pLSp1;
+		dl1.cz5();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = pP;
+		dl1.v4 = pLSm1;
+		dl1.cz5();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = pLSm1;
+		dl1.v5 = pP;
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sLSm1;
+		dl1.v3 = sP;
+		dl1.v4 = pLSm1;
+		dl1.v5 = pP;
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = pP;
+		dl1.v5 = pLSp1;
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sLSm1;
+		dl1.v3 = sP;
+		dl1.v4 = pP;
+		dl1.v5 = pLSp1;
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = dP;
+		dl1.cz5();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSm1;
+		dl1.v4 = dP;
+		dl1.cz5();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = dP;
+		dl1.v4 = cLSp1;
+		dl1.cz5();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = dP;
+		dl1.v4 = cLSm1;
+		dl1.cz5();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSm1;
+		dl1.v4 = cLSm1;
+		dl1.v5 = dP;
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sLSm1;
+		dl1.v3 = sP;
+		dl1.v4 = cLSm1;
+		dl1.v5 = dP;
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sP;
+		dl1.v3 = sLSp1;
+		dl1.v4 = dP;
+		dl1.v5 = cLSp1;
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+		dl1.v0 = n++;
+		dl1.v2 = sLSm1;
+		dl1.v3 = sP;
+		dl1.v4 = dP;
+		dl1.v5 = cLSp1;
+		dl1.cz6();
+		f[c++] = dl1.getVal();
+
+		return c;
+	}
+
+	private int extractFeat(long[] f, int cnt, short[] featsP, short[] featsD) {
+		if (featsP != null && featsD != null) {
+			for (short i1 = 0; i1 < featsP.length; i1++) {
+				for (short i2 = 0; i2 < featsD.length; i2++) {
+					dlf.v4 = featsP[i1];
+					dlf.v5 = featsD[i2];
+					dlf.cz6();
+					f[cnt++] = dlf.getVal();
+				}
+			}
+		} else if (featsP == null && featsD != null) {
+
+			for (short i2 = 0; i2 < featsD.length; i2++) {
+				dlf.v4 = nofeat;
+				dlf.v5 = featsD[i2];
+				dlf.cz6();
+				f[cnt++] = dlf.getVal();
+
+			}
+		} else if (featsP != null && featsD == null) {
+
+			for (short i1 = 0; i1 < featsP.length; i1++) {
+				dlf.v4 = featsP[i1];
+				dlf.v5 = nofeat;
+				dlf.cz6();
+				f[cnt++] = dlf.getVal();
+
+			}
+		}
+		return cnt;
+	}
+
+	public FV encodeCat(Instances is, int ic, short pposs[], int forms[], int[] lemmas, short[] heads, short[] types,
+			short feats[][], Cluster cluster, FV f) {
+
+		long[] svs = new long[250];
+
+		for (int i = 1; i < heads.length; i++) {
+
+			basic(pposs, heads[i], i, f);
+
+			int w1 = heads[i] < i ? heads[i] : i;
+			int w2 = heads[i] < i ? i : heads[i];
+
+			int dir = heads[i] < i ? 0 : s_rel1;
+			int label = types[i] + dir;
+
+			int c = firstm(is, ic, w1, w2, label, cluster, svs);
+			for (int k = 0; k < c; k++)
+				dl1.map(f, svs[k]);
+
+			int ch, cmi, cmo;
+			if (heads[i] < i) {
+				ch = rightmostRight(heads, heads[i], i);
+				cmi = leftmostLeft(heads, i, heads[i]);
+				cmo = rightmostRight(heads, i, heads.length);
+
+			} else {
+				ch = leftmostLeft(heads, heads[i], i);
+				cmi = rightmostRight(heads, i, heads[i]);
+				cmo = leftmostLeft(heads, i, 0);
+			}
+
+			int lx = types[i] + s_rel1 * ((heads[i] < i ? 0 : 1) + 8);
+			c = second(is, ic, w1, w2, ch, lx, cluster, svs);
+			for (int k = 0; k < c; k++)
+				dl1.map(f, svs[k]);
+			c = addClusterFeatures(is, ic, w1, w2, ch, cluster, c, svs, lx);
+			for (int k = 0; k < c; k++)
+				dl1.map(f, svs[k]);
+
+			lx = types[i] + s_rel1 * ((heads[i] < i ? 0 : 1) + ((cmi < i) ? 0 : 2));
+			c = second(is, ic, w1, w2, cmi, lx, cluster, svs);
+			for (int k = 0; k < c; k++)
+				dl1.map(f, svs[k]);
+
+			c = addClusterFeatures(is, ic, w1, w2, cmi, cluster, c, svs, lx);
+			for (int k = 0; k < c; k++)
+				dl1.map(f, svs[k]);
+
+			lx = types[i] + s_rel1 * ((heads[i] < i ? 0 : 1) + ((cmo < i) ? 0 : 2));
+			c = second(is, ic, w1, w2, cmo, lx, cluster, svs);
+			for (int k = 0; k < c; k++)
+				dl1.map(f, svs[k]);
+
+			c = addClusterFeatures(is, ic, w1, w2, cmo, cluster, c, svs, lx);
+			for (int k = 0; k < c; k++)
+				dl1.map(f, svs[k]);
+		}
+
+		return f;
+	}
+
+	public void compare(Instances is, int ic, short pos[], short[] heads, short[] types, Cluster cluster, F2SF f,
+			DataFES x) {
+
+		long[] svs = new long[250];
+
+		for (int i = 1; i < heads.length; i++) {
+
+			f.clear();
+			basic(pos, heads[i], i, f);
+
+			if (x.pl[heads[i]][i] != f.getScore()) {
+				DB.println("basic diff " + x.pl[heads[i]][i] + " fg " + f.getScore());
+			}
+
+			int w1 = heads[i] < i ? heads[i] : i;
+			int w2 = heads[i] < i ? i : heads[i];
+
+			int dir = heads[i] < i ? 0 : s_rel1;
+			int label = types[i] + dir;
+			f.clear();
+			int c = firstm(is, ic, w1, w2, label, cluster, svs);
+			for (int k = 0; k < c; k++)
+				dl1.map(f, svs[k]);
+
+			if (x.lab[heads[i]][i][types[i]] != f.getScore()) {
+				DB.println("first diff " + x.lab[heads[i]][i][types[i]] + " fg " + f.getScore());
+			}
+
+			short[] labels = Edges.get(pos[heads[i]], pos[i]);
+			int lid = -1;
+			for (int k = 0; k < labels.length; k++)
+				if (types[i] == labels[k]) {
+					lid = k;
+					break;
+				}
+
+			int ch, cmi, cmo;
+			if (heads[i] < i) {
+				ch = rightmostRight(heads, heads[i], i);
+				cmi = leftmostLeft(heads, i, heads[i]);
+				cmo = rightmostRight(heads, i, heads.length);
+
+			} else {
+				ch = leftmostLeft(heads, heads[i], i);
+				cmi = rightmostRight(heads, i, heads[i]);
+				cmo = leftmostLeft(heads, i, 0);
+			}
+
+			f.clear();
+
+			int lx = types[i] + s_rel1 * ((heads[i] < i ? 0 : 1) + 8);
+			c = second(is, ic, w1, w2, ch, lx, cluster, svs);
+			for (int k = 0; k < c; k++)
+				dl1.map(f, svs[k]);
+
+			if (x.sib[heads[i]][i][ch == -1 ? heads[i] : ch][lid] != f.getScore()) {
+				DB.println("sib diff " + x.sib[heads[i]][i][ch == -1 ? i : ch][lid] + " fg " + f.getScore());
+			}
+
+			f.clear();
+
+			lx = types[i] + s_rel1 * ((heads[i] < i ? 0 : 1) + ((cmi < i) ? 0 : 2));
+			c = second(is, ic, w1, w2, cmi, lx, cluster, svs);
+			for (int k = 0; k < c; k++)
+				dl1.map(f, svs[k]);
+
+			if (x.gra[heads[i]][i][cmi == -1 ? i : cmi][lid] != f.getScore()) {
+				DB.println("gcm diff " + x.gra[heads[i]][i][cmi == -1 ? i : cmi][lid] + " fg " + f.getScore() + " cmi "
+						+ cmi + " i " + i + " head " + heads[i] + " w1 " + w1 + " w2 " + w2 + " label " + lx + " "
+						+ ((heads[i] < i ? 0 : 1) + ((cmi < i) ? 0 : 2)));
+
+				System.out.println("w1 " + w1 + " w2 " + w2 + " cmi " + cmi + " label " + label + " ");
+
+				for (long k : svs)
+					System.out.print(k + " ");
+				System.out.println();
+
+			}
+			f.clear();
+			lx = types[i] + s_rel1 * ((heads[i] < i ? 0 : 1) + ((cmo < i) ? 0 : 2));
+			c = second(is, ic, w1, w2, cmo, lx, cluster, svs);
+			for (int k = 0; k < c; k++)
+				dl1.map(f, svs[k]);
+
+			if (x.gra[heads[i]][i][cmo == -1 ? i : cmo][lid] != f.getScore()) {
+				DB.println("gcm diff " + x.gra[heads[i]][i][cmo == -1 ? i : cmo][lid] + " fg " + f.getScore() + " cmo "
+						+ cmo + " i " + i + " head " + heads[i] + " w1 " + w1 + " w2 " + w2 + " label " + lx + " "
+						+ ((heads[i] < i ? 0 : 1) + ((cmi < i) ? 0 : 2)));
+
+				System.out.println("w1 " + w1 + " w2 " + w2 + " cmi " + cmi + " label " + label + " ");
+
+				for (long k : svs)
+					System.out.print(k + " ");
+				System.out.println();
+
+			}
+		}
+
+	}
+
+	public short[] searchLabel(Instances is, int ic, short pposs[], int forms[], int[] lemmas, short[] heads,
+			short[] types, short feats[][], Cluster cluster, IFV f) {
+
+		long[] svs = new long[250];
+
+		short[] newLabels = new short[types.length];
+
+		for (int i = 1; i < heads.length; i++) {
+
+			// int n =basic(pposs, forms, heads[i], i, cluster, f);
+
+			int ch, cmi, cmo;
+			if (heads[i] < i) {
+				ch = rightmostRight(heads, heads[i], i);
+				cmi = leftmostLeft(heads, i, heads[i]);
+				cmo = rightmostRight(heads, i, heads.length);
+
+			} else {
+				ch = leftmostLeft(heads, heads[i], i);
+				cmi = rightmostRight(heads, i, heads[i]);
+				cmo = leftmostLeft(heads, i, 0);
+			}
+
+			short labels[] = Edges.get(pposs[is.heads[ic][i]], pposs[i]);
+
+			float best = -1000;
+			short bestL = 0;
+			for (short label : labels) {
+
+				f.clear();
+				firstm(is, ic, heads[i], i, label, cluster, svs);
+				for (long sv : svs)
+					dl1.map(f, sv);
+
+				second(is, ic, heads[i], i, ch, label, cluster, svs);
+				for (long sv : svs)
+					dl1.map(f, sv);
+
+				second(is, ic, heads[i], i, cmi, label, cluster, svs);
+				for (long sv : svs)
+					dl1.map(f, sv);
+
+				second(is, ic, heads[i], i, cmo, label, cluster, svs);
+				for (long sv : svs)
+					dl1.map(f, sv);
+
+				if (best < f.getScore()) {
+					best = (float) f.getScore();
+					bestL = label;
+					newLabels[i] = bestL;
+				}
+
+			}
+		}
+		return newLabels;
+
+		// return f;
+	}
+
+	public static float encode3(short[] pos, short heads[], short[] types, DataFES d2) {
+
+		float v = 0F;
+		for (int i = 1; i < heads.length; i++) {
+
+			// int dir= (heads[i] < i)? 0:1;
+
+			v += d2.pl[heads[i]][i];
+			v += d2.lab[heads[i]][i][types[i]];
+
+			// boolean left = i<heads[i];
+			short[] labels = Edges.get(pos[heads[i]], pos[i]);
+			int lid = -1;
+			for (int k = 0; k < labels.length; k++)
+				if (types[i] == labels[k]) {
+					lid = k;
+					break;
+				}
+
+			int ch, cmi, cmo;
+			if (heads[i] < i) {
+				ch = rightmostRight(heads, heads[i], i);
+				cmi = leftmostLeft(heads, i, heads[i]);
+				cmo = rightmostRight(heads, i, heads.length);
+
+				if (ch == -1)
+					ch = heads[i];
+				if (cmi == -1)
+					cmi = heads[i];
+				if (cmo == -1)
+					cmo = heads[i];
+
+			} else {
+				ch = leftmostLeft(heads, heads[i], i);
+				cmi = rightmostRight(heads, i, heads[i]);
+				cmo = leftmostLeft(heads, i, 0);
+
+				if (ch == -1)
+					ch = i;
+				if (cmi == -1)
+					cmi = i;
+				if (cmo == -1)
+					cmo = i;
+			}
+			v += d2.sib[heads[i]][i][ch][lid];
+			v += d2.gra[heads[i]][i][cmi][lid];
+			v += d2.gra[heads[i]][i][cmo][lid];
+		}
+		return v;
+	}
+
+	public static float encode3(short[] pos, short heads[], short[] types, DataFES d2, float[] scores) {
+
+		float v = 0F;
+		for (int i = 1; i < heads.length; i++) {
+
+			scores[i] = d2.pl[heads[i]][i];
+			scores[i] += d2.lab[heads[i]][i][types[i]];
+
+			short[] labels = Edges.get(pos[heads[i]], pos[i]);
+			int lid = -1;
+			for (int k = 0; k < labels.length; k++)
+				if (types[i] == labels[k]) {
+					lid = k;
+					break;
+				}
+
+			int ch, cmi, cmo;
+			if (heads[i] < i) {
+				ch = rightmostRight(heads, heads[i], i);
+				cmi = leftmostLeft(heads, i, heads[i]);
+				cmo = rightmostRight(heads, i, heads.length);
+
+				if (ch == -1)
+					ch = heads[i];
+				if (cmi == -1)
+					cmi = heads[i];
+				if (cmo == -1)
+					cmo = heads[i];
+
+			} else {
+				ch = leftmostLeft(heads, heads[i], i);
+				cmi = rightmostRight(heads, i, heads[i]);
+				cmo = leftmostLeft(heads, i, 0);
+
+				if (ch == -1)
+					ch = i;
+				if (cmi == -1)
+					cmi = i;
+				if (cmo == -1)
+					cmo = i;
+			}
+			scores[i] += d2.sib[heads[i]][i][ch][lid];
+			scores[i] += d2.gra[heads[i]][i][cmi][lid];
+			scores[i] += d2.gra[heads[i]][i][cmo][lid];
+		}
+		return v;
+	}
+
+	public static int rightmostRight(short[] heads, int head, int max) {
+		int rightmost = -1;
+		for (int i = head + 1; i < max; i++)
+			if (heads[i] == head)
+				rightmost = i;
+
+		return rightmost;
+	}
+
+	public static int leftmostLeft(short[] heads, int head, int min) {
+		int leftmost = -1;
+		for (int i = head - 1; i > min; i--)
+			if (heads[i] == head)
+				leftmost = i;
+		return leftmost;
+	}
+
+	public static final String REL = "REL", END = "END", STR = "STR", LA = "LA", RA = "RA";
+
+	private static int ra, la;
+	private static int s_str;
+	private static int s_end, _cend, _cstr, s_stwrd, s_relend;
+
+	protected static final String TYPE = "TYPE", DIR = "D";
+	public static final String POS = "POS";
+	protected static final String DIST = "DIST", MID = "MID";
+
+	private static final String _0 = "0", _4 = "4", _3 = "3", _2 = "2", _1 = "1", _5 = "5", _10 = "10";
+
+	private static final String WORD = "WORD", STWRD = "STWRD", STPOS = "STPOS";
+
+	private static int nofeat;
+
+	public static int maxForm;
+
+	/**
+	 * Initialize the features.
+	 * 
+	 * @param maxFeatures
+	 */
+	static public void initFeatures() {
+
+		MFO mf = new MFO();
+		mf.register(POS, MID);
+		s_str = mf.register(POS, STR);
+		s_end = mf.register(POS, END);
+
+		s_relend = mf.register(REL, END);
+
+		_cstr = mf.register(Cluster.SPATH, STR);
+		_cend = mf.register(Cluster.SPATH, END);
+
+		mf.register(TYPE, POS);
+
+		s_stwrd = mf.register(WORD, STWRD);
+		mf.register(POS, STPOS);
+
+		la = mf.register(DIR, LA);
+		ra = mf.register(DIR, RA);
+
+		// mf.register(TYPE, CHAR);
+
+		mf.register(TYPE, PipeGen.FEAT);
+		nofeat = mf.register(PipeGen.FEAT, "NOFEAT");
+
+		for (int k = 0; k < 150; k++)
+			mf.register(TYPE, "F" + k);
+
+		mf.register(DIST, _0);
+		mf.register(DIST, _1);
+		mf.register(DIST, _2);
+		mf.register(DIST, _3);
+		mf.register(DIST, _4);
+		mf.register(DIST, _5);
+		mf.register(DIST, _10);
+
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parser/MFO.java b/dependencyParser/experimental/mate-tools/src/is2/parser/MFO.java
new file mode 100755
index 0000000..5a2de73
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parser/MFO.java
@@ -0,0 +1,267 @@
+package is2.parser;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map.Entry;
+import is2.data.IEncoderPlus;
+import is2.util.DB;
+
+/**
+ * Map Features, do not map long to integer
+ *
+ * @author Bernd Bohnet, 20.09.2009
+ */
+
+final public class MFO implements IEncoderPlus {
+
+	/** The features and its values */
+	static private final HashMap<String, HashMap<String, Integer>> m_featureSets = new HashMap<String, HashMap<String, Integer>>();
+
+	/** The feature class and the number of values */
+	static private final HashMap<String, Integer> m_featureCounters = new HashMap<String, Integer>();
+
+	/** The number of bits needed to encode a feature */
+	static final HashMap<String, Integer> m_featureBits = new HashMap<String, Integer>();
+
+	/** Integer counter for long2int */
+	static private int count = 0;
+
+	/** Stop growing */
+	public boolean stop = false;
+
+	final public static String NONE = "<None>";
+
+	public MFO() {
+	}
+
+	public int size() {
+		return count;
+	}
+
+	/**
+	 * Register an attribute class, if it not exists and add a possible value
+	 * 
+	 * @param type
+	 * @param type2
+	 */
+	@Override
+	final public int register(String a, String v) {
+
+		HashMap<String, Integer> fs = getFeatureSet().get(a);
+		if (fs == null) {
+			fs = new HashMap<String, Integer>();
+			getFeatureSet().put(a, fs);
+			fs.put(NONE, 0);
+			getFeatureCounter().put(a, 1);
+		}
+		Integer c = getFeatureCounter().get(a);
+
+		Integer i = fs.get(v);
+		if (i == null) {
+			fs.put(v, c);
+			c++;
+			getFeatureCounter().put(a, c);
+			return c - 1;
+		} else
+			return i;
+	}
+
+	/**
+	 * Calculates the number of bits needed to encode a feature
+	 */
+	public void calculateBits() {
+
+		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
+			int bits = (int) Math.ceil((Math.log(e.getValue() + 1) / Math.log(2)));
+			m_featureBits.put(e.getKey(), bits);
+		}
+
+		// System.out.println("total number of needed bits "+total);
+	}
+
+	@Override
+	public String toString() {
+
+		StringBuffer content = new StringBuffer();
+		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
+			content.append(e.getKey() + " " + e.getValue());
+			content.append(':');
+			// HashMap<String,Integer> vs = getFeatureSet().get(e.getKey());
+			content.append(getFeatureBits(e.getKey()));
+
+			/*
+			 * if (vs.size()<120) for(Entry<String,Integer> e2 : vs.entrySet())
+			 * { content.append(e2.getKey()+" ("+e2.getValue()+") "); }
+			 */
+			content.append('\n');
+
+		}
+		return content.toString();
+	}
+
+	static final public short getFeatureBits(String a) {
+		if (m_featureBits.get(a) == null)
+			return 0;
+		return (short) m_featureBits.get(a).intValue();
+	}
+
+	/**
+	 * Get the integer place holder of the string value v of the type a
+	 *
+	 * @param t
+	 *            the type
+	 * @param v
+	 *            the value
+	 * @return the integer place holder of v
+	 */
+	@Override
+	final public int getValue(String t, String v) {
+
+		if (m_featureSets.get(t) == null)
+			return -1;
+		Integer vi = m_featureSets.get(t).get(v);
+		if (vi == null)
+			return -1; // stop &&
+		return vi.intValue();
+	}
+
+	/**
+	 * Static version of getValue
+	 * 
+	 * @see getValue
+	 */
+	static final public int getValueS(String a, String v) {
+
+		if (m_featureSets.get(a) == null)
+			return -1;
+		Integer vi = m_featureSets.get(a).get(v);
+		if (vi == null)
+			return -1; // stop &&
+		return vi.intValue();
+	}
+
+	public int hasValue(String a, String v) {
+
+		Integer vi = m_featureSets.get(a).get(v);
+		if (vi == null)
+			return -1;
+		return vi.intValue();
+	}
+
+	public static String printBits(int k) {
+		StringBuffer s = new StringBuffer();
+		for (int i = 0; i < 31; i++) {
+			s.append((k & 0x00000001) == 1 ? '1' : '0');
+			k = k >> 1;
+
+		}
+		s.reverse();
+		return s.toString();
+	}
+
+	/**
+	 * Maps a long to a integer value. This is very useful to save memory for
+	 * sparse data long values
+	 * 
+	 * @param l
+	 * @return the integer
+	 */
+	static public int misses = 0;
+	static public int good = 0;
+
+	/**
+	 * Write the data
+	 * 
+	 * @param dos
+	 * @throws IOException
+	 */
+	static public void writeData(DataOutputStream dos) throws IOException {
+		dos.writeInt(getFeatureSet().size());
+		// DB.println("write"+getFeatureSet().size());
+		for (Entry<String, HashMap<String, Integer>> e : getFeatureSet().entrySet()) {
+			dos.writeUTF(e.getKey());
+			dos.writeInt(e.getValue().size());
+
+			for (Entry<String, Integer> e2 : e.getValue().entrySet()) {
+
+				if (e2.getKey() == null)
+					DB.println("key " + e2.getKey() + " value " + e2.getValue() + " e -key " + e.getKey());
+				dos.writeUTF(e2.getKey());
+				dos.writeInt(e2.getValue());
+
+			}
+
+		}
+	}
+
+	public void read(DataInputStream din) throws IOException {
+
+		int size = din.readInt();
+		for (int i = 0; i < size; i++) {
+			String k = din.readUTF();
+			int size2 = din.readInt();
+
+			HashMap<String, Integer> h = new HashMap<String, Integer>();
+			getFeatureSet().put(k, h);
+			for (int j = 0; j < size2; j++) {
+				h.put(din.readUTF(), din.readInt());
+			}
+			getFeatureCounter().put(k, size2);
+		}
+
+		count = size;
+		// stop();
+		calculateBits();
+	}
+
+	/**
+	 * Clear the data
+	 */
+	static public void clearData() {
+		getFeatureSet().clear();
+		m_featureBits.clear();
+		getFeatureSet().clear();
+	}
+
+	@Override
+	public HashMap<String, Integer> getFeatureCounter() {
+		return m_featureCounters;
+	}
+
+	static public HashMap<String, HashMap<String, Integer>> getFeatureSet() {
+		return m_featureSets;
+	}
+
+	static public String[] reverse(HashMap<String, Integer> v) {
+		String[] set = new String[v.size()];
+		for (Entry<String, Integer> e : v.entrySet()) {
+			set[e.getValue()] = e.getKey();
+		}
+		return set;
+	}
+
+	private static <K, V> String mapToString(HashMap<K, V> m) {
+		int counter = 0;
+		StringBuilder s = new StringBuilder();
+		for(K k: m.keySet()) {
+			s.append(", " + k + ": " + m.get(k));
+			++counter;
+			if(counter == Parser.maxPrint) break;
+		}
+		if(s.length() < 3) return "{}";
+		else if(counter == Parser.maxPrint) return "{" + s.substring(2) + ",...} (exceeds maximum print length)";
+		else return "{" + s.substring(2) + "}";
+	}
+	
+	@Override
+	public void print() {
+		for(String s: m_featureSets.keySet())
+			System.out.println("m_featureSets[" + s + "] = " + mapToString(m_featureSets.get(s)));
+		System.out.println("m_featureCounters = " + mapToString(m_featureCounters));
+		System.out.println("m_featureBits = " + mapToString(m_featureBits));
+		System.out.println("count = " + count);
+		System.out.println("stop = " + stop);
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parser/Open.java b/dependencyParser/experimental/mate-tools/src/is2/parser/Open.java
new file mode 100755
index 0000000..2f68e07
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parser/Open.java
@@ -0,0 +1,40 @@
+package is2.parser;
+
+import is2.data.Parse;
+
+final public class Open {
+
+	public float p;
+	short s, e, label;
+	byte dir;
+
+	Closed left;
+	Closed right;
+
+	public Open(short s, short t, short dir, short label, Closed left, Closed right, float p) {
+		this.s = s;
+		this.e = t;
+		this.label = label;
+		this.dir = (byte) dir;
+		this.left = left;
+		this.right = right;
+		this.p = p;
+	}
+
+	void create(Parse parse) {
+		if (dir == 0) {
+			parse.heads[s] = e;
+			if (label != -1)
+				parse.labels[s] = label;
+		} else {
+			parse.heads[e] = s;
+			if (label != -1)
+				parse.labels[e] = label;
+		}
+		if (left != null)
+			left.create(parse);
+		if (right != null)
+			right.create(parse);
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parser/Options.java b/dependencyParser/experimental/mate-tools/src/is2/parser/Options.java
new file mode 100755
index 0000000..bd550ec
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parser/Options.java
@@ -0,0 +1,70 @@
+package is2.parser;
+
+import is2.util.OptionsSuper;
+
+public final class Options extends OptionsSuper {
+
+	public Options(String[] args) {
+
+		for (int i = 0; i < args.length; i++) {
+
+			if (args[i].equals("--help"))
+				explain();
+
+			if (args[i].equals("-decode")) {
+				decodeProjective = args[i + 1].equals("proj");
+				i++;
+			} else if (args[i].equals("-decodeTH")) {
+				decodeTH = Double.parseDouble(args[i + 1]);
+				i++;
+			} else if (args[i].equals("-nonormalize")) {
+				normalize = false;
+			} else if (args[i].equals("-features")) {
+				features = args[i + 1];
+				i++;
+			} else if (args[i].equals("-hsize")) {
+				hsize = Integer.parseInt(args[i + 1]);
+				i++;
+			} else if (args[i].equals("-len")) {
+				maxLen = Integer.parseInt(args[i + 1]);
+				i++;
+			} else if (args[i].equals("-cores")) {
+				cores = Integer.parseInt(args[i + 1]);
+				i++;
+			} else if (args[i].equals("-no2nd")) {
+				no2nd = true;
+			} else if (args[i].equals("-few2nd")) {
+				few2nd = true;
+			} else
+				super.addOption(args, i);
+
+		}
+
+	}
+
+	private void explain() {
+		System.out.println("Usage: ");
+		System.out.println("java -class mate.jar is2.parser.Parser [Options]");
+		System.out.println();
+		System.out.println("Example: ");
+		System.out.println(
+				" java -class mate.jar is2.parser.Parser -model eps3.model -train corpora/conll08st/train/train.closed -test corpora/conll08st/devel/devel.closed  -out b3.test -eval corpora/conll08st/devel/devel.closed  -count 2000 -i 6");
+		System.out.println("");
+		System.out.println("Options:");
+		System.out.println("");
+		System.out.println(" -train  <file>    the corpus a model is trained on; default " + this.trainfile);
+		System.out.println(" -test   <file>    the input corpus for testing; default " + this.testfile);
+		System.out.println(" -out    <file>    the output corpus (result) of a test run; default " + this.outfile);
+		System.out.println(" -model  <file>    the parsing model for traing the model is stored in the files");
+		System.out.println(
+				"                   and for parsing the model is load from this file; default " + this.modelName);
+		System.out.println(
+				" -i      <number>  the number of training iterations; good numbers are 10 for smaller corpora and 6 for bigger; default "
+						+ this.numIters);
+		System.out.println(" -count  <number>  the n first sentences of the corpus are take for the training default "
+				+ this.count);
+		System.out.println(" -format <number>  conll format of the year 8 or 9; default " + this.formatTask);
+
+		System.exit(0);
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parser/ParallelDecoder.java b/dependencyParser/experimental/mate-tools/src/is2/parser/ParallelDecoder.java
new file mode 100755
index 0000000..ca508fd
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parser/ParallelDecoder.java
@@ -0,0 +1,194 @@
+package is2.parser;
+
+import java.util.ArrayList;
+import java.util.concurrent.Callable;
+
+import is2.data.DataFES;
+
+/**
+ * @author Bernd Bohnet, 30.08.2009
+ *
+ *         This class implements a parallel feature extractor.
+ */
+final public class ParallelDecoder implements Callable<Object> {
+	// some constants
+	private static final float INIT_BEST = (-1.0F / 0.0F);
+	private static final boolean[] DIR = { false, true };
+
+	// the data space of the weights for a dependency tree
+	final private DataFES x;
+
+	private short[] pos;
+
+	private Open O[][][][];
+	private Closed C[][][][];
+
+	private int length;
+
+	boolean done = false;
+	public boolean waiting = false;
+
+	/**
+	 * Initialize the parallel decoder.
+	 *
+	 * @param pos
+	 *            part-of-speech
+	 * @param d
+	 *            data
+	 * @param edges
+	 *            part-of-speech edge mapping
+	 * @param o
+	 *            open spans
+	 * @param c
+	 *            closed spans
+	 * @param length
+	 *            number of words
+	 */
+	public ParallelDecoder(short[] pos, DataFES d, Open o[][][][], Closed c[][][][], int length) {
+
+		this.pos = pos;
+		this.x = d;
+
+		this.O = o;
+		this.C = c;
+		this.length = length;
+	}
+
+	private static class DSet {
+		short w1, w2;
+	}
+
+	@Override
+	public Object call() {
+
+		try {
+
+			while (true) {
+
+				DSet set = get();
+				// if (done && set==null) break;
+
+				if (set == null)
+					return null;
+
+				short s = set.w1, t = set.w2;
+
+				for (short dir = 0; dir < 2; dir++) {
+
+					short[] labs = (dir == 1) ? Edges.get(pos[s], pos[t]) : Edges.get(pos[t], pos[s]);
+
+					O[s][t][dir] = new Open[labs.length];
+
+					for (int l = 0; l < labs.length; l++) {
+
+						double tRP = INIT_BEST;
+
+						Closed tL = null, tR = null;
+
+						for (int r = s; r < t; r++) {
+
+							if (s == 0 && r != 0)
+								continue;
+
+							double tLPr = INIT_BEST, tRPr = INIT_BEST;
+							Closed tLCld = null, tRCld = null;
+
+							if (r == s)
+								tLPr = dir == 1 ? x.sib[s][t][s][l] : x.gra[t][s][s][l];
+							else
+								for (int i = s + 1; i <= r; i++)
+									if (((dir == 1 ? x.sib[s][t][i][l] : x.gra[t][s][i][l]) + C[s][r][1][i].p) > tLPr) {
+										tLPr = ((dir == 1 ? x.sib[s][t][i][l] : x.gra[t][s][i][l]) + C[s][r][1][i].p);
+										tLCld = C[s][r][1][i];
+									}
+
+							if (r == t - 1)
+								tRPr = dir == 1 ? x.gra[s][t][s][l] : x.sib[t][s][s][l];
+							else
+								for (int i = r + 1; i < t; i++)
+									if (((dir == 1 ? x.gra[s][t][i][l] : x.sib[t][s][i][l])
+											+ C[r + 1][t][0][i].p) > tRPr) {
+										tRPr = ((dir == 1 ? x.gra[s][t][i][l] : x.sib[t][s][i][l])
+												+ C[r + 1][t][0][i].p);
+										tRCld = C[r + 1][t][0][i];
+									}
+
+							if (tLPr + tRPr > tRP) {
+								tRP = tLPr + tRPr;
+								tL = tLCld;
+								tR = tRCld;
+							}
+						}
+						O[s][t][dir][l] = new Open(s, t, dir, labs[l], tL, tR,
+								(float) (tRP + ((dir == 1) ? x.pl[s][t] : x.pl[t][s])
+										+ ((dir == 1) ? x.lab[s][t][labs[l]] : x.lab[t][s][labs[l]])));
+					}
+				}
+				C[s][t][1] = new Closed[length];
+				C[s][t][0] = new Closed[length];
+
+				for (int m = s; m <= t; m++) {
+					for (boolean d : DIR) {
+						if ((d && m != s) || !d && (m != t && s != 0)) {
+
+							// create closed structure
+
+							double top = INIT_BEST;
+
+							Open tU = null;
+							Closed tL = null;
+							int numLabels = O[(d ? s : m)][(d ? m : t)][d ? 1 : 0].length;
+
+							// for (int l = numLabels-1; l >=0; l--) {
+							for (int l = 0; l < numLabels; l++) {
+
+								Open hi = O[(d ? s : m)][(d ? m : t)][d ? 1 : 0][l];
+								for (int amb = m + (d ? 1 : -1); amb != (d ? t : s)
+										+ (d ? 1 : -1); amb += (d ? 1 : -1)) {
+
+									if ((hi.p + C[d ? m : s][d ? t : m][d ? 1 : 0][amb].p
+											+ x.gra[d ? s : t][m][amb][l]) > top) {
+										top = (hi.p + C[d ? m : s][d ? t : m][d ? 1 : 0][amb].p
+												+ x.gra[d ? s : t][m][amb][l]);
+										tU = hi;
+										tL = C[d ? m : s][d ? t : m][d ? 1 : 0][amb];
+									}
+
+								}
+
+								if ((m == (d ? t : s)) && (hi.p + x.gra[d ? s : t][d ? t : s][m][l]) > top) {
+									top = (hi.p + x.gra[d ? s : t][d ? t : s][m][l]);
+									tU = hi;
+									tL = null;
+								}
+							}
+							C[s][t][d ? 1 : 0][m] = new Closed(s, t, m, d ? 1 : 0, tU, tL, (float) top);
+
+						}
+					}
+				}
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+			System.exit(0);
+		}
+		return null;
+	}
+
+	public static ArrayList<DSet> sets = new ArrayList<DSet>();
+
+	static synchronized private DSet get() {
+		synchronized (sets) {
+			if (sets.size() == 0)
+				return null;
+			return sets.remove(sets.size() - 1);
+		}
+	}
+
+	public static void add(short w1, short w2) {
+		DSet ds = new DSet();
+		ds.w1 = w1;
+		ds.w2 = w2;
+		sets.add(ds);
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parser/ParallelExtract.java b/dependencyParser/experimental/mate-tools/src/is2/parser/ParallelExtract.java
new file mode 100755
index 0000000..ca85711
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parser/ParallelExtract.java
@@ -0,0 +1,248 @@
+package is2.parser;
+
+import java.util.ArrayList;
+import java.util.concurrent.Callable;
+
+import is2.data.Cluster;
+import is2.data.DataFES;
+import is2.data.F2SF;
+import is2.data.Instances;
+import is2.data.Long2IntInterface;
+
+/**
+ * @author Bernd Bohnet, 30.08.2009
+ *
+ *         This class implements a parallel feature extractor.
+ */
+final public class ParallelExtract implements Callable<Object> {
+	// the data space of the weights for a dependency tree
+	final DataFES d;
+
+	// the data extractor does the actual work
+	final Extractor extractor;
+
+	private Instances is;
+	private int i;
+
+	private F2SF para;
+
+	private Cluster cluster;
+
+	public ParallelExtract(Extractor e, Instances is, int i, DataFES d, F2SF para, Cluster cluster) {
+
+		this.is = is;
+		extractor = e;
+		this.d = d;
+		this.i = i;
+		this.para = para;
+		this.cluster = cluster;
+	}
+
+	public static class DSet {
+		int w1, w2;
+	}
+
+	@Override
+	public Object call() {
+
+		try {
+
+			F2SF f = para;
+
+			short[] pos = is.pposs[i];
+			int length = pos.length;
+
+			long[] gvs = new long[50];
+			long[] svs = new long[220];
+
+			while (true) {
+
+				DSet set = get();
+				if (set == null)
+					break;
+
+				int w1 = set.w1;
+				int w2 = set.w2;
+
+				f.clear();
+				extractor.basic(pos, w1, w2, f);
+				d.pl[w1][w2] = f.getScoreF();
+
+				f.clear();
+
+				extractor.basic(pos, w2, w1, f);
+				d.pl[w2][w1] = f.getScoreF();
+
+				short[] labels = Edges.get(pos[w1], pos[w2]);
+				float[] lab = d.lab[w1][w2];
+
+				final Long2IntInterface li = extractor.li;
+
+				int c = extractor.firstm(is, i, w1, w2, 0, cluster, svs);
+
+				for (int l = 0; l < lab.length; l++)
+					lab[l] = -100;
+
+				for (short label2 : labels) {
+					short label = label2;
+
+					f.clear();
+					int lv = extractor.d0.computeLabeValue(label, Extractor.s_type);
+					for (int k = 0; k < c; k++)
+						if (svs[k] > 0)
+							f.add(li.l2i(svs[k] + lv));
+
+					lab[label] = f.getScoreF();
+				}
+
+				labels = Edges.get(pos[w2], pos[w1]);
+				lab = d.lab[w2][w1];
+
+				for (int l = 0; l < lab.length; l++)
+					lab[l] = -100;
+
+				for (short label2 : labels) {
+					int label = label2;
+
+					f.clear();
+					int lv = extractor.d0.computeLabeValue(label + Extractor.s_rel1, Extractor.s_type);
+					for (int k = 0; k < c; k++)
+						if (svs[k] > 0)
+							f.add(li.l2i(svs[k] + lv));
+
+					lab[label] = f.getScoreF();
+				}
+
+				int s = w1 < w2 ? w1 : w2;
+				int e = w1 < w2 ? w2 : w1;
+
+				for (int m = 0; m < length; m++) {
+
+					int g = (m == s || e == m) ? -1 : m;
+
+					int cn = extractor.second(is, i, w1, w2, g, 0, cluster, svs);
+					int cc = extractor.addClusterFeatures(is, i, w1, w2, g, cluster, 0, gvs, 0);
+					// for(int k=0;k<c;k++) dl1.map(f,svs[k]);
+
+					if (m >= w1) {
+						labels = Edges.get(pos[w1], pos[w2]);
+						float[] lab2 = new float[labels.length];
+						for (int l = 0; l < labels.length; l++) {
+
+							short label = labels[l];
+
+							int lx = label + Extractor.s_rel1 * (g < w2 ? 0 : 2);
+
+							f.clear();
+							int lv = extractor.d0.computeLabeValue(lx, Extractor.s_type);
+							for (int k = 0; k < cn; k++)
+								if (svs[k] > 0)
+									f.add(li.l2i(svs[k] + lv));
+							for (int k = 0; k < cc; k++)
+								if (gvs[k] > 0)
+									f.add(li.l2i(gvs[k] + lv));
+
+							lab2[l] = f.getScoreF();
+						}
+						d.gra[w1][w2][m] = lab2;
+					}
+
+					if (m <= w2) {
+						labels = Edges.get(pos[w2], pos[w1]);
+						float lab2[];
+						d.gra[w2][w1][m] = lab2 = new float[labels.length];
+						for (int l = 0; l < labels.length; l++) {
+
+							int label = labels[l];
+							int lx = label + Extractor.s_rel1 * (1 + (g < w1 ? 0 : 2));
+
+							f.clear();
+							int lv = extractor.d0.computeLabeValue(lx, Extractor.s_type);
+							for (int k = 0; k < cn; k++)
+								if (svs[k] > 0)
+									f.add(li.l2i(svs[k] + lv));
+							for (int k = 0; k < cc; k++)
+								if (gvs[k] > 0)
+									f.add(li.l2i(gvs[k] + lv));
+
+							lab2[l] = f.getScoreF();
+
+						}
+					}
+
+					g = (m == s || e == m) ? -1 : m;
+
+					// int cn = extractor.second(is,i,w1,w2,g,0, cluster,
+					// svs,Extractor._SIB);
+					if (m >= w1 && m <= w2) {
+						labels = Edges.get(pos[w1], pos[w2]);
+						float lab2[] = new float[labels.length];
+						d.sib[w1][w2][m] = lab2;
+
+						for (int l = 0; l < labels.length; l++) {
+
+							short label = labels[l];
+
+							int lx = label + Extractor.s_rel1 * (8);
+							f.clear();
+							int lv = extractor.d0.computeLabeValue(lx, Extractor.s_type);
+							for (int k = 0; k < cn; k++)
+								if (svs[k] > 0)
+									f.add(li.l2i(svs[k] + lv));
+							for (int k = 0; k < cc; k++)
+								if (gvs[k] > 0)
+									f.add(li.l2i(gvs[k] + lv));
+
+							lab2[l] = f.score;// f.getScoreF();
+						}
+					}
+					if (m >= w1 && m <= w2) {
+						labels = Edges.get(pos[w2], pos[w1]);
+						float[] lab2 = new float[labels.length];
+						d.sib[w2][w1][m] = lab2;
+						for (int l = 0; l < labels.length; l++) {
+
+							int label = labels[l];
+
+							int lx = label + Extractor.s_rel1 * (9);
+
+							f.clear();
+							int lv = extractor.d0.computeLabeValue(lx, Extractor.s_type);
+							for (int k = 0; k < cn; k++)
+								if (svs[k] > 0)
+									f.add(li.l2i(svs[k] + lv));
+							for (int k = 0; k < cc; k++)
+								if (gvs[k] > 0)
+									f.add(li.l2i(gvs[k] + lv));
+
+							lab2[l] = f.score;// f.getScoreF();
+						}
+					}
+				}
+			}
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+	static ArrayList<DSet> sets = new ArrayList<DSet>();
+
+	private DSet get() {
+
+		synchronized (sets) {
+			if (sets.size() == 0)
+				return null;
+			return sets.remove(sets.size() - 1);
+		}
+	}
+
+	static public void add(int w1, int w2) {
+		DSet ds = new DSet();
+		ds.w1 = w1;
+		ds.w2 = w2;
+		sets.add(ds);
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parser/ParallelRearrange.java b/dependencyParser/experimental/mate-tools/src/is2/parser/ParallelRearrange.java
new file mode 100755
index 0000000..83dcdaa
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parser/ParallelRearrange.java
@@ -0,0 +1,146 @@
+package is2.parser;
+
+import java.util.ArrayList;
+import java.util.concurrent.Callable;
+
+import is2.data.DataFES;
+
+/**
+ * @author Dr. Bernd Bohnet, 30.08.2009
+ *
+ *         This class implements a parallel edge rearrangement for
+ *         non-projective parsing; The linear method was first suggest by Rayn
+ *         McDonald et. al. 2005.
+ */
+final public class ParallelRearrange implements Callable<Object> {
+
+	// new parent child combination to explore
+	final static class PA {
+		final float p;
+		final short ch, pa;
+		public float max;
+		public short wh;
+		public short nPar;
+		public short nType;
+
+		public PA(float p2, short ch2, short pa2) {
+			p = p2;
+			ch = ch2;
+			pa = pa2;
+		}
+	}
+
+	// list of parent child combinations
+	static ArrayList<PA> parents = new ArrayList<PA>();
+	static ArrayList<PA> order = new ArrayList<PA>();
+	// best new parent child combination, found so far
+	public float max;
+
+	// some data from the dependency tree
+	// private EdgesC edges;
+	private short[] pos;
+	private DataFES x;
+	private boolean[][] isChild;
+	public short[] heads, types;
+
+	// child, new parent, new label
+	public short wh, nPar, nType;
+
+	/**
+	 * Initialize the parallel rearrange thread
+	 *
+	 * @param isChild2
+	 *            is a child
+	 * @param edgesC
+	 *            the part-of-speech edge mapping
+	 * @param pos
+	 *            the part-of-speech
+	 * @param x
+	 *            the data
+	 * @param s
+	 *            the heads
+	 * @param ts
+	 *            the types
+	 */
+	public ParallelRearrange(boolean[][] isChild2, short[] pos, DataFES x, short[] s, short[] ts) {
+
+		heads = new short[s.length];
+		System.arraycopy(s, 0, heads, 0, s.length);
+
+		types = new short[ts.length];
+		System.arraycopy(ts, 0, types, 0, ts.length);
+
+		isChild = isChild2;
+		// edges = edgesC;
+		this.pos = pos;
+		this.x = x;
+	}
+
+	@Override
+	public Object call() {
+
+		// check the list of new possible parents and children for a better
+		// combination
+		while (true) {
+			PA px = getPA();
+			if (px == null)
+				break;
+
+			float max = 0;
+			short pa = px.pa, ch = px.ch;
+
+			if (ch == pa || pa == heads[ch] || isChild[ch][pa])
+				continue;
+
+			short oldP = heads[ch], oldT = types[ch];
+
+			heads[ch] = pa;
+
+			short[] labels = Edges.get(pos[pa], pos[ch]);
+
+			for (short label : labels) {
+
+				types[ch] = label;
+
+				float p_new = Extractor.encode3(pos, heads, types, x);
+
+				if (max < p_new - px.p) {
+					max = p_new - px.p;
+					wh = ch;
+					nPar = pa;
+					nType = label;
+					px.max = max;
+					px.wh = ch;
+					px.nPar = pa;
+					px.nType = label;
+				}
+			}
+			heads[ch] = oldP;
+			types[ch] = oldT;
+		}
+		return null;
+	}
+
+	/**
+	 * Add a child-parent combination which are latter explored for
+	 * rearrangement
+	 *
+	 * @param p2
+	 * @param ch2
+	 * @param pa
+	 */
+	static public void add(float p2, short ch2, short pa) {
+		PA px = new PA(p2, ch2, pa);
+		parents.add(px);
+		order.add(px);
+	}
+
+	static private PA getPA() {
+		synchronized (parents) {
+			if (parents.size() == 0)
+				return null;
+			return parents.remove(parents.size() - 1);
+		}
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parser/Parameters.java b/dependencyParser/experimental/mate-tools/src/is2/parser/Parameters.java
new file mode 100755
index 0000000..baba7b6
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parser/Parameters.java
@@ -0,0 +1,37 @@
+/**
+ *
+ */
+package is2.parser;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import is2.data.FV;
+import is2.data.IFV;
+import is2.data.Instances;
+import is2.data.Parse;
+
+/**
+ * @author Bernd Bohnet, 31.08.2009
+ *
+ *
+ */
+public abstract class Parameters {
+
+	public abstract void average(double avVal);
+
+	public abstract void update(FV act, FV pred, Instances isd, int instc, Parse d, double upd, double e);
+
+	public abstract void write(DataOutputStream dos) throws IOException;
+
+	public abstract void read(DataInputStream dis) throws IOException;
+
+	public abstract int size();
+
+	/**
+	 * @return
+	 */
+	public abstract IFV getFV();
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parser/ParametersFloat.java b/dependencyParser/experimental/mate-tools/src/is2/parser/ParametersFloat.java
new file mode 100755
index 0000000..faf795d
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parser/ParametersFloat.java
@@ -0,0 +1,138 @@
+package is2.parser;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import is2.data.F2SF;
+import is2.data.FV;
+import is2.data.Instances;
+import is2.data.Parse;
+import is2.util.DB;
+
+final public class ParametersFloat extends Parameters {
+
+	public float[] parameters;
+	public float[] total;
+
+	public ParametersFloat(int size) {
+		parameters = new float[size];
+		total = new float[size];
+		for (int i = 0; i < parameters.length; i++) {
+			parameters[i] = 0F;
+			total[i] = 0F;
+		}
+	}
+
+	/**
+	 * @param parameters2
+	 */
+	public ParametersFloat(float[] p) {
+		parameters = p;
+	}
+
+	@Override
+	public void average(double avVal) {
+		for (int j = 0; j < total.length; j++) {
+			parameters[j] = total[j] / ((float) avVal);
+		}
+		total = null;
+	}
+
+	public ParametersFloat average2(double avVal) {
+		float[] px = new float[this.parameters.length];
+		for (int j = 0; j < total.length; j++) {
+			px[j] = total[j] / ((float) avVal);
+		}
+		ParametersFloat pf = new ParametersFloat(px);
+		return pf;
+	}
+
+	@Override
+	public void update(FV act, FV pred, Instances isd, int instc, Parse d, double upd, double e) {
+
+		e++;
+
+		float lam_dist = getScore(act) - getScore(pred);
+
+		float b = (float) e - lam_dist;
+
+		FV dist = act.getDistVector(pred);
+
+		dist.update(parameters, total, hildreth(dist, b), upd, false);
+	}
+
+	protected double hildreth(FV a, double b) {
+
+		double A = a.dotProduct(a);
+		if (A <= 0.0000000000000000001)
+			return 0.0;
+		return b / A;
+	}
+
+	public float getScore(FV fv) {
+		if (fv == null)
+			return 0.0F;
+		return fv.getScore(parameters, false);
+
+	}
+
+	@Override
+	final public void write(DataOutputStream dos) throws IOException {
+
+		dos.writeInt(parameters.length);
+		for (float d : parameters)
+			dos.writeFloat(d);
+
+	}
+
+	@Override
+	public void read(DataInputStream dis) throws IOException {
+
+		parameters = new float[dis.readInt()];
+		int notZero = 0;
+		for (int i = 0; i < parameters.length; i++) {
+			parameters[i] = dis.readFloat();
+			if (parameters[i] != 0.0F)
+				notZero++;
+		}
+
+		DB.println("read parameters " + parameters.length + " not zero " + notZero);
+
+	}
+
+	public int countNZ() {
+
+		int notZero = 0;
+		for (float parameter : parameters) {
+			if (parameter != 0.0F)
+				notZero++;
+		}
+		return notZero;
+
+		// DB.println("read parameters "+parameters.length+" not zero
+		// "+notZero);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.sp09k99995.Parameters#getFV()
+	 */
+	@Override
+	public F2SF getFV() {
+		return new F2SF(parameters);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.sp09k99999.Parameters#size()
+	 */
+	@Override
+	public int size() {
+		return parameters.length;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parser/Parser.java b/dependencyParser/experimental/mate-tools/src/is2/parser/Parser.java
new file mode 100755
index 0000000..b361d69
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parser/Parser.java
@@ -0,0 +1,789 @@
+package is2.parser;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Map.Entry;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+import java.util.zip.ZipOutputStream;
+
+import is2.data.Cluster;
+import is2.data.DataFES;
+import is2.data.F2SF;
+import is2.data.FV;
+import is2.data.Instances;
+import is2.data.Long2Int;
+import is2.data.Long2IntInterface;
+import is2.data.Parse;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.io.CONLLWriter09;
+import is2.tools.Retrainable;
+import is2.tools.Tool;
+import is2.util.DB;
+import is2.util.OptionsSuper;
+import is2.util.ParserEvaluator;
+
+public class Parser implements Tool, Retrainable {
+
+	// output evaluation info
+	private static final boolean MAX_INFO = true;
+
+	public static int THREADS = 4;
+	public static int maxPrint = 1024;
+
+	public Long2IntInterface l2i;
+	public ParametersFloat params;
+	public Pipe pipe;
+	public OptionsSuper options;
+
+	// keep some of the parsing information for later evaluation
+	public Instances is;
+	DataFES d2;
+	public Parse d = null;
+
+	/**
+	 * Initialize the parser
+	 * 
+	 * @param options
+	 */
+	public Parser(OptionsSuper options) {
+
+		this.options = options;
+		pipe = new Pipe(options);
+
+		params = new ParametersFloat(0);
+
+		// load the model
+		try {
+			readModel(options, pipe, params);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+	}
+
+	/**
+	 * @param modelFileName
+	 *            The file name of the parsing model
+	 */
+	public Parser(String modelFileName) {
+		this(new Options(new String[] { "-model", modelFileName }));
+	}
+
+	/**
+	 *
+	 */
+	public Parser() {
+		// TODO Auto-generated constructor stub
+	}
+
+	public static void main(String[] args) throws Exception {
+		long start = System.currentTimeMillis();
+		OptionsSuper options = new Options(args);
+
+		Runtime runtime = Runtime.getRuntime();
+		THREADS = runtime.availableProcessors();
+		if (options.cores < THREADS && options.cores > 0)
+			THREADS = options.cores;
+		DB.println("Found " + runtime.availableProcessors() + " cores use " + THREADS);
+
+		if (options.train) {
+
+			Parser p = new Parser();
+			p.options = options;
+
+			p.l2i = new Long2Int(options.hsize);
+
+			p.pipe = new Pipe(options);
+			Instances is = new Instances();
+
+			Extractor.initFeatures();
+			p.pipe.extractor = new Extractor[THREADS];
+			DB.println("hsize " + options.hsize);
+
+			DB.println("Use " + (options.featureCreation == OptionsSuper.MULTIPLICATIVE ? "multiplication" : "shift")
+					+ "-based feature creation function");
+			for (int t = 0; t < THREADS; t++)
+				p.pipe.extractor[t] = new Extractor(p.l2i, options.stack, options.featureCreation);
+
+			DB.println("Stacking " + options.stack);
+
+			p.pipe.createInstances(options.trainfile, is);
+
+			p.params = new ParametersFloat(p.l2i.size());
+
+			p.train(options, p.pipe, p.params, is, p.pipe.cl);
+
+			p.writeModell(options, p.params, null, p.pipe.cl);
+
+		}
+
+		if (options.test) {
+			// Parser p = new Parser();
+			Parser p = new Parser(options);
+
+			// p. pipe = new Pipe(options);
+			// p. params = new ParametersFloat(0); // total should be zero and
+			// the parameters are later read
+
+			// load the model
+
+			// p.readModel(options, p.pipe, p.params);
+
+			DB.println("label only? " + options.label);
+
+			p.outAll(options, p.pipe, p.params, !MAX_INFO, options.label);
+		}
+
+		System.out.println();
+
+		if (options.eval) {
+			System.out.println("\nEVALUATION PERFORMANCE:");
+			ParserEvaluator.evaluate(options.goldfile, options.outfile);
+		}
+
+		long end = System.currentTimeMillis();
+		System.out.println("used time " + ((float) ((end - start) / 100) / 10));
+
+		Decoder.executerService.shutdown();
+		Pipe.executerService.shutdown();
+		System.out.println("end.");
+	}
+
+	/**
+	 * Read the models and mapping
+	 * 
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @throws IOException
+	 */
+	public void readModel(OptionsSuper options, Pipe pipe, Parameters params) throws IOException {
+
+		DB.println("Reading data started");
+
+		// prepare zipped reader
+		ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(options.modelName)));
+		zis.getNextEntry();
+		DataInputStream dis = new DataInputStream(new BufferedInputStream(zis));
+
+		pipe.mf.read(dis);
+
+		pipe.cl = new Cluster(dis);
+
+		params.read(dis);
+		this.l2i = new Long2Int(params.size());
+		DB.println("parsing -- li size " + l2i.size());
+
+		pipe.extractor = new Extractor[THREADS];
+
+		boolean stack = dis.readBoolean();
+
+		options.featureCreation = dis.readInt();
+
+		for (int t = 0; t < THREADS; t++)
+			pipe.extractor[t] = new Extractor(l2i, stack, options.featureCreation);
+		DB.println("Stacking " + stack);
+
+		Extractor.initFeatures();
+		Extractor.initStat(options.featureCreation);
+
+		for (int t = 0; t < THREADS; t++)
+			pipe.extractor[t].init();
+
+		Edges.read(dis);
+
+		options.decodeProjective = dis.readBoolean();
+
+		Extractor.maxForm = dis.readInt();
+
+		boolean foundInfo = false;
+		try {
+			String info = null;
+			int icnt = dis.readInt();
+			for (int i = 0; i < icnt; i++) {
+				info = dis.readUTF();
+				System.out.println(info);
+			}
+		} catch (Exception e) {
+			if (!foundInfo)
+				System.out.println("no info about training");
+		}
+
+		dis.close();
+
+		DB.println("Reading data finnished");
+
+		Decoder.NON_PROJECTIVITY_THRESHOLD = (float) options.decodeTH;
+
+		Extractor.initStat(options.featureCreation);
+
+	}
+
+	/**
+	 * Do the training
+	 * 
+	 * @param instanceLengths
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @param is
+	 * @param cluster
+	 * @throws IOException
+	 * @throws InterruptedException
+	 * @throws ClassNotFoundException
+	 */
+	public void train(OptionsSuper options, Pipe pipe, ParametersFloat params, Instances is, Cluster cluster)
+			throws IOException, InterruptedException, ClassNotFoundException {
+
+		DB.println("\nTraining Information ");
+		DB.println("-------------------- ");
+
+		Decoder.NON_PROJECTIVITY_THRESHOLD = (float) options.decodeTH;
+
+		if (options.decodeProjective)
+			System.out.println("Decoding: " + (options.decodeProjective ? "projective" : "non-projective"));
+		else
+			System.out.println("" + Decoder.getInfo());
+		int numInstances = is.size();
+
+		int maxLenInstances = 0;
+		for (int i = 0; i < numInstances; i++)
+			if (maxLenInstances < is.length(i))
+				maxLenInstances = is.length(i);
+
+		DataFES data = new DataFES(maxLenInstances, pipe.mf.getFeatureCounter().get(PipeGen.REL).shortValue());
+
+		int iter = 0;
+		int del = 0;
+		float error = 0;
+		float f1 = 0;
+
+		FV pred = new FV();
+		FV act = new FV();
+
+		double upd = (double) (numInstances * options.numIters) + 1;
+
+		for (; iter < options.numIters; iter++) {
+
+			System.out.print("Iteration " + iter + ": ");
+
+			long start = System.currentTimeMillis();
+
+			long last = System.currentTimeMillis();
+			error = 0;
+			f1 = 0;
+			for (int n = 0; n < numInstances; n++) {
+
+				upd--;
+
+				if (is.labels[n].length > options.maxLen)
+					continue;
+
+				String info = " td " + ((Decoder.timeDecotder) / 1000000F) + " tr "
+						+ ((Decoder.timeRearrange) / 1000000F) + " te " + ((Pipe.timeExtract) / 1000000F);
+
+				if ((n + 1) % 500 == 0)
+					del = PipeGen.outValueErr(n + 1, error, f1 / n, del, last, upd, info);
+
+				short pos[] = is.pposs[n];
+
+				data = pipe.fillVector(params.getFV(), is, n, data, cluster);
+
+				Parse d = Decoder.decode(pos, data, options.decodeProjective, Decoder.TRAINING);
+
+				double e = pipe.errors(is, n, d);
+
+				if (d.f1 > 0)
+					f1 += d.f1;
+
+				if (e <= 0)
+					continue;
+
+				pred.clear();
+				pipe.extractor[0].encodeCat(is, n, pos, is.forms[n], is.plemmas[n], d.heads, d.labels, is.feats[n],
+						pipe.cl, pred);
+
+				error += e;
+
+				params.getFV();
+
+				act.clear();
+				pipe.extractor[0].encodeCat(is, n, pos, is.forms[n], is.plemmas[n], is.heads[n], is.labels[n],
+						is.feats[n], pipe.cl, act);
+
+				params.update(act, pred, is, n, d, upd, e);
+			}
+
+			String info = " td " + ((Decoder.timeDecotder) / 1000000F) + " tr " + ((Decoder.timeRearrange) / 1000000F)
+					+ " te " + ((Pipe.timeExtract) / 1000000F) + " nz " + params.countNZ();
+			PipeGen.outValueErr(numInstances, error, f1 / numInstances, del, last, upd, info);
+			del = 0;
+			long end = System.currentTimeMillis();
+			System.out.println(" time:" + (end - start));
+
+			ParametersFloat pf = params.average2((iter + 1) * is.size());
+			try {
+
+				if (options.testfile != null && options.goldfile != null) {
+					out(options, pipe, pf, !MAX_INFO, false);
+					ParserEvaluator.evaluate(options.goldfile, options.outfile);
+					// writeModell(options, pf, ""+(iter+1),pipe.cl);
+				}
+
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+
+			if (error == 0) {
+				DB.println("stopped because learned all lessons");
+				break;
+			}
+
+			Decoder.timeDecotder = 0;
+			Decoder.timeRearrange = 0;
+			Pipe.timeExtract = 0;
+
+		}
+		if (options.average)
+			params.average(iter * is.size());
+	}
+
+	/**
+	 * Do the parsing job
+	 *
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @throws IOException
+	 */
+	private void out(OptionsSuper options, Pipe pipe, ParametersFloat params, boolean maxInfo, boolean labelOnly)
+			throws Exception {
+
+		long start = System.currentTimeMillis();
+
+		CONLLReader09 depReader = new CONLLReader09(options.testfile, options.formatTask);
+		CONLLWriter09 depWriter = new CONLLWriter09(options.outfile, options.formatTask);
+
+		int cnt = 0;
+		int del = 0;
+		long last = System.currentTimeMillis();
+
+		if (maxInfo)
+			System.out.println("\nParsing Information ");
+		if (maxInfo)
+			System.out.println("------------------- ");
+
+		if (maxInfo && !options.decodeProjective)
+			System.out.println("" + Decoder.getInfo());
+
+		System.out.print("Processing Sentence: ");
+
+		while (true) {
+
+			// Instances is = new Instances();
+			// is.init(1, new MFO(),options.formatTask);
+
+			// SentenceData09 instance = pipe.nextInstance(is, depReader);
+
+			SentenceData09 instance = depReader.getNext();
+			if (instance == null)
+				break;
+			cnt++;
+
+			SentenceData09 i09 = this.parse(instance, params, labelOnly, options);
+
+			depWriter.write(i09);
+			del = PipeGen.outValue(cnt, del, last);
+
+		}
+		// pipe.close();
+		depWriter.finishWriting();
+		long end = System.currentTimeMillis();
+		// DB.println("errors "+error);
+		if (maxInfo)
+			System.out.println("Used time " + (end - start));
+		if (maxInfo)
+			System.out.println("forms count " + Instances.m_count + " unkown " + Instances.m_unkown);
+
+	}
+
+	private void outAll(OptionsSuper options, Pipe pipe, ParametersFloat params, boolean maxInfo, boolean labelOnly)
+			throws Exception {
+
+		long start = System.currentTimeMillis();
+
+		CONLLReader09 depReader = new CONLLReader09(options.testfile, options.formatTask);
+		CONLLWriter09 depWriter = new CONLLWriter09(options.outfile, options.formatTask);
+
+		int cnt = 0;
+		int del = 0;
+		long last = System.currentTimeMillis();
+
+		if (maxInfo)
+			System.out.println("\nParsing Information ");
+		if (maxInfo)
+			System.out.println("------------------- ");
+
+		if (maxInfo && !options.decodeProjective)
+			System.out.println("" + Decoder.getInfo());
+
+		System.out.print("Processing Sentence: ");
+
+		while (true) {
+
+			// Instances is = new Instances();
+			// is.init(1, new MFO(),options.formatTask);
+
+			// SentenceData09 instance = pipe.nextInstance(is, depReader);
+
+			SentenceData09 instance = depReader.getNext();
+			if (instance == null)
+				break;
+			cnt++;
+
+			SentenceData09[] i09 = this.parseAll(instance, params, labelOnly, options);
+
+			for (SentenceData09 sd : i09)
+				depWriter.write(sd);
+			del = PipeGen.outValue(cnt, del, last);
+
+		}
+		// pipe.close();
+		depWriter.finishWriting();
+		long end = System.currentTimeMillis();
+		// DB.println("errors "+error);
+		if (maxInfo)
+			System.out.println("Used time " + (end - start));
+		if (maxInfo)
+			System.out.println("forms count " + Instances.m_count + " unkown " + Instances.m_unkown);
+
+	}
+
+	/**
+	 * Parse a single sentence
+	 *
+	 * @param instance
+	 * @param params
+	 * @param labelOnly
+	 * @param options
+	 * @return
+	 */
+	public SentenceData09 parse(SentenceData09 instance, ParametersFloat params, boolean labelOnly,
+			OptionsSuper options) {
+
+		String[] types = new String[pipe.mf.getFeatureCounter().get(PipeGen.REL)];
+		for (Entry<String, Integer> e : MFO.getFeatureSet().get(PipeGen.REL).entrySet())
+			types[e.getValue()] = e.getKey();
+
+		is = new Instances();
+		is.init(1, new MFO(), options.formatTask);
+		new CONLLReader09().insert(is, instance);
+
+		// use for the training ppos
+
+		SentenceData09 i09 = new SentenceData09(instance);
+		i09.createSemantic(instance);
+
+		if (labelOnly) {
+			F2SF f2s = params.getFV();
+
+			// repair pheads
+
+			is.pheads[0] = is.heads[0];
+
+			for (int l = 0; l < is.pheads[0].length; l++) {
+				if (is.pheads[0][l] < 0)
+					is.pheads[0][l] = 0;
+			}
+
+			short[] labels = pipe.extractor[0].searchLabel(is, 0, is.pposs[0], is.forms[0], is.plemmas[0], is.pheads[0],
+					is.plabels[0], is.feats[0], pipe.cl, f2s);
+
+			for (int j = 0; j < instance.forms.length - 1; j++) {
+				i09.plabels[j] = types[labels[j + 1]];
+				i09.pheads[j] = is.pheads[0][j + 1];
+			}
+			return i09;
+		}
+
+		if (options.maxLength > instance.length() && options.minLength <= instance.length()) {
+			try {
+				// System.out.println("prs "+instance.forms[0]);
+				// System.out.println("prs "+instance.toString());
+				d2 = pipe.fillVector(params.getFV(), is, 0, null, pipe.cl);// cnt-1
+				d = Decoder.decode(is.pposs[0], d2, options.decodeProjective, !Decoder.TRAINING); // cnt-1
+
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+
+			for (int j = 0; j < instance.forms.length - 1; j++) {
+				i09.plabels[j] = types[d.labels[j + 1]];
+				i09.pheads[j] = d.heads[j + 1];
+			}
+		}
+		return i09;
+
+	}
+
+	public SentenceData09[] parseAll(SentenceData09 instance, ParametersFloat params, boolean labelOnly,
+			OptionsSuper options) {
+
+		String[] types = new String[pipe.mf.getFeatureCounter().get(PipeGen.REL)];
+		for (Entry<String, Integer> e : MFO.getFeatureSet().get(PipeGen.REL).entrySet())
+			types[e.getValue()] = e.getKey();
+
+		is = new Instances();
+		is.init(1, new MFO(), options.formatTask);
+		new CONLLReader09().insert(is, instance);
+
+		// use for the training ppos
+
+		SentenceData09[] i09;// = new SentenceData09(instance);
+		// i09.createSemantic(instance);
+
+		if (labelOnly) {
+			F2SF f2s = params.getFV();
+
+			// repair pheads
+
+			is.pheads[0] = is.heads[0];
+
+			for (int l = 0; l < is.pheads[0].length; l++) {
+				if (is.pheads[0][l] < 0)
+					is.pheads[0][l] = 0;
+			}
+
+			short[] labels = pipe.extractor[0].searchLabel(is, 0, is.pposs[0], is.forms[0], is.plemmas[0], is.pheads[0],
+					is.plabels[0], is.feats[0], pipe.cl, f2s);
+
+			i09 = new SentenceData09[1];
+			i09[0] = new SentenceData09(instance);
+			i09[0].createSemantic(instance);
+
+			for (int j = 0; j < instance.forms.length - 1; j++) {
+				i09[0].plabels[j] = types[labels[j + 1]];
+				i09[0].pheads[j] = is.pheads[0][j + 1];
+			}
+			return i09;
+		}
+
+		if (options.maxLength > instance.length() && options.minLength <= instance.length()) {
+			Parse[] ds = null;
+
+			try {
+				// System.out.println("prs "+instance.forms[0]);
+				// System.out.println("prs "+instance.toString());
+				d2 = pipe.fillVector(params.getFV(), is, 0, null, pipe.cl);// cnt-1
+				ds = Decoder.decodeAll(is.pposs[0], d2, options.decodeProjective, !Decoder.TRAINING); // cnt-1
+
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+
+			i09 = new SentenceData09[ds.length];
+			for (int i = 0; i < ds.length; ++i) {
+				i09[i] = new SentenceData09(instance);
+				i09[i].createSemantic(instance);
+				for (int j = 0; j < instance.forms.length - 1; j++) {
+					i09[i].plabels[j] = types[ds[i].labels[j + 1]];
+					i09[i].pheads[j] = ds[i].heads[j + 1];
+				}
+			}
+
+			return i09;
+		} else {
+			i09 = new SentenceData09[1];
+			i09[0] = new SentenceData09(instance);
+			i09[0].createSemantic(instance);
+			return i09;
+		}
+
+	}
+
+	is2.io.CONLLReader09 reader = new is2.io.CONLLReader09(true);
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.tools.Tool#apply(is2.data.SentenceData09)
+	 */
+	@Override
+	public SentenceData09 apply(SentenceData09 snt09) {
+
+		SentenceData09 it = new SentenceData09();
+		it.createWithRoot(snt09);
+
+		SentenceData09 out = null;
+		try {
+
+			// for(int k=0;k<it.length();k++) {
+			// it.forms[k] = reader.normalize(it.forms[k]);
+			// it.plemmas[k] = reader.normalize(it.plemmas[k]);
+			// }
+
+			out = parse(it, this.params, false, options);
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		Decoder.executerService.shutdown();
+		Pipe.executerService.shutdown();
+
+		return out;
+	}
+
+	/**
+	 * Get the edge scores of the last parse.
+	 * 
+	 * @return the scores
+	 */
+	public float[] getInfo() {
+
+		float[] scores = new float[is.length(0)];
+		Extractor.encode3(is.pposs[0], d.heads, d.labels, d2, scores);
+
+		return scores;
+	}
+
+	/**
+	 * Write the parsing model
+	 *
+	 * @param options
+	 * @param params
+	 * @param extension
+	 * @throws FileNotFoundException
+	 * @throws IOException
+	 */
+	private void writeModell(OptionsSuper options, ParametersFloat params, String extension, Cluster cs)
+			throws FileNotFoundException, IOException {
+
+		String name = extension == null ? options.modelName : options.modelName + extension;
+		// System.out.println("Writting model: "+name);
+		ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(name)));
+		zos.putNextEntry(new ZipEntry("data"));
+		DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(zos));
+
+		MFO.writeData(dos);
+		cs.write(dos);
+
+		params.write(dos);
+
+		dos.writeBoolean(options.stack);
+		dos.writeInt(options.featureCreation);
+
+		Edges.write(dos);
+
+		dos.writeBoolean(options.decodeProjective);
+
+		dos.writeInt(Extractor.maxForm);
+
+		dos.writeInt(5); // Info count
+		dos.writeUTF("Used parser   " + Parser.class.toString());
+		dos.writeUTF("Creation date " + (new SimpleDateFormat("yyyy.MM.dd HH:mm:ss")).format(new Date()));
+		dos.writeUTF("Training data " + options.trainfile);
+		dos.writeUTF("Iterations    " + options.numIters + " Used sentences " + options.count);
+		dos.writeUTF("Cluster       " + options.clusterFile);
+
+		dos.flush();
+		dos.close();
+	}
+
+	@Override
+	public boolean retrain(SentenceData09 sentence, float upd, int iterations) {
+
+		params.total = params.parameters;
+
+		boolean done = false;
+
+		for (int k = 0; k < iterations; k++) {
+			try {
+				// create the data structure
+				DataFES data = new DataFES(sentence.length(),
+						pipe.mf.getFeatureCounter().get(PipeGen.REL).shortValue());
+
+				Instances is = new Instances();
+				is.m_encoder = pipe.mf;
+
+				is.init(1, pipe.mf, options.formatTask);
+				new CONLLReader09().insert(is, sentence);
+
+				// String list[] =
+				// ((MFO)is.m_encoder).reverse(((MFO)is.m_encoder).getFeatureSet().get(Pipe.POS));
+				// for(String s :list) {
+				// System.out.println(s+" ");
+				// }
+
+				// for(int i=0;i<is.length(0);i++) {
+
+				// System.out.printf("%d\t %d\t %d
+				// \n",i,is.forms[0][i],is.pposs[0][i] );
+				// System.out.printf("%s\t form:%s
+				// pos:%s\n",i,sentence.forms[i],sentence.ppos[i]);
+
+				// }
+
+				SentenceData09 i09 = new SentenceData09(sentence);
+				i09.createSemantic(sentence);
+
+				// create the weights
+				data = pipe.fillVector(params.getFV(), is, 0, data, pipe.cl);
+
+				short[] pos = is.pposs[0];
+
+				// parse the sentence
+				Parse d = Decoder.decode(pos, data, options.decodeProjective, Decoder.TRAINING);
+
+				// training successful?
+				double e = pipe.errors(is, 0, d);
+				// System.out.println("errors "+e);
+				if (e == 0) {
+
+					done = true;
+					break;
+				}
+
+				// update the weight vector
+				FV pred = new FV();
+				pipe.extractor[0].encodeCat(is, 0, pos, is.forms[0], is.plemmas[0], d.heads, d.labels, is.feats[0],
+						pipe.cl, pred);
+
+				params.getFV();
+
+				FV act = new FV();
+				pipe.extractor[0].encodeCat(is, 0, pos, is.forms[0], is.plemmas[0], is.heads[0], is.labels[0],
+						is.feats[0], pipe.cl, act);
+
+				params.update(act, pred, is, 0, d, upd, e);
+
+				if (upd > 0)
+					upd--;
+
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+		Decoder.executerService.shutdown();
+		Pipe.executerService.shutdown();
+
+		return done;
+	}
+
+	@Override
+	public boolean retrain(SentenceData09 sentence, float upd, int iterations, boolean print) {
+		// TODO Auto-generated method stub
+		return retrain(sentence, upd, iterations);
+	}
+}
\ No newline at end of file
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parser/Pipe.java b/dependencyParser/experimental/mate-tools/src/is2/parser/Pipe.java
new file mode 100755
index 0000000..f7f3782
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parser/Pipe.java
@@ -0,0 +1,224 @@
+package is2.parser;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.concurrent.ExecutorService;
+
+import is2.data.Cluster;
+import is2.data.DataFES;
+import is2.data.F2SF;
+import is2.data.Instances;
+import is2.data.Parse;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.util.OptionsSuper;
+
+final public class Pipe extends PipeGen {
+
+	public Extractor[] extractor;
+	final public MFO mf = new MFO();
+
+	public Cluster cl;
+
+	private OptionsSuper options;
+	public static long timeExtract;
+
+	public Pipe(OptionsSuper o) {
+		options = o;
+	}
+
+	public void createInstances(String file, Instances is) throws Exception {
+
+		CONLLReader09 depReader = new CONLLReader09(file);
+
+		mf.register(REL, "<root-type>");
+
+		// register at least one predicate since the parsing data might not
+		// contain predicates as in
+		// the Japaness corpus but the development sets contains some
+
+		System.out.print("Registering feature parts of sentence: ");
+		int ic = 0;
+		int del = 0;
+		while (true) {
+			SentenceData09 instance = depReader.getNext();
+			if (instance == null)
+				break;
+			ic++;
+
+			if (ic % 1000 == 0) {
+				del = outValue(ic, del);
+			}
+
+			String[] labs1 = instance.labels;
+			for (String element : labs1)
+				mf.register(REL, element);
+
+			String[] w = instance.forms;
+			for (String element : w)
+				mf.register(WORD, depReader.normalize(element));
+
+			w = instance.plemmas;
+			for (String element : w)
+				mf.register(WORD, depReader.normalize(element));
+
+			w = instance.ppos;
+			for (String element : w)
+				mf.register(POS, element);
+
+			w = instance.gpos;
+			for (String element : w)
+				mf.register(POS, element);
+
+			if (instance.feats != null) {
+				String fs[][] = instance.feats;
+				for (String[] element : fs) {
+					w = element;
+					if (w == null)
+						continue;
+					for (String element2 : w)
+						mf.register(FEAT, element2);
+				}
+			}
+
+			if ((ic - 1) > options.count)
+				break;
+		}
+		del = outValue(ic, del);
+
+		System.out.println();
+		Extractor.initFeatures();
+
+		Extractor.maxForm = mf.getFeatureCounter().get(WORD);
+
+		if (options.clusterFile == null)
+			cl = new Cluster();
+		else
+			cl = new Cluster(options.clusterFile, mf, 6);
+
+		mf.calculateBits();
+		Extractor.initStat(options.featureCreation);
+
+		System.out.println("" + mf.toString());
+
+		for (Extractor e : extractor)
+			e.init();
+
+		depReader.startReading(file);
+
+		int num1 = 0;
+
+		is.init(ic, new MFO());
+
+		Edges.init(mf.getFeatureCounter().get(POS));
+
+		System.out.print("Creating edge filters and read corpus: ");
+		del = 0;
+
+		while (true) {
+			if (num1 % 100 == 0)
+				del = outValue(num1, del);
+
+			SentenceData09 instance1 = depReader.getNext(is);
+
+			if (instance1 == null)
+				break;
+
+			int last = is.size() - 1;
+			short[] pos = is.pposs[last];
+
+			for (int k = 0; k < is.length(last); k++) {
+				if (is.heads[last][k] < 0)
+					continue;
+				Edges.put(pos[is.heads[last][k]], pos[k], is.labels[last][k]);
+				// Edges.put(pos[k],pos[is.heads[last][k]], is.labels[last][k]);
+			}
+
+			if (!options.allFeatures && num1 > options.count)
+				break;
+
+			num1++;
+
+		}
+		del = outValue(num1, del);
+		System.out.println();
+		Edges.findDefault();
+	}
+
+	/**
+	 * Creates an instance for outputParses
+	 *
+	 * @param is
+	 * @return
+	 * @throws IOException
+	 */
+	protected final SentenceData09 nextInstance(Instances is, CONLLReader09 depReader) throws Exception {
+
+		SentenceData09 instance = depReader.getNext(is);
+		if (instance == null || instance.forms == null)
+			return null;
+
+		return instance;
+	}
+
+	public static ExecutorService executerService = java.util.concurrent.Executors.newFixedThreadPool(Parser.THREADS);
+
+	public DataFES fillVector(F2SF params, Instances is, int inst, DataFES d, Cluster cluster)
+			throws InterruptedException {
+
+		long ts = System.nanoTime();
+
+		if (executerService.isShutdown())
+			executerService = java.util.concurrent.Executors.newCachedThreadPool();
+
+		final int length = is.length(inst);
+		if (d == null || d.len < length)
+			d = new DataFES(length, mf.getFeatureCounter().get(PipeGen.REL).shortValue());
+
+		ArrayList<ParallelExtract> pe = new ArrayList<ParallelExtract>();
+		for (int i = 0; i < Parser.THREADS; i++)
+			pe.add(new ParallelExtract(extractor[i], is, inst, d, (F2SF) params.clone(), cluster));
+
+		for (int w1 = 0; w1 < length; w1++) {
+			for (int w2 = w1 + 1; w2 < length; w2++) {
+
+				if (w1 == w2)
+					continue;
+
+				ParallelExtract.add(w1, w2);
+
+			}
+		}
+		// for(int i=0;i<efp.length;i++) efp[i].start();
+		// for(int i=0;i<efp.length;i++) efp[i].join();
+		executerService.invokeAll(pe);
+
+		timeExtract += (System.nanoTime() - ts);
+
+		return d;
+	}
+
+	public double errors(Instances is, int ic, Parse p) {
+		short[] act = is.heads[ic];
+		double correct = 0;
+
+		// do not count root
+		for (int i = 1; i < act.length; i++) {
+
+			// if (is.ppos[ic] ==null ) System.out.println("mf
+			// null"+is.ppos[ic][i]);
+			if (p.heads[i] == act[i]) {
+				correct += 0.5;
+				if (p.labels[i] == is.labels[ic][i])
+					correct += 0.5;
+			}
+		}
+
+		double x = ((double) act.length - 1 - correct);
+
+		p.f1 = correct / (act.length - 1);
+
+		return x;
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parser/package.html b/dependencyParser/experimental/mate-tools/src/is2/parser/package.html
new file mode 100755
index 0000000..a4f40a2
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parser/package.html
@@ -0,0 +1,11 @@
+Package info
+<ul>
+  <li> separate cluster feature to keep speed since two many features in a function reduce speed drastically. </li>
+  <li> try second order stacking features </li>
+  <li> parser stacking features </li>
+  <li> lots of cluster features </li>
+  <li> Iteration over edges and not extraction of all edges each time </li>
+  <li> integrated new structurer writer </li>
+</ul>
+  Change in FS, I observed lots of duplicated grand-children features
+<br>
\ No newline at end of file
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parserR2/Decoder.java b/dependencyParser/experimental/mate-tools/src/is2/parserR2/Decoder.java
new file mode 100755
index 0000000..2ba175f
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parserR2/Decoder.java
@@ -0,0 +1,405 @@
+package is2.parserR2;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+
+import decoder.ParallelDecoder;
+import decoder.ParallelRearrangeNBest;
+import decoder.ParallelRearrangeNBest2;
+import extractors.Extractor;
+import is2.data.Closed;
+import is2.data.DataF;
+import is2.data.Instances;
+import is2.data.Open;
+import is2.data.Parse;
+import is2.data.ParseNBest;
+
+/**
+ * @author Bernd Bohnet, 01.09.2009
+ *
+ *         This methods do the actual work and they build the dependency trees.
+ */
+final public class Decoder {
+
+	public static final boolean TRAINING = true;
+	public static long timeDecotder;
+	public static long timeRearrange;
+
+	public static final boolean LAS = true;
+
+	/**
+	 * Threshold for rearrange edges non-projective
+	 */
+	public static float NON_PROJECTIVITY_THRESHOLD = 0.3F;
+
+	public static ExecutorService executerService = java.util.concurrent.Executors.newFixedThreadPool(Parser.THREADS);
+
+	// do not initialize
+	private Decoder() {
+	};
+
+	/**
+	 * Build a dependency tree based on the data
+	 * 
+	 * @param pos
+	 *            part-of-speech tags
+	 * @param x
+	 *            the data
+	 * @param projective
+	 *            projective or non-projective
+	 * @param edges
+	 *            the edges
+	 * @return a parse tree
+	 * @throws InterruptedException
+	 */
+	public static List<ParseNBest> decode(short[] pos, DataF x, boolean projective, Extractor extractor)
+			throws InterruptedException {
+
+		long ts = System.nanoTime();
+
+		if (executerService.isShutdown())
+			executerService = java.util.concurrent.Executors.newCachedThreadPool();
+		final int n = pos.length;
+
+		final Open O[][][][] = new Open[n][n][2][];
+		final Closed C[][][][] = new Closed[n][n][2][];
+
+		ArrayList<ParallelDecoder> pe = new ArrayList<ParallelDecoder>();
+
+		for (int i = 0; i < Parser.THREADS; i++)
+			pe.add(new ParallelDecoder(pos, x, O, C, n));
+
+		for (short k = 1; k < n; k++) {
+
+			// provide the threads the data
+			for (short s = 0; s < n; s++) {
+				short t = (short) (s + k);
+				if (t >= n)
+					break;
+
+				ParallelDecoder.add(s, t);
+			}
+
+			executerService.invokeAll(pe);
+		}
+
+		double bestSpanScore = (-1.0F / 0.0F);
+		Closed bestSpan = null;
+		for (int m = 1; m < n; m++)
+			if (C[0][n - 1][1][m].p > bestSpanScore) {
+				bestSpanScore = C[0][n - 1][1][m].p;
+				bestSpan = C[0][n - 1][1][m];
+			}
+
+		// build the dependency tree from the chart
+		ParseNBest out = new ParseNBest(pos.length);
+
+		bestSpan.create(out);
+
+		out.heads[0] = -1;
+		out.labels[0] = 0;
+		bestProj = out;
+
+		timeDecotder += (System.nanoTime() - ts);
+		// DB.println(""+out);
+
+		ts = System.nanoTime();
+		List<ParseNBest> parses;
+
+		if (!projective) {
+
+			// if (training)
+			// rearrange(pos, out.heads, out.types,x,training);
+			// else {
+			// DB.println("bestSpan score "+(float)bestSpan.p+" comp score
+			// "+Extractor.encode3(pos, out.heads, out.types, x));
+			// System.out.println();
+			// Parse best = new Parse(out.heads,out.types,Extractor.encode3(pos,
+			// out.heads, out.types, x));
+			parses = rearrangeNBest(pos, out.heads, out.labels, x, extractor);
+			// DB.println("1best "+parses.get(0).f1);
+			// DB.println(""+parses.get(0).toString());
+
+			// for(ParseNBest p :parses) if (p.heads==null)
+			// p.signature2parse(p.signature());
+
+			/// if (parses.get(0).f1>(best.f1+NON_PROJECTIVITY_THRESHOLD)) out =
+			/// parses.get(0);
+			// else out =best;
+
+			// }
+		} else {
+			parses = new ArrayList<ParseNBest>();
+			parses.add(out);
+		}
+		timeRearrange += (System.nanoTime() - ts);
+
+		return parses;
+	}
+
+	static Parse bestProj = null;
+
+	/**
+	 * This is the parallel non-projective edge re-arranger
+	 * 
+	 * @param pos
+	 *            part-of-speech tags
+	 * @param heads
+	 *            parent child relation
+	 * @param labs
+	 *            edge labels
+	 * @param x
+	 *            the data
+	 * @param edges
+	 *            the existing edges defined by part-of-speech tags
+	 * @throws InterruptedException
+	 */
+	public static List<ParseNBest> rearrangeNBestP(short[] pos, short[] heads, short[] labs, DataF x,
+			Extractor extractor) throws InterruptedException {
+
+		ArrayList<ParallelRearrangeNBest2> pe = new ArrayList<ParallelRearrangeNBest2>();
+
+		int round = 0;
+		ArrayList<ParseNBest> parses = new ArrayList<ParseNBest>();
+		ParseNBest px = new ParseNBest();
+		px.signature(heads, labs);
+		// Object extractor;
+		px.f1 = extractor.encode3(pos, heads, labs, x);
+		parses.add(px);
+
+		float lastNBest = Float.NEGATIVE_INFINITY;
+
+		HashSet<Parse> done = new HashSet<Parse>();
+		gnu.trove.THashSet<CharSequence> contained = new gnu.trove.THashSet<CharSequence>();
+
+		while (true) {
+
+			pe.clear();
+
+			// used the first three parses
+			int ic = 0, considered = 0;
+			while (true) {
+
+				if (parses.size() <= ic || considered > 11)
+					break;
+
+				ParseNBest parse = parses.get(ic);
+
+				ic++;
+				// parse already extended
+				if (done.contains(parse))
+					continue;
+				considered++;
+
+				parse.signature2parse(parse.signature());
+
+				done.add(parse);
+
+				boolean[][] isChild = new boolean[heads.length][heads.length];
+
+				for (int i = 1, l1 = 1; i < heads.length; i++, l1 = i)
+					while ((l1 = heads[l1]) != -1)
+						isChild[l1][i] = true;
+
+				// check the list of new possible parents and children for a
+				// better combination
+				for (short ch = 1; ch < heads.length; ch++) {
+					for (short pa = 0; pa < heads.length; pa++) {
+						if (ch == pa || pa == heads[ch] || isChild[ch][pa])
+							continue;
+						ParallelRearrangeNBest2.add(parse.clone(), ch, pa);
+					}
+				}
+
+			}
+
+			for (int t = 0; t < Parser.THREADS; t++)
+				pe.add(new ParallelRearrangeNBest2(pos, x, lastNBest, extractor, NON_PROJECTIVITY_THRESHOLD));
+
+			executerService.invokeAll(pe);
+
+			// avoid to add parses several times
+			for (ParallelRearrangeNBest2 rp : pe) {
+				for (int k = rp.parses.size() - 1; k >= 0; k--) {
+					if (lastNBest > rp.parses.get(k).f1)
+						continue;
+					CharSequence sig = rp.parses.get(k).signature();
+					if (!contained.contains(sig)) {
+						parses.add(rp.parses.get(k));
+						contained.add(sig);
+					}
+				}
+			}
+
+			Collections.sort(parses);
+
+			if (round >= 2)
+				break;
+			round++;
+
+			// do not use to much memory
+			if (parses.size() > Parser.NBest) {
+				// if (parses.get(Parser.NBest).f1>lastNBest) lastNBest =
+				// (float)parses.get(Parser.NBest).f1;
+				parses.subList(Parser.NBest, parses.size() - 1).clear();
+			}
+		}
+		return parses;
+	}
+
+	/**
+	 * This is the parallel non-projective edge re-arranger
+	 * 
+	 * @param pos
+	 *            part-of-speech tags
+	 * @param heads
+	 *            parent child relation
+	 * @param labs
+	 *            edge labels
+	 * @param x
+	 *            the data
+	 * @param edges
+	 *            the existing edges defined by part-of-speech tags
+	 * @throws InterruptedException
+	 */
+	public static List<ParseNBest> rearrangeNBest(short[] pos, short[] heads, short[] labs, DataF x,
+			Extractor extractor) throws InterruptedException {
+
+		ArrayList<ParallelRearrangeNBest> pe = new ArrayList<ParallelRearrangeNBest>();
+
+		int round = 0;
+		ArrayList<ParseNBest> parses = new ArrayList<ParseNBest>();
+		ParseNBest px = new ParseNBest();
+		px.signature(heads, labs);
+		// Object extractor;
+		px.f1 = extractor.encode3(pos, heads, labs, x);
+		parses.add(px);
+
+		float lastNBest = Float.NEGATIVE_INFINITY;
+
+		HashSet<Parse> done = new HashSet<Parse>();
+		gnu.trove.THashSet<CharSequence> contained = new gnu.trove.THashSet<CharSequence>();
+		while (true) {
+
+			pe.clear();
+
+			// used the first three parses
+			int i = 0;
+			while (true) {
+
+				if (parses.size() <= i || pe.size() > 12)
+					break;
+
+				ParseNBest parse = parses.get(i);
+
+				i++;
+
+				// parse already extended
+				if (done.contains(parse))
+					continue;
+
+				// DB.println("err "+parse.heads);
+
+				parse.signature2parse(parse.signature());
+
+				done.add(parse);
+				pe.add(new ParallelRearrangeNBest(pos, x, parse, lastNBest, extractor, (float) parse.f1,
+						NON_PROJECTIVITY_THRESHOLD));
+			}
+
+			executerService.invokeAll(pe);
+
+			// avoid to add parses several times
+			for (ParallelRearrangeNBest rp : pe) {
+				for (int k = rp.parses.size() - 1; k >= 0; k--) {
+					if (lastNBest > rp.parses.get(k).f1)
+						continue;
+					CharSequence sig = rp.parses.get(k).signature();
+					if (!contained.contains(sig)) {
+						parses.add(rp.parses.get(k));
+						contained.add(sig);
+					}
+				}
+			}
+
+			Collections.sort(parses);
+
+			if (round >= 2)
+				break;
+			round++;
+
+			// do not use to much memory
+			if (parses.size() > Parser.NBest) {
+				if (parses.get(Parser.NBest).f1 > lastNBest)
+					lastNBest = (float) parses.get(Parser.NBest).f1;
+				parses.subList(Parser.NBest, parses.size() - 1).clear();
+			}
+		}
+		return parses;
+	}
+
+	public static String getInfo() {
+
+		return "Decoder non-projectivity threshold: " + NON_PROJECTIVITY_THRESHOLD;
+	}
+
+	/**
+	 * @param parses
+	 * @param is
+	 * @param i
+	 * @return
+	 */
+	public static int getGoldRank(List<ParseNBest> parses, Instances is, int i, boolean las) {
+
+		for (int p = 0; p < parses.size(); p++) {
+
+			if (parses.get(p).heads == null)
+				parses.get(p).signature2parse(parses.get(p).signature());
+
+			boolean eq = true;
+			for (int w = 1; w < is.length(0); w++) {
+				if (is.heads[i][w] != parses.get(p).heads[w] || (is.labels[i][w] != parses.get(p).labels[w] && las)) {
+					eq = false;
+					break;
+				}
+			}
+			if (eq)
+				return p;
+		}
+		return -1;
+	}
+
+	public static int getSmallestError(List<ParseNBest> parses, Instances is, int i, boolean las) {
+
+		int smallest = -1;
+		for (int p = 0; p < parses.size(); p++) {
+
+			int err = 0;
+			for (int w = 1; w < is.length(0); w++) {
+				if (is.heads[i][w] != parses.get(p).heads[w] || (is.labels[i][w] != parses.get(p).labels[w] && las)) {
+					err++;
+				}
+			}
+			if (smallest == -1 || smallest > err)
+				smallest = err;
+			if (smallest == 0)
+				return 0;
+		}
+		return smallest;
+	}
+
+	public static int getError(ParseNBest parse, Instances is, int i, boolean las) {
+
+		int err = 0;
+		for (int w = 1; w < is.length(i); w++) {
+			if (is.heads[i][w] != parse.heads[w] || (is.labels[i][w] != parse.labels[w] && las)) {
+				err++;
+			}
+		}
+		return err;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parserR2/Options.java b/dependencyParser/experimental/mate-tools/src/is2/parserR2/Options.java
new file mode 100755
index 0000000..eb396b4
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parserR2/Options.java
@@ -0,0 +1,92 @@
+package is2.parserR2;
+
+import is2.util.OptionsSuper;
+
+public final class Options extends OptionsSuper {
+
+	int start = 0, end = 0;
+	String prefix_model = "m";
+	String prefix_test = "t";
+
+	public Options(String[] args) {
+
+		for (int i = 0; i < args.length; i++) {
+
+			if (args[i].equals("--help"))
+				explain();
+
+			if (args[i].equals("-decode")) {
+				decodeProjective = args[i + 1].equals("proj");
+				i++;
+			} else if (args[i].equals("-decodeTH")) {
+				decodeTH = Double.parseDouble(args[i + 1]);
+				i++;
+			} else if (args[i].equals("-nonormalize")) {
+				normalize = false;
+			} else if (args[i].equals("-features")) {
+				features = args[i + 1];
+				i++;
+			} else if (args[i].equals("-hsize")) {
+				hsize = Integer.parseInt(args[i + 1]);
+				i++;
+			} else if (args[i].equals("-len")) {
+				maxLen = Integer.parseInt(args[i + 1]);
+				i++;
+			} else if (args[i].equals("-cores")) {
+				cores = Integer.parseInt(args[i + 1]);
+				i++;
+			} else if (args[i].equals("-best")) {
+				best = Integer.parseInt(args[i + 1]);
+				i++;
+			} else if (args[i].equals("-start")) {
+				start = Integer.parseInt(args[i + 1]);
+				i++;
+			} else if (args[i].equals("-end")) {
+				end = Integer.parseInt(args[i + 1]);
+				i++;
+			} else if (args[i].equals("-prefix-model")) {
+				prefix_model = args[i + 1];
+				i++;
+			} else if (args[i].equals("-prefix-test")) {
+				prefix_test = args[i + 1];
+				i++;
+			} else if (args[i].equals("-mapping")) {
+				this.useMapping = args[i + 1];
+				i++;
+			} else if (args[i].equals("-no2nd")) {
+				no2nd = true;
+			} else if (args[i].equals("-few2nd")) {
+				few2nd = true;
+			} else
+				super.addOption(args, i);
+
+		}
+
+	}
+
+	private void explain() {
+		System.out.println("Usage: ");
+		System.out.println("java -class mate.jar is2.parser.Parser [Options]");
+		System.out.println();
+		System.out.println("Example: ");
+		System.out.println(
+				" java -class mate.jar is2.parser.Parser -model eps3.model -train corpora/conll08st/train/train.closed -test corpora/conll08st/devel/devel.closed  -out b3.test -eval corpora/conll08st/devel/devel.closed  -count 2000 -i 6");
+		System.out.println("");
+		System.out.println("Options:");
+		System.out.println("");
+		System.out.println(" -train  <file>    the corpus a model is trained on; default " + this.trainfile);
+		System.out.println(" -test   <file>    the input corpus for testing; default " + this.testfile);
+		System.out.println(" -out    <file>    the output corpus (result) of a test run; default " + this.outfile);
+		System.out.println(" -model  <file>    the parsing model for traing the model is stored in the files");
+		System.out.println(
+				"                   and for parsing the model is load from this file; default " + this.modelName);
+		System.out.println(
+				" -i      <number>  the number of training iterations; good numbers are 10 for smaller corpora and 6 for bigger; default "
+						+ this.numIters);
+		System.out.println(" -count  <number>  the n first sentences of the corpus are take for the training default "
+				+ this.count);
+		System.out.println(" -format <number>  conll format of the year 8 or 9; default " + this.formatTask);
+
+		System.exit(0);
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parserR2/Parameters.java b/dependencyParser/experimental/mate-tools/src/is2/parserR2/Parameters.java
new file mode 100755
index 0000000..de7b591
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parserR2/Parameters.java
@@ -0,0 +1,37 @@
+/**
+ *
+ */
+package is2.parserR2;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import is2.data.FV;
+import is2.data.IFV;
+import is2.data.Instances;
+import is2.data.Parse;
+
+/**
+ * @author Bernd Bohnet, 31.08.2009
+ *
+ *
+ */
+public abstract class Parameters {
+
+	public abstract void average(double avVal);
+
+	public abstract void update(FV act, FV pred, Instances isd, int instc, Parse d, double upd, double e);
+
+	public abstract void write(DataOutputStream dos) throws IOException;
+
+	public abstract void read(DataInputStream dis) throws IOException;
+
+	public abstract int size();
+
+	/**
+	 * @return
+	 */
+	public abstract IFV getFV();
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parserR2/ParametersFloat.java b/dependencyParser/experimental/mate-tools/src/is2/parserR2/ParametersFloat.java
new file mode 100755
index 0000000..2ba0aaa
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parserR2/ParametersFloat.java
@@ -0,0 +1,178 @@
+package is2.parserR2;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import is2.data.F2SF;
+import is2.data.FV;
+import is2.data.FVR;
+import is2.data.Instances;
+import is2.data.Parse;
+import is2.util.DB;
+
+final public class ParametersFloat extends Parameters {
+
+	public float[] parameters;
+	private float[] total;
+
+	public ParametersFloat(int size) {
+		parameters = new float[size];
+		total = new float[size];
+		for (int i = 0; i < parameters.length; i++) {
+			parameters[i] = 0F;
+			total[i] = 0F;
+		}
+	}
+
+	/**
+	 * @param parameters2
+	 */
+	public ParametersFloat(float[] p) {
+		parameters = p;
+	}
+
+	@Override
+	public void average(double avVal) {
+		for (int j = 0; j < total.length; j++) {
+			parameters[j] = total[j] / ((float) avVal);
+		}
+		total = null;
+	}
+
+	public ParametersFloat average2(double avVal) {
+		float[] px = new float[this.parameters.length];
+		for (int j = 0; j < total.length; j++) {
+			px[j] = total[j] / ((float) avVal);
+		}
+		ParametersFloat pf = new ParametersFloat(px);
+		return pf;
+	}
+
+	public void update(FV act, FV pred, Instances isd, int instc, Parse dx, double upd, double e, float d, float f) {
+
+		e++;
+
+		float lam_dist = d - f;
+
+		float b = (float) e - lam_dist;
+
+		FV dist = act.getDistVector(pred);
+
+		dist.update(parameters, total, hildreth(dist, b), upd, false);
+	}
+
+	@Override
+	public void update(FV act, FV pred, Instances isd, int instc, Parse dx, double upd, double e) {
+
+		e++;
+
+		float lam_dist = getScore(act) - getScore(pred);
+
+		float b = (float) e - lam_dist;
+
+		FV dist = act.getDistVector(pred);
+
+		dist.update(parameters, total, hildreth(dist, b), upd, false);
+	}
+
+	public void update(FVR act, FVR pred, Instances isd, int instc, Parse dx, double upd, double e, float lam_dist) {
+
+		e++;
+
+		float b = (float) e - lam_dist;
+
+		FVR dist = act.getDistVector(pred);
+
+		dist.update(parameters, total, hildreth(dist, b), upd, false);
+	}
+
+	protected double hildreth(FV a, double b) {
+
+		double A = a.dotProduct(a);
+		if (A <= 0.0000000000000000001)
+			return 0.0;
+		return b / A;
+	}
+
+	protected double hildreth(FVR a, double b) {
+
+		double A = a.dotProduct(a);
+		if (A <= 0.0000000000000000001)
+			return 0.0;
+		return b / A;
+	}
+
+	public float getScore(FV fv) {
+		if (fv == null)
+			return 0.0F;
+		return fv.getScore(parameters, false);
+
+	}
+
+	public float getScore(FVR fv) { // xx
+		if (fv == null)
+			return 0.0F;
+		return fv.getScore(parameters, false);
+
+	}
+
+	@Override
+	final public void write(DataOutputStream dos) throws IOException {
+
+		dos.writeInt(parameters.length);
+		for (float d : parameters)
+			dos.writeFloat(d);
+
+	}
+
+	@Override
+	public void read(DataInputStream dis) throws IOException {
+
+		parameters = new float[dis.readInt()];
+		int notZero = 0;
+		for (int i = 0; i < parameters.length; i++) {
+			parameters[i] = dis.readFloat();
+			if (parameters[i] != 0.0F)
+				notZero++;
+		}
+
+		DB.println("read parameters " + parameters.length + " not zero " + notZero);
+
+	}
+
+	public int countNZ() {
+
+		int notZero = 0;
+		for (float parameter : parameters) {
+			if (parameter != 0.0F)
+				notZero++;
+		}
+		return notZero;
+
+		// DB.println("read parameters "+parameters.length+" not zero
+		// "+notZero);
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.sp09k99995.Parameters#getFV()
+	 */
+	@Override
+	public F2SF getFV() {
+		return new F2SF(parameters);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.sp09k99999.Parameters#size()
+	 */
+	@Override
+	public int size() {
+		return parameters.length;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parserR2/Parser.java b/dependencyParser/experimental/mate-tools/src/is2/parserR2/Parser.java
new file mode 100755
index 0000000..54d6f2e
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parserR2/Parser.java
@@ -0,0 +1,647 @@
+package is2.parserR2;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map.Entry;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+import java.util.zip.ZipOutputStream;
+
+//import extractors.ExtractorClusterStackedR2;
+import extractors.Extractor;
+import extractors.ExtractorFactory;
+import is2.data.Cluster;
+import is2.data.DataF;
+import is2.data.Edges;
+import is2.data.FV;
+import is2.data.Instances;
+import is2.data.Long2Int;
+import is2.data.Long2IntInterface;
+import is2.data.MFB;
+import is2.data.Parse;
+import is2.data.ParseNBest;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.io.CONLLWriter09;
+import is2.tools.Tool;
+import is2.util.DB;
+import is2.util.OptionsSuper;
+import is2.util.ParserEvaluator;
+
+public class Parser implements Tool {
+
+	// output evaluation info
+	private static final boolean MAX_INFO = true;
+
+	public static int THREADS = 4;
+
+	Long2IntInterface l2i;
+	ParametersFloat params;
+	Pipe pipe;
+	OptionsSuper options;
+
+	HashMap<Integer, Integer> rank = new HashMap<Integer, Integer>();
+	int amongxbest = 0, amongxbest_ula = 0, nbest = 0, bestProj = 0, smallestErrorSum = 0, countAllNodes = 0;
+	static int NBest = 1000;
+
+	ExtractorFactory extractorFactory = new ExtractorFactory(ExtractorFactory.StackedClusteredR2);
+
+	/**
+	 * Initialize the parser
+	 * 
+	 * @param options
+	 */
+	public Parser(OptionsSuper options) {
+
+		this.options = options;
+		pipe = new Pipe(options);
+
+		params = new ParametersFloat(0);
+
+		// load the model
+		try {
+			readModel(options, pipe, params);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+	}
+
+	/**
+	 * @param modelFileName
+	 *            The file name of the parsing model
+	 */
+	public Parser(String modelFileName) {
+		this(new Options(new String[] { "-model", modelFileName }));
+	}
+
+	/**
+	 *
+	 */
+	public Parser() {
+		// TODO Auto-generated constructor stub
+	}
+
+	public static void main(String[] args) throws Exception {
+
+		long start = System.currentTimeMillis();
+		OptionsSuper options = new Options(args);
+
+		NBest = options.best;
+
+		DB.println("n-best" + NBest);
+
+		Runtime runtime = Runtime.getRuntime();
+		THREADS = runtime.availableProcessors();
+		if (options.cores < THREADS && options.cores > 0)
+			THREADS = options.cores;
+
+		DB.println("Found " + runtime.availableProcessors() + " cores use " + THREADS);
+
+		if (options.train) {
+
+			Parser p = new Parser();
+			p.options = options;
+
+			p.l2i = new Long2Int(options.hsize);
+
+			p.pipe = new Pipe(options);
+			Instances is = new Instances();
+
+			p.pipe.extractor = new Extractor[THREADS];
+
+			for (int t = 0; t < THREADS; t++)
+				p.pipe.extractor[t] = p.extractorFactory.getExtractor(p.l2i);
+
+			p.params = new ParametersFloat(p.l2i.size());
+
+			if (options.useMapping != null) {
+				String model = options.modelName;
+
+				options.modelName = options.useMapping;
+				DB.println("Using mapping of model " + options.modelName);
+				ZipInputStream zis = new ZipInputStream(
+						new BufferedInputStream(new FileInputStream(options.modelName)));
+				zis.getNextEntry();
+				DataInputStream dis = new DataInputStream(new BufferedInputStream(zis));
+				p.pipe.mf.read(dis);
+
+				DB.println("read\n" + p.pipe.mf.toString());
+
+				ParametersFloat params = new ParametersFloat(0);
+				params.read(dis);
+
+				Edges.read(dis);
+
+				dis.close();
+				DB.println("end read model");
+				options.modelName = model;
+			}
+
+			p.pipe.createInstances(options.trainfile, is);
+
+			p.train(options, p.pipe, p.params, is, p.pipe.cl);
+
+			p.writeModell(options, p.params, null, p.pipe.cl);
+
+		}
+
+		if (options.test) {
+
+			Parser p = new Parser();
+			p.options = options;
+
+			p.pipe = new Pipe(options);
+			p.params = new ParametersFloat(0); // total should be zero and the
+												// parameters are later read
+
+			// load the model
+
+			p.readModel(options, p.pipe, p.params);
+
+			DB.println("test on " + options.testfile);
+
+			System.out.println("" + p.pipe.mf.toString());
+
+			p.outputParses(options, p.pipe, p.params, !MAX_INFO);
+
+		}
+
+		System.out.println();
+
+		if (options.eval) {
+			System.out.println("\nEVALUATION PERFORMANCE:");
+			ParserEvaluator.evaluate(options.goldfile, options.outfile);
+		}
+
+		long end = System.currentTimeMillis();
+		System.out.println("used time " + ((float) ((end - start) / 100) / 10));
+
+		Decoder.executerService.shutdown();
+		Pipe.executerService.shutdown();
+		System.out.println("end.");
+
+	}
+
+	/**
+	 * Read the models and mapping
+	 * 
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @throws IOException
+	 */
+	public void readModel(OptionsSuper options, Pipe pipe, Parameters params) throws IOException {
+
+		DB.println("Reading data started");
+
+		// prepare zipped reader
+		ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(options.modelName)));
+		zis.getNextEntry();
+		DataInputStream dis = new DataInputStream(new BufferedInputStream(zis));
+
+		pipe.mf.read(dis);
+
+		pipe.cl = new Cluster(dis);
+
+		params.read(dis);
+		this.l2i = new Long2Int(params.size());
+		DB.println("parsing -- li size " + l2i.size());
+
+		pipe.extractor = new Extractor[THREADS];
+
+		for (int t = 0; t < THREADS; t++)
+			pipe.extractor[t] = this.extractorFactory.getExtractor(l2i);
+
+		Edges.read(dis);
+
+		options.decodeProjective = dis.readBoolean();
+
+		int maxForm = dis.readInt();
+
+		for (int t = 0; t < THREADS; t++) {
+			pipe.extractor[t].setMaxForm(maxForm);
+			pipe.extractor[t].initStat();
+			pipe.extractor[t].init();
+		}
+
+		boolean foundInfo = false;
+		try {
+			String info = null;
+			int icnt = dis.readInt();
+			for (int i = 0; i < icnt; i++) {
+				info = dis.readUTF();
+				System.out.println(info);
+			}
+		} catch (Exception e) {
+			if (!foundInfo)
+				System.out.println("no info about training");
+		}
+
+		dis.close();
+
+		DB.println("Reading data finnished");
+
+		Decoder.NON_PROJECTIVITY_THRESHOLD = (float) options.decodeTH;
+		for (int t = 0; t < THREADS; t++) {
+			pipe.extractor[t].initStat();
+			pipe.extractor[t].init();
+		}
+
+	}
+
+	/**
+	 * Do the training
+	 * 
+	 * @param instanceLengths
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @param is
+	 * @param cluster
+	 * @throws IOException
+	 * @throws InterruptedException
+	 * @throws ClassNotFoundException
+	 */
+	public void train(OptionsSuper options, Pipe pipe, ParametersFloat params, Instances is, Cluster cluster)
+			throws IOException, InterruptedException, ClassNotFoundException {
+
+		DB.println("\nTraining Information ");
+		DB.println("-------------------- ");
+
+		Decoder.NON_PROJECTIVITY_THRESHOLD = (float) options.decodeTH;
+
+		if (options.decodeProjective)
+			System.out.println("Decoding: " + (options.decodeProjective ? "projective" : "non-projective"));
+		else
+			System.out.println("" + Decoder.getInfo());
+		int numInstances = is.size();
+
+		int maxLenInstances = 0;
+		for (int i = 0; i < numInstances; i++)
+			if (maxLenInstances < is.length(i))
+				maxLenInstances = is.length(i);
+
+		DataF data = new DataF(maxLenInstances, pipe.mf.getFeatureCounter().get(PipeGen.REL).shortValue());
+
+		int iter = 0;
+		int del = 0;
+		float error = 0;
+		float f1 = 0;
+
+		FV pred = new FV();
+		FV act = new FV();
+
+		double upd = (double) (numInstances * options.numIters) + 1;
+
+		for (; iter < options.numIters; iter++) {
+
+			System.out.print("Iteration " + iter + ": ");
+
+			long start = System.currentTimeMillis();
+
+			long last = System.currentTimeMillis();
+			error = 0;
+			f1 = 0;
+			for (int n = 0; n < numInstances; n++) {
+
+				upd--;
+
+				if (is.labels[n].length > options.maxLen)
+					continue;
+
+				String info = " td " + ((Decoder.timeDecotder) / 1000000F) + " tr "
+						+ ((Decoder.timeRearrange) / 1000000F) + " te " + ((Pipe.timeExtract) / 1000000F);
+
+				if ((n + 1) % 500 == 0)
+					del = PipeGen.outValueErr(n + 1, Math.round(error * 1000) / 1000, f1 / n, del, last, upd, info);
+
+				short pos[] = is.pposs[n];
+
+				data = pipe.fillVector(params.getFV(), is, n, data, cluster, THREADS, l2i);
+
+				List<ParseNBest> parses = Decoder.decode(pos, data, options.decodeProjective, pipe.extractor[0]);
+				Parse d = parses.get(0);
+				double e = pipe.errors(is, n, d);
+
+				if (d.f1 > 0)
+					f1 += (d.labels.length - 1 - e) / (d.labels.length - 1);
+
+				if (e <= 0)
+					continue;
+
+				// get predicted feature vector
+				pred.clear();
+				pipe.extractor[0].encodeCat(is, n, pos, is.forms[n], is.plemmas[n], d.heads, d.labels, is.feats[n],
+						pipe.cl, pred);
+
+				error += e;
+
+				act.clear();
+				pipe.extractor[0].encodeCat(is, n, pos, is.forms[n], is.plemmas[n], is.heads[n], is.labels[n],
+						is.feats[n], pipe.cl, act);
+
+				params.update(act, pred, is, n, d, upd, e);
+			}
+
+			String info = " td " + ((Decoder.timeDecotder) / 1000000F) + " tr " + ((Decoder.timeRearrange) / 1000000F)
+					+ " te " + ((Pipe.timeExtract) / 1000000F) + " nz " + params.countNZ();
+			PipeGen.outValueErr(numInstances, Math.round(error * 1000) / 1000, f1 / numInstances, del, last, upd, info);
+			del = 0;
+			long end = System.currentTimeMillis();
+			System.out.println(" time:" + (end - start));
+
+			ParametersFloat pf = params.average2((iter + 1) * is.size());
+			try {
+
+				if (options.testfile != null) {
+					outputParses(options, pipe, pf, !MAX_INFO);
+					ParserEvaluator.evaluate(options.goldfile, options.outfile);
+					// writeModell(options, pf, ""+(iter+1),pipe.cl);
+				}
+
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+
+			Decoder.timeDecotder = 0;
+			Decoder.timeRearrange = 0;
+			Pipe.timeExtract = 0;
+
+		}
+		params.average(iter * is.size());
+	}
+
+	/**
+	 * Do the parsing
+	 * 
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @throws IOException
+	 */
+	private void outputParses(OptionsSuper options, Pipe pipe, ParametersFloat params, boolean maxInfo)
+			throws Exception {
+
+		long start = System.currentTimeMillis();
+
+		CONLLReader09 depReader = new CONLLReader09(options.testfile, options.formatTask);
+		CONLLWriter09 depWriter = new CONLLWriter09(options.outfile, options.formatTask);
+
+		// ExtractorClusterStacked.initFeatures();
+
+		int cnt = 0;
+		int del = 0;
+		long last = System.currentTimeMillis();
+
+		if (maxInfo)
+			System.out.println("\nParsing Information ");
+		if (maxInfo)
+			System.out.println("------------------- ");
+
+		if (maxInfo && !options.decodeProjective)
+			System.out.println("" + Decoder.getInfo());
+
+		// if (!maxInfo) System.out.println();
+
+		String[] types = new String[pipe.mf.getFeatureCounter().get(PipeGen.REL)];
+		for (Entry<String, Integer> e : MFB.getFeatureSet().get(PipeGen.REL).entrySet())
+			types[e.getValue()] = e.getKey();
+
+		System.out.print("Processing Sentence: ");
+
+		while (true) {
+
+			Instances is = new Instances();
+			is.init(1, new MFB(), options.formatTask);
+
+			SentenceData09 instance = pipe.nextInstance(is, depReader);
+			if (instance == null)
+				break;
+			cnt++;
+
+			SentenceData09 i09 = this.parse(instance, params);
+
+			// }
+			depWriter.write(i09);
+			del = PipeGen.outValue(cnt, del, last);
+			// DB.println("xbest "+amongxbest+" cnt "+cnt+"
+			// "+((float)((float)amongxbest/cnt))+" nbest "+((float)nbest/cnt)+
+			// " 1best "+((float)(rank.get(0)==null?0:rank.get(0))/cnt)+"
+			// best-proj "+((float)bestProj/cnt));
+
+		}
+
+		// pipe.close();
+
+		depWriter.finishWriting();
+		long end = System.currentTimeMillis();
+		DB.println("rank\n" + rank + "\n");
+		DB.println("x-best-las " + amongxbest + " x-best-ula " + amongxbest_ula + " cnt " + cnt + " x-best-las "
+				+ ((float) amongxbest / cnt) + " x-best-ula " + ((float) amongxbest_ula / cnt) + " nbest "
+				+ ((float) nbest / cnt) + " 1best " + ((float) (rank.get(0) == null ? 0 : rank.get(0)) / cnt)
+				+ " best-proj " + ((float) bestProj / cnt) + " Sum LAS "
+				+ ((float) this.smallestErrorSum / countAllNodes));
+
+		// DB.println("errors "+error);
+
+		rank.clear();
+		amongxbest = 0;
+		amongxbest_ula = 0;
+		cnt = 0;
+		nbest = 0;
+		bestProj = 0;
+		if (maxInfo)
+			System.out.println("Used time " + (end - start));
+		if (maxInfo)
+			System.out.println("forms count " + Instances.m_count + " unkown " + Instances.m_unkown);
+
+	}
+
+	public SentenceData09 parse(SentenceData09 instance, ParametersFloat params) {
+
+		String[] types = new String[pipe.mf.getFeatureCounter().get(PipeGen.REL)];
+		for (Entry<String, Integer> e : MFB.getFeatureSet().get(PipeGen.REL).entrySet())
+			types[e.getValue()] = e.getKey();
+
+		Instances is = new Instances();
+		is.init(1, new MFB(), options.formatTask);
+		new CONLLReader09().insert(is, instance);
+
+		String[] forms = instance.forms;
+
+		// use for the training ppos
+		DataF d2;
+		try {
+			d2 = pipe.fillVector(params.getFV(), is, 0, null, pipe.cl, THREADS, l2i);// cnt-1
+		} catch (Exception e) {
+			e.printStackTrace();
+			return null;
+		}
+		short[] pos = is.pposs[0];
+
+		List<ParseNBest> parses = null;
+		Parse d = null;
+		try {
+			parses = Decoder.decode(pos, d2, options.decodeProjective, pipe.extractor[0]); // cnt-1
+			d = parses.get(0);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		if (parses.size() > NBest)
+			parses = parses.subList(0, NBest);
+
+		int g_las = Decoder.getGoldRank(parses, is, 0, Decoder.LAS);
+		int g_ula = Decoder.getGoldRank(parses, is, 0, !Decoder.LAS);
+
+		int smallest = Decoder.getSmallestError(parses, is, 0, !Decoder.LAS);
+		smallestErrorSum += is.length(0) - smallest;
+		countAllNodes += is.length(0);
+
+		if (g_las >= 0)
+			amongxbest++;
+		if (g_ula >= 0)
+			amongxbest_ula++;
+
+		nbest += parses.size();
+
+		Integer r = rank.get(g_las);
+		if (r == null)
+			rank.put(g_las, 1);
+		else
+			rank.put(g_las, r + 1);
+
+		this.pipe.errors(is, 0, d);
+
+		float errBestProj = (float) this.pipe.errors(is, 0, Decoder.bestProj);
+
+		if (errBestProj == 0)
+			bestProj++;
+
+		SentenceData09 i09 = new SentenceData09(instance);
+
+		i09.createSemantic(instance);
+
+		for (int j = 0; j < forms.length - 1; j++) {
+			i09.plabels[j] = types[d.labels[j + 1]];
+			i09.pheads[j] = d.heads[j + 1];
+		}
+		return i09;
+
+	}
+
+	public List<ParseNBest> parseNBest(SentenceData09 instance) {
+
+		Instances is = new Instances();
+		is.init(1, new MFB(), options.formatTask);
+		new CONLLReader09().insert(is, instance);
+
+		// use for the training ppos
+		DataF d2;
+		try {
+			d2 = pipe.fillVector(params.getFV(), is, 0, null, pipe.cl, THREADS, l2i);// cnt-1
+		} catch (Exception e) {
+			e.printStackTrace();
+			return null;
+		}
+		short[] pos = is.pposs[0];
+
+		List<ParseNBest> parses = null;
+		try {
+			parses = Decoder.decode(pos, d2, options.decodeProjective, pipe.extractor[0]); // cnt-1
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		if (parses.size() > NBest)
+			parses = parses.subList(0, NBest);
+
+		return parses;
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.tools.Tool#apply(is2.data.SentenceData09)
+	 */
+
+	@Override
+	public SentenceData09 apply(SentenceData09 snt09) {
+
+		SentenceData09 it = new SentenceData09();
+		it.createWithRoot(snt09);
+
+		SentenceData09 out = null;
+		try {
+
+			// for(int k=0;k<it.length();k++) {
+			// it.forms[k] = reader.normalize(it.forms[k]);
+			// it.plemmas[k] = reader.normalize(it.plemmas[k]);
+			// }
+
+			out = parse(it, this.params);
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		Decoder.executerService.shutdown();
+		Pipe.executerService.shutdown();
+
+		return out;
+	}
+
+	/**
+	 * Write the parsing model
+	 *
+	 * @param options
+	 * @param params
+	 * @param extension
+	 * @throws FileNotFoundException
+	 * @throws IOException
+	 */
+	private void writeModell(OptionsSuper options, ParametersFloat params, String extension, Cluster cs)
+			throws FileNotFoundException, IOException {
+
+		String name = extension == null ? options.modelName : options.modelName + extension;
+		// System.out.println("Writting model: "+name);
+		ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(name)));
+		zos.putNextEntry(new ZipEntry("data"));
+		DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(zos));
+
+		MFB.writeData(dos);
+		cs.write(dos);
+
+		params.write(dos);
+
+		Edges.write(dos);
+
+		dos.writeBoolean(options.decodeProjective);
+
+		dos.writeInt(pipe.extractor[0].getMaxForm());
+
+		dos.writeInt(5); // Info count
+		dos.writeUTF("Used parser   " + Parser.class.toString());
+		dos.writeUTF("Creation date " + (new SimpleDateFormat("yyyy.MM.dd HH:mm:ss")).format(new Date()));
+		dos.writeUTF("Training data " + options.trainfile);
+		dos.writeUTF("Iterations    " + options.numIters + " Used sentences " + options.count);
+		dos.writeUTF("Cluster       " + options.clusterFile);
+
+		dos.flush();
+		dos.close();
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parserR2/Pipe.java b/dependencyParser/experimental/mate-tools/src/is2/parserR2/Pipe.java
new file mode 100755
index 0000000..81ce59a
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parserR2/Pipe.java
@@ -0,0 +1,261 @@
+package is2.parserR2;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.concurrent.ExecutorService;
+
+import extractors.Extractor;
+import extractors.ParallelExtract;
+import is2.data.Cluster;
+import is2.data.DataF;
+import is2.data.Edges;
+import is2.data.F2SF;
+import is2.data.Instances;
+import is2.data.Long2IntInterface;
+import is2.data.MFB;
+import is2.data.Parse;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.util.OptionsSuper;
+
+final public class Pipe extends PipeGen {
+
+	public Extractor[] extractor;
+	final public MFB mf = new MFB();
+
+	Cluster cl;
+
+	private OptionsSuper options;
+	public static long timeExtract;
+
+	public Pipe(OptionsSuper o) {
+		options = o;
+	}
+
+	public void createInstances(String file, Instances is)
+	// throws Exception
+
+	{
+
+		CONLLReader09 depReader = new CONLLReader09(file);
+
+		mf.register(REL, "<root-type>");
+
+		// register at least one predicate since the parsing data might not
+		// contain predicates as in
+		// the Japaness corpus but the development sets contains some
+
+		System.out.print("Registering feature parts of sentence: ");
+		int ic = 0;
+		int del = 0;
+		while (true) {
+			SentenceData09 instance = depReader.getNext();
+			if (instance == null)
+				break;
+			ic++;
+
+			if (ic % 1000 == 0) {
+				del = outValue(ic, del);
+			}
+
+			String[] labs1 = instance.labels;
+			for (String element : labs1)
+				mf.register(REL, element);
+
+			String[] w = instance.forms;
+			for (String element : w)
+				mf.register(WORD, depReader.normalize(element));
+
+			w = instance.plemmas;
+			for (String element : w)
+				mf.register(WORD, depReader.normalize(element));
+
+			w = instance.ppos;
+			for (String element : w)
+				mf.register(POS, element);
+
+			w = instance.gpos;
+			for (String element : w)
+				mf.register(POS, element);
+
+			if (instance.feats != null) {
+				String fs[][] = instance.feats;
+				for (String[] element : fs) {
+					w = element;
+					if (w == null)
+						continue;
+					for (String element2 : w)
+						mf.register(FEAT, element2);
+				}
+			}
+
+			if ((ic - 1) > options.count)
+				break;
+		}
+		del = outValue(ic, del);
+
+		for (Extractor e : extractor) {
+			e.setMaxForm(mf.getFeatureCounter().get(WORD));
+		}
+
+		if (options.clusterFile == null)
+			cl = new Cluster();
+		else
+			cl = new Cluster(options.clusterFile, mf, 6);
+
+		mf.calculateBits();
+
+		System.out.println("" + mf.toString());
+
+		for (Extractor e : extractor) {
+			e.initStat();
+			e.init();
+		}
+
+		depReader.startReading(file);
+
+		int num1 = 0;
+
+		Edges.init(mf.getFeatureCounter().get(POS));
+
+		System.out.print("Creating edge filters and read corpus: ");
+		del = 0;
+
+		is.init(ic, new MFB());
+
+		while (true) {
+			if (num1 % 100 == 0)
+				del = outValue(num1, del);
+
+			SentenceData09 instance1 = depReader.getNext(is);
+
+			if (instance1 == null)
+				break;
+
+			int last = is.size() - 1;
+			short[] pos = is.pposs[last];
+
+			for (int k = 0; k < is.length(last); k++) {
+				if (is.heads[last][k] < 0)
+					continue;
+				Edges.put(pos[is.heads[last][k]], pos[k], k < is.heads[last][k], is.labels[last][k]);
+			}
+
+			if (!options.allFeatures && num1 > options.count)
+				break;
+
+			num1++;
+
+		}
+		del = outValue(num1, del);
+		System.out.println();
+		Edges.findDefault();
+	}
+
+	public void getInstances(String file, Instances is) {
+		CONLLReader09 depReader = new CONLLReader09(file);
+
+		int ic = options.count + 2;
+
+		is.init(ic, new MFB());
+
+		int num1 = 0, del = 0;
+		while (true) {
+			if (num1 % 100 == 0)
+				del = outValue(num1, del);
+
+			SentenceData09 instance1 = depReader.getNext(is);
+
+			if (instance1 == null)
+				break;
+
+			if (!options.allFeatures && num1 > options.count)
+				break;
+
+			num1++;
+
+		}
+		del = outValue(num1, del);
+		System.out.println();
+
+	}
+
+	/**
+	 * Creates an instance for outputParses
+	 *
+	 * @param is
+	 * @return
+	 * @throws IOException
+	 */
+	protected final SentenceData09 nextInstance(Instances is, CONLLReader09 depReader) throws Exception {
+
+		SentenceData09 instance = depReader.getNext(is);
+		if (instance == null || instance.forms == null)
+			return null;
+
+		return instance;
+	}
+
+	public static ExecutorService executerService = java.util.concurrent.Executors.newFixedThreadPool(Parser.THREADS);
+
+	public DataF fillVector(F2SF params, Instances is, int inst, DataF d, Cluster cluster, int threads,
+			Long2IntInterface li) throws InterruptedException {
+
+		long ts = System.nanoTime();
+
+		if (executerService.isShutdown())
+			executerService = java.util.concurrent.Executors.newCachedThreadPool();
+
+		final int length = is.length(inst);
+		if (d == null || d.len < length)
+			d = new DataF(length, mf.getFeatureCounter().get(PipeGen.REL).shortValue());
+
+		ArrayList<ParallelExtract> pe = new ArrayList<ParallelExtract>();
+
+		for (int i = 0; i < threads; i++) {
+
+			// DB.println(""+((ExtractorClusterStackedR2)extractor[i]).s_dist);
+			pe.add(new ParallelExtract(extractor[i], is, inst, d, (F2SF) params.clone(), cluster, li));
+		}
+
+		for (int w1 = 0; w1 < length; w1++) {
+			for (int w2 = 0; w2 < length; w2++) {
+				if (w1 == w2)
+					continue;
+				ParallelExtract.add(w1, w2);
+			}
+		}
+		executerService.invokeAll(pe);
+
+		timeExtract += (System.nanoTime() - ts);
+
+		return d;
+	}
+
+	/**
+	 * the loss function
+	 */
+	public double errors(Instances is, int ic, Parse p) {
+
+		if (p.heads == null)
+			p.signature2parse(p.signature());
+		short[] act = is.heads[ic];
+		double correct = 0;
+
+		// do not count root
+		for (int i = 1; i < act.length; i++) {
+			if (p.heads[i] == act[i]) {
+				correct += 0.5;
+				if (p.labels[i] == is.labels[ic][i])
+					correct += 0.5;
+			}
+		}
+
+		double x = ((double) act.length - 1 - correct);
+
+		// p.f1 = (double)correct / (double)(act.length-1);
+
+		return x;
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parserR2/PipeReranker.java b/dependencyParser/experimental/mate-tools/src/is2/parserR2/PipeReranker.java
new file mode 100644
index 0000000..622fe1c
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parserR2/PipeReranker.java
@@ -0,0 +1,123 @@
+package is2.parserR2;
+
+import java.util.concurrent.ExecutorService;
+
+import extractors.ExtractorReranker;
+import is2.data.Cluster;
+import is2.data.Edges;
+import is2.data.Instances;
+import is2.data.MFB;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.util.OptionsSuper;
+
+final public class PipeReranker extends PipeGen {
+
+	public ExtractorReranker extractor;
+	final public MFB mf = new MFB();
+
+	Cluster cl;
+
+	private OptionsSuper options;
+	public static long timeExtract;
+
+	public PipeReranker(OptionsSuper o) {
+		options = o;
+	}
+
+	public void createInstances(String file, Instances is)
+	// throws Exception
+
+	{
+
+		CONLLReader09 depReader = new CONLLReader09(file);
+
+		mf.register(REL, "<root-type>");
+
+		// register at least one predicate since the parsing data might not
+		// contain predicates as in
+		// the Japaness corpus but the development sets contains some
+
+		System.out.print("Registering feature parts of sentence: ");
+		int ic = 0;
+		int del = 0;
+		while (true) {
+			SentenceData09 instance = depReader.getNext();
+			if (instance == null)
+				break;
+			ic++;
+
+			if (ic % 1000 == 0) {
+				del = outValue(ic, del);
+			}
+
+			String[] labs1 = instance.labels;
+			for (String element : labs1)
+				mf.register(REL, element);
+
+			String[] w = instance.forms;
+			for (String element : w)
+				mf.register(WORD, depReader.normalize(element));
+
+			w = instance.plemmas;
+			for (String element : w)
+				mf.register(WORD, depReader.normalize(element));
+
+			w = instance.ppos;
+			for (String element : w)
+				mf.register(POS, element);
+
+			w = instance.gpos;
+			for (String element : w)
+				mf.register(POS, element);
+
+			if (instance.feats != null) {
+				String fs[][] = instance.feats;
+				for (String[] element : fs) {
+					w = element;
+					if (w == null)
+						continue;
+					for (String element2 : w)
+						mf.register(FEAT, element2);
+				}
+			}
+
+			if ((ic - 1) > options.count)
+				break;
+		}
+		del = outValue(ic, del);
+
+		System.out.println();
+		ExtractorReranker.initFeatures();
+
+		ExtractorReranker.maxForm = mf.getFeatureCounter().get(WORD);
+
+		if (options.clusterFile == null)
+			cl = new Cluster();
+		else
+			cl = new Cluster(options.clusterFile, mf, 6);
+
+		mf.calculateBits();
+		ExtractorReranker.initStat();
+
+		System.out.println("" + mf.toString());
+
+		extractor.init();
+		depReader.startReading(file);
+
+		int num1 = 0;
+
+		is.init(ic, new MFB());
+
+		Edges.init(mf.getFeatureCounter().get(POS));
+
+		del = 0;
+
+		del = outValue(num1, del);
+		System.out.println();
+	}
+
+	public static ExecutorService executerService = java.util.concurrent.Executors.newFixedThreadPool(Parser.THREADS);
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parserR2/Reranker.java b/dependencyParser/experimental/mate-tools/src/is2/parserR2/Reranker.java
new file mode 100644
index 0000000..61650a0
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parserR2/Reranker.java
@@ -0,0 +1,991 @@
+package is2.parserR2;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map.Entry;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+import java.util.zip.ZipOutputStream;
+
+import extractors.Extractor;
+import extractors.ExtractorClusterStacked;
+import extractors.ExtractorReranker;
+import is2.data.Cluster;
+import is2.data.DataF;
+import is2.data.Edges;
+import is2.data.F2SF;
+import is2.data.FVR;
+import is2.data.Instances;
+import is2.data.Long2Int;
+import is2.data.Long2IntInterface;
+import is2.data.MFB;
+import is2.data.Parse;
+import is2.data.ParseNBest;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.io.CONLLWriter09;
+import is2.tools.Tool;
+import is2.util.DB;
+import is2.util.OptionsSuper;
+import is2.util.ParserEvaluator;
+
+public class Reranker implements Tool {
+
+	public static int THREADS = 4;
+
+	Long2IntInterface l2i;
+
+	// the parser models
+	ParametersFloat paramsParsers[];
+
+	// the re-ranker model
+	ParametersFloat parametersReranker;
+	PipeReranker pipeReranker;
+	Pipe pipe;
+	Options options;
+
+	HashMap<Integer, Integer> rank = new HashMap<Integer, Integer>();
+	int amongxbest = 0, amongxbest_ula = 0, nbest = 0, bestProj = 0, smallestErrorSum = 0, countAllNodes = 0;
+	static int NBest = 1000;
+
+	/**
+	 * Initialize the parser
+	 * 
+	 * @param options
+	 */
+	public Reranker(Options options) {
+
+		this.options = options;
+
+	}
+
+	/**
+	 * @param modelFileName
+	 *            The file name of the parsing model
+	 */
+	public Reranker(String modelFileName) {
+		this(new Options(new String[] { "-model", modelFileName }));
+	}
+
+	public Reranker() {
+		// TODO Auto-generated constructor stub
+	}
+
+	public static void main(String[] args) throws Exception {
+
+		long start = System.currentTimeMillis();
+		Options options = new Options(args);
+
+		NBest = options.best;
+
+		DB.println("n-best " + NBest);
+
+		Runtime runtime = Runtime.getRuntime();
+		THREADS = runtime.availableProcessors();
+
+		if (options.cores < THREADS && options.cores > 0)
+			THREADS = options.cores;
+
+		DB.println("Found " + runtime.availableProcessors() + " cores use " + THREADS);
+
+		if (options.train) {
+
+			Reranker p = new Reranker();
+			p.options = options;
+
+			p.l2i = new Long2Int(options.hsize);
+			p.pipeReranker = new PipeReranker(options);
+			p.pipeReranker.extractor = new ExtractorReranker(p.l2i);
+
+			// initialize the parser
+			p.pipe = new Pipe(options);
+
+			// read parsing models
+			p.paramsParsers = new ParametersFloat[options.end + 1];
+			for (int m = 0; m <= options.end; m++) {
+				String name = options.prefix_model + m;
+				p.paramsParsers[m] = new ParametersFloat(0);
+				p.readModel(name, p.pipe, p.paramsParsers[m]);
+			}
+
+			// set up the reranker
+			p.parametersReranker = new ParametersFloat(p.l2i.size());
+
+			Instances[] iss = new Instances[options.end + 1];
+
+			for (int m = 0; m <= options.end; m++) {
+				String name = options.prefix_test + m;
+				iss[m] = new Instances();
+				DB.println("create instances of part " + name);
+				p.pipe.getInstances(name, iss[m]);
+			}
+
+			ExtractorReranker.initFeatures();
+			p.pipeReranker.extractor.init();
+
+			ExtractorReranker.initStat();
+
+			p.train(options, iss);
+
+			p.writeModell(options, p.parametersReranker, null, p.pipe.cl);
+		}
+
+		if (options.test) {
+
+			Reranker p = new Reranker();
+			p.options = options;
+
+			// set up the reranker
+			p.l2i = new Long2Int(options.hsize);
+			p.pipeReranker = new PipeReranker(options);
+			p.pipeReranker.extractor = new ExtractorReranker(p.l2i);
+			p.parametersReranker = new ParametersFloat(p.l2i.size());
+
+			// initialize the parser
+			p.pipe = new Pipe(options);
+
+			// read parsing models
+			p.paramsParsers = new ParametersFloat[options.end + 1];
+
+			String nbestName = "n-best+"
+					+ options.testfile.substring(options.testfile.length() - 12, options.testfile.length() - 1);
+			File fnbest = new File(nbestName);
+			int read = fnbest.exists() ? 2 : 1;
+
+			if (read != 2)
+				for (int m = 0; m <= options.end; m++) {
+					String name = options.prefix_model + m;
+					p.paramsParsers[m] = new ParametersFloat(0);
+					p.readModel(name, p.pipe, p.paramsParsers[m]);
+				}
+
+			p.readModel(options.modelName, p.pipeReranker, p.parametersReranker);
+
+			ExtractorReranker.initFeatures();
+			ExtractorReranker.initStat();
+			p.pipeReranker.extractor.init();
+
+			p.rerankedParses(options, p.pipe, p.parametersReranker, false, nbestName);
+
+		}
+
+		System.out.println();
+
+		if (options.eval) {
+			System.out.println("\nEVALUATION PERFORMANCE:");
+			ParserEvaluator.evaluate(options.goldfile, options.outfile);
+		}
+
+		long end = System.currentTimeMillis();
+		System.out.println("used time " + ((float) ((end - start) / 100) / 10));
+
+		Decoder.executerService.shutdown();
+		Pipe.executerService.shutdown();
+		System.out.println("end.");
+
+	}
+
+	/**
+	 * Read the models and mapping
+	 * 
+	 * @param options
+	 * @param pipe
+	 * @param prm
+	 * @throws IOException
+	 */
+	public void readModel(String modelName, Pipe pipe, Parameters prm) throws IOException {
+
+		DB.println("Reading data started: " + modelName);
+
+		// prepare zipped reader
+		ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(modelName)));
+		zis.getNextEntry();
+		DataInputStream dis = new DataInputStream(new BufferedInputStream(zis));
+
+		pipe.mf.read(dis);
+
+		pipe.cl = new Cluster(dis);
+
+		prm.read(dis);
+
+		Long2Int l2i = new Long2Int(prm.size());
+		DB.println("li size " + l2i.size());
+
+		pipe.extractor = new ExtractorClusterStacked[THREADS];
+
+		for (int t = 0; t < THREADS; t++)
+			pipe.extractor[t] = new ExtractorClusterStacked(l2i);
+
+		ExtractorClusterStacked.initFeatures();
+
+		for (int t = 0; t < THREADS; t++) {
+			pipe.extractor[t].initStat();
+			pipe.extractor[t].init();
+		}
+
+		Edges.read(dis);
+
+		options.decodeProjective = dis.readBoolean();
+
+		ExtractorClusterStacked.maxForm = dis.readInt();
+
+		boolean foundInfo = false;
+		try {
+			String info = null;
+			int icnt = dis.readInt();
+			for (int i = 0; i < icnt; i++) {
+				info = dis.readUTF();
+				System.out.println(info);
+			}
+		} catch (Exception e) {
+			if (!foundInfo)
+				System.out.println("no info about training");
+		}
+
+		dis.close();
+
+		DB.println("Reading data finnished");
+
+		Decoder.NON_PROJECTIVITY_THRESHOLD = (float) options.decodeTH;
+
+		// ExtractorClusterStacked.initStat();
+
+	}
+
+	/**
+	 * Read the models and mapping
+	 * 
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @throws IOException
+	 */
+	public void readModel(String modelName, PipeReranker pipe, Parameters params) throws IOException {
+
+		DB.println("Reading data started: " + modelName);
+
+		// prepare zipped reader
+		ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(modelName)));
+		zis.getNextEntry();
+		DataInputStream dis = new DataInputStream(new BufferedInputStream(zis));
+
+		pipe.mf.read(dis);
+
+		// DB.println("reranker model "+pipe.mf.toString());
+
+		pipe.cl = new Cluster(dis);
+
+		params.read(dis);
+		this.l2i = new Long2Int(params.size());
+		DB.println("li size " + l2i.size());
+
+		pipe.extractor = new ExtractorReranker(l2i);
+
+		ExtractorReranker.initFeatures();
+		ExtractorReranker.initStat();
+
+		pipe.extractor.init();
+
+		Edges.read(dis);
+
+		options.decodeProjective = dis.readBoolean();
+
+		ExtractorClusterStacked.maxForm = dis.readInt();
+
+		boolean foundInfo = false;
+		try {
+			String info = null;
+			int icnt = dis.readInt();
+			for (int i = 0; i < icnt; i++) {
+				info = dis.readUTF();
+				System.out.println(info);
+			}
+		} catch (Exception e) {
+			if (!foundInfo)
+				System.out.println("no info about training");
+		}
+
+		dis.close();
+
+		DB.println("Reading data finnished");
+
+		Decoder.NON_PROJECTIVITY_THRESHOLD = (float) options.decodeTH;
+
+		// ExtractorClusterStacked.initStat();
+
+	}
+
+	/**
+	 * Do the training
+	 * 
+	 * @param instanceLengths
+	 * @param options
+	 * @param pipe
+	 * @param parametersReranker
+	 * @param is
+	 * @param cluster
+	 * @throws IOException
+	 * @throws InterruptedException
+	 * @throws ClassNotFoundException
+	 */
+	public void train(OptionsSuper options, Instances[] iss)
+			throws IOException, InterruptedException, ClassNotFoundException {
+
+		int read = 0; // 0 compute -- 1 compute and write -- 2 read parses
+
+		DB.println("Training Information ");
+		DB.println("-------------------- ");
+
+		ExtractorReranker.initStat();
+		pipeReranker.extractor.init();
+
+		for (Extractor e : this.pipe.extractor) {
+			e.init();
+		}
+
+		int numInstances = 0;
+		int maxLenInstances = 0;
+		// int maxLenSentence=1;
+		for (Instances is : iss) {
+			numInstances += is.size();
+			for (int i = 0; i < is.size(); i++)
+				if (maxLenInstances < is.length(i))
+					maxLenInstances = is.length(i);
+		}
+
+		DataF data = new DataF(maxLenInstances, pipe.mf.getFeatureCounter().get(PipeGen.REL).shortValue());
+
+		int iter = 0;
+		int del = 0;
+		float error = 0;
+		float f1 = 0;
+
+		double upd = (double) (options.count * options.numIters) + options.numIters * 10;
+
+		// float[][] = new float[this.NBest][3];
+		FVR act = new FVR();
+
+		FVR pred = new FVR();
+
+		FVR f = new FVR();
+		long[] vs = new long[ExtractorReranker._FC * maxLenInstances];
+
+		for (; iter < options.numIters; iter++) {
+
+			System.out.print("Iteration " + iter + ": ");
+			error = 0;
+			f1 = 0;
+
+			float las = 0, cnt = 0, averageScore = 0;
+
+			float firstBestTotalError = 0, totalError = 0;
+
+			long start = System.currentTimeMillis();
+
+			long last = System.currentTimeMillis();
+
+			long rerankTime = 0;
+
+			String nbest = "n-best";
+			File fnbest = new File(nbest);
+			read = fnbest.exists() ? 2 : 1;
+
+			DataInputStream dis = null;
+			DataOutputStream dos = null;
+
+			if (read == 1) {
+
+				DB.println("computing and writting nbest list to file: " + nbest);
+
+				ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(nbest)));
+				zos.putNextEntry(new ZipEntry("data"));
+				dos = new DataOutputStream(new BufferedOutputStream(zos));
+			}
+
+			// start reading again
+			if (read == 2) {
+
+				// DB.println("reading nbest list from file: "+nbest);
+
+				ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(nbest)));
+				zis.getNextEntry();
+				dis = new DataInputStream(new BufferedInputStream(zis));
+			}
+
+			HashMap<Integer, Integer> remapped = new HashMap<Integer, Integer>();
+
+			int round = 0, instance = 0, length = 0, count = 0, changes = 0;
+			for (Instances is : iss) {
+
+				F2SF fparser = this.paramsParsers[instance].getFV();
+				round++;
+
+				// go over the sentences in the instance
+				for (int n = 0; n < is.size(); n++) {
+					count += 1;
+					length += is.length(n);
+					upd--;
+
+					if (is.labels[n].length > options.maxLen)
+						continue;
+
+					List<ParseNBest> parses = null;
+
+					short pos[] = is.pposs[n];
+
+					// read or write nbest list
+					if (read == 0 || read == 1 && iter == 0) {
+						data = pipe.fillVector(fparser, is, n, data, pipe.cl, THREADS, l2i);
+						parses = Decoder.decode(pos, data, options.decodeProjective, pipe.extractor[0]);
+
+						if (parses.size() > NBest)
+							parses = parses.subList(0, NBest);
+
+						if (read == 1) {
+							// write the forest
+							dos.writeInt(parses.size());
+							for (int k = 0; k < parses.size(); k++) {
+								dos.writeUTF(parses.get(k).signature());
+								dos.writeFloat((float) parses.get(k).f1);
+							}
+						}
+					} else if (read == 2) {
+						parses = new ArrayList<ParseNBest>();
+						int parseCount = dis.readInt();
+						for (int k = 0; k < parseCount; k++) {
+							ParseNBest p = new ParseNBest(dis.readUTF(), dis.readFloat());
+							if (parses.size() < NBest)
+								parses.add(p);
+						}
+					}
+
+					int best = 0;
+					float bestScore = -100;
+					int goldBest = 0;
+					double goldError = Float.MAX_VALUE;
+
+					long startReranking = System.currentTimeMillis();
+
+					// score the n-best parses
+					for (int k = 0; k < parses.size(); k++) {
+
+						ParseNBest p = parses.get(k);
+
+						pipeReranker.extractor.extractFeatures(is, n, p, parses.indexOf(p), vs, pipe.cl);
+
+						int rank = 1 * ExtractorReranker.s_type;
+
+						f.clear();
+
+						for (long element : vs) {
+							if (element == Integer.MIN_VALUE)
+								break;
+							if (element > 0)
+								f.add(pipeReranker.extractor.li.l2i(element + rank));
+						}
+
+						f.add(pipeReranker.extractor.li.l2i(1 + rank), (float) p.f1);
+						float score = (parametersReranker.getScore(f));
+						if (score > bestScore) { // rankScore[k][2]>
+							bestScore = score;
+							best = k;
+
+						}
+					}
+
+					// get the best parse in the n-best list
+					for (int k = 0; k < parses.size(); k++) {
+
+						if (parses.get(k).heads.length != is.length(n)) {
+							DB.println("error " + n + " " + parses.get(k).heads.length + " " + is.length(n));
+							continue;
+						}
+						double errg = pipe.errors(is, n, parses.get(k));
+						if (goldError > errg) {
+							goldError = errg;
+							goldBest = k;
+						}
+					}
+
+					ParseNBest firstBest = parses.get(0);
+					ParseNBest predParse = parses.get(best);
+					ParseNBest goldBestParse = parses.get(goldBest);
+
+					double e = pipe.errors(is, n, predParse);
+
+					Integer ctb = remapped.get(best);
+					if (ctb == null)
+						remapped.put(best, 1);
+					else
+						remapped.put(best, ctb + 1);
+
+					String info = " 1best-error " + ((length - firstBestTotalError) / length) + " reranked "
+							+ ((length - totalError) / length) + " chd  " + changes + "  " + " ps las " + (las / cnt)
+							+ " avs " + (averageScore / count) + "   ";
+
+					if ((n + 1) % 500 == 0)
+						del = PipeGen.outValueErr(count, Math.round(error * 1000) / 1000, f1 / count, del, last, upd,
+								info);
+
+					firstBestTotalError += Decoder.getError(firstBest, is, n, Decoder.LAS);
+
+					totalError += Decoder.getError(predParse, is, n, Decoder.LAS);
+
+					rerankTime += System.currentTimeMillis() - startReranking;
+
+					if (best != 0) {
+						changes++;
+					}
+
+					las += is.length(n) - Decoder.getError(goldBestParse, is, n, Decoder.LAS);
+					cnt += is.length(n);
+
+					averageScore += predParse.f1;
+
+					if (options.count < count)
+						break;
+
+					if (Decoder.getError(goldBestParse, is, n, Decoder.LAS) >= Decoder.getError(predParse, is, n,
+							Decoder.LAS))
+						continue;
+
+					// get predicted feature vector
+					pipeReranker.extractor.extractFeatures(is, n, predParse, parses.indexOf(predParse), vs, pipe.cl);
+
+					pred.clear();
+					int rank = 1 * ExtractorReranker.s_type;
+
+					for (long element : vs) {
+						if (element == Integer.MIN_VALUE)
+							break;
+						if (element > 0)
+							pred.add(pipeReranker.extractor.li.l2i(element + rank));
+					}
+					pred.add(pipeReranker.extractor.li.l2i(1 + rank), (float) predParse.f1);
+					error += 1;
+
+					pipeReranker.extractor.extractFeatures(is, n, goldBestParse, parses.indexOf(goldBestParse), vs,
+							pipe.cl);
+
+					act.clear();
+					rank = 1 * ExtractorReranker.s_type;
+					for (long element : vs) {
+						if (element == Integer.MIN_VALUE)
+							break;
+						if (element > 0)
+							act.add(pipeReranker.extractor.li.l2i(element + rank));
+					}
+
+					act.add(pipeReranker.extractor.li.l2i(1 + rank), (float) goldBestParse.f1);
+					float lam_dist = parametersReranker.getScore(act) - (parametersReranker.getScore(pred));
+
+					parametersReranker.update(act, pred, is, n, null, upd, e, lam_dist);
+
+				}
+				instance++;
+
+			}
+
+			String info = " td " + ((Decoder.timeDecotder) / 1000000F) + " tr " + ((Decoder.timeRearrange) / 1000000F)
+					+ " te " + ((Pipe.timeExtract) / 1000000F) + " nz " + parametersReranker.countNZ() + " 1best-error "
+					+ ((length - firstBestTotalError) / length) + " reranked-best " + ((length - totalError) / length)
+					+ " rds " + round + "   " + " rerank-t " + (rerankTime / count) + " chd " + changes + "   "
+					+ " ps las " + (las / cnt) + " avs " + (averageScore / count) + "   ";
+
+			// DB.println("remapped "+remapped);
+
+			PipeGen.outValueErr(count, Math.round(error * 1000) / 1000, f1 / count, del, last, upd, info);
+			del = 0;
+			long end = System.currentTimeMillis();
+			System.out.println(" time:" + (end - start));
+			Decoder.timeDecotder = 0;
+			Decoder.timeRearrange = 0;
+			Pipe.timeExtract = 0;
+
+			if (dos != null)
+				dos.close();
+			if (dis != null)
+				dis.close();
+
+		}
+		DB.println("sb " + parametersReranker.parameters[this.pipeReranker.extractor.li
+				.l2i(4090378920L + 1 * ExtractorReranker.s_type)]);// 4090378266
+		parametersReranker.average(iter * numInstances);
+
+	}
+
+	/**
+	 * Do the parsing
+	 * 
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @throws IOException
+	 */
+	private void rerankedParses(OptionsSuper options, Pipe pipe, ParametersFloat params, boolean maxInfo,
+			String nbestName) throws Exception {
+
+		long start = System.currentTimeMillis();
+
+		ExtractorClusterStacked.initFeatures();
+
+		DataInputStream dis = null;
+		DataOutputStream dos = null;
+
+		float olas = 0, olcnt = 0;
+
+		File fnbest = new File(nbestName);
+		int read = fnbest.exists() ? 2 : 1;
+		if (read == 1) {
+
+			DB.println("computing and writting nbest list to file: " + nbestName);
+
+			ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(nbestName)));
+			zos.putNextEntry(new ZipEntry("data"));
+			dos = new DataOutputStream(new BufferedOutputStream(zos));
+		}
+
+		if (read == 2) {
+
+			// DB.println("reading nbest list from file: "+nbestName);
+
+			ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(nbestName)));
+			zis.getNextEntry();
+			dis = new DataInputStream(new BufferedInputStream(zis));
+		}
+
+		for (ParametersFloat paramsParser : this.paramsParsers) {
+
+			CONLLReader09 depReader = new CONLLReader09(options.testfile, options.formatTask);
+			CONLLWriter09 depWriter = new CONLLWriter09(options.outfile, options.formatTask);
+
+			float las = 0, lcnt = 0, averageScore = 0;
+			int cnt = 0;
+			int del = 0;
+
+			long last = System.currentTimeMillis();
+
+			String[] types = new String[pipe.mf.getFeatureCounter().get(PipeGen.REL)];
+			for (Entry<String, Integer> e : MFB.getFeatureSet().get(PipeGen.REL).entrySet())
+				types[e.getValue()] = e.getKey();
+
+			System.out.print("Processing Sentence: ");
+
+			FVR f = new FVR();
+
+			while (true) {
+
+				Instances is = new Instances();
+				is.init(1, new MFB(), options.formatTask);
+
+				SentenceData09 instance = pipe.nextInstance(is, depReader);
+				if (instance == null)
+					break;
+				cnt++;
+
+				String[] forms = instance.forms;
+
+				List<ParseNBest> parses = null;
+
+				// read or write nbest list
+				if (read == 0 || read == 1) {
+					parses = this.parseNBest(instance, paramsParser);
+					// data = pipe.fillVector(fparser, is, n, data,
+					// pipe.cl,THREADS);
+					// parses = Decoder.decode(pos, data,
+					// options.decodeProjective);
+
+					if (parses.size() > NBest)
+						parses = parses.subList(0, NBest);
+
+					if (read == 1) {
+						// write the forest
+						dos.writeInt(parses.size());
+						for (int k = 0; k < parses.size(); k++) {
+							dos.writeUTF(parses.get(k).signature());
+							dos.writeFloat((float) parses.get(k).f1);
+						}
+					}
+				} else if (read == 2) {
+					parses = new ArrayList<ParseNBest>();
+					int parseCount = dis.readInt();
+					for (int k = 0; k < parseCount; k++) {
+						ParseNBest p = new ParseNBest(dis.readUTF(), dis.readFloat());
+						if (parses.size() < NBest)
+							parses.add(p);
+					}
+				}
+
+				nbest += parses.size();
+
+				// List<ParseNBest> parses = this.parseNBest(instance,
+				// this.paramsParsers[m]);
+
+				long vs[] = new long[ExtractorReranker._FC * is.length(0)];
+
+				float bestScore = 0;
+				int best = 0;
+
+				for (int k = 0; k < parses.size(); k++) {
+
+					ParseNBest p = parses.get(k);
+
+					pipeReranker.extractor.extractFeatures(is, 0, p, k, vs, pipeReranker.cl);
+
+					int rank = 1 * ExtractorReranker.s_type;
+					f.clear();
+					for (long element : vs) {
+						if (element == Integer.MIN_VALUE)
+							break;
+						if (element > 0)
+							f.add(pipeReranker.extractor.li.l2i(element + rank));
+					}
+					f.add(pipeReranker.extractor.li.l2i(1 + rank), (float) p.f1);
+
+					float score = (parametersReranker.getScore(f));
+					if (score > bestScore) { // rankScore[k][2]>
+						bestScore = score;
+						best = k;
+
+					}
+				}
+				// change to best
+				ParseNBest d = parses.get(best);
+
+				las += (is.length(0) - 1) - Decoder.getError(d, is, 0, Decoder.LAS);
+				lcnt += is.length(0) - 1;
+
+				averageScore += d.f1;
+
+				SentenceData09 i09 = new SentenceData09(instance);
+
+				i09.createSemantic(instance);
+
+				for (int j = 0; j < forms.length - 1; j++) {
+					i09.plabels[j] = types[d.labels[j + 1]];
+					i09.pheads[j] = d.heads[j + 1];
+				}
+
+				depWriter.write(i09);
+				String info = "" + (averageScore / cnt) + "   ";
+
+				if (cnt % 10 == 0)
+					del = PipeGen.outValueErr(cnt, lcnt - las, las / lcnt, del, last, 0, info);// outValue(cnt,
+																								// del,last,
+																								// info);
+
+			}
+
+			// pipe.close();
+
+			depWriter.finishWriting();
+			long end = System.currentTimeMillis();
+			DB.println("rank\n" + rank + "\n");
+			DB.println("x-best-las " + amongxbest + " x-best-ula " + amongxbest_ula + " cnt " + cnt + " x-best-las "
+					+ ((float) amongxbest / cnt) + " x-best-ula " + ((float) amongxbest_ula / cnt) + " nbest "
+					+ ((float) nbest / cnt) + " 1best " + ((float) (rank.get(0) == null ? 0 : rank.get(0)) / cnt)
+					+ " best-proj " + ((float) bestProj / cnt) + " Sum LAS "
+					+ ((float) this.smallestErrorSum / countAllNodes) + " " + "" + (las / lcnt));
+
+			// DB.println("errors "+error);
+			olas += las;
+			olcnt += lcnt;
+			rank.clear();
+			amongxbest = 0;
+			amongxbest_ula = 0;
+			cnt = 0;
+			nbest = 0;
+			bestProj = 0;
+			if (maxInfo)
+				System.out.println("Used time " + (end - start));
+			if (maxInfo)
+				System.out.println("forms count " + Instances.m_count + " unkown " + Instances.m_unkown);
+		}
+
+		if (dos != null) {
+			dos.flush();
+			dos.close();
+		}
+		if (dis != null)
+			dis.close();
+
+		DB.println("\n overall las " + (olas / olcnt));
+	}
+
+	public SentenceData09 parse(SentenceData09 instance, ParametersFloat params) {
+
+		String[] types = new String[pipe.mf.getFeatureCounter().get(PipeGen.REL)];
+		for (Entry<String, Integer> e : MFB.getFeatureSet().get(PipeGen.REL).entrySet())
+			types[e.getValue()] = e.getKey();
+
+		Instances is = new Instances();
+		is.init(1, new MFB(), options.formatTask);
+		new CONLLReader09().insert(is, instance);
+
+		String[] forms = instance.forms;
+
+		// use for the training ppos
+		DataF d2;
+		try {
+			d2 = pipe.fillVector(params.getFV(), is, 0, null, pipe.cl, THREADS, l2i);// cnt-1
+		} catch (Exception e) {
+			e.printStackTrace();
+			return null;
+		}
+		short[] pos = is.pposs[0];
+
+		List<ParseNBest> parses = null;
+		Parse d = null;
+		try {
+			parses = Decoder.decode(pos, d2, options.decodeProjective, pipe.extractor[0]); // cnt-1
+			d = parses.get(0);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		if (parses.size() > NBest)
+			parses = parses.subList(0, NBest);
+
+		int g_las = Decoder.getGoldRank(parses, is, 0, Decoder.LAS);
+		int g_ula = Decoder.getGoldRank(parses, is, 0, !Decoder.LAS);
+
+		int smallest = Decoder.getSmallestError(parses, is, 0, !Decoder.LAS);
+		smallestErrorSum += is.length(0) - smallest;
+		countAllNodes += is.length(0);
+
+		if (g_las >= 0)
+			amongxbest++;
+		if (g_ula >= 0)
+			amongxbest_ula++;
+
+		nbest += parses.size();
+
+		Integer r = rank.get(g_las);
+		if (r == null)
+			rank.put(g_las, 1);
+		else
+			rank.put(g_las, r + 1);
+
+		this.pipe.errors(is, 0, d);
+
+		float errBestProj = (float) this.pipe.errors(is, 0, Decoder.bestProj);
+
+		if (errBestProj == 0)
+			bestProj++;
+
+		SentenceData09 i09 = new SentenceData09(instance);
+
+		i09.createSemantic(instance);
+
+		for (int j = 0; j < forms.length - 1; j++) {
+			i09.plabels[j] = types[d.labels[j + 1]];
+			i09.pheads[j] = d.heads[j + 1];
+		}
+		return i09;
+
+	}
+
+	public List<ParseNBest> parseNBest(SentenceData09 instance, ParametersFloat params) {
+
+		Instances is = new Instances();
+		is.init(1, new MFB(), options.formatTask);
+		new CONLLReader09().insert(is, instance);
+
+		// use for the training ppos
+		DataF d2;
+		try {
+			d2 = pipe.fillVector(params.getFV(), is, 0, null, pipe.cl, THREADS, l2i);// cnt-1
+		} catch (Exception e) {
+			e.printStackTrace();
+			return null;
+		}
+		short[] pos = is.pposs[0];
+
+		List<ParseNBest> parses = null;
+		try {
+			parses = Decoder.decode(pos, d2, options.decodeProjective, pipe.extractor[0]); // cnt-1
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		if (parses.size() > NBest)
+			parses = parses.subList(0, NBest);
+
+		return parses;
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.tools.Tool#apply(is2.data.SentenceData09)
+	 */
+	@Override
+	public SentenceData09 apply(SentenceData09 snt09) {
+
+		try {
+			parse(snt09, this.parametersReranker);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		Decoder.executerService.shutdown();
+		Pipe.executerService.shutdown();
+
+		return snt09;
+	}
+
+	/**
+	 * Write the parsing model
+	 *
+	 * @param options
+	 * @param params
+	 * @param extension
+	 * @throws FileNotFoundException
+	 * @throws IOException
+	 */
+	private void writeModell(OptionsSuper options, ParametersFloat params, String extension, Cluster cs)
+			throws FileNotFoundException, IOException {
+
+		String name = extension == null ? options.modelName : options.modelName + extension;
+		DB.println("Writting model: " + name);
+		ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(name)));
+		zos.putNextEntry(new ZipEntry("data"));
+		DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(zos));
+
+		MFB.writeData(dos);
+		cs.write(dos);
+
+		params.write(dos);
+
+		Edges.write(dos);
+
+		dos.writeBoolean(options.decodeProjective);
+
+		dos.writeInt(ExtractorClusterStacked.maxForm);
+
+		dos.writeInt(5); // Info count
+		dos.writeUTF("Used parser   " + Reranker.class.toString());
+		dos.writeUTF("Creation date " + (new SimpleDateFormat("yyyy.MM.dd HH:mm:ss")).format(new Date()));
+		dos.writeUTF("Training data " + options.trainfile);
+		dos.writeUTF("Iterations    " + options.numIters + " Used sentences " + options.count);
+		dos.writeUTF("Cluster       " + options.clusterFile);
+
+		dos.flush();
+		dos.close();
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/parserR2/package.html b/dependencyParser/experimental/mate-tools/src/is2/parserR2/package.html
new file mode 100755
index 0000000..6b06482
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/parserR2/package.html
@@ -0,0 +1,3 @@
+Package info
+ - n-best parser
+<br>
\ No newline at end of file
diff --git a/dependencyParser/experimental/mate-tools/src/is2/tag/ExtractorT2.java b/dependencyParser/experimental/mate-tools/src/is2/tag/ExtractorT2.java
new file mode 100644
index 0000000..688dc21
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/tag/ExtractorT2.java
@@ -0,0 +1,766 @@
+package is2.tag;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map.Entry;
+
+import is2.data.Cluster;
+import is2.data.F2SF;
+import is2.data.Instances;
+import is2.data.InstancesTagger;
+import is2.data.Long2IntInterface;
+import is2.data.ParametersFloat;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.tools.IPipe;
+import is2.util.OptionsSuper;
+
+final public class ExtractorT2 extends PipeGen implements IPipe {
+
+	final static int _MAX = 71;
+
+	private static final String STWRD = "STWRD", STPOS = "STPOS";
+
+	private static short s_pos, s_word, s_char;
+	protected static short s_type;
+	private static int _strp;
+	static int _CEND;
+
+	public String[] types;
+
+	final public MFO mf;
+
+	final MFO.Data4 d1 = new MFO.Data4(), d2 = new MFO.Data4(), d3 = new MFO.Data4(), dw = new MFO.Data4(),
+			dwp = new MFO.Data4();
+
+	Cluster cl;
+
+	private OptionsSuper options;
+
+	public ExtractorT2(OptionsSuper options, MFO mf) throws IOException {
+		this.mf = mf;
+		this.options = options;
+	}
+
+	public HashMap<Integer, int[]> _pps = new HashMap<Integer, int[]>();
+
+	private Lexicon lx;
+
+	public int corpusWrds = 0;
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.tag5.IPipe#createInstances(java.lang.String, java.io.File,
+	 * is2.data.InstancesTagger)
+	 */
+	@Override
+	public Instances createInstances(String file) {
+		return createInstances(file, -1, -1);
+	}
+
+	public Instances createInstances(String file, int skipStart, int skipEnd) {
+
+		InstancesTagger is = new InstancesTagger();
+
+		CONLLReader09 depReader = new CONLLReader09(CONLLReader09.NO_NORMALIZE);
+
+		depReader.startReading(file);
+		mf.register(POS, "<root-POS>");
+		mf.register(WORD, "<root>");
+
+		System.out.println("Registering feature parts ");
+
+		HashMap<Integer, HashSet<Integer>> pps = new HashMap<Integer, HashSet<Integer>>();
+
+		int ic = 0;
+		while (true) {
+
+			SentenceData09 instance1 = depReader.getNext();
+
+			if (instance1 == null)
+				break;
+			ic++;
+
+			String[] w = instance1.forms;
+			for (String element : w)
+				mf.register(WORD, element);
+			for (String element : w)
+				registerChars(CHAR, element);
+			for (String element : w)
+				registerChars(CHAR, element.toLowerCase());
+
+			w = instance1.plemmas;
+			for (String element : w)
+				mf.register(WORD, element);
+			for (String element : w)
+				registerChars(CHAR, element);
+
+			w = instance1.gpos;
+			for (String element : w) {
+				mf.register(POS, element);
+			}
+			for (int i1 = 0; i1 < w.length; i1++) {
+				HashSet<Integer> ps = pps.get(mf.getValue(POS, w[i1]));
+				if (ps == null) {
+					ps = new HashSet<Integer>();
+					pps.put(mf.getValue(POS, w[i1]), ps);
+				}
+				if (i1 + 1 < w.length)
+					ps.add(mf.getValue(POS, w[i1 + 1]));
+			}
+
+		}
+
+		for (Entry<Integer, HashSet<Integer>> e : pps.entrySet()) {
+			int[] ps = new int[e.getValue().size()];
+			int j = 0;
+			for (int k : e.getValue().toArray(new Integer[0])) {
+				ps[j++] = k;
+			}
+			_pps.put(e.getKey(), ps);
+			// System.out.println("put "+e.getKey()+" "+ps.length+" pps size
+			// "+_pps.size());
+		}
+
+		System.out.println("words in corpus " + (corpusWrds = mf.getFeatureCounter().get(PipeGen.WORD)));
+		if (options.clusterFile == null)
+			cl = new Cluster();
+		else
+			cl = new Cluster(options.clusterFile, mf, 6);
+
+		if (options.lexicon == null)
+			lx = new Lexicon(new byte[0][0]);
+		else
+			lx = new Lexicon(options.lexicon, mf);
+
+		initFeatures();
+
+		mf.calculateBits();
+		initValues();
+
+		System.out.println("" + mf.toString());
+
+		depReader.startReading(file);
+
+		int num1 = 0;
+
+		int instanceCount = 0;
+
+		System.out.print("Creating Instances: ");
+
+		is.init(ic, mf);
+		int del = 0;
+
+		while (true) {
+			if (num1 % 100 == 0)
+				del = outValue(num1, del);
+
+			if (num1 >= skipStart && num1 < skipEnd && skipStart >= 0) {
+				SentenceData09 instance1 = depReader.getNext();
+				if (instance1 == null)
+					break;
+				num1++;
+				continue;
+			}
+
+			SentenceData09 instance1 = depReader.getNext(is);
+			if (instance1 == null)
+				break;
+
+			is.fillChars(instance1, instanceCount, _CEND);
+			for (int k = 0; k < instance1.length(); k++) {
+				if (instance1.ppos[k].contains("\\|"))
+
+					is.pposs[num1][k] = (short) mf.getValue(FM, instance1.ppos[k].split("\\|")[1]);
+			}
+
+			if (num1 > options.count)
+				break;
+
+			num1++;
+			instanceCount++;
+		}
+		outValue(num1, del);
+		System.out.println();
+
+		types = MFO.reverse(mf.getFeatureSet().get(POS));
+		return is;
+	}
+
+	private void registerChars(String type, String word) {
+		for (int i = 0; i < word.length(); i++)
+			mf.register(type, Character.toString(word.charAt(i)));
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.tag5.IPipe#initValues()
+	 */
+	@Override
+	public void initValues() {
+		s_pos = mf.getFeatureBits(POS);
+		s_word = mf.getFeatureBits(WORD);
+		s_type = mf.getFeatureBits(TYPE);
+		s_char = mf.getFeatureBits(CHAR);
+
+		d1.a0 = s_type;
+		d1.a1 = s_pos;
+		d1.a2 = s_word;
+		d1.a3 = s_word;
+		d2.a0 = s_type;
+		d2.a1 = s_pos;
+		d2.a2 = s_pos;
+		d2.a3 = s_pos;
+		d2.a4 = s_pos;
+		d2.a5 = s_pos;
+		d2.a6 = s_pos;
+		d3.a0 = s_type;
+		d3.a1 = s_pos;
+		d3.a2 = s_char;
+		d3.a3 = s_char;
+		d3.a4 = s_char;
+		d3.a5 = s_char;
+		d3.a6 = s_char;
+		d3.a7 = s_char;
+		dw.a0 = s_type;
+		dw.a1 = s_pos;
+		dw.a2 = s_word;
+		dw.a3 = s_word;
+		dw.a4 = s_word;
+		dw.a5 = s_word;
+		dw.a6 = s_word;
+		dw.a7 = s_word;
+		dwp.a0 = s_type;
+		dwp.a1 = s_pos;
+		dwp.a2 = s_word;
+		dwp.a3 = s_pos;
+		dwp.a4 = s_word;
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.tag5.IPipe#initFeatures()
+	 */
+	@Override
+	public void initFeatures() {
+		// 62
+		for (int t = 0; t < 67; t++)
+			mf.register(TYPE, "F" + t);
+
+		mf.register(POS, MID);
+		_strp = mf.register(POS, STR);
+		mf.register(POS, END);
+
+		mf.register(WORD, STR);
+		mf.register(WORD, END);
+
+		_CEND = mf.register(CHAR, END);
+
+		mf.register(WORD, STWRD);
+		mf.register(POS, STPOS);
+
+	}
+
+	final public void addFeatures(InstancesTagger is, int ic, String fs, int i, short pposs[], int[] forms,
+			int[] lemmas, long[] vs) {
+
+		int c0 = is.chars[ic][i][0], c1 = is.chars[ic][i][1], c2 = is.chars[ic][i][2], c3 = is.chars[ic][i][3],
+				c4 = is.chars[ic][i][4], c5 = is.chars[ic][i][5];
+		int e0 = is.chars[ic][i][6], e1 = is.chars[ic][i][7], e2 = is.chars[ic][i][8], e3 = is.chars[ic][i][9],
+				e4 = is.chars[ic][i][10];
+
+		int f = 1, n = 0;
+		short upper = 0, number = 1;
+		for (int k1 = 0; k1 < fs.length(); k1++) {
+			char c = fs.charAt(k1);
+			if (Character.isUpperCase(c)) {
+				if (k1 == 0)
+					upper = 1;
+				else {
+					// first char + another
+					if (upper == 1)
+						upper = 3;
+					// another uppercase in the word
+					else if (upper == 0)
+						upper = 2;
+				}
+			}
+
+			// first
+			if (Character.isDigit(c) && k1 == 0)
+				number = 2;
+			else if (Character.isDigit(c) && number == 1)
+				number = 3;
+			// if(number==2 &&Character.isDigit(c)) number=4;
+			// if(number==4 && !Character.isDigit(c)) number=5;
+		}
+
+		// if (i==0 && upper>0) upper+=4;
+		int form = forms[i], form2 = forms[i] < corpusWrds ? forms[i] : -1;
+
+		int len = forms.length;
+		long l;
+		d1.v0 = f++;
+		d1.v2 = form2;
+		l = mf.calc3(d1);
+		vs[n++] = mf.calc3(d1);
+
+		d1.v0 = f++;
+		d1.v2 = is.formlc[ic][i];
+		vs[n++] = mf.calc3(d1);
+
+		d3.v2 = c0;
+		d3.v3 = c1;
+		d3.v4 = c2;
+		d3.v5 = c3;
+		d3.v6 = c4;
+		d3.v0 = f++;
+		vs[n++] = mf.calc3(d3);
+		d3.v0 = f++;
+		vs[n++] = mf.calc4(d3);
+		d3.v0 = f++;
+		vs[n++] = mf.calc5(d3);
+		d3.v0 = f++;
+		vs[n++] = mf.calc6(d3);
+		d3.v0 = f++;
+		vs[n++] = mf.calc7(d3);
+
+		if (form != -1) {
+			d3.v2 = c2;
+			d3.v3 = c3;
+			d3.v4 = c4;
+			d3.v5 = c5;
+			d3.v6 = cl.getLP(form);
+			d3.v0 = f;
+			vs[n++] = mf.calc6(d3);
+			d3.v0 = f + 1;
+			vs[n++] = mf.calc7(d3);
+		}
+		f += 2;
+
+		if (form > 0) {
+			d3.v0 = f;
+			d3.v5 = cl.getLP(form);
+			vs[n++] = mf.calc6(d3);
+			d3.v0 = f + 1;
+			d3.v4 = cl.getLP(form);
+			vs[n++] = mf.calc5(d3);
+			d3.v0 = f + 2;
+			d3.v3 = cl.getLP(form);
+			vs[n++] = mf.calc4(d3);
+		}
+		f += 5;
+
+		d3.v2 = e0;
+		d3.v3 = e1;
+		d3.v4 = e2;
+		d3.v5 = e3;
+		d3.v6 = e4;
+		d3.v0 = f++;
+		vs[n++] = mf.calc3(d3);
+		d3.v0 = f++;
+		vs[n++] = l = mf.calc4(d3);
+		vs[n++] = d3.calcs(3, upper, l);
+		d3.v0 = f++;
+		vs[n++] = l = mf.calc5(d3);
+		vs[n++] = d3.calcs(3, upper, l);
+		d3.v0 = f++;
+		vs[n++] = l = mf.calc6(d3);
+		vs[n++] = d3.calcs(3, upper, l);
+		d3.v0 = f++;
+		vs[n++] = l = mf.calc7(d3);
+		vs[n++] = d3.calcs(3, upper, l);
+
+		if (form > 0) {
+			d3.v0 = f;
+			d3.v5 = cl.getLP(form);
+			vs[n++] = mf.calc6(d3);
+			d3.v0 = f + 1;
+			d3.v4 = cl.getLP(form);
+			vs[n++] = mf.calc5(d3);
+			d3.v0 = f + 2;
+			d3.v3 = cl.getLP(form);
+			vs[n++] = mf.calc4(d3);
+
+			d3.v2 = e0;
+			d3.v3 = e1;
+			d3.v4 = e2;
+
+			d3.v0 = f + 3;
+			d3.v2 = lx.getTag(form);
+			vs[n++] = mf.calc3(d3);
+			d3.v0 = f + 4;
+			d3.v4 = cl.getLP(form);
+			vs[n++] = mf.calc5(d3);
+			d3.v0 = f + 5;
+			d3.v3 = cl.getLP(form);
+			vs[n++] = mf.calc4(d3);
+		}
+		f += 6;
+
+		// sign three-grams
+		d3.v0 = f++;
+		d3.v2 = c1;
+		d3.v3 = c2;
+		d3.v4 = c3;
+		vs[n++] = mf.calc5(d3);
+		d3.v0 = f++;
+		d3.v2 = c2;
+		d3.v3 = c3;
+		d3.v4 = c4;
+		vs[n++] = mf.calc5(d3);
+		d3.v0 = f++;
+		d3.v2 = c3;
+		d3.v3 = c4;
+		d3.v4 = c5;
+		vs[n++] = mf.calc5(d3);
+
+		// sign quad-grams
+		d3.v0 = f++;
+		d3.v2 = c1;
+		d3.v3 = c2;
+		d3.v4 = c3;
+		d3.v5 = c4;
+		vs[n++] = mf.calc6(d3);
+		d3.v0 = f++;
+		d3.v2 = c2;
+		d3.v3 = c3;
+		d3.v4 = c4;
+		d3.v5 = c5;
+		vs[n++] = mf.calc6(d3); // changed to 6
+
+		if (i + 1 < len && forms[i + 1] < this.corpusWrds) {
+			dw.v0 = f;
+			dw.v2 = forms[i + 1];
+			dw.v3 = form2;
+			vs[n++] = mf.calc4(dw);
+		}
+		f++;
+
+		if (len > i + 1) {
+
+			if (forms[i + 1] < corpusWrds) {
+				dw.v0 = f;
+				dw.v2 = forms[i + 1];
+				vs[n++] = mf.calc3(dw);
+			}
+
+			d3.v0 = f + 1;
+			d3.v2 = is.chars[ic][i + 1][0];
+			vs[n++] = mf.calc3(d3);
+			d3.v0 = f + 2;
+			d3.v2 = is.chars[ic][i + 1][6];
+			vs[n++] = mf.calc3(d3);
+
+			d3.v2 = e0;
+			d3.v3 = e1;
+
+			d3.v0 = f + 3;
+			d3.v4 = is.chars[ic][i + 1][0];
+			vs[n++] = mf.calc5(d3);
+			d3.v0 = f + 4;
+			d3.v4 = is.chars[ic][i + 1][6];
+			vs[n++] = mf.calc5(d3);
+
+			if (is.chars[ic][i + 1][11] > 1) { // instance.forms[i+1].length()
+
+				d3.v0 = f + 5;
+				d3.v2 = is.chars[ic][i + 1][0];
+				d3.v3 = is.chars[ic][i + 1][1];
+				vs[n++] = mf.calc4(d3);
+				d3.v0 = f + 6;
+				d3.v2 = is.chars[ic][i + 1][6];
+				d3.v3 = is.chars[ic][i + 1][7];
+				vs[n++] = mf.calc4(d3);
+
+				d3.v2 = e0;
+				d3.v3 = e1;
+
+				d3.v0 = f + 7;
+				d3.v4 = is.chars[ic][i + 1][0];
+				d3.v5 = is.chars[ic][i + 1][1];
+				vs[n++] = mf.calc6(d3);
+				d3.v0 = f + 8;
+				d3.v4 = is.chars[ic][i + 1][6];
+				d3.v5 = is.chars[ic][i + 1][7];
+				vs[n++] = mf.calc6(d3);
+
+				if (forms[i + 1] > 0) {
+					d3.v0 = f + 9;
+					d3.v2 = is.chars[ic][i + 1][0];
+					d3.v3 = is.chars[ic][i + 1][1];
+					d3.v4 = cl.getLP(forms[i + 1]);
+					vs[n++] = mf.calc5(d3);
+					d3.v0 = f + 10;
+					d3.v2 = is.chars[ic][i + 1][6];
+					d3.v3 = is.chars[ic][i + 1][7];
+					d3.v4 = cl.getLP(forms[i + 1]);
+					vs[n++] = mf.calc5(d3);
+				}
+			}
+
+			if (forms[i + 1] > 0) {
+
+				dw.v0 = f + 11;
+				dw.v2 = cl.getLP(forms[i + 1]);
+				dw.v3 = form2;
+				vs[n++] = mf.calc4(dw);
+
+				// if (forms[i]>0){
+				// dw.v0=f+12; dw.v2= cl.getLP(forms[i+1]);
+				// dw.v3=lx.getTag(form);vs[n++]=mf.calc4(dw);
+				// dw.v0=f+13; dw.v2= cl.getLP(forms[i]);
+				// dw.v3=lx.getTag(forms[i+1]);vs[n++]=mf.calc4(dw);
+				// }
+			}
+
+			if (len > i + 2) {
+				if (forms[i + 2] < corpusWrds && forms[i + 1] < corpusWrds) {
+					dw.v0 = f + 12;
+					dw.v2 = forms[i + 2];
+					dw.v3 = forms[i + 1];
+					vs[n++] = mf.calc4(dw);
+					vs[n++] = mf.calc3(dw);
+				}
+				d2.v0 = f + 13;
+				d2.v2 = pposs[i + 1];
+				d2.v3 = pposs[i + 2];
+				vs[n++] = mf.calc4(d2);
+			}
+
+			if (len > i + 3) {
+				if (forms[i + 3] < this.corpusWrds && forms[i + 2] < this.corpusWrds) {
+					dw.v0 = f + 14;
+					dw.v2 = forms[i + 3];
+					dw.v3 = forms[i + 2];
+					vs[n++] = mf.calc4(dw);
+					vs[n++] = mf.calc3(dw);
+				}
+			}
+		}
+		f += 15;
+
+		// length
+		d2.v0 = f++;
+		d2.v2 = is.chars[ic][i][11];
+		vs[n++] = mf.calc3(d2);
+
+		// contains a number
+		d2.v0 = f++;
+		d2.v2 = number;
+		vs[n++] = mf.calc3(d2);
+		if (lemmas[i] < corpusWrds) {
+			d1.v0 = f;
+			d1.v2 = lemmas[i];
+			vs[n++] = mf.calc3(d1);
+		}
+		f++;
+
+		if (i != 0 && len > i + 1) {
+
+			if (lemmas[i - 1] < corpusWrds && lemmas[i + 1] < corpusWrds) {
+				dw.v0 = f;
+				dw.v2 = lemmas[i - 1];
+				dw.v3 = lemmas[i + 1];
+				vs[n++] = mf.calc4(dw);
+			}
+
+			d2.v0 = f + 1;
+			d2.v2 = pposs[i - 1];
+			d2.v3 = pposs[i + 1];
+			vs[n++] = mf.calc4(d2);
+		}
+		f += 2;
+
+		d2.v0 = f++;
+		d2.v2 = i >= 1 ? pposs[i - 1] : _strp;
+		vs[n++] = mf.calc3(d2);
+
+		if (i > 0) {
+
+			dw.v0 = f;
+			dw.v2 = i >= 1 ? forms[i - 1] < corpusWrds ? forms[i - 1] : -1 : _strp;
+			vs[n++] = mf.calc3(dw);
+			f++;
+
+			if (lemmas[i - 1] < corpusWrds) {
+				dw.v0 = f;
+				dw.v2 = i >= 1 ? lemmas[i - 1] : _strp;
+				vs[n++] = mf.calc3(dw);
+			}
+			f++;
+
+			// if (len>i+1) {d2.v0=f; d2.v2= pposs[i-1];d2.v3= pposs[i+1];
+			// vs[n++]=mf.calc4(d2);}
+			// f++;
+
+			if (i > 1) {
+
+				d2.v0 = f++;
+				d2.v2 = i < 2 ? _strp : pposs[i - 2];
+				vs[n++] = mf.calc3(d2);
+				d2.v0 = f++;
+				d2.v2 = pposs[i - 1];
+				d2.v3 = pposs[i - 2];
+				vs[n++] = mf.calc4(d2);
+
+				if (forms[i - 2] < corpusWrds) {
+					dw.v0 = f;
+					dw.v2 = forms[i - 2];
+					vs[n++] = mf.calc3(dw);
+				}
+				f++;
+				if (forms[i - 1] < corpusWrds) {
+					dwp.v0 = f;
+					dwp.v2 = forms[i - 1];
+					dwp.v3 = pposs[i - 2];
+					vs[n++] = mf.calc4(dwp);
+				}
+				f++;
+				if (forms[i - 2] < corpusWrds) {
+					dwp.v0 = f;
+					dwp.v2 = forms[i - 2];
+					dwp.v3 = pposs[i - 1];
+					vs[n++] = mf.calc4(dwp);
+				}
+				f++;
+
+				if (i > 2) {
+					d2.v0 = f++;
+					d2.v2 = pposs[i - 3];
+					vs[n++] = mf.calc3(d2);
+					d2.v0 = f++;
+					d2.v2 = pposs[i - 2];
+					d2.v3 = pposs[i - 3];
+					vs[n++] = mf.calc4(d2);
+					if (forms[i - 3] < this.corpusWrds && forms[i - 2] < this.corpusWrds) {
+						dw.v0 = f;
+						dw.v2 = forms[i - 3];
+						dw.v3 = forms[i - 2];
+						vs[n++] = mf.calc4(dw);
+					}
+					f++;
+				}
+			}
+		}
+		vs[n] = Integer.MIN_VALUE;
+	}
+
+	public int fillFeatureVectorsOne(String fs, ParametersFloat params, int w1, InstancesTagger is, int n, short[] pos,
+			Long2IntInterface li, float[] score) {
+
+		float best = -1000;
+		int bestType = -1;
+
+		F2SF f = new F2SF(params.parameters);
+
+		long vs[] = new long[_MAX];
+		int lemmas[];
+		if (options.noLemmas)
+			lemmas = new int[is.length(n)];
+		else
+			lemmas = is.plemmas[n];
+		addFeatures(is, n, fs, w1, pos, is.forms[n], lemmas, vs);
+
+		// for(int t = 0; t < types.length; t++) {
+
+		for (int t = 0; t < types.length; t++) {
+
+			int p = t << s_type;
+
+			f.clear();
+			for (int k = 0; vs[k] != Integer.MIN_VALUE; k++)
+				if (vs[k] > 0)
+					f.add(li.l2i(vs[k] + p));
+			if (f.score > best) {
+				bestType = t;
+				score[w1] = best = f.score;
+			}
+		}
+		return bestType;
+
+	}
+
+	public ArrayList<POS> classify(String fs, ParametersFloat params, int w1, InstancesTagger is, int n, short[] pos,
+			Long2IntInterface li) {
+
+		F2SF f = new F2SF(params.parameters);
+
+		long vs[] = new long[_MAX];
+		int lemmas[];
+		if (options.noLemmas)
+			lemmas = new int[is.length(n)];
+		else
+			lemmas = is.plemmas[n];
+		addFeatures(is, n, fs, w1, pos, is.forms[n], lemmas, vs);
+
+		ArrayList<POS> best = new ArrayList<POS>(types.length);
+
+		for (int t = 0; t < types.length; t++) {
+
+			int p = t << s_type;
+
+			f.clear();
+			f.add(vs, li, p);
+			POS px = new POS(t, f.score);
+			best.add(px);
+		}
+		Collections.sort(best);
+		return best;
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.tag5.IPipe#write(java.io.DataOutputStream)
+	 */
+	@Override
+	public void write(DataOutputStream dos) {
+		try {
+			this.cl.write(dos);
+			this.lx.write(dos);
+			dos.writeInt(this.corpusWrds);
+			dos.writeInt(_pps.size());
+
+			for (Entry<Integer, int[]> e : _pps.entrySet()) {
+				dos.writeInt(e.getValue().length);
+				for (int k : e.getValue())
+					dos.writeInt(k);
+				dos.writeInt(e.getKey());
+			}
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+	public void read(DataInputStream dis) {
+		try {
+			this.cl = new Cluster(dis);
+			this.lx = new Lexicon(dis);
+			this.corpusWrds = dis.readInt();
+
+			int pc = dis.readInt();
+			for (int j = 0; j < pc; j++) {
+				int ps[] = new int[dis.readInt()];
+				for (int k = 0; k < ps.length; k++)
+					ps[k] = dis.readInt();
+				_pps.put(dis.readInt(), ps);
+			}
+			// System.out.println("_pps "+ps.length);
+
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/tag/Lexicon.java b/dependencyParser/experimental/mate-tools/src/is2/tag/Lexicon.java
new file mode 100644
index 0000000..f719f26
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/tag/Lexicon.java
@@ -0,0 +1,150 @@
+/**
+ *
+ */
+package is2.tag;
+
+import java.io.BufferedReader;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import is2.data.IEncoderPlus;
+import is2.data.PipeGen;
+import is2.util.DB;
+
+/**
+ * @author Dr. Bernd Bohnet, 07.01.2011
+ *
+ *
+ */
+public class Lexicon {
+
+	public static final String FR = "FR", TAG = "TAG";
+
+	final byte[][] word2tag;
+
+	public Lexicon(byte[][] w2t) {
+
+		word2tag = w2t;
+	}
+
+	public Lexicon(String clusterFile, IEncoderPlus mf) {
+
+		final String REGEX = "\t";
+
+		// register words
+		try {
+			BufferedReader inputReader = new BufferedReader(
+					new InputStreamReader(new FileInputStream(clusterFile), "UTF-8"), 32768);
+
+			int cnt = 0;
+			String line;
+			while ((line = inputReader.readLine()) != null) {
+
+				try {
+					String[] split = line.split(REGEX);
+					// int f = Integer.parseInt(split[2]);
+					// if (f>2) {
+					cnt++;
+					mf.register(PipeGen.WORD, split[0]);
+					mf.register(TAG, split[1]); // tag
+
+					if (split.length > 1)
+						mf.register(FR, split[1]); // frequency
+					// }
+				} catch (Exception e) {
+					System.out.println("Error in lexicon line " + cnt + " error: " + e.getMessage());
+				}
+			}
+			System.out.println("read number of words from lexicon " + cnt);
+			inputReader.close();
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		word2tag = new byte[mf.getFeatureCounter().get(PipeGen.WORD)][1];
+		// insert words
+		try {
+			String line;
+			BufferedReader inputReader = new BufferedReader(
+					new InputStreamReader(new FileInputStream(clusterFile), "UTF-8"), 32768);
+
+			while ((line = inputReader.readLine()) != null) {
+
+				String[] split = line.split(REGEX);
+				int w = mf.getValue(PipeGen.WORD, split[0]);
+				if (w < 0)
+					continue;
+				word2tag[w][0] = (byte) mf.getValue(TAG, split[1]);
+				// if (split.length>1) word2tag[w][1]= (byte)mf.getValue(FR,
+				// split[2]); // frequency
+			}
+			inputReader.close();
+			int fill = 0;
+			for (byte[] element : word2tag) {
+				if (element[0] != 0)
+					fill++;
+			}
+			System.out.println("filled " + fill + " of " + word2tag.length);
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * Read the cluster
+	 * 
+	 * @param dos
+	 * @throws IOException
+	 */
+	public Lexicon(DataInputStream dis) throws IOException {
+
+		word2tag = new byte[dis.readInt()][1];
+		for (int i = 0; i < word2tag.length; i++) {
+			word2tag[i][0] = dis.readByte();
+			// word2tag[i][1]=dis.readByte();
+		}
+		DB.println("Read lexicon with " + word2tag.length + " words ");
+	}
+
+	/**
+	 * Write the cluster
+	 * 
+	 * @param dos
+	 * @throws IOException
+	 */
+	public void write(DataOutputStream dos) throws IOException {
+
+		dos.writeInt(word2tag.length);
+		for (byte[] i : word2tag) {
+			dos.writeByte(i[0]);
+			// dos.writeByte(i[1]);
+		}
+
+	}
+
+	/**
+	 * @param form
+	 * @return
+	 */
+	public int getTag(int form) {
+		if (word2tag.length < form || form < 0)
+			return -1;
+		return word2tag[form][0];
+	}
+
+	/**
+	 * @param form
+	 * @return
+	 */
+	public int getConf(int form) {
+		if (word2tag.length < form || form < 0)
+			return -1;
+		return word2tag[form][1];
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/tag/MFO.java b/dependencyParser/experimental/mate-tools/src/is2/tag/MFO.java
new file mode 100644
index 0000000..d8ac62d
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/tag/MFO.java
@@ -0,0 +1,527 @@
+package is2.tag;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map.Entry;
+
+import is2.data.IEncoderPlus;
+import is2.util.DB;
+
+/**
+ * Map Features, do not map long to integer
+ *
+ * @author Bernd Bohnet, 20.09.2009
+ */
+
+final public class MFO implements IEncoderPlus {
+
+	/** The features and its values */
+	private final HashMap<String, HashMap<String, Integer>> m_featureSets = new HashMap<String, HashMap<String, Integer>>();
+
+	/** The feature class and the number of values */
+	private final HashMap<String, Integer> m_featureCounters = new HashMap<String, Integer>();
+
+	/** The number of bits needed to encode a feature */
+	final HashMap<String, Integer> m_featureBits = new HashMap<String, Integer>();
+
+	/** Integer counter for long2int */
+	// private int count=0;
+
+	/** Stop growing */
+	public boolean stop = false;
+
+	final public static String NONE = "<None>";
+
+	final public static class Data4 {
+		public int shift;
+		public short a0, a1, a2, a3, a4, a5, a6, a7, a8, a9;
+		public int v0, v1, v2, v3, v4, v5, v6, v7, v8, v9;
+
+		final public long calcs(int b, long v, long l) {
+			if (l < 0)
+				return l;
+			l |= v << shift;
+			shift += b;
+			return l;
+		}
+
+		final public long calc2() {
+
+			if (v0 < 0 || v1 < 0)
+				return -1;
+
+			long l = v0;
+			shift = a0;
+			l |= (long) v1 << shift;
+			shift += a1;
+
+			return l;
+		}
+
+		final public long calc3() {
+
+			if (v0 < 0 || v1 < 0 || v2 < 0)
+				return -1;
+			// if (v1<0||v2<0) return -1;
+
+			long l = v0;
+			shift = a0;
+			l |= (long) v1 << shift;
+			shift += a1;
+			l |= (long) v2 << shift;
+			shift = (short) (shift + a2);
+
+			// shift=;
+			return l;
+		}
+
+		final public long calc4() {
+			if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0)
+				return -1;
+
+			long l = v0;
+			shift = a0;
+			l |= (long) v1 << shift;
+			shift += a1;
+			l |= (long) v2 << shift;
+			shift += a2;
+			l |= (long) v3 << shift;
+			shift = shift + a3;
+
+			return l;
+		}
+
+		final public long calc5() {
+
+			if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0)
+				return -1;
+
+			long l = v0;
+			shift = a0;
+			l |= (long) v1 << shift;
+			shift += a1;
+			l |= (long) v2 << shift;
+			shift += a2;
+			l |= (long) v3 << shift;
+			shift += a3;
+			l |= (long) v4 << shift;
+			shift = shift + a4;
+
+			return l;
+		}
+
+		final public long calc6() {
+
+			if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0)
+				return -1;
+
+			long l = v0;
+			shift = a0;
+			l |= (long) v1 << shift;
+			shift += a1;
+			l |= (long) v2 << shift;
+			shift += a2;
+			l |= (long) v3 << shift;
+			shift += a3;
+			l |= (long) v4 << shift;
+			shift += a4;
+			l |= (long) v5 << shift;
+			shift = shift + a5;
+
+			return l;
+		}
+
+		final public long calc7() {
+
+			if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0)
+				return -1;
+
+			long l = v0;
+			shift = a0;
+			l |= (long) v1 << shift;
+			shift += a1;
+			l |= (long) v2 << shift;
+			shift += a2;
+			l |= (long) v3 << shift;
+			shift += a3;
+			l |= (long) v4 << shift;
+			shift += a4;
+			l |= (long) v5 << shift;
+			shift += a5;
+			l |= (long) v6 << shift;
+			shift = shift + a6;
+
+			return l;
+		}
+
+		final public long calc8() {
+
+			if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0 || v7 < 0)
+				return -1;
+
+			long l = v0;
+			shift = a0;
+			l |= (long) v1 << shift;
+			shift += a1;
+			l |= (long) v2 << shift;
+			shift += a2;
+			l |= (long) v3 << shift;
+			shift += a3;
+			l |= (long) v4 << shift;
+			shift += a4;
+			l |= (long) v5 << shift;
+			shift += a5;
+			l |= (long) v6 << shift;
+			shift += a6;
+			l |= (long) v7 << shift;
+			shift = shift + a7;
+
+			return l;
+		}
+
+	}
+
+	public MFO() {
+	}
+
+	// public int size() {return count;}
+
+	final public void stop() {
+		stop = true;
+	}
+
+	final public void start() {
+		stop = false;
+	}
+
+	/**
+	 * Register an attribute class, if it not exists and add a possible value
+	 * 
+	 * @param type
+	 * @param type2
+	 */
+	@Override
+	final public int register(String a, String v) {
+
+		HashMap<String, Integer> fs = getFeatureSet().get(a);
+		if (fs == null) {
+			fs = new HashMap<String, Integer>();
+			getFeatureSet().put(a, fs);
+			fs.put(NONE, 0);
+			getFeatureCounter().put(a, 1);
+		}
+		Integer c = getFeatureCounter().get(a);
+
+		Integer i = fs.get(v);
+		if (i == null) {
+			fs.put(v, c);
+			c++;
+			getFeatureCounter().put(a, c);
+			return c - 1;
+		} else
+			return i;
+	}
+
+	/**
+	 * Calculates the number of bits needed to encode a feature
+	 */
+	public void calculateBits() {
+
+		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
+			int bits = (int) Math.ceil((Math.log(e.getValue() + 1) / Math.log(2)));
+			m_featureBits.put(e.getKey(), bits);
+		}
+
+		// System.out.println("total number of needed bits "+total);
+	}
+
+	@Override
+	public String toString() {
+
+		StringBuffer content = new StringBuffer();
+		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
+			content.append(e.getKey() + " " + e.getValue());
+			content.append(':');
+			// HashMap<String,Integer> vs = getFeatureSet().get(e.getKey());
+			content.append(getFeatureBits(e.getKey()));
+
+			/*
+			 * if (vs.size()<120) for(Entry<String,Integer> e2 : vs.entrySet())
+			 * { content.append(e2.getKey()+" ("+e2.getValue()+") "); }
+			 */
+			content.append('\n');
+
+		}
+		return content.toString();
+	}
+
+	static final public long calcs(Data4 d, int b, long v, long l) {
+		if (l < 0)
+			return l;
+		l |= v << d.shift;
+		d.shift += b;
+		return l;
+	}
+
+	final public short getFeatureBits(String a) {
+		return (short) m_featureBits.get(a).intValue();
+	}
+
+	/**
+	 * Get the integer place holder of the string value v of the type a
+	 *
+	 * @param t
+	 *            the type
+	 * @param v
+	 *            the value
+	 * @return the integer place holder of v
+	 */
+	@Override
+	final public int getValue(String t, String v) {
+
+		if (m_featureSets.get(t) == null)
+			return -1;
+		Integer vi = m_featureSets.get(t).get(v);
+		if (vi == null)
+			return -1; // stop &&
+		return vi.intValue();
+	}
+
+	/**
+	 * Static version of getValue
+	 * 
+	 * @see getValue
+	 */
+	final public int getValueS(String a, String v) {
+
+		if (m_featureSets.get(a) == null)
+			return -1;
+		Integer vi = m_featureSets.get(a).get(v);
+		if (vi == null)
+			return -1; // stop &&
+		return vi.intValue();
+	}
+
+	public int hasValue(String a, String v) {
+
+		Integer vi = m_featureSets.get(a).get(v);
+		if (vi == null)
+			return -1;
+		return vi.intValue();
+	}
+
+	final public long calc2(Data4 d) {
+
+		if (d.v0 < 0 || d.v1 < 0)
+			return -1;
+		// if (d.v1<0||d.v2<0) return -1;
+
+		long l = d.v0;
+		short shift = d.a0;
+		l |= (long) d.v1 << shift;
+		shift += d.a1;
+		// l |= (long)d.v2<<shift;
+		d.shift = shift;
+
+		// d.shift=;
+		return l;
+	}
+
+	final public long calc3(Data4 d) {
+
+		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0)
+			return -1;
+
+		long l = d.v0;
+		short shift = d.a0;
+		l |= (long) d.v1 << shift;
+		shift += d.a1;
+		l |= (long) d.v2 << shift;
+		d.shift = shift + d.a2;
+		return l;
+	}
+
+	final public long calc4(Data4 d) {
+		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0)
+			return -1;
+
+		long l = d.v0;
+		int shift = d.a0;
+		l |= (long) d.v1 << shift;
+		shift += d.a1;
+		l |= (long) d.v2 << shift;
+		shift += d.a2;
+		l |= (long) d.v3 << shift;
+		d.shift = shift + d.a3;
+
+		return l;
+	}
+
+	final public long calc5(Data4 d) {
+
+		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0 || d.v4 < 0)
+			return -1;
+
+		long l = d.v0;
+		int shift = d.a0;
+		l |= (long) d.v1 << shift;
+		shift += d.a1;
+		l |= (long) d.v2 << shift;
+		shift += d.a2;
+		l |= (long) d.v3 << shift;
+		shift += d.a3;
+		l |= (long) d.v4 << shift;
+		d.shift = shift + d.a4;
+
+		return l;
+	}
+
+	final public long calc6(Data4 d) {
+
+		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0 || d.v4 < 0 || d.v5 < 0)
+			return -1;
+
+		long l = d.v0;
+		int shift = d.a0;
+		l |= (long) d.v1 << shift;
+		shift += d.a1;
+		l |= (long) d.v2 << shift;
+		shift += d.a2;
+		l |= (long) d.v3 << shift;
+		shift += d.a3;
+		l |= (long) d.v4 << shift;
+		shift += d.a4;
+		l |= (long) d.v5 << shift;
+		d.shift = shift + d.a5;
+
+		return l;
+	}
+
+	final public long calc7(Data4 d) {
+
+		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0 || d.v4 < 0 || d.v5 < 0 || d.v6 < 0)
+			return -1;
+
+		long l = d.v0;
+		int shift = d.a0;
+		l |= (long) d.v1 << shift;
+		shift += d.a1;
+		l |= (long) d.v2 << shift;
+		shift += d.a2;
+		l |= (long) d.v3 << shift;
+		shift += d.a3;
+		l |= (long) d.v4 << shift;
+		shift += d.a4;
+		l |= (long) d.v5 << shift;
+		shift += d.a5;
+		l |= (long) d.v6 << shift;
+		d.shift = shift + d.a6;
+
+		return l;
+	}
+
+	final public long calc8(Data4 d) {
+
+		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0 || d.v4 < 0 || d.v5 < 0 || d.v6 < 0 || d.v7 < 0)
+			return -1;
+
+		long l = d.v0;
+		int shift = d.a0;
+		l |= (long) d.v1 << shift;
+		shift += d.a1;
+		l |= (long) d.v2 << shift;
+		shift += d.a2;
+		l |= (long) d.v3 << shift;
+		shift += d.a3;
+		l |= (long) d.v4 << shift;
+		shift += d.a4;
+		l |= (long) d.v5 << shift;
+		shift += d.a5;
+		l |= (long) d.v6 << shift;
+		shift += d.a6;
+		l |= (long) d.v7 << shift;
+		d.shift = shift + d.a7;
+
+		return l;
+	}
+
+	/**
+	 * Maps a long to a integer value. This is very useful to save memory for
+	 * sparse data long values
+	 * 
+	 * @param node
+	 * @return the integer
+	 */
+	static public int misses = 0;
+	static public int good = 0;
+
+	/**
+	 * Write the data
+	 * 
+	 * @param dos
+	 * @throws IOException
+	 */
+	public void writeData(DataOutputStream dos) throws IOException {
+		dos.writeInt(getFeatureSet().size());
+		for (Entry<String, HashMap<String, Integer>> e : getFeatureSet().entrySet()) {
+			dos.writeUTF(e.getKey());
+			dos.writeInt(e.getValue().size());
+
+			for (Entry<String, Integer> e2 : e.getValue().entrySet()) {
+
+				if (e2.getKey() == null)
+					DB.println("key " + e2.getKey() + " value " + e2.getValue() + " e -key " + e.getKey());
+				dos.writeUTF(e2.getKey());
+				dos.writeInt(e2.getValue());
+
+			}
+
+		}
+	}
+
+	public void read(DataInputStream din) throws IOException {
+
+		int size = din.readInt();
+		for (int i = 0; i < size; i++) {
+			String k = din.readUTF();
+			int size2 = din.readInt();
+
+			HashMap<String, Integer> h = new HashMap<String, Integer>();
+			getFeatureSet().put(k, h);
+			for (int j = 0; j < size2; j++) {
+				h.put(din.readUTF(), din.readInt());
+			}
+			getFeatureCounter().put(k, size2);
+		}
+
+		calculateBits();
+	}
+
+	/**
+	 * Clear the data
+	 */
+	public void clearData() {
+		getFeatureSet().clear();
+		m_featureBits.clear();
+		getFeatureSet().clear();
+	}
+
+	@Override
+	public HashMap<String, Integer> getFeatureCounter() {
+		return m_featureCounters;
+	}
+
+	public HashMap<String, HashMap<String, Integer>> getFeatureSet() {
+		return m_featureSets;
+	}
+
+	static public String[] reverse(HashMap<String, Integer> v) {
+		String[] set = new String[v.size()];
+		for (Entry<String, Integer> e : v.entrySet()) {
+			set[e.getValue()] = e.getKey();
+		}
+		return set;
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/tag/Options.java b/dependencyParser/experimental/mate-tools/src/is2/tag/Options.java
new file mode 100644
index 0000000..0998c70
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/tag/Options.java
@@ -0,0 +1,132 @@
+package is2.tag;
+
+import java.io.File;
+
+import is2.util.OptionsSuper;
+
+public final class Options extends OptionsSuper {
+
+	public Options(String[] args) {
+
+		for (int i = 0; i < args.length; i++) {
+			String[] pair = args[i].split(":");
+
+			if (pair[0].equals("--help"))
+				explain();
+			else if (pair[0].equals("-train")) {
+				train = true;
+				trainfile = args[i + 1];
+			} else if (pair[0].equals("-eval")) {
+				eval = true;
+				goldfile = args[i + 1];
+				i++;
+			} else if (pair[0].equals("-test")) {
+				test = true;
+				testfile = args[i + 1];
+				i++;
+			} else if (pair[0].equals("-i")) {
+				numIters = Integer.parseInt(args[i + 1]);
+				i++;
+			} else if (pair[0].equals("-out")) {
+				outfile = args[i + 1];
+				i++;
+			} else if (pair[0].equals("-decode")) {
+				decodeProjective = args[i + 1].equals("proj");
+				i++;
+			} else if (pair[0].equals("-confidence")) {
+
+				conf = true;
+			}
+
+			else if (pair[0].equals("-count")) {
+				count = Integer.parseInt(args[i + 1]);
+				i++;
+			} else if (pair[0].equals("-model")) {
+				modelName = args[i + 1];
+				i++;
+			} else if (pair[0].equals("-tmp")) {
+				tmp = args[i + 1];
+				i++;
+			} else if (pair[0].equals("-format")) {
+				// format = args[i+1];
+				formatTask = Integer.parseInt(args[i + 1]);
+				i++;
+			} else if (pair[0].equals("-allfeatures")) {
+				allFeatures = true;
+			} else if (pair[0].equals("-nonormalize")) {
+				normalize = false;
+			} else if (pair[0].equals("-nframes")) {
+				// format = args[i+1];
+				nbframes = args[i + 1];
+				i++;
+
+			} else if (pair[0].equals("-pframes")) {
+				// format = args[i+1];
+				pbframes = args[i + 1];
+				i++;
+			} else if (pair[0].equals("-nopred")) {
+				nopred = true;
+			} else if (pair[0].equals("-divide")) {
+				keep = true;
+			} else if (pair[0].equals("-lexicon")) {
+				lexicon = args[i + 1];
+				i++;
+
+			} else
+				super.addOption(args, i);
+
+		}
+
+		try {
+
+			if (trainfile != null) {
+
+				if (keep && tmp != null) {
+					trainforest = new File(tmp);
+					if (!trainforest.exists())
+						keep = false;
+
+				} else if (tmp != null) {
+					trainforest = File.createTempFile("train", ".tmp", new File(tmp));
+					trainforest.deleteOnExit();
+				} else {
+					trainforest = File.createTempFile("train", ".tmp"); // ,new
+																		// File("F:\\")
+					trainforest.deleteOnExit();
+				}
+
+			}
+
+		} catch (java.io.IOException e) {
+			System.out.println("Unable to create tmp files for feature forests!");
+			System.out.println(e);
+			System.exit(0);
+		}
+	}
+
+	private void explain() {
+		System.out.println("Usage: ");
+		System.out.println("java -class mate.jar is2.parser.Parser [Options]");
+		System.out.println();
+		System.out.println("Example: ");
+		System.out.println(
+				" java -class mate.jar is2.parser.Parser -model eps3.model -train corpora/conll08st/train/train.closed -test corpora/conll08st/devel/devel.closed  -out b3.test -eval corpora/conll08st/devel/devel.closed  -count 2000 -i 6");
+		System.out.println("");
+		System.out.println("Options:");
+		System.out.println("");
+		System.out.println(" -train  <file>    the corpus a model is trained on; default " + this.trainfile);
+		System.out.println(" -test   <file>    the input corpus for testing; default " + this.testfile);
+		System.out.println(" -out    <file>    the output corpus (result) of a test run; default " + this.outfile);
+		System.out.println(" -model  <file>    the parsing model for traing the model is stored in the files");
+		System.out.println(
+				"                   and for parsing the model is load from this file; default " + this.modelName);
+		System.out.println(
+				" -i      <number>  the number of training iterations; good numbers are 10 for smaller corpora and 6 for bigger; default "
+						+ this.numIters);
+		System.out.println(" -count  <number>  the n first sentences of the corpus are take for the training default "
+				+ this.count);
+		System.out.println(" -format <number>  conll format of the year 8 or 9; default " + this.formatTask);
+
+		System.exit(0);
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/tag/POS.java b/dependencyParser/experimental/mate-tools/src/is2/tag/POS.java
new file mode 100644
index 0000000..30f1e41
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/tag/POS.java
@@ -0,0 +1,30 @@
+package is2.tag;
+
+public class POS implements Comparable<POS> {
+
+	// pos tag
+	public int p;
+
+	// score of the tag
+	public float s;
+
+	// the position of the word in the sentence
+	public int w;
+
+	public POS(int p, float s) {
+		this.p = p;
+		this.s = s;
+	}
+
+	@Override
+	public int compareTo(POS o) {
+
+		return s > o.s ? -1 : s == o.s ? 0 : 1;
+	}
+
+	@Override
+	public String toString() {
+		return "" + p + ":" + s;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/tag/Tagger.java b/dependencyParser/experimental/mate-tools/src/is2/tag/Tagger.java
new file mode 100644
index 0000000..2ea146e
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/tag/Tagger.java
@@ -0,0 +1,506 @@
+package is2.tag;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Map.Entry;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+import java.util.zip.ZipOutputStream;
+
+import is2.data.F2SF;
+import is2.data.FV;
+import is2.data.Instances;
+import is2.data.InstancesTagger;
+import is2.data.Long2Int;
+import is2.data.Long2IntInterface;
+import is2.data.ParametersFloat;
+import is2.data.PipeGen;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.io.CONLLWriter09;
+import is2.io.IOGenerals;
+import is2.tools.IPipe;
+import is2.tools.Tool;
+import is2.tools.Train;
+import is2.util.DB;
+import is2.util.Evaluator;
+import is2.util.OptionsSuper;
+
+public class Tagger implements Tool, Train {
+
+	public ExtractorT2 pipe;
+	public ParametersFloat params;
+	public Long2IntInterface li;
+	public MFO mf;
+
+	/**
+	 * Initialize
+	 * 
+	 * @param options
+	 */
+	public Tagger(Options options) {
+
+		// load the model
+		try {
+			readModel(options);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public Tagger() {
+	}
+
+	/**
+	 * @param modelFileName
+	 *            the file name of the model
+	 */
+	public Tagger(String modelFileName) {
+		this(new Options(new String[] { "-model", modelFileName }));
+	}
+
+	public static void main(String[] args) throws FileNotFoundException, Exception {
+
+		long start = System.currentTimeMillis();
+		Options options = new Options(args);
+
+		Tagger tagger = new Tagger();
+
+		if (options.train) {
+
+			// depReader.normalizeOn=false;
+
+			tagger.li = new Long2Int(options.hsize);
+			tagger.pipe = new ExtractorT2(options, tagger.mf = new MFO());
+
+			// tagger.pipe.li =tagger.li;
+
+			InstancesTagger is = (InstancesTagger) tagger.pipe.createInstances(options.trainfile);
+
+			tagger.params = new ParametersFloat(tagger.li.size());
+
+			tagger.train(options, tagger.pipe, tagger.params, is);
+			tagger.writeModel(options, tagger.pipe, tagger.params);
+
+		}
+
+		if (options.test) {
+
+			tagger.readModel(options);
+
+			tagger.out(options, tagger.pipe, tagger.params);
+		}
+
+		System.out.println();
+
+		if (options.eval) {
+			System.out.println("\nEVALUATION PERFORMANCE:");
+			Evaluator.evaluateTagger(options.goldfile, options.outfile, options.format);
+		}
+		long end = System.currentTimeMillis();
+		System.out.println("used time " + ((float) ((end - start) / 100) / 10));
+	}
+
+	@Override
+	public void readModel(OptionsSuper options) {
+
+		try {
+			pipe = new ExtractorT2(options, mf = new MFO());
+			// load the model
+			ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(options.modelName)));
+			zis.getNextEntry();
+			DataInputStream dis = new DataInputStream(new BufferedInputStream(zis));
+
+			pipe.mf.read(dis);
+			pipe.initValues();
+			pipe.initFeatures();
+
+			params = new ParametersFloat(0);
+			params.read(dis);
+			li = new Long2Int(params.parameters.length);
+			pipe.read(dis);
+
+			dis.close();
+
+			pipe.types = new String[pipe.mf.getFeatureCounter().get(PipeGen.POS)];
+			for (Entry<String, Integer> e : pipe.mf.getFeatureSet().get(PipeGen.POS).entrySet())
+				pipe.types[e.getValue()] = e.getKey();
+
+			DB.println("Loading data finished. ");
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * Do the training
+	 * 
+	 * @param instanceLengths
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @throws IOException
+	 * @throws InterruptedException
+	 * @throws ClassNotFoundException
+	 */
+	@Override
+	public void train(OptionsSuper options, IPipe pipe, ParametersFloat params, Instances is2) {
+
+		InstancesTagger is = (InstancesTagger) is2;
+		String wds[] = MFO.reverse(this.pipe.mf.getFeatureSet().get(PipeGen.WORD));
+
+		int pd[] = new int[this.pipe.types.length];
+		for (int k = 0; k < pd.length; k++)
+			pd[k] = k;
+
+		int del = 0;
+		F2SF f = new F2SF(params.parameters);
+		long vs[] = new long[ExtractorT2._MAX];
+
+		int types = this.pipe.types.length;
+
+		double upd = options.numIters * is.size() + 1;
+
+		for (int i = 0; i < options.numIters; i++) {
+
+			long start = System.currentTimeMillis();
+
+			int numInstances = is.size();
+
+			long last = System.currentTimeMillis();
+			FV pred = new FV(), gold = new FV();
+
+			int correct = 0, count = 0;
+			System.out.print("Iteration " + i + ": ");
+
+			for (int n = 0; n < numInstances; n++) {
+
+				if ((n + 1) % 500 == 0)
+					del = PipeGen.outValueErr(n + 1, (count - correct), (float) correct / (float) count, del, last,
+							upd);
+
+				int length = is.length(n);
+
+				upd--;
+
+				for (int w = 1; w < length; w++) {
+
+					double best = -1000;
+					short bestType = -1;
+
+					int[] lemmas; // = is.lemmas[n];
+					if (options.noLemmas)
+						lemmas = new int[is.length(n)];
+					else
+						lemmas = is.plemmas[n];
+
+					this.pipe.addFeatures(is, n, wds[is.forms[n][w]], w, is.gpos[n], is.forms[n], lemmas, vs);
+
+					for (short t = 0; t < types; t++) {
+
+						// the hypotheses of a part of speech tag
+						long p = t << ExtractorT2.s_type;
+						f.clear();
+
+						// add the features to the vector
+						for (int k1 = 0; vs[k1] != Integer.MIN_VALUE; k1++) {
+							if (vs[k1] > 0)
+								f.add(this.li.l2i(vs[k1] | p));
+						}
+
+						if (f.score > best) {
+							bestType = t;
+							best = f.score;
+						}
+					}
+
+					count++;
+					if (bestType == is.gpos[n][w]) {
+						correct++;
+						continue;
+					}
+
+					pred.clear();
+					for (int k1 = 0; vs[k1] != Integer.MIN_VALUE; k1++)
+						if (vs[k1] > 0)
+							pred.add(this.li.l2i(vs[k1] | bestType << ExtractorT2.s_type));
+
+					gold.clear();
+					for (int k1 = 0; vs[k1] != Integer.MIN_VALUE; k1++)
+						if (vs[k1] > 0)
+							gold.add(this.li.l2i(vs[k1] | is.gpos[n][w] << ExtractorT2.s_type));
+
+					params.update(pred, gold, (float) upd, 1.0F);
+				}
+			}
+
+			long end = System.currentTimeMillis();
+			String info = "time " + (end - start);
+			PipeGen.outValueErr(numInstances, (count - correct), (float) correct / (float) count, del, last, upd, info);
+			System.out.println();
+			del = 0;
+		}
+
+		params.average(options.numIters * is.size());
+
+	}
+
+	/**
+	 * Tag a sentence
+	 * 
+	 * @param options
+	 * @param pipe
+	 * @param params
+	 * @throws IOException
+	 */
+	@Override
+	public void out(OptionsSuper options, IPipe pipe, ParametersFloat params) {
+
+		try {
+
+			long start = System.currentTimeMillis();
+			// change this backe!!!
+			// CONLLReader09 depReader = new CONLLReader09(options.testfile,
+			// CONLLReader09.NO_NORMALIZE);
+			CONLLReader09 depReader = new CONLLReader09(options.testfile);
+
+			CONLLWriter09 depWriter = new CONLLWriter09(options.outfile);
+
+			System.out.print("Processing Sentence: ");
+			pipe.initValues();
+
+			int cnt = 0;
+			int del = 0;
+			while (true) {
+
+				InstancesTagger is = new InstancesTagger();
+				is.init(1, mf);
+				SentenceData09 instance = depReader.getNext(is);
+				if (instance == null || instance.forms == null)
+					break;
+
+				is.fillChars(instance, 0, ExtractorT2._CEND);
+
+				cnt++;
+
+				tag(is, instance);
+
+				SentenceData09 i09 = new SentenceData09(instance);
+				i09.createSemantic(instance);
+				depWriter.write(i09);
+
+				if (cnt % 100 == 0)
+					del = PipeGen.outValue(cnt, del);
+
+			}
+			del = PipeGen.outValue(cnt, del);
+			depWriter.finishWriting();
+
+			// int r[] = new int[14];
+			/*
+			 * for(Entry<Float, Integer> e : map.entrySet()) {
+			 * if(e.getKey()<min)min=e.getKey();
+			 * if(e.getKey()>max)max=e.getKey();
+			 * 
+			 * if(e.getKey()<0.2) r[0]++; else if(e.getKey()<0.5)
+			 * r[1]+=e.getValue(); else if(e.getKey()<0.7) r[2]+=e.getValue();
+			 * else if(e.getKey()<0.8) r[3]+=e.getValue(); else
+			 * if(e.getKey()<0.9) r[4]+=e.getValue(); else if(e.getKey()<1.0)
+			 * r[5]+=e.getValue(); else if(e.getKey()<1.2) r[6]+=e.getValue();
+			 * else if(e.getKey()<1.3) r[7]+=e.getValue(); else
+			 * if(e.getKey()<1.4) r[8]+=e.getValue(); else if(e.getKey()<1.5)
+			 * r[9]+=e.getValue(); else if(e.getKey()<1.9) r[10]+=e.getValue();
+			 * else if(e.getKey()<2.2) r[11]+=e.getValue(); else
+			 * if(e.getKey()<2.5) r[12]+=e.getValue(); else if(e.getKey()>=2.5)
+			 * r[13]+=e.getValue(); }
+			 */
+			// for(int k=0;k<r.length;k++) System.out.println(k+" "+r[k][0]+"
+			// "+((float)r[k][1]/(float)r[k][0])+" good "+r[k][1]);
+			// System.out.println("min "+min+" "+max);
+
+			long end = System.currentTimeMillis();
+			System.out.println(PipeGen.getSecondsPerInstnace(cnt, (end - start)));
+			System.out.println(PipeGen.getUsedTime(end - start));
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public SentenceData09 tag(SentenceData09 instance) {
+		InstancesTagger is = new InstancesTagger();
+		is.init(1, pipe.mf);
+		new CONLLReader09().insert(is, instance);
+		is.fillChars(instance, 0, ExtractorT2._CEND);
+		tag(is, instance);
+
+		return instance;
+	}
+
+	private void tag(InstancesTagger is, SentenceData09 instance) {
+
+		int length = instance.ppos.length;
+
+		short[] pos = new short[instance.gpos.length];
+
+		float sc[] = new float[instance.ppos.length];
+
+		instance.ppos[0] = IOGenerals.ROOT_POS;
+		pos[0] = (short) pipe.mf.getValue(PipeGen.POS, IOGenerals.ROOT_POS);
+
+		for (int j = 1; j < length; j++) {
+
+			short bestType = (short) pipe.fillFeatureVectorsOne(instance.forms[j], params, j, is, 0, pos, this.li, sc);
+			pos[j] = bestType;
+			instance.ppos[j] = pipe.types[bestType];
+		}
+
+		for (int j = 1; j < length; j++) {
+
+			short bestType = (short) pipe.fillFeatureVectorsOne(instance.forms[j], params, j, is, 0, pos, this.li, sc);
+			instance.ppos[j] = pipe.types[bestType];
+			pos[j] = bestType;
+		}
+	}
+
+	/**
+	 * Tag a single word and return a n-best list of Part-of-Speech tags.
+	 *
+	 * @param is
+	 *            set of sentences
+	 * @param instanceIndex
+	 *            index to the sentence in question
+	 * @param word
+	 *            word to be tagged
+	 * @return n-best list of Part-of-Speech tags
+	 */
+	public ArrayList<POS> tag(InstancesTagger is, int instanceIndex, int word, String wordForm) {
+
+		return pipe.classify(wordForm, params, word, is, instanceIndex, is.pposs[instanceIndex], li);
+
+	}
+
+	public ArrayList<String> tagStrings(InstancesTagger is, int instanceIndex, int word, String wordForm) {
+
+		ArrayList<POS> plist = pipe.classify(wordForm, params, word, is, instanceIndex, is.pposs[instanceIndex], li);
+		String pos[] = MFO.reverse(this.pipe.mf.getFeatureSet().get(PipeGen.POS));
+
+		ArrayList<String> postags = null;
+		for (POS p : plist) {
+			try {
+				postags.add(pos[p.p]);
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+		return postags;
+
+	}
+
+	/**
+	 * Tag a sentence
+	 * 
+	 * @param options
+	 * @param pipe
+	 * @param parametersReranker
+	 * @throws IOException
+	 */
+	public String[] tag(String[] words, String[] lemmas) {
+
+		String[] pposs = new String[words.length];
+
+		try {
+			pipe.initValues();
+
+			int length = words.length + 1;
+
+			InstancesTagger is = new InstancesTagger();
+			is.init(1, pipe.mf);
+			is.createInstance09(length);
+
+			SentenceData09 instance = new SentenceData09();
+			instance.forms = new String[length];
+			instance.forms[0] = IOGenerals.ROOT;
+
+			instance.plemmas = new String[length];
+			instance.plemmas[0] = IOGenerals.ROOT_LEMMA;
+
+			for (int j = 0; j < words.length; j++) {
+				instance.forms[j + 1] = words[j];
+				instance.plemmas[j + 1] = lemmas[j];
+			}
+
+			for (int j = 0; j < length; j++) {
+				is.setForm(0, j, instance.forms[j]);
+				is.setLemma(0, j, instance.plemmas[j]);
+			}
+
+			instance.ppos = new String[length];
+
+			is.fillChars(instance, 0, ExtractorT2._CEND);
+
+			this.tag(is, instance);
+
+			for (int j = 0; j < words.length; j++) {
+				pposs[j] = instance.ppos[j + 1];
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		return pposs;
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.tools.Tool#apply(is2.data.SentenceData09)
+	 */
+	@Override
+	public SentenceData09 apply(SentenceData09 snt) {
+
+		SentenceData09 it = new SentenceData09();
+		it.createWithRoot(snt);
+		it = tag(it);
+		SentenceData09 i09 = new SentenceData09(it);
+		i09.createSemantic(it);
+		return i09;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.tools.Train#writeModel(is2.util.OptionsSuper, is2.mtag2.Pipe,
+	 * is2.data.ParametersFloat)
+	 */
+	@Override
+	public void writeModel(OptionsSuper options, IPipe pipe, is2.data.ParametersFloat params) {
+		try {
+			ZipOutputStream zos = new ZipOutputStream(
+					new BufferedOutputStream(new FileOutputStream(options.modelName)));
+			zos.putNextEntry(new ZipEntry("data"));
+			DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(zos));
+
+			this.pipe.mf.writeData(dos);
+
+			DB.println("number of parameters " + params.parameters.length);
+			dos.flush();
+
+			params.write(dos);
+			pipe.write(dos);
+			dos.flush();
+			dos.close();
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/tag/package.html b/dependencyParser/experimental/mate-tools/src/is2/tag/package.html
new file mode 100644
index 0000000..469fdf6
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/tag/package.html
@@ -0,0 +1,4 @@
+Package info
+<br><br>
+This parser includes a tagger into the dependency parser
+<br>
\ No newline at end of file
diff --git a/dependencyParser/experimental/mate-tools/src/is2/tools/IPipe.java b/dependencyParser/experimental/mate-tools/src/is2/tools/IPipe.java
new file mode 100644
index 0000000..b6e0e02
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/tools/IPipe.java
@@ -0,0 +1,28 @@
+/**
+ *
+ */
+package is2.tools;
+
+import java.io.DataOutputStream;
+
+import is2.data.Instances;
+
+/**
+ * @author Dr. Bernd Bohnet, 25.12.2010
+ *
+ *
+ */
+public interface IPipe {
+
+	public abstract Instances createInstances(String file);
+
+	public abstract void initValues();
+
+	/**
+	 * Initialize the features types.
+	 */
+	public abstract void initFeatures();
+
+	public abstract void write(DataOutputStream dos);
+
+}
\ No newline at end of file
diff --git a/dependencyParser/experimental/mate-tools/src/is2/tools/Retrainable.java b/dependencyParser/experimental/mate-tools/src/is2/tools/Retrainable.java
new file mode 100644
index 0000000..86fbfcc
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/tools/Retrainable.java
@@ -0,0 +1,30 @@
+package is2.tools;
+
+import is2.data.SentenceData09;
+
+/**
+ * Provides Methods for the retraining
+ * 
+ * @author bohnetbd
+ *
+ */
+public interface Retrainable {
+
+	/**
+	 * Retrains with a update factor (upd). The retraining stops when the model
+	 * was successful adapted or it gave up after the maximal iterations.
+	 *
+	 * @param sentence
+	 *            the data container of the new example.
+	 * @param upd
+	 *            the update factor, e.g. 0.01
+	 * @param iterations
+	 *            maximal number of iterations that are tried to adapt the
+	 *            system.
+	 * @return success = true -- else false
+	 */
+	public boolean retrain(SentenceData09 sentence, float upd, int iterations);
+
+	boolean retrain(SentenceData09 sentence, float upd, int iterations, boolean print);
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/tools/Tool.java b/dependencyParser/experimental/mate-tools/src/is2/tools/Tool.java
new file mode 100644
index 0000000..41ead53
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/tools/Tool.java
@@ -0,0 +1,25 @@
+/**
+ *
+ */
+package is2.tools;
+
+import is2.data.SentenceData09;
+
+/**
+ * @author Bernd Bohnet, 27.10.2010
+ *
+ *         Interface to all tools
+ */
+public interface Tool {
+
+	/**
+	 * Uses the tool and applies it on the input sentence. The input is altered
+	 * and has to include a root (token).
+	 * 
+	 * @param i
+	 *            the input sentence
+	 * @return The result of the performance without the root.
+	 */
+	SentenceData09 apply(SentenceData09 snt09);
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/tools/ToolIO.java b/dependencyParser/experimental/mate-tools/src/is2/tools/ToolIO.java
new file mode 100644
index 0000000..d7b67fe
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/tools/ToolIO.java
@@ -0,0 +1,15 @@
+/**
+ *
+ */
+package is2.tools;
+
+/**
+ * @author Bernd Bohnet, 27.10.2010
+ *
+ *         Interface to all tools
+ */
+public interface ToolIO {
+
+	void readModel();
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/tools/Train.java b/dependencyParser/experimental/mate-tools/src/is2/tools/Train.java
new file mode 100644
index 0000000..31a7ad8
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/tools/Train.java
@@ -0,0 +1,25 @@
+/**
+ *
+ */
+package is2.tools;
+
+import is2.data.Instances;
+import is2.data.ParametersFloat;
+import is2.util.OptionsSuper;
+
+/**
+ * @author Dr. Bernd Bohnet, 24.12.2010
+ *
+ *
+ */
+public interface Train {
+
+	public abstract void writeModel(OptionsSuper options, IPipe pipe, ParametersFloat params);
+
+	public abstract void readModel(OptionsSuper options);
+
+	public abstract void train(OptionsSuper options, IPipe pipe, ParametersFloat params, Instances is);
+
+	public abstract void out(OptionsSuper options, IPipe pipe, ParametersFloat params);
+
+}
\ No newline at end of file
diff --git a/dependencyParser/experimental/mate-tools/src/is2/util/Convert.java b/dependencyParser/experimental/mate-tools/src/is2/util/Convert.java
new file mode 100644
index 0000000..b9c820f
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/util/Convert.java
@@ -0,0 +1,453 @@
+/**
+ *
+ */
+package is2.util;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+
+import is2.data.SentenceData09;
+import is2.io.CONLLReader06;
+import is2.io.CONLLReader08;
+import is2.io.CONLLReader09;
+import is2.io.CONLLWriter06;
+import is2.io.CONLLWriter09;
+
+/**
+ * @author Dr. Bernd Bohnet, 01.03.2010
+ *
+ *
+ */
+public class Convert {
+
+	public static void main(String args[]) throws Exception {
+
+		if (args.length < 2) {
+
+			System.out.println("Usage");
+			System.out.println(" java is2.util.Convert <in> <out> [-w06|-w0809|-yue]  [-wordsonly]");
+
+		}
+
+		int todo = 9;
+		boolean wordsOnly = false;
+		for (String a : args) {
+			if (a != null && a.equals("-w06"))
+				todo = 6;
+			else if (a != null && a.equals("-w0809"))
+				todo = 89;
+			else if (a != null && a.equals("-yue"))
+				todo = 99;
+			else if (a != null && a.equals("-utf8"))
+				todo = 8;
+
+			if (a != null && a.equals("-wordsonly"))
+				wordsOnly = true;
+
+		}
+
+		if (todo == 9)
+			convert(args[0], args[1]);
+		else if (todo == 6)
+			convert0906(args[0], args[1]);
+		else if (todo == 8)
+			convert8(args[0], args[1], args[2]);
+		else if (todo == 89)
+			convert0809(args[0], args[1]);
+		else if (todo == 99) {
+			convertChnYue(args[0], args[1], wordsOnly);
+		}
+
+	}
+
+	private static void convert8(String infile, String outfile, String format) {
+		try {
+
+			System.out.println("availableCharsets: " + Charset.availableCharsets());
+
+			BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(infile), format));
+			BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outfile), "UTF8"));
+			;
+			int ch;
+
+			int count = 0, wcount = 0;
+			;
+			while ((ch = in.read()) > -1) {
+				count++;
+
+				if (Character.isDefined(ch)) {
+
+					out.write(ch);
+					wcount++;
+				}
+			}
+			in.close();
+			out.close();
+			System.out.println("read " + count + " chars and wrote " + wcount + " utf8 chars");
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+	}
+
+	public static void convert(String source, String target) throws Exception {
+
+		CONLLReader06 reader = new CONLLReader06(source);
+		CONLLWriter09 writer = new CONLLWriter09(target);
+
+		int str = 0;
+		while (true) {
+			SentenceData09 i = reader.getNext();
+			str++;
+			if (i == null)
+				break;
+
+			String[] formsNoRoot = new String[i.length() - 1];
+			String[] posNoRoot = new String[formsNoRoot.length];
+			String[] lemmas = new String[formsNoRoot.length];
+
+			String[] org_lemmas = new String[formsNoRoot.length];
+
+			String[] of = new String[formsNoRoot.length];
+			String[] pf = new String[formsNoRoot.length];
+
+			String[] pposs = new String[formsNoRoot.length];
+			String[] labels = new String[formsNoRoot.length];
+			String[] fillp = new String[formsNoRoot.length];
+
+			int[] heads = new int[formsNoRoot.length];
+
+			for (int j = 0; j < formsNoRoot.length; j++) {
+				formsNoRoot[j] = i.forms[j + 1];
+				if (formsNoRoot[j].length() == 0 || formsNoRoot[j].equals("")) {
+					System.out.println("error forms " + str);
+					// System.exit(0);
+					formsNoRoot[j] = " ";
+				}
+				posNoRoot[j] = i.gpos[j + 1];
+				if (posNoRoot[j].length() == 0 || posNoRoot[j].equals(" ")) {
+					System.out.println("error pos " + str);
+					// System.exit(0);
+				}
+				pposs[j] = i.ppos[j + 1];
+				if (pposs[j].length() == 0 || pposs[j].equals(" ")) {
+					System.out.println("error pos " + str);
+					// System.exit(0);
+				}
+
+				labels[j] = i.labels[j + 1];
+				if (labels[j].length() == 0 || labels[j].equals(" ")) {
+					System.out.println("error lab " + str);
+					// System.exit(0);
+				}
+				heads[j] = i.heads[j + 1];
+				if (heads[j] > posNoRoot.length) {
+					System.out.println("head out of range " + heads[j] + " " + heads.length + " " + str);
+					heads[j] = posNoRoot.length;
+				}
+
+				lemmas[j] = i.plemmas[j + 1];
+				if (lemmas[j].length() == 0 || lemmas[j].equals(" ")) {
+					System.out.println("error lab " + str);
+					// System.exit(0);
+				}
+				org_lemmas[j] = i.lemmas[j + 1];
+				if (org_lemmas[j].length() == 0 || org_lemmas[j].equals(" ")) {
+					System.out.println("error lab " + str);
+					// System.exit(0);
+				}
+				of[j] = i.ofeats[j + 1];
+				pf[j] = i.pfeats[j + 1];
+				if (str == 6099) {
+					// System.out.println(formsNoRoot[j]+"\t"+posNoRoot[j]+"\t"+pposs[j]+"\t"+labels[j]+"\t"+heads[j]);
+				}
+
+				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
+			}
+
+			SentenceData09 i09 = new SentenceData09(formsNoRoot, formsNoRoot, formsNoRoot, pposs, pposs, labels, heads,
+					fillp, of, pf);
+
+			// public SentenceData09(String[] forms, String[] lemmas, String[]
+			// olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads,
+			// String[] fillpred) {
+			// SentenceData09
+			// SentenceData09 i2 = new SentenceData09(i.forms,
+			// i.lemmas,i.org_lemmas,);
+
+			writer.write(i09);
+
+		}
+		writer.finishWriting();
+
+	}
+
+	public static void convertChnYue(String source, String target, boolean wordsOnly) throws Exception {
+
+		BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(source), "UTF-8"), 32768);
+
+		CONLLWriter09 writer = new CONLLWriter09(target);
+
+		int str = 0;
+		while (true) {
+
+			ArrayList<String[]> lines = new ArrayList<String[]>();
+
+			String line;
+			while ((line = reader.readLine()) != null) {
+
+				if (line.length() < 2)
+					break;
+				String split[] = line.split("\t");
+				lines.add(split);
+			}
+			if (line == null)
+				break;
+
+			str++;
+
+			String[] formsNoRoot = new String[lines.size()];
+			String[] posNoRoot = new String[formsNoRoot.length];
+			String[] lemmas = new String[formsNoRoot.length];
+
+			String[] org_lemmas = new String[formsNoRoot.length];
+
+			String[] of = new String[formsNoRoot.length];
+			String[] pf = new String[formsNoRoot.length];
+
+			String[] pposs = new String[formsNoRoot.length];
+			String[] labels = new String[formsNoRoot.length];
+			String[] fillp = new String[formsNoRoot.length];
+
+			int[] heads = new int[formsNoRoot.length];
+
+			for (int j = 0; j < formsNoRoot.length; j++) {
+				formsNoRoot[j] = lines.get(j)[0];
+				if (formsNoRoot[j].length() == 0 || formsNoRoot[j].equals("")) {
+					System.out.println("error forms " + str);
+					// System.exit(0);
+					formsNoRoot[j] = "_";
+				}
+
+				posNoRoot[j] = lines.get(j)[1];
+				if (posNoRoot[j].length() == 0 || posNoRoot[j].equals(" ")) {
+					System.out.println("error pos " + str);
+					// System.exit(0);
+				}
+				pposs[j] = "_";
+
+				labels[j] = lines.get(j)[3];
+				if (labels[j].length() == 0 || labels[j].equals(" ")) {
+					System.out.println("error lab " + str);
+					labels[j] = "_";
+					// System.exit(0);
+				}
+				heads[j] = Integer.parseInt(lines.get(j)[2]) + 1;
+				if (heads[j] > posNoRoot.length) {
+					System.out.println("head out of range " + heads[j] + " " + heads.length + " " + str);
+					heads[j] = posNoRoot.length;
+				}
+
+				// 0 is root and not -1
+				if (heads[j] == -1)
+					heads[j] = 0;
+
+				lemmas[j] = "_";
+
+				org_lemmas[j] = "_";
+
+				of[j] = "_";
+				pf[j] = "_";
+
+				if (wordsOnly) {
+					posNoRoot[j] = "_";
+					heads[j] = 0;
+					labels[j] = "_";
+				}
+
+				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
+			}
+
+			SentenceData09 i09 = new SentenceData09(formsNoRoot, lemmas, org_lemmas, posNoRoot, posNoRoot, labels,
+					heads, fillp, of, pf);
+
+			// public SentenceData09(String[] forms, String[] lemmas, String[]
+			// olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads,
+			// String[] fillpred) {
+			// SentenceData09
+			// SentenceData09 i2 = new SentenceData09(i.forms,
+			// i.lemmas,i.org_lemmas,);
+
+			writer.write(i09);
+
+		}
+		reader.close();
+		writer.finishWriting();
+
+	}
+
+	/**
+	 * Convert the 0
+	 * 
+	 * @param source
+	 * @param target
+	 * @throws Exception
+	 */
+	public static void convert0809(String source, String target) throws Exception {
+
+		CONLLReader08 reader = new CONLLReader08(source);
+		CONLLWriter09 writer = new CONLLWriter09(target);
+
+		int str = 0;
+		while (true) {
+			SentenceData09 i = reader.getNext();
+			str++;
+			if (i == null)
+				break;
+
+			String[] formsNoRoot = new String[i.length() - 1];
+			String[] posNoRoot = new String[formsNoRoot.length];
+			String[] lemmas = new String[formsNoRoot.length];
+
+			String[] org_lemmas = new String[formsNoRoot.length];
+
+			String[] of = new String[formsNoRoot.length];
+			String[] pf = new String[formsNoRoot.length];
+
+			String[] pposs = new String[formsNoRoot.length];
+			String[] labels = new String[formsNoRoot.length];
+			String[] fillp = new String[formsNoRoot.length];
+
+			int[] heads = new int[formsNoRoot.length];
+
+			for (int j = 0; j < formsNoRoot.length; j++) {
+				formsNoRoot[j] = i.forms[j + 1];
+				if (formsNoRoot[j].length() == 0 || formsNoRoot[j].equals("")) {
+					System.out.println("error forms " + str);
+					// System.exit(0);
+					formsNoRoot[j] = " ";
+				}
+				posNoRoot[j] = i.gpos[j + 1];
+				if (posNoRoot[j].length() == 0 || posNoRoot[j].equals(" ")) {
+					System.out.println("error pos " + str);
+					// System.exit(0);
+				}
+				pposs[j] = i.ppos[j + 1];
+				if (pposs[j].length() == 0 || pposs[j].equals(" ")) {
+					System.out.println("error pos " + str);
+					// System.exit(0);
+				}
+
+				labels[j] = i.labels[j + 1];
+				if (labels[j].length() == 0 || labels[j].equals(" ")) {
+					System.out.println("error lab " + str);
+					// System.exit(0);
+				}
+				heads[j] = i.heads[j + 1];
+				if (heads[j] > posNoRoot.length) {
+					System.out.println("head out of range " + heads[j] + " " + heads.length + " " + str);
+					heads[j] = posNoRoot.length;
+				}
+
+				lemmas[j] = i.plemmas[j + 1];
+				if (lemmas[j].length() == 0 || lemmas[j].equals(" ")) {
+					System.out.println("error lab " + str);
+					// System.exit(0);
+				}
+				org_lemmas[j] = i.lemmas[j + 1];
+				// if (org_lemmas[j].length()==0 ||org_lemmas[j].equals(" ")) {
+				// System.out.println("error lab "+str);
+				// // System.exit(0);
+				// }
+				// of[j] = i.ofeats[j+1];
+				// pf[j] = i.pfeats[j+1];
+				if (str == 6099) {
+					// System.out.println(formsNoRoot[j]+"\t"+posNoRoot[j]+"\t"+pposs[j]+"\t"+labels[j]+"\t"+heads[j]);
+				}
+
+				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
+			}
+
+			SentenceData09 i09 = new SentenceData09(formsNoRoot, org_lemmas, lemmas, pposs, pposs, labels, heads, fillp,
+					of, pf);
+
+			// public SentenceData09(String[] forms, String[] lemmas, String[]
+			// olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads,
+			// String[] fillpred) {
+			// SentenceData09
+			// SentenceData09 i2 = new SentenceData09(i.forms,
+			// i.lemmas,i.org_lemmas,);
+
+			writer.write(i09);
+
+		}
+		writer.finishWriting();
+
+	}
+
+	public static void convert0906(String source, String target) throws Exception {
+
+		CONLLReader09 reader = new CONLLReader09(source);
+		CONLLWriter06 writer = new CONLLWriter06(target);
+
+		while (true) {
+			SentenceData09 i = reader.getNext();
+
+			if (i == null)
+				break;
+
+			String[] formsNoRoot = new String[i.length() - 1];
+			String[] posNoRoot = new String[formsNoRoot.length];
+			String[] lemmas = new String[formsNoRoot.length];
+
+			String[] org_lemmas = new String[formsNoRoot.length];
+
+			String[] of = new String[formsNoRoot.length];
+			String[] pf = new String[formsNoRoot.length];
+
+			String[] pposs = new String[formsNoRoot.length];
+			String[] labels = new String[formsNoRoot.length];
+			String[] fillp = new String[formsNoRoot.length];
+
+			int[] heads = new int[formsNoRoot.length];
+
+			for (int j = 0; j < formsNoRoot.length; j++) {
+				formsNoRoot[j] = i.forms[j + 1];
+				posNoRoot[j] = i.gpos[j + 1];
+				pposs[j] = i.gpos[j + 1];
+
+				labels[j] = i.labels[j + 1];
+				heads[j] = i.heads[j + 1];
+				lemmas[j] = i.plemmas[j + 1];
+
+				org_lemmas[j] = i.lemmas[j + 1];
+				of[j] = i.ofeats[j + 1];
+				pf[j] = i.pfeats[j + 1];
+
+				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
+			}
+
+			SentenceData09 i09 = new SentenceData09(formsNoRoot, lemmas, org_lemmas, posNoRoot, pposs, labels, heads,
+					fillp, of, pf);
+
+			// public SentenceData09(String[] forms, String[] lemmas, String[]
+			// olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads,
+			// String[] fillpred) {
+			// SentenceData09
+			// SentenceData09 i2 = new SentenceData09(i.forms,
+			// i.lemmas,i.org_lemmas,);
+
+			writer.write(i09);
+
+		}
+		writer.finishWriting();
+
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/util/Convert0409.java b/dependencyParser/experimental/mate-tools/src/is2/util/Convert0409.java
new file mode 100644
index 0000000..b735ad8
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/util/Convert0409.java
@@ -0,0 +1,176 @@
+/**
+ *
+ */
+package is2.util;
+
+import is2.data.SentenceData09;
+import is2.io.CONLLReader04;
+import is2.io.CONLLReader09;
+import is2.io.CONLLWriter06;
+import is2.io.CONLLWriter09;
+
+/**
+ * @author Dr. Bernd Bohnet, 01.03.2010
+ *
+ *
+ */
+public class Convert0409 {
+
+	public static void main(String args[]) throws Exception {
+
+		convert(args[0], args[1]);
+
+	}
+
+	public static void convert(String source, String target) throws Exception {
+
+		CONLLReader04 reader = new CONLLReader04(source);
+		CONLLWriter09 writer = new CONLLWriter09(target);
+
+		int str = 0;
+		while (true) {
+			SentenceData09 i = reader.getNext();
+			str++;
+			if (i == null)
+				break;
+
+			String[] formsNoRoot = new String[i.length() - 1];
+			String[] posNoRoot = new String[formsNoRoot.length];
+			String[] lemmas = new String[formsNoRoot.length];
+
+			String[] org_lemmas = new String[formsNoRoot.length];
+
+			String[] of = new String[formsNoRoot.length];
+			String[] pf = new String[formsNoRoot.length];
+
+			String[] pposs = new String[formsNoRoot.length];
+			String[] labels = new String[formsNoRoot.length];
+			String[] fillp = new String[formsNoRoot.length];
+
+			int[] heads = new int[formsNoRoot.length];
+
+			for (int j = 0; j < formsNoRoot.length; j++) {
+				formsNoRoot[j] = i.forms[j + 1];
+				if (formsNoRoot[j].length() == 0 || formsNoRoot[j].equals("")) {
+					System.out.println("error forms " + str);
+					// System.exit(0);
+					formsNoRoot[j] = " ";
+				}
+				posNoRoot[j] = i.gpos[j + 1];
+				if (posNoRoot[j].length() == 0 || posNoRoot[j].equals(" ")) {
+					System.out.println("error pos " + str);
+					// System.exit(0);
+				}
+				pposs[j] = i.ppos[j + 1];
+				if (pposs[j].length() == 0 || pposs[j].equals(" ")) {
+					System.out.println("error pos " + str);
+					// System.exit(0);
+				}
+
+				labels[j] = i.labels[j + 1];
+				if (labels[j].length() == 0 || labels[j].equals(" ")) {
+					System.out.println("error lab " + str);
+					// System.exit(0);
+				}
+				heads[j] = i.heads[j + 1];
+				if (heads[j] > posNoRoot.length) {
+					System.out.println("head out of range " + heads[j] + " " + heads.length + " " + str);
+					heads[j] = posNoRoot.length;
+				}
+
+				lemmas[j] = i.plemmas[j + 1];
+				if (lemmas[j].length() == 0 || lemmas[j].equals(" ")) {
+					System.out.println("error lab " + str);
+					// System.exit(0);
+				}
+				org_lemmas[j] = i.lemmas[j + 1];
+				if (org_lemmas[j].length() == 0 || org_lemmas[j].equals(" ")) {
+					System.out.println("error lab " + str);
+					// System.exit(0);
+				}
+				of[j] = i.ofeats[j + 1];
+				pf[j] = i.pfeats[j + 1];
+				if (str == 6099) {
+					// System.out.println(formsNoRoot[j]+"\t"+posNoRoot[j]+"\t"+pposs[j]+"\t"+labels[j]+"\t"+heads[j]);
+				}
+
+				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
+			}
+
+			SentenceData09 i09 = new SentenceData09(formsNoRoot, lemmas, org_lemmas, pposs, pposs, labels, heads, fillp,
+					of, pf);
+
+			// public SentenceData09(String[] forms, String[] lemmas, String[]
+			// olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads,
+			// String[] fillpred) {
+			// SentenceData09
+			// SentenceData09 i2 = new SentenceData09(i.forms,
+			// i.lemmas,i.org_lemmas,);
+
+			writer.write(i09);
+
+		}
+		writer.finishWriting();
+
+	}
+
+	public static void convert0906(String source, String target) throws Exception {
+
+		CONLLReader09 reader = new CONLLReader09(source);
+		CONLLWriter06 writer = new CONLLWriter06(target);
+
+		while (true) {
+			SentenceData09 i = reader.getNext();
+
+			if (i == null)
+				break;
+
+			String[] formsNoRoot = new String[i.length() - 1];
+			String[] posNoRoot = new String[formsNoRoot.length];
+			String[] lemmas = new String[formsNoRoot.length];
+
+			String[] org_lemmas = new String[formsNoRoot.length];
+
+			String[] of = new String[formsNoRoot.length];
+			String[] pf = new String[formsNoRoot.length];
+
+			String[] pposs = new String[formsNoRoot.length];
+			String[] labels = new String[formsNoRoot.length];
+			String[] fillp = new String[formsNoRoot.length];
+
+			int[] heads = new int[formsNoRoot.length];
+
+			for (int j = 0; j < formsNoRoot.length; j++) {
+				formsNoRoot[j] = i.forms[j + 1];
+				posNoRoot[j] = i.gpos[j + 1];
+				pposs[j] = i.ppos[j + 1];
+
+				labels[j] = i.labels[j + 1];
+				heads[j] = i.heads[j + 1];
+				lemmas[j] = i.plemmas[j + 1];
+
+				org_lemmas[j] = i.lemmas[j + 1];
+				of[j] = i.ofeats[j + 1];
+				pf[j] = i.pfeats[j + 1];
+
+				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
+			}
+
+			SentenceData09 i09 = new SentenceData09(formsNoRoot, lemmas, org_lemmas, posNoRoot, pposs, labels, heads,
+					fillp, of, pf);
+
+			// public SentenceData09(String[] forms, String[] lemmas, String[]
+			// olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads,
+			// String[] fillpred) {
+			// SentenceData09
+			// SentenceData09 i2 = new SentenceData09(i.forms,
+			// i.lemmas,i.org_lemmas,);
+
+			writer.write(i09);
+
+		}
+		writer.finishWriting();
+
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/util/ConvertADJ.java b/dependencyParser/experimental/mate-tools/src/is2/util/ConvertADJ.java
new file mode 100644
index 0000000..e6ca6c1
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/util/ConvertADJ.java
@@ -0,0 +1,121 @@
+/**
+ *
+ */
+package is2.util;
+
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.io.CONLLWriter06;
+
+/**
+ * @author Dr. Bernd Bohnet, 01.03.2010
+ *
+ *
+ */
+public class ConvertADJ {
+
+	public static void main(String args[]) throws Exception {
+
+		convert(args[0], args[1]);
+
+	}
+
+	public static void convert(String source, String target) throws Exception {
+
+		CONLLReader09 reader = new CONLLReader09(source);
+		// CONLLWriter09 writer = new CONLLWriter09(target);
+		int adj = 0, argadj = 0;
+		int rb = 0, argrb = 0;
+		while (true) {
+			SentenceData09 i = reader.getNext();
+			if (i == null)
+				break;
+
+			for (int k = 0; k < i.length(); k++) {
+
+				if (i.gpos[k].startsWith("JJ"))
+					adj++;
+				if (i.gpos[k].startsWith("RB"))
+					rb++;
+
+				if (i.argposition != null) {
+					for (int[] element : i.argposition) {
+						if (element != null)
+							for (int a = 0; a < element.length; a++) {
+								if (element[a] == k && i.gpos[k].startsWith("JJ"))
+									argadj++;
+								if (element[a] == k && i.gpos[k].startsWith("RB"))
+									argrb++;
+							}
+
+					}
+				}
+				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
+			}
+
+		}
+		System.out.println("adj " + adj + " " + argadj);
+		System.out.println("rb " + rb + " " + argrb);
+
+	}
+
+	public static void convert0906(String source, String target) throws Exception {
+
+		CONLLReader09 reader = new CONLLReader09(source);
+		CONLLWriter06 writer = new CONLLWriter06(target);
+
+		while (true) {
+			SentenceData09 i = reader.getNext();
+
+			if (i == null)
+				break;
+
+			String[] formsNoRoot = new String[i.length() - 1];
+			String[] posNoRoot = new String[formsNoRoot.length];
+			String[] lemmas = new String[formsNoRoot.length];
+
+			String[] org_lemmas = new String[formsNoRoot.length];
+
+			String[] of = new String[formsNoRoot.length];
+			String[] pf = new String[formsNoRoot.length];
+
+			String[] pposs = new String[formsNoRoot.length];
+			String[] labels = new String[formsNoRoot.length];
+			String[] fillp = new String[formsNoRoot.length];
+
+			int[] heads = new int[formsNoRoot.length];
+
+			for (int j = 0; j < formsNoRoot.length; j++) {
+				formsNoRoot[j] = i.forms[j + 1];
+				posNoRoot[j] = i.gpos[j + 1];
+				pposs[j] = i.ppos[j + 1];
+
+				labels[j] = i.labels[j + 1];
+				heads[j] = i.heads[j + 1];
+				lemmas[j] = i.plemmas[j + 1];
+
+				org_lemmas[j] = i.lemmas[j + 1];
+				of[j] = i.ofeats[j + 1];
+				pf[j] = i.pfeats[j + 1];
+
+				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
+			}
+
+			SentenceData09 i09 = new SentenceData09(formsNoRoot, lemmas, org_lemmas, posNoRoot, pposs, labels, heads,
+					fillp, of, pf);
+
+			// public SentenceData09(String[] forms, String[] lemmas, String[]
+			// olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads,
+			// String[] fillpred) {
+			// SentenceData09
+			// SentenceData09 i2 = new SentenceData09(i.forms,
+			// i.lemmas,i.org_lemmas,);
+
+			writer.write(i09);
+
+		}
+		writer.finishWriting();
+
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/util/ConvertLowerCase0909.java b/dependencyParser/experimental/mate-tools/src/is2/util/ConvertLowerCase0909.java
new file mode 100644
index 0000000..e5842d6
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/util/ConvertLowerCase0909.java
@@ -0,0 +1,76 @@
+/**
+ *
+ */
+package is2.util;
+
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+import is2.io.CONLLWriter09;
+
+/**
+ * @author Dr. Bernd Bohnet, 01.03.2010
+ *
+ *
+ */
+public class ConvertLowerCase0909 {
+
+	public static void main(String args[]) throws Exception {
+
+		CONLLReader09 reader = new CONLLReader09(args[0]);
+		CONLLWriter09 writer = new CONLLWriter09(args[1]);
+
+		while (true) {
+			SentenceData09 i = reader.getNext();
+			if (i == null)
+				break;
+
+			SentenceData09 i09 = new SentenceData09(i);
+			i09.createSemantic(i);
+
+			for (int k = 0; k < i09.length(); k++) {
+				i09.lemmas[k] = i09.lemmas[k].toLowerCase();
+				i09.plemmas[k] = i09.plemmas[k].toLowerCase();
+
+			}
+
+			writer.write(i09);
+
+		}
+		writer.finishWriting();
+
+	}
+
+	public static void convert(String source, String target) throws Exception {
+
+		CONLLReader09 reader = new CONLLReader09(source);
+		CONLLWriter09 writer = new CONLLWriter09(target);
+
+		while (true) {
+			SentenceData09 i = reader.getNext();
+			if (i == null)
+				break;
+
+			SentenceData09 i09 = new SentenceData09(i);
+			i09.createSemantic(i);
+
+			for (int k = 0; k < i09.length(); k++) {
+				i09.lemmas[k] = i09.lemmas[k].toLowerCase();
+				i09.plemmas[k] = i09.plemmas[k].toLowerCase();
+
+			}
+
+			// public SentenceData09(String[] forms, String[] lemmas, String[]
+			// olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads,
+			// String[] fillpred) {
+			// SentenceData09
+			// SentenceData09 i2 = new SentenceData09(i.forms,
+			// i.lemmas,i.org_lemmas,);
+
+			writer.write(i09);
+
+		}
+		writer.finishWriting();
+
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/util/ConvertTiger2CoNLL.java b/dependencyParser/experimental/mate-tools/src/is2/util/ConvertTiger2CoNLL.java
new file mode 100644
index 0000000..e650737
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/util/ConvertTiger2CoNLL.java
@@ -0,0 +1,120 @@
+/**
+ *
+ */
+package is2.util;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.StringTokenizer;
+
+/**
+ * @author Dr. Bernd Bohnet, 17.01.2010
+ *
+ *         This class removes all information from a conll 2009 file except of
+ *         columns 1 and 2 that contain the word id and the word form.
+ */
+public class ConvertTiger2CoNLL {
+
+	public static void main(String[] args) throws IOException {
+
+		OptionsSuper options = new OptionsSuper(args, null);
+
+		if (options.trainfile != null) {
+			System.err.println(
+					"included sentences " + clean(options.trainfile, options.outfile, options.start, options.count));
+		} else
+			System.err.println("Please proivde the file name -train <file-name>");
+
+	}
+
+	/**
+	 * @param trainfile
+	 * @throws IOException
+	 */
+	private static int clean(String file, String outFile, int start, int numberOfSentences) throws IOException {
+
+		System.err.println("writting to " + outFile);
+		System.err.println("start " + start + " to " + (start + numberOfSentences));
+		int state = 0;
+
+		BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"), 32768);
+		BufferedWriter writer = new BufferedWriter(
+				new java.io.OutputStreamWriter(new java.io.FileOutputStream(outFile), "UTF-8"), 32768);
+		String l = null;
+		try {
+
+			int id = 1, snt = 0, cnt = 0;
+
+			while ((l = reader.readLine()) != null) {
+
+				if (l.startsWith("#BOS")) {
+					state = 1; // BOS
+					id = 1;
+					snt++;
+					continue;
+				}
+				if (l.startsWith("#EOS") && state == 1) {
+					state = 2; // BOS
+					cnt++;
+
+					writer.newLine();
+				}
+
+				if (start > snt || (start + numberOfSentences) <= snt) {
+					state = 3;
+				}
+
+				if (l.startsWith("#5") || l.startsWith("#6") || l.startsWith("#7"))
+					continue;
+				if ((start + numberOfSentences) <= snt)
+					break;
+
+				if (state == 3)
+					continue;
+
+				if (state == 1) {
+
+					l = l.replace("\t\t", "\t");
+					l = l.replace("\t\t", "\t");
+
+					StringTokenizer t = new StringTokenizer(l, "\t");
+					int count = 0;
+
+					writer.write("" + id + "\t");
+
+					while (t.hasMoreTokens()) {
+						if (count == 0) {
+							writer.write(t.nextToken() + "\t");
+						} else if (count == 1) {
+							writer.write(t.nextToken() + "\t_\t");
+						} else if (count == 2) {
+							writer.write(t.nextToken() + "\t_\t");
+						} else if (count == 3) {
+							writer.write(t.nextToken().replace(".", "|") + "\t_\t");
+						} else {
+							t.nextToken();
+						}
+						count++;
+					}
+					writer.write("_\t_\t_\t_\t_\t_\t_\t_\t_");
+					writer.newLine();
+				}
+				id++;
+			}
+			writer.flush();
+			writer.close();
+			reader.close();
+
+			return cnt;
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+
+		return -1;
+
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/util/DB.java b/dependencyParser/experimental/mate-tools/src/is2/util/DB.java
new file mode 100755
index 0000000..30fd231
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/util/DB.java
@@ -0,0 +1,78 @@
+package is2.util;
+
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+
+public class DB {
+
+	private static final String ARROW = " -> ";
+	private static final String LEER = "                            ";
+	private static final String BIG = "                                                                                    ";
+
+	private static boolean debug = true;
+
+	final static public void println(Object err) {
+
+		if (!debug)
+			return;
+
+		StackTraceElement[] ste = new Exception().getStackTrace();
+
+		StringBuffer msg = new StringBuffer();
+		msg.append((getDate().append(LEER).substring(0, 10)));
+		msg.append(' ');
+		msg.append(ste[1].getClassName() + " " + ste[1].getLineNumber());
+		msg.append(':');
+		msg.append(ste[1].getMethodName());
+		msg.append(ARROW);
+
+		int l = 55 - msg.length();
+		if (l < 0)
+			l = 0;
+		msg.append(BIG.substring(0, l));
+
+		// if ((m_depth >= 0) && (m_depth < (BIG.length()) )) {
+		// vDebugMessage.append(BIG.substring(0, m_depth*2));
+		// }
+
+		msg.append(err);
+
+		System.err.println(msg);
+
+	}
+
+	final static public void prints(Object err) {
+
+		if (!debug)
+			return;
+		System.err.println(err);
+
+	}
+
+	final private static StringBuffer getDate() {
+		// if (Preferences.s_debug <= BDebug.FAIL) return s_sb;
+
+		GregorianCalendar s_cal = new GregorianCalendar();
+		StringBuffer sb = new StringBuffer();
+		// sb.append(s_cal.get(Calendar.HOUR_OF_DAY));
+		// sb.append('_');
+		sb.append(s_cal.get(Calendar.MINUTE));
+		sb.append('.');
+		sb.append(s_cal.get(Calendar.SECOND));
+		sb.append('.');
+		sb.append(s_cal.get(Calendar.MILLISECOND));
+
+		return sb;
+	}
+
+	public static void setDebug(boolean b) {
+		debug = b;
+
+	}
+
+	public static boolean getDebug() {
+
+		return debug;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/util/Edges.java b/dependencyParser/experimental/mate-tools/src/is2/util/Edges.java
new file mode 100644
index 0000000..2457cae
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/util/Edges.java
@@ -0,0 +1,197 @@
+/**
+ *
+ */
+package is2.util;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Map.Entry;
+
+/**
+ * @author Dr. Bernd Bohnet, 13.05.2009;
+ *
+ *
+ */
+public final class Edges {
+
+	private static short[][][] edges;
+	private static HashMap<Short, Integer> labelCount = new HashMap<Short, Integer>();
+
+	private static HashMap<String, Integer> slabelCount = new HashMap<String, Integer>();
+
+	static short[] def = new short[1];
+
+	private Edges() {
+	}
+
+	/**
+	 * @param length
+	 */
+	public static void init(int length) {
+		edges = new short[length][length][];
+	}
+
+	public static void findDefault() {
+
+		int best = 0;
+
+		for (Entry<Short, Integer> e : labelCount.entrySet()) {
+
+			if (best < e.getValue()) {
+				best = e.getValue();
+				def[0] = e.getKey();
+			}
+		}
+
+		// labelCount=null;
+		// String[] types = new String[mf.getFeatureCounter().get(PipeGen.REL)];
+		// for (Entry<String, Integer> e :
+		// MFO.getFeatureSet().get(PipeGen.REL).entrySet()) types[e.getValue()]
+		// = e.getKey();
+
+		is2.util.DB.println("set default label to " + def[0] + " ");
+
+		// System.out.println("found default "+def[0]);
+
+	}
+
+	final static public void put(int pos1, int pos2, short label) {
+		putD(pos1, pos2, label);
+		// putD(pos2, pos1,!dir, label);
+	}
+
+	final static public void putD(int pos1, int pos2, short label) {
+
+		Integer lc = labelCount.get(label);
+		if (lc == null)
+			labelCount.put(label, 1);
+		else
+			labelCount.put(label, lc + 1);
+
+		String key = pos1 + "-" + pos2 + label;
+		Integer lcs = slabelCount.get(key);
+		if (lcs == null)
+			slabelCount.put(key, 1);
+		else
+			slabelCount.put(key, lcs + 1);
+
+		if (edges[pos1][pos2] == null) {
+			edges[pos1][pos2] = new short[1];
+			edges[pos1][pos2][0] = label;
+
+			// edgesh[pos1][pos2][dir?0:1] = new TIntHashSet(2);
+			// edgesh[pos1][pos2][dir?0:1].add(label);
+		} else {
+			short labels[] = edges[pos1][pos2];
+			for (short l : labels) {
+				// contains label already?
+				if (l == label)
+					return;
+			}
+
+			short[] nlabels = new short[labels.length + 1];
+			System.arraycopy(labels, 0, nlabels, 0, labels.length);
+			nlabels[labels.length] = label;
+			edges[pos1][pos2] = nlabels;
+
+			// edgesh[pos1][pos2][dir?0:1].add(label);
+		}
+	}
+
+	final static public short[] get(int pos1, int pos2) {
+
+		if (pos1 < 0 || pos2 < 0 || edges[pos1][pos2] == null)
+			return def;
+		return edges[pos1][pos2];
+	}
+
+	/**
+	 * @param dis
+	 */
+	static public void write(DataOutputStream d) throws IOException {
+
+		int len = edges.length;
+		d.writeShort(len);
+
+		for (int p1 = 0; p1 < len; p1++) {
+			for (int p2 = 0; p2 < len; p2++) {
+				if (edges[p1][p2] == null)
+					d.writeShort(0);
+				else {
+					d.writeShort(edges[p1][p2].length);
+					for (int l = 0; l < edges[p1][p2].length; l++) {
+						d.writeShort(edges[p1][p2][l]);
+					}
+
+				}
+			}
+		}
+
+		d.writeShort(def[0]);
+
+	}
+
+	/**
+	 * @param dis
+	 */
+	public static void read(DataInputStream d) throws IOException {
+		int len = d.readShort();
+
+		edges = new short[len][len][];
+		for (int p1 = 0; p1 < len; p1++) {
+			for (int p2 = 0; p2 < len; p2++) {
+				int ll = d.readShort();
+				if (ll == 0) {
+					edges[p1][p2] = null;
+				} else {
+					edges[p1][p2] = new short[ll];
+					for (int l = 0; l < ll; l++) {
+						edges[p1][p2][l] = d.readShort();
+					}
+				}
+			}
+		}
+
+		def[0] = d.readShort();
+
+	}
+
+	public static class C implements Comparator<Short> {
+
+		public C() {
+			super();
+		}
+
+		String _key;
+
+		public C(String key) {
+			super();
+			_key = key;
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+		 */
+		@Override
+		public int compare(Short l1, Short l2) {
+
+			// int c1 = labelCount.get(l1);
+			// int c2 = labelCount.get(l2);
+			// if (true) return c1==c2?0:c1>c2?-1:1;
+
+			int x1 = slabelCount.get(_key + l1.shortValue());
+			int x2 = slabelCount.get(_key + l2.shortValue());
+			// System.out.println(x1+" "+x2);
+
+			return x1 == x2 ? 0 : x1 > x2 ? -1 : 1;
+
+		}
+
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/util/Evaluator.java b/dependencyParser/experimental/mate-tools/src/is2/util/Evaluator.java
new file mode 100644
index 0000000..f75fc54
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/util/Evaluator.java
@@ -0,0 +1,603 @@
+package is2.util;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map.Entry;
+
+//import org.apache.commons.math.stat.inference.TestUtils;
+
+import is2.data.Parse;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+
+public class Evaluator {
+
+	public static void main(String[] args) {
+
+		Options options = new Options(args);
+
+		if (options.eval && options.significant1 == null) {
+
+			evaluate(options.goldfile, options.outfile);
+
+		}
+		/*
+		 * else if (options.significant1!=null && options.significant2!=null ) {
+		 * 
+		 * System.out.println("compare1 "+options.significant1);
+		 * System.out.println("compare2 "+options.significant2);
+		 * System.out.println("gold     "+options.goldfile);
+		 * 
+		 * Results r1 = evaluate(options.goldfile, options.significant1,false);
+		 * 
+		 * System.out.println("file 1 done ");
+		 * 
+		 * Results r2 = evaluate(options.goldfile, options.significant2,false);
+		 * 
+		 * double[] s1 = new double[r1.correctHead.size()]; double[] s2 = new
+		 * double[r1.correctHead.size()];
+		 * 
+		 * for(int k=0;k<r1.correctHead.size();k++) { s1[k] =
+		 * r1.correctHead.get(k); s2[k] = r2.correctHead.get(k); }
+		 * 
+		 * try { double p = TestUtils.pairedTTest(s1, s2);
+		 * System.out.print("significant to "+p); } catch (Exception e) {
+		 * e.printStackTrace(); }
+		 * 
+		 * // significant(options.significant1, options.significant2) ;
+		 * 
+		 * 
+		 * }
+		 */
+		else if (options.significant1 != null) {
+			evaluate(options.goldfile, options.outfile, true);
+
+		}
+
+	}
+
+	/**
+	 *
+	 * @param act_file
+	 * @param pred_file
+	 * @param what
+	 *            top, pos, length, mor
+	 */
+	public static void evaluateTagger(String act_file, String pred_file, String what) {
+
+		CONLLReader09 goldReader = new CONLLReader09(act_file);
+
+		CONLLReader09 predictedReader = new CONLLReader09();
+		predictedReader.startReading(pred_file);
+
+		Hashtable<String, Integer> errors = new Hashtable<String, Integer>();
+		Hashtable<String, StringBuffer> words = new Hashtable<String, StringBuffer>();
+
+		int total = 0, numsent = 0, corrT = 0;
+		SentenceData09 goldInstance = goldReader.getNext();
+		SentenceData09 predInstance = predictedReader.getNext();
+
+		HashMap<Integer, int[]> correctL = new HashMap<Integer, int[]>();
+		HashMap<String, int[]> pos = new HashMap<String, int[]>();
+		HashMap<String, int[]> mor = new HashMap<String, int[]>();
+
+		float correctM = 0;
+		;
+
+		while (goldInstance != null) {
+
+			int instanceLength = goldInstance.length();
+
+			if (instanceLength != predInstance.length())
+				System.out.println("Lengths do not match on sentence " + numsent);
+
+			String gold[] = goldInstance.gpos;
+			String pred[] = predInstance.ppos;
+
+			String goldM[] = goldInstance.ofeats;
+			String predM[] = predInstance.pfeats;
+
+			// NOTE: the first item is the root info added during
+			// nextInstance(), so we skip it.
+
+			for (int i = 1; i < instanceLength; i++) {
+
+				int[] cwr = correctL.get(i);
+				if (cwr == null) {
+					cwr = new int[2];
+					correctL.put(i, cwr);
+				}
+				cwr[1]++;
+				int[] correctPos = pos.get(gold[i]);
+				if (correctPos == null) {
+					correctPos = new int[2];
+					pos.put(gold[i], correctPos);
+				}
+				correctPos[1]++;
+
+				int[] correctMor = mor.get(goldM[i]);
+				if (correctMor == null) {
+					correctMor = new int[2];
+					mor.put(goldM[i], correctMor);
+				}
+
+				if ((goldM[i].equals("_") && predM[i] == null) || goldM[i].equals(predM[i])) {
+					correctM++;
+					correctMor[0]++;
+				}
+				correctMor[1]++;
+
+				if (gold[i].equals(pred[i])) {
+					corrT++;
+					cwr[0]++;
+					correctPos[0]++;
+				} else {
+					String key = "gold: '" + gold[i] + "' pred: '" + pred[i] + "'";
+					Integer cnt = errors.get(key);
+					StringBuffer errWrd = words.get(key);
+					if (cnt == null) {
+						errors.put(key, 1);
+						words.put(key, new StringBuffer().append(goldInstance.forms[i]));
+					} else {
+						errors.put(key, cnt + 1);
+						errWrd.append(" " + goldInstance.forms[i]);
+					}
+				}
+
+			}
+			total += instanceLength - 1; // Subtract one to not score fake root
+											// token
+
+			numsent++;
+
+			goldInstance = goldReader.getNext();
+			predInstance = predictedReader.getNext();
+		}
+
+		// System.out.println("error gold:"+goldPos[i]+" pred:"+predPos[i]+"
+		// "+goldInstance.forms[i]+" snt "+numsent+" i:"+i);
+		ArrayList<Entry<String, Integer>> opsl = new ArrayList<Entry<String, Integer>>();
+		for (Entry<String, Integer> e : errors.entrySet()) {
+			opsl.add(e);
+		}
+
+		Collections.sort(opsl, new Comparator<Entry<String, Integer>>() {
+
+			@Override
+			public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
+
+				return o1.getValue() == o2.getValue() ? 0 : o1.getValue() > o2.getValue() ? -1 : 1;
+			}
+
+		});
+
+		if (what.contains("top")) {
+			System.out.println("top most errors:");
+			for (Entry<String, Integer> e : opsl) {
+				if (e.getValue() > 10)
+					System.out.println(e.getKey() + "  " + e.getValue() + " context: " + words.get(e.getKey()));
+			}
+		}
+
+		if (what.contains("length")) {
+			for (int k = 0; k < 60; k++) {
+				int[] cwr = correctL.get(k);
+				if (cwr == null)
+					continue;
+				System.out.print(k + ":" + cwr[0] + ":" + cwr[1] + ":"
+						+ (((float) Math.round(10000 * (cwr[0]) / cwr[1])) / 100) + " ");
+			}
+			System.out.println();
+		}
+
+		if (what.contains("pos")) {
+			for (Entry<String, int[]> e : pos.entrySet()) {
+
+				System.out.print(e.getKey() + ":" + e.getValue()[0] + ":" + e.getValue()[1] + ":"
+						+ (((float) Math.round(10000 * ((float) e.getValue()[0]) / (e.getValue()[1]))) / 100) + " ");
+
+			}
+			System.out.print("");
+		}
+		System.out.println();
+		if (what.contains("mor")) {
+			for (Entry<String, int[]> e : mor.entrySet()) {
+
+				System.out.print(e.getKey() + ":" + e.getValue()[0] + ":" + e.getValue()[1] + ":"
+						+ (((float) Math.round(10000 * ((float) e.getValue()[0]) / (e.getValue()[1]))) / 100) + " ");
+
+			}
+			System.out.print("");
+		}
+		System.out.println("\nTokens: " + total + " Correct: " + corrT + " " + (float) corrT / total + " Correct M.:"
+				+ (int) correctM + " morphology " + (correctM / total));
+	}
+
+	public static int errors(SentenceData09 s, boolean uas) {
+
+		int errors = 0;
+		for (int k = 1; k < s.length(); k++) {
+
+			if (s.heads[k] != s.pheads[k] && (uas || !s.labels[k].equals(s.plabels[k]))) {
+				errors++;
+			}
+		}
+		return errors;
+	}
+
+	public static int errors(SentenceData09 s1, SentenceData09 s2, HashMap<String, Integer> r1,
+			HashMap<String, Integer> r2) {
+
+		int errors = 0;
+		for (int k = 1; k < s1.length(); k++) {
+
+			if (s1.heads[k] != s1.pheads[k] || (!s1.labels[k].equals(s1.plabels[k]))) {
+
+				if (s2.heads[k] != s2.pheads[k] || (!s2.labels[k].equals(s2.plabels[k]))) {
+
+					// equal do nothing
+
+				} else {
+
+					Integer cnt = r1.get(s1.labels[k]);
+					if (cnt == null)
+						cnt = 0;
+					cnt++;
+					r1.put(s1.labels[k], cnt);
+
+				}
+
+			}
+
+			if (s2.heads[k] != s2.pheads[k] || (!s2.labels[k].equals(s2.plabels[k]))) {
+
+				if (s1.heads[k] != s1.pheads[k] || (!s1.labels[k].equals(s1.plabels[k]))) {
+
+					// equal do nothing
+
+				} else {
+
+					Integer cnt = r2.get(s2.labels[k]);
+					if (cnt == null)
+						cnt = 0;
+					cnt++;
+					r2.put(s2.labels[k], cnt);
+
+				}
+
+			}
+		}
+		return errors;
+	}
+
+	public static final String PUNCT = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
+
+	public static class Results {
+
+		public int total;
+		public int corr;
+		public float las;
+		public float ula;
+		public float lpas;
+		public float upla;
+
+		ArrayList<Double> correctHead;
+	}
+
+	public static Results evaluate(String act_file, String pred_file) {
+		return evaluate(act_file, pred_file, true);
+	}
+
+	public static Results evaluate(String act_file, String pred_file, boolean printEval) {
+		return evaluate(act_file, pred_file, printEval, false);
+	}
+
+	public static Results evaluate(String act_file, String pred_file, boolean printEval, boolean sig) {
+
+		CONLLReader09 goldReader = new CONLLReader09(act_file, -1);
+		CONLLReader09 predictedReader = new CONLLReader09(pred_file, -1);
+
+		int total = 0, corr = 0, corrL = 0, Ptotal = 0, Pcorr = 0, PcorrL = 0, BPtotal = 0, BPcorr = 0, BPcorrL = 0,
+				corrLableAndPos = 0, corrHeadAndPos = 0;
+		int corrLableAndPosP = 0, corrLableAndPosC = 0;
+		int numsent = 0, corrsent = 0, corrsentL = 0, Pcorrsent = 0, PcorrsentL = 0;
+		;
+		int proj = 0, nonproj = 0, pproj = 0, pnonproj = 0, nonProjOk = 0, nonProjWrong = 0;
+
+		int correctChnWoPunc = 0, correctLChnWoPunc = 0, CPtotal = 0;
+		SentenceData09 goldInstance = goldReader.getNext();
+
+		SentenceData09 predInstance = predictedReader.getNext();
+		HashMap<String, Integer> label = new HashMap<String, Integer>();
+		HashMap<String, Integer> labelCount = new HashMap<String, Integer>();
+		HashMap<String, Integer> labelCorrect = new HashMap<String, Integer>();
+		HashMap<String, Integer> falsePositive = new HashMap<String, Integer>();
+
+		// does the node have the correct head?
+		ArrayList<Double> correctHead = new ArrayList<Double>();
+
+		while (goldInstance != null) {
+
+			int instanceLength = goldInstance.length();
+
+			if (instanceLength != predInstance.length())
+				System.out.println("Lengths do not match on sentence " + numsent);
+
+			int[] goldHeads = goldInstance.heads;
+			String[] goldLabels = goldInstance.labels;
+			int[] predHeads = predInstance.pheads;
+			String[] predLabels = predInstance.plabels;
+
+			boolean whole = true;
+			boolean wholeL = true;
+
+			boolean Pwhole = true;
+			boolean PwholeL = true;
+
+			int corrLabels = 0;
+
+			// NOTE: the first item is the root info added during
+			// nextInstance(), so we skip it.
+
+			int punc = 0, bpunc = 0, totalChnWoPunc = 0;
+			for (int i = 1; i < instanceLength; i++) {
+
+				Parse p = new Parse(predHeads.length);
+				for (int k = 0; k < p.heads.length; k++)
+					p.heads[k] = (short) predHeads[k];
+
+				Parse g = new Parse(predHeads.length);
+				for (int k = 0; k < g.heads.length; k++)
+					g.heads[k] = (short) goldHeads[k];
+
+				{
+					Integer count = labelCount.get(goldLabels[i]);
+					if (count == null)
+						count = 0;
+
+					count++;
+
+					labelCount.put(goldLabels[i], count);
+
+					if (goldLabels[i].equals(predLabels[i])) {
+						Integer correct = labelCorrect.get(goldLabels[i]);
+						if (correct == null)
+							correct = 0;
+						correct++;
+						labelCorrect.put(goldLabels[i], correct);
+
+					} else {
+						Integer fp = falsePositive.get(predLabels[i]);
+						if (fp == null)
+							fp = 0;
+						fp++;
+						falsePositive.put(predLabels[i], fp);
+					}
+
+				}
+
+				{
+
+				}
+
+				if (goldLabels[i].startsWith("PMOD")) {
+				}
+
+				boolean tlas = false;
+				if (predHeads[i] == goldHeads[i]) {
+					corr++;
+
+					if (goldInstance.gpos[i].equals(predInstance.ppos[i]))
+						corrHeadAndPos++;
+					if (goldLabels[i].equals(predLabels[i])) {
+						corrL++;
+						// if (predLabels[i].startsWith("PMOD"))
+						corrLabels++;
+						// else correctHead.add(0);
+						if (goldInstance.gpos[i].equals(predInstance.ppos[i])) {
+							tlas = true;
+							corrLableAndPos++;
+						}
+					} else {
+						// correctHead.add(0);
+						// System.out.println(numsent+" error gold
+						// "+goldLabels[i]+" "+predLabels[i]+" head
+						// "+goldHeads[i]+" child "+i);
+						wholeL = false;
+					}
+				} else {
+
+					// correctHead.add(0);
+
+					// System.out.println(numsent+"error gold "+goldLabels[i]+"
+					// "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
+					whole = false;
+					wholeL = false;
+
+					Integer count = label.get(goldLabels[i]);
+
+					if (count == null)
+						count = 0;
+					count++;
+					label.put(goldLabels[i], count);
+
+					Math.abs(goldInstance.heads[i] - i);
+				}
+
+				if (!("!\"#$%&''()*+,-./:;<=>?@[\\]^_{|}~``".contains(goldInstance.forms[i]))) {
+
+					if (predHeads[i] == goldHeads[i]) {
+						BPcorr++;
+
+						if (goldLabels[i].equals(predLabels[i])) {
+							BPcorrL++;
+						} else {
+							// System.out.println(numsent+" error gold
+							// "+goldLabels[i]+" "+predLabels[i]+" head
+							// "+goldHeads[i]+" child "+i);
+							// PwholeL = false;
+						}
+					} else {
+						// System.out.println(numsent+"error gold
+						// "+goldLabels[i]+" "+predLabels[i]+" head
+						// "+goldHeads[i]+" child "+i);
+						// Pwhole = false; wholeL = false;
+					}
+
+				} else
+					bpunc++;
+
+				if (!(",.:''``".contains(goldInstance.forms[i]))) {
+
+					if (predHeads[i] == goldHeads[i]) {
+						if (goldInstance.gpos[i].equals(predInstance.ppos[i])) {
+						}
+						Pcorr++;
+
+						if (goldLabels[i].equals(predLabels[i])) {
+							PcorrL++;
+							if (goldInstance.gpos[i].equals(predInstance.ppos[i]))
+								corrLableAndPosP++;
+
+						} else {
+							// System.out.println(numsent+" error gold
+							// "+goldLabels[i]+" "+predLabels[i]+" head
+							// "+goldHeads[i]+" child "+i);
+							PwholeL = false;
+						}
+					} else {
+						// System.out.println(numsent+"error gold
+						// "+goldLabels[i]+" "+predLabels[i]+" head
+						// "+goldHeads[i]+" child "+i);
+						Pwhole = false;
+						PwholeL = false;
+					}
+
+				} else
+					punc++;
+
+				if (!(goldInstance.gpos[i].toLowerCase().startsWith("pu"))) {
+					if (predHeads[i] == goldHeads[i]) {
+						correctChnWoPunc++;
+
+						if (goldLabels[i].equals(predLabels[i])) {
+							correctLChnWoPunc++;
+							if (goldInstance.gpos[i].equals(predInstance.ppos[i]))
+								corrLableAndPosC++;
+						} else {
+							// System.out.println(numsent+" error gold
+							// "+goldLabels[i]+" "+predLabels[i]+" head
+							// "+goldHeads[i]+" child "+i);
+							// PwholeL = false;
+						}
+					} else {
+						// System.out.println(numsent+"error gold
+						// "+goldLabels[i]+" "+predLabels[i]+" head
+						// "+goldHeads[i]+" child "+i);
+						// Pwhole = false; PwholeL = false;
+					}
+
+				} else
+					totalChnWoPunc++;
+
+				if (sig) {
+					if (tlas)
+						System.out.println("1\t");
+					else
+						System.out.println("0\t");
+				}
+
+			}
+			total += ((instanceLength - 1)); // Subtract one to not score fake
+												// root token
+
+			Ptotal += ((instanceLength - 1) - punc);
+			BPtotal += ((instanceLength - 1) - bpunc);
+			CPtotal += ((instanceLength - 1) - totalChnWoPunc);
+			if (whole)
+				corrsent++;
+			if (wholeL)
+				corrsentL++;
+			if (Pwhole)
+				Pcorrsent++;
+			if (PwholeL)
+				PcorrsentL++;
+			numsent++;
+
+			goldInstance = goldReader.getNext();
+			predInstance = predictedReader.getNext();
+			correctHead.add((double) corrLabels / (instanceLength - 1));
+			// System.out.println(""+((double)corrLabels/(instanceLength - 1)));
+		}
+
+		Results r = new Results();
+
+		r.correctHead = correctHead;
+		int mult = 100000, diff = 1000;
+
+		r.total = total;
+		r.corr = corr;
+		r.las = (float) Math.round(((double) corrL / total) * mult) / diff;
+		r.ula = (float) Math.round(((double) corr / total) * mult) / diff;
+		r.lpas = (float) Math.round(((double) corrLableAndPos / total) * mult) / diff;
+		r.upla = (float) Math.round(((double) corrHeadAndPos / total) * mult) / diff;
+		float tlasp = (float) Math.round(((double) corrLableAndPosP / Ptotal) * mult) / diff;
+		float tlasc = (float) Math.round(((double) corrLableAndPosC / Ptotal) * mult) / diff;
+
+		// System.out.print("Total: " + total+" \tCorrect: " + corr+" ");
+		System.out.print(" LAS/Total/UAS/Total: " + r.las + "/"
+				+ (double) Math.round(((double) corrsentL / numsent) * mult) / diff + "/" + r.ula + "/"
+				+ (double) Math.round(((double) corrsent / numsent) * mult) / diff + " LPAS/UPAS " + r.lpas + "/"
+				+ r.upla);
+
+		System.out.println("; without . " + (double) Math.round(((double) PcorrL / Ptotal) * mult) / diff + "/"
+				+ (double) Math.round(((double) PcorrsentL / numsent) * mult) / diff + "/"
+				+ (double) Math.round(((double) Pcorr / Ptotal) * mult) / diff + "/"
+				+ (double) Math.round(((double) Pcorrsent / numsent) * mult) / diff + " TLAS " + tlasp + " V2 LAS/UAS "
+				+ (double) Math.round(((double) BPcorrL / BPtotal) * mult) / diff + "/"
+				+ (double) Math.round(((double) BPcorr / BPtotal) * mult) / diff + " CHN LAS/UAS "
+				+ (double) Math.round(((double) correctLChnWoPunc / CPtotal) * mult) / diff + "/"
+				+ (double) Math.round(((double) correctChnWoPunc / CPtotal) * mult) / diff + " TLAS " + tlasc);
+
+		float precisionNonProj = (nonProjOk) / ((float) nonProjOk + nonProjWrong);
+		float recallNonProj = ((float) nonProjOk) / ((float) (nonproj));
+		System.out.println("proj " + proj + " nonp " + nonproj + "; predicted proj " + pproj + " non " + pnonproj
+				+ "; nonp correct " + nonProjOk + " nonp wrong " + nonProjWrong
+				+ " precision=(nonProjOk)/(non-projOk+nonProjWrong): " + precisionNonProj + " recall=nonProjOk/nonproj="
+				+ recallNonProj + " F=" + (2 * precisionNonProj * recallNonProj) / (precisionNonProj + recallNonProj));
+
+		if (!printEval)
+			return r;
+
+		new HashMap<String, Integer>();
+		new HashMap<String, Integer>();
+
+		System.out.println("label\ttp\tcount\trecall\t\ttp\tfp+tp\tprecision\t F-Score ");
+
+		for (Entry<String, Integer> e : labelCount.entrySet()) {
+
+			int tp = labelCorrect.get(e.getKey()) == null ? 0 : labelCorrect.get(e.getKey()).intValue();
+			Integer count = labelCount.get(e.getKey());
+			int fp = falsePositive.get(e.getKey()) == null ? 0 : falsePositive.get(e.getKey()).intValue();
+			System.out.println(e.getKey() + "\t" + tp + "\t" + count + "\t" + roundPercent((float) tp / count) + "\t\t"
+					+ tp + "\t" + (fp + tp) + "\t" + roundPercent((float) tp / (fp + tp)) + "\t\t"
+					+ roundPercent((((float) tp / count)) + (float) tp / (fp + tp)) / 2F); // +totalD
+		}
+
+		return r;
+	}
+
+	public static float round(double v) {
+
+		return Math.round(v * 10000F) / 10000F;
+	}
+
+	public static float roundPercent(double v) {
+
+		return Math.round(v * 10000F) / 100F;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/util/EvaluatorTagger.java b/dependencyParser/experimental/mate-tools/src/is2/util/EvaluatorTagger.java
new file mode 100644
index 0000000..c1f88f4
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/util/EvaluatorTagger.java
@@ -0,0 +1,707 @@
+package is2.util;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map.Entry;
+
+import org.apache.commons.math.stat.inference.TestUtils;
+
+import is2.data.Parse;
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+
+public class EvaluatorTagger {
+
+	public static int TAGGER = 1;
+	public static int what = 0;
+
+	public static void main(String[] args) {
+
+		Options options = new Options(args);
+
+		what = options.tt;
+
+		if (options.eval && options.significant1 == null) {
+
+			evaluate(options.goldfile, options.outfile);
+
+		} else if (options.significant1 != null && options.significant2 != null) {
+
+			System.out.println("compare1 " + options.significant1);
+			System.out.println("compare2 " + options.significant2);
+			System.out.println("gold     " + options.goldfile);
+
+			check(options.significant1, options.significant2, options.testfile);
+
+			Results r1 = evaluate(options.goldfile, options.significant1, false);
+
+			System.out.println("file 1 done ");
+
+			Results r2 = evaluate(options.goldfile, options.significant2, false);
+
+			double[] s1 = new double[r1.correctHead.size()];
+			double[] s2 = new double[r1.correctHead.size()];
+
+			for (int k = 0; k < r1.correctHead.size(); k++) {
+				s1[k] = r1.correctHead.get(k);
+				s2[k] = r2.correctHead.get(k);
+			}
+
+			try {
+				double p = TestUtils.pairedTTest(s1, s2);
+				System.out.print("significant to " + p);
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+
+			// significant(options.significant1, options.significant2) ;
+
+		} else if (options.significant1 != null) {
+			evaluate(options.goldfile, options.outfile, true);
+
+		}
+
+	}
+
+	private static void check(String s1, String s2, String pos) {
+		CONLLReader09 s1reader = new CONLLReader09(s1, -1);
+		SentenceData09 s1i = s1reader.getNext();
+		CONLLReader09 s2reader = new CONLLReader09(s2, -1);
+		SentenceData09 s2i = s2reader.getNext();
+
+		HashMap<String, HashMap<String, Integer>> labchanged = new HashMap<String, HashMap<String, Integer>>();
+
+		int snt = 0;
+
+		while (s1i != null) {
+
+			snt++;
+			int good = 0, wrong = 0;
+
+			for (int w = 1; w < s1i.length(); w++) {
+
+				// p(s1:head-pos wrong s2:head-pos good => dep-wrong =>
+				// dep-good)
+
+				if (s1i.gpos[s1i.heads[w]].equals(pos) && !!s1i.ppos[s1i.heads[w]].equals(s1i.gpos[s1i.heads[w]])
+						&& s2i.ppos[s2i.heads[w]].equals(s2i.gpos[s2i.heads[w]])) {
+
+					HashMap<String, Integer> changed = labchanged.get(s2i.labels[w]);
+					if (changed == null) {
+						changed = new HashMap<String, Integer>();
+						labchanged.put(s2i.labels[w], changed);
+					}
+					if (!(s1i.plabels[w].equals(s1i.labels[w]) && s1i.pheads[w] == s1i.heads[w])
+							&& (s2i.plabels[w].equals(s2i.labels[w]) && s2i.pheads[w] == s2i.heads[w])) {
+						good++;
+						Integer goodL = changed.get("G");
+						if (goodL == null)
+							goodL = 0;
+						goodL += 1;
+						changed.put("G", goodL);
+					} else {
+						wrong++;
+						Integer wrongL = changed.get("W");
+						if (wrongL == null)
+							wrongL = 0;
+						wrongL += 1;
+						changed.put("W", wrongL);
+					}
+
+				}
+
+			}
+
+			if (good != 0 || wrong != 0)
+				System.out.println(snt + " changed yes:" + good + " no:" + wrong);
+			s1i = s1reader.getNext();
+			s2i = s2reader.getNext();
+		}
+		System.out.println("" + labchanged);
+
+	}
+
+	/**
+	 *
+	 * @param act_file
+	 * @param pred_file
+	 * @param what
+	 *            top, pos, length, mor
+	 */
+	public static void evaluateTagger(String act_file, String pred_file, String what) {
+
+		CONLLReader09 goldReader = new CONLLReader09(act_file);
+
+		CONLLReader09 predictedReader = new CONLLReader09();
+		predictedReader.startReading(pred_file);
+
+		Hashtable<String, Integer> errors = new Hashtable<String, Integer>();
+		Hashtable<String, StringBuffer> words = new Hashtable<String, StringBuffer>();
+
+		int total = 0, numsent = 0, corrT = 0;
+		SentenceData09 goldInstance = goldReader.getNext();
+		SentenceData09 predInstance = predictedReader.getNext();
+
+		HashMap<Integer, int[]> correctL = new HashMap<Integer, int[]>();
+		HashMap<String, int[]> pos = new HashMap<String, int[]>();
+		HashMap<String, int[]> mor = new HashMap<String, int[]>();
+
+		float correctM = 0;
+		;
+
+		while (goldInstance != null) {
+
+			int instanceLength = goldInstance.length();
+
+			if (instanceLength != predInstance.length())
+				System.out.println("Lengths do not match on sentence " + numsent);
+
+			String gold[] = goldInstance.gpos;
+			String pred[] = predInstance.ppos;
+
+			String goldM[] = goldInstance.ofeats;
+			String predM[] = predInstance.pfeats;
+
+			// NOTE: the first item is the root info added during
+			// nextInstance(), so we skip it.
+
+			for (int i = 1; i < instanceLength; i++) {
+
+				int[] cwr = correctL.get(i);
+				if (cwr == null) {
+					cwr = new int[2];
+					correctL.put(i, cwr);
+				}
+				cwr[1]++;
+				int[] correctPos = pos.get(gold[i]);
+				if (correctPos == null) {
+					correctPos = new int[2];
+					pos.put(gold[i], correctPos);
+				}
+				correctPos[1]++;
+
+				int[] correctMor = mor.get(goldM[i]);
+				if (correctMor == null) {
+					correctMor = new int[2];
+					mor.put(goldM[i], correctMor);
+				}
+
+				if ((goldM[i].equals("_") && predM[i] == null) || goldM[i].equals(predM[i])) {
+					correctM++;
+					correctMor[0]++;
+				}
+				correctMor[1]++;
+
+				if (gold[i].equals(pred[i])) {
+					corrT++;
+					cwr[0]++;
+					correctPos[0]++;
+				} else {
+					String key = "gold: '" + gold[i] + "' pred: '" + pred[i] + "'";
+					Integer cnt = errors.get(key);
+					StringBuffer errWrd = words.get(key);
+					if (cnt == null) {
+						errors.put(key, 1);
+						words.put(key, new StringBuffer().append(goldInstance.forms[i]));
+					} else {
+						errors.put(key, cnt + 1);
+						errWrd.append(" " + goldInstance.forms[i]);
+					}
+				}
+
+			}
+			total += instanceLength - 1; // Subtract one to not score fake root
+											// token
+
+			numsent++;
+
+			goldInstance = goldReader.getNext();
+			predInstance = predictedReader.getNext();
+		}
+
+		// System.out.println("error gold:"+goldPos[i]+" pred:"+predPos[i]+"
+		// "+goldInstance.forms[i]+" snt "+numsent+" i:"+i);
+		ArrayList<Entry<String, Integer>> opsl = new ArrayList<Entry<String, Integer>>();
+		for (Entry<String, Integer> e : errors.entrySet()) {
+			opsl.add(e);
+		}
+
+		Collections.sort(opsl, new Comparator<Entry<String, Integer>>() {
+
+			@Override
+			public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
+
+				return o1.getValue() == o2.getValue() ? 0 : o1.getValue() > o2.getValue() ? -1 : 1;
+			}
+
+		});
+
+		if (what.contains("top")) {
+			System.out.println("top most errors:");
+			for (Entry<String, Integer> e : opsl) {
+				if (e.getValue() > 10)
+					System.out.println(e.getKey() + "  " + e.getValue() + " context: " + words.get(e.getKey()));
+			}
+		}
+
+		if (what.contains("length")) {
+			for (int k = 0; k < 60; k++) {
+				int[] cwr = correctL.get(k);
+				if (cwr == null)
+					continue;
+				System.out.print(k + ":" + cwr[0] + ":" + cwr[1] + ":"
+						+ (((float) Math.round(10000 * (cwr[0]) / cwr[1])) / 100) + " ");
+			}
+			System.out.println();
+		}
+
+		if (what.contains("pos")) {
+			for (Entry<String, int[]> e : pos.entrySet()) {
+
+				System.out.print(e.getKey() + ":" + e.getValue()[0] + ":" + e.getValue()[1] + ":"
+						+ (((float) Math.round(10000 * ((float) e.getValue()[0]) / (e.getValue()[1]))) / 100) + " ");
+
+			}
+			System.out.print("");
+		}
+		System.out.println();
+		if (what.contains("mor")) {
+			for (Entry<String, int[]> e : mor.entrySet()) {
+
+				System.out.print(e.getKey() + ":" + e.getValue()[0] + ":" + e.getValue()[1] + ":"
+						+ (((float) Math.round(10000 * ((float) e.getValue()[0]) / (e.getValue()[1]))) / 100) + " ");
+
+			}
+			System.out.print("");
+		}
+		System.out.println("\nTokens: " + total + " Correct: " + corrT + " " + (float) corrT / total + " Correct M.:"
+				+ (int) correctM + " morphology " + (correctM / total));
+	}
+
+	public static int errors(SentenceData09 s, boolean uas) {
+
+		int errors = 0;
+		for (int k = 1; k < s.length(); k++) {
+
+			if (s.heads[k] != s.pheads[k] && (uas || !s.labels[k].equals(s.plabels[k]))) {
+				errors++;
+			}
+		}
+		return errors;
+	}
+
+	public static int errors(SentenceData09 s1, SentenceData09 s2, HashMap<String, Integer> r1,
+			HashMap<String, Integer> r2) {
+
+		int errors = 0;
+		for (int k = 1; k < s1.length(); k++) {
+
+			if (s1.heads[k] != s1.pheads[k] || (!s1.labels[k].equals(s1.plabels[k]))) {
+
+				if (s2.heads[k] != s2.pheads[k] || (!s2.labels[k].equals(s2.plabels[k]))) {
+
+					// equal do nothing
+
+				} else {
+
+					Integer cnt = r1.get(s1.labels[k]);
+					if (cnt == null)
+						cnt = 0;
+					cnt++;
+					r1.put(s1.labels[k], cnt);
+
+				}
+
+			}
+
+			if (s2.heads[k] != s2.pheads[k] || (!s2.labels[k].equals(s2.plabels[k]))) {
+
+				if (s1.heads[k] != s1.pheads[k] || (!s1.labels[k].equals(s1.plabels[k]))) {
+
+					// equal do nothing
+
+				} else {
+
+					Integer cnt = r2.get(s2.labels[k]);
+					if (cnt == null)
+						cnt = 0;
+					cnt++;
+					r2.put(s2.labels[k], cnt);
+
+				}
+
+			}
+		}
+		return errors;
+	}
+
+	public static final String PUNCT = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
+
+	public static class Results {
+
+		public int total;
+		public int corr;
+		public float las;
+		public float ula;
+		public float lpas;
+		public float upla;
+
+		ArrayList<Double> correctHead;
+	}
+
+	public static Results evaluate(String act_file, String pred_file) {
+		return evaluate(act_file, pred_file, true);
+	}
+
+	public static Results evaluate(String act_file, String pred_file, boolean printEval) {
+		return evaluate(act_file, pred_file, printEval, false);
+	}
+
+	public static Results evaluate(String act_file, String pred_file, boolean printEval, boolean sig) {
+
+		CONLLReader09 goldReader = new CONLLReader09(act_file, -1);
+		CONLLReader09 predictedReader = new CONLLReader09(pred_file, -1);
+
+		int total = 0, corr = 0, corrL = 0, Ptotal = 0, Pcorr = 0, PcorrL = 0, BPtotal = 0, BPcorr = 0, BPcorrL = 0,
+				corrLableAndPos = 0, corrHeadAndPos = 0;
+		int corrLableAndPosP = 0, corrLableAndPosC = 0;
+		int numsent = 0, corrsent = 0, corrsentL = 0, Pcorrsent = 0, PcorrsentL = 0;
+		;
+		int proj = 0, nonproj = 0, pproj = 0, pnonproj = 0, nonProjOk = 0, nonProjWrong = 0;
+
+		int correctChnWoPunc = 0, correctLChnWoPunc = 0, CPtotal = 0;
+		SentenceData09 goldInstance = goldReader.getNext();
+
+		SentenceData09 predInstance = predictedReader.getNext();
+		HashMap<String, Integer> label = new HashMap<String, Integer>();
+		HashMap<String, Integer> labelCount = new HashMap<String, Integer>();
+		HashMap<String, Integer> labelCorrect = new HashMap<String, Integer>();
+		HashMap<String, Integer> falsePositive = new HashMap<String, Integer>();
+		HashMap<String, HashMap<String, Integer>> confusion = new HashMap<String, HashMap<String, Integer>>();
+
+		HashMap<String, HashMap<String, Integer>> posLabelAssign = new HashMap<String, HashMap<String, Integer>>();
+
+		// does the node have the correct head?
+		ArrayList<Double> correctHead = new ArrayList<Double>();
+
+		while (goldInstance != null) {
+
+			int instanceLength = goldInstance.length();
+
+			if (instanceLength != predInstance.length())
+				System.out.println("Lengths do not match on sentence " + numsent);
+
+			int[] goldHeads = goldInstance.heads;
+
+			String[] goldLabels, predLabels;
+			if (what == TAGGER) {
+				goldLabels = goldInstance.gpos;
+				predLabels = predInstance.ppos;
+			} else {
+				goldLabels = goldInstance.labels;
+				predLabels = predInstance.plabels;
+			}
+
+			int[] predHeads = predInstance.pheads;
+
+			boolean whole = true;
+			boolean wholeL = true;
+
+			boolean Pwhole = true;
+			boolean PwholeL = true;
+
+			int corrLabels = 0;
+
+			// NOTE: the first item is the root info added during
+			// nextInstance(), so we skip it.
+
+			int punc = 0, bpunc = 0, totalChnWoPunc = 0;
+			for (int i = 1; i < instanceLength; i++) {
+
+				Parse p = new Parse(predHeads.length);
+				for (int k = 0; k < p.heads.length; k++)
+					p.heads[k] = (short) predHeads[k];
+
+				Parse g = new Parse(predHeads.length);
+				for (int k = 0; k < g.heads.length; k++)
+					g.heads[k] = (short) goldHeads[k];
+
+				HashMap<String, Integer> labelsNum = posLabelAssign.get(goldInstance.gpos[goldInstance.heads[i]]);
+				if (labelsNum == null) {
+					labelsNum = new HashMap<String, Integer>();
+					posLabelAssign.put(goldInstance.gpos[goldInstance.heads[i]], labelsNum);
+				}
+
+				Integer num = labelsNum.get(goldInstance.labels[i]);
+				if (num == null)
+					num = 0;
+				num++;
+				labelsNum.put(goldInstance.labels[i], num);
+
+				Integer count = labelCount.get(goldLabels[i]);
+				if (count == null)
+					count = 0;
+
+				count++;
+
+				labelCount.put(goldLabels[i], count);
+
+				if (goldLabels[i].equals(predLabels[i]) && (what == TAGGER || predHeads[i] == goldHeads[i])) {
+					Integer correct = labelCorrect.get(goldLabels[i]);
+					if (correct == null)
+						correct = 0;
+					correct++;
+					labelCorrect.put(goldLabels[i], correct);
+
+				} else {
+
+					Integer fp = falsePositive.get(predLabels[i]);
+					if (fp == null)
+						fp = 0;
+					fp++;
+					falsePositive.put(predLabels[i], fp);
+
+					HashMap<String, Integer> conf = confusion.get(goldLabels[i]);
+					if (conf == null)
+						confusion.put(goldLabels[i], conf = new HashMap<String, Integer>());
+
+					conf.put(predLabels[i], conf.get(predLabels[i]) == null ? 1 : conf.get(predLabels[i]) + 1);
+
+				}
+
+				boolean tlas = false;
+				if (predHeads[i] == goldHeads[i]) {
+					corr++;
+
+					if (goldInstance.gpos[i].equals(predInstance.ppos[i]))
+						corrHeadAndPos++;
+					if (goldLabels[i].equals(predLabels[i])) {
+						corrL++;
+						// if (predLabels[i].startsWith("PMOD"))
+						corrLabels++;
+						// else correctHead.add(0);
+						if (goldInstance.gpos[i].equals(predInstance.ppos[i])) {
+							tlas = true;
+							corrLableAndPos++;
+						}
+					} else {
+						// correctHead.add(0);
+						// System.out.println(numsent+" error gold
+						// "+goldLabels[i]+" "+predLabels[i]+" head
+						// "+goldHeads[i]+" child "+i);
+						wholeL = false;
+					}
+				} else {
+
+					// correctHead.add(0);
+
+					// System.out.println(numsent+"error gold "+goldLabels[i]+"
+					// "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
+					whole = false;
+					wholeL = false;
+
+					count = label.get(goldLabels[i]);
+
+					if (count == null)
+						count = 0;
+					count++;
+					label.put(goldLabels[i], count);
+
+					Math.abs(goldInstance.heads[i] - i);
+				}
+
+				if (!("!\"#$%&''()*+,-./:;<=>?@[\\]^_{|}~``".contains(goldInstance.forms[i]))) {
+
+					if (predHeads[i] == goldHeads[i]) {
+						BPcorr++;
+
+						if (goldLabels[i].equals(predLabels[i])) {
+							BPcorrL++;
+						} else {
+							// System.out.println(numsent+" error gold
+							// "+goldLabels[i]+" "+predLabels[i]+" head
+							// "+goldHeads[i]+" child "+i);
+							// PwholeL = false;
+						}
+					} else {
+						// System.out.println(numsent+"error gold
+						// "+goldLabels[i]+" "+predLabels[i]+" head
+						// "+goldHeads[i]+" child "+i);
+						// Pwhole = false; wholeL = false;
+					}
+
+				} else
+					bpunc++;
+
+				if (!(",.:''``".contains(goldInstance.forms[i]))) {
+
+					if (predHeads[i] == goldHeads[i]) {
+						if (goldInstance.gpos[i].equals(predInstance.ppos[i])) {
+						}
+						Pcorr++;
+
+						if (goldLabels[i].equals(predLabels[i])) {
+							PcorrL++;
+							if (goldInstance.gpos[i].equals(predInstance.ppos[i]))
+								corrLableAndPosP++;
+
+						} else {
+							// System.out.println(numsent+" error gold
+							// "+goldLabels[i]+" "+predLabels[i]+" head
+							// "+goldHeads[i]+" child "+i);
+							PwholeL = false;
+						}
+					} else {
+						// System.out.println(numsent+"error gold
+						// "+goldLabels[i]+" "+predLabels[i]+" head
+						// "+goldHeads[i]+" child "+i);
+						Pwhole = false;
+						PwholeL = false;
+					}
+
+				} else
+					punc++;
+
+				if (!(goldInstance.gpos[i].toLowerCase().startsWith("pu"))) {
+					if (predHeads[i] == goldHeads[i]) {
+						correctChnWoPunc++;
+
+						if (goldLabels[i].equals(predLabels[i])) {
+							correctLChnWoPunc++;
+							if (goldInstance.gpos[i].equals(predInstance.ppos[i]))
+								corrLableAndPosC++;
+						} else {
+							// System.out.println(numsent+" error gold
+							// "+goldLabels[i]+" "+predLabels[i]+" head
+							// "+goldHeads[i]+" child "+i);
+							// PwholeL = false;
+						}
+					} else {
+						// System.out.println(numsent+"error gold
+						// "+goldLabels[i]+" "+predLabels[i]+" head
+						// "+goldHeads[i]+" child "+i);
+						// Pwhole = false; PwholeL = false;
+					}
+
+				} else
+					totalChnWoPunc++;
+
+				if (sig) {
+					if (tlas)
+						System.out.println("1\t");
+					else
+						System.out.println("0\t");
+				}
+
+			}
+			total += ((instanceLength - 1)); // Subtract one to not score fake
+												// root token
+
+			Ptotal += ((instanceLength - 1) - punc);
+			BPtotal += ((instanceLength - 1) - bpunc);
+			CPtotal += ((instanceLength - 1) - totalChnWoPunc);
+			if (whole)
+				corrsent++;
+			if (wholeL)
+				corrsentL++;
+			if (Pwhole)
+				Pcorrsent++;
+			if (PwholeL)
+				PcorrsentL++;
+			numsent++;
+
+			goldInstance = goldReader.getNext();
+			predInstance = predictedReader.getNext();
+			correctHead.add((double) corrLabels / (instanceLength - 1));
+			// System.out.println(""+((double)corrLabels/(instanceLength - 1)));
+		}
+
+		Results r = new Results();
+
+		r.correctHead = correctHead;
+		int mult = 100000, diff = 1000;
+
+		r.total = total;
+		r.corr = corr;
+		r.las = (float) Math.round(((double) corrL / total) * mult) / diff;
+		r.ula = (float) Math.round(((double) corr / total) * mult) / diff;
+		r.lpas = (float) Math.round(((double) corrLableAndPos / total) * mult) / diff;
+		r.upla = (float) Math.round(((double) corrHeadAndPos / total) * mult) / diff;
+		float tlasp = (float) Math.round(((double) corrLableAndPosP / Ptotal) * mult) / diff;
+		float tlasc = (float) Math.round(((double) corrLableAndPosC / Ptotal) * mult) / diff;
+
+		// System.out.print("Total: " + total+" \tCorrect: " + corr+" ");
+		System.out.print(" LAS/Total/UAS/Total: " + r.las + "/"
+				+ (double) Math.round(((double) corrsentL / numsent) * mult) / diff + "/" + r.ula + "/"
+				+ (double) Math.round(((double) corrsent / numsent) * mult) / diff + " LPAS/UPAS " + r.lpas + "/"
+				+ r.upla);
+
+		System.out.println("; without . " + (double) Math.round(((double) PcorrL / Ptotal) * mult) / diff + "/"
+				+ (double) Math.round(((double) PcorrsentL / numsent) * mult) / diff + "/"
+				+ (double) Math.round(((double) Pcorr / Ptotal) * mult) / diff + "/"
+				+ (double) Math.round(((double) Pcorrsent / numsent) * mult) / diff + " TLAS " + tlasp + " V2 LAS/UAS "
+				+ (double) Math.round(((double) BPcorrL / BPtotal) * mult) / diff + "/"
+				+ (double) Math.round(((double) BPcorr / BPtotal) * mult) / diff + " CHN LAS/UAS "
+				+ (double) Math.round(((double) correctLChnWoPunc / CPtotal) * mult) / diff + "/"
+				+ (double) Math.round(((double) correctChnWoPunc / CPtotal) * mult) / diff + " TLAS " + tlasc);
+
+		float precisionNonProj = (nonProjOk) / ((float) nonProjOk + nonProjWrong);
+		float recallNonProj = ((float) nonProjOk) / ((float) (nonproj));
+		System.out.println("proj " + proj + " nonp " + nonproj + "; predicted proj " + pproj + " non " + pnonproj
+				+ "; nonp correct " + nonProjOk + " nonp wrong " + nonProjWrong
+				+ " precision=(nonProjOk)/(non-projOk+nonProjWrong): " + precisionNonProj + " recall=nonProjOk/nonproj="
+				+ recallNonProj + " F=" + (2 * precisionNonProj * recallNonProj) / (precisionNonProj + recallNonProj));
+
+		if (!printEval)
+			return r;
+
+		new HashMap<String, Integer>();
+		new HashMap<String, Integer>();
+
+		System.out.println("label\ttp\tcount\trecall\t\ttp\tfp+tp\tprecision\t F-Score ");
+
+		for (Entry<String, Integer> e : labelCount.entrySet()) {
+
+			int tp = labelCorrect.get(e.getKey()) == null ? 0 : labelCorrect.get(e.getKey()).intValue();
+			Integer count = labelCount.get(e.getKey());
+			int fp = falsePositive.get(e.getKey()) == null ? 0 : falsePositive.get(e.getKey()).intValue();
+			System.out.println(e.getKey() + "\t" + tp + "\t" + count + "\t" + roundPercent((float) tp / count) + "\t\t"
+					+ tp + "\t" + (fp + tp) + "\t" + roundPercent((float) tp / (fp + tp)) + "\t\t"
+					+ roundPercent((((float) tp / count)) + (float) tp / (fp + tp)) / 2F); // +totalD
+		}
+
+		for (Entry<String, HashMap<String, Integer>> e : confusion.entrySet()) {
+			HashMap<String, Integer> values = e.getValue();
+			ArrayList<Entry<String, Integer>> entries = new ArrayList<Entry<String, Integer>>(values.entrySet());
+			Collections.sort(entries, new Comparator<Entry<String, Integer>>() {
+
+				@Override
+				public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
+
+					return o2.getValue().compareTo(o1.getValue());
+				}
+
+			});
+
+			System.out.println(e.getKey() + "\t" + entries);
+
+		}
+		System.out.println("" + posLabelAssign);
+
+		return r;
+	}
+
+	public static float round(double v) {
+
+		return Math.round(v * 10000F) / 10000F;
+	}
+
+	public static float roundPercent(double v) {
+
+		return Math.round(v * 10000F) / 100F;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/util/ExtractParagraphs.java b/dependencyParser/experimental/mate-tools/src/is2/util/ExtractParagraphs.java
new file mode 100644
index 0000000..aa65d8d
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/util/ExtractParagraphs.java
@@ -0,0 +1,74 @@
+package is2.util;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+
+public class ExtractParagraphs {
+
+	/**
+	 * 
+	 * @param args
+	 * @throws IOException
+	 */
+	public static void main(String args[]) throws IOException {
+
+		if (args.length < 1) {
+			System.out.println("Please provide a file name.");
+			System.exit(0);
+		}
+
+		File file = new File(args[0]);
+		file.isDirectory();
+		String[] dirs = file.list();
+
+		BufferedWriter write = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(args[1]), "UTF-8"),
+				32768);
+		int cnt = 0;
+
+		for (String fileName : dirs) {
+			BufferedReader reader = new BufferedReader(
+					new InputStreamReader(new FileInputStream(args[0] + fileName), "UTF-8"), 32768);
+
+			int state = 0;
+
+			String s;
+			while ((s = reader.readLine()) != null) {
+
+				if (s.startsWith("<P>") || s.startsWith("<p>")) {
+					state = 1; // paragraph start
+					continue;
+				}
+
+				if (s.startsWith("</P>") || s.startsWith("</p>")) {
+					state = 2; // paragraph end
+					write.newLine();
+				}
+
+				if (state == 1) {
+					String sp[] = s.split("\\. ");
+					for (String p : sp) {
+						write.write(p);
+						// if (sp.length>1) write.newLine();
+					}
+					cnt++;
+				}
+			}
+
+			// if (cnt>5000) break;
+
+			reader.close();
+		}
+		write.flush();
+		write.close();
+
+		System.out.println("Extract " + cnt + " lines ");
+
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/util/IntStack.java b/dependencyParser/experimental/mate-tools/src/is2/util/IntStack.java
new file mode 100644
index 0000000..b291d16
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/util/IntStack.java
@@ -0,0 +1,90 @@
+/**
+ *
+ */
+package is2.util;
+
+/**
+ * @author Dr. Bernd Bohnet, 01.06.2011
+ *
+ *
+ */
+final public class IntStack {
+
+	final public int[] stack;
+	public int position = -1;
+
+	public IntStack(int size) {
+		if (size <= 0)
+			stack = new int[1];
+		else
+			stack = new int[size + 1];
+	}
+
+	public IntStack(IntStack s) {
+		stack = s.stack;
+		position = s.position;
+	}
+
+	public int peek() {
+		return position == -1 ? -1 : stack[position];
+	}
+
+	public void push(int i) {
+		// if (i ==2)new Exception().printStackTrace();
+		stack[++position] = i;
+	}
+
+	public int pop() {
+		return position == -1 ? -1 : stack[position--];
+	}
+
+	public int size() {
+		return position + 1;
+	}
+
+	public boolean isEmpty() {
+		return position == -1 ? true : false;
+	}
+
+	public int get(int p) {
+		return stack[p];
+	}
+
+	public void clear() {
+		position = -1;
+	}
+
+	/**
+	 * @param b
+	 */
+	public void addAll(IntStack b) {
+
+		position = b.position;
+		if (position < 0)
+			return;
+
+		for (int k = 0; k <= position; k++)
+			stack[k] = b.stack[k];
+
+	}
+
+	public boolean contains(int s) {
+		;
+
+		for (int k = 0; k <= position; k++)
+			if (stack[k] == s)
+				return true;
+
+		return false;
+	}
+
+	@Override
+	public String toString() {
+		StringBuffer s = new StringBuffer();
+		for (int k = position; k >= 0; k--) {
+			s.append(k).append(":").append(this.stack[k]).append(" ");
+		}
+		return s.toString();
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/util/Long2Int.java b/dependencyParser/experimental/mate-tools/src/is2/util/Long2Int.java
new file mode 100644
index 0000000..e6ef45c
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/util/Long2Int.java
@@ -0,0 +1,81 @@
+package is2.util;
+
+import is2.data.Long2IntInterface;
+
+/**
+ * @author Bernd Bohnet, 01.09.2009
+ *
+ *         Maps for the Hash Kernel the long values to the int values.
+ */
+final public class Long2Int implements Long2IntInterface {
+
+	public Long2Int() {
+		size = 115911564;
+	}
+
+	public Long2Int(int s) {
+		size = s;
+	}
+
+	/** Integer counter for long2int */
+	final private int size; // 0x03ffffff //0x07ffffff
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.sp09k9992.Long2IntIterface#size()
+	 */
+	@Override
+	public int size() {
+		return size;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.sp09k9992.Long2IntIterface#start() has no meaning for this
+	 * implementation
+	 */
+	final public void start() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see is2.sp09k9992.Long2IntIterface#l2i(long)
+	 */
+	@Override
+	final public int l2i(long l) {
+		if (l < 0)
+			return -1;
+
+		// this works well LAS 88.138
+		// int r= (int)(( l ^ (l&0xffffffff00000000L) >>> 29 ));//0x811c9dc5 ^
+		// // 29
+		// return Math.abs(r % size);
+		// this works a bit better and good with 0x03ffffff
+		//
+		/*
+		 * long r= l;//26 l = (l>>12)&0xfffffffffffff000L; r ^= l;//38 l =
+		 * (l>>11)&0xffffffffffffc000L; r ^= l;//49 l = (l>>9)&
+		 * 0xffffffffffff0000L; //53 r ^= l;//58 l = (l>>7)&0xfffffffffffc0000L;
+		 * //62 r ^=l;//65 int x = (int)r; x = x % size; // return x >= 0 ? x :
+		 * -x ;// Math.abs(r % size);
+		 * 
+		 */
+		// 26 0x03ffffff
+		// together with 0x07ffffff 27 88.372
+		long r = l;// 27
+		l = (l >> 13) & 0xffffffffffffe000L;
+		r ^= l; // 40
+		l = (l >> 11) & 0xffffffffffff0000L;
+		r ^= l; // 51
+		l = (l >> 9) & 0xfffffffffffc0000L; // 53
+		r ^= l; // 60
+		l = (l >> 7) & 0xfffffffffff00000L; // 62
+		r ^= l; // 67
+		int x = ((int) r) % size;
+
+		return x >= 0 ? x : -x;
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/util/Options.java b/dependencyParser/experimental/mate-tools/src/is2/util/Options.java
new file mode 100644
index 0000000..30b53b0
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/util/Options.java
@@ -0,0 +1,133 @@
+package is2.util;
+
+import java.io.File;
+
+public final class Options extends OptionsSuper {
+
+	public Options(String[] args) {
+
+		for (int i = 0; i < args.length; i++) {
+			String[] pair = args[i].split(":");
+
+			if (pair[0].equals("--help"))
+				explain();
+			else if (pair[0].equals("-train")) {
+				train = true;
+				trainfile = args[i + 1];
+			} else if (pair[0].equals("-eval")) {
+				eval = true;
+				goldfile = args[i + 1];
+				i++;
+			} else if (pair[0].equals("-test")) {
+				test = true;
+				testfile = args[i + 1];
+				i++;
+			} else if (pair[0].equals("-i")) {
+				numIters = Integer.parseInt(args[i + 1]);
+				i++;
+			} else if (pair[0].equals("-out")) {
+				outfile = args[i + 1];
+				i++;
+			} else if (pair[0].equals("-decode")) {
+				decodeProjective = args[i + 1].equals("proj");
+				i++;
+			} else if (pair[0].equals("-confidence")) {
+
+				conf = true;
+			}
+
+			else if (pair[0].equals("-count")) {
+				count = Integer.parseInt(args[i + 1]);
+				i++;
+			} else if (pair[0].equals("-model")) {
+				modelName = args[i + 1];
+				i++;
+			} else if (pair[0].equals("-device")) {
+				device = args[i + 1];
+				i++;
+			} else if (pair[0].equals("-tmp")) {
+				tmp = args[i + 1];
+				i++;
+			} else if (pair[0].equals("-format")) {
+				// format = args[i+1];
+				formatTask = Integer.parseInt(args[i + 1]);
+				i++;
+			} else if (pair[0].equals("-allfeatures")) {
+				allFeatures = true;
+			} else if (pair[0].equals("-nonormalize")) {
+				normalize = false;
+			} else if (pair[0].equals("-nframes")) {
+				// format = args[i+1];
+				nbframes = args[i + 1];
+				i++;
+
+			} else if (pair[0].equals("-pframes")) {
+				// format = args[i+1];
+				pbframes = args[i + 1];
+				i++;
+			} else if (pair[0].equals("-nopred")) {
+				nopred = true;
+			} else if (pair[0].equals("-divide")) {
+				keep = true;
+			} else if (pair[0].equals("-lexicon")) {
+				lexicon = args[i + 1];
+				i++;
+
+			} else
+				super.addOption(args, i);
+
+		}
+
+		try {
+
+			if (trainfile != null) {
+
+				if (keep && tmp != null) {
+					trainforest = new File(tmp);
+					if (!trainforest.exists())
+						keep = false;
+
+				} else if (tmp != null) {
+					trainforest = File.createTempFile("train", ".tmp", new File(tmp));
+					trainforest.deleteOnExit();
+				} else {
+					trainforest = File.createTempFile("train", ".tmp"); // ,new
+																		// File("F:\\")
+					trainforest.deleteOnExit();
+				}
+
+			}
+
+		} catch (java.io.IOException e) {
+			System.out.println("Unable to create tmp files for feature forests!");
+			System.out.println(e);
+			System.exit(0);
+		}
+	}
+
+	private void explain() {
+		System.out.println("Usage: ");
+		System.out.println("java -class mate.jar is2.parser.Parser [Options]");
+		System.out.println();
+		System.out.println("Example: ");
+		System.out.println(
+				" java -class mate.jar is2.parser.Parser -model eps3.model -train corpora/conll08st/train/train.closed -test corpora/conll08st/devel/devel.closed  -out b3.test -eval corpora/conll08st/devel/devel.closed  -count 2000 -i 6");
+		System.out.println("");
+		System.out.println("Options:");
+		System.out.println("");
+		System.out.println(" -train  <file>    the corpus a model is trained on; default " + this.trainfile);
+		System.out.println(" -test   <file>    the input corpus for testing; default " + this.testfile);
+		System.out.println(" -out    <file>    the output corpus (result) of a test run; default " + this.outfile);
+		System.out.println(" -model  <file>    the parsing model for traing the model is stored in the files");
+		System.out.println(
+				"                   and for parsing the model is load from this file; default " + this.modelName);
+		System.out.println(
+				" -i      <number>  the number of training iterations; good numbers are 10 for smaller corpora and 6 for bigger; default "
+						+ this.numIters);
+		System.out.println(" -count  <number>  the n first sentences of the corpus are take for the training default "
+				+ this.count);
+		System.out.println(" -format <number>  conll format of the year 8 or 9; default " + this.formatTask);
+
+		System.exit(0);
+	}
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/util/OptionsSuper.java b/dependencyParser/experimental/mate-tools/src/is2/util/OptionsSuper.java
new file mode 100755
index 0000000..f6370f7
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/util/OptionsSuper.java
@@ -0,0 +1,231 @@
+package is2.util;
+
+import java.io.File;
+
+public class OptionsSuper {
+
+	public String trainfile = null;
+	public String testfile = null;
+	public File trainforest = null;
+
+	public String nbframes = null;
+	public String pbframes = null;
+
+	public boolean nopred = false;
+	public boolean upper = false;
+
+	public boolean train = false;
+	public boolean eval = false;
+	public boolean test = false;
+	public boolean keep = false;
+	public boolean flt = false;
+	public boolean loadTaggerModels = false;
+
+	public String modelName = "prs.mdl";
+	public String modelTaggerName = null;
+
+	public String useMapping = null;
+	public String device = "C:";
+	public String tmp = null;
+	public boolean createForest = true;
+	public boolean decodeProjective = false;
+	public double decodeTH = 0.3d;
+	public String format = "CONLL";
+	public int formatTask = 9;
+	public int numIters = 10;
+	public int best = 1000;
+	public String outfile = "dp.conll";
+	public String charset = "UTF-8";
+	public String phraseTrain = null;
+	public String phraseTest = null;
+	public String goldfile = null;
+	public String gout = "sec23.gld";
+	public String features = null;
+	public String lexicon = null;
+	public int hsize = 0x07ffffff;
+	public int maxLen = 2000;
+	public int maxForms = Integer.MAX_VALUE;
+	public int beam = 4;
+	public float prune = -100000000;
+
+	public String third = "";
+	public String second = "";
+	public String first = "";
+
+	public int cross = 10;
+
+	// public boolean secondOrder = true;
+	public boolean useRelationalFeatures = false;
+	public int count = 10000000;
+	public int cores = Integer.MAX_VALUE;
+	public int start = 0;
+	public int minOccureForms = 0;
+	public int tt = 30; // tagger averaging
+	public boolean allFeatures = false;
+	public boolean normalize = false;
+	public boolean no2nd = false;
+	public boolean noLemmas = false;
+	public boolean few2nd = false, noLinear = false, noMorph = false;
+	public String clusterFile;
+
+	// output confidence values
+	public boolean conf = false;
+	public String phraseFormat = "penn"; // tiger | penn
+	public boolean average = true;
+	public boolean label = false;
+	public boolean stack = false;
+	public boolean oneRoot = false;
+
+	public String significant1 = null, significant2 = null;
+
+	// horizontal stacking
+	public int minLength = 0, maxLength = Integer.MAX_VALUE;
+	public boolean overwritegold = false;
+
+	public static final int MULTIPLICATIVE = 1, SHIFT = 2;
+	public int featureCreation = MULTIPLICATIVE;
+
+	public OptionsSuper(String[] args, String dummy) {
+
+		for (int i = 0; i < args.length; i++) {
+			i = addOption(args, i);
+		}
+
+	}
+
+	public OptionsSuper() {
+	}
+
+	public int addOption(String args[], int i) {
+
+		if (args[i].equals("-train")) {
+			train = true;
+			trainfile = args[i + 1];
+		} else if (args[i].equals("-eval")) {
+			eval = true;
+			goldfile = args[i + 1];
+			i++;
+		} else if (args[i].equals("-gout")) {
+			gout = args[i + 1];
+			i++;
+		} else if (args[i].equals("-test")) {
+			test = true;
+			testfile = args[i + 1];
+			i++;
+		} else if (args[i].equals("-sig1")) {
+			significant1 = args[i + 1];
+			i++;
+		} else if (args[i].equals("-sig2")) {
+			significant2 = args[i + 1];
+			i++;
+		} else if (args[i].equals("-i")) {
+			numIters = Integer.parseInt(args[i + 1]);
+			i++;
+		} else if (args[i].equals("-out")) {
+			outfile = args[i + 1];
+			i++;
+		} else if (args[i].equals("-cluster")) {
+			clusterFile = args[i + 1];
+			i++;
+		}
+
+		else if (args[i].equals("-count")) {
+			count = Integer.parseInt(args[i + 1]);
+			i++;
+		} else if (args[i].equals("-model")) {
+			modelName = args[i + 1];
+			i++;
+		} else if (args[i].equals("-tmodel")) {
+			this.modelTaggerName = args[i + 1];
+			i++;
+		} else if (args[i].equals("-nonormalize")) {
+			normalize = false;
+		} else if (args[i].equals("-float")) {
+			flt = true;
+		} else if (args[i].equals("-hsize")) {
+			hsize = Integer.parseInt(args[i + 1]);
+			i++;
+		} else if (args[i].equals("-charset")) {
+			charset = args[++i];
+		} else if (args[i].equals("-pstrain")) {
+			this.phraseTrain = args[i + 1];
+			i++;
+		} else if (args[i].equals("-pstest")) {
+			this.phraseTest = args[i + 1];
+			i++;
+		} else if (args[i].equals("-len")) {
+			maxLen = Integer.parseInt(args[i + 1]);
+			i++;
+		} else if (args[i].equals("-cores")) {
+			cores = Integer.parseInt(args[i + 1]);
+			i++;
+		} else if (args[i].equals("-start")) {
+			start = Integer.parseInt(args[i + 1]);
+			i++;
+		} else if (args[i].equals("-max")) {
+			maxLength = Integer.parseInt(args[i + 1]);
+			i++;
+		} else if (args[i].equals("-min")) {
+			minLength = Integer.parseInt(args[i + 1]);
+			i++;
+		} else if (args[i].equals("-noLemmas")) {
+			noLemmas = true;
+		} else if (args[i].equals("-noavg")) {
+			this.average = false;
+		} else if (args[i].equals("-label")) {
+			label = true;
+		} else if (args[i].equals("-stack")) {
+			stack = true;
+		} else if (args[i].equals("-overwritegold")) {
+			overwritegold = true;
+		} else if (args[i].equals("-format")) {
+			formatTask = Integer.parseInt(args[++i]);
+		} else if (args[i].equals("-tt")) {
+			tt = Integer.parseInt(args[++i]);
+		} else if (args[i].equals("-min-occure-forms")) {
+			minOccureForms = Integer.parseInt(args[++i]);
+		} else if (args[i].equals("-loadTaggerModels")) {
+			this.loadTaggerModels = true;
+			;
+
+		} else if (args[i].equals("-feature_creation")) {
+			this.featureCreation = args[++i].equals("shift") ? SHIFT : MULTIPLICATIVE;
+		}
+
+		return i;
+
+	}
+
+	@Override
+	public String toString() {
+		StringBuilder sb = new StringBuilder();
+		sb.append("FLAGS [");
+		sb.append("train-file: " + trainfile);
+		sb.append(" | ");
+		sb.append("test-file: " + testfile);
+		sb.append(" | ");
+		sb.append("gold-file: " + goldfile);
+		sb.append(" | ");
+		sb.append("output-file: " + outfile);
+		sb.append(" | ");
+		sb.append("model-name: " + modelName);
+		sb.append(" | ");
+		sb.append("train: " + train);
+		sb.append(" | ");
+		sb.append("test: " + test);
+		sb.append(" | ");
+		sb.append("eval: " + eval);
+		sb.append(" | ");
+		sb.append("training-iterations: " + numIters);
+		sb.append(" | ");
+		sb.append("decode-type: " + decodeProjective);
+		sb.append(" | ");
+		sb.append("create-forest: " + createForest);
+		sb.append(" | ");
+		sb.append("format: " + format);
+
+		sb.append("]\n");
+		return sb.toString();
+	}
+
+}
\ No newline at end of file
diff --git a/dependencyParser/experimental/mate-tools/src/is2/util/ParserEvaluator.java b/dependencyParser/experimental/mate-tools/src/is2/util/ParserEvaluator.java
new file mode 100644
index 0000000..95e8949
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/util/ParserEvaluator.java
@@ -0,0 +1,100 @@
+package is2.util;
+
+import is2.data.SentenceData09;
+import is2.io.CONLLReader09;
+
+public class ParserEvaluator {
+
+	public static final String PUNCT = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
+
+	public static class Results {
+
+		public int total;
+		public int corr;
+		public float las;
+		public float ula;
+
+	}
+
+	public static Results evaluate(String act_file, String pred_file) throws Exception {
+
+		CONLLReader09 goldReader = new CONLLReader09(act_file, -1);
+		CONLLReader09 predictedReader = new CONLLReader09(pred_file, -1);
+
+		int total = 0, corr = 0, corrL = 0;
+		int numsent = 0, corrsent = 0, corrsentL = 0;
+		SentenceData09 goldInstance = goldReader.getNext();
+		SentenceData09 predInstance = predictedReader.getNext();
+
+		while (goldInstance != null) {
+
+			int instanceLength = goldInstance.length();
+
+			if (instanceLength != predInstance.length())
+				System.out.println("Lengths do not match on sentence " + numsent);
+
+			int[] goldHeads = goldInstance.heads;
+			String[] goldLabels = goldInstance.labels;
+			int[] predHeads = predInstance.pheads;
+			String[] predLabels = predInstance.plabels;
+
+			boolean whole = true;
+			boolean wholeL = true;
+
+			// NOTE: the first item is the root info added during
+			// nextInstance(), so we skip it.
+
+			int punc = 0;
+			for (int i = 1; i < instanceLength; i++) {
+				if (predHeads[i] == goldHeads[i]) {
+					corr++;
+
+					if (goldLabels[i].equals(predLabels[i]))
+						corrL++;
+					else {
+						// System.out.println(numsent+" error gold
+						// "+goldLabels[i]+" "+predLabels[i]+" head
+						// "+goldHeads[i]+" child "+i);
+						wholeL = false;
+					}
+				} else {
+					// System.out.println(numsent+"error gold "+goldLabels[i]+"
+					// "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
+					whole = false;
+					wholeL = false;
+				}
+			}
+			total += ((instanceLength - 1) - punc); // Subtract one to not score
+													// fake root token
+
+			if (whole)
+				corrsent++;
+			if (wholeL)
+				corrsentL++;
+			numsent++;
+
+			goldInstance = goldReader.getNext();
+			predInstance = predictedReader.getNext();
+		}
+
+		Results r = new Results();
+
+		r.total = total;
+		r.corr = corr;
+		r.las = (float) Math.round(((double) corrL / total) * 100000) / 1000;
+		r.ula = (float) Math.round(((double) corr / total) * 100000) / 1000;
+		System.out.print("Total: " + total + " \tCorrect: " + corr + " ");
+		System.out.println("LAS: " + (double) Math.round(((double) corrL / total) * 100000) / 1000 + " \tTotal: "
+				+ (double) Math.round(((double) corrsentL / numsent) * 100000) / 1000 + " \tULA: "
+				+ (double) Math.round(((double) corr / total) * 100000) / 1000 + " \tTotal: "
+				+ (double) Math.round(((double) corrsent / numsent) * 100000) / 1000);
+
+		return r;
+	}
+
+	public static float round(double v) {
+
+		return Math.round(v * 10000F) / 10000F;
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/util/Split.java b/dependencyParser/experimental/mate-tools/src/is2/util/Split.java
new file mode 100755
index 0000000..ea1151b
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/util/Split.java
@@ -0,0 +1,89 @@
+package is2.util;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.Reader;
+import java.nio.channels.Channels;
+import java.nio.channels.FileChannel;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.util.StringTokenizer;
+
+public class Split {
+
+	/**
+	 * Splits a tokenized sentences into one word per line format:
+	 *
+	 * Input > I am an text . > Sentence two ...
+	 *
+	 * Output: I _ _ _ ... am _ _ _ ... ...
+	 *
+	 * @param args
+	 * @throws IOException
+	 */
+	public static void main(String args[]) throws IOException {
+
+		if (args.length != 1) {
+			System.out.println("Please provide a file name.");
+			System.exit(0);
+		}
+
+		String filename = args[0];
+		// Charset charset = Charset.forName("UTF-8");
+
+		FileInputStream in = new FileInputStream(filename);
+		FileChannel channel = in.getChannel();
+		CharsetDecoder decoder = Charset.defaultCharset().newDecoder();// charset.newDecoder();
+		Reader infile = Channels.newReader(channel, decoder, 16 * 1024);
+		BufferedReader bInfile = new BufferedReader(infile);
+
+		// DataOutputStream dos = new DataOutputStream(new
+		// BufferedOutputStream(new FileOutputStream(options.modelName)));
+
+		String s;
+		while ((s = bInfile.readLine()) != null) {
+
+			// do the first tokens contain a colon?
+			int colon = 0;
+			for (int k = 0; k < 12; k++) {
+				if (s.length() <= k)
+					break;
+				if (s.charAt(k) == ':') {
+
+					colon++;
+					break;
+				}
+				if (s.charAt(k) == ' ')
+					break;
+			}
+
+			String prefix = colon > 0 ? s.substring(0, s.indexOf(":")) + "_" : "";
+
+			if (colon > 0) {
+				s = s.substring(s.indexOf(":") + 1);
+			}
+
+			StringTokenizer t = new StringTokenizer(s);
+			int i = 1;
+			boolean found = false;
+			while (t.hasMoreTokens()) {
+				found = true;
+				String tk = t.nextToken();
+				if (tk.contains("="))
+					continue;
+				System.out.print(prefix + i + "\t");
+				System.out.print(tk);
+				System.out.println("\t_\t_\t_\t_\t_\t_\t_\t_\t_\t_\t_\t_\t_");
+				i++;
+			}
+			if (found)
+				System.out.println();
+
+		}
+		bInfile.close();
+		in.close();
+
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/util/Split2.java b/dependencyParser/experimental/mate-tools/src/is2/util/Split2.java
new file mode 100644
index 0000000..4ed4004
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/util/Split2.java
@@ -0,0 +1,56 @@
+package is2.util;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.util.StringTokenizer;
+
+public class Split2 {
+
+	/**
+	 * Splits a tokenized sentences into one word per line format:
+	 *
+	 * Input > I am an text . > Sentence two ...
+	 *
+	 * Output: I _ _ _ ... am _ _ _ ... ...
+	 *
+	 * @param args
+	 * @throws IOException
+	 */
+	public static void main(String args[]) throws IOException {
+
+		if (args.length < 1) {
+			System.out.println("Please provide a file name.");
+			System.exit(0);
+		}
+
+		BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(args[0]), "UTF-8"), 32768);
+		BufferedWriter write = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(args[1]), "ISO-8859-1"));
+
+		String s;
+		int cnt = 0;
+		while ((s = reader.readLine()) != null) {
+			StringTokenizer t = new StringTokenizer(s);
+			while (t.hasMoreTokens()) {
+				String tk = t.nextToken();
+				for (int c : tk.toCharArray()) {
+					if (c < 0 && c >= 255)
+						System.out.println("contain sign " + c + " " + cnt);
+				}
+				write.write(tk);
+				write.newLine();
+				cnt++;
+			}
+			write.newLine();
+		}
+		reader.close();
+		write.flush();
+		write.close();
+
+	}
+
+}
diff --git a/dependencyParser/experimental/mate-tools/src/is2/util/Split3.java b/dependencyParser/experimental/mate-tools/src/is2/util/Split3.java
new file mode 100644
index 0000000..2cf7cf2
--- /dev/null
+++ b/dependencyParser/experimental/mate-tools/src/is2/util/Split3.java
@@ -0,0 +1,51 @@
+package is2.util;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.util.StringTokenizer;
+
+public class Split3 {
+
+	/**
+	 * Splits a tokenized sentences into one word per line format:
+	 *
+	 * Input > I am an text . > Sentence two ...
+	 *
+	 * Output: I _ _ _ ... am _ _ _ ... ...
+	 *
+	 * @param args
+	 * @throws IOException
+	 */
+	public static void main(String args[]) throws IOException {
+
+		if (args.length < 1) {
+			System.out.println("Please provide a file name.");
+			System.exit(0);
+		}
+
+		BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(args[0]), "UTF-8"), 32768);
+		BufferedWriter write = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(args[1]), "UTF-8"),
+				32768);
+
+		String s;
+		while ((s = reader.readLine()) != null) {
+			StringTokenizer t = new StringTokenizer(s);
+			while (t.hasMoreTokens()) {
+				String tk = t.nextToken();
+				write.write(tk);
+				write.newLine();
+			}
+			write.newLine();
+		}
+		reader.close();
+		write.flush();
+		write.close();
+
+	}
+
+}
diff --git a/dependencyParser/mate-tools/.classpath b/dependencyParser/mate-tools/.classpath
deleted file mode 100644
index 4d8fea6..0000000
--- a/dependencyParser/mate-tools/.classpath
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="lib" path="lib/commons-math-2.2.jar"/>
-	<classpathentry kind="lib" path="/home/masterofu/workspace/mate-tools/lib/trove-2.0.4.jar"/>
-	<classpathentry kind="output" path="classes"/>
-</classpath>
diff --git a/dependencyParser/mate-tools/.externalToolBuilders/New_Builder.launch b/dependencyParser/mate-tools/.externalToolBuilders/New_Builder.launch
deleted file mode 100644
index eca73f7..0000000
--- a/dependencyParser/mate-tools/.externalToolBuilders/New_Builder.launch
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<launchConfiguration type="org.eclipse.ui.externaltools.ProgramBuilderLaunchConfigurationType">
-<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/mate-tools/.project}"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,"/>
-<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/mate-tools}"/>
-</launchConfiguration>
diff --git a/dependencyParser/mate-tools/.externalToolBuilders/ana.launch b/dependencyParser/mate-tools/.externalToolBuilders/ana.launch
deleted file mode 100644
index 09df90d..0000000
--- a/dependencyParser/mate-tools/.externalToolBuilders/ana.launch
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
-<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
-<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/mate-tools/scripts/build.xml"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="1"/>
-</listAttribute>
-<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
-<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
-<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="mate-tools"/>
-<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_BUILDER_ENABLED" value="false"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/mate-tools/scripts/build.xml}"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,"/>
-<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/mate-tools}"/>
-</launchConfiguration>
diff --git a/dependencyParser/mate-tools/.project b/dependencyParser/mate-tools/.project
deleted file mode 100644
index f813b9e..0000000
--- a/dependencyParser/mate-tools/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>mate-tools</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/dependencyParser/mate-tools/build.xml b/dependencyParser/mate-tools/build.xml
deleted file mode 100644
index c558279..0000000
--- a/dependencyParser/mate-tools/build.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<project name="analyse" default="compile" basedir=".">
-    <description>
-        The base ant build file.
-    </description>
-    
-  <!-- set global properties for this build -->
-  <property name="src" location="src"/>
-  <property name="classes" location="classes"/>
-  <property name="dist" location="dist"/>
-  	<property name="include" location="include"/>
-
-  
-  <target name="init" description="Clears the /class directory">
-    <!-- Create the time stamp -->
-    <tstamp/> 
-    <mkdir dir="dist"/>
-    <mkdir dir="javadoc"/>
-    <mkdir dir="classes"/>
-  </target>
-
-  <target name="compile" depends="init" description="Compile the source" >
-    <!-- Compile the java code from ${src} into ${build}   executable="javac" -->
-  
-    <javac  srcdir="${src}"   
-           destdir="${classes}"          
-    	 includeantruntime="false"
-    	executable="javac.exe"
-    	   optimize="true"
-    	   debug="off"
-	   classpath=""/>
-	
-  </target>
-
-  <target name="build"  description="Build the distribution .jar file" >
-    <!-- Create the temporary distribution directory -->
-    <delete includeEmptyDirs="true"><fileset dir="dist" includes="**/*" excludes="gtc*.jar"/></delete>  
-    <mkdir dir="${dist}/temp-${DSTAMP}"/>  
-    <copy todir="${dist}/temp-${DSTAMP}"><fileset dir="${classes}" /></copy>  
-  	<copy todir="${dist}/temp-${DSTAMP}"><fileset dir="${include}" /></copy>
-    <!-- copy everything from /include/others to dist 
-    <copy todir="${dist}/temp-${DSTAMP}"><fileset dir="${include}/others" /></copy>-->
-    <!-- copy everything from /include/classes to dist 
-    <copy todir="${dist}/temp-${DSTAMP}"><fileset dir="${include}/classes" /></copy>-->
-    <!-- pack everything into a .jar file -->
-    <jar jarfile="${dist}/anna-3.5.jar" 
-         basedir="${dist}/temp-${DSTAMP}"/>
-    <delete dir="${dist}/temp-{DSTAMP}" />
-  </target>
-  
-  <target name="javadoc" depends="init" description="Create the javadoc API documentation" >
-        <delete includeEmptyDirs="true"><fileset dir="javadoc" includes="**/*"/></delete>  
-        <!-- TODO: you might add new packages to packagenames -->
-        <javadoc destdir="javadoc" access="package" source="1.4"
-            use="false" notree="false" nonavbar="false" noindex="true"
-            splitindex="false" author="true" version="true"
-            nodeprecatedlist="true" nodeprecated="false"
-            packagenames="gtc.*.*"
-            sourcepath="src" classpath="class"/>
-   </target>
-   
-
-	 <target name="all" depends="init,compile,javadoc" description="Make all" />
-</project>
-
diff --git a/dependencyParser/mate-tools/classes/decoder/ParallelDecoder$DSet.class b/dependencyParser/mate-tools/classes/decoder/ParallelDecoder$DSet.class
deleted file mode 100644
index afd509c..0000000
Binary files a/dependencyParser/mate-tools/classes/decoder/ParallelDecoder$DSet.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/decoder/ParallelDecoder.class b/dependencyParser/mate-tools/classes/decoder/ParallelDecoder.class
deleted file mode 100644
index 238fd06..0000000
Binary files a/dependencyParser/mate-tools/classes/decoder/ParallelDecoder.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/decoder/ParallelRearrangeNBest$PA.class b/dependencyParser/mate-tools/classes/decoder/ParallelRearrangeNBest$PA.class
deleted file mode 100644
index 3edcd6b..0000000
Binary files a/dependencyParser/mate-tools/classes/decoder/ParallelRearrangeNBest$PA.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/decoder/ParallelRearrangeNBest.class b/dependencyParser/mate-tools/classes/decoder/ParallelRearrangeNBest.class
deleted file mode 100644
index c604932..0000000
Binary files a/dependencyParser/mate-tools/classes/decoder/ParallelRearrangeNBest.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/decoder/ParallelRearrangeNBest2$PA.class b/dependencyParser/mate-tools/classes/decoder/ParallelRearrangeNBest2$PA.class
deleted file mode 100644
index f1639e7..0000000
Binary files a/dependencyParser/mate-tools/classes/decoder/ParallelRearrangeNBest2$PA.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/decoder/ParallelRearrangeNBest2.class b/dependencyParser/mate-tools/classes/decoder/ParallelRearrangeNBest2.class
deleted file mode 100644
index 80e8921..0000000
Binary files a/dependencyParser/mate-tools/classes/decoder/ParallelRearrangeNBest2.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/examples/DependencyParser.class b/dependencyParser/mate-tools/classes/examples/DependencyParser.class
deleted file mode 100644
index 89ed2d4..0000000
Binary files a/dependencyParser/mate-tools/classes/examples/DependencyParser.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/examples/FullPipelineSpanish.class b/dependencyParser/mate-tools/classes/examples/FullPipelineSpanish.class
deleted file mode 100644
index 256caa9..0000000
Binary files a/dependencyParser/mate-tools/classes/examples/FullPipelineSpanish.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/examples/FullPipelineTest.class b/dependencyParser/mate-tools/classes/examples/FullPipelineTest.class
deleted file mode 100644
index d76a879..0000000
Binary files a/dependencyParser/mate-tools/classes/examples/FullPipelineTest.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/examples/MorphTagger.class b/dependencyParser/mate-tools/classes/examples/MorphTagger.class
deleted file mode 100644
index 305225c..0000000
Binary files a/dependencyParser/mate-tools/classes/examples/MorphTagger.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/examples/ParseOnly.class b/dependencyParser/mate-tools/classes/examples/ParseOnly.class
deleted file mode 100644
index 73a8f49..0000000
Binary files a/dependencyParser/mate-tools/classes/examples/ParseOnly.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/examples/Pipeline.class b/dependencyParser/mate-tools/classes/examples/Pipeline.class
deleted file mode 100644
index b8631e1..0000000
Binary files a/dependencyParser/mate-tools/classes/examples/Pipeline.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/extractors/Extractor.class b/dependencyParser/mate-tools/classes/extractors/Extractor.class
deleted file mode 100644
index 47ad699..0000000
Binary files a/dependencyParser/mate-tools/classes/extractors/Extractor.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/extractors/ExtractorClusterStacked.class b/dependencyParser/mate-tools/classes/extractors/ExtractorClusterStacked.class
deleted file mode 100644
index d8cc567..0000000
Binary files a/dependencyParser/mate-tools/classes/extractors/ExtractorClusterStacked.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/extractors/ExtractorClusterStackedR2.class b/dependencyParser/mate-tools/classes/extractors/ExtractorClusterStackedR2.class
deleted file mode 100644
index 2c32133..0000000
Binary files a/dependencyParser/mate-tools/classes/extractors/ExtractorClusterStackedR2.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/extractors/ExtractorFactory.class b/dependencyParser/mate-tools/classes/extractors/ExtractorFactory.class
deleted file mode 100644
index 9f8fa84..0000000
Binary files a/dependencyParser/mate-tools/classes/extractors/ExtractorFactory.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/extractors/ExtractorReranker.class b/dependencyParser/mate-tools/classes/extractors/ExtractorReranker.class
deleted file mode 100644
index 6173744..0000000
Binary files a/dependencyParser/mate-tools/classes/extractors/ExtractorReranker.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/extractors/ParallelExtract$DSet.class b/dependencyParser/mate-tools/classes/extractors/ParallelExtract$DSet.class
deleted file mode 100644
index f7ef6bf..0000000
Binary files a/dependencyParser/mate-tools/classes/extractors/ParallelExtract$DSet.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/extractors/ParallelExtract.class b/dependencyParser/mate-tools/classes/extractors/ParallelExtract.class
deleted file mode 100644
index 1ef577d..0000000
Binary files a/dependencyParser/mate-tools/classes/extractors/ParallelExtract.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/Closed.class b/dependencyParser/mate-tools/classes/is2/data/Closed.class
deleted file mode 100644
index e7abce7..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/Closed.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/Cluster.class b/dependencyParser/mate-tools/classes/is2/data/Cluster.class
deleted file mode 100644
index 330151f..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/Cluster.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/D4.class b/dependencyParser/mate-tools/classes/is2/data/D4.class
deleted file mode 100644
index 544eae0..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/D4.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/D6.class b/dependencyParser/mate-tools/classes/is2/data/D6.class
deleted file mode 100644
index 274867a..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/D6.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/D7.class b/dependencyParser/mate-tools/classes/is2/data/D7.class
deleted file mode 100644
index 4cf1121..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/D7.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/DPSTree.class b/dependencyParser/mate-tools/classes/is2/data/DPSTree.class
deleted file mode 100644
index c3cf0a4..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/DPSTree.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/DX.class b/dependencyParser/mate-tools/classes/is2/data/DX.class
deleted file mode 100644
index 773f0d7..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/DX.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/DataF.class b/dependencyParser/mate-tools/classes/is2/data/DataF.class
deleted file mode 100644
index eb52b0e..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/DataF.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/DataFES.class b/dependencyParser/mate-tools/classes/is2/data/DataFES.class
deleted file mode 100644
index c4c1f7d..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/DataFES.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/DataT.class b/dependencyParser/mate-tools/classes/is2/data/DataT.class
deleted file mode 100644
index 5ed10d3..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/DataT.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/Edges$C.class b/dependencyParser/mate-tools/classes/is2/data/Edges$C.class
deleted file mode 100644
index b57036e..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/Edges$C.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/Edges.class b/dependencyParser/mate-tools/classes/is2/data/Edges.class
deleted file mode 100644
index e293bbe..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/Edges.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/F2S.class b/dependencyParser/mate-tools/classes/is2/data/F2S.class
deleted file mode 100644
index 1c9ed89..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/F2S.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/F2SD.class b/dependencyParser/mate-tools/classes/is2/data/F2SD.class
deleted file mode 100644
index a2b7a83..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/F2SD.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/F2SF.class b/dependencyParser/mate-tools/classes/is2/data/F2SF.class
deleted file mode 100644
index f782eef..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/F2SF.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/F2SP.class b/dependencyParser/mate-tools/classes/is2/data/F2SP.class
deleted file mode 100644
index 34b66e0..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/F2SP.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/F2ST.class b/dependencyParser/mate-tools/classes/is2/data/F2ST.class
deleted file mode 100644
index a88c6a6..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/F2ST.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/FV.class b/dependencyParser/mate-tools/classes/is2/data/FV.class
deleted file mode 100644
index b4c89d2..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/FV.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/FVR.class b/dependencyParser/mate-tools/classes/is2/data/FVR.class
deleted file mode 100644
index 9d75826..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/FVR.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/IEncoder.class b/dependencyParser/mate-tools/classes/is2/data/IEncoder.class
deleted file mode 100644
index 48b863c..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/IEncoder.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/IEncoderPlus.class b/dependencyParser/mate-tools/classes/is2/data/IEncoderPlus.class
deleted file mode 100644
index 4ea4883..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/IEncoderPlus.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/IFV.class b/dependencyParser/mate-tools/classes/is2/data/IFV.class
deleted file mode 100644
index 652636d..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/IFV.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/Instances.class b/dependencyParser/mate-tools/classes/is2/data/Instances.class
deleted file mode 100644
index 014416a..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/Instances.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/InstancesTagger.class b/dependencyParser/mate-tools/classes/is2/data/InstancesTagger.class
deleted file mode 100644
index dc155f8..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/InstancesTagger.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/IntIntHash.class b/dependencyParser/mate-tools/classes/is2/data/IntIntHash.class
deleted file mode 100644
index 246e0c9..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/IntIntHash.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/Long2Int.class b/dependencyParser/mate-tools/classes/is2/data/Long2Int.class
deleted file mode 100644
index c11b75c..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/Long2Int.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/Long2IntExact.class b/dependencyParser/mate-tools/classes/is2/data/Long2IntExact.class
deleted file mode 100644
index 830c90c..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/Long2IntExact.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/Long2IntInterface.class b/dependencyParser/mate-tools/classes/is2/data/Long2IntInterface.class
deleted file mode 100644
index af26b65..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/Long2IntInterface.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/Long2IntQuick.class b/dependencyParser/mate-tools/classes/is2/data/Long2IntQuick.class
deleted file mode 100644
index 054e0e2..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/Long2IntQuick.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/MFB.class b/dependencyParser/mate-tools/classes/is2/data/MFB.class
deleted file mode 100644
index 58aa597..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/MFB.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/MFC.class b/dependencyParser/mate-tools/classes/is2/data/MFC.class
deleted file mode 100644
index fa3e098..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/MFC.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/MFO$Data4.class b/dependencyParser/mate-tools/classes/is2/data/MFO$Data4.class
deleted file mode 100644
index dbc74bd..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/MFO$Data4.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/MFO.class b/dependencyParser/mate-tools/classes/is2/data/MFO.class
deleted file mode 100644
index 1125008..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/MFO.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/Open.class b/dependencyParser/mate-tools/classes/is2/data/Open.class
deleted file mode 100644
index a34e40f..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/Open.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/PSTree.class b/dependencyParser/mate-tools/classes/is2/data/PSTree.class
deleted file mode 100644
index 3b68f29..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/PSTree.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/Parameter.class b/dependencyParser/mate-tools/classes/is2/data/Parameter.class
deleted file mode 100644
index f9a70aa..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/Parameter.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/ParametersFloat.class b/dependencyParser/mate-tools/classes/is2/data/ParametersFloat.class
deleted file mode 100644
index 53c3f0a..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/ParametersFloat.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/Parse.class b/dependencyParser/mate-tools/classes/is2/data/Parse.class
deleted file mode 100644
index bfec325..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/Parse.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/ParseNBest.class b/dependencyParser/mate-tools/classes/is2/data/ParseNBest.class
deleted file mode 100644
index 180e58c..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/ParseNBest.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/PipeGen.class b/dependencyParser/mate-tools/classes/is2/data/PipeGen.class
deleted file mode 100644
index d3400c4..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/PipeGen.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/PrimeFinder.class b/dependencyParser/mate-tools/classes/is2/data/PrimeFinder.class
deleted file mode 100644
index ec51f13..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/PrimeFinder.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/RandomIndex.class b/dependencyParser/mate-tools/classes/is2/data/RandomIndex.class
deleted file mode 100644
index 954f57c..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/RandomIndex.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/SentenceData09.class b/dependencyParser/mate-tools/classes/is2/data/SentenceData09.class
deleted file mode 100644
index ee6d068..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/SentenceData09.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/data/Thesaurus.class b/dependencyParser/mate-tools/classes/is2/data/Thesaurus.class
deleted file mode 100644
index a7d20d4..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/data/Thesaurus.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/io/CONLLReader04.class b/dependencyParser/mate-tools/classes/is2/io/CONLLReader04.class
deleted file mode 100644
index 3d0103f..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/io/CONLLReader04.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/io/CONLLReader06.class b/dependencyParser/mate-tools/classes/is2/io/CONLLReader06.class
deleted file mode 100644
index 06f8226..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/io/CONLLReader06.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/io/CONLLReader08.class b/dependencyParser/mate-tools/classes/is2/io/CONLLReader08.class
deleted file mode 100644
index b1c4919..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/io/CONLLReader08.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/io/CONLLReader09.class b/dependencyParser/mate-tools/classes/is2/io/CONLLReader09.class
deleted file mode 100644
index 98cbf01..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/io/CONLLReader09.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/io/CONLLWriter06.class b/dependencyParser/mate-tools/classes/is2/io/CONLLWriter06.class
deleted file mode 100644
index e1cdf31..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/io/CONLLWriter06.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/io/CONLLWriter09.class b/dependencyParser/mate-tools/classes/is2/io/CONLLWriter09.class
deleted file mode 100644
index 2697f96..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/io/CONLLWriter09.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/io/IOGenerals.class b/dependencyParser/mate-tools/classes/is2/io/IOGenerals.class
deleted file mode 100644
index 5346483..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/io/IOGenerals.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/io/PSReader.class b/dependencyParser/mate-tools/classes/is2/io/PSReader.class
deleted file mode 100644
index d197ad7..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/io/PSReader.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/io/TigerReader$Line.class b/dependencyParser/mate-tools/classes/is2/io/TigerReader$Line.class
deleted file mode 100644
index 7c14ffa..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/io/TigerReader$Line.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/io/TigerReader.class b/dependencyParser/mate-tools/classes/is2/io/TigerReader.class
deleted file mode 100644
index eb6aa37..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/io/TigerReader.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/lemmatizer/Evaluator$1.class b/dependencyParser/mate-tools/classes/is2/lemmatizer/Evaluator$1.class
deleted file mode 100644
index e015840..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/lemmatizer/Evaluator$1.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/lemmatizer/Evaluator.class b/dependencyParser/mate-tools/classes/is2/lemmatizer/Evaluator.class
deleted file mode 100644
index 53e79f4..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/lemmatizer/Evaluator.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/lemmatizer/Lemmatizer$1.class b/dependencyParser/mate-tools/classes/is2/lemmatizer/Lemmatizer$1.class
deleted file mode 100644
index fce30de..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/lemmatizer/Lemmatizer$1.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/lemmatizer/Lemmatizer.class b/dependencyParser/mate-tools/classes/is2/lemmatizer/Lemmatizer.class
deleted file mode 100644
index b6d3745..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/lemmatizer/Lemmatizer.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/lemmatizer/MFO.class b/dependencyParser/mate-tools/classes/is2/lemmatizer/MFO.class
deleted file mode 100644
index 651e2ae..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/lemmatizer/MFO.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/lemmatizer/Options.class b/dependencyParser/mate-tools/classes/is2/lemmatizer/Options.class
deleted file mode 100644
index cbe3419..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/lemmatizer/Options.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/lemmatizer/Pipe$1.class b/dependencyParser/mate-tools/classes/is2/lemmatizer/Pipe$1.class
deleted file mode 100644
index b445f21..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/lemmatizer/Pipe$1.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/lemmatizer/Pipe.class b/dependencyParser/mate-tools/classes/is2/lemmatizer/Pipe.class
deleted file mode 100644
index af22121..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/lemmatizer/Pipe.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/lemmatizer/StringEdit.class b/dependencyParser/mate-tools/classes/is2/lemmatizer/StringEdit.class
deleted file mode 100644
index 22ddb78..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/lemmatizer/StringEdit.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/mtag/Convert.class b/dependencyParser/mate-tools/classes/is2/mtag/Convert.class
deleted file mode 100644
index 6814212..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/mtag/Convert.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/mtag/Evaluator$1.class b/dependencyParser/mate-tools/classes/is2/mtag/Evaluator$1.class
deleted file mode 100644
index 9ad12ae..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/mtag/Evaluator$1.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/mtag/Evaluator.class b/dependencyParser/mate-tools/classes/is2/mtag/Evaluator.class
deleted file mode 100644
index 5f05944..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/mtag/Evaluator.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/mtag/ExtractorM.class b/dependencyParser/mate-tools/classes/is2/mtag/ExtractorM.class
deleted file mode 100644
index 1dfb207..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/mtag/ExtractorM.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/mtag/MFO$Data.class b/dependencyParser/mate-tools/classes/is2/mtag/MFO$Data.class
deleted file mode 100644
index fb46d59..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/mtag/MFO$Data.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/mtag/MFO$Data4.class b/dependencyParser/mate-tools/classes/is2/mtag/MFO$Data4.class
deleted file mode 100644
index a3346d7..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/mtag/MFO$Data4.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/mtag/MFO.class b/dependencyParser/mate-tools/classes/is2/mtag/MFO.class
deleted file mode 100644
index 5014e54..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/mtag/MFO.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/mtag/Options.class b/dependencyParser/mate-tools/classes/is2/mtag/Options.class
deleted file mode 100644
index a1ffdcb..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/mtag/Options.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/mtag/Pipe.class b/dependencyParser/mate-tools/classes/is2/mtag/Pipe.class
deleted file mode 100644
index 4d3ae21..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/mtag/Pipe.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/mtag/Tagger.class b/dependencyParser/mate-tools/classes/is2/mtag/Tagger.class
deleted file mode 100644
index 37af1ef..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/mtag/Tagger.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parser/Closed.class b/dependencyParser/mate-tools/classes/is2/parser/Closed.class
deleted file mode 100644
index 7e6161a..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parser/Closed.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parser/D5.class b/dependencyParser/mate-tools/classes/is2/parser/D5.class
deleted file mode 100644
index 11da4cc..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parser/D5.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parser/Decoder.class b/dependencyParser/mate-tools/classes/is2/parser/Decoder.class
deleted file mode 100644
index 35fbe20..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parser/Decoder.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parser/Edges$C.class b/dependencyParser/mate-tools/classes/is2/parser/Edges$C.class
deleted file mode 100644
index bcbfa2e..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parser/Edges$C.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parser/Edges.class b/dependencyParser/mate-tools/classes/is2/parser/Edges.class
deleted file mode 100644
index 62f892e..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parser/Edges.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parser/Evaluator$Results.class b/dependencyParser/mate-tools/classes/is2/parser/Evaluator$Results.class
deleted file mode 100644
index 52913a2..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parser/Evaluator$Results.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parser/Evaluator.class b/dependencyParser/mate-tools/classes/is2/parser/Evaluator.class
deleted file mode 100644
index cd8680f..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parser/Evaluator.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parser/Extractor.class b/dependencyParser/mate-tools/classes/is2/parser/Extractor.class
deleted file mode 100644
index cb576f0..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parser/Extractor.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parser/MFO.class b/dependencyParser/mate-tools/classes/is2/parser/MFO.class
deleted file mode 100644
index e2f5d9f..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parser/MFO.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parser/Open.class b/dependencyParser/mate-tools/classes/is2/parser/Open.class
deleted file mode 100644
index 8d4ef9b..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parser/Open.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parser/Options.class b/dependencyParser/mate-tools/classes/is2/parser/Options.class
deleted file mode 100644
index 806b3d0..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parser/Options.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parser/ParallelDecoder$DSet.class b/dependencyParser/mate-tools/classes/is2/parser/ParallelDecoder$DSet.class
deleted file mode 100644
index 534b87c..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parser/ParallelDecoder$DSet.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parser/ParallelDecoder.class b/dependencyParser/mate-tools/classes/is2/parser/ParallelDecoder.class
deleted file mode 100644
index dd112d0..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parser/ParallelDecoder.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parser/ParallelExtract$DSet.class b/dependencyParser/mate-tools/classes/is2/parser/ParallelExtract$DSet.class
deleted file mode 100644
index 823130d..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parser/ParallelExtract$DSet.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parser/ParallelExtract.class b/dependencyParser/mate-tools/classes/is2/parser/ParallelExtract.class
deleted file mode 100644
index 7dfe35c..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parser/ParallelExtract.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parser/ParallelRearrange$PA.class b/dependencyParser/mate-tools/classes/is2/parser/ParallelRearrange$PA.class
deleted file mode 100644
index d1b8bfe..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parser/ParallelRearrange$PA.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parser/ParallelRearrange.class b/dependencyParser/mate-tools/classes/is2/parser/ParallelRearrange.class
deleted file mode 100644
index fcfed43..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parser/ParallelRearrange.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parser/Parameters.class b/dependencyParser/mate-tools/classes/is2/parser/Parameters.class
deleted file mode 100644
index bc64375..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parser/Parameters.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parser/ParametersFloat.class b/dependencyParser/mate-tools/classes/is2/parser/ParametersFloat.class
deleted file mode 100644
index 524da17..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parser/ParametersFloat.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parser/Parser.class b/dependencyParser/mate-tools/classes/is2/parser/Parser.class
deleted file mode 100644
index 575c9da..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parser/Parser.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parser/Pipe.class b/dependencyParser/mate-tools/classes/is2/parser/Pipe.class
deleted file mode 100644
index ea909ad..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parser/Pipe.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parser/package.html b/dependencyParser/mate-tools/classes/is2/parser/package.html
deleted file mode 100755
index a4f40a2..0000000
--- a/dependencyParser/mate-tools/classes/is2/parser/package.html
+++ /dev/null
@@ -1,11 +0,0 @@
-Package info
-<ul>
-  <li> separate cluster feature to keep speed since two many features in a function reduce speed drastically. </li>
-  <li> try second order stacking features </li>
-  <li> parser stacking features </li>
-  <li> lots of cluster features </li>
-  <li> Iteration over edges and not extraction of all edges each time </li>
-  <li> integrated new structurer writer </li>
-</ul>
-  Change in FS, I observed lots of duplicated grand-children features
-<br>
\ No newline at end of file
diff --git a/dependencyParser/mate-tools/classes/is2/parserR2/Decoder.class b/dependencyParser/mate-tools/classes/is2/parserR2/Decoder.class
deleted file mode 100644
index fd23b35..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parserR2/Decoder.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parserR2/Options.class b/dependencyParser/mate-tools/classes/is2/parserR2/Options.class
deleted file mode 100644
index c36af6b..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parserR2/Options.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parserR2/Parameters.class b/dependencyParser/mate-tools/classes/is2/parserR2/Parameters.class
deleted file mode 100644
index 3ff4ebe..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parserR2/Parameters.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parserR2/ParametersFloat.class b/dependencyParser/mate-tools/classes/is2/parserR2/ParametersFloat.class
deleted file mode 100644
index 3837dc0..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parserR2/ParametersFloat.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parserR2/Parser.class b/dependencyParser/mate-tools/classes/is2/parserR2/Parser.class
deleted file mode 100644
index 2b1b742..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parserR2/Parser.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parserR2/Pipe.class b/dependencyParser/mate-tools/classes/is2/parserR2/Pipe.class
deleted file mode 100644
index 7067c95..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parserR2/Pipe.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parserR2/PipeReranker.class b/dependencyParser/mate-tools/classes/is2/parserR2/PipeReranker.class
deleted file mode 100644
index fc6cb91..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parserR2/PipeReranker.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parserR2/Reranker.class b/dependencyParser/mate-tools/classes/is2/parserR2/Reranker.class
deleted file mode 100644
index 5177b92..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/parserR2/Reranker.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/parserR2/package.html b/dependencyParser/mate-tools/classes/is2/parserR2/package.html
deleted file mode 100755
index 6b06482..0000000
--- a/dependencyParser/mate-tools/classes/is2/parserR2/package.html
+++ /dev/null
@@ -1,3 +0,0 @@
-Package info
- - n-best parser
-<br>
\ No newline at end of file
diff --git a/dependencyParser/mate-tools/classes/is2/tag/ExtractorT2.class b/dependencyParser/mate-tools/classes/is2/tag/ExtractorT2.class
deleted file mode 100644
index 44dba9e..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/tag/ExtractorT2.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/tag/Lexicon.class b/dependencyParser/mate-tools/classes/is2/tag/Lexicon.class
deleted file mode 100644
index 1ea1e85..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/tag/Lexicon.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/tag/MFO$Data4.class b/dependencyParser/mate-tools/classes/is2/tag/MFO$Data4.class
deleted file mode 100644
index 3627f10..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/tag/MFO$Data4.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/tag/MFO.class b/dependencyParser/mate-tools/classes/is2/tag/MFO.class
deleted file mode 100644
index 10ea428..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/tag/MFO.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/tag/Options.class b/dependencyParser/mate-tools/classes/is2/tag/Options.class
deleted file mode 100644
index e6ec2c0..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/tag/Options.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/tag/POS.class b/dependencyParser/mate-tools/classes/is2/tag/POS.class
deleted file mode 100644
index 8ea2052..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/tag/POS.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/tag/Tagger.class b/dependencyParser/mate-tools/classes/is2/tag/Tagger.class
deleted file mode 100644
index 11ac1aa..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/tag/Tagger.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/tag/package.html b/dependencyParser/mate-tools/classes/is2/tag/package.html
deleted file mode 100644
index 469fdf6..0000000
--- a/dependencyParser/mate-tools/classes/is2/tag/package.html
+++ /dev/null
@@ -1,4 +0,0 @@
-Package info
-<br><br>
-This parser includes a tagger into the dependency parser
-<br>
\ No newline at end of file
diff --git a/dependencyParser/mate-tools/classes/is2/tools/IPipe.class b/dependencyParser/mate-tools/classes/is2/tools/IPipe.class
deleted file mode 100644
index 37a51d1..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/tools/IPipe.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/tools/Retrainable.class b/dependencyParser/mate-tools/classes/is2/tools/Retrainable.class
deleted file mode 100644
index 3675e0f..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/tools/Retrainable.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/tools/Tool.class b/dependencyParser/mate-tools/classes/is2/tools/Tool.class
deleted file mode 100644
index 0ba217e..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/tools/Tool.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/tools/ToolIO.class b/dependencyParser/mate-tools/classes/is2/tools/ToolIO.class
deleted file mode 100644
index a6f87ab..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/tools/ToolIO.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/tools/Train.class b/dependencyParser/mate-tools/classes/is2/tools/Train.class
deleted file mode 100644
index 0551298..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/tools/Train.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/Convert.class b/dependencyParser/mate-tools/classes/is2/util/Convert.class
deleted file mode 100644
index cc00ef1..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/Convert.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/Convert0409.class b/dependencyParser/mate-tools/classes/is2/util/Convert0409.class
deleted file mode 100644
index ded4be5..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/Convert0409.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/ConvertADJ.class b/dependencyParser/mate-tools/classes/is2/util/ConvertADJ.class
deleted file mode 100644
index c080750..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/ConvertADJ.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/ConvertLowerCase0909.class b/dependencyParser/mate-tools/classes/is2/util/ConvertLowerCase0909.class
deleted file mode 100644
index d2ffbf4..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/ConvertLowerCase0909.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/ConvertTiger2CoNLL.class b/dependencyParser/mate-tools/classes/is2/util/ConvertTiger2CoNLL.class
deleted file mode 100644
index d9c9cdf..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/ConvertTiger2CoNLL.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/DB.class b/dependencyParser/mate-tools/classes/is2/util/DB.class
deleted file mode 100644
index 50c83a6..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/DB.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/Edges$C.class b/dependencyParser/mate-tools/classes/is2/util/Edges$C.class
deleted file mode 100644
index e3c539b..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/Edges$C.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/Edges.class b/dependencyParser/mate-tools/classes/is2/util/Edges.class
deleted file mode 100644
index 6fd6eeb..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/Edges.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/Evaluator$1.class b/dependencyParser/mate-tools/classes/is2/util/Evaluator$1.class
deleted file mode 100644
index 11c15b6..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/Evaluator$1.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/Evaluator$Results.class b/dependencyParser/mate-tools/classes/is2/util/Evaluator$Results.class
deleted file mode 100644
index c8a450a..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/Evaluator$Results.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/Evaluator.class b/dependencyParser/mate-tools/classes/is2/util/Evaluator.class
deleted file mode 100644
index c9a50ff..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/Evaluator.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/EvaluatorTagger$1.class b/dependencyParser/mate-tools/classes/is2/util/EvaluatorTagger$1.class
deleted file mode 100644
index 129c2f1..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/EvaluatorTagger$1.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/EvaluatorTagger$2.class b/dependencyParser/mate-tools/classes/is2/util/EvaluatorTagger$2.class
deleted file mode 100644
index 7a634d1..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/EvaluatorTagger$2.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/EvaluatorTagger$Results.class b/dependencyParser/mate-tools/classes/is2/util/EvaluatorTagger$Results.class
deleted file mode 100644
index fc57ccc..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/EvaluatorTagger$Results.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/EvaluatorTagger.class b/dependencyParser/mate-tools/classes/is2/util/EvaluatorTagger.class
deleted file mode 100644
index 20d5d22..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/EvaluatorTagger.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/ExtractParagraphs.class b/dependencyParser/mate-tools/classes/is2/util/ExtractParagraphs.class
deleted file mode 100644
index dc00415..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/ExtractParagraphs.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/IntStack.class b/dependencyParser/mate-tools/classes/is2/util/IntStack.class
deleted file mode 100644
index 4af4316..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/IntStack.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/Long2Int.class b/dependencyParser/mate-tools/classes/is2/util/Long2Int.class
deleted file mode 100644
index c816fd5..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/Long2Int.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/Options.class b/dependencyParser/mate-tools/classes/is2/util/Options.class
deleted file mode 100644
index 8071ebb..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/Options.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/OptionsSuper.class b/dependencyParser/mate-tools/classes/is2/util/OptionsSuper.class
deleted file mode 100644
index 8f8a181..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/OptionsSuper.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/ParserEvaluator$Results.class b/dependencyParser/mate-tools/classes/is2/util/ParserEvaluator$Results.class
deleted file mode 100644
index 154033d..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/ParserEvaluator$Results.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/ParserEvaluator.class b/dependencyParser/mate-tools/classes/is2/util/ParserEvaluator.class
deleted file mode 100644
index 72c4f35..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/ParserEvaluator.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/Split.class b/dependencyParser/mate-tools/classes/is2/util/Split.class
deleted file mode 100644
index d665e7e..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/Split.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/Split2.class b/dependencyParser/mate-tools/classes/is2/util/Split2.class
deleted file mode 100644
index 3222aee..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/Split2.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/classes/is2/util/Split3.class b/dependencyParser/mate-tools/classes/is2/util/Split3.class
deleted file mode 100644
index a16bbc6..0000000
Binary files a/dependencyParser/mate-tools/classes/is2/util/Split3.class and /dev/null differ
diff --git a/dependencyParser/mate-tools/lib/commons-math-2.2.jar b/dependencyParser/mate-tools/lib/commons-math-2.2.jar
deleted file mode 100644
index b29a39c..0000000
Binary files a/dependencyParser/mate-tools/lib/commons-math-2.2.jar and /dev/null differ
diff --git a/dependencyParser/mate-tools/lib/trove-2.0.4.jar b/dependencyParser/mate-tools/lib/trove-2.0.4.jar
deleted file mode 100644
index cb1c8f1..0000000
Binary files a/dependencyParser/mate-tools/lib/trove-2.0.4.jar and /dev/null differ
diff --git a/dependencyParser/mate-tools/src/decoder/ParallelDecoder.java b/dependencyParser/mate-tools/src/decoder/ParallelDecoder.java
deleted file mode 100755
index cf4cfa9..0000000
--- a/dependencyParser/mate-tools/src/decoder/ParallelDecoder.java
+++ /dev/null
@@ -1,189 +0,0 @@
-package decoder;
-
-import java.util.ArrayList;
-import java.util.concurrent.Callable;
-
-import is2.data.Closed;
-import is2.data.DataF;
-import is2.data.Edges;
-import is2.data.Open;
-
-/**
- * @author Bernd Bohnet, 30.08.2009
- *
- *         This class implements a parallel feature extractor.
- */
-final public class ParallelDecoder implements Callable<Object> {
-	// some constants
-	private static final float INIT_BEST = (-1.0F / 0.0F);
-	private static final boolean[] DIR = { false, true };
-
-	// the data space of the weights for a dependency tree
-	final private DataF x;
-
-	private short[] pos;
-
-	private Open O[][][][];
-	private Closed C[][][][];
-
-	private int n;
-
-	boolean done = false;
-	public boolean waiting = false;
-
-	/**
-	 * Initialize the parallel decoder.
-	 *
-	 * @param pos
-	 *            part-of-speech
-	 * @param d
-	 *            data
-	 * @param edges
-	 *            part-of-speech edge mapping
-	 * @param o
-	 *            open spans
-	 * @param c
-	 *            closed spans
-	 * @param n
-	 *            number of words
-	 */
-	public ParallelDecoder(short[] pos, DataF d, Open o[][][][], Closed c[][][][], int n) {
-
-		this.pos = pos;
-		this.x = d;
-
-		this.O = o;
-		this.C = c;
-		this.n = n;
-	}
-
-	private static class DSet {
-		short w1, w2;
-	}
-
-	@Override
-	public Object call() {
-
-		while (true) {
-
-			DSet set = get();
-			if (done && set == null)
-				break;
-
-			if (set == null)
-				return null;
-
-			short s = set.w1, t = set.w2;
-
-			for (short dir = 1; dir >= 0; dir--) {
-
-				short[] labs = (dir == 1) ? Edges.get(pos[s], pos[t], false) : Edges.get(pos[t], pos[s], true);
-
-				O[s][t][dir] = new Open[labs.length];
-				for (int l = O[s][t][dir].length - 1; l >= 0; l--) {
-
-					double tRP = INIT_BEST;
-
-					Closed tL = null, tR = null;
-
-					for (int r = s; r < t; r++) {
-
-						if (s == 0 && r != 0)
-							continue;
-
-						double tLPr = INIT_BEST, tRPr = INIT_BEST;
-						Closed tLCld = null, tRCld = null;
-
-						if (r == s)
-							tLPr = dir == 1 ? x.sib[s][t][s][0][l] : x.gra[t][s][s][1][l];
-						else
-							for (int i = s + 1; i <= r; i++)
-								if (((dir == 1 ? x.sib[s][t][i][0][l] : x.gra[t][s][i][1][l])
-										+ C[s][r][1][i].p) > tLPr) {
-									tLPr = ((dir == 1 ? x.sib[s][t][i][0][l] : x.gra[t][s][i][1][l]) + C[s][r][1][i].p);
-									tLCld = C[s][r][1][i];
-								}
-
-						if (r == t - 1)
-							tRPr = dir == 1 ? x.gra[s][t][s][0][l] : x.sib[t][s][s][1][l];
-						else
-							for (int i = r + 1; i < t; i++)
-								if (((dir == 1 ? x.gra[s][t][i][0][l] : x.sib[t][s][i][1][l])
-										+ C[r + 1][t][0][i].p) > tRPr) {
-									tRPr = ((dir == 1 ? x.gra[s][t][i][0][l] : x.sib[t][s][i][1][l])
-											+ C[r + 1][t][0][i].p);
-									tRCld = C[r + 1][t][0][i];
-								}
-
-						if (tLPr + tRPr > tRP) {
-							tRP = tLPr + tRPr;
-							tL = tLCld;
-							tR = tRCld;
-						}
-					}
-					O[s][t][dir][l] = new Open(s, t, dir, labs[l], tL, tR,
-							(float) (tRP + ((dir == 1) ? x.pl[s][t] : x.pl[t][s])
-									+ ((dir == 1) ? x.lab[s][t][labs[l]][0] : x.lab[t][s][labs[l]][1])));
-				}
-			}
-			C[s][t][1] = new Closed[n];
-			C[s][t][0] = new Closed[n];
-
-			for (int m = s; m <= t; m++) {
-				for (boolean d : DIR) {
-					if ((d && m != s) || !d && (m != t && s != 0)) {
-
-						// create closed structure
-
-						double top = INIT_BEST;
-
-						Open tU = null;
-						Closed tL = null;
-						int numLabels = O[(d ? s : m)][(d ? m : t)][d ? 1 : 0].length;
-
-						// for (int l = numLabels-1; l >=0; l--) {
-						for (int l = 0; l < numLabels; l++) {
-
-							Open hi = O[(d ? s : m)][(d ? m : t)][d ? 1 : 0][l];
-							for (int amb = m + (d ? 1 : -1); amb != (d ? t : s) + (d ? 1 : -1); amb += (d ? 1 : -1)) {
-
-								if ((hi.p + C[d ? m : s][d ? t : m][d ? 1 : 0][amb].p
-										+ x.gra[d ? s : t][m][amb][d ? 0 : 1][l]) > top) {
-									top = (hi.p + C[d ? m : s][d ? t : m][d ? 1 : 0][amb].p
-											+ x.gra[d ? s : t][m][amb][(d ? 0 : 1)][l]);
-									tU = hi;
-									tL = C[d ? m : s][d ? t : m][d ? 1 : 0][amb];
-								}
-							}
-
-							if ((m == (d ? t : s)) && (hi.p + x.gra[d ? s : t][m][d ? s : t][(d ? 0 : 1)][l]) > top) {
-								top = (hi.p + x.gra[(d ? s : t)][m][d ? s : t][d ? 0 : 1][l]);
-								tU = hi;
-								tL = null;
-							}
-						}
-						C[s][t][d ? 1 : 0][m] = new Closed(s, t, m, d ? 1 : 0, tU, tL, (float) top);
-					}
-				}
-			}
-		}
-		return null;
-	}
-
-	public static ArrayList<DSet> sets = new ArrayList<DSet>();
-
-	static synchronized private DSet get() {
-		synchronized (sets) {
-			if (sets.size() == 0)
-				return null;
-			return sets.remove(sets.size() - 1);
-		}
-	}
-
-	public static void add(short w1, short w2) {
-		DSet ds = new DSet();
-		ds.w1 = w1;
-		ds.w2 = w2;
-		sets.add(ds);
-	}
-}
diff --git a/dependencyParser/mate-tools/src/decoder/ParallelRearrangeNBest.java b/dependencyParser/mate-tools/src/decoder/ParallelRearrangeNBest.java
deleted file mode 100755
index 5a16211..0000000
--- a/dependencyParser/mate-tools/src/decoder/ParallelRearrangeNBest.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package decoder;
-
-import java.util.ArrayList;
-import java.util.concurrent.Callable;
-
-import extractors.Extractor;
-import is2.data.DataF;
-import is2.data.Edges;
-import is2.data.Parse;
-import is2.data.ParseNBest;
-
-/**
- * @author Dr. Bernd Bohnet, 30.08.2009
- *
- *         This class implements a parallel edge rearrangement for
- *         non-projective parsing; The linear method was first suggest by Rayn
- *         McDonald et. al. 2005.
- */
-final public class ParallelRearrangeNBest implements Callable<Object> {
-
-	// new parent child combination to explore
-	final static class PA {
-		final float p;
-		final short ch, pa;
-
-		float best;
-
-		public PA(float p2, short ch2, short pa2) {
-			p = p2;
-			ch = ch2;
-			pa = pa2;
-		}
-	}
-
-	// some data from the dependency tree
-	private short[] pos;
-	private DataF x;
-	private boolean[][] isChild;
-	public short[] heads, types;
-	private float lastNBest;
-	private float best; // best so far
-	private float threshold;
-	private Extractor extractor;
-
-	/**
-	 * Initialize the parallel rearrange thread
-	 *
-	 * @param isChild2
-	 *            is a child
-	 * @param edgesC
-	 *            the part-of-speech edge mapping
-	 * @param pos
-	 *            the part-of-speech
-	 * @param x
-	 *            the data
-	 * @param lastNBest
-	 * @param s
-	 *            the heads
-	 * @param ts
-	 *            the types
-	 */
-	public ParallelRearrangeNBest(short[] pos, DataF x, Parse p, float lastNBest, Extractor extractor, float best,
-			float threshold) {
-
-		heads = p.heads;
-
-		types = p.labels;
-
-		isChild = new boolean[heads.length][heads.length];
-
-		for (int i = 1, l1 = 1; i < heads.length; i++, l1 = i)
-			while ((l1 = heads[l1]) != -1)
-				isChild[l1][i] = true;
-
-		this.lastNBest = lastNBest;
-		this.pos = pos;
-		this.x = x;
-
-		this.extractor = extractor;
-		this.best = best;
-		this.threshold = threshold;
-	}
-
-	public ArrayList<ParseNBest> parses = new ArrayList<ParseNBest>();
-
-	@Override
-	public Object call() {
-
-		// check the list of new possible parents and children for a better
-		// combination
-		for (int ch = 1; ch < heads.length; ch++) {
-			for (short pa = 0; pa < heads.length; pa++) {
-				if (ch == pa || pa == heads[ch] || isChild[ch][pa])
-					continue;
-
-				short oldP = heads[ch], oldT = types[ch];
-				heads[ch] = pa;
-
-				short[] labels = Edges.get(pos[pa], pos[ch], ch < pa);
-
-				for (short label : labels) {
-
-					types[ch] = label;
-					float p_new = extractor.encode3(pos, heads, types, x);
-
-					if (p_new < lastNBest || ((best + this.threshold) > p_new))
-						continue;
-
-					ParseNBest p = new ParseNBest();
-					p.signature(heads, types);
-					p.f1 = p_new;
-					parses.add(p);
-				}
-
-				// change back
-				heads[ch] = oldP;
-				types[ch] = oldT;
-
-				// consider changes to labels only
-				labels = Edges.get(pos[oldP], pos[ch], ch < oldP);
-
-				for (short label : labels) {
-
-					types[ch] = label;
-					float p_new = extractor.encode3(pos, heads, types, x);
-
-					// optimization: add only if larger than smallest of n-best
-					if (p_new < lastNBest || ((best + this.threshold) > p_new))
-						continue;
-
-					ParseNBest p = new ParseNBest();
-					p.signature(heads, types);
-					p.f1 = p_new;
-					parses.add(p);
-				}
-
-				heads[ch] = oldP;
-				types[ch] = oldT;
-			}
-		}
-		return parses;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/decoder/ParallelRearrangeNBest2.java b/dependencyParser/mate-tools/src/decoder/ParallelRearrangeNBest2.java
deleted file mode 100644
index 6795b7b..0000000
--- a/dependencyParser/mate-tools/src/decoder/ParallelRearrangeNBest2.java
+++ /dev/null
@@ -1,158 +0,0 @@
-package decoder;
-
-import java.util.ArrayList;
-import java.util.concurrent.Callable;
-
-import extractors.Extractor;
-import is2.data.DataF;
-import is2.data.Edges;
-import is2.data.Parse;
-import is2.data.ParseNBest;
-
-/**
- * @author Dr. Bernd Bohnet, 30.08.2009
- *
- *         This class implements a parallel edge rearrangement for
- *         non-projective parsing; The linear method was first suggest by Rayn
- *         McDonald et. al. 2005.
- */
-final public class ParallelRearrangeNBest2 implements Callable<Object> {
-
-	// new parent child combination to explore
-	final static class PA {
-		final float p;
-		final short ch, pa;
-
-		public short[] heads, types;
-
-		public PA(Parse p, short ch2, short pa2) {
-			this.p = (float) p.f1;
-			heads = p.heads;
-			types = p.labels;
-			ch = ch2;
-			pa = pa2;
-
-		}
-	}
-
-	// list of parent child combinations
-	private static ArrayList<PA> parents = new ArrayList<PA>();
-
-	// some data from the dependency tree
-	private short[] pos;
-	private DataF x;
-	private float lastNBest;
-	private float threshold;
-	private Extractor extractor;
-
-	/**
-	 * Initialize the parallel rearrange thread
-	 * 
-	 * @param pos
-	 *            the part-of-speech
-	 * @param x
-	 *            the data
-	 * @param lastNBest
-	 * @param isChild2
-	 *            is a child
-	 * @param edgesC
-	 *            the part-of-speech edge mapping
-	 * @param s
-	 *            the heads
-	 * @param ts
-	 *            the types
-	 */
-	public ParallelRearrangeNBest2(short[] pos, DataF x, float lastNBest, Extractor extractor, float threshold) {
-
-		this.lastNBest = lastNBest;
-		this.pos = pos;
-		this.x = x;
-
-		this.extractor = extractor;
-		this.threshold = threshold;
-	}
-
-	public ArrayList<ParseNBest> parses = new ArrayList<ParseNBest>();
-
-	@Override
-	public Object call() {
-
-		try {
-
-			while (true) {
-				PA p = getPA();
-
-				if (p == null)
-					return parses;
-
-				short oldP = p.heads[p.ch], oldT = p.types[p.ch];
-				p.heads[p.ch] = p.pa;
-
-				short[] labels = Edges.get(pos[p.pa], pos[p.ch], p.ch < p.pa);
-
-				for (short label : labels) {
-
-					p.types[p.ch] = label;
-					float p_new = extractor.encode3(pos, p.heads, p.types, x);
-
-					if (p_new < lastNBest || ((p.p + this.threshold) > p_new))
-						continue;
-
-					ParseNBest x = new ParseNBest();
-					x.signature(p.heads, p.types);
-					x.f1 = p_new;
-					parses.add(x);
-				}
-
-				// change back
-				p.heads[p.ch] = oldP;
-				p.types[p.ch] = oldT;
-
-				// consider changes to labels only
-				labels = Edges.get(pos[oldP], pos[p.ch], p.ch < oldP);
-
-				for (short label : labels) {
-
-					p.types[p.ch] = label;
-					float p_new = extractor.encode3(pos, p.heads, p.types, x);
-
-					// optimization: add only if larger than smallest of n-best
-					if (p_new < lastNBest || ((p.p + this.threshold) > p_new))
-						continue;
-
-					ParseNBest x = new ParseNBest();
-					x.signature(p.heads, p.types);
-					x.f1 = p_new;
-					parses.add(x);
-				}
-
-				p.heads[p.ch] = oldP;
-				p.types[p.ch] = oldT;
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-		return parses;
-	}
-
-	/**
-	 * Add a child-parent combination which are latter explored for
-	 * rearrangement
-	 *
-	 * @param p2
-	 * @param ch2
-	 * @param pa
-	 */
-	public static void add(Parse p, short ch2, short pa) {
-		parents.add(new PA(p, ch2, pa));
-	}
-
-	public static PA getPA() {
-		synchronized (parents) {
-			if (parents.size() == 0)
-				return null;
-			return parents.remove(parents.size() - 1);
-		}
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/examples/DependencyParser.java b/dependencyParser/mate-tools/src/examples/DependencyParser.java
deleted file mode 100644
index 917dc04..0000000
--- a/dependencyParser/mate-tools/src/examples/DependencyParser.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package examples;
-
-import java.io.File;
-import java.util.Arrays;
-
-import is2.data.InstancesTagger;
-import is2.data.SentenceData09;
-import is2.io.CONLLReader09;
-import is2.io.IOGenerals;
-import is2.lemmatizer.Lemmatizer;
-import is2.lemmatizer.MFO;
-import is2.parser.Parser;
-import is2.tag.Tagger;
-//import org.apache.log4j.Logger;
-
-/**
- * Dependency parsing
- *
- * @author B. Piwowarski <benjamin@bpiwowar.net>
- * @date 10/10/12
- */
-// @TaskDescription(name = "dependency-parser", project = "mate-tools")
-public class DependencyParser {
-	// final static private Logger LOGGER =
-	// Logger.getLogger(DependencyParser.class);
-	// @Argument(name = "lemmatizer", required = true, checkers =
-	// IOChecker.Readable.class)
-	File lemmatizerFile;
-
-	// @Argument(name = "tagger", required = true)
-	File taggerFile;
-
-	// @Argument(name = "parser", required = true)
-	File parserFile;
-
-	// @Override
-	public int execute() throws Throwable {
-
-		// Load lemmatizer
-		// LOGGER.info("Loading lemmatizer");
-		// true = do uppercase lemmatization
-		Lemmatizer lemmatizer = new Lemmatizer(lemmatizerFile.getAbsolutePath());
-
-		// Load tagger
-		// LOGGER.info("Loading tagger");
-		Tagger tagger = new Tagger(taggerFile.getAbsolutePath());
-
-		// Load parser
-		// LOGGER.info("Loading parser");
-		Parser parser = new Parser(parserFile.getAbsolutePath());
-
-		// Sentences to parse
-		String sentences[] = new String[] { "Airfields have been constructed on a number of the islands .",
-				"Private investment has even made an increasingly modern ferry fleet possible .",
-				"Politically , the 1990s have been relatively quite times for the islands ." };
-
-		CONLLReader09 reader = new CONLLReader09(CONLLReader09.NO_NORMALIZE);
-
-		for (String sentence : sentences) {
-			// Prepare the sentence
-			InstancesTagger instanceTagger = new InstancesTagger();
-			instanceTagger.init(1, new MFO());
-
-			String[] split = sentence.split("\\s+");
-			String[] splitRoot = new String[split.length + 1];
-			System.arraycopy(split, 0, splitRoot, 1, split.length);
-			splitRoot[0] = IOGenerals.ROOT;
-
-			SentenceData09 instance = new SentenceData09();
-			instance.init(splitRoot);
-
-			reader.insert(instanceTagger, instance);
-
-			SentenceData09 result = lemmatizer.apply(instance);
-			tagger.apply(result);
-			result = parser.parse(result, parser.params, false, parser.options);
-
-			// Output
-			System.out.println(Arrays.toString(result.forms));
-			System.out.println(Arrays.toString(result.plemmas));
-			System.out.println(Arrays.toString(result.ppos));
-			System.out.println(Arrays.toString(result.pheads));
-			System.out.println(Arrays.toString(result.plabels));
-			System.out.println();
-
-		}
-
-		return 0;
-	}
-}
diff --git a/dependencyParser/mate-tools/src/examples/FullPipelineSpanish.java b/dependencyParser/mate-tools/src/examples/FullPipelineSpanish.java
deleted file mode 100644
index 9bfff59..0000000
--- a/dependencyParser/mate-tools/src/examples/FullPipelineSpanish.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package examples;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.StringTokenizer;
-
-import is2.data.SentenceData09;
-import is2.io.CONLLWriter09;
-import is2.lemmatizer.Lemmatizer;
-import is2.parser.Parser;
-import is2.tag.Tagger;
-import is2.tools.Tool;
-
-/**
- * @author Bernd Bohnet, 13.09.2010
- *
- *         Illustrates the application the full pipeline: lemmatizer,
- *         morphologic, tagger, and parser
- */
-public class FullPipelineSpanish {
-
-	// shows how to parse a sentences and call the tools
-	public static void main(String[] args) throws IOException {
-
-		// Create a data container for a sentence
-		SentenceData09 i = new SentenceData09();
-
-		if (args.length == 1) { // input might be a sentence: "This is another
-								// test ."
-			StringTokenizer st = new StringTokenizer(args[0]);
-			ArrayList<String> forms = new ArrayList<String>();
-
-			forms.add("<root>");
-			while (st.hasMoreTokens())
-				forms.add(st.nextToken());
-
-			i.init(forms.toArray(new String[0]));
-
-		} else {
-			// provide a default sentence: Haus has a mutated vowel
-			i.init(new String[] { "<root>", "También", "estuve", "emocionado", "pero", "no", "pude", "imaginar", "mi",
-					"vida", "sin", "la", "gente", "tan", "intima", "a", "mí", "." });
-
-		}
-
-		// lemmatizing
-
-		System.out.println("\nReading the model of the lemmatizer");
-		Tool lemmatizer = new Lemmatizer("models/lemma-spa.model"); // create a
-																	// lemmatizer
-
-		System.out.println("Applying the lemmatizer");
-		lemmatizer.apply(i);
-
-		System.out.print(i.toString());
-		System.out.print("Lemmata: ");
-		for (String l : i.plemmas)
-			System.out.print(l + " ");
-		System.out.println();
-
-		// morphologic tagging
-
-		System.out.println("\nReading the model of the morphologic tagger");
-		is2.mtag.Tagger morphTagger = new is2.mtag.Tagger("models/mtag-spa.model");
-
-		System.out.println("\nApplying the morpholoigc tagger");
-		morphTagger.apply(i);
-
-		System.out.print(i.toString());
-		System.out.print("Morph: ");
-		for (String f : i.pfeats)
-			System.out.print(f + " ");
-		System.out.println();
-
-		// part-of-speech tagging
-
-		System.out.println("\nReading the model of the part-of-speech tagger");
-		Tool tagger = new Tagger("models/tag-spa.model");
-
-		System.out.println("\nApplying the part-of-speech tagger");
-		tagger.apply(i);
-
-		System.out.print(i.toString());
-		System.out.print("Part-of-Speech tags: ");
-		for (String p : i.ppos)
-			System.out.print(p + " ");
-		System.out.println();
-
-		// parsing
-
-		System.out.println("\nReading the model of the dependency parser");
-		Tool parser = new Parser("models/prs-spa.model");
-
-		System.out.println("\nApplying the parser");
-		parser.apply(i);
-
-		System.out.println(i.toString());
-
-		// write the result to a file
-
-		CONLLWriter09 writer = new is2.io.CONLLWriter09("example-out.txt");
-
-		writer.write(i, CONLLWriter09.NO_ROOT);
-		writer.finishWriting();
-
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/examples/FullPipelineTest.java b/dependencyParser/mate-tools/src/examples/FullPipelineTest.java
deleted file mode 100644
index 4aecdc2..0000000
--- a/dependencyParser/mate-tools/src/examples/FullPipelineTest.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package examples;
-
-import java.io.File;
-
-import is2.data.InstancesTagger;
-import is2.data.SentenceData09;
-import is2.io.CONLLReader09;
-import is2.io.CONLLWriter09;
-import is2.lemmatizer.Lemmatizer;
-import is2.lemmatizer.MFO;
-import is2.parser.Parser;
-import is2.tag.Tagger;
-//import org.apache.log4j.Logger;
-
-/**
- * Dependency parsing
- *
- * @author B. Piwowarski <benjamin@bpiwowar.net>
- * @date 10/10/12
- */
-// @TaskDescription(name = "dependency-parser", project = "mate-tools")
-public class FullPipelineTest {
-	// final static private Logger LOGGER =
-	// Logger.getLogger(DependencyParser.class);
-	// @Argument(name = "lemmatizer", required = true, checkers =
-	// IOChecker.Readable.class)
-	public File lemmatizerFile;
-
-	// @Argument(name = "tagger", required = true)
-	public File taggerFile;
-
-	public File mtaggerFile;
-
-	// @Argument(name = "parser", required = true)
-	public File parserFile;
-
-	// @Override
-	public int execute(String source, String target) throws Throwable {
-
-		// Load lemmatizer
-		// LOGGER.info("Loading lemmatizer");
-		// true = do uppercase lemmatization
-		Lemmatizer lemmatizer = new Lemmatizer(lemmatizerFile.getAbsolutePath());
-
-		// Load tagger
-		// LOGGER.info("Loading tagger");
-		Tagger tagger = new Tagger(taggerFile.getAbsolutePath());
-
-		is2.mtag.Tagger mtagger = new is2.mtag.Tagger(mtaggerFile.getAbsolutePath());
-
-		// Load parser
-		// LOGGER.info("Loading parser");
-		Parser parser = new Parser(parserFile.getAbsolutePath());
-
-		CONLLReader09 reader = new CONLLReader09(source);
-		CONLLWriter09 writer = new CONLLWriter09(target);
-
-		int count = 0;
-		while (true) {
-			// Prepare the sentence
-			InstancesTagger is = new InstancesTagger();
-			is.init(1, new MFO());
-
-			SentenceData09 instance = reader.getNext(is);
-			if (instance == null)
-				break;
-			SentenceData09 result = null;
-			try {
-
-				System.out.print("\b\b\b\b" + count);
-				result = lemmatizer.apply(instance);
-
-				result = tagger.apply(result);
-				result = mtagger.apply(result);
-				result = parser.apply(result);
-
-				count++;
-			} catch (Exception e) {
-
-				System.out.println("error" + result);
-				System.out.println("error" + instance);
-				e.printStackTrace();
-				break;
-			}
-
-			// Output
-			writer.write(result);
-
-		}
-		writer.finishWriting();
-		return 0;
-	}
-
-	public static void main(String args[]) throws Throwable {
-
-		if (args.length < 3) {
-			System.out.println("lemmatizer-model tagger-model parser-model source target");
-			System.exit(0);
-		}
-		FullPipelineTest p = new FullPipelineTest();
-		p.lemmatizerFile = new File(args[0]);
-		p.taggerFile = new File(args[1]);
-		p.mtaggerFile = new File(args[2]);
-		p.parserFile = new File(args[3]);
-
-		p.execute(args[4], args[5]);
-
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/examples/MorphTagger.java b/dependencyParser/mate-tools/src/examples/MorphTagger.java
deleted file mode 100644
index 75bfc28..0000000
--- a/dependencyParser/mate-tools/src/examples/MorphTagger.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package examples;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.StringTokenizer;
-
-import is2.data.SentenceData09;
-import is2.lemmatizer.Lemmatizer;
-import is2.lemmatizer.Options;
-
-/**
- * @author Bernd Bohnet, 13.09.2010
- *
- *         Illustrates the application of some components: lemmatizer, tagger,
- *         and parser
- */
-public class MorphTagger {
-
-	/**
-	 * How to lemmatize a sentences?
-	 */
-	public static void main(String[] args) throws IOException {
-
-		// Create a data container for a sentence
-		SentenceData09 i = new SentenceData09();
-
-		if (args.length == 1) { // input might be a sentence: "This is another
-								// test ."
-			StringTokenizer st = new StringTokenizer(args[0]);
-			ArrayList<String> forms = new ArrayList<String>();
-
-			forms.add("<root>");
-			while (st.hasMoreTokens())
-				forms.add(st.nextToken());
-
-			i.init(forms.toArray(new String[0]));
-
-		} else {
-			// provide a default sentence
-			i.init(new String[] { "<root>", "Häuser", "hat", "ein", "Umlaut", "." });
-		}
-
-		// print the forms
-		for (String l : i.forms)
-			System.out.println("forms : " + l);
-
-		// tell the lemmatizer the location of the model
-		is2.lemmatizer.Options optsLemmatizer = new Options(new String[] { "-model", "models/lemma-ger.model" });
-
-		// create a lemmatizer
-		Lemmatizer lemmatizer = new Lemmatizer(optsLemmatizer.modelName);
-
-		// lemmatize a sentence; the result is stored in the stenenceData09 i
-		lemmatizer.apply(i);
-
-		// output the lemmata
-		for (String l : i.plemmas)
-			System.out.println("lemma : " + l);
-
-		is2.mtag.Options morphologicTaggerOptions = new is2.mtag.Options(
-				new String[] { "-model", "models/mtag-ger.model" });
-
-		is2.mtag.Tagger mt = new is2.mtag.Tagger(morphologicTaggerOptions);
-
-		try {
-
-			// SentenceData09 snt = is2.mtag.Main.out(i.forms, lemmata);
-
-			SentenceData09 snt = mt.apply(i);
-			for (String f : snt.pfeats)
-				System.out.println("feats " + f);
-
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/examples/ParseOnly.java b/dependencyParser/mate-tools/src/examples/ParseOnly.java
deleted file mode 100755
index 23eaf59..0000000
--- a/dependencyParser/mate-tools/src/examples/ParseOnly.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package examples;
-
-import is2.data.SentenceData09;
-import is2.parser.Options;
-import is2.parser.Parser;
-
-public class ParseOnly {
-
-	public static void main(String[] args) {
-
-		if (args.length == 0) {
-			plain();
-		}
-
-	}
-
-	/**
-	 * This example shows how to parse a sentence.
-	 */
-	public static void plain() {
-
-		// initialize the options
-		String[] opts = { "-model", "models/prs-eng-x.model" };
-		Options options = new Options(opts);
-
-		// create a parser
-		Parser parser = new Parser(options);
-
-		// Create a data container for a sentence
-		SentenceData09 i = new SentenceData09();
-
-		// Provide the sentence
-		i.init(new String[] { "<root>", "This", "is", "a", "test", "." });
-		i.setPPos(new String[] { "<root-POS>", "DT", "VBZ", "DT", "NN", "." });
-
-		// parse the sentence
-		SentenceData09 out = parser.apply(i);
-
-		// output the sentence and dependency tree
-		System.out.println(out.toString());
-
-		// Get the parsing results
-		out.getLabels();
-		out.getParents();
-
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/examples/Pipeline.java b/dependencyParser/mate-tools/src/examples/Pipeline.java
deleted file mode 100644
index dcb5a24..0000000
--- a/dependencyParser/mate-tools/src/examples/Pipeline.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package examples;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.StringTokenizer;
-
-import is2.data.SentenceData09;
-import is2.lemmatizer.Lemmatizer;
-import is2.parser.Options;
-import is2.parser.Parser;
-import is2.tag.Tagger;
-
-/**
- * @author Bernd Bohnet, 13.09.2010
- *
- *         Illustrates the application of some components: lemmatizer, tagger,
- *         and parser
- */
-public class Pipeline {
-
-	// how to parse a sentences and call the tools
-	public static void main(String[] args) throws IOException {
-
-		// Create a data container for a sentence
-		SentenceData09 i = new SentenceData09();
-
-		if (args.length == 1) { // input might be a sentence: "This is another
-								// test ."
-			StringTokenizer st = new StringTokenizer(args[0]);
-			ArrayList<String> forms = new ArrayList<String>();
-
-			forms.add("<root>");
-			while (st.hasMoreTokens())
-				forms.add(st.nextToken());
-
-			i.init(forms.toArray(new String[0]));
-
-		} else {
-			// provide a default sentence
-			i.init(new String[] { "<root>", "This", "is", "a", "test", "." });
-		}
-
-		// print the forms
-		for (String l : i.forms)
-			System.out.println("form : " + l);
-
-		// tell the lemmatizer the location of the model
-		is2.lemmatizer.Options optsLemmatizer = new is2.lemmatizer.Options(
-				new String[] { "-model", "models/lemma-eng.model" });
-
-		// create a lemmatizer
-		Lemmatizer lemmatizer = new Lemmatizer(optsLemmatizer.modelName);
-
-		// lemmatize a sentence; the result is stored in the stenenceData09 i
-		i = lemmatizer.apply(i);
-
-		// output the lemmata
-		for (String l : i.plemmas)
-			System.out.println("lemma : " + l);
-
-		// tell the tagger the location of the model
-		is2.tag.Options optsTagger = new is2.tag.Options(new String[] { "-model", "models/tag-eng.model" });
-		Tagger tagger = new Tagger(optsTagger);
-
-		// String pos[] =tagger.tag(i.forms, i.lemmas);
-		// i.setPPos(pos);
-
-		SentenceData09 tagged = tagger.tag(i);
-		for (String p : tagged.ppos)
-			System.out.println("pos " + p);
-
-		// initialize the options
-		Options optsParser = new Options(new String[] { "-model", "models/prs-eng-x.model" });
-
-		// create a parser
-		Parser parser = new Parser(optsParser);
-
-		// parse the sentence (you get a copy of the input i)
-		SentenceData09 parse = parser.apply(tagged);
-
-		System.out.println(parse.toString());
-
-		// create some trash on the hard drive :-)
-		is2.io.CONLLWriter09 writer = new is2.io.CONLLWriter09("example-out.txt");
-
-		writer.write(i);
-		writer.finishWriting();
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/extractors/Extractor.java b/dependencyParser/mate-tools/src/extractors/Extractor.java
deleted file mode 100644
index 190ccc6..0000000
--- a/dependencyParser/mate-tools/src/extractors/Extractor.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- *
- */
-package extractors;
-
-import is2.data.Cluster;
-import is2.data.DataF;
-import is2.data.FV;
-import is2.data.IFV;
-import is2.data.Instances;
-
-/**
- * @author Dr. Bernd Bohnet, 29.04.2011
- *
- *
- */
-public interface Extractor {
-
-	/**
-	 * Initializes the Extractor general parts
-	 */
-	public void initStat();
-
-	/**
-	 * Initializes the Extractor specific parts
-	 */
-	public void init();
-
-	public int basic(short[] pos, int[] forms, int w1, int w2, Cluster cluster, IFV f);
-
-	public void firstm(Instances is, int i, int w1, int w2, int j, Cluster cluster, long[] svs);
-
-	public void siblingm(Instances is, int i, short[] pos, int[] forms, int[] lemmas, short[][] feats, int w1, int w2,
-			int g, int j, Cluster cluster, long[] svs, int n);
-
-	public void gcm(Instances is, int i, int w1, int w2, int g, int j, Cluster cluster, long[] svs);
-
-	public int getType();
-
-	public FV encodeCat(Instances is, int n, short[] pos, int[] is2, int[] is3, short[] heads, short[] labels,
-			short[][] s, Cluster cl, FV pred);
-
-	public void setMaxForm(int integer);
-
-	/**
-	 * @return
-	 */
-	public int getMaxForm();
-
-	public float encode3(short[] pos, short[] heads, short[] labs, DataF x);
-
-}
diff --git a/dependencyParser/mate-tools/src/extractors/ExtractorClusterStacked.java b/dependencyParser/mate-tools/src/extractors/ExtractorClusterStacked.java
deleted file mode 100755
index 436bd5c..0000000
--- a/dependencyParser/mate-tools/src/extractors/ExtractorClusterStacked.java
+++ /dev/null
@@ -1,1946 +0,0 @@
-package extractors;
-
-import is2.data.Cluster;
-import is2.data.D4;
-import is2.data.DataF;
-import is2.data.Edges;
-import is2.data.FV;
-import is2.data.IFV;
-import is2.data.Instances;
-import is2.data.Long2IntInterface;
-import is2.data.MFB;
-
-final public class ExtractorClusterStacked implements Extractor {
-
-	public static int s_rel, s_word, s_type, s_dir, s_dist, s_feat, s_child, s_spath, s_lpath, s_pos;
-
-	final D4 d0, dl1, dl2, dwr, dr, dwwp, dw, dwp, dlf, d3lp, d2lp, d2pw, d2pp;
-
-	public final Long2IntInterface li;
-
-	public ExtractorClusterStacked(Long2IntInterface li) {
-
-		ExtractorClusterStacked.initFeatures();
-		this.li = li;
-		d0 = new D4(li);
-		dl1 = new D4(li);
-		dl2 = new D4(li);
-		dwr = new D4(li);
-		dr = new D4(li);
-		dwwp = new D4(li);
-
-		dw = new D4(li);
-		dwp = new D4(li);
-
-		dlf = new D4(li);
-		d3lp = new D4(li);
-		d2lp = new D4(li);
-		d2pw = new D4(li);
-		d2pp = new D4(li);
-
-	}
-
-	@Override
-	public void initStat() {
-
-		MFB mf = new MFB();
-		s_rel = mf.getFeatureCounter().get(REL).intValue();
-		s_pos = mf.getFeatureCounter().get(POS).intValue();
-		s_word = mf.getFeatureCounter().get(WORD).intValue();
-		s_type = mf.getFeatureCounter().get(TYPE).intValue();// mf.getFeatureBits();
-		s_dir = mf.getFeatureCounter().get(DIR);
-		la = mf.getValue(DIR, LA);
-		ra = mf.getValue(DIR, RA);
-		s_dist = mf.getFeatureCounter().get(DIST);// mf.getFeatureBits(DIST);
-		s_feat = mf.getFeatureCounter().get(FEAT);// mf.getFeatureBits(Pipe.FEAT);
-		s_spath = mf.getFeatureCounter().get(Cluster.SPATH) == null ? 0 : mf.getFeatureCounter().get(Cluster.SPATH);// mf.getFeatureBits(Cluster.SPATH);
-		s_lpath = mf.getFeatureCounter().get(Cluster.LPATH) == null ? 0 : mf.getFeatureCounter().get(Cluster.LPATH);// mf.getFeatureBits(Cluster.LPATH);
-	}
-
-	@Override
-	public void init() {
-		// DB.println("init");
-		d0.a0 = s_type;
-		d0.a1 = s_pos;
-		d0.a2 = s_pos;
-		d0.a3 = s_pos;
-		d0.a4 = s_pos;
-		d0.a5 = s_pos;
-		d0.a6 = s_pos;
-		d0.a7 = s_pos;
-		dl1.a0 = s_type;
-		dl1.a1 = s_rel;
-		dl1.a2 = s_pos;
-		dl1.a3 = s_pos;
-		dl1.a4 = s_pos;
-		dl1.a5 = s_pos;
-		dl1.a6 = s_pos;
-		dl1.a7 = s_pos;
-		dl2.a0 = s_type;
-		dl2.a1 = s_rel;
-		dl2.a2 = s_word;
-		dl2.a3 = s_pos;
-		dl2.a4 = s_pos;
-		dl2.a5 = s_pos;
-		dl2.a6 = s_pos;
-		dl2.a7 = s_pos;
-		dwp.a0 = s_type;
-		dwp.a1 = s_rel;
-		dwp.a2 = s_word;
-		dwp.a3 = s_pos;
-		dwp.a4 = s_pos;
-		dwp.a5 = s_word;
-		dwwp.a0 = s_type;
-		dwwp.a1 = s_rel;
-		dwwp.a2 = s_word;
-		dwwp.a3 = s_word;
-		dwwp.a4 = s_pos;
-		dwwp.a5 = s_word;
-		dlf.a0 = s_type;
-		dlf.a1 = s_rel;
-		dlf.a2 = s_pos;
-		dlf.a3 = s_pos;
-		dlf.a4 = s_feat;
-		dlf.a5 = s_feat;
-		dlf.a6 = s_pos;
-		dlf.a7 = s_pos;
-		d3lp.a0 = s_type;
-		d3lp.a1 = s_rel;
-		d3lp.a2 = s_lpath;
-		d3lp.a3 = s_lpath;
-		d3lp.a4 = s_lpath;
-		d3lp.a5 = s_word;
-		d3lp.a6 = s_spath;
-		d3lp.a7 = s_spath;
-		d2lp.a0 = s_type;
-		d2lp.a1 = s_rel;
-		d2lp.a2 = s_lpath;
-		d2lp.a3 = s_lpath;
-		d2lp.a4 = s_word;
-		d2lp.a5 = s_word; // d3lp.a6 = s_spath; d3lp.a7 = s_spath;
-		d2pw.a0 = s_type;
-		d2pw.a1 = s_rel;
-		d2pw.a2 = s_lpath;
-		d2pw.a3 = s_lpath;
-		d2pw.a4 = s_word;
-		d2pw.a5 = s_word; // d3lp.a6 = s_spath; d3lp.a7 = s_spath;
-		d2pp.a0 = s_type;
-		d2pp.a1 = s_rel;
-		d2pp.a2 = s_lpath;
-		d2pp.a3 = s_lpath;
-		d2pp.a4 = s_pos;
-		d2pp.a5 = s_pos; // d3lp.a6 = s_spath; d3lp.a7 = s_spath;
-	}
-
-	@Override
-	public int basic(short[] pposs, int[] form, int p, int d, Cluster cluster, IFV f) {
-
-		d0.clean();
-		dl1.clean();
-		dl2.clean();
-		dwp.clean();
-		dwwp.clean();
-		dlf.clean();
-		d3lp.clean();
-
-		d3lp.clean();
-		d2lp.clean();
-		d2pw.clean();
-		d2pp.clean();
-
-		int n = 1;
-		int dir = (p < d) ? ra : la;
-		d0.v0 = n++;
-		d0.v1 = pposs[p];
-		d0.v2 = pposs[d]; // d0.stop=4;
-		int end = (p >= d ? p : d);
-		int start = (p >= d ? d : p) + 1;
-
-		for (int i = start; i < end; i++) {
-			d0.v3 = pposs[i];
-			d0.cz4();
-			d0.csa(s_dir, dir, f);
-		}
-		return n;
-	}
-
-	@Override
-	public void firstm(Instances is, int i, int prnt, int dpnt, int label, Cluster cluster, long[] f) {
-
-		// short[] pposs, int[] form, int[] lemmas, short[][] feats
-		for (int k = 0; k < f.length; k++)
-			f[k] = 0;
-
-		short[] pposs = is.pposs[i];
-		int[] form = is.forms[i];
-		short[][] feats = is.feats[i];
-
-		int pF = form[prnt], dF = form[dpnt];
-		int pL = is.plemmas[i][prnt], dL = is.plemmas[i][dpnt];
-		int pP = pposs[prnt], dP = pposs[dpnt];
-
-		int prntLS = pF == -1 ? -1 : cluster.getLP(pF), chldLS = dF == -1 ? -1 : cluster.getLP(dF);
-
-		final int dir = (prnt < dpnt) ? ra : la;
-
-		if (pF > maxForm)
-			pF = -1;
-		if (pL > maxForm)
-			pL = -1;
-
-		if (dF > maxForm)
-			dF = -1;
-		if (dL > maxForm)
-			dL = -1;
-
-		int n = 3, c = 0;
-
-		dl2.v1 = label;
-		dl2.v0 = n++;
-		dl2.v2 = pF;
-		dl2.v3 = dP;
-		dl2.cz4();
-		f[c++] = dl2.csa(s_dir, dir);
-		dl2.v0 = n++;
-		dl2.cz3();
-		f[c++] = dl2.csa(s_dir, dir);
-		dl2.v0 = n++;
-		dl2.v2 = dF;
-		dl2.v3 = pP;
-		dl2.cz4();
-		f[c++] = dl2.csa(s_dir, dir);
-		dl2.v0 = n++;
-		dl2.cz3();
-		f[c++] = dl2.csa(s_dir, dir);
-
-		dwwp.v1 = label;
-		dwwp.v0 = n++;
-		dwwp.v2 = pF;
-		dwwp.v3 = dF;
-		dwwp.cz4();
-		f[c++] = dwwp.csa(s_dir, dir);
-
-		dl1.v1 = label;
-		dl1.v0 = n++;
-		dl1.v2 = dP;
-		dl1.cz3();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = pP;
-		dl1.cz3();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v3 = dP;
-		dl1.cz4();
-		f[c++] = dl1.csa(s_dir, dir);
-
-		int pPm1 = prnt > 0 ? pposs[prnt - 1] : s_str, dPm1 = dpnt > 0 ? pposs[dpnt - 1] : s_str;
-		int pPp1 = prnt < pposs.length - 1 ? pposs[prnt + 1] : s_end,
-				dPp1 = dpnt < pposs.length - 1 ? pposs[dpnt + 1] : s_end;
-
-		int pPm2 = prnt > 1 ? pposs[prnt - 2] : s_str, dPm2 = dpnt > 1 ? pposs[dpnt - 2] : s_str;
-		int pPp2 = prnt < pposs.length - 2 ? pposs[prnt + 2] : s_end,
-				dPp2 = dpnt < pposs.length - 2 ? pposs[dpnt + 2] : s_end;
-
-		int pFm1 = prnt > 0 ? form[prnt - 1] : s_stwrd, dFm1 = dpnt > 0 ? form[dpnt - 1] : s_stwrd;
-		int pFp1 = prnt < form.length - 1 ? form[prnt + 1] : s_stwrd,
-				dFp1 = dpnt < form.length - 1 ? form[dpnt + 1] : s_stwrd;
-
-		dl1.v0 = n++;
-		dl1.v2 = pP;
-		dl1.v3 = pPp1;
-		dl1.v4 = dP;
-		dl1.v5 = dPp1;
-		dl1.cz6();
-		f[n++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v5 = dPm1;
-		dl1.cz6();
-		f[n++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v3 = pPm1;
-		dl1.cz6();
-		f[n++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v5 = dPp1;
-		dl1.cz6();
-		f[n++] = dl1.csa(s_dir, dir);
-
-		dl1.v0 = n++;
-		dl1.v3 = pPm1;
-		dl1.cz5();
-		f[n++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v3 = dPm1;
-		dl1.cz5();
-		f[n++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v3 = dPp1;
-		dl1.cz5();
-		f[n++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v3 = pPp1;
-		dl1.cz5();
-		f[n++] = dl1.csa(s_dir, dir);
-
-		dl1.v0 = n++;
-		dl1.v2 = pP;
-		dl1.v3 = pPp2;
-		dl1.v4 = dP;
-		dl1.v5 = dPp2;
-		dl1.cz6();
-		f[n++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v5 = dPm2;
-		dl1.cz6();
-		f[n++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v3 = pPm2;
-		dl1.cz6();
-		f[n++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v5 = dPp2;
-		dl1.cz6();
-		f[n++] = dl1.csa(s_dir, dir);
-
-		dl1.v0 = n++;
-		dl1.v3 = pPm2;
-		dl1.cz5();
-		f[n++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v3 = dPm2;
-		dl1.cz5();
-		f[n++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v3 = dPp2;
-		dl1.cz5();
-		f[n++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v3 = pPp2;
-		dl1.cz5();
-		f[n++] = dl1.csa(s_dir, dir);
-
-		dl2.v0 = n++;
-		dl2.v3 = dFm1;
-		dl2.v3 = pPp1;
-		dl2.v4 = pP;
-		dl2.cz5();
-		f[n++] = dl2.getVal();
-		dl2.v0 = n++;
-		dl2.v3 = dFp1;
-		dl2.v3 = pPm1;
-		dl2.cz5();
-		f[n++] = dl2.getVal();
-		dl2.v0 = n++;
-		dl2.v3 = pFm1;
-		dl2.v3 = dPp1;
-		dl2.v4 = dP;
-		dl2.cz5();
-		f[n++] = dl2.getVal();
-		dl2.v0 = n++;
-		dl2.v3 = pFp1;
-		dl2.v3 = dPm1;
-		dl2.cz5();
-		f[n++] = dl2.getVal();
-
-		dl2.v0 = n++;
-		dl2.v3 = dFm1;
-		dl2.v3 = dPm2;
-		dl2.v4 = pP;
-		dl2.cz5();
-		f[n++] = dl2.getVal();
-		dl2.v0 = n++;
-		dl2.v3 = dFp1;
-		dl2.v3 = dPp2;
-		dl2.cz5();
-		f[n++] = dl2.getVal();
-		dl2.v0 = n++;
-		dl2.v3 = pFm1;
-		dl2.v3 = pPm2;
-		dl2.v4 = dP;
-		dl2.cz5();
-		f[n++] = dl2.getVal();
-		dl2.v0 = n++;
-		dl2.v3 = pFp1;
-		dl2.v3 = pPp2;
-		dl2.cz5();
-		f[n++] = dl2.getVal();
-
-		dwwp.v0 = n++;
-		dwwp.v2 = pF;
-		dwwp.v3 = dF;
-		dwwp.v4 = dP;
-		dwwp.cz5();
-		f[n++] = dwwp.csa(s_dir, dir);
-		dwwp.v0 = n++;
-		dwwp.v2 = pF;
-		dwwp.v3 = dF;
-		dwwp.v4 = pP;
-		dwwp.cz5();
-		f[n++] = dwwp.csa(s_dir, dir);
-		dwwp.v0 = n++;
-		dwwp.v2 = dF;
-		dwwp.v3 = pF;
-		dwwp.v4 = pP;
-		dwwp.v4 = dP;
-		dwwp.cz6();
-		f[n++] = dwwp.csa(s_dir, dir);
-
-		// lemmas
-
-		dl2.v1 = label;
-		dl2.v0 = n++;
-		dl2.v2 = pL;
-		dl2.v3 = dP;
-		dl2.cz4();
-		f[c++] = dl2.csa(s_dir, dir);
-		dl2.v0 = n++;
-		dl2.cz3();
-		f[c++] = dl2.csa(s_dir, dir);
-		dl2.v0 = n++;
-		dl2.v2 = dL;
-		dl2.v3 = pP;
-		dl2.cz4();
-		f[c++] = dl2.csa(s_dir, dir);
-		dl2.v0 = n++;
-		dl2.cz3();
-		f[c++] = dl2.csa(s_dir, dir);
-
-		dwwp.v1 = label;
-		dwwp.v0 = n++;
-		dwwp.v2 = pL;
-		dwwp.v3 = dL;
-		dwwp.cz4();
-		f[c++] = dwwp.csa(s_dir, dir);
-
-		dwp.v1 = label;
-		dwp.v0 = n++;
-		dwp.v2 = dL;
-		dwp.v3 = pP;
-		dwp.v4 = dP;
-		dwp.v5 = pL;
-		dwp.cz6();
-		f[c++] = dwp.csa(s_dir, dir);
-		dwp.v0 = n++;
-		dwp.cz5();
-		f[c++] = dwp.csa(s_dir, dir);
-
-		dwp.v0 = n++;
-		dwp.v2 = pL;
-		dwp.cz5();
-		f[c++] = dwp.csa(s_dir, dir);
-		dwwp.v0 = n++;
-		dwwp.v2 = pL;
-		dwwp.v3 = dL;
-		dwwp.v4 = dP;
-		dwwp.cz5();
-		f[c++] = dwwp.csa(s_dir, dir);
-		dwwp.v0 = n++;
-		dwwp.v4 = pP;
-		dwwp.cz5();
-		f[c++] = dwwp.csa(s_dir, dir);
-
-		// cluster
-
-		d2pw.v1 = label;
-		d2pw.v0 = n++;
-		d2pw.v2 = prntLS;
-		d2pw.v3 = chldLS;
-		d2pw.cz4();
-		f[c++] = d2pw.csa(s_dir, dir);
-		d2pw.v0 = n++;
-		d2pw.v4 = pF;
-		d2pw.cz5();
-		f[c++] = d2pw.csa(s_dir, dir);
-		d2pw.v0 = n++;
-		d2pw.v4 = dF;
-		d2pw.cz5();
-		f[c++] = d2pw.csa(s_dir, dir);
-		d2pw.v0 = n++;
-		d2pw.v5 = pF;
-		d2pw.cz6();
-		f[c++] = d2pw.csa(s_dir, dir);
-
-		d2pp.v1 = label;
-		d2pp.v0 = n++;
-		d2pp.v2 = prntLS;
-		d2pp.v3 = chldLS;
-		d2pp.cz4();
-		f[c++] = d2pp.csa(s_dir, dir);
-		d2pp.v0 = n++;
-		d2pp.v4 = pP;
-		d2pp.cz5();
-		f[c++] = d2pp.csa(s_dir, dir);
-		d2pp.v0 = n++;
-		d2pp.v4 = dP;
-		d2pp.cz5();
-		f[c++] = d2pp.csa(s_dir, dir);
-		d2pp.v0 = n++;
-		d2pp.v5 = pP;
-		d2pp.cz6();
-		f[c++] = d2pp.csa(s_dir, dir);
-
-		// take those in for stacking
-		// dl2.v1=label;
-		// dl2.v0= n++;dl2.v2=prel[dpnt];dl2.v3=pP;dl2.v4=dP;
-		// dl2.v5=prnt==phead[dpnt]?1:2; dl2.cz6(); f[c++]=dl2.csa(s_dir,dir);
-		// dl2.v0= n++;dl2.v2=pP;dl2.v3=dP; dl2.v4=prnt==phead[dpnt]?1:2;
-		// dl2.cz5(); f[c++]=dl2.csa(s_dir,dir);
-
-		if (feats == null)
-			return;
-
-		short[] featsP = feats[prnt], featsD = feats[dpnt];
-		dlf.v0 = n++;
-		dlf.v1 = label;
-		dlf.v2 = pP;
-		dlf.v3 = dP;
-		extractFeat(f, c, dir, featsP, featsD);
-
-		return;
-	}
-
-	@Override
-	public void gcm(Instances is, int i, int p, int d, int gc, int label, Cluster cluster, long[] f) {
-
-		for (int k = 0; k < f.length; k++)
-			f[k] = 0;
-
-		short[] pos = is.pposs[i];
-		int[] forms = is.forms[i];
-		int[] lemmas = is.plemmas[i];
-		short[][] feats = is.feats[i];
-
-		int pP = pos[p], dP = pos[d];
-		int prntF = forms[p], chldF = forms[d];
-		int prntL = lemmas[p], chldL = lemmas[d];
-		int prntLS = prntF == -1 ? -1 : cluster.getLP(prntF), chldLS = chldF == -1 ? -1 : cluster.getLP(chldF);
-
-		int gP = gc != -1 ? pos[gc] : s_str;
-		int gcF = gc != -1 ? forms[gc] : s_stwrd;
-		int gcL = gc != -1 ? lemmas[gc] : s_stwrd;
-		int gcLS = (gc != -1) && (gcF != -1) ? cluster.getLP(gcF) : s_stwrd;
-
-		if (prntF > maxForm)
-			prntF = -1;
-		if (prntL > maxForm)
-			prntL = -1;
-
-		if (chldF > maxForm)
-			chldF = -1;
-		if (chldL > maxForm)
-			chldL = -1;
-
-		if (gcF > maxForm)
-			gcF = -1;
-		if (gcL > maxForm)
-			gcL = -1;
-
-		int dir = (p < d) ? ra : la, dir_gra = (d < gc) ? ra : la;
-
-		int n = 84, c = 0;
-
-		// dl1.v023();
-		dl1.v1 = label;
-		dl1.v0 = n++;
-		dl1.v2 = pP;
-		dl1.v3 = dP;
-		dl1.v4 = gP;
-		dl1.cz5();
-		dl1.cs(s_dir, dir);
-		f[c++] = dl1.csa(s_dir, dir_gra);
-		dl1.v0 = n++;
-		dl1.v2 = pP;
-		dl1.v3 = gP;
-		dl1.cz4();
-		dl1.cs(s_dir, dir);
-		f[c++] = dl1.csa(s_dir, dir_gra);
-		dl1.v0 = n++;
-		dl1.v2 = dP;
-		dl1.cz4();
-		dl1.cs(s_dir, dir);
-		f[c++] = dl1.csa(s_dir, dir_gra);
-
-		dwwp.v1 = label;
-		dwwp.v0 = n++;
-		dwwp.v2 = prntF;
-		dwwp.v3 = gcF;
-		dwwp.cz4();
-		dwwp.cs(s_dir, dir);
-		f[c++] = dwwp.csa(s_dir, dir_gra);
-
-		dwwp.v0 = n++;
-		dwwp.v2 = chldF;
-		dwwp.v3 = gcF;
-		dwwp.cz4();
-		dwwp.cs(s_dir, dir);
-		f[c++] = dwwp.csa(s_dir, dir_gra);
-
-		dwp.v1 = label;
-		dwp.v0 = n++;
-		dwp.v2 = gcF;
-		dwp.v3 = pP;
-		dwp.cz4();
-		dwp.cs(s_dir, dir);
-		f[c++] = dwp.csa(s_dir, dir_gra);
-
-		dwp.v0 = n++;
-		dwp.v2 = gcF;
-		dwp.v3 = dP;
-		dwp.cz4();
-		dwp.cs(s_dir, dir);
-		f[c++] = dwp.csa(s_dir, dir_gra);
-
-		dwp.v0 = n++;
-		dwp.v2 = prntF;
-		dwp.v3 = gP;
-		dwp.cz4();
-		dwp.cs(s_dir, dir);
-		f[c++] = dwp.csa(s_dir, dir_gra);
-
-		dwp.v0 = n++;
-		dwp.v2 = chldF;
-		dwp.v3 = gP;
-		dwp.cz4();
-		dwp.cs(s_dir, dir);
-		f[c++] = dwp.csa(s_dir, dir_gra);
-
-		// lemma
-
-		dwwp.v0 = n++;
-		dwwp.v2 = prntL;
-		dwwp.v3 = gcL;
-		dwwp.cz4();
-		dwwp.cs(s_dir, dir);
-		f[c++] = dwwp.csa(s_dir, dir_gra);
-
-		dwwp.v0 = n++;
-		dwwp.v2 = chldL;
-		dwwp.v3 = gcL;
-		dwwp.cz4();
-		dwwp.cs(s_dir, dir);
-		f[c++] = dwwp.csa(s_dir, dir_gra);
-
-		dwp.v0 = n++;
-		dwp.v2 = gcL;
-		dwp.v3 = pP;
-		dwp.cz4();
-		dwp.cs(s_dir, dir);
-		f[c++] = dwp.csa(s_dir, dir_gra);
-
-		dwp.v0 = n++;
-		dwp.v2 = gcL;
-		dwp.v3 = dP;
-		dwp.cz4();
-		dwp.cs(s_dir, dir);
-		f[c++] = dwp.csa(s_dir, dir_gra);
-
-		dwp.v0 = n++;
-		dwp.v2 = prntL;
-		dwp.v3 = gP;
-		dwp.cz4();
-		dwp.cs(s_dir, dir);
-		f[c++] = dwp.csa(s_dir, dir_gra);
-
-		dwp.v0 = n++;
-		dwp.v2 = chldL;
-		dwp.v3 = gP;
-		dwp.cz4();
-		dwp.cs(s_dir, dir);
-		f[c++] = dwp.csa(s_dir, dir_gra);
-
-		// clusters
-
-		d2lp.v1 = label;
-		d2lp.v0 = n++;
-		d2lp.v2 = prntLS;
-		d2lp.v3 = gcLS;
-		d2lp.cz4();
-		d2lp.cs(s_dir, dir);
-		f[c++] = d2lp.csa(s_dir, dir_gra);// f.add(li.l2i(l));
-		d2lp.v0 = n++;
-		d2lp.v2 = chldLS;
-		d2lp.v3 = gcLS;
-		d2lp.cz4();
-		d2lp.cs(s_dir, dir);
-		f[c++] = d2lp.csa(s_dir, dir_gra);
-		d3lp.v0 = n++;
-		d3lp.v1 = label;
-		d3lp.v2 = prntLS;
-		d3lp.v3 = chldLS;
-		d3lp.v4 = gcLS;
-		d3lp.cz5();
-		d3lp.cs(s_dir, dir);
-		f[c++] = d3lp.csa(s_dir, dir_gra);
-
-		// _f83;
-		d2lp.v0 = n++;
-		d2lp.v2 = prntLS;
-		d2lp.v3 = chldLS;
-		d2lp.v4 = gcF;
-		d2lp.cz5();
-		f[c++] = d2lp.csa(s_dir, dir);
-		d2lp.v0 = n++;
-		d2lp.v2 = prntLS;
-		d2lp.v3 = gcLS;
-		d2lp.v4 = chldF;
-		d2lp.cz5();
-		f[c++] = d2lp.csa(s_dir, dir);
-		d2lp.v0 = n++;
-		d2lp.v2 = chldLS;
-		d2lp.v3 = gcLS;
-		d2lp.v4 = prntF;
-		d2lp.cz5();
-		f[c++] = d2lp.csa(s_dir, dir);
-
-		d2pp.v1 = label;
-		d2pp.v0 = n++;
-		d2pp.v2 = prntLS;
-		d2pp.v3 = chldLS;
-		d2pp.v4 = gP;
-		d2pp.cz5();
-		f[c++] = d2pp.csa(s_dir, dir);
-		d2pp.v0 = n++;
-		d2pp.v2 = prntLS;
-		d2pp.v3 = gcLS;
-		d2pp.v4 = dP;
-		d2pp.cz5();
-		f[c++] = d2pp.csa(s_dir, dir);
-		d2pp.v0 = n++;
-		d2pp.v2 = chldLS;
-		d2pp.v3 = gcLS;
-		d2pp.v4 = pP;
-		d2pp.cz5();
-		f[c++] = d2pp.csa(s_dir, dir);
-
-		// linear features
-
-		int prntPm1 = p != 0 ? pos[p - 1] : s_str; // parent-pos-minus1
-		int chldPm1 = d - 1 >= 0 ? pos[d - 1] : s_str; // child-pos-minus1
-		int prntPp1 = p != pos.length - 1 ? pos[p + 1] : s_end;
-		int chldPp1 = d != pos.length - 1 ? pos[d + 1] : s_end;
-
-		int gcPm1 = gc > 0 ? pos[gc - 1] : s_str;
-		int gcPp1 = gc < pos.length - 1 ? pos[gc + 1] : s_end;
-
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcPp1;
-		dl1.v4 = dP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcPm1;
-		dl1.v4 = dP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = dP;
-		dl1.v4 = chldPp1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = dP;
-		dl1.v4 = chldPm1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcPp1;
-		dl1.v4 = chldPm1;
-		dl1.v5 = dP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gcPm1;
-		dl1.v3 = gP;
-		dl1.v4 = chldPm1;
-		dl1.v5 = dP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcPp1;
-		dl1.v4 = dP;
-		dl1.v5 = chldPp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gcPm1;
-		dl1.v3 = gP;
-		dl1.v4 = dP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcPp1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcPm1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = pP;
-		dl1.v4 = prntPp1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = pP;
-		dl1.v4 = prntPm1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcPp1;
-		dl1.v4 = prntPm1;
-		dl1.v5 = pP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gcPm1;
-		dl1.v3 = gP;
-		dl1.v4 = prntPm1;
-		dl1.v5 = pP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcPp1;
-		dl1.v4 = pP;
-		dl1.v5 = prntPp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gcPm1;
-		dl1.v3 = gP;
-		dl1.v4 = pP;
-		dl1.v5 = prntPp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-
-		int pLSp1 = p != pos.length - 1 ? forms[p + 1] == -1 ? -1 : cluster.getLP(forms[p + 1]) : _cend;
-		int cLSp1 = d != pos.length - 1 ? forms[d + 1] == -1 ? -1 : cluster.getLP(forms[d + 1]) : _cend;
-		int gcLSp1 = gc < pos.length - 1 ? forms[gc + 1] == -1 ? -1 : cluster.getLP(forms[gc + 1]) : s_end;
-
-		int pLSm1 = p != 0 ? lemmas[p - 1] == -1 ? -1 : cluster.getLP(lemmas[p - 1]) : _cstr;
-		int cLSm1 = d - 1 >= 0 ? lemmas[d - 1] == -1 ? -1 : cluster.getLP(lemmas[d - 1]) : _cstr;
-		int gcLSm1 = gc > 0 ? lemmas[gc - 1] == -1 ? -1 : cluster.getLP(lemmas[gc - 1]) : _cstr;
-
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcLSp1;
-		dl1.v4 = dP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcLSm1;
-		dl1.v4 = dP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = dP;
-		dl1.v4 = cLSp1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = dP;
-		dl1.v4 = cLSm1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcLSp1;
-		dl1.v4 = cLSm1;
-		dl1.v5 = dP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gcLSm1;
-		dl1.v3 = gP;
-		dl1.v4 = cLSm1;
-		dl1.v5 = dP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcLSp1;
-		dl1.v4 = dP;
-		dl1.v5 = cLSp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = cLSm1;
-		dl1.v3 = gP;
-		dl1.v4 = dP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcLSp1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcLSm1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = pP;
-		dl1.v4 = pLSp1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = pP;
-		dl1.v4 = pLSm1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcLSp1;
-		dl1.v4 = pLSm1;
-		dl1.v5 = pP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gcLSm1;
-		dl1.v3 = gP;
-		dl1.v4 = pLSm1;
-		dl1.v5 = pP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcLSp1;
-		dl1.v4 = pP;
-		dl1.v5 = pLSp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gcLSm1;
-		dl1.v3 = gP;
-		dl1.v4 = pP;
-		dl1.v5 = pLSp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-
-		if (gc >= 0) {
-		}
-
-		// take those in for stacking
-		/*
-		 * dl2.v1=label; dl2.v0=
-		 * n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=gP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.
-		 * csa(s_dir,dir); dl2.v0=
-		 * n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=gP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.
-		 * csa(s_dir,dir); dl2.v0=
-		 * n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=gP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f
-		 * [c++]=dl2.csa(s_dir,dir);
-		 * 
-		 * dl2.v0=
-		 * n++;dl2.v2=gr;dl2.v3=g;dl2.v4=gP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.csa(
-		 * s_dir,dir); dl2.v0=
-		 * n++;dl2.v2=gr;dl2.v3=g;dl2.v4=gP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.csa(
-		 * s_dir,dir); dl2.v0=
-		 * n++;dl2.v2=gr;dl2.v3=g;dl2.v4=gP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f[c++]
-		 * =dl2.csa(s_dir,dir);
-		 * 
-		 */
-		if (feats == null)
-			return;
-
-		short[] featsP = feats[d];
-		short[] featsD = gc != -1 ? feats[gc] : null;
-
-		dlf.v0 = n++;
-		dlf.v1 = label;
-		dlf.v2 = gP;
-		dlf.v3 = dP;
-		extractFeat(f, c, dir, featsP, featsD);
-		return;
-	}
-
-	@Override
-	public void siblingm(Instances is, int i, short pos[], int forms[], int[] lemmas, short[][] feats, int prnt, int d,
-			int sblng, int label, Cluster cluster, long[] f, int v) {
-
-		for (int k = 0; k < f.length; k++)
-			f[k] = 0;
-
-		int pP = pos[prnt], dP = pos[d];
-		int prntF = forms[prnt], chldF = forms[d];
-		int prntL = lemmas[prnt], chldL = lemmas[d];
-		int prntLS = prntF == -1 ? -1 : cluster.getLP(prntF), chldLS = chldF == -1 ? -1 : cluster.getLP(chldF);
-
-		int sP = sblng != -1 ? pos[sblng] : s_str, sblF = sblng != -1 ? forms[sblng] : s_stwrd,
-				sblL = sblng != -1 ? lemmas[sblng] : s_stwrd;
-
-		int sblLS = (sblng != -1) && (sblF != -1) ? cluster.getLP(sblF) : s_stwrd;
-
-		int dir = (prnt < d) ? ra : la;
-
-		int abs = Math.abs(prnt - d);
-
-		final int dist;
-		if (abs > 10)
-			dist = d10;
-		else if (abs > 5)
-			dist = d5;
-		else if (abs == 5)
-			dist = d4;
-		else if (abs == 4)
-			dist = d3;
-		else if (abs == 3)
-			dist = d2;
-		else if (abs == 2)
-			dist = d1;
-		else
-			dist = di0;
-
-		int n = 147;
-
-		if (prntF > maxForm)
-			prntF = -1;
-		if (prntL > maxForm)
-			prntL = -1;
-
-		if (chldF > maxForm)
-			chldF = -1;
-		if (chldL > maxForm)
-			chldL = -1;
-
-		if (sblF > maxForm)
-			sblF = -1;
-		if (sblL > maxForm)
-			sblL = -1;
-
-		dl1.v0 = n++;
-		dl1.v1 = label;
-		dl1.v2 = pP;
-		dl1.v3 = dP;
-		dl1.v4 = sP;
-		dl1.cz5();
-		f[0] = dl1.csa(s_dir, dir);
-		f[1] = dl1.csa(s_dist, dist);
-		dl1.v0 = n++;
-		dl1.v3 = sP;
-		dl1.cz4();
-		f[2] = dl1.csa(s_dir, dir);
-		f[3] = dl1.csa(s_dist, dist);
-		dl1.v0 = n++;
-		dl1.v2 = dP;
-		dl1.cz4();
-		f[4] = dl1.csa(s_dir, dir);
-		f[5] = dl1.csa(s_dist, dist);
-
-		// sibling only could be tried
-		dwwp.v1 = label;
-		dwwp.v0 = n++;
-		dwwp.v2 = prntF;
-		dwwp.v3 = sblF;
-		dwwp.cz4();
-		f[6] = dwwp.csa(s_dir, dir);
-		f[7] = dwwp.csa(s_dist, dist);
-		dwwp.v0 = n++;
-		dwwp.v2 = chldF;
-		dwwp.cz4();
-		f[8] = dwwp.csa(s_dir, dir);
-		f[9] = dwwp.csa(s_dist, dist);
-		dwp.v0 = n++;
-		dwp.v1 = label;
-		dwp.v2 = sblF;
-		dwp.v3 = pP;
-		dwp.cz4();
-		f[10] = dwp.csa(s_dir, dir);
-		f[11] = dwp.csa(s_dist, dist);
-		dwp.v0 = n++;
-		/* dwp.v1=label; */dwp.v3 = dP;
-		dwp.cz4();
-		f[12] = dwp.csa(s_dir, dir);
-		f[13] = dwp.csa(s_dist, dist);
-		dwp.v0 = n++;
-		/* dwp.v1=label; */ dwp.v2 = prntF;
-		dwp.v3 = sP;
-		dwp.cz4();
-		f[14] = dwp.csa(s_dir, dir);
-		f[15] = dwp.csa(s_dist, dist);
-		dwp.v0 = n++;
-		/* dwp.v1=label; */ dwp.v2 = chldF;
-		dwp.cz4();
-		f[16] = dwp.csa(s_dir, dir);
-		f[17] = dwp.csa(s_dist, dist);
-
-		// lemmas
-		dwwp.v0 = n++;
-		dwwp.v2 = prntL;
-		dwwp.v3 = sblL;
-		dwwp.cz4();
-		f[18] = dwwp.csa(s_dir, dir);
-		dwwp.v0 = n++;
-		dwwp.v2 = chldL;
-		dwwp.cz4();
-		f[19] = dwwp.csa(s_dir, dir);
-		f[20] = dwwp.csa(s_dist, dist);
-		dwp.v0 = n++;
-		/* dwp.v1=label; */ dwp.v2 = sblL;
-		dwp.v3 = pP;
-		dwp.cz4();
-		f[21] = dwp.csa(s_dir, dir);
-		f[22] = dwp.csa(s_dist, dist);
-		dwp.v0 = n++;
-		/* dwp.v1=label; */ dwp.v3 = dP;
-		dwp.cz4();
-		f[23] = dwp.csa(s_dir, dir);
-		f[24] = dwp.csa(s_dist, dist);
-		dwp.v0 = n++;
-		/* dwp.v1=label; */ dwp.v2 = prntL;
-		dwp.v3 = sP;
-		dwp.cz4();
-		f[25] = dwp.csa(s_dir, dir);
-		f[26] = dwp.csa(s_dist, dist);
-		dwp.v0 = n++;
-		/* dwp.v1=label; */ dwp.v2 = chldL;
-		dwp.cz4();
-		f[27] = dwp.csa(s_dir, dir);
-		f[28] = dwp.csa(s_dist, dist);
-
-		// clusters
-
-		d2lp.v1 = label;
-		d2lp.v0 = n++;
-		d2lp.v2 = prntLS;
-		d2lp.v3 = sblLS;
-		d2lp.cz4();
-		f[29] = d2lp.csa(s_dir, dir);
-		d2lp.v0 = n++;
-		d2lp.v2 = chldLS;
-		d2lp.v3 = sblLS;
-		d2lp.cz4();
-		f[30] = d2lp.csa(s_dir, dir);
-		f[31] = d2lp.csa(s_dist, dist);
-
-		d3lp.v1 = label;
-		d3lp.v0 = n++;
-		d3lp.v2 = prntLS;
-		d3lp.v3 = chldLS;
-		d3lp.v4 = sblLS;
-		d3lp.cz5();
-		f[32] = d3lp.csa(s_dir, dir);
-
-		d2lp.v0 = n++;
-		d2lp.v2 = prntLS;
-		d2lp.v3 = chldLS;
-		d2lp.v4 = sblF;
-		d2lp.cz5();
-		f[33] = d2lp.csa(s_dir, dir);
-		f[34] = d2lp.csa(s_dist, dist);
-		d2lp.v0 = n++;
-		d2lp.v2 = prntLS;
-		d2lp.v3 = sblLS;
-		d2lp.v4 = chldF;
-		d2lp.cz5();
-		f[35] = d2lp.csa(s_dir, dir);
-		f[36] = d2lp.csa(s_dist, dist);
-		d2lp.v0 = n++;
-		d2lp.v2 = chldLS;
-		d2lp.v3 = sblLS;
-		d2lp.v4 = prntF;
-		d2lp.cz5();
-		f[37] = d2lp.csa(s_dir, dir);
-		f[38] = d2lp.csa(s_dist, dist);
-
-		d2pp.v1 = label;
-		d2pp.v0 = n++;
-		d2pp.v2 = prntLS;
-		d2pp.v3 = chldLS;
-		d2pp.v4 = sP;
-		d2pp.cz5();
-		f[39] = d2pp.csa(s_dir, dir);
-		f[40] = d2pp.csa(s_dist, dist);
-		d2pp.v0 = n++;
-		d2pp.v2 = prntLS;
-		d2pp.v3 = sblLS;
-		d2pp.v4 = dP;
-		d2pp.cz5();
-		f[41] = d2pp.csa(s_dir, dir);
-		f[42] = d2pp.csa(s_dist, dist);
-		d2pp.v0 = n++;
-		d2pp.v2 = chldLS;
-		d2pp.v3 = sblLS;
-		d2pp.v4 = pP;
-		d2pp.cz5();
-		f[43] = d2pp.csa(s_dir, dir);
-		f[44] = d2pp.csa(s_dist, dist);
-
-		int prntPm1 = prnt != 0 ? pos[prnt - 1] : s_str;
-		int chldPm1 = d - 1 >= 0 ? pos[d - 1] : s_str;
-		int prntPp1 = prnt != pos.length - 1 ? pos[prnt + 1] : s_end;
-		int chldPp1 = d != pos.length - 1 ? pos[d + 1] : s_end;
-
-		// sibling part of speech minus and plus 1
-		int sblPm1 = sblng > 0 ? pos[sblng - 1] : s_str;
-		int sblPp1 = sblng < pos.length - 1 ? pos[sblng + 1] : s_end;
-
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sblPp1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[45] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sblPm1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[46] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = pP;
-		dl1.v4 = prntPp1;
-		dl1.cz5();
-		f[47] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = pP;
-		dl1.v4 = prntPm1;
-		dl1.cz5();
-		f[48] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sblPp1;
-		dl1.v4 = prntPm1;
-		dl1.v5 = pP;
-		dl1.cz6();
-		f[49] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sblPm1;
-		dl1.v3 = sP;
-		dl1.v4 = prntPm1;
-		dl1.v5 = pP;
-		dl1.cz6();
-		f[50] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sblPp1;
-		dl1.v4 = pP;
-		dl1.v5 = prntPp1;
-		dl1.cz6();
-		f[51] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
-		dl1.v0 = n++;
-		dl1.v2 = sblPm1;
-		dl1.v3 = sP;
-		dl1.v4 = pP;
-		dl1.v5 = prntPp1;
-		dl1.cz6();
-		f[52] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sblPp1;
-		dl1.v4 = dP;
-		dl1.cz5();
-		f[53] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sblPm1;
-		dl1.v4 = dP;
-		dl1.cz5();
-		f[54] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = dP;
-		dl1.v4 = chldPp1;
-		dl1.cz5();
-		f[55] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = dP;
-		dl1.v4 = chldPm1;
-		dl1.cz5();
-		f[56] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sblPp1;
-		dl1.v4 = chldPm1;
-		dl1.v5 = dP;
-		dl1.cz6();
-		f[57] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
-		dl1.v0 = n++;
-		dl1.v2 = sblPm1;
-		dl1.v3 = sP;
-		dl1.v4 = chldPm1;
-		dl1.v5 = dP;
-		dl1.cz6();
-		f[58] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sblPp1;
-		dl1.v4 = dP;
-		dl1.v5 = chldPp1;
-		dl1.cz6();
-		f[59] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
-		dl1.v0 = n++;
-		dl1.v2 = sblPm1;
-		dl1.v3 = sP;
-		dl1.v4 = dP;
-		dl1.v5 = chldPp1;
-		dl1.cz6();
-		f[60] = dl1.csa(s_dir, dir);
-
-		int c = 61;
-
-		int pLSp1 = prnt != pos.length - 1 ? forms[prnt + 1] == -1 ? -1 : cluster.getLP(forms[prnt + 1]) : _cend;
-		int cLSp1 = d != pos.length - 1 ? forms[d + 1] == -1 ? -1 : cluster.getLP(forms[d + 1]) : _cend;
-		int sLSp1 = sblng < pos.length - 1 ? forms[sblng + 1] == -1 ? -1 : cluster.getLP(forms[sblng + 1]) : _cend;
-
-		int pLSm1 = prnt != 0 ? forms[prnt - 1] == -1 ? -1 : cluster.getLP(forms[prnt - 1]) : _cstr;
-		int cLSm1 = d - 1 >= 0 ? forms[d - 1] == -1 ? -1 : cluster.getLP(forms[d - 1]) : _cstr;
-		int sLSm1 = sblng > 0 ? forms[sblng - 1] == -1 ? -1 : cluster.getLP(forms[sblng - 1]) : _cstr;
-
-		// int c=61;
-
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSm1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = pP;
-		dl1.v4 = pLSp1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = pP;
-		dl1.v4 = pLSm1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = pLSm1;
-		dl1.v5 = pP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sLSm1;
-		dl1.v3 = sP;
-		dl1.v4 = pLSm1;
-		dl1.v5 = pP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = pP;
-		dl1.v5 = pLSp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sLSm1;
-		dl1.v3 = sP;
-		dl1.v4 = pP;
-		dl1.v5 = pLSp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = dP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSm1;
-		dl1.v4 = dP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = dP;
-		dl1.v4 = cLSp1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = dP;
-		dl1.v4 = cLSm1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSm1;
-		dl1.v4 = cLSm1;
-		dl1.v5 = dP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sLSm1;
-		dl1.v3 = sP;
-		dl1.v4 = cLSm1;
-		dl1.v5 = dP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = dP;
-		dl1.v5 = cLSp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sLSm1;
-		dl1.v3 = sP;
-		dl1.v4 = dP;
-		dl1.v5 = cLSp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSm1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = pP;
-		dl1.v4 = pLSp1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = pP;
-		dl1.v4 = pLSm1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = pLSm1;
-		dl1.v5 = pP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sLSm1;
-		dl1.v3 = sP;
-		dl1.v4 = pLSm1;
-		dl1.v5 = pP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = pP;
-		dl1.v5 = pLSp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sLSm1;
-		dl1.v3 = sP;
-		dl1.v4 = pP;
-		dl1.v5 = pLSp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = dP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSm1;
-		dl1.v4 = dP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = dP;
-		dl1.v4 = cLSp1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = dP;
-		dl1.v4 = cLSm1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSm1;
-		dl1.v4 = cLSm1;
-		dl1.v5 = dP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sLSm1;
-		dl1.v3 = sP;
-		dl1.v4 = cLSm1;
-		dl1.v5 = dP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = dP;
-		dl1.v5 = cLSp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sLSm1;
-		dl1.v3 = sP;
-		dl1.v4 = dP;
-		dl1.v5 = cLSp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-
-		// take those in for stacking
-
-		/*
-		 * short[] prel = is.plabels[i],phead=is.pheads[i];
-		 * 
-		 * int g = prnt==phead[d]?1:2 ; if (sblng>=0) g +=
-		 * prnt==phead[sblng]?4:8;
-		 * 
-		 * int gr = sblng==-1?s_relend:prel[sblng];
-		 * 
-		 * 
-		 * dl2.v0=
-		 * n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=sP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.
-		 * csa(s_dir,dir); dl2.v0=
-		 * n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.
-		 * csa(s_dir,dir); dl2.v0=
-		 * n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f
-		 * [c++]=dl2.csa(s_dir,dir);
-		 * 
-		 * dl2.v0=
-		 * n++;dl2.v2=gr;dl2.v3=g;dl2.v4=sP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.csa(
-		 * s_dir,dir); dl2.v0=
-		 * n++;dl2.v2=gr;dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.csa(
-		 * s_dir,dir); dl2.v0=
-		 * n++;dl2.v2=gr;dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f[c++]
-		 * =dl2.csa(s_dir,dir);
-		 */
-
-		if (feats == null)
-			return;
-
-		int cnt = c;
-
-		short[] featsP = feats[d];
-		short[] featsSbl = sblng != -1 ? feats[sblng] : null;
-
-		dlf.v0 = n++;
-		dlf.v1 = label;
-		dlf.v2 = sP;
-		dlf.v3 = dP;
-
-		cnt = extractFeat(f, cnt, dir, featsP, featsSbl);
-
-		featsP = feats[prnt];
-		featsSbl = sblng != -1 ? feats[sblng] : null;
-
-		dlf.v0 = n++;
-		dlf.v1 = label;
-		dlf.v2 = pP;
-		dlf.v3 = sP;
-		if (featsP != null && featsSbl != null) {
-			for (short i1 = 0; i1 < featsP.length; i1++) {
-				for (short i2 = 0; i2 < featsSbl.length; i2++) {
-					dlf.v4 = featsP[i1];
-					dlf.v5 = featsSbl[i2];
-					dlf.cz6();
-					f[cnt++] = dlf.csa(s_dir, prnt < sblng ? 1 : 2);
-				}
-			}
-		} else if (featsP == null && featsSbl != null) {
-
-			for (short i2 = 0; i2 < featsSbl.length; i2++) {
-				dlf.v4 = nofeat;
-				dlf.v5 = featsSbl[i2];
-				dlf.cz6();
-				f[cnt++] = dlf.csa(s_dir, dir);
-			}
-
-		} else if (featsP != null && featsSbl == null) {
-
-			for (short i1 = 0; i1 < featsP.length; i1++) {
-				dlf.v4 = featsP[i1];
-				dlf.v5 = nofeat;
-				dlf.cz6();
-				f[cnt++] = dlf.csa(s_dir, dir);
-			}
-		}
-
-		return;
-	}
-
-	private int extractFeat(long[] f, int cnt, int dir, short[] featsP, short[] featsD) {
-		if (featsP != null && featsD != null) {
-			for (short i1 = 0; i1 < featsP.length; i1++) {
-				for (short i2 = 0; i2 < featsD.length; i2++) {
-					dlf.v4 = featsP[i1];
-					dlf.v5 = featsD[i2];
-					dlf.cz6();
-					f[cnt++] = dlf.csa(s_dir, dir);
-				}
-			}
-		} else if (featsP == null && featsD != null) {
-
-			for (short i2 = 0; i2 < featsD.length; i2++) {
-				dlf.v4 = nofeat;
-				dlf.v5 = featsD[i2];
-				dlf.cz6();
-				f[cnt++] = dlf.csa(s_dir, dir);
-
-			}
-		} else if (featsP != null && featsD == null) {
-
-			for (short i1 = 0; i1 < featsP.length; i1++) {
-				dlf.v4 = featsP[i1];
-				dlf.v5 = nofeat;
-				dlf.cz6();
-				f[cnt++] = dlf.csa(s_dir, dir);
-
-			}
-		}
-		return cnt;
-	}
-
-	public IFV encodeCat2(Instances is, int ic, short pposs[], int forms[], int[] lemmas, short[] heads, short[] types,
-			short feats[][], Cluster cluster, IFV f, Long2IntInterface li) {
-
-		long[] svs = new long[250];
-
-		for (int i = 1; i < heads.length; i++) {
-
-			int n = basic(pposs, forms, heads[i], i, cluster, f);
-			firstm(is, ic, heads[i], i, types[i], cluster, svs);
-			for (long sv : svs)
-				f.add(li.l2i(sv));
-
-			int ch, cmi, cmo;
-			if (heads[i] < i) {
-				ch = rightmostRight(heads, heads[i], i);
-				cmi = leftmostLeft(heads, i, heads[i]);
-				cmo = rightmostRight(heads, i, heads.length);
-
-			} else {
-				ch = leftmostLeft(heads, heads[i], i);
-				cmi = rightmostRight(heads, i, heads[i]);
-				cmo = leftmostLeft(heads, i, 0);
-			}
-
-			siblingm(is, ic, pposs, forms, lemmas, feats, heads[i], i, ch, types[i], cluster, svs, n);
-			for (long sv : svs)
-				f.add(li.l2i(sv));
-
-			gcm(is, ic, heads[i], i, cmi, types[i], cluster, svs);
-			for (long sv : svs)
-				f.add(li.l2i(sv));
-
-			gcm(is, ic, heads[i], i, cmo, types[i], cluster, svs);
-			for (long sv : svs)
-				f.add(li.l2i(sv));
-		}
-
-		return f;
-	}
-
-	@Override
-	public FV encodeCat(Instances is, int ic, short pposs[], int forms[], int[] lemmas, short[] heads, short[] types,
-			short feats[][], Cluster cluster, FV f) {
-
-		long[] svs = new long[250];
-
-		for (int i = 1; i < heads.length; i++) {
-
-			int n = basic(pposs, forms, heads[i], i, cluster, f);
-			firstm(is, ic, heads[i], i, types[i], cluster, svs);
-			for (long sv : svs)
-				dl1.map(f, sv);
-
-			int ch, cmi, cmo;
-			if (heads[i] < i) {
-				ch = rightmostRight(heads, heads[i], i);
-				cmi = leftmostLeft(heads, i, heads[i]);
-				cmo = rightmostRight(heads, i, heads.length);
-
-			} else {
-				ch = leftmostLeft(heads, heads[i], i);
-				cmi = rightmostRight(heads, i, heads[i]);
-				cmo = leftmostLeft(heads, i, 0);
-			}
-
-			siblingm(is, ic, pposs, forms, lemmas, feats, heads[i], i, ch, types[i], cluster, svs, n);
-			for (long sv : svs)
-				dl1.map(f, sv);
-
-			gcm(is, ic, heads[i], i, cmi, types[i], cluster, svs);
-			for (long sv : svs)
-				dl1.map(f, sv);
-
-			gcm(is, ic, heads[i], i, cmo, types[i], cluster, svs);
-			for (long sv : svs)
-				dl1.map(f, sv);
-		}
-
-		return f;
-	}
-
-	@Override
-	public float encode3(short[] pos, short heads[], short[] types, DataF d2) {
-
-		double v = 0;
-		for (int i = 1; i < heads.length; i++) {
-
-			int dir = (heads[i] < i) ? 0 : 1;
-
-			v += d2.pl[heads[i]][i];
-			v += d2.lab[heads[i]][i][types[i]][dir];
-
-			boolean left = i < heads[i];
-			short[] labels = Edges.get(pos[heads[i]], pos[i], left);
-			int lid = -1;
-			for (int k = 0; k < labels.length; k++)
-				if (types[i] == labels[k]) {
-					lid = k;
-					break;
-				}
-
-			int ch, cmi, cmo;
-			if (heads[i] < i) {
-				ch = rightmostRight(heads, heads[i], i);
-				cmi = leftmostLeft(heads, i, heads[i]);
-				cmo = rightmostRight(heads, i, heads.length);
-
-				if (ch == -1)
-					ch = heads[i];
-				if (cmi == -1)
-					cmi = heads[i];
-				if (cmo == -1)
-					cmo = heads[i];
-
-			} else {
-				ch = leftmostLeft(heads, heads[i], i);
-				cmi = rightmostRight(heads, i, heads[i]);
-				cmo = leftmostLeft(heads, i, 0);
-
-				if (ch == -1)
-					ch = i;
-				if (cmi == -1)
-					cmi = i;
-				if (cmo == -1)
-					cmo = i;
-			}
-			v += d2.sib[heads[i]][i][ch][dir][lid];
-			v += d2.gra[heads[i]][i][cmi][dir][lid];
-			v += d2.gra[heads[i]][i][cmo][dir][lid];
-		}
-		return (float) v;
-	}
-
-	/**
-	 * Provide the scores of the edges
-	 * 
-	 * @param pos
-	 * @param heads
-	 * @param types
-	 * @param edgesScores
-	 * @param d2
-	 * @return
-	 */
-	public static float encode3(short[] pos, short heads[], short[] types, float[] edgesScores, DataF d2) {
-
-		double v = 0;
-		for (int i = 1; i < heads.length; i++) {
-
-			int dir = (heads[i] < i) ? 0 : 1;
-
-			edgesScores[i] = d2.pl[heads[i]][i];
-			edgesScores[i] += d2.lab[heads[i]][i][types[i]][dir];
-
-			boolean left = i < heads[i];
-			short[] labels = Edges.get(pos[heads[i]], pos[i], left);
-			int lid = -1;
-			for (int k = 0; k < labels.length; k++)
-				if (types[i] == labels[k]) {
-					lid = k;
-					break;
-				}
-
-			int ch, cmi, cmo;
-			if (heads[i] < i) {
-				ch = rightmostRight(heads, heads[i], i);
-				cmi = leftmostLeft(heads, i, heads[i]);
-				cmo = rightmostRight(heads, i, heads.length);
-
-				if (ch == -1)
-					ch = heads[i];
-				if (cmi == -1)
-					cmi = heads[i];
-				if (cmo == -1)
-					cmo = heads[i];
-
-			} else {
-				ch = leftmostLeft(heads, heads[i], i);
-				cmi = rightmostRight(heads, i, heads[i]);
-				cmo = leftmostLeft(heads, i, 0);
-
-				if (ch == -1)
-					ch = i;
-				if (cmi == -1)
-					cmi = i;
-				if (cmo == -1)
-					cmo = i;
-			}
-			edgesScores[i] += d2.sib[heads[i]][i][ch][dir][lid];
-			edgesScores[i] += d2.gra[heads[i]][i][cmi][dir][lid];
-			edgesScores[i] += d2.gra[heads[i]][i][cmo][dir][lid];
-			v += edgesScores[i];
-		}
-		return (float) v;
-	}
-
-	private static int rightmostRight(short[] heads, int head, int max) {
-		int rightmost = -1;
-		for (int i = head + 1; i < max; i++)
-			if (heads[i] == head)
-				rightmost = i;
-
-		return rightmost;
-	}
-
-	private static int leftmostLeft(short[] heads, int head, int min) {
-		int leftmost = -1;
-		for (int i = head - 1; i > min; i--)
-			if (heads[i] == head)
-				leftmost = i;
-		return leftmost;
-	}
-
-	public static final String REL = "REL", END = "END", STR = "STR", LA = "LA", RA = "RA";
-
-	private static int ra, la;
-	private static int s_str;
-	private static int s_end, _cend, _cstr, s_stwrd;
-
-	protected static final String TYPE = "TYPE", DIR = "D";
-	public static final String POS = "POS";
-	protected static final String DIST = "DIST", MID = "MID", FEAT = "F";
-
-	private static final String _0 = "0", _4 = "4", _3 = "3", _2 = "2", _1 = "1", _5 = "5", _10 = "10";
-
-	private static int di0, d4, d3, d2, d1, d5, d10;
-
-	private static final String WORD = "WORD", STWRD = "STWRD", STPOS = "STPOS";
-
-	private static int nofeat;
-
-	public static int maxForm;
-
-	/**
-	 * Initialize the features.
-	 * 
-	 * @param maxFeatures
-	 */
-	static public void initFeatures() {
-
-		MFB mf = new MFB();
-		mf.register(POS, MID);
-		s_str = mf.register(POS, STR);
-		s_end = mf.register(POS, END);
-
-		mf.register(REL, END);
-
-		_cstr = mf.register(Cluster.SPATH, STR);
-		_cend = mf.register(Cluster.SPATH, END);
-
-		mf.register(TYPE, POS);
-
-		s_stwrd = mf.register(WORD, STWRD);
-		mf.register(POS, STPOS);
-
-		la = mf.register(DIR, LA);
-		ra = mf.register(DIR, RA);
-
-		// mf.register(TYPE, CHAR);
-
-		mf.register(TYPE, FEAT);
-		nofeat = mf.register(FEAT, "NOFEAT");
-
-		for (int k = 0; k < 215; k++)
-			mf.register(TYPE, "F" + k);
-
-		di0 = mf.register(DIST, _0);
-		d1 = mf.register(DIST, _1);
-		d2 = mf.register(DIST, _2);
-		d3 = mf.register(DIST, _3);
-		d4 = mf.register(DIST, _4);
-		d5 = mf.register(DIST, _5);
-		// d5l=mf.register(DIST, _5l);
-		d10 = mf.register(DIST, _10);
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see extractors.Extractor#getType()
-	 */
-	@Override
-	public int getType() {
-
-		return s_type;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see extractors.Extractor#setMaxForm(int)
-	 */
-	@Override
-	public void setMaxForm(int max) {
-		maxForm = max;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see extractors.Extractor#getMaxForm()
-	 */
-	@Override
-	public int getMaxForm() {
-		return maxForm;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/extractors/ExtractorClusterStackedR2.java b/dependencyParser/mate-tools/src/extractors/ExtractorClusterStackedR2.java
deleted file mode 100644
index d1776b6..0000000
--- a/dependencyParser/mate-tools/src/extractors/ExtractorClusterStackedR2.java
+++ /dev/null
@@ -1,1929 +0,0 @@
-package extractors;
-
-import java.util.Arrays;
-
-import is2.data.Cluster;
-import is2.data.D4;
-import is2.data.DataF;
-import is2.data.Edges;
-import is2.data.FV;
-import is2.data.IFV;
-import is2.data.Instances;
-import is2.data.Long2IntInterface;
-import is2.data.MFB;
-
-final public class ExtractorClusterStackedR2 implements Extractor {
-
-	public static int s_rel, s_word, s_type, s_dir, s_dist, s_feat, s_child, s_spath, s_lpath, s_pos;
-
-	MFB mf;
-
-	final D4 d0, dl1, dl2, dwr, dr, dwwp, dw, dwp, dlf, d3lp, d2lp, d2pw, d2pp;
-
-	public final Long2IntInterface li;
-
-	public ExtractorClusterStackedR2(Long2IntInterface li) {
-
-		initFeatures();
-		this.li = li;
-		d0 = new D4(li);
-		dl1 = new D4(li);
-		dl2 = new D4(li);
-		dwr = new D4(li);
-		dr = new D4(li);
-		dwwp = new D4(li);
-
-		dw = new D4(li);
-		dwp = new D4(li);
-
-		dlf = new D4(li);
-		d3lp = new D4(li);
-		d2lp = new D4(li);
-		d2pw = new D4(li);
-		d2pp = new D4(li);
-
-	}
-
-	@Override
-	public void initStat() {
-
-		mf = new MFB();
-		s_rel = mf.getFeatureCounter().get(REL).intValue();
-		s_pos = mf.getFeatureCounter().get(POS).intValue();
-		s_word = mf.getFeatureCounter().get(WORD).intValue();
-		s_type = mf.getFeatureCounter().get(TYPE).intValue();// mf.getFeatureBits();
-		s_dir = mf.getFeatureCounter().get(DIR);
-		la = mf.getValue(DIR, LA);
-		ra = mf.getValue(DIR, RA);
-		s_dist = mf.getFeatureCounter().get(DIST);// mf.getFeatureBits(DIST);
-		s_feat = mf.getFeatureCounter().get(FEAT);// mf.getFeatureBits(Pipe.FEAT);
-		s_spath = mf.getFeatureCounter().get(Cluster.SPATH) == null ? 0 : mf.getFeatureCounter().get(Cluster.SPATH);// mf.getFeatureBits(Cluster.SPATH);
-		s_lpath = mf.getFeatureCounter().get(Cluster.LPATH) == null ? 0 : mf.getFeatureCounter().get(Cluster.LPATH);// mf.getFeatureBits(Cluster.LPATH);
-	}
-
-	@Override
-	public void init() {
-		// DB.println("init");
-		d0.a0 = s_type;
-		d0.a1 = s_pos;
-		d0.a2 = s_pos;
-		d0.a3 = s_pos;
-		d0.a4 = s_pos;
-		d0.a5 = s_pos;
-		d0.a6 = s_pos;
-		d0.a7 = s_pos;
-		dl1.a0 = s_type;
-		dl1.a1 = s_rel;
-		dl1.a2 = s_pos;
-		dl1.a3 = s_pos;
-		dl1.a4 = s_pos;
-		dl1.a5 = s_pos;
-		dl1.a6 = s_pos;
-		dl1.a7 = s_pos;
-		dl2.a0 = s_type;
-		dl2.a1 = s_rel;
-		dl2.a2 = s_word;
-		dl2.a3 = s_pos;
-		dl2.a4 = s_pos;
-		dl2.a5 = s_pos;
-		dl2.a6 = s_pos;
-		dl2.a7 = s_pos;
-		dwp.a0 = s_type;
-		dwp.a1 = s_rel;
-		dwp.a2 = s_word;
-		dwp.a3 = s_pos;
-		dwp.a4 = s_pos;
-		dwp.a5 = s_word;
-		dwwp.a0 = s_type;
-		dwwp.a1 = s_rel;
-		dwwp.a2 = s_word;
-		dwwp.a3 = s_word;
-		dwwp.a4 = s_pos;
-		dwwp.a5 = s_word;
-		dlf.a0 = s_type;
-		dlf.a1 = s_rel;
-		dlf.a2 = s_pos;
-		dlf.a3 = s_pos;
-		dlf.a4 = s_feat;
-		dlf.a5 = s_feat;
-		dlf.a6 = s_pos;
-		dlf.a7 = s_pos;
-		d3lp.a0 = s_type;
-		d3lp.a1 = s_rel;
-		d3lp.a2 = s_lpath;
-		d3lp.a3 = s_lpath;
-		d3lp.a4 = s_lpath;
-		d3lp.a5 = s_word;
-		d3lp.a6 = s_spath;
-		d3lp.a7 = s_spath;
-		d2lp.a0 = s_type;
-		d2lp.a1 = s_rel;
-		d2lp.a2 = s_lpath;
-		d2lp.a3 = s_lpath;
-		d2lp.a4 = s_word;
-		d2lp.a5 = s_word; // d3lp.a6 = s_spath; d3lp.a7 = s_spath;
-		d2pw.a0 = s_type;
-		d2pw.a1 = s_rel;
-		d2pw.a2 = s_lpath;
-		d2pw.a3 = s_lpath;
-		d2pw.a4 = s_word;
-		d2pw.a5 = s_word; // d3lp.a6 = s_spath; d3lp.a7 = s_spath;
-		d2pp.a0 = s_type;
-		d2pp.a1 = s_rel;
-		d2pp.a2 = s_lpath;
-		d2pp.a3 = s_lpath;
-		d2pp.a4 = s_pos;
-		d2pp.a5 = s_pos; // d3lp.a6 = s_spath; d3lp.a7 = s_spath;
-	}
-
-	@Override
-	public int basic(short[] pposs, int[] form, int p, int d, Cluster cluster, IFV f) {
-
-		d0.clean();
-		dl1.clean();
-		dl2.clean();
-		dwp.clean();
-		dwwp.clean();
-		dlf.clean();
-		d3lp.clean();
-
-		d3lp.clean();
-		d2lp.clean();
-		d2pw.clean();
-		d2pp.clean();
-
-		int n = 1;
-		int dir = (p < d) ? ra : la;
-		// d0.v0= n; d0.v1=pposs[p]; d0.v2=pposs[d]; //d0.stop=4;
-		int end = (p >= d ? p : d);
-		int start = (p >= d ? d : p) + 1;
-
-		StringBuilder s = new StringBuilder(end - start);
-		int[] x = new int[end - start];
-		int c = 0;
-		for (int i = start; i < end; i++) {
-			// d0.v3=pposs[i];
-			// d0.cz4();
-			// d0.csa(s_dir,dir,f);
-			// s.append((char)pposs[i]);
-			x[c++] = pposs[i];
-		}
-
-		Arrays.sort(x);
-		for (int i = 0; i < x.length; i++) {
-			if (i == 0 || x[i] != x[i - 1])
-				s.append(x[i]);
-		}
-		int v = mf.register("px", s.toString());
-
-		dwp.v0 = n++;
-		dwp.v1 = 1;
-		dwp.v2 = v;
-		dwp.v3 = pposs[p];
-		dwp.v4 = pposs[d];
-		dwp.cz5();
-		dwp.csa(s_dir, dir, f);
-
-		return n;
-	}
-
-	@Override
-	public void firstm(Instances is, int i, int prnt, int dpnt, int label, Cluster cluster, long[] f) {
-
-		// short[] pposs, int[] form, int[] lemmas, short[][] feats
-		for (int k = 0; k < f.length; k++)
-			f[k] = 0;
-
-		short[] pposs = is.pposs[i];
-		int[] form = is.forms[i];
-		short[][] feats = is.feats[i];
-
-		int pF = form[prnt], dF = form[dpnt];
-		int pL = is.plemmas[i][prnt], dL = is.plemmas[i][dpnt];
-		int pP = pposs[prnt], dP = pposs[dpnt];
-
-		int prntLS = pF == -1 ? -1 : cluster.getLP(pF), chldLS = dF == -1 ? -1 : cluster.getLP(dF);
-
-		final int dir = (prnt < dpnt) ? ra : la;
-
-		if (pF > maxForm)
-			pF = -1;
-		if (pL > maxForm)
-			pL = -1;
-
-		if (dF > maxForm)
-			dF = -1;
-		if (dL > maxForm)
-			dL = -1;
-
-		int n = 3, c = 0;
-
-		dl2.v1 = label;
-		dl2.v0 = n++;
-		dl2.v2 = pF;
-		dl2.v3 = dP;
-		dl2.cz4();
-		f[c++] = dl2.csa(s_dir, dir);
-		dl2.v0 = n++;
-		dl2.cz3();
-		f[c++] = dl2.csa(s_dir, dir);
-		dl2.v0 = n++;
-		dl2.v2 = dF;
-		dl2.v3 = pP;
-		dl2.cz4();
-		f[c++] = dl2.csa(s_dir, dir);
-		dl2.v0 = n++;
-		dl2.cz3();
-		f[c++] = dl2.csa(s_dir, dir);
-
-		dwwp.v1 = label;
-		dwwp.v0 = n++;
-		dwwp.v2 = pF;
-		dwwp.v3 = dF;
-		dwwp.cz4();
-		f[c++] = dwwp.csa(s_dir, dir);
-
-		dl1.v1 = label;
-		dl1.v0 = n++;
-		dl1.v2 = dP;
-		dl1.cz3();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = pP;
-		dl1.cz3();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v3 = dP;
-		dl1.cz4();
-		f[c++] = dl1.csa(s_dir, dir);
-
-		int pPm1 = prnt > 0 ? pposs[prnt - 1] : s_str, dPm1 = dpnt > 0 ? pposs[dpnt - 1] : s_str;
-		int pPp1 = prnt < pposs.length - 1 ? pposs[prnt + 1] : s_end,
-				dPp1 = dpnt < pposs.length - 1 ? pposs[dpnt + 1] : s_end;
-
-		int pPm2 = prnt > 1 ? pposs[prnt - 2] : s_str, dPm2 = dpnt > 1 ? pposs[dpnt - 2] : s_str;
-		int pPp2 = prnt < pposs.length - 2 ? pposs[prnt + 2] : s_end,
-				dPp2 = dpnt < pposs.length - 2 ? pposs[dpnt + 2] : s_end;
-
-		int pFm1 = prnt > 0 ? form[prnt - 1] : s_stwrd, dFm1 = dpnt > 0 ? form[dpnt - 1] : s_stwrd;
-		int pFp1 = prnt < form.length - 1 ? form[prnt + 1] : s_stwrd,
-				dFp1 = dpnt < form.length - 1 ? form[dpnt + 1] : s_stwrd;
-
-		dl1.v0 = n++;
-		dl1.v2 = pP;
-		dl1.v3 = pPp1;
-		dl1.v4 = dP;
-		dl1.v5 = dPp1;
-		dl1.cz6();
-		f[n++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v5 = dPm1;
-		dl1.cz6();
-		f[n++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v3 = pPm1;
-		dl1.cz6();
-		f[n++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v5 = dPp1;
-		dl1.cz6();
-		f[n++] = dl1.csa(s_dir, dir);
-
-		dl1.v0 = n++;
-		dl1.v3 = pPm1;
-		dl1.cz5();
-		f[n++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v3 = dPm1;
-		dl1.cz5();
-		f[n++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v3 = dPp1;
-		dl1.cz5();
-		f[n++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v3 = pPp1;
-		dl1.cz5();
-		f[n++] = dl1.csa(s_dir, dir);
-
-		dl1.v0 = n++;
-		dl1.v2 = pP;
-		dl1.v3 = pPp2;
-		dl1.v4 = dP;
-		dl1.v5 = dPp2;
-		dl1.cz6();
-		f[n++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v5 = dPm2;
-		dl1.cz6();
-		f[n++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v3 = pPm2;
-		dl1.cz6();
-		f[n++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v5 = dPp2;
-		dl1.cz6();
-		f[n++] = dl1.csa(s_dir, dir);
-
-		dl1.v0 = n++;
-		dl1.v3 = pPm2;
-		dl1.cz5();
-		f[n++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v3 = dPm2;
-		dl1.cz5();
-		f[n++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v3 = dPp2;
-		dl1.cz5();
-		f[n++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v3 = pPp2;
-		dl1.cz5();
-		f[n++] = dl1.csa(s_dir, dir);
-
-		dl2.v0 = n++;
-		dl2.v3 = dFm1;
-		dl2.v3 = pPp1;
-		dl2.v4 = pP;
-		dl2.cz5();
-		f[n++] = dl2.getVal();
-		dl2.v0 = n++;
-		dl2.v3 = dFp1;
-		dl2.v3 = pPm1;
-		dl2.cz5();
-		f[n++] = dl2.getVal();
-		dl2.v0 = n++;
-		dl2.v3 = pFm1;
-		dl2.v3 = dPp1;
-		dl2.v4 = dP;
-		dl2.cz5();
-		f[n++] = dl2.getVal();
-		dl2.v0 = n++;
-		dl2.v3 = pFp1;
-		dl2.v3 = dPm1;
-		dl2.cz5();
-		f[n++] = dl2.getVal();
-
-		dl2.v0 = n++;
-		dl2.v3 = dFm1;
-		dl2.v3 = dPm2;
-		dl2.v4 = pP;
-		dl2.cz5();
-		f[n++] = dl2.getVal();
-		dl2.v0 = n++;
-		dl2.v3 = dFp1;
-		dl2.v3 = dPp2;
-		dl2.cz5();
-		f[n++] = dl2.getVal();
-		dl2.v0 = n++;
-		dl2.v3 = pFm1;
-		dl2.v3 = pPm2;
-		dl2.v4 = dP;
-		dl2.cz5();
-		f[n++] = dl2.getVal();
-		dl2.v0 = n++;
-		dl2.v3 = pFp1;
-		dl2.v3 = pPp2;
-		dl2.cz5();
-		f[n++] = dl2.getVal();
-
-		dwwp.v0 = n++;
-		dwwp.v2 = pF;
-		dwwp.v3 = dF;
-		dwwp.v4 = dP;
-		dwwp.cz5();
-		f[n++] = dwwp.csa(s_dir, dir);
-		dwwp.v0 = n++;
-		dwwp.v2 = pF;
-		dwwp.v3 = dF;
-		dwwp.v4 = pP;
-		dwwp.cz5();
-		f[n++] = dwwp.csa(s_dir, dir);
-		dwwp.v0 = n++;
-		dwwp.v2 = dF;
-		dwwp.v3 = pF;
-		dwwp.v4 = pP;
-		dwwp.v4 = dP;
-		dwwp.cz6();
-		f[n++] = dwwp.csa(s_dir, dir);
-
-		// lemmas
-
-		dl2.v1 = label;
-		dl2.v0 = n++;
-		dl2.v2 = pL;
-		dl2.v3 = dP;
-		dl2.cz4();
-		f[c++] = dl2.csa(s_dir, dir);
-		dl2.v0 = n++;
-		dl2.cz3();
-		f[c++] = dl2.csa(s_dir, dir);
-		dl2.v0 = n++;
-		dl2.v2 = dL;
-		dl2.v3 = pP;
-		dl2.cz4();
-		f[c++] = dl2.csa(s_dir, dir);
-		dl2.v0 = n++;
-		dl2.cz3();
-		f[c++] = dl2.csa(s_dir, dir);
-
-		dwwp.v1 = label;
-		dwwp.v0 = n++;
-		dwwp.v2 = pL;
-		dwwp.v3 = dL;
-		dwwp.cz4();
-		f[c++] = dwwp.csa(s_dir, dir);
-
-		dwp.v1 = label;
-		dwp.v0 = n++;
-		dwp.v2 = dL;
-		dwp.v3 = pP;
-		dwp.v4 = dP;
-		dwp.v5 = pL;
-		dwp.cz6();
-		f[c++] = dwp.csa(s_dir, dir);
-		dwp.v0 = n++;
-		dwp.cz5();
-		f[c++] = dwp.csa(s_dir, dir);
-
-		dwp.v0 = n++;
-		dwp.v2 = pL;
-		dwp.cz5();
-		f[c++] = dwp.csa(s_dir, dir);
-		dwwp.v0 = n++;
-		dwwp.v2 = pL;
-		dwwp.v3 = dL;
-		dwwp.v4 = dP;
-		dwwp.cz5();
-		f[c++] = dwwp.csa(s_dir, dir);
-		dwwp.v0 = n++;
-		dwwp.v4 = pP;
-		dwwp.cz5();
-		f[c++] = dwwp.csa(s_dir, dir);
-
-		// cluster
-
-		d2pw.v1 = label;
-		d2pw.v0 = n++;
-		d2pw.v2 = prntLS;
-		d2pw.v3 = chldLS;
-		d2pw.cz4();
-		f[c++] = d2pw.csa(s_dir, dir);
-		d2pw.v0 = n++;
-		d2pw.v4 = pF;
-		d2pw.cz5();
-		f[c++] = d2pw.csa(s_dir, dir);
-		d2pw.v0 = n++;
-		d2pw.v4 = dF;
-		d2pw.cz5();
-		f[c++] = d2pw.csa(s_dir, dir);
-		d2pw.v0 = n++;
-		d2pw.v5 = pF;
-		d2pw.cz6();
-		f[c++] = d2pw.csa(s_dir, dir);
-
-		d2pp.v1 = label;
-		d2pp.v0 = n++;
-		d2pp.v2 = prntLS;
-		d2pp.v3 = chldLS;
-		d2pp.cz4();
-		f[c++] = d2pp.csa(s_dir, dir);
-		d2pp.v0 = n++;
-		d2pp.v4 = pP;
-		d2pp.cz5();
-		f[c++] = d2pp.csa(s_dir, dir);
-		d2pp.v0 = n++;
-		d2pp.v4 = dP;
-		d2pp.cz5();
-		f[c++] = d2pp.csa(s_dir, dir);
-		d2pp.v0 = n++;
-		d2pp.v5 = pP;
-		d2pp.cz6();
-		f[c++] = d2pp.csa(s_dir, dir);
-
-		// take those in for stacking
-		// dl2.v1=label;
-		// dl2.v0= n++;dl2.v2=prel[dpnt];dl2.v3=pP;dl2.v4=dP;
-		// dl2.v5=prnt==phead[dpnt]?1:2; dl2.cz6(); f[c++]=dl2.csa(s_dir,dir);
-		// dl2.v0= n++;dl2.v2=pP;dl2.v3=dP; dl2.v4=prnt==phead[dpnt]?1:2;
-		// dl2.cz5(); f[c++]=dl2.csa(s_dir,dir);
-
-		if (feats == null)
-			return;
-
-		short[] featsP = feats[prnt], featsD = feats[dpnt];
-		dlf.v0 = n++;
-		dlf.v1 = label;
-		dlf.v2 = pP;
-		dlf.v3 = dP;
-		extractFeat(f, c, dir, featsP, featsD);
-
-		return;
-	}
-
-	@Override
-	public void gcm(Instances is, int i, int p, int d, int gc, int label, Cluster cluster, long[] f) {
-
-		for (int k = 0; k < f.length; k++)
-			f[k] = 0;
-
-		short[] pos = is.pposs[i];
-		int[] forms = is.forms[i];
-		int[] lemmas = is.plemmas[i];
-		short[][] feats = is.feats[i];
-
-		int pP = pos[p], dP = pos[d];
-		int prntF = forms[p], chldF = forms[d];
-		int prntL = lemmas[p], chldL = lemmas[d];
-		int prntLS = prntF == -1 ? -1 : cluster.getLP(prntF), chldLS = chldF == -1 ? -1 : cluster.getLP(chldF);
-
-		int gP = gc != -1 ? pos[gc] : s_str;
-		int gcF = gc != -1 ? forms[gc] : s_stwrd;
-		int gcL = gc != -1 ? lemmas[gc] : s_stwrd;
-		int gcLS = (gc != -1) && (gcF != -1) ? cluster.getLP(gcF) : s_stwrd;
-
-		if (prntF > maxForm)
-			prntF = -1;
-		if (prntL > maxForm)
-			prntL = -1;
-
-		if (chldF > maxForm)
-			chldF = -1;
-		if (chldL > maxForm)
-			chldL = -1;
-
-		if (gcF > maxForm)
-			gcF = -1;
-		if (gcL > maxForm)
-			gcL = -1;
-
-		int dir = (p < d) ? ra : la, dir_gra = (d < gc) ? ra : la;
-
-		int n = 84, c = 0;
-
-		// dl1.v023();
-		dl1.v1 = label;
-		dl1.v0 = n++;
-		dl1.v2 = pP;
-		dl1.v3 = dP;
-		dl1.v4 = gP;
-		dl1.cz5();
-		dl1.cs(s_dir, dir);
-		f[c++] = dl1.csa(s_dir, dir_gra);
-		dl1.v0 = n++;
-		dl1.v2 = pP;
-		dl1.v3 = gP;
-		dl1.cz4();
-		dl1.cs(s_dir, dir);
-		f[c++] = dl1.csa(s_dir, dir_gra);
-		dl1.v0 = n++;
-		dl1.v2 = dP;
-		dl1.cz4();
-		dl1.cs(s_dir, dir);
-		f[c++] = dl1.csa(s_dir, dir_gra);
-
-		dwwp.v1 = label;
-		dwwp.v0 = n++;
-		dwwp.v2 = prntF;
-		dwwp.v3 = gcF;
-		dwwp.cz4();
-		dwwp.cs(s_dir, dir);
-		f[c++] = dwwp.csa(s_dir, dir_gra);
-
-		dwwp.v0 = n++;
-		dwwp.v2 = chldF;
-		dwwp.v3 = gcF;
-		dwwp.cz4();
-		dwwp.cs(s_dir, dir);
-		f[c++] = dwwp.csa(s_dir, dir_gra);
-
-		dwp.v1 = label;
-		dwp.v0 = n++;
-		dwp.v2 = gcF;
-		dwp.v3 = pP;
-		dwp.cz4();
-		dwp.cs(s_dir, dir);
-		f[c++] = dwp.csa(s_dir, dir_gra);
-
-		dwp.v0 = n++;
-		dwp.v2 = gcF;
-		dwp.v3 = dP;
-		dwp.cz4();
-		dwp.cs(s_dir, dir);
-		f[c++] = dwp.csa(s_dir, dir_gra);
-
-		dwp.v0 = n++;
-		dwp.v2 = prntF;
-		dwp.v3 = gP;
-		dwp.cz4();
-		dwp.cs(s_dir, dir);
-		f[c++] = dwp.csa(s_dir, dir_gra);
-
-		dwp.v0 = n++;
-		dwp.v2 = chldF;
-		dwp.v3 = gP;
-		dwp.cz4();
-		dwp.cs(s_dir, dir);
-		f[c++] = dwp.csa(s_dir, dir_gra);
-
-		// lemma
-
-		dwwp.v0 = n++;
-		dwwp.v2 = prntL;
-		dwwp.v3 = gcL;
-		dwwp.cz4();
-		dwwp.cs(s_dir, dir);
-		f[c++] = dwwp.csa(s_dir, dir_gra);
-
-		dwwp.v0 = n++;
-		dwwp.v2 = chldL;
-		dwwp.v3 = gcL;
-		dwwp.cz4();
-		dwwp.cs(s_dir, dir);
-		f[c++] = dwwp.csa(s_dir, dir_gra);
-
-		dwp.v0 = n++;
-		dwp.v2 = gcL;
-		dwp.v3 = pP;
-		dwp.cz4();
-		dwp.cs(s_dir, dir);
-		f[c++] = dwp.csa(s_dir, dir_gra);
-
-		dwp.v0 = n++;
-		dwp.v2 = gcL;
-		dwp.v3 = dP;
-		dwp.cz4();
-		dwp.cs(s_dir, dir);
-		f[c++] = dwp.csa(s_dir, dir_gra);
-
-		dwp.v0 = n++;
-		dwp.v2 = prntL;
-		dwp.v3 = gP;
-		dwp.cz4();
-		dwp.cs(s_dir, dir);
-		f[c++] = dwp.csa(s_dir, dir_gra);
-
-		dwp.v0 = n++;
-		dwp.v2 = chldL;
-		dwp.v3 = gP;
-		dwp.cz4();
-		dwp.cs(s_dir, dir);
-		f[c++] = dwp.csa(s_dir, dir_gra);
-
-		// clusters
-
-		d2lp.v1 = label;
-		d2lp.v0 = n++;
-		d2lp.v2 = prntLS;
-		d2lp.v3 = gcLS;
-		d2lp.cz4();
-		d2lp.cs(s_dir, dir);
-		f[c++] = d2lp.csa(s_dir, dir_gra);// f.add(li.l2i(l));
-		d2lp.v0 = n++;
-		d2lp.v2 = chldLS;
-		d2lp.v3 = gcLS;
-		d2lp.cz4();
-		d2lp.cs(s_dir, dir);
-		f[c++] = d2lp.csa(s_dir, dir_gra);
-		d3lp.v0 = n++;
-		d3lp.v1 = label;
-		d3lp.v2 = prntLS;
-		d3lp.v3 = chldLS;
-		d3lp.v4 = gcLS;
-		d3lp.cz5();
-		d3lp.cs(s_dir, dir);
-		f[c++] = d3lp.csa(s_dir, dir_gra);
-
-		// _f83;
-		d2lp.v0 = n++;
-		d2lp.v2 = prntLS;
-		d2lp.v3 = chldLS;
-		d2lp.v4 = gcF;
-		d2lp.cz5();
-		f[c++] = d2lp.csa(s_dir, dir);
-		d2lp.v0 = n++;
-		d2lp.v2 = prntLS;
-		d2lp.v3 = gcLS;
-		d2lp.v4 = chldF;
-		d2lp.cz5();
-		f[c++] = d2lp.csa(s_dir, dir);
-		d2lp.v0 = n++;
-		d2lp.v2 = chldLS;
-		d2lp.v3 = gcLS;
-		d2lp.v4 = prntF;
-		d2lp.cz5();
-		f[c++] = d2lp.csa(s_dir, dir);
-
-		d2pp.v1 = label;
-		d2pp.v0 = n++;
-		d2pp.v2 = prntLS;
-		d2pp.v3 = chldLS;
-		d2pp.v4 = gP;
-		d2pp.cz5();
-		f[c++] = d2pp.csa(s_dir, dir);
-		d2pp.v0 = n++;
-		d2pp.v2 = prntLS;
-		d2pp.v3 = gcLS;
-		d2pp.v4 = dP;
-		d2pp.cz5();
-		f[c++] = d2pp.csa(s_dir, dir);
-		d2pp.v0 = n++;
-		d2pp.v2 = chldLS;
-		d2pp.v3 = gcLS;
-		d2pp.v4 = pP;
-		d2pp.cz5();
-		f[c++] = d2pp.csa(s_dir, dir);
-
-		// linear features
-
-		int prntPm1 = p != 0 ? pos[p - 1] : s_str; // parent-pos-minus1
-		int chldPm1 = d - 1 >= 0 ? pos[d - 1] : s_str; // child-pos-minus1
-		int prntPp1 = p != pos.length - 1 ? pos[p + 1] : s_end;
-		int chldPp1 = d != pos.length - 1 ? pos[d + 1] : s_end;
-
-		int gcPm1 = gc > 0 ? pos[gc - 1] : s_str;
-		int gcPp1 = gc < pos.length - 1 ? pos[gc + 1] : s_end;
-
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcPp1;
-		dl1.v4 = dP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcPm1;
-		dl1.v4 = dP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = dP;
-		dl1.v4 = chldPp1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = dP;
-		dl1.v4 = chldPm1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcPp1;
-		dl1.v4 = chldPm1;
-		dl1.v5 = dP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gcPm1;
-		dl1.v3 = gP;
-		dl1.v4 = chldPm1;
-		dl1.v5 = dP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcPp1;
-		dl1.v4 = dP;
-		dl1.v5 = chldPp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gcPm1;
-		dl1.v3 = gP;
-		dl1.v4 = dP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcPp1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcPm1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = pP;
-		dl1.v4 = prntPp1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = pP;
-		dl1.v4 = prntPm1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcPp1;
-		dl1.v4 = prntPm1;
-		dl1.v5 = pP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gcPm1;
-		dl1.v3 = gP;
-		dl1.v4 = prntPm1;
-		dl1.v5 = pP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcPp1;
-		dl1.v4 = pP;
-		dl1.v5 = prntPp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gcPm1;
-		dl1.v3 = gP;
-		dl1.v4 = pP;
-		dl1.v5 = prntPp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-
-		int pLSp1 = p != pos.length - 1 ? forms[p + 1] == -1 ? -1 : cluster.getLP(forms[p + 1]) : _cend;
-		int cLSp1 = d != pos.length - 1 ? forms[d + 1] == -1 ? -1 : cluster.getLP(forms[d + 1]) : _cend;
-		int gcLSp1 = gc < pos.length - 1 ? forms[gc + 1] == -1 ? -1 : cluster.getLP(forms[gc + 1]) : s_end;
-
-		int pLSm1 = p != 0 ? lemmas[p - 1] == -1 ? -1 : cluster.getLP(lemmas[p - 1]) : _cstr;
-		int cLSm1 = d - 1 >= 0 ? lemmas[d - 1] == -1 ? -1 : cluster.getLP(lemmas[d - 1]) : _cstr;
-		int gcLSm1 = gc > 0 ? lemmas[gc - 1] == -1 ? -1 : cluster.getLP(lemmas[gc - 1]) : _cstr;
-
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcLSp1;
-		dl1.v4 = dP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcLSm1;
-		dl1.v4 = dP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = dP;
-		dl1.v4 = cLSp1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = dP;
-		dl1.v4 = cLSm1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcLSp1;
-		dl1.v4 = cLSm1;
-		dl1.v5 = dP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gcLSm1;
-		dl1.v3 = gP;
-		dl1.v4 = cLSm1;
-		dl1.v5 = dP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcLSp1;
-		dl1.v4 = dP;
-		dl1.v5 = cLSp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = cLSm1;
-		dl1.v3 = gP;
-		dl1.v4 = dP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcLSp1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcLSm1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = pP;
-		dl1.v4 = pLSp1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = pP;
-		dl1.v4 = pLSm1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcLSp1;
-		dl1.v4 = pLSm1;
-		dl1.v5 = pP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gcLSm1;
-		dl1.v3 = gP;
-		dl1.v4 = pLSm1;
-		dl1.v5 = pP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gP;
-		dl1.v3 = gcLSp1;
-		dl1.v4 = pP;
-		dl1.v5 = pLSp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = gcLSm1;
-		dl1.v3 = gP;
-		dl1.v4 = pP;
-		dl1.v5 = pLSp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-
-		if (gc >= 0) {
-		}
-
-		// take those in for stacking
-		/*
-		 * dl2.v1=label; dl2.v0=
-		 * n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=gP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.
-		 * csa(s_dir,dir); dl2.v0=
-		 * n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=gP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.
-		 * csa(s_dir,dir); dl2.v0=
-		 * n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=gP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f
-		 * [c++]=dl2.csa(s_dir,dir);
-		 * 
-		 * dl2.v0=
-		 * n++;dl2.v2=gr;dl2.v3=g;dl2.v4=gP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.csa(
-		 * s_dir,dir); dl2.v0=
-		 * n++;dl2.v2=gr;dl2.v3=g;dl2.v4=gP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.csa(
-		 * s_dir,dir); dl2.v0=
-		 * n++;dl2.v2=gr;dl2.v3=g;dl2.v4=gP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f[c++]
-		 * =dl2.csa(s_dir,dir);
-		 * 
-		 */
-		if (feats == null)
-			return;
-
-		short[] featsP = feats[d];
-		short[] featsD = gc != -1 ? feats[gc] : null;
-
-		dlf.v0 = n++;
-		dlf.v1 = label;
-		dlf.v2 = gP;
-		dlf.v3 = dP;
-		extractFeat(f, c, dir, featsP, featsD);
-		return;
-	}
-
-	@Override
-	public void siblingm(Instances is, int i, short pos[], int forms[], int[] lemmas, short[][] feats, int prnt, int d,
-			int sblng, int label, Cluster cluster, long[] f, int v) {
-
-		for (int k = 0; k < f.length; k++)
-			f[k] = 0;
-
-		int pP = pos[prnt], dP = pos[d];
-		int prntF = forms[prnt], chldF = forms[d];
-		int prntL = lemmas[prnt], chldL = lemmas[d];
-		int prntLS = prntF == -1 ? -1 : cluster.getLP(prntF), chldLS = chldF == -1 ? -1 : cluster.getLP(chldF);
-
-		int sP = sblng != -1 ? pos[sblng] : s_str, sblF = sblng != -1 ? forms[sblng] : s_stwrd,
-				sblL = sblng != -1 ? lemmas[sblng] : s_stwrd;
-
-		int sblLS = (sblng != -1) && (sblF != -1) ? cluster.getLP(sblF) : s_stwrd;
-
-		int dir = (prnt < d) ? ra : la;
-
-		int abs = Math.abs(prnt - d);
-
-		final int dist;
-		if (abs > 10)
-			dist = d10;
-		else if (abs > 5)
-			dist = d5;
-		else if (abs == 5)
-			dist = d4;
-		else if (abs == 4)
-			dist = d3;
-		else if (abs == 3)
-			dist = d2;
-		else if (abs == 2)
-			dist = d1;
-		else
-			dist = di0;
-
-		int n = 147;
-
-		if (prntF > maxForm)
-			prntF = -1;
-		if (prntL > maxForm)
-			prntL = -1;
-
-		if (chldF > maxForm)
-			chldF = -1;
-		if (chldL > maxForm)
-			chldL = -1;
-
-		if (sblF > maxForm)
-			sblF = -1;
-		if (sblL > maxForm)
-			sblL = -1;
-
-		dl1.v0 = n++;
-		dl1.v1 = label;
-		dl1.v2 = pP;
-		dl1.v3 = dP;
-		dl1.v4 = sP;
-		dl1.cz5();
-		f[0] = dl1.csa(s_dir, dir);
-		f[1] = dl1.csa(s_dist, dist);
-		dl1.v0 = n++;
-		dl1.v3 = sP;
-		dl1.cz4();
-		f[2] = dl1.csa(s_dir, dir);
-		f[3] = dl1.csa(s_dist, dist);
-		dl1.v0 = n++;
-		dl1.v2 = dP;
-		dl1.cz4();
-		f[4] = dl1.csa(s_dir, dir);
-		f[5] = dl1.csa(s_dist, dist);
-
-		// sibling only could be tried
-		dwwp.v1 = label;
-		dwwp.v0 = n++;
-		dwwp.v2 = prntF;
-		dwwp.v3 = sblF;
-		dwwp.cz4();
-		f[6] = dwwp.csa(s_dir, dir);
-		f[7] = dwwp.csa(s_dist, dist);
-		dwwp.v0 = n++;
-		dwwp.v2 = chldF;
-		dwwp.cz4();
-		f[8] = dwwp.csa(s_dir, dir);
-		f[9] = dwwp.csa(s_dist, dist);
-		dwp.v0 = n++;
-		dwp.v1 = label;
-		dwp.v2 = sblF;
-		dwp.v3 = pP;
-		dwp.cz4();
-		f[10] = dwp.csa(s_dir, dir);
-		f[11] = dwp.csa(s_dist, dist);
-		dwp.v0 = n++;
-		/* dwp.v1=label; */dwp.v3 = dP;
-		dwp.cz4();
-		f[12] = dwp.csa(s_dir, dir);
-		f[13] = dwp.csa(s_dist, dist);
-		dwp.v0 = n++;
-		/* dwp.v1=label; */ dwp.v2 = prntF;
-		dwp.v3 = sP;
-		dwp.cz4();
-		f[14] = dwp.csa(s_dir, dir);
-		f[15] = dwp.csa(s_dist, dist);
-		dwp.v0 = n++;
-		/* dwp.v1=label; */ dwp.v2 = chldF;
-		dwp.cz4();
-		f[16] = dwp.csa(s_dir, dir);
-		f[17] = dwp.csa(s_dist, dist);
-
-		// lemmas
-		dwwp.v0 = n++;
-		dwwp.v2 = prntL;
-		dwwp.v3 = sblL;
-		dwwp.cz4();
-		f[18] = dwwp.csa(s_dir, dir);
-		dwwp.v0 = n++;
-		dwwp.v2 = chldL;
-		dwwp.cz4();
-		f[19] = dwwp.csa(s_dir, dir);
-		f[20] = dwwp.csa(s_dist, dist);
-		dwp.v0 = n++;
-		/* dwp.v1=label; */ dwp.v2 = sblL;
-		dwp.v3 = pP;
-		dwp.cz4();
-		f[21] = dwp.csa(s_dir, dir);
-		f[22] = dwp.csa(s_dist, dist);
-		dwp.v0 = n++;
-		/* dwp.v1=label; */ dwp.v3 = dP;
-		dwp.cz4();
-		f[23] = dwp.csa(s_dir, dir);
-		f[24] = dwp.csa(s_dist, dist);
-		dwp.v0 = n++;
-		/* dwp.v1=label; */ dwp.v2 = prntL;
-		dwp.v3 = sP;
-		dwp.cz4();
-		f[25] = dwp.csa(s_dir, dir);
-		f[26] = dwp.csa(s_dist, dist);
-		dwp.v0 = n++;
-		/* dwp.v1=label; */ dwp.v2 = chldL;
-		dwp.cz4();
-		f[27] = dwp.csa(s_dir, dir);
-		f[28] = dwp.csa(s_dist, dist);
-
-		// clusters
-
-		d2lp.v1 = label;
-		d2lp.v0 = n++;
-		d2lp.v2 = prntLS;
-		d2lp.v3 = sblLS;
-		d2lp.cz4();
-		f[29] = d2lp.csa(s_dir, dir);
-		d2lp.v0 = n++;
-		d2lp.v2 = chldLS;
-		d2lp.v3 = sblLS;
-		d2lp.cz4();
-		f[30] = d2lp.csa(s_dir, dir);
-		f[31] = d2lp.csa(s_dist, dist);
-
-		d3lp.v1 = label;
-		d3lp.v0 = n++;
-		d3lp.v2 = prntLS;
-		d3lp.v3 = chldLS;
-		d3lp.v4 = sblLS;
-		d3lp.cz5();
-		f[32] = d3lp.csa(s_dir, dir);
-
-		d2lp.v0 = n++;
-		d2lp.v2 = prntLS;
-		d2lp.v3 = chldLS;
-		d2lp.v4 = sblF;
-		d2lp.cz5();
-		f[33] = d2lp.csa(s_dir, dir);
-		f[34] = d2lp.csa(s_dist, dist);
-		d2lp.v0 = n++;
-		d2lp.v2 = prntLS;
-		d2lp.v3 = sblLS;
-		d2lp.v4 = chldF;
-		d2lp.cz5();
-		f[35] = d2lp.csa(s_dir, dir);
-		f[36] = d2lp.csa(s_dist, dist);
-		d2lp.v0 = n++;
-		d2lp.v2 = chldLS;
-		d2lp.v3 = sblLS;
-		d2lp.v4 = prntF;
-		d2lp.cz5();
-		f[37] = d2lp.csa(s_dir, dir);
-		f[38] = d2lp.csa(s_dist, dist);
-
-		d2pp.v1 = label;
-		d2pp.v0 = n++;
-		d2pp.v2 = prntLS;
-		d2pp.v3 = chldLS;
-		d2pp.v4 = sP;
-		d2pp.cz5();
-		f[39] = d2pp.csa(s_dir, dir);
-		f[40] = d2pp.csa(s_dist, dist);
-		d2pp.v0 = n++;
-		d2pp.v2 = prntLS;
-		d2pp.v3 = sblLS;
-		d2pp.v4 = dP;
-		d2pp.cz5();
-		f[41] = d2pp.csa(s_dir, dir);
-		f[42] = d2pp.csa(s_dist, dist);
-		d2pp.v0 = n++;
-		d2pp.v2 = chldLS;
-		d2pp.v3 = sblLS;
-		d2pp.v4 = pP;
-		d2pp.cz5();
-		f[43] = d2pp.csa(s_dir, dir);
-		f[44] = d2pp.csa(s_dist, dist);
-
-		int prntPm1 = prnt != 0 ? pos[prnt - 1] : s_str;
-		int chldPm1 = d - 1 >= 0 ? pos[d - 1] : s_str;
-		int prntPp1 = prnt != pos.length - 1 ? pos[prnt + 1] : s_end;
-		int chldPp1 = d != pos.length - 1 ? pos[d + 1] : s_end;
-
-		// sibling part of speech minus and plus 1
-		int sblPm1 = sblng > 0 ? pos[sblng - 1] : s_str;
-		int sblPp1 = sblng < pos.length - 1 ? pos[sblng + 1] : s_end;
-
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sblPp1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[45] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sblPm1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[46] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = pP;
-		dl1.v4 = prntPp1;
-		dl1.cz5();
-		f[47] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = pP;
-		dl1.v4 = prntPm1;
-		dl1.cz5();
-		f[48] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sblPp1;
-		dl1.v4 = prntPm1;
-		dl1.v5 = pP;
-		dl1.cz6();
-		f[49] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sblPm1;
-		dl1.v3 = sP;
-		dl1.v4 = prntPm1;
-		dl1.v5 = pP;
-		dl1.cz6();
-		f[50] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sblPp1;
-		dl1.v4 = pP;
-		dl1.v5 = prntPp1;
-		dl1.cz6();
-		f[51] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
-		dl1.v0 = n++;
-		dl1.v2 = sblPm1;
-		dl1.v3 = sP;
-		dl1.v4 = pP;
-		dl1.v5 = prntPp1;
-		dl1.cz6();
-		f[52] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sblPp1;
-		dl1.v4 = dP;
-		dl1.cz5();
-		f[53] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sblPm1;
-		dl1.v4 = dP;
-		dl1.cz5();
-		f[54] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = dP;
-		dl1.v4 = chldPp1;
-		dl1.cz5();
-		f[55] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = dP;
-		dl1.v4 = chldPm1;
-		dl1.cz5();
-		f[56] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sblPp1;
-		dl1.v4 = chldPm1;
-		dl1.v5 = dP;
-		dl1.cz6();
-		f[57] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
-		dl1.v0 = n++;
-		dl1.v2 = sblPm1;
-		dl1.v3 = sP;
-		dl1.v4 = chldPm1;
-		dl1.v5 = dP;
-		dl1.cz6();
-		f[58] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sblPp1;
-		dl1.v4 = dP;
-		dl1.v5 = chldPp1;
-		dl1.cz6();
-		f[59] = dl1.csa(s_dir, dir);// f.add(li.l2i(l));
-		dl1.v0 = n++;
-		dl1.v2 = sblPm1;
-		dl1.v3 = sP;
-		dl1.v4 = dP;
-		dl1.v5 = chldPp1;
-		dl1.cz6();
-		f[60] = dl1.csa(s_dir, dir);
-
-		int c = 61;
-
-		int pLSp1 = prnt != pos.length - 1 ? forms[prnt + 1] == -1 ? -1 : cluster.getLP(forms[prnt + 1]) : _cend;
-		int cLSp1 = d != pos.length - 1 ? forms[d + 1] == -1 ? -1 : cluster.getLP(forms[d + 1]) : _cend;
-		int sLSp1 = sblng < pos.length - 1 ? forms[sblng + 1] == -1 ? -1 : cluster.getLP(forms[sblng + 1]) : _cend;
-
-		int pLSm1 = prnt != 0 ? forms[prnt - 1] == -1 ? -1 : cluster.getLP(forms[prnt - 1]) : _cstr;
-		int cLSm1 = d - 1 >= 0 ? forms[d - 1] == -1 ? -1 : cluster.getLP(forms[d - 1]) : _cstr;
-		int sLSm1 = sblng > 0 ? forms[sblng - 1] == -1 ? -1 : cluster.getLP(forms[sblng - 1]) : _cstr;
-
-		// int c=61;
-
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSm1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = pP;
-		dl1.v4 = pLSp1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = pP;
-		dl1.v4 = pLSm1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = pLSm1;
-		dl1.v5 = pP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sLSm1;
-		dl1.v3 = sP;
-		dl1.v4 = pLSm1;
-		dl1.v5 = pP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = pP;
-		dl1.v5 = pLSp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sLSm1;
-		dl1.v3 = sP;
-		dl1.v4 = pP;
-		dl1.v5 = pLSp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = dP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSm1;
-		dl1.v4 = dP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = dP;
-		dl1.v4 = cLSp1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = dP;
-		dl1.v4 = cLSm1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSm1;
-		dl1.v4 = cLSm1;
-		dl1.v5 = dP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sLSm1;
-		dl1.v3 = sP;
-		dl1.v4 = cLSm1;
-		dl1.v5 = dP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = dP;
-		dl1.v5 = cLSp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sLSm1;
-		dl1.v3 = sP;
-		dl1.v4 = dP;
-		dl1.v5 = cLSp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSm1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = pP;
-		dl1.v4 = pLSp1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = pP;
-		dl1.v4 = pLSm1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = pLSm1;
-		dl1.v5 = pP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sLSm1;
-		dl1.v3 = sP;
-		dl1.v4 = pLSm1;
-		dl1.v5 = pP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = pP;
-		dl1.v5 = pLSp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sLSm1;
-		dl1.v3 = sP;
-		dl1.v4 = pP;
-		dl1.v5 = pLSp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = dP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSm1;
-		dl1.v4 = dP;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = dP;
-		dl1.v4 = cLSp1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = dP;
-		dl1.v4 = cLSm1;
-		dl1.cz5();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSm1;
-		dl1.v4 = cLSm1;
-		dl1.v5 = dP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sLSm1;
-		dl1.v3 = sP;
-		dl1.v4 = cLSm1;
-		dl1.v5 = dP;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = dP;
-		dl1.v5 = cLSp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-		dl1.v0 = n++;
-		dl1.v2 = sLSm1;
-		dl1.v3 = sP;
-		dl1.v4 = dP;
-		dl1.v5 = cLSp1;
-		dl1.cz6();
-		f[c++] = dl1.csa(s_dir, dir);
-
-		// take those in for stacking
-
-		/*
-		 * short[] prel = is.plabels[i],phead=is.pheads[i];
-		 * 
-		 * int g = prnt==phead[d]?1:2 ; if (sblng>=0) g +=
-		 * prnt==phead[sblng]?4:8;
-		 * 
-		 * int gr = sblng==-1?s_relend:prel[sblng];
-		 * 
-		 * 
-		 * dl2.v0=
-		 * n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=sP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.
-		 * csa(s_dir,dir); dl2.v0=
-		 * n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.
-		 * csa(s_dir,dir); dl2.v0=
-		 * n++;dl2.v2=prel[d];dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f
-		 * [c++]=dl2.csa(s_dir,dir);
-		 * 
-		 * dl2.v0=
-		 * n++;dl2.v2=gr;dl2.v3=g;dl2.v4=sP;dl2.v5=dP;dl2.cz6();f[c++]=dl2.csa(
-		 * s_dir,dir); dl2.v0=
-		 * n++;dl2.v2=gr;dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.cz6();f[c++]=dl2.csa(
-		 * s_dir,dir); dl2.v0=
-		 * n++;dl2.v2=gr;dl2.v3=g;dl2.v4=sP;dl2.v5=pP;dl2.v6=dP;dl2.cz7();f[c++]
-		 * =dl2.csa(s_dir,dir);
-		 */
-
-		if (feats == null)
-			return;
-
-		int cnt = c;
-
-		short[] featsP = feats[d];
-		short[] featsSbl = sblng != -1 ? feats[sblng] : null;
-
-		dlf.v0 = n++;
-		dlf.v1 = label;
-		dlf.v2 = sP;
-		dlf.v3 = dP;
-
-		cnt = extractFeat(f, cnt, dir, featsP, featsSbl);
-
-		featsP = feats[prnt];
-		featsSbl = sblng != -1 ? feats[sblng] : null;
-
-		dlf.v0 = n++;
-		dlf.v1 = label;
-		dlf.v2 = pP;
-		dlf.v3 = sP;
-		if (featsP != null && featsSbl != null) {
-			for (short i1 = 0; i1 < featsP.length; i1++) {
-				for (short i2 = 0; i2 < featsSbl.length; i2++) {
-					dlf.v4 = featsP[i1];
-					dlf.v5 = featsSbl[i2];
-					dlf.cz6();
-					f[cnt++] = dlf.csa(s_dir, prnt < sblng ? 1 : 2);
-				}
-			}
-		} else if (featsP == null && featsSbl != null) {
-
-			for (short i2 = 0; i2 < featsSbl.length; i2++) {
-				dlf.v4 = nofeat;
-				dlf.v5 = featsSbl[i2];
-				dlf.cz6();
-				f[cnt++] = dlf.csa(s_dir, dir);
-			}
-
-		} else if (featsP != null && featsSbl == null) {
-
-			for (short i1 = 0; i1 < featsP.length; i1++) {
-				dlf.v4 = featsP[i1];
-				dlf.v5 = nofeat;
-				dlf.cz6();
-				f[cnt++] = dlf.csa(s_dir, dir);
-			}
-		}
-
-		return;
-	}
-
-	private int extractFeat(long[] f, int cnt, int dir, short[] featsP, short[] featsD) {
-		if (featsP != null && featsD != null) {
-			for (short i1 = 0; i1 < featsP.length; i1++) {
-				for (short i2 = 0; i2 < featsD.length; i2++) {
-					dlf.v4 = featsP[i1];
-					dlf.v5 = featsD[i2];
-					dlf.cz6();
-					f[cnt++] = dlf.csa(s_dir, dir);
-				}
-			}
-		} else if (featsP == null && featsD != null) {
-
-			for (short i2 = 0; i2 < featsD.length; i2++) {
-				dlf.v4 = nofeat;
-				dlf.v5 = featsD[i2];
-				dlf.cz6();
-				f[cnt++] = dlf.csa(s_dir, dir);
-
-			}
-		} else if (featsP != null && featsD == null) {
-
-			for (short i1 = 0; i1 < featsP.length; i1++) {
-				dlf.v4 = featsP[i1];
-				dlf.v5 = nofeat;
-				dlf.cz6();
-				f[cnt++] = dlf.csa(s_dir, dir);
-
-			}
-		}
-		return cnt;
-	}
-
-	@Override
-	public FV encodeCat(Instances is, int ic, short pposs[], int forms[], int[] lemmas, short[] heads, short[] types,
-			short feats[][], Cluster cluster, FV f) {
-
-		long[] svs = new long[250];
-
-		for (int i = 1; i < heads.length; i++) {
-
-			int n = basic(pposs, forms, heads[i], i, cluster, f);
-
-			firstm(is, ic, heads[i], i, types[i], cluster, svs);
-			for (long sv : svs)
-				dl1.map(f, sv);
-
-			int ch, cmi, cmo;
-			if (heads[i] < i) {
-				ch = rightmostRight(heads, heads[i], i);
-				cmi = leftmostLeft(heads, i, heads[i]);
-				cmo = rightmostRight(heads, i, heads.length);
-
-			} else {
-				ch = leftmostLeft(heads, heads[i], i);
-				cmi = rightmostRight(heads, i, heads[i]);
-				cmo = leftmostLeft(heads, i, 0);
-			}
-
-			siblingm(is, ic, pposs, forms, lemmas, feats, heads[i], i, ch, types[i], cluster, svs, n);
-			for (long sv : svs)
-				dl1.map(f, sv);
-
-			gcm(is, ic, heads[i], i, cmi, types[i], cluster, svs);
-			for (long sv : svs)
-				dl1.map(f, sv);
-
-			gcm(is, ic, heads[i], i, cmo, types[i], cluster, svs);
-			for (long sv : svs)
-				dl1.map(f, sv);
-		}
-
-		return f;
-	}
-
-	@Override
-	public float encode3(short[] pos, short heads[], short[] types, DataF d2) {
-
-		double v = 0;
-		for (int i = 1; i < heads.length; i++) {
-
-			int dir = (heads[i] < i) ? 0 : 1;
-
-			v += d2.pl[heads[i]][i];
-			v += d2.lab[heads[i]][i][types[i]][dir];
-
-			boolean left = i < heads[i];
-			short[] labels = Edges.get(pos[heads[i]], pos[i], left);
-			int lid = -1;
-			for (int k = 0; k < labels.length; k++)
-				if (types[i] == labels[k]) {
-					lid = k;
-					break;
-				}
-
-			int ch, cmi, cmo;
-			if (heads[i] < i) {
-				ch = rightmostRight(heads, heads[i], i);
-				cmi = leftmostLeft(heads, i, heads[i]);
-				cmo = rightmostRight(heads, i, heads.length);
-
-				if (ch == -1)
-					ch = heads[i];
-				if (cmi == -1)
-					cmi = heads[i];
-				if (cmo == -1)
-					cmo = heads[i];
-
-			} else {
-				ch = leftmostLeft(heads, heads[i], i);
-				cmi = rightmostRight(heads, i, heads[i]);
-				cmo = leftmostLeft(heads, i, 0);
-
-				if (ch == -1)
-					ch = i;
-				if (cmi == -1)
-					cmi = i;
-				if (cmo == -1)
-					cmo = i;
-			}
-			v += d2.sib[heads[i]][i][ch][dir][lid];
-			v += d2.gra[heads[i]][i][cmi][dir][lid];
-			v += d2.gra[heads[i]][i][cmo][dir][lid];
-		}
-		return (float) v;
-	}
-
-	/**
-	 * Provide the scores of the edges
-	 * 
-	 * @param pos
-	 * @param heads
-	 * @param types
-	 * @param edgesScores
-	 * @param d2
-	 * @return
-	 */
-	public static float encode3(short[] pos, short heads[], short[] types, float[] edgesScores, DataF d2) {
-
-		double v = 0;
-		for (int i = 1; i < heads.length; i++) {
-
-			int dir = (heads[i] < i) ? 0 : 1;
-
-			edgesScores[i] = d2.pl[heads[i]][i];
-			edgesScores[i] += d2.lab[heads[i]][i][types[i]][dir];
-
-			boolean left = i < heads[i];
-			short[] labels = Edges.get(pos[heads[i]], pos[i], left);
-			int lid = -1;
-			for (int k = 0; k < labels.length; k++)
-				if (types[i] == labels[k]) {
-					lid = k;
-					break;
-				}
-
-			int ch, cmi, cmo;
-			if (heads[i] < i) {
-				ch = rightmostRight(heads, heads[i], i);
-				cmi = leftmostLeft(heads, i, heads[i]);
-				cmo = rightmostRight(heads, i, heads.length);
-
-				if (ch == -1)
-					ch = heads[i];
-				if (cmi == -1)
-					cmi = heads[i];
-				if (cmo == -1)
-					cmo = heads[i];
-
-			} else {
-				ch = leftmostLeft(heads, heads[i], i);
-				cmi = rightmostRight(heads, i, heads[i]);
-				cmo = leftmostLeft(heads, i, 0);
-
-				if (ch == -1)
-					ch = i;
-				if (cmi == -1)
-					cmi = i;
-				if (cmo == -1)
-					cmo = i;
-			}
-			edgesScores[i] += d2.sib[heads[i]][i][ch][dir][lid];
-			edgesScores[i] += d2.gra[heads[i]][i][cmi][dir][lid];
-			edgesScores[i] += d2.gra[heads[i]][i][cmo][dir][lid];
-			v += edgesScores[i];
-		}
-		return (float) v;
-	}
-
-	private static int rightmostRight(short[] heads, int head, int max) {
-		int rightmost = -1;
-		for (int i = head + 1; i < max; i++)
-			if (heads[i] == head)
-				rightmost = i;
-
-		return rightmost;
-	}
-
-	private static int leftmostLeft(short[] heads, int head, int min) {
-		int leftmost = -1;
-		for (int i = head - 1; i > min; i--)
-			if (heads[i] == head)
-				leftmost = i;
-		return leftmost;
-	}
-
-	public static final String REL = "REL", END = "END", STR = "STR", LA = "LA", RA = "RA";
-
-	private static int ra, la;
-	private static int s_str;
-	private static int s_end, _cend, _cstr, s_stwrd;
-
-	protected static final String TYPE = "TYPE", DIR = "D", FEAT = "F";
-	public static final String POS = "POS";
-	protected static final String DIST = "DIST", MID = "MID";
-
-	private static final String _0 = "0", _4 = "4", _3 = "3", _2 = "2", _1 = "1", _5 = "5", _10 = "10";
-
-	private static int di0, d4, d3, d2, d1, d5, d10;
-
-	private static final String WORD = "WORD", STWRD = "STWRD", STPOS = "STPOS";
-
-	private static int nofeat;
-
-	private static int maxForm;
-
-	/**
-	 * Initialize the features.
-	 * 
-	 * @param maxFeatures
-	 */
-	static public void initFeatures() {
-
-		MFB mf = new MFB();
-		mf.register(POS, MID);
-		s_str = mf.register(POS, STR);
-		s_end = mf.register(POS, END);
-
-		mf.register(REL, END);
-
-		_cstr = mf.register(Cluster.SPATH, STR);
-		_cend = mf.register(Cluster.SPATH, END);
-
-		mf.register(TYPE, POS);
-
-		s_stwrd = mf.register(WORD, STWRD);
-		mf.register(POS, STPOS);
-
-		la = mf.register(DIR, LA);
-		ra = mf.register(DIR, RA);
-
-		// mf.register(TYPE, CHAR);
-
-		mf.register(TYPE, FEAT);
-		nofeat = mf.register(FEAT, "NOFEAT");
-
-		for (int k = 0; k < 215; k++)
-			mf.register(TYPE, "F" + k);
-
-		di0 = mf.register(DIST, _0);
-		d1 = mf.register(DIST, _1);
-		d2 = mf.register(DIST, _2);
-		d3 = mf.register(DIST, _3);
-		d4 = mf.register(DIST, _4);
-		d5 = mf.register(DIST, _5);
-		// d5l=mf.register(DIST, _5l);
-		d10 = mf.register(DIST, _10);
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see extractors.Extractor#getType()
-	 */
-	@Override
-	public int getType() {
-		return s_type;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see extractors.Extractor#setMaxForm(java.lang.Integer)
-	 */
-	@Override
-	public void setMaxForm(int max) {
-		maxForm = max;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see extractors.Extractor#getMaxForm()
-	 */
-	@Override
-	public int getMaxForm() {
-		return maxForm;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/extractors/ExtractorFactory.java b/dependencyParser/mate-tools/src/extractors/ExtractorFactory.java
deleted file mode 100644
index 20827d4..0000000
--- a/dependencyParser/mate-tools/src/extractors/ExtractorFactory.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- *
- */
-package extractors;
-
-import is2.data.Long2IntInterface;
-
-/**
- * @author Dr. Bernd Bohnet, 29.04.2011
- *
- *
- */
-public class ExtractorFactory {
-
-	public static final int StackedClustered = 4;
-	public static final int StackedClusteredR2 = 5;
-
-	private int type = -1;
-
-	/**
-	 * @param stackedClusteredR22
-	 */
-	public ExtractorFactory(int t) {
-		type = t;
-	}
-
-	/**
-	 * @param stackedClusteredR22
-	 * @param l2i
-	 * @return
-	 */
-	public Extractor getExtractor(Long2IntInterface l2i) {
-		switch (type) {
-		case StackedClustered:
-			return new ExtractorClusterStacked(l2i);
-		case StackedClusteredR2:
-			return new ExtractorClusterStackedR2(l2i);
-		}
-		return null;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/extractors/ExtractorReranker.java b/dependencyParser/mate-tools/src/extractors/ExtractorReranker.java
deleted file mode 100644
index bf068b2..0000000
--- a/dependencyParser/mate-tools/src/extractors/ExtractorReranker.java
+++ /dev/null
@@ -1,1080 +0,0 @@
-package extractors;
-
-import java.util.Arrays;
-
-import is2.data.Cluster;
-import is2.data.D4;
-import is2.data.Instances;
-import is2.data.Long2IntInterface;
-import is2.data.MFB;
-import is2.data.ParseNBest;
-import is2.util.DB;
-
-final public class ExtractorReranker {
-
-	public static int s_rel, s_word, s_type, s_dir, s_dist, s_feat, s_child, s_spath, s_lpath, s_pos;
-	public static int d0, d1, d2, d3, d4, d5, d10;
-
-	MFB mf;
-
-	final D4 dl1, dl2, dwr, dr, dwwp, dw, dwp, dlf, d3lp, d2lp, d2pw, d2pp;
-
-	public final Long2IntInterface li;
-
-	public ExtractorReranker(Long2IntInterface li) {
-		this.li = li;
-		dl1 = new D4(li);
-		dl2 = new D4(li);
-		dwr = new D4(li);
-		dr = new D4(li);
-		dwwp = new D4(li);
-
-		dw = new D4(li);
-		dwp = new D4(li);
-
-		dlf = new D4(li);
-		d3lp = new D4(li);
-		d2lp = new D4(li);
-		d2pw = new D4(li);
-		d2pp = new D4(li);
-
-	}
-
-	public static void initStat() {
-		DB.println("init called ");
-		MFB mf = new MFB();
-		s_rel = mf.getFeatureCounter().get(REL).intValue();
-		;
-		s_pos = mf.getFeatureCounter().get(POS).intValue();
-		s_word = mf.getFeatureCounter().get(WORD).intValue();
-		s_type = mf.getFeatureCounter().get(TYPE).intValue();// mf.getFeatureBits();
-		s_dir = mf.getFeatureCounter().get(DIR);
-		mf.getValue(DIR, LA);
-		mf.getValue(DIR, RA);
-		s_dist = mf.getFeatureCounter().get(DIST);// mf.getFeatureBits(DIST);
-		s_feat = mf.getFeatureCounter().get(FEAT);// mf.getFeatureBits(Pipe.FEAT);
-		s_spath = mf.getFeatureCounter().get(Cluster.SPATH) == null ? 0 : mf.getFeatureCounter().get(Cluster.SPATH);// mf.getFeatureBits(Cluster.SPATH);
-		s_lpath = mf.getFeatureCounter().get(Cluster.LPATH) == null ? 0 : mf.getFeatureCounter().get(Cluster.LPATH);// mf.getFeatureBits(Cluster.LPATH);
-	}
-
-	public void init() {
-		mf = new MFB();
-
-		dl1.a0 = s_type;
-		dl1.a1 = 3;
-		dl1.a2 = s_pos;
-		dl1.a3 = s_pos;
-		dl1.a4 = s_pos;
-		dl1.a5 = s_pos;
-		dl1.a6 = s_pos;
-		dl1.a7 = s_pos;
-		dl2.a0 = s_type;
-		dl2.a1 = 3;
-		dl2.a2 = s_rel;
-		dl2.a3 = s_rel;
-		dl2.a4 = s_rel;
-		dl2.a5 = s_rel;
-		dl2.a6 = s_rel;
-		dl2.a7 = s_rel;
-		dl2.a8 = s_rel;
-		dl2.a9 = s_rel;
-		dwp.a0 = s_type;
-		dwp.a1 = 3;
-		dwp.a2 = s_word;
-		dwp.a3 = s_rel;
-		dwp.a4 = s_rel;
-		dwp.a5 = s_rel;
-		dwp.a6 = s_rel;
-		dwp.a7 = s_rel;
-		dwwp.a0 = s_type;
-		dwwp.a1 = 3;
-		dwwp.a2 = s_word;
-		dwwp.a3 = s_word;
-		dwwp.a4 = s_pos;
-		dwwp.a5 = s_word;
-		dwwp.a6 = s_pos;
-		dwwp.a7 = s_pos;
-	}
-
-	public static final String REL = "REL", END = "END", STR = "STR", LA = "LA", RA = "RA", FEAT = "F";
-
-	private static int s_end, s_stwrd, s_relend;
-
-	protected static final String TYPE = "TYPE", DIR = "D";
-	public static final String POS = "POS";
-	protected static final String DIST = "DIST", MID = "MID";
-
-	private static final String _0 = "0", _4 = "4", _3 = "3", _2 = "2", _1 = "1", _5 = "5", _10 = "10";
-
-	private static final String WORD = "WORD", STWRD = "STWRD", STPOS = "STPOS";
-
-	public static int maxForm;
-
-	final public static int _FC = 60;
-
-	/**
-	 * Initialize the features.
-	 * 
-	 * @param maxFeatures
-	 */
-	static public void initFeatures() {
-
-		MFB mf = new MFB();
-		mf.register(POS, MID);
-		mf.register(POS, STR);
-		s_end = mf.register(POS, END);
-
-		s_relend = mf.register(REL, END);
-
-		mf.register(Cluster.SPATH, STR);
-		mf.register(Cluster.SPATH, END);
-
-		mf.register(TYPE, POS);
-
-		s_stwrd = mf.register(WORD, STWRD);
-		mf.register(POS, STPOS);
-
-		mf.register(DIR, LA);
-		mf.register(DIR, RA);
-
-		// mf.register(TYPE, CHAR);
-
-		mf.register(TYPE, FEAT);
-		mf.register(FEAT, "NOFEAT");
-
-		for (int k = 0; k < 60; k++)
-			mf.register(TYPE, "F" + k);
-
-		d0 = mf.register(DIST, _0);
-		d1 = mf.register(DIST, _1);
-		d2 = mf.register(DIST, _2);
-		d3 = mf.register(DIST, _3);
-		d4 = mf.register(DIST, _4);
-		d5 = mf.register(DIST, _5);
-		// d5l=mf.register(DIST, _5l);
-		d10 = mf.register(DIST, _10);
-
-	}
-
-	/**
-	 * @param is
-	 * @param n
-	 * @param parseNBest
-	 * @param vs
-	 */
-	public void extractFeatures3(Instances is, int i, ParseNBest parse, int rank, long[] v) {
-
-		int f = 1, n = 0;
-
-		for (short k = 0; k < is.length(i) - 1; k++) {
-
-			short[] chld = children(parse.heads, k);
-
-			f = 2;
-
-			int fm = is.forms[i][k];
-			int hh = k != 0 ? is.pposs[i][parse.heads[k]] : s_end;
-			int h = is.pposs[i][k];
-			int hrel = parse.labels[k];
-			int hhrel = k != 0 ? parse.labels[parse.heads[k]] : s_relend;
-			int hhf = k != 0 ? is.forms[i][parse.heads[k]] : s_stwrd;
-
-			int rlast = chld.length > 0 ? parse.labels[chld[chld.length - 1]] : s_relend;
-
-			int[] rels = new int[chld.length];
-			int[] pss = new int[chld.length];
-			for (int j = 0; j < chld.length; j++) {
-				rels[j] = parse.labels[chld[j]];
-				pss[j] = is.pposs[i][chld[j]];
-			}
-
-			StringBuilder rl = new StringBuilder(chld.length);
-			StringBuilder psl = new StringBuilder(chld.length);
-			for (int j = 0; j < chld.length; j++) {
-				rl.append((char) rels[j]);
-				psl.append((char) pss[j]);
-			}
-
-			int rli = mf.register("rli", rl.toString());
-			int pli = mf.register("pli", psl.toString());
-
-			dwwp.v0 = f++;
-			dwwp.v2 = rli;
-			dwwp.cz3();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.cz3();
-			v[n++] = dwwp.getVal();
-
-			dwwp.v0 = f++;
-			dwwp.v2 = rli;
-			dwwp.v3 = h;
-			dwwp.cz4();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = h;
-			dwwp.cz4();
-			v[n++] = dwwp.getVal();
-
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = hh;
-			dwwp.v4 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = rli;
-			dwwp.v3 = hh;
-			dwwp.v4 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = rli;
-			dwwp.v4 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = fm;
-			dwwp.v3 = rli;
-			dwwp.v4 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = fm;
-			dwwp.v4 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = rli;
-			dwwp.v4 = hh;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = rli;
-			dwwp.v4 = hh;
-			dwwp.v5 = h;
-			dwwp.cz6();
-			v[n++] = dwwp.getVal();
-
-			dwp.v0 = f++;
-			dwp.v2 = rli;
-			dwp.v3 = hrel;
-			dwp.v4 = hh;
-			dwp.v5 = h;
-			dwp.cz6();
-			v[n++] = dwp.getVal();
-
-			Arrays.sort(rels);
-			Arrays.sort(pss);
-
-			rl = new StringBuilder(chld.length);
-			psl = new StringBuilder(chld.length);
-			for (int j = 0; j < chld.length; j++) {
-				rl.append((char) rels[j]);
-				psl.append((char) pss[j]);
-			}
-			rli = mf.register("rli", rl.toString());
-			pli = mf.register("pli", psl.toString());
-
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = rli;
-			dwwp.v4 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = fm;
-			dwwp.v3 = rli;
-			dwwp.v4 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = fm;
-			dwwp.v4 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-
-			dwwp.v0 = f++;
-			dwwp.v2 = rli;
-			dwwp.v3 = h;
-			dwwp.cz4();
-			v[n++] = dwwp.getVal();
-
-			dl1.v0 = f++;
-			dl1.v2 = h;
-			dl1.v3 = hrel;
-			dl1.v4 = hhrel;
-			dl1.v5 = hh;
-			dl1.v6 = rlast;
-			dl1.cz6();
-			v[n++] = dl1.getVal();
-			dwp.v0 = f++;
-			dwp.v2 = fm;
-			dwp.v3 = hrel;
-			dwp.v4 = hh;
-			dwp.cz5();
-			v[n++] = dwp.getVal();
-			dwp.v0 = f++;
-			dwp.v2 = hhf;
-			dwp.v3 = hrel;
-			dwp.v4 = hh;
-			dwp.v5 = h;
-			dwp.cz6();
-			v[n++] = dwp.getVal();
-
-			dwwp.v0 = f++;
-			dwwp.v2 = fm;
-			dwwp.v3 = hhf;
-			dwwp.v4 = hrel;
-			dwwp.v5 = hhrel;
-			dwwp.cz6();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = h;
-			dwwp.v3 = hhf;
-			dwwp.v4 = hrel;
-			dwwp.v5 = hhrel;
-			dwwp.cz6();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = fm;
-			dwwp.v3 = hh;
-			dwwp.v4 = hrel;
-			dwwp.v5 = hhrel;
-			dwwp.cz6();
-			v[n++] = dwwp.getVal();
-
-			dwwp.v0 = f++;
-			dwwp.v2 = fm;
-			dwwp.v3 = hhf;
-			dwwp.v4 = h;
-			dwwp.v5 = hh;
-			dwwp.cz6();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = h;
-			dwwp.v3 = hhf;
-			dwwp.v4 = hrel;
-			dwwp.v5 = hh;
-			dwwp.cz6();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = fm;
-			dwwp.v3 = hh;
-			dwwp.v4 = h;
-			dwwp.v5 = hrel;
-			dwwp.cz6();
-			v[n++] = dwwp.getVal();
-
-			// dl1.v0= f++; dl1.v2=h;dl1.v3=hrel; dl1.v4=hhrel;dl1.v5=hh;
-			// dl1.v6=hhhrel;dl1.v7=hhh; dl1.v8=rlast; dl1.cz9();
-			// v[n++]=dl1.getVal();
-			// dl1.v0= f++; dl1.v2=h;dl1.v3=hrel; dl1.v4=hhrel;dl1.v5=hh;
-			// dl1.v6=hhhrel;dl1.v7=hhh; dl1.v8=rlast; dl1.cz9();
-			// v[n++]=dl1.getVal();
-			// dl1.v0= f++; dl1.v2=h;dl1.v3=hrel; dl1.v4=dir;dl1.v5=hh;
-			// dl1.v6=hhh;dl1.v7=rlast; dl1.v8=r1; dl1.cz9();
-			// v[n++]=dl1.getVal();
-			// dl1.v0= f++; dl1.v2=h;dl1.v3=hh; dl1.v4=hhh;dl1.v5=hrel;
-			// dl1.cz6(); v[n++]=dl1.getVal();
-
-			short hp = parse.heads[k];
-			short[] hchld = hp == -1 ? new short[0] : children(parse.heads, hp);
-
-			int[] hrels = new int[hchld.length];
-			int[] hpss = new int[hchld.length];
-			for (int j = 0; j < hchld.length; j++) {
-				hrels[j] = parse.labels[hchld[j]];
-				hpss[j] = is.pposs[i][hchld[j]];
-			}
-
-			StringBuilder hrl = new StringBuilder(hchld.length);
-			StringBuilder hpsl = new StringBuilder(hchld.length);
-			for (int j = 0; j < hchld.length; j++) {
-				hrl.append((char) hrels[j]);
-				hpsl.append((char) hpss[j]);
-			}
-			int hrli = mf.register("rli", hrl.toString());
-			int hpli = mf.register("pli", hpsl.toString());
-
-			dwwp.v0 = f++;
-			dwwp.v2 = hpli;
-			dwwp.v3 = hrli;
-			dwwp.cz4();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = fm;
-			dwwp.v3 = hrli;
-			dwwp.cz4();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = hpli;
-			dwwp.v3 = fm;
-			dwwp.cz4();
-			v[n++] = dwwp.getVal();
-
-			dwwp.v0 = f++;
-			dwwp.v2 = hpli;
-			dwwp.v3 = rli;
-			dwwp.v4 = hrel;
-			dwwp.v5 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = hrli;
-			dwwp.v4 = hrel;
-			dwwp.v5 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = hpli;
-			dwwp.v3 = hpli;
-			dwwp.v4 = hrel;
-			dwwp.v5 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-
-		}
-
-		v[n] = Integer.MIN_VALUE;
-	}
-
-	/**
-	 * This works seem works well with n-best n=8 (88.858074) , n=10
-	 * (88.836884), n=12 (88.858) n=14 (88.913417) n=16 (88.79546) n=20
-	 * (88.80621) n 50 (88.729364) 1-best: 88.749605
-	 *
-	 * @param is
-	 * @param i
-	 * @param parse
-	 * @param rank
-	 * @param v
-	 * @param cluster
-	 */
-	public void extractFeatures(Instances is, int i, ParseNBest parse, int rank, long[] v, Cluster cluster) {
-
-		// mf.getValue(REL, "SB");
-
-		int f = 1, n = 0;
-
-		for (short k = 0; k < is.length(i) - 1; k++) {
-
-			short[] chld = children(parse.heads, k);
-
-			int abs = Math.abs(parse.heads[k] - k);
-			if (abs > 10) {
-			} else if (abs > 5) {
-			} else if (abs == 5) {
-			} else if (abs == 4) {
-			} else if (abs == 3) {
-			} else if (abs == 2) {
-			} else {
-			}
-
-			f = 2;
-
-			int fm = is.forms[i][k];
-			int hh = k != 0 ? is.pposs[i][parse.heads[k]] : s_end;
-			int h = is.pposs[i][k];
-			int hrel = parse.labels[k];// is.labels[i][k];
-			int hhrel = k != 0 ? parse.labels[parse.heads[k]] : s_relend;
-			int hhf = k != 0 ? is.forms[i][parse.heads[k]] : s_stwrd;
-
-			int rlast = chld.length > 0 ? parse.labels[chld[chld.length - 1]] : s_relend;
-
-			int[] rels = new int[chld.length];
-			int[] pss = new int[chld.length];
-			int[] rc = new int[30]; // 20 was a good length
-
-			for (int j = 0; j < chld.length; j++) {
-				rels[j] = parse.labels[chld[j]];
-				if (rels[j] < rc.length)
-					rc[rels[j]]++;
-				pss[j] = is.pposs[i][chld[j]];
-				// cls[j] =
-				// is.forms[i][chld[j]]==-1?0:cluster.getLP(is.forms[i][chld[j]]);
-				// cls[j] = cls[j]==-1?0:cls[j];
-			}
-
-			StringBuilder rl = new StringBuilder(chld.length);
-			StringBuilder psl = new StringBuilder(chld.length);
-			new StringBuilder(chld.length);
-			for (int j = 0; j < chld.length; j++) {
-				rl.append((char) rels[j]);
-				psl.append((char) pss[j]);
-				// csl.append((char)cls[j]);
-			}
-
-			int rli = mf.register("rli", rl.toString());
-			int pli = mf.register("pli", psl.toString());
-			// int cli = mf.register("cli", csl.toString());
-
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = rli;
-			dwwp.v4 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = fm;
-			dwwp.v3 = rli;
-			dwwp.v4 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = fm;
-			dwwp.v4 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-			// dwwp.v0=f++; dwwp.v2=cli; dwwp.v3=fm; dwwp.v4=h; dwwp.cz5();
-			// v[n++]=dwwp.getVal();
-
-			dwwp.v0 = f++;
-			dwwp.v2 = rli;
-			dwwp.cz3();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.cz3();
-			v[n++] = dwwp.getVal();
-			// dwwp.v0=f++; dwwp.v2=cli; dwwp.cz3(); v[n++]=dwwp.getVal();
-
-			// dwwp.v0=f++; dwwp.v2=cli;dwwp.v3=h; dwwp.cz4();
-			// v[n++]=dwwp.getVal();
-
-			for (int j = 1; j < rc.length; j++) {
-				dwwp.v0 = f++;
-				dwwp.v2 = rc[j] == 0 ? 1 : rc[j] == 1 ? 2 : 3;
-				dwwp.v3 = j;
-				dwwp.cz4();
-				v[n++] = dwwp.getVal();//
-			}
-
-			dwwp.v0 = f++;
-			dwwp.v2 = rli;
-			dwwp.v3 = h;
-			dwwp.cz4();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = h;
-			dwwp.cz4();
-			v[n++] = dwwp.getVal();
-
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = hh;
-			dwwp.v4 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = rli;
-			dwwp.v3 = hh;
-			dwwp.v4 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = rli;
-			dwwp.v4 = hh;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = rli;
-			dwwp.v4 = hh;
-			dwwp.v5 = h;
-			dwwp.cz6();
-			v[n++] = dwwp.getVal();
-
-			dwp.v0 = f++;
-			dwp.v2 = rli;
-			dwp.v3 = hrel;
-			dwp.v4 = hh;
-			dwp.v5 = h;
-			dwp.cz6();
-			v[n++] = dwp.getVal();
-
-			// dwwp.v0=f++; dwwp.v2=h; dwwp.v3=hh; dwwp.v4=dist; dwwp.cz5();
-			// v[n++]=dwwp.getVal();
-
-			Arrays.sort(rels);
-			Arrays.sort(pss);
-
-			rl = new StringBuilder(chld.length);
-			psl = new StringBuilder(chld.length);
-			for (int j = 0; j < chld.length; j++) {
-				rl.append((char) rels[j]);
-				psl.append((char) pss[j]);
-			}
-			rli = mf.register("rli", rl.toString());
-			pli = mf.register("pli", psl.toString());
-
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = rli;
-			dwwp.v4 = 1;
-			dwwp.v5 = h;
-			dwwp.cz6();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = fm;
-			dwwp.v3 = rli;
-			dwwp.v4 = 1;
-			dwwp.v5 = h;
-			dwwp.cz6();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = fm;
-			dwwp.v4 = 1;
-			dwwp.v5 = h;
-			dwwp.cz6();
-			v[n++] = dwwp.getVal();
-
-			dwwp.v0 = f++;
-			dwwp.v2 = rli;
-			dwwp.v3 = h;
-			dwwp.cz4();
-			v[n++] = dwwp.getVal();
-
-			dl1.v0 = f++;
-			dl1.v2 = h;
-			dl1.v3 = hrel;
-			dl1.v4 = hhrel;
-			dl1.v5 = hh;
-			dl1.v6 = rlast;
-			dl1.cz6();
-			v[n++] = dl1.getVal();
-			dwp.v0 = f++;
-			dwp.v2 = fm;
-			dwp.v3 = hrel;
-			dwp.v4 = hh;
-			dwp.cz5();
-			v[n++] = dwp.getVal();
-			dwp.v0 = f++;
-			dwp.v2 = hhf;
-			dwp.v3 = hrel;
-			dwp.v4 = hh;
-			dwp.v5 = h;
-			dwp.cz6();
-			v[n++] = dwp.getVal();
-		}
-
-		v[n] = Integer.MIN_VALUE;
-	}
-
-	/**
-	 * 
-	 * Works well!
-	 * 
-	 * @param is
-	 * @param i
-	 * @param parse
-	 * @param rank
-	 * @param v
-	 */
-	public void extractFeatures6(Instances is, int i, ParseNBest parse, int rank, long[] v) {
-
-		// mf.getValue(REL, "SB");
-
-		int f = 1, n = 0;
-
-		for (short k = 0; k < is.length(i) - 1; k++) {
-
-			short[] chld = children(parse.heads, k);
-
-			f = 2;
-
-			int fm = is.forms[i][k];
-			int hh = k != 0 ? is.pposs[i][parse.heads[k]] : s_end;
-			int h = is.pposs[i][k];
-			int hrel = parse.labels[k];// is.labels[i][k];
-			int hhrel = k != 0 ? parse.labels[parse.heads[k]] : s_relend;
-			int hhf = k != 0 ? is.forms[i][parse.heads[k]] : s_stwrd;
-
-			int rlast = chld.length > 0 ? parse.labels[chld[chld.length - 1]] : s_relend;
-
-			int[] rels = new int[chld.length];
-			int[] pss = new int[chld.length];
-
-			int[] rc = new int[30]; // 20 was a good length
-
-			for (int j = 0; j < chld.length; j++) {
-				rels[j] = parse.labels[chld[j]];
-				if (rels[j] < rc.length)
-					rc[rels[j]]++;
-				// if (rels[j]==sb) numSB++;
-				pss[j] = is.pposs[i][chld[j]];
-			}
-
-			StringBuilder rl = new StringBuilder(chld.length);
-			StringBuilder psl = new StringBuilder(chld.length);
-			for (int j = 0; j < chld.length; j++) {
-				rl.append((char) rels[j]);
-				psl.append((char) pss[j]);
-			}
-
-			int rli = mf.register("rli", rl.toString());
-			int pli = mf.register("pli", psl.toString());
-
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = rli;
-			dwwp.v4 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = fm;
-			dwwp.v3 = rli;
-			dwwp.v4 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = fm;
-			dwwp.v4 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-
-			dwwp.v0 = f++;
-			dwwp.v2 = rli;
-			dwwp.cz3();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.cz3();
-			v[n++] = dwwp.getVal();
-
-			for (int j = 1; j < rc.length; j++) {
-				dwwp.v0 = f++;
-				dwwp.v2 = rc[j] == 0 ? 1 : rc[j] == 1 ? 2 : 3;
-				dwwp.v3 = j;
-				dwwp.cz4();
-				v[n++] = dwwp.getVal();//
-			}
-
-			dwwp.v0 = f++;
-			dwwp.v2 = rli;
-			dwwp.v3 = h;
-			dwwp.cz4();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = h;
-			dwwp.cz4();
-			v[n++] = dwwp.getVal();
-
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = hh;
-			dwwp.v4 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = rli;
-			dwwp.v3 = hh;
-			dwwp.v4 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = rli;
-			dwwp.v4 = hh;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = rli;
-			dwwp.v4 = hh;
-			dwwp.v5 = h;
-			dwwp.cz6();
-			v[n++] = dwwp.getVal();
-
-			dwp.v0 = f++;
-			dwp.v2 = rli;
-			dwp.v3 = hrel;
-			dwp.v4 = hh;
-			dwp.v5 = h;
-			dwp.cz6();
-			v[n++] = dwp.getVal();
-
-			Arrays.sort(rels);
-			Arrays.sort(pss);
-
-			rl = new StringBuilder(chld.length);
-			psl = new StringBuilder(chld.length);
-			for (int j = 0; j < chld.length; j++) {
-				rl.append((char) rels[j]);
-				psl.append((char) pss[j]);
-			}
-			rli = mf.register("rli", rl.toString());
-			pli = mf.register("pli", psl.toString());
-
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = rli;
-			dwwp.v4 = 1;
-			dwwp.v5 = h;
-			dwwp.cz6();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = fm;
-			dwwp.v3 = rli;
-			dwwp.v4 = 1;
-			dwwp.v5 = h;
-			dwwp.cz6();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = fm;
-			dwwp.v4 = 1;
-			dwwp.v5 = h;
-			dwwp.cz6();
-			v[n++] = dwwp.getVal();
-
-			dwwp.v0 = f++;
-			dwwp.v2 = rli;
-			dwwp.v3 = h;
-			dwwp.cz4();
-			v[n++] = dwwp.getVal();
-
-			dl1.v0 = f++;
-			dl1.v2 = h;
-			dl1.v3 = hrel;
-			dl1.v4 = hhrel;
-			dl1.v5 = hh;
-			dl1.v6 = rlast;
-			dl1.cz6();
-			v[n++] = dl1.getVal();
-			dwp.v0 = f++;
-			dwp.v2 = fm;
-			dwp.v3 = hrel;
-			dwp.v4 = hh;
-			dwp.cz5();
-			v[n++] = dwp.getVal();
-			dwp.v0 = f++;
-			dwp.v2 = hhf;
-			dwp.v3 = hrel;
-			dwp.v4 = hh;
-			dwp.v5 = h;
-			dwp.cz6();
-			v[n++] = dwp.getVal();
-
-		}
-
-		v[n] = Integer.MIN_VALUE;
-	}
-
-	public void extractFeatures2(Instances is, int i, ParseNBest parse, int rank, long[] v) {
-
-		int f = 1, n = 0;
-
-		for (short k = 0; k < is.length(i) - 1; k++) {
-
-			short[] chld = children(parse.heads, k);
-
-			f = 2;
-
-			int fm = is.forms[i][k];
-			int hh = k != 0 ? is.pposs[i][parse.heads[k]] : s_end;
-			int h = is.pposs[i][k];
-			int hrel = parse.labels[k];// is.labels[i][k];
-			int hhrel = k != 0 ? parse.labels[parse.heads[k]] : s_relend;
-			int hhf = k != 0 ? is.forms[i][parse.heads[k]] : s_stwrd;
-
-			int rlast = chld.length > 0 ? parse.labels[chld[chld.length - 1]] : s_relend;
-
-			int[] rels = new int[chld.length];
-			int[] pss = new int[chld.length];
-
-			for (int j = 0; j < chld.length; j++) {
-				rels[j] = parse.labels[chld[j]];
-				pss[j] = is.pposs[i][chld[j]];
-			}
-
-			StringBuilder rl = new StringBuilder(chld.length);
-			StringBuilder psl = new StringBuilder(chld.length);
-			for (int j = 0; j < chld.length; j++) {
-				rl.append((char) rels[j]);
-				psl.append((char) pss[j]);
-			}
-
-			int rli = mf.register("rli", rl.toString());
-			int pli = mf.register("pli", psl.toString());
-
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = rli;
-			dwwp.v4 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = fm;
-			dwwp.v3 = rli;
-			dwwp.v4 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = fm;
-			dwwp.v4 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-
-			dwwp.v0 = f++;
-			dwwp.v2 = rli;
-			dwwp.cz3();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.cz3();
-			v[n++] = dwwp.getVal();
-
-			dwwp.v0 = f++;
-			dwwp.v2 = rli;
-			dwwp.v3 = h;
-			dwwp.cz4();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = h;
-			dwwp.cz4();
-			v[n++] = dwwp.getVal();
-
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = hh;
-			dwwp.v4 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = rli;
-			dwwp.v3 = hh;
-			dwwp.v4 = h;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = rli;
-			dwwp.v4 = hh;
-			dwwp.cz5();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = rli;
-			dwwp.v4 = hh;
-			dwwp.v5 = h;
-			dwwp.cz6();
-			v[n++] = dwwp.getVal();
-
-			dwp.v0 = f++;
-			dwp.v2 = rli;
-			dwp.v3 = hrel;
-			dwp.v4 = hh;
-			dwp.v5 = h;
-			dwp.cz6();
-			v[n++] = dwp.getVal();
-
-			Arrays.sort(rels);
-			Arrays.sort(pss);
-
-			rl = new StringBuilder(chld.length);
-			psl = new StringBuilder(chld.length);
-			for (int j = 0; j < chld.length; j++) {
-				rl.append((char) rels[j]);
-				psl.append((char) pss[j]);
-			}
-			rli = mf.register("rli", rl.toString());
-			pli = mf.register("pli", psl.toString());
-
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = rli;
-			dwwp.v4 = 1;
-			dwwp.v5 = h;
-			dwwp.cz6();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = fm;
-			dwwp.v3 = rli;
-			dwwp.v4 = 1;
-			dwwp.v5 = h;
-			dwwp.cz6();
-			v[n++] = dwwp.getVal();
-			dwwp.v0 = f++;
-			dwwp.v2 = pli;
-			dwwp.v3 = fm;
-			dwwp.v4 = 1;
-			dwwp.v5 = h;
-			dwwp.cz6();
-			v[n++] = dwwp.getVal();
-
-			dwwp.v0 = f++;
-			dwwp.v2 = rli;
-			dwwp.v3 = h;
-			dwwp.cz4();
-			v[n++] = dwwp.getVal();
-
-			dl1.v0 = f++;
-			dl1.v2 = h;
-			dl1.v3 = hrel;
-			dl1.v4 = hhrel;
-			dl1.v5 = hh;
-			dl1.v6 = rlast;
-			dl1.cz6();
-			v[n++] = dl1.getVal();
-			dwp.v0 = f++;
-			dwp.v2 = fm;
-			dwp.v3 = hrel;
-			dwp.v4 = hh;
-			dwp.cz5();
-			v[n++] = dwp.getVal();
-			dwp.v0 = f++;
-			dwp.v2 = hhf;
-			dwp.v3 = hrel;
-			dwp.v4 = hh;
-			dwp.v5 = h;
-			dwp.cz6();
-			v[n++] = dwp.getVal();
-
-		}
-
-		v[n] = Integer.MIN_VALUE;
-	}
-
-	/**
-	 * @param parse
-	 * @param k
-	 * @return
-	 */
-	private short[] children(short[] heads, short h) {
-
-		int c = 0;
-		for (short head : heads)
-			if (head == h)
-				c++;
-
-		short[] clds = new short[c];
-		c = 0;
-		for (int k = 0; k < heads.length; k++)
-			if (heads[k] == h)
-				clds[c++] = (short) k;
-		return clds;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/extractors/ParallelExtract.java b/dependencyParser/mate-tools/src/extractors/ParallelExtract.java
deleted file mode 100755
index 5e0ec08..0000000
--- a/dependencyParser/mate-tools/src/extractors/ParallelExtract.java
+++ /dev/null
@@ -1,193 +0,0 @@
-package extractors;
-
-import java.util.ArrayList;
-import java.util.concurrent.Callable;
-
-import is2.data.Cluster;
-import is2.data.DataF;
-import is2.data.Edges;
-import is2.data.F2SF;
-import is2.data.Instances;
-import is2.data.Long2IntInterface;
-
-/**
- * @author Bernd Bohnet, 30.08.2009
- *
- *         This class implements a parallel feature extractor.
- */
-final public class ParallelExtract implements Callable<Object> {
-	// the data space of the weights for a dependency tree
-	final DataF d;
-
-	// the data extractor does the actual work
-	final Extractor extractor;
-
-	private Instances is;
-	private int i;
-
-	private F2SF para;
-
-	private Cluster cluster;
-
-	private Long2IntInterface li;
-
-	public ParallelExtract(Extractor e, Instances is, int i, DataF d, F2SF para, Cluster cluster,
-			Long2IntInterface li) {
-
-		this.is = is;
-		extractor = e;
-		this.d = d;
-		this.i = i;
-		this.para = para;
-		this.cluster = cluster;
-		this.li = li;
-	}
-
-	public static class DSet {
-		int w1, w2;
-	}
-
-	@Override
-	public Object call() {
-
-		try {
-
-			F2SF f = para;
-
-			short[] pos = is.pposs[i];
-			int[] forms = is.forms[i];
-			int[] lemmas = is.plemmas[i];
-			short[][] feats = is.feats[i];
-			int length = pos.length;
-
-			long[] svs = new long[250];
-
-			int type = extractor.getType();
-
-			while (true) {
-
-				DSet set = get();
-				if (set == null)
-					break;
-
-				int w1 = set.w1;
-				int w2 = set.w2;
-
-				f.clear();
-				int n = extractor.basic(pos, forms, w1, w2, cluster, f);
-				d.pl[w1][w2] = f.getScoreF();
-
-				short[] labels = Edges.get(pos[w1], pos[w2], false);
-				float[][] lab = d.lab[w1][w2];
-
-				extractor.firstm(is, i, w1, w2, 0, cluster, svs);
-
-				if (labels != null) {
-
-					for (int l = labels.length - 1; l >= 0; l--) {
-
-						short label = labels[l];
-
-						f.clear();
-						for (int k = svs.length - 1; k >= 0; k--)
-							if (svs[k] > 0)
-								f.add(li.l2i(svs[k] + label * type));
-						lab[label][0] = f.getScoreF();
-					}
-				}
-
-				labels = Edges.get(pos[w1], pos[w2], true);
-
-				if (labels != null) {
-
-					for (int l = labels.length - 1; l >= 0; l--) {
-
-						int label = labels[l];
-						f.clear();
-						for (int k = svs.length - 1; k >= 0; k--)
-							if (svs[k] > 0)
-								f.add(li.l2i(svs[k] + label * type));
-						lab[label][1] = f.getScoreF();
-					}
-				}
-
-				int s = w1 < w2 ? w1 : w2;
-				int e = w1 < w2 ? w2 : w1;
-
-				int sg = w1 < w2 ? w1 : 0;
-				int eg = w1 < w2 ? length : w1 + 1;
-
-				for (int m = s; m < e; m++) {
-					for (int dir = 0; dir < 2; dir++) {
-						labels = Edges.get(pos[w1], pos[w2], dir == 1);
-						float lab2[] = new float[labels.length];
-
-						int g = (m == s || e == m) ? -1 : m;
-
-						extractor.siblingm(is, i, pos, forms, lemmas, feats, w1, w2, g, 0, cluster, svs, n);
-
-						for (int l = labels.length - 1; l >= 0; l--) {
-
-							int label = labels[l];
-							f.clear();
-
-							for (int k = svs.length - 1; k >= 0; k--) {
-								if (svs[k] > 0)
-									f.add(li.l2i(svs[k] + label * type));
-							}
-							lab2[l] = f.score;// f.getScoreF();
-						}
-						d.sib[w1][w2][m][dir] = lab2;
-					}
-				}
-
-				for (int m = sg; m < eg; m++) {
-					for (int dir = 0; dir < 2; dir++) {
-						labels = Edges.get(pos[w1], pos[w2], dir == 1);
-						float[] lab2 = new float[labels.length];
-
-						int g = (m == s || e == m) ? -1 : m;
-
-						extractor.gcm(is, i, w1, w2, g, 0, cluster, svs);
-
-						for (int l = labels.length - 1; l >= 0; l--) {
-
-							int label = labels[l];
-
-							f.clear();
-							for (int k = svs.length - 1; k >= 0; k--) {
-								if (svs[k] > 0)
-									f.add(li.l2i(svs[k] + label * type));
-							}
-							lab2[l] = f.getScoreF();
-						}
-						d.gra[w1][w2][m][dir] = lab2;
-					}
-				}
-
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-		return null;
-	}
-
-	static ArrayList<DSet> sets = new ArrayList<DSet>();
-
-	private DSet get() {
-
-		synchronized (sets) {
-			if (sets.size() == 0)
-				return null;
-			return sets.remove(sets.size() - 1);
-		}
-	}
-
-	static public void add(int w1, int w2) {
-		DSet ds = new DSet();
-		ds.w1 = w1;
-		ds.w2 = w2;
-		sets.add(ds);
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/Closed.java b/dependencyParser/mate-tools/src/is2/data/Closed.java
deleted file mode 100755
index 3e938a8..0000000
--- a/dependencyParser/mate-tools/src/is2/data/Closed.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package is2.data;
-
-final public class Closed {
-
-	public double p;
-	short b, e, m;
-	byte dir;
-
-	Closed d;
-	Open u;
-
-	public Closed(short s, short t, int m, int dir, Open u, Closed d, float score) {
-		this.b = s;
-		this.e = t;
-		this.m = (short) m;
-		this.dir = (byte) dir;
-		this.u = u;
-		this.d = d;
-		p = score;
-	}
-
-	public void create(Parse parse) {
-		if (u != null)
-			u.create(parse);
-		if (d != null)
-			d.create(parse);
-	}
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/Cluster.java b/dependencyParser/mate-tools/src/is2/data/Cluster.java
deleted file mode 100644
index 5cc8427..0000000
--- a/dependencyParser/mate-tools/src/is2/data/Cluster.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/**
- *
- */
-package is2.data;
-
-import java.io.BufferedReader;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-
-import is2.util.DB;
-
-/**
- * @author Dr. Bernd Bohnet, 28.10.2010
- *
- *
- */
-final public class Cluster {
-
-	public static final String LPATH = "LP";
-	public static final String SPATH = "SP";
-
-	// [word][p] p = [0:long-path | 1:short-path]
-	final private short[][] word2path;
-
-	public Cluster() {
-		word2path = new short[0][0];
-	}
-
-	/**
-	 * @param clusterFile
-	 * @param mf
-	 *
-	 */
-	public Cluster(String clusterFile, IEncoderPlus mf, int ls) {
-
-		final String REGEX = "\t";
-
-		// register words
-		try {
-			BufferedReader inputReader = new BufferedReader(
-					new InputStreamReader(new FileInputStream(clusterFile), "UTF-8"), 32768);
-
-			int cnt = 0;
-			String line;
-			while ((line = inputReader.readLine()) != null) {
-
-				cnt++;
-				try {
-					String[] split = line.split(REGEX);
-					mf.register(SPATH, split[0].length() < ls ? split[0] : split[0].substring(0, ls));
-					mf.register(LPATH, split[0]);
-					mf.register(PipeGen.WORD, split[1]);
-				} catch (Exception e) {
-					System.out.println("Error in cluster line " + cnt + " error: " + e.getMessage());
-				}
-			}
-			System.out.println("read number of clusters " + cnt);
-			inputReader.close();
-
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		word2path = new short[mf.getFeatureCounter().get(PipeGen.WORD)][2];
-
-		// insert words
-		try {
-			String line;
-			BufferedReader inputReader = new BufferedReader(
-					new InputStreamReader(new FileInputStream(clusterFile), "UTF-8"), 32768);
-
-			while ((line = inputReader.readLine()) != null) {
-
-				String[] split = line.split(REGEX);
-				int wd = mf.getValue(PipeGen.WORD, split[1]);
-				word2path[wd][0] = (short) mf.getValue(SPATH,
-						split[0].length() < ls ? split[0] : split[0].substring(0, ls));
-				word2path[wd][1] = (short) mf.getValue(LPATH, split[0]);
-			}
-			inputReader.close();
-			int fill = 0;
-			for (short[] element : word2path) {
-				if (element[0] != 0)
-					fill++;
-			}
-			/*
-			 * for(int l = 0; l<word2path.length; l++ ){ if (word2path[l][1]!=0)
-			 * fillL++; if (word2path[l][1]<-1)
-			 * System.out.println("lower "+word2path[l][1]); }
-			 */
-			System.out.println("filled " + fill + " of " + word2path.length);
-
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	/**
-	 * Read the cluster
-	 * 
-	 * @param dos
-	 * @throws IOException
-	 */
-	public Cluster(DataInputStream dis) throws IOException {
-
-		word2path = new short[dis.readInt()][2];
-		for (int i = 0; i < word2path.length; i++) {
-			word2path[i][0] = dis.readShort();
-			word2path[i][1] = dis.readShort();
-		}
-		DB.println("Read cluster with " + word2path.length + " words ");
-	}
-
-	/**
-	 * Write the cluster
-	 * 
-	 * @param dos
-	 * @throws IOException
-	 */
-	public void write(DataOutputStream dos) throws IOException {
-
-		dos.writeInt(word2path.length);
-		for (short[] i : word2path) {
-			dos.writeShort(i[0]);
-			dos.writeShort(i[1]);
-		}
-
-	}
-
-	/**
-	 * @param form
-	 *            the id of a word form
-	 * @return the short path to the word form in the cluster
-	 * 
-	 *         final public int getSP(int form) { if (word2path.length<form)
-	 *         return -1; return word2path[form][0]; }
-	 */
-	/**
-	 * get the long path to a word form in the cluster
-	 * 
-	 * @param form
-	 *            the id of a word form
-	 * @return the long path to the word
-	 */
-	final public int getLP(int form) {
-		if (word2path.length <= form || word2path[form].length <= 0)
-			return -1;
-		return word2path[form][0] == 0 ? -1 : word2path[form][0];
-	}
-
-	final public int getLP(int form, int l) {
-		if (word2path.length < form)
-			return -1;
-		return word2path[form][l] == 0 ? -1 : word2path[form][l];
-	}
-
-	final public int size() {
-		return word2path.length;
-	}
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/D4.java b/dependencyParser/mate-tools/src/is2/data/D4.java
deleted file mode 100644
index d607668..0000000
--- a/dependencyParser/mate-tools/src/is2/data/D4.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/**
- *
- */
-package is2.data;
-
-/**
- * @author Dr. Bernd Bohnet, 30.10.2010
- * 
- *         This class computes the mapping of features to the weight vector.
- */
-final public class D4 extends DX {
-	private long shift;
-	private long h;
-
-	private final Long2IntInterface _li;
-
-	public D4(Long2IntInterface li) {
-		_li = li;
-	}
-
-	@Override
-	final public void clean() {
-		v0 = 0;
-		v1 = 0;
-		v2 = 0;
-		v3 = 0;
-		v4 = 0;
-		v5 = 0;
-		v6 = 0;
-		v7 = 0;
-		v8 = 0;
-		shift = 0;
-		h = 0;
-	}
-
-	@Override
-	final public void cz3() {
-		if (v0 < 0 || v1 < 0 || v2 < 0) {
-			h = -1;
-			return;
-		}
-
-		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1);
-		shift *= a2;
-	}
-
-	final public long c3() {
-		if (v0 < 0 || v1 < 0 || v2 < 0) {
-			h = -1;
-			return h;
-		}
-
-		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1);
-		shift *= a2;
-		return h;
-	}
-
-	@Override
-	final public void cz4() {
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0) {
-			h = -1;
-			return;
-		}
-
-		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2);
-		shift *= a3;
-	}
-
-	final public long c4() {
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0) {
-			h = -1;
-			return h;
-		}
-
-		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2);
-		shift *= a3;
-		return h;
-	}
-
-	@Override
-	final public void cz5() {
-
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0) {
-			h = -1;
-			return;
-		}
-
-		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2) + v4 * (shift *= a3);
-		shift *= a4;
-
-	}
-
-	final public long c5() {
-
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0) {
-			h = -1;
-			return h;
-		}
-
-		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2) + v4 * (shift *= a3);
-		shift *= a4;
-		return h;
-	}
-
-	@Override
-	final public void cz6() {
-
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0) {
-			h = -1;
-			return;
-		}
-
-		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2);
-		h += v4 * (shift *= a3) + v5 * (shift *= a4);
-		shift *= a5;
-	}
-
-	final public long c6() {
-
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0) {
-			h = -1;
-			return h;
-		}
-
-		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2);
-		h += v4 * (shift *= a3) + v5 * (shift *= a4);
-		shift *= a5;
-		return h;
-	}
-
-	@Override
-	final public long cs(int b, int v) {
-		if (h < 0) {
-			h = -1;
-			return h;
-		}
-
-		h += v * shift;
-		shift *= b;
-		return h;
-
-	}
-
-	@Override
-	final public void csa(int b, int v, IFV f) {
-		if (h < 0) {
-			h = -1;
-			return;
-		}
-
-		h += v * shift;
-		shift *= b;
-		f.add(_li.l2i(h));
-	}
-
-	@Override
-	final public long csa(int b, int v) {
-		if (h < 0) {
-			h = -1;
-			return -1;
-		}
-
-		h += v * shift;
-		shift *= b;
-		return h;
-	}
-
-	@Override
-	public final long getVal() {
-		return h;
-	}
-
-	@Override
-	public final void map(IFV f, long l) {
-		if (l > 0)
-			f.add(this._li.l2i(l));
-	}
-
-	/**
-	 * @param f
-	 */
-	final public void add(IFV f) {
-		f.add(_li.l2i(h));
-	}
-
-	@Override
-	final public void cz7() {
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0) {
-			h = -1;
-			return;
-		}
-
-		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2);
-		h += v4 * (shift *= a3) + v5 * (shift *= a4) + v6 * (shift *= a5);
-		shift *= a6;
-
-	}
-
-	final public long c7() {
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0) {
-			h = -1;
-			return h;
-		}
-
-		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2);
-		h += v4 * (shift *= a3) + v5 * (shift *= a4) + v6 * (shift *= a5);
-		shift *= a6;
-		return h;
-	}
-
-	/**
-	 *
-	 */
-	@Override
-	final public void cz8() {
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0 || v7 < 0) {
-			h = -1;
-			return;
-		}
-
-		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2);
-		h += v4 * (shift *= a3) + v5 * (shift *= a4) + v6 * (shift *= a5) + v7 * (shift *= a6);
-		shift *= a7;
-	}
-
-	final public void cz9() {
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0 || v7 < 0 || v8 < 0) {
-			h = -1;
-			return;
-		}
-
-		h = v0 + v1 * (shift = a0) + v2 * (shift *= a1) + v3 * (shift *= a2);
-		h += v4 * (shift *= a3) + v5 * (shift *= a4) + v6 * (shift *= a5) + v7 * (shift *= a6) + v8 * (shift *= a7);
-		shift *= a8;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.data.DX#computeLabeValue(short, short)
-	 */
-	@Override
-	public int computeLabeValue(int label, int shift) {
-		return label * shift;
-	}
-
-	@Override
-	public void fix() {
-
-	}
-
-}
\ No newline at end of file
diff --git a/dependencyParser/mate-tools/src/is2/data/D6.java b/dependencyParser/mate-tools/src/is2/data/D6.java
deleted file mode 100644
index 0a17d51..0000000
--- a/dependencyParser/mate-tools/src/is2/data/D6.java
+++ /dev/null
@@ -1,260 +0,0 @@
-/**
- *
- */
-package is2.data;
-
-import is2.util.DB;
-
-/**
- * @author Dr. Bernd Bohnet, 30.10.2010
- * 
- *         This class computes the mapping of features to the weight vector.
- */
-final public class D6 extends DX {
-	private long shift;
-	private long h;
-
-	private final Long2IntInterface _li;
-
-	public D6(Long2IntInterface li) {
-		_li = li;
-	}
-
-	boolean fixed = false;
-
-	@Override
-	public void fix() {
-
-		if (fixed) {
-			DB.println("warning: already fixed");
-			// return;
-		}
-
-		long t0 = 1, t1 = a0, t2 = t1 * a1, t3 = t2 * a2, t4 = t3 * a3, t5 = t4 * a4, t6 = t5 * a5, t7 = t6 * a6,
-				t8 = t7 * a7, t9 = t8 * a8;
-
-		a0 = t0;
-		a1 = t1;
-		a2 = t2;
-		a3 = t3;
-		a4 = t4;
-		a5 = t5;
-		a6 = t6;
-		a7 = t7;
-		a8 = t8;
-		a9 = t9;
-
-		fixed = true;
-	}
-
-	@Override
-	final public void clean() {
-		v0 = 0;
-		v1 = 0;
-		v2 = 0;
-		v3 = 0;
-		v4 = 0;
-		v5 = 0;
-		v6 = 0;
-		v7 = 0;
-		v8 = 0;
-		shift = 0;
-		h = 0;
-	}
-
-	@Override
-	final public void cz3() {
-		if (v0 < 0 || v1 < 0 || v2 < 0) {
-			h = -1;
-			return;
-		}
-
-		h = v0 + v1 * a1 + v2 * a2;
-		shift = a3;
-	}
-
-	final public long c3() {
-		if (v0 < 0 || v1 < 0 || v2 < 0) {
-			h = -1;
-			return h;
-		}
-
-		h = v0 + v1 * a1 + v2 * a2;
-		shift = a3;
-		return h;
-	}
-
-	@Override
-	final public void cz4() {
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0) {
-			h = -1;
-			return;
-		}
-
-		h = v0 + v1 * a1 + v2 * a2 + v3 * a3;
-		shift = a4;
-	}
-
-	final public long c4() {
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0) {
-			h = -1;
-			return h;
-		}
-
-		h = v0 + v1 * a1 + v2 * a2 + v3 * a3;
-		shift = a4;
-		return h;
-	}
-
-	@Override
-	final public void cz5() {
-
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0) {
-			h = -1;
-			return;
-		}
-
-		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4;
-		shift = a5;
-
-	}
-
-	final public long c5() {
-
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0) {
-			h = -1;
-			return h;
-		}
-
-		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4;
-		shift = a5;
-		return h;
-	}
-
-	@Override
-	final public void cz6() {
-
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0) {
-			h = -1;
-			return;
-		}
-
-		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5;
-		shift = a6;
-	}
-
-	final public long c6() {
-
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0) {
-			h = -1;
-			return h;
-		}
-
-		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5;
-		shift = a6;
-		return h;
-	}
-
-	@Override
-	final public long cs(int b, int v) {
-		if (h < 0) {
-			h = -1;
-			return h;
-		}
-
-		h += v * shift;
-		shift *= b;
-		return h;
-
-	}
-
-	@Override
-	final public void csa(int b, int v, IFV f) {
-		if (h < 0) {
-			h = -1;
-			return;
-		}
-
-		h += v * shift;
-		shift *= b;
-		f.add(_li.l2i(h));
-	}
-
-	@Override
-	final public long csa(int b, int v) {
-		if (h < 0) {
-			h = -1;
-			return -1;
-		}
-
-		h += v * shift;
-		shift *= b;
-		return h;
-	}
-
-	@Override
-	public final long getVal() {
-		return h;
-	}
-
-	@Override
-	public final void map(IFV f, long l) {
-		if (l > 0)
-			f.add(this._li.l2i(l));
-	}
-
-	/**
-	 * @param f
-	 */
-	final public void add(IFV f) {
-		f.add(_li.l2i(h));
-	}
-
-	@Override
-	final public void cz7() {
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0) {
-			h = -1;
-			return;
-		}
-
-		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5 + v6 * a6;
-		shift = a7;
-
-	}
-
-	final public long c7() {
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0) {
-			h = -1;
-			return h;
-		}
-
-		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5 + v6 * a6;
-		shift = a7;
-		return h;
-	}
-
-	/**
-	 *
-	 */
-	@Override
-	final public void cz8() {
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0 || v7 < 0) {
-			h = -1;
-			return;
-		}
-
-		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5 + v6 * a6 + v7 * a7;
-		shift = a8;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.data.DX#computeLabeValue(short, short)
-	 */
-	@Override
-	public int computeLabeValue(int label, int shift) {
-		return label * shift;
-	}
-
-}
\ No newline at end of file
diff --git a/dependencyParser/mate-tools/src/is2/data/D7.java b/dependencyParser/mate-tools/src/is2/data/D7.java
deleted file mode 100644
index 319c54a..0000000
--- a/dependencyParser/mate-tools/src/is2/data/D7.java
+++ /dev/null
@@ -1,290 +0,0 @@
-/**
- *
- */
-package is2.data;
-
-/**
- * @author Dr. Bernd Bohnet, 30.10.2010
- * 
- *         This class computes the mapping of features to the weight vector.
- */
-final public class D7 extends DX {
-
-	private long shift;
-	private long h;
-	private final Long2IntInterface _li;
-
-	public D7(Long2IntInterface li) {
-		_li = li;
-	}
-
-	boolean fixed = false;
-
-	@Override
-	public void fix() {
-
-		long t0 = 1, t1 = a0, t2 = t1 * a1, t3 = t2 * a2, t4 = t3 * a3, t5 = t4 * a4, t6 = t5 * a5, t7 = t6 * a6,
-				t8 = t7 * a7, t9 = t8 * a8;
-
-		a0 = t0;
-		a1 = t1;
-		a2 = t2;
-		a3 = t3;
-		a4 = t4;
-		a5 = t5;
-		a6 = t6;
-		a7 = t7;
-		a8 = t8;
-		a9 = t9;
-
-	}
-
-	@Override
-	final public void clean() {
-		v0 = 0;
-		v1 = 0;
-		v2 = 0;
-		v3 = 0;
-		v4 = 0;
-		v5 = 0;
-		v6 = 0;
-		v7 = 0;
-		v8 = 0;
-		shift = 0;
-		h = 0;
-	}
-
-	@Override
-	final public void cz3() {
-		if (v2 < 0) {
-			h = -1;
-			return;
-		}
-
-		h = v0 + v1 * a1 + v2 * a2;
-		shift = a3;
-	}
-
-	final public long c3() {
-		if (v2 < 0) {
-			h = -1;
-			return h;
-		}
-
-		h = v0 + v1 * a1 + v2 * a2;
-		shift = a3;
-		return h;
-	}
-
-	final public long d3() {
-		if (v2 < 0)
-			return -1;
-		return v0 + v2 * a2;
-	}
-
-	@Override
-	final public void cz4() {
-		// if (v0<0||v1<0||v2<0||v3<0) {h=-1;return;}
-		if (v2 < 0 || v3 < 0) {
-			h = -1;
-			return;
-		}
-
-		h = v0 + v1 * a1 + v2 * a2 + v3 * a3;
-		shift = a4;
-	}
-
-	final public long c4() {
-		if (v2 < 0 || v3 < 0) {
-			h = -1;
-			return h;
-		}
-
-		h = v0 + v1 * a1 + v2 * a2 + v3 * a3;
-		shift = a4;
-		return h;
-	}
-
-	final public long d4() {
-		if (v2 < 0 || v3 < 0)
-			return -1;
-		return v0 + v2 * a2 + v3 * a3;
-	}
-
-	@Override
-	final public void cz5() {
-
-		if (v2 < 0 || v3 < 0 || v4 < 0) {
-			h = -1;
-			return;
-		}
-
-		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4;
-		shift = a5;
-
-	}
-
-	final public long c5() {
-
-		if (v2 < 0 || v3 < 0 || v4 < 0) {
-			h = -1;
-			return h;
-		}
-
-		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4;
-		shift = a5;
-		return h;
-	}
-
-	final public long d5() {
-		if (v2 < 0 || v3 < 0 || v4 < 0)
-			return -1;
-		return v0 + v2 * a2 + v3 * a3 + v4 * a4;
-	}
-
-	@Override
-	final public void cz6() {
-
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0) {
-			h = -1;
-			return;
-		}
-
-		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5;
-		shift = a6;
-	}
-
-	final public long c6() {
-
-		if (v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0) {
-			h = -1;
-			return h;
-		}
-
-		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5;
-		shift = a6;
-		return h;
-	}
-
-	final public long d6() {
-		if (v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0)
-			return -1;
-		return v0 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5;
-	}
-
-	@Override
-	final public long cs(int b, int v) {
-		if (h < 0) {
-			h = -1;
-			return h;
-		}
-
-		h += v * shift;
-		shift *= b;
-		return h;
-
-	}
-
-	@Override
-	final public void csa(int b, int v, IFV f) {
-		if (h < 0) {
-			h = -1;
-			return;
-		}
-
-		h += v * shift;
-		shift *= b;
-		f.add(_li.l2i(h));
-	}
-
-	@Override
-	final public long csa(int b, int v) {
-		if (h < 0) {
-			h = -1;
-			return -1;
-		}
-
-		h += v * shift;
-		shift *= b;
-		return h;
-	}
-
-	@Override
-	public final long getVal() {
-		return h;
-	}
-
-	@Override
-	public final void map(IFV f, long l) {
-		if (l > 0)
-			f.add(this._li.l2i(l));
-	}
-
-	/**
-	 * @param f
-	 */
-	final public void add(IFV f) {
-		f.add(_li.l2i(h));
-	}
-
-	@Override
-	final public void cz7() {
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0) {
-			h = -1;
-			return;
-		}
-
-		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5 + v6 * a6;
-		shift = a7;
-
-	}
-
-	final public long c7() {
-		if (v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0) {
-			h = -1;
-			return h;
-		}
-
-		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5 + v6 * a6;
-		shift = a7;
-		return h;
-	}
-
-	final public long d7() {
-		if (v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0)
-			return -1;
-		return v0 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5 + v6 * a6;
-	}
-
-	/**
-	 *
-	 */
-	@Override
-	final public void cz8() {
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0 || v7 < 0) {
-			h = -1;
-			return;
-		}
-
-		h = v0 + v1 * a1 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5 + v6 * a6 + v7 * a7;
-		shift = a8;
-	}
-
-	final public long d8() {
-		if (v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0 || v7 < 0) {
-			return -1;
-		}
-		return v0 + v2 * a2 + v3 * a3 + v4 * a4 + v5 * a5 + v6 * a6 + v7 * a7;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.data.DX#computeLabeValue(short, short)
-	 */
-	@Override
-	public int computeLabeValue(int label, int shift) {
-		return label * shift;
-	}
-
-}
\ No newline at end of file
diff --git a/dependencyParser/mate-tools/src/is2/data/DPSTree.java b/dependencyParser/mate-tools/src/is2/data/DPSTree.java
deleted file mode 100644
index 085c0c7..0000000
--- a/dependencyParser/mate-tools/src/is2/data/DPSTree.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
- *
- */
-package is2.data;
-
-/**
- * @author Dr. Bernd Bohnet, 17.01.2011
- *
- *         Dynamic phrase structure tree.
- */
-public class DPSTree {
-
-	private int size = 0;
-
-	public int[] heads;
-	public int[] labels;
-
-	public DPSTree() {
-		this(30);
-	}
-
-	public DPSTree(int initialCapacity) {
-		heads = new int[initialCapacity];
-		labels = new int[initialCapacity];
-	}
-
-	/**
-	 * Increases the capacity of this <tt>Graph</tt> instance, if necessary, to
-	 * ensure that it can hold at least the number of nodes specified by the
-	 * minimum capacity argument.
-	 *
-	 * @param minCapacity
-	 *            the desired minimum capacity.
-	 */
-	private void ensureCapacity(int minCapacity) {
-
-		if (minCapacity > heads.length) {
-
-			int newCapacity = minCapacity + 1;
-
-			if (newCapacity < minCapacity)
-				newCapacity = minCapacity;
-			int oldIndex[] = heads;
-			heads = new int[newCapacity];
-			System.arraycopy(oldIndex, 0, heads, 0, oldIndex.length);
-
-			oldIndex = labels;
-			labels = new int[newCapacity];
-			System.arraycopy(oldIndex, 0, labels, 0, oldIndex.length);
-
-		}
-	}
-
-	final public int size() {
-		return size;
-	}
-
-	final public boolean isEmpty() {
-		return size == 0;
-	}
-
-	final public void clear() {
-		size = 0;
-	}
-
-	final public void createTerminals(int terminals) {
-		ensureCapacity(terminals + 1);
-		size = terminals + 1;
-	}
-
-	final public int create(int phrase) {
-
-		ensureCapacity(size + 1);
-		labels[size] = phrase;
-		size++;
-		return size - 1;
-	}
-
-	public int create(int phrase, int nodeId) {
-
-		if (nodeId < 0)
-			return this.create(phrase);
-		// DB.println("create phrase "+nodeId+" label "+phrase);
-		ensureCapacity(nodeId + 1);
-		labels[nodeId] = phrase;
-		if (size < nodeId)
-			size = nodeId + 1;
-		return nodeId;
-	}
-
-	public void createEdge(int i, int j) {
-		heads[i] = j;
-		// DB.println("create edge "+i+"\t "+j);
-	}
-
-	@Override
-	public DPSTree clone() {
-		DPSTree ps = new DPSTree(this.size + 1);
-
-		for (int k = 0; k < size; k++) {
-			ps.heads[k] = heads[k];
-			ps.labels[k] = labels[k];
-		}
-		ps.size = size;
-		return ps;
-
-	}
-
-}
\ No newline at end of file
diff --git a/dependencyParser/mate-tools/src/is2/data/DX.java b/dependencyParser/mate-tools/src/is2/data/DX.java
deleted file mode 100644
index 8650038..0000000
--- a/dependencyParser/mate-tools/src/is2/data/DX.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- *
- */
-package is2.data;
-
-/**
- * @author Dr. Bernd Bohnet, 30.08.2011
- *
- *
- */
-public abstract class DX {
-
-	public long a0, a1, a2, a3, a4, a5, a6, a7, a8, a9;
-	public long v0, v1, v2, v3, v4, v5, v6, v7, v8, v9;
-
-	public abstract void cz3();
-
-	public abstract void cz4();
-
-	public abstract void cz5();
-
-	public abstract void cz6();
-
-	public abstract void cz7();
-
-	public abstract void cz8();
-
-	public abstract void clean();
-
-	public abstract long cs(int b, int v);
-
-	public abstract long csa(int b, int v);
-
-	public abstract void csa(int b, int v, IFV f);
-
-	/**
-	 * @return
-	 */
-	public abstract long getVal();
-
-	/**
-	 * @param f
-	 * @param l
-	 */
-	public abstract void map(IFV f, long l);
-
-	/**
-	 * @param label
-	 * @param s_type
-	 * @return
-	 */
-	public abstract int computeLabeValue(int label, int s_type);
-
-	public abstract void fix();
-
-}
\ No newline at end of file
diff --git a/dependencyParser/mate-tools/src/is2/data/DataF.java b/dependencyParser/mate-tools/src/is2/data/DataF.java
deleted file mode 100755
index 0ec145f..0000000
--- a/dependencyParser/mate-tools/src/is2/data/DataF.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package is2.data;
-
-final public class DataF {
-
-	final public short typesLen;
-	final public int len;
-
-	// first order features
-	final public float[][] pl;
-
-	// remove !!!!
-	// final public float[][] highestLab;
-
-	// final public FV[][][] label;
-	final public float[][][][] lab;
-
-	public FV fv;
-
-	final public float[][][][][] sib;
-
-	final public float[][][][][] gra;
-
-	public DataF(int length, short types) {
-		typesLen = types;
-		len = length;
-
-		pl = new float[length][length];
-		lab = new float[length][length][types][2];
-		// highestLab = new float[length][length];
-
-		sib = new float[length][length][length][2][];
-		gra = new float[length][length][length][2][];
-
-	}
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/DataFES.java b/dependencyParser/mate-tools/src/is2/data/DataFES.java
deleted file mode 100644
index 751ddc3..0000000
--- a/dependencyParser/mate-tools/src/is2/data/DataFES.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package is2.data;
-
-import java.util.Arrays;
-
-final public class DataFES {
-
-	final public short typesLen;
-	final public int len;
-
-	// first order features
-	final public float[][] pl;
-
-	// remove !!!!
-	// final public float[][] highestLab;
-
-	// final public FV[][][] label;
-	final public float[][][] lab;
-
-	public FV fv;
-
-	final public float[][][][] sib;
-
-	final public float[][][][] gra;
-
-	public DataFES(int length, short types) {
-		typesLen = types;
-		len = length;
-
-		pl = new float[length][length];
-		lab = new float[length][length][types];
-
-		sib = new float[length][length][length][];
-		gra = new float[length][length][length][];
-
-	}
-	
-	public void print2DFloatArray(float[][] a, String name) {
-		for(int i = 0; i < a.length; ++i)
-			if(a[i] != null)
-				for(int j = 0; j < a[i].length; ++j)
-					System.out.println(name + "[" + i + "][" + j + "] = " + a[i][j]);
-	}
-	
-	public void print3DFloatArray(float[][][] a, String name) {
-		for(int i = 0; i < a.length; ++i)
-			if(a[i] != null)
-				for(int j = 0; j < a[i].length; ++j)
-					if(a[i][j] != null)
-						System.out.println(name + "[" + i + "][" + j + "] = " + Arrays.toString(a[i][j]));
-	}
-	
-	public void print4DFloatArray(float[][][][] a, String name) {
-		for(int i = 0; i < a.length; ++i)
-			if(a[i] != null)
-				for(int j = 0; j < a[i].length; ++j)
-					if(a[i][j] != null)
-						for(int k = 0; k < a[i][j].length; ++k)
-							if(a[i][j][k] != null)
-								System.out.println(name + "[" + i + "][" + j + "][" + k + "] = " + Arrays.toString(a[i][j][k]));
-	}
-	
-	public void print() {
-		System.out.println("typesLen = " + typesLen);
-		System.out.println("len = " + len);
-		print2DFloatArray(pl, "pl");
-		print3DFloatArray(lab, "lab");
-		System.out.println("fv = a feature vector");
-		print4DFloatArray(sib, "sib");
-		print4DFloatArray(gra, "gra");
-	}
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/DataT.java b/dependencyParser/mate-tools/src/is2/data/DataT.java
deleted file mode 100644
index 2ae816d..0000000
--- a/dependencyParser/mate-tools/src/is2/data/DataT.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package is2.data;
-
-final public class DataT {
-
-	final public short typesLen;
-	final public int len;
-
-	// final public FV[][][] label;
-	// a b lab op
-	final public float[][][][] lab;
-
-	public DataT(int length, short types) {
-		typesLen = types;
-		len = length;
-
-		lab = new float[length][length][types][4];
-
-	}
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/Edges.java b/dependencyParser/mate-tools/src/is2/data/Edges.java
deleted file mode 100644
index a14db91..0000000
--- a/dependencyParser/mate-tools/src/is2/data/Edges.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/**
- *
- */
-package is2.data;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Map.Entry;
-
-/**
- * @author Dr. Bernd Bohnet, 13.05.2009;
- *
- *
- */
-public final class Edges {
-
-	private static short[][][][] edges;
-	private static HashMap<Short, Integer> labelCount = new HashMap<Short, Integer>();
-
-	private static HashMap<String, Integer> slabelCount = new HashMap<String, Integer>();
-
-	static short[] def = new short[1];
-
-	private Edges() {
-	}
-
-	/**
-	 * @param length
-	 */
-	public static void init(int length) {
-		edges = new short[length][length][2][];
-	}
-
-	public static void findDefault() {
-
-		int best = 0;
-
-		for (Entry<Short, Integer> e : labelCount.entrySet()) {
-
-			if (best < e.getValue()) {
-				best = e.getValue();
-				def[0] = e.getKey();
-			}
-		}
-
-		// labelCount=null;
-		// String[] types = new String[mf.getFeatureCounter().get(PipeGen.REL)];
-		// for (Entry<String, Integer> e :
-		// MFO.getFeatureSet().get(PipeGen.REL).entrySet()) types[e.getValue()]
-		// = e.getKey();
-
-		is2.util.DB.println("set default label to " + def[0] + " ");
-
-		// System.out.println("found default "+def[0]);
-
-	}
-
-	final static public void put(int pos1, int pos2, boolean dir, short label) {
-		putD(pos1, pos2, dir, label);
-		// putD(pos2, pos1,!dir, label);
-	}
-
-	final static public void putD(int pos1, int pos2, boolean dir, short label) {
-
-		Integer lc = labelCount.get(label);
-		if (lc == null)
-			labelCount.put(label, 1);
-		else
-			labelCount.put(label, lc + 1);
-
-		String key = pos1 + "-" + pos2 + dir + label;
-		Integer lcs = slabelCount.get(key);
-		if (lcs == null)
-			slabelCount.put(key, 1);
-		else
-			slabelCount.put(key, lcs + 1);
-
-		if (edges[pos1][pos2][dir ? 0 : 1] == null) {
-			edges[pos1][pos2][dir ? 0 : 1] = new short[1];
-			edges[pos1][pos2][dir ? 0 : 1][0] = label;
-
-			// edgesh[pos1][pos2][dir?0:1] = new TIntHashSet(2);
-			// edgesh[pos1][pos2][dir?0:1].add(label);
-		} else {
-			short labels[] = edges[pos1][pos2][dir ? 0 : 1];
-			for (short l : labels) {
-				// contains label already?
-				if (l == label)
-					return;
-			}
-
-			short[] nlabels = new short[labels.length + 1];
-			System.arraycopy(labels, 0, nlabels, 0, labels.length);
-			nlabels[labels.length] = label;
-			edges[pos1][pos2][dir ? 0 : 1] = nlabels;
-
-			// edgesh[pos1][pos2][dir?0:1].add(label);
-		}
-	}
-
-	final static public short[] get(int pos1, int pos2, boolean dir) {
-
-		if (pos1 < 0 || pos2 < 0 || edges[pos1][pos2][dir ? 0 : 1] == null)
-			return def;
-		return edges[pos1][pos2][dir ? 0 : 1];
-	}
-
-	/**
-	 * @param dis
-	 */
-	static public void write(DataOutputStream d) throws IOException {
-
-		int len = edges.length;
-		d.writeShort(len);
-
-		for (int p1 = 0; p1 < len; p1++) {
-			for (int p2 = 0; p2 < len; p2++) {
-				if (edges[p1][p2][0] == null)
-					d.writeShort(0);
-				else {
-					d.writeShort(edges[p1][p2][0].length);
-					for (int l = 0; l < edges[p1][p2][0].length; l++) {
-						d.writeShort(edges[p1][p2][0][l]);
-					}
-
-				}
-
-				if (edges[p1][p2][1] == null)
-					d.writeShort(0);
-				else {
-					d.writeShort(edges[p1][p2][1].length);
-					for (int l = 0; l < edges[p1][p2][1].length; l++) {
-						d.writeShort(edges[p1][p2][1][l]);
-					}
-				}
-			}
-		}
-
-		d.writeShort(def[0]);
-
-	}
-
-	/**
-	 * @param dis
-	 */
-	public static void read(DataInputStream d) throws IOException {
-		int len = d.readShort();
-
-		edges = new short[len][len][2][];
-		for (int p1 = 0; p1 < len; p1++) {
-			for (int p2 = 0; p2 < len; p2++) {
-				int ll = d.readShort();
-				if (ll == 0) {
-					edges[p1][p2][0] = null;
-				} else {
-					edges[p1][p2][0] = new short[ll];
-					for (int l = 0; l < ll; l++) {
-						edges[p1][p2][0][l] = d.readShort();
-					}
-				}
-
-				ll = d.readShort();
-				if (ll == 0) {
-					edges[p1][p2][1] = null;
-				} else {
-					edges[p1][p2][1] = new short[ll];
-					for (int l = 0; l < ll; l++) {
-						edges[p1][p2][1][l] = d.readShort();
-					}
-				}
-			}
-		}
-
-		def[0] = d.readShort();
-
-	}
-
-	public static class C implements Comparator<Short> {
-
-		public C() {
-			super();
-		}
-
-		String _key;
-
-		public C(String key) {
-			super();
-			_key = key;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
-		 */
-		@Override
-		public int compare(Short l1, Short l2) {
-
-			// int c1 = labelCount.get(l1);
-			// int c2 = labelCount.get(l2);
-			// if (true) return c1==c2?0:c1>c2?-1:1;
-
-			int x1 = slabelCount.get(_key + l1.shortValue());
-			int x2 = slabelCount.get(_key + l2.shortValue());
-			// System.out.println(x1+" "+x2);
-
-			return x1 == x2 ? 0 : x1 > x2 ? -1 : 1;
-
-		}
-
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/F2S.java b/dependencyParser/mate-tools/src/is2/data/F2S.java
deleted file mode 100755
index 37ee11a..0000000
--- a/dependencyParser/mate-tools/src/is2/data/F2S.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package is2.data;
-
-final public class F2S extends IFV {
-
-	private double[] parameters;
-
-	public F2S() {
-	}
-
-	public double score;
-
-	/**
-	 * @param parameters2
-	 */
-	public F2S(double[] parameters2) {
-		parameters = parameters2;
-	}
-
-	@Override
-	public void add(int i) {
-		if (i > 0)
-			score += parameters[i];
-	}
-
-	public void setParameters(double[] p) {
-		parameters = p;
-	}
-
-	@Override
-	public void clear() {
-		score = 0;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.IFV#getScore()
-	 */
-	@Override
-	public double getScore() {
-		return score;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.IFV#clone()
-	 */
-	@Override
-	public IFV clone() {
-		return new F2S(parameters);
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/F2SD.java b/dependencyParser/mate-tools/src/is2/data/F2SD.java
deleted file mode 100755
index 2cdd793..0000000
--- a/dependencyParser/mate-tools/src/is2/data/F2SD.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package is2.data;
-
-final public class F2SD extends IFV {
-
-	final private double[] parameters;
-
-	public double score = 0;
-
-	public F2SD(double[] p) {
-		parameters = p;
-	}
-
-	@Override
-	public void add(int i) {
-		if (i > 0)
-			score += parameters[i];
-	}
-
-	@Override
-	public void clear() {
-		score = 0;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.IFV#getScore()
-	 */
-	@Override
-	public double getScore() {
-		return score;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.IFV#clone()
-	 */
-	@Override
-	public IFV clone() {
-		return new F2SD(parameters);
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/F2SF.java b/dependencyParser/mate-tools/src/is2/data/F2SF.java
deleted file mode 100755
index 394352f..0000000
--- a/dependencyParser/mate-tools/src/is2/data/F2SF.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package is2.data;
-
-final public class F2SF extends IFV {
-
-	final private float[] parameters;
-
-	public float score = 0;
-
-	public F2SF(float[] p) {
-		parameters = p;
-	}
-
-	@Override
-	final public void add(int i) {
-		if (i > 0)
-			score += parameters[i];
-	}
-
-	final public void add(int[] i) {
-		for (int element : i) {
-			if (element > 0)
-				score += parameters[element];
-		}
-	}
-
-	final public void sub(float[] px, int i, Long2IntInterface li) {
-
-		if (i > 0) {
-			score -= px[li.l2i(i)];
-			// score -= px[i];
-			// else score -=px[];
-		}
-	}
-
-	@Override
-	public void clear() {
-		score = 0;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.IFV#getScore()
-	 */
-	@Override
-	public double getScore() {
-		return score;
-	}
-
-	public float getScoreF() {
-		return score;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.IFV#clone()
-	 */
-	@Override
-	public IFV clone() {
-		return new F2SF(this.parameters);
-	}
-
-	/**
-	 * @param l2i
-	 */
-	public void addRel(int i, float f) {
-		if (i > 0)
-			score += parameters[i] * f;
-
-	}
-
-	public int length() {
-		return this.parameters.length;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/F2SP.java b/dependencyParser/mate-tools/src/is2/data/F2SP.java
deleted file mode 100644
index 513fa33..0000000
--- a/dependencyParser/mate-tools/src/is2/data/F2SP.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package is2.data;
-
-final public class F2SP extends IFV {
-
-	final private float[] parameters;
-
-	public double score = 0;
-
-	public F2SP(float[] p) {
-		parameters = p;
-	}
-
-	@Override
-	final public void add(int i) {
-		if (i > 0)
-			score += parameters[i];
-	}
-
-	final public void add(int[] i) {
-		for (int element : i) {
-			if (element > 0)
-				score += parameters[element];
-		}
-	}
-
-	final public void sub(float[] px, int i, Long2IntInterface li) {
-
-		if (i > 0) {
-			score -= px[li.l2i(i)];
-			// score -= px[i];
-			// else score -=px[];
-		}
-	}
-
-	@Override
-	public void clear() {
-		score = 0;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.IFV#getScore()
-	 */
-	@Override
-	public double getScore() {
-		return score;
-	}
-
-	public double getScoreF() {
-		return score;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.IFV#clone()
-	 */
-	@Override
-	public IFV clone() {
-		return new F2SP(this.parameters);
-	}
-
-	/**
-	 * @param l2i
-	 */
-	public void addRel(int i, float f) {
-		if (i > 0)
-			score += parameters[i] * f;
-
-	}
-
-	public int length() {
-		return this.parameters.length;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/F2ST.java b/dependencyParser/mate-tools/src/is2/data/F2ST.java
deleted file mode 100644
index 4c30144..0000000
--- a/dependencyParser/mate-tools/src/is2/data/F2ST.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package is2.data;
-
-final public class F2ST extends IFV {
-
-	final private short[] parameters;
-
-	public int score = 0;
-
-	public F2ST(short[] p) {
-		parameters = p;
-	}
-
-	@Override
-	final public void add(int i) {
-		if (i > 0)
-			score += parameters[i];
-	}
-
-	@Override
-	public void clear() {
-		score = 0;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.IFV#getScore()
-	 */
-	@Override
-	public double getScore() {
-		return score;
-	}
-
-	public float getScoreF() {
-		return score;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.IFV#clone()
-	 */
-	@Override
-	public IFV clone() {
-		return new F2ST(this.parameters);
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/FV.java b/dependencyParser/mate-tools/src/is2/data/FV.java
deleted file mode 100755
index 10c0030..0000000
--- a/dependencyParser/mate-tools/src/is2/data/FV.java
+++ /dev/null
@@ -1,562 +0,0 @@
-package is2.data;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-public final class FV extends IFV {
-
-	private FV subfv1;
-	private FV subfv2;
-	private boolean negateSecondSubFV = false;
-
-	private int size;
-
-	// content of the nodes NxC
-	private int m_index[];
-
-	// type of the nodes NxT
-
-	public FV() {
-		this(10);
-	}
-
-	public FV(int initialCapacity) {
-		m_index = new int[initialCapacity];
-	}
-
-	public FV(FV fv1, FV fv2) {
-		subfv1 = fv1;
-		subfv2 = fv2;
-	}
-
-	public FV(FV fv1, FV fv2, boolean negSecond) {
-		this(0);
-		subfv1 = fv1;
-		subfv2 = fv2;
-		negateSecondSubFV = negSecond;
-	}
-
-	/**
-	 * Read a feature vector
-	 * 
-	 * @param index
-	 * @param value
-	 */
-	public FV(DataInputStream dos, int capacity) throws IOException {
-		this(capacity);
-		size = m_index.length;
-
-		for (int i = 0; i < size; i++)
-			m_index[i] = dos.readInt();
-	}
-
-	/**
-	 * Read a feature vector
-	 * 
-	 * @param index
-	 * @param value
-	 */
-	public FV(DataInputStream dos) throws IOException {
-		this(dos.readInt());
-		size = m_index.length;
-
-		for (int i = 0; i < size; i++)
-			m_index[i] = dos.readInt();
-
-	}
-
-	/**
-	 * Increases the capacity of this <tt>Graph</tt> instance, if necessary, to
-	 * ensure that it can hold at least the number of nodes specified by the
-	 * minimum capacity argument.
-	 *
-	 * @param minCapacity
-	 *            the desired minimum capacity.
-	 */
-	private void ensureCapacity(int minCapacity) {
-
-		if (minCapacity > m_index.length) {
-
-			int oldIndex[] = m_index;
-
-			int newCapacity = (m_index.length * 3) / 2 + 1;
-
-			if (newCapacity < minCapacity)
-				newCapacity = minCapacity;
-
-			m_index = new int[newCapacity];
-			System.arraycopy(oldIndex, 0, m_index, 0, oldIndex.length);
-
-		}
-	}
-
-	final public int size() {
-		return size;
-	}
-
-	final public boolean isEmpty() {
-		return size == 0;
-	}
-
-	@Override
-	final public void clear() {
-		size = 0;
-	}
-
-	final public int createFeature(int i, double v) {
-
-		ensureCapacity(size + 1);
-		m_index[size] = i;
-		size++;
-		return size - 1;
-	}
-
-	final public int createFeature(int i) {
-
-		ensureCapacity(size + 1);
-		m_index[size] = i;
-		size++;
-		return size - 1;
-	}
-
-	final public int getIndex(int i) {
-		return m_index[i];
-	}
-
-	public void setIndex(int p, int i) {
-		m_index[p] = i;
-	}
-
-	/**
-	 * Trims the capacity of this <tt>Graph</tt> instance to true size. An
-	 * application can use this operation to minimize the storage of an
-	 * <tt>Graph</tt> instance.
-	 */
-	public void trimToSize() {
-
-		if (size < m_index.length) {
-
-			int oldIndex[] = m_index;
-
-			m_index = new int[size];
-			System.arraycopy(oldIndex, 0, m_index, 0, size);
-
-		}
-
-	}
-
-	@Override
-	final public void add(int i) {
-		if (i >= 0) {
-			ensureCapacity(size + 1);
-			m_index[size] = i;
-			size++;
-		}
-	}
-
-	final public void add(int[] i) {
-
-		for (int element : i)
-			add(element);
-
-	}
-
-	final public void put(int i, double f) {
-		if (i >= 0)
-			createFeature(i, f);
-	}
-
-	// fv1 - fv2
-	public FV getDistVector(FV fl2) {
-		return new FV(this, fl2, true);
-	}
-
-	public double getScore(double[] parameters, boolean negate) {
-		double score = 0.0;
-
-		if (null != subfv1) {
-			score += subfv1.getScore(parameters, negate);
-
-			if (null != subfv2) {
-				if (negate)
-					score += subfv2.getScore(parameters, !negateSecondSubFV);
-				else
-					score += subfv2.getScore(parameters, negateSecondSubFV);
-
-			}
-		}
-
-		if (negate)
-			for (int i = 0; i < size; i++)
-				score -= parameters[m_index[i]];
-		else
-			for (int i = 0; i < size; i++)
-				score += parameters[m_index[i]];
-
-		return score;
-	}
-
-	final public float getScore(float[] parameters, boolean negate) {
-		float score = 0.0F;
-
-		if (null != subfv1) {
-			score += subfv1.getScore(parameters, negate);
-
-			if (null != subfv2) {
-				if (negate)
-					score += subfv2.getScore(parameters, !negateSecondSubFV);
-				else
-					score += subfv2.getScore(parameters, negateSecondSubFV);
-
-			}
-		}
-
-		// warning changed the the value
-
-		if (negate)
-			for (int i = 0; i < size; i++)
-				score -= parameters[m_index[i]];// *m_value[i];
-		else
-			for (int i = 0; i < size; i++)
-				score += parameters[m_index[i]];// *m_value[i];
-
-		return score;
-	}
-
-	final public int getScore(short[] parameters, boolean negate) {
-		int score = 0;
-
-		if (null != subfv1) {
-			score += subfv1.getScore(parameters, negate);
-
-			if (null != subfv2) {
-				if (negate)
-					score += subfv2.getScore(parameters, !negateSecondSubFV);
-				else
-					score += subfv2.getScore(parameters, negateSecondSubFV);
-
-			}
-		}
-
-		// warning changed the value
-
-		if (negate)
-			for (int i = 0; i < size; i++)
-				score -= parameters[m_index[i]];// *m_value[i];
-		else
-			for (int i = 0; i < size; i++)
-				score += parameters[m_index[i]];// *m_value[i];
-
-		return score;
-	}
-
-	public void update(double[] parameters, double[] total, double alpha_k, double upd) {
-		update(parameters, total, alpha_k, upd, false);
-	}
-
-	public final void update(double[] parameters, double[] total, double alpha_k, double upd, boolean negate) {
-
-		if (null != subfv1) {
-			subfv1.update(parameters, total, alpha_k, upd, negate);
-
-			if (null != subfv2) {
-				if (negate)
-					subfv2.update(parameters, total, alpha_k, upd, !negateSecondSubFV);
-				else
-					subfv2.update(parameters, total, alpha_k, upd, negateSecondSubFV);
-			}
-		}
-
-		if (negate) {
-			for (int i = 0; i < size; i++) {
-				parameters[m_index[i]] -= alpha_k;// *getValue(i);
-				total[m_index[i]] -= upd * alpha_k;// *getValue(i);
-			}
-		} else {
-			for (int i = 0; i < size; i++) {
-				parameters[m_index[i]] += alpha_k;// *getValue(i);
-				total[m_index[i]] += upd * alpha_k;// *getValue(i);
-			}
-		}
-
-	}
-
-	public final void update(short[] parameters, short[] total, double alpha_k, double upd, boolean negate) {
-
-		if (null != subfv1) {
-			subfv1.update(parameters, total, alpha_k, upd, negate);
-
-			if (null != subfv2) {
-				if (negate)
-					subfv2.update(parameters, total, alpha_k, upd, !negateSecondSubFV);
-				else
-					subfv2.update(parameters, total, alpha_k, upd, negateSecondSubFV);
-			}
-		}
-
-		if (negate) {
-			for (int i = 0; i < size; i++) {
-				parameters[m_index[i]] -= alpha_k;// *getValue(i);
-				total[m_index[i]] -= upd * alpha_k;// *getValue(i);
-			}
-		} else {
-			for (int i = 0; i < size; i++) {
-				parameters[m_index[i]] += alpha_k;// *getValue(i);
-				total[m_index[i]] += upd * alpha_k;// *getValue(i);
-			}
-		}
-
-	}
-
-	public final void update(float[] parameters, float[] total, double alpha_k, double upd, boolean negate) {
-
-		if (null != subfv1) {
-			subfv1.update(parameters, total, alpha_k, upd, negate);
-
-			if (null != subfv2 && negate) {
-				subfv2.update(parameters, total, alpha_k, upd, !negateSecondSubFV);
-			} else {
-				subfv2.update(parameters, total, alpha_k, upd, negateSecondSubFV);
-			}
-
-		}
-
-		if (negate) {
-			for (int i = 0; i < size; i++) {
-				parameters[getIndex(i)] -= alpha_k;
-				total[getIndex(i)] -= upd * alpha_k;
-			}
-		} else {
-			for (int i = 0; i < size; i++) {
-				parameters[getIndex(i)] += alpha_k;
-				total[getIndex(i)] += upd * alpha_k; //
-			}
-		}
-
-	}
-
-	public final void update(float[] parameters, float[] total, double alpha_k, double upd, boolean negate,
-			float[] totalp, Long2IntInterface li) {
-
-		if (null != subfv1) {
-			subfv1.update(parameters, total, alpha_k, upd, negate, totalp, li);
-
-			if (null != subfv2 && negate) {
-				subfv2.update(parameters, total, alpha_k, upd, !negateSecondSubFV, totalp, li);
-			} else {
-				subfv2.update(parameters, total, alpha_k, upd, negateSecondSubFV, totalp, li);
-			}
-		}
-
-		if (negate) {
-			for (int i = 0; i < size; i++) {
-				parameters[getIndex(i)] -= alpha_k;
-				total[getIndex(i)] -= upd * alpha_k;
-
-				totalp[li.l2i(getIndex(i))] -= upd * alpha_k;
-				// totalp[getIndex(i)] -=upd*alpha_k;
-			}
-		} else {
-			for (int i = 0; i < size; i++) {
-				parameters[getIndex(i)] += alpha_k;
-				total[getIndex(i)] += upd * alpha_k; //
-
-				totalp[li.l2i(getIndex(i))] += upd * alpha_k;
-				// totalp[getIndex(i)] +=upd*alpha_k;
-			}
-		}
-	}
-
-	private static IntIntHash hm1;
-	private static IntIntHash hm2;
-
-	public int dotProduct(FV fl2) {
-
-		if (hm1 == null)
-			hm1 = new IntIntHash(size(), 0.4F);
-		else
-			hm1.clear();
-
-		addFeaturesToMap(hm1);
-
-		if (hm2 == null)
-			hm2 = new IntIntHash(fl2.size, 0.4F);
-		else
-			hm2.clear();
-
-		fl2.addFeaturesToMap(hm2);
-
-		int[] keys = hm1.keys();
-
-		int result = 0;
-		for (int key : keys)
-			result += hm1.get(key) * hm2.get(key);
-
-		return result;
-
-	}
-
-	public double twoNorm(FV fl2) {
-
-		if (hm1 == null)
-			hm1 = new IntIntHash(size(), 0.4F);
-		else
-			hm1.clear();
-
-		addFeaturesToMap(hm1);
-
-		if (hm2 == null)
-			hm2 = new IntIntHash(fl2.size, 0.4F);
-		else
-			hm2.clear();
-
-		fl2.addFeaturesToMap(hm2);
-
-		int[] keys = hm1.keys();
-
-		int result = 0;
-		for (int key : keys)
-			result += hm1.get(key) * hm2.get(key);
-
-		return Math.sqrt(result);
-
-	}
-
-	public void addFeaturesToMap(IntIntHash map) {
-
-		if (null != subfv1) {
-			subfv1.addFeaturesToMap(map);
-
-			if (null != subfv2) {
-				subfv2.addFeaturesToMap(map, negateSecondSubFV);
-
-			}
-		}
-
-		for (int i = 0; i < size; i++)
-			if (!map.adjustValue(getIndex(i), 1))
-				map.put(getIndex(i), 1);
-
-	}
-
-	private void addFeaturesToMap(IntIntHash map, boolean negate) {
-
-		if (null != subfv1) {
-			subfv1.addFeaturesToMap(map, negate);
-
-			if (null != subfv2) {
-				if (negate)
-					subfv2.addFeaturesToMap(map, !negateSecondSubFV);
-				else
-					subfv2.addFeaturesToMap(map, negateSecondSubFV);
-
-			}
-		}
-
-		if (negate) {
-			for (int i = 0; i < size; i++)
-				if (!map.adjustValue(getIndex(i), -1))
-					map.put(getIndex(i), -1);
-		} else {
-			for (int i = 0; i < size; i++)
-				if (!map.adjustValue(getIndex(i), 1))
-					map.put(getIndex(i), 1);
-		}
-
-	}
-
-	@Override
-	public final String toString() {
-		StringBuilder sb = new StringBuilder();
-		toString(sb);
-		return sb.toString();
-	}
-
-	private final void toString(StringBuilder sb) {
-		if (null != subfv1) {
-			subfv1.toString(sb);
-
-			if (null != subfv2)
-				subfv2.toString(sb);
-		}
-		for (int i = 0; i < size; i++)
-			sb.append(getIndex(i)).append(' ');
-	}
-
-	public void writeKeys(DataOutputStream dos) throws IOException {
-
-		// int keys[] = keys();
-		// dos.writeInt(keys.length);
-		// for(int i=0;i<keys.length;i++) {
-		// dos.writeInt(keys[i]);
-		// }
-
-		// int keys[] = keys();
-		dos.writeInt(size);
-		for (int i = 0; i < size; i++) {
-			dos.writeInt(m_index[i]);
-		}
-
-	}
-
-	public void readKeys(DataInputStream dos) throws IOException {
-
-		int keys = dos.readInt();
-		for (int i = 0; i < keys; i++)
-			createFeature(dos.readInt(), 1.0);
-
-	}
-
-	final public static FV cat(FV f1, FV f2) {
-		if (f1 == null)
-			return f2;
-		if (f2 == null)
-			return f1;
-		return new FV(f1, f2);
-	}
-
-	final public static FV cat(FV f1, FV f2, FV f3) {
-		return FV.cat(f1, FV.cat(f2, f3));
-	}
-
-	final public static FV cat(FV f1, FV f2, FV f3, FV f4) {
-		return FV.cat(f1, FV.cat(f2, FV.cat(f3, f4)));
-	}
-
-	final public static FV read(DataInputStream dis) throws IOException {
-		int cap = dis.readInt();
-		if (cap == 0)
-			return null;
-		return new FV(dis, cap);
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.IFV#getScore()
-	 */
-	@Override
-	public double getScore() {
-		// System.out.println("not implemented");
-		// TODO Auto-generated method stub
-		return 0;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.IFV#clone()
-	 */
-	@Override
-	public IFV clone() {
-		FV f = new FV(this.size);
-		for (int i = 0; i < this.size; i++) {
-			f.m_index[i] = m_index[i];
-		}
-		f.size = this.size;
-		return f;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/FVR.java b/dependencyParser/mate-tools/src/is2/data/FVR.java
deleted file mode 100644
index c5bc073..0000000
--- a/dependencyParser/mate-tools/src/is2/data/FVR.java
+++ /dev/null
@@ -1,435 +0,0 @@
-package is2.data;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import gnu.trove.TIntDoubleHashMap;
-
-public final class FVR extends IFV {
-
-	private FVR subfv1;
-	private FVR subfv2;
-	private boolean negateSecondSubFV = false;
-
-	private int size;
-
-	// content of the nodes NxC
-	private int m_index[];
-	private float m_value[];
-
-	// type of the nodes NxT
-
-	public FVR() {
-		this(10);
-	}
-
-	public FVR(int initialCapacity) {
-		m_index = new int[initialCapacity];
-		m_value = new float[initialCapacity];
-	}
-
-	/*
-	 * public FVR (FVR fv1, FVR fv2) { subfv1 = fv1; subfv2 = fv2; }
-	 */
-	public FVR(FVR fv1, FVR fv2, boolean negSecond) {
-		this(0);
-		subfv1 = fv1;
-		subfv2 = fv2;
-		negateSecondSubFV = negSecond;
-	}
-
-	/**
-	 * Read a feature vector
-	 * 
-	 * @param index
-	 * @param value
-	 */
-	public FVR(DataInputStream dos, int capacity) throws IOException {
-		this(capacity);
-		size = m_index.length;
-
-		for (int i = 0; i < size; i++)
-			m_index[i] = dos.readInt();
-	}
-
-	/**
-	 * Read a feature vector
-	 * 
-	 * @param index
-	 * @param value
-	 */
-	public FVR(DataInputStream dos) throws IOException {
-		this(dos.readInt());
-		size = m_index.length;
-
-		for (int i = 0; i < size; i++)
-			m_index[i] = dos.readInt();
-
-	}
-
-	/**
-	 * Increases the capacity of this <tt>Graph</tt> instance, if necessary, to
-	 * ensure that it can hold at least the number of nodes specified by the
-	 * minimum capacity argument.
-	 *
-	 * @param minCapacity
-	 *            the desired minimum capacity.
-	 */
-	private void ensureCapacity(int minCapacity) {
-
-		if (minCapacity > m_index.length) {
-
-			int oldIndex[] = m_index;
-			float oldValue[] = m_value;
-
-			int newCapacity = (m_index.length * 3) / 2 + 1;
-
-			if (newCapacity < minCapacity)
-				newCapacity = minCapacity;
-
-			m_index = new int[newCapacity];
-			m_value = new float[newCapacity];
-
-			System.arraycopy(oldIndex, 0, m_index, 0, oldIndex.length);
-			System.arraycopy(oldValue, 0, m_value, 0, oldValue.length);
-
-		}
-	}
-
-	final public int size() {
-		return size;
-	}
-
-	final public boolean isEmpty() {
-		return size == 0;
-	}
-
-	@Override
-	final public void clear() {
-		size = 0;
-	}
-
-	final public int createFeature(int i, float v) {
-
-		ensureCapacity(size + 1);
-		m_index[size] = i;
-		m_value[size] = v;
-		size++;
-		return size - 1;
-	}
-	/*
-	 * final public int createFeature(int i) {
-	 * 
-	 * ensureCapacity(size+1); m_index[size] =i; size++; return size-1; }
-	 */
-
-	final public int getIndex(int i) {
-		return m_index[i];
-	}
-
-	public void setIndex(int p, int i) {
-		m_index[p] = i;
-	}
-
-	/**
-	 * Trims the capacity of this <tt>Graph</tt> instance to true size. An
-	 * application can use this operation to minimize the storage of an
-	 * <tt>Graph</tt> instance.
-	 */
-	public void trimToSize() {
-
-		if (size < m_index.length) {
-
-			int oldIndex[] = m_index;
-
-			m_index = new int[size];
-			System.arraycopy(oldIndex, 0, m_index, 0, size);
-
-		}
-
-	}
-
-	@Override
-	final public void add(int i) {
-		if (i >= 0) {
-			ensureCapacity(size + 1);
-			m_index[size] = i;
-			m_value[size] = 1.0f;
-			size++;
-		}
-	}
-
-	final public void add(int i, float f) {
-		if (i >= 0)
-			createFeature(i, f);
-	}
-
-	// fv1 - fv2
-	public FVR getDistVector(FVR fl2) {
-		return new FVR(this, fl2, true);
-	}
-
-	public double getScore(double[] parameters, boolean negate) {
-		double score = 0.0;
-
-		if (null != subfv1) {
-			score += subfv1.getScore(parameters, negate);
-
-			if (null != subfv2) {
-				if (negate)
-					score += subfv2.getScore(parameters, !negateSecondSubFV);
-				else
-					score += subfv2.getScore(parameters, negateSecondSubFV);
-
-			}
-		}
-
-		if (negate)
-			for (int i = 0; i < size; i++)
-				score -= parameters[m_index[i]];
-		else
-			for (int i = 0; i < size; i++)
-				score += parameters[m_index[i]];
-
-		return score;
-	}
-
-	final public float getScore(float[] parameters, boolean negate) {
-		float score = 0.0F;
-
-		if (null != subfv1) {
-			score += subfv1.getScore(parameters, negate);
-
-			if (null != subfv2) {
-				if (negate)
-					score += subfv2.getScore(parameters, !negateSecondSubFV);
-				else
-					score += subfv2.getScore(parameters, negateSecondSubFV);
-
-			}
-		}
-
-		// warning changed the value
-
-		if (negate)
-			for (int i = 0; i < size; i++)
-				score -= parameters[m_index[i]] * m_value[i];
-		else
-			for (int i = 0; i < size; i++)
-				score += parameters[m_index[i]] * m_value[i];
-
-		return score;
-	}
-
-	final public int getScore(short[] parameters, boolean negate) {
-		int score = 0;
-
-		if (null != subfv1) {
-			score += subfv1.getScore(parameters, negate);
-
-			if (null != subfv2) {
-				if (negate)
-					score += subfv2.getScore(parameters, !negateSecondSubFV);
-				else
-					score += subfv2.getScore(parameters, negateSecondSubFV);
-
-			}
-		}
-
-		// warning changed the value
-
-		if (negate)
-			for (int i = 0; i < size; i++)
-				score -= parameters[m_index[i]] * m_value[i];
-		else
-			for (int i = 0; i < size; i++)
-				score += parameters[m_index[i]] * m_value[i];
-
-		return score;
-	}
-
-	public final void update(float[] parameters, float[] total, double alpha_k, double upd, boolean negate) {
-
-		if (null != subfv1) {
-			subfv1.update(parameters, total, alpha_k, upd, negate);
-
-			if (null != subfv2 && negate) {
-				subfv2.update(parameters, total, alpha_k, upd, !negateSecondSubFV);
-			} else {
-				subfv2.update(parameters, total, alpha_k, upd, negateSecondSubFV);
-			}
-
-		}
-
-		if (negate) {
-			for (int i = 0; i < size; i++) {
-				parameters[getIndex(i)] -= alpha_k * m_value[i];
-				total[getIndex(i)] -= upd * alpha_k * m_value[i];
-			}
-		} else {
-			for (int i = 0; i < size; i++) {
-				parameters[getIndex(i)] += alpha_k * m_value[i];
-				total[getIndex(i)] += upd * alpha_k * m_value[i]; //
-			}
-		}
-
-	}
-
-	// private static IntIntHash hm1;
-	// private static IntIntHash hm2;
-
-	private static TIntDoubleHashMap hd1;
-	private static TIntDoubleHashMap hd2;
-
-	public int dotProduct(FVR fl2) {
-
-		if (hd1 == null)
-			hd1 = new TIntDoubleHashMap(size(), 0.4F);
-		else
-			hd1.clear();
-
-		addFeaturesToMap(hd1);
-
-		if (hd2 == null)
-			hd2 = new TIntDoubleHashMap(fl2.size, 0.4F);
-		else
-			hd2.clear();
-
-		fl2.addFeaturesToMap(hd2);
-
-		int[] keys = hd1.keys();
-
-		int result = 0;
-		for (int key : keys)
-			result += hd1.get(key) * hd2.get(key);
-
-		return result;
-
-	}
-
-	private void addFeaturesToMap(TIntDoubleHashMap map) {
-
-		if (null != subfv1) {
-			subfv1.addFeaturesToMap(map);
-
-			if (null != subfv2) {
-				subfv2.addFeaturesToMap(map, negateSecondSubFV);
-
-			}
-		}
-
-		for (int i = 0; i < size; i++)
-			if (!map.adjustValue(getIndex(i), m_value[i]))
-				map.put(getIndex(i), m_value[i]);
-
-	}
-
-	private void addFeaturesToMap(TIntDoubleHashMap map, boolean negate) {
-
-		if (null != subfv1) {
-			subfv1.addFeaturesToMap(map, negate);
-
-			if (null != subfv2) {
-				if (negate)
-					subfv2.addFeaturesToMap(map, !negateSecondSubFV);
-				else
-					subfv2.addFeaturesToMap(map, negateSecondSubFV);
-
-			}
-		}
-
-		if (negate) {
-			for (int i = 0; i < size; i++)
-				if (!map.adjustValue(getIndex(i), -m_value[i]))
-					map.put(getIndex(i), -m_value[i]);
-		} else {
-			for (int i = 0; i < size; i++)
-				if (!map.adjustValue(getIndex(i), m_value[i]))
-					map.put(getIndex(i), m_value[i]);
-		}
-
-	}
-
-	@Override
-	public final String toString() {
-		StringBuilder sb = new StringBuilder();
-		toString(sb);
-		return sb.toString();
-	}
-
-	private final void toString(StringBuilder sb) {
-		if (null != subfv1) {
-			subfv1.toString(sb);
-
-			if (null != subfv2)
-				subfv2.toString(sb);
-		}
-		for (int i = 0; i < size; i++)
-			sb.append(getIndex(i)).append('=').append(m_value[i]).append(' ');
-	}
-
-	public void writeKeys(DataOutputStream dos) throws IOException {
-
-		// int keys[] = keys();
-		// dos.writeInt(keys.length);
-		// for(int i=0;i<keys.length;i++) {
-		// dos.writeInt(keys[i]);
-		// }
-
-		// int keys[] = keys();
-		dos.writeInt(size);
-		for (int i = 0; i < size; i++) {
-			dos.writeInt(m_index[i]);
-		}
-
-	}
-
-	/*
-	 * 
-	 * final public static FVR cat(FVR f1,FVR f2) { if (f1==null) return f2; if
-	 * (f2==null) return f1; return new FVR(f1, f2); }
-	 * 
-	 * final public static FVR cat(FVR f1,FVR f2, FVR f3) { return FVR.cat(f1,
-	 * FVR.cat(f2, f3)); } final public static FVR cat(FVR f1,FVR f2, FVR f3,
-	 * FVR f4) { return FVR.cat(f1, FVR.cat(f2, FVR.cat(f3, f4))); }
-	 */
-
-	final public static FVR read(DataInputStream dis) throws IOException {
-		int cap = dis.readInt();
-		if (cap == 0)
-			return null;
-		return new FVR(dis, cap);
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.IFV#getScore()
-	 */
-	@Override
-	public double getScore() {
-		System.out.println("not implemented");
-		new Exception().printStackTrace();
-		// TODO Auto-generated method stub
-		return 0;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.IFV#clone()
-	 */
-	@Override
-	public IFV clone() {
-		FVR f = new FVR(this.size);
-		for (int i = 0; i < this.size; i++) {
-			f.m_index[i] = m_index[i];
-			f.m_value[i] = m_value[i];
-		}
-		f.size = this.size;
-		return f;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/IEncoder.java b/dependencyParser/mate-tools/src/is2/data/IEncoder.java
deleted file mode 100755
index 2a784af..0000000
--- a/dependencyParser/mate-tools/src/is2/data/IEncoder.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- *
- */
-package is2.data;
-
-/**
- * @author Bernd Bohnet, 20.09.2009
- *
- *
- */
-public interface IEncoder {
-	public int getValue(String a, String v);
-
-	default public void print() {
-		throw new UnsupportedOperationException();
-	};
-	/**
-	 * @param spath
-	 * @param substring
-	 */
-	// public int register(String spath, String substring);
-
-	/**
-	 * @return
-	 */
-	// public HashMap<String,Integer> getFeatureCounter();
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/IEncoderPlus.java b/dependencyParser/mate-tools/src/is2/data/IEncoderPlus.java
deleted file mode 100644
index b033381..0000000
--- a/dependencyParser/mate-tools/src/is2/data/IEncoderPlus.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- *
- */
-package is2.data;
-
-import java.util.HashMap;
-
-/**
- * @author Bernd Bohnet, 20.09.2009
- *
- *
- */
-public interface IEncoderPlus extends IEncoder {
-
-	final public static String NONE = "<None>";
-
-	/**
-	 * @param spath
-	 * @param substring
-	 */
-	public int register(String spath, String substring);
-
-	/**
-	 * @return
-	 */
-	public HashMap<String, Integer> getFeatureCounter();
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/IFV.java b/dependencyParser/mate-tools/src/is2/data/IFV.java
deleted file mode 100755
index 010f411..0000000
--- a/dependencyParser/mate-tools/src/is2/data/IFV.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package is2.data;
-
-public abstract class IFV {
-
-	// public double score=0;
-
-	public abstract void add(int i);
-
-	public abstract double getScore();
-
-	public abstract void clear();
-
-	@Override
-	public abstract IFV clone();
-
-	/**
-	 * @param gvs
-	 * @param li
-	 */
-	public void add(long[] gvs, Long2IntInterface li, int l) {
-		for (long gv : gvs) {
-			if (gv == Integer.MIN_VALUE)
-				break;
-			if (gv > 0)
-				add(li.l2i(gv + l));
-		}
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/Instances.java b/dependencyParser/mate-tools/src/is2/data/Instances.java
deleted file mode 100755
index 20493a9..0000000
--- a/dependencyParser/mate-tools/src/is2/data/Instances.java
+++ /dev/null
@@ -1,408 +0,0 @@
-package is2.data;
-
-import java.util.Arrays;
-import java.util.BitSet;
-
-public class Instances {
-
-	public IEncoder m_encoder;
-
-	protected int size = 0;
-
-	protected int capacity;
-
-	public int[][] forms;
-
-	public int[][] plemmas;
-	public int[][] glemmas;
-
-	public short[][] heads;
-	public short[][] pheads;
-
-	public short[][] labels;
-	public short[][] plabels;
-
-	public short[][] gpos;
-	public short[][] pposs;
-
-	public short[][][] feats;
-
-	public int[][] predicat;
-
-	public short[][] predicateId;
-
-	public short[][] semposition;
-
-	public short[][][] arg;
-
-	public short[][][] argposition;
-
-	public BitSet[] pfill;
-
-	public short[][] gfeats;
-	public short[][] pfeats;
-
-	public Instances() {
-	}
-
-	public static int m_unkown = 0;
-	public static int m_count = 0;
-
-	public static boolean m_report;
-	public static boolean m_found = false;
-
-	final public void setForm(int i, int p, String x) {
-
-		forms[i][p] = m_encoder.getValue(PipeGen.WORD, x);
-		if (forms[i][p] == -1) {
-			if (m_report)
-				System.out.println("unkwrd " + x);
-			m_unkown++;
-			m_found = true;
-		}
-		m_count++;
-	}
-
-	final public void setRel(int i, int p, String x) {
-		labels[i][p] = (short) m_encoder.getValue(PipeGen.REL, x);
-
-	}
-
-	final public void setHead(int i, int c, int p) {
-		heads[i][c] = (short) p;
-	}
-
-	final public int size() {
-		return size;
-	}
-
-	public void setSize(int n) {
-		size = n;
-	}
-
-	public void init(int ic, IEncoder mf) {
-		init(ic, mf, -1);
-	}
-
-	public void init(int ic, IEncoder mf, int version) {
-		capacity = ic;
-		m_encoder = mf;
-
-		forms = new int[capacity][];
-		plemmas = new int[capacity][];
-		glemmas = new int[capacity][];
-		pposs = new short[capacity][];
-
-		gpos = new short[capacity][];
-		labels = new short[capacity][];
-		heads = new short[capacity][];
-		plabels = new short[capacity][];
-		pheads = new short[capacity][];
-		feats = new short[capacity][][];
-		gfeats = new short[capacity][];
-		pfeats = new short[capacity][];
-
-		predicat = new int[ic][];
-		predicateId = new short[ic][];
-		semposition = new short[ic][];
-		arg = new short[ic][][];
-		argposition = new short[ic][][];
-
-		pfill = new BitSet[ic];
-	}
-
-	public int length(int i) {
-		return forms[i].length;
-	}
-
-	public int createInstance09(int length) {
-
-		forms[size] = new int[length];
-		plemmas[size] = new int[length];
-		glemmas[size] = new int[length];
-
-		pposs[size] = new short[length];
-
-		gpos[size] = new short[length];
-
-		labels[size] = new short[length];
-		heads[size] = new short[length];
-
-		this.pfill[size] = new BitSet(length);
-
-		feats[size] = new short[length][];
-		gfeats[size] = new short[length];
-		pfeats[size] = new short[length];
-		plabels[size] = new short[length];
-		pheads[size] = new short[length];
-
-		size++;
-
-		return size - 1;
-
-	}
-
-	/*
-	 * public final void setPPos(int i, int p, String x) { ppos[i][p] =
-	 * (short)m_encoder.getValue(PipeGen.POS,x);
-	 * 
-	 * }
-	 */
-
-	public final void setPPoss(int i, int p, String x) {
-		pposs[i][p] = (short) m_encoder.getValue(PipeGen.POS, x);
-
-	}
-
-	public final void setGPos(int i, int p, String x) {
-		gpos[i][p] = (short) m_encoder.getValue(PipeGen.POS, x);
-	}
-
-	public void setLemma(int i, int p, String x) {
-		plemmas[i][p] = m_encoder.getValue(PipeGen.WORD, x);
-	}
-
-	public void setGLemma(int i, int p, String x) {
-		glemmas[i][p] = m_encoder.getValue(PipeGen.WORD, x);
-	}
-
-	public void setFeats(int i, int p, String[] fts) {
-		if (fts == null) {
-			feats[i][p] = null;
-			return;
-		}
-		feats[i][p] = new short[fts.length];
-
-		for (int k = 0; k < fts.length; k++) {
-			feats[i][p][k] = (short) m_encoder.getValue(PipeGen.FEAT, fts[k]);
-		}
-
-	}
-
-	public void setFeature(int i, int p, String feature) {
-		if (feature == null)
-			return;
-		this.gfeats[i][p] = (short) m_encoder.getValue(PipeGen.FFEATS, feature);
-		/*
-		 * if (gfeats[i][p]==-1) { System.out.println("+"+feature); new
-		 * Exception().printStackTrace(); System.exit(0); }
-		 */
-	}
-
-	public void setPFeature(int i, int p, String feature) {
-		if (feature == null)
-			return;
-		this.pfeats[i][p] = (short) m_encoder.getValue(PipeGen.FFEATS, feature);
-	}
-
-	public int getWValue(String v) {
-		return m_encoder.getValue(PipeGen.WORD, v);
-	}
-
-	public final void setPRel(int i, int p, String x) {
-		plabels[i][p] = (short) m_encoder.getValue(PipeGen.REL, x);
-	}
-
-	public final void setPHead(int i, int c, int p) {
-		pheads[i][c] = (short) p;
-	}
-
-	/*
-	 * public String toString(int c) { StringBuffer s = new StringBuffer();
-	 * for(int i=0;i<length(c);i++) {
-	 * s.append(i).append('\t').append(forms[c][i]).append("\t_\t").append(ppos[
-	 * c][i]).append('\t'). append('\t').append(heads[c][i]).append('\n'); }
-	 * 
-	 * return s.toString(); }
-	 */
-
-	/*
-	 * public void setPos(int i, int p, String x) { ppos[i][p] =
-	 * (short)m_encoder.getValue(PipeGen.POS,x);
-	 * 
-	 * }
-	 */
-
-	/**
-	 * Create the semantic representation
-	 * 
-	 * @param inst
-	 * @param it
-	 * @return
-	 */
-	public boolean createSem(int inst, SentenceData09 it) {
-
-		boolean error = false;
-
-		if (it.sem == null)
-			return error;
-
-		predicat[inst] = new int[it.sem.length];
-		semposition[inst] = new short[it.sem.length];
-		predicateId[inst] = new short[it.sem.length];
-
-		if (it.sem != null) {
-			arg[inst] = new short[it.sem.length][];
-			argposition[inst] = new short[it.sem.length][];
-		}
-		if (it.sem == null)
-			return error;
-
-		// init sems
-
-		for (int i = 0; i < it.sem.length; i++) {
-
-			String pred;
-			short predSense = 0;
-			if (it.sem[i].indexOf('.') > 0) {
-				pred = it.sem[i].substring(0, it.sem[i].indexOf('.'));
-				predSense = (short) m_encoder.getValue(PipeGen.SENSE,
-						it.sem[i].substring(it.sem[i].indexOf('.') + 1, it.sem[i].length()));
-				// Short.parseShort(it.sem[i].substring(it.sem[i].indexOf('.')+1,
-				// it.sem[i].length()));
-			} else {
-				pred = it.sem[i];
-				predSense = (short) m_encoder.getValue(PipeGen.SENSE, "");
-			}
-
-			predicat[inst][i] = m_encoder.getValue(PipeGen.PRED, pred);
-			predicateId[inst][i] = predSense;
-
-			semposition[inst][i] = (short) it.semposition[i];
-
-			// this can happen too when no arguments have values
-			if (it.arg == null) {
-				// DB.println("error arg == null "+i+" sem"+it.sem[i]+" inst
-				// number "+inst);
-				// error =true;
-				continue;
-			}
-
-			// last pred(s) might have no argument
-			if (it.arg.length <= i) {
-				// DB.println("error in instance "+inst+" argument list and
-				// number of predicates different arg lists: "+it.arg.length+"
-				// preds "+sem.length);
-				// error =true;
-				continue;
-			}
-
-			// this happens from time to time, if the predicate has no arguments
-			if (it.arg[i] == null) {
-				// DB.println("error no args for pred "+i+" "+it.sem[i]+" length
-				// "+it.ppos.length);
-				// error =true;
-				continue;
-			}
-
-			int argCount = it.arg[i].length;
-			arg[inst][i] = new short[it.arg[i].length];
-			argposition[inst][i] = new short[it.arg[i].length];
-
-			// add the content of the argument
-			for (int a = 0; a < argCount; a++) {
-				arg[inst][i][a] = (short) m_encoder.getValue(PipeGen.ARG, it.arg[i][a]);
-				argposition[inst][i][a] = (short) it.argposition[i][a];
-
-				// System.out.print(" #"+a+" pos: "+argposition[inst][i][a]+"
-				// "+it.arg[i][a]+" ");
-			}
-			// System.out.println("");
-
-		}
-
-		return error;
-
-	}
-
-	public int predCount(int n) {
-		return pfill[n].cardinality();
-	}
-
-	public void print2DIntArray(int[][] a, String name) {
-		for(int i = 0; i < a.length; ++i)
-			if(a[i] != null)
-				for(int j = 0; j < a[i].length; ++j)
-					System.out.println(name + "[" + i + "][" + j + "] = " + a[i][j]);
-	}
-	
-	public void print2DShortArray(short[][] a, String name) {
-		for(int i = 0; i < a.length; ++i)
-			if(a[i] != null)
-				for(int j = 0; j < a[i].length; ++j)
-					System.out.println(name + "[" + i + "][" + j + "] = " + a[i][j]);
-	}
-	
-	public void print3DShortArray(short[][][] a, String name) {
-		for(int i = 0; i < a.length; ++i)
-			if(a[i] != null)
-				for(int j = 0; j < a[i].length; ++j)
-					if(a[i][j] != null)
-						System.out.println(name + "[" + i + "][" + j + "] = " + Arrays.toString(a[i][j]));
-	}
-	
-	public void print() {
-		System.out.println("-----m_encoder-----");
-		m_encoder.print();
-		System.out.println("-------------------");
-		
-		System.out.println("size = " + size);
-		System.out.println("capacity = " + capacity);
-		
-		print2DIntArray(forms, "forms");
-		print2DIntArray(plemmas, "plemmas");
-		print2DIntArray(glemmas, "glemmas");
-		print2DShortArray(heads, "heads");
-		print2DShortArray(pheads, "pheads");
-		print2DShortArray(labels, "labels");
-		print2DShortArray(plabels, "plabels");
-		print2DShortArray(gpos, "gpos");
-		print2DShortArray(pposs, "pposs");
-		print3DShortArray(feats, "feats");
-		print2DIntArray(predicat, "predicat");
-		print2DShortArray(predicateId, "predicateId");
-		print2DShortArray(semposition, "semposition");
-		print3DShortArray(arg, "arg");
-		print3DShortArray(argposition, "argposition");
-		for(int i = 0; i < pfill.length; ++i)
-			System.out.println("pfill [" + i + "] = " + pfill[i]);
-		print2DShortArray(gfeats, "gfeats");
-		print2DShortArray(pfeats, "pfeats");
-		
-		System.out.println("m_unkown = " + m_unkown);
-		System.out.println("m_count = " + m_count);
-		System.out.println("m_report = " + m_report);
-		System.out.println("m_found = " + m_found);
-	}
-	
-	/**
-	 * @param pscnt
-	 * @return
-	 */
-	public String print(int pscnt) {
-		StringBuilder s = new StringBuilder();
-
-		for (int i = 0; i < this.length(pscnt); i++) {
-			s.append(i + "\t" + forms[pscnt][i] + "\t" + this.glemmas[pscnt][i] + "\t" + this.plemmas[pscnt][i] + "\t"
-					+ this.gpos[pscnt][i] + "\t" + this.pposs[pscnt][i] + "\t" + this.gfeats[pscnt][i] + "\t"
-					+ (this.feats[pscnt][i] != null && this.feats[pscnt][i].length > 0 ? this.feats[pscnt][i][0] : null)
-					+ "\t l " + (labels[pscnt] != null && labels[pscnt].length > i ? labels[pscnt][i] : null) + "\t"
-					+ "\t" + heads[pscnt][i] + "\t"
-					+ (plabels[pscnt] != null && plabels[pscnt].length > i ? plabels[pscnt][i] : null) + "\t"
-					+ this.predicat[pscnt][i] + "\n");
-		}
-		return s.toString();
-	}
-
-	public String print1(int pscnt) {
-		StringBuilder s = new StringBuilder();
-
-		for (int i = 0; i < this.length(pscnt); i++) {
-			s.append(i + "\t" + forms[pscnt][i] + "\t" + "\t" + this.plemmas[pscnt][i] + "\t" + +this.pposs[pscnt][i]
-					+ "\t l " + (labels[pscnt] != null && labels[pscnt].length > i ? labels[pscnt][i] : null) + "\t"
-					+ "\t" + heads[pscnt][i] + "\t"
-					+ (plabels[pscnt] != null && plabels[pscnt].length > i ? plabels[pscnt][i] : null) + "\n");
-		}
-		return s.toString();
-	}
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/InstancesTagger.java b/dependencyParser/mate-tools/src/is2/data/InstancesTagger.java
deleted file mode 100644
index 4cf894a..0000000
--- a/dependencyParser/mate-tools/src/is2/data/InstancesTagger.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
- *
- */
-package is2.data;
-
-/**
- * @author Dr. Bernd Bohnet, 06.11.2010
- *
- *
- */
-public class InstancesTagger extends Instances {
-
-	public short[][][] chars;
-	public int[][] formlc;
-
-	@Override
-	public void init(int ic, IEncoder mf) {
-		super.init(ic, mf, 9);
-		chars = new short[capacity][][];
-		formlc = new int[capacity][];
-		// System.out.println("create chars "+capacity );
-	}
-
-	public void fillChars(SentenceData09 instance, int i, int cend) {
-		chars[i] = new short[instance.length()][13];
-		formlc[i] = new int[instance.length()];
-
-		for (int k = 0; k < instance.length(); k++) {
-			chars[i][k][0] = (short) (instance.forms[k].length() > 0
-					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(instance.forms[k].charAt(0))) : cend);
-			chars[i][k][1] = (short) (instance.forms[k].length() > 1
-					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(instance.forms[k].charAt(1))) : cend);// m_encoder.getValue(PipeGen.CHAR,
-																											// END);
-			chars[i][k][2] = (short) (instance.forms[k].length() > 2
-					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(instance.forms[k].charAt(2))) : cend);
-			chars[i][k][3] = (short) (instance.forms[k].length() > 3
-					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(instance.forms[k].charAt(3))) : cend);
-			chars[i][k][4] = (short) (instance.forms[k].length() > 4
-					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(instance.forms[k].charAt(4))) : cend);
-			chars[i][k][5] = (short) (instance.forms[k].length() > 5
-					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(instance.forms[k].charAt(5))) : cend);
-
-			chars[i][k][6] = (short) (instance.forms[k].length() > 0 ? m_encoder.getValue(PipeGen.CHAR,
-					String.valueOf(instance.forms[k].charAt(instance.forms[k].length() - 1))) : cend);
-			chars[i][k][7] = (short) (instance.forms[k].length() > 1 ? m_encoder.getValue(PipeGen.CHAR,
-					String.valueOf(instance.forms[k].charAt(instance.forms[k].length() - 2))) : cend);// m_encoder.getValue(PipeGen.CHAR,
-																										// END);
-			chars[i][k][8] = (short) (instance.forms[k].length() > 2 ? m_encoder.getValue(PipeGen.CHAR,
-					String.valueOf(instance.forms[k].charAt(instance.forms[k].length() - 3))) : cend);
-			chars[i][k][9] = (short) (instance.forms[k].length() > 3 ? m_encoder.getValue(PipeGen.CHAR,
-					String.valueOf(instance.forms[k].charAt(instance.forms[k].length() - 4))) : cend);
-			chars[i][k][10] = (short) (instance.forms[k].length() > 4 ? m_encoder.getValue(PipeGen.CHAR,
-					String.valueOf(instance.forms[k].charAt(instance.forms[k].length() - 5))) : cend);
-			chars[i][k][11] = (short) instance.forms[k].length();
-			chars[i][k][12] = (short) (instance.forms[k].length() > 0
-					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(instance.forms[k].charAt(0))) : cend);
-			formlc[i][k] = m_encoder.getValue(PipeGen.WORD, instance.forms[k].toLowerCase());
-		}
-	}
-
-	public void fillChars(SentenceData09 instance, int i, String[] what, int cend) {
-		chars[i] = new short[instance.length()][13];
-		formlc[i] = new int[instance.length()];
-
-		for (int k = 0; k < instance.length(); k++) {
-			chars[i][k][0] = (short) m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(0)));
-			chars[i][k][1] = (short) (what[k].length() > 1
-					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(1))) : cend);// m_encoder.getValue(PipeGen.CHAR,
-																									// END);
-			chars[i][k][2] = (short) (what[k].length() > 2
-					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(2))) : cend);
-			chars[i][k][3] = (short) (what[k].length() > 3
-					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(3))) : cend);
-			chars[i][k][4] = (short) (what[k].length() > 4
-					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(4))) : cend);
-			chars[i][k][5] = (short) (what[k].length() > 5
-					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(5))) : cend);
-
-			chars[i][k][6] = (short) (m_encoder.getValue(PipeGen.CHAR,
-					String.valueOf(what[k].charAt(what[k].length() - 1))));
-			chars[i][k][7] = (short) (what[k].length() > 1
-					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(what[k].length() - 2))) : cend);// m_encoder.getValue(PipeGen.CHAR,
-																														// END);
-			chars[i][k][8] = (short) (what[k].length() > 2
-					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(what[k].length() - 3))) : cend);
-			chars[i][k][9] = (short) (what[k].length() > 3
-					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(what[k].length() - 4))) : cend);
-			chars[i][k][10] = (short) (what[k].length() > 4
-					? m_encoder.getValue(PipeGen.CHAR, String.valueOf(what[k].charAt(what[k].length() - 5))) : cend);
-			chars[i][k][11] = (short) what[k].length();
-			formlc[i][k] = m_encoder.getValue(PipeGen.WORD, what[k].toLowerCase());
-		}
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/IntIntHash.java b/dependencyParser/mate-tools/src/is2/data/IntIntHash.java
deleted file mode 100644
index 1019507..0000000
--- a/dependencyParser/mate-tools/src/is2/data/IntIntHash.java
+++ /dev/null
@@ -1,255 +0,0 @@
-package is2.data;
-
-import java.util.Arrays;
-
-final public class IntIntHash {
-
-	protected int _size;
-	protected int _free;
-	protected float _loadFactor;
-	public int _maxSize;
-	protected int _autoCompactRemovesRemaining;
-	protected float _autoCompactionFactor;
-	public int _set[];
-	private int _values[];
-
-	public IntIntHash() {
-		this(102877, 0.5F);
-	}
-
-	public IntIntHash(int initialCapacity, float loadFactor) {
-		_loadFactor = loadFactor;
-		_autoCompactionFactor = loadFactor;
-		setUp((int) Math.ceil(initialCapacity / loadFactor));
-	}
-
-	public int size() {
-		return _size;
-	}
-
-	public void ensureCapacity(int desiredCapacity) {
-
-		if (desiredCapacity > _maxSize - size()) {
-			rehash(PrimeFinder.nextPrime((int) Math.ceil((desiredCapacity + size()) / _loadFactor) + 1));
-			computeMaxSize(capacity());
-		}
-	}
-
-	public void compact() {
-		rehash(PrimeFinder.nextPrime((int) Math.ceil(size() / _loadFactor) + 1));
-		computeMaxSize(capacity());
-		if (_autoCompactionFactor != 0.0F)
-			computeNextAutoCompactionAmount(size());
-	}
-
-	public void setAutoCompactionFactor(float factor) {
-		if (factor < 0.0F) {
-			throw new IllegalArgumentException(
-					(new StringBuilder()).append("Factor must be >= 0: ").append(factor).toString());
-		} else {
-			_autoCompactionFactor = factor;
-			return;
-		}
-	}
-
-	public float getAutoCompactionFactor() {
-		return _autoCompactionFactor;
-	}
-
-	private void computeMaxSize(int capacity) {
-		_maxSize = Math.min(capacity - 1, (int) Math.floor(capacity * _loadFactor));
-		_free = capacity - _size;
-	}
-
-	private void computeNextAutoCompactionAmount(int size) {
-		if (_autoCompactionFactor != 0.0F)
-			_autoCompactRemovesRemaining = Math.round(size * _autoCompactionFactor);
-	}
-
-	protected final void postInsertHook(boolean usedFreeSlot) {
-		if (usedFreeSlot)
-			_free--;
-		if (++_size > _maxSize || _free == 0) {
-			int newCapacity = _size <= _maxSize ? capacity() : PrimeFinder.nextPrime(capacity() << 1);
-			rehash(newCapacity);
-			computeMaxSize(capacity());
-		}
-	}
-
-	protected int calculateGrownCapacity() {
-		return capacity() << 1;
-	}
-
-	protected int capacity() {
-		return _values.length;
-	}
-
-	public boolean contains(int val) {
-		return index(val) >= 0;
-	}
-
-	private int index(int v) {
-
-		int length = _set.length;
-		int index = Math.abs((computeHashCode(v) /* & 2147483647 */ ) % length);
-
-		while (true) {
-			// first
-			long l = _set[index];
-			if (l == 0) {
-				// good++;
-				return -1;
-			}
-			// second
-			if (l == v) {
-				return index;
-			}
-			if (--index < 0)
-				index += length;
-		}
-		// return -1;
-	}
-
-	protected int insertionIndex(long val) {
-		int length = _set.length;
-		int index = Math.abs((computeHashCode(val) /* & 2147483647 */ ) % length);
-		while (true) {
-			if (_set[index] == 0)
-				return index;
-			if (_set[index] == val)
-				return -index - 1;
-			if (--index < 0)
-				index += length;
-
-		}
-	}
-
-	public int computeHashCode(long value) {
-		return (int) ((value ^ (value & 0xffffffff00000000L) >>> 32) * 31);// 0x811c9dc5
-																			// ^
-																			// //
-																			// 29
-	}
-
-	protected int setUp(int initialCapacity) {
-		int capacity = PrimeFinder.nextPrime(initialCapacity);
-		computeMaxSize(capacity);
-		computeNextAutoCompactionAmount(initialCapacity);
-		_set = new int[capacity];
-		_values = new int[capacity];
-		return capacity;
-	}
-
-	public void put(int key, int value) {
-		int index = insertionIndex(key);
-		doPut(key, value, index);
-	}
-
-	private void doPut(int key, int value, int index) {
-		boolean isNewMapping = true;
-		if (index < 0) {
-			index = -index - 1;
-			isNewMapping = false;
-		}
-		_set[index] = key;
-		_values[index] = value;
-		if (isNewMapping)
-			postInsertHook(true);
-
-	}
-
-	protected void rehash(int newCapacity) {
-		int oldCapacity = _set.length;
-		int oldKeys[] = _set;
-		int oldVals[] = _values;
-		_set = new int[newCapacity];
-		_values = new int[newCapacity];
-		int i = oldCapacity;
-
-		while (true) {
-			if (i-- <= 0)
-				break;
-			if (oldVals[i] != 0) {
-				int o = oldKeys[i];
-				int index = insertionIndex(o);
-				_set[index] = o;
-				_values[index] = oldVals[i];
-			}
-		}
-	}
-
-	int index = 0;
-
-	public int get(int key) {
-		int index = index(key);
-		return index >= 0 ? _values[index] : 0;
-	}
-
-	public void clear() {
-		_size = 0;
-		_free = capacity();
-		Arrays.fill(_set, 0, _set.length, 0);
-		// Arrays.fill(_values, 0, _values.length, 0);
-	}
-
-	public int remove(int key) {
-		int prev = 0;
-		int index = index(key);
-		if (index >= 0) {
-			prev = _values[index];
-			_values[index] = 0;
-			_set[index] = 0;
-			_size--;
-			if (_autoCompactionFactor != 0.0F) {
-				_autoCompactRemovesRemaining--;
-				if (_autoCompactRemovesRemaining <= 0)
-					compact();
-			}
-		}
-		return prev;
-	}
-
-	public int[] getValues() {
-		int vals[] = new int[size()];
-		int v[] = _values;
-		int i = v.length;
-		int j = 0;
-		do {
-			if (i-- <= 0)
-				break;
-			if (v[i] != 0)
-				vals[j++] = v[i];
-		} while (true);
-		return vals;
-	}
-
-	public int[] keys() {
-		int keys[] = new int[size()];
-		int k[] = _set;
-		// byte states[] = _states;
-		int i = k.length;
-		int j = 0;
-		do {
-			if (i-- <= 0)
-				break;
-			if (k[i] != 0)
-				keys[j++] = k[i];
-		} while (true);
-		return keys;
-	}
-
-	/**
-	 * @param index2
-	 * @param i
-	 * @return
-	 */
-	public boolean adjustValue(int key, int i) {
-		int index = index(key);
-		if (index >= 0) {
-			_values[index] += i;
-			return true;
-		}
-		return false;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/Long2Int.java b/dependencyParser/mate-tools/src/is2/data/Long2Int.java
deleted file mode 100755
index 1a4a3c4..0000000
--- a/dependencyParser/mate-tools/src/is2/data/Long2Int.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package is2.data;
-
-/**
- * @author Bernd Bohnet, 01.09.2009
- *
- *         Maps for the Hash Kernel the long values to the int values.
- */
-final public class Long2Int implements Long2IntInterface {
-
-	public Long2Int() {
-		size = 115911564;
-	}
-
-	public Long2Int(int s) {
-		size = s;
-	}
-
-	public static void main(String args[]) {
-
-		long l = 123456;
-		long l2 = 1010119;
-		System.out.println("l \t" + l + "\t" + printBits(l));
-
-		long x = 100000000;
-		System.out.println("1m\t" + l2 + "\t" + printBits(x) + "\t" + x);
-
-		System.out.println("l2\t" + l2 + "\t" + printBits(l));
-
-		System.out.println("l2*l\t" + l2 + "\t" + printBits(l * l2) + " \t " + l * l2);
-
-		System.out.println("l2*l*l2\t" + l2 + "\t" + printBits(l * l2 * l2) + " \t " + l * l2 * l2);
-
-		System.out.println("l2*l*l2\t" + l2 + "\t" + printBits(l * l2 * l2 * l2) + " \t " + l * l2 * l2 * l2);
-
-		System.out.println(
-				"l2*l*l2\t" + l2 + "\t" + printBits((l * l2) % 0xfffff) + " \t " + l * l2 * l2 * l2 + "\t " + 0xfffff);
-		System.out.println("l2*l*l2\t" + l2 + "\t" + printBits((l * l2) & 0xfffffff) + " \t " + l * l2 * l2 * l2);
-	}
-
-	/** Integer counter for long2int */
-	final private int size; // 0x03ffffff //0x07ffffff
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.sp09k9992.Long2IntIterface#size()
-	 */
-	@Override
-	public int size() {
-		return size;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.sp09k9992.Long2IntIterface#start() has no meaning for this
-	 * implementation
-	 */
-	final public void start() {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.sp09k9992.Long2IntIterface#l2i(long)
-	 */
-	@Override
-	final public int l2i(long l) {
-		if (l < 0)
-			return -1;
-
-		// this works well LAS 88.138
-		// int r= (int)(( l ^ (l&0xffffffff00000000L) >>> 29 ));//0x811c9dc5 ^
-		// // 29
-		// return Math.abs(r % size);
-		// this works a bit better and good with 0x03ffffff
-		//
-		/*
-		 * long r= l;//26 l = (l>>12)&0xfffffffffffff000L; r ^= l;//38 l =
-		 * (l>>11)&0xffffffffffffc000L; r ^= l;//49 l = (l>>9)&
-		 * 0xffffffffffff0000L; //53 r ^= l;//58 l = (l>>7)&0xfffffffffffc0000L;
-		 * //62 r ^=l;//65 int x = (int)r; x = x % size; // return x >= 0 ? x :
-		 * -x ;// Math.abs(r % size);
-		 * 
-		 */
-		// 26 0x03ffffff
-		// together with 0x07ffffff 27 88.372
-		long r = l;// 27
-		l = (l >> 13) & 0xffffffffffffe000L;
-		r ^= l; // 40
-		l = (l >> 11) & 0xffffffffffff0000L;
-		r ^= l; // 51
-		l = (l >> 9) & 0xfffffffffffc0000L; // 53
-		r ^= l; // 60
-		l = (l >> 7) & 0xfffffffffff00000L; // 62
-		r ^= l; // 67
-		int x = ((int) r) % size;
-
-		return x >= 0 ? x : -x;
-	}
-
-	static public StringBuffer printBits(long out) {
-		StringBuffer s = new StringBuffer();
-
-		for (int k = 0; k < 65; k++) {
-			s.append((out & 1) == 1 ? "1" : "0");
-			out >>= 1;
-		}
-		s.reverse();
-		return s;
-	}
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/Long2IntExact.java b/dependencyParser/mate-tools/src/is2/data/Long2IntExact.java
deleted file mode 100644
index debf455..0000000
--- a/dependencyParser/mate-tools/src/is2/data/Long2IntExact.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package is2.data;
-
-/**
- * @author Bernd Bohnet, 01.09.2009
- *
- *         Maps for the Hash Kernel the long values to the int values.
- */
-final public class Long2IntExact implements Long2IntInterface {
-
-	static gnu.trove.TLongIntHashMap mapt = new gnu.trove.TLongIntHashMap();
-
-	static int cnt = 0;
-
-	public Long2IntExact() {
-		size = 115911564;
-	}
-
-	public Long2IntExact(int s) {
-		size = s;
-	}
-
-	/** Integer counter for long2int */
-	final private int size; // 0x03ffffff //0x07ffffff
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.sp09k9992.Long2IntIterface#size()
-	 */
-	@Override
-	public int size() {
-		return size;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.sp09k9992.Long2IntIterface#start() has no meaning for this
-	 * implementation
-	 */
-	final public void start() {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.sp09k9992.Long2IntIterface#l2i(long)
-	 */
-	@Override
-	final public int l2i(long l) {
-		if (l < 0)
-			return -1;
-
-		int i = mapt.get(l);
-		if (i != 0)
-			return i;
-
-		if (i == 0 && cnt < size - 1) {
-			cnt++;
-			mapt.put(l, cnt);
-			return cnt;
-		}
-		return -1;
-	}
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/Long2IntInterface.java b/dependencyParser/mate-tools/src/is2/data/Long2IntInterface.java
deleted file mode 100755
index 8401c1f..0000000
--- a/dependencyParser/mate-tools/src/is2/data/Long2IntInterface.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package is2.data;
-
-public interface Long2IntInterface {
-
-	public abstract int size();
-
-	/**
-	 * Maps a long to a integer value. This is very useful to save memory for
-	 * sparse data long values
-	 * 
-	 * @param l
-	 * @return the integer
-	 */
-	public abstract int l2i(long l);
-
-}
\ No newline at end of file
diff --git a/dependencyParser/mate-tools/src/is2/data/Long2IntQuick.java b/dependencyParser/mate-tools/src/is2/data/Long2IntQuick.java
deleted file mode 100644
index 9956173..0000000
--- a/dependencyParser/mate-tools/src/is2/data/Long2IntQuick.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package is2.data;
-
-/**
- * @author Bernd Bohnet, 01.09.2009
- *
- *         Maps for the Hash Kernel the long values to the int values.
- */
-final public class Long2IntQuick implements Long2IntInterface {
-
-	/** Integer counter for long2int */
-	final private int size;
-
-	public Long2IntQuick() {
-		size = 0x07ffffff;
-	}
-
-	public Long2IntQuick(int s) {
-		size = s;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.sp09k9992.Long2IntIterface#size()
-	 */
-	@Override
-	public int size() {
-		return size;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.sp09k9992.Long2IntIterface#start() has no meaning for this
-	 * implementation
-	 */
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.sp09k9992.Long2IntIterface#l2i(long)
-	 */
-	@Override
-	final public int l2i(long r) {
-		long l = (r >> 16) & 0xfffffffffffff000L;
-		r ^= l;
-		r ^= l = (l >> 12) & 0xffffffffffff0000L;
-		r ^= l = (l >> 8) & 0xfffffffffffc0000L;
-		return (int) (r % size);
-	}
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/MFB.java b/dependencyParser/mate-tools/src/is2/data/MFB.java
deleted file mode 100755
index 9fa4e3c..0000000
--- a/dependencyParser/mate-tools/src/is2/data/MFB.java
+++ /dev/null
@@ -1,248 +0,0 @@
-package is2.data;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map.Entry;
-
-import is2.util.DB;
-
-/**
- * Map Features, do not map long to integer
- *
- * @author Bernd Bohnet, 20.09.2009
- */
-
-final public class MFB implements IEncoderPlus {
-
-	/** The features and its values */
-	static private final HashMap<String, HashMap<String, Integer>> m_featureSets = new HashMap<String, HashMap<String, Integer>>();
-
-	/** The feature class and the number of values */
-	static private final HashMap<String, Integer> m_featureCounters = new HashMap<String, Integer>();
-
-	/** The number of bits needed to encode a feature */
-	static final HashMap<String, Integer> m_featureBits = new HashMap<String, Integer>();
-
-	/** Integer counter for long2int */
-	static private int count = 0;
-
-	/** Stop growing */
-	public boolean stop = false;
-
-	final public static String NONE = "<None>";
-
-	public MFB() {
-	}
-
-	public int size() {
-		return count;
-	}
-
-	/**
-	 * Register an attribute class, if it not exists and add a possible value
-	 * 
-	 * @param type
-	 * @param type2
-	 */
-	@Override
-	final public int register(String a, String v) {
-
-		synchronized (m_featureCounters) {
-
-			HashMap<String, Integer> fs = getFeatureSet().get(a);
-			if (fs == null) {
-				fs = new HashMap<String, Integer>();
-				getFeatureSet().put(a, fs);
-				fs.put(NONE, 0);
-				getFeatureCounter().put(a, 1);
-			}
-
-			Integer i = fs.get(v);
-			if (i == null) {
-				Integer c = getFeatureCounter().get(a);
-				fs.put(v, c);
-				c++;
-				getFeatureCounter().put(a, c);
-				return c - 1;
-			} else
-				return i;
-		}
-	}
-
-	/**
-	 * Calculates the number of bits needed to encode a feature
-	 */
-	public void calculateBits() {
-
-		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
-			int bits = (int) Math.ceil((Math.log(e.getValue() + 1) / Math.log(2)));
-			m_featureBits.put(e.getKey(), bits);
-		}
-
-		// System.out.println("total number of needed bits "+total);
-	}
-
-	@Override
-	public String toString() {
-
-		StringBuffer content = new StringBuffer();
-		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
-			content.append(e.getKey() + " " + e.getValue());
-			content.append(':');
-			// HashMap<String,Integer> vs = getFeatureSet().get(e.getKey());
-			content.append(getFeatureBits(e.getKey()));
-
-			/*
-			 * if (vs.size()<120) for(Entry<String,Integer> e2 : vs.entrySet())
-			 * { content.append(e2.getKey()+" ("+e2.getValue()+") "); }
-			 */
-			content.append('\n');
-
-		}
-		return content.toString();
-	}
-
-	static final public short getFeatureBits(String a) {
-		if (m_featureBits.get(a) == null)
-			return 0;
-		return (short) m_featureBits.get(a).intValue();
-	}
-
-	/**
-	 * Get the integer place holder of the string value v of the type a
-	 *
-	 * @param t
-	 *            the type
-	 * @param v
-	 *            the value
-	 * @return the integer place holder of v
-	 */
-	@Override
-	final public int getValue(String t, String v) {
-
-		if (m_featureSets.get(t) == null)
-			return -1;
-		Integer vi = m_featureSets.get(t).get(v);
-		if (vi == null)
-			return -1; // stop &&
-		return vi.intValue();
-	}
-
-	/**
-	 * Static version of getValue
-	 * 
-	 * @see getValue
-	 */
-	static final public int getValueS(String a, String v) {
-
-		if (m_featureSets.get(a) == null)
-			return -1;
-		Integer vi = m_featureSets.get(a).get(v);
-		if (vi == null)
-			return -1; // stop &&
-		return vi.intValue();
-	}
-
-	public int hasValue(String a, String v) {
-
-		Integer vi = m_featureSets.get(a).get(v);
-		if (vi == null)
-			return -1;
-		return vi.intValue();
-	}
-
-	public static String printBits(int k) {
-		StringBuffer s = new StringBuffer();
-		for (int i = 0; i < 31; i++) {
-			s.append((k & 0x00000001) == 1 ? '1' : '0');
-			k = k >> 1;
-
-		}
-		s.reverse();
-		return s.toString();
-	}
-
-	/**
-	 * Maps a long to a integer value. This is very useful to save memory for
-	 * sparse data long values
-	 * 
-	 * @param l
-	 * @return the integer
-	 */
-	static public int misses = 0;
-	static public int good = 0;
-
-	/**
-	 * Write the data
-	 * 
-	 * @param dos
-	 * @throws IOException
-	 */
-	static public void writeData(DataOutputStream dos) throws IOException {
-		dos.writeInt(getFeatureSet().size());
-		// DB.println("write"+getFeatureSet().size());
-		for (Entry<String, HashMap<String, Integer>> e : getFeatureSet().entrySet()) {
-			dos.writeUTF(e.getKey());
-			dos.writeInt(e.getValue().size());
-
-			for (Entry<String, Integer> e2 : e.getValue().entrySet()) {
-
-				if (e2.getKey() == null)
-					DB.println("key " + e2.getKey() + " value " + e2.getValue() + " e -key " + e.getKey());
-				dos.writeUTF(e2.getKey());
-				dos.writeInt(e2.getValue());
-
-			}
-
-		}
-	}
-
-	public void read(DataInputStream din) throws IOException {
-
-		int size = din.readInt();
-		for (int i = 0; i < size; i++) {
-			String k = din.readUTF();
-			int size2 = din.readInt();
-
-			HashMap<String, Integer> h = new HashMap<String, Integer>();
-			getFeatureSet().put(k, h);
-			for (int j = 0; j < size2; j++) {
-				h.put(din.readUTF(), din.readInt());
-			}
-			getFeatureCounter().put(k, size2);
-		}
-
-		count = size;
-		// stop();
-		calculateBits();
-	}
-
-	/**
-	 * Clear the data
-	 */
-	static public void clearData() {
-		getFeatureSet().clear();
-		m_featureBits.clear();
-		getFeatureSet().clear();
-	}
-
-	@Override
-	public HashMap<String, Integer> getFeatureCounter() {
-		return m_featureCounters;
-	}
-
-	static public HashMap<String, HashMap<String, Integer>> getFeatureSet() {
-		return m_featureSets;
-	}
-
-	static public String[] reverse(HashMap<String, Integer> v) {
-		String[] set = new String[v.size()];
-		for (Entry<String, Integer> e : v.entrySet()) {
-			set[e.getValue()] = e.getKey();
-		}
-		return set;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/MFC.java b/dependencyParser/mate-tools/src/is2/data/MFC.java
deleted file mode 100644
index 859a8ce..0000000
--- a/dependencyParser/mate-tools/src/is2/data/MFC.java
+++ /dev/null
@@ -1,243 +0,0 @@
-package is2.data;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map.Entry;
-
-import is2.util.DB;
-
-/**
- * Map Features, do not map long to integer
- *
- * @author Bernd Bohnet, 17.09.2011
- */
-
-final public class MFC implements IEncoderPlus {
-
-	/** The features and its values */
-	private final HashMap<String, HashMap<String, Integer>> m_featureSets = new HashMap<String, HashMap<String, Integer>>();
-
-	/** The feature class and the number of values */
-	private final HashMap<String, Integer> m_featureCounters = new HashMap<String, Integer>();
-
-	/** The number of bits needed to encode a feature */
-	final HashMap<String, Integer> m_featureBits = new HashMap<String, Integer>();
-
-	/** Integer counter for long2int */
-	private int count = 0;
-
-	public MFC() {
-	}
-
-	public int size() {
-		return count;
-	}
-
-	/**
-	 * Register an attribute class, if it not exists and add a possible value
-	 * 
-	 * @param type
-	 * @param type2
-	 */
-	@Override
-	final public int register(String a, String v) {
-
-		synchronized (m_featureCounters) {
-
-			HashMap<String, Integer> fs = getFeatureSet().get(a);
-			if (fs == null) {
-				fs = new HashMap<String, Integer>();
-				getFeatureSet().put(a, fs);
-				fs.put(NONE, 0);
-				getFeatureCounter().put(a, 1);
-			}
-
-			Integer i = fs.get(v);
-			if (i == null) {
-				Integer c = getFeatureCounter().get(a);
-				fs.put(v, c);
-				c++;
-				getFeatureCounter().put(a, c);
-				return c - 1;
-			} else
-				return i;
-		}
-	}
-
-	/**
-	 * Calculates the number of bits needed to encode a feature
-	 */
-	public void calculateBits() {
-
-		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
-			int bits = (int) Math.ceil((Math.log(e.getValue() + 1) / Math.log(2)));
-			m_featureBits.put(e.getKey(), bits);
-		}
-
-		// System.out.println("total number of needed bits "+total);
-	}
-
-	@Override
-	public String toString() {
-
-		StringBuffer content = new StringBuffer();
-		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
-			content.append(e.getKey() + " " + e.getValue());
-			content.append(':');
-			// HashMap<String,Integer> vs = getFeatureSet().get(e.getKey());
-			content.append(getFeatureBits(e.getKey()));
-
-			/*
-			 * if (vs.size()<120) for(Entry<String,Integer> e2 : vs.entrySet())
-			 * { content.append(e2.getKey()+" ("+e2.getValue()+") "); }
-			 */
-			content.append('\n');
-
-		}
-		return content.toString();
-	}
-
-	final public short getFeatureBits(String a) {
-		if (m_featureBits.get(a) == null)
-			return 0;
-		return (short) m_featureBits.get(a).intValue();
-	}
-
-	/**
-	 * Get the integer place holder of the string value v of the type a
-	 *
-	 * @param t
-	 *            the type
-	 * @param v
-	 *            the value
-	 * @return the integer place holder of v
-	 */
-	@Override
-	final public int getValue(String t, String v) {
-
-		if (m_featureSets.get(t) == null)
-			return -1;
-		Integer vi = m_featureSets.get(t).get(v);
-		if (vi == null)
-			return -1; // stop &&
-		return vi.intValue();
-	}
-
-	/**
-	 * Static version of getValue
-	 * 
-	 * @see getValue
-	 */
-	final public int getValueS(String a, String v) {
-
-		if (m_featureSets.get(a) == null)
-			return -1;
-		Integer vi = m_featureSets.get(a).get(v);
-		if (vi == null)
-			return -1; // stop &&
-		return vi.intValue();
-	}
-
-	public int hasValue(String a, String v) {
-
-		Integer vi = m_featureSets.get(a).get(v);
-		if (vi == null)
-			return -1;
-		return vi.intValue();
-	}
-
-	public static String printBits(int k) {
-		StringBuffer s = new StringBuffer();
-		for (int i = 0; i < 31; i++) {
-			s.append((k & 0x00000001) == 1 ? '1' : '0');
-			k = k >> 1;
-
-		}
-		s.reverse();
-		return s.toString();
-	}
-
-	/**
-	 * Maps a long to a integer value. This is very useful to save memory for
-	 * sparse data long values
-	 * 
-	 * @param l
-	 * @return the integer
-	 */
-	static public int misses = 0;
-	static public int good = 0;
-
-	/**
-	 * Write the data
-	 * 
-	 * @param dos
-	 * @throws IOException
-	 */
-	public void writeData(DataOutputStream dos) throws IOException {
-		dos.writeInt(getFeatureSet().size());
-		// DB.println("write"+getFeatureSet().size());
-		for (Entry<String, HashMap<String, Integer>> e : getFeatureSet().entrySet()) {
-			dos.writeUTF(e.getKey());
-			dos.writeInt(e.getValue().size());
-
-			for (Entry<String, Integer> e2 : e.getValue().entrySet()) {
-
-				if (e2.getKey() == null)
-					DB.println("key " + e2.getKey() + " value " + e2.getValue() + " e -key " + e.getKey());
-				dos.writeUTF(e2.getKey());
-				dos.writeInt(e2.getValue());
-
-			}
-
-		}
-	}
-
-	public void read(DataInputStream din) throws IOException {
-
-		int size = din.readInt();
-		for (int i = 0; i < size; i++) {
-			String k = din.readUTF();
-			int size2 = din.readInt();
-
-			HashMap<String, Integer> h = new HashMap<String, Integer>();
-			getFeatureSet().put(k, h);
-			for (int j = 0; j < size2; j++) {
-				h.put(din.readUTF(), din.readInt());
-			}
-			getFeatureCounter().put(k, size2);
-		}
-
-		count = size;
-		// stop();
-		calculateBits();
-	}
-
-	/**
-	 * Clear the data
-	 */
-	public void clearData() {
-		getFeatureSet().clear();
-		m_featureBits.clear();
-		getFeatureSet().clear();
-	}
-
-	@Override
-	public HashMap<String, Integer> getFeatureCounter() {
-		return m_featureCounters;
-	}
-
-	public HashMap<String, HashMap<String, Integer>> getFeatureSet() {
-		return m_featureSets;
-	}
-
-	public String[] reverse(HashMap<String, Integer> v) {
-		String[] set = new String[v.size()];
-		for (Entry<String, Integer> e : v.entrySet()) {
-			set[e.getValue()] = e.getKey();
-		}
-		return set;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/MFO.java b/dependencyParser/mate-tools/src/is2/data/MFO.java
deleted file mode 100755
index a8bc441..0000000
--- a/dependencyParser/mate-tools/src/is2/data/MFO.java
+++ /dev/null
@@ -1,380 +0,0 @@
-package is2.data;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map.Entry;
-
-import is2.util.DB;
-
-/**
- * Map Features, do not map long to integer
- *
- * @author Bernd Bohnet, 20.09.2009
- */
-
-final public class MFO implements IEncoderPlus {
-
-	/** The features and its values */
-	static private final HashMap<String, HashMap<String, Integer>> m_featureSets = new HashMap<String, HashMap<String, Integer>>();
-
-	/** The feature class and the number of values */
-	static private final HashMap<String, Integer> m_featureCounters = new HashMap<String, Integer>();
-
-	/** The number of bits needed to encode a feature */
-	static final HashMap<String, Integer> m_featureBits = new HashMap<String, Integer>();
-
-	final public static String NONE = "<None>";
-
-	final public static class Data4 {
-		public int shift;
-		public short a0, a1, a2, a3, a4, a5, a6, a7, a8, a9;
-		public int v0, v1, v2, v3, v4, v5, v6, v7, v8, v9;
-
-		final public long calcs(int b, long v, long l) {
-			if (l < 0)
-				return l;
-			l |= v << shift;
-			shift += b;
-			return l;
-		}
-
-	}
-
-	public MFO() {
-	}
-
-	/**
-	 * Register an attribute class, if it not exists and add a possible value
-	 * 
-	 * @param type
-	 * @param type2
-	 */
-	@Override
-	final public int register(String a, String v) {
-
-		HashMap<String, Integer> fs = getFeatureSet().get(a);
-		if (fs == null) {
-			fs = new HashMap<String, Integer>();
-			getFeatureSet().put(a, fs);
-			fs.put(NONE, 0);
-			getFeatureCounter().put(a, 1);
-		}
-		Integer c = getFeatureCounter().get(a);
-
-		Integer i = fs.get(v);
-		if (i == null) {
-			fs.put(v, c);
-			c++;
-			getFeatureCounter().put(a, c);
-			return c - 1;
-		} else
-			return i;
-	}
-
-	/**
-	 * Calculates the number of bits needed to encode a feature
-	 */
-	public void calculateBits() {
-
-		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
-			int bits = (int) Math.ceil((Math.log(e.getValue() + 1) / Math.log(2)));
-			m_featureBits.put(e.getKey(), bits);
-		}
-
-		// System.out.println("total number of needed bits "+total);
-	}
-
-	@Override
-	public String toString() {
-
-		StringBuffer content = new StringBuffer();
-		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
-			content.append(e.getKey() + " " + e.getValue());
-			content.append(':');
-			// HashMap<String,Integer> vs = getFeatureSet().get(e.getKey());
-			content.append(getFeatureBits(e.getKey()));
-
-			/*
-			 * if (vs.size()<120) for(Entry<String,Integer> e2 : vs.entrySet())
-			 * { content.append(e2.getKey()+" ("+e2.getValue()+") "); }
-			 */
-			content.append('\n');
-
-		}
-		return content.toString();
-	}
-
-	static final public long calcs(Data4 d, int b, long v, long l) {
-		if (l < 0)
-			return l;
-		l |= v << d.shift;
-		d.shift += b;
-		return l;
-	}
-
-	static final public short getFeatureBits(String a) {
-		return (short) m_featureBits.get(a).intValue();
-	}
-
-	/**
-	 * Get the integer place holder of the string value v of the type a
-	 *
-	 * @param t
-	 *            the type
-	 * @param v
-	 *            the value
-	 * @return the integer place holder of v
-	 */
-	@Override
-	final public int getValue(String t, String v) {
-
-		if (m_featureSets.get(t) == null)
-			return -1;
-		Integer vi = m_featureSets.get(t).get(v);
-		if (vi == null)
-			return -1; // stop &&
-		return vi.intValue();
-	}
-
-	/**
-	 * Static version of getValue
-	 * 
-	 * @see getValue
-	 */
-	static final public int getValueS(String a, String v) {
-
-		if (m_featureSets.get(a) == null)
-			return -1;
-		Integer vi = m_featureSets.get(a).get(v);
-		if (vi == null)
-			return -1; // stop &&
-		return vi.intValue();
-	}
-
-	public int hasValue(String a, String v) {
-
-		Integer vi = m_featureSets.get(a).get(v);
-		if (vi == null)
-			return -1;
-		return vi.intValue();
-	}
-
-	final public long calc2(Data4 d) {
-
-		if (d.v0 < 0 || d.v1 < 0)
-			return -1;
-		// if (d.v1<0||d.v2<0) return -1;
-
-		long l = d.v0;
-		short shift = d.a0;
-		l |= (long) d.v1 << shift;
-		shift += d.a1;
-		// l |= (long)d.v2<<shift;
-		d.shift = shift;
-
-		// d.shift=;
-		return l;
-	}
-
-	final public long calc3(Data4 d) {
-
-		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0)
-			return -1;
-		// if (d.v1<0||d.v2<0) return -1;
-
-		long l = d.v0;
-		short shift = d.a0;
-		l |= (long) d.v1 << shift;
-		shift += d.a1;
-		l |= (long) d.v2 << shift;
-		d.shift = shift + d.a2;
-
-		// d.shift=;
-		return l;
-	}
-
-	final public long calc4(Data4 d) {
-		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0)
-			return -1;
-
-		long l = d.v0;
-		int shift = d.a0;
-		l |= (long) d.v1 << shift;
-		shift += d.a1;
-		l |= (long) d.v2 << shift;
-		shift += d.a2;
-		l |= (long) d.v3 << shift;
-		d.shift = shift + d.a3;
-
-		return l;
-	}
-
-	final public long calc5(Data4 d) {
-
-		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0 || d.v4 < 0)
-			return -1;
-
-		long l = d.v0;
-		int shift = d.a0;
-		l |= (long) d.v1 << shift;
-		shift += d.a1;
-		l |= (long) d.v2 << shift;
-		shift += d.a2;
-		l |= (long) d.v3 << shift;
-		shift += d.a3;
-		l |= (long) d.v4 << shift;
-		d.shift = shift + d.a4;
-
-		return l;
-	}
-
-	static final public long calc6(Data4 d) {
-
-		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0 || d.v4 < 0 || d.v5 < 0)
-			return -1;
-
-		long l = d.v0;
-		int shift = d.a0;
-		l |= (long) d.v1 << shift;
-		shift += d.a1;
-		l |= (long) d.v2 << shift;
-		shift += d.a2;
-		l |= (long) d.v3 << shift;
-		shift += d.a3;
-		l |= (long) d.v4 << shift;
-		shift += d.a4;
-		l |= (long) d.v5 << shift;
-		d.shift = shift + d.a5;
-
-		return l;
-	}
-
-	final public long calc7(Data4 d) {
-
-		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0 || d.v4 < 0 || d.v5 < 0 || d.v6 < 0)
-			return -1;
-
-		long l = d.v0;
-		int shift = d.a0;
-		l |= (long) d.v1 << shift;
-		shift += d.a1;
-		l |= (long) d.v2 << shift;
-		shift += d.a2;
-		l |= (long) d.v3 << shift;
-		shift += d.a3;
-		l |= (long) d.v4 << shift;
-		shift += d.a4;
-		l |= (long) d.v5 << shift;
-		shift += d.a5;
-		l |= (long) d.v6 << shift;
-		d.shift = shift + d.a6;
-
-		return l;
-	}
-
-	final public long calc8(Data4 d) {
-
-		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0 || d.v4 < 0 || d.v5 < 0 || d.v6 < 0 || d.v7 < 0)
-			return -1;
-
-		long l = d.v0;
-		int shift = d.a0;
-		l |= (long) d.v1 << shift;
-		shift += d.a1;
-		l |= (long) d.v2 << shift;
-		shift += d.a2;
-		l |= (long) d.v3 << shift;
-		shift += d.a3;
-		l |= (long) d.v4 << shift;
-		shift += d.a4;
-		l |= (long) d.v5 << shift;
-		shift += d.a5;
-		l |= (long) d.v6 << shift;
-		shift += d.a6;
-		l |= (long) d.v7 << shift;
-		d.shift = shift + d.a7;
-
-		return l;
-	}
-
-	/**
-	 * Maps a long to a integer value. This is very useful to save memory for
-	 * sparse data long values
-	 * 
-	 * @param node
-	 * @return the integer
-	 */
-	static public int misses = 0;
-	static public int good = 0;
-
-	/**
-	 * Write the data
-	 * 
-	 * @param dos
-	 * @throws IOException
-	 */
-	public void writeData(DataOutputStream dos) throws IOException {
-		dos.writeInt(getFeatureSet().size());
-		for (Entry<String, HashMap<String, Integer>> e : getFeatureSet().entrySet()) {
-			dos.writeUTF(e.getKey());
-			dos.writeInt(e.getValue().size());
-
-			for (Entry<String, Integer> e2 : e.getValue().entrySet()) {
-
-				if (e2.getKey() == null)
-					DB.println("key " + e2.getKey() + " value " + e2.getValue() + " e -key " + e.getKey());
-				dos.writeUTF(e2.getKey());
-				dos.writeInt(e2.getValue());
-
-			}
-
-		}
-	}
-
-	public void read(DataInputStream din) throws IOException {
-
-		int size = din.readInt();
-		for (int i = 0; i < size; i++) {
-			String k = din.readUTF();
-			int size2 = din.readInt();
-
-			HashMap<String, Integer> h = new HashMap<String, Integer>();
-			getFeatureSet().put(k, h);
-			for (int j = 0; j < size2; j++) {
-				h.put(din.readUTF(), din.readInt());
-			}
-			getFeatureCounter().put(k, size2);
-		}
-
-		calculateBits();
-	}
-
-	/**
-	 * Clear the data
-	 */
-	static public void clearData() {
-		getFeatureSet().clear();
-		m_featureBits.clear();
-		getFeatureSet().clear();
-	}
-
-	@Override
-	public HashMap<String, Integer> getFeatureCounter() {
-		return m_featureCounters;
-	}
-
-	static public HashMap<String, HashMap<String, Integer>> getFeatureSet() {
-		return m_featureSets;
-	}
-
-	static public String[] reverse(HashMap<String, Integer> v) {
-		String[] set = new String[v.size()];
-		for (Entry<String, Integer> e : v.entrySet()) {
-			set[e.getValue()] = e.getKey();
-		}
-		return set;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/Open.java b/dependencyParser/mate-tools/src/is2/data/Open.java
deleted file mode 100755
index d9bf0e6..0000000
--- a/dependencyParser/mate-tools/src/is2/data/Open.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package is2.data;
-
-final public class Open {
-
-	public float p;
-	short s, e, label;
-	byte dir;
-
-	Closed left;
-	Closed right;
-
-	public Open(short s, short t, short dir, short label, Closed left, Closed right, float p) {
-		this.s = s;
-		this.e = t;
-		this.label = label;
-		this.dir = (byte) dir;
-		this.left = left;
-		this.right = right;
-		this.p = p;
-	}
-
-	void create(Parse parse) {
-		if (dir == 0) {
-			parse.heads[s] = e;
-			if (label != -1)
-				parse.labels[s] = label;
-		} else {
-			parse.heads[e] = s;
-			if (label != -1)
-				parse.labels[e] = label;
-		}
-		if (left != null)
-			left.create(parse);
-		if (right != null)
-			right.create(parse);
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/PSTree.java b/dependencyParser/mate-tools/src/is2/data/PSTree.java
deleted file mode 100644
index e916548..0000000
--- a/dependencyParser/mate-tools/src/is2/data/PSTree.java
+++ /dev/null
@@ -1,745 +0,0 @@
-/**
- *
- */
-package is2.data;
-
-import java.util.ArrayList;
-import java.util.Collections;
-
-import is2.util.DB;
-
-/**
- * @author Dr. Bernd Bohnet, 17.01.2011
- *
- *
- */
-public class PSTree {
-
-	int wordCount = 0;
-	public String entries[];
-	public String lemmas[];
-	public int head[];
-	public String pos[];
-	public int[] ok;
-	public int non;
-	public int terminalCount;
-	public String[] morph;
-
-	public int[] forms;
-	public int[] phrases;
-	public int[][] psfeats;
-	public int[] ppos;
-
-	/**
-	 * @param d
-	 */
-	public PSTree(SentenceData09 d) {
-		create(d.length() - 1, d.length() * 20);
-		for (int i = 1; i < d.length(); i++) {
-			entries[i - 1] = d.forms[i];
-			pos[i - 1] = d.ppos[i];
-		}
-	}
-
-	/**
-	 * Create an undefined phrase tree
-	 */
-	public PSTree() {
-	}
-
-	/**
-	 * @param terminals
-	 * @param nonTerminals
-	 */
-	public void create(int terminals, int nonTerminals) {
-		entries = new String[terminals + nonTerminals];
-		pos = new String[terminals + nonTerminals];
-		head = new int[terminals + nonTerminals];
-		lemmas = new String[terminals + nonTerminals];
-		morph = new String[terminals + nonTerminals];
-		non = terminals;
-		wordCount = terminals;
-
-		for (int i = terminals + 1; i < head.length; i++)
-			head[i] = -1;
-	}
-
-	@Override
-	public String toString() {
-
-		StringBuffer s = new StringBuffer();
-
-		for (int i = 0; i < entries.length; i++) {
-			if (head[i] == -1 && entries[i] == null)
-				break;
-
-			s.append(i + "\t" + pos[i] + "\t" + entries[i] + "\t" + head[i] + (ok == null ? "" : ("\t" + (ok[i] == 1)))
-					+ " \n");
-
-		}
-		// DB.println("entries "+entries.length);
-		return s.toString();
-	}
-
-	/**
-	 * @return
-	 */
-	public boolean containsNull() {
-		for (int k = 0; k < wordCount - 1; k++) {
-			if (entries[k] == null)
-				return true;
-		}
-		return false;
-	}
-
-	public int equals(SentenceData09 s) {
-
-		int j = 1; // starts with root
-		for (int i = 0; i < terminalCount - 1; i++) {
-
-			// if (s.forms[j].equals("erschrekkend")) s.forms[j]="erschreckend";
-
-			if (s.forms.length < j) {
-				DB.println("" + s + " " + this.toString());
-				return i;
-
-			}
-
-			if (!entries[i].equals(s.forms[j])) {
-				// System.out.println("ps "+entries[i]+" != ds "+s.forms[j]);
-				// Rolls-Royce
-				if (entries[i].startsWith(s.forms[j]) && s.forms.length > i + 2 && s.forms[j + 1].equals("-")) {
-					j += 2;
-					if (entries[i].contains(s.forms[j - 1]) && s.forms.length > i + 3 && s.forms[j + 1].equals("-")) {
-						j += 2; // &&
-						// System.out.println("s.forms[j] "+s.forms[j]+"
-						// s.forms[j-1] "+s.forms[j-1]+" "+entries[i]);
-						if (entries[i].contains(s.forms[j - 1]) && s.forms.length > i + 3
-								&& s.forms[j + 1].equals("-")) {
-							j += 2; // &&
-							// System.out.println("s.forms[j] "+s.forms[j]+"
-							// s.forms[j-1] "+s.forms[j-1]+" "+entries[i]);
-						}
-					}
-					// Interstate\/Johnson
-				} else if (entries[i].startsWith(s.forms[j]) && s.forms.length > i + 2 && s.forms[j + 1].equals("/")) {
-					j += 2;
-					if (entries[i].contains(s.forms[j - 1]) && s.forms.length > i + 3 && s.forms[j + 1].equals("/")) {
-						j += 2; // &&
-						// System.out.println("s.forms[j] "+s.forms[j]+"
-						// s.forms[j-1] "+s.forms[j-1]+" "+entries[i]);
-					}
-
-					// U.S.-Japan -> U . S . - Japan
-				} else if (entries[i].startsWith(s.forms[j]) && s.forms.length > i + 2 && s.forms[j + 1].equals(".")) {
-					j += 2;
-					if (entries[i].contains(s.forms[j - 1]) && s.forms.length > i + 3 && s.forms[j + 1].equals(".")) {
-						j += 2; // &&
-						// System.out.println("s.forms[j] "+s.forms[j]+"
-						// s.forms[j-1] "+s.forms[j-1]+" "+entries[i]);
-					}
-				} else if (entries[i].startsWith(s.forms[j]) && s.forms.length > i + 1 && s.forms[j + 1].equals("'S")) {
-					j += 1;
-
-				} else {
-
-					// chech those !!!
-					// System.out.print("entry "+entries[i]+" form
-					// "+s.forms[j]+" ");
-					return j;
-				}
-
-			}
-			j++;
-
-		}
-
-		// without root
-		return s.length();
-		// return j;
-
-	}
-
-	/**
-	 * @param dn
-	 * @return
-	 */
-	public int getPS(int dn) {
-
-		return this.head[dn - 1];
-	}
-
-	/**
-	 * @param dn
-	 * @param n
-	 * @param commonHead
-	 *            the common head in the phrase structure
-	 * @return
-	 */
-	public String getChain(int dn, int n, int commonHead) {
-
-		int pdn = dn - 1;
-		// int phraseHead =head[pdh];
-
-		// System.out.println("phrase head "+phraseHead+" common head
-		// "+commonHead);
-
-		int[] ch = new int[20];
-		int head = this.head[pdn];
-		int i = 0;
-		ch[i++] = head;
-		while (commonHead != head && head != 0) {
-
-			head = this.head[head];
-			ch[i++] = head;
-		}
-		StringBuffer chain = new StringBuffer();
-
-		for (int k = 0; k < i; k++) {
-			chain.append(entries[ch[k]]).append(" ");
-		}
-		return chain.toString();
-	}
-
-	/**
-	 * @param dn
-	 * @param n
-	 * @return
-	 */
-	public int getCommonHead(int d, int dh) {
-		int pdh = this.getPS(dh), pd = this.getPS(d);
-
-		ArrayList<Integer> path2root = getPath2Root(pdh);
-
-		// System.out.println("path 2 root "+path2root+" pdh "+pdh);
-
-		for (int n : path2root) {
-			int candidateHead = pd;
-			while (candidateHead != 0 && candidateHead != -1) {
-				if (n == candidateHead)
-					return n;
-				candidateHead = this.head[candidateHead];
-			}
-		}
-		return -1;
-	}
-
-	/**
-	 * @param pdh
-	 */
-	private ArrayList<Integer> getPath2Root(int pdh) {
-		ArrayList<Integer> path = new ArrayList<Integer>();
-
-		// restrict the number in case its a cycle which should never be
-		for (int k = 0; k < 100; k++) {
-			if (pdh == -1)
-				break;
-			path.add(pdh);
-			pdh = this.head[pdh];
-			if (pdh == 0)
-				break;
-		}
-		return path;
-	}
-
-	/**
-	 * Get operations to create root see operation in method getOperation
-	 * 
-	 * @param pr
-	 */
-	public String getOperationRoot(int pr) {
-
-		StringBuffer o = new StringBuffer();
-		int h = pr;
-		int[] path = new int[10];
-		// System.out.println(" start node "+pr);
-		int k = 0;
-		for (; k < 10; k++) {
-			h = head[h];
-			if (h == -1) {
-				break;
-			}
-			path[k] = h;
-			if (h == 0) {
-				break;
-			}
-
-		}
-		k -= 2;
-
-		boolean first = true;
-		for (; k >= 0; k--) {
-
-			// create phrase
-			if (first) {
-				o.append("c:").append(entries[path[k]]);
-				first = false;
-			}
-
-			// insert and create phrase
-			else {
-				o.append(":ci:").append(entries[path[k]]);
-			}
-		}
-
-		// insert dependent node
-		// if (o.length()>0)
-		o.append(":in:d");
-		// else o.append("in:d"); // insert root into nothing
-		return o.toString();
-	}
-
-	/**
-	 * Create operation to include dependency edges in phrase structure
-	 * Operations: c - create ; i - insert ; in - insert (dependent) node ; up:X
-	 * go the (phrase) X up ci create and insert ...
-	 *
-	 * @param dn
-	 * @param n
-	 * @param commonHead
-	 * @return
-	 */
-	public String getOperation(int dn, int n, int commonHead) {
-
-		StringBuffer o = new StringBuffer();
-
-		// from n move up to common head, if needed
-		int ph = n - 1, pd = dn - 1;
-
-		int[] path = new int[20];
-		int h = ph;
-
-		boolean nth = false;
-		for (int k = 0; k < 10; k++) {
-			h = head[h];
-			path[k] = h;
-			if (nth)
-				o.append(':');
-			o.append("up:" + entries[h]);
-			nth = true;
-			if (h == commonHead)
-				break;
-		}
-
-		// from common head to the node
-		int k = 0;
-		h = pd;
-		for (; k < 10; k++) {
-			h = head[h];
-			path[k] = h;
-			if (h == commonHead) {
-				break;
-			}
-
-		}
-		k -= 1;
-
-		// boolean first=true;
-		for (; k >= 0; k--) {
-
-			// create phrase
-			if (!nth) {
-				o.append("ci:").append(entries[path[k]]);
-				nth = true;
-			}
-
-			// insert and create phrase
-			else {
-				o.append(":ci:").append(entries[path[k]]);
-			}
-		}
-
-		// insert dependent node
-		o.append(":in:d");
-
-		return o.toString();
-	}
-
-	/**
-	 * @param ph
-	 *            node in the phrase structure corresponding to the head in the
-	 *            dependency structure
-	 * @param pt
-	 *            node in the prhase structure corresponding to the dependent in
-	 *            the ds.
-	 * @param check
-	 * @return rules was applicable
-	 */
-	public boolean exec(String r, int ph, int pt, boolean check) {
-
-		String o[] = r.split(":");
-
-		int last = -1, headP = -1;
-
-		// create root node
-
-		// System.out.println("operation "+r+" "+ph+" "+pt);
-		boolean done = true;
-		for (int i = 0; i < o.length; i++) {
-
-			if (o[i].equals("c")) {
-				if (check)
-					return true;
-
-				if (ph < 0) {
-					last = non++;
-				}
-
-				entries[non] = o[++i]; // create
-				head[pt] = non;
-				head[non] = last; // insert into root
-				last = non++;
-			} else if (o[i].equals("ci")) {
-				if (check)
-					return true;
-				entries[non] = o[++i]; // create
-				head[non] = last; // insert
-				last = non;
-				non++;
-			} else if (o[i].equals("in") && o[i + 1].equals("d")) {
-				if (check)
-					return true;
-				head[pt] = last; // insert
-				i++; // move forward because of 'd'
-			} else if (o[i].equals("up")) {
-
-				if (ph == -1) {
-					// System.out.println("ph is -1 please check this "+ph+"
-					// there is a bug ");
-					return false;
-				}
-
-				if (headP == -1)
-					headP = head[ph];
-				else
-					headP = head[headP];
-
-				try {
-					if (headP == -1 || entries[headP] == null || !entries[headP].equals(o[i + 1]))
-						return false;
-
-				} catch (Exception e) {
-					e.printStackTrace();
-					System.out.println(
-							"" + entries[headP] + " o[i+1] " + o[i + 1] + " " + headP + " " + this.terminalCount);
-					// System.out.println(""+ this.toString());
-					System.exit(0);
-				}
-
-				i++;
-				last = headP;
-			} else {
-				done = false;
-			}
-
-		}
-
-		return done;
-	}
-
-	/**
-	 * More tolerant mapping
-	 *
-	 * @param ph
-	 *            node in the phrase structure corresponding to the head in the
-	 *            dependency structure
-	 * @param pt
-	 *            node in the prhase structure corresponding to the dependent in
-	 *            the ds.
-	 * @param check
-	 * @return rules was applicable
-	 */
-	public boolean execT(String r, int ph, int pt, boolean check) {
-
-		String o[] = r.split(":");
-
-		int last = -1, headP = -1;
-
-		int up = 0;
-
-		boolean done = true;
-		for (int i = 0; i < o.length; i++) {
-
-			if (o[i].equals("c")) {
-				if (check)
-					return true;
-
-				// create root node
-				if (ph < 0) {
-					last = non++;
-				}
-
-				entries[non] = o[++i]; // create
-				head[pt] = non;
-				head[non] = last; // insert into root
-				last = non++;
-			} else if (o[i].equals("ci")) {
-
-				if (check)
-					return true;
-				entries[non] = o[++i]; // create
-				head[non] = last; // insert
-				last = non;
-				non++;
-			} else if (o[i].equals("in") && o[i + 1].equals("d")) {
-				if (check)
-					return true;
-
-				// DB.println("hallo");
-
-				if (last != -1)
-					head[pt] = last; // insert
-
-				// i am not sure if this does much good?
-
-				// if (last ==-1)
-
-				// done=true;
-
-				i++; // move forward because of 'd'
-
-			} else if (o[i].equals("up")) {
-				up++;
-				if (ph == -1) {
-					return false;
-				}
-
-				if (headP == -1)
-					headP = head[ph];
-				else
-					headP = head[headP];
-
-				try {
-
-					// tolerant mapping
-					if (headP == -1 || entries[headP] == null || ((!entries[headP].equals(o[i + 1])) && up > 1))
-						return false; // >1
-					// && entries[headP].charAt(0)!=o[i+1].charAt(0)
-				} catch (Exception e) {
-					e.printStackTrace();
-					System.out.println(
-							"" + entries[headP] + " o[i+1] " + o[i + 1] + " " + headP + " " + this.terminalCount);
-				}
-
-				i++;
-				last = headP;
-			} else {
-				done = false;
-			}
-
-		}
-
-		return done;
-	}
-
-	public final static boolean INSERT_NEWLINE = true;
-
-	/**
-	 * Convert to bracket format
-	 * 
-	 * @param newLine
-	 * @return
-	 */
-	public String toPennBracket(boolean newLine) {
-
-		StringBuffer b = new StringBuffer();
-		ArrayList<Integer> current = null;// = new ArrayList<Integer>();
-		int open = 0;
-		for (int i = 0; i < terminalCount; i++) {
-			ArrayList<Integer> path = getPathToRoot(i);
-
-			ArrayList<Integer> diff = getDiffPath(path, current);
-
-			boolean spaces = false;
-
-			ArrayList<Integer> common = this.getDiffCommon(path, current);
-
-			if (current != null && (current.size() > common.size())) {
-
-				// close brackets
-				for (int bc = 0; bc < current.size() - common.size(); bc++) {
-					b.append(")");
-					open--;
-				}
-				if (diff.size() == 0 && newLine)
-					b.append("\n");
-				spaces = true;
-			}
-
-			if (i != 0 && diff.size() > 0 && newLine)
-				b.append("\n").append(createSpaces(open));
-
-			for (int k = diff.size() - 1; k >= 0; k--) {
-				open++;
-				b.append("(" + (entries[path.get(k)] == null ? " " : entries[path.get(k)]));
-				if (k != 0 && path.size() - 1 != k && newLine)
-					b.append("\n").append(createSpaces(open));
-				spaces = false;
-			}
-			if (spaces)
-				b.append(createSpaces(open));
-			else
-				b.append(" ");
-
-			String term = entries[i];
-			if (term.equals("("))
-				term = "-LRB-";
-			if (term.equals(")"))
-				term = "-RRB-";
-			if (term.equals("{"))
-				term = "-LCB-";
-			if (term.equals("}"))
-				term = "-RCB-";
-
-			String ps = pos[i];
-			if (ps.equals("("))
-				ps = "-LRB-";
-			if (ps.equals("$("))
-				ps = "-LRB-";
-
-			if (ps.equals(")"))
-				ps = "-RRB-";
-			if (ps.equals("{"))
-				ps = "-LCB-";
-			if (ps.equals("}"))
-				ps = "-RCB-";
-
-			b.append("(").append(ps).append(" ").append(term).append(')');
-			current = path;
-			// break;
-		}
-		for (; open > 0; open--) {
-			b.append(")");
-		}
-		// b.append("\n");
-
-		return b.toString();
-	}
-
-	static int cnt = 0;
-
-	/**
-	 * @param path
-	 * @param current
-	 * @return
-	 */
-	private ArrayList<Integer> getDiffPath(ArrayList<Integer> path, ArrayList<Integer> current) {
-		if (current == null)
-			return path;
-
-		ArrayList<Integer> common = new ArrayList<Integer>();
-
-		int pindex = path.size() - 1;
-		int cindex = current.size() - 1;
-
-		while (cindex >= 0 && pindex >= 0) {
-
-			if (path.get(pindex) == current.get(cindex)) {
-				cindex--;
-				pindex--;
-			} else
-				break;
-		}
-
-		for (int k = 0; k <= pindex; k++) {
-			common.add(path.get(k));
-		}
-
-		return common;
-	}
-
-	private ArrayList<Integer> getDiffCommon(ArrayList<Integer> path, ArrayList<Integer> current) {
-		if (current == null)
-			return path;
-
-		ArrayList<Integer> common = new ArrayList<Integer>();
-
-		int pindex = path.size() - 1;
-		int cindex = current.size() - 1;
-
-		while (cindex >= 0 && pindex >= 0) {
-
-			if (path.get(pindex) == current.get(cindex)) {
-				common.add(path.get(pindex));
-				cindex--;
-				pindex--;
-			} else
-				break;
-		}
-
-		Collections.reverse(common);
-		// System.out.println("common "+pindex+" "+common);
-
-		return common;
-	}
-
-	/**
-	 * @param i
-	 * @return
-	 */
-	private StringBuffer createSpaces(int i) {
-		StringBuffer s = new StringBuffer();
-		for (int k = 0; k < i; k++)
-			s.append("  ");
-		return s;
-	}
-
-	/**
-	 * @param i
-	 * @return
-	 */
-	private ArrayList<Integer> getPathToRoot(int i) {
-
-		ArrayList<Integer> path = new ArrayList<Integer>();
-
-		int h = i;
-		while (true) {
-			h = this.head[h];
-			if (h < this.terminalCount || path.contains(h))
-				break;
-			path.add(h);
-		}
-
-		// Collections.reverse(list)
-
-		return path;
-	}
-
-	public String conll09() {
-
-		StringBuilder s = new StringBuilder();
-		for (int i = 0; i < this.terminalCount; i++) {
-			if (head[i] == -1 && entries[i] == null)
-				break;
-
-			s.append((i + 1)).append('\t').append(entries[i]).append("\t_\t_\t").append(pos[i])
-					.append("\t_\t_\t_\t_\t_\t_\t_\t_\n");
-
-		}
-
-		return s.toString();
-	}
-
-	/**
-	 * @param phead
-	 * @return
-	 */
-	public int[] getChilds(int head) {
-
-		int count = 0;
-		for (int i = 0; i < this.entries.length; i++) {
-			if (this.head[i] == head)
-				count++;
-		}
-
-		int[] clds = new int[count];
-		count = 0;
-		for (int i = 0; i < this.entries.length; i++) {
-			if (this.head[i] == head)
-				clds[count++] = i;
-		}
-
-		return clds;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/Parameter.java b/dependencyParser/mate-tools/src/is2/data/Parameter.java
deleted file mode 100644
index 7b1f870..0000000
--- a/dependencyParser/mate-tools/src/is2/data/Parameter.java
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- *
- */
-package is2.data;
-
-/**
- * @author Dr. Bernd Bohnet, 23.12.2010
- *
- *
- */
-public class Parameter {
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/ParametersFloat.java b/dependencyParser/mate-tools/src/is2/data/ParametersFloat.java
deleted file mode 100755
index 17837ef..0000000
--- a/dependencyParser/mate-tools/src/is2/data/ParametersFloat.java
+++ /dev/null
@@ -1,181 +0,0 @@
-package is2.data;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import is2.util.DB;
-
-final public class ParametersFloat {
-
-	public float[] parameters;
-	public float[] total;
-
-	public ParametersFloat(int size) {
-
-		parameters = new float[size];
-		total = new float[size];
-		for (int i = 0; i < parameters.length; i++) {
-			parameters[i] = 0F;
-			total[i] = 0F;
-		}
-	}
-
-	/**
-	 * @param parameters2
-	 */
-	public ParametersFloat(float[] p) {
-		parameters = p;
-	}
-
-	public void average(double avVal) {
-		for (int j = 0; j < total.length; j++) {
-			parameters[j] = total[j] / ((float) avVal);
-		}
-		total = null;
-	}
-
-	public ParametersFloat average2(double avVal) {
-		float[] px = new float[this.parameters.length];
-		for (int j = 0; j < total.length; j++) {
-			px[j] = total[j] / ((float) avVal);
-		}
-		ParametersFloat pf = new ParametersFloat(px);
-		return pf;
-	}
-
-	public void update(FV pred, FV act, float upd, float err) {
-
-		float lam_dist = act.getScore(parameters, false) - pred.getScore(parameters, false);
-		float loss = err - lam_dist;
-
-		FV dist = act.getDistVector(pred);
-
-		float alpha;
-		float A = dist.dotProduct(dist);
-		if (A <= 0.0000000000000001)
-			alpha = 0.0f;
-		else
-			alpha = loss / A;
-
-		// alpha = Math.min(alpha, 0.00578125F);
-
-		dist.update(parameters, total, alpha, upd, false);
-
-	}
-
-	public void update(FV pred, FV act, float upd, float err, float C) {
-
-		float lam_dist = act.getScore(parameters, false) - pred.getScore(parameters, false);
-		float loss = err - lam_dist;
-
-		FV dist = act.getDistVector(pred);
-
-		float alpha;
-		float A = dist.dotProduct(dist);
-		if (A <= 0.0000000000000001)
-			alpha = 0.0f;
-		else
-			alpha = loss / A;
-
-		alpha = Math.min(alpha, C);
-
-		dist.update(parameters, total, alpha, upd, false);
-
-	}
-
-	public double update(FV a, double b) {
-
-		double A = a.dotProduct(a);
-		if (A <= 0.0000000000000000001)
-			return 0.0;
-		return b / A;
-	}
-
-	public double getScore(FV fv) {
-		if (fv == null)
-			return 0.0F;
-		return fv.getScore(parameters, false);
-
-	}
-
-	final public void write(DataOutputStream dos) throws IOException {
-
-		dos.writeInt(parameters.length);
-		for (float d : parameters)
-			dos.writeFloat(d);
-
-	}
-
-	public void read(DataInputStream dis) throws IOException {
-
-		parameters = new float[dis.readInt()];
-		int notZero = 0;
-		for (int i = 0; i < parameters.length; i++) {
-			parameters[i] = dis.readFloat();
-			if (parameters[i] != 0.0F)
-				notZero++;
-		}
-
-		DB.println("read parameters " + parameters.length + " not zero " + notZero);
-
-	}
-
-	public int countNZ() {
-
-		int notZero = 0;
-		for (float parameter : parameters) {
-			if (parameter != 0.0F)
-				notZero++;
-		}
-		return notZero;
-
-	}
-
-	public F2SF getFV() {
-		return new F2SF(parameters);
-	}
-
-	public int size() {
-		return parameters.length;
-	}
-
-	public void update(FVR act, FVR pred, Instances isd, int instc, Parse dx, double upd, double e, float lam_dist) {
-
-		e++;
-
-		float b = (float) e - lam_dist;
-
-		FVR dist = act.getDistVector(pred);
-
-		dist.update(parameters, total, hildreth(dist, b), upd, false);
-	}
-
-	public void update(FVR pred, FVR act, float upd, float e) {
-
-		e++;
-		float lam_dist = act.getScore(parameters, false) - pred.getScore(parameters, false);
-
-		float b = e - lam_dist;
-
-		FVR dist = act.getDistVector(pred);
-
-		dist.update(parameters, total, hildreth(dist, b), upd, false);
-	}
-
-	protected double hildreth(FVR a, double b) {
-
-		double A = a.dotProduct(a);
-		if (A <= 0.0000000000000000001)
-			return 0.0;
-		return b / A;
-	}
-
-	public float getScore(FVR fv) { // xx
-		if (fv == null)
-			return 0.0F;
-		return fv.getScore(parameters, false);
-
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/Parse.java b/dependencyParser/mate-tools/src/is2/data/Parse.java
deleted file mode 100755
index aa24005..0000000
--- a/dependencyParser/mate-tools/src/is2/data/Parse.java
+++ /dev/null
@@ -1,157 +0,0 @@
-package is2.data;
-
-import java.util.BitSet;
-
-public class Parse implements Comparable<Parse> {
-
-	public short[] heads;
-	public short[] labels;
-	public double f1;
-
-	public Parse() {
-	}
-
-	public Parse(int i) {
-		heads = new short[i];
-		labels = new short[i];
-
-	}
-
-	/**
-	 * @param heads2
-	 * @param types2
-	 * @param p_new
-	 */
-	public Parse(short[] heads2, short[] types2, float p_new) {
-		this.heads = new short[heads2.length];
-		this.labels = new short[types2.length];
-		// this.heads=heads2;
-		// this.labels=types2;
-		System.arraycopy(heads2, 0, heads, 0, heads.length);
-		System.arraycopy(types2, 0, labels, 0, labels.length);
-		f1 = p_new;
-
-	}
-
-	/**
-	 * @param heads2
-	 * @param types2
-	 * @param p_new
-	 */
-	public Parse(String parse, float p_new) {
-
-		// this(parse.length()/2);
-
-		signature2parse(parse);
-
-		f1 = p_new;
-
-	}
-
-	public void signature2parse(String parse) {
-		int p = 0;
-		heads = new short[parse.length() / 2];
-		labels = new short[heads.length];
-		// DB.println("pl "+parse.length());
-		for (int k = 0; k < heads.length; k++) {
-			heads[k] = (short) parse.charAt(p++);
-			labels[k] = (short) parse.charAt(p++);
-		}
-	}
-
-	@Override
-	public Parse clone() {
-		Parse p = new Parse();
-		p.heads = new short[heads.length];
-		p.labels = new short[labels.length];
-
-		System.arraycopy(heads, 0, p.heads, 0, heads.length);
-		System.arraycopy(labels, 0, p.labels, 0, labels.length);
-
-		p.f1 = f1;
-
-		return p;
-	}
-
-	/**
-	 * Check if it is a tree
-	 * 
-	 * @return
-	 */
-	public boolean checkTree() {
-
-		BitSet set = new BitSet(heads.length);
-		set.set(0);
-		return checkTree(set, 0);
-
-	}
-
-	/**
-	 * @param set
-	 * @return
-	 */
-	private boolean checkTree(BitSet set, int h) {
-		// System.out.print(" h "+h);
-
-		for (int i = 0; i < heads.length; i++) {
-			if (heads[i] == h) {
-				// System.out.print(" "+i);
-				if (!set.get(i))
-					checkTree(set, i);
-				set.set(i);
-
-			}
-		}
-
-		for (int i = 0; i < heads.length; i++) {
-			if (!set.get(i))
-				return false;
-		}
-		return true;
-	}
-
-	@Override
-	public String toString() {
-		StringBuilder b = new StringBuilder();
-		for (int k = 0; k < this.heads.length; k++) {
-			b.append(k).append(" ").append(heads[k] + " ").append(this.labels[k]).append("\n");
-		}
-		return b.toString();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Comparable#compareTo(java.lang.Object)
-	 */
-	@Override
-	public int compareTo(Parse o) {
-
-		if (f1 == o.f1)
-			return this.signature().compareTo(o.signature());
-		return f1 < o.f1 ? 1 : f1 == o.f1 ? 0 : -1;
-	}
-
-	/**
-	 * @return the signature of a parse
-	 */
-	public String signature() {
-		StringBuilder b = new StringBuilder(heads.length * 2);
-		for (int k = 0; k < heads.length; k++) {
-			b.append((char) heads[k]).append((char) labels[k]);
-		}
-		return b.toString();
-	}
-
-	/**
-	 * @return the signature of a parse
-	 */
-	public StringBuilder signatureSB() {
-		StringBuilder b = new StringBuilder(heads.length * 2);
-		for (int k = 0; k < heads.length; k++) {
-			b.append((char) heads[k]).append((char) labels[k]);
-		}
-		return b;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/ParseNBest.java b/dependencyParser/mate-tools/src/is2/data/ParseNBest.java
deleted file mode 100644
index cb02b71..0000000
--- a/dependencyParser/mate-tools/src/is2/data/ParseNBest.java
+++ /dev/null
@@ -1,103 +0,0 @@
-package is2.data;
-
-final public class ParseNBest extends Parse {
-
-	private String signature = null;
-
-	// public float[] scores;
-
-	public ParseNBest() {
-	}
-
-	public ParseNBest(short[] heads2, short[] types2, float p_new) {
-		super(heads2, types2, p_new);
-	}
-
-	public ParseNBest(int i) {
-		super(i);
-	}
-
-	/**
-	 * @param sig
-	 * @param readFloat
-	 */
-	public ParseNBest(String sig, float score) {
-		super(sig, score);
-	}
-
-	/**
-	 * create a total order to provide replicable deterministic results
-	 * 
-	 * @param o
-	 * @return
-	 */
-	public int compareTo(ParseNBest o) {
-		if (f1 < o.f1)
-			return 1;
-		if (f1 == o.f1) {
-			if (signature == null)
-				signature = signature();
-			if (o.signature == null)
-				o.signature = o.signature();
-			return o.signature.compareTo(signature);
-
-		}
-		return -1;
-	}
-
-	/**
-	 * @return the signature of a parse
-	 */
-	@Override
-	public String signature() {
-		if (signature != null)
-			return signature;
-		signature = super.signature();
-		return signature;
-	}
-
-	/**
-	 * @return the signature of a parse
-	 */
-	public String signature(short[] heads, short[] labels) {
-		StringBuilder b = new StringBuilder(heads.length * 2);
-		for (int k = 0; k < heads.length; k++) {
-			b.append((char) heads[k]).append((char) labels[k]);
-		}
-		signature = b.toString();
-		return signature;
-	}
-
-	/**
-	 * @param heads
-	 * @param types
-	 * @param oldP
-	 * @param ch
-	 * @param s
-	 */
-	public String signature(short[] heads, short[] types, short p, short ch, short l) {
-		StringBuilder b = new StringBuilder(heads.length * 2);
-		for (int k = 0; k < heads.length; k++) {
-
-			b.append(k == ch ? (char) p : (char) heads[k]).append(k == ch ? (char) l : (char) types[k]);
-		}
-		signature = b.toString();
-		return signature;
-
-	}
-
-	@Override
-	public Parse clone() {
-		ParseNBest p = new ParseNBest();
-		p.heads = new short[heads.length];
-		p.labels = new short[labels.length];
-
-		System.arraycopy(heads, 0, p.heads, 0, heads.length);
-		System.arraycopy(labels, 0, p.labels, 0, labels.length);
-
-		p.f1 = f1;
-
-		return p;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/PipeGen.java b/dependencyParser/mate-tools/src/is2/data/PipeGen.java
deleted file mode 100755
index 728666f..0000000
--- a/dependencyParser/mate-tools/src/is2/data/PipeGen.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package is2.data;
-
-public class PipeGen {
-
-	public static final String SENSE = "SENSE", POS = "POS", DIST = "DIST", WORD = "WORD", PRED = "PRED", ARG = "ARG",
-			FEAT = "F", REL = "REL", TYPE = "TYPE", CHAR = "C", FFEATS = "FF", DIR = "DIR", LA = "LA", RA = "RA";
-
-	public static final String GPOS = "GPOS", MID = "MID", END = "END", STR = "STR", FM = "FM", NOFEAT = "NOFEAT";
-
-	public static final String _0 = "0", _4 = "4", _3 = "3", _2 = "2", _1 = "1", _5 = "5", _10 = "10";
-
-	static public int outValue(int num1, int del) {
-		String out = "" + num1;
-		StringBuffer delS = new StringBuffer();
-		for (int k = 0; k < del; k++)
-			delS.append('\b');
-		del = out.length();
-		System.out.print(delS + out);
-		return del;
-	}
-
-	static public int outValue(int num1, int del, long last) {
-		String out = "" + num1 + " (" + (System.currentTimeMillis() - last) / (num1 + 1) + " ms/instance)";
-		StringBuffer delS = new StringBuffer();
-		for (int k = 0; k < del; k++)
-			delS.append('\b');
-		del = out.length();
-		System.out.print(delS + out);
-		return del;
-	}
-
-	static public int outValueErr(int num1, float err, float f1, int del, long last) {
-
-		String out = "" + num1 + " (" + (System.currentTimeMillis() - last) / (num1 + 1) + " ms/instance "
-				+ (err / num1) + " err/instance f1=" + f1 + ") ";
-		StringBuffer delS = new StringBuffer();
-		for (int k = 0; k < del; k++)
-			delS.append('\b');
-		del = out.length();
-		System.out.print(delS + out);
-		return del;
-	}
-
-	static public int outValueErr(int num1, float err, float f1, int del, long last, double upd) {
-		String out = "" + num1 + " (" + (System.currentTimeMillis() - last) / (num1 + 1) + " ms/instance "
-				+ (err / num1) + " err/instance f1=" + f1 + ") upd " + upd;
-		StringBuffer delS = new StringBuffer();
-		for (int k = 0; k < del; k++)
-			delS.append('\b');
-		del = out.length();
-		System.out.print(delS + out);
-		return del;
-	}
-
-	static public int outValueErr(int num1, float err, float f1, int del, long last, double upd, String info) {
-		String out = "" + num1 + " (" + (System.currentTimeMillis() - last) / (num1 + 1) + " ms/instance "
-				+ (err / num1) + " err/instance f1=" + f1 + ") upd " + upd + " " + info;
-		StringBuffer delS = new StringBuffer();
-		for (int k = 0; k < del; k++)
-			delS.append('\b');
-		del = out.length();
-		System.out.print(delS + out);
-		return del;
-	}
-
-	/**
-	 * @param cnt
-	 * @param l
-	 * @return
-	 */
-	public static String getSecondsPerInstnace(int cnt, long l) {
-		return " " + (l / (cnt * 1000f)) + " seconds/sentnece ";
-	}
-
-	/**
-	 * @param l
-	 * @return
-	 */
-	public static String getUsedTime(long l) {
-		return "Used time " + ((l) / 1000f) + " seconds ";
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/PrimeFinder.java b/dependencyParser/mate-tools/src/is2/data/PrimeFinder.java
deleted file mode 100644
index fab0901..0000000
--- a/dependencyParser/mate-tools/src/is2/data/PrimeFinder.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- *
- */
-package is2.data;
-
-import java.util.Arrays;
-
-/**
- * @author Dr. Bernd Bohnet, 13.05.2010
- *
- *
- */
-public class PrimeFinder {
-
-	public PrimeFinder() {
-	}
-
-	public static final int nextPrime(int desiredCapacity) {
-		int i = Arrays.binarySearch(primeCapacities, desiredCapacity);
-		if (i < 0)
-			i = -i - 1;
-		return primeCapacities[i];
-	}
-
-	public static final int largestPrime = 2147483647;
-	private static final int primeCapacities[] = { 2147483647, 5, 11, 23, 47, 97, 197, 397, 797, 1597, 3203, 6421,
-			12853, 25717, 51437, 102877, 205759, 411527, 823117, 1646237, 3292489, 6584983, 13169977, 26339969,
-			52679969, 105359939, 210719881, 421439783, 842879579, 1685759167, 433, 877, 1759, 3527, 7057, 14143, 28289,
-			56591, 113189, 226379, 452759, 905551, 1811107, 3622219, 7244441, 14488931, 28977863, 57955739, 115911563,
-			231823147, 463646329, 927292699, 1854585413, 953, 1907, 3821, 7643, 15287, 30577, 61169, 122347, 244703,
-			489407, 978821, 1957651, 3915341, 7830701, 15661423, 31322867, 62645741, 125291483, 250582987, 501165979,
-			1002331963, 2004663929, 1039, 2081, 4177, 8363, 16729, 33461, 66923, 133853, 267713, 535481, 1070981,
-			2141977, 4283963, 8567929, 17135863, 34271747, 68543509, 137087021, 274174111, 548348231, 1096696463, 31,
-			67, 137, 277, 557, 1117, 2237, 4481, 8963, 17929, 35863, 71741, 143483, 286973, 573953, 1147921, 2295859,
-			4591721, 9183457, 18366923, 36733847, 73467739, 146935499, 293871013, 587742049, 1175484103, 599, 1201,
-			2411, 4831, 9677, 19373, 38747, 77509, 155027, 310081, 620171, 1240361, 2480729, 4961459, 9922933, 19845871,
-			39691759, 79383533, 158767069, 317534141, 635068283, 1270136683, 311, 631, 1277, 2557, 5119, 10243, 20507,
-			41017, 82037, 164089, 328213, 656429, 1312867, 2625761, 5251529, 10503061, 21006137, 42012281, 84024581,
-			168049163, 336098327, 672196673, 1344393353, 3, 7, 17, 37, 79, 163, 331, 673, 1361, 2729, 5471, 10949,
-			21911, 43853, 87719, 175447, 350899, 701819, 1403641, 2807303, 5614657, 11229331, 22458671, 44917381,
-			89834777, 179669557, 359339171, 718678369, 1437356741, 43, 89, 179, 359, 719, 1439, 2879, 5779, 11579,
-			23159, 46327, 92657, 185323, 370661, 741337, 1482707, 2965421, 5930887, 11861791, 23723597, 47447201,
-			94894427, 189788857, 379577741, 759155483, 1518310967, 379, 761, 1523, 3049, 6101, 12203, 24407, 48817,
-			97649, 195311, 390647, 781301, 1562611, 3125257, 6250537, 12501169, 25002389, 50004791, 100009607,
-			200019221, 400038451, 800076929, 1600153859 };
-
-	static {
-		Arrays.sort(primeCapacities);
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/RandomIndex.java b/dependencyParser/mate-tools/src/is2/data/RandomIndex.java
deleted file mode 100644
index 8ab61e9..0000000
--- a/dependencyParser/mate-tools/src/is2/data/RandomIndex.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/**
- *
- */
-package is2.data;
-
-import is2.util.DB;
-
-/**
- * @author Dr. Bernd Bohnet, 20.05.2011
- *
- *
- */
-public class RandomIndex implements Long2IntInterface {
-
-	final int[] prims = { 52349171, 199951347, 89990, 5001, 32891, 17, 19, 23, 29, 31, 37, 47, 53, 59, 61, 67, 71 };
-	// final int[] prims = {1,3,5,7,11,17,19,23,29,31,37,47,53,59,61,67,71};
-
-	final long hashFunctionModifiers[];
-
-	final int kbit, lbit;
-	final int hsize; // maximal size of hash
-
-	final int bits; // available bits
-	final int moves; // needed moves to put a number into
-
-	/**
-	 * Creates the random functions.
-	 *
-	 * @param kbit
-	 *            The bits to be mapped
-	 * @param lbit
-	 *            The left shift of the bits
-	 * @param hsize
-	 *            The size of the featurs space (not included in the original
-	 *            algorithm)
-	 * @param numberFunctions
-	 *            The number of the hash functions
-	 */
-	public RandomIndex(int kbit, int lbit, int hsize, int numberFunctions) {
-
-		this.kbit = kbit;
-		this.lbit = lbit;
-
-		if (hsize <= 0)
-			this.hsize = 67000001; // default value
-		else
-			this.hsize = hsize;
-
-		bits = (int) Math.ceil(Math.log(this.hsize) / Math.log(2));
-
-		moves = (int) Math.ceil(64f / bits);
-
-		DB.println("moves " + moves + " bits " + bits + " hsize " + hsize);
-
-		hashFunctionModifiers = new long[numberFunctions];
-
-		for (int f = 0; f < numberFunctions; f++)
-			hashFunctionModifiers[f] = prims[f];
-	}
-
-	public int[] hash(long x) {
-		int[] hvals = new int[hashFunctionModifiers.length];
-
-		for (int k = 0; k < hashFunctionModifiers.length; k++) {
-
-			// the original function: value = ((x+1) * hashFunctionModifiers[k]
-			// & m ) >> n;
-
-			// the first part of the original function
-			long value = (x + 1) * hashFunctionModifiers[k];
-
-			// do the above >> n with a maximal size of the available hash
-			// values
-			// Shift all bits until they have been each xor-ed (^) in the range
-			// of the hash
-			// in order the have all information potentially represented there.
-
-			for (int j = 1; j <= moves; j++)
-				value = value ^ (value >> (bits * j));
-
-			// Map the value to the range of the available space should be the
-			// same as (value & m) .
-			hvals[k] = Math.abs((int) value % hsize);
-		}
-		return hvals;
-	}
-
-	public int[] hashU(long x) {
-		int[] hvals = new int[hashFunctionModifiers.length];
-
-		long y = Long.reverse(x);
-		for (int k = 0; k < hashFunctionModifiers.length; k++) {
-
-			// the original function: value = ((x+1) * hashFunctionModifiers[k]
-			// & m ) >> n;
-
-			// the first part of the original function
-			long value1 = (((y + 1) * hashFunctionModifiers[k]) /* % 2 pow 64 */ ) >> (kbit - lbit);
-
-			// I get probably only the first part lets get the second part too
-			// long value2 = (((y+1>>20) * hashFunctionModifiers[k]) /* % 2 pow
-			// 64 */ ) >> (kbit-lbit);
-
-			// the modulo (%) 2 pow 64 is done since the long number can not be
-			// larger than 2 pow 64.
-			// System.out.println("value "+value+" shift "+(lbit-kbit));
-			hvals[k] = Math.abs((int) value1);
-		}
-		return hvals;
-	}
-
-	/*
-	 * (defun generate-hash-fn (&key (k-bit 32) (l-bit 8) verbosep constants
-	 * (count 4))
-	 * 
-	 * (labels ((random-constant () (let ((a (+ (random (- (expt 2 k-bit) 1))
-	 * 1))) (logior a 1)))) ;; inclusive OR ensures odd number. (let ((pdiff (-
-	 * (- k-bit l-bit)));; neg. sign to do a rightshift, see ash() (sub1 (-
-	 * (expt 2 k-bit) 1)) (constants (copy-list constants))) (unless constants
-	 * (loop ;; a = odd number a where 0 < a < u. until (= count (length
-	 * constants)) do (pushnew (random-constant) constants))) (when verbosep
-	 * (format t "~&generate-hash-fn(): using random constants: ~a~%"
-	 * constants)) (values #'(lambda (x) (loop for a in constants ;;; always add
-	 * 1 to x to avoid f(0)=0. collect (ash (logand (* (+ 1 x) a) sub1) pdiff)))
-	 * constants))))
-	 * 
-	 */
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.data.Long2IntInterface#l2i(long)
-	 */
-	@Override
-	public int l2i(long l) {
-		// TODO Auto-generated method stub
-		return 0;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.data.Long2IntInterface#size()
-	 */
-	@Override
-	public int size() {
-		return hsize;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/SentenceData09.java b/dependencyParser/mate-tools/src/is2/data/SentenceData09.java
deleted file mode 100755
index 386fa39..0000000
--- a/dependencyParser/mate-tools/src/is2/data/SentenceData09.java
+++ /dev/null
@@ -1,530 +0,0 @@
-package is2.data;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.StringWriter;
-import java.util.ArrayList;
-
-import is2.io.CONLLWriter09;
-import is2.io.IOGenerals;
-
-public class SentenceData09 {
-
-	public String[] id;
-	public String[] forms;
-
-	public String[] lemmas;
-	public String[] plemmas;
-
-	public int[] heads;
-	public int[] pheads;
-
-	public String[] labels;
-	public String[] plabels;
-
-	public String[] gpos; // gold pos
-	public String[] ppos;
-
-	public String feats[][];
-	// public String[] split_lemma;
-
-	public String[] sem;
-	public int[] semposition;
-
-	// predicate number, argument number -> argument string
-	public String[][] arg;
-	public int[][] argposition;
-
-	public String[] fillp;
-
-	public String[] ofeats;
-	public String[] pfeats;
-
-	public SentenceData09() {
-	}
-
-	public SentenceData09(String[] forms, String[] postags, String[] labs, int[] heads) {
-		this.forms = forms;
-		gpos = postags;
-		labels = labs;
-		this.heads = heads;
-	}
-
-	public SentenceData09(String[] forms, String[] lemmas, String[] postags, String[] labs, int[] heads) {
-		this.forms = forms;
-		gpos = postags;
-		// ppos = postags;
-
-		labels = labs;
-		this.heads = heads;
-		this.plemmas = lemmas;
-	}
-
-	public SentenceData09(String[] forms, String[] lemmas, String[] gpos, String[] ppos, String[] labs, int[] heads) {
-		this.forms = forms;
-		this.gpos = gpos;
-		this.ppos = ppos;
-
-		labels = labs;
-		this.heads = heads;
-		this.plemmas = lemmas;
-
-	}
-
-	public SentenceData09(String[] forms, String[] lemmas, String[] gpos, String[] ppos, String[] labs, int[] heads,
-			String[] fillpred) {
-		this.forms = forms;
-		this.gpos = gpos;
-		this.ppos = ppos;
-
-		labels = labs;
-		this.heads = heads;
-		this.plemmas = lemmas;
-
-		fillp = fillpred;
-	}
-
-	public SentenceData09(String[] forms, String[] lemmas, String[] olemmas, String[] gpos, String[] ppos,
-			String[] labs, int[] heads, String[] fillpred) {
-		this.forms = forms;
-		this.gpos = gpos;
-		this.ppos = ppos;
-
-		labels = labs;
-		this.heads = heads;
-		this.plemmas = lemmas;
-		this.lemmas = olemmas;
-		fillp = fillpred;
-	}
-
-	public SentenceData09(String[] forms, String[] olemmas, String[] lemmas, String[] gpos, String[] ppos,
-			String[] labs, int[] heads, String[] fillpred, String[] of, String[] pf) {
-		this.forms = forms;
-		this.gpos = gpos;
-		this.ppos = ppos;
-
-		labels = labs;
-		this.heads = heads;
-		this.pheads = heads;
-		this.plabels = labs;
-		this.plemmas = lemmas;
-		this.lemmas = olemmas;
-
-		this.ofeats = of;
-		this.pfeats = pf;
-		fillp = fillpred;
-	}
-
-	/**
-	 * Create an instance without root of the input instance
-	 * 
-	 * @param instance
-	 */
-	public SentenceData09(SentenceData09 i) {
-
-		int length = i.length() - 1;
-
-		forms = new String[length];
-		gpos = new String[length];
-		ppos = new String[length];
-		plemmas = new String[length];
-		plabels = new String[length];
-		lemmas = new String[length];
-		heads = new int[length];
-		pheads = new int[length];
-		ofeats = new String[length];
-		pfeats = new String[length];
-		labels = new String[length];
-		fillp = new String[length];
-		id = new String[length];
-
-		for (int j = 0; j < length; j++) {
-			forms[j] = i.forms[j + 1];
-			ppos[j] = i.ppos[j + 1];
-			gpos[j] = i.gpos[j + 1];
-
-			labels[j] = i.labels[j + 1];
-			heads[j] = i.heads[j + 1];
-
-			if (i.pheads != null)
-				pheads[j] = i.pheads[j + 1];
-			if (i.plabels != null)
-				plabels[j] = i.plabels[j + 1];
-
-			if (i.lemmas != null)
-				lemmas[j] = i.lemmas[j + 1];
-
-			plemmas[j] = i.plemmas[j + 1];
-
-			if (i.ofeats != null)
-				ofeats[j] = i.ofeats[j + 1];
-			if (i.pfeats != null)
-				pfeats[j] = i.pfeats[j + 1];
-
-			if (i.fillp != null)
-				fillp[j] = i.fillp[j + 1];
-			if (i.id != null)
-				id[j] = i.id[j + 1];
-		}
-
-	}
-
-	public void setPPos(String[] pos) {
-		ppos = pos;
-	}
-
-	public void setLemmas(String[] lemmas) {
-		this.plemmas = lemmas;
-	}
-
-	public void setFeats(String[] fts) {
-		feats = new String[fts.length][];
-		for (int i = 0; i < fts.length; i++) {
-			feats[i] = fts[i].split("\\|");
-		}
-		pfeats = fts;
-	}
-
-	public int length() {
-		return forms.length;
-	}
-
-	@Override
-	public String toString() {
-		// prepare the output
-		StringWriter sw = new StringWriter();
-		CONLLWriter09 snt2str = new is2.io.CONLLWriter09(sw);
-		try {
-			snt2str.write(this, CONLLWriter09.NO_ROOT);
-			snt2str.finishWriting();
-			return sw.toString();
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		// backup
-		StringBuffer sb = new StringBuffer();
-		for (int k = 0; k < forms.length; k++)
-			sb.append(k + 1).append('\t').append(forms[k]).append('\t').append(heads[k]).append('\t').append(labels[k])
-					.append('\n');
-		return sw.toString();
-	}
-
-	final public void write(DataOutputStream out) throws IOException {
-
-		out.writeInt(forms.length);
-		for (int k = 0; k < forms.length; k++) {
-			out.writeUTF(forms[k]);
-			out.writeUTF(ppos[k]);
-			out.writeUTF(gpos[k]);
-			out.writeInt(heads[k]);
-			out.writeUTF(labels[k]);
-			out.writeUTF(lemmas[k]);
-			out.writeUTF(plemmas[k]);
-			out.writeUTF(ofeats[k]); // needed for mtag
-			out.writeUTF(fillp[k]);
-		}
-
-		// out.writeUTF(actParseTree);
-
-	}
-
-	final public void read(DataInputStream dis) throws IOException {
-
-		int l = dis.readInt();
-
-		forms = new String[l];
-		lemmas = new String[l];
-		plemmas = new String[l];
-		ppos = new String[l];
-		gpos = new String[l];
-		labels = new String[l];
-		heads = new int[l];
-		fillp = new String[l];
-		ofeats = new String[l];
-
-		for (int k = 0; k < l; k++) {
-			forms[k] = dis.readUTF();
-			ppos[k] = dis.readUTF();
-			gpos[k] = dis.readUTF();
-			heads[k] = dis.readInt();
-			labels[k] = dis.readUTF();
-			lemmas[k] = dis.readUTF();
-			plemmas[k] = dis.readUTF();
-			ofeats[k] = dis.readUTF();
-			fillp[k] = dis.readUTF();
-
-		}
-	}
-
-	private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-		forms = (String[]) in.readObject();
-		plemmas = (String[]) in.readObject();
-		ppos = (String[]) in.readObject();
-		heads = (int[]) in.readObject();
-		labels = (String[]) in.readObject();
-	}
-
-	public void addPredicate(int i, String s) {
-
-		int predId;
-		if (sem == null) {
-			predId = 0;
-			sem = new String[1];
-			semposition = new int[1];
-		} else {
-			predId = sem.length;
-			String p[] = new String[sem.length + 1];
-			System.arraycopy(sem, 0, p, 0, sem.length);
-			int id[] = new int[sem.length + 1];
-			System.arraycopy(semposition, 0, id, 0, semposition.length);
-			sem = p;
-			semposition = id;
-		}
-		sem[predId] = s;
-		semposition[predId] = i;
-	}
-
-	/**
-	 * Add an argument
-	 * 
-	 * @param i
-	 *            the instance (the child)
-	 * @param predId
-	 *            the id of the predicate (the head)
-	 * @param a
-	 *            the label of the argument
-	 */
-	public void addArgument(int i, int predId, String a) {
-
-		if (a == null || a.equals("_"))
-			return;
-
-		// ensure the space for the argument in the data structure
-		if (arg == null) {
-			arg = new String[predId + 1][];
-			argposition = new int[predId + 1][];
-		} else if (arg.length <= predId) {
-			String p[][] = new String[predId + 1][];
-			System.arraycopy(arg, 0, p, 0, arg.length);
-			arg = p;
-
-			int id[][] = new int[predId + 1][];
-			System.arraycopy(argposition, 0, id, 0, argposition.length);
-			argposition = id;
-		}
-
-		int aId;
-		if (arg[predId] == null) {
-			aId = 0;
-			arg[predId] = new String[1];
-			argposition[predId] = new int[1];
-		} else {
-			aId = arg[predId].length;
-			String args[] = new String[arg[predId].length + 1];
-			System.arraycopy(arg[predId], 0, args, 0, arg[predId].length);
-			arg[predId] = args;
-
-			int argsId[] = new int[argposition[predId].length + 1];
-			System.arraycopy(argposition[predId], 0, argsId, 0, argposition[predId].length);
-			argposition[predId] = argsId;
-		}
-
-		arg[predId][aId] = a;
-		argposition[predId][aId] = i;
-
-	}
-
-	public int[] getParents() {
-		return heads;
-	}
-
-	public String[] getLabels() {
-		return labels;
-	}
-
-	public String printSem() {
-
-		if (sem == null)
-			return "";
-		StringBuilder s = new StringBuilder();
-
-		for (int k = 0; k < sem.length; k++) {
-			s.append(sem[k]).append("\n");
-
-			if (arg == null) {
-				s.append("arg == null");
-			} else if (arg.length <= k) {
-				s.append("args.length <=k arg.length:" + arg.length + " k:" + k);
-			} else if (arg[k] != null) {
-				for (int a = 0; a < arg[k].length; a++) {
-					s.append("  ").append(arg[k][a]);
-				}
-			} else {
-				s.append("args == null ");
-			}
-			s.append('\n');
-		}
-		return s.toString();
-	}
-
-	/**
-	 * Initialize a instance so that a tagger, parser, etc. could be applied
-	 * 
-	 * @param forms
-	 */
-	public void init(String[] forms) {
-		this.forms = forms;
-		heads = new int[forms.length];
-		gpos = new String[forms.length];
-		ppos = new String[forms.length];
-		plemmas = new String[forms.length];
-		feats = new String[forms.length][0];
-		labels = new String[forms.length];
-	}
-
-	/**
-	 * @param instance
-	 * @param fillp2
-	 * @param i09
-	 */
-	public void createSemantic(SentenceData09 instance) {
-
-		this.sem = instance.sem;
-		this.semposition = instance.semposition;
-
-		if (instance.semposition != null)
-			for (int k = 0; k < instance.semposition.length; k++) {
-				this.semposition[k] = instance.semposition[k] - 1;
-			}
-
-		this.arg = instance.arg;
-
-		this.argposition = instance.argposition;
-
-		if (this.argposition != null)
-			for (int p = 0; p < instance.argposition.length; p++) {
-				if (this.argposition[p] != null)
-					for (int a = 0; a < instance.argposition[p].length; a++)
-						this.argposition[p][a] = instance.argposition[p][a] - 1;
-			}
-
-	}
-
-	/**
-	 *
-	 */
-	public String oneLine() {
-
-		StringBuffer o = new StringBuffer();
-		for (int i = 1; i < this.length(); i++) {
-
-			if (i != 1)
-				o.append(" ");
-			o.append(this.forms[i]);
-		}
-		return o.toString();
-	}
-
-	/**
-	 * Get the children of this instance
-	 * 
-	 * @param head
-	 * @return children of the head
-	 */
-	public ArrayList<Integer> getChildren(int head) {
-
-		ArrayList<Integer> children = new ArrayList<Integer>();
-		for (int i = 0; i < length(); i++) {
-			if (heads[i] == head)
-				children.add(i);
-		}
-		return children;
-	}
-
-	public void createWithRoot(SentenceData09 i) {
-
-		int length = i.length();
-		int offset = 0;
-		if (!i.forms[0].equals(IOGenerals.ROOT)) {
-			length++;
-			offset = -1;
-		}
-
-		forms = new String[length];
-		gpos = new String[length];
-		ppos = new String[length];
-		plemmas = new String[length];
-		plabels = new String[length];
-		lemmas = new String[length];
-		heads = new int[length];
-		pheads = new int[length];
-		ofeats = new String[length];
-		pfeats = new String[length];
-		labels = new String[length];
-		fillp = new String[length];
-		id = new String[length];
-		feats = new String[forms.length][];
-
-		for (int j = 1; j < length; j++) {
-			forms[j] = i.forms[j + offset];
-			ppos[j] = i.ppos[j + offset];
-			gpos[j] = i.gpos[j + offset];
-
-			labels[j] = i.labels[j + offset];
-			heads[j] = i.heads[j + offset];
-
-			if (i.pheads != null)
-				pheads[j] = i.pheads[j + offset];
-			if (i.plabels != null)
-				plabels[j] = i.plabels[j + offset];
-
-			if (i.lemmas != null)
-				lemmas[j] = i.lemmas[j + offset];
-
-			plemmas[j] = i.plemmas[j + offset];
-
-			// if (i.ofeats!=null) ofeats[j] = i.ofeats[j+offset];
-
-			ofeats[j] = i.ofeats[j + offset].equals(CONLLWriter09.DASH) ? "_" : i.ofeats[j + offset];
-
-			// if (i.pfeats!=null) pfeats[j] = i.pfeats[j+offset];
-
-			if (i.pfeats != null && i.pfeats[j + offset] != null) {
-				if (i.pfeats[j + offset].equals(CONLLWriter09.DASH))
-					feats[j] = null;
-				else {
-					feats[j] = i.pfeats[j + offset].split(IOGenerals.PIPE);
-
-					// if (info[7].equals(CONLLWriter09.DASH)) it.feats[i]=null;
-					// else {
-					// it.feats[i] =info[7].split(PIPE);
-					pfeats[j] = i.pfeats[j + offset];
-					// }
-				}
-			}
-
-			if (i.fillp != null)
-				fillp[j] = i.fillp[j + offset];
-			if (i.id != null)
-				id[j] = i.id[j + offset];
-		}
-
-		forms[0] = IOGenerals.ROOT;
-		plemmas[0] = IOGenerals.ROOT_LEMMA;
-		fillp[0] = "N";
-		lemmas[0] = IOGenerals.ROOT_LEMMA;
-
-		gpos[0] = IOGenerals.ROOT_POS;
-		ppos[0] = IOGenerals.ROOT_POS;
-		labels[0] = IOGenerals.NO_TYPE;
-		heads[0] = -1;
-		plabels[0] = IOGenerals.NO_TYPE;
-		pheads[0] = -1;
-		ofeats[0] = IOGenerals.NO_TYPE;
-		id[0] = "0";
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/data/Thesaurus.java b/dependencyParser/mate-tools/src/is2/data/Thesaurus.java
deleted file mode 100644
index bafc3b9..0000000
--- a/dependencyParser/mate-tools/src/is2/data/Thesaurus.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/**
- *
- */
-package is2.data;
-
-import java.io.BufferedReader;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-
-import is2.util.DB;
-
-/**
- * @author Dr. Bernd Bohnet, 28.10.2010
- *
- *
- */
-final public class Thesaurus {
-
-	public static final String LPATH = "LP";
-	public static final String SPATH = "SP";
-
-	// [word][p] p = [0:long-path | 1:short-path]
-	final private int[][] word2path;
-
-	public Thesaurus() {
-		word2path = new int[0][];
-	}
-
-	/**
-	 * @param clusterFile
-	 * @param mf
-	 *
-	 */
-	public Thesaurus(String clusterFile, IEncoderPlus mf, int ls) {
-
-		final String REGEX = "\t";
-
-		// register words
-		try {
-			BufferedReader inputReader = new BufferedReader(
-					new InputStreamReader(new FileInputStream(clusterFile), "UTF-8"), 32768);
-
-			int cnt = 0;
-			String line;
-			while ((line = inputReader.readLine()) != null) {
-
-				cnt++;
-				try {
-					String[] split = line.split(REGEX);
-					// mf.register(LPATH,
-					// split[0].length()<ls?split[0]:split[0].substring(0,ls));
-					mf.register(PipeGen.WORD, split[0]);
-					mf.register(PipeGen.WORD, split[1]);
-				} catch (Exception e) {
-					System.out.println("Error in cluster line " + cnt + " error: " + e.getMessage());
-				}
-			}
-			System.out.println("read number of thesaury entries " + cnt);
-			inputReader.close();
-
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		word2path = new int[mf.getFeatureCounter().get(PipeGen.WORD)][];
-
-		// insert words
-		try {
-			String line;
-			BufferedReader inputReader = new BufferedReader(
-					new InputStreamReader(new FileInputStream(clusterFile), "UTF-8"), 32768);
-
-			int startWd = -1;
-			ArrayList<Integer> wrds = new ArrayList<Integer>();
-			while ((line = inputReader.readLine()) != null) {
-
-				String[] split = line.split(REGEX);
-				int wd = mf.getValue(PipeGen.WORD, split[0]);
-				// DB.println("wd "+wd+" "+startWd);
-				if (startWd == wd) {
-					int thesaurusWrd = mf.getValue(PipeGen.WORD, split[1]);
-					if (thesaurusWrd != wd)
-						wrds.add(thesaurusWrd);
-				} else if (startWd != -1) {
-					int[] ths = new int[wrds.size()];
-					for (int k = 0; k < ths.length; k++)
-						ths[k] = wrds.get(k);
-					word2path[startWd] = ths;
-					// DB.println(""+wrds+" size "+ths.length);
-					wrds.clear();
-					int thesaurusWrd = mf.getValue(PipeGen.WORD, split[1]);
-					if (thesaurusWrd != wd)
-						wrds.add(thesaurusWrd);
-				}
-				startWd = wd;
-			}
-
-			if (wrds.size() != 0) {
-				// put rest of the words
-				int[] ths = new int[wrds.size()];
-				for (int k = 0; k < ths.length; k++)
-					ths[k] = wrds.get(k);
-				word2path[startWd] = ths;
-				// DB.println(""+wrds+" size "+ths.length);
-				wrds.clear();
-
-			}
-
-			inputReader.close();
-			int fill = 0;
-			for (int[] element : word2path) {
-				if (element != null)
-					fill++;
-			}
-			/*
-			 * for(int l = 0; l<word2path.length; l++ ){ if (word2path[l][1]!=0)
-			 * fillL++; if (word2path[l][1]<-1)
-			 * System.out.println("lower "+word2path[l][1]); }
-			 */
-			System.out.println("filled " + fill + " of " + word2path.length);
-
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	/**
-	 * Read the cluster
-	 * 
-	 * @param dos
-	 * @throws IOException
-	 */
-	public Thesaurus(DataInputStream dis) throws IOException {
-
-		word2path = new int[dis.readInt()][];
-		for (int i = 0; i < word2path.length; i++) {
-			int len = dis.readInt();
-			if (len > 0) {
-				word2path[i] = new int[len];
-				for (int j = 0; j < len; j++) {
-					word2path[i][j] = dis.readInt();
-
-				}
-			}
-
-			word2path[i][0] = dis.readShort();
-		}
-		DB.println("Read cluster with " + word2path.length + " words ");
-	}
-
-	/**
-	 * Write the cluster
-	 * 
-	 * @param dos
-	 * @throws IOException
-	 */
-	public void write(DataOutputStream dos) throws IOException {
-
-		dos.writeInt(word2path.length);
-		for (int[] i : word2path) {
-			dos.writeInt(i == null ? 0 : i.length);
-
-			if (i != null) {
-				for (int element : i) {
-
-					dos.writeInt(element);
-
-				}
-
-			}
-		}
-
-	}
-
-	/**
-	 * @param form
-	 *            the id of a word form
-	 * @return the short path to the word form in the cluster
-	 * 
-	 *         final public int getSP(int form) { if (word2path.length<form)
-	 *         return -1; return word2path[form][0]; }
-	 */
-	/**
-	 * get the long path to a word form in the cluster
-	 * 
-	 * @param form
-	 *            the id of a word form
-	 * @return the long path to the word
-	 */
-	final public int get(int form, int k) {
-		if (word2path.length < form || word2path[form] == null)
-			return -1;
-		return word2path[form][k];
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/io/CONLLReader04.java b/dependencyParser/mate-tools/src/is2/io/CONLLReader04.java
deleted file mode 100644
index 695f10d..0000000
--- a/dependencyParser/mate-tools/src/is2/io/CONLLReader04.java
+++ /dev/null
@@ -1,264 +0,0 @@
-
-package is2.io;
-
-import java.io.BufferedReader;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-
-import is2.data.Instances;
-import is2.data.SentenceData09;
-import is2.util.DB;
-
-/**
- * This class reads files in the CONLL-08 and CONLL-09 format.
- *
- * @author Bernd Bohnet
- */
-public class CONLLReader04 {
-
-	private static final String US = "_";
-	private static final String REGEX = "\t";
-	public static final String STRING = "*";
-	public static final String PIPE = "\\|";
-	public static final String NO_TYPE = "<no-type>";
-	public static final String ROOT_POS = "<root-POS>";
-	public static final String ROOT_LEMMA = "<root-LEMMA>";
-	public static final String ROOT = "<root>";
-	public static final String EMPTY_FEAT = "<ef>";
-
-	private static final String NUMBER = "[0-9]+|[0-9]+\\.[0-9]+|[0-9]+[0-9,]+";
-	private static final String NUM = "<num>";
-
-	private BufferedReader inputReader;
-
-	public static final int TASK08 = 8;
-	public static final int TASK09 = 9;
-
-	public static boolean normalizeOn = true;
-
-	private int lineNumber = 0;
-
-	public CONLLReader04() {
-	}
-
-	public CONLLReader04(String file) {
-		lineNumber = 0;
-		try {
-			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"), 32768); // ,"UTF-8"
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	public CONLLReader04(String file, int task) {
-		this(file);
-	}
-
-	public void startReading(String file) {
-		lineNumber = 0;
-		try {
-			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"), 32768);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	/**
-	 * i.forms[heads[l]-1]+" "+rel+" "+ Read a instance
-	 * 
-	 * @return a instance
-	 * @throws Exception
-	 */
-	public SentenceData09 getNext() throws Exception {
-
-		try {
-
-			ArrayList<String[]> lineList = new ArrayList<String[]>();
-
-			String line = inputReader.readLine();
-
-			while (line != null && line.length() < 2) {
-				line = inputReader.readLine();
-				lineNumber++;
-				System.out.println("skip empty line at line " + lineNumber);
-			}
-
-			while (line != null && line.length() != 0 && !line.startsWith(STRING) && !line.startsWith(REGEX)) {
-				lineList.add(line.split(REGEX));
-				line = inputReader.readLine();
-				lineNumber++;
-			}
-
-			int length = lineList.size();
-
-			if (length == 0) {
-				inputReader.close();
-				return null;
-			}
-
-			SentenceData09 it = new SentenceData09();
-
-			// column content
-			// 1 id
-			// 2 form
-			// 3 lemma
-			// 4 cpos-tag
-			// 5 pos-tog
-			// 6 feats
-			// 7 head
-			// 8 deprel
-
-			it.forms = new String[length + 1];
-
-			it.plemmas = new String[length + 1];
-			it.gpos = new String[length + 1];
-			it.labels = new String[length + 1];
-			it.heads = new int[length + 1];
-			it.pheads = new int[length + 1];
-			it.plabels = new String[length + 1];
-
-			it.ppos = new String[length + 1];
-			it.lemmas = new String[length + 1];
-			it.fillp = new String[length + 1];
-			it.feats = new String[length + 1][];
-			it.ofeats = new String[length + 1];
-			it.pfeats = new String[length + 1];
-
-			it.forms[0] = ROOT;
-			it.plemmas[0] = ROOT_LEMMA;
-			it.fillp[0] = "N";
-			it.lemmas[0] = ROOT_LEMMA;
-
-			it.gpos[0] = ROOT_POS;
-			it.ppos[0] = ROOT_POS;
-			it.labels[0] = NO_TYPE;
-			it.heads[0] = -1;
-			it.plabels[0] = NO_TYPE;
-			it.pheads[0] = -1;
-			it.ofeats[0] = NO_TYPE;
-
-			// root is 0 therefore start with 1
-
-			for (int i = 1; i <= length; i++) {
-
-				String[] info = lineList.get(i - 1);
-
-				it.forms[i] = info[0]; // normalize(
-
-				it.lemmas[i] = "_";
-				it.plemmas[i] = "_";
-
-				// 3 cpos
-
-				it.gpos[i] = info[1];
-				it.ppos[i] = info[1];
-
-				it.ofeats[i] = "_";
-
-				it.feats[i] = null;
-				// it.feats[i] =info[5].split(PIPE);
-				it.pfeats[i] = "_";
-
-				if (info[2].equals(US))
-					it.heads[i] = -1;
-				else
-					it.heads[i] = Integer.parseInt(info[2]);// head
-
-				it.labels[i] = info[3];
-
-			}
-			return it;
-
-		} catch (Exception e) {
-			System.out.println("\n!!! Error in input file at line : " + lineNumber + " " + e.toString());
-			e.printStackTrace();
-			throw new Exception();
-			// return null;
-		}
-
-	}
-
-	/**
-	 * Read a instance an store it in a compressed format
-	 * 
-	 * @param is
-	 * @return
-	 * @throws IOException
-	 */
-	final public SentenceData09 getNext(Instances is) throws Exception {
-
-		SentenceData09 it = getNext();
-
-		if (is != null)
-			insert(is, it);
-
-		return it;
-
-	}
-
-	final public boolean insert(Instances is, SentenceData09 it) throws IOException {
-
-		try {
-
-			if (it == null) {
-				inputReader.close();
-				return false;
-			}
-
-			int i = is.createInstance09(it.length());
-
-			for (int p = 0; p < it.length(); p++) {
-
-				is.setForm(i, p, normalize(it.forms[p]));
-				is.setGPos(i, p, it.gpos[p]);
-
-				if (it.ppos[p] == null || it.ppos[p].equals(US)) {
-					is.setPPoss(i, p, it.gpos[p]);
-				} else
-					is.setPPoss(i, p, it.ppos[p]);
-
-				if (it.plemmas[p] == null || it.plemmas[p].equals(US)) {
-					is.setLemma(i, p, normalize(it.forms[p]));
-				} else
-					is.setLemma(i, p, normalize(it.plemmas[p]));
-
-				is.setFeats(i, p, it.feats[p]);
-
-				is.setFeature(i, p, it.ofeats[p]);
-
-				is.setRel(i, p, it.labels[p]);
-				if (it.plabels != null)
-					is.setPRel(i, p, it.plabels[p]);
-				is.setHead(i, p, it.heads[p]);
-				if (it.pheads != null)
-					is.setPHead(i, p, it.pheads[p]);
-
-				if (it.fillp != null && it.fillp[p] != null && it.fillp[p].startsWith("Y"))
-					is.pfill[i].set(p);
-				else
-					is.pfill[i].clear(p);
-			}
-
-			if (is.createSem(i, it)) {
-				DB.println("count " + i + " len " + it.length());
-				DB.println(it.printSem());
-			}
-		} catch (Exception e) {
-			DB.println("head " + it);
-			e.printStackTrace();
-		}
-		return true;
-
-	}
-
-	public static String normalize(String s) {
-		if (!normalizeOn)
-			return s;
-		if (s.matches(NUMBER))
-			return NUM;
-		return s;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/io/CONLLReader06.java b/dependencyParser/mate-tools/src/is2/io/CONLLReader06.java
deleted file mode 100755
index 10d1d2d..0000000
--- a/dependencyParser/mate-tools/src/is2/io/CONLLReader06.java
+++ /dev/null
@@ -1,271 +0,0 @@
-
-package is2.io;
-
-import java.io.BufferedReader;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-
-import is2.data.Instances;
-import is2.data.SentenceData09;
-import is2.util.DB;
-
-/**
- * This class reads files in the CONLL-08 and CONLL-09 format.
- *
- * @author Bernd Bohnet
- */
-public class CONLLReader06 {
-
-	private static final String US = "_";
-	private static final String REGEX = "\t";
-	public static final String STRING = "*";
-	public static final String PIPE = "\\|";
-	public static final String NO_TYPE = "<no-type>";
-	public static final String ROOT_POS = "<root-POS>";
-	public static final String ROOT_LEMMA = "<root-LEMMA>";
-	public static final String ROOT = "<root>";
-	public static final String EMPTY_FEAT = "<ef>";
-
-	private static final String NUMBER = "[0-9]+|[0-9]+\\.[0-9]+|[0-9]+[0-9,]+";
-	private static final String NUM = "<num>";
-
-	private BufferedReader inputReader;
-
-	public static final int TASK08 = 8;
-	public static final int TASK09 = 9;
-
-	public static boolean normalizeOn = true;
-
-	private int lineNumber = 0;
-
-	public CONLLReader06() {
-	}
-
-	public CONLLReader06(String file) {
-		lineNumber = 0;
-		try {
-			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"), 32768); // ,"UTF-8"
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	public CONLLReader06(String file, int task) {
-		this(file);
-	}
-
-	public void startReading(String file) {
-		lineNumber = 0;
-		try {
-			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"), 32768);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	/**
-	 * i.forms[heads[l]-1]+" "+rel+" "+ Read a instance
-	 * 
-	 * @return a instance
-	 * @throws Exception
-	 */
-	public SentenceData09 getNext() throws Exception {
-
-		try {
-
-			ArrayList<String[]> lineList = new ArrayList<String[]>();
-
-			String line = inputReader.readLine();
-
-			while (line != null && line.length() == 0) {
-				line = inputReader.readLine();
-				lineNumber++;
-				System.out.println("skip empty line at line " + lineNumber);
-			}
-
-			while (line != null && line.length() != 0 && !line.startsWith(STRING) && !line.startsWith(REGEX)) {
-				lineList.add(line.split(REGEX));
-				line = inputReader.readLine();
-				lineNumber++;
-			}
-
-			int length = lineList.size();
-
-			if (length == 0) {
-				inputReader.close();
-				return null;
-			}
-
-			SentenceData09 it = new SentenceData09();
-
-			// column content
-			// 1 id
-			// 2 form
-			// 3 lemma
-			// 4 cpos-tag
-			// 5 pos-tog
-			// 6 feats
-			// 7 head
-			// 8 deprel
-
-			it.forms = new String[length + 1];
-
-			it.plemmas = new String[length + 1];
-			it.gpos = new String[length + 1];
-			it.labels = new String[length + 1];
-			it.heads = new int[length + 1];
-			it.pheads = new int[length + 1];
-			it.plabels = new String[length + 1];
-
-			it.ppos = new String[length + 1];
-			it.lemmas = new String[length + 1];
-			it.fillp = new String[length + 1];
-			it.feats = new String[length + 1][];
-			it.ofeats = new String[length + 1];
-			it.pfeats = new String[length + 1];
-
-			it.forms[0] = ROOT;
-			it.plemmas[0] = ROOT_LEMMA;
-			it.fillp[0] = "N";
-			it.lemmas[0] = ROOT_LEMMA;
-
-			it.gpos[0] = ROOT_POS;
-			it.ppos[0] = ROOT_POS;
-			it.labels[0] = NO_TYPE;
-			it.heads[0] = -1;
-			it.plabels[0] = NO_TYPE;
-			it.pheads[0] = -1;
-			it.ofeats[0] = NO_TYPE;
-
-			// root is 0 therefore start with 1
-
-			for (int i = 1; i <= length; i++) {
-
-				String[] info = lineList.get(i - 1);
-
-				it.forms[i] = info[1]; // normalize(
-
-				it.lemmas[i] = info[2];
-				it.plemmas[i] = info[2];
-
-				// 3 cpos
-
-				it.gpos[i] = info[3];
-				it.ppos[i] = info[4];
-
-				it.ofeats[i] = info[5].equals(CONLLWriter09.DASH) ? "" : info[5];
-
-				if (info[5].equals(CONLLWriter09.DASH))
-					it.feats[i] = null;
-				else {
-					it.feats[i] = info[5].split(PIPE);
-					it.pfeats[i] = info[5];
-				}
-
-				if (info[6].equals(US))
-					it.heads[i] = -1;
-				else
-					it.heads[i] = Integer.parseInt(info[6]);// head
-
-				// it.phead[i]=info[9].equals(US) ? it.phead[i]=-1:
-				// Integer.parseInt(info[9]);// head
-
-				it.labels[i] = info[7];
-				// it.pedge[i] = info[11];
-
-			}
-			return it;
-
-		} catch (Exception e) {
-			System.out.println("\n!!! Error in input file at line : " + lineNumber + " " + e.toString());
-			e.printStackTrace();
-			throw new Exception();
-			// return null;
-		}
-
-	}
-
-	/**
-	 * Read a instance an store it in a compressed format
-	 * 
-	 * @param is
-	 * @return
-	 * @throws IOException
-	 */
-	final public SentenceData09 getNext(Instances is) throws Exception {
-
-		SentenceData09 it = getNext();
-
-		if (is != null)
-			insert(is, it);
-
-		return it;
-
-	}
-
-	final public boolean insert(Instances is, SentenceData09 it) throws IOException {
-
-		try {
-
-			if (it == null) {
-				inputReader.close();
-				return false;
-			}
-
-			int i = is.createInstance09(it.length());
-
-			for (int p = 0; p < it.length(); p++) {
-
-				is.setForm(i, p, normalize(it.forms[p]));
-				is.setGPos(i, p, it.gpos[p]);
-
-				if (it.ppos[p] == null || it.ppos[p].equals(US)) {
-					is.setPPoss(i, p, it.gpos[p]);
-				} else
-					is.setPPoss(i, p, it.ppos[p]);
-
-				if (it.plemmas[p] == null || it.plemmas[p].equals(US)) {
-					is.setLemma(i, p, normalize(it.forms[p]));
-				} else
-					is.setLemma(i, p, normalize(it.plemmas[p]));
-
-				is.setFeats(i, p, it.feats[p]);
-
-				is.setFeature(i, p, it.ofeats[p]);
-
-				is.setRel(i, p, it.labels[p]);
-				if (it.plabels != null)
-					is.setPRel(i, p, it.plabels[p]);
-				is.setHead(i, p, it.heads[p]);
-				if (it.pheads != null)
-					is.setPHead(i, p, it.pheads[p]);
-
-				if (it.fillp != null && it.fillp[p] != null && it.fillp[p].startsWith("Y"))
-					is.pfill[i].set(p);
-				else
-					is.pfill[i].clear(p);
-			}
-
-			if (is.createSem(i, it)) {
-				DB.println("count " + i + " len " + it.length());
-				DB.println(it.printSem());
-			}
-		} catch (Exception e) {
-			DB.println("head " + it);
-			e.printStackTrace();
-		}
-		return true;
-
-	}
-
-	public static String normalize(String s) {
-		if (!normalizeOn)
-			return s;
-		if (s.matches(NUMBER))
-			return NUM;
-		return s;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/io/CONLLReader08.java b/dependencyParser/mate-tools/src/is2/io/CONLLReader08.java
deleted file mode 100644
index 467e853..0000000
--- a/dependencyParser/mate-tools/src/is2/io/CONLLReader08.java
+++ /dev/null
@@ -1,407 +0,0 @@
-
-package is2.io;
-
-import java.io.BufferedReader;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-
-import is2.data.Instances;
-import is2.data.SentenceData09;
-import is2.util.DB;
-
-/**
- * This class reads files in the CONLL-09 format.
- * 
- * @author Bernd Bohnet
- */
-public class CONLLReader08 extends IOGenerals {
-
-	private BufferedReader inputReader;
-
-	public static final boolean NORMALIZE = true;
-
-	public static final boolean NO_NORMALIZE = false;
-
-	public boolean normalizeOn = true;
-
-	private int format = 0;
-
-	private int lineNumber = 0;
-
-	public CONLLReader08(boolean normalize) {
-
-		normalizeOn = normalize;
-	}
-
-	public CONLLReader08(String file) {
-		lineNumber = 0;
-		try {
-			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"), 32768);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	public CONLLReader08(String file, boolean normalize) {
-		this(file);
-		normalizeOn = normalize;
-	}
-
-	/**
-	 * Sets the input format:
-	 *
-	 * CONLL09 is standard, ONE_LINE
-	 *
-	 * @param format
-	 *            the fomrat (see the constants starting with F_).
-	 */
-	public void setInputFormat(int format) {
-		this.format = format;
-	}
-
-	/**
-	 *
-	 */
-	public CONLLReader08() {
-	}
-
-	/**
-	 * @param testfile
-	 * @param formatTask
-	 */
-	public CONLLReader08(String testfile, int formatTask) {
-		this(testfile);
-	}
-
-	public void startReading(String file) {
-		lineNumber = 0;
-		try {
-			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"), 32768);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	public SentenceData09 getNext() {
-
-		if (F_ONE_LINE == format)
-			return getNextOneLine();
-		else
-			return getNextCoNLL09();
-	}
-
-	/**
-	 * @return
-	 */
-	private SentenceData09 getNextOneLine() {
-
-		String line = null;
-		int i = 0;
-		try {
-
-			line = inputReader.readLine();
-			lineNumber++;
-
-			if (line == null) {
-				inputReader.close();
-				return null;
-			}
-
-			String[] tokens = line.split(" ");
-			int length = tokens.length;
-			if (line.isEmpty())
-				length = 0;
-
-			SentenceData09 it = new SentenceData09();
-
-			it.forms = new String[length + 1];
-
-			it.plemmas = new String[length + 1];
-			// it.ppos = new String[length+1];
-			it.gpos = new String[length + 1];
-			it.labels = new String[length + 1];
-			it.heads = new int[length + 1];
-			it.pheads = new int[length + 1];
-			it.plabels = new String[length + 1];
-
-			it.ppos = new String[length + 1];
-			it.lemmas = new String[length + 1];
-			it.fillp = new String[length + 1];
-			it.feats = new String[length + 1][];
-			it.ofeats = new String[length + 1];
-			it.pfeats = new String[length + 1];
-			it.id = new String[length + 1];
-
-			it.forms[0] = ROOT;
-			it.plemmas[0] = ROOT_LEMMA;
-			it.fillp[0] = "N";
-			it.lemmas[0] = ROOT_LEMMA;
-
-			it.gpos[0] = ROOT_POS;
-			it.ppos[0] = ROOT_POS;
-			it.labels[0] = NO_TYPE;
-			it.heads[0] = -1;
-			it.plabels[0] = NO_TYPE;
-			it.pheads[0] = -1;
-			it.ofeats[0] = NO_TYPE;
-			it.id[0] = "0";
-
-			// root is 0 therefore start with 1
-
-			for (i = 1; i <= length; i++) {
-
-				it.id[i] = "" + i;
-
-				it.forms[i] = this.normalizeOn ? normalize(tokens[i - 1]) : tokens[i - 1]; // normalize(
-
-			}
-
-			return it;
-
-		} catch (Exception e) {
-			System.out.println("\n!!! Error in input file sentence before line: " + lineNumber + " (in sentence line "
-					+ i + " ) " + e.toString());
-			e.printStackTrace();
-			System.exit(0);
-
-			// throw new Exception();
-			return null;
-		}
-
-	}
-
-	/**
-	 * i.forms[heads[l]-1]+" "+rel+" "+ Read a instance
-	 * 
-	 * @return a instance
-	 * @throws Exception
-	 */
-
-	public SentenceData09 getNextCoNLL09() {
-
-		String line = null;
-		int i = 0;
-		try {
-
-			ArrayList<String[]> lineList = new ArrayList<String[]>();
-
-			line = inputReader.readLine();
-			lineNumber++;
-
-			while (line != null && line.length() == 0) {
-				line = inputReader.readLine();
-				lineNumber++;
-				System.out.println("skip empty line at line " + lineNumber);
-			}
-
-			while (line != null && line.length() != 0 && !line.startsWith(STRING) && !line.startsWith(REGEX)) {
-				lineList.add(line.split(REGEX));
-				line = inputReader.readLine();
-				lineNumber++;
-			}
-
-			int length = lineList.size();
-
-			if (length == 0) {
-				inputReader.close();
-				return null;
-			}
-
-			SentenceData09 it = new SentenceData09();
-
-			it.forms = new String[length + 1];
-
-			it.plemmas = new String[length + 1];
-			// it.ppos = new String[length+1];
-			it.gpos = new String[length + 1];
-			it.labels = new String[length + 1];
-			it.heads = new int[length + 1];
-			it.pheads = new int[length + 1];
-			it.plabels = new String[length + 1];
-
-			it.ppos = new String[length + 1];
-			it.lemmas = new String[length + 1];
-			it.fillp = new String[length + 1];
-			it.feats = new String[length + 1][];
-			it.ofeats = new String[length + 1];
-			it.pfeats = new String[length + 1];
-			it.id = new String[length + 1];
-
-			it.forms[0] = ROOT;
-			it.plemmas[0] = ROOT_LEMMA;
-			it.fillp[0] = "N";
-			it.lemmas[0] = ROOT_LEMMA;
-
-			it.gpos[0] = ROOT_POS;
-			it.ppos[0] = ROOT_POS;
-			it.labels[0] = NO_TYPE;
-			it.heads[0] = -1;
-			it.plabels[0] = NO_TYPE;
-			it.pheads[0] = -1;
-			it.ofeats[0] = NO_TYPE;
-			it.id[0] = "0";
-
-			// root is 0 therefore start with 1
-
-			for (i = 1; i <= length; i++) {
-
-				String[] info = lineList.get(i - 1);
-
-				it.id[i] = info[0];
-				it.forms[i] = info[5]; // normalize(
-				if (info.length < 3)
-					continue;
-
-				// it.lemmas[i] = info[2];
-				it.plemmas[i] = info[6];
-				it.gpos[i] = info[3];
-
-				if (info.length < 5)
-					continue;
-				it.ppos[i] = info[7];// .split("\\|")[0];
-
-				// feat 6
-				// pfeat 7
-
-				// this causes trouble in the perl eval09 scirpt
-				// it.ofeats[i]=info[6].equals(CONLLWriter09.DASH)? "" :
-				// info[6];
-
-				// now we try underscore
-				it.ofeats[i] = "_";
-
-				// it.feats[i] ="_";
-				it.pfeats[i] = "_";
-
-				if (info[8].equals(US))
-					it.heads[i] = -1;
-				else
-					it.heads[i] = Integer.parseInt(info[8]);// head
-
-				it.pheads[i] = -1;// head
-
-				it.labels[i] = info[9];
-				it.plabels[i] = "_";
-
-				it.fillp[i] = info[10];
-
-				if (info.length > 11) {
-					if (!info[10].equals(US))
-						it.addPredicate(i, info[10]);
-					for (int k = 11; k < info.length; k++)
-						it.addArgument(i, k - 11, info[k]);
-				}
-
-			}
-			return it;
-
-		} catch (Exception e) {
-			System.out.println("\n!!! Error in input file sentence before line: " + lineNumber + " (in sentence line "
-					+ i + " ) " + e.toString());
-			e.printStackTrace();
-			System.exit(0);
-
-			// throw new Exception();
-			return null;
-		}
-
-	}
-
-	/**
-	 * Read a instance an store it in a compressed format
-	 * 
-	 * @param is
-	 * @return
-	 * @throws IOException
-	 */
-	final public SentenceData09 getNext(Instances is) {
-
-		SentenceData09 it = getNext();
-
-		if (is != null)
-			insert(is, it);
-
-		return it;
-
-	}
-
-	final public boolean insert(Instances is, SentenceData09 it) {
-
-		try {
-
-			if (it == null) {
-				inputReader.close();
-				return false;
-			}
-
-			int i = is.createInstance09(it.length());
-
-			for (int p = 0; p < it.length(); p++) {
-
-				is.setForm(i, p, normalize(it.forms[p]));
-				is.setGPos(i, p, it.gpos[p]);
-
-				// System.out.println(""+is.gpos[i][p]);
-
-				if (it.ppos[p] == null || it.ppos[p].equals(US)) {
-
-					is.setPPoss(i, p, it.gpos[p]);
-				} else
-					is.setPPoss(i, p, it.ppos[p]);
-
-				if (it.plemmas[p] == null || it.plemmas[p].equals(US)) {
-					is.setLemma(i, p, normalize(it.forms[p]));
-				} else
-					is.setLemma(i, p, normalize(it.plemmas[p]));
-
-				if (it.lemmas != null)
-					if (it.lemmas[p] == null) { // ||it.org_lemmas[p].equals(US)
-												// that harms a lot the
-												// lemmatizer
-						is.setGLemma(i, p, it.plemmas[p]);
-					} else
-						is.setGLemma(i, p, it.lemmas[p]);
-
-				if (it.feats != null && it.feats[p] != null)
-					is.setFeats(i, p, it.feats[p]);
-
-				if (it.ofeats != null)
-					is.setFeature(i, p, it.ofeats[p]);
-
-				is.setRel(i, p, it.labels[p]);
-				if (it.plabels != null)
-					is.setPRel(i, p, it.plabels[p]);
-
-				is.setHead(i, p, it.heads[p]);
-				if (it.pheads != null)
-					is.setPHead(i, p, it.pheads[p]);
-
-				if (it.fillp != null && it.fillp[p] != null && it.fillp[p].startsWith("Y"))
-					is.pfill[i].set(p);
-				else
-					is.pfill[i].clear(p);
-			}
-
-			if (is.createSem(i, it)) {
-				DB.println("count " + i + " len " + it.length());
-				DB.println(it.printSem());
-			}
-		} catch (Exception e) {
-			DB.println("head " + it);
-			e.printStackTrace();
-		}
-		return true;
-
-	}
-
-	public String normalize(String s) {
-		if (!normalizeOn)
-			return s;
-		if (s.matches(NUMBER))
-			return NUM;
-		return s;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/io/CONLLReader09.java b/dependencyParser/mate-tools/src/is2/io/CONLLReader09.java
deleted file mode 100755
index cee897a..0000000
--- a/dependencyParser/mate-tools/src/is2/io/CONLLReader09.java
+++ /dev/null
@@ -1,409 +0,0 @@
-
-package is2.io;
-
-import java.io.BufferedReader;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-
-import is2.data.Instances;
-import is2.data.SentenceData09;
-import is2.util.DB;
-
-/**
- * This class reads files in the CONLL-09 format.
- * 
- * @author Bernd Bohnet
- */
-public class CONLLReader09 extends IOGenerals {
-
-	private BufferedReader inputReader;
-
-	public static final boolean NORMALIZE = true;
-
-	public static final boolean NO_NORMALIZE = false;
-
-	public boolean normalizeOn = true;
-
-	static public String joint = "";
-
-	private int format = 0;
-
-	private int lineNumber = 0;
-
-	public CONLLReader09(boolean normalize) {
-
-		normalizeOn = normalize;
-	}
-
-	public CONLLReader09(String file) {
-		lineNumber = 0;
-		try {
-			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"), 32768);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	public CONLLReader09(String file, boolean normalize) {
-		this(file);
-		normalizeOn = normalize;
-	}
-
-	/**
-	 * Sets the input format:
-	 *
-	 * CONLL09 is standard, ONE_LINE
-	 *
-	 * @param format
-	 *            the fomrat (see the constants starting with F_).
-	 */
-	public void setInputFormat(int format) {
-		this.format = format;
-	}
-
-	/**
-	 *
-	 */
-	public CONLLReader09() {
-	}
-
-	/**
-	 * @param testfile
-	 * @param formatTask
-	 */
-	public CONLLReader09(String testfile, int formatTask) {
-		this(testfile);
-	}
-
-	public void startReading(String file) {
-		lineNumber = 0;
-		try {
-			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"), 32768);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	public SentenceData09 getNext() {
-
-		if (F_ONE_LINE == format)
-			return getNextOneLine();
-		else
-			return getNextCoNLL09();
-	}
-
-	/**
-	 * @return
-	 */
-	private SentenceData09 getNextOneLine() {
-
-		String line = null;
-		int i = 0;
-		try {
-
-			line = inputReader.readLine();
-			lineNumber++;
-
-			if (line == null) {
-				inputReader.close();
-				return null;
-			}
-
-			String[] tokens = line.split(" ");
-			int length = tokens.length;
-			if (line.isEmpty())
-				length = 0;
-
-			SentenceData09 it = new SentenceData09();
-
-			it.forms = new String[length + 1];
-
-			it.plemmas = new String[length + 1];
-			// it.ppos = new String[length+1];
-			it.gpos = new String[length + 1];
-			it.labels = new String[length + 1];
-			it.heads = new int[length + 1];
-			it.pheads = new int[length + 1];
-			it.plabels = new String[length + 1];
-
-			it.ppos = new String[length + 1];
-			it.lemmas = new String[length + 1];
-			it.fillp = new String[length + 1];
-			it.feats = new String[length + 1][];
-			it.ofeats = new String[length + 1];
-			it.pfeats = new String[length + 1];
-			it.id = new String[length + 1];
-
-			it.forms[0] = ROOT;
-			it.plemmas[0] = ROOT_LEMMA;
-			it.fillp[0] = "N";
-			it.lemmas[0] = ROOT_LEMMA;
-
-			it.gpos[0] = ROOT_POS;
-			it.ppos[0] = ROOT_POS;
-			it.labels[0] = NO_TYPE;
-			it.heads[0] = -1;
-			it.plabels[0] = NO_TYPE;
-			it.pheads[0] = -1;
-			it.ofeats[0] = NO_TYPE;
-			it.id[0] = "0";
-
-			// root is 0 therefore start with 1
-
-			for (i = 1; i <= length; i++) {
-
-				it.id[i] = "" + i;
-
-				it.forms[i] = this.normalizeOn ? normalize(tokens[i - 1]) : tokens[i - 1]; // normalize(
-
-			}
-
-			return it;
-
-		} catch (Exception e) {
-			System.out.println("\n!!! Error in input file sentence before line: " + lineNumber + " (in sentence line "
-					+ i + " ) " + e.toString());
-			e.printStackTrace();
-
-			// throw new Exception();
-			return null;
-		}
-
-	}
-
-	/**
-	 * i.forms[heads[l]-1]+" "+rel+" "+ Read a instance
-	 * 
-	 * @return a instance
-	 * @throws Exception
-	 */
-
-	public SentenceData09 getNextCoNLL09() {
-
-		String line = null;
-		int i = 0;
-		try {
-
-			ArrayList<String[]> lineList = new ArrayList<String[]>();
-
-			line = inputReader.readLine();
-			lineNumber++;
-
-			while (line != null && line.length() == 0) {
-				line = inputReader.readLine();
-				lineNumber++;
-				System.out.println("skip empty line at line " + lineNumber);
-			}
-
-			while (line != null && line.length() != 0 && !line.startsWith(STRING) && !line.startsWith(REGEX)) {
-				lineList.add(line.split(REGEX));
-				line = inputReader.readLine();
-				lineNumber++;
-			}
-
-			int length = lineList.size();
-
-			if (length == 0) {
-				inputReader.close();
-				return null;
-			}
-
-			SentenceData09 it = new SentenceData09();
-
-			it.forms = new String[length + 1];
-
-			it.plemmas = new String[length + 1];
-			// it.ppos = new String[length+1];
-			it.gpos = new String[length + 1];
-			it.labels = new String[length + 1];
-			it.heads = new int[length + 1];
-			it.pheads = new int[length + 1];
-			it.plabels = new String[length + 1];
-
-			it.ppos = new String[length + 1];
-			it.lemmas = new String[length + 1];
-			it.fillp = new String[length + 1];
-			it.feats = new String[length + 1][];
-			it.ofeats = new String[length + 1];
-			it.pfeats = new String[length + 1];
-			it.id = new String[length + 1];
-
-			it.forms[0] = ROOT;
-			it.plemmas[0] = ROOT_LEMMA;
-			it.fillp[0] = "N";
-			it.lemmas[0] = ROOT_LEMMA;
-
-			it.gpos[0] = ROOT_POS;
-			it.ppos[0] = ROOT_POS;
-			it.labels[0] = NO_TYPE;
-			it.heads[0] = -1;
-			it.plabels[0] = NO_TYPE;
-			it.pheads[0] = -1;
-			it.ofeats[0] = NO_TYPE;
-			it.id[0] = "0";
-
-			// root is 0 therefore start with 1
-
-			for (i = 1; i <= length; i++) {
-
-				String[] info = lineList.get(i - 1);
-
-				it.id[i] = info[0];
-				it.forms[i] = info[1]; // normalize(
-				if (info.length < 3)
-					continue;
-
-				it.lemmas[i] = info[2];
-				it.plemmas[i] = info[3];
-				it.gpos[i] = info[4];
-
-				if (info.length < 5)
-					continue;
-				it.ppos[i] = info[5];// .split("\\|")[0];
-				// feat 6
-
-				// now we try underscore
-				it.ofeats[i] = info[6].equals(CONLLWriter09.DASH) ? "_" : info[6];
-
-				if (info[7].equals(CONLLWriter09.DASH))
-					it.feats[i] = null;
-				else {
-					it.feats[i] = info[7].split(PIPE);
-					it.pfeats[i] = info[7];
-				}
-
-				if (info[8].equals(US))
-					it.heads[i] = -1;
-				else
-					it.heads[i] = Integer.parseInt(info[8]);// head
-
-				it.pheads[i] = info[9].equals(US) ? it.pheads[i] = -1 : Integer.parseInt(info[9]);// head
-
-				it.labels[i] = info[10];
-				it.plabels[i] = info[11];
-				it.fillp[i] = info[12];
-
-				if (info.length > 13) {
-					if (!info[13].equals(US))
-						it.addPredicate(i, info[13]);
-					for (int k = 14; k < info.length; k++)
-						it.addArgument(i, k - 14, info[k]);
-
-				}
-
-			}
-			return it;
-
-		} catch (Exception e) {
-			System.out.println("\n!!! Error in input file sentence before line: " + lineNumber + " (in sentence line "
-					+ i + " ) " + e.toString());
-			e.printStackTrace();
-			System.exit(0);
-
-			// throw new Exception();
-			return null;
-		}
-
-	}
-
-	/**
-	 * Read a instance an store it in a compressed format
-	 * 
-	 * @param is
-	 * @return
-	 * @throws IOException
-	 */
-	final public SentenceData09 getNext(Instances is) {
-
-		SentenceData09 it = getNext();
-
-		if (is != null)
-			insert(is, it);
-
-		return it;
-
-	}
-
-	final public boolean insert(Instances is, SentenceData09 it) {
-
-		try {
-
-			if (it == null) {
-				inputReader.close();
-				return false;
-			}
-
-			int i = is.createInstance09(it.length());
-
-			for (int p = 0; p < it.length(); p++) {
-
-				is.setForm(i, p, normalize(it.forms[p]));
-				// is.setFormOrg(i, p, it.forms[p]);
-				is.setGPos(i, p, it.gpos[p]);
-
-				// System.out.println(""+is.gpos[i][p]);
-
-				if (it.ppos[p] == null || it.ppos[p].equals(US)) {
-
-					is.setPPoss(i, p, it.gpos[p]);
-				} else
-					is.setPPoss(i, p, it.ppos[p]);
-
-				if (it.plemmas[p] == null || it.plemmas[p].equals(US)) {
-					is.setLemma(i, p, normalize(it.forms[p]));
-				} else
-					is.setLemma(i, p, normalize(it.plemmas[p]));
-
-				if (it.lemmas != null)
-					if (it.lemmas[p] == null) { // ||it.org_lemmas[p].equals(US)
-												// that harms a lot the
-												// lemmatizer
-						is.setGLemma(i, p, it.plemmas[p]);
-					} else
-						is.setGLemma(i, p, it.lemmas[p]);
-
-				if (it.feats != null && it.feats[p] != null)
-					is.setFeats(i, p, it.feats[p]);
-
-				if (it.ofeats != null)
-					is.setFeature(i, p, it.ofeats[p]);
-				if (it.pfeats != null)
-					is.setPFeature(i, p, it.pfeats[p]);
-
-				is.setRel(i, p, it.labels[p]);
-				if (it.plabels != null)
-					is.setPRel(i, p, it.plabels[p]);
-
-				is.setHead(i, p, it.heads[p]);
-				if (it.pheads != null)
-					is.setPHead(i, p, it.pheads[p]);
-
-				if (it.fillp != null && it.fillp[p] != null && it.fillp[p].startsWith("Y"))
-					is.pfill[i].set(p);
-				else
-					is.pfill[i].clear(p);
-			}
-
-			if (is.createSem(i, it)) {
-				DB.println("count " + i + " len " + it.length());
-				DB.println(it.printSem());
-			}
-		} catch (Exception e) {
-			DB.println("head " + it);
-			e.printStackTrace();
-		}
-		return true;
-
-	}
-
-	public String normalize(String s) {
-		if (!normalizeOn)
-			return s;
-		if (s.matches(NUMBER))
-			return NUM;
-		return s;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/io/CONLLWriter06.java b/dependencyParser/mate-tools/src/is2/io/CONLLWriter06.java
deleted file mode 100755
index 24446b5..0000000
--- a/dependencyParser/mate-tools/src/is2/io/CONLLWriter06.java
+++ /dev/null
@@ -1,199 +0,0 @@
-package is2.io;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.util.StringTokenizer;
-
-import is2.data.SentenceData09;
-import is2.util.DB;
-
-public class CONLLWriter06 {
-
-	public static final String DASH = "_";
-
-	protected BufferedWriter writer;
-
-	public CONLLWriter06() {
-	}
-
-	public static void main(String args[]) throws IOException {
-
-		if (args.length == 2) {
-			File f = new File(args[0]);
-			File f2 = new File(args[1]);
-			// BufferedReader bf = new BufferedReader(new FileInputStream(new
-			// File(args[0]),"UTF-8"),32768);
-			BufferedReader ir = new BufferedReader(new InputStreamReader(new FileInputStream(f), "ISO-8859"), 32768);
-			BufferedWriter br = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f2), "UTF-8"));
-			;
-			boolean found = false;
-			boolean tab = false;
-			while (true) {
-				String l = ir.readLine();
-				if (l == null)
-					break;
-				String x = l.trim();
-				if (x.endsWith("\t"))
-					tab = true;
-				br.write(x);
-				br.newLine();
-				if (!l.equals(x))
-					found = true;
-
-			}
-			ir.close();
-			br.flush();
-			br.close();
-
-			if (found)
-				DB.println("found diff. found tab? " + tab);
-		} else if (args.length == 3) {
-			File f1 = new File(args[1]);
-			File f2 = new File(args[2]);
-
-			BufferedReader ir1 = new BufferedReader(new InputStreamReader(new FileInputStream(f1), "ISO-8859"), 32768);
-			BufferedReader ir2 = new BufferedReader(new InputStreamReader(new FileInputStream(f2), "UTF-8"), 32768);
-
-			int line = 0, alltabs1 = 0, alltabs2 = 0;
-			while (true) {
-				String l1 = ir1.readLine();
-				String l2 = ir2.readLine();
-
-				if (l1 == null && l2 != null)
-					DB.println("files do not end at the same line ");
-				if (l1 != null && l2 == null)
-					DB.println("files do not end at the same line ");
-				if (l1 == null)
-					break;
-				StringTokenizer t1 = new StringTokenizer(l1, "\t");
-				StringTokenizer t2 = new StringTokenizer(l2, "\t");
-				int tabs1 = 0;
-				while (t1.hasMoreTokens()) {
-
-					t1.nextElement();
-					tabs1++;
-					alltabs1++;
-				}
-
-				int tabs2 = 0;
-				while (t2.hasMoreTokens()) {
-
-					t2.nextElement();
-					tabs2++;
-					alltabs2++;
-				}
-				line++;
-				if (tabs1 != tabs2) {
-					DB.println("number of tabs different in line " + line + " file1-tabs " + tabs1 + " file2-tabs "
-							+ tabs2);
-					System.exit(0);
-				}
-
-			}
-			ir1.close();
-			ir2.close();
-			DB.println("checked lines " + line + " with tabs in file 1 " + alltabs1 + " in file2 " + alltabs2);
-
-		} else {
-			File f = new File(args[0]);
-			String[] dir = f.list();
-			for (String fx : dir) {
-				BufferedReader ir = new BufferedReader(
-						new InputStreamReader(new FileInputStream(args[0] + File.separatorChar + fx), "UTF-8"), 32768);
-				System.out.println("check file " + fx);
-				while (true) {
-					String l = ir.readLine();
-					if (l == null)
-						break;
-					if (l.endsWith("\t")) {
-						DB.println("found tab in file " + fx);
-						break;
-					}
-				}
-				ir.close();
-			}
-		}
-
-	}
-
-	// public int version = CONLLReader09.TASK08;
-
-	public CONLLWriter06(String file) {
-
-		try {
-			writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	public CONLLWriter06(String outfile, int formatTask) {
-		this(outfile);
-		// version = formatTask;
-	}
-
-	public void write(SentenceData09 inst) throws IOException {
-
-		for (int i = 0; i < inst.length(); i++) {
-
-			writer.write(Integer.toString(i + 1));
-			writer.write('\t'); // id
-			writer.write(inst.forms[i]);
-			writer.write('\t'); // form
-
-			if (inst.lemmas != null && inst.lemmas[i] != null) {
-				writer.write(inst.lemmas[i]);
-			} else
-				writer.write(DASH); // lemma
-			writer.write('\t');
-
-			// writer.write(DASH); // cpos
-			// writer.write('\t');
-
-			writer.write(inst.gpos[i]); // cpos has to be included
-			writer.write('\t');
-
-			writer.write(inst.gpos[i]); // gpos
-			writer.write('\t');
-
-			if (inst.ofeats[i].isEmpty() || inst.ofeats[i].equals(" "))
-				writer.write(DASH);
-			else
-				writer.write(inst.ofeats[i]);
-			writer.write('\t');
-
-			// writer.write(DASH); writer.write('\t'); // pfeat
-
-			writer.write(Integer.toString(inst.heads[i]));
-			writer.write('\t'); // head
-
-			if (inst.labels[i] != null)
-				writer.write(inst.labels[i]); // rel
-			else
-				writer.write(DASH);
-			writer.write('\t');
-
-			writer.write(DASH);
-			writer.write('\t');
-
-			writer.write(DASH);
-			writer.write('\t');
-
-			writer.newLine();
-		}
-		writer.newLine();
-
-	}
-
-	public void finishWriting() throws IOException {
-		writer.flush();
-		writer.close();
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/io/CONLLWriter09.java b/dependencyParser/mate-tools/src/is2/io/CONLLWriter09.java
deleted file mode 100755
index c28ab24..0000000
--- a/dependencyParser/mate-tools/src/is2/io/CONLLWriter09.java
+++ /dev/null
@@ -1,334 +0,0 @@
-package is2.io;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-import java.util.StringTokenizer;
-
-import is2.data.SentenceData09;
-import is2.util.DB;
-
-public class CONLLWriter09 extends IOGenerals {
-
-	int format = 0;
-
-	public static final String DASH = "_";
-
-	public static final boolean NO_ROOT = true, ROOT = false;
-
-	protected BufferedWriter writer;
-
-	public CONLLWriter09() {
-	}
-
-	public static void main(String args[]) throws IOException {
-
-		if (args.length == 2) {
-			File f = new File(args[0]);
-			File f2 = new File(args[1]);
-			BufferedReader ir = new BufferedReader(new InputStreamReader(new FileInputStream(f), "UTF-8"), 32768);
-			BufferedWriter br = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f2), "UTF8"));
-			;
-			boolean found = false;
-			boolean tab = false;
-			while (true) {
-				String l = ir.readLine();
-				if (l == null)
-					break;
-				String x = l.trim();
-				if (x.endsWith("\t"))
-					tab = true;
-				br.write(x);
-				br.newLine();
-				if (!l.equals(x))
-					found = true;
-
-			}
-			ir.close();
-			br.flush();
-			br.close();
-
-			if (found)
-				DB.println("found diff. found tab? " + tab);
-		} else if (args.length == 3) {
-			File f1 = new File(args[1]);
-			File f2 = new File(args[2]);
-
-			BufferedReader ir1 = new BufferedReader(new InputStreamReader(new FileInputStream(f1), "UTF-8"), 32768);
-			BufferedReader ir2 = new BufferedReader(new InputStreamReader(new FileInputStream(f2), "UTF-8"), 32768);
-
-			int line = 0, alltabs1 = 0, alltabs2 = 0;
-			while (true) {
-				String l1 = ir1.readLine();
-				String l2 = ir2.readLine();
-
-				if (l1 == null && l2 != null)
-					DB.println("files do not end at the same line ");
-				if (l1 != null && l2 == null)
-					DB.println("files do not end at the same line ");
-				if (l1 == null)
-					break;
-				StringTokenizer t1 = new StringTokenizer(l1, "\t");
-				StringTokenizer t2 = new StringTokenizer(l2, "\t");
-				int tabs1 = 0;
-				while (t1.hasMoreTokens()) {
-
-					t1.nextElement();
-					tabs1++;
-					alltabs1++;
-				}
-
-				int tabs2 = 0;
-				while (t2.hasMoreTokens()) {
-
-					t2.nextElement();
-					tabs2++;
-					alltabs2++;
-				}
-				line++;
-				if (tabs1 != tabs2) {
-					DB.println("number of tabs different in line " + line + " file1-tabs " + tabs1 + " file2-tabs "
-							+ tabs2);
-					System.exit(0);
-				}
-
-			}
-			ir1.close();
-			ir2.close();
-			DB.println("checked lines " + line + " with tabs in file 1 " + alltabs1 + " in file2 " + alltabs2);
-
-		} else {
-			File f = new File(args[0]);
-			String[] dir = f.list();
-			for (String fx : dir) {
-				BufferedReader ir = new BufferedReader(
-						new InputStreamReader(new FileInputStream(args[0] + File.separatorChar + fx), "UTF-8"), 32768);
-				System.out.println("check file " + fx);
-				while (true) {
-					String l = ir.readLine();
-					if (l == null)
-						break;
-					if (l.endsWith("\t")) {
-						DB.println("found tab in file " + fx);
-						break;
-					}
-				}
-				ir.close();
-			}
-		}
-
-	}
-
-	public CONLLWriter09(String file) {
-
-		try {
-			writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF8"));
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	public CONLLWriter09(Writer writer) {
-		this.writer = new BufferedWriter(writer);
-	}
-
-	public CONLLWriter09(String outfile, int formatTask) {
-		this(outfile);
-	}
-
-	public void write(SentenceData09 inst) throws IOException {
-		write(inst, NO_ROOT);
-	}
-
-	/**
-	 *
-	 * @param inst
-	 * @param root
-	 *            true: remove root node
-	 * @throws IOException
-	 */
-	public void write(SentenceData09 inst, boolean root) throws IOException {
-
-		int i, mod;
-		if (root && (inst.forms[0].startsWith("<root")
-				|| (inst.lemmas[0] != null && inst.lemmas[0].startsWith("<root")))) {
-			i = 1;
-			mod = 0;
-		} else {
-			i = 0;
-			mod = 1;
-		}
-		// =()?1:0;
-
-		if (format == IOGenerals.F_ONE_LINE) {
-			boolean first = true;
-			for (; i < inst.length(); i++) {
-				if (first) {
-					first = false;
-				} else
-					writer.write(" ");
-				writer.write(inst.plemmas[i]);
-			}
-			writer.newLine();
-
-			return;
-		}
-
-		for (; i < inst.length(); i++) {
-
-			if (inst.id == null || inst.id[i] == null) {
-				writer.write(Integer.toString(i + mod));
-				writer.write('\t');
-			} // id
-			else {
-				writer.write(inst.id[i]);
-				writer.write('\t');
-			}
-
-			writer.write(inst.forms[i]);
-			writer.write('\t'); // form
-
-			if (inst.lemmas != null && inst.lemmas[i] != null) {
-				writer.write(inst.lemmas[i]);
-			} else
-				writer.write(DASH); // lemma
-			writer.write('\t');
-
-			if (inst.plemmas != null && inst.plemmas[i] != null)
-				writer.write(inst.plemmas[i]);
-			else
-				writer.write(DASH); // plemma
-			writer.write('\t');
-
-			if (inst.gpos[i] != null)
-				writer.write(inst.gpos[i]); // gpos
-			else
-				writer.write(DASH);
-			writer.write('\t');
-
-			if (inst.ppos != null && inst.ppos[i] != null)
-				writer.write(inst.ppos[i]);
-			else
-				writer.write(DASH); // ppos
-			writer.write('\t');
-
-			if (inst.ofeats != null && inst.ofeats[i] != null)
-				writer.write(inst.ofeats[i]);
-			else
-				writer.write(DASH);
-			writer.write('\t');
-
-			// writer.write(DASH); writer.write('\t'); // feat
-			if (inst.pfeats != null && inst.pfeats[i] != null) {
-				// System.out.println(""+inst.pfeats[i]);
-				writer.write(inst.pfeats[i]);
-			} else
-				writer.write(DASH);
-			writer.write('\t');
-
-			writer.write(Integer.toString(inst.heads[i]));
-			writer.write('\t'); // head
-
-			if (inst.pheads != null)
-				writer.write(Integer.toString(inst.pheads[i]));
-			else
-				writer.write(DASH);
-			writer.write('\t'); // phead
-
-			if (inst.labels[i] != null)
-				writer.write(inst.labels[i]); // rel
-			else
-				writer.write(DASH);
-			writer.write('\t');
-
-			if (inst.plabels != null && inst.plabels[i] != null)
-				writer.write(inst.plabels[i]); // rel
-			else
-				writer.write(DASH);
-			writer.write('\t');
-
-			if (inst.fillp != null && inst.fillp[i] != null)
-				writer.write(inst.fillp[i]); // fill p
-			else {
-				writer.write(DASH);
-			}
-
-			// writer.write('\t');
-
-			if (inst.sem == null) {
-				writer.write('\t');
-				writer.write(DASH);
-
-			} else {
-
-				boolean foundPred = false;
-				// print the predicate
-				for (int p = 0; p < inst.sem.length; p++) {
-					if (inst.semposition[p] == i) {
-						foundPred = true;
-						// System.out.println("write pred "+inst.sem[p] );
-						writer.write('\t');
-						writer.write(inst.sem[p]);
-
-						// if (inst.sem[p].startsWith(".")) DB.println("error
-						// "+inst.sem[p]);
-					}
-				}
-
-				if (!foundPred) {
-					writer.write('\t');
-					writer.write(DASH);
-					// writer.write('\t');
-					// writer.write(DASH);
-				}
-
-				// print the arguments
-				for (int p = 0; p < inst.sem.length; p++) {
-
-					boolean found = false;
-					if (inst.arg != null && inst.arg.length > p && inst.arg[p] != null)
-						for (int a = 0; a < inst.arg[p].length; a++) {
-
-							if (i == inst.argposition[p][a]) {
-								writer.write('\t');
-								writer.write(inst.arg[p][a]);
-								found = true;
-								break;
-							}
-
-						}
-					if (!found) {
-						writer.write('\t');
-						writer.write(DASH);
-					}
-
-				}
-
-			}
-			writer.newLine();
-		}
-		writer.newLine();
-	}
-
-	public void finishWriting() throws IOException {
-		writer.flush();
-		writer.close();
-	}
-
-	/**
-	 * Sets the output format such as CoNLL or one line for the lemmata of the
-	 * sentence (see F_xxxx constants).
-	 * 
-	 * @param formatTask
-	 */
-	public void setOutputFormat(int formatTask) {
-		format = formatTask;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/io/IOGenerals.java b/dependencyParser/mate-tools/src/is2/io/IOGenerals.java
deleted file mode 100644
index 030bedd..0000000
--- a/dependencyParser/mate-tools/src/is2/io/IOGenerals.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- *
- */
-package is2.io;
-
-/**
- * @author Dr. Bernd Bohnet, 18.08.2011
- *
- *
- */
-public class IOGenerals {
-
-	// some constants
-	public static final String US = "_";
-	public static final String REGEX = "\t";
-	public static final String STRING = "*";
-	public static final String PIPE = "\\|";
-	public static final String NO_TYPE = "<no-type>";
-	public static final String ROOT_POS = "<root-POS>";
-	public static final String ROOT_LEMMA = "<root-LEMMA>";
-	public static final String ROOT = "<root>";
-	public static final String EMPTY_FEAT = "<ef>";
-
-	// the different readers
-	public static final int F_CONLL09 = 0;
-	public static final int F_ONE_LINE = 1;
-
-	// normalization of the input
-	public static final String NUMBER = "[0-9]+|[0-9]+\\.[0-9]+|[0-9]+[0-9,]+";
-	public static final String NUM = "<num>";
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/io/PSReader.java b/dependencyParser/mate-tools/src/is2/io/PSReader.java
deleted file mode 100644
index 5e8b1ad..0000000
--- a/dependencyParser/mate-tools/src/is2/io/PSReader.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- *
- */
-package is2.io;
-
-import is2.data.PSTree;
-
-/**
- * @author Dr. Bernd Bohnet, 07.02.2011
- *
- *
- */
-public interface PSReader {
-
-	public PSTree getNext();
-
-	/**
-	 * @param ps
-	 * @param filter
-	 */
-	public void startReading(String ps, String[] filter);
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/io/TigerReader.java b/dependencyParser/mate-tools/src/is2/io/TigerReader.java
deleted file mode 100644
index 10fa0ea..0000000
--- a/dependencyParser/mate-tools/src/is2/io/TigerReader.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/**
- *
- */
-package is2.io;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.StringTokenizer;
-
-import is2.data.PSTree;
-
-/**
- * @author Dr. Bernd Bohnet, 17.01.2011
- *
- *         Reads a sentences in Penn Tree Bank bracket style and return
- *         sentences.
- */
-public class TigerReader implements PSReader {
-
-	BufferedReader inputReader;
-	ArrayList<File> psFiles = new ArrayList<File>();
-	ArrayList<PSTree> psCache = new ArrayList<PSTree>();
-
-	String filter[] = null;
-	int startFilter = -1;
-	int endFilter = -1;
-
-	public TigerReader() {
-	}
-
-	public TigerReader(String file) {
-
-		try {
-			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "ISO-8859-1"), 32768);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	/**
-	 * @param ps
-	 */
-	@Override
-	public void startReading(String file, String[] filter) {
-
-		try {
-			this.filter = filter;
-			startFilter = filter == null ? -1 : 1;
-			endFilter = filter == null ? -1 : 1;
-
-			inputReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "ISO-8859-1"), 32768);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-	}
-
-	public static class Line {
-		String form;
-		String lemma;
-		String morph;
-		String pos;
-		int parent;
-		String edge;
-
-	}
-
-	static int stop = 0;
-
-	/**
-	 * @return
-	 */
-	@Override
-	public PSTree getNext() {
-
-		PSTree ps = null;
-		String l = null;
-		ArrayList<Line> lines = new ArrayList<Line>();
-		try {
-			int state = 1, terminals = 0, nonterminals = 0;
-			while ((l = inputReader.readLine()) != null) {
-
-				if (startFilter == 1 && l.startsWith("#BOS " + filter[0])) {
-					System.out.println("found start " + l);
-					startFilter = 2;
-				}
-				if (endFilter == 1 && l.startsWith("#EOS " + filter[1])) {
-					System.out.println("found end " + l);
-
-					endFilter = 2;
-				}
-
-				if (startFilter == 1 || endFilter == 2)
-					continue;
-
-				if (l.startsWith("#BOS")) {
-
-					state = 2;
-					continue;
-				}
-				if (l.startsWith("#500"))
-					state = 3;
-				if (l.startsWith("#EOS"))
-					state = 4;
-				if (state < 2)
-					continue;
-
-				if (state == 4) {
-
-					ps = new PSTree();
-					ps.create(terminals, nonterminals);
-					// System.out.println("terminals "+terminals);
-					// build ps tree
-
-					int cnt = 0;
-					// ps.entries[0] =CONLLReader09.ROOT;
-					// ps.head[0]=-1;
-					int root = -1;
-					for (Line line : lines) {
-
-						/*
-						 * if (cnt==terminals) { // insert root root =cnt;
-						 * cnt++; }
-						 */
-						ps.entries[cnt] = line.form;
-						if (cnt < terminals)
-							ps.pos[cnt] = line.pos;
-						else
-							ps.entries[cnt] = line.pos;
-						ps.lemmas[cnt] = line.lemma;
-						ps.head[cnt] = line.parent == 0 ? lines.size() - 1
-								: line.parent >= 500 ? line.parent - 500 + terminals : line.parent;
-						// ps.head[cnt] =
-						// line.parent==0?lines.size()-1:line.parent>=500?line.parent-500+terminals:line.parent;
-						ps.morph[cnt] = line.morph;
-						cnt++;
-
-					}
-
-					if (root == -1)
-						root = terminals;
-					ps.head[cnt - 1] = 0; // root
-					ps.terminalCount = terminals;
-					lines.clear();
-					state = 1;
-
-					/*
-					 * for(int k=0;k<ps.head.length;k++) { if
-					 * (ps.head[k]<terminals && k!=root) { ps.head[k]=root; //
-					 * DB.println("error "+k+" "+ps.head[k]); } }
-					 */
-					// System.out.println(""+ps.toString());
-					// if (stop++ == 4)System.exit(0);
-					return ps;
-				}
-
-				StringTokenizer t = new StringTokenizer(l, "\t");
-				int tc = 0;
-				Line line = new Line();
-				lines.add(line);
-				while (t.hasMoreTokens()) {
-					String token = t.nextToken();
-					if (token.equals("\t"))
-						continue;
-					if (tc == 0) {
-						if (token.startsWith("#5") || token.startsWith("#6")) {
-							nonterminals++;
-
-						} else {
-							terminals++;
-
-							// change it back to the wrong format since the
-							// conll stuff was derived from this.
-							// if (token.equals("durchblicken"))
-							// token="durchblikken";
-							line.form = token;
-						}
-
-					} else if (tc == 1) {
-						line.lemma = token;
-					} else if (tc == 2) {
-						line.pos = token;
-					} else if (tc == 3) {
-						line.morph = token;
-					} else if (tc == 4) {
-						line.edge = token;
-					} else if (tc == 5) {
-						line.parent = Integer.parseInt(token);
-					}
-
-					if (token.length() > 0)
-						tc++;
-				}
-
-				// read till #EOS
-
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-		return ps;
-
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/lemmatizer/Evaluator.java b/dependencyParser/mate-tools/src/is2/lemmatizer/Evaluator.java
deleted file mode 100755
index cc1b423..0000000
--- a/dependencyParser/mate-tools/src/is2/lemmatizer/Evaluator.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package is2.lemmatizer;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Hashtable;
-import java.util.Map.Entry;
-
-import is2.data.SentenceData09;
-import is2.io.CONLLReader09;
-
-public class Evaluator {
-
-	public static void evaluate(String act_file, String pred_file, String format) throws Exception {
-
-		CONLLReader09 goldReader = new CONLLReader09(act_file, CONLLReader09.NO_NORMALIZE);
-		CONLLReader09 predictedReader = new CONLLReader09(pred_file, CONLLReader09.NO_NORMALIZE);
-		// predictedReader.startReading(pred_file);
-
-		Hashtable<String, Integer> errors = new Hashtable<String, Integer>();
-
-		int total = 0, corrL = 0, corrT = 0;
-		int numsent = 0;
-		SentenceData09 goldInstance = goldReader.getNext();
-		SentenceData09 predInstance = predictedReader.getNext();
-
-		while (goldInstance != null) {
-
-			int instanceLength = goldInstance.length();
-
-			if (instanceLength != predInstance.length())
-				System.out.println("Lengths do not match on sentence " + numsent);
-
-			String gold[] = goldInstance.lemmas;
-			String pred[] = predInstance.plemmas;
-
-			boolean whole = true;
-			boolean wholeL = true;
-
-			// NOTE: the first item is the root info added during
-			// nextInstance(), so we skip it.
-
-			for (int i = 1; i < instanceLength; i++) {
-				if (gold[i].toLowerCase().equals(pred[i].toLowerCase()))
-					corrT++;
-
-				if (gold[i].equals(pred[i]))
-					corrL++;
-				else {
-
-					// System.out.println("error gold:"+goldPos[i]+"
-					// pred:"+predPos[i]+" "+goldInstance.forms[i]+" snt
-					// "+numsent+" i:"+i);
-					String key = "gold: '" + gold[i] + "' pred: '" + pred[i] + "'";
-					Integer cnt = errors.get(key);
-					if (cnt == null) {
-						errors.put(key, 1);
-					} else {
-						errors.put(key, cnt + 1);
-					}
-				}
-
-			}
-			total += instanceLength - 1; // Subtract one to not score fake root
-											// token
-
-			if (whole) {
-			}
-			if (wholeL) {
-			}
-			numsent++;
-
-			goldInstance = goldReader.getNext();
-			predInstance = predictedReader.getNext();
-		}
-		ArrayList<Entry<String, Integer>> opsl = new ArrayList<Entry<String, Integer>>();
-		for (Entry<String, Integer> e : errors.entrySet()) {
-			opsl.add(e);
-		}
-
-		Collections.sort(opsl, new Comparator<Entry<String, Integer>>() {
-
-			@Override
-			public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
-
-				return o1.getValue() == o2.getValue() ? 0 : o1.getValue() > o2.getValue() ? 1 : -1;
-			}
-
-		});
-
-		/*
-		 * for(Entry<String, Integer> e : opsl) {
-		 * System.out.println(e.getKey()+"  "+e.getValue()); }
-		 */
-
-		System.out.println("Tokens: " + total + " Correct: " + corrT + " " + (float) corrT / total
-				+ " correct uppercase " + (float) corrL / total);
-	}
-
-	public static void main(String[] args) throws Exception {
-		String format = "CONLL";
-		if (args.length > 2)
-			format = args[2];
-
-		evaluate(args[0], args[1], format);
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/lemmatizer/Lemmatizer.java b/dependencyParser/mate-tools/src/is2/lemmatizer/Lemmatizer.java
deleted file mode 100755
index b15aaa7..0000000
--- a/dependencyParser/mate-tools/src/is2/lemmatizer/Lemmatizer.java
+++ /dev/null
@@ -1,543 +0,0 @@
-package is2.lemmatizer;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Map.Entry;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-import java.util.zip.ZipOutputStream;
-
-import is2.data.Cluster;
-import is2.data.F2SF;
-import is2.data.FV;
-import is2.data.Instances;
-import is2.data.InstancesTagger;
-import is2.data.Long2Int;
-import is2.data.ParametersFloat;
-import is2.data.PipeGen;
-import is2.data.SentenceData09;
-import is2.io.CONLLReader09;
-import is2.io.CONLLWriter09;
-import is2.tools.IPipe;
-import is2.tools.Tool;
-import is2.tools.Train;
-import is2.util.DB;
-import is2.util.OptionsSuper;
-
-public class Lemmatizer implements Tool, Train {
-
-	public Pipe pipe;
-	public ParametersFloat params;
-	private Long2Int li;
-
-	private boolean doUppercase = false;
-
-	private long[] vs = new long[40];
-
-	/**
-	 * Creates a lemmatizer due to the model stored in modelFileName
-	 * 
-	 * @param modelFileName
-	 *            the path and file name to a lemmatizer model
-	 */
-	public Lemmatizer(String modelFileName) {
-
-		// tell the lemmatizer the location of the model
-		try {
-			Options m_options = new Options(new String[] { "-model", modelFileName });
-			li = new Long2Int(m_options.hsize);
-
-			// initialize the lemmatizer
-			readModel(m_options);
-
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-	}
-
-	public Lemmatizer(boolean doUppercase) {
-		this.doUppercase = doUppercase;
-	}
-
-	public static void main(String[] args) throws FileNotFoundException, Exception {
-
-		Options options = new Options(args);
-		Lemmatizer lemmatizer = new Lemmatizer(options.upper);
-
-		long start = System.currentTimeMillis();
-
-		if (options.train) {
-
-			lemmatizer.li = new Long2Int(options.hsize);
-			lemmatizer.pipe = new Pipe(options, lemmatizer.li);
-
-			InstancesTagger is = lemmatizer.pipe.createInstances(options.trainfile);
-
-			DB.println("Features: " + lemmatizer.pipe.mf.size() + " Operations "
-					+ lemmatizer.pipe.mf.getFeatureCounter().get(Pipe.OPERATION));
-
-			ParametersFloat params = new ParametersFloat(lemmatizer.li.size());
-
-			lemmatizer.train(options, lemmatizer.pipe, params, is);
-
-			lemmatizer.writeModel(options, lemmatizer.pipe, params);
-		}
-
-		if (options.test) {
-
-			lemmatizer.readModel(options);
-
-			lemmatizer.out(options, lemmatizer.pipe, lemmatizer.params);
-		}
-
-		System.out.println();
-
-		if (options.eval) {
-			System.out.println("\nEVALUATION PERFORMANCE:");
-			Evaluator.evaluate(options.goldfile, options.outfile, options.format);
-		}
-		long end = System.currentTimeMillis();
-		System.out.println("used time " + ((float) ((end - start) / 100) / 10));
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.tools.Train#writeModel(is2.util.OptionsSuper, is2.tools.IPipe,
-	 * is2.data.ParametersFloat)
-	 */
-	@Override
-	public void writeModel(OptionsSuper options, IPipe pipe, ParametersFloat params) {
-		try {
-			// store the model
-			ZipOutputStream zos = new ZipOutputStream(
-					new BufferedOutputStream(new FileOutputStream(options.modelName)));
-			zos.putNextEntry(new ZipEntry("data"));
-			DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(zos));
-
-			MFO.writeData(dos);
-
-			dos.flush();
-			params.write(dos);
-
-			pipe.write(dos);
-
-			dos.writeBoolean(this.doUppercase);
-
-			dos.flush();
-			dos.close();
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	@Override
-	public void readModel(OptionsSuper options) {
-
-		try {
-
-			// load the model
-			ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(options.modelName)));
-			zis.getNextEntry();
-			DataInputStream dis = new DataInputStream(new BufferedInputStream(zis));
-
-			MFO mf = new MFO();
-			mf.read(dis);
-			params = new ParametersFloat(0);
-			params.read(dis);
-			li = new Long2Int(params.size());
-			pipe = new Pipe(options, li);
-			pipe.mf = mf;
-
-			pipe.initFeatures();
-			pipe.initValues();
-
-			pipe.readMap(dis);
-
-			for (Entry<String, Integer> e : MFO.getFeatureSet().get(Pipe.OPERATION).entrySet()) {
-				this.pipe.types[e.getValue()] = e.getKey();
-				// System.out.println("set pos "+e.getKey());
-			}
-
-			pipe.cl = new Cluster(dis);
-
-			if (dis.available() > 0)
-				this.doUppercase = dis.readBoolean();
-
-			dis.close();
-			DB.println("Loading data finished. ");
-
-			DB.println("number of params  " + params.parameters.length);
-			DB.println("number of classes " + pipe.types.length);
-
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-	}
-
-	/**
-	 * Do the training
-	 * 
-	 * @param instanceLengths
-	 * @param options
-	 * @param pipe
-	 * @param params
-	 * @param li
-	 * @throws IOException
-	 * @throws InterruptedException
-	 * @throws ClassNotFoundException
-	 */
-	@Override
-	public void train(OptionsSuper options, IPipe p, ParametersFloat params, Instances ist) {
-
-		InstancesTagger is = (InstancesTagger) ist;
-
-		int i = 0, del = 0;
-		FV g = new FV(), f = new FV();
-
-		int LC = this.pipe.types.length + 1, UC = LC + 1;
-
-		String wds[] = MFO.reverse(MFO.getFeatureSet().get(PipeGen.WORD));
-
-		F2SF fs = params.getFV();
-		double upd = 0;
-
-		for (i = 0; i < options.numIters; i++) {
-
-			System.out.print("Iteration " + i + ": ");
-
-			long start = System.currentTimeMillis();
-			int numInstances = is.size();
-			int correct = 0, count = 0;
-
-			long last = System.currentTimeMillis();
-			int wrongOp = 0, correctOp = 0, correctUC = 0, wrongUC = 0;
-
-			HashMap<String, Integer> map = new HashMap<String, Integer>();
-
-			for (int n = 0; n < numInstances; n++) {
-
-				if ((n + 1) % 500 == 0)
-					del = PipeGen.outValueErr(n + 1, count - correct, (float) correct / (float) count, del, last, upd);
-
-				upd = options.numIters * numInstances - (numInstances * i + (n + 1)) + 1;
-
-				for (int k = 0; k < is.length(n); k++) {
-
-					double best = -1000;
-					String bestOp = "";
-
-					count++;
-					pipe.addCoreFeatures(is, n, k, 0, wds[is.forms[n][k]], vs);
-
-					String lemma = pipe.opse.get(wds[is.forms[n][k]].toLowerCase());
-
-					// predict
-					if (lemma == null)
-						for (int t = 0; t < pipe.types.length; t++) {
-
-							fs.clear();
-							for (int l = vs.length - 1; l >= 0; l--)
-								if (vs[l] > 0)
-									fs.add(li.l2i(vs[l] + (t * Pipe.s_type)));
-
-							float score = (float) fs.getScore();
-							if (score > best) {
-								bestOp = pipe.types[t];
-								best = score;
-							}
-						}
-
-					if (doUppercase) {
-						fs.clear();
-						for (int l = vs.length - 1; l >= 0; l--)
-							if (vs[l] > 0)
-								fs.add(li.l2i(vs[l] + (LC * Pipe.s_type)));
-
-						int correctOP = -1, selectedOP = -1;
-						if (wds[is.glemmas[n][k]].length() > 0 && Character.isUpperCase(wds[is.glemmas[n][k]].charAt(0))
-								&& fs.score > 0) {
-
-							correctOP = UC;
-							selectedOP = LC;
-						} else if (wds[is.glemmas[n][k]].length() > 0
-								&& Character.isLowerCase(wds[is.glemmas[n][k]].charAt(0)) && fs.score <= 0) {
-
-							correctOP = LC;
-							selectedOP = UC;
-						}
-
-						if (correctOP != -1 && wds[is.glemmas[n][k]].length() > 0) {
-
-							wrongUC++;
-							f.clear();
-							for (int l = vs.length - 1; l >= 0; l--)
-								if (vs[l] > 0)
-									f.add(li.l2i(vs[l] + (selectedOP * Pipe.s_type)));
-
-							g.clear();
-							for (int l = vs.length - 1; l >= 0; l--)
-								if (vs[l] > 0)
-									g.add(li.l2i(vs[l] + (correctOP * Pipe.s_type)));
-
-							double lam_dist = params.getScore(g) - params.getScore(f);// f
-							double loss = 1 - lam_dist;
-
-							FV dist = g.getDistVector(f);
-							dist.update(params.parameters, params.total, params.update(dist, loss), upd, false);
-
-						} else {
-							correctUC++;
-						}
-					}
-					if (lemma != null) {
-						correct++;
-						correctOp++;
-						continue;
-					}
-
-					String op = Pipe.getOperation(is, n, k, wds);
-					if (op.equals(bestOp)) {
-						correct++;
-						correctOp++;
-						continue;
-					}
-					wrongOp++;
-
-					f.clear();
-					int bop = pipe.mf.getValue(Pipe.OPERATION, bestOp);
-					for (int r = vs.length - 1; r >= 0; r--)
-						if (vs[r] > 0)
-							f.add(li.l2i(vs[r] + (bop * Pipe.s_type)));
-
-					g.clear();
-					int gop = pipe.mf.getValue(Pipe.OPERATION, op);
-					for (int r = vs.length - 1; r >= 0; r--)
-						if (vs[r] > 0)
-							g.add(li.l2i(vs[r] + (gop * Pipe.s_type)));
-					double lam_dist = params.getScore(g) - params.getScore(f);// f
-
-					double loss = 1 - lam_dist;
-
-					FV dist = g.getDistVector(f);
-
-					dist.update(params.parameters, params.total, params.update(dist, loss), upd, false); // 0.05
-
-				}
-
-			}
-			ArrayList<Entry<String, Integer>> opsl = new ArrayList<Entry<String, Integer>>();
-			for (Entry<String, Integer> e : map.entrySet()) {
-				if (e.getValue() > 1) {
-					opsl.add(e);
-				}
-			}
-
-			Collections.sort(opsl, new Comparator<Entry<String, Integer>>() {
-				@Override
-				public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
-
-					return o1.getValue() == o2.getValue() ? 0 : o1.getValue() > o2.getValue() ? 1 : -1;
-				}
-			});
-
-			if (opsl.size() > 0)
-				System.out.println();
-			for (Entry<String, Integer> e : opsl) {
-				System.out.println(e.getKey() + "  " + e.getValue());
-			}
-			map.clear();
-
-			del = PipeGen.outValueErr(numInstances, count - correct, (float) correct / (float) count, del, last, upd,
-					"time " + (System.currentTimeMillis() - start) + " corr/wrong " + correctOp + " " + wrongOp
-							+ " uppercase corr/wrong  " + correctUC + " " + wrongUC);
-			del = 0;
-			System.out.println();
-		}
-
-		params.average(i * is.size());
-
-	}
-
-	/**
-	 * Do the work
-	 * 
-	 * @param options
-	 * @param pipe
-	 * @param params
-	 * @throws IOException
-	 */
-	@Override
-	public void out(OptionsSuper options, IPipe pipe, ParametersFloat params) {
-
-		long start = System.currentTimeMillis();
-
-		CONLLReader09 depReader = new CONLLReader09(options.testfile, CONLLReader09.NO_NORMALIZE);
-		depReader.setInputFormat(options.formatTask);
-		CONLLWriter09 depWriter = new CONLLWriter09(options.outfile);
-		depWriter.setOutputFormat(options.formatTask);
-
-		System.out.print("Processing Sentence: ");
-
-		int cnt = 0;
-		int del = 0;
-
-		try {
-
-			while (true) {
-
-				InstancesTagger is = new InstancesTagger();
-
-				is.init(1, new MFO());
-				SentenceData09 instance = depReader.getNext(is);// pipe.nextInstance(null,
-																// depReader);
-
-				if (instance == null)
-					break;
-				is.fillChars(instance, 0, Pipe._CEND);
-				cnt++;
-				SentenceData09 i09 = lemmatize(is, instance, this.li);
-
-				if (options.normalize)
-					for (int k = 0; k < i09.length(); k++) {
-						boolean save = depReader.normalizeOn;
-						depReader.normalizeOn = true;
-						i09.plemmas[k] = depReader.normalize(i09.plemmas[k]);
-						depReader.normalizeOn = save;
-					}
-
-				if (options.overwritegold)
-					i09.lemmas = i09.plemmas;
-
-				depWriter.write(i09);
-
-				if (cnt % 100 == 0)
-					del = PipeGen.outValue(cnt, del);
-
-			}
-			depWriter.finishWriting();
-			del = PipeGen.outValue(cnt, del);
-			long end = System.currentTimeMillis();
-
-			System.out.println(PipeGen.getSecondsPerInstnace(cnt, (end - start)));
-			System.out.println(PipeGen.getUsedTime(end - start));
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	private SentenceData09 lemmatize(InstancesTagger is, SentenceData09 instance, Long2Int li) {
-
-		int LC = pipe.types.length + 1;
-
-		is.feats[0] = new short[instance.length()][11];
-
-		is.fillChars(instance, 0, Pipe._CEND);
-
-		int length = instance.length();
-
-		F2SF fs = new F2SF(params.parameters);
-
-		for (int w1 = 0; w1 < length; w1++) {
-			instance.plemmas[w1] = "_";
-			pipe.addCoreFeatures(is, 0, w1, 0, instance.forms[w1], vs);
-
-			String f = null;
-			if (is.forms[0][w1] != -1) {
-				f = pipe.opse.get(instance.forms[w1].toLowerCase());
-				if (f != null) {
-					instance.plemmas[w1] = f;
-				}
-			}
-			double best = -1000.0;
-			int bestOp = 0;
-
-			for (int t = 0; t < pipe.types.length; t++) {
-
-				fs.clear();
-				for (int l = vs.length - 1; l >= 0; l--)
-					if (vs[l] > 0)
-						fs.add(li.l2i(vs[l] + (t * Pipe.s_type)));
-
-				if (fs.score >= best) {
-					best = fs.score;
-					bestOp = t;
-				}
-			}
-			// instance.ppos[w1]=""+bestOp;
-			if (f == null)
-				instance.plemmas[w1] = StringEdit.change(
-						(doUppercase ? instance.forms[w1] : instance.forms[w1].toLowerCase()), pipe.types[bestOp]);
-
-			// check for empty string
-			if (instance.plemmas[w1].length() == 0)
-				instance.plemmas[w1] = "_";
-
-			if (doUppercase) {
-				fs.clear();
-				for (int l = vs.length - 1; l >= 0; l--)
-					if (vs[l] > 0)
-						fs.add(li.l2i(vs[l] + (LC * Pipe.s_type)));
-
-				try {
-
-					if (fs.score <= 0 && instance.plemmas[w1].length() > 1) {
-						instance.plemmas[w1] = Character.toUpperCase(instance.plemmas[w1].charAt(0))
-								+ instance.plemmas[w1].substring(1);
-					} else if (fs.score <= 0 && instance.plemmas[w1].length() > 0) {
-						instance.plemmas[w1] = String.valueOf(Character.toUpperCase(instance.plemmas[w1].charAt(0)));
-					} else if (fs.score > 0) {
-						instance.plemmas[w1] = instance.plemmas[w1].toLowerCase();
-					}
-
-				} catch (Exception e) {
-					e.printStackTrace();
-					// System.out.println("error "+pipe.types[bestOp]+"
-					// "+instance.forms[w1]);
-				}
-			}
-		}
-
-		SentenceData09 i09 = new SentenceData09(instance);
-		i09.createSemantic(instance);
-		return i09;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.tools.Tool#apply(is2.data.SentenceData09)
-	 */
-	@Override
-	public SentenceData09 apply(SentenceData09 snt) {
-		InstancesTagger is = new InstancesTagger();
-
-		// be robust
-		if (snt.length() == 0)
-			return snt;
-
-		SentenceData09 it = new SentenceData09();
-		it.createWithRoot(snt);
-
-		is.init(1, new MFO());
-		is.createInstance09(it.length());
-		is.fillChars(it, 0, Pipe._CEND);
-
-		for (int j = 0; j < it.length(); j++)
-			is.setForm(0, j, it.forms[j]);
-
-		return lemmatize(is, it, li);
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/lemmatizer/MFO.java b/dependencyParser/mate-tools/src/is2/lemmatizer/MFO.java
deleted file mode 100755
index 305e827..0000000
--- a/dependencyParser/mate-tools/src/is2/lemmatizer/MFO.java
+++ /dev/null
@@ -1,246 +0,0 @@
-package is2.lemmatizer;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map.Entry;
-
-import is2.data.IEncoderPlus;
-import is2.util.DB;
-
-/**
- * Map Features, do not map long to integer
- *
- * @author Bernd Bohnet, 20.09.2009
- */
-
-final public class MFO implements IEncoderPlus {
-
-	/** The features and its values */
-	static private final HashMap<String, HashMap<String, Integer>> m_featureSets = new HashMap<String, HashMap<String, Integer>>();
-
-	/** The feature class and the number of values */
-	static private final HashMap<String, Integer> m_featureCounters = new HashMap<String, Integer>();
-
-	/** The number of bits needed to encode a feature */
-	static final HashMap<String, Integer> m_featureBits = new HashMap<String, Integer>();
-
-	/** Integer counter for long2int */
-	static private int count = 0;
-
-	/** Stop growing */
-	public boolean stop = false;
-
-	final public static String NONE = "<None>";
-
-	public MFO() {
-	}
-
-	public int size() {
-		return count;
-	}
-
-	/**
-	 * Register an attribute class, if it not exists and add a possible value
-	 * 
-	 * @param type
-	 * @param type2
-	 */
-	@Override
-	final public int register(String a, String v) {
-
-		HashMap<String, Integer> fs = getFeatureSet().get(a);
-		if (fs == null) {
-			fs = new HashMap<String, Integer>();
-			getFeatureSet().put(a, fs);
-			fs.put(NONE, 0);
-			getFeatureCounter().put(a, 1);
-		}
-		Integer c = getFeatureCounter().get(a);
-
-		Integer i = fs.get(v);
-		if (i == null) {
-			fs.put(v, c);
-			c++;
-			getFeatureCounter().put(a, c);
-			return c - 1;
-		} else
-			return i;
-	}
-
-	/**
-	 * Calculates the number of bits needed to encode a feature
-	 */
-	public void calculateBits() {
-
-		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
-			int bits = (int) Math.ceil((Math.log(e.getValue() + 1) / Math.log(2)));
-			m_featureBits.put(e.getKey(), bits);
-		}
-
-		// System.out.println("total number of needed bits "+total);
-	}
-
-	@Override
-	public String toString() {
-
-		StringBuffer content = new StringBuffer();
-		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
-			content.append(e.getKey() + " " + e.getValue());
-			content.append(':');
-			// HashMap<String,Integer> vs = getFeatureSet().get(e.getKey());
-			content.append(getFeatureBits(e.getKey()));
-
-			/*
-			 * if (vs.size()<120) for(Entry<String,Integer> e2 : vs.entrySet())
-			 * { content.append(e2.getKey()+" ("+e2.getValue()+") "); }
-			 */
-			content.append('\n');
-
-		}
-		return content.toString();
-	}
-
-	static final public short getFeatureBits(String a) {
-		if (m_featureBits.get(a) == null)
-			return 0;
-		return (short) m_featureBits.get(a).intValue();
-	}
-
-	/**
-	 * Get the integer place holder of the string value v of the type a
-	 *
-	 * @param t
-	 *            the type
-	 * @param v
-	 *            the value
-	 * @return the integer place holder of v
-	 */
-	@Override
-	final public int getValue(String t, String v) {
-
-		if (m_featureSets.get(t) == null)
-			return -1;
-		Integer vi = m_featureSets.get(t).get(v);
-		if (vi == null)
-			return -1; // stop &&
-		return vi.intValue();
-	}
-
-	/**
-	 * Static version of getValue
-	 * 
-	 * @see getValue
-	 */
-	static final public int getValueS(String a, String v) {
-
-		if (m_featureSets.get(a) == null)
-			return -1;
-		Integer vi = m_featureSets.get(a).get(v);
-		if (vi == null)
-			return -1; // stop &&
-		return vi.intValue();
-	}
-
-	public int hasValue(String a, String v) {
-
-		Integer vi = m_featureSets.get(a).get(v);
-		if (vi == null)
-			return -1;
-		return vi.intValue();
-	}
-
-	public static String printBits(int k) {
-		StringBuffer s = new StringBuffer();
-		for (int i = 0; i < 31; i++) {
-			s.append((k & 0x00000001) == 1 ? '1' : '0');
-			k = k >> 1;
-
-		}
-		s.reverse();
-		return s.toString();
-	}
-
-	/**
-	 * Maps a long to a integer value. This is very useful to save memory for
-	 * sparse data long values
-	 * 
-	 * @param l
-	 * @return the integer
-	 */
-	static public int misses = 0;
-	static public int good = 0;
-
-	/**
-	 * Write the data
-	 * 
-	 * @param dos
-	 * @throws IOException
-	 */
-	static public void writeData(DataOutputStream dos) throws IOException {
-		dos.writeInt(getFeatureSet().size());
-		// DB.println("write"+getFeatureSet().size());
-		for (Entry<String, HashMap<String, Integer>> e : getFeatureSet().entrySet()) {
-			dos.writeUTF(e.getKey());
-			dos.writeInt(e.getValue().size());
-
-			for (Entry<String, Integer> e2 : e.getValue().entrySet()) {
-
-				if (e2.getKey() == null)
-					DB.println("key " + e2.getKey() + " value " + e2.getValue() + " e -key " + e.getKey());
-				dos.writeUTF(e2.getKey());
-				dos.writeInt(e2.getValue());
-
-			}
-
-		}
-	}
-
-	public void read(DataInputStream din) throws IOException {
-
-		int size = din.readInt();
-		for (int i = 0; i < size; i++) {
-			String k = din.readUTF();
-			int size2 = din.readInt();
-
-			HashMap<String, Integer> h = new HashMap<String, Integer>();
-			getFeatureSet().put(k, h);
-			for (int j = 0; j < size2; j++) {
-				h.put(din.readUTF(), din.readInt());
-			}
-			getFeatureCounter().put(k, size2);
-		}
-
-		count = size;
-		// stop();
-		calculateBits();
-	}
-
-	/**
-	 * Clear the data
-	 */
-	static public void clearData() {
-		getFeatureSet().clear();
-		m_featureBits.clear();
-		getFeatureSet().clear();
-	}
-
-	@Override
-	public HashMap<String, Integer> getFeatureCounter() {
-		return m_featureCounters;
-	}
-
-	static public HashMap<String, HashMap<String, Integer>> getFeatureSet() {
-		return m_featureSets;
-	}
-
-	static public String[] reverse(HashMap<String, Integer> v) {
-		String[] set = new String[v.size()];
-		for (Entry<String, Integer> e : v.entrySet()) {
-			set[e.getValue()] = e.getKey();
-		}
-		return set;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/lemmatizer/Options.java b/dependencyParser/mate-tools/src/is2/lemmatizer/Options.java
deleted file mode 100755
index 30c2567..0000000
--- a/dependencyParser/mate-tools/src/is2/lemmatizer/Options.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package is2.lemmatizer;
-
-import java.io.File;
-import java.io.IOException;
-
-import is2.util.OptionsSuper;
-
-public final class Options extends OptionsSuper {
-
-	public Options(String[] args) throws IOException {
-
-		for (int i = 0; i < args.length; i++) {
-
-			if (args[i].equals("--help"))
-				explain();
-
-			if (args[i].equals("-normalize")) {
-				normalize = Boolean.parseBoolean(args[++i]);
-			} else if (args[i].equals("-features")) {
-				features = args[i + 1];
-				i++;
-			} else if (args[i].equals("-hsize")) {
-				hsize = Integer.parseInt(args[i + 1]);
-				i++;
-			} else if (args[i].equals("-len")) {
-				maxLen = Integer.parseInt(args[i + 1]);
-				i++;
-			} else if (args[i].equals("-tmp")) {
-				tmp = args[i + 1];
-				i++;
-			} else if (args[i].equals("-uc")) {
-				upper = true;
-				System.out.println("set uppercase " + upper);
-
-			} else
-				super.addOption(args, i);
-
-		}
-
-		if (trainfile != null) {
-
-			if (tmp != null)
-				trainforest = File.createTempFile("train", ".tmp", new File(tmp));
-			else
-				trainforest = File.createTempFile("train", ".tmp"); // ,new
-																	// File("F:\\")
-			trainforest.deleteOnExit();
-		}
-
-	}
-
-	private void explain() {
-		System.out.println("Usage: ");
-		System.out.println("java -class mate.jar is2.lemmatizer.Lemmatizer [Options]");
-		System.out.println();
-		System.out.println("Options:");
-		System.out.println("");
-		System.out.println(" -train  <file>    the corpus a model is trained on; default " + this.trainfile);
-		System.out.println(" -test   <file>    the input corpus for testing; default " + this.testfile);
-		System.out.println(" -out    <file>    the output corpus (result) of a test run; default " + this.outfile);
-		System.out.println(" -model  <file>    the parsing model for traing the model is stored in the files");
-		System.out.println(
-				"                   and for parsing the model is load from this file; default " + this.modelName);
-		System.out.println(
-				" -i      <number>  the number of training iterations; good numbers are 10 for smaller corpora and 6 for bigger; default "
-						+ this.numIters);
-		System.out.println(" -count  <number>  the n first sentences of the corpus are take for the training default "
-				+ this.count);
-
-		System.exit(0);
-	}
-}
diff --git a/dependencyParser/mate-tools/src/is2/lemmatizer/Pipe.java b/dependencyParser/mate-tools/src/is2/lemmatizer/Pipe.java
deleted file mode 100755
index c8b4bba..0000000
--- a/dependencyParser/mate-tools/src/is2/lemmatizer/Pipe.java
+++ /dev/null
@@ -1,671 +0,0 @@
-package is2.lemmatizer;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map.Entry;
-
-import is2.data.Cluster;
-import is2.data.D4;
-import is2.data.Instances;
-import is2.data.InstancesTagger;
-import is2.data.Long2Int;
-import is2.data.PipeGen;
-import is2.data.SentenceData09;
-import is2.io.CONLLReader09;
-import is2.tools.IPipe;
-import is2.util.DB;
-import is2.util.OptionsSuper;
-
-final public class Pipe extends PipeGen implements IPipe {
-
-	private static final int _MIN_WORDS_MAPPED_BY_SCRIPT = 1;
-	private static final int _MIN_OCCURENT_FOR_SCRIPT_USE = 4;
-
-	private static final String _F0 = "F0";
-	private static final String _F1 = "F1", _F2 = "F2", _F3 = "F3", _F4 = "F4", _F5 = "F5", _F6 = "F6", _F7 = "F7",
-			_F8 = "F8", _F9 = "F9", _F10 = "F10";
-	private static final String _F11 = "F11", _F12 = "F12", _F13 = "F13", _F14 = "F14", _F15 = "F15", _F16 = "F16",
-			_F17 = "F17", _F18 = "F18", _F19 = "F19", _F20 = "F20";
-	private static final String _F21 = "F21", _F22 = "F22", _F23 = "F23", _F24 = "F24", _F25 = "F25", _F26 = "F26",
-			_F27 = "F27", _F28 = "F28", _F29 = "F29", _F30 = "F30";
-	private static final String _F31 = "F31", _F32 = "F32", _F33 = "F33", _F34 = "F34", _F35 = "F35", _F36 = "F36",
-			_F37 = "F37", _F38 = "F38";
-	private static int _f0, _f1, _f4, _f5, _f6, _f7, _f8, _f9, _f10, _f11, _f12, _f13, _f14, _f15, _f16, _f17, _f18,
-			_f19;
-	private static int _f21, _f27, _f28, _f31, _f32, _f33;
-	public static int _CEND, _swrd, _ewrd;
-
-	public static final String MID = "MID", END = "END", STR = "STR", OPERATION = "OP";
-
-	private CONLLReader09 depReader;
-
-	public HashMap<String, String> opse = new HashMap<String, String>();
-
-	public String[] types;
-
-	public MFO mf = new MFO();
-	private D4 z, x;
-
-	Cluster cl;
-	OptionsSuper options;
-	Long2Int li;
-
-	public Pipe(OptionsSuper options2, Long2Int l) {
-
-		options = options2;
-		li = l;
-	}
-
-	@Override
-	public InstancesTagger createInstances(String file) {
-
-		InstancesTagger is = new InstancesTagger();
-
-		depReader = new CONLLReader09(CONLLReader09.NO_NORMALIZE);
-
-		depReader.startReading(file);
-		mf.register(REL, "<root-type>");
-		mf.register(POS, "<root-POS>");
-
-		System.out.print("Registering feature parts ");
-		HashMap<String, Integer> ops = new HashMap<String, Integer>();
-		HashMap<String, HashSet<String>> op2form = new HashMap<String, HashSet<String>>();
-		int ic = 0;
-		int del = 0;
-		HashSet<String> rm = new HashSet<String>();
-
-		while (true) {
-			SentenceData09 instance1 = depReader.getNext();
-			if (instance1 == null)
-				break;
-			ic++;
-			if (ic % 100 == 0) {
-				del = outValue(ic, del);
-			}
-
-			String[] labs1 = instance1.labels;
-			for (String element : labs1) {
-				// typeAlphabet.lookupIndex(labs1[i1]);
-				mf.register(REL, element);
-			}
-
-			String[] w = instance1.forms;
-			for (int i1 = 0; i1 < w.length; i1++) {
-				// saw the first time?
-				if (mf.getValue(WORD, w[i1].toLowerCase()) == -1)
-					opse.put(instance1.forms[i1].toLowerCase(), instance1.lemmas[i1]);
-
-				mf.register(WORD, w[i1].toLowerCase());
-			}
-			for (String element : w)
-				mf.register(WORD, element);
-
-			w = instance1.lemmas;
-			for (String element : w)
-				mf.register(WORD, element);
-			for (String element : w)
-				mf.register(WORD, element.toLowerCase());
-
-			w = instance1.plemmas;
-			for (String element : w)
-				mf.register(WORD, element);
-			for (String element : w)
-				mf.register(WORD, element.toLowerCase());
-
-			for (String element : w)
-				registerChars(CHAR, element);
-
-			w = instance1.ppos;
-			for (String element : w)
-				mf.register(POS, element);
-
-			w = instance1.gpos;
-			for (String element : w)
-				mf.register(POS, element);
-
-			for (int i1 = 1; i1 < w.length; i1++) {
-				String op = getOperation(instance1, i1);
-				if (ops.get(op) == null)
-					ops.put(op, 1);
-				else {
-					ops.put(op, (ops.get(op) + 1));
-					if (ops.get(op) > 4)
-						rm.add(instance1.forms[i1].toLowerCase());
-				}
-
-				HashSet<String> forms = op2form.get(op);
-				if (forms == null) {
-					forms = new HashSet<String>();
-					op2form.put(op, forms);
-				}
-				forms.add(instance1.forms[i1].toLowerCase());
-
-			}
-
-		}
-
-		int countFreqSingleMappings = 0;
-
-		int sc = 0;
-		ArrayList<Entry<String, Integer>> opsl = new ArrayList<Entry<String, Integer>>();
-		for (Entry<String, Integer> e : ops.entrySet()) {
-
-			// do not use scripts for infrequent cases or frequent single
-			// mappings (der -> die)
-			if (e.getValue() > _MIN_OCCURENT_FOR_SCRIPT_USE
-					&& op2form.get(e.getKey()).size() > _MIN_WORDS_MAPPED_BY_SCRIPT) {
-				mf.register(OPERATION, e.getKey());
-				sc++;
-				opsl.add(e);
-			} else {
-				// do not remove the infrequent cases
-				rm.removeAll(op2form.get(e.getKey()));
-
-				if (op2form.get(e.getKey()).size() <= 1)
-					countFreqSingleMappings += op2form.get(e.getKey()).size();
-			}
-		}
-		for (String k : rm) {
-			opse.remove(k);
-		}
-
-		Collections.sort(opsl, new Comparator<Entry<String, Integer>>() {
-
-			@Override
-			public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
-
-				return o1.getValue() == o2.getValue() ? 0 : o1.getValue() > o2.getValue() ? 1 : -1;
-			}
-		});
-
-		/*
-		 * for(Entry<String, Integer> e : opsl) {
-		 * System.out.println(e.getKey()+"  "+e.getValue()); }
-		 */
-
-		if (options.clusterFile == null)
-			cl = new Cluster();
-		else
-			cl = new Cluster(options.clusterFile, mf, 6);
-
-		System.out.println("\nfound scripts " + ops.size() + " used scripts " + sc);
-		System.out.println("found mappings of single words " + countFreqSingleMappings);
-		System.out.println("use word maps instead of scripts " + this.opse.size());
-		// System.out.println(" "+opse);
-		System.out.println("" + mf.toString());
-
-		initFeatures();
-
-		mf.calculateBits();
-		initValues();
-
-		depReader.startReading(options.trainfile);
-
-		int i = 0;
-		long start1 = System.currentTimeMillis();
-
-		System.out.print("Creating Features: ");
-		is.init(ic, mf);
-		del = 0;
-		while (true) {
-			try {
-				if (i % 100 == 0) {
-					del = outValue(i, del);
-				}
-				SentenceData09 instance1 = depReader.getNext(is);
-				if (instance1 == null)
-					break;
-
-				is.fillChars(instance1, i, _CEND);
-
-				if (i > options.count)
-					break;
-
-				i++;
-			} catch (Exception e) {
-				DB.println("error in sentnence " + i);
-				e.printStackTrace();
-			}
-		}
-		long end1 = System.currentTimeMillis();
-		System.gc();
-		long mem2 = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
-		System.out.print("  time " + (end1 - start1) + " mem " + (mem2 / 1024) + " kb");
-
-		types = new String[mf.getFeatureCounter().get(OPERATION)];
-
-		for (Entry<String, Integer> e : MFO.getFeatureSet().get(OPERATION).entrySet()) {
-			types[e.getValue()] = e.getKey();
-			// System.out.println("set pos "+e.getKey());
-		}
-
-		System.out.println("Num Features: " + mf.size());
-
-		return is;
-
-	}
-
-	/**
-	 * @param is
-	 * @param n
-	 * @param k
-	 * @param wds
-	 * @return
-	 */
-	public static String getOperation(Instances is, int n, int k, String[] wds) {
-
-		String form = wds[is.forms[n][k]];
-		String olemma = wds[is.glemmas[n][k]];
-
-		String s = new StringBuffer(form.toLowerCase()).reverse().toString();
-		String t = new StringBuffer(olemma.toLowerCase()).reverse().toString();
-
-		return getOperation2(s, t);
-	}
-
-	public static String getOperation(SentenceData09 instance1, int i1) {
-		String s = new StringBuffer(instance1.forms[i1].toLowerCase()).reverse().toString();
-		String t = new StringBuffer(instance1.lemmas[i1].toLowerCase()).reverse().toString();
-
-		return getOperation2(s, t);
-	}
-
-	public static String getOperation(String si, String ti) {
-		String s = new StringBuffer(si.toLowerCase()).reverse().toString();
-		String t = new StringBuffer(ti.toLowerCase()).reverse().toString();
-
-		return getOperation2(s, t);
-	}
-
-	private static String getOperation2(String s, String t) {
-		StringBuffer po = new StringBuffer();
-		String op;
-		if (!s.equals(t)) {
-
-			int[][] d = StringEdit.LD(s, t);
-			StringEdit.searchPath(s, t, d, po, false);
-			op = po.toString();
-
-		} else
-			op = "0"; // do nothing
-		return op;
-	}
-
-	private void registerChars(String type, String word) {
-		for (int i = 0; i < word.length(); i++)
-			mf.register(type, Character.toString(word.charAt(i)));
-	}
-
-	@Override
-	public void initValues() {
-
-		z = new D4(li);
-
-		x = new D4(li);
-		x.a0 = s_type;
-
-		s_pos = mf.getFeatureCounter().get(POS).intValue();// mf.getFeatureBits(POS);
-		s_word = mf.getFeatureCounter().get(WORD);
-		s_type = mf.getFeatureCounter().get(TYPE).intValue();// mf.getFeatureBits(TYPE);
-		s_char = mf.getFeatureCounter().get(CHAR).intValue();// mf.getFeatureBits(CHAR);
-		s_oper = mf.getFeatureCounter().get(OPERATION).intValue();// mf.getFeatureBits(OPERATION);
-
-		types = new String[mf.getFeatureCounter().get(Pipe.OPERATION)];
-		for (Entry<String, Integer> e : MFO.getFeatureSet().get(Pipe.OPERATION).entrySet())
-			types[e.getValue()] = e.getKey();
-
-		// wds = new String[mf.getFeatureCounter().get(Pipe.WORD)];
-		// for(Entry<String,Integer> e :
-		// mf.getFeatureSet().get(Pipe.WORD).entrySet()) wds[e.getValue()] =
-		// e.getKey();
-
-		z.a0 = s_type;
-		z.a1 = s_oper;
-		z.a2 = s_char;
-		z.a3 = s_char;
-		z.a4 = s_char;
-		z.a5 = s_char;
-		z.a6 = s_char;
-		z.a7 = s_char;
-		x.a0 = s_type;
-		x.a1 = s_oper;
-		x.a2 = s_word;
-		x.a3 = s_word;
-		x.a4 = s_word;
-		x.a5 = s_char;
-		x.a6 = s_char;
-		x.a7 = s_char;
-
-	}
-
-	public static int s_pos, s_word, s_type, s_dir, s_dist, s_char, s_oper;
-
-	/**
-	 * Initialize the features.
-	 * 
-	 * @param maxFeatures
-	 */
-	@Override
-	public void initFeatures() {
-
-		for (int k = 0; k < 50; k++) {
-			mf.register(TYPE, "F" + k);
-		}
-
-		_f0 = mf.register(TYPE, _F0);
-		_f1 = mf.register(TYPE, _F1);
-		mf.register(TYPE, _F2);
-		mf.register(TYPE, _F3);
-		_f4 = mf.register(TYPE, _F4);
-		_f5 = mf.register(TYPE, _F5);
-		_f6 = mf.register(TYPE, _F6);
-		_f7 = mf.register(TYPE, _F7);
-		_f8 = mf.register(TYPE, _F8);
-		_f9 = mf.register(TYPE, _F9);
-		_f10 = mf.register(TYPE, _F10);
-		_f11 = mf.register(TYPE, _F11);
-		_f12 = mf.register(TYPE, _F12);
-		_f13 = mf.register(TYPE, _F13);
-		_f14 = mf.register(TYPE, _F14);
-		_f15 = mf.register(TYPE, _F15);
-		_f16 = mf.register(TYPE, _F16);
-		_f17 = mf.register(TYPE, _F17);
-		_f18 = mf.register(TYPE, _F18);
-		_f19 = mf.register(TYPE, _F19);
-		mf.register(TYPE, _F20);
-		_f21 = mf.register(TYPE, _F21);
-		mf.register(TYPE, _F22);
-		mf.register(TYPE, _F23);
-		mf.register(TYPE, _F24);
-		mf.register(TYPE, _F25);
-		mf.register(TYPE, _F26);
-		_f27 = mf.register(TYPE, _F27);
-		_f28 = mf.register(TYPE, _F28);
-		mf.register(TYPE, _F29);
-		mf.register(TYPE, _F30);
-
-		_f31 = mf.register(TYPE, _F31);
-		_f32 = mf.register(TYPE, _F32);
-		_f33 = mf.register(TYPE, _F33);
-		mf.register(TYPE, _F34);
-
-		mf.register(TYPE, _F35);
-		mf.register(TYPE, _F36);
-		mf.register(TYPE, _F37);
-		mf.register(TYPE, _F38);
-
-		mf.register(POS, MID);
-		mf.register(POS, STR);
-		mf.register(POS, END);
-		mf.register(TYPE, CHAR);
-
-		_swrd = mf.register(WORD, STR);
-		_ewrd = mf.register(WORD, END);
-
-		_CEND = mf.register(CHAR, END);
-
-	}
-
-	final public void addCoreFeatures(InstancesTagger is, int ic, int i, int oper, String form, long[] f) {
-
-		for (int l = f.length - 1; l >= 0; l--)
-			f[l] = 0;
-
-		int formi = is.forms[ic][i];
-		int wl = is.chars[ic][i][11];// .forms[i].length();
-
-		int position = 1 + (i < 3 ? i : 3);
-
-		int c0 = is.chars[ic][i][0], c1 = is.chars[ic][i][1], c2 = is.chars[ic][i][2], c3 = is.chars[ic][i][3],
-				c4 = is.chars[ic][i][4];
-		int e0 = is.chars[ic][i][6], e1 = is.chars[ic][i][7], e2 = is.chars[ic][i][8], e3 = is.chars[ic][i][9],
-				e4 = is.chars[ic][i][10];
-
-		int len = is.length(ic);
-
-		x.v1 = oper;
-		x.v0 = _f0;
-		x.v2 = formi;
-		x.cz3();
-		f[0] = x.getVal();
-		f[1] = x.csa(3, position);
-		x.v0 = _f1;
-		x.v2 = formi;
-		x.v3 = i + 1 >= len ? x.v3 = _ewrd : is.forms[ic][i + 1];
-		x.cz4();
-		f[2] = x.getVal();
-
-		// contains upper case include again!!!
-
-		short upper = 0;
-		short number = 1;
-		for (int k1 = 0; k1 < wl; k1++) {
-			char c = form.charAt(k1);
-			if (Character.isUpperCase(c)) {
-				if (k1 == 0)
-					upper = 1;
-				else {
-					// first char + another
-					if (upper == 1)
-						upper = 3;
-					// another uppercase in the word
-					else if (upper == 0)
-						upper = 2;
-				}
-			}
-
-			if (Character.isDigit(c) && k1 == 0)
-				number = 2;
-			else if (Character.isDigit(c) && number == 1)
-				number = 3;
-
-		}
-
-		// contains a number
-		z.v0 = _f21;
-		z.v2 = number;
-		z.cz3();
-		f[3] = z.getVal();
-
-		z.v0 = _f4;
-		z.v1 = oper;
-		z.v2 = c0;
-		z.cz3();
-		f[4] = z.getVal();
-		z.v0 = _f5;
-		z.v2 = e0;
-		z.cz3();
-		f[5] = z.getVal();
-
-		z.v2 = c0;
-		z.v3 = c1;
-		z.v4 = c2;
-		z.v5 = c3;
-		z.v6 = c4;
-		z.v0 = _f6;
-		z.cz4();
-		f[6] = z.getVal();
-		z.v0 = _f7;
-		z.cz5();
-		f[7] = z.getVal();
-		z.v0 = _f8;
-		z.cz6();
-		f[8] = z.getVal();
-		z.v0 = _f9;
-		z.cz7();
-		f[9] = z.getVal();
-
-		int c = 10;
-		z.v2 = e0;
-		z.v3 = e1;
-		z.v4 = e2;
-		z.v5 = e3;
-		z.v6 = e4;
-		z.v0 = _f10;
-		z.cz4();
-		f[c++] = z.getVal();
-		f[c++] = z.csa(3, upper);
-		z.v0 = _f11;
-		z.cz5();
-		f[c++] = z.getVal();
-		f[c++] = z.csa(3, upper);
-		z.v0 = _f12;
-		z.cz6();
-		f[c++] = z.getVal();
-		f[c++] = z.csa(3, upper);
-		z.v0 = _f13;
-		z.cz7();
-		f[c++] = z.getVal();
-		f[c++] = z.csa(3, upper);
-
-		if (len > i + 1) {
-
-			z.v0 = _f14;
-			z.v2 = is.chars[ic][i + 1][0];
-			z.cz3();
-			f[c++] = z.getVal();
-
-			z.v0 = _f15;
-			z.v2 = is.chars[ic][i + 1][5];
-			z.cz3();
-			f[c++] = z.getVal();
-
-			if (is.chars[ic][i + 1][11] > 1) {
-				z.v0 = _f16;
-				z.v2 = is.chars[ic][i + 1][0];
-				z.v3 = is.chars[ic][i + 1][2];
-				z.cz4();
-				f[c++] = z.getVal();
-
-				z.v0 = _f17;
-				z.v2 = is.chars[ic][i + 1][1];
-				z.v3 = is.chars[ic][i + 1][6];
-				z.cz4();
-				f[c++] = z.getVal();// fv.add(li.l2i(mf.calc4(b)));
-			}
-
-			x.v0 = _f18;
-			x.v2 = is.forms[ic][i + 1];
-			x.cz3();
-			f[c++] = x.getVal();
-
-			if (len > i + 2) {
-				x.v0 = _f32;
-				x.v2 = is.forms[ic][i + 2];
-				x.v3 = is.forms[ic][i + 1];
-				x.cz4();
-				f[c++] = x.getVal();
-				x.cz3();
-				f[c++] = x.getVal();// fv.add(li.l2i(mf.calc3(b)));
-
-			}
-
-			if (len > i + 3) {
-				x.v0 = _f33;
-				x.v2 = is.forms[ic][i + 3];
-				x.v3 = is.forms[ic][i + 2];
-				x.cz4();
-				f[c++] = x.getVal();// fv.add(li.l2i(mf.calc4(b)));
-				x.cz3();
-				f[27] = x.getVal();// fv.add(li.l2i(mf.calc3(b)));
-			}
-		}
-
-		// length
-
-		z.v0 = _f19;
-		z.v1 = oper;
-		z.v2 = wl;
-		z.cz3();
-		f[c++] = z.getVal();// fv.add(li.l2i(mf.calc3(dl1)));
-
-		if (i < 1)
-			return;
-
-		x.v0 = _f27;
-		x.v1 = oper;
-		x.v2 = is.forms[ic][i - 1];
-		x.cz3();
-		f[c++] = x.getVal();// fv.add(li.l2i(mf.calc3(b)));
-
-		if (i < 2)
-			return;
-
-		// added this before it was 99.46
-		x.v0 = _f28;
-		x.v2 = is.forms[ic][i - 2];
-		x.cz3();
-		f[c++] = x.getVal();// fv.add(li.l2i(mf.calc3(b)));
-
-		// result 99.484
-		if (i < 3)
-			return;
-
-		x.v0 = _f31;
-		x.v1 = oper;
-		x.v2 = is.forms[ic][i - 3];
-		x.v3 = is.forms[ic][i - 2];
-		x.cz4();
-		f[c++] = x.getVal();// fv.add(li.l2i(mf.calc4(b)));
-
-	}
-
-	// public String[] wds;
-
-	/**
-	 * Write the lemma that are not mapped by operations
-	 * 
-	 * @param dos
-	 */
-	private void writeMap(DataOutputStream dos) {
-
-		try {
-			dos.writeInt(opse.size());
-			for (Entry<String, String> e : opse.entrySet()) {
-				dos.writeUTF(e.getKey());
-				dos.writeUTF(e.getValue());
-			}
-		} catch (IOException e1) {
-			e1.printStackTrace();
-		}
-	}
-
-	/**
-	 * Read the form-lemma mapping not read by operations
-	 * 
-	 * @param dis
-	 */
-	public void readMap(DataInputStream dis) {
-		try {
-			int size = dis.readInt();
-			for (int i = 0; i < size; i++) {
-				opse.put(dis.readUTF(), dis.readUTF());
-			}
-		} catch (IOException e1) {
-			e1.printStackTrace();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.tools.IPipe#write(java.io.DataOutputStream)
-	 */
-	@Override
-	public void write(DataOutputStream dos) {
-		this.writeMap(dos);
-		try {
-			cl.write(dos);
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/lemmatizer/StringEdit.java b/dependencyParser/mate-tools/src/is2/lemmatizer/StringEdit.java
deleted file mode 100755
index 69fd872..0000000
--- a/dependencyParser/mate-tools/src/is2/lemmatizer/StringEdit.java
+++ /dev/null
@@ -1,303 +0,0 @@
-package is2.lemmatizer;
-
-import java.util.ArrayList;
-
-public class StringEdit {
-
-	public static void main(String args[]) {
-
-		String s = new StringBuffer(args[0]).reverse().toString();
-		String t = new StringBuffer(args[1]).reverse().toString();
-
-		int d[][] = LD(s, t);
-
-		StringBuffer opersations = new StringBuffer();
-		searchPath(s, t, d, opersations, false);
-		System.out.println("resuylt " + " " + opersations);
-
-	}
-
-	// ****************************
-	// Get minimum of three values
-	// ****************************
-
-	static private int Minimum(int a, int b, int c) {
-		int mi;
-
-		mi = a;
-		if (b < mi)
-			mi = b;
-		if (c < mi)
-			mi = c;
-
-		return mi;
-
-	}
-
-	// *****************************
-	// Compute Levenshtein distance
-	// *****************************
-
-	static public int[][] LD(String s, String t) {
-
-		int n = s.length();
-		int m = t.length();
-		; // length of t
-		// char s_i; // ith character of s
-		// char t_j; // jth character of t
-		int cost; // cost
-
-		// Step 1
-
-		int[][] d = new int[n + 1][m + 1];
-
-		if (n == 0)
-			return d;
-		if (m == 0)
-			return d;
-
-		// Step 2
-
-		for (int i = 0; i <= n; i++)
-			d[i][0] = i;
-		for (int j = 0; j <= m; j++)
-			d[0][j] = j;
-
-		// Step 3
-
-		for (int i = 1; i <= n; i++) {
-
-			int s_i = s.charAt(i - 1);
-
-			// Step 4
-
-			for (int j = 1; j <= m; j++) {
-
-				// t_j = t.charAt (j - 1);
-
-				// Step 5
-
-				if (s_i == t.charAt(j - 1))
-					cost = 0;
-				else
-					cost = 1;
-
-				// Step 6
-
-				d[i][j] = Minimum(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + cost);
-
-			}
-
-		}
-
-		// Step 7
-
-		return d;
-
-	}
-
-	static String searchPath(String s, String t, int[][] d, StringBuffer operations, boolean debug) {
-
-		StringBuffer result = new StringBuffer(s);
-
-		int n = d.length;
-		int m = d[0].length;
-
-		int x = n - 1;
-		int y = m - 1;
-		boolean changed = false;
-		while (true) {
-			if (debug && changed)
-				System.out.println("result " + new StringBuffer(result).reverse());
-
-			if (d[x][y] == 0)
-				break;
-			if (y > 0 && x > 0 && d[x - 1][y - 1] < d[x][y]) {
-				if (debug)
-					System.out.println("min d[x-1][y-1] " + d[x - 1][y - 1] + " d[x][y] " + d[x][y] + " rep "
-							+ s.charAt(x - 1) + " with " + t.charAt(y - 1) + " at " + (x - 1));
-
-				operations.append('R').append(Character.toString((char) (x - 1))).append(s.charAt(x - 1))
-						.append(t.charAt(y - 1));
-				if (debug)
-					result.setCharAt(x - 1, t.charAt(y - 1));
-				y--;
-				x--;
-				changed = true;
-				continue;
-			}
-			if (y > 0 && d[x][y - 1] < d[x][y]) {
-				if (debug)
-					System.out.println("min d[x][y-1] " + d[x][y - 1] + "  d[x][y] " + d[x][y] + " ins "
-							+ t.charAt(y - 1) + " at " + (x));
-				operations.append('I').append(Character.toString((char) (x))).append(t.charAt(y - 1));
-				if (debug)
-					result.insert(x, t.charAt(y - 1));
-				y--;
-				changed = true;
-				continue;
-			}
-			if (x > 0 && d[x - 1][y] < d[x][y]) {
-				if (debug)
-					System.out.println("min d[x-1][y] " + d[x - 1][y] + " d[x][y] " + d[x][y] + " del "
-							+ s.charAt(x - 1) + " at " + (x - 1));
-				operations.append('D').append(Character.toString((char) (x - 1))).append(s.charAt(x - 1));
-				if (debug)
-					result.deleteCharAt(x - 1);
-				x--;
-				changed = true;
-				continue;
-			}
-			changed = false;
-			if (x > 0 && y > 0 && d[x - 1][y - 1] == d[x][y]) {
-				x--;
-				y--;
-				continue;
-			}
-			if (x > 0 && d[x - 1][y] == d[x][y]) {
-				x--;
-				continue;
-			}
-			if (y > 0 && d[x][y - 1] == d[x][y]) {
-				y--;
-				continue;
-			}
-
-		}
-		if (debug)
-			return result.reverse().toString();
-		else
-			return null;
-	}
-
-	public static String change(String s, String operations) {
-
-		StringBuffer result = new StringBuffer(s).reverse();
-
-		int pc = 0;
-		while (true) {
-			if (operations.length() <= pc)
-				break;
-			char nextOperation = operations.charAt(pc);
-			pc++;
-			if (nextOperation == 'R') {
-				// pc++;
-				int xm1 = operations.charAt(pc);
-				pc++;
-				char replace = operations.charAt(pc);
-				pc++;
-				char with = operations.charAt(pc);
-				// operations.append('R').append((char)x-1).append(s.charAt(x-1)).append(t.charAt(y-1));
-				// System.out.println(""+result+" xm1 "+xm1+" op "+operations);
-
-				if (result.length() <= xm1)
-					return s;
-
-				if (result.charAt(xm1) == replace)
-					result.setCharAt(xm1, with);
-				// if (debug) result.setCharAt(x-1, t.charAt(y-1));
-				pc++;
-
-			} else if (nextOperation == 'I') {
-				// if (debug) System.out.println("min d[x][y-1] "+d[x][y-1]+"
-				// d[x][y] "+d[x][y]+" ins "+t.charAt(y-1)+" at "+(x));
-				// operations.append('I').append((char)x).append(t.charAt(y-1));
-
-				// if (debug)result.insert(x, t.charAt(y-1));
-				// y--;
-				// changed =true;
-				// pc++;
-				int x = operations.charAt(pc);
-				pc++;
-				char in = operations.charAt(pc);
-
-				if (result.length() < x)
-					return s;
-
-				result.insert(x, in);
-				pc++;
-			} else if (nextOperation == 'D') {
-				// pc++;
-				int xm1 = operations.charAt(pc);
-
-				if (result.length() <= xm1)
-					return s;
-
-				result.deleteCharAt(xm1);
-				pc++;
-				// delete with
-				pc++;
-				// operations.append('D').append((char)x-1).append(s.charAt(x-1));
-				// if (debug)result.deleteCharAt(x-1);
-			}
-
-		}
-		return result.reverse().toString();
-		// else return null;
-	}
-
-	/**
-	 * @param opers
-	 * @param postion
-	 * @return
-	 */
-	public static String get(ArrayList<String> opers, int position) {
-		for (String s : opers) {
-			int p = s.charAt(1);
-			if (p == position) {
-				return s;
-			}
-		}
-		return "0";
-	}
-
-	/**
-	 * @param form
-	 * @param string
-	 * @param c
-	 * @return
-	 */
-	public static String changeSimple(String form, String operation, int c) {
-
-		if (operation.equals("0"))
-			return form;
-
-		if (operation.charAt(0) == 'I') {
-			StringBuffer f = new StringBuffer(form);
-			if (f.length() <= c) {
-				// DB.println("fail insert ");
-				return form;
-			}
-			f.insert(c + 1, operation.charAt(1));
-			return f.toString();
-		}
-		if (operation.charAt(0) == 'R') {
-			StringBuffer f = new StringBuffer(form);
-			// if (f.length()<=c) f.append(' ');
-			if (f.length() <= c) {
-				// DB.println("fail replace ");
-				return form;
-			}
-			f.setCharAt(c, operation.charAt(2));
-			return f.toString();
-		}
-
-		if (operation.charAt(0) == 'D') {
-			StringBuffer f = new StringBuffer(form);
-			f.delete(c, c + 1);// .append(' ');
-			return f.toString();
-		}
-		return form;
-	}
-
-	/**
-	 * @param string
-	 * @return
-	 */
-	public static String simple(String o) {
-		StringBuffer s = new StringBuffer(o);
-		s.delete(1, 2);
-		return s.toString();
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/mtag/Convert.java b/dependencyParser/mate-tools/src/is2/mtag/Convert.java
deleted file mode 100755
index 05b0741..0000000
--- a/dependencyParser/mate-tools/src/is2/mtag/Convert.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- *
- */
-package is2.mtag;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.util.ArrayList;
-
-/**
- * @author Dr. Bernd Bohnet, 20.01.2010
- *
- *
- */
-public class Convert {
-
-	public static void main(String[] args) throws IOException {
-
-		Options options = new Options(args);
-
-		split(options.trainfile);
-
-	}
-
-	/**
-	 * @param trainfile
-	 * @throws IOException
-	 */
-	private static void split(String trainfile) throws IOException {
-
-		String dir = "split";
-		boolean success = (new File("split")).mkdir();
-		if (success)
-			System.out.println("Directory: " + dir + " created");
-
-		ArrayList<String> corpus = new ArrayList<String>();
-
-		BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(trainfile), "UTF-8"),
-				32768);
-		String l = null;
-		int sentences = 0;
-		try {
-			while ((l = reader.readLine()) != null) {
-
-				corpus.add(l);
-				if (l.length() < 8)
-					sentences++;
-
-			}
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-		System.out.println("Corpus has " + sentences + " sentences.");
-
-		int partSize = sentences / 20;
-		System.out.println("Prepare corpus for cross annotations with 20 parts with part size " + partSize
-				+ " number of lines " + corpus.size());
-
-		for (int k = 0; k < 20; k++) {
-			BufferedWriter br = new BufferedWriter(
-					new OutputStreamWriter(new FileOutputStream("split/p-" + k), "UTF-8"));
-			BufferedWriter rest = new BufferedWriter(
-					new OutputStreamWriter(new FileOutputStream("split/r-" + k), "UTF-8"));
-			int skip = k * partSize;
-
-			int countSentences = 0;
-			int countSentencesWrote = 0;
-			System.out.println("skip from " + skip + " to " + (skip + partSize - 1));
-			for (String x : corpus) {
-				if (countSentences >= skip && (countSentences < (skip + partSize) || k == 19)) {
-					rest.write(x);
-					rest.newLine();
-					if (x.length() < 8)
-						countSentencesWrote++;
-				} else {
-					br.write(x);
-					br.newLine();
-				}
-
-				if (x.length() < 8)
-					countSentences++;
-			}
-			System.out.println("wrote for this part " + countSentencesWrote);
-			br.flush();
-			br.close();
-			rest.flush();
-			rest.close();
-
-		}
-
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/mtag/Evaluator.java b/dependencyParser/mate-tools/src/is2/mtag/Evaluator.java
deleted file mode 100755
index 16c7bba..0000000
--- a/dependencyParser/mate-tools/src/is2/mtag/Evaluator.java
+++ /dev/null
@@ -1,149 +0,0 @@
-package is2.mtag;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Hashtable;
-import java.util.Map.Entry;
-
-import is2.data.SentenceData09;
-import is2.io.CONLLReader09;
-
-public class Evaluator {
-
-	public static void evaluate(String act_file, String pred_file, String format) throws Exception {
-
-		CONLLReader09 goldReader = new CONLLReader09(act_file);// DependencyReader.createDependencyReader();
-		// boolean labeled = goldReader.startReading(act_file);
-
-		CONLLReader09 predictedReader = new CONLLReader09();
-		predictedReader.startReading(pred_file);
-
-		// if (labeled != predLabeled)
-		// System.out.println("Gold file and predicted file appear to differ on
-		// whether or not they are labeled. Expect problems!!!");
-
-		int total = 0, totalP = 0, corrT = 0;
-		int totalD = 0, corrD = 0, err = 0;
-		int numsent = 0;
-		SentenceData09 goldInstance = goldReader.getNext();
-		SentenceData09 predInstance = predictedReader.getNext();
-
-		Hashtable<String, Integer> errors = new Hashtable<String, Integer>();
-		Hashtable<String, StringBuffer> words = new Hashtable<String, StringBuffer>();
-
-		while (goldInstance != null) {
-
-			int instanceLength = goldInstance.length();
-
-			if (instanceLength != predInstance.length())
-				System.out.println("Lengths do not match on sentence " + numsent);
-
-			String gold[] = goldInstance.ofeats;
-			String pred[] = predInstance.pfeats;
-
-			boolean whole = true;
-			boolean wholeL = true;
-
-			// NOTE: the first item is the root info added during
-			// nextInstance(), so we skip it.
-
-			for (int i = 1; i < instanceLength; i++) {
-				if (gold[i].equals(pred[i]) || (gold[i].equals("_") && pred[i] == null))
-					corrT++;
-				else {
-					// System.out.println("gold:"+goldFeats[i]+"
-					// pred:"+predFeats[i]+" "+goldInstance.forms[i]+" snt
-					// "+numsent+" i:"+i);
-					// for (int k = 1; k < instanceLength; k++) {
-
-					// System.out.print(goldInstance.forms[k]+":"+goldInstance.gpos[k]);
-					// if (k==i) System.out.print(":"+predInstance.gpos[k]);
-					// System.out.print(" ");
-
-					// }
-					// System.out.println();
-					String key = "gold: '" + gold[i] + "' pred: '" + pred[i] + "'";
-					Integer cnt = errors.get(key);
-					StringBuffer errWrd = words.get(key);
-					if (cnt == null) {
-						errors.put(key, 1);
-						words.put(key, new StringBuffer().append(goldInstance.forms[i]));
-					} else {
-						errors.put(key, cnt + 1);
-						errWrd.append(" " + goldInstance.forms[i]);
-					}
-					err++;
-
-				}
-				String[] gf = gold[i].split("|");
-				int eq = 0;
-
-				if (pred[i] != null) {
-					String[] pf = pred[i].split("|");
-					totalP += pf.length;
-
-					if (pf.length > gf.length) {
-					} else {
-					}
-
-					for (String g : gf) {
-						for (String p : pf) {
-							if (g.equals(p)) {
-								eq++;
-								break;
-							}
-						}
-					}
-				} else {
-				}
-				totalD += gf.length;
-				corrD += eq;
-			}
-			total += instanceLength - 1; // Subtract one to not score fake root
-											// token
-
-			if (whole) {
-			}
-			if (wholeL) {
-			}
-			numsent++;
-
-			goldInstance = goldReader.getNext();
-			predInstance = predictedReader.getNext();
-		}
-
-		ArrayList<Entry<String, Integer>> opsl = new ArrayList<Entry<String, Integer>>();
-		for (Entry<String, Integer> e : errors.entrySet()) {
-			opsl.add(e);
-		}
-
-		Collections.sort(opsl, new Comparator<Entry<String, Integer>>() {
-
-			@Override
-			public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
-
-				return o1.getValue() == o2.getValue() ? 0 : o1.getValue() > o2.getValue() ? -1 : 1;
-			}
-
-		});
-
-		System.out.println("10 top most errors:");
-
-		System.out.println("Tokens: " + total + " Correct: " + corrT + " " + (float) corrT / total + " R "
-				+ ((float) corrD / totalD) + " tP " + totalP + " tG " + totalD + " P " + (float) corrD / totalP);
-		System.out.println("err: " + err + " total " + total + " corr " + corrT);
-		// System.out.println("Unlabeled Complete Correct: " +
-		// ((double)corrsent/numsent));
-
-	}
-
-	public static void main(String[] args) throws Exception {
-		String format = "CONLL";
-		if (args.length > 2)
-			format = args[2];
-
-		evaluate(args[0], args[1], format);
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/mtag/ExtractorM.java b/dependencyParser/mate-tools/src/is2/mtag/ExtractorM.java
deleted file mode 100644
index e84f859..0000000
--- a/dependencyParser/mate-tools/src/is2/mtag/ExtractorM.java
+++ /dev/null
@@ -1,683 +0,0 @@
-package is2.mtag;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map.Entry;
-
-import is2.data.Cluster;
-import is2.data.F2SF;
-import is2.data.Instances;
-import is2.data.InstancesTagger;
-import is2.data.Long2Int;
-import is2.data.Long2IntInterface;
-import is2.data.ParametersFloat;
-import is2.data.PipeGen;
-import is2.data.SentenceData09;
-import is2.io.CONLLReader09;
-import is2.io.IOGenerals;
-import is2.tools.IPipe;
-import is2.util.OptionsSuper;
-
-final public class ExtractorM extends PipeGen implements IPipe {
-
-	public static int _CEND;
-
-	private static final String STWRD = "STWRD", STPOS = "STPOS", END = "END", STR = "STR";
-
-	public String[] types;
-
-	Cluster cl;
-
-	final public MFO mf = new MFO();
-	public Long2IntInterface li;
-
-	final MFO.Data4 d1 = new MFO.Data4(), d2 = new MFO.Data4(), d3 = new MFO.Data4(), dw = new MFO.Data4();
-	final MFO.Data4 dwp = new MFO.Data4(), dp = new MFO.Data4();
-
-	private OptionsSuper options;
-	private int _ewrd;
-	static private int _strp;
-
-	public ExtractorM(Options options, Long2Int long2Int) throws IOException {
-		this.options = options;
-
-		li = long2Int;
-	}
-
-	public ExtractorM(OptionsSuper options) {
-		this.options = options;
-	}
-
-	public HashMap<Integer, Integer> form2morph = new HashMap<Integer, Integer>();
-
-	@Override
-	public Instances createInstances(String file) {
-
-		CONLLReader09 depReader = new CONLLReader09(CONLLReader09.NO_NORMALIZE);
-
-		depReader.startReading(file);
-		mf.register(POS, "<root-POS>");
-
-		mf.register(FFEATS, IOGenerals.NO_TYPE);
-		mf.register(FFEATS, "");
-
-		InstancesTagger is = new InstancesTagger();
-
-		System.out.println("Registering feature parts ");
-
-		HashMap<String, HashSet<String>> op2form = new HashMap<String, HashSet<String>>();
-		HashMap<String, Integer> freq = new HashMap<String, Integer>();
-
-		int ic = 0;
-		while (true) {
-			SentenceData09 instance1 = depReader.getNext();
-			if (instance1 == null)
-				break;
-			ic++;
-
-			String[] w = instance1.forms;
-			for (String element : w)
-				mf.register(WORD, element);
-			for (String element : w)
-				registerChars(CHAR, element);
-
-			for (int i1 = 0; i1 < w.length; i1++) {
-				mf.register(WORD, w[i1].toLowerCase());
-				Integer f = freq.get(w[i1].toLowerCase());
-
-				if (f == null)
-					freq.put(w[i1].toLowerCase(), 1);
-				else
-					freq.put(w[i1].toLowerCase(), f + 1);
-
-				HashSet<String> forms = op2form.get(w[i1].toLowerCase());
-				if (forms == null) {
-					forms = new HashSet<String>();
-					op2form.put(w[i1].toLowerCase(), forms);
-				}
-				forms.add(instance1.ofeats[i1] == null ? "_" : instance1.ofeats[i1]);
-			}
-			for (String element : w)
-				registerChars(CHAR, element.toLowerCase());
-
-			w = instance1.plemmas;
-			for (String element : w)
-				mf.register(WORD, element);
-			for (String element : w)
-				registerChars(CHAR, element);
-
-			w = instance1.ppos;
-			for (String element : w)
-				mf.register(POS, element);
-
-			w = instance1.gpos;
-			for (String element : w)
-				mf.register(POS, element);
-
-			w = instance1.ofeats;
-			for (String element : w)
-				if (element != null)
-					mf.register(FEAT, element);
-			for (String element : w)
-				if (element != null)
-					mf.register(FFEATS, element);
-
-			// w = instance1.pfeats;
-			// for(int i1 = 0; i1 < w.length; i1++) if (w[i1]!=null)
-			// mf.register(FEAT, w[i1]);
-		}
-
-		for (Entry<String, HashSet<String>> e : op2form.entrySet()) {
-			if (e.getValue().size() == 1 && freq.get(e.getKey()) > 10) {
-				// System.out.println("found map "+e.getKey()+" "+e.getValue()+"
-				// "+freq.get(e.getKey()));
-				form2morph.put(mf.getValue(PipeGen.WORD, e.getKey()),
-						mf.getValue(FFEATS, (String) e.getValue().toArray()[0]));
-			}
-		}
-
-		initFeatures();
-
-		mf.calculateBits();
-		initValues();
-
-		System.out.println("" + mf.toString());
-
-		depReader.startReading(file);
-
-		int num1 = 0;
-		long start1 = System.currentTimeMillis();
-
-		System.out.print("Creating Features: ");
-		is.init(ic, mf);
-		int del = 0;
-
-		while (true) {
-			if (num1 % 100 == 0) {
-				del = outValue(num1, del);
-			}
-			SentenceData09 instance1 = depReader.getNext(is);
-			if (instance1 == null)
-				break;
-
-			if (num1 > options.count)
-				break;
-
-			num1++;
-		}
-		long end1 = System.currentTimeMillis();
-		System.gc();
-		long mem2 = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
-		System.out.print("  time " + (end1 - start1) + " mem " + (mem2 / 1024) + " kb");
-
-		types = new String[mf.getFeatureCounter().get(FFEATS)];
-
-		for (Entry<String, Integer> e : MFO.getFeatureSet().get(FFEATS).entrySet()) {
-			types[e.getValue()] = e.getKey();
-		}
-
-		if (options.clusterFile == null)
-			cl = new Cluster();
-		else
-			cl = new Cluster(options.clusterFile, mf, 6);
-
-		System.out.println("Num Features: " + types.length);
-
-		depReader.startReading(file);
-
-		int num11 = 0;
-
-		while (true) {
-
-			SentenceData09 instance = depReader.getNext();
-			if (instance == null)
-				break;
-
-			is.fillChars(instance, num11, _CEND);
-
-			if (num11 > options.count)
-				break;
-
-			num11++;
-		}
-
-		return is;// .toNativeArray();
-
-	}
-
-	private void registerChars(String type, String word) {
-		for (int i = 0; i < word.length(); i++)
-			mf.register(type, Character.toString(word.charAt(i)));
-	}
-
-	@Override
-	public void initValues() {
-		s_feat = MFO.getFeatureBits(FFEATS);
-		s_word = MFO.getFeatureBits(WORD);
-		s_type = MFO.getFeatureBits(TYPE);
-		s_char = MFO.getFeatureBits(CHAR);
-		s_pos = MFO.getFeatureBits(POS);
-		// dl1.a[0] = s_type; dl1.a[1] = s_pos;
-		// for (int k = 2; k < 7; k++) dl1.a[k] = s_pos;
-
-		d1.a0 = s_type;
-		d1.a1 = s_feat;
-		d1.a2 = s_word;
-		d2.a0 = s_type;
-		d2.a1 = s_feat;
-		d2.a2 = s_feat;
-		d2.a3 = s_feat;
-		d2.a4 = s_feat;
-		d2.a5 = s_feat;
-		d2.a6 = s_feat;
-		d3.a0 = s_type;
-		d3.a1 = s_feat;
-		d3.a2 = s_char;
-		d3.a3 = s_char;
-		d3.a4 = s_char;
-		d3.a5 = s_char;
-		d3.a6 = s_char;
-		d3.a7 = s_char;
-		dp.a0 = s_type;
-		dp.a1 = s_feat;
-		dp.a2 = s_pos;
-		dp.a3 = s_pos;
-		dp.a4 = s_feat;// dp.a5= s_char; dp.a6= s_char; dp.a7= s_char;
-		dw.a0 = s_type;
-		dw.a1 = s_feat;
-		dw.a2 = s_word;
-		dw.a3 = s_word;
-		dw.a4 = s_word;
-		dw.a5 = s_word;
-		dw.a6 = s_word;
-		dw.a7 = s_word;
-		dwp.a0 = s_type;
-		dwp.a1 = s_feat;
-		dwp.a2 = s_word;
-		dwp.a3 = s_feat;
-		dwp.a4 = s_word;
-
-	}
-
-	public static short s_feat, s_word, s_type, s_dir, s_dist, s_char, s_pos;
-
-	/**
-	 * Initialize the features types.
-	 */
-	@Override
-	public void initFeatures() {
-
-		for (int t = 0; t < 62; t++) {
-			mf.register(TYPE, "F" + t);
-		}
-
-		// _mid = mf.register(POS, MID);
-		_strp = mf.register(POS, STR);
-		mf.register(POS, END);
-
-		mf.register(WORD, STR);
-		_ewrd = mf.register(WORD, END);
-
-		_CEND = mf.register(CHAR, END);
-
-		// optional features
-		mf.register(WORD, STWRD);
-		mf.register(POS, STPOS);
-
-	}
-
-	final public void addCF(InstancesTagger is, int ic, String fs, int i, short pfeat[], short ppos[], int[] forms,
-			int[] lemmas, long[] vs) {
-
-		int c0 = is.chars[ic][i][0], c1 = is.chars[ic][i][1], c2 = is.chars[ic][i][2], c3 = is.chars[ic][i][3],
-				c4 = is.chars[ic][i][4], c5 = is.chars[ic][i][5];
-		int e0 = is.chars[ic][i][6], e1 = is.chars[ic][i][7], e2 = is.chars[ic][i][8], e3 = is.chars[ic][i][9],
-				e4 = is.chars[ic][i][10];
-
-		int f = 1, n = 0;
-		short upper = 0, number = 1;
-		for (int k1 = 0; k1 < fs.length(); k1++) {
-			char c = fs.charAt(k1);
-			if (Character.isUpperCase(c)) {
-				if (k1 == 0)
-					upper = 1;
-				else {
-					// first char + another
-					if (upper == 1)
-						upper = 3;
-					// another uppercase in the word
-					else if (upper == 0)
-						upper = 2;
-				}
-			}
-
-			if (Character.isDigit(c) && k1 == 0)
-				number = 2;
-			else if (Character.isDigit(c) && number == 1)
-				number = 3;
-		}
-
-		int form = forms[i];
-
-		int len = forms.length;
-		long l;
-		d1.v0 = f++;
-		d1.v2 = form;
-		l = mf.calc3(d1);
-		vs[n++] = mf.calc3(d1);
-
-		d1.v0 = f++;
-		d1.v2 = is.formlc[ic][i];
-		vs[n++] = mf.calc3(d1);
-
-		d3.v2 = c0;
-		d3.v3 = c1;
-		d3.v4 = c2;
-		d3.v5 = c3;
-		d3.v6 = c4;
-		d3.v0 = f++;
-		vs[n++] = mf.calc3(d3);
-		d3.v0 = f++;
-		vs[n++] = mf.calc4(d3);
-		d3.v0 = f++;
-		vs[n++] = mf.calc5(d3);
-		d3.v0 = f++;
-		vs[n++] = mf.calc6(d3);
-		d3.v0 = f++;
-		vs[n++] = mf.calc7(d3);
-
-		if (form != -1) {
-			d3.v2 = c2;
-			d3.v3 = c3;
-			d3.v4 = c4;
-			d3.v5 = c5;
-			d3.v6 = cl.getLP(form);
-			d3.v0 = f;
-			vs[n++] = mf.calc6(d3);
-			d3.v0 = f + 1;
-			vs[n++] = mf.calc7(d3);
-		}
-		f += 2;
-
-		if (form > 0) {
-			d3.v0 = f;
-			d3.v5 = cl.getLP(form);
-			vs[n++] = mf.calc6(d3);
-			d3.v0 = f + 1;
-			d3.v4 = cl.getLP(form);
-			vs[n++] = mf.calc5(d3);
-			d3.v0 = f + 2;
-			d3.v3 = cl.getLP(form);
-			vs[n++] = mf.calc4(d3);
-		}
-		f += 3;
-
-		d3.v2 = e0;
-		d3.v3 = e1;
-		d3.v4 = e2;
-		d3.v5 = e3;
-		d3.v6 = e4;
-		d3.v0 = f++;
-		vs[n++] = mf.calc3(d3);
-		d3.v0 = f++;
-		vs[n++] = l = mf.calc4(d3);
-		vs[n++] = d3.calcs(3, upper, l);
-		d3.v0 = f++;
-		vs[n++] = l = mf.calc5(d3);
-		vs[n++] = d3.calcs(3, upper, l);
-		d3.v0 = f++;
-		vs[n++] = l = mf.calc6(d3);
-		vs[n++] = d3.calcs(3, upper, l);
-		d3.v0 = f++;
-		vs[n++] = l = mf.calc7(d3);
-		vs[n++] = d3.calcs(3, upper, l);
-
-		if (form > 0) {
-			d3.v0 = f;
-			d3.v5 = cl.getLP(form);
-			vs[n++] = mf.calc6(d3);
-			d3.v0 = f + 1;
-			d3.v4 = cl.getLP(form);
-			vs[n++] = mf.calc5(d3);
-			d3.v0 = f + 2;
-			d3.v3 = cl.getLP(form);
-			vs[n++] = mf.calc4(d3);
-		}
-		f += 3;
-
-		dw.v0 = f++;
-		dw.v2 = i + 1 < len ? forms[i + 1] : _ewrd;
-		dw.v3 = forms[i];
-		vs[n++] = mf.calc4(dw);
-
-		if (len > i + 1) {
-
-			dw.v0 = f;
-			dw.v2 = forms[i + 1];
-			vs[n++] = mf.calc3(dw);
-			d3.v0 = f + 1;
-			d3.v2 = is.chars[ic][i + 1][0];
-			vs[n++] = mf.calc3(d3);
-			d3.v0 = f + 2;
-			d3.v2 = is.chars[ic][i + 1][6];
-			vs[n++] = mf.calc3(d3);
-
-			d3.v2 = e0;
-			d3.v3 = e1;
-
-			d3.v0 = f + 3;
-			d3.v4 = is.chars[ic][i + 1][0];
-			vs[n++] = mf.calc5(d3);
-			d3.v0 = f + 4;
-			d3.v4 = is.chars[ic][i + 1][6];
-			vs[n++] = mf.calc5(d3);
-
-			if (is.chars[ic][i + 1][11] > 1) { // instance.forms[i+1].length()
-
-				d3.v0 = f + 5;
-				d3.v2 = is.chars[ic][i + 1][0];
-				d3.v3 = is.chars[ic][i + 1][1];
-				vs[n++] = mf.calc4(d3);
-				d3.v0 = f + 6;
-				d3.v2 = is.chars[ic][i + 1][6];
-				d3.v3 = is.chars[ic][i + 1][7];
-				vs[n++] = mf.calc4(d3);
-
-				d3.v2 = e0;
-				d3.v3 = e1;
-
-				d3.v0 = f + 7;
-				d3.v4 = is.chars[ic][i + 1][0];
-				d3.v5 = is.chars[ic][i + 1][1];
-				vs[n++] = mf.calc6(d3);
-				d3.v0 = f + 8;
-				d3.v4 = is.chars[ic][i + 1][6];
-				d3.v5 = is.chars[ic][i + 1][7];
-				vs[n++] = mf.calc6(d3);
-
-				if (forms[i + 1] > 0) {
-					d3.v0 = f + 9;
-					d3.v2 = is.chars[ic][i + 1][0];
-					d3.v3 = is.chars[ic][i + 1][1];
-					d3.v4 = cl.getLP(forms[i + 1]);
-					vs[n++] = mf.calc5(d3);
-					d3.v0 = f + 10;
-					d3.v2 = is.chars[ic][i + 1][6];
-					d3.v3 = is.chars[ic][i + 1][7];
-					d3.v4 = cl.getLP(forms[i + 1]);
-					vs[n++] = mf.calc5(d3);
-				}
-			}
-
-			if (forms[i + 1] > 0) {
-				dw.v0 = f + 11;
-				dw.v2 = cl.getLP(forms[i + 1]);
-				dw.v3 = forms[i];
-				vs[n++] = mf.calc4(dw);
-			}
-
-			if (len > i + 2) {
-				dw.v0 = f + 12;
-				dw.v2 = forms[i + 2];
-				dw.v3 = forms[i + 1];
-				vs[n++] = mf.calc4(dw);
-				vs[n++] = mf.calc3(dw);
-				// d2.v0=f+13; d2.v2=pfeat[i+1]; d2.v3= pfeat[i+2];
-				// vs[n++]=mf.calc4(d2);
-				// dp.v0= f+14; dp.v2=ppos[i+1]; dp.v3=ppos[i+2];
-				// vs[n++]=mf.calc4(dp);
-
-			}
-
-			if (len > i + 3) {
-				dw.v0 = f + 14;
-				dw.v2 = forms[i + 3];
-				dw.v3 = forms[i + 2];
-				vs[n++] = mf.calc4(dw);
-				vs[n++] = mf.calc3(dw);
-
-			}
-		}
-		f += 16;
-
-		// length
-		d2.v0 = f++;
-		d2.v2 = is.chars[ic][i][11];
-		vs[n++] = mf.calc3(d2);
-
-		// contains a number
-		d2.v0 = f++;
-		d2.v2 = number;
-		vs[n++] = mf.calc3(d2);
-		d1.v0 = f++;
-		d1.v2 = lemmas[i];
-		vs[n++] = mf.calc3(d1);
-
-		if (i != 0 && len > i + 1) {
-			dw.v0 = f;
-			dw.v2 = lemmas[i - 1];
-			dw.v3 = lemmas[i + 1];
-			vs[n++] = mf.calc4(dw);
-			d2.v0 = f + 1;
-			d2.v2 = pfeat[i - 1];
-			d2.v3 = pfeat[i + 1];
-			vs[n++] = mf.calc4(d2);
-		}
-		f += 2;
-
-		d2.v0 = f++;
-		d2.v2 = i >= 1 ? pfeat[i - 1] : _strp;
-		vs[n++] = mf.calc3(d2);
-		dp.v0 = f++;
-		dp.v2 = ppos[i];
-		vs[n++] = mf.calc3(dp);
-
-		if (i > 0) {
-			dw.v0 = f++;
-			dw.v2 = i >= 1 ? forms[i - 1] : _strp;
-			vs[n++] = mf.calc3(dw);
-			dw.v0 = f++;
-			dw.v2 = i >= 1 ? lemmas[i - 1] : _strp;
-			vs[n++] = mf.calc3(dw);
-
-			if (len > i + 1) {
-				// d2.v0=f; d2.v2= pfeat[i-1];d2.v3= pfeat[i+1];
-				// vs[n++]=mf.calc4(d2);
-				// dp.v0= f+1; dp.v2=ppos[i-1]; dp.v3=ppos[i+1];
-				// vs[n++]=mf.calc4(dp);
-
-			}
-			f++;
-			dp.v0 = f++;
-			dp.v2 = ppos[i];
-			dp.v3 = ppos[i - 1];
-			vs[n++] = mf.calc4(dp);
-
-			if (i > 1) {
-				d2.v0 = f++;
-				d2.v2 = i < 2 ? _strp : pfeat[i - 2];
-				vs[n++] = mf.calc3(d2);
-				d2.v0 = f++;
-				d2.v2 = pfeat[i - 1];
-				d2.v3 = pfeat[i - 2];
-				vs[n++] = mf.calc4(d2);
-
-				dw.v0 = f++;
-				dw.v2 = forms[i - 2];
-				vs[n++] = mf.calc3(dw);
-				dwp.v0 = f++;
-				dwp.v2 = forms[i - 1];
-				dwp.v3 = pfeat[i - 2];
-				vs[n++] = mf.calc4(dwp);
-				dwp.v0 = f++;
-				dwp.v2 = forms[i - 2];
-				dwp.v3 = pfeat[i - 1];
-				vs[n++] = mf.calc4(dwp);
-
-				if (i > 2) {
-					d2.v0 = f++;
-					d2.v2 = pfeat[i - 3];
-					vs[n++] = mf.calc3(d2);
-					d2.v0 = f++;
-					d2.v2 = pfeat[i - 2];
-					d2.v3 = pfeat[i - 3];
-					vs[n++] = mf.calc4(d2);
-					dw.v0 = f++;
-					dw.v2 = forms[i - 3];
-					dw.v3 = forms[i - 2];
-					vs[n++] = mf.calc4(dw);
-					// dp.v0= f++; dp.v2=ppos[i-3]; dp.v3=ppos[i-2];
-					// vs[n++]=mf.calc4(dp);
-				}
-			}
-		}
-		vs[n] = Integer.MIN_VALUE;
-	}
-
-	public int fillFeatureVectorsOne(ParametersFloat params, int w1, String form, Instances is, int n, short[] features,
-			long[] vs) {
-		double best = -1;
-		int bestType = -1;
-
-		F2SF f = new F2SF(params.parameters);
-		// is.gfeats[n]
-		addCF((InstancesTagger) is, n, form, w1, features, is.pposs[n], is.forms[n], is.plemmas[n], vs);
-
-		for (int t = 0; t < types.length; t++) {
-
-			f.clear();
-			int p = t << ExtractorM.s_type;
-			for (long element : vs) {
-				if (element == Integer.MIN_VALUE)
-					break;
-				if (element >= 0)
-					f.add(li.l2i(element + p));
-			}
-			if (f.score > best) {
-				bestType = t;
-				best = f.score;
-			}
-
-		}
-		return bestType;
-
-	}
-
-	// static ArrayList<T> todo = new ArrayList<T>();
-	static SentenceData09 instance;
-
-	public static int _FC = 200;
-
-	/**
-	 * Write the lemma that are not mapped by operations
-	 * 
-	 * @param dos
-	 */
-	public void writeMap(DataOutputStream dos) {
-
-		try {
-			dos.writeInt(this.form2morph.size());
-			for (Entry<Integer, Integer> e : form2morph.entrySet()) {
-				dos.writeInt(e.getKey());
-				dos.writeInt(e.getValue());
-			}
-		} catch (IOException e1) {
-			e1.printStackTrace();
-		}
-	}
-
-	/**
-	 * Read the form-lemma mapping not read by operations
-	 * 
-	 * @param dis
-	 */
-	public void readMap(DataInputStream dis) {
-		try {
-			int size = dis.readInt();
-			for (int i = 0; i < size; i++) {
-				form2morph.put(dis.readInt(), dis.readInt());
-			}
-		} catch (IOException e1) {
-			e1.printStackTrace();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.tools.IPipe#write(java.io.DataOutputStream)
-	 */
-	@Override
-	public void write(DataOutputStream dos) {
-		try {
-			cl.write(dos);
-			writeMap(dos);
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/mtag/MFO.java b/dependencyParser/mate-tools/src/is2/mtag/MFO.java
deleted file mode 100755
index e315ba4..0000000
--- a/dependencyParser/mate-tools/src/is2/mtag/MFO.java
+++ /dev/null
@@ -1,532 +0,0 @@
-package is2.mtag;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map.Entry;
-
-import is2.data.IEncoderPlus;
-import is2.util.DB;
-
-/**
- * Map Features, do not map long to integer
- *
- * @author Bernd Bohnet, 20.09.2009
- */
-
-final public class MFO implements IEncoderPlus {
-
-	/** The features and its values */
-	static private final HashMap<String, HashMap<String, Integer>> m_featureSets = new HashMap<String, HashMap<String, Integer>>();
-
-	/** The feature class and the number of values */
-	static private final HashMap<String, Integer> m_featureCounters = new HashMap<String, Integer>();
-
-	/** The number of bits needed to encode a feature */
-	static final HashMap<String, Integer> m_featureBits = new HashMap<String, Integer>();
-
-	/** Integer counter for long2int */
-	// private int count=0;
-
-	/** Stop growing */
-	public boolean stop = false;
-
-	final public static String NONE = "<None>";
-
-	public static class Data {
-		public final String[] a = new String[8];
-		public final String[] v = new String[8];
-		final short[] s = new short[9];
-
-		public void clear(int i) {
-			v[i] = null;
-		}
-	}
-
-	final public static class Data4 {
-		public int shift;
-		public short a0, a1, a2, a3, a4, a5, a6, a7, a8, a9;
-		public int v0, v1, v2, v3, v4, v5, v6, v7, v8, v9;
-
-		final public long calcs(int b, long v, long l) {
-			if (l < 0)
-				return l;
-			l |= v << shift;
-			shift += b;
-			return l;
-		}
-
-		final public long calc2() {
-
-			if (v0 < 0 || v1 < 0)
-				return -1;
-
-			long l = v0;
-			shift = a0;
-			l |= (long) v1 << shift;
-			shift += a1;
-
-			return l;
-		}
-
-		final public long calc3() {
-
-			if (v0 < 0 || v1 < 0 || v2 < 0)
-				return -1;
-			// if (v1<0||v2<0) return -1;
-
-			long l = v0;
-			shift = a0;
-			l |= (long) v1 << shift;
-			shift += a1;
-			l |= (long) v2 << shift;
-			shift = (short) (shift + a2);
-
-			// shift=;
-			return l;
-		}
-
-		final public long calc4() {
-			if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0)
-				return -1;
-
-			long l = v0;
-			shift = a0;
-			l |= (long) v1 << shift;
-			shift += a1;
-			l |= (long) v2 << shift;
-			shift += a2;
-			l |= (long) v3 << shift;
-			shift = shift + a3;
-
-			return l;
-		}
-
-		final public long calc5() {
-
-			if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0)
-				return -1;
-
-			long l = v0;
-			shift = a0;
-			l |= (long) v1 << shift;
-			shift += a1;
-			l |= (long) v2 << shift;
-			shift += a2;
-			l |= (long) v3 << shift;
-			shift += a3;
-			l |= (long) v4 << shift;
-			shift = shift + a4;
-
-			return l;
-		}
-
-		final public long calc6() {
-
-			if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0)
-				return -1;
-
-			long l = v0;
-			shift = a0;
-			l |= (long) v1 << shift;
-			shift += a1;
-			l |= (long) v2 << shift;
-			shift += a2;
-			l |= (long) v3 << shift;
-			shift += a3;
-			l |= (long) v4 << shift;
-			shift += a4;
-			l |= (long) v5 << shift;
-			shift = shift + a5;
-
-			return l;
-		}
-
-		final public long calc7() {
-
-			if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0)
-				return -1;
-
-			long l = v0;
-			shift = a0;
-			l |= (long) v1 << shift;
-			shift += a1;
-			l |= (long) v2 << shift;
-			shift += a2;
-			l |= (long) v3 << shift;
-			shift += a3;
-			l |= (long) v4 << shift;
-			shift += a4;
-			l |= (long) v5 << shift;
-			shift += a5;
-			l |= (long) v6 << shift;
-			shift = shift + a6;
-
-			return l;
-		}
-
-		final public long calc8() {
-
-			if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0 || v7 < 0)
-				return -1;
-
-			long l = v0;
-			shift = a0;
-			l |= (long) v1 << shift;
-			shift += a1;
-			l |= (long) v2 << shift;
-			shift += a2;
-			l |= (long) v3 << shift;
-			shift += a3;
-			l |= (long) v4 << shift;
-			shift += a4;
-			l |= (long) v5 << shift;
-			shift += a5;
-			l |= (long) v6 << shift;
-			shift += a6;
-			l |= (long) v7 << shift;
-			shift = shift + a7;
-
-			return l;
-		}
-
-	}
-
-	public MFO() {
-	}
-
-	// public int size() {return count;}
-
-	/**
-	 * Register an attribute class, if it not exists and add a possible value
-	 * 
-	 * @param type
-	 * @param type2
-	 */
-	@Override
-	final public int register(String a, String v) {
-
-		HashMap<String, Integer> fs = getFeatureSet().get(a);
-		if (fs == null) {
-			fs = new HashMap<String, Integer>();
-			getFeatureSet().put(a, fs);
-			fs.put(NONE, 0);
-			getFeatureCounter().put(a, 1);
-		}
-		Integer c = getFeatureCounter().get(a);
-
-		Integer i = fs.get(v);
-		if (i == null) {
-			fs.put(v, c);
-			c++;
-			getFeatureCounter().put(a, c);
-			return c - 1;
-		} else
-			return i;
-	}
-
-	/**
-	 * Calculates the number of bits needed to encode a feature
-	 */
-	public void calculateBits() {
-
-		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
-			int bits = (int) Math.ceil((Math.log(e.getValue() + 1) / Math.log(2)));
-			m_featureBits.put(e.getKey(), bits);
-		}
-
-		// System.out.println("total number of needed bits "+total);
-	}
-
-	@Override
-	public String toString() {
-
-		StringBuffer content = new StringBuffer();
-		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
-			content.append(e.getKey() + " " + e.getValue());
-			content.append(':');
-			// HashMap<String,Integer> vs = getFeatureSet().get(e.getKey());
-			content.append(getFeatureBits(e.getKey()));
-
-			/*
-			 * if (vs.size()<120) for(Entry<String,Integer> e2 : vs.entrySet())
-			 * { content.append(e2.getKey()+" ("+e2.getValue()+") "); }
-			 */
-			content.append('\n');
-
-		}
-		return content.toString();
-	}
-
-	static final public long calcs(Data4 d, int b, long v, long l) {
-		if (l < 0)
-			return l;
-		l |= v << d.shift;
-		d.shift += b;
-		return l;
-	}
-
-	static final public short getFeatureBits(String a) {
-		return (short) m_featureBits.get(a).intValue();
-	}
-
-	/**
-	 * Get the integer place holder of the string value v of the type a
-	 *
-	 * @param t
-	 *            the type
-	 * @param v
-	 *            the value
-	 * @return the integer place holder of v
-	 */
-	@Override
-	final public int getValue(String t, String v) {
-
-		if (m_featureSets.get(t) == null)
-			return -1;
-		Integer vi = m_featureSets.get(t).get(v);
-		if (vi == null)
-			return -1; // stop &&
-		return vi.intValue();
-	}
-
-	/**
-	 * Static version of getValue
-	 * 
-	 * @see getValue
-	 */
-	static final public int getValueS(String a, String v) {
-
-		if (m_featureSets.get(a) == null)
-			return -1;
-		Integer vi = m_featureSets.get(a).get(v);
-		if (vi == null)
-			return -1; // stop &&
-		return vi.intValue();
-	}
-
-	public int hasValue(String a, String v) {
-
-		Integer vi = m_featureSets.get(a).get(v);
-		if (vi == null)
-			return -1;
-		return vi.intValue();
-	}
-
-	final public long calc2(Data4 d) {
-
-		if (d.v0 < 0 || d.v1 < 0)
-			return -1;
-		// if (d.v1<0||d.v2<0) return -1;
-
-		long l = d.v0;
-		short shift = d.a0;
-		l |= (long) d.v1 << shift;
-		shift += d.a1;
-		// l |= (long)d.v2<<shift;
-		d.shift = shift;
-
-		// d.shift=;
-		return l;
-	}
-
-	final public long calc3(Data4 d) {
-
-		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0)
-			return -1;
-		// if (d.v1<0||d.v2<0) return -1;
-
-		long l = d.v0;
-		short shift = d.a0;
-		l |= (long) d.v1 << shift;
-		shift += d.a1;
-		l |= (long) d.v2 << shift;
-		d.shift = shift + d.a2;
-
-		// d.shift=;
-		return l;
-	}
-
-	final public long calc4(Data4 d) {
-		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0)
-			return -1;
-
-		long l = d.v0;
-		int shift = d.a0;
-		l |= (long) d.v1 << shift;
-		shift += d.a1;
-		l |= (long) d.v2 << shift;
-		shift += d.a2;
-		l |= (long) d.v3 << shift;
-		d.shift = shift + d.a3;
-
-		return l;
-	}
-
-	final public long calc5(Data4 d) {
-
-		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0 || d.v4 < 0)
-			return -1;
-
-		long l = d.v0;
-		int shift = d.a0;
-		l |= (long) d.v1 << shift;
-		shift += d.a1;
-		l |= (long) d.v2 << shift;
-		shift += d.a2;
-		l |= (long) d.v3 << shift;
-		shift += d.a3;
-		l |= (long) d.v4 << shift;
-		d.shift = shift + d.a4;
-
-		return l;
-	}
-
-	final public long calc6(Data4 d) {
-
-		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0 || d.v4 < 0 || d.v5 < 0)
-			return -1;
-
-		long l = d.v0;
-		int shift = d.a0;
-		l |= (long) d.v1 << shift;
-		shift += d.a1;
-		l |= (long) d.v2 << shift;
-		shift += d.a2;
-		l |= (long) d.v3 << shift;
-		shift += d.a3;
-		l |= (long) d.v4 << shift;
-		shift += d.a4;
-		l |= (long) d.v5 << shift;
-		d.shift = shift + d.a5;
-
-		return l;
-	}
-
-	final public long calc7(Data4 d) {
-
-		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0 || d.v4 < 0 || d.v5 < 0 || d.v6 < 0)
-			return -1;
-
-		long l = d.v0;
-		int shift = d.a0;
-		l |= (long) d.v1 << shift;
-		shift += d.a1;
-		l |= (long) d.v2 << shift;
-		shift += d.a2;
-		l |= (long) d.v3 << shift;
-		shift += d.a3;
-		l |= (long) d.v4 << shift;
-		shift += d.a4;
-		l |= (long) d.v5 << shift;
-		shift += d.a5;
-		l |= (long) d.v6 << shift;
-		d.shift = shift + d.a6;
-
-		return l;
-	}
-
-	final public long calc8(Data4 d) {
-
-		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0 || d.v4 < 0 || d.v5 < 0 || d.v6 < 0 || d.v7 < 0)
-			return -1;
-
-		long l = d.v0;
-		int shift = d.a0;
-		l |= (long) d.v1 << shift;
-		shift += d.a1;
-		l |= (long) d.v2 << shift;
-		shift += d.a2;
-		l |= (long) d.v3 << shift;
-		shift += d.a3;
-		l |= (long) d.v4 << shift;
-		shift += d.a4;
-		l |= (long) d.v5 << shift;
-		shift += d.a5;
-		l |= (long) d.v6 << shift;
-		shift += d.a6;
-		l |= (long) d.v7 << shift;
-		d.shift = shift + d.a7;
-
-		return l;
-	}
-
-	/**
-	 * Maps a long to a integer value. This is very useful to save memory for
-	 * sparse data long values
-	 * 
-	 * @param node
-	 * @return the integer
-	 */
-	static public int misses = 0;
-	static public int good = 0;
-
-	/**
-	 * Write the data
-	 * 
-	 * @param dos
-	 * @throws IOException
-	 */
-	static public void writeData(DataOutputStream dos) throws IOException {
-
-		dos.writeInt(getFeatureSet().size());
-		for (Entry<String, HashMap<String, Integer>> e : getFeatureSet().entrySet()) {
-			dos.writeUTF(e.getKey());
-			dos.writeInt(e.getValue().size());
-
-			for (Entry<String, Integer> e2 : e.getValue().entrySet()) {
-
-				if (e2.getKey() == null)
-					DB.println("key " + e2.getKey() + " value " + e2.getValue() + " e -key " + e.getKey());
-				dos.writeUTF(e2.getKey());
-				dos.writeInt(e2.getValue());
-			}
-		}
-	}
-
-	public void read(DataInputStream din) throws IOException {
-
-		int size = din.readInt();
-		for (int i = 0; i < size; i++) {
-			String k = din.readUTF();
-			int size2 = din.readInt();
-
-			HashMap<String, Integer> h = new HashMap<String, Integer>();
-			getFeatureSet().put(k, h);
-			for (int j = 0; j < size2; j++) {
-				h.put(din.readUTF(), din.readInt());
-			}
-			getFeatureCounter().put(k, size2);
-		}
-
-		calculateBits();
-	}
-
-	/**
-	 * Clear the data
-	 */
-	static public void clearData() {
-		getFeatureSet().clear();
-		m_featureBits.clear();
-		getFeatureSet().clear();
-	}
-
-	@Override
-	public HashMap<String, Integer> getFeatureCounter() {
-		return m_featureCounters;
-	}
-
-	static public HashMap<String, HashMap<String, Integer>> getFeatureSet() {
-		return m_featureSets;
-	}
-
-	static public String[] reverse(HashMap<String, Integer> v) {
-		String[] set = new String[v.size()];
-		for (Entry<String, Integer> e : v.entrySet()) {
-			set[e.getValue()] = e.getKey();
-		}
-		return set;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/mtag/Options.java b/dependencyParser/mate-tools/src/is2/mtag/Options.java
deleted file mode 100755
index 20969ff..0000000
--- a/dependencyParser/mate-tools/src/is2/mtag/Options.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package is2.mtag;
-
-import is2.util.OptionsSuper;
-
-public final class Options extends OptionsSuper {
-
-	public Options(String[] args) {
-
-		for (int i = 0; i < args.length; i++) {
-
-			if (args[i].equals("--help"))
-				explain();
-
-			if (args[i].equals("-nonormalize")) {
-				normalize = false;
-			} else if (args[i].equals("-features")) {
-				features = args[i + 1];
-				i++;
-			} else if (args[i].equals("-hsize")) {
-				hsize = Integer.parseInt(args[i + 1]);
-				i++;
-			} else if (args[i].equals("-len")) {
-				maxLen = Integer.parseInt(args[i + 1]);
-				i++;
-			} else
-				super.addOption(args, i);
-		}
-	}
-
-	private void explain() {
-		System.out.println("Usage: ");
-		System.out.println("java -cp anna.jar is2.mtag.Tagger [Options]");
-		System.out.println();
-		System.out.println("Example: ");
-		System.out.println(
-				" java -cp mate.jar is2.mtag.Tagger -model eps3.model -train corpora/conll08st/train/train.closed -test corpora/conll08st/devel/devel.closed  -out b3.test -eval corpora/conll08st/devel/devel.closed  -count 2000 -i 6");
-		System.out.println("");
-		System.out.println("Options:");
-		System.out.println("");
-		System.out.println(" -train  <file>    the corpus a model is trained on; default " + this.trainfile);
-		System.out.println(" -test   <file>    the input corpus for testing; default " + this.testfile);
-		System.out.println(" -out    <file>    the output corpus (result) of a test run; default " + this.outfile);
-		System.out.println(" -model  <file>    the parsing model for traing the model is stored in the files");
-		System.out.println(
-				"                   and for parsing the model is load from this file; default " + this.modelName);
-		System.out.println(
-				" -i      <number>  the number of training iterations; good numbers are 10 for smaller corpora and 6 for bigger; default "
-						+ this.numIters);
-		System.out.println(" -count  <number>  the n first sentences of the corpus are take for the training default "
-				+ this.count);
-
-		System.exit(0);
-	}
-}
diff --git a/dependencyParser/mate-tools/src/is2/mtag/Pipe.java b/dependencyParser/mate-tools/src/is2/mtag/Pipe.java
deleted file mode 100755
index 75fb3fe..0000000
--- a/dependencyParser/mate-tools/src/is2/mtag/Pipe.java
+++ /dev/null
@@ -1,675 +0,0 @@
-package is2.mtag;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map.Entry;
-
-import is2.data.Cluster;
-import is2.data.F2SF;
-import is2.data.Instances;
-import is2.data.InstancesTagger;
-import is2.data.Long2Int;
-import is2.data.Long2IntInterface;
-import is2.data.ParametersFloat;
-import is2.data.PipeGen;
-import is2.data.SentenceData09;
-import is2.io.CONLLReader09;
-import is2.io.IOGenerals;
-import is2.tools.IPipe;
-import is2.util.OptionsSuper;
-
-final public class Pipe extends PipeGen implements IPipe {
-
-	public static int _CEND;
-
-	private static final String STWRD = "STWRD", STPOS = "STPOS", END = "END", STR = "STR";
-
-	public String[] types;
-
-	Cluster cl;
-
-	final public MFO mf = new MFO();
-	public Long2IntInterface li;
-
-	final MFO.Data4 d1 = new MFO.Data4(), d2 = new MFO.Data4(), d3 = new MFO.Data4(), dw = new MFO.Data4();
-	final MFO.Data4 dwp = new MFO.Data4(), dp = new MFO.Data4();
-
-	private OptionsSuper options;
-	private int _ewrd;
-	static private int _strp;
-
-	public Pipe(Options options, Long2Int long2Int) throws IOException {
-		this.options = options;
-
-		li = long2Int;
-	}
-
-	public Pipe(OptionsSuper options) {
-		this.options = options;
-	}
-
-	public HashMap<Integer, Integer> form2morph = new HashMap<Integer, Integer>();
-
-	@Override
-	public Instances createInstances(String file) {
-
-		CONLLReader09 depReader = new CONLLReader09(CONLLReader09.NO_NORMALIZE);
-
-		depReader.startReading(file);
-		mf.register(POS, "<root-POS>");
-
-		mf.register(FEAT, IOGenerals.NO_TYPE);
-		mf.register(FEAT, "");
-
-		InstancesTagger is = new InstancesTagger();
-
-		System.out.println("Registering feature parts ");
-
-		HashMap<String, HashSet<String>> op2form = new HashMap<String, HashSet<String>>();
-		HashMap<String, Integer> freq = new HashMap<String, Integer>();
-
-		int ic = 0;
-		while (true) {
-			SentenceData09 instance1 = depReader.getNext();
-			if (instance1 == null)
-				break;
-			ic++;
-
-			String[] w = instance1.forms;
-			for (String element : w)
-				mf.register(WORD, element);
-			for (String element : w)
-				registerChars(CHAR, element);
-			for (int i1 = 0; i1 < w.length; i1++) {
-				mf.register(WORD, w[i1].toLowerCase());
-				Integer f = freq.get(w[i1].toLowerCase());
-				if (f == null)
-					freq.put(w[i1].toLowerCase(), 1);
-				else
-					freq.put(w[i1].toLowerCase(), f + 1);
-
-				HashSet<String> forms = op2form.get(w[i1].toLowerCase());
-				if (forms == null) {
-					forms = new HashSet<String>();
-					op2form.put(w[i1].toLowerCase(), forms);
-				}
-				forms.add(instance1.ofeats[i1] == null ? "_" : instance1.ofeats[i1]);
-			}
-			for (String element : w)
-				registerChars(CHAR, element.toLowerCase());
-
-			w = instance1.plemmas;
-			for (String element : w)
-				mf.register(WORD, element);
-			for (String element : w)
-				registerChars(CHAR, element);
-
-			w = instance1.ppos;
-			for (String element : w)
-				mf.register(POS, element);
-
-			w = instance1.gpos;
-			for (String element : w)
-				mf.register(POS, element);
-
-			w = instance1.ofeats;
-			for (String element : w)
-				if (element != null)
-					mf.register(FEAT, element);
-
-			// w = instance1.pfeats;
-			// for(int i1 = 0; i1 < w.length; i1++) if (w[i1]!=null)
-			// mf.register(FEAT, w[i1]);
-		}
-
-		for (Entry<String, HashSet<String>> e : op2form.entrySet()) {
-			if (e.getValue().size() == 1 && freq.get(e.getKey()) > 10) {
-				// System.out.println("found map "+e.getKey()+" "+e.getValue()+"
-				// "+freq.get(e.getKey()));
-				form2morph.put(mf.getValue(PipeGen.WORD, e.getKey()),
-						mf.getValue(FEAT, (String) e.getValue().toArray()[0]));
-			}
-		}
-
-		initFeatures();
-
-		mf.calculateBits();
-		initValues();
-
-		System.out.println("" + mf.toString());
-
-		depReader.startReading(file);
-
-		int num1 = 0;
-		long start1 = System.currentTimeMillis();
-
-		System.out.print("Creating Features: ");
-		is.init(ic, mf);
-		int del = 0;
-
-		while (true) {
-			if (num1 % 100 == 0) {
-				del = outValue(num1, del);
-			}
-			SentenceData09 instance1 = depReader.getNext(is);
-			if (instance1 == null)
-				break;
-
-			if (num1 > options.count)
-				break;
-
-			num1++;
-		}
-		long end1 = System.currentTimeMillis();
-		System.gc();
-		long mem2 = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
-		System.out.print("  time " + (end1 - start1) + " mem " + (mem2 / 1024) + " kb");
-
-		types = new String[mf.getFeatureCounter().get(FEAT)];
-
-		for (Entry<String, Integer> e : MFO.getFeatureSet().get(FEAT).entrySet()) {
-			types[e.getValue()] = e.getKey();
-		}
-
-		if (options.clusterFile == null)
-			cl = new Cluster();
-		else
-			cl = new Cluster(options.clusterFile, mf, 6);
-
-		System.out.println("Num Features: " + types.length);
-
-		depReader.startReading(file);
-
-		int num11 = 0;
-
-		while (true) {
-
-			SentenceData09 instance = depReader.getNext();
-			if (instance == null)
-				break;
-
-			is.fillChars(instance, num11, _CEND);
-
-			if (num11 > options.count)
-				break;
-
-			num11++;
-		}
-
-		return is;// .toNativeArray();
-
-	}
-
-	private void registerChars(String type, String word) {
-		for (int i = 0; i < word.length(); i++)
-			mf.register(type, Character.toString(word.charAt(i)));
-	}
-
-	@Override
-	public void initValues() {
-		s_feat = MFO.getFeatureBits(FEAT);
-		s_word = MFO.getFeatureBits(WORD);
-		s_type = MFO.getFeatureBits(TYPE);
-		s_char = MFO.getFeatureBits(CHAR);
-		s_pos = MFO.getFeatureBits(POS);
-		// dl1.a[0] = s_type; dl1.a[1] = s_pos;
-		// for (int k = 2; k < 7; k++) dl1.a[k] = s_pos;
-
-		d1.a0 = s_type;
-		d1.a1 = s_feat;
-		d1.a2 = s_word;
-		d2.a0 = s_type;
-		d2.a1 = s_feat;
-		d2.a2 = s_feat;
-		d2.a3 = s_feat;
-		d2.a4 = s_feat;
-		d2.a5 = s_feat;
-		d2.a6 = s_feat;
-		d3.a0 = s_type;
-		d3.a1 = s_feat;
-		d3.a2 = s_char;
-		d3.a3 = s_char;
-		d3.a4 = s_char;
-		d3.a5 = s_char;
-		d3.a6 = s_char;
-		d3.a7 = s_char;
-		dp.a0 = s_type;
-		dp.a1 = s_feat;
-		dp.a2 = s_pos;
-		dp.a3 = s_pos;
-		dp.a4 = s_feat;// dp.a5= s_char; dp.a6= s_char; dp.a7= s_char;
-		dw.a0 = s_type;
-		dw.a1 = s_feat;
-		dw.a2 = s_word;
-		dw.a3 = s_word;
-		dw.a4 = s_word;
-		dw.a5 = s_word;
-		dw.a6 = s_word;
-		dw.a7 = s_word;
-		dwp.a0 = s_type;
-		dwp.a1 = s_feat;
-		dwp.a2 = s_word;
-		dwp.a3 = s_feat;
-		dwp.a4 = s_word;
-
-	}
-
-	public static short s_feat, s_word, s_type, s_dir, s_dist, s_char, s_pos;
-
-	/**
-	 * Initialize the features types.
-	 */
-	@Override
-	public void initFeatures() {
-
-		for (int t = 0; t < 62; t++) {
-			mf.register(TYPE, "F" + t);
-		}
-
-		// _mid = mf.register(POS, MID);
-		_strp = mf.register(POS, STR);
-		mf.register(POS, END);
-
-		mf.register(WORD, STR);
-		_ewrd = mf.register(WORD, END);
-
-		_CEND = mf.register(CHAR, END);
-
-		// optional features
-		mf.register(WORD, STWRD);
-		mf.register(POS, STPOS);
-
-	}
-
-	final public void addCF(InstancesTagger is, int ic, String fs, int i, int pfeat[], short ppos[], int[] forms,
-			int[] lemmas, long[] vs) {
-
-		int c0 = is.chars[ic][i][0], c1 = is.chars[ic][i][1], c2 = is.chars[ic][i][2], c3 = is.chars[ic][i][3],
-				c4 = is.chars[ic][i][4], c5 = is.chars[ic][i][5];
-		int e0 = is.chars[ic][i][6], e1 = is.chars[ic][i][7], e2 = is.chars[ic][i][8], e3 = is.chars[ic][i][9],
-				e4 = is.chars[ic][i][10];
-
-		int f = 1, n = 0;
-		short upper = 0, number = 1;
-		for (int k1 = 0; k1 < fs.length(); k1++) {
-			char c = fs.charAt(k1);
-			if (Character.isUpperCase(c)) {
-				if (k1 == 0)
-					upper = 1;
-				else {
-					// first char + another
-					if (upper == 1)
-						upper = 3;
-					// another uppercase in the word
-					else if (upper == 0)
-						upper = 2;
-				}
-			}
-
-			if (Character.isDigit(c) && k1 == 0)
-				number = 2;
-			else if (Character.isDigit(c) && number == 1)
-				number = 3;
-		}
-
-		int form = forms[i];
-
-		int len = forms.length;
-		long l;
-		d1.v0 = f++;
-		d1.v2 = form;
-		l = mf.calc3(d1);
-		vs[n++] = mf.calc3(d1);
-
-		d1.v0 = f++;
-		d1.v2 = is.formlc[ic][i];
-		vs[n++] = mf.calc3(d1);
-
-		d3.v2 = c0;
-		d3.v3 = c1;
-		d3.v4 = c2;
-		d3.v5 = c3;
-		d3.v6 = c4;
-		d3.v0 = f++;
-		vs[n++] = mf.calc3(d3);
-		d3.v0 = f++;
-		vs[n++] = mf.calc4(d3);
-		d3.v0 = f++;
-		vs[n++] = mf.calc5(d3);
-		d3.v0 = f++;
-		vs[n++] = mf.calc6(d3);
-		d3.v0 = f++;
-		vs[n++] = mf.calc7(d3);
-
-		if (form != -1) {
-			d3.v2 = c2;
-			d3.v3 = c3;
-			d3.v4 = c4;
-			d3.v5 = c5;
-			d3.v6 = cl.getLP(form);
-			d3.v0 = f;
-			vs[n++] = mf.calc6(d3);
-			d3.v0 = f + 1;
-			vs[n++] = mf.calc7(d3);
-		}
-		f += 2;
-
-		if (form > 0) {
-			d3.v0 = f;
-			d3.v5 = cl.getLP(form);
-			vs[n++] = mf.calc6(d3);
-			d3.v0 = f + 1;
-			d3.v4 = cl.getLP(form);
-			vs[n++] = mf.calc5(d3);
-			d3.v0 = f + 2;
-			d3.v3 = cl.getLP(form);
-			vs[n++] = mf.calc4(d3);
-		}
-		f += 3;
-
-		d3.v2 = e0;
-		d3.v3 = e1;
-		d3.v4 = e2;
-		d3.v5 = e3;
-		d3.v6 = e4;
-		d3.v0 = f++;
-		vs[n++] = mf.calc3(d3);
-		d3.v0 = f++;
-		vs[n++] = l = mf.calc4(d3);
-		vs[n++] = d3.calcs(3, upper, l);
-		d3.v0 = f++;
-		vs[n++] = l = mf.calc5(d3);
-		vs[n++] = d3.calcs(3, upper, l);
-		d3.v0 = f++;
-		vs[n++] = l = mf.calc6(d3);
-		vs[n++] = d3.calcs(3, upper, l);
-		d3.v0 = f++;
-		vs[n++] = l = mf.calc7(d3);
-		vs[n++] = d3.calcs(3, upper, l);
-
-		if (form > 0) {
-			d3.v0 = f;
-			d3.v5 = cl.getLP(form);
-			vs[n++] = mf.calc6(d3);
-			d3.v0 = f + 1;
-			d3.v4 = cl.getLP(form);
-			vs[n++] = mf.calc5(d3);
-			d3.v0 = f + 2;
-			d3.v3 = cl.getLP(form);
-			vs[n++] = mf.calc4(d3);
-		}
-		f += 3;
-
-		dw.v0 = f++;
-		dw.v2 = i + 1 < len ? forms[i + 1] : _ewrd;
-		dw.v3 = forms[i];
-		vs[n++] = mf.calc4(dw);
-
-		if (len > i + 1) {
-
-			dw.v0 = f;
-			dw.v2 = forms[i + 1];
-			vs[n++] = mf.calc3(dw);
-			d3.v0 = f + 1;
-			d3.v2 = is.chars[ic][i + 1][0];
-			vs[n++] = mf.calc3(d3);
-			d3.v0 = f + 2;
-			d3.v2 = is.chars[ic][i + 1][6];
-			vs[n++] = mf.calc3(d3);
-
-			d3.v2 = e0;
-			d3.v3 = e1;
-
-			d3.v0 = f + 3;
-			d3.v4 = is.chars[ic][i + 1][0];
-			vs[n++] = mf.calc5(d3);
-			d3.v0 = f + 4;
-			d3.v4 = is.chars[ic][i + 1][6];
-			vs[n++] = mf.calc5(d3);
-
-			if (is.chars[ic][i + 1][11] > 1) { // instance.forms[i+1].length()
-
-				d3.v0 = f + 5;
-				d3.v2 = is.chars[ic][i + 1][0];
-				d3.v3 = is.chars[ic][i + 1][1];
-				vs[n++] = mf.calc4(d3);
-				d3.v0 = f + 6;
-				d3.v2 = is.chars[ic][i + 1][6];
-				d3.v3 = is.chars[ic][i + 1][7];
-				vs[n++] = mf.calc4(d3);
-
-				d3.v2 = e0;
-				d3.v3 = e1;
-
-				d3.v0 = f + 7;
-				d3.v4 = is.chars[ic][i + 1][0];
-				d3.v5 = is.chars[ic][i + 1][1];
-				vs[n++] = mf.calc6(d3);
-				d3.v0 = f + 8;
-				d3.v4 = is.chars[ic][i + 1][6];
-				d3.v5 = is.chars[ic][i + 1][7];
-				vs[n++] = mf.calc6(d3);
-
-				if (forms[i + 1] > 0) {
-					d3.v0 = f + 9;
-					d3.v2 = is.chars[ic][i + 1][0];
-					d3.v3 = is.chars[ic][i + 1][1];
-					d3.v4 = cl.getLP(forms[i + 1]);
-					vs[n++] = mf.calc5(d3);
-					d3.v0 = f + 10;
-					d3.v2 = is.chars[ic][i + 1][6];
-					d3.v3 = is.chars[ic][i + 1][7];
-					d3.v4 = cl.getLP(forms[i + 1]);
-					vs[n++] = mf.calc5(d3);
-				}
-			}
-
-			if (forms[i + 1] > 0) {
-				dw.v0 = f + 11;
-				dw.v2 = cl.getLP(forms[i + 1]);
-				dw.v3 = forms[i];
-				vs[n++] = mf.calc4(dw);
-			}
-
-			if (len > i + 2) {
-				dw.v0 = f + 12;
-				dw.v2 = forms[i + 2];
-				dw.v3 = forms[i + 1];
-				vs[n++] = mf.calc4(dw);
-				vs[n++] = mf.calc3(dw);
-				// d2.v0=f+13; d2.v2=pfeat[i+1]; d2.v3= pfeat[i+2];
-				// vs[n++]=mf.calc4(d2);
-				// dp.v0= f+14; dp.v2=ppos[i+1]; dp.v3=ppos[i+2];
-				// vs[n++]=mf.calc4(dp);
-
-			}
-
-			if (len > i + 3) {
-				dw.v0 = f + 14;
-				dw.v2 = forms[i + 3];
-				dw.v3 = forms[i + 2];
-				vs[n++] = mf.calc4(dw);
-				vs[n++] = mf.calc3(dw);
-
-			}
-		}
-		f += 16;
-
-		// length
-		d2.v0 = f++;
-		d2.v2 = is.chars[ic][i][11];
-		vs[n++] = mf.calc3(d2);
-
-		// contains a number
-		d2.v0 = f++;
-		d2.v2 = number;
-		vs[n++] = mf.calc3(d2);
-		d1.v0 = f++;
-		d1.v2 = lemmas[i];
-		vs[n++] = mf.calc3(d1);
-
-		if (i != 0 && len > i + 1) {
-			dw.v0 = f;
-			dw.v2 = lemmas[i - 1];
-			dw.v3 = lemmas[i + 1];
-			vs[n++] = mf.calc4(dw);
-			d2.v0 = f + 1;
-			d2.v2 = pfeat[i - 1];
-			d2.v3 = pfeat[i + 1];
-			vs[n++] = mf.calc4(d2);
-		}
-		f += 2;
-
-		d2.v0 = f++;
-		d2.v2 = i >= 1 ? pfeat[i - 1] : _strp;
-		vs[n++] = mf.calc3(d2);
-		dp.v0 = f++;
-		dp.v2 = ppos[i];
-		vs[n++] = mf.calc3(dp);
-
-		if (i > 0) {
-			dw.v0 = f++;
-			dw.v2 = i >= 1 ? forms[i - 1] : _strp;
-			vs[n++] = mf.calc3(dw);
-			dw.v0 = f++;
-			dw.v2 = i >= 1 ? lemmas[i - 1] : _strp;
-			vs[n++] = mf.calc3(dw);
-
-			if (len > i + 1) {
-				// d2.v0=f; d2.v2= pfeat[i-1];d2.v3= pfeat[i+1];
-				// vs[n++]=mf.calc4(d2);
-				// dp.v0= f+1; dp.v2=ppos[i-1]; dp.v3=ppos[i+1];
-				// vs[n++]=mf.calc4(dp);
-
-			}
-			f++;
-			dp.v0 = f++;
-			dp.v2 = ppos[i];
-			dp.v3 = ppos[i - 1];
-			vs[n++] = mf.calc4(dp);
-
-			if (i > 1) {
-				d2.v0 = f++;
-				d2.v2 = i < 2 ? _strp : pfeat[i - 2];
-				vs[n++] = mf.calc3(d2);
-				d2.v0 = f++;
-				d2.v2 = pfeat[i - 1];
-				d2.v3 = pfeat[i - 2];
-				vs[n++] = mf.calc4(d2);
-
-				dw.v0 = f++;
-				dw.v2 = forms[i - 2];
-				vs[n++] = mf.calc3(dw);
-				dwp.v0 = f++;
-				dwp.v2 = forms[i - 1];
-				dwp.v3 = pfeat[i - 2];
-				vs[n++] = mf.calc4(dwp);
-				dwp.v0 = f++;
-				dwp.v2 = forms[i - 2];
-				dwp.v3 = pfeat[i - 1];
-				vs[n++] = mf.calc4(dwp);
-
-				if (i > 2) {
-					d2.v0 = f++;
-					d2.v2 = pfeat[i - 3];
-					vs[n++] = mf.calc3(d2);
-					d2.v0 = f++;
-					d2.v2 = pfeat[i - 2];
-					d2.v3 = pfeat[i - 3];
-					vs[n++] = mf.calc4(d2);
-					dw.v0 = f++;
-					dw.v2 = forms[i - 3];
-					dw.v3 = forms[i - 2];
-					vs[n++] = mf.calc4(dw);
-					// dp.v0= f++; dp.v2=ppos[i-3]; dp.v3=ppos[i-2];
-					// vs[n++]=mf.calc4(dp);
-				}
-			}
-		}
-		vs[n] = Integer.MIN_VALUE;
-	}
-
-	public int fillFeatureVectorsOne(ParametersFloat params, int w1, String form, Instances is, int n, int[] features,
-			long[] vs) {
-		double best = -1;
-		int bestType = -1;
-
-		F2SF f = new F2SF(params.parameters);
-		// is.gfeats[n]
-		addCF((InstancesTagger) is, n, form, w1, features, is.pposs[n], is.forms[n], is.plemmas[n], vs);
-
-		for (int t = 0; t < types.length; t++) {
-
-			f.clear();
-			int p = t << Pipe.s_type;
-			for (int k = vs.length - 1; k >= 0; k--)
-				if (vs[k] >= 0)
-					f.add(li.l2i(vs[k] + p));
-			if (f.score > best) {
-				bestType = t;
-				best = f.score;
-			}
-
-		}
-		return bestType;
-
-	}
-
-	// static ArrayList<T> todo = new ArrayList<T>();
-	static SentenceData09 instance;
-
-	public static int _FC = 200;
-
-	/**
-	 * Write the lemma that are not mapped by operations
-	 * 
-	 * @param dos
-	 */
-	public void writeMap(DataOutputStream dos) {
-
-		try {
-			dos.writeInt(this.form2morph.size());
-			for (Entry<Integer, Integer> e : form2morph.entrySet()) {
-				dos.writeInt(e.getKey());
-				dos.writeInt(e.getValue());
-			}
-		} catch (IOException e1) {
-			e1.printStackTrace();
-		}
-	}
-
-	/**
-	 * Read the form-lemma mapping not read by operations
-	 * 
-	 * @param dis
-	 */
-	public void readMap(DataInputStream dis) {
-		try {
-			int size = dis.readInt();
-			for (int i = 0; i < size; i++) {
-				form2morph.put(dis.readInt(), dis.readInt());
-			}
-		} catch (IOException e1) {
-			e1.printStackTrace();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.tools.IPipe#write(java.io.DataOutputStream)
-	 */
-	@Override
-	public void write(DataOutputStream dos) {
-		try {
-			cl.write(dos);
-			writeMap(dos);
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/mtag/Tagger.java b/dependencyParser/mate-tools/src/is2/mtag/Tagger.java
deleted file mode 100644
index 05aa8d7..0000000
--- a/dependencyParser/mate-tools/src/is2/mtag/Tagger.java
+++ /dev/null
@@ -1,386 +0,0 @@
-package is2.mtag;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.Map.Entry;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-import java.util.zip.ZipOutputStream;
-
-import is2.data.Cluster;
-import is2.data.FV;
-import is2.data.Instances;
-import is2.data.InstancesTagger;
-import is2.data.Long2Int;
-import is2.data.ParametersFloat;
-import is2.data.PipeGen;
-import is2.data.SentenceData09;
-import is2.io.CONLLReader09;
-import is2.io.CONLLWriter09;
-import is2.tools.IPipe;
-import is2.tools.Tool;
-import is2.tools.Train;
-import is2.util.DB;
-import is2.util.OptionsSuper;
-
-public class Tagger implements Tool, Train {
-
-	ExtractorM pipe;
-	ParametersFloat params;
-
-	/**
-	 * Initialize
-	 * 
-	 * @param options
-	 */
-	public Tagger(Options options) {
-
-		// load the model
-		try {
-			readModel(options);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-	}
-
-	/**
-	 * @param string
-	 * @throws IOException
-	 */
-	public Tagger(String modelFileName) {
-		this(new Options(new String[] { "-model", modelFileName }));
-	}
-
-	public Tagger() {
-	}
-
-	public static void main(String[] args) throws FileNotFoundException, Exception {
-
-		Options options = new Options(args);
-
-		Tagger tagger = new Tagger();
-
-		if (options.train) {
-
-			Long2Int li = new Long2Int(options.hsize);
-			tagger.pipe = new ExtractorM(options, li);
-			InstancesTagger is = (InstancesTagger) tagger.pipe.createInstances(options.trainfile);
-			ParametersFloat params = new ParametersFloat(li.size());
-
-			tagger.train(options, tagger.pipe, params, is);
-			tagger.writeModel(options, tagger.pipe, params);
-		}
-
-		if (options.test) {
-
-			tagger.readModel(options);
-			tagger.out(options, tagger.pipe, tagger.params);
-		}
-
-		if (options.eval) {
-
-			System.out.println("\nEvaluate:");
-			Evaluator.evaluate(options.goldfile, options.outfile, options.format);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.mtag2.Learn#writeModel(is2.mtag2.Options, is2.mtag2.Pipe,
-	 * is2.data.ParametersFloat)
-	 */
-	@Override
-	public void writeModel(OptionsSuper options, IPipe pipe, ParametersFloat params) {
-
-		try {
-			ZipOutputStream zos = new ZipOutputStream(
-					new BufferedOutputStream(new FileOutputStream(options.modelName)));
-			zos.putNextEntry(new ZipEntry("data"));
-			DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(zos));
-
-			MFO.writeData(dos);
-
-			MFO.clearData();
-
-			DB.println("number of parameters " + params.parameters.length);
-			dos.flush();
-			params.write(dos);
-			pipe.write(dos);
-			dos.flush();
-			dos.close();
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.mtag2.Learn#readModel(is2.mtag2.Options)
-	 */
-	@Override
-	public void readModel(OptionsSuper options) {
-
-		try {
-			pipe = new ExtractorM(options);
-			params = new ParametersFloat(0);
-
-			// load the model
-			ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(options.modelName)));
-			zis.getNextEntry();
-			DataInputStream dis = new DataInputStream(new BufferedInputStream(zis));
-			pipe.mf.read(dis);
-			pipe.initValues();
-			pipe.initFeatures();
-
-			params.read(dis);
-			pipe.li = new Long2Int(params.parameters.length);
-			pipe.cl = new Cluster(dis);
-			pipe.readMap(dis);
-			dis.close();
-
-			this.pipe.types = new String[pipe.mf.getFeatureCounter().get(PipeGen.FFEATS)];
-			for (Entry<String, Integer> e : MFO.getFeatureSet().get(PipeGen.FFEATS).entrySet())
-				this.pipe.types[e.getValue()] = e.getKey();
-
-			DB.println("Loading data finished. ");
-
-			DB.println("number of parameter " + params.parameters.length);
-			DB.println("number of classes   " + this.pipe.types.length);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.mtag2.Learn#train(is2.mtag2.Options, is2.mtag2.Pipe,
-	 * is2.data.ParametersFloat, is2.data.InstancesTagger)
-	 */
-	@Override
-	public void train(OptionsSuper options, IPipe pipe, ParametersFloat params, Instances is) {
-
-		int i = 0;
-		int del = 0;
-
-		String[] wds = MFO.reverse(MFO.getFeatureSet().get(PipeGen.WORD));
-		int numInstances = is.size();
-
-		float upd = (options.numIters * numInstances + 1);
-
-		for (i = 0; i < options.numIters; i++) {
-
-			long start = System.currentTimeMillis();
-
-			long last = System.currentTimeMillis();
-
-			FV pred = new FV(), gold = new FV();
-			int correct = 0, count = 0;
-
-			for (int n = 0; n < numInstances; n++) {
-
-				upd--;
-
-				if ((n + 1) % 500 == 0)
-					del = PipeGen.outValueErr(n + 1, (count - correct), (float) correct / (float) count, del, last,
-							upd);
-
-				int length = is.length(n);
-
-				int feats[] = new int[length];
-				long[] vs = new long[ExtractorM._FC];
-
-				for (int w1 = 0; w1 < length; w1++) {
-
-					count++;
-
-					if (this.pipe.form2morph.get(is.forms[n][w1]) != null) {
-						correct++;
-						continue;
-					}
-
-					int bestType = this.pipe.fillFeatureVectorsOne(params, w1, wds[is.forms[n][w1]], is, n,
-							is.gfeats[n], vs);
-					feats[w1] = bestType;
-
-					if (bestType == is.gfeats[n][w1]) {
-						correct++;
-						continue;
-					}
-
-					pred.clear();
-					int p = bestType << ExtractorM.s_type;
-					// System.out.println("test type "+bestType+" ex type
-					// "+ExtractorM.s_type);
-					for (long element : vs) {
-						if (element == Integer.MIN_VALUE)
-							break;
-						if (element >= 0)
-							pred.add(this.pipe.li.l2i(element + p));
-					}
-
-					gold.clear();
-					p = is.gfeats[n][w1] << ExtractorM.s_type;
-					for (long element : vs) {
-						if (element == Integer.MIN_VALUE)
-							break;
-						if (element >= 0)
-							gold.add(this.pipe.li.l2i(element + p));
-					}
-					params.update(pred, gold, upd, 1.0f);
-				}
-
-			}
-
-			long end = System.currentTimeMillis();
-			String info = "time " + (end - start);
-			del = PipeGen.outValueErr(numInstances, (count - correct), (float) correct / (float) count, del, last, 0,
-					info);
-
-			System.out.println();
-		}
-
-		params.average(i * is.size());
-
-	}
-
-	@Override
-	public void out(OptionsSuper options, IPipe pipe, ParametersFloat params) {
-
-		try {
-			long start = System.currentTimeMillis();
-
-			CONLLReader09 depReader = new CONLLReader09(options.testfile, options.formatTask);
-			CONLLWriter09 depWriter = new CONLLWriter09(options.outfile, options.formatTask);
-
-			depReader.normalizeOn = false;
-
-			System.out.print("Processing Sentence: ");
-			pipe.initValues();
-
-			int cnt = 0;
-			int del = 0;
-			while (true) {
-
-				InstancesTagger is = new InstancesTagger();
-				is.init(1, this.pipe.mf);
-				cnt++;
-
-				SentenceData09 instance = depReader.getNext(is);
-				if (instance == null || instance.forms == null)
-					break;
-				is.fillChars(instance, 0, ExtractorM._CEND);
-
-				instance = exec(instance, this.pipe, params, is);
-
-				SentenceData09 i09 = new SentenceData09(instance);
-				i09.createSemantic(instance);
-
-				if (options.overwritegold)
-					i09.ofeats = i09.pfeats;
-
-				depWriter.write(i09);
-
-				if (cnt % 100 == 0)
-					del = PipeGen.outValue(cnt, del);
-
-			}
-			depWriter.finishWriting();
-
-			del = PipeGen.outValue(cnt, del);
-
-			long end = System.currentTimeMillis();
-			System.out.println(PipeGen.getSecondsPerInstnace(cnt, (end - start)));
-			System.out.println(PipeGen.getUsedTime((end - start)));
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	private SentenceData09 exec(SentenceData09 instance, ExtractorM pipe, ParametersFloat params, InstancesTagger is) {
-
-		int length = instance.ppos.length;
-
-		short[] feats = new short[instance.gpos.length];
-
-		long vs[] = new long[ExtractorM._FC];
-
-		String[] forms = instance.forms;
-
-		instance.pfeats = new String[instance.gpos.length];
-
-		for (int j = 0; j < length; j++) {
-			if (pipe.form2morph.get(is.forms[0][j]) != null) {
-				feats[j] = (short) pipe.form2morph.get(is.forms[0][j]).intValue();
-				instance.pfeats[j] = this.pipe.types[feats[j]];
-			} else {
-
-				int bestType = pipe.fillFeatureVectorsOne(params, j, forms[j], is, 0, feats, vs);
-				feats[j] = (short) bestType;
-				instance.pfeats[j] = this.pipe.types[bestType];
-			}
-		}
-		for (int j = 0; j < length; j++) {
-			if (pipe.form2morph.get(is.forms[0][j]) != null) {
-				feats[j] = (short) pipe.form2morph.get(is.forms[0][j]).intValue();
-				instance.pfeats[j] = this.pipe.types[feats[j]];
-			} else {
-
-				int bestType = pipe.fillFeatureVectorsOne(params, j, forms[j], is, 0, feats, vs);
-				feats[j] = (short) bestType;
-				instance.pfeats[j] = this.pipe.types[bestType];
-			}
-		}
-		return instance;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.tools.Tool#apply(is2.data.SentenceData09)
-	 */
-	@Override
-	public SentenceData09 apply(SentenceData09 snt) {
-
-		try {
-			SentenceData09 it = new SentenceData09();
-			it.createWithRoot(snt);
-
-			InstancesTagger is = new InstancesTagger();
-			is.init(1, pipe.mf);
-			is.createInstance09(it.forms.length);
-
-			String[] forms = it.forms;
-
-			int length = forms.length;
-
-			// is.setForm(0, 0, CONLLReader09.ROOT);
-			for (int i = 0; i < length; i++)
-				is.setForm(0, i, forms[i]);
-			for (int i = 0; i < length; i++)
-				is.setLemma(0, i, it.plemmas[i]);
-			for (int i = 0; i < length; i++)
-				is.setPPoss(0, i, it.ppos[i]);
-
-			is.fillChars(it, 0, ExtractorM._CEND);
-
-			exec(it, pipe, params, is);
-			SentenceData09 i09 = new SentenceData09(it);
-			i09.createSemantic(it);
-			return i09;
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		return null;
-	}
-}
diff --git a/dependencyParser/mate-tools/src/is2/parser/Closed.java b/dependencyParser/mate-tools/src/is2/parser/Closed.java
deleted file mode 100755
index af491aa..0000000
--- a/dependencyParser/mate-tools/src/is2/parser/Closed.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package is2.parser;
-
-import is2.data.Parse;
-
-final public class Closed {
-
-	public float p;
-	// short b,e,m;
-	byte dir;
-
-	Closed d;
-	Open u;
-
-	public Closed(short s, short t, int m, int dir, Open u, Closed d, float score) {
-		// this.b = s;
-		// this.e = t;
-		// this.m = (short)m;
-		this.dir = (byte) dir;
-		this.u = u;
-		this.d = d;
-		p = score;
-	}
-
-	public void create(Parse parse) {
-		if (u != null)
-			u.create(parse);
-		if (d != null)
-			d.create(parse);
-	}
-}
diff --git a/dependencyParser/mate-tools/src/is2/parser/D5.java b/dependencyParser/mate-tools/src/is2/parser/D5.java
deleted file mode 100644
index 407b4e1..0000000
--- a/dependencyParser/mate-tools/src/is2/parser/D5.java
+++ /dev/null
@@ -1,293 +0,0 @@
-/**
- *
- */
-package is2.parser;
-
-import is2.data.DX;
-import is2.data.IFV;
-import is2.data.Long2IntInterface;
-
-/**
- * @author Dr. Bernd Bohnet, 30.10.2010
- *
- *
- */
-final public class D5 extends DX {
-
-	public long shift;
-	private long h;
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.parser52L.DX#cz2()
-	 */
-	final public void cz2() {
-
-		if (v0 < 0 || v1 < 0) {
-			shift = 0;
-			h = -1;
-			return;
-		}
-
-		h = v0 | v1 << (shift = a0);
-		shift += a1;
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.parser52L.DX#cz3()
-	 */
-	@Override
-	final public void cz3() {
-
-		if (v0 < 0 || v1 < 0 || v2 < 0) {
-			shift = 0;
-			h = -1;
-			return;
-
-		}
-
-		h = v0 | v1 << (shift = a0) | v2 << (shift += a1);
-		shift = shift + a2;
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.parser52L.DX#cz4()
-	 */
-	@Override
-	final public void cz4() {
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0) {
-			shift = 0;
-			h = -1;
-			return;
-		}
-
-		h = v0 | v1 << (shift = a0) | v2 << (shift += a1) | v3 << (shift += a2);
-		shift = shift + a3;
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.parser52L.DX#cz5()
-	 */
-	@Override
-	final public void cz5() {
-
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0) {
-			shift = 0;
-			h = -1;
-			return;
-		}
-
-		h = v0 | v1 << (shift = a0) | v2 << (shift += a1) | v3 << (shift += a2) | v4 << (shift += a3);
-		shift = shift + a4;
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.parser52L.DX#cz6()
-	 */
-	@Override
-	final public void cz6() {
-
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0) {
-			shift = 0;
-			h = -1;
-			return;
-		}
-
-		h = v0 | v1 << (shift = a0) | v2 << (shift += a1) | v3 << (shift += a2) | v4 << (shift += a3)
-				| v5 << (shift += a4);
-		shift = shift + a5;
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.parser52L.DX#cz7()
-	 */
-	@Override
-	final public void cz7() {
-
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0) {
-			shift = 0;
-			h = -1;
-			return;
-		}
-
-		h = v0 | v1 << (shift = a0) | v2 << (shift += a1) | v3 << (shift += a2) | v4 << (shift += a3)
-				| v5 << (shift += a4) | v6 << (shift += a5);
-		shift = shift + a6;
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.parser52L.DX#cz8()
-	 */
-	@Override
-	final public void cz8() {
-
-		if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0 || v7 < 0) {
-			h = -1;
-			shift = 0;
-			return;
-		}
-
-		h = v0 | v1 << (shift = a0) | v2 << (shift += a1) | v3 << (shift += a2) | v4 << (shift += a3)
-				| v5 << (shift += a4) | v6 << (shift += a5) | v7 << (shift += a6);
-		shift = shift + a7;
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.parser52L.DX#clean()
-	 */
-	@Override
-	final public void clean() {
-		v0 = 0;
-		v1 = 0;
-		v2 = 0;
-		v3 = 0;
-		v4 = 0;
-		v5 = 0;
-		v6 = 0;
-		v7 = 0;
-		v8 = 0;
-		shift = 0;
-		h = 0;
-	}
-
-	public final Long2IntInterface _li;
-
-	public D5(Long2IntInterface li) {
-		_li = li;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.parser52L.DX#cs(int, int)
-	 */
-	@Override
-	final public long cs(int b, int v) {
-		if (h < 0) {
-			h = -1;
-			shift = 0;
-			return -1;
-		}
-
-		h |= (long) v << shift;
-		shift += b;
-		if (shift > 64) {
-			System.out.println("shift too large " + shift);
-			new Exception().printStackTrace();
-		}
-
-		return h;
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.parser52L.DX#csa(int, int)
-	 */
-	@Override
-	final public long csa(int b, int v) {
-		if (h < 0) {
-			h = -1;
-			shift = 0;
-			return -1;
-		}
-
-		h |= (long) v << shift;
-		shift += b;
-		if (shift > 64) {
-			System.out.println("shift too large " + shift);
-			new Exception().printStackTrace();
-		}
-
-		return h;
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.parser52L.DX#csa(int, int, is2.data.IFV)
-	 */
-	@Override
-	final public void csa(int b, int v, IFV f) {
-		if (h < 0) {
-			h = -1;
-			shift = 0;
-			return;
-		}
-
-		h |= (long) v << shift;
-		shift += b;
-		if (shift > 64) {
-			System.out.println("shift too large " + shift);
-			new Exception().printStackTrace();
-		}
-
-		f.add(_li.l2i(h));
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.parser52L.DX#getVal()
-	 */
-	@Override
-	public long getVal() {
-		if (h < 0) {
-			h = -1;
-			shift = 0;
-			return h;
-		}
-		return h;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.parser52L.DX#map(is2.data.IFV, long)
-	 */
-	@Override
-	public void map(IFV f, long l) {
-		if (l > 0)
-			f.add(_li.l2i(l));
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.data.DX#computeLabeValue(short, short)
-	 */
-	@Override
-	public int computeLabeValue(int label, int shift) {
-		return label << shift;
-	}
-
-	@Override
-	public void fix() {
-
-	}
-
-}
\ No newline at end of file
diff --git a/dependencyParser/mate-tools/src/is2/parser/Decoder.java b/dependencyParser/mate-tools/src/is2/parser/Decoder.java
deleted file mode 100755
index 1fe2340..0000000
--- a/dependencyParser/mate-tools/src/is2/parser/Decoder.java
+++ /dev/null
@@ -1,243 +0,0 @@
-package is2.parser;
-
-import java.util.ArrayList;
-import java.util.concurrent.ExecutorService;
-
-import is2.data.DataFES;
-import is2.data.Parse;
-
-/**
- * @author Bernd Bohnet, 01.09.2009
- *
- *         This methods do the actual work and they build the dependency trees.
- */
-final public class Decoder {
-
-	public static final boolean TRAINING = true;
-	public static long timeDecotder;
-	public static long timeRearrange;
-
-	/**
-	 * Threshold for rearrange edges non-projective
-	 */
-	public static float NON_PROJECTIVITY_THRESHOLD = 0.3F;
-
-	static ExecutorService executerService = java.util.concurrent.Executors.newFixedThreadPool(Parser.THREADS);
-
-	// do not initialize
-	private Decoder() {
-	};
-
-	/**
-	 * Build a dependency tree based on the data
-	 * 
-	 * @param pos
-	 *            part-of-speech tags
-	 * @param x
-	 *            the data
-	 * @param projective
-	 *            projective or non-projective
-	 * @param edges
-	 *            the edges
-	 * @return a parse tree
-	 * @throws InterruptedException
-	 */
-	public static Parse decode(short[] pos, DataFES x, boolean projective, boolean training)
-			throws InterruptedException {
-
-		long ts = System.nanoTime();
-
-		if (executerService.isShutdown())
-			executerService = java.util.concurrent.Executors.newCachedThreadPool();
-		final int n = pos.length;
-
-		final Open O[][][][] = new Open[n][n][2][];
-		final Closed C[][][][] = new Closed[n][n][2][];
-
-		ArrayList<ParallelDecoder> pe = new ArrayList<ParallelDecoder>();
-
-		for (int i = 0; i < Parser.THREADS; i++)
-			pe.add(new ParallelDecoder(pos, x, O, C, n));
-
-		for (short k = 1; k < n; k++) {
-
-			// provide the threads the data
-			for (short s = 0; s < n; s++) {
-				short t = (short) (s + k);
-				if (t >= n)
-					break;
-
-				ParallelDecoder.add(s, t);
-			}
-
-			executerService.invokeAll(pe);
-		}
-
-		float bestSpanScore = (-1.0F / 0.0F);
-		Closed bestSpan = null;
-		for (int m = 1; m < n; m++)
-			if (C[0][n - 1][1][m].p > bestSpanScore) {
-				bestSpanScore = C[0][n - 1][1][m].p;
-				bestSpan = C[0][n - 1][1][m];
-			}
-
-		// build the dependency tree from the chart
-		Parse out = new Parse(pos.length);
-
-		bestSpan.create(out);
-
-		out.heads[0] = -1;
-		out.labels[0] = 0;
-
-		timeDecotder += (System.nanoTime() - ts);
-
-		ts = System.nanoTime();
-
-		if (!projective)
-			rearrange(pos, out.heads, out.labels, x, training);
-
-		timeRearrange += (System.nanoTime() - ts);
-
-		return out;
-	}
-
-	public static Parse[] decodeAll(short[] pos, DataFES x, boolean projective, boolean training)
-			throws InterruptedException {
-
-		long ts = System.nanoTime();
-
-		if (executerService.isShutdown())
-			executerService = java.util.concurrent.Executors.newCachedThreadPool();
-		final int n = pos.length;
-
-		final Open O[][][][] = new Open[n][n][2][];
-		final Closed C[][][][] = new Closed[n][n][2][];
-
-		ArrayList<ParallelDecoder> pe = new ArrayList<ParallelDecoder>();
-
-		for (int i = 0; i < Parser.THREADS; i++)
-			pe.add(new ParallelDecoder(pos, x, O, C, n));
-
-		for (short k = 1; k < n; k++) {
-
-			// provide the threads the data
-			for (short s = 0; s < n; s++) {
-				short t = (short) (s + k);
-				if (t >= n)
-					break;
-
-				ParallelDecoder.add(s, t);
-			}
-
-			executerService.invokeAll(pe);
-		}
-
-		Parse[] out = new Parse[n - 1];
-
-		// float bestSpanScore = (-1.0F / 0.0F);
-		// Closed bestSpan = null;
-		for (int m = 1; m < n; m++) {
-			// if (C[0][n - 1][1][m].p > bestSpanScore) {
-			// bestSpanScore = C[0][n - 1][1][m].p;
-			// bestSpan = C[0][n - 1][1][m];
-			// }
-			out[m - 1] = new Parse(pos.length);
-			C[0][n - 1][1][m].create(out[m - 1]);
-			out[m - 1].heads[0] = -1;
-			out[m - 1].labels[0] = 0;
-		}
-
-		// build the dependency tree from the chart
-		// Parse out= new Parse(pos.length);
-
-		// bestSpan.create(out);
-
-		// out.heads[0]=-1;
-		// out.labels[0]=0;
-
-		timeDecotder += (System.nanoTime() - ts);
-
-		ts = System.nanoTime();
-
-		if (!projective)
-			for (Parse p : out)
-				rearrange(pos, p.heads, p.labels, x, training);
-		// if (!projective) rearrange(pos, out.heads, out.labels,x,training);
-
-		timeRearrange += (System.nanoTime() - ts);
-
-		return out;
-	}
-
-	/**
-	 * This is the parallel non-projective edge re-arranger
-	 * 
-	 * @param pos
-	 *            part-of-speech tags
-	 * @param heads
-	 *            parent child relation
-	 * @param labs
-	 *            edge labels
-	 * @param x
-	 *            the data
-	 * @param edges
-	 *            the existing edges defined by part-of-speech tags
-	 * @throws InterruptedException
-	 */
-	public static void rearrange(short[] pos, short[] heads, short[] labs, DataFES x, boolean training)
-			throws InterruptedException {
-
-		int threads = (pos.length > Parser.THREADS) ? Parser.THREADS : pos.length;
-
-		// wh what to change, nPar - new parent, nType - new type
-		short wh = -1, nPar = -1, nType = -1;
-		ArrayList<ParallelRearrange> pe = new ArrayList<ParallelRearrange>();
-
-		while (true) {
-			boolean[][] isChild = new boolean[heads.length][heads.length];
-			for (int i = 1, l1 = 1; i < heads.length; i++, l1 = i)
-				while ((l1 = heads[l1]) != -1)
-					isChild[l1][i] = true;
-
-			float max = Float.NEGATIVE_INFINITY;
-			float p = Extractor.encode3(pos, heads, labs, x);
-
-			pe.clear();
-			for (int i = 0; i < threads; i++)
-				pe.add(new ParallelRearrange(isChild, pos, x, heads, labs));
-
-			for (int ch = 1; ch < heads.length; ch++) {
-
-				for (short pa = 0; pa < heads.length; pa++) {
-					if (ch == pa || pa == heads[ch] || isChild[ch][pa])
-						continue;
-
-					ParallelRearrange.add(p, (short) ch, pa);
-				}
-			}
-			executerService.invokeAll(pe);
-
-			for (ParallelRearrange.PA rp : ParallelRearrange.order)
-				if (max < rp.max) {
-					max = rp.max;
-					wh = rp.wh;
-					nPar = rp.nPar;
-					nType = rp.nType;
-				}
-			ParallelRearrange.order.clear();
-
-			if (max <= NON_PROJECTIVITY_THRESHOLD)
-				break; // bb: changed from 0.0
-
-			heads[wh] = nPar;
-			labs[wh] = nType;
-
-		}
-	}
-
-	public static String getInfo() {
-
-		return "Decoder non-projectivity threshold: " + NON_PROJECTIVITY_THRESHOLD;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/parser/Edges.java b/dependencyParser/mate-tools/src/is2/parser/Edges.java
deleted file mode 100644
index 39a0190..0000000
--- a/dependencyParser/mate-tools/src/is2/parser/Edges.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/**
- *
- */
-package is2.parser;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Map.Entry;
-
-/**
- * @author Dr. Bernd Bohnet, 13.05.2009;
- *
- *
- */
-public final class Edges {
-
-	private static short[][][] edges;
-	private static HashMap<Short, Integer> labelCount = new HashMap<Short, Integer>();
-
-	private static HashMap<String, Integer> slabelCount = new HashMap<String, Integer>();
-
-	static short[] def = new short[1];
-
-	private Edges() {
-	}
-
-	/**
-	 * @param length
-	 */
-	public static void init(int length) {
-		edges = new short[length][length][];
-	}
-
-	public static void findDefault() {
-
-		int best = 0;
-
-		for (Entry<Short, Integer> e : labelCount.entrySet()) {
-
-			if (best < e.getValue()) {
-				best = e.getValue();
-				def[0] = e.getKey();
-			}
-		}
-
-		// labelCount=null;
-		// String[] types = new String[mf.getFeatureCounter().get(PipeGen.REL)];
-		// for (Entry<String, Integer> e :
-		// MFO.getFeatureSet().get(PipeGen.REL).entrySet()) types[e.getValue()]
-		// = e.getKey();
-
-		is2.util.DB.println("set default label to " + def[0] + " ");
-
-		// System.out.println("found default "+def[0]);
-
-	}
-
-	final static public void put(int pos1, int pos2, short label) {
-		putD(pos1, pos2, label);
-		// putD(pos2, pos1,!dir, label);
-	}
-
-	final static public void putD(int pos1, int pos2, short label) {
-
-		Integer lc = labelCount.get(label);
-		if (lc == null)
-			labelCount.put(label, 1);
-		else
-			labelCount.put(label, lc + 1);
-
-		String key = pos1 + "-" + pos2 + label;
-		Integer lcs = slabelCount.get(key);
-		if (lcs == null)
-			slabelCount.put(key, 1);
-		else
-			slabelCount.put(key, lcs + 1);
-
-		if (edges[pos1][pos2] == null) {
-			edges[pos1][pos2] = new short[1];
-			edges[pos1][pos2][0] = label;
-
-			// edgesh[pos1][pos2][dir?0:1] = new TIntHashSet(2);
-			// edgesh[pos1][pos2][dir?0:1].add(label);
-		} else {
-			short labels[] = edges[pos1][pos2];
-			for (short l : labels) {
-				// contains label already?
-				if (l == label)
-					return;
-			}
-
-			short[] nlabels = new short[labels.length + 1];
-			System.arraycopy(labels, 0, nlabels, 0, labels.length);
-			nlabels[labels.length] = label;
-			edges[pos1][pos2] = nlabels;
-
-			// edgesh[pos1][pos2][dir?0:1].add(label);
-		}
-	}
-
-	final static public short[] get(int pos1, int pos2) {
-
-		if (pos1 < 0 || pos2 < 0 || edges[pos1][pos2] == null)
-			return def;
-		return edges[pos1][pos2];
-	}
-
-	/**
-	 * @param dis
-	 */
-	static public void write(DataOutputStream d) throws IOException {
-
-		int len = edges.length;
-		d.writeShort(len);
-
-		for (int p1 = 0; p1 < len; p1++) {
-			for (int p2 = 0; p2 < len; p2++) {
-				if (edges[p1][p2] == null)
-					d.writeShort(0);
-				else {
-					d.writeShort(edges[p1][p2].length);
-					for (int l = 0; l < edges[p1][p2].length; l++) {
-						d.writeShort(edges[p1][p2][l]);
-					}
-
-				}
-			}
-		}
-
-		d.writeShort(def[0]);
-
-	}
-
-	/**
-	 * @param dis
-	 */
-	public static void read(DataInputStream d) throws IOException {
-		int len = d.readShort();
-
-		edges = new short[len][len][];
-		for (int p1 = 0; p1 < len; p1++) {
-			for (int p2 = 0; p2 < len; p2++) {
-				int ll = d.readShort();
-				if (ll == 0) {
-					edges[p1][p2] = null;
-				} else {
-					edges[p1][p2] = new short[ll];
-					for (int l = 0; l < ll; l++) {
-						edges[p1][p2][l] = d.readShort();
-					}
-				}
-			}
-		}
-
-		def[0] = d.readShort();
-
-	}
-
-	public static void print() {
-		for(int i = 0; i < edges.length; ++i)
-			for(int j = 0; j < edges[i].length; ++j)
-				if(edges[i][j] != null)
-					System.out.println("edges[" + i + "][" + j + "] = " + Arrays.toString(edges[i][j]));
-		
-		assert def.length == 0;
-		System.out.println("def = [" + def[0] + "]");
-	}
-	
-	public static class C implements Comparator<Short> {
-
-		public C() {
-			super();
-		}
-
-		String _key;
-
-		public C(String key) {
-			super();
-			_key = key;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
-		 */
-		@Override
-		public int compare(Short l1, Short l2) {
-
-			// int c1 = labelCount.get(l1);
-			// int c2 = labelCount.get(l2);
-			// if (true) return c1==c2?0:c1>c2?-1:1;
-
-			int x1 = slabelCount.get(_key + l1.shortValue());
-			int x2 = slabelCount.get(_key + l2.shortValue());
-			// System.out.println(x1+" "+x2);
-
-			return x1 == x2 ? 0 : x1 > x2 ? -1 : 1;
-
-		}
-
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/parser/Evaluator.java b/dependencyParser/mate-tools/src/is2/parser/Evaluator.java
deleted file mode 100755
index f0d45ec..0000000
--- a/dependencyParser/mate-tools/src/is2/parser/Evaluator.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package is2.parser;
-
-import is2.data.SentenceData09;
-import is2.io.CONLLReader09;
-
-public class Evaluator {
-
-	public static final String PUNCT = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
-
-	public static class Results {
-
-		public int total;
-		public int corr;
-		public float las;
-		public float ula;
-
-	}
-
-	public static Results evaluate(String act_file, String pred_file) throws Exception {
-
-		CONLLReader09 goldReader = new CONLLReader09(act_file, -1);
-		CONLLReader09 predictedReader = new CONLLReader09(pred_file, -1);
-
-		int total = 0, corr = 0, corrL = 0;
-		int numsent = 0, corrsent = 0, corrsentL = 0;
-		SentenceData09 goldInstance = goldReader.getNext();
-		SentenceData09 predInstance = predictedReader.getNext();
-
-		while (goldInstance != null) {
-
-			int instanceLength = goldInstance.length();
-
-			if (instanceLength != predInstance.length())
-				System.out.println("Lengths do not match on sentence " + numsent);
-
-			int[] goldHeads = goldInstance.heads;
-			String[] goldLabels = goldInstance.labels;
-			int[] predHeads = predInstance.heads;
-			String[] predLabels = predInstance.labels;
-
-			boolean whole = true;
-			boolean wholeL = true;
-
-			// NOTE: the first item is the root info added during
-			// nextInstance(), so we skip it.
-
-			int punc = 0;
-			for (int i = 1; i < instanceLength; i++) {
-				if (predHeads[i] == goldHeads[i]) {
-					corr++;
-
-					if (goldLabels[i].equals(predLabels[i]))
-						corrL++;
-					else {
-						// System.out.println(numsent+" error gold
-						// "+goldLabels[i]+" "+predLabels[i]+" head
-						// "+goldHeads[i]+" child "+i);
-						wholeL = false;
-					}
-				} else {
-					// System.out.println(numsent+"error gold "+goldLabels[i]+"
-					// "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
-					whole = false;
-					wholeL = false;
-				}
-			}
-			total += ((instanceLength - 1) - punc); // Subtract one to not score
-													// fake root token
-
-			if (whole)
-				corrsent++;
-			if (wholeL)
-				corrsentL++;
-			numsent++;
-
-			goldInstance = goldReader.getNext();
-			predInstance = predictedReader.getNext();
-		}
-
-		Results r = new Results();
-
-		r.total = total;
-		r.corr = corr;
-		r.las = (float) Math.round(((double) corrL / total) * 100000) / 1000;
-		r.ula = (float) Math.round(((double) corr / total) * 100000) / 1000;
-		System.out.print("Total: " + total + " \tCorrect: " + corr + " ");
-		System.out.println("LAS: " + (double) Math.round(((double) corrL / total) * 100000) / 1000 + " \tTotal: "
-				+ (double) Math.round(((double) corrsentL / numsent) * 100000) / 1000 + " \tULA: "
-				+ (double) Math.round(((double) corr / total) * 100000) / 1000 + " \tTotal: "
-				+ (double) Math.round(((double) corrsent / numsent) * 100000) / 1000);
-
-		return r;
-	}
-
-	public static float round(double v) {
-
-		return Math.round(v * 10000F) / 10000F;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/parser/Extractor.java b/dependencyParser/mate-tools/src/is2/parser/Extractor.java
deleted file mode 100755
index 3ba9cc9..0000000
--- a/dependencyParser/mate-tools/src/is2/parser/Extractor.java
+++ /dev/null
@@ -1,1726 +0,0 @@
-package is2.parser;
-
-import is2.data.Cluster;
-import is2.data.D6;
-import is2.data.DX;
-import is2.data.DataFES;
-import is2.data.F2SF;
-import is2.data.FV;
-import is2.data.IFV;
-import is2.data.Instances;
-import is2.data.Long2IntInterface;
-import is2.data.PipeGen;
-import is2.util.DB;
-import is2.util.OptionsSuper;
-
-final public class Extractor {
-
-	static final int _SIB = 85;
-	public static int s_rel, s_word, s_type, s_dir, s_dist, s_feat, s_child, s_spath, s_lpath, s_pos, s_rel1;
-	public final DX d0, dl1, dl2, dwr, dr, dwwp, dw, dwp, dlf, d3lp, d2lp, d2pw, d2pp;
-
-	public final Long2IntInterface li;
-
-	public boolean s_stack = false;
-
-	public Extractor(Long2IntInterface li, boolean stack, int what) {
-
-		s_stack = stack;
-
-		this.li = li;
-
-		if (what == OptionsSuper.MULTIPLICATIVE) {
-			d0 = new D6(li);
-			dl1 = new D6(li);
-			dl2 = new D6(li);
-			dwr = new D6(li);
-			dr = new D6(li);
-			dwwp = new D6(li);
-			dw = new D6(li);
-			dwp = new D6(li);
-			dlf = new D6(li);
-			d3lp = new D6(li);
-			d2lp = new D6(li);
-			d2pw = new D6(li);
-			d2pp = new D6(li);
-		} else {
-			d0 = new D5(li);
-			dl1 = new D5(li);
-			dl2 = new D5(li);
-			dwr = new D5(li);
-			dr = new D5(li);
-			dwwp = new D5(li);
-			dw = new D5(li);
-			dwp = new D5(li);
-			dlf = new D5(li);
-			d3lp = new D5(li);
-			d2lp = new D5(li);
-			d2pw = new D5(li);
-			d2pp = new D5(li);
-		}
-
-	}
-
-	public static void initStat(int what) {
-		MFO mf = new MFO();
-		if (what == OptionsSuper.MULTIPLICATIVE) {
-
-			DB.println("mult  (d4) ");
-
-			s_rel = mf.getFeatureCounter().get(REL).intValue() * 16;
-			s_rel1 = mf.getFeatureCounter().get(REL).intValue() + 1;
-			s_pos = mf.getFeatureCounter().get(POS).intValue();
-			s_word = mf.getFeatureCounter().get(WORD).intValue();
-			s_type = mf.getFeatureCounter().get(TYPE).intValue();
-			s_dir = (mf.getFeatureCounter().get(DIR));
-			la = (mf.getValue(DIR, LA));
-			ra = (mf.getValue(DIR, RA));
-			s_dist = (mf.getFeatureCounter().get(DIST));// mf.getFeatureBits(DIST);
-			s_feat = (mf.getFeatureCounter().get(PipeGen.FEAT));// mf.getFeatureBits(Pipe.FEAT);
-			s_spath = (mf.getFeatureCounter().get(Cluster.SPATH) == null ? 0
-					: mf.getFeatureCounter().get(Cluster.SPATH));// mf.getFeatureBits(Cluster.SPATH);
-			s_lpath = (mf.getFeatureCounter().get(Cluster.LPATH) == null ? 0
-					: mf.getFeatureCounter().get(Cluster.LPATH));// mf.getFeatureBits(Cluster.LPATH);
-
-		} else {
-
-			s_rel = MFO.getFeatureBits(REL);
-			s_pos = MFO.getFeatureBits(POS);
-			s_word = MFO.getFeatureBits(WORD);
-			s_type = MFO.getFeatureBits(TYPE);
-			s_dir = MFO.getFeatureBits(DIR);
-			la = mf.getValue(DIR, LA);
-			ra = mf.getValue(DIR, RA);
-			s_dist = MFO.getFeatureBits(DIST);
-			s_feat = MFO.getFeatureBits(PipeGen.FEAT);
-			s_spath = MFO.getFeatureBits(Cluster.SPATH);
-			s_lpath = MFO.getFeatureBits(Cluster.LPATH);
-
-			DB.println("shift init (d5) ");
-		}
-
-	}
-
-	public void init() {
-
-		d0.a0 = s_type;
-		d0.a1 = s_pos;
-		d0.a2 = s_pos;
-		d0.a3 = s_pos;
-		d0.a4 = s_pos;
-		d0.a5 = s_pos;
-		d0.a6 = s_pos;
-		d0.a7 = s_pos;
-		d0.fix();
-		dl1.a0 = s_type;
-		dl1.a1 = s_rel;
-		dl1.a2 = s_pos;
-		dl1.a3 = s_pos;
-		dl1.a4 = s_pos;
-		dl1.a5 = s_pos;
-		dl1.a6 = s_pos;
-		dl1.a7 = s_pos;
-		dl1.fix();
-		dl2.a0 = s_type;
-		dl2.a1 = s_rel;
-		dl2.a2 = s_word;
-		dl2.a3 = s_pos;
-		dl2.a4 = s_pos;
-		dl2.a5 = s_pos;
-		dl2.a6 = s_pos;
-		dl2.a7 = s_pos;
-		dl2.fix();
-		dwp.a0 = s_type;
-		dwp.a1 = s_rel;
-		dwp.a2 = s_word;
-		dwp.a3 = s_pos;
-		dwp.a4 = s_pos;
-		dwp.a5 = s_word;
-		dwp.fix();
-		dwwp.a0 = s_type;
-		dwwp.a1 = s_rel;
-		dwwp.a2 = s_word;
-		dwwp.a3 = s_word;
-		dwwp.a4 = s_pos;
-		dwwp.a5 = s_word;
-		dwwp.fix();
-		dlf.a0 = s_type;
-		dlf.a1 = s_rel;
-		dlf.a2 = s_pos;
-		dlf.a3 = s_pos;
-		dlf.a4 = s_feat;
-		dlf.a5 = s_feat;
-		dlf.a6 = s_pos;
-		dlf.a7 = s_pos;
-		dlf.fix();
-		d3lp.a0 = s_type;
-		d3lp.a1 = s_rel;
-		d3lp.a2 = s_lpath;
-		d3lp.a3 = s_lpath;
-		d3lp.a4 = s_lpath;
-		d3lp.a5 = s_word;
-		d3lp.a6 = s_spath;
-		d3lp.a7 = s_spath;
-		d3lp.fix();
-		d2lp.a0 = s_type;
-		d2lp.a1 = s_rel;
-		d2lp.a2 = s_lpath;
-		d2lp.a3 = s_lpath;
-		d2lp.a4 = s_word;
-		d2lp.a5 = s_word;
-		d2lp.fix(); // d3lp.a6 = s_spath; d3lp.a7 = s_spath;
-		d2pw.a0 = s_type;
-		d2pw.a1 = s_rel;
-		d2pw.a2 = s_lpath;
-		d2pw.a3 = s_lpath;
-		d2pw.a4 = s_word;
-		d2pw.a5 = s_word;
-		d2pw.fix(); // d3lp.a6 = s_spath; d3lp.a7 = s_spath;
-		d2pp.a0 = s_type;
-		d2pp.a1 = s_rel;
-		d2pp.a2 = s_lpath;
-		d2pp.a3 = s_lpath;
-		d2pp.a4 = s_pos;
-		d2pp.a5 = s_pos;
-		d2pp.fix(); // d3lp.a6 = s_spath; d3lp.a7 = s_spath;
-	}
-
-	public int basic(short[] pposs, int p, int d, IFV f) {
-
-		d0.clean();
-		dl1.clean();
-		dl2.clean();
-		dwp.clean();
-		dwwp.clean();
-		dlf.clean();
-		d3lp.clean();
-
-		d3lp.clean();
-		d2lp.clean();
-		d2pw.clean();
-		d2pp.clean();
-
-		int n = 1;
-		int dir = (p < d) ? ra : la;
-		d0.v0 = n++;
-		d0.v1 = pposs[p];
-		d0.v2 = pposs[d]; // d0.stop=4;
-		int end = (p >= d ? p : d);
-		int start = (p >= d ? d : p) + 1;
-
-		for (int i = start; i < end; i++) {
-			d0.v3 = pposs[i];
-			d0.cz4();
-			d0.csa(s_dir, dir, f);
-		}
-		return n;
-	}
-
-	public int firstm(Instances is, int i, int prnt, int dpnt, int label, Cluster cluster, long[] f) {
-
-		for (int k = 0; k < f.length; k++)
-			f[k] = 0;
-
-		short[] pposs = is.pposs[i];
-		int[] form = is.forms[i];
-		short[][] feats = is.feats[i];
-
-		int pF = form[prnt], dF = form[dpnt];
-		int pL = is.plemmas[i][prnt], dL = is.plemmas[i][dpnt];
-		int pP = pposs[prnt], dP = pposs[dpnt];
-
-		int prntLS = pF == -1 ? -1 : cluster.getLP(pF), chldLS = dF == -1 ? -1 : cluster.getLP(dF);
-
-		// final int dir= (prnt < dpnt)? ra:la;
-
-		if (pF > maxForm)
-			pF = -1;
-		if (pL > maxForm)
-			pL = -1;
-
-		if (dF > maxForm)
-			dF = -1;
-		if (dL > maxForm)
-			dL = -1;
-
-		int n = 3, c = 0;
-
-		dl2.v1 = label;
-		dl2.v0 = n++;
-		dl2.v2 = pF;
-		dl2.v3 = dP;
-		dl2.cz4();
-		f[c++] = dl2.getVal();
-		dl2.v0 = n++;
-		dl2.cz3();
-		f[c++] = dl2.getVal();
-		dl2.v0 = n++;
-		dl2.v2 = dF;
-		dl2.v3 = pP;
-		dl2.cz4();
-		f[c++] = dl2.getVal();
-		dl2.v0 = n++;
-		dl2.cz3();
-		f[c++] = dl2.getVal();
-
-		dwwp.v1 = label;
-		dwwp.v0 = n++;
-		dwwp.v2 = pF;
-		dwwp.v3 = dF;
-		dwwp.cz4();
-		f[c++] = dwwp.getVal();
-
-		dl1.v1 = label;
-		dl1.v0 = n++;
-		dl1.v2 = dP;
-		dl1.cz3();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = pP;
-		dl1.cz3();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v3 = dP;
-		dl1.cz4();
-		f[c++] = dl1.getVal();
-
-		int pPm1 = prnt > 0 ? pposs[prnt - 1] : s_str, dPm1 = dpnt > 0 ? pposs[dpnt - 1] : s_str;
-		int pPp1 = prnt < pposs.length - 1 ? pposs[prnt + 1] : s_end,
-				dPp1 = dpnt < pposs.length - 1 ? pposs[dpnt + 1] : s_end;
-
-		int pPm2 = prnt > 1 ? pposs[prnt - 2] : s_str, dPm2 = dpnt > 1 ? pposs[dpnt - 2] : s_str;
-		int pPp2 = prnt < pposs.length - 2 ? pposs[prnt + 2] : s_end,
-				dPp2 = dpnt < pposs.length - 2 ? pposs[dpnt + 2] : s_end;
-
-		int pFm1 = prnt > 0 ? form[prnt - 1] : s_stwrd, dFm1 = dpnt > 0 ? form[dpnt - 1] : s_stwrd;
-		int pFp1 = prnt < form.length - 1 ? form[prnt + 1] : s_stwrd,
-				dFp1 = dpnt < form.length - 1 ? form[dpnt + 1] : s_stwrd;
-
-		if (prnt - 1 == dpnt)
-			pPm1 = -1;
-		if (prnt == dpnt - 1)
-			dPm1 = -1;
-
-		if (prnt + 1 == dpnt)
-			pPp1 = -1;
-		if (prnt == dpnt + 1)
-			dPp1 = -1;
-
-		if (prnt - 2 == dpnt)
-			pPm2 = -1;
-		if (prnt == dpnt - 2)
-			dPm2 = -1;
-
-		if (prnt + 2 == dpnt)
-			pPp2 = -1;
-		if (prnt == dpnt + 2)
-			dPp2 = -1;
-
-		dl1.v0 = n++;
-		dl1.v2 = pP;
-		dl1.v3 = pPp1;
-		dl1.v4 = dP;
-		dl1.v5 = dPp1;
-		dl1.v6 = (prnt + 1 == dpnt ? 4 : prnt == dpnt + 1 ? 5 : 6);
-		dl1.cz7();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v5 = dPm1;
-		dl1.v6 = (prnt + 1 == dpnt ? 4 : prnt == dpnt - 1 ? 5 : 6);
-		dl1.cz7();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v3 = pPm1;
-		dl1.v6 = (prnt - 1 == dpnt ? 4 : prnt == dpnt - 1 ? 5 : 6);
-		dl1.cz7();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v5 = dPp1;
-		dl1.v6 = (prnt - 1 == dpnt ? 4 : prnt == dpnt + 1 ? 5 : 6);
-		dl1.cz7();
-		f[c++] = dl1.getVal();
-
-		dl1.v0 = n++;
-		dl1.v3 = pPm1;
-		dl1.v5 = (prnt - 1 == dpnt ? 4 : 5);
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v3 = dPm1;
-		dl1.v5 = (prnt == dpnt - 1 ? 4 : 5);
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v3 = dPp1;
-		dl1.v5 = (prnt == dpnt + 1 ? 4 : 5);
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v3 = pPp1;
-		dl1.v5 = (prnt + 1 == dpnt ? 4 : 5);
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-
-		dl1.v0 = n++;
-		dl1.v2 = pP;
-		dl1.v3 = pPp2;
-		dl1.v4 = dP;
-		dl1.v5 = dPp2;
-		dl1.v6 = (prnt + 2 == dpnt ? 4 : prnt == dpnt + 2 ? 5 : 6);
-		dl1.cz7();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v5 = dPm2;
-		dl1.v6 = (prnt + 2 == dpnt ? 4 : prnt == dpnt - 2 ? 5 : 6);
-		dl1.cz7();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v3 = pPm2;
-		dl1.v6 = (prnt - 2 == dpnt ? 4 : prnt == dpnt - 2 ? 5 : 6);
-		dl1.cz7();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v5 = dPp2;
-		dl1.v6 = (prnt - 2 == dpnt ? 4 : prnt == dpnt + 2 ? 5 : 6);
-		dl1.cz7();
-		f[c++] = dl1.getVal();
-
-		// remove this again
-		dl1.v0 = n++;
-		dl1.v3 = pPm2;
-		dl1.v5 = (prnt - 2 == dpnt ? 4 : 5);
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v3 = dPm2;
-		dl1.v5 = (prnt == dpnt - 2 ? 4 : 5);
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v3 = dPp2;
-		dl1.v5 = (prnt == dpnt + 2 ? 4 : 5);
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v3 = pPp2;
-		dl1.v5 = (prnt + 2 == dpnt ? 4 : 5);
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-
-		dl2.v0 = n++;
-		dl2.v3 = dFm1;
-		dl2.v3 = pPp1;
-		dl2.v4 = pP;
-		dl2.v5 = (prnt + 1 == dpnt ? 4 : prnt == dpnt - 1 ? 5 : 6);
-		dl2.cz6();
-		f[c++] = dl2.getVal();
-		dl2.v0 = n++;
-		dl2.v3 = dFp1;
-		dl2.v3 = pPm1;
-		dl2.v5 = (prnt - 1 == dpnt ? 4 : prnt == dpnt + 1 ? 5 : 6);
-		dl2.cz6();
-		f[c++] = dl2.getVal();
-		dl2.v0 = n++;
-		dl2.v3 = pFm1;
-		dl2.v3 = dPp1;
-		dl2.v4 = dP;
-		dl2.v5 = (prnt - 1 == dpnt ? 4 : prnt == dpnt + 1 ? 5 : 6);
-		dl2.cz6();
-		f[c++] = dl2.getVal();
-		dl2.v0 = n++;
-		dl2.v3 = pFp1;
-		dl2.v3 = dPm1;
-		dl2.v5 = (prnt + 1 == dpnt ? 4 : prnt == dpnt - 1 ? 5 : 6);
-		dl2.cz6();
-		f[c++] = dl2.getVal();
-
-		// maybe without dir
-		dl2.v0 = n++;
-		dl2.v3 = dFm1;
-		dl2.v3 = dPm2;
-		dl2.v4 = pP;
-		dl2.v5 = (prnt == dpnt - 1 ? 4 : prnt == dpnt - 2 ? 5 : 6);
-		dl2.cz6();
-		f[c++] = dl2.getVal();
-		dl2.v0 = n++;
-		dl2.v3 = dFp1;
-		dl2.v3 = dPp2;
-		dl2.v5 = (prnt == dpnt + 1 ? 4 : prnt == dpnt + 2 ? 5 : 6);
-		dl2.cz6();
-		f[c++] = dl2.getVal();
-		dl2.v0 = n++;
-		dl2.v3 = pFm1;
-		dl2.v3 = pPm2;
-		dl2.v4 = dP;
-		dl2.v5 = (prnt - 1 == dpnt ? 4 : prnt - 2 == dpnt ? 5 : 6);
-		dl2.cz6();
-		f[c++] = dl2.getVal();
-		dl2.v0 = n++;
-		dl2.v3 = pFp1;
-		dl2.v3 = pPp2;
-		dl2.v5 = (prnt + 1 == dpnt ? 4 : prnt + 2 == dpnt ? 5 : 6);
-		dl2.cz6();
-		f[c++] = dl2.getVal();
-
-		dwwp.v0 = n++;
-		dwwp.v2 = pF;
-		dwwp.v3 = dF;
-		dwwp.v4 = dP;
-		dwwp.cz5();
-		f[c++] = dwwp.getVal();
-		dwwp.v0 = n++;
-		dwwp.v2 = pF;
-		dwwp.v3 = dF;
-		dwwp.v4 = pP;
-		dwwp.cz5();
-		f[c++] = dwwp.getVal();
-		// dwwp.v0= n++; dwwp.v2=dF; dwwp.v3=pF; dwwp.v4=pP; dwwp.v4=dP;
-		// dwwp.cz6(); f[c++]=dwwp.getVal();
-
-		// until here
-
-		// lemmas
-
-		dl2.v1 = label;
-		dl2.v0 = n++;
-		dl2.v2 = pL;
-		dl2.v3 = dP;
-		dl2.cz4();
-		f[c++] = dl2.getVal();
-		dl2.v0 = n++;
-		dl2.cz3();
-		f[c++] = dl2.getVal();
-		dl2.v0 = n++;
-		dl2.v2 = dL;
-		dl2.v3 = pP;
-		dl2.cz4();
-		f[c++] = dl2.getVal();
-		dl2.v0 = n++;
-		dl2.cz3();
-		f[c++] = dl2.getVal();
-
-		dwwp.v1 = label;
-		dwwp.v0 = n++;
-		dwwp.v2 = pL;
-		dwwp.v3 = dL;
-		dwwp.cz4();
-		f[c++] = dwwp.getVal();
-
-		dwp.v1 = label;
-		dwp.v0 = n++;
-		dwp.v2 = dL;
-		dwp.v3 = pP;
-		dwp.v4 = dP;
-		dwp.v5 = pL; // dwp.cz6(); f[c++]=dwp.getVal();
-
-		dwp.v0 = n++;
-		dwp.v2 = pL;
-		dwp.v3 = pP;
-		dwp.v4 = dP;
-		dwp.v0 = n++;
-		dwp.cz5();
-		f[c++] = dwp.getVal();
-
-		dwp.v0 = n++;
-		dwp.v2 = pL;
-		dwp.cz5();
-		f[c++] = dwp.getVal();
-		dwwp.v0 = n++;
-		dwwp.v2 = pL;
-		dwwp.v3 = dL;
-		dwwp.v4 = dP;
-		dwwp.cz5();
-		f[c++] = dwwp.getVal();
-		dwwp.v0 = n++;
-		dwwp.v4 = pP;
-		dwwp.cz5();
-		f[c++] = dwwp.getVal();
-
-		// cluster
-		if (cluster.size() > 10) {
-			d2pw.v1 = label;
-			d2pw.v0 = n++;
-			d2pw.v2 = prntLS;
-			d2pw.v3 = chldLS;
-			d2pw.cz4();
-			f[c++] = d2pw.getVal();
-			d2pw.v0 = n++;
-			d2pw.v4 = pF;
-			d2pw.cz5();
-			f[c++] = d2pw.getVal();
-			d2pw.v0 = n++;
-			d2pw.v4 = dF;
-			d2pw.cz5();
-			f[c++] = d2pw.getVal();
-			// d2pw.v0=n++; d2pw.v5=pF; d2pw.cz6(); f[c++]=d2pw.getVal();
-
-			d2pp.v1 = label;
-			d2pp.v0 = n++;
-			d2pp.v2 = prntLS;
-			d2pp.v3 = chldLS;
-			d2pp.cz4();
-			f[c++] = d2pp.getVal();
-			d2pp.v0 = n++;
-			d2pp.v4 = pP;
-			d2pp.cz5();
-			f[c++] = d2pp.getVal();
-			d2pp.v0 = n++;
-			d2pp.v4 = dP;
-			d2pp.cz5();
-			f[c++] = d2pp.getVal();
-			d2pp.v0 = n++;
-			d2pp.v5 = pP;
-			d2pp.cz6();
-			f[c++] = d2pp.getVal();
-		}
-
-		if (s_stack) {
-
-			short[] prel = is.plabels[i];
-			short[] phead = is.pheads[i];
-
-			// take those in for stacking
-			dl2.v1 = label;
-			dl2.v0 = n++;
-			dl2.v2 = prel[dpnt];
-			dl2.v3 = pP;
-			dl2.v4 = dP;
-			dl2.v5 = prnt == phead[dpnt] ? 1 : 2;
-			dl2.cz6();
-			f[c++] = dl2.getVal();
-			dl2.v0 = n++;
-			dl2.v2 = pP;
-			dl2.v3 = dP;
-			dl2.v4 = prnt == phead[dpnt] ? 1 : 2;
-			dl2.cz5();
-			f[c++] = dl2.getVal();
-		}
-
-		if (feats == null)
-			return c;
-
-		short[] featsP = feats[prnt], featsD = feats[dpnt];
-		dlf.v0 = n++;
-		dlf.v1 = label;
-		dlf.v2 = pP;
-		dlf.v3 = dP;
-		c = extractFeat(f, c, featsP, featsD);
-
-		return c;
-	}
-
-	public int second(Instances is, int i, int p, int d, int x, int label, Cluster cluster, long[] f) {
-
-		// for(int k=0;k<f.length;k++) f[k]=0;
-
-		dl1.clean();
-		dwp.clean();
-		dlf.clean();
-		dwwp.clean();
-
-		short[] pos = is.pposs[i];
-		int[] forms = is.forms[i], lemmas = is.plemmas[i];
-
-		int pP = pos[p], dP = pos[d];
-		int pF = forms[p], dF = forms[d];
-		int pL = lemmas[p], cL = lemmas[d];
-
-		int sP = x != -1 ? pos[x] : s_str, sF = x != -1 ? forms[x] : s_stwrd, sL = x != -1 ? lemmas[x] : s_stwrd;
-
-		int n = _SIB;
-		if (pF > maxForm)
-			pF = -1;
-		if (pL > maxForm)
-			pL = -1;
-
-		if (dF > maxForm)
-			dF = -1;
-		if (cL > maxForm)
-			cL = -1;
-
-		if (sF > maxForm)
-			sF = -1;
-		if (sL > maxForm)
-			sL = -1;
-
-		int c = 0;
-
-		dl1.v1 = label;
-		dwwp.v1 = label;
-		dwp.v1 = label;
-
-		dl1.v0 = n++;
-		dl1.v2 = pP;
-		dl1.v3 = dP;
-		dl1.v4 = sP;
-		dl1.cz5();
-		f[c++] = dl1.getVal(); // f[c++]=dl1.csa(s_dist,dist);
-		dl1.v0 = n++;
-		dl1.v3 = sP;
-		dl1.cz4();
-		f[c++] = dl1.getVal(); // f[c++]=dl1.csa(s_dist,dist);
-		dl1.v0 = n++;
-		dl1.v2 = dP;
-		dl1.cz4();
-		f[c++] = dl1.getVal(); // f[c++]=dl1.csa(s_dist,dist);
-
-		// sibling only could be tried
-
-		dwwp.v0 = n++;
-		dwwp.v2 = pF;
-		dwwp.v3 = sF;
-		dwwp.cz4();
-		f[c++] = dwwp.getVal(); // f[c++]=dwwp.csa(s_dist,dist);
-		dwwp.v0 = n++;
-		dwwp.v2 = dF;
-		dwwp.cz4();
-		f[c++] = dwwp.getVal(); // f[c++]=dwwp.csa(s_dist,dist);
-
-		// 154
-		dwp.v0 = n++;
-		dwp.v2 = sF;
-		dwp.v3 = pP;
-		dwp.cz4();
-		f[c++] = dwp.getVal(); // f[c++]=dwp.csa(s_dist,dist);
-		dwp.v0 = n++;
-		/* dwp.v1=label; */dwp.v3 = dP;
-		dwp.cz4();
-		f[c++] = dwp.getVal(); // f[c++]=dwp.csa(s_dist,dist);
-		dwp.v0 = n++;
-		/* dwp.v1=label; */ dwp.v2 = pF;
-		dwp.v3 = sP;
-		dwp.cz4();
-		f[c++] = dwp.getVal(); // f[c++]=dwp.csa(s_dist,dist);
-		dwp.v0 = n++;
-		/* dwp.v1=label; */ dwp.v2 = dF;
-		dwp.cz4();
-		f[c++] = dwp.getVal();// f[c++]=dwp.csa(s_dist,dist);
-
-		// 158
-		// lemmas
-
-		dwwp.v0 = n++;
-		dwwp.v2 = pL;
-		dwwp.v3 = sL;
-		dwwp.cz4();
-		f[c++] = dwwp.getVal();
-		dwwp.v0 = n++;
-		dwwp.v2 = cL;
-		dwwp.cz4();
-		f[c++] = dwwp.getVal(); // f[c++]=dwwp.csa(s_dist,dist);
-		dwp.v0 = n++;
-		dwp.v2 = sL;
-		dwp.v3 = pP;
-		dwp.cz4();
-		f[c++] = dwp.getVal();// f[c++]=dwp.csa(s_dist,dist);
-		dwp.v0 = n++;
-		dwp.v3 = dP;
-		dwp.cz4();
-		f[c++] = dwp.getVal(); // f[c++]=dwp.csa(s_dist,dist);
-
-		// 162
-		dwp.v0 = n++;
-		dwp.v2 = pL;
-		dwp.v3 = sP;
-		dwp.cz4();
-		f[c++] = dwp.getVal(); // f[c++]=dwp.csa(s_dist,dist);
-		dwp.v0 = n++;
-		dwp.v2 = cL;
-		dwp.cz4();
-		f[c++] = dwp.getVal();// f[c++]=dwp.csa(s_dist,dist);
-
-		// clusters
-		if (cluster.size() > 10) {
-
-		}
-
-		int pPm1 = p != 0 ? pos[p - 1] : s_str;
-		int chldPm1 = d - 1 >= 0 ? pos[d - 1] : s_str;
-		int prntPp1 = p != pos.length - 1 ? pos[p + 1] : s_end;
-		int chldPp1 = d != pos.length - 1 ? pos[d + 1] : s_end;
-
-		// sibling part of speech minus and plus 1
-		int sPm1 = x > 0 ? pos[x - 1] : s_str;
-		int sPp1 = x < pos.length - 1 ? pos[x + 1] : s_end;
-
-		if (x + 1 == x || x + 1 == p || x + 1 == d)
-			sPp1 = -1;
-		if (p + 1 == x || p + 1 == p || p + 1 == d)
-			prntPp1 = -1;
-		if (d + 1 == x || d + 1 == p || d + 1 == d)
-			chldPp1 = -1;
-
-		if (x - 1 == x || x - 1 == p || x - 1 == d)
-			sPm1 = -1;
-		if (d - 1 == x || d - 1 == p || d - 1 == d)
-			chldPm1 = -1;
-		if (p - 1 == x || p - 1 == p || p - 1 == d)
-			pPm1 = -1;
-
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sPp1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[c++] = dl1.getVal();
-		// 165
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sPm1;
-		dl1.v4 = pP;
-		dl1.v5 = (x - 1 == p ? 3 : x - 1 == d ? 4 : 5);
-		dl1.cz6();
-		f[c++] = dl1.getVal(); // dl1.getVal();// f.add(li.l2i(l));
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = pP;
-		dl1.v4 = prntPp1;
-		dl1.v5 = (x == p + 1 ? 3 : 4);
-		dl1.cz6();
-		f[c++] = dl1.getVal();// f.add(li.l2i(l));
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = pP;
-		dl1.v4 = pPm1;
-		dl1.v5 = (x == p - 1 ? 3 : 4);
-		dl1.cz6();
-		f[c++] = dl1.getVal();// f.add(li.l2i(l));
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sPp1;
-		dl1.v4 = pPm1;
-		dl1.v5 = pP;
-		dl1.v6 = (x == p - 1 ? 3 : x == p + 1 ? 4 : 5);
-		dl1.cz7();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sPm1;
-		dl1.v3 = sP;
-		dl1.v4 = pPm1;
-		dl1.v5 = pP;
-		dl1.v6 = (x == p - 1 ? 3 : x - 1 == p ? 4 : 5);
-		dl1.cz7();
-		f[c++] = dl1.getVal();// f.add(li.l2i(l));
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sPp1;
-		dl1.v4 = pP;
-		dl1.v5 = prntPp1;
-		dl1.v6 = (x + 1 == p ? 3 : x == p + 1 ? 4 : 5);
-		dl1.cz7();
-		f[c++] = dl1.getVal();// f.add(li.l2i(l));
-		dl1.v0 = n++;
-		dl1.v2 = sPm1;
-		dl1.v3 = sP;
-		dl1.v4 = pP;
-		dl1.v5 = prntPp1;
-		dl1.v6 = (x == p - 1 ? 3 : x == p + 1 ? 4 : 5);
-		dl1.cz7();
-		f[c++] = dl1.getVal();// f.add(li.l2i(l));
-
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sPp1;
-		dl1.v4 = dP;
-		dl1.v5 = (x + 1 == d ? 3 : x + 1 == p ? 4 : 5);
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sPm1;
-		dl1.v4 = dP;
-		dl1.v5 = (x - 1 == d ? 3 : x - 1 == p ? 4 : 5);
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = dP;
-		dl1.v4 = chldPp1;
-		dl1.v5 = (x == d + 1 ? 3 : d + 1 == p ? 4 : 5);
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = dP;
-		dl1.v4 = chldPm1;
-		dl1.v5 = (x == d - 1 ? 3 : d - 1 == p ? 4 : 5);
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sPp1;
-		dl1.v4 = chldPm1;
-		dl1.v5 = dP;
-		dl1.v6 = (x == d - 1 ? 3 : x + 1 == d ? 4 : 5);
-		dl1.cz7();
-		f[c++] = dl1.getVal();// f.add(li.l2i(l));
-		dl1.v0 = n++;
-		dl1.v2 = sPm1;
-		dl1.v3 = sP;
-		dl1.v4 = chldPm1;
-		dl1.v5 = dP;
-		dl1.v6 = (x - 1 == d ? 3 : d - 1 == x ? 4 : 5);
-		dl1.cz7();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sPp1;
-		dl1.v4 = dP;
-		dl1.v5 = chldPp1;
-		dl1.v6 = (x == d + 1 ? 3 : x + 1 == d ? 4 : 5);
-		dl1.cz7();
-		f[c++] = dl1.getVal();// f.add(li.l2i(l));
-		dl1.v0 = n++;
-		dl1.v2 = sPm1;
-		dl1.v3 = sP;
-		dl1.v4 = dP;
-		dl1.v5 = chldPp1;
-		dl1.v6 = (x - 1 == d ? 3 : d + 1 == x ? 4 : 5);
-		dl1.cz7();
-		f[c++] = dl1.getVal();
-
-		// c=61;
-		/*
-		 * if (cluster.size()>10) { AtomicInteger N = new AtomicInteger(n); c =
-		 * addClusterFeatures(d, p, x, pos, forms, cluster, N, c, f,label); n =
-		 * N.get(); }
-		 */
-		// take those in for stacking
-
-		if (s_stack) {
-			short[] prel = is.plabels[i], phead = is.pheads[i];
-
-			int g = p == phead[d] ? 1 : 2;
-			if (x >= 0)
-				g += p == phead[x] ? 4 : 8;
-
-			int gr = x == -1 ? s_relend : prel[x];
-
-			dl2.v1 = label;
-			dl2.v0 = n++;
-			dl2.v2 = prel[d];
-			dl2.v3 = g;
-			dl2.v4 = sP;
-			dl2.v5 = dP;
-			dl2.cz6();
-			f[c++] = dl2.getVal();
-			dl2.v0 = n++;
-			dl2.v2 = prel[d];
-			dl2.v3 = g;
-			dl2.v4 = sP;
-			dl2.v5 = pP;
-			dl2.cz6();
-			f[c++] = dl2.getVal();
-			dl2.v0 = n++;
-			dl2.v2 = prel[d];
-			dl2.v3 = g;
-			dl2.v4 = sP;
-			dl2.v5 = pP;
-			dl2.v6 = dP;
-			dl2.cz7();
-			f[c++] = dl2.getVal();
-
-			dl2.v0 = n++;
-			dl2.v2 = gr;
-			dl2.v3 = g;
-			dl2.v4 = sP;
-			dl2.v5 = dP;
-			dl2.cz6();
-			f[c++] = dl2.getVal();
-			dl2.v0 = n++;
-			dl2.v2 = gr;
-			dl2.v3 = g;
-			dl2.v4 = sP;
-			dl2.v5 = pP;
-			dl2.cz6();
-			f[c++] = dl2.getVal();
-			dl2.v0 = n++;
-			dl2.v2 = gr;
-			dl2.v3 = g;
-			dl2.v4 = sP;
-			dl2.v5 = pP;
-			dl2.v6 = dP;
-			dl2.cz7();
-			f[c++] = dl2.getVal();
-		}
-
-		short[][] feats = is.feats[i];
-
-		if (feats == null)
-			return c;
-
-		short[] featsP = feats[d];
-		short[] featsSbl = x != -1 ? feats[x] : null;
-		dlf.v1 = label;
-		dlf.v0 = n++;
-		dlf.v2 = sP;
-		dlf.v3 = dP;
-		c = extractFeat(f, c, featsP, featsSbl);
-
-		featsP = feats[p];
-
-		dlf.v0 = n++;
-		dlf.v1 = label;
-		dlf.v2 = sP;
-		dlf.v3 = pP;
-		c = extractFeat(f, c, featsP, featsSbl);
-
-		return c;
-	}
-
-	/**
-	 * Separated this method to speed up parsing
-	 * 
-	 * @param d
-	 * @param p
-	 * @param x
-	 * @param pos
-	 * @param forms
-	 * @param cluster
-	 * @param N
-	 * @param c
-	 * @param f
-	 * @return
-	 */
-	int addClusterFeatures(Instances is, int i, int d, int p, int x, Cluster cluster, int c, long[] f, int label) {
-
-		// int n= N.get();
-
-		short[] pos = is.pposs[i];
-		int[] forms = is.forms[i];
-
-		int n = 190;
-		int pP = pos[p], dP = pos[d];
-		int sP = x != -1 ? pos[x] : s_str;
-
-		int pLSp1 = p != pos.length - 1 ? forms[p + 1] == -1 ? -1 : cluster.getLP(forms[p + 1]) : _cend;
-		int cLSp1 = d != pos.length - 1 ? forms[d + 1] == -1 ? -1 : cluster.getLP(forms[d + 1]) : _cend;
-		int sLSp1 = x < pos.length - 1 ? forms[x + 1] == -1 ? -1 : cluster.getLP(forms[x + 1]) : _cend;
-
-		int pLSm1 = p != 0 ? forms[p - 1] == -1 ? -1 : cluster.getLP(forms[p - 1]) : _cstr;
-		int cLSm1 = d - 1 >= 0 ? forms[d - 1] == -1 ? -1 : cluster.getLP(forms[d - 1]) : _cstr;
-		int sLSm1 = x > 0 ? forms[x - 1] == -1 ? -1 : cluster.getLP(forms[x - 1]) : _cstr;
-
-		// int c=61;
-		int pF = forms[p], dF = forms[d], sF = x != -1 ? forms[x] : s_stwrd;
-		int prntLS = pF == -1 ? -1 : cluster.getLP(pF), chldLS = dF == -1 ? -1 : cluster.getLP(dF);
-
-		int sblLS = (x != -1) && (sF != -1) ? cluster.getLP(sF) : s_stwrd;
-
-		d2lp.v1 = label;
-		d2lp.v0 = n++;
-		d2lp.v2 = prntLS;
-		d2lp.v3 = sblLS;
-		d2lp.cz4();
-		f[c++] = d2lp.getVal();
-		d2lp.v0 = n++;
-		d2lp.v2 = chldLS;
-		d2lp.v3 = sblLS;
-		d2lp.cz4();
-		f[c++] = d2lp.getVal();// f[c++]=d2lp.csa(s_dist,dist);
-
-		d3lp.v1 = label;
-		d3lp.v0 = n++;
-		d3lp.v2 = prntLS;
-		d3lp.v3 = chldLS;
-		d3lp.v4 = sblLS;
-		d3lp.cz5();
-		f[c++] = d3lp.getVal();
-
-		d2lp.v0 = n++;
-		d2lp.v2 = prntLS;
-		d2lp.v3 = chldLS;
-		d2lp.v4 = sF;
-		d2lp.cz5();
-		f[c++] = d2lp.getVal(); // f[c++]=d2lp.csa(s_dist,dist);
-		d2lp.v0 = n++;
-		d2lp.v2 = prntLS;
-		d2lp.v3 = sblLS;
-		d2lp.v4 = dF;
-		d2lp.cz5();
-		f[c++] = d2lp.getVal(); // f[c++]=d2lp.csa(s_dist,dist);
-		d2lp.v0 = n++;
-		d2lp.v2 = chldLS;
-		d2lp.v3 = sblLS;
-		d2lp.v4 = pF;
-		d2lp.cz5();
-		f[c++] = d2lp.getVal(); // f[c++]=d2lp.csa(s_dist,dist);
-
-		d2pp.v1 = label;
-		d2pp.v0 = n++;
-		d2pp.v2 = prntLS;
-		d2pp.v3 = chldLS;
-		d2pp.v4 = sP;
-		d2pp.cz5();
-		f[c++] = d2pp.getVal(); // f[c++]=d2pp.csa(s_dist,dist);
-		d2pp.v0 = n++;
-		d2pp.v2 = prntLS;
-		d2pp.v3 = sblLS;
-		d2pp.v4 = dP;
-		d2pp.cz5();
-		f[c++] = d2pp.getVal(); // f[c++]=d2pp.csa(s_dist,dist);
-		d2pp.v0 = n++;
-		d2pp.v2 = chldLS;
-		d2pp.v3 = sblLS;
-		d2pp.v4 = pP;
-		d2pp.cz5();
-		f[c++] = d2pp.getVal(); // f[c++]=d2pp.csa(s_dist,dist);
-
-		if (x + 1 == x || x + 1 == p || x + 1 == d)
-			sLSp1 = -1;
-		if (p + 1 == x || p + 1 == p || p + 1 == d)
-			pLSp1 = -1;
-		if (d + 1 == x || d + 1 == p || d + 1 == d)
-			cLSp1 = -1;
-
-		if (x - 1 == x || x - 1 == p || x - 1 == d)
-			sLSm1 = -1;
-		if (d - 1 == x || d - 1 == p || d - 1 == d)
-			cLSm1 = -1;
-		if (p - 1 == x || p - 1 == p || p - 1 == d)
-			pLSm1 = -1;
-
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSm1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = pP;
-		dl1.v4 = pLSp1;
-		dl1.cz5();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = pP;
-		dl1.v4 = pLSm1;
-		dl1.cz5();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = pLSm1;
-		dl1.v5 = pP;
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sLSm1;
-		dl1.v3 = sP;
-		dl1.v4 = pLSm1;
-		dl1.v5 = pP;
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = pP;
-		dl1.v5 = pLSp1;
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sLSm1;
-		dl1.v3 = sP;
-		dl1.v4 = pP;
-		dl1.v5 = pLSp1;
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = dP;
-		dl1.cz5();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSm1;
-		dl1.v4 = dP;
-		dl1.cz5();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = dP;
-		dl1.v4 = cLSp1;
-		dl1.cz5();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = dP;
-		dl1.v4 = cLSm1;
-		dl1.cz5();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSm1;
-		dl1.v4 = cLSm1;
-		dl1.v5 = dP;
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sLSm1;
-		dl1.v3 = sP;
-		dl1.v4 = cLSm1;
-		dl1.v5 = dP;
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = dP;
-		dl1.v5 = cLSp1;
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sLSm1;
-		dl1.v3 = sP;
-		dl1.v4 = dP;
-		dl1.v5 = cLSp1;
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSm1;
-		dl1.v4 = pP;
-		dl1.cz5();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = pP;
-		dl1.v4 = pLSp1;
-		dl1.cz5();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = pP;
-		dl1.v4 = pLSm1;
-		dl1.cz5();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = pLSm1;
-		dl1.v5 = pP;
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sLSm1;
-		dl1.v3 = sP;
-		dl1.v4 = pLSm1;
-		dl1.v5 = pP;
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = pP;
-		dl1.v5 = pLSp1;
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sLSm1;
-		dl1.v3 = sP;
-		dl1.v4 = pP;
-		dl1.v5 = pLSp1;
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = dP;
-		dl1.cz5();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSm1;
-		dl1.v4 = dP;
-		dl1.cz5();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = dP;
-		dl1.v4 = cLSp1;
-		dl1.cz5();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = dP;
-		dl1.v4 = cLSm1;
-		dl1.cz5();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSm1;
-		dl1.v4 = cLSm1;
-		dl1.v5 = dP;
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sLSm1;
-		dl1.v3 = sP;
-		dl1.v4 = cLSm1;
-		dl1.v5 = dP;
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sP;
-		dl1.v3 = sLSp1;
-		dl1.v4 = dP;
-		dl1.v5 = cLSp1;
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-		dl1.v0 = n++;
-		dl1.v2 = sLSm1;
-		dl1.v3 = sP;
-		dl1.v4 = dP;
-		dl1.v5 = cLSp1;
-		dl1.cz6();
-		f[c++] = dl1.getVal();
-
-		return c;
-	}
-
-	private int extractFeat(long[] f, int cnt, short[] featsP, short[] featsD) {
-		if (featsP != null && featsD != null) {
-			for (short i1 = 0; i1 < featsP.length; i1++) {
-				for (short i2 = 0; i2 < featsD.length; i2++) {
-					dlf.v4 = featsP[i1];
-					dlf.v5 = featsD[i2];
-					dlf.cz6();
-					f[cnt++] = dlf.getVal();
-				}
-			}
-		} else if (featsP == null && featsD != null) {
-
-			for (short i2 = 0; i2 < featsD.length; i2++) {
-				dlf.v4 = nofeat;
-				dlf.v5 = featsD[i2];
-				dlf.cz6();
-				f[cnt++] = dlf.getVal();
-
-			}
-		} else if (featsP != null && featsD == null) {
-
-			for (short i1 = 0; i1 < featsP.length; i1++) {
-				dlf.v4 = featsP[i1];
-				dlf.v5 = nofeat;
-				dlf.cz6();
-				f[cnt++] = dlf.getVal();
-
-			}
-		}
-		return cnt;
-	}
-
-	public FV encodeCat(Instances is, int ic, short pposs[], int forms[], int[] lemmas, short[] heads, short[] types,
-			short feats[][], Cluster cluster, FV f) {
-
-		long[] svs = new long[250];
-
-		for (int i = 1; i < heads.length; i++) {
-
-			basic(pposs, heads[i], i, f);
-
-			int w1 = heads[i] < i ? heads[i] : i;
-			int w2 = heads[i] < i ? i : heads[i];
-
-			int dir = heads[i] < i ? 0 : s_rel1;
-			int label = types[i] + dir;
-
-			int c = firstm(is, ic, w1, w2, label, cluster, svs);
-			for (int k = 0; k < c; k++)
-				dl1.map(f, svs[k]);
-
-			int ch, cmi, cmo;
-			if (heads[i] < i) {
-				ch = rightmostRight(heads, heads[i], i);
-				cmi = leftmostLeft(heads, i, heads[i]);
-				cmo = rightmostRight(heads, i, heads.length);
-
-			} else {
-				ch = leftmostLeft(heads, heads[i], i);
-				cmi = rightmostRight(heads, i, heads[i]);
-				cmo = leftmostLeft(heads, i, 0);
-			}
-
-			int lx = types[i] + s_rel1 * ((heads[i] < i ? 0 : 1) + 8);
-			c = second(is, ic, w1, w2, ch, lx, cluster, svs);
-			for (int k = 0; k < c; k++)
-				dl1.map(f, svs[k]);
-			c = addClusterFeatures(is, ic, w1, w2, ch, cluster, c, svs, lx);
-			for (int k = 0; k < c; k++)
-				dl1.map(f, svs[k]);
-
-			lx = types[i] + s_rel1 * ((heads[i] < i ? 0 : 1) + ((cmi < i) ? 0 : 2));
-			c = second(is, ic, w1, w2, cmi, lx, cluster, svs);
-			for (int k = 0; k < c; k++)
-				dl1.map(f, svs[k]);
-
-			c = addClusterFeatures(is, ic, w1, w2, cmi, cluster, c, svs, lx);
-			for (int k = 0; k < c; k++)
-				dl1.map(f, svs[k]);
-
-			lx = types[i] + s_rel1 * ((heads[i] < i ? 0 : 1) + ((cmo < i) ? 0 : 2));
-			c = second(is, ic, w1, w2, cmo, lx, cluster, svs);
-			for (int k = 0; k < c; k++)
-				dl1.map(f, svs[k]);
-
-			c = addClusterFeatures(is, ic, w1, w2, cmo, cluster, c, svs, lx);
-			for (int k = 0; k < c; k++)
-				dl1.map(f, svs[k]);
-		}
-
-		return f;
-	}
-
-	public void compare(Instances is, int ic, short pos[], short[] heads, short[] types, Cluster cluster, F2SF f,
-			DataFES x) {
-
-		long[] svs = new long[250];
-
-		for (int i = 1; i < heads.length; i++) {
-
-			f.clear();
-			basic(pos, heads[i], i, f);
-
-			if (x.pl[heads[i]][i] != f.getScore()) {
-				DB.println("basic diff " + x.pl[heads[i]][i] + " fg " + f.getScore());
-			}
-
-			int w1 = heads[i] < i ? heads[i] : i;
-			int w2 = heads[i] < i ? i : heads[i];
-
-			int dir = heads[i] < i ? 0 : s_rel1;
-			int label = types[i] + dir;
-			f.clear();
-			int c = firstm(is, ic, w1, w2, label, cluster, svs);
-			for (int k = 0; k < c; k++)
-				dl1.map(f, svs[k]);
-
-			if (x.lab[heads[i]][i][types[i]] != f.getScore()) {
-				DB.println("first diff " + x.lab[heads[i]][i][types[i]] + " fg " + f.getScore());
-			}
-
-			short[] labels = Edges.get(pos[heads[i]], pos[i]);
-			int lid = -1;
-			for (int k = 0; k < labels.length; k++)
-				if (types[i] == labels[k]) {
-					lid = k;
-					break;
-				}
-
-			int ch, cmi, cmo;
-			if (heads[i] < i) {
-				ch = rightmostRight(heads, heads[i], i);
-				cmi = leftmostLeft(heads, i, heads[i]);
-				cmo = rightmostRight(heads, i, heads.length);
-
-			} else {
-				ch = leftmostLeft(heads, heads[i], i);
-				cmi = rightmostRight(heads, i, heads[i]);
-				cmo = leftmostLeft(heads, i, 0);
-			}
-
-			f.clear();
-
-			int lx = types[i] + s_rel1 * ((heads[i] < i ? 0 : 1) + 8);
-			c = second(is, ic, w1, w2, ch, lx, cluster, svs);
-			for (int k = 0; k < c; k++)
-				dl1.map(f, svs[k]);
-
-			if (x.sib[heads[i]][i][ch == -1 ? heads[i] : ch][lid] != f.getScore()) {
-				DB.println("sib diff " + x.sib[heads[i]][i][ch == -1 ? i : ch][lid] + " fg " + f.getScore());
-			}
-
-			f.clear();
-
-			lx = types[i] + s_rel1 * ((heads[i] < i ? 0 : 1) + ((cmi < i) ? 0 : 2));
-			c = second(is, ic, w1, w2, cmi, lx, cluster, svs);
-			for (int k = 0; k < c; k++)
-				dl1.map(f, svs[k]);
-
-			if (x.gra[heads[i]][i][cmi == -1 ? i : cmi][lid] != f.getScore()) {
-				DB.println("gcm diff " + x.gra[heads[i]][i][cmi == -1 ? i : cmi][lid] + " fg " + f.getScore() + " cmi "
-						+ cmi + " i " + i + " head " + heads[i] + " w1 " + w1 + " w2 " + w2 + " label " + lx + " "
-						+ ((heads[i] < i ? 0 : 1) + ((cmi < i) ? 0 : 2)));
-
-				System.out.println("w1 " + w1 + " w2 " + w2 + " cmi " + cmi + " label " + label + " ");
-
-				for (long k : svs)
-					System.out.print(k + " ");
-				System.out.println();
-
-			}
-			f.clear();
-			lx = types[i] + s_rel1 * ((heads[i] < i ? 0 : 1) + ((cmo < i) ? 0 : 2));
-			c = second(is, ic, w1, w2, cmo, lx, cluster, svs);
-			for (int k = 0; k < c; k++)
-				dl1.map(f, svs[k]);
-
-			if (x.gra[heads[i]][i][cmo == -1 ? i : cmo][lid] != f.getScore()) {
-				DB.println("gcm diff " + x.gra[heads[i]][i][cmo == -1 ? i : cmo][lid] + " fg " + f.getScore() + " cmo "
-						+ cmo + " i " + i + " head " + heads[i] + " w1 " + w1 + " w2 " + w2 + " label " + lx + " "
-						+ ((heads[i] < i ? 0 : 1) + ((cmi < i) ? 0 : 2)));
-
-				System.out.println("w1 " + w1 + " w2 " + w2 + " cmi " + cmi + " label " + label + " ");
-
-				for (long k : svs)
-					System.out.print(k + " ");
-				System.out.println();
-
-			}
-		}
-
-	}
-
-	public short[] searchLabel(Instances is, int ic, short pposs[], int forms[], int[] lemmas, short[] heads,
-			short[] types, short feats[][], Cluster cluster, IFV f) {
-
-		long[] svs = new long[250];
-
-		short[] newLabels = new short[types.length];
-
-		for (int i = 1; i < heads.length; i++) {
-
-			// int n =basic(pposs, forms, heads[i], i, cluster, f);
-
-			int ch, cmi, cmo;
-			if (heads[i] < i) {
-				ch = rightmostRight(heads, heads[i], i);
-				cmi = leftmostLeft(heads, i, heads[i]);
-				cmo = rightmostRight(heads, i, heads.length);
-
-			} else {
-				ch = leftmostLeft(heads, heads[i], i);
-				cmi = rightmostRight(heads, i, heads[i]);
-				cmo = leftmostLeft(heads, i, 0);
-			}
-
-			short labels[] = Edges.get(pposs[is.heads[ic][i]], pposs[i]);
-
-			float best = -1000;
-			short bestL = 0;
-			for (short label : labels) {
-
-				f.clear();
-				firstm(is, ic, heads[i], i, label, cluster, svs);
-				for (long sv : svs)
-					dl1.map(f, sv);
-
-				second(is, ic, heads[i], i, ch, label, cluster, svs);
-				for (long sv : svs)
-					dl1.map(f, sv);
-
-				second(is, ic, heads[i], i, cmi, label, cluster, svs);
-				for (long sv : svs)
-					dl1.map(f, sv);
-
-				second(is, ic, heads[i], i, cmo, label, cluster, svs);
-				for (long sv : svs)
-					dl1.map(f, sv);
-
-				if (best < f.getScore()) {
-					best = (float) f.getScore();
-					bestL = label;
-					newLabels[i] = bestL;
-				}
-
-			}
-		}
-		return newLabels;
-
-		// return f;
-	}
-
-	public static float encode3(short[] pos, short heads[], short[] types, DataFES d2) {
-
-		float v = 0F;
-		for (int i = 1; i < heads.length; i++) {
-
-			// int dir= (heads[i] < i)? 0:1;
-
-			v += d2.pl[heads[i]][i];
-			v += d2.lab[heads[i]][i][types[i]];
-
-			// boolean left = i<heads[i];
-			short[] labels = Edges.get(pos[heads[i]], pos[i]);
-			int lid = -1;
-			for (int k = 0; k < labels.length; k++)
-				if (types[i] == labels[k]) {
-					lid = k;
-					break;
-				}
-
-			int ch, cmi, cmo;
-			if (heads[i] < i) {
-				ch = rightmostRight(heads, heads[i], i);
-				cmi = leftmostLeft(heads, i, heads[i]);
-				cmo = rightmostRight(heads, i, heads.length);
-
-				if (ch == -1)
-					ch = heads[i];
-				if (cmi == -1)
-					cmi = heads[i];
-				if (cmo == -1)
-					cmo = heads[i];
-
-			} else {
-				ch = leftmostLeft(heads, heads[i], i);
-				cmi = rightmostRight(heads, i, heads[i]);
-				cmo = leftmostLeft(heads, i, 0);
-
-				if (ch == -1)
-					ch = i;
-				if (cmi == -1)
-					cmi = i;
-				if (cmo == -1)
-					cmo = i;
-			}
-			v += d2.sib[heads[i]][i][ch][lid];
-			v += d2.gra[heads[i]][i][cmi][lid];
-			v += d2.gra[heads[i]][i][cmo][lid];
-		}
-		return v;
-	}
-
-	public static float encode3(short[] pos, short heads[], short[] types, DataFES d2, float[] scores) {
-
-		float v = 0F;
-		for (int i = 1; i < heads.length; i++) {
-
-			scores[i] = d2.pl[heads[i]][i];
-			scores[i] += d2.lab[heads[i]][i][types[i]];
-
-			short[] labels = Edges.get(pos[heads[i]], pos[i]);
-			int lid = -1;
-			for (int k = 0; k < labels.length; k++)
-				if (types[i] == labels[k]) {
-					lid = k;
-					break;
-				}
-
-			int ch, cmi, cmo;
-			if (heads[i] < i) {
-				ch = rightmostRight(heads, heads[i], i);
-				cmi = leftmostLeft(heads, i, heads[i]);
-				cmo = rightmostRight(heads, i, heads.length);
-
-				if (ch == -1)
-					ch = heads[i];
-				if (cmi == -1)
-					cmi = heads[i];
-				if (cmo == -1)
-					cmo = heads[i];
-
-			} else {
-				ch = leftmostLeft(heads, heads[i], i);
-				cmi = rightmostRight(heads, i, heads[i]);
-				cmo = leftmostLeft(heads, i, 0);
-
-				if (ch == -1)
-					ch = i;
-				if (cmi == -1)
-					cmi = i;
-				if (cmo == -1)
-					cmo = i;
-			}
-			scores[i] += d2.sib[heads[i]][i][ch][lid];
-			scores[i] += d2.gra[heads[i]][i][cmi][lid];
-			scores[i] += d2.gra[heads[i]][i][cmo][lid];
-		}
-		return v;
-	}
-
-	public static int rightmostRight(short[] heads, int head, int max) {
-		int rightmost = -1;
-		for (int i = head + 1; i < max; i++)
-			if (heads[i] == head)
-				rightmost = i;
-
-		return rightmost;
-	}
-
-	public static int leftmostLeft(short[] heads, int head, int min) {
-		int leftmost = -1;
-		for (int i = head - 1; i > min; i--)
-			if (heads[i] == head)
-				leftmost = i;
-		return leftmost;
-	}
-
-	public static final String REL = "REL", END = "END", STR = "STR", LA = "LA", RA = "RA";
-
-	private static int ra, la;
-	private static int s_str;
-	private static int s_end, _cend, _cstr, s_stwrd, s_relend;
-
-	protected static final String TYPE = "TYPE", DIR = "D";
-	public static final String POS = "POS";
-	protected static final String DIST = "DIST", MID = "MID";
-
-	private static final String _0 = "0", _4 = "4", _3 = "3", _2 = "2", _1 = "1", _5 = "5", _10 = "10";
-
-	private static final String WORD = "WORD", STWRD = "STWRD", STPOS = "STPOS";
-
-	private static int nofeat;
-
-	public static int maxForm;
-
-	/**
-	 * Initialize the features.
-	 * 
-	 * @param maxFeatures
-	 */
-	static public void initFeatures() {
-
-		MFO mf = new MFO();
-		mf.register(POS, MID);
-		s_str = mf.register(POS, STR);
-		s_end = mf.register(POS, END);
-
-		s_relend = mf.register(REL, END);
-
-		_cstr = mf.register(Cluster.SPATH, STR);
-		_cend = mf.register(Cluster.SPATH, END);
-
-		mf.register(TYPE, POS);
-
-		s_stwrd = mf.register(WORD, STWRD);
-		mf.register(POS, STPOS);
-
-		la = mf.register(DIR, LA);
-		ra = mf.register(DIR, RA);
-
-		// mf.register(TYPE, CHAR);
-
-		mf.register(TYPE, PipeGen.FEAT);
-		nofeat = mf.register(PipeGen.FEAT, "NOFEAT");
-
-		for (int k = 0; k < 150; k++)
-			mf.register(TYPE, "F" + k);
-
-		mf.register(DIST, _0);
-		mf.register(DIST, _1);
-		mf.register(DIST, _2);
-		mf.register(DIST, _3);
-		mf.register(DIST, _4);
-		mf.register(DIST, _5);
-		mf.register(DIST, _10);
-
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/parser/MFO.java b/dependencyParser/mate-tools/src/is2/parser/MFO.java
deleted file mode 100755
index 5a2de73..0000000
--- a/dependencyParser/mate-tools/src/is2/parser/MFO.java
+++ /dev/null
@@ -1,267 +0,0 @@
-package is2.parser;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map.Entry;
-import is2.data.IEncoderPlus;
-import is2.util.DB;
-
-/**
- * Map Features, do not map long to integer
- *
- * @author Bernd Bohnet, 20.09.2009
- */
-
-final public class MFO implements IEncoderPlus {
-
-	/** The features and its values */
-	static private final HashMap<String, HashMap<String, Integer>> m_featureSets = new HashMap<String, HashMap<String, Integer>>();
-
-	/** The feature class and the number of values */
-	static private final HashMap<String, Integer> m_featureCounters = new HashMap<String, Integer>();
-
-	/** The number of bits needed to encode a feature */
-	static final HashMap<String, Integer> m_featureBits = new HashMap<String, Integer>();
-
-	/** Integer counter for long2int */
-	static private int count = 0;
-
-	/** Stop growing */
-	public boolean stop = false;
-
-	final public static String NONE = "<None>";
-
-	public MFO() {
-	}
-
-	public int size() {
-		return count;
-	}
-
-	/**
-	 * Register an attribute class, if it not exists and add a possible value
-	 * 
-	 * @param type
-	 * @param type2
-	 */
-	@Override
-	final public int register(String a, String v) {
-
-		HashMap<String, Integer> fs = getFeatureSet().get(a);
-		if (fs == null) {
-			fs = new HashMap<String, Integer>();
-			getFeatureSet().put(a, fs);
-			fs.put(NONE, 0);
-			getFeatureCounter().put(a, 1);
-		}
-		Integer c = getFeatureCounter().get(a);
-
-		Integer i = fs.get(v);
-		if (i == null) {
-			fs.put(v, c);
-			c++;
-			getFeatureCounter().put(a, c);
-			return c - 1;
-		} else
-			return i;
-	}
-
-	/**
-	 * Calculates the number of bits needed to encode a feature
-	 */
-	public void calculateBits() {
-
-		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
-			int bits = (int) Math.ceil((Math.log(e.getValue() + 1) / Math.log(2)));
-			m_featureBits.put(e.getKey(), bits);
-		}
-
-		// System.out.println("total number of needed bits "+total);
-	}
-
-	@Override
-	public String toString() {
-
-		StringBuffer content = new StringBuffer();
-		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
-			content.append(e.getKey() + " " + e.getValue());
-			content.append(':');
-			// HashMap<String,Integer> vs = getFeatureSet().get(e.getKey());
-			content.append(getFeatureBits(e.getKey()));
-
-			/*
-			 * if (vs.size()<120) for(Entry<String,Integer> e2 : vs.entrySet())
-			 * { content.append(e2.getKey()+" ("+e2.getValue()+") "); }
-			 */
-			content.append('\n');
-
-		}
-		return content.toString();
-	}
-
-	static final public short getFeatureBits(String a) {
-		if (m_featureBits.get(a) == null)
-			return 0;
-		return (short) m_featureBits.get(a).intValue();
-	}
-
-	/**
-	 * Get the integer place holder of the string value v of the type a
-	 *
-	 * @param t
-	 *            the type
-	 * @param v
-	 *            the value
-	 * @return the integer place holder of v
-	 */
-	@Override
-	final public int getValue(String t, String v) {
-
-		if (m_featureSets.get(t) == null)
-			return -1;
-		Integer vi = m_featureSets.get(t).get(v);
-		if (vi == null)
-			return -1; // stop &&
-		return vi.intValue();
-	}
-
-	/**
-	 * Static version of getValue
-	 * 
-	 * @see getValue
-	 */
-	static final public int getValueS(String a, String v) {
-
-		if (m_featureSets.get(a) == null)
-			return -1;
-		Integer vi = m_featureSets.get(a).get(v);
-		if (vi == null)
-			return -1; // stop &&
-		return vi.intValue();
-	}
-
-	public int hasValue(String a, String v) {
-
-		Integer vi = m_featureSets.get(a).get(v);
-		if (vi == null)
-			return -1;
-		return vi.intValue();
-	}
-
-	public static String printBits(int k) {
-		StringBuffer s = new StringBuffer();
-		for (int i = 0; i < 31; i++) {
-			s.append((k & 0x00000001) == 1 ? '1' : '0');
-			k = k >> 1;
-
-		}
-		s.reverse();
-		return s.toString();
-	}
-
-	/**
-	 * Maps a long to a integer value. This is very useful to save memory for
-	 * sparse data long values
-	 * 
-	 * @param l
-	 * @return the integer
-	 */
-	static public int misses = 0;
-	static public int good = 0;
-
-	/**
-	 * Write the data
-	 * 
-	 * @param dos
-	 * @throws IOException
-	 */
-	static public void writeData(DataOutputStream dos) throws IOException {
-		dos.writeInt(getFeatureSet().size());
-		// DB.println("write"+getFeatureSet().size());
-		for (Entry<String, HashMap<String, Integer>> e : getFeatureSet().entrySet()) {
-			dos.writeUTF(e.getKey());
-			dos.writeInt(e.getValue().size());
-
-			for (Entry<String, Integer> e2 : e.getValue().entrySet()) {
-
-				if (e2.getKey() == null)
-					DB.println("key " + e2.getKey() + " value " + e2.getValue() + " e -key " + e.getKey());
-				dos.writeUTF(e2.getKey());
-				dos.writeInt(e2.getValue());
-
-			}
-
-		}
-	}
-
-	public void read(DataInputStream din) throws IOException {
-
-		int size = din.readInt();
-		for (int i = 0; i < size; i++) {
-			String k = din.readUTF();
-			int size2 = din.readInt();
-
-			HashMap<String, Integer> h = new HashMap<String, Integer>();
-			getFeatureSet().put(k, h);
-			for (int j = 0; j < size2; j++) {
-				h.put(din.readUTF(), din.readInt());
-			}
-			getFeatureCounter().put(k, size2);
-		}
-
-		count = size;
-		// stop();
-		calculateBits();
-	}
-
-	/**
-	 * Clear the data
-	 */
-	static public void clearData() {
-		getFeatureSet().clear();
-		m_featureBits.clear();
-		getFeatureSet().clear();
-	}
-
-	@Override
-	public HashMap<String, Integer> getFeatureCounter() {
-		return m_featureCounters;
-	}
-
-	static public HashMap<String, HashMap<String, Integer>> getFeatureSet() {
-		return m_featureSets;
-	}
-
-	static public String[] reverse(HashMap<String, Integer> v) {
-		String[] set = new String[v.size()];
-		for (Entry<String, Integer> e : v.entrySet()) {
-			set[e.getValue()] = e.getKey();
-		}
-		return set;
-	}
-
-	private static <K, V> String mapToString(HashMap<K, V> m) {
-		int counter = 0;
-		StringBuilder s = new StringBuilder();
-		for(K k: m.keySet()) {
-			s.append(", " + k + ": " + m.get(k));
-			++counter;
-			if(counter == Parser.maxPrint) break;
-		}
-		if(s.length() < 3) return "{}";
-		else if(counter == Parser.maxPrint) return "{" + s.substring(2) + ",...} (exceeds maximum print length)";
-		else return "{" + s.substring(2) + "}";
-	}
-	
-	@Override
-	public void print() {
-		for(String s: m_featureSets.keySet())
-			System.out.println("m_featureSets[" + s + "] = " + mapToString(m_featureSets.get(s)));
-		System.out.println("m_featureCounters = " + mapToString(m_featureCounters));
-		System.out.println("m_featureBits = " + mapToString(m_featureBits));
-		System.out.println("count = " + count);
-		System.out.println("stop = " + stop);
-	}
-}
diff --git a/dependencyParser/mate-tools/src/is2/parser/Open.java b/dependencyParser/mate-tools/src/is2/parser/Open.java
deleted file mode 100755
index 2f68e07..0000000
--- a/dependencyParser/mate-tools/src/is2/parser/Open.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package is2.parser;
-
-import is2.data.Parse;
-
-final public class Open {
-
-	public float p;
-	short s, e, label;
-	byte dir;
-
-	Closed left;
-	Closed right;
-
-	public Open(short s, short t, short dir, short label, Closed left, Closed right, float p) {
-		this.s = s;
-		this.e = t;
-		this.label = label;
-		this.dir = (byte) dir;
-		this.left = left;
-		this.right = right;
-		this.p = p;
-	}
-
-	void create(Parse parse) {
-		if (dir == 0) {
-			parse.heads[s] = e;
-			if (label != -1)
-				parse.labels[s] = label;
-		} else {
-			parse.heads[e] = s;
-			if (label != -1)
-				parse.labels[e] = label;
-		}
-		if (left != null)
-			left.create(parse);
-		if (right != null)
-			right.create(parse);
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/parser/Options.java b/dependencyParser/mate-tools/src/is2/parser/Options.java
deleted file mode 100755
index bd550ec..0000000
--- a/dependencyParser/mate-tools/src/is2/parser/Options.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package is2.parser;
-
-import is2.util.OptionsSuper;
-
-public final class Options extends OptionsSuper {
-
-	public Options(String[] args) {
-
-		for (int i = 0; i < args.length; i++) {
-
-			if (args[i].equals("--help"))
-				explain();
-
-			if (args[i].equals("-decode")) {
-				decodeProjective = args[i + 1].equals("proj");
-				i++;
-			} else if (args[i].equals("-decodeTH")) {
-				decodeTH = Double.parseDouble(args[i + 1]);
-				i++;
-			} else if (args[i].equals("-nonormalize")) {
-				normalize = false;
-			} else if (args[i].equals("-features")) {
-				features = args[i + 1];
-				i++;
-			} else if (args[i].equals("-hsize")) {
-				hsize = Integer.parseInt(args[i + 1]);
-				i++;
-			} else if (args[i].equals("-len")) {
-				maxLen = Integer.parseInt(args[i + 1]);
-				i++;
-			} else if (args[i].equals("-cores")) {
-				cores = Integer.parseInt(args[i + 1]);
-				i++;
-			} else if (args[i].equals("-no2nd")) {
-				no2nd = true;
-			} else if (args[i].equals("-few2nd")) {
-				few2nd = true;
-			} else
-				super.addOption(args, i);
-
-		}
-
-	}
-
-	private void explain() {
-		System.out.println("Usage: ");
-		System.out.println("java -class mate.jar is2.parser.Parser [Options]");
-		System.out.println();
-		System.out.println("Example: ");
-		System.out.println(
-				" java -class mate.jar is2.parser.Parser -model eps3.model -train corpora/conll08st/train/train.closed -test corpora/conll08st/devel/devel.closed  -out b3.test -eval corpora/conll08st/devel/devel.closed  -count 2000 -i 6");
-		System.out.println("");
-		System.out.println("Options:");
-		System.out.println("");
-		System.out.println(" -train  <file>    the corpus a model is trained on; default " + this.trainfile);
-		System.out.println(" -test   <file>    the input corpus for testing; default " + this.testfile);
-		System.out.println(" -out    <file>    the output corpus (result) of a test run; default " + this.outfile);
-		System.out.println(" -model  <file>    the parsing model for traing the model is stored in the files");
-		System.out.println(
-				"                   and for parsing the model is load from this file; default " + this.modelName);
-		System.out.println(
-				" -i      <number>  the number of training iterations; good numbers are 10 for smaller corpora and 6 for bigger; default "
-						+ this.numIters);
-		System.out.println(" -count  <number>  the n first sentences of the corpus are take for the training default "
-				+ this.count);
-		System.out.println(" -format <number>  conll format of the year 8 or 9; default " + this.formatTask);
-
-		System.exit(0);
-	}
-}
diff --git a/dependencyParser/mate-tools/src/is2/parser/ParallelDecoder.java b/dependencyParser/mate-tools/src/is2/parser/ParallelDecoder.java
deleted file mode 100755
index ca508fd..0000000
--- a/dependencyParser/mate-tools/src/is2/parser/ParallelDecoder.java
+++ /dev/null
@@ -1,194 +0,0 @@
-package is2.parser;
-
-import java.util.ArrayList;
-import java.util.concurrent.Callable;
-
-import is2.data.DataFES;
-
-/**
- * @author Bernd Bohnet, 30.08.2009
- *
- *         This class implements a parallel feature extractor.
- */
-final public class ParallelDecoder implements Callable<Object> {
-	// some constants
-	private static final float INIT_BEST = (-1.0F / 0.0F);
-	private static final boolean[] DIR = { false, true };
-
-	// the data space of the weights for a dependency tree
-	final private DataFES x;
-
-	private short[] pos;
-
-	private Open O[][][][];
-	private Closed C[][][][];
-
-	private int length;
-
-	boolean done = false;
-	public boolean waiting = false;
-
-	/**
-	 * Initialize the parallel decoder.
-	 *
-	 * @param pos
-	 *            part-of-speech
-	 * @param d
-	 *            data
-	 * @param edges
-	 *            part-of-speech edge mapping
-	 * @param o
-	 *            open spans
-	 * @param c
-	 *            closed spans
-	 * @param length
-	 *            number of words
-	 */
-	public ParallelDecoder(short[] pos, DataFES d, Open o[][][][], Closed c[][][][], int length) {
-
-		this.pos = pos;
-		this.x = d;
-
-		this.O = o;
-		this.C = c;
-		this.length = length;
-	}
-
-	private static class DSet {
-		short w1, w2;
-	}
-
-	@Override
-	public Object call() {
-
-		try {
-
-			while (true) {
-
-				DSet set = get();
-				// if (done && set==null) break;
-
-				if (set == null)
-					return null;
-
-				short s = set.w1, t = set.w2;
-
-				for (short dir = 0; dir < 2; dir++) {
-
-					short[] labs = (dir == 1) ? Edges.get(pos[s], pos[t]) : Edges.get(pos[t], pos[s]);
-
-					O[s][t][dir] = new Open[labs.length];
-
-					for (int l = 0; l < labs.length; l++) {
-
-						double tRP = INIT_BEST;
-
-						Closed tL = null, tR = null;
-
-						for (int r = s; r < t; r++) {
-
-							if (s == 0 && r != 0)
-								continue;
-
-							double tLPr = INIT_BEST, tRPr = INIT_BEST;
-							Closed tLCld = null, tRCld = null;
-
-							if (r == s)
-								tLPr = dir == 1 ? x.sib[s][t][s][l] : x.gra[t][s][s][l];
-							else
-								for (int i = s + 1; i <= r; i++)
-									if (((dir == 1 ? x.sib[s][t][i][l] : x.gra[t][s][i][l]) + C[s][r][1][i].p) > tLPr) {
-										tLPr = ((dir == 1 ? x.sib[s][t][i][l] : x.gra[t][s][i][l]) + C[s][r][1][i].p);
-										tLCld = C[s][r][1][i];
-									}
-
-							if (r == t - 1)
-								tRPr = dir == 1 ? x.gra[s][t][s][l] : x.sib[t][s][s][l];
-							else
-								for (int i = r + 1; i < t; i++)
-									if (((dir == 1 ? x.gra[s][t][i][l] : x.sib[t][s][i][l])
-											+ C[r + 1][t][0][i].p) > tRPr) {
-										tRPr = ((dir == 1 ? x.gra[s][t][i][l] : x.sib[t][s][i][l])
-												+ C[r + 1][t][0][i].p);
-										tRCld = C[r + 1][t][0][i];
-									}
-
-							if (tLPr + tRPr > tRP) {
-								tRP = tLPr + tRPr;
-								tL = tLCld;
-								tR = tRCld;
-							}
-						}
-						O[s][t][dir][l] = new Open(s, t, dir, labs[l], tL, tR,
-								(float) (tRP + ((dir == 1) ? x.pl[s][t] : x.pl[t][s])
-										+ ((dir == 1) ? x.lab[s][t][labs[l]] : x.lab[t][s][labs[l]])));
-					}
-				}
-				C[s][t][1] = new Closed[length];
-				C[s][t][0] = new Closed[length];
-
-				for (int m = s; m <= t; m++) {
-					for (boolean d : DIR) {
-						if ((d && m != s) || !d && (m != t && s != 0)) {
-
-							// create closed structure
-
-							double top = INIT_BEST;
-
-							Open tU = null;
-							Closed tL = null;
-							int numLabels = O[(d ? s : m)][(d ? m : t)][d ? 1 : 0].length;
-
-							// for (int l = numLabels-1; l >=0; l--) {
-							for (int l = 0; l < numLabels; l++) {
-
-								Open hi = O[(d ? s : m)][(d ? m : t)][d ? 1 : 0][l];
-								for (int amb = m + (d ? 1 : -1); amb != (d ? t : s)
-										+ (d ? 1 : -1); amb += (d ? 1 : -1)) {
-
-									if ((hi.p + C[d ? m : s][d ? t : m][d ? 1 : 0][amb].p
-											+ x.gra[d ? s : t][m][amb][l]) > top) {
-										top = (hi.p + C[d ? m : s][d ? t : m][d ? 1 : 0][amb].p
-												+ x.gra[d ? s : t][m][amb][l]);
-										tU = hi;
-										tL = C[d ? m : s][d ? t : m][d ? 1 : 0][amb];
-									}
-
-								}
-
-								if ((m == (d ? t : s)) && (hi.p + x.gra[d ? s : t][d ? t : s][m][l]) > top) {
-									top = (hi.p + x.gra[d ? s : t][d ? t : s][m][l]);
-									tU = hi;
-									tL = null;
-								}
-							}
-							C[s][t][d ? 1 : 0][m] = new Closed(s, t, m, d ? 1 : 0, tU, tL, (float) top);
-
-						}
-					}
-				}
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-			System.exit(0);
-		}
-		return null;
-	}
-
-	public static ArrayList<DSet> sets = new ArrayList<DSet>();
-
-	static synchronized private DSet get() {
-		synchronized (sets) {
-			if (sets.size() == 0)
-				return null;
-			return sets.remove(sets.size() - 1);
-		}
-	}
-
-	public static void add(short w1, short w2) {
-		DSet ds = new DSet();
-		ds.w1 = w1;
-		ds.w2 = w2;
-		sets.add(ds);
-	}
-}
diff --git a/dependencyParser/mate-tools/src/is2/parser/ParallelExtract.java b/dependencyParser/mate-tools/src/is2/parser/ParallelExtract.java
deleted file mode 100755
index ca85711..0000000
--- a/dependencyParser/mate-tools/src/is2/parser/ParallelExtract.java
+++ /dev/null
@@ -1,248 +0,0 @@
-package is2.parser;
-
-import java.util.ArrayList;
-import java.util.concurrent.Callable;
-
-import is2.data.Cluster;
-import is2.data.DataFES;
-import is2.data.F2SF;
-import is2.data.Instances;
-import is2.data.Long2IntInterface;
-
-/**
- * @author Bernd Bohnet, 30.08.2009
- *
- *         This class implements a parallel feature extractor.
- */
-final public class ParallelExtract implements Callable<Object> {
-	// the data space of the weights for a dependency tree
-	final DataFES d;
-
-	// the data extractor does the actual work
-	final Extractor extractor;
-
-	private Instances is;
-	private int i;
-
-	private F2SF para;
-
-	private Cluster cluster;
-
-	public ParallelExtract(Extractor e, Instances is, int i, DataFES d, F2SF para, Cluster cluster) {
-
-		this.is = is;
-		extractor = e;
-		this.d = d;
-		this.i = i;
-		this.para = para;
-		this.cluster = cluster;
-	}
-
-	public static class DSet {
-		int w1, w2;
-	}
-
-	@Override
-	public Object call() {
-
-		try {
-
-			F2SF f = para;
-
-			short[] pos = is.pposs[i];
-			int length = pos.length;
-
-			long[] gvs = new long[50];
-			long[] svs = new long[220];
-
-			while (true) {
-
-				DSet set = get();
-				if (set == null)
-					break;
-
-				int w1 = set.w1;
-				int w2 = set.w2;
-
-				f.clear();
-				extractor.basic(pos, w1, w2, f);
-				d.pl[w1][w2] = f.getScoreF();
-
-				f.clear();
-
-				extractor.basic(pos, w2, w1, f);
-				d.pl[w2][w1] = f.getScoreF();
-
-				short[] labels = Edges.get(pos[w1], pos[w2]);
-				float[] lab = d.lab[w1][w2];
-
-				final Long2IntInterface li = extractor.li;
-
-				int c = extractor.firstm(is, i, w1, w2, 0, cluster, svs);
-
-				for (int l = 0; l < lab.length; l++)
-					lab[l] = -100;
-
-				for (short label2 : labels) {
-					short label = label2;
-
-					f.clear();
-					int lv = extractor.d0.computeLabeValue(label, Extractor.s_type);
-					for (int k = 0; k < c; k++)
-						if (svs[k] > 0)
-							f.add(li.l2i(svs[k] + lv));
-
-					lab[label] = f.getScoreF();
-				}
-
-				labels = Edges.get(pos[w2], pos[w1]);
-				lab = d.lab[w2][w1];
-
-				for (int l = 0; l < lab.length; l++)
-					lab[l] = -100;
-
-				for (short label2 : labels) {
-					int label = label2;
-
-					f.clear();
-					int lv = extractor.d0.computeLabeValue(label + Extractor.s_rel1, Extractor.s_type);
-					for (int k = 0; k < c; k++)
-						if (svs[k] > 0)
-							f.add(li.l2i(svs[k] + lv));
-
-					lab[label] = f.getScoreF();
-				}
-
-				int s = w1 < w2 ? w1 : w2;
-				int e = w1 < w2 ? w2 : w1;
-
-				for (int m = 0; m < length; m++) {
-
-					int g = (m == s || e == m) ? -1 : m;
-
-					int cn = extractor.second(is, i, w1, w2, g, 0, cluster, svs);
-					int cc = extractor.addClusterFeatures(is, i, w1, w2, g, cluster, 0, gvs, 0);
-					// for(int k=0;k<c;k++) dl1.map(f,svs[k]);
-
-					if (m >= w1) {
-						labels = Edges.get(pos[w1], pos[w2]);
-						float[] lab2 = new float[labels.length];
-						for (int l = 0; l < labels.length; l++) {
-
-							short label = labels[l];
-
-							int lx = label + Extractor.s_rel1 * (g < w2 ? 0 : 2);
-
-							f.clear();
-							int lv = extractor.d0.computeLabeValue(lx, Extractor.s_type);
-							for (int k = 0; k < cn; k++)
-								if (svs[k] > 0)
-									f.add(li.l2i(svs[k] + lv));
-							for (int k = 0; k < cc; k++)
-								if (gvs[k] > 0)
-									f.add(li.l2i(gvs[k] + lv));
-
-							lab2[l] = f.getScoreF();
-						}
-						d.gra[w1][w2][m] = lab2;
-					}
-
-					if (m <= w2) {
-						labels = Edges.get(pos[w2], pos[w1]);
-						float lab2[];
-						d.gra[w2][w1][m] = lab2 = new float[labels.length];
-						for (int l = 0; l < labels.length; l++) {
-
-							int label = labels[l];
-							int lx = label + Extractor.s_rel1 * (1 + (g < w1 ? 0 : 2));
-
-							f.clear();
-							int lv = extractor.d0.computeLabeValue(lx, Extractor.s_type);
-							for (int k = 0; k < cn; k++)
-								if (svs[k] > 0)
-									f.add(li.l2i(svs[k] + lv));
-							for (int k = 0; k < cc; k++)
-								if (gvs[k] > 0)
-									f.add(li.l2i(gvs[k] + lv));
-
-							lab2[l] = f.getScoreF();
-
-						}
-					}
-
-					g = (m == s || e == m) ? -1 : m;
-
-					// int cn = extractor.second(is,i,w1,w2,g,0, cluster,
-					// svs,Extractor._SIB);
-					if (m >= w1 && m <= w2) {
-						labels = Edges.get(pos[w1], pos[w2]);
-						float lab2[] = new float[labels.length];
-						d.sib[w1][w2][m] = lab2;
-
-						for (int l = 0; l < labels.length; l++) {
-
-							short label = labels[l];
-
-							int lx = label + Extractor.s_rel1 * (8);
-							f.clear();
-							int lv = extractor.d0.computeLabeValue(lx, Extractor.s_type);
-							for (int k = 0; k < cn; k++)
-								if (svs[k] > 0)
-									f.add(li.l2i(svs[k] + lv));
-							for (int k = 0; k < cc; k++)
-								if (gvs[k] > 0)
-									f.add(li.l2i(gvs[k] + lv));
-
-							lab2[l] = f.score;// f.getScoreF();
-						}
-					}
-					if (m >= w1 && m <= w2) {
-						labels = Edges.get(pos[w2], pos[w1]);
-						float[] lab2 = new float[labels.length];
-						d.sib[w2][w1][m] = lab2;
-						for (int l = 0; l < labels.length; l++) {
-
-							int label = labels[l];
-
-							int lx = label + Extractor.s_rel1 * (9);
-
-							f.clear();
-							int lv = extractor.d0.computeLabeValue(lx, Extractor.s_type);
-							for (int k = 0; k < cn; k++)
-								if (svs[k] > 0)
-									f.add(li.l2i(svs[k] + lv));
-							for (int k = 0; k < cc; k++)
-								if (gvs[k] > 0)
-									f.add(li.l2i(gvs[k] + lv));
-
-							lab2[l] = f.score;// f.getScoreF();
-						}
-					}
-				}
-			}
-
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-		return null;
-	}
-
-	static ArrayList<DSet> sets = new ArrayList<DSet>();
-
-	private DSet get() {
-
-		synchronized (sets) {
-			if (sets.size() == 0)
-				return null;
-			return sets.remove(sets.size() - 1);
-		}
-	}
-
-	static public void add(int w1, int w2) {
-		DSet ds = new DSet();
-		ds.w1 = w1;
-		ds.w2 = w2;
-		sets.add(ds);
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/parser/ParallelRearrange.java b/dependencyParser/mate-tools/src/is2/parser/ParallelRearrange.java
deleted file mode 100755
index 83dcdaa..0000000
--- a/dependencyParser/mate-tools/src/is2/parser/ParallelRearrange.java
+++ /dev/null
@@ -1,146 +0,0 @@
-package is2.parser;
-
-import java.util.ArrayList;
-import java.util.concurrent.Callable;
-
-import is2.data.DataFES;
-
-/**
- * @author Dr. Bernd Bohnet, 30.08.2009
- *
- *         This class implements a parallel edge rearrangement for
- *         non-projective parsing; The linear method was first suggest by Rayn
- *         McDonald et. al. 2005.
- */
-final public class ParallelRearrange implements Callable<Object> {
-
-	// new parent child combination to explore
-	final static class PA {
-		final float p;
-		final short ch, pa;
-		public float max;
-		public short wh;
-		public short nPar;
-		public short nType;
-
-		public PA(float p2, short ch2, short pa2) {
-			p = p2;
-			ch = ch2;
-			pa = pa2;
-		}
-	}
-
-	// list of parent child combinations
-	static ArrayList<PA> parents = new ArrayList<PA>();
-	static ArrayList<PA> order = new ArrayList<PA>();
-	// best new parent child combination, found so far
-	public float max;
-
-	// some data from the dependency tree
-	// private EdgesC edges;
-	private short[] pos;
-	private DataFES x;
-	private boolean[][] isChild;
-	public short[] heads, types;
-
-	// child, new parent, new label
-	public short wh, nPar, nType;
-
-	/**
-	 * Initialize the parallel rearrange thread
-	 *
-	 * @param isChild2
-	 *            is a child
-	 * @param edgesC
-	 *            the part-of-speech edge mapping
-	 * @param pos
-	 *            the part-of-speech
-	 * @param x
-	 *            the data
-	 * @param s
-	 *            the heads
-	 * @param ts
-	 *            the types
-	 */
-	public ParallelRearrange(boolean[][] isChild2, short[] pos, DataFES x, short[] s, short[] ts) {
-
-		heads = new short[s.length];
-		System.arraycopy(s, 0, heads, 0, s.length);
-
-		types = new short[ts.length];
-		System.arraycopy(ts, 0, types, 0, ts.length);
-
-		isChild = isChild2;
-		// edges = edgesC;
-		this.pos = pos;
-		this.x = x;
-	}
-
-	@Override
-	public Object call() {
-
-		// check the list of new possible parents and children for a better
-		// combination
-		while (true) {
-			PA px = getPA();
-			if (px == null)
-				break;
-
-			float max = 0;
-			short pa = px.pa, ch = px.ch;
-
-			if (ch == pa || pa == heads[ch] || isChild[ch][pa])
-				continue;
-
-			short oldP = heads[ch], oldT = types[ch];
-
-			heads[ch] = pa;
-
-			short[] labels = Edges.get(pos[pa], pos[ch]);
-
-			for (short label : labels) {
-
-				types[ch] = label;
-
-				float p_new = Extractor.encode3(pos, heads, types, x);
-
-				if (max < p_new - px.p) {
-					max = p_new - px.p;
-					wh = ch;
-					nPar = pa;
-					nType = label;
-					px.max = max;
-					px.wh = ch;
-					px.nPar = pa;
-					px.nType = label;
-				}
-			}
-			heads[ch] = oldP;
-			types[ch] = oldT;
-		}
-		return null;
-	}
-
-	/**
-	 * Add a child-parent combination which are latter explored for
-	 * rearrangement
-	 *
-	 * @param p2
-	 * @param ch2
-	 * @param pa
-	 */
-	static public void add(float p2, short ch2, short pa) {
-		PA px = new PA(p2, ch2, pa);
-		parents.add(px);
-		order.add(px);
-	}
-
-	static private PA getPA() {
-		synchronized (parents) {
-			if (parents.size() == 0)
-				return null;
-			return parents.remove(parents.size() - 1);
-		}
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/parser/Parameters.java b/dependencyParser/mate-tools/src/is2/parser/Parameters.java
deleted file mode 100755
index baba7b6..0000000
--- a/dependencyParser/mate-tools/src/is2/parser/Parameters.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- *
- */
-package is2.parser;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import is2.data.FV;
-import is2.data.IFV;
-import is2.data.Instances;
-import is2.data.Parse;
-
-/**
- * @author Bernd Bohnet, 31.08.2009
- *
- *
- */
-public abstract class Parameters {
-
-	public abstract void average(double avVal);
-
-	public abstract void update(FV act, FV pred, Instances isd, int instc, Parse d, double upd, double e);
-
-	public abstract void write(DataOutputStream dos) throws IOException;
-
-	public abstract void read(DataInputStream dis) throws IOException;
-
-	public abstract int size();
-
-	/**
-	 * @return
-	 */
-	public abstract IFV getFV();
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/parser/ParametersFloat.java b/dependencyParser/mate-tools/src/is2/parser/ParametersFloat.java
deleted file mode 100755
index faf795d..0000000
--- a/dependencyParser/mate-tools/src/is2/parser/ParametersFloat.java
+++ /dev/null
@@ -1,138 +0,0 @@
-package is2.parser;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import is2.data.F2SF;
-import is2.data.FV;
-import is2.data.Instances;
-import is2.data.Parse;
-import is2.util.DB;
-
-final public class ParametersFloat extends Parameters {
-
-	public float[] parameters;
-	public float[] total;
-
-	public ParametersFloat(int size) {
-		parameters = new float[size];
-		total = new float[size];
-		for (int i = 0; i < parameters.length; i++) {
-			parameters[i] = 0F;
-			total[i] = 0F;
-		}
-	}
-
-	/**
-	 * @param parameters2
-	 */
-	public ParametersFloat(float[] p) {
-		parameters = p;
-	}
-
-	@Override
-	public void average(double avVal) {
-		for (int j = 0; j < total.length; j++) {
-			parameters[j] = total[j] / ((float) avVal);
-		}
-		total = null;
-	}
-
-	public ParametersFloat average2(double avVal) {
-		float[] px = new float[this.parameters.length];
-		for (int j = 0; j < total.length; j++) {
-			px[j] = total[j] / ((float) avVal);
-		}
-		ParametersFloat pf = new ParametersFloat(px);
-		return pf;
-	}
-
-	@Override
-	public void update(FV act, FV pred, Instances isd, int instc, Parse d, double upd, double e) {
-
-		e++;
-
-		float lam_dist = getScore(act) - getScore(pred);
-
-		float b = (float) e - lam_dist;
-
-		FV dist = act.getDistVector(pred);
-
-		dist.update(parameters, total, hildreth(dist, b), upd, false);
-	}
-
-	protected double hildreth(FV a, double b) {
-
-		double A = a.dotProduct(a);
-		if (A <= 0.0000000000000000001)
-			return 0.0;
-		return b / A;
-	}
-
-	public float getScore(FV fv) {
-		if (fv == null)
-			return 0.0F;
-		return fv.getScore(parameters, false);
-
-	}
-
-	@Override
-	final public void write(DataOutputStream dos) throws IOException {
-
-		dos.writeInt(parameters.length);
-		for (float d : parameters)
-			dos.writeFloat(d);
-
-	}
-
-	@Override
-	public void read(DataInputStream dis) throws IOException {
-
-		parameters = new float[dis.readInt()];
-		int notZero = 0;
-		for (int i = 0; i < parameters.length; i++) {
-			parameters[i] = dis.readFloat();
-			if (parameters[i] != 0.0F)
-				notZero++;
-		}
-
-		DB.println("read parameters " + parameters.length + " not zero " + notZero);
-
-	}
-
-	public int countNZ() {
-
-		int notZero = 0;
-		for (float parameter : parameters) {
-			if (parameter != 0.0F)
-				notZero++;
-		}
-		return notZero;
-
-		// DB.println("read parameters "+parameters.length+" not zero
-		// "+notZero);
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.sp09k99995.Parameters#getFV()
-	 */
-	@Override
-	public F2SF getFV() {
-		return new F2SF(parameters);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.sp09k99999.Parameters#size()
-	 */
-	@Override
-	public int size() {
-		return parameters.length;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/parser/Parser.java b/dependencyParser/mate-tools/src/is2/parser/Parser.java
deleted file mode 100755
index b361d69..0000000
--- a/dependencyParser/mate-tools/src/is2/parser/Parser.java
+++ /dev/null
@@ -1,789 +0,0 @@
-package is2.parser;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Map.Entry;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-import java.util.zip.ZipOutputStream;
-
-import is2.data.Cluster;
-import is2.data.DataFES;
-import is2.data.F2SF;
-import is2.data.FV;
-import is2.data.Instances;
-import is2.data.Long2Int;
-import is2.data.Long2IntInterface;
-import is2.data.Parse;
-import is2.data.PipeGen;
-import is2.data.SentenceData09;
-import is2.io.CONLLReader09;
-import is2.io.CONLLWriter09;
-import is2.tools.Retrainable;
-import is2.tools.Tool;
-import is2.util.DB;
-import is2.util.OptionsSuper;
-import is2.util.ParserEvaluator;
-
-public class Parser implements Tool, Retrainable {
-
-	// output evaluation info
-	private static final boolean MAX_INFO = true;
-
-	public static int THREADS = 4;
-	public static int maxPrint = 1024;
-
-	public Long2IntInterface l2i;
-	public ParametersFloat params;
-	public Pipe pipe;
-	public OptionsSuper options;
-
-	// keep some of the parsing information for later evaluation
-	public Instances is;
-	DataFES d2;
-	public Parse d = null;
-
-	/**
-	 * Initialize the parser
-	 * 
-	 * @param options
-	 */
-	public Parser(OptionsSuper options) {
-
-		this.options = options;
-		pipe = new Pipe(options);
-
-		params = new ParametersFloat(0);
-
-		// load the model
-		try {
-			readModel(options, pipe, params);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-	}
-
-	/**
-	 * @param modelFileName
-	 *            The file name of the parsing model
-	 */
-	public Parser(String modelFileName) {
-		this(new Options(new String[] { "-model", modelFileName }));
-	}
-
-	/**
-	 *
-	 */
-	public Parser() {
-		// TODO Auto-generated constructor stub
-	}
-
-	public static void main(String[] args) throws Exception {
-		long start = System.currentTimeMillis();
-		OptionsSuper options = new Options(args);
-
-		Runtime runtime = Runtime.getRuntime();
-		THREADS = runtime.availableProcessors();
-		if (options.cores < THREADS && options.cores > 0)
-			THREADS = options.cores;
-		DB.println("Found " + runtime.availableProcessors() + " cores use " + THREADS);
-
-		if (options.train) {
-
-			Parser p = new Parser();
-			p.options = options;
-
-			p.l2i = new Long2Int(options.hsize);
-
-			p.pipe = new Pipe(options);
-			Instances is = new Instances();
-
-			Extractor.initFeatures();
-			p.pipe.extractor = new Extractor[THREADS];
-			DB.println("hsize " + options.hsize);
-
-			DB.println("Use " + (options.featureCreation == OptionsSuper.MULTIPLICATIVE ? "multiplication" : "shift")
-					+ "-based feature creation function");
-			for (int t = 0; t < THREADS; t++)
-				p.pipe.extractor[t] = new Extractor(p.l2i, options.stack, options.featureCreation);
-
-			DB.println("Stacking " + options.stack);
-
-			p.pipe.createInstances(options.trainfile, is);
-
-			p.params = new ParametersFloat(p.l2i.size());
-
-			p.train(options, p.pipe, p.params, is, p.pipe.cl);
-
-			p.writeModell(options, p.params, null, p.pipe.cl);
-
-		}
-
-		if (options.test) {
-			// Parser p = new Parser();
-			Parser p = new Parser(options);
-
-			// p. pipe = new Pipe(options);
-			// p. params = new ParametersFloat(0); // total should be zero and
-			// the parameters are later read
-
-			// load the model
-
-			// p.readModel(options, p.pipe, p.params);
-
-			DB.println("label only? " + options.label);
-
-			p.outAll(options, p.pipe, p.params, !MAX_INFO, options.label);
-		}
-
-		System.out.println();
-
-		if (options.eval) {
-			System.out.println("\nEVALUATION PERFORMANCE:");
-			ParserEvaluator.evaluate(options.goldfile, options.outfile);
-		}
-
-		long end = System.currentTimeMillis();
-		System.out.println("used time " + ((float) ((end - start) / 100) / 10));
-
-		Decoder.executerService.shutdown();
-		Pipe.executerService.shutdown();
-		System.out.println("end.");
-	}
-
-	/**
-	 * Read the models and mapping
-	 * 
-	 * @param options
-	 * @param pipe
-	 * @param params
-	 * @throws IOException
-	 */
-	public void readModel(OptionsSuper options, Pipe pipe, Parameters params) throws IOException {
-
-		DB.println("Reading data started");
-
-		// prepare zipped reader
-		ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(options.modelName)));
-		zis.getNextEntry();
-		DataInputStream dis = new DataInputStream(new BufferedInputStream(zis));
-
-		pipe.mf.read(dis);
-
-		pipe.cl = new Cluster(dis);
-
-		params.read(dis);
-		this.l2i = new Long2Int(params.size());
-		DB.println("parsing -- li size " + l2i.size());
-
-		pipe.extractor = new Extractor[THREADS];
-
-		boolean stack = dis.readBoolean();
-
-		options.featureCreation = dis.readInt();
-
-		for (int t = 0; t < THREADS; t++)
-			pipe.extractor[t] = new Extractor(l2i, stack, options.featureCreation);
-		DB.println("Stacking " + stack);
-
-		Extractor.initFeatures();
-		Extractor.initStat(options.featureCreation);
-
-		for (int t = 0; t < THREADS; t++)
-			pipe.extractor[t].init();
-
-		Edges.read(dis);
-
-		options.decodeProjective = dis.readBoolean();
-
-		Extractor.maxForm = dis.readInt();
-
-		boolean foundInfo = false;
-		try {
-			String info = null;
-			int icnt = dis.readInt();
-			for (int i = 0; i < icnt; i++) {
-				info = dis.readUTF();
-				System.out.println(info);
-			}
-		} catch (Exception e) {
-			if (!foundInfo)
-				System.out.println("no info about training");
-		}
-
-		dis.close();
-
-		DB.println("Reading data finnished");
-
-		Decoder.NON_PROJECTIVITY_THRESHOLD = (float) options.decodeTH;
-
-		Extractor.initStat(options.featureCreation);
-
-	}
-
-	/**
-	 * Do the training
-	 * 
-	 * @param instanceLengths
-	 * @param options
-	 * @param pipe
-	 * @param params
-	 * @param is
-	 * @param cluster
-	 * @throws IOException
-	 * @throws InterruptedException
-	 * @throws ClassNotFoundException
-	 */
-	public void train(OptionsSuper options, Pipe pipe, ParametersFloat params, Instances is, Cluster cluster)
-			throws IOException, InterruptedException, ClassNotFoundException {
-
-		DB.println("\nTraining Information ");
-		DB.println("-------------------- ");
-
-		Decoder.NON_PROJECTIVITY_THRESHOLD = (float) options.decodeTH;
-
-		if (options.decodeProjective)
-			System.out.println("Decoding: " + (options.decodeProjective ? "projective" : "non-projective"));
-		else
-			System.out.println("" + Decoder.getInfo());
-		int numInstances = is.size();
-
-		int maxLenInstances = 0;
-		for (int i = 0; i < numInstances; i++)
-			if (maxLenInstances < is.length(i))
-				maxLenInstances = is.length(i);
-
-		DataFES data = new DataFES(maxLenInstances, pipe.mf.getFeatureCounter().get(PipeGen.REL).shortValue());
-
-		int iter = 0;
-		int del = 0;
-		float error = 0;
-		float f1 = 0;
-
-		FV pred = new FV();
-		FV act = new FV();
-
-		double upd = (double) (numInstances * options.numIters) + 1;
-
-		for (; iter < options.numIters; iter++) {
-
-			System.out.print("Iteration " + iter + ": ");
-
-			long start = System.currentTimeMillis();
-
-			long last = System.currentTimeMillis();
-			error = 0;
-			f1 = 0;
-			for (int n = 0; n < numInstances; n++) {
-
-				upd--;
-
-				if (is.labels[n].length > options.maxLen)
-					continue;
-
-				String info = " td " + ((Decoder.timeDecotder) / 1000000F) + " tr "
-						+ ((Decoder.timeRearrange) / 1000000F) + " te " + ((Pipe.timeExtract) / 1000000F);
-
-				if ((n + 1) % 500 == 0)
-					del = PipeGen.outValueErr(n + 1, error, f1 / n, del, last, upd, info);
-
-				short pos[] = is.pposs[n];
-
-				data = pipe.fillVector(params.getFV(), is, n, data, cluster);
-
-				Parse d = Decoder.decode(pos, data, options.decodeProjective, Decoder.TRAINING);
-
-				double e = pipe.errors(is, n, d);
-
-				if (d.f1 > 0)
-					f1 += d.f1;
-
-				if (e <= 0)
-					continue;
-
-				pred.clear();
-				pipe.extractor[0].encodeCat(is, n, pos, is.forms[n], is.plemmas[n], d.heads, d.labels, is.feats[n],
-						pipe.cl, pred);
-
-				error += e;
-
-				params.getFV();
-
-				act.clear();
-				pipe.extractor[0].encodeCat(is, n, pos, is.forms[n], is.plemmas[n], is.heads[n], is.labels[n],
-						is.feats[n], pipe.cl, act);
-
-				params.update(act, pred, is, n, d, upd, e);
-			}
-
-			String info = " td " + ((Decoder.timeDecotder) / 1000000F) + " tr " + ((Decoder.timeRearrange) / 1000000F)
-					+ " te " + ((Pipe.timeExtract) / 1000000F) + " nz " + params.countNZ();
-			PipeGen.outValueErr(numInstances, error, f1 / numInstances, del, last, upd, info);
-			del = 0;
-			long end = System.currentTimeMillis();
-			System.out.println(" time:" + (end - start));
-
-			ParametersFloat pf = params.average2((iter + 1) * is.size());
-			try {
-
-				if (options.testfile != null && options.goldfile != null) {
-					out(options, pipe, pf, !MAX_INFO, false);
-					ParserEvaluator.evaluate(options.goldfile, options.outfile);
-					// writeModell(options, pf, ""+(iter+1),pipe.cl);
-				}
-
-			} catch (Exception e) {
-				e.printStackTrace();
-			}
-
-			if (error == 0) {
-				DB.println("stopped because learned all lessons");
-				break;
-			}
-
-			Decoder.timeDecotder = 0;
-			Decoder.timeRearrange = 0;
-			Pipe.timeExtract = 0;
-
-		}
-		if (options.average)
-			params.average(iter * is.size());
-	}
-
-	/**
-	 * Do the parsing job
-	 *
-	 * @param options
-	 * @param pipe
-	 * @param params
-	 * @throws IOException
-	 */
-	private void out(OptionsSuper options, Pipe pipe, ParametersFloat params, boolean maxInfo, boolean labelOnly)
-			throws Exception {
-
-		long start = System.currentTimeMillis();
-
-		CONLLReader09 depReader = new CONLLReader09(options.testfile, options.formatTask);
-		CONLLWriter09 depWriter = new CONLLWriter09(options.outfile, options.formatTask);
-
-		int cnt = 0;
-		int del = 0;
-		long last = System.currentTimeMillis();
-
-		if (maxInfo)
-			System.out.println("\nParsing Information ");
-		if (maxInfo)
-			System.out.println("------------------- ");
-
-		if (maxInfo && !options.decodeProjective)
-			System.out.println("" + Decoder.getInfo());
-
-		System.out.print("Processing Sentence: ");
-
-		while (true) {
-
-			// Instances is = new Instances();
-			// is.init(1, new MFO(),options.formatTask);
-
-			// SentenceData09 instance = pipe.nextInstance(is, depReader);
-
-			SentenceData09 instance = depReader.getNext();
-			if (instance == null)
-				break;
-			cnt++;
-
-			SentenceData09 i09 = this.parse(instance, params, labelOnly, options);
-
-			depWriter.write(i09);
-			del = PipeGen.outValue(cnt, del, last);
-
-		}
-		// pipe.close();
-		depWriter.finishWriting();
-		long end = System.currentTimeMillis();
-		// DB.println("errors "+error);
-		if (maxInfo)
-			System.out.println("Used time " + (end - start));
-		if (maxInfo)
-			System.out.println("forms count " + Instances.m_count + " unkown " + Instances.m_unkown);
-
-	}
-
-	private void outAll(OptionsSuper options, Pipe pipe, ParametersFloat params, boolean maxInfo, boolean labelOnly)
-			throws Exception {
-
-		long start = System.currentTimeMillis();
-
-		CONLLReader09 depReader = new CONLLReader09(options.testfile, options.formatTask);
-		CONLLWriter09 depWriter = new CONLLWriter09(options.outfile, options.formatTask);
-
-		int cnt = 0;
-		int del = 0;
-		long last = System.currentTimeMillis();
-
-		if (maxInfo)
-			System.out.println("\nParsing Information ");
-		if (maxInfo)
-			System.out.println("------------------- ");
-
-		if (maxInfo && !options.decodeProjective)
-			System.out.println("" + Decoder.getInfo());
-
-		System.out.print("Processing Sentence: ");
-
-		while (true) {
-
-			// Instances is = new Instances();
-			// is.init(1, new MFO(),options.formatTask);
-
-			// SentenceData09 instance = pipe.nextInstance(is, depReader);
-
-			SentenceData09 instance = depReader.getNext();
-			if (instance == null)
-				break;
-			cnt++;
-
-			SentenceData09[] i09 = this.parseAll(instance, params, labelOnly, options);
-
-			for (SentenceData09 sd : i09)
-				depWriter.write(sd);
-			del = PipeGen.outValue(cnt, del, last);
-
-		}
-		// pipe.close();
-		depWriter.finishWriting();
-		long end = System.currentTimeMillis();
-		// DB.println("errors "+error);
-		if (maxInfo)
-			System.out.println("Used time " + (end - start));
-		if (maxInfo)
-			System.out.println("forms count " + Instances.m_count + " unkown " + Instances.m_unkown);
-
-	}
-
-	/**
-	 * Parse a single sentence
-	 *
-	 * @param instance
-	 * @param params
-	 * @param labelOnly
-	 * @param options
-	 * @return
-	 */
-	public SentenceData09 parse(SentenceData09 instance, ParametersFloat params, boolean labelOnly,
-			OptionsSuper options) {
-
-		String[] types = new String[pipe.mf.getFeatureCounter().get(PipeGen.REL)];
-		for (Entry<String, Integer> e : MFO.getFeatureSet().get(PipeGen.REL).entrySet())
-			types[e.getValue()] = e.getKey();
-
-		is = new Instances();
-		is.init(1, new MFO(), options.formatTask);
-		new CONLLReader09().insert(is, instance);
-
-		// use for the training ppos
-
-		SentenceData09 i09 = new SentenceData09(instance);
-		i09.createSemantic(instance);
-
-		if (labelOnly) {
-			F2SF f2s = params.getFV();
-
-			// repair pheads
-
-			is.pheads[0] = is.heads[0];
-
-			for (int l = 0; l < is.pheads[0].length; l++) {
-				if (is.pheads[0][l] < 0)
-					is.pheads[0][l] = 0;
-			}
-
-			short[] labels = pipe.extractor[0].searchLabel(is, 0, is.pposs[0], is.forms[0], is.plemmas[0], is.pheads[0],
-					is.plabels[0], is.feats[0], pipe.cl, f2s);
-
-			for (int j = 0; j < instance.forms.length - 1; j++) {
-				i09.plabels[j] = types[labels[j + 1]];
-				i09.pheads[j] = is.pheads[0][j + 1];
-			}
-			return i09;
-		}
-
-		if (options.maxLength > instance.length() && options.minLength <= instance.length()) {
-			try {
-				// System.out.println("prs "+instance.forms[0]);
-				// System.out.println("prs "+instance.toString());
-				d2 = pipe.fillVector(params.getFV(), is, 0, null, pipe.cl);// cnt-1
-				d = Decoder.decode(is.pposs[0], d2, options.decodeProjective, !Decoder.TRAINING); // cnt-1
-
-			} catch (Exception e) {
-				e.printStackTrace();
-			}
-
-			for (int j = 0; j < instance.forms.length - 1; j++) {
-				i09.plabels[j] = types[d.labels[j + 1]];
-				i09.pheads[j] = d.heads[j + 1];
-			}
-		}
-		return i09;
-
-	}
-
-	public SentenceData09[] parseAll(SentenceData09 instance, ParametersFloat params, boolean labelOnly,
-			OptionsSuper options) {
-
-		String[] types = new String[pipe.mf.getFeatureCounter().get(PipeGen.REL)];
-		for (Entry<String, Integer> e : MFO.getFeatureSet().get(PipeGen.REL).entrySet())
-			types[e.getValue()] = e.getKey();
-
-		is = new Instances();
-		is.init(1, new MFO(), options.formatTask);
-		new CONLLReader09().insert(is, instance);
-
-		// use for the training ppos
-
-		SentenceData09[] i09;// = new SentenceData09(instance);
-		// i09.createSemantic(instance);
-
-		if (labelOnly) {
-			F2SF f2s = params.getFV();
-
-			// repair pheads
-
-			is.pheads[0] = is.heads[0];
-
-			for (int l = 0; l < is.pheads[0].length; l++) {
-				if (is.pheads[0][l] < 0)
-					is.pheads[0][l] = 0;
-			}
-
-			short[] labels = pipe.extractor[0].searchLabel(is, 0, is.pposs[0], is.forms[0], is.plemmas[0], is.pheads[0],
-					is.plabels[0], is.feats[0], pipe.cl, f2s);
-
-			i09 = new SentenceData09[1];
-			i09[0] = new SentenceData09(instance);
-			i09[0].createSemantic(instance);
-
-			for (int j = 0; j < instance.forms.length - 1; j++) {
-				i09[0].plabels[j] = types[labels[j + 1]];
-				i09[0].pheads[j] = is.pheads[0][j + 1];
-			}
-			return i09;
-		}
-
-		if (options.maxLength > instance.length() && options.minLength <= instance.length()) {
-			Parse[] ds = null;
-
-			try {
-				// System.out.println("prs "+instance.forms[0]);
-				// System.out.println("prs "+instance.toString());
-				d2 = pipe.fillVector(params.getFV(), is, 0, null, pipe.cl);// cnt-1
-				ds = Decoder.decodeAll(is.pposs[0], d2, options.decodeProjective, !Decoder.TRAINING); // cnt-1
-
-			} catch (Exception e) {
-				e.printStackTrace();
-			}
-
-			i09 = new SentenceData09[ds.length];
-			for (int i = 0; i < ds.length; ++i) {
-				i09[i] = new SentenceData09(instance);
-				i09[i].createSemantic(instance);
-				for (int j = 0; j < instance.forms.length - 1; j++) {
-					i09[i].plabels[j] = types[ds[i].labels[j + 1]];
-					i09[i].pheads[j] = ds[i].heads[j + 1];
-				}
-			}
-
-			return i09;
-		} else {
-			i09 = new SentenceData09[1];
-			i09[0] = new SentenceData09(instance);
-			i09[0].createSemantic(instance);
-			return i09;
-		}
-
-	}
-
-	is2.io.CONLLReader09 reader = new is2.io.CONLLReader09(true);
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.tools.Tool#apply(is2.data.SentenceData09)
-	 */
-	@Override
-	public SentenceData09 apply(SentenceData09 snt09) {
-
-		SentenceData09 it = new SentenceData09();
-		it.createWithRoot(snt09);
-
-		SentenceData09 out = null;
-		try {
-
-			// for(int k=0;k<it.length();k++) {
-			// it.forms[k] = reader.normalize(it.forms[k]);
-			// it.plemmas[k] = reader.normalize(it.plemmas[k]);
-			// }
-
-			out = parse(it, this.params, false, options);
-
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		Decoder.executerService.shutdown();
-		Pipe.executerService.shutdown();
-
-		return out;
-	}
-
-	/**
-	 * Get the edge scores of the last parse.
-	 * 
-	 * @return the scores
-	 */
-	public float[] getInfo() {
-
-		float[] scores = new float[is.length(0)];
-		Extractor.encode3(is.pposs[0], d.heads, d.labels, d2, scores);
-
-		return scores;
-	}
-
-	/**
-	 * Write the parsing model
-	 *
-	 * @param options
-	 * @param params
-	 * @param extension
-	 * @throws FileNotFoundException
-	 * @throws IOException
-	 */
-	private void writeModell(OptionsSuper options, ParametersFloat params, String extension, Cluster cs)
-			throws FileNotFoundException, IOException {
-
-		String name = extension == null ? options.modelName : options.modelName + extension;
-		// System.out.println("Writting model: "+name);
-		ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(name)));
-		zos.putNextEntry(new ZipEntry("data"));
-		DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(zos));
-
-		MFO.writeData(dos);
-		cs.write(dos);
-
-		params.write(dos);
-
-		dos.writeBoolean(options.stack);
-		dos.writeInt(options.featureCreation);
-
-		Edges.write(dos);
-
-		dos.writeBoolean(options.decodeProjective);
-
-		dos.writeInt(Extractor.maxForm);
-
-		dos.writeInt(5); // Info count
-		dos.writeUTF("Used parser   " + Parser.class.toString());
-		dos.writeUTF("Creation date " + (new SimpleDateFormat("yyyy.MM.dd HH:mm:ss")).format(new Date()));
-		dos.writeUTF("Training data " + options.trainfile);
-		dos.writeUTF("Iterations    " + options.numIters + " Used sentences " + options.count);
-		dos.writeUTF("Cluster       " + options.clusterFile);
-
-		dos.flush();
-		dos.close();
-	}
-
-	@Override
-	public boolean retrain(SentenceData09 sentence, float upd, int iterations) {
-
-		params.total = params.parameters;
-
-		boolean done = false;
-
-		for (int k = 0; k < iterations; k++) {
-			try {
-				// create the data structure
-				DataFES data = new DataFES(sentence.length(),
-						pipe.mf.getFeatureCounter().get(PipeGen.REL).shortValue());
-
-				Instances is = new Instances();
-				is.m_encoder = pipe.mf;
-
-				is.init(1, pipe.mf, options.formatTask);
-				new CONLLReader09().insert(is, sentence);
-
-				// String list[] =
-				// ((MFO)is.m_encoder).reverse(((MFO)is.m_encoder).getFeatureSet().get(Pipe.POS));
-				// for(String s :list) {
-				// System.out.println(s+" ");
-				// }
-
-				// for(int i=0;i<is.length(0);i++) {
-
-				// System.out.printf("%d\t %d\t %d
-				// \n",i,is.forms[0][i],is.pposs[0][i] );
-				// System.out.printf("%s\t form:%s
-				// pos:%s\n",i,sentence.forms[i],sentence.ppos[i]);
-
-				// }
-
-				SentenceData09 i09 = new SentenceData09(sentence);
-				i09.createSemantic(sentence);
-
-				// create the weights
-				data = pipe.fillVector(params.getFV(), is, 0, data, pipe.cl);
-
-				short[] pos = is.pposs[0];
-
-				// parse the sentence
-				Parse d = Decoder.decode(pos, data, options.decodeProjective, Decoder.TRAINING);
-
-				// training successful?
-				double e = pipe.errors(is, 0, d);
-				// System.out.println("errors "+e);
-				if (e == 0) {
-
-					done = true;
-					break;
-				}
-
-				// update the weight vector
-				FV pred = new FV();
-				pipe.extractor[0].encodeCat(is, 0, pos, is.forms[0], is.plemmas[0], d.heads, d.labels, is.feats[0],
-						pipe.cl, pred);
-
-				params.getFV();
-
-				FV act = new FV();
-				pipe.extractor[0].encodeCat(is, 0, pos, is.forms[0], is.plemmas[0], is.heads[0], is.labels[0],
-						is.feats[0], pipe.cl, act);
-
-				params.update(act, pred, is, 0, d, upd, e);
-
-				if (upd > 0)
-					upd--;
-
-			} catch (Exception e) {
-				e.printStackTrace();
-			}
-		}
-		Decoder.executerService.shutdown();
-		Pipe.executerService.shutdown();
-
-		return done;
-	}
-
-	@Override
-	public boolean retrain(SentenceData09 sentence, float upd, int iterations, boolean print) {
-		// TODO Auto-generated method stub
-		return retrain(sentence, upd, iterations);
-	}
-}
\ No newline at end of file
diff --git a/dependencyParser/mate-tools/src/is2/parser/Pipe.java b/dependencyParser/mate-tools/src/is2/parser/Pipe.java
deleted file mode 100755
index f7f3782..0000000
--- a/dependencyParser/mate-tools/src/is2/parser/Pipe.java
+++ /dev/null
@@ -1,224 +0,0 @@
-package is2.parser;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.concurrent.ExecutorService;
-
-import is2.data.Cluster;
-import is2.data.DataFES;
-import is2.data.F2SF;
-import is2.data.Instances;
-import is2.data.Parse;
-import is2.data.PipeGen;
-import is2.data.SentenceData09;
-import is2.io.CONLLReader09;
-import is2.util.OptionsSuper;
-
-final public class Pipe extends PipeGen {
-
-	public Extractor[] extractor;
-	final public MFO mf = new MFO();
-
-	public Cluster cl;
-
-	private OptionsSuper options;
-	public static long timeExtract;
-
-	public Pipe(OptionsSuper o) {
-		options = o;
-	}
-
-	public void createInstances(String file, Instances is) throws Exception {
-
-		CONLLReader09 depReader = new CONLLReader09(file);
-
-		mf.register(REL, "<root-type>");
-
-		// register at least one predicate since the parsing data might not
-		// contain predicates as in
-		// the Japaness corpus but the development sets contains some
-
-		System.out.print("Registering feature parts of sentence: ");
-		int ic = 0;
-		int del = 0;
-		while (true) {
-			SentenceData09 instance = depReader.getNext();
-			if (instance == null)
-				break;
-			ic++;
-
-			if (ic % 1000 == 0) {
-				del = outValue(ic, del);
-			}
-
-			String[] labs1 = instance.labels;
-			for (String element : labs1)
-				mf.register(REL, element);
-
-			String[] w = instance.forms;
-			for (String element : w)
-				mf.register(WORD, depReader.normalize(element));
-
-			w = instance.plemmas;
-			for (String element : w)
-				mf.register(WORD, depReader.normalize(element));
-
-			w = instance.ppos;
-			for (String element : w)
-				mf.register(POS, element);
-
-			w = instance.gpos;
-			for (String element : w)
-				mf.register(POS, element);
-
-			if (instance.feats != null) {
-				String fs[][] = instance.feats;
-				for (String[] element : fs) {
-					w = element;
-					if (w == null)
-						continue;
-					for (String element2 : w)
-						mf.register(FEAT, element2);
-				}
-			}
-
-			if ((ic - 1) > options.count)
-				break;
-		}
-		del = outValue(ic, del);
-
-		System.out.println();
-		Extractor.initFeatures();
-
-		Extractor.maxForm = mf.getFeatureCounter().get(WORD);
-
-		if (options.clusterFile == null)
-			cl = new Cluster();
-		else
-			cl = new Cluster(options.clusterFile, mf, 6);
-
-		mf.calculateBits();
-		Extractor.initStat(options.featureCreation);
-
-		System.out.println("" + mf.toString());
-
-		for (Extractor e : extractor)
-			e.init();
-
-		depReader.startReading(file);
-
-		int num1 = 0;
-
-		is.init(ic, new MFO());
-
-		Edges.init(mf.getFeatureCounter().get(POS));
-
-		System.out.print("Creating edge filters and read corpus: ");
-		del = 0;
-
-		while (true) {
-			if (num1 % 100 == 0)
-				del = outValue(num1, del);
-
-			SentenceData09 instance1 = depReader.getNext(is);
-
-			if (instance1 == null)
-				break;
-
-			int last = is.size() - 1;
-			short[] pos = is.pposs[last];
-
-			for (int k = 0; k < is.length(last); k++) {
-				if (is.heads[last][k] < 0)
-					continue;
-				Edges.put(pos[is.heads[last][k]], pos[k], is.labels[last][k]);
-				// Edges.put(pos[k],pos[is.heads[last][k]], is.labels[last][k]);
-			}
-
-			if (!options.allFeatures && num1 > options.count)
-				break;
-
-			num1++;
-
-		}
-		del = outValue(num1, del);
-		System.out.println();
-		Edges.findDefault();
-	}
-
-	/**
-	 * Creates an instance for outputParses
-	 *
-	 * @param is
-	 * @return
-	 * @throws IOException
-	 */
-	protected final SentenceData09 nextInstance(Instances is, CONLLReader09 depReader) throws Exception {
-
-		SentenceData09 instance = depReader.getNext(is);
-		if (instance == null || instance.forms == null)
-			return null;
-
-		return instance;
-	}
-
-	public static ExecutorService executerService = java.util.concurrent.Executors.newFixedThreadPool(Parser.THREADS);
-
-	public DataFES fillVector(F2SF params, Instances is, int inst, DataFES d, Cluster cluster)
-			throws InterruptedException {
-
-		long ts = System.nanoTime();
-
-		if (executerService.isShutdown())
-			executerService = java.util.concurrent.Executors.newCachedThreadPool();
-
-		final int length = is.length(inst);
-		if (d == null || d.len < length)
-			d = new DataFES(length, mf.getFeatureCounter().get(PipeGen.REL).shortValue());
-
-		ArrayList<ParallelExtract> pe = new ArrayList<ParallelExtract>();
-		for (int i = 0; i < Parser.THREADS; i++)
-			pe.add(new ParallelExtract(extractor[i], is, inst, d, (F2SF) params.clone(), cluster));
-
-		for (int w1 = 0; w1 < length; w1++) {
-			for (int w2 = w1 + 1; w2 < length; w2++) {
-
-				if (w1 == w2)
-					continue;
-
-				ParallelExtract.add(w1, w2);
-
-			}
-		}
-		// for(int i=0;i<efp.length;i++) efp[i].start();
-		// for(int i=0;i<efp.length;i++) efp[i].join();
-		executerService.invokeAll(pe);
-
-		timeExtract += (System.nanoTime() - ts);
-
-		return d;
-	}
-
-	public double errors(Instances is, int ic, Parse p) {
-		short[] act = is.heads[ic];
-		double correct = 0;
-
-		// do not count root
-		for (int i = 1; i < act.length; i++) {
-
-			// if (is.ppos[ic] ==null ) System.out.println("mf
-			// null"+is.ppos[ic][i]);
-			if (p.heads[i] == act[i]) {
-				correct += 0.5;
-				if (p.labels[i] == is.labels[ic][i])
-					correct += 0.5;
-			}
-		}
-
-		double x = ((double) act.length - 1 - correct);
-
-		p.f1 = correct / (act.length - 1);
-
-		return x;
-	}
-}
diff --git a/dependencyParser/mate-tools/src/is2/parser/package.html b/dependencyParser/mate-tools/src/is2/parser/package.html
deleted file mode 100755
index a4f40a2..0000000
--- a/dependencyParser/mate-tools/src/is2/parser/package.html
+++ /dev/null
@@ -1,11 +0,0 @@
-Package info
-<ul>
-  <li> separate cluster feature to keep speed since two many features in a function reduce speed drastically. </li>
-  <li> try second order stacking features </li>
-  <li> parser stacking features </li>
-  <li> lots of cluster features </li>
-  <li> Iteration over edges and not extraction of all edges each time </li>
-  <li> integrated new structurer writer </li>
-</ul>
-  Change in FS, I observed lots of duplicated grand-children features
-<br>
\ No newline at end of file
diff --git a/dependencyParser/mate-tools/src/is2/parserR2/Decoder.java b/dependencyParser/mate-tools/src/is2/parserR2/Decoder.java
deleted file mode 100755
index 2ba175f..0000000
--- a/dependencyParser/mate-tools/src/is2/parserR2/Decoder.java
+++ /dev/null
@@ -1,405 +0,0 @@
-package is2.parserR2;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.concurrent.ExecutorService;
-
-import decoder.ParallelDecoder;
-import decoder.ParallelRearrangeNBest;
-import decoder.ParallelRearrangeNBest2;
-import extractors.Extractor;
-import is2.data.Closed;
-import is2.data.DataF;
-import is2.data.Instances;
-import is2.data.Open;
-import is2.data.Parse;
-import is2.data.ParseNBest;
-
-/**
- * @author Bernd Bohnet, 01.09.2009
- *
- *         This methods do the actual work and they build the dependency trees.
- */
-final public class Decoder {
-
-	public static final boolean TRAINING = true;
-	public static long timeDecotder;
-	public static long timeRearrange;
-
-	public static final boolean LAS = true;
-
-	/**
-	 * Threshold for rearrange edges non-projective
-	 */
-	public static float NON_PROJECTIVITY_THRESHOLD = 0.3F;
-
-	public static ExecutorService executerService = java.util.concurrent.Executors.newFixedThreadPool(Parser.THREADS);
-
-	// do not initialize
-	private Decoder() {
-	};
-
-	/**
-	 * Build a dependency tree based on the data
-	 * 
-	 * @param pos
-	 *            part-of-speech tags
-	 * @param x
-	 *            the data
-	 * @param projective
-	 *            projective or non-projective
-	 * @param edges
-	 *            the edges
-	 * @return a parse tree
-	 * @throws InterruptedException
-	 */
-	public static List<ParseNBest> decode(short[] pos, DataF x, boolean projective, Extractor extractor)
-			throws InterruptedException {
-
-		long ts = System.nanoTime();
-
-		if (executerService.isShutdown())
-			executerService = java.util.concurrent.Executors.newCachedThreadPool();
-		final int n = pos.length;
-
-		final Open O[][][][] = new Open[n][n][2][];
-		final Closed C[][][][] = new Closed[n][n][2][];
-
-		ArrayList<ParallelDecoder> pe = new ArrayList<ParallelDecoder>();
-
-		for (int i = 0; i < Parser.THREADS; i++)
-			pe.add(new ParallelDecoder(pos, x, O, C, n));
-
-		for (short k = 1; k < n; k++) {
-
-			// provide the threads the data
-			for (short s = 0; s < n; s++) {
-				short t = (short) (s + k);
-				if (t >= n)
-					break;
-
-				ParallelDecoder.add(s, t);
-			}
-
-			executerService.invokeAll(pe);
-		}
-
-		double bestSpanScore = (-1.0F / 0.0F);
-		Closed bestSpan = null;
-		for (int m = 1; m < n; m++)
-			if (C[0][n - 1][1][m].p > bestSpanScore) {
-				bestSpanScore = C[0][n - 1][1][m].p;
-				bestSpan = C[0][n - 1][1][m];
-			}
-
-		// build the dependency tree from the chart
-		ParseNBest out = new ParseNBest(pos.length);
-
-		bestSpan.create(out);
-
-		out.heads[0] = -1;
-		out.labels[0] = 0;
-		bestProj = out;
-
-		timeDecotder += (System.nanoTime() - ts);
-		// DB.println(""+out);
-
-		ts = System.nanoTime();
-		List<ParseNBest> parses;
-
-		if (!projective) {
-
-			// if (training)
-			// rearrange(pos, out.heads, out.types,x,training);
-			// else {
-			// DB.println("bestSpan score "+(float)bestSpan.p+" comp score
-			// "+Extractor.encode3(pos, out.heads, out.types, x));
-			// System.out.println();
-			// Parse best = new Parse(out.heads,out.types,Extractor.encode3(pos,
-			// out.heads, out.types, x));
-			parses = rearrangeNBest(pos, out.heads, out.labels, x, extractor);
-			// DB.println("1best "+parses.get(0).f1);
-			// DB.println(""+parses.get(0).toString());
-
-			// for(ParseNBest p :parses) if (p.heads==null)
-			// p.signature2parse(p.signature());
-
-			/// if (parses.get(0).f1>(best.f1+NON_PROJECTIVITY_THRESHOLD)) out =
-			/// parses.get(0);
-			// else out =best;
-
-			// }
-		} else {
-			parses = new ArrayList<ParseNBest>();
-			parses.add(out);
-		}
-		timeRearrange += (System.nanoTime() - ts);
-
-		return parses;
-	}
-
-	static Parse bestProj = null;
-
-	/**
-	 * This is the parallel non-projective edge re-arranger
-	 * 
-	 * @param pos
-	 *            part-of-speech tags
-	 * @param heads
-	 *            parent child relation
-	 * @param labs
-	 *            edge labels
-	 * @param x
-	 *            the data
-	 * @param edges
-	 *            the existing edges defined by part-of-speech tags
-	 * @throws InterruptedException
-	 */
-	public static List<ParseNBest> rearrangeNBestP(short[] pos, short[] heads, short[] labs, DataF x,
-			Extractor extractor) throws InterruptedException {
-
-		ArrayList<ParallelRearrangeNBest2> pe = new ArrayList<ParallelRearrangeNBest2>();
-
-		int round = 0;
-		ArrayList<ParseNBest> parses = new ArrayList<ParseNBest>();
-		ParseNBest px = new ParseNBest();
-		px.signature(heads, labs);
-		// Object extractor;
-		px.f1 = extractor.encode3(pos, heads, labs, x);
-		parses.add(px);
-
-		float lastNBest = Float.NEGATIVE_INFINITY;
-
-		HashSet<Parse> done = new HashSet<Parse>();
-		gnu.trove.THashSet<CharSequence> contained = new gnu.trove.THashSet<CharSequence>();
-
-		while (true) {
-
-			pe.clear();
-
-			// used the first three parses
-			int ic = 0, considered = 0;
-			while (true) {
-
-				if (parses.size() <= ic || considered > 11)
-					break;
-
-				ParseNBest parse = parses.get(ic);
-
-				ic++;
-				// parse already extended
-				if (done.contains(parse))
-					continue;
-				considered++;
-
-				parse.signature2parse(parse.signature());
-
-				done.add(parse);
-
-				boolean[][] isChild = new boolean[heads.length][heads.length];
-
-				for (int i = 1, l1 = 1; i < heads.length; i++, l1 = i)
-					while ((l1 = heads[l1]) != -1)
-						isChild[l1][i] = true;
-
-				// check the list of new possible parents and children for a
-				// better combination
-				for (short ch = 1; ch < heads.length; ch++) {
-					for (short pa = 0; pa < heads.length; pa++) {
-						if (ch == pa || pa == heads[ch] || isChild[ch][pa])
-							continue;
-						ParallelRearrangeNBest2.add(parse.clone(), ch, pa);
-					}
-				}
-
-			}
-
-			for (int t = 0; t < Parser.THREADS; t++)
-				pe.add(new ParallelRearrangeNBest2(pos, x, lastNBest, extractor, NON_PROJECTIVITY_THRESHOLD));
-
-			executerService.invokeAll(pe);
-
-			// avoid to add parses several times
-			for (ParallelRearrangeNBest2 rp : pe) {
-				for (int k = rp.parses.size() - 1; k >= 0; k--) {
-					if (lastNBest > rp.parses.get(k).f1)
-						continue;
-					CharSequence sig = rp.parses.get(k).signature();
-					if (!contained.contains(sig)) {
-						parses.add(rp.parses.get(k));
-						contained.add(sig);
-					}
-				}
-			}
-
-			Collections.sort(parses);
-
-			if (round >= 2)
-				break;
-			round++;
-
-			// do not use to much memory
-			if (parses.size() > Parser.NBest) {
-				// if (parses.get(Parser.NBest).f1>lastNBest) lastNBest =
-				// (float)parses.get(Parser.NBest).f1;
-				parses.subList(Parser.NBest, parses.size() - 1).clear();
-			}
-		}
-		return parses;
-	}
-
-	/**
-	 * This is the parallel non-projective edge re-arranger
-	 * 
-	 * @param pos
-	 *            part-of-speech tags
-	 * @param heads
-	 *            parent child relation
-	 * @param labs
-	 *            edge labels
-	 * @param x
-	 *            the data
-	 * @param edges
-	 *            the existing edges defined by part-of-speech tags
-	 * @throws InterruptedException
-	 */
-	public static List<ParseNBest> rearrangeNBest(short[] pos, short[] heads, short[] labs, DataF x,
-			Extractor extractor) throws InterruptedException {
-
-		ArrayList<ParallelRearrangeNBest> pe = new ArrayList<ParallelRearrangeNBest>();
-
-		int round = 0;
-		ArrayList<ParseNBest> parses = new ArrayList<ParseNBest>();
-		ParseNBest px = new ParseNBest();
-		px.signature(heads, labs);
-		// Object extractor;
-		px.f1 = extractor.encode3(pos, heads, labs, x);
-		parses.add(px);
-
-		float lastNBest = Float.NEGATIVE_INFINITY;
-
-		HashSet<Parse> done = new HashSet<Parse>();
-		gnu.trove.THashSet<CharSequence> contained = new gnu.trove.THashSet<CharSequence>();
-		while (true) {
-
-			pe.clear();
-
-			// used the first three parses
-			int i = 0;
-			while (true) {
-
-				if (parses.size() <= i || pe.size() > 12)
-					break;
-
-				ParseNBest parse = parses.get(i);
-
-				i++;
-
-				// parse already extended
-				if (done.contains(parse))
-					continue;
-
-				// DB.println("err "+parse.heads);
-
-				parse.signature2parse(parse.signature());
-
-				done.add(parse);
-				pe.add(new ParallelRearrangeNBest(pos, x, parse, lastNBest, extractor, (float) parse.f1,
-						NON_PROJECTIVITY_THRESHOLD));
-			}
-
-			executerService.invokeAll(pe);
-
-			// avoid to add parses several times
-			for (ParallelRearrangeNBest rp : pe) {
-				for (int k = rp.parses.size() - 1; k >= 0; k--) {
-					if (lastNBest > rp.parses.get(k).f1)
-						continue;
-					CharSequence sig = rp.parses.get(k).signature();
-					if (!contained.contains(sig)) {
-						parses.add(rp.parses.get(k));
-						contained.add(sig);
-					}
-				}
-			}
-
-			Collections.sort(parses);
-
-			if (round >= 2)
-				break;
-			round++;
-
-			// do not use to much memory
-			if (parses.size() > Parser.NBest) {
-				if (parses.get(Parser.NBest).f1 > lastNBest)
-					lastNBest = (float) parses.get(Parser.NBest).f1;
-				parses.subList(Parser.NBest, parses.size() - 1).clear();
-			}
-		}
-		return parses;
-	}
-
-	public static String getInfo() {
-
-		return "Decoder non-projectivity threshold: " + NON_PROJECTIVITY_THRESHOLD;
-	}
-
-	/**
-	 * @param parses
-	 * @param is
-	 * @param i
-	 * @return
-	 */
-	public static int getGoldRank(List<ParseNBest> parses, Instances is, int i, boolean las) {
-
-		for (int p = 0; p < parses.size(); p++) {
-
-			if (parses.get(p).heads == null)
-				parses.get(p).signature2parse(parses.get(p).signature());
-
-			boolean eq = true;
-			for (int w = 1; w < is.length(0); w++) {
-				if (is.heads[i][w] != parses.get(p).heads[w] || (is.labels[i][w] != parses.get(p).labels[w] && las)) {
-					eq = false;
-					break;
-				}
-			}
-			if (eq)
-				return p;
-		}
-		return -1;
-	}
-
-	public static int getSmallestError(List<ParseNBest> parses, Instances is, int i, boolean las) {
-
-		int smallest = -1;
-		for (int p = 0; p < parses.size(); p++) {
-
-			int err = 0;
-			for (int w = 1; w < is.length(0); w++) {
-				if (is.heads[i][w] != parses.get(p).heads[w] || (is.labels[i][w] != parses.get(p).labels[w] && las)) {
-					err++;
-				}
-			}
-			if (smallest == -1 || smallest > err)
-				smallest = err;
-			if (smallest == 0)
-				return 0;
-		}
-		return smallest;
-	}
-
-	public static int getError(ParseNBest parse, Instances is, int i, boolean las) {
-
-		int err = 0;
-		for (int w = 1; w < is.length(i); w++) {
-			if (is.heads[i][w] != parse.heads[w] || (is.labels[i][w] != parse.labels[w] && las)) {
-				err++;
-			}
-		}
-		return err;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/parserR2/Options.java b/dependencyParser/mate-tools/src/is2/parserR2/Options.java
deleted file mode 100755
index eb396b4..0000000
--- a/dependencyParser/mate-tools/src/is2/parserR2/Options.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package is2.parserR2;
-
-import is2.util.OptionsSuper;
-
-public final class Options extends OptionsSuper {
-
-	int start = 0, end = 0;
-	String prefix_model = "m";
-	String prefix_test = "t";
-
-	public Options(String[] args) {
-
-		for (int i = 0; i < args.length; i++) {
-
-			if (args[i].equals("--help"))
-				explain();
-
-			if (args[i].equals("-decode")) {
-				decodeProjective = args[i + 1].equals("proj");
-				i++;
-			} else if (args[i].equals("-decodeTH")) {
-				decodeTH = Double.parseDouble(args[i + 1]);
-				i++;
-			} else if (args[i].equals("-nonormalize")) {
-				normalize = false;
-			} else if (args[i].equals("-features")) {
-				features = args[i + 1];
-				i++;
-			} else if (args[i].equals("-hsize")) {
-				hsize = Integer.parseInt(args[i + 1]);
-				i++;
-			} else if (args[i].equals("-len")) {
-				maxLen = Integer.parseInt(args[i + 1]);
-				i++;
-			} else if (args[i].equals("-cores")) {
-				cores = Integer.parseInt(args[i + 1]);
-				i++;
-			} else if (args[i].equals("-best")) {
-				best = Integer.parseInt(args[i + 1]);
-				i++;
-			} else if (args[i].equals("-start")) {
-				start = Integer.parseInt(args[i + 1]);
-				i++;
-			} else if (args[i].equals("-end")) {
-				end = Integer.parseInt(args[i + 1]);
-				i++;
-			} else if (args[i].equals("-prefix-model")) {
-				prefix_model = args[i + 1];
-				i++;
-			} else if (args[i].equals("-prefix-test")) {
-				prefix_test = args[i + 1];
-				i++;
-			} else if (args[i].equals("-mapping")) {
-				this.useMapping = args[i + 1];
-				i++;
-			} else if (args[i].equals("-no2nd")) {
-				no2nd = true;
-			} else if (args[i].equals("-few2nd")) {
-				few2nd = true;
-			} else
-				super.addOption(args, i);
-
-		}
-
-	}
-
-	private void explain() {
-		System.out.println("Usage: ");
-		System.out.println("java -class mate.jar is2.parser.Parser [Options]");
-		System.out.println();
-		System.out.println("Example: ");
-		System.out.println(
-				" java -class mate.jar is2.parser.Parser -model eps3.model -train corpora/conll08st/train/train.closed -test corpora/conll08st/devel/devel.closed  -out b3.test -eval corpora/conll08st/devel/devel.closed  -count 2000 -i 6");
-		System.out.println("");
-		System.out.println("Options:");
-		System.out.println("");
-		System.out.println(" -train  <file>    the corpus a model is trained on; default " + this.trainfile);
-		System.out.println(" -test   <file>    the input corpus for testing; default " + this.testfile);
-		System.out.println(" -out    <file>    the output corpus (result) of a test run; default " + this.outfile);
-		System.out.println(" -model  <file>    the parsing model for traing the model is stored in the files");
-		System.out.println(
-				"                   and for parsing the model is load from this file; default " + this.modelName);
-		System.out.println(
-				" -i      <number>  the number of training iterations; good numbers are 10 for smaller corpora and 6 for bigger; default "
-						+ this.numIters);
-		System.out.println(" -count  <number>  the n first sentences of the corpus are take for the training default "
-				+ this.count);
-		System.out.println(" -format <number>  conll format of the year 8 or 9; default " + this.formatTask);
-
-		System.exit(0);
-	}
-}
diff --git a/dependencyParser/mate-tools/src/is2/parserR2/Parameters.java b/dependencyParser/mate-tools/src/is2/parserR2/Parameters.java
deleted file mode 100755
index de7b591..0000000
--- a/dependencyParser/mate-tools/src/is2/parserR2/Parameters.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- *
- */
-package is2.parserR2;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import is2.data.FV;
-import is2.data.IFV;
-import is2.data.Instances;
-import is2.data.Parse;
-
-/**
- * @author Bernd Bohnet, 31.08.2009
- *
- *
- */
-public abstract class Parameters {
-
-	public abstract void average(double avVal);
-
-	public abstract void update(FV act, FV pred, Instances isd, int instc, Parse d, double upd, double e);
-
-	public abstract void write(DataOutputStream dos) throws IOException;
-
-	public abstract void read(DataInputStream dis) throws IOException;
-
-	public abstract int size();
-
-	/**
-	 * @return
-	 */
-	public abstract IFV getFV();
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/parserR2/ParametersFloat.java b/dependencyParser/mate-tools/src/is2/parserR2/ParametersFloat.java
deleted file mode 100755
index 2ba0aaa..0000000
--- a/dependencyParser/mate-tools/src/is2/parserR2/ParametersFloat.java
+++ /dev/null
@@ -1,178 +0,0 @@
-package is2.parserR2;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import is2.data.F2SF;
-import is2.data.FV;
-import is2.data.FVR;
-import is2.data.Instances;
-import is2.data.Parse;
-import is2.util.DB;
-
-final public class ParametersFloat extends Parameters {
-
-	public float[] parameters;
-	private float[] total;
-
-	public ParametersFloat(int size) {
-		parameters = new float[size];
-		total = new float[size];
-		for (int i = 0; i < parameters.length; i++) {
-			parameters[i] = 0F;
-			total[i] = 0F;
-		}
-	}
-
-	/**
-	 * @param parameters2
-	 */
-	public ParametersFloat(float[] p) {
-		parameters = p;
-	}
-
-	@Override
-	public void average(double avVal) {
-		for (int j = 0; j < total.length; j++) {
-			parameters[j] = total[j] / ((float) avVal);
-		}
-		total = null;
-	}
-
-	public ParametersFloat average2(double avVal) {
-		float[] px = new float[this.parameters.length];
-		for (int j = 0; j < total.length; j++) {
-			px[j] = total[j] / ((float) avVal);
-		}
-		ParametersFloat pf = new ParametersFloat(px);
-		return pf;
-	}
-
-	public void update(FV act, FV pred, Instances isd, int instc, Parse dx, double upd, double e, float d, float f) {
-
-		e++;
-
-		float lam_dist = d - f;
-
-		float b = (float) e - lam_dist;
-
-		FV dist = act.getDistVector(pred);
-
-		dist.update(parameters, total, hildreth(dist, b), upd, false);
-	}
-
-	@Override
-	public void update(FV act, FV pred, Instances isd, int instc, Parse dx, double upd, double e) {
-
-		e++;
-
-		float lam_dist = getScore(act) - getScore(pred);
-
-		float b = (float) e - lam_dist;
-
-		FV dist = act.getDistVector(pred);
-
-		dist.update(parameters, total, hildreth(dist, b), upd, false);
-	}
-
-	public void update(FVR act, FVR pred, Instances isd, int instc, Parse dx, double upd, double e, float lam_dist) {
-
-		e++;
-
-		float b = (float) e - lam_dist;
-
-		FVR dist = act.getDistVector(pred);
-
-		dist.update(parameters, total, hildreth(dist, b), upd, false);
-	}
-
-	protected double hildreth(FV a, double b) {
-
-		double A = a.dotProduct(a);
-		if (A <= 0.0000000000000000001)
-			return 0.0;
-		return b / A;
-	}
-
-	protected double hildreth(FVR a, double b) {
-
-		double A = a.dotProduct(a);
-		if (A <= 0.0000000000000000001)
-			return 0.0;
-		return b / A;
-	}
-
-	public float getScore(FV fv) {
-		if (fv == null)
-			return 0.0F;
-		return fv.getScore(parameters, false);
-
-	}
-
-	public float getScore(FVR fv) { // xx
-		if (fv == null)
-			return 0.0F;
-		return fv.getScore(parameters, false);
-
-	}
-
-	@Override
-	final public void write(DataOutputStream dos) throws IOException {
-
-		dos.writeInt(parameters.length);
-		for (float d : parameters)
-			dos.writeFloat(d);
-
-	}
-
-	@Override
-	public void read(DataInputStream dis) throws IOException {
-
-		parameters = new float[dis.readInt()];
-		int notZero = 0;
-		for (int i = 0; i < parameters.length; i++) {
-			parameters[i] = dis.readFloat();
-			if (parameters[i] != 0.0F)
-				notZero++;
-		}
-
-		DB.println("read parameters " + parameters.length + " not zero " + notZero);
-
-	}
-
-	public int countNZ() {
-
-		int notZero = 0;
-		for (float parameter : parameters) {
-			if (parameter != 0.0F)
-				notZero++;
-		}
-		return notZero;
-
-		// DB.println("read parameters "+parameters.length+" not zero
-		// "+notZero);
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.sp09k99995.Parameters#getFV()
-	 */
-	@Override
-	public F2SF getFV() {
-		return new F2SF(parameters);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.sp09k99999.Parameters#size()
-	 */
-	@Override
-	public int size() {
-		return parameters.length;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/parserR2/Parser.java b/dependencyParser/mate-tools/src/is2/parserR2/Parser.java
deleted file mode 100755
index 54d6f2e..0000000
--- a/dependencyParser/mate-tools/src/is2/parserR2/Parser.java
+++ /dev/null
@@ -1,647 +0,0 @@
-package is2.parserR2;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map.Entry;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-import java.util.zip.ZipOutputStream;
-
-//import extractors.ExtractorClusterStackedR2;
-import extractors.Extractor;
-import extractors.ExtractorFactory;
-import is2.data.Cluster;
-import is2.data.DataF;
-import is2.data.Edges;
-import is2.data.FV;
-import is2.data.Instances;
-import is2.data.Long2Int;
-import is2.data.Long2IntInterface;
-import is2.data.MFB;
-import is2.data.Parse;
-import is2.data.ParseNBest;
-import is2.data.PipeGen;
-import is2.data.SentenceData09;
-import is2.io.CONLLReader09;
-import is2.io.CONLLWriter09;
-import is2.tools.Tool;
-import is2.util.DB;
-import is2.util.OptionsSuper;
-import is2.util.ParserEvaluator;
-
-public class Parser implements Tool {
-
-	// output evaluation info
-	private static final boolean MAX_INFO = true;
-
-	public static int THREADS = 4;
-
-	Long2IntInterface l2i;
-	ParametersFloat params;
-	Pipe pipe;
-	OptionsSuper options;
-
-	HashMap<Integer, Integer> rank = new HashMap<Integer, Integer>();
-	int amongxbest = 0, amongxbest_ula = 0, nbest = 0, bestProj = 0, smallestErrorSum = 0, countAllNodes = 0;
-	static int NBest = 1000;
-
-	ExtractorFactory extractorFactory = new ExtractorFactory(ExtractorFactory.StackedClusteredR2);
-
-	/**
-	 * Initialize the parser
-	 * 
-	 * @param options
-	 */
-	public Parser(OptionsSuper options) {
-
-		this.options = options;
-		pipe = new Pipe(options);
-
-		params = new ParametersFloat(0);
-
-		// load the model
-		try {
-			readModel(options, pipe, params);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-	}
-
-	/**
-	 * @param modelFileName
-	 *            The file name of the parsing model
-	 */
-	public Parser(String modelFileName) {
-		this(new Options(new String[] { "-model", modelFileName }));
-	}
-
-	/**
-	 *
-	 */
-	public Parser() {
-		// TODO Auto-generated constructor stub
-	}
-
-	public static void main(String[] args) throws Exception {
-
-		long start = System.currentTimeMillis();
-		OptionsSuper options = new Options(args);
-
-		NBest = options.best;
-
-		DB.println("n-best" + NBest);
-
-		Runtime runtime = Runtime.getRuntime();
-		THREADS = runtime.availableProcessors();
-		if (options.cores < THREADS && options.cores > 0)
-			THREADS = options.cores;
-
-		DB.println("Found " + runtime.availableProcessors() + " cores use " + THREADS);
-
-		if (options.train) {
-
-			Parser p = new Parser();
-			p.options = options;
-
-			p.l2i = new Long2Int(options.hsize);
-
-			p.pipe = new Pipe(options);
-			Instances is = new Instances();
-
-			p.pipe.extractor = new Extractor[THREADS];
-
-			for (int t = 0; t < THREADS; t++)
-				p.pipe.extractor[t] = p.extractorFactory.getExtractor(p.l2i);
-
-			p.params = new ParametersFloat(p.l2i.size());
-
-			if (options.useMapping != null) {
-				String model = options.modelName;
-
-				options.modelName = options.useMapping;
-				DB.println("Using mapping of model " + options.modelName);
-				ZipInputStream zis = new ZipInputStream(
-						new BufferedInputStream(new FileInputStream(options.modelName)));
-				zis.getNextEntry();
-				DataInputStream dis = new DataInputStream(new BufferedInputStream(zis));
-				p.pipe.mf.read(dis);
-
-				DB.println("read\n" + p.pipe.mf.toString());
-
-				ParametersFloat params = new ParametersFloat(0);
-				params.read(dis);
-
-				Edges.read(dis);
-
-				dis.close();
-				DB.println("end read model");
-				options.modelName = model;
-			}
-
-			p.pipe.createInstances(options.trainfile, is);
-
-			p.train(options, p.pipe, p.params, is, p.pipe.cl);
-
-			p.writeModell(options, p.params, null, p.pipe.cl);
-
-		}
-
-		if (options.test) {
-
-			Parser p = new Parser();
-			p.options = options;
-
-			p.pipe = new Pipe(options);
-			p.params = new ParametersFloat(0); // total should be zero and the
-												// parameters are later read
-
-			// load the model
-
-			p.readModel(options, p.pipe, p.params);
-
-			DB.println("test on " + options.testfile);
-
-			System.out.println("" + p.pipe.mf.toString());
-
-			p.outputParses(options, p.pipe, p.params, !MAX_INFO);
-
-		}
-
-		System.out.println();
-
-		if (options.eval) {
-			System.out.println("\nEVALUATION PERFORMANCE:");
-			ParserEvaluator.evaluate(options.goldfile, options.outfile);
-		}
-
-		long end = System.currentTimeMillis();
-		System.out.println("used time " + ((float) ((end - start) / 100) / 10));
-
-		Decoder.executerService.shutdown();
-		Pipe.executerService.shutdown();
-		System.out.println("end.");
-
-	}
-
-	/**
-	 * Read the models and mapping
-	 * 
-	 * @param options
-	 * @param pipe
-	 * @param params
-	 * @throws IOException
-	 */
-	public void readModel(OptionsSuper options, Pipe pipe, Parameters params) throws IOException {
-
-		DB.println("Reading data started");
-
-		// prepare zipped reader
-		ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(options.modelName)));
-		zis.getNextEntry();
-		DataInputStream dis = new DataInputStream(new BufferedInputStream(zis));
-
-		pipe.mf.read(dis);
-
-		pipe.cl = new Cluster(dis);
-
-		params.read(dis);
-		this.l2i = new Long2Int(params.size());
-		DB.println("parsing -- li size " + l2i.size());
-
-		pipe.extractor = new Extractor[THREADS];
-
-		for (int t = 0; t < THREADS; t++)
-			pipe.extractor[t] = this.extractorFactory.getExtractor(l2i);
-
-		Edges.read(dis);
-
-		options.decodeProjective = dis.readBoolean();
-
-		int maxForm = dis.readInt();
-
-		for (int t = 0; t < THREADS; t++) {
-			pipe.extractor[t].setMaxForm(maxForm);
-			pipe.extractor[t].initStat();
-			pipe.extractor[t].init();
-		}
-
-		boolean foundInfo = false;
-		try {
-			String info = null;
-			int icnt = dis.readInt();
-			for (int i = 0; i < icnt; i++) {
-				info = dis.readUTF();
-				System.out.println(info);
-			}
-		} catch (Exception e) {
-			if (!foundInfo)
-				System.out.println("no info about training");
-		}
-
-		dis.close();
-
-		DB.println("Reading data finnished");
-
-		Decoder.NON_PROJECTIVITY_THRESHOLD = (float) options.decodeTH;
-		for (int t = 0; t < THREADS; t++) {
-			pipe.extractor[t].initStat();
-			pipe.extractor[t].init();
-		}
-
-	}
-
-	/**
-	 * Do the training
-	 * 
-	 * @param instanceLengths
-	 * @param options
-	 * @param pipe
-	 * @param params
-	 * @param is
-	 * @param cluster
-	 * @throws IOException
-	 * @throws InterruptedException
-	 * @throws ClassNotFoundException
-	 */
-	public void train(OptionsSuper options, Pipe pipe, ParametersFloat params, Instances is, Cluster cluster)
-			throws IOException, InterruptedException, ClassNotFoundException {
-
-		DB.println("\nTraining Information ");
-		DB.println("-------------------- ");
-
-		Decoder.NON_PROJECTIVITY_THRESHOLD = (float) options.decodeTH;
-
-		if (options.decodeProjective)
-			System.out.println("Decoding: " + (options.decodeProjective ? "projective" : "non-projective"));
-		else
-			System.out.println("" + Decoder.getInfo());
-		int numInstances = is.size();
-
-		int maxLenInstances = 0;
-		for (int i = 0; i < numInstances; i++)
-			if (maxLenInstances < is.length(i))
-				maxLenInstances = is.length(i);
-
-		DataF data = new DataF(maxLenInstances, pipe.mf.getFeatureCounter().get(PipeGen.REL).shortValue());
-
-		int iter = 0;
-		int del = 0;
-		float error = 0;
-		float f1 = 0;
-
-		FV pred = new FV();
-		FV act = new FV();
-
-		double upd = (double) (numInstances * options.numIters) + 1;
-
-		for (; iter < options.numIters; iter++) {
-
-			System.out.print("Iteration " + iter + ": ");
-
-			long start = System.currentTimeMillis();
-
-			long last = System.currentTimeMillis();
-			error = 0;
-			f1 = 0;
-			for (int n = 0; n < numInstances; n++) {
-
-				upd--;
-
-				if (is.labels[n].length > options.maxLen)
-					continue;
-
-				String info = " td " + ((Decoder.timeDecotder) / 1000000F) + " tr "
-						+ ((Decoder.timeRearrange) / 1000000F) + " te " + ((Pipe.timeExtract) / 1000000F);
-
-				if ((n + 1) % 500 == 0)
-					del = PipeGen.outValueErr(n + 1, Math.round(error * 1000) / 1000, f1 / n, del, last, upd, info);
-
-				short pos[] = is.pposs[n];
-
-				data = pipe.fillVector(params.getFV(), is, n, data, cluster, THREADS, l2i);
-
-				List<ParseNBest> parses = Decoder.decode(pos, data, options.decodeProjective, pipe.extractor[0]);
-				Parse d = parses.get(0);
-				double e = pipe.errors(is, n, d);
-
-				if (d.f1 > 0)
-					f1 += (d.labels.length - 1 - e) / (d.labels.length - 1);
-
-				if (e <= 0)
-					continue;
-
-				// get predicted feature vector
-				pred.clear();
-				pipe.extractor[0].encodeCat(is, n, pos, is.forms[n], is.plemmas[n], d.heads, d.labels, is.feats[n],
-						pipe.cl, pred);
-
-				error += e;
-
-				act.clear();
-				pipe.extractor[0].encodeCat(is, n, pos, is.forms[n], is.plemmas[n], is.heads[n], is.labels[n],
-						is.feats[n], pipe.cl, act);
-
-				params.update(act, pred, is, n, d, upd, e);
-			}
-
-			String info = " td " + ((Decoder.timeDecotder) / 1000000F) + " tr " + ((Decoder.timeRearrange) / 1000000F)
-					+ " te " + ((Pipe.timeExtract) / 1000000F) + " nz " + params.countNZ();
-			PipeGen.outValueErr(numInstances, Math.round(error * 1000) / 1000, f1 / numInstances, del, last, upd, info);
-			del = 0;
-			long end = System.currentTimeMillis();
-			System.out.println(" time:" + (end - start));
-
-			ParametersFloat pf = params.average2((iter + 1) * is.size());
-			try {
-
-				if (options.testfile != null) {
-					outputParses(options, pipe, pf, !MAX_INFO);
-					ParserEvaluator.evaluate(options.goldfile, options.outfile);
-					// writeModell(options, pf, ""+(iter+1),pipe.cl);
-				}
-
-			} catch (Exception e) {
-				e.printStackTrace();
-			}
-
-			Decoder.timeDecotder = 0;
-			Decoder.timeRearrange = 0;
-			Pipe.timeExtract = 0;
-
-		}
-		params.average(iter * is.size());
-	}
-
-	/**
-	 * Do the parsing
-	 * 
-	 * @param options
-	 * @param pipe
-	 * @param params
-	 * @throws IOException
-	 */
-	private void outputParses(OptionsSuper options, Pipe pipe, ParametersFloat params, boolean maxInfo)
-			throws Exception {
-
-		long start = System.currentTimeMillis();
-
-		CONLLReader09 depReader = new CONLLReader09(options.testfile, options.formatTask);
-		CONLLWriter09 depWriter = new CONLLWriter09(options.outfile, options.formatTask);
-
-		// ExtractorClusterStacked.initFeatures();
-
-		int cnt = 0;
-		int del = 0;
-		long last = System.currentTimeMillis();
-
-		if (maxInfo)
-			System.out.println("\nParsing Information ");
-		if (maxInfo)
-			System.out.println("------------------- ");
-
-		if (maxInfo && !options.decodeProjective)
-			System.out.println("" + Decoder.getInfo());
-
-		// if (!maxInfo) System.out.println();
-
-		String[] types = new String[pipe.mf.getFeatureCounter().get(PipeGen.REL)];
-		for (Entry<String, Integer> e : MFB.getFeatureSet().get(PipeGen.REL).entrySet())
-			types[e.getValue()] = e.getKey();
-
-		System.out.print("Processing Sentence: ");
-
-		while (true) {
-
-			Instances is = new Instances();
-			is.init(1, new MFB(), options.formatTask);
-
-			SentenceData09 instance = pipe.nextInstance(is, depReader);
-			if (instance == null)
-				break;
-			cnt++;
-
-			SentenceData09 i09 = this.parse(instance, params);
-
-			// }
-			depWriter.write(i09);
-			del = PipeGen.outValue(cnt, del, last);
-			// DB.println("xbest "+amongxbest+" cnt "+cnt+"
-			// "+((float)((float)amongxbest/cnt))+" nbest "+((float)nbest/cnt)+
-			// " 1best "+((float)(rank.get(0)==null?0:rank.get(0))/cnt)+"
-			// best-proj "+((float)bestProj/cnt));
-
-		}
-
-		// pipe.close();
-
-		depWriter.finishWriting();
-		long end = System.currentTimeMillis();
-		DB.println("rank\n" + rank + "\n");
-		DB.println("x-best-las " + amongxbest + " x-best-ula " + amongxbest_ula + " cnt " + cnt + " x-best-las "
-				+ ((float) amongxbest / cnt) + " x-best-ula " + ((float) amongxbest_ula / cnt) + " nbest "
-				+ ((float) nbest / cnt) + " 1best " + ((float) (rank.get(0) == null ? 0 : rank.get(0)) / cnt)
-				+ " best-proj " + ((float) bestProj / cnt) + " Sum LAS "
-				+ ((float) this.smallestErrorSum / countAllNodes));
-
-		// DB.println("errors "+error);
-
-		rank.clear();
-		amongxbest = 0;
-		amongxbest_ula = 0;
-		cnt = 0;
-		nbest = 0;
-		bestProj = 0;
-		if (maxInfo)
-			System.out.println("Used time " + (end - start));
-		if (maxInfo)
-			System.out.println("forms count " + Instances.m_count + " unkown " + Instances.m_unkown);
-
-	}
-
-	public SentenceData09 parse(SentenceData09 instance, ParametersFloat params) {
-
-		String[] types = new String[pipe.mf.getFeatureCounter().get(PipeGen.REL)];
-		for (Entry<String, Integer> e : MFB.getFeatureSet().get(PipeGen.REL).entrySet())
-			types[e.getValue()] = e.getKey();
-
-		Instances is = new Instances();
-		is.init(1, new MFB(), options.formatTask);
-		new CONLLReader09().insert(is, instance);
-
-		String[] forms = instance.forms;
-
-		// use for the training ppos
-		DataF d2;
-		try {
-			d2 = pipe.fillVector(params.getFV(), is, 0, null, pipe.cl, THREADS, l2i);// cnt-1
-		} catch (Exception e) {
-			e.printStackTrace();
-			return null;
-		}
-		short[] pos = is.pposs[0];
-
-		List<ParseNBest> parses = null;
-		Parse d = null;
-		try {
-			parses = Decoder.decode(pos, d2, options.decodeProjective, pipe.extractor[0]); // cnt-1
-			d = parses.get(0);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		if (parses.size() > NBest)
-			parses = parses.subList(0, NBest);
-
-		int g_las = Decoder.getGoldRank(parses, is, 0, Decoder.LAS);
-		int g_ula = Decoder.getGoldRank(parses, is, 0, !Decoder.LAS);
-
-		int smallest = Decoder.getSmallestError(parses, is, 0, !Decoder.LAS);
-		smallestErrorSum += is.length(0) - smallest;
-		countAllNodes += is.length(0);
-
-		if (g_las >= 0)
-			amongxbest++;
-		if (g_ula >= 0)
-			amongxbest_ula++;
-
-		nbest += parses.size();
-
-		Integer r = rank.get(g_las);
-		if (r == null)
-			rank.put(g_las, 1);
-		else
-			rank.put(g_las, r + 1);
-
-		this.pipe.errors(is, 0, d);
-
-		float errBestProj = (float) this.pipe.errors(is, 0, Decoder.bestProj);
-
-		if (errBestProj == 0)
-			bestProj++;
-
-		SentenceData09 i09 = new SentenceData09(instance);
-
-		i09.createSemantic(instance);
-
-		for (int j = 0; j < forms.length - 1; j++) {
-			i09.plabels[j] = types[d.labels[j + 1]];
-			i09.pheads[j] = d.heads[j + 1];
-		}
-		return i09;
-
-	}
-
-	public List<ParseNBest> parseNBest(SentenceData09 instance) {
-
-		Instances is = new Instances();
-		is.init(1, new MFB(), options.formatTask);
-		new CONLLReader09().insert(is, instance);
-
-		// use for the training ppos
-		DataF d2;
-		try {
-			d2 = pipe.fillVector(params.getFV(), is, 0, null, pipe.cl, THREADS, l2i);// cnt-1
-		} catch (Exception e) {
-			e.printStackTrace();
-			return null;
-		}
-		short[] pos = is.pposs[0];
-
-		List<ParseNBest> parses = null;
-		try {
-			parses = Decoder.decode(pos, d2, options.decodeProjective, pipe.extractor[0]); // cnt-1
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		if (parses.size() > NBest)
-			parses = parses.subList(0, NBest);
-
-		return parses;
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.tools.Tool#apply(is2.data.SentenceData09)
-	 */
-
-	@Override
-	public SentenceData09 apply(SentenceData09 snt09) {
-
-		SentenceData09 it = new SentenceData09();
-		it.createWithRoot(snt09);
-
-		SentenceData09 out = null;
-		try {
-
-			// for(int k=0;k<it.length();k++) {
-			// it.forms[k] = reader.normalize(it.forms[k]);
-			// it.plemmas[k] = reader.normalize(it.plemmas[k]);
-			// }
-
-			out = parse(it, this.params);
-
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		Decoder.executerService.shutdown();
-		Pipe.executerService.shutdown();
-
-		return out;
-	}
-
-	/**
-	 * Write the parsing model
-	 *
-	 * @param options
-	 * @param params
-	 * @param extension
-	 * @throws FileNotFoundException
-	 * @throws IOException
-	 */
-	private void writeModell(OptionsSuper options, ParametersFloat params, String extension, Cluster cs)
-			throws FileNotFoundException, IOException {
-
-		String name = extension == null ? options.modelName : options.modelName + extension;
-		// System.out.println("Writting model: "+name);
-		ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(name)));
-		zos.putNextEntry(new ZipEntry("data"));
-		DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(zos));
-
-		MFB.writeData(dos);
-		cs.write(dos);
-
-		params.write(dos);
-
-		Edges.write(dos);
-
-		dos.writeBoolean(options.decodeProjective);
-
-		dos.writeInt(pipe.extractor[0].getMaxForm());
-
-		dos.writeInt(5); // Info count
-		dos.writeUTF("Used parser   " + Parser.class.toString());
-		dos.writeUTF("Creation date " + (new SimpleDateFormat("yyyy.MM.dd HH:mm:ss")).format(new Date()));
-		dos.writeUTF("Training data " + options.trainfile);
-		dos.writeUTF("Iterations    " + options.numIters + " Used sentences " + options.count);
-		dos.writeUTF("Cluster       " + options.clusterFile);
-
-		dos.flush();
-		dos.close();
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/parserR2/Pipe.java b/dependencyParser/mate-tools/src/is2/parserR2/Pipe.java
deleted file mode 100755
index 81ce59a..0000000
--- a/dependencyParser/mate-tools/src/is2/parserR2/Pipe.java
+++ /dev/null
@@ -1,261 +0,0 @@
-package is2.parserR2;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.concurrent.ExecutorService;
-
-import extractors.Extractor;
-import extractors.ParallelExtract;
-import is2.data.Cluster;
-import is2.data.DataF;
-import is2.data.Edges;
-import is2.data.F2SF;
-import is2.data.Instances;
-import is2.data.Long2IntInterface;
-import is2.data.MFB;
-import is2.data.Parse;
-import is2.data.PipeGen;
-import is2.data.SentenceData09;
-import is2.io.CONLLReader09;
-import is2.util.OptionsSuper;
-
-final public class Pipe extends PipeGen {
-
-	public Extractor[] extractor;
-	final public MFB mf = new MFB();
-
-	Cluster cl;
-
-	private OptionsSuper options;
-	public static long timeExtract;
-
-	public Pipe(OptionsSuper o) {
-		options = o;
-	}
-
-	public void createInstances(String file, Instances is)
-	// throws Exception
-
-	{
-
-		CONLLReader09 depReader = new CONLLReader09(file);
-
-		mf.register(REL, "<root-type>");
-
-		// register at least one predicate since the parsing data might not
-		// contain predicates as in
-		// the Japaness corpus but the development sets contains some
-
-		System.out.print("Registering feature parts of sentence: ");
-		int ic = 0;
-		int del = 0;
-		while (true) {
-			SentenceData09 instance = depReader.getNext();
-			if (instance == null)
-				break;
-			ic++;
-
-			if (ic % 1000 == 0) {
-				del = outValue(ic, del);
-			}
-
-			String[] labs1 = instance.labels;
-			for (String element : labs1)
-				mf.register(REL, element);
-
-			String[] w = instance.forms;
-			for (String element : w)
-				mf.register(WORD, depReader.normalize(element));
-
-			w = instance.plemmas;
-			for (String element : w)
-				mf.register(WORD, depReader.normalize(element));
-
-			w = instance.ppos;
-			for (String element : w)
-				mf.register(POS, element);
-
-			w = instance.gpos;
-			for (String element : w)
-				mf.register(POS, element);
-
-			if (instance.feats != null) {
-				String fs[][] = instance.feats;
-				for (String[] element : fs) {
-					w = element;
-					if (w == null)
-						continue;
-					for (String element2 : w)
-						mf.register(FEAT, element2);
-				}
-			}
-
-			if ((ic - 1) > options.count)
-				break;
-		}
-		del = outValue(ic, del);
-
-		for (Extractor e : extractor) {
-			e.setMaxForm(mf.getFeatureCounter().get(WORD));
-		}
-
-		if (options.clusterFile == null)
-			cl = new Cluster();
-		else
-			cl = new Cluster(options.clusterFile, mf, 6);
-
-		mf.calculateBits();
-
-		System.out.println("" + mf.toString());
-
-		for (Extractor e : extractor) {
-			e.initStat();
-			e.init();
-		}
-
-		depReader.startReading(file);
-
-		int num1 = 0;
-
-		Edges.init(mf.getFeatureCounter().get(POS));
-
-		System.out.print("Creating edge filters and read corpus: ");
-		del = 0;
-
-		is.init(ic, new MFB());
-
-		while (true) {
-			if (num1 % 100 == 0)
-				del = outValue(num1, del);
-
-			SentenceData09 instance1 = depReader.getNext(is);
-
-			if (instance1 == null)
-				break;
-
-			int last = is.size() - 1;
-			short[] pos = is.pposs[last];
-
-			for (int k = 0; k < is.length(last); k++) {
-				if (is.heads[last][k] < 0)
-					continue;
-				Edges.put(pos[is.heads[last][k]], pos[k], k < is.heads[last][k], is.labels[last][k]);
-			}
-
-			if (!options.allFeatures && num1 > options.count)
-				break;
-
-			num1++;
-
-		}
-		del = outValue(num1, del);
-		System.out.println();
-		Edges.findDefault();
-	}
-
-	public void getInstances(String file, Instances is) {
-		CONLLReader09 depReader = new CONLLReader09(file);
-
-		int ic = options.count + 2;
-
-		is.init(ic, new MFB());
-
-		int num1 = 0, del = 0;
-		while (true) {
-			if (num1 % 100 == 0)
-				del = outValue(num1, del);
-
-			SentenceData09 instance1 = depReader.getNext(is);
-
-			if (instance1 == null)
-				break;
-
-			if (!options.allFeatures && num1 > options.count)
-				break;
-
-			num1++;
-
-		}
-		del = outValue(num1, del);
-		System.out.println();
-
-	}
-
-	/**
-	 * Creates an instance for outputParses
-	 *
-	 * @param is
-	 * @return
-	 * @throws IOException
-	 */
-	protected final SentenceData09 nextInstance(Instances is, CONLLReader09 depReader) throws Exception {
-
-		SentenceData09 instance = depReader.getNext(is);
-		if (instance == null || instance.forms == null)
-			return null;
-
-		return instance;
-	}
-
-	public static ExecutorService executerService = java.util.concurrent.Executors.newFixedThreadPool(Parser.THREADS);
-
-	public DataF fillVector(F2SF params, Instances is, int inst, DataF d, Cluster cluster, int threads,
-			Long2IntInterface li) throws InterruptedException {
-
-		long ts = System.nanoTime();
-
-		if (executerService.isShutdown())
-			executerService = java.util.concurrent.Executors.newCachedThreadPool();
-
-		final int length = is.length(inst);
-		if (d == null || d.len < length)
-			d = new DataF(length, mf.getFeatureCounter().get(PipeGen.REL).shortValue());
-
-		ArrayList<ParallelExtract> pe = new ArrayList<ParallelExtract>();
-
-		for (int i = 0; i < threads; i++) {
-
-			// DB.println(""+((ExtractorClusterStackedR2)extractor[i]).s_dist);
-			pe.add(new ParallelExtract(extractor[i], is, inst, d, (F2SF) params.clone(), cluster, li));
-		}
-
-		for (int w1 = 0; w1 < length; w1++) {
-			for (int w2 = 0; w2 < length; w2++) {
-				if (w1 == w2)
-					continue;
-				ParallelExtract.add(w1, w2);
-			}
-		}
-		executerService.invokeAll(pe);
-
-		timeExtract += (System.nanoTime() - ts);
-
-		return d;
-	}
-
-	/**
-	 * the loss function
-	 */
-	public double errors(Instances is, int ic, Parse p) {
-
-		if (p.heads == null)
-			p.signature2parse(p.signature());
-		short[] act = is.heads[ic];
-		double correct = 0;
-
-		// do not count root
-		for (int i = 1; i < act.length; i++) {
-			if (p.heads[i] == act[i]) {
-				correct += 0.5;
-				if (p.labels[i] == is.labels[ic][i])
-					correct += 0.5;
-			}
-		}
-
-		double x = ((double) act.length - 1 - correct);
-
-		// p.f1 = (double)correct / (double)(act.length-1);
-
-		return x;
-	}
-}
diff --git a/dependencyParser/mate-tools/src/is2/parserR2/PipeReranker.java b/dependencyParser/mate-tools/src/is2/parserR2/PipeReranker.java
deleted file mode 100644
index 622fe1c..0000000
--- a/dependencyParser/mate-tools/src/is2/parserR2/PipeReranker.java
+++ /dev/null
@@ -1,123 +0,0 @@
-package is2.parserR2;
-
-import java.util.concurrent.ExecutorService;
-
-import extractors.ExtractorReranker;
-import is2.data.Cluster;
-import is2.data.Edges;
-import is2.data.Instances;
-import is2.data.MFB;
-import is2.data.PipeGen;
-import is2.data.SentenceData09;
-import is2.io.CONLLReader09;
-import is2.util.OptionsSuper;
-
-final public class PipeReranker extends PipeGen {
-
-	public ExtractorReranker extractor;
-	final public MFB mf = new MFB();
-
-	Cluster cl;
-
-	private OptionsSuper options;
-	public static long timeExtract;
-
-	public PipeReranker(OptionsSuper o) {
-		options = o;
-	}
-
-	public void createInstances(String file, Instances is)
-	// throws Exception
-
-	{
-
-		CONLLReader09 depReader = new CONLLReader09(file);
-
-		mf.register(REL, "<root-type>");
-
-		// register at least one predicate since the parsing data might not
-		// contain predicates as in
-		// the Japaness corpus but the development sets contains some
-
-		System.out.print("Registering feature parts of sentence: ");
-		int ic = 0;
-		int del = 0;
-		while (true) {
-			SentenceData09 instance = depReader.getNext();
-			if (instance == null)
-				break;
-			ic++;
-
-			if (ic % 1000 == 0) {
-				del = outValue(ic, del);
-			}
-
-			String[] labs1 = instance.labels;
-			for (String element : labs1)
-				mf.register(REL, element);
-
-			String[] w = instance.forms;
-			for (String element : w)
-				mf.register(WORD, depReader.normalize(element));
-
-			w = instance.plemmas;
-			for (String element : w)
-				mf.register(WORD, depReader.normalize(element));
-
-			w = instance.ppos;
-			for (String element : w)
-				mf.register(POS, element);
-
-			w = instance.gpos;
-			for (String element : w)
-				mf.register(POS, element);
-
-			if (instance.feats != null) {
-				String fs[][] = instance.feats;
-				for (String[] element : fs) {
-					w = element;
-					if (w == null)
-						continue;
-					for (String element2 : w)
-						mf.register(FEAT, element2);
-				}
-			}
-
-			if ((ic - 1) > options.count)
-				break;
-		}
-		del = outValue(ic, del);
-
-		System.out.println();
-		ExtractorReranker.initFeatures();
-
-		ExtractorReranker.maxForm = mf.getFeatureCounter().get(WORD);
-
-		if (options.clusterFile == null)
-			cl = new Cluster();
-		else
-			cl = new Cluster(options.clusterFile, mf, 6);
-
-		mf.calculateBits();
-		ExtractorReranker.initStat();
-
-		System.out.println("" + mf.toString());
-
-		extractor.init();
-		depReader.startReading(file);
-
-		int num1 = 0;
-
-		is.init(ic, new MFB());
-
-		Edges.init(mf.getFeatureCounter().get(POS));
-
-		del = 0;
-
-		del = outValue(num1, del);
-		System.out.println();
-	}
-
-	public static ExecutorService executerService = java.util.concurrent.Executors.newFixedThreadPool(Parser.THREADS);
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/parserR2/Reranker.java b/dependencyParser/mate-tools/src/is2/parserR2/Reranker.java
deleted file mode 100644
index 61650a0..0000000
--- a/dependencyParser/mate-tools/src/is2/parserR2/Reranker.java
+++ /dev/null
@@ -1,991 +0,0 @@
-package is2.parserR2;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map.Entry;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-import java.util.zip.ZipOutputStream;
-
-import extractors.Extractor;
-import extractors.ExtractorClusterStacked;
-import extractors.ExtractorReranker;
-import is2.data.Cluster;
-import is2.data.DataF;
-import is2.data.Edges;
-import is2.data.F2SF;
-import is2.data.FVR;
-import is2.data.Instances;
-import is2.data.Long2Int;
-import is2.data.Long2IntInterface;
-import is2.data.MFB;
-import is2.data.Parse;
-import is2.data.ParseNBest;
-import is2.data.PipeGen;
-import is2.data.SentenceData09;
-import is2.io.CONLLReader09;
-import is2.io.CONLLWriter09;
-import is2.tools.Tool;
-import is2.util.DB;
-import is2.util.OptionsSuper;
-import is2.util.ParserEvaluator;
-
-public class Reranker implements Tool {
-
-	public static int THREADS = 4;
-
-	Long2IntInterface l2i;
-
-	// the parser models
-	ParametersFloat paramsParsers[];
-
-	// the re-ranker model
-	ParametersFloat parametersReranker;
-	PipeReranker pipeReranker;
-	Pipe pipe;
-	Options options;
-
-	HashMap<Integer, Integer> rank = new HashMap<Integer, Integer>();
-	int amongxbest = 0, amongxbest_ula = 0, nbest = 0, bestProj = 0, smallestErrorSum = 0, countAllNodes = 0;
-	static int NBest = 1000;
-
-	/**
-	 * Initialize the parser
-	 * 
-	 * @param options
-	 */
-	public Reranker(Options options) {
-
-		this.options = options;
-
-	}
-
-	/**
-	 * @param modelFileName
-	 *            The file name of the parsing model
-	 */
-	public Reranker(String modelFileName) {
-		this(new Options(new String[] { "-model", modelFileName }));
-	}
-
-	public Reranker() {
-		// TODO Auto-generated constructor stub
-	}
-
-	public static void main(String[] args) throws Exception {
-
-		long start = System.currentTimeMillis();
-		Options options = new Options(args);
-
-		NBest = options.best;
-
-		DB.println("n-best " + NBest);
-
-		Runtime runtime = Runtime.getRuntime();
-		THREADS = runtime.availableProcessors();
-
-		if (options.cores < THREADS && options.cores > 0)
-			THREADS = options.cores;
-
-		DB.println("Found " + runtime.availableProcessors() + " cores use " + THREADS);
-
-		if (options.train) {
-
-			Reranker p = new Reranker();
-			p.options = options;
-
-			p.l2i = new Long2Int(options.hsize);
-			p.pipeReranker = new PipeReranker(options);
-			p.pipeReranker.extractor = new ExtractorReranker(p.l2i);
-
-			// initialize the parser
-			p.pipe = new Pipe(options);
-
-			// read parsing models
-			p.paramsParsers = new ParametersFloat[options.end + 1];
-			for (int m = 0; m <= options.end; m++) {
-				String name = options.prefix_model + m;
-				p.paramsParsers[m] = new ParametersFloat(0);
-				p.readModel(name, p.pipe, p.paramsParsers[m]);
-			}
-
-			// set up the reranker
-			p.parametersReranker = new ParametersFloat(p.l2i.size());
-
-			Instances[] iss = new Instances[options.end + 1];
-
-			for (int m = 0; m <= options.end; m++) {
-				String name = options.prefix_test + m;
-				iss[m] = new Instances();
-				DB.println("create instances of part " + name);
-				p.pipe.getInstances(name, iss[m]);
-			}
-
-			ExtractorReranker.initFeatures();
-			p.pipeReranker.extractor.init();
-
-			ExtractorReranker.initStat();
-
-			p.train(options, iss);
-
-			p.writeModell(options, p.parametersReranker, null, p.pipe.cl);
-		}
-
-		if (options.test) {
-
-			Reranker p = new Reranker();
-			p.options = options;
-
-			// set up the reranker
-			p.l2i = new Long2Int(options.hsize);
-			p.pipeReranker = new PipeReranker(options);
-			p.pipeReranker.extractor = new ExtractorReranker(p.l2i);
-			p.parametersReranker = new ParametersFloat(p.l2i.size());
-
-			// initialize the parser
-			p.pipe = new Pipe(options);
-
-			// read parsing models
-			p.paramsParsers = new ParametersFloat[options.end + 1];
-
-			String nbestName = "n-best+"
-					+ options.testfile.substring(options.testfile.length() - 12, options.testfile.length() - 1);
-			File fnbest = new File(nbestName);
-			int read = fnbest.exists() ? 2 : 1;
-
-			if (read != 2)
-				for (int m = 0; m <= options.end; m++) {
-					String name = options.prefix_model + m;
-					p.paramsParsers[m] = new ParametersFloat(0);
-					p.readModel(name, p.pipe, p.paramsParsers[m]);
-				}
-
-			p.readModel(options.modelName, p.pipeReranker, p.parametersReranker);
-
-			ExtractorReranker.initFeatures();
-			ExtractorReranker.initStat();
-			p.pipeReranker.extractor.init();
-
-			p.rerankedParses(options, p.pipe, p.parametersReranker, false, nbestName);
-
-		}
-
-		System.out.println();
-
-		if (options.eval) {
-			System.out.println("\nEVALUATION PERFORMANCE:");
-			ParserEvaluator.evaluate(options.goldfile, options.outfile);
-		}
-
-		long end = System.currentTimeMillis();
-		System.out.println("used time " + ((float) ((end - start) / 100) / 10));
-
-		Decoder.executerService.shutdown();
-		Pipe.executerService.shutdown();
-		System.out.println("end.");
-
-	}
-
-	/**
-	 * Read the models and mapping
-	 * 
-	 * @param options
-	 * @param pipe
-	 * @param prm
-	 * @throws IOException
-	 */
-	public void readModel(String modelName, Pipe pipe, Parameters prm) throws IOException {
-
-		DB.println("Reading data started: " + modelName);
-
-		// prepare zipped reader
-		ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(modelName)));
-		zis.getNextEntry();
-		DataInputStream dis = new DataInputStream(new BufferedInputStream(zis));
-
-		pipe.mf.read(dis);
-
-		pipe.cl = new Cluster(dis);
-
-		prm.read(dis);
-
-		Long2Int l2i = new Long2Int(prm.size());
-		DB.println("li size " + l2i.size());
-
-		pipe.extractor = new ExtractorClusterStacked[THREADS];
-
-		for (int t = 0; t < THREADS; t++)
-			pipe.extractor[t] = new ExtractorClusterStacked(l2i);
-
-		ExtractorClusterStacked.initFeatures();
-
-		for (int t = 0; t < THREADS; t++) {
-			pipe.extractor[t].initStat();
-			pipe.extractor[t].init();
-		}
-
-		Edges.read(dis);
-
-		options.decodeProjective = dis.readBoolean();
-
-		ExtractorClusterStacked.maxForm = dis.readInt();
-
-		boolean foundInfo = false;
-		try {
-			String info = null;
-			int icnt = dis.readInt();
-			for (int i = 0; i < icnt; i++) {
-				info = dis.readUTF();
-				System.out.println(info);
-			}
-		} catch (Exception e) {
-			if (!foundInfo)
-				System.out.println("no info about training");
-		}
-
-		dis.close();
-
-		DB.println("Reading data finnished");
-
-		Decoder.NON_PROJECTIVITY_THRESHOLD = (float) options.decodeTH;
-
-		// ExtractorClusterStacked.initStat();
-
-	}
-
-	/**
-	 * Read the models and mapping
-	 * 
-	 * @param options
-	 * @param pipe
-	 * @param params
-	 * @throws IOException
-	 */
-	public void readModel(String modelName, PipeReranker pipe, Parameters params) throws IOException {
-
-		DB.println("Reading data started: " + modelName);
-
-		// prepare zipped reader
-		ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(modelName)));
-		zis.getNextEntry();
-		DataInputStream dis = new DataInputStream(new BufferedInputStream(zis));
-
-		pipe.mf.read(dis);
-
-		// DB.println("reranker model "+pipe.mf.toString());
-
-		pipe.cl = new Cluster(dis);
-
-		params.read(dis);
-		this.l2i = new Long2Int(params.size());
-		DB.println("li size " + l2i.size());
-
-		pipe.extractor = new ExtractorReranker(l2i);
-
-		ExtractorReranker.initFeatures();
-		ExtractorReranker.initStat();
-
-		pipe.extractor.init();
-
-		Edges.read(dis);
-
-		options.decodeProjective = dis.readBoolean();
-
-		ExtractorClusterStacked.maxForm = dis.readInt();
-
-		boolean foundInfo = false;
-		try {
-			String info = null;
-			int icnt = dis.readInt();
-			for (int i = 0; i < icnt; i++) {
-				info = dis.readUTF();
-				System.out.println(info);
-			}
-		} catch (Exception e) {
-			if (!foundInfo)
-				System.out.println("no info about training");
-		}
-
-		dis.close();
-
-		DB.println("Reading data finnished");
-
-		Decoder.NON_PROJECTIVITY_THRESHOLD = (float) options.decodeTH;
-
-		// ExtractorClusterStacked.initStat();
-
-	}
-
-	/**
-	 * Do the training
-	 * 
-	 * @param instanceLengths
-	 * @param options
-	 * @param pipe
-	 * @param parametersReranker
-	 * @param is
-	 * @param cluster
-	 * @throws IOException
-	 * @throws InterruptedException
-	 * @throws ClassNotFoundException
-	 */
-	public void train(OptionsSuper options, Instances[] iss)
-			throws IOException, InterruptedException, ClassNotFoundException {
-
-		int read = 0; // 0 compute -- 1 compute and write -- 2 read parses
-
-		DB.println("Training Information ");
-		DB.println("-------------------- ");
-
-		ExtractorReranker.initStat();
-		pipeReranker.extractor.init();
-
-		for (Extractor e : this.pipe.extractor) {
-			e.init();
-		}
-
-		int numInstances = 0;
-		int maxLenInstances = 0;
-		// int maxLenSentence=1;
-		for (Instances is : iss) {
-			numInstances += is.size();
-			for (int i = 0; i < is.size(); i++)
-				if (maxLenInstances < is.length(i))
-					maxLenInstances = is.length(i);
-		}
-
-		DataF data = new DataF(maxLenInstances, pipe.mf.getFeatureCounter().get(PipeGen.REL).shortValue());
-
-		int iter = 0;
-		int del = 0;
-		float error = 0;
-		float f1 = 0;
-
-		double upd = (double) (options.count * options.numIters) + options.numIters * 10;
-
-		// float[][] = new float[this.NBest][3];
-		FVR act = new FVR();
-
-		FVR pred = new FVR();
-
-		FVR f = new FVR();
-		long[] vs = new long[ExtractorReranker._FC * maxLenInstances];
-
-		for (; iter < options.numIters; iter++) {
-
-			System.out.print("Iteration " + iter + ": ");
-			error = 0;
-			f1 = 0;
-
-			float las = 0, cnt = 0, averageScore = 0;
-
-			float firstBestTotalError = 0, totalError = 0;
-
-			long start = System.currentTimeMillis();
-
-			long last = System.currentTimeMillis();
-
-			long rerankTime = 0;
-
-			String nbest = "n-best";
-			File fnbest = new File(nbest);
-			read = fnbest.exists() ? 2 : 1;
-
-			DataInputStream dis = null;
-			DataOutputStream dos = null;
-
-			if (read == 1) {
-
-				DB.println("computing and writting nbest list to file: " + nbest);
-
-				ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(nbest)));
-				zos.putNextEntry(new ZipEntry("data"));
-				dos = new DataOutputStream(new BufferedOutputStream(zos));
-			}
-
-			// start reading again
-			if (read == 2) {
-
-				// DB.println("reading nbest list from file: "+nbest);
-
-				ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(nbest)));
-				zis.getNextEntry();
-				dis = new DataInputStream(new BufferedInputStream(zis));
-			}
-
-			HashMap<Integer, Integer> remapped = new HashMap<Integer, Integer>();
-
-			int round = 0, instance = 0, length = 0, count = 0, changes = 0;
-			for (Instances is : iss) {
-
-				F2SF fparser = this.paramsParsers[instance].getFV();
-				round++;
-
-				// go over the sentences in the instance
-				for (int n = 0; n < is.size(); n++) {
-					count += 1;
-					length += is.length(n);
-					upd--;
-
-					if (is.labels[n].length > options.maxLen)
-						continue;
-
-					List<ParseNBest> parses = null;
-
-					short pos[] = is.pposs[n];
-
-					// read or write nbest list
-					if (read == 0 || read == 1 && iter == 0) {
-						data = pipe.fillVector(fparser, is, n, data, pipe.cl, THREADS, l2i);
-						parses = Decoder.decode(pos, data, options.decodeProjective, pipe.extractor[0]);
-
-						if (parses.size() > NBest)
-							parses = parses.subList(0, NBest);
-
-						if (read == 1) {
-							// write the forest
-							dos.writeInt(parses.size());
-							for (int k = 0; k < parses.size(); k++) {
-								dos.writeUTF(parses.get(k).signature());
-								dos.writeFloat((float) parses.get(k).f1);
-							}
-						}
-					} else if (read == 2) {
-						parses = new ArrayList<ParseNBest>();
-						int parseCount = dis.readInt();
-						for (int k = 0; k < parseCount; k++) {
-							ParseNBest p = new ParseNBest(dis.readUTF(), dis.readFloat());
-							if (parses.size() < NBest)
-								parses.add(p);
-						}
-					}
-
-					int best = 0;
-					float bestScore = -100;
-					int goldBest = 0;
-					double goldError = Float.MAX_VALUE;
-
-					long startReranking = System.currentTimeMillis();
-
-					// score the n-best parses
-					for (int k = 0; k < parses.size(); k++) {
-
-						ParseNBest p = parses.get(k);
-
-						pipeReranker.extractor.extractFeatures(is, n, p, parses.indexOf(p), vs, pipe.cl);
-
-						int rank = 1 * ExtractorReranker.s_type;
-
-						f.clear();
-
-						for (long element : vs) {
-							if (element == Integer.MIN_VALUE)
-								break;
-							if (element > 0)
-								f.add(pipeReranker.extractor.li.l2i(element + rank));
-						}
-
-						f.add(pipeReranker.extractor.li.l2i(1 + rank), (float) p.f1);
-						float score = (parametersReranker.getScore(f));
-						if (score > bestScore) { // rankScore[k][2]>
-							bestScore = score;
-							best = k;
-
-						}
-					}
-
-					// get the best parse in the n-best list
-					for (int k = 0; k < parses.size(); k++) {
-
-						if (parses.get(k).heads.length != is.length(n)) {
-							DB.println("error " + n + " " + parses.get(k).heads.length + " " + is.length(n));
-							continue;
-						}
-						double errg = pipe.errors(is, n, parses.get(k));
-						if (goldError > errg) {
-							goldError = errg;
-							goldBest = k;
-						}
-					}
-
-					ParseNBest firstBest = parses.get(0);
-					ParseNBest predParse = parses.get(best);
-					ParseNBest goldBestParse = parses.get(goldBest);
-
-					double e = pipe.errors(is, n, predParse);
-
-					Integer ctb = remapped.get(best);
-					if (ctb == null)
-						remapped.put(best, 1);
-					else
-						remapped.put(best, ctb + 1);
-
-					String info = " 1best-error " + ((length - firstBestTotalError) / length) + " reranked "
-							+ ((length - totalError) / length) + " chd  " + changes + "  " + " ps las " + (las / cnt)
-							+ " avs " + (averageScore / count) + "   ";
-
-					if ((n + 1) % 500 == 0)
-						del = PipeGen.outValueErr(count, Math.round(error * 1000) / 1000, f1 / count, del, last, upd,
-								info);
-
-					firstBestTotalError += Decoder.getError(firstBest, is, n, Decoder.LAS);
-
-					totalError += Decoder.getError(predParse, is, n, Decoder.LAS);
-
-					rerankTime += System.currentTimeMillis() - startReranking;
-
-					if (best != 0) {
-						changes++;
-					}
-
-					las += is.length(n) - Decoder.getError(goldBestParse, is, n, Decoder.LAS);
-					cnt += is.length(n);
-
-					averageScore += predParse.f1;
-
-					if (options.count < count)
-						break;
-
-					if (Decoder.getError(goldBestParse, is, n, Decoder.LAS) >= Decoder.getError(predParse, is, n,
-							Decoder.LAS))
-						continue;
-
-					// get predicted feature vector
-					pipeReranker.extractor.extractFeatures(is, n, predParse, parses.indexOf(predParse), vs, pipe.cl);
-
-					pred.clear();
-					int rank = 1 * ExtractorReranker.s_type;
-
-					for (long element : vs) {
-						if (element == Integer.MIN_VALUE)
-							break;
-						if (element > 0)
-							pred.add(pipeReranker.extractor.li.l2i(element + rank));
-					}
-					pred.add(pipeReranker.extractor.li.l2i(1 + rank), (float) predParse.f1);
-					error += 1;
-
-					pipeReranker.extractor.extractFeatures(is, n, goldBestParse, parses.indexOf(goldBestParse), vs,
-							pipe.cl);
-
-					act.clear();
-					rank = 1 * ExtractorReranker.s_type;
-					for (long element : vs) {
-						if (element == Integer.MIN_VALUE)
-							break;
-						if (element > 0)
-							act.add(pipeReranker.extractor.li.l2i(element + rank));
-					}
-
-					act.add(pipeReranker.extractor.li.l2i(1 + rank), (float) goldBestParse.f1);
-					float lam_dist = parametersReranker.getScore(act) - (parametersReranker.getScore(pred));
-
-					parametersReranker.update(act, pred, is, n, null, upd, e, lam_dist);
-
-				}
-				instance++;
-
-			}
-
-			String info = " td " + ((Decoder.timeDecotder) / 1000000F) + " tr " + ((Decoder.timeRearrange) / 1000000F)
-					+ " te " + ((Pipe.timeExtract) / 1000000F) + " nz " + parametersReranker.countNZ() + " 1best-error "
-					+ ((length - firstBestTotalError) / length) + " reranked-best " + ((length - totalError) / length)
-					+ " rds " + round + "   " + " rerank-t " + (rerankTime / count) + " chd " + changes + "   "
-					+ " ps las " + (las / cnt) + " avs " + (averageScore / count) + "   ";
-
-			// DB.println("remapped "+remapped);
-
-			PipeGen.outValueErr(count, Math.round(error * 1000) / 1000, f1 / count, del, last, upd, info);
-			del = 0;
-			long end = System.currentTimeMillis();
-			System.out.println(" time:" + (end - start));
-			Decoder.timeDecotder = 0;
-			Decoder.timeRearrange = 0;
-			Pipe.timeExtract = 0;
-
-			if (dos != null)
-				dos.close();
-			if (dis != null)
-				dis.close();
-
-		}
-		DB.println("sb " + parametersReranker.parameters[this.pipeReranker.extractor.li
-				.l2i(4090378920L + 1 * ExtractorReranker.s_type)]);// 4090378266
-		parametersReranker.average(iter * numInstances);
-
-	}
-
-	/**
-	 * Do the parsing
-	 * 
-	 * @param options
-	 * @param pipe
-	 * @param params
-	 * @throws IOException
-	 */
-	private void rerankedParses(OptionsSuper options, Pipe pipe, ParametersFloat params, boolean maxInfo,
-			String nbestName) throws Exception {
-
-		long start = System.currentTimeMillis();
-
-		ExtractorClusterStacked.initFeatures();
-
-		DataInputStream dis = null;
-		DataOutputStream dos = null;
-
-		float olas = 0, olcnt = 0;
-
-		File fnbest = new File(nbestName);
-		int read = fnbest.exists() ? 2 : 1;
-		if (read == 1) {
-
-			DB.println("computing and writting nbest list to file: " + nbestName);
-
-			ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(nbestName)));
-			zos.putNextEntry(new ZipEntry("data"));
-			dos = new DataOutputStream(new BufferedOutputStream(zos));
-		}
-
-		if (read == 2) {
-
-			// DB.println("reading nbest list from file: "+nbestName);
-
-			ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(nbestName)));
-			zis.getNextEntry();
-			dis = new DataInputStream(new BufferedInputStream(zis));
-		}
-
-		for (ParametersFloat paramsParser : this.paramsParsers) {
-
-			CONLLReader09 depReader = new CONLLReader09(options.testfile, options.formatTask);
-			CONLLWriter09 depWriter = new CONLLWriter09(options.outfile, options.formatTask);
-
-			float las = 0, lcnt = 0, averageScore = 0;
-			int cnt = 0;
-			int del = 0;
-
-			long last = System.currentTimeMillis();
-
-			String[] types = new String[pipe.mf.getFeatureCounter().get(PipeGen.REL)];
-			for (Entry<String, Integer> e : MFB.getFeatureSet().get(PipeGen.REL).entrySet())
-				types[e.getValue()] = e.getKey();
-
-			System.out.print("Processing Sentence: ");
-
-			FVR f = new FVR();
-
-			while (true) {
-
-				Instances is = new Instances();
-				is.init(1, new MFB(), options.formatTask);
-
-				SentenceData09 instance = pipe.nextInstance(is, depReader);
-				if (instance == null)
-					break;
-				cnt++;
-
-				String[] forms = instance.forms;
-
-				List<ParseNBest> parses = null;
-
-				// read or write nbest list
-				if (read == 0 || read == 1) {
-					parses = this.parseNBest(instance, paramsParser);
-					// data = pipe.fillVector(fparser, is, n, data,
-					// pipe.cl,THREADS);
-					// parses = Decoder.decode(pos, data,
-					// options.decodeProjective);
-
-					if (parses.size() > NBest)
-						parses = parses.subList(0, NBest);
-
-					if (read == 1) {
-						// write the forest
-						dos.writeInt(parses.size());
-						for (int k = 0; k < parses.size(); k++) {
-							dos.writeUTF(parses.get(k).signature());
-							dos.writeFloat((float) parses.get(k).f1);
-						}
-					}
-				} else if (read == 2) {
-					parses = new ArrayList<ParseNBest>();
-					int parseCount = dis.readInt();
-					for (int k = 0; k < parseCount; k++) {
-						ParseNBest p = new ParseNBest(dis.readUTF(), dis.readFloat());
-						if (parses.size() < NBest)
-							parses.add(p);
-					}
-				}
-
-				nbest += parses.size();
-
-				// List<ParseNBest> parses = this.parseNBest(instance,
-				// this.paramsParsers[m]);
-
-				long vs[] = new long[ExtractorReranker._FC * is.length(0)];
-
-				float bestScore = 0;
-				int best = 0;
-
-				for (int k = 0; k < parses.size(); k++) {
-
-					ParseNBest p = parses.get(k);
-
-					pipeReranker.extractor.extractFeatures(is, 0, p, k, vs, pipeReranker.cl);
-
-					int rank = 1 * ExtractorReranker.s_type;
-					f.clear();
-					for (long element : vs) {
-						if (element == Integer.MIN_VALUE)
-							break;
-						if (element > 0)
-							f.add(pipeReranker.extractor.li.l2i(element + rank));
-					}
-					f.add(pipeReranker.extractor.li.l2i(1 + rank), (float) p.f1);
-
-					float score = (parametersReranker.getScore(f));
-					if (score > bestScore) { // rankScore[k][2]>
-						bestScore = score;
-						best = k;
-
-					}
-				}
-				// change to best
-				ParseNBest d = parses.get(best);
-
-				las += (is.length(0) - 1) - Decoder.getError(d, is, 0, Decoder.LAS);
-				lcnt += is.length(0) - 1;
-
-				averageScore += d.f1;
-
-				SentenceData09 i09 = new SentenceData09(instance);
-
-				i09.createSemantic(instance);
-
-				for (int j = 0; j < forms.length - 1; j++) {
-					i09.plabels[j] = types[d.labels[j + 1]];
-					i09.pheads[j] = d.heads[j + 1];
-				}
-
-				depWriter.write(i09);
-				String info = "" + (averageScore / cnt) + "   ";
-
-				if (cnt % 10 == 0)
-					del = PipeGen.outValueErr(cnt, lcnt - las, las / lcnt, del, last, 0, info);// outValue(cnt,
-																								// del,last,
-																								// info);
-
-			}
-
-			// pipe.close();
-
-			depWriter.finishWriting();
-			long end = System.currentTimeMillis();
-			DB.println("rank\n" + rank + "\n");
-			DB.println("x-best-las " + amongxbest + " x-best-ula " + amongxbest_ula + " cnt " + cnt + " x-best-las "
-					+ ((float) amongxbest / cnt) + " x-best-ula " + ((float) amongxbest_ula / cnt) + " nbest "
-					+ ((float) nbest / cnt) + " 1best " + ((float) (rank.get(0) == null ? 0 : rank.get(0)) / cnt)
-					+ " best-proj " + ((float) bestProj / cnt) + " Sum LAS "
-					+ ((float) this.smallestErrorSum / countAllNodes) + " " + "" + (las / lcnt));
-
-			// DB.println("errors "+error);
-			olas += las;
-			olcnt += lcnt;
-			rank.clear();
-			amongxbest = 0;
-			amongxbest_ula = 0;
-			cnt = 0;
-			nbest = 0;
-			bestProj = 0;
-			if (maxInfo)
-				System.out.println("Used time " + (end - start));
-			if (maxInfo)
-				System.out.println("forms count " + Instances.m_count + " unkown " + Instances.m_unkown);
-		}
-
-		if (dos != null) {
-			dos.flush();
-			dos.close();
-		}
-		if (dis != null)
-			dis.close();
-
-		DB.println("\n overall las " + (olas / olcnt));
-	}
-
-	public SentenceData09 parse(SentenceData09 instance, ParametersFloat params) {
-
-		String[] types = new String[pipe.mf.getFeatureCounter().get(PipeGen.REL)];
-		for (Entry<String, Integer> e : MFB.getFeatureSet().get(PipeGen.REL).entrySet())
-			types[e.getValue()] = e.getKey();
-
-		Instances is = new Instances();
-		is.init(1, new MFB(), options.formatTask);
-		new CONLLReader09().insert(is, instance);
-
-		String[] forms = instance.forms;
-
-		// use for the training ppos
-		DataF d2;
-		try {
-			d2 = pipe.fillVector(params.getFV(), is, 0, null, pipe.cl, THREADS, l2i);// cnt-1
-		} catch (Exception e) {
-			e.printStackTrace();
-			return null;
-		}
-		short[] pos = is.pposs[0];
-
-		List<ParseNBest> parses = null;
-		Parse d = null;
-		try {
-			parses = Decoder.decode(pos, d2, options.decodeProjective, pipe.extractor[0]); // cnt-1
-			d = parses.get(0);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		if (parses.size() > NBest)
-			parses = parses.subList(0, NBest);
-
-		int g_las = Decoder.getGoldRank(parses, is, 0, Decoder.LAS);
-		int g_ula = Decoder.getGoldRank(parses, is, 0, !Decoder.LAS);
-
-		int smallest = Decoder.getSmallestError(parses, is, 0, !Decoder.LAS);
-		smallestErrorSum += is.length(0) - smallest;
-		countAllNodes += is.length(0);
-
-		if (g_las >= 0)
-			amongxbest++;
-		if (g_ula >= 0)
-			amongxbest_ula++;
-
-		nbest += parses.size();
-
-		Integer r = rank.get(g_las);
-		if (r == null)
-			rank.put(g_las, 1);
-		else
-			rank.put(g_las, r + 1);
-
-		this.pipe.errors(is, 0, d);
-
-		float errBestProj = (float) this.pipe.errors(is, 0, Decoder.bestProj);
-
-		if (errBestProj == 0)
-			bestProj++;
-
-		SentenceData09 i09 = new SentenceData09(instance);
-
-		i09.createSemantic(instance);
-
-		for (int j = 0; j < forms.length - 1; j++) {
-			i09.plabels[j] = types[d.labels[j + 1]];
-			i09.pheads[j] = d.heads[j + 1];
-		}
-		return i09;
-
-	}
-
-	public List<ParseNBest> parseNBest(SentenceData09 instance, ParametersFloat params) {
-
-		Instances is = new Instances();
-		is.init(1, new MFB(), options.formatTask);
-		new CONLLReader09().insert(is, instance);
-
-		// use for the training ppos
-		DataF d2;
-		try {
-			d2 = pipe.fillVector(params.getFV(), is, 0, null, pipe.cl, THREADS, l2i);// cnt-1
-		} catch (Exception e) {
-			e.printStackTrace();
-			return null;
-		}
-		short[] pos = is.pposs[0];
-
-		List<ParseNBest> parses = null;
-		try {
-			parses = Decoder.decode(pos, d2, options.decodeProjective, pipe.extractor[0]); // cnt-1
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		if (parses.size() > NBest)
-			parses = parses.subList(0, NBest);
-
-		return parses;
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.tools.Tool#apply(is2.data.SentenceData09)
-	 */
-	@Override
-	public SentenceData09 apply(SentenceData09 snt09) {
-
-		try {
-			parse(snt09, this.parametersReranker);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		Decoder.executerService.shutdown();
-		Pipe.executerService.shutdown();
-
-		return snt09;
-	}
-
-	/**
-	 * Write the parsing model
-	 *
-	 * @param options
-	 * @param params
-	 * @param extension
-	 * @throws FileNotFoundException
-	 * @throws IOException
-	 */
-	private void writeModell(OptionsSuper options, ParametersFloat params, String extension, Cluster cs)
-			throws FileNotFoundException, IOException {
-
-		String name = extension == null ? options.modelName : options.modelName + extension;
-		DB.println("Writting model: " + name);
-		ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(name)));
-		zos.putNextEntry(new ZipEntry("data"));
-		DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(zos));
-
-		MFB.writeData(dos);
-		cs.write(dos);
-
-		params.write(dos);
-
-		Edges.write(dos);
-
-		dos.writeBoolean(options.decodeProjective);
-
-		dos.writeInt(ExtractorClusterStacked.maxForm);
-
-		dos.writeInt(5); // Info count
-		dos.writeUTF("Used parser   " + Reranker.class.toString());
-		dos.writeUTF("Creation date " + (new SimpleDateFormat("yyyy.MM.dd HH:mm:ss")).format(new Date()));
-		dos.writeUTF("Training data " + options.trainfile);
-		dos.writeUTF("Iterations    " + options.numIters + " Used sentences " + options.count);
-		dos.writeUTF("Cluster       " + options.clusterFile);
-
-		dos.flush();
-		dos.close();
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/parserR2/package.html b/dependencyParser/mate-tools/src/is2/parserR2/package.html
deleted file mode 100755
index 6b06482..0000000
--- a/dependencyParser/mate-tools/src/is2/parserR2/package.html
+++ /dev/null
@@ -1,3 +0,0 @@
-Package info
- - n-best parser
-<br>
\ No newline at end of file
diff --git a/dependencyParser/mate-tools/src/is2/tag/ExtractorT2.java b/dependencyParser/mate-tools/src/is2/tag/ExtractorT2.java
deleted file mode 100644
index 688dc21..0000000
--- a/dependencyParser/mate-tools/src/is2/tag/ExtractorT2.java
+++ /dev/null
@@ -1,766 +0,0 @@
-package is2.tag;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map.Entry;
-
-import is2.data.Cluster;
-import is2.data.F2SF;
-import is2.data.Instances;
-import is2.data.InstancesTagger;
-import is2.data.Long2IntInterface;
-import is2.data.ParametersFloat;
-import is2.data.PipeGen;
-import is2.data.SentenceData09;
-import is2.io.CONLLReader09;
-import is2.tools.IPipe;
-import is2.util.OptionsSuper;
-
-final public class ExtractorT2 extends PipeGen implements IPipe {
-
-	final static int _MAX = 71;
-
-	private static final String STWRD = "STWRD", STPOS = "STPOS";
-
-	private static short s_pos, s_word, s_char;
-	protected static short s_type;
-	private static int _strp;
-	static int _CEND;
-
-	public String[] types;
-
-	final public MFO mf;
-
-	final MFO.Data4 d1 = new MFO.Data4(), d2 = new MFO.Data4(), d3 = new MFO.Data4(), dw = new MFO.Data4(),
-			dwp = new MFO.Data4();
-
-	Cluster cl;
-
-	private OptionsSuper options;
-
-	public ExtractorT2(OptionsSuper options, MFO mf) throws IOException {
-		this.mf = mf;
-		this.options = options;
-	}
-
-	public HashMap<Integer, int[]> _pps = new HashMap<Integer, int[]>();
-
-	private Lexicon lx;
-
-	public int corpusWrds = 0;
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.tag5.IPipe#createInstances(java.lang.String, java.io.File,
-	 * is2.data.InstancesTagger)
-	 */
-	@Override
-	public Instances createInstances(String file) {
-		return createInstances(file, -1, -1);
-	}
-
-	public Instances createInstances(String file, int skipStart, int skipEnd) {
-
-		InstancesTagger is = new InstancesTagger();
-
-		CONLLReader09 depReader = new CONLLReader09(CONLLReader09.NO_NORMALIZE);
-
-		depReader.startReading(file);
-		mf.register(POS, "<root-POS>");
-		mf.register(WORD, "<root>");
-
-		System.out.println("Registering feature parts ");
-
-		HashMap<Integer, HashSet<Integer>> pps = new HashMap<Integer, HashSet<Integer>>();
-
-		int ic = 0;
-		while (true) {
-
-			SentenceData09 instance1 = depReader.getNext();
-
-			if (instance1 == null)
-				break;
-			ic++;
-
-			String[] w = instance1.forms;
-			for (String element : w)
-				mf.register(WORD, element);
-			for (String element : w)
-				registerChars(CHAR, element);
-			for (String element : w)
-				registerChars(CHAR, element.toLowerCase());
-
-			w = instance1.plemmas;
-			for (String element : w)
-				mf.register(WORD, element);
-			for (String element : w)
-				registerChars(CHAR, element);
-
-			w = instance1.gpos;
-			for (String element : w) {
-				mf.register(POS, element);
-			}
-			for (int i1 = 0; i1 < w.length; i1++) {
-				HashSet<Integer> ps = pps.get(mf.getValue(POS, w[i1]));
-				if (ps == null) {
-					ps = new HashSet<Integer>();
-					pps.put(mf.getValue(POS, w[i1]), ps);
-				}
-				if (i1 + 1 < w.length)
-					ps.add(mf.getValue(POS, w[i1 + 1]));
-			}
-
-		}
-
-		for (Entry<Integer, HashSet<Integer>> e : pps.entrySet()) {
-			int[] ps = new int[e.getValue().size()];
-			int j = 0;
-			for (int k : e.getValue().toArray(new Integer[0])) {
-				ps[j++] = k;
-			}
-			_pps.put(e.getKey(), ps);
-			// System.out.println("put "+e.getKey()+" "+ps.length+" pps size
-			// "+_pps.size());
-		}
-
-		System.out.println("words in corpus " + (corpusWrds = mf.getFeatureCounter().get(PipeGen.WORD)));
-		if (options.clusterFile == null)
-			cl = new Cluster();
-		else
-			cl = new Cluster(options.clusterFile, mf, 6);
-
-		if (options.lexicon == null)
-			lx = new Lexicon(new byte[0][0]);
-		else
-			lx = new Lexicon(options.lexicon, mf);
-
-		initFeatures();
-
-		mf.calculateBits();
-		initValues();
-
-		System.out.println("" + mf.toString());
-
-		depReader.startReading(file);
-
-		int num1 = 0;
-
-		int instanceCount = 0;
-
-		System.out.print("Creating Instances: ");
-
-		is.init(ic, mf);
-		int del = 0;
-
-		while (true) {
-			if (num1 % 100 == 0)
-				del = outValue(num1, del);
-
-			if (num1 >= skipStart && num1 < skipEnd && skipStart >= 0) {
-				SentenceData09 instance1 = depReader.getNext();
-				if (instance1 == null)
-					break;
-				num1++;
-				continue;
-			}
-
-			SentenceData09 instance1 = depReader.getNext(is);
-			if (instance1 == null)
-				break;
-
-			is.fillChars(instance1, instanceCount, _CEND);
-			for (int k = 0; k < instance1.length(); k++) {
-				if (instance1.ppos[k].contains("\\|"))
-
-					is.pposs[num1][k] = (short) mf.getValue(FM, instance1.ppos[k].split("\\|")[1]);
-			}
-
-			if (num1 > options.count)
-				break;
-
-			num1++;
-			instanceCount++;
-		}
-		outValue(num1, del);
-		System.out.println();
-
-		types = MFO.reverse(mf.getFeatureSet().get(POS));
-		return is;
-	}
-
-	private void registerChars(String type, String word) {
-		for (int i = 0; i < word.length(); i++)
-			mf.register(type, Character.toString(word.charAt(i)));
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.tag5.IPipe#initValues()
-	 */
-	@Override
-	public void initValues() {
-		s_pos = mf.getFeatureBits(POS);
-		s_word = mf.getFeatureBits(WORD);
-		s_type = mf.getFeatureBits(TYPE);
-		s_char = mf.getFeatureBits(CHAR);
-
-		d1.a0 = s_type;
-		d1.a1 = s_pos;
-		d1.a2 = s_word;
-		d1.a3 = s_word;
-		d2.a0 = s_type;
-		d2.a1 = s_pos;
-		d2.a2 = s_pos;
-		d2.a3 = s_pos;
-		d2.a4 = s_pos;
-		d2.a5 = s_pos;
-		d2.a6 = s_pos;
-		d3.a0 = s_type;
-		d3.a1 = s_pos;
-		d3.a2 = s_char;
-		d3.a3 = s_char;
-		d3.a4 = s_char;
-		d3.a5 = s_char;
-		d3.a6 = s_char;
-		d3.a7 = s_char;
-		dw.a0 = s_type;
-		dw.a1 = s_pos;
-		dw.a2 = s_word;
-		dw.a3 = s_word;
-		dw.a4 = s_word;
-		dw.a5 = s_word;
-		dw.a6 = s_word;
-		dw.a7 = s_word;
-		dwp.a0 = s_type;
-		dwp.a1 = s_pos;
-		dwp.a2 = s_word;
-		dwp.a3 = s_pos;
-		dwp.a4 = s_word;
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.tag5.IPipe#initFeatures()
-	 */
-	@Override
-	public void initFeatures() {
-		// 62
-		for (int t = 0; t < 67; t++)
-			mf.register(TYPE, "F" + t);
-
-		mf.register(POS, MID);
-		_strp = mf.register(POS, STR);
-		mf.register(POS, END);
-
-		mf.register(WORD, STR);
-		mf.register(WORD, END);
-
-		_CEND = mf.register(CHAR, END);
-
-		mf.register(WORD, STWRD);
-		mf.register(POS, STPOS);
-
-	}
-
-	final public void addFeatures(InstancesTagger is, int ic, String fs, int i, short pposs[], int[] forms,
-			int[] lemmas, long[] vs) {
-
-		int c0 = is.chars[ic][i][0], c1 = is.chars[ic][i][1], c2 = is.chars[ic][i][2], c3 = is.chars[ic][i][3],
-				c4 = is.chars[ic][i][4], c5 = is.chars[ic][i][5];
-		int e0 = is.chars[ic][i][6], e1 = is.chars[ic][i][7], e2 = is.chars[ic][i][8], e3 = is.chars[ic][i][9],
-				e4 = is.chars[ic][i][10];
-
-		int f = 1, n = 0;
-		short upper = 0, number = 1;
-		for (int k1 = 0; k1 < fs.length(); k1++) {
-			char c = fs.charAt(k1);
-			if (Character.isUpperCase(c)) {
-				if (k1 == 0)
-					upper = 1;
-				else {
-					// first char + another
-					if (upper == 1)
-						upper = 3;
-					// another uppercase in the word
-					else if (upper == 0)
-						upper = 2;
-				}
-			}
-
-			// first
-			if (Character.isDigit(c) && k1 == 0)
-				number = 2;
-			else if (Character.isDigit(c) && number == 1)
-				number = 3;
-			// if(number==2 &&Character.isDigit(c)) number=4;
-			// if(number==4 && !Character.isDigit(c)) number=5;
-		}
-
-		// if (i==0 && upper>0) upper+=4;
-		int form = forms[i], form2 = forms[i] < corpusWrds ? forms[i] : -1;
-
-		int len = forms.length;
-		long l;
-		d1.v0 = f++;
-		d1.v2 = form2;
-		l = mf.calc3(d1);
-		vs[n++] = mf.calc3(d1);
-
-		d1.v0 = f++;
-		d1.v2 = is.formlc[ic][i];
-		vs[n++] = mf.calc3(d1);
-
-		d3.v2 = c0;
-		d3.v3 = c1;
-		d3.v4 = c2;
-		d3.v5 = c3;
-		d3.v6 = c4;
-		d3.v0 = f++;
-		vs[n++] = mf.calc3(d3);
-		d3.v0 = f++;
-		vs[n++] = mf.calc4(d3);
-		d3.v0 = f++;
-		vs[n++] = mf.calc5(d3);
-		d3.v0 = f++;
-		vs[n++] = mf.calc6(d3);
-		d3.v0 = f++;
-		vs[n++] = mf.calc7(d3);
-
-		if (form != -1) {
-			d3.v2 = c2;
-			d3.v3 = c3;
-			d3.v4 = c4;
-			d3.v5 = c5;
-			d3.v6 = cl.getLP(form);
-			d3.v0 = f;
-			vs[n++] = mf.calc6(d3);
-			d3.v0 = f + 1;
-			vs[n++] = mf.calc7(d3);
-		}
-		f += 2;
-
-		if (form > 0) {
-			d3.v0 = f;
-			d3.v5 = cl.getLP(form);
-			vs[n++] = mf.calc6(d3);
-			d3.v0 = f + 1;
-			d3.v4 = cl.getLP(form);
-			vs[n++] = mf.calc5(d3);
-			d3.v0 = f + 2;
-			d3.v3 = cl.getLP(form);
-			vs[n++] = mf.calc4(d3);
-		}
-		f += 5;
-
-		d3.v2 = e0;
-		d3.v3 = e1;
-		d3.v4 = e2;
-		d3.v5 = e3;
-		d3.v6 = e4;
-		d3.v0 = f++;
-		vs[n++] = mf.calc3(d3);
-		d3.v0 = f++;
-		vs[n++] = l = mf.calc4(d3);
-		vs[n++] = d3.calcs(3, upper, l);
-		d3.v0 = f++;
-		vs[n++] = l = mf.calc5(d3);
-		vs[n++] = d3.calcs(3, upper, l);
-		d3.v0 = f++;
-		vs[n++] = l = mf.calc6(d3);
-		vs[n++] = d3.calcs(3, upper, l);
-		d3.v0 = f++;
-		vs[n++] = l = mf.calc7(d3);
-		vs[n++] = d3.calcs(3, upper, l);
-
-		if (form > 0) {
-			d3.v0 = f;
-			d3.v5 = cl.getLP(form);
-			vs[n++] = mf.calc6(d3);
-			d3.v0 = f + 1;
-			d3.v4 = cl.getLP(form);
-			vs[n++] = mf.calc5(d3);
-			d3.v0 = f + 2;
-			d3.v3 = cl.getLP(form);
-			vs[n++] = mf.calc4(d3);
-
-			d3.v2 = e0;
-			d3.v3 = e1;
-			d3.v4 = e2;
-
-			d3.v0 = f + 3;
-			d3.v2 = lx.getTag(form);
-			vs[n++] = mf.calc3(d3);
-			d3.v0 = f + 4;
-			d3.v4 = cl.getLP(form);
-			vs[n++] = mf.calc5(d3);
-			d3.v0 = f + 5;
-			d3.v3 = cl.getLP(form);
-			vs[n++] = mf.calc4(d3);
-		}
-		f += 6;
-
-		// sign three-grams
-		d3.v0 = f++;
-		d3.v2 = c1;
-		d3.v3 = c2;
-		d3.v4 = c3;
-		vs[n++] = mf.calc5(d3);
-		d3.v0 = f++;
-		d3.v2 = c2;
-		d3.v3 = c3;
-		d3.v4 = c4;
-		vs[n++] = mf.calc5(d3);
-		d3.v0 = f++;
-		d3.v2 = c3;
-		d3.v3 = c4;
-		d3.v4 = c5;
-		vs[n++] = mf.calc5(d3);
-
-		// sign quad-grams
-		d3.v0 = f++;
-		d3.v2 = c1;
-		d3.v3 = c2;
-		d3.v4 = c3;
-		d3.v5 = c4;
-		vs[n++] = mf.calc6(d3);
-		d3.v0 = f++;
-		d3.v2 = c2;
-		d3.v3 = c3;
-		d3.v4 = c4;
-		d3.v5 = c5;
-		vs[n++] = mf.calc6(d3); // changed to 6
-
-		if (i + 1 < len && forms[i + 1] < this.corpusWrds) {
-			dw.v0 = f;
-			dw.v2 = forms[i + 1];
-			dw.v3 = form2;
-			vs[n++] = mf.calc4(dw);
-		}
-		f++;
-
-		if (len > i + 1) {
-
-			if (forms[i + 1] < corpusWrds) {
-				dw.v0 = f;
-				dw.v2 = forms[i + 1];
-				vs[n++] = mf.calc3(dw);
-			}
-
-			d3.v0 = f + 1;
-			d3.v2 = is.chars[ic][i + 1][0];
-			vs[n++] = mf.calc3(d3);
-			d3.v0 = f + 2;
-			d3.v2 = is.chars[ic][i + 1][6];
-			vs[n++] = mf.calc3(d3);
-
-			d3.v2 = e0;
-			d3.v3 = e1;
-
-			d3.v0 = f + 3;
-			d3.v4 = is.chars[ic][i + 1][0];
-			vs[n++] = mf.calc5(d3);
-			d3.v0 = f + 4;
-			d3.v4 = is.chars[ic][i + 1][6];
-			vs[n++] = mf.calc5(d3);
-
-			if (is.chars[ic][i + 1][11] > 1) { // instance.forms[i+1].length()
-
-				d3.v0 = f + 5;
-				d3.v2 = is.chars[ic][i + 1][0];
-				d3.v3 = is.chars[ic][i + 1][1];
-				vs[n++] = mf.calc4(d3);
-				d3.v0 = f + 6;
-				d3.v2 = is.chars[ic][i + 1][6];
-				d3.v3 = is.chars[ic][i + 1][7];
-				vs[n++] = mf.calc4(d3);
-
-				d3.v2 = e0;
-				d3.v3 = e1;
-
-				d3.v0 = f + 7;
-				d3.v4 = is.chars[ic][i + 1][0];
-				d3.v5 = is.chars[ic][i + 1][1];
-				vs[n++] = mf.calc6(d3);
-				d3.v0 = f + 8;
-				d3.v4 = is.chars[ic][i + 1][6];
-				d3.v5 = is.chars[ic][i + 1][7];
-				vs[n++] = mf.calc6(d3);
-
-				if (forms[i + 1] > 0) {
-					d3.v0 = f + 9;
-					d3.v2 = is.chars[ic][i + 1][0];
-					d3.v3 = is.chars[ic][i + 1][1];
-					d3.v4 = cl.getLP(forms[i + 1]);
-					vs[n++] = mf.calc5(d3);
-					d3.v0 = f + 10;
-					d3.v2 = is.chars[ic][i + 1][6];
-					d3.v3 = is.chars[ic][i + 1][7];
-					d3.v4 = cl.getLP(forms[i + 1]);
-					vs[n++] = mf.calc5(d3);
-				}
-			}
-
-			if (forms[i + 1] > 0) {
-
-				dw.v0 = f + 11;
-				dw.v2 = cl.getLP(forms[i + 1]);
-				dw.v3 = form2;
-				vs[n++] = mf.calc4(dw);
-
-				// if (forms[i]>0){
-				// dw.v0=f+12; dw.v2= cl.getLP(forms[i+1]);
-				// dw.v3=lx.getTag(form);vs[n++]=mf.calc4(dw);
-				// dw.v0=f+13; dw.v2= cl.getLP(forms[i]);
-				// dw.v3=lx.getTag(forms[i+1]);vs[n++]=mf.calc4(dw);
-				// }
-			}
-
-			if (len > i + 2) {
-				if (forms[i + 2] < corpusWrds && forms[i + 1] < corpusWrds) {
-					dw.v0 = f + 12;
-					dw.v2 = forms[i + 2];
-					dw.v3 = forms[i + 1];
-					vs[n++] = mf.calc4(dw);
-					vs[n++] = mf.calc3(dw);
-				}
-				d2.v0 = f + 13;
-				d2.v2 = pposs[i + 1];
-				d2.v3 = pposs[i + 2];
-				vs[n++] = mf.calc4(d2);
-			}
-
-			if (len > i + 3) {
-				if (forms[i + 3] < this.corpusWrds && forms[i + 2] < this.corpusWrds) {
-					dw.v0 = f + 14;
-					dw.v2 = forms[i + 3];
-					dw.v3 = forms[i + 2];
-					vs[n++] = mf.calc4(dw);
-					vs[n++] = mf.calc3(dw);
-				}
-			}
-		}
-		f += 15;
-
-		// length
-		d2.v0 = f++;
-		d2.v2 = is.chars[ic][i][11];
-		vs[n++] = mf.calc3(d2);
-
-		// contains a number
-		d2.v0 = f++;
-		d2.v2 = number;
-		vs[n++] = mf.calc3(d2);
-		if (lemmas[i] < corpusWrds) {
-			d1.v0 = f;
-			d1.v2 = lemmas[i];
-			vs[n++] = mf.calc3(d1);
-		}
-		f++;
-
-		if (i != 0 && len > i + 1) {
-
-			if (lemmas[i - 1] < corpusWrds && lemmas[i + 1] < corpusWrds) {
-				dw.v0 = f;
-				dw.v2 = lemmas[i - 1];
-				dw.v3 = lemmas[i + 1];
-				vs[n++] = mf.calc4(dw);
-			}
-
-			d2.v0 = f + 1;
-			d2.v2 = pposs[i - 1];
-			d2.v3 = pposs[i + 1];
-			vs[n++] = mf.calc4(d2);
-		}
-		f += 2;
-
-		d2.v0 = f++;
-		d2.v2 = i >= 1 ? pposs[i - 1] : _strp;
-		vs[n++] = mf.calc3(d2);
-
-		if (i > 0) {
-
-			dw.v0 = f;
-			dw.v2 = i >= 1 ? forms[i - 1] < corpusWrds ? forms[i - 1] : -1 : _strp;
-			vs[n++] = mf.calc3(dw);
-			f++;
-
-			if (lemmas[i - 1] < corpusWrds) {
-				dw.v0 = f;
-				dw.v2 = i >= 1 ? lemmas[i - 1] : _strp;
-				vs[n++] = mf.calc3(dw);
-			}
-			f++;
-
-			// if (len>i+1) {d2.v0=f; d2.v2= pposs[i-1];d2.v3= pposs[i+1];
-			// vs[n++]=mf.calc4(d2);}
-			// f++;
-
-			if (i > 1) {
-
-				d2.v0 = f++;
-				d2.v2 = i < 2 ? _strp : pposs[i - 2];
-				vs[n++] = mf.calc3(d2);
-				d2.v0 = f++;
-				d2.v2 = pposs[i - 1];
-				d2.v3 = pposs[i - 2];
-				vs[n++] = mf.calc4(d2);
-
-				if (forms[i - 2] < corpusWrds) {
-					dw.v0 = f;
-					dw.v2 = forms[i - 2];
-					vs[n++] = mf.calc3(dw);
-				}
-				f++;
-				if (forms[i - 1] < corpusWrds) {
-					dwp.v0 = f;
-					dwp.v2 = forms[i - 1];
-					dwp.v3 = pposs[i - 2];
-					vs[n++] = mf.calc4(dwp);
-				}
-				f++;
-				if (forms[i - 2] < corpusWrds) {
-					dwp.v0 = f;
-					dwp.v2 = forms[i - 2];
-					dwp.v3 = pposs[i - 1];
-					vs[n++] = mf.calc4(dwp);
-				}
-				f++;
-
-				if (i > 2) {
-					d2.v0 = f++;
-					d2.v2 = pposs[i - 3];
-					vs[n++] = mf.calc3(d2);
-					d2.v0 = f++;
-					d2.v2 = pposs[i - 2];
-					d2.v3 = pposs[i - 3];
-					vs[n++] = mf.calc4(d2);
-					if (forms[i - 3] < this.corpusWrds && forms[i - 2] < this.corpusWrds) {
-						dw.v0 = f;
-						dw.v2 = forms[i - 3];
-						dw.v3 = forms[i - 2];
-						vs[n++] = mf.calc4(dw);
-					}
-					f++;
-				}
-			}
-		}
-		vs[n] = Integer.MIN_VALUE;
-	}
-
-	public int fillFeatureVectorsOne(String fs, ParametersFloat params, int w1, InstancesTagger is, int n, short[] pos,
-			Long2IntInterface li, float[] score) {
-
-		float best = -1000;
-		int bestType = -1;
-
-		F2SF f = new F2SF(params.parameters);
-
-		long vs[] = new long[_MAX];
-		int lemmas[];
-		if (options.noLemmas)
-			lemmas = new int[is.length(n)];
-		else
-			lemmas = is.plemmas[n];
-		addFeatures(is, n, fs, w1, pos, is.forms[n], lemmas, vs);
-
-		// for(int t = 0; t < types.length; t++) {
-
-		for (int t = 0; t < types.length; t++) {
-
-			int p = t << s_type;
-
-			f.clear();
-			for (int k = 0; vs[k] != Integer.MIN_VALUE; k++)
-				if (vs[k] > 0)
-					f.add(li.l2i(vs[k] + p));
-			if (f.score > best) {
-				bestType = t;
-				score[w1] = best = f.score;
-			}
-		}
-		return bestType;
-
-	}
-
-	public ArrayList<POS> classify(String fs, ParametersFloat params, int w1, InstancesTagger is, int n, short[] pos,
-			Long2IntInterface li) {
-
-		F2SF f = new F2SF(params.parameters);
-
-		long vs[] = new long[_MAX];
-		int lemmas[];
-		if (options.noLemmas)
-			lemmas = new int[is.length(n)];
-		else
-			lemmas = is.plemmas[n];
-		addFeatures(is, n, fs, w1, pos, is.forms[n], lemmas, vs);
-
-		ArrayList<POS> best = new ArrayList<POS>(types.length);
-
-		for (int t = 0; t < types.length; t++) {
-
-			int p = t << s_type;
-
-			f.clear();
-			f.add(vs, li, p);
-			POS px = new POS(t, f.score);
-			best.add(px);
-		}
-		Collections.sort(best);
-		return best;
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.tag5.IPipe#write(java.io.DataOutputStream)
-	 */
-	@Override
-	public void write(DataOutputStream dos) {
-		try {
-			this.cl.write(dos);
-			this.lx.write(dos);
-			dos.writeInt(this.corpusWrds);
-			dos.writeInt(_pps.size());
-
-			for (Entry<Integer, int[]> e : _pps.entrySet()) {
-				dos.writeInt(e.getValue().length);
-				for (int k : e.getValue())
-					dos.writeInt(k);
-				dos.writeInt(e.getKey());
-			}
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-	}
-
-	public void read(DataInputStream dis) {
-		try {
-			this.cl = new Cluster(dis);
-			this.lx = new Lexicon(dis);
-			this.corpusWrds = dis.readInt();
-
-			int pc = dis.readInt();
-			for (int j = 0; j < pc; j++) {
-				int ps[] = new int[dis.readInt()];
-				for (int k = 0; k < ps.length; k++)
-					ps[k] = dis.readInt();
-				_pps.put(dis.readInt(), ps);
-			}
-			// System.out.println("_pps "+ps.length);
-
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-	}
-}
diff --git a/dependencyParser/mate-tools/src/is2/tag/Lexicon.java b/dependencyParser/mate-tools/src/is2/tag/Lexicon.java
deleted file mode 100644
index f719f26..0000000
--- a/dependencyParser/mate-tools/src/is2/tag/Lexicon.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/**
- *
- */
-package is2.tag;
-
-import java.io.BufferedReader;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-
-import is2.data.IEncoderPlus;
-import is2.data.PipeGen;
-import is2.util.DB;
-
-/**
- * @author Dr. Bernd Bohnet, 07.01.2011
- *
- *
- */
-public class Lexicon {
-
-	public static final String FR = "FR", TAG = "TAG";
-
-	final byte[][] word2tag;
-
-	public Lexicon(byte[][] w2t) {
-
-		word2tag = w2t;
-	}
-
-	public Lexicon(String clusterFile, IEncoderPlus mf) {
-
-		final String REGEX = "\t";
-
-		// register words
-		try {
-			BufferedReader inputReader = new BufferedReader(
-					new InputStreamReader(new FileInputStream(clusterFile), "UTF-8"), 32768);
-
-			int cnt = 0;
-			String line;
-			while ((line = inputReader.readLine()) != null) {
-
-				try {
-					String[] split = line.split(REGEX);
-					// int f = Integer.parseInt(split[2]);
-					// if (f>2) {
-					cnt++;
-					mf.register(PipeGen.WORD, split[0]);
-					mf.register(TAG, split[1]); // tag
-
-					if (split.length > 1)
-						mf.register(FR, split[1]); // frequency
-					// }
-				} catch (Exception e) {
-					System.out.println("Error in lexicon line " + cnt + " error: " + e.getMessage());
-				}
-			}
-			System.out.println("read number of words from lexicon " + cnt);
-			inputReader.close();
-
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		word2tag = new byte[mf.getFeatureCounter().get(PipeGen.WORD)][1];
-		// insert words
-		try {
-			String line;
-			BufferedReader inputReader = new BufferedReader(
-					new InputStreamReader(new FileInputStream(clusterFile), "UTF-8"), 32768);
-
-			while ((line = inputReader.readLine()) != null) {
-
-				String[] split = line.split(REGEX);
-				int w = mf.getValue(PipeGen.WORD, split[0]);
-				if (w < 0)
-					continue;
-				word2tag[w][0] = (byte) mf.getValue(TAG, split[1]);
-				// if (split.length>1) word2tag[w][1]= (byte)mf.getValue(FR,
-				// split[2]); // frequency
-			}
-			inputReader.close();
-			int fill = 0;
-			for (byte[] element : word2tag) {
-				if (element[0] != 0)
-					fill++;
-			}
-			System.out.println("filled " + fill + " of " + word2tag.length);
-
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	/**
-	 * Read the cluster
-	 * 
-	 * @param dos
-	 * @throws IOException
-	 */
-	public Lexicon(DataInputStream dis) throws IOException {
-
-		word2tag = new byte[dis.readInt()][1];
-		for (int i = 0; i < word2tag.length; i++) {
-			word2tag[i][0] = dis.readByte();
-			// word2tag[i][1]=dis.readByte();
-		}
-		DB.println("Read lexicon with " + word2tag.length + " words ");
-	}
-
-	/**
-	 * Write the cluster
-	 * 
-	 * @param dos
-	 * @throws IOException
-	 */
-	public void write(DataOutputStream dos) throws IOException {
-
-		dos.writeInt(word2tag.length);
-		for (byte[] i : word2tag) {
-			dos.writeByte(i[0]);
-			// dos.writeByte(i[1]);
-		}
-
-	}
-
-	/**
-	 * @param form
-	 * @return
-	 */
-	public int getTag(int form) {
-		if (word2tag.length < form || form < 0)
-			return -1;
-		return word2tag[form][0];
-	}
-
-	/**
-	 * @param form
-	 * @return
-	 */
-	public int getConf(int form) {
-		if (word2tag.length < form || form < 0)
-			return -1;
-		return word2tag[form][1];
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/tag/MFO.java b/dependencyParser/mate-tools/src/is2/tag/MFO.java
deleted file mode 100644
index d8ac62d..0000000
--- a/dependencyParser/mate-tools/src/is2/tag/MFO.java
+++ /dev/null
@@ -1,527 +0,0 @@
-package is2.tag;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map.Entry;
-
-import is2.data.IEncoderPlus;
-import is2.util.DB;
-
-/**
- * Map Features, do not map long to integer
- *
- * @author Bernd Bohnet, 20.09.2009
- */
-
-final public class MFO implements IEncoderPlus {
-
-	/** The features and its values */
-	private final HashMap<String, HashMap<String, Integer>> m_featureSets = new HashMap<String, HashMap<String, Integer>>();
-
-	/** The feature class and the number of values */
-	private final HashMap<String, Integer> m_featureCounters = new HashMap<String, Integer>();
-
-	/** The number of bits needed to encode a feature */
-	final HashMap<String, Integer> m_featureBits = new HashMap<String, Integer>();
-
-	/** Integer counter for long2int */
-	// private int count=0;
-
-	/** Stop growing */
-	public boolean stop = false;
-
-	final public static String NONE = "<None>";
-
-	final public static class Data4 {
-		public int shift;
-		public short a0, a1, a2, a3, a4, a5, a6, a7, a8, a9;
-		public int v0, v1, v2, v3, v4, v5, v6, v7, v8, v9;
-
-		final public long calcs(int b, long v, long l) {
-			if (l < 0)
-				return l;
-			l |= v << shift;
-			shift += b;
-			return l;
-		}
-
-		final public long calc2() {
-
-			if (v0 < 0 || v1 < 0)
-				return -1;
-
-			long l = v0;
-			shift = a0;
-			l |= (long) v1 << shift;
-			shift += a1;
-
-			return l;
-		}
-
-		final public long calc3() {
-
-			if (v0 < 0 || v1 < 0 || v2 < 0)
-				return -1;
-			// if (v1<0||v2<0) return -1;
-
-			long l = v0;
-			shift = a0;
-			l |= (long) v1 << shift;
-			shift += a1;
-			l |= (long) v2 << shift;
-			shift = (short) (shift + a2);
-
-			// shift=;
-			return l;
-		}
-
-		final public long calc4() {
-			if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0)
-				return -1;
-
-			long l = v0;
-			shift = a0;
-			l |= (long) v1 << shift;
-			shift += a1;
-			l |= (long) v2 << shift;
-			shift += a2;
-			l |= (long) v3 << shift;
-			shift = shift + a3;
-
-			return l;
-		}
-
-		final public long calc5() {
-
-			if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0)
-				return -1;
-
-			long l = v0;
-			shift = a0;
-			l |= (long) v1 << shift;
-			shift += a1;
-			l |= (long) v2 << shift;
-			shift += a2;
-			l |= (long) v3 << shift;
-			shift += a3;
-			l |= (long) v4 << shift;
-			shift = shift + a4;
-
-			return l;
-		}
-
-		final public long calc6() {
-
-			if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0)
-				return -1;
-
-			long l = v0;
-			shift = a0;
-			l |= (long) v1 << shift;
-			shift += a1;
-			l |= (long) v2 << shift;
-			shift += a2;
-			l |= (long) v3 << shift;
-			shift += a3;
-			l |= (long) v4 << shift;
-			shift += a4;
-			l |= (long) v5 << shift;
-			shift = shift + a5;
-
-			return l;
-		}
-
-		final public long calc7() {
-
-			if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0)
-				return -1;
-
-			long l = v0;
-			shift = a0;
-			l |= (long) v1 << shift;
-			shift += a1;
-			l |= (long) v2 << shift;
-			shift += a2;
-			l |= (long) v3 << shift;
-			shift += a3;
-			l |= (long) v4 << shift;
-			shift += a4;
-			l |= (long) v5 << shift;
-			shift += a5;
-			l |= (long) v6 << shift;
-			shift = shift + a6;
-
-			return l;
-		}
-
-		final public long calc8() {
-
-			if (v0 < 0 || v1 < 0 || v2 < 0 || v3 < 0 || v4 < 0 || v5 < 0 || v6 < 0 || v7 < 0)
-				return -1;
-
-			long l = v0;
-			shift = a0;
-			l |= (long) v1 << shift;
-			shift += a1;
-			l |= (long) v2 << shift;
-			shift += a2;
-			l |= (long) v3 << shift;
-			shift += a3;
-			l |= (long) v4 << shift;
-			shift += a4;
-			l |= (long) v5 << shift;
-			shift += a5;
-			l |= (long) v6 << shift;
-			shift += a6;
-			l |= (long) v7 << shift;
-			shift = shift + a7;
-
-			return l;
-		}
-
-	}
-
-	public MFO() {
-	}
-
-	// public int size() {return count;}
-
-	final public void stop() {
-		stop = true;
-	}
-
-	final public void start() {
-		stop = false;
-	}
-
-	/**
-	 * Register an attribute class, if it not exists and add a possible value
-	 * 
-	 * @param type
-	 * @param type2
-	 */
-	@Override
-	final public int register(String a, String v) {
-
-		HashMap<String, Integer> fs = getFeatureSet().get(a);
-		if (fs == null) {
-			fs = new HashMap<String, Integer>();
-			getFeatureSet().put(a, fs);
-			fs.put(NONE, 0);
-			getFeatureCounter().put(a, 1);
-		}
-		Integer c = getFeatureCounter().get(a);
-
-		Integer i = fs.get(v);
-		if (i == null) {
-			fs.put(v, c);
-			c++;
-			getFeatureCounter().put(a, c);
-			return c - 1;
-		} else
-			return i;
-	}
-
-	/**
-	 * Calculates the number of bits needed to encode a feature
-	 */
-	public void calculateBits() {
-
-		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
-			int bits = (int) Math.ceil((Math.log(e.getValue() + 1) / Math.log(2)));
-			m_featureBits.put(e.getKey(), bits);
-		}
-
-		// System.out.println("total number of needed bits "+total);
-	}
-
-	@Override
-	public String toString() {
-
-		StringBuffer content = new StringBuffer();
-		for (Entry<String, Integer> e : getFeatureCounter().entrySet()) {
-			content.append(e.getKey() + " " + e.getValue());
-			content.append(':');
-			// HashMap<String,Integer> vs = getFeatureSet().get(e.getKey());
-			content.append(getFeatureBits(e.getKey()));
-
-			/*
-			 * if (vs.size()<120) for(Entry<String,Integer> e2 : vs.entrySet())
-			 * { content.append(e2.getKey()+" ("+e2.getValue()+") "); }
-			 */
-			content.append('\n');
-
-		}
-		return content.toString();
-	}
-
-	static final public long calcs(Data4 d, int b, long v, long l) {
-		if (l < 0)
-			return l;
-		l |= v << d.shift;
-		d.shift += b;
-		return l;
-	}
-
-	final public short getFeatureBits(String a) {
-		return (short) m_featureBits.get(a).intValue();
-	}
-
-	/**
-	 * Get the integer place holder of the string value v of the type a
-	 *
-	 * @param t
-	 *            the type
-	 * @param v
-	 *            the value
-	 * @return the integer place holder of v
-	 */
-	@Override
-	final public int getValue(String t, String v) {
-
-		if (m_featureSets.get(t) == null)
-			return -1;
-		Integer vi = m_featureSets.get(t).get(v);
-		if (vi == null)
-			return -1; // stop &&
-		return vi.intValue();
-	}
-
-	/**
-	 * Static version of getValue
-	 * 
-	 * @see getValue
-	 */
-	final public int getValueS(String a, String v) {
-
-		if (m_featureSets.get(a) == null)
-			return -1;
-		Integer vi = m_featureSets.get(a).get(v);
-		if (vi == null)
-			return -1; // stop &&
-		return vi.intValue();
-	}
-
-	public int hasValue(String a, String v) {
-
-		Integer vi = m_featureSets.get(a).get(v);
-		if (vi == null)
-			return -1;
-		return vi.intValue();
-	}
-
-	final public long calc2(Data4 d) {
-
-		if (d.v0 < 0 || d.v1 < 0)
-			return -1;
-		// if (d.v1<0||d.v2<0) return -1;
-
-		long l = d.v0;
-		short shift = d.a0;
-		l |= (long) d.v1 << shift;
-		shift += d.a1;
-		// l |= (long)d.v2<<shift;
-		d.shift = shift;
-
-		// d.shift=;
-		return l;
-	}
-
-	final public long calc3(Data4 d) {
-
-		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0)
-			return -1;
-
-		long l = d.v0;
-		short shift = d.a0;
-		l |= (long) d.v1 << shift;
-		shift += d.a1;
-		l |= (long) d.v2 << shift;
-		d.shift = shift + d.a2;
-		return l;
-	}
-
-	final public long calc4(Data4 d) {
-		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0)
-			return -1;
-
-		long l = d.v0;
-		int shift = d.a0;
-		l |= (long) d.v1 << shift;
-		shift += d.a1;
-		l |= (long) d.v2 << shift;
-		shift += d.a2;
-		l |= (long) d.v3 << shift;
-		d.shift = shift + d.a3;
-
-		return l;
-	}
-
-	final public long calc5(Data4 d) {
-
-		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0 || d.v4 < 0)
-			return -1;
-
-		long l = d.v0;
-		int shift = d.a0;
-		l |= (long) d.v1 << shift;
-		shift += d.a1;
-		l |= (long) d.v2 << shift;
-		shift += d.a2;
-		l |= (long) d.v3 << shift;
-		shift += d.a3;
-		l |= (long) d.v4 << shift;
-		d.shift = shift + d.a4;
-
-		return l;
-	}
-
-	final public long calc6(Data4 d) {
-
-		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0 || d.v4 < 0 || d.v5 < 0)
-			return -1;
-
-		long l = d.v0;
-		int shift = d.a0;
-		l |= (long) d.v1 << shift;
-		shift += d.a1;
-		l |= (long) d.v2 << shift;
-		shift += d.a2;
-		l |= (long) d.v3 << shift;
-		shift += d.a3;
-		l |= (long) d.v4 << shift;
-		shift += d.a4;
-		l |= (long) d.v5 << shift;
-		d.shift = shift + d.a5;
-
-		return l;
-	}
-
-	final public long calc7(Data4 d) {
-
-		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0 || d.v4 < 0 || d.v5 < 0 || d.v6 < 0)
-			return -1;
-
-		long l = d.v0;
-		int shift = d.a0;
-		l |= (long) d.v1 << shift;
-		shift += d.a1;
-		l |= (long) d.v2 << shift;
-		shift += d.a2;
-		l |= (long) d.v3 << shift;
-		shift += d.a3;
-		l |= (long) d.v4 << shift;
-		shift += d.a4;
-		l |= (long) d.v5 << shift;
-		shift += d.a5;
-		l |= (long) d.v6 << shift;
-		d.shift = shift + d.a6;
-
-		return l;
-	}
-
-	final public long calc8(Data4 d) {
-
-		if (d.v0 < 0 || d.v1 < 0 || d.v2 < 0 || d.v3 < 0 || d.v4 < 0 || d.v5 < 0 || d.v6 < 0 || d.v7 < 0)
-			return -1;
-
-		long l = d.v0;
-		int shift = d.a0;
-		l |= (long) d.v1 << shift;
-		shift += d.a1;
-		l |= (long) d.v2 << shift;
-		shift += d.a2;
-		l |= (long) d.v3 << shift;
-		shift += d.a3;
-		l |= (long) d.v4 << shift;
-		shift += d.a4;
-		l |= (long) d.v5 << shift;
-		shift += d.a5;
-		l |= (long) d.v6 << shift;
-		shift += d.a6;
-		l |= (long) d.v7 << shift;
-		d.shift = shift + d.a7;
-
-		return l;
-	}
-
-	/**
-	 * Maps a long to a integer value. This is very useful to save memory for
-	 * sparse data long values
-	 * 
-	 * @param node
-	 * @return the integer
-	 */
-	static public int misses = 0;
-	static public int good = 0;
-
-	/**
-	 * Write the data
-	 * 
-	 * @param dos
-	 * @throws IOException
-	 */
-	public void writeData(DataOutputStream dos) throws IOException {
-		dos.writeInt(getFeatureSet().size());
-		for (Entry<String, HashMap<String, Integer>> e : getFeatureSet().entrySet()) {
-			dos.writeUTF(e.getKey());
-			dos.writeInt(e.getValue().size());
-
-			for (Entry<String, Integer> e2 : e.getValue().entrySet()) {
-
-				if (e2.getKey() == null)
-					DB.println("key " + e2.getKey() + " value " + e2.getValue() + " e -key " + e.getKey());
-				dos.writeUTF(e2.getKey());
-				dos.writeInt(e2.getValue());
-
-			}
-
-		}
-	}
-
-	public void read(DataInputStream din) throws IOException {
-
-		int size = din.readInt();
-		for (int i = 0; i < size; i++) {
-			String k = din.readUTF();
-			int size2 = din.readInt();
-
-			HashMap<String, Integer> h = new HashMap<String, Integer>();
-			getFeatureSet().put(k, h);
-			for (int j = 0; j < size2; j++) {
-				h.put(din.readUTF(), din.readInt());
-			}
-			getFeatureCounter().put(k, size2);
-		}
-
-		calculateBits();
-	}
-
-	/**
-	 * Clear the data
-	 */
-	public void clearData() {
-		getFeatureSet().clear();
-		m_featureBits.clear();
-		getFeatureSet().clear();
-	}
-
-	@Override
-	public HashMap<String, Integer> getFeatureCounter() {
-		return m_featureCounters;
-	}
-
-	public HashMap<String, HashMap<String, Integer>> getFeatureSet() {
-		return m_featureSets;
-	}
-
-	static public String[] reverse(HashMap<String, Integer> v) {
-		String[] set = new String[v.size()];
-		for (Entry<String, Integer> e : v.entrySet()) {
-			set[e.getValue()] = e.getKey();
-		}
-		return set;
-	}
-}
diff --git a/dependencyParser/mate-tools/src/is2/tag/Options.java b/dependencyParser/mate-tools/src/is2/tag/Options.java
deleted file mode 100644
index 0998c70..0000000
--- a/dependencyParser/mate-tools/src/is2/tag/Options.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package is2.tag;
-
-import java.io.File;
-
-import is2.util.OptionsSuper;
-
-public final class Options extends OptionsSuper {
-
-	public Options(String[] args) {
-
-		for (int i = 0; i < args.length; i++) {
-			String[] pair = args[i].split(":");
-
-			if (pair[0].equals("--help"))
-				explain();
-			else if (pair[0].equals("-train")) {
-				train = true;
-				trainfile = args[i + 1];
-			} else if (pair[0].equals("-eval")) {
-				eval = true;
-				goldfile = args[i + 1];
-				i++;
-			} else if (pair[0].equals("-test")) {
-				test = true;
-				testfile = args[i + 1];
-				i++;
-			} else if (pair[0].equals("-i")) {
-				numIters = Integer.parseInt(args[i + 1]);
-				i++;
-			} else if (pair[0].equals("-out")) {
-				outfile = args[i + 1];
-				i++;
-			} else if (pair[0].equals("-decode")) {
-				decodeProjective = args[i + 1].equals("proj");
-				i++;
-			} else if (pair[0].equals("-confidence")) {
-
-				conf = true;
-			}
-
-			else if (pair[0].equals("-count")) {
-				count = Integer.parseInt(args[i + 1]);
-				i++;
-			} else if (pair[0].equals("-model")) {
-				modelName = args[i + 1];
-				i++;
-			} else if (pair[0].equals("-tmp")) {
-				tmp = args[i + 1];
-				i++;
-			} else if (pair[0].equals("-format")) {
-				// format = args[i+1];
-				formatTask = Integer.parseInt(args[i + 1]);
-				i++;
-			} else if (pair[0].equals("-allfeatures")) {
-				allFeatures = true;
-			} else if (pair[0].equals("-nonormalize")) {
-				normalize = false;
-			} else if (pair[0].equals("-nframes")) {
-				// format = args[i+1];
-				nbframes = args[i + 1];
-				i++;
-
-			} else if (pair[0].equals("-pframes")) {
-				// format = args[i+1];
-				pbframes = args[i + 1];
-				i++;
-			} else if (pair[0].equals("-nopred")) {
-				nopred = true;
-			} else if (pair[0].equals("-divide")) {
-				keep = true;
-			} else if (pair[0].equals("-lexicon")) {
-				lexicon = args[i + 1];
-				i++;
-
-			} else
-				super.addOption(args, i);
-
-		}
-
-		try {
-
-			if (trainfile != null) {
-
-				if (keep && tmp != null) {
-					trainforest = new File(tmp);
-					if (!trainforest.exists())
-						keep = false;
-
-				} else if (tmp != null) {
-					trainforest = File.createTempFile("train", ".tmp", new File(tmp));
-					trainforest.deleteOnExit();
-				} else {
-					trainforest = File.createTempFile("train", ".tmp"); // ,new
-																		// File("F:\\")
-					trainforest.deleteOnExit();
-				}
-
-			}
-
-		} catch (java.io.IOException e) {
-			System.out.println("Unable to create tmp files for feature forests!");
-			System.out.println(e);
-			System.exit(0);
-		}
-	}
-
-	private void explain() {
-		System.out.println("Usage: ");
-		System.out.println("java -class mate.jar is2.parser.Parser [Options]");
-		System.out.println();
-		System.out.println("Example: ");
-		System.out.println(
-				" java -class mate.jar is2.parser.Parser -model eps3.model -train corpora/conll08st/train/train.closed -test corpora/conll08st/devel/devel.closed  -out b3.test -eval corpora/conll08st/devel/devel.closed  -count 2000 -i 6");
-		System.out.println("");
-		System.out.println("Options:");
-		System.out.println("");
-		System.out.println(" -train  <file>    the corpus a model is trained on; default " + this.trainfile);
-		System.out.println(" -test   <file>    the input corpus for testing; default " + this.testfile);
-		System.out.println(" -out    <file>    the output corpus (result) of a test run; default " + this.outfile);
-		System.out.println(" -model  <file>    the parsing model for traing the model is stored in the files");
-		System.out.println(
-				"                   and for parsing the model is load from this file; default " + this.modelName);
-		System.out.println(
-				" -i      <number>  the number of training iterations; good numbers are 10 for smaller corpora and 6 for bigger; default "
-						+ this.numIters);
-		System.out.println(" -count  <number>  the n first sentences of the corpus are take for the training default "
-				+ this.count);
-		System.out.println(" -format <number>  conll format of the year 8 or 9; default " + this.formatTask);
-
-		System.exit(0);
-	}
-}
diff --git a/dependencyParser/mate-tools/src/is2/tag/POS.java b/dependencyParser/mate-tools/src/is2/tag/POS.java
deleted file mode 100644
index 30f1e41..0000000
--- a/dependencyParser/mate-tools/src/is2/tag/POS.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package is2.tag;
-
-public class POS implements Comparable<POS> {
-
-	// pos tag
-	public int p;
-
-	// score of the tag
-	public float s;
-
-	// the position of the word in the sentence
-	public int w;
-
-	public POS(int p, float s) {
-		this.p = p;
-		this.s = s;
-	}
-
-	@Override
-	public int compareTo(POS o) {
-
-		return s > o.s ? -1 : s == o.s ? 0 : 1;
-	}
-
-	@Override
-	public String toString() {
-		return "" + p + ":" + s;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/tag/Tagger.java b/dependencyParser/mate-tools/src/is2/tag/Tagger.java
deleted file mode 100644
index 2ea146e..0000000
--- a/dependencyParser/mate-tools/src/is2/tag/Tagger.java
+++ /dev/null
@@ -1,506 +0,0 @@
-package is2.tag;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Map.Entry;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-import java.util.zip.ZipOutputStream;
-
-import is2.data.F2SF;
-import is2.data.FV;
-import is2.data.Instances;
-import is2.data.InstancesTagger;
-import is2.data.Long2Int;
-import is2.data.Long2IntInterface;
-import is2.data.ParametersFloat;
-import is2.data.PipeGen;
-import is2.data.SentenceData09;
-import is2.io.CONLLReader09;
-import is2.io.CONLLWriter09;
-import is2.io.IOGenerals;
-import is2.tools.IPipe;
-import is2.tools.Tool;
-import is2.tools.Train;
-import is2.util.DB;
-import is2.util.Evaluator;
-import is2.util.OptionsSuper;
-
-public class Tagger implements Tool, Train {
-
-	public ExtractorT2 pipe;
-	public ParametersFloat params;
-	public Long2IntInterface li;
-	public MFO mf;
-
-	/**
-	 * Initialize
-	 * 
-	 * @param options
-	 */
-	public Tagger(Options options) {
-
-		// load the model
-		try {
-			readModel(options);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	public Tagger() {
-	}
-
-	/**
-	 * @param modelFileName
-	 *            the file name of the model
-	 */
-	public Tagger(String modelFileName) {
-		this(new Options(new String[] { "-model", modelFileName }));
-	}
-
-	public static void main(String[] args) throws FileNotFoundException, Exception {
-
-		long start = System.currentTimeMillis();
-		Options options = new Options(args);
-
-		Tagger tagger = new Tagger();
-
-		if (options.train) {
-
-			// depReader.normalizeOn=false;
-
-			tagger.li = new Long2Int(options.hsize);
-			tagger.pipe = new ExtractorT2(options, tagger.mf = new MFO());
-
-			// tagger.pipe.li =tagger.li;
-
-			InstancesTagger is = (InstancesTagger) tagger.pipe.createInstances(options.trainfile);
-
-			tagger.params = new ParametersFloat(tagger.li.size());
-
-			tagger.train(options, tagger.pipe, tagger.params, is);
-			tagger.writeModel(options, tagger.pipe, tagger.params);
-
-		}
-
-		if (options.test) {
-
-			tagger.readModel(options);
-
-			tagger.out(options, tagger.pipe, tagger.params);
-		}
-
-		System.out.println();
-
-		if (options.eval) {
-			System.out.println("\nEVALUATION PERFORMANCE:");
-			Evaluator.evaluateTagger(options.goldfile, options.outfile, options.format);
-		}
-		long end = System.currentTimeMillis();
-		System.out.println("used time " + ((float) ((end - start) / 100) / 10));
-	}
-
-	@Override
-	public void readModel(OptionsSuper options) {
-
-		try {
-			pipe = new ExtractorT2(options, mf = new MFO());
-			// load the model
-			ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(options.modelName)));
-			zis.getNextEntry();
-			DataInputStream dis = new DataInputStream(new BufferedInputStream(zis));
-
-			pipe.mf.read(dis);
-			pipe.initValues();
-			pipe.initFeatures();
-
-			params = new ParametersFloat(0);
-			params.read(dis);
-			li = new Long2Int(params.parameters.length);
-			pipe.read(dis);
-
-			dis.close();
-
-			pipe.types = new String[pipe.mf.getFeatureCounter().get(PipeGen.POS)];
-			for (Entry<String, Integer> e : pipe.mf.getFeatureSet().get(PipeGen.POS).entrySet())
-				pipe.types[e.getValue()] = e.getKey();
-
-			DB.println("Loading data finished. ");
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	/**
-	 * Do the training
-	 * 
-	 * @param instanceLengths
-	 * @param options
-	 * @param pipe
-	 * @param params
-	 * @throws IOException
-	 * @throws InterruptedException
-	 * @throws ClassNotFoundException
-	 */
-	@Override
-	public void train(OptionsSuper options, IPipe pipe, ParametersFloat params, Instances is2) {
-
-		InstancesTagger is = (InstancesTagger) is2;
-		String wds[] = MFO.reverse(this.pipe.mf.getFeatureSet().get(PipeGen.WORD));
-
-		int pd[] = new int[this.pipe.types.length];
-		for (int k = 0; k < pd.length; k++)
-			pd[k] = k;
-
-		int del = 0;
-		F2SF f = new F2SF(params.parameters);
-		long vs[] = new long[ExtractorT2._MAX];
-
-		int types = this.pipe.types.length;
-
-		double upd = options.numIters * is.size() + 1;
-
-		for (int i = 0; i < options.numIters; i++) {
-
-			long start = System.currentTimeMillis();
-
-			int numInstances = is.size();
-
-			long last = System.currentTimeMillis();
-			FV pred = new FV(), gold = new FV();
-
-			int correct = 0, count = 0;
-			System.out.print("Iteration " + i + ": ");
-
-			for (int n = 0; n < numInstances; n++) {
-
-				if ((n + 1) % 500 == 0)
-					del = PipeGen.outValueErr(n + 1, (count - correct), (float) correct / (float) count, del, last,
-							upd);
-
-				int length = is.length(n);
-
-				upd--;
-
-				for (int w = 1; w < length; w++) {
-
-					double best = -1000;
-					short bestType = -1;
-
-					int[] lemmas; // = is.lemmas[n];
-					if (options.noLemmas)
-						lemmas = new int[is.length(n)];
-					else
-						lemmas = is.plemmas[n];
-
-					this.pipe.addFeatures(is, n, wds[is.forms[n][w]], w, is.gpos[n], is.forms[n], lemmas, vs);
-
-					for (short t = 0; t < types; t++) {
-
-						// the hypotheses of a part of speech tag
-						long p = t << ExtractorT2.s_type;
-						f.clear();
-
-						// add the features to the vector
-						for (int k1 = 0; vs[k1] != Integer.MIN_VALUE; k1++) {
-							if (vs[k1] > 0)
-								f.add(this.li.l2i(vs[k1] | p));
-						}
-
-						if (f.score > best) {
-							bestType = t;
-							best = f.score;
-						}
-					}
-
-					count++;
-					if (bestType == is.gpos[n][w]) {
-						correct++;
-						continue;
-					}
-
-					pred.clear();
-					for (int k1 = 0; vs[k1] != Integer.MIN_VALUE; k1++)
-						if (vs[k1] > 0)
-							pred.add(this.li.l2i(vs[k1] | bestType << ExtractorT2.s_type));
-
-					gold.clear();
-					for (int k1 = 0; vs[k1] != Integer.MIN_VALUE; k1++)
-						if (vs[k1] > 0)
-							gold.add(this.li.l2i(vs[k1] | is.gpos[n][w] << ExtractorT2.s_type));
-
-					params.update(pred, gold, (float) upd, 1.0F);
-				}
-			}
-
-			long end = System.currentTimeMillis();
-			String info = "time " + (end - start);
-			PipeGen.outValueErr(numInstances, (count - correct), (float) correct / (float) count, del, last, upd, info);
-			System.out.println();
-			del = 0;
-		}
-
-		params.average(options.numIters * is.size());
-
-	}
-
-	/**
-	 * Tag a sentence
-	 * 
-	 * @param options
-	 * @param pipe
-	 * @param params
-	 * @throws IOException
-	 */
-	@Override
-	public void out(OptionsSuper options, IPipe pipe, ParametersFloat params) {
-
-		try {
-
-			long start = System.currentTimeMillis();
-			// change this backe!!!
-			// CONLLReader09 depReader = new CONLLReader09(options.testfile,
-			// CONLLReader09.NO_NORMALIZE);
-			CONLLReader09 depReader = new CONLLReader09(options.testfile);
-
-			CONLLWriter09 depWriter = new CONLLWriter09(options.outfile);
-
-			System.out.print("Processing Sentence: ");
-			pipe.initValues();
-
-			int cnt = 0;
-			int del = 0;
-			while (true) {
-
-				InstancesTagger is = new InstancesTagger();
-				is.init(1, mf);
-				SentenceData09 instance = depReader.getNext(is);
-				if (instance == null || instance.forms == null)
-					break;
-
-				is.fillChars(instance, 0, ExtractorT2._CEND);
-
-				cnt++;
-
-				tag(is, instance);
-
-				SentenceData09 i09 = new SentenceData09(instance);
-				i09.createSemantic(instance);
-				depWriter.write(i09);
-
-				if (cnt % 100 == 0)
-					del = PipeGen.outValue(cnt, del);
-
-			}
-			del = PipeGen.outValue(cnt, del);
-			depWriter.finishWriting();
-
-			// int r[] = new int[14];
-			/*
-			 * for(Entry<Float, Integer> e : map.entrySet()) {
-			 * if(e.getKey()<min)min=e.getKey();
-			 * if(e.getKey()>max)max=e.getKey();
-			 * 
-			 * if(e.getKey()<0.2) r[0]++; else if(e.getKey()<0.5)
-			 * r[1]+=e.getValue(); else if(e.getKey()<0.7) r[2]+=e.getValue();
-			 * else if(e.getKey()<0.8) r[3]+=e.getValue(); else
-			 * if(e.getKey()<0.9) r[4]+=e.getValue(); else if(e.getKey()<1.0)
-			 * r[5]+=e.getValue(); else if(e.getKey()<1.2) r[6]+=e.getValue();
-			 * else if(e.getKey()<1.3) r[7]+=e.getValue(); else
-			 * if(e.getKey()<1.4) r[8]+=e.getValue(); else if(e.getKey()<1.5)
-			 * r[9]+=e.getValue(); else if(e.getKey()<1.9) r[10]+=e.getValue();
-			 * else if(e.getKey()<2.2) r[11]+=e.getValue(); else
-			 * if(e.getKey()<2.5) r[12]+=e.getValue(); else if(e.getKey()>=2.5)
-			 * r[13]+=e.getValue(); }
-			 */
-			// for(int k=0;k<r.length;k++) System.out.println(k+" "+r[k][0]+"
-			// "+((float)r[k][1]/(float)r[k][0])+" good "+r[k][1]);
-			// System.out.println("min "+min+" "+max);
-
-			long end = System.currentTimeMillis();
-			System.out.println(PipeGen.getSecondsPerInstnace(cnt, (end - start)));
-			System.out.println(PipeGen.getUsedTime(end - start));
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	public SentenceData09 tag(SentenceData09 instance) {
-		InstancesTagger is = new InstancesTagger();
-		is.init(1, pipe.mf);
-		new CONLLReader09().insert(is, instance);
-		is.fillChars(instance, 0, ExtractorT2._CEND);
-		tag(is, instance);
-
-		return instance;
-	}
-
-	private void tag(InstancesTagger is, SentenceData09 instance) {
-
-		int length = instance.ppos.length;
-
-		short[] pos = new short[instance.gpos.length];
-
-		float sc[] = new float[instance.ppos.length];
-
-		instance.ppos[0] = IOGenerals.ROOT_POS;
-		pos[0] = (short) pipe.mf.getValue(PipeGen.POS, IOGenerals.ROOT_POS);
-
-		for (int j = 1; j < length; j++) {
-
-			short bestType = (short) pipe.fillFeatureVectorsOne(instance.forms[j], params, j, is, 0, pos, this.li, sc);
-			pos[j] = bestType;
-			instance.ppos[j] = pipe.types[bestType];
-		}
-
-		for (int j = 1; j < length; j++) {
-
-			short bestType = (short) pipe.fillFeatureVectorsOne(instance.forms[j], params, j, is, 0, pos, this.li, sc);
-			instance.ppos[j] = pipe.types[bestType];
-			pos[j] = bestType;
-		}
-	}
-
-	/**
-	 * Tag a single word and return a n-best list of Part-of-Speech tags.
-	 *
-	 * @param is
-	 *            set of sentences
-	 * @param instanceIndex
-	 *            index to the sentence in question
-	 * @param word
-	 *            word to be tagged
-	 * @return n-best list of Part-of-Speech tags
-	 */
-	public ArrayList<POS> tag(InstancesTagger is, int instanceIndex, int word, String wordForm) {
-
-		return pipe.classify(wordForm, params, word, is, instanceIndex, is.pposs[instanceIndex], li);
-
-	}
-
-	public ArrayList<String> tagStrings(InstancesTagger is, int instanceIndex, int word, String wordForm) {
-
-		ArrayList<POS> plist = pipe.classify(wordForm, params, word, is, instanceIndex, is.pposs[instanceIndex], li);
-		String pos[] = MFO.reverse(this.pipe.mf.getFeatureSet().get(PipeGen.POS));
-
-		ArrayList<String> postags = null;
-		for (POS p : plist) {
-			try {
-				postags.add(pos[p.p]);
-			} catch (Exception e) {
-				e.printStackTrace();
-			}
-		}
-		return postags;
-
-	}
-
-	/**
-	 * Tag a sentence
-	 * 
-	 * @param options
-	 * @param pipe
-	 * @param parametersReranker
-	 * @throws IOException
-	 */
-	public String[] tag(String[] words, String[] lemmas) {
-
-		String[] pposs = new String[words.length];
-
-		try {
-			pipe.initValues();
-
-			int length = words.length + 1;
-
-			InstancesTagger is = new InstancesTagger();
-			is.init(1, pipe.mf);
-			is.createInstance09(length);
-
-			SentenceData09 instance = new SentenceData09();
-			instance.forms = new String[length];
-			instance.forms[0] = IOGenerals.ROOT;
-
-			instance.plemmas = new String[length];
-			instance.plemmas[0] = IOGenerals.ROOT_LEMMA;
-
-			for (int j = 0; j < words.length; j++) {
-				instance.forms[j + 1] = words[j];
-				instance.plemmas[j + 1] = lemmas[j];
-			}
-
-			for (int j = 0; j < length; j++) {
-				is.setForm(0, j, instance.forms[j]);
-				is.setLemma(0, j, instance.plemmas[j]);
-			}
-
-			instance.ppos = new String[length];
-
-			is.fillChars(instance, 0, ExtractorT2._CEND);
-
-			this.tag(is, instance);
-
-			for (int j = 0; j < words.length; j++) {
-				pposs[j] = instance.ppos[j + 1];
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		return pposs;
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.tools.Tool#apply(is2.data.SentenceData09)
-	 */
-	@Override
-	public SentenceData09 apply(SentenceData09 snt) {
-
-		SentenceData09 it = new SentenceData09();
-		it.createWithRoot(snt);
-		it = tag(it);
-		SentenceData09 i09 = new SentenceData09(it);
-		i09.createSemantic(it);
-		return i09;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.tools.Train#writeModel(is2.util.OptionsSuper, is2.mtag2.Pipe,
-	 * is2.data.ParametersFloat)
-	 */
-	@Override
-	public void writeModel(OptionsSuper options, IPipe pipe, is2.data.ParametersFloat params) {
-		try {
-			ZipOutputStream zos = new ZipOutputStream(
-					new BufferedOutputStream(new FileOutputStream(options.modelName)));
-			zos.putNextEntry(new ZipEntry("data"));
-			DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(zos));
-
-			this.pipe.mf.writeData(dos);
-
-			DB.println("number of parameters " + params.parameters.length);
-			dos.flush();
-
-			params.write(dos);
-			pipe.write(dos);
-			dos.flush();
-			dos.close();
-
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/tag/package.html b/dependencyParser/mate-tools/src/is2/tag/package.html
deleted file mode 100644
index 469fdf6..0000000
--- a/dependencyParser/mate-tools/src/is2/tag/package.html
+++ /dev/null
@@ -1,4 +0,0 @@
-Package info
-<br><br>
-This parser includes a tagger into the dependency parser
-<br>
\ No newline at end of file
diff --git a/dependencyParser/mate-tools/src/is2/tools/IPipe.java b/dependencyParser/mate-tools/src/is2/tools/IPipe.java
deleted file mode 100644
index b6e0e02..0000000
--- a/dependencyParser/mate-tools/src/is2/tools/IPipe.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- *
- */
-package is2.tools;
-
-import java.io.DataOutputStream;
-
-import is2.data.Instances;
-
-/**
- * @author Dr. Bernd Bohnet, 25.12.2010
- *
- *
- */
-public interface IPipe {
-
-	public abstract Instances createInstances(String file);
-
-	public abstract void initValues();
-
-	/**
-	 * Initialize the features types.
-	 */
-	public abstract void initFeatures();
-
-	public abstract void write(DataOutputStream dos);
-
-}
\ No newline at end of file
diff --git a/dependencyParser/mate-tools/src/is2/tools/Retrainable.java b/dependencyParser/mate-tools/src/is2/tools/Retrainable.java
deleted file mode 100644
index 86fbfcc..0000000
--- a/dependencyParser/mate-tools/src/is2/tools/Retrainable.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package is2.tools;
-
-import is2.data.SentenceData09;
-
-/**
- * Provides Methods for the retraining
- * 
- * @author bohnetbd
- *
- */
-public interface Retrainable {
-
-	/**
-	 * Retrains with a update factor (upd). The retraining stops when the model
-	 * was successful adapted or it gave up after the maximal iterations.
-	 *
-	 * @param sentence
-	 *            the data container of the new example.
-	 * @param upd
-	 *            the update factor, e.g. 0.01
-	 * @param iterations
-	 *            maximal number of iterations that are tried to adapt the
-	 *            system.
-	 * @return success = true -- else false
-	 */
-	public boolean retrain(SentenceData09 sentence, float upd, int iterations);
-
-	boolean retrain(SentenceData09 sentence, float upd, int iterations, boolean print);
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/tools/Tool.java b/dependencyParser/mate-tools/src/is2/tools/Tool.java
deleted file mode 100644
index 41ead53..0000000
--- a/dependencyParser/mate-tools/src/is2/tools/Tool.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- *
- */
-package is2.tools;
-
-import is2.data.SentenceData09;
-
-/**
- * @author Bernd Bohnet, 27.10.2010
- *
- *         Interface to all tools
- */
-public interface Tool {
-
-	/**
-	 * Uses the tool and applies it on the input sentence. The input is altered
-	 * and has to include a root (token).
-	 * 
-	 * @param i
-	 *            the input sentence
-	 * @return The result of the performance without the root.
-	 */
-	SentenceData09 apply(SentenceData09 snt09);
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/tools/ToolIO.java b/dependencyParser/mate-tools/src/is2/tools/ToolIO.java
deleted file mode 100644
index d7b67fe..0000000
--- a/dependencyParser/mate-tools/src/is2/tools/ToolIO.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- *
- */
-package is2.tools;
-
-/**
- * @author Bernd Bohnet, 27.10.2010
- *
- *         Interface to all tools
- */
-public interface ToolIO {
-
-	void readModel();
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/tools/Train.java b/dependencyParser/mate-tools/src/is2/tools/Train.java
deleted file mode 100644
index 31a7ad8..0000000
--- a/dependencyParser/mate-tools/src/is2/tools/Train.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- *
- */
-package is2.tools;
-
-import is2.data.Instances;
-import is2.data.ParametersFloat;
-import is2.util.OptionsSuper;
-
-/**
- * @author Dr. Bernd Bohnet, 24.12.2010
- *
- *
- */
-public interface Train {
-
-	public abstract void writeModel(OptionsSuper options, IPipe pipe, ParametersFloat params);
-
-	public abstract void readModel(OptionsSuper options);
-
-	public abstract void train(OptionsSuper options, IPipe pipe, ParametersFloat params, Instances is);
-
-	public abstract void out(OptionsSuper options, IPipe pipe, ParametersFloat params);
-
-}
\ No newline at end of file
diff --git a/dependencyParser/mate-tools/src/is2/util/Convert.java b/dependencyParser/mate-tools/src/is2/util/Convert.java
deleted file mode 100644
index b9c820f..0000000
--- a/dependencyParser/mate-tools/src/is2/util/Convert.java
+++ /dev/null
@@ -1,453 +0,0 @@
-/**
- *
- */
-package is2.util;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.nio.charset.Charset;
-import java.util.ArrayList;
-
-import is2.data.SentenceData09;
-import is2.io.CONLLReader06;
-import is2.io.CONLLReader08;
-import is2.io.CONLLReader09;
-import is2.io.CONLLWriter06;
-import is2.io.CONLLWriter09;
-
-/**
- * @author Dr. Bernd Bohnet, 01.03.2010
- *
- *
- */
-public class Convert {
-
-	public static void main(String args[]) throws Exception {
-
-		if (args.length < 2) {
-
-			System.out.println("Usage");
-			System.out.println(" java is2.util.Convert <in> <out> [-w06|-w0809|-yue]  [-wordsonly]");
-
-		}
-
-		int todo = 9;
-		boolean wordsOnly = false;
-		for (String a : args) {
-			if (a != null && a.equals("-w06"))
-				todo = 6;
-			else if (a != null && a.equals("-w0809"))
-				todo = 89;
-			else if (a != null && a.equals("-yue"))
-				todo = 99;
-			else if (a != null && a.equals("-utf8"))
-				todo = 8;
-
-			if (a != null && a.equals("-wordsonly"))
-				wordsOnly = true;
-
-		}
-
-		if (todo == 9)
-			convert(args[0], args[1]);
-		else if (todo == 6)
-			convert0906(args[0], args[1]);
-		else if (todo == 8)
-			convert8(args[0], args[1], args[2]);
-		else if (todo == 89)
-			convert0809(args[0], args[1]);
-		else if (todo == 99) {
-			convertChnYue(args[0], args[1], wordsOnly);
-		}
-
-	}
-
-	private static void convert8(String infile, String outfile, String format) {
-		try {
-
-			System.out.println("availableCharsets: " + Charset.availableCharsets());
-
-			BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(infile), format));
-			BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outfile), "UTF8"));
-			;
-			int ch;
-
-			int count = 0, wcount = 0;
-			;
-			while ((ch = in.read()) > -1) {
-				count++;
-
-				if (Character.isDefined(ch)) {
-
-					out.write(ch);
-					wcount++;
-				}
-			}
-			in.close();
-			out.close();
-			System.out.println("read " + count + " chars and wrote " + wcount + " utf8 chars");
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-	}
-
-	public static void convert(String source, String target) throws Exception {
-
-		CONLLReader06 reader = new CONLLReader06(source);
-		CONLLWriter09 writer = new CONLLWriter09(target);
-
-		int str = 0;
-		while (true) {
-			SentenceData09 i = reader.getNext();
-			str++;
-			if (i == null)
-				break;
-
-			String[] formsNoRoot = new String[i.length() - 1];
-			String[] posNoRoot = new String[formsNoRoot.length];
-			String[] lemmas = new String[formsNoRoot.length];
-
-			String[] org_lemmas = new String[formsNoRoot.length];
-
-			String[] of = new String[formsNoRoot.length];
-			String[] pf = new String[formsNoRoot.length];
-
-			String[] pposs = new String[formsNoRoot.length];
-			String[] labels = new String[formsNoRoot.length];
-			String[] fillp = new String[formsNoRoot.length];
-
-			int[] heads = new int[formsNoRoot.length];
-
-			for (int j = 0; j < formsNoRoot.length; j++) {
-				formsNoRoot[j] = i.forms[j + 1];
-				if (formsNoRoot[j].length() == 0 || formsNoRoot[j].equals("")) {
-					System.out.println("error forms " + str);
-					// System.exit(0);
-					formsNoRoot[j] = " ";
-				}
-				posNoRoot[j] = i.gpos[j + 1];
-				if (posNoRoot[j].length() == 0 || posNoRoot[j].equals(" ")) {
-					System.out.println("error pos " + str);
-					// System.exit(0);
-				}
-				pposs[j] = i.ppos[j + 1];
-				if (pposs[j].length() == 0 || pposs[j].equals(" ")) {
-					System.out.println("error pos " + str);
-					// System.exit(0);
-				}
-
-				labels[j] = i.labels[j + 1];
-				if (labels[j].length() == 0 || labels[j].equals(" ")) {
-					System.out.println("error lab " + str);
-					// System.exit(0);
-				}
-				heads[j] = i.heads[j + 1];
-				if (heads[j] > posNoRoot.length) {
-					System.out.println("head out of range " + heads[j] + " " + heads.length + " " + str);
-					heads[j] = posNoRoot.length;
-				}
-
-				lemmas[j] = i.plemmas[j + 1];
-				if (lemmas[j].length() == 0 || lemmas[j].equals(" ")) {
-					System.out.println("error lab " + str);
-					// System.exit(0);
-				}
-				org_lemmas[j] = i.lemmas[j + 1];
-				if (org_lemmas[j].length() == 0 || org_lemmas[j].equals(" ")) {
-					System.out.println("error lab " + str);
-					// System.exit(0);
-				}
-				of[j] = i.ofeats[j + 1];
-				pf[j] = i.pfeats[j + 1];
-				if (str == 6099) {
-					// System.out.println(formsNoRoot[j]+"\t"+posNoRoot[j]+"\t"+pposs[j]+"\t"+labels[j]+"\t"+heads[j]);
-				}
-
-				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
-			}
-
-			SentenceData09 i09 = new SentenceData09(formsNoRoot, formsNoRoot, formsNoRoot, pposs, pposs, labels, heads,
-					fillp, of, pf);
-
-			// public SentenceData09(String[] forms, String[] lemmas, String[]
-			// olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads,
-			// String[] fillpred) {
-			// SentenceData09
-			// SentenceData09 i2 = new SentenceData09(i.forms,
-			// i.lemmas,i.org_lemmas,);
-
-			writer.write(i09);
-
-		}
-		writer.finishWriting();
-
-	}
-
-	public static void convertChnYue(String source, String target, boolean wordsOnly) throws Exception {
-
-		BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(source), "UTF-8"), 32768);
-
-		CONLLWriter09 writer = new CONLLWriter09(target);
-
-		int str = 0;
-		while (true) {
-
-			ArrayList<String[]> lines = new ArrayList<String[]>();
-
-			String line;
-			while ((line = reader.readLine()) != null) {
-
-				if (line.length() < 2)
-					break;
-				String split[] = line.split("\t");
-				lines.add(split);
-			}
-			if (line == null)
-				break;
-
-			str++;
-
-			String[] formsNoRoot = new String[lines.size()];
-			String[] posNoRoot = new String[formsNoRoot.length];
-			String[] lemmas = new String[formsNoRoot.length];
-
-			String[] org_lemmas = new String[formsNoRoot.length];
-
-			String[] of = new String[formsNoRoot.length];
-			String[] pf = new String[formsNoRoot.length];
-
-			String[] pposs = new String[formsNoRoot.length];
-			String[] labels = new String[formsNoRoot.length];
-			String[] fillp = new String[formsNoRoot.length];
-
-			int[] heads = new int[formsNoRoot.length];
-
-			for (int j = 0; j < formsNoRoot.length; j++) {
-				formsNoRoot[j] = lines.get(j)[0];
-				if (formsNoRoot[j].length() == 0 || formsNoRoot[j].equals("")) {
-					System.out.println("error forms " + str);
-					// System.exit(0);
-					formsNoRoot[j] = "_";
-				}
-
-				posNoRoot[j] = lines.get(j)[1];
-				if (posNoRoot[j].length() == 0 || posNoRoot[j].equals(" ")) {
-					System.out.println("error pos " + str);
-					// System.exit(0);
-				}
-				pposs[j] = "_";
-
-				labels[j] = lines.get(j)[3];
-				if (labels[j].length() == 0 || labels[j].equals(" ")) {
-					System.out.println("error lab " + str);
-					labels[j] = "_";
-					// System.exit(0);
-				}
-				heads[j] = Integer.parseInt(lines.get(j)[2]) + 1;
-				if (heads[j] > posNoRoot.length) {
-					System.out.println("head out of range " + heads[j] + " " + heads.length + " " + str);
-					heads[j] = posNoRoot.length;
-				}
-
-				// 0 is root and not -1
-				if (heads[j] == -1)
-					heads[j] = 0;
-
-				lemmas[j] = "_";
-
-				org_lemmas[j] = "_";
-
-				of[j] = "_";
-				pf[j] = "_";
-
-				if (wordsOnly) {
-					posNoRoot[j] = "_";
-					heads[j] = 0;
-					labels[j] = "_";
-				}
-
-				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
-			}
-
-			SentenceData09 i09 = new SentenceData09(formsNoRoot, lemmas, org_lemmas, posNoRoot, posNoRoot, labels,
-					heads, fillp, of, pf);
-
-			// public SentenceData09(String[] forms, String[] lemmas, String[]
-			// olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads,
-			// String[] fillpred) {
-			// SentenceData09
-			// SentenceData09 i2 = new SentenceData09(i.forms,
-			// i.lemmas,i.org_lemmas,);
-
-			writer.write(i09);
-
-		}
-		reader.close();
-		writer.finishWriting();
-
-	}
-
-	/**
-	 * Convert the 0
-	 * 
-	 * @param source
-	 * @param target
-	 * @throws Exception
-	 */
-	public static void convert0809(String source, String target) throws Exception {
-
-		CONLLReader08 reader = new CONLLReader08(source);
-		CONLLWriter09 writer = new CONLLWriter09(target);
-
-		int str = 0;
-		while (true) {
-			SentenceData09 i = reader.getNext();
-			str++;
-			if (i == null)
-				break;
-
-			String[] formsNoRoot = new String[i.length() - 1];
-			String[] posNoRoot = new String[formsNoRoot.length];
-			String[] lemmas = new String[formsNoRoot.length];
-
-			String[] org_lemmas = new String[formsNoRoot.length];
-
-			String[] of = new String[formsNoRoot.length];
-			String[] pf = new String[formsNoRoot.length];
-
-			String[] pposs = new String[formsNoRoot.length];
-			String[] labels = new String[formsNoRoot.length];
-			String[] fillp = new String[formsNoRoot.length];
-
-			int[] heads = new int[formsNoRoot.length];
-
-			for (int j = 0; j < formsNoRoot.length; j++) {
-				formsNoRoot[j] = i.forms[j + 1];
-				if (formsNoRoot[j].length() == 0 || formsNoRoot[j].equals("")) {
-					System.out.println("error forms " + str);
-					// System.exit(0);
-					formsNoRoot[j] = " ";
-				}
-				posNoRoot[j] = i.gpos[j + 1];
-				if (posNoRoot[j].length() == 0 || posNoRoot[j].equals(" ")) {
-					System.out.println("error pos " + str);
-					// System.exit(0);
-				}
-				pposs[j] = i.ppos[j + 1];
-				if (pposs[j].length() == 0 || pposs[j].equals(" ")) {
-					System.out.println("error pos " + str);
-					// System.exit(0);
-				}
-
-				labels[j] = i.labels[j + 1];
-				if (labels[j].length() == 0 || labels[j].equals(" ")) {
-					System.out.println("error lab " + str);
-					// System.exit(0);
-				}
-				heads[j] = i.heads[j + 1];
-				if (heads[j] > posNoRoot.length) {
-					System.out.println("head out of range " + heads[j] + " " + heads.length + " " + str);
-					heads[j] = posNoRoot.length;
-				}
-
-				lemmas[j] = i.plemmas[j + 1];
-				if (lemmas[j].length() == 0 || lemmas[j].equals(" ")) {
-					System.out.println("error lab " + str);
-					// System.exit(0);
-				}
-				org_lemmas[j] = i.lemmas[j + 1];
-				// if (org_lemmas[j].length()==0 ||org_lemmas[j].equals(" ")) {
-				// System.out.println("error lab "+str);
-				// // System.exit(0);
-				// }
-				// of[j] = i.ofeats[j+1];
-				// pf[j] = i.pfeats[j+1];
-				if (str == 6099) {
-					// System.out.println(formsNoRoot[j]+"\t"+posNoRoot[j]+"\t"+pposs[j]+"\t"+labels[j]+"\t"+heads[j]);
-				}
-
-				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
-			}
-
-			SentenceData09 i09 = new SentenceData09(formsNoRoot, org_lemmas, lemmas, pposs, pposs, labels, heads, fillp,
-					of, pf);
-
-			// public SentenceData09(String[] forms, String[] lemmas, String[]
-			// olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads,
-			// String[] fillpred) {
-			// SentenceData09
-			// SentenceData09 i2 = new SentenceData09(i.forms,
-			// i.lemmas,i.org_lemmas,);
-
-			writer.write(i09);
-
-		}
-		writer.finishWriting();
-
-	}
-
-	public static void convert0906(String source, String target) throws Exception {
-
-		CONLLReader09 reader = new CONLLReader09(source);
-		CONLLWriter06 writer = new CONLLWriter06(target);
-
-		while (true) {
-			SentenceData09 i = reader.getNext();
-
-			if (i == null)
-				break;
-
-			String[] formsNoRoot = new String[i.length() - 1];
-			String[] posNoRoot = new String[formsNoRoot.length];
-			String[] lemmas = new String[formsNoRoot.length];
-
-			String[] org_lemmas = new String[formsNoRoot.length];
-
-			String[] of = new String[formsNoRoot.length];
-			String[] pf = new String[formsNoRoot.length];
-
-			String[] pposs = new String[formsNoRoot.length];
-			String[] labels = new String[formsNoRoot.length];
-			String[] fillp = new String[formsNoRoot.length];
-
-			int[] heads = new int[formsNoRoot.length];
-
-			for (int j = 0; j < formsNoRoot.length; j++) {
-				formsNoRoot[j] = i.forms[j + 1];
-				posNoRoot[j] = i.gpos[j + 1];
-				pposs[j] = i.gpos[j + 1];
-
-				labels[j] = i.labels[j + 1];
-				heads[j] = i.heads[j + 1];
-				lemmas[j] = i.plemmas[j + 1];
-
-				org_lemmas[j] = i.lemmas[j + 1];
-				of[j] = i.ofeats[j + 1];
-				pf[j] = i.pfeats[j + 1];
-
-				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
-			}
-
-			SentenceData09 i09 = new SentenceData09(formsNoRoot, lemmas, org_lemmas, posNoRoot, pposs, labels, heads,
-					fillp, of, pf);
-
-			// public SentenceData09(String[] forms, String[] lemmas, String[]
-			// olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads,
-			// String[] fillpred) {
-			// SentenceData09
-			// SentenceData09 i2 = new SentenceData09(i.forms,
-			// i.lemmas,i.org_lemmas,);
-
-			writer.write(i09);
-
-		}
-		writer.finishWriting();
-
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/util/Convert0409.java b/dependencyParser/mate-tools/src/is2/util/Convert0409.java
deleted file mode 100644
index b735ad8..0000000
--- a/dependencyParser/mate-tools/src/is2/util/Convert0409.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/**
- *
- */
-package is2.util;
-
-import is2.data.SentenceData09;
-import is2.io.CONLLReader04;
-import is2.io.CONLLReader09;
-import is2.io.CONLLWriter06;
-import is2.io.CONLLWriter09;
-
-/**
- * @author Dr. Bernd Bohnet, 01.03.2010
- *
- *
- */
-public class Convert0409 {
-
-	public static void main(String args[]) throws Exception {
-
-		convert(args[0], args[1]);
-
-	}
-
-	public static void convert(String source, String target) throws Exception {
-
-		CONLLReader04 reader = new CONLLReader04(source);
-		CONLLWriter09 writer = new CONLLWriter09(target);
-
-		int str = 0;
-		while (true) {
-			SentenceData09 i = reader.getNext();
-			str++;
-			if (i == null)
-				break;
-
-			String[] formsNoRoot = new String[i.length() - 1];
-			String[] posNoRoot = new String[formsNoRoot.length];
-			String[] lemmas = new String[formsNoRoot.length];
-
-			String[] org_lemmas = new String[formsNoRoot.length];
-
-			String[] of = new String[formsNoRoot.length];
-			String[] pf = new String[formsNoRoot.length];
-
-			String[] pposs = new String[formsNoRoot.length];
-			String[] labels = new String[formsNoRoot.length];
-			String[] fillp = new String[formsNoRoot.length];
-
-			int[] heads = new int[formsNoRoot.length];
-
-			for (int j = 0; j < formsNoRoot.length; j++) {
-				formsNoRoot[j] = i.forms[j + 1];
-				if (formsNoRoot[j].length() == 0 || formsNoRoot[j].equals("")) {
-					System.out.println("error forms " + str);
-					// System.exit(0);
-					formsNoRoot[j] = " ";
-				}
-				posNoRoot[j] = i.gpos[j + 1];
-				if (posNoRoot[j].length() == 0 || posNoRoot[j].equals(" ")) {
-					System.out.println("error pos " + str);
-					// System.exit(0);
-				}
-				pposs[j] = i.ppos[j + 1];
-				if (pposs[j].length() == 0 || pposs[j].equals(" ")) {
-					System.out.println("error pos " + str);
-					// System.exit(0);
-				}
-
-				labels[j] = i.labels[j + 1];
-				if (labels[j].length() == 0 || labels[j].equals(" ")) {
-					System.out.println("error lab " + str);
-					// System.exit(0);
-				}
-				heads[j] = i.heads[j + 1];
-				if (heads[j] > posNoRoot.length) {
-					System.out.println("head out of range " + heads[j] + " " + heads.length + " " + str);
-					heads[j] = posNoRoot.length;
-				}
-
-				lemmas[j] = i.plemmas[j + 1];
-				if (lemmas[j].length() == 0 || lemmas[j].equals(" ")) {
-					System.out.println("error lab " + str);
-					// System.exit(0);
-				}
-				org_lemmas[j] = i.lemmas[j + 1];
-				if (org_lemmas[j].length() == 0 || org_lemmas[j].equals(" ")) {
-					System.out.println("error lab " + str);
-					// System.exit(0);
-				}
-				of[j] = i.ofeats[j + 1];
-				pf[j] = i.pfeats[j + 1];
-				if (str == 6099) {
-					// System.out.println(formsNoRoot[j]+"\t"+posNoRoot[j]+"\t"+pposs[j]+"\t"+labels[j]+"\t"+heads[j]);
-				}
-
-				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
-			}
-
-			SentenceData09 i09 = new SentenceData09(formsNoRoot, lemmas, org_lemmas, pposs, pposs, labels, heads, fillp,
-					of, pf);
-
-			// public SentenceData09(String[] forms, String[] lemmas, String[]
-			// olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads,
-			// String[] fillpred) {
-			// SentenceData09
-			// SentenceData09 i2 = new SentenceData09(i.forms,
-			// i.lemmas,i.org_lemmas,);
-
-			writer.write(i09);
-
-		}
-		writer.finishWriting();
-
-	}
-
-	public static void convert0906(String source, String target) throws Exception {
-
-		CONLLReader09 reader = new CONLLReader09(source);
-		CONLLWriter06 writer = new CONLLWriter06(target);
-
-		while (true) {
-			SentenceData09 i = reader.getNext();
-
-			if (i == null)
-				break;
-
-			String[] formsNoRoot = new String[i.length() - 1];
-			String[] posNoRoot = new String[formsNoRoot.length];
-			String[] lemmas = new String[formsNoRoot.length];
-
-			String[] org_lemmas = new String[formsNoRoot.length];
-
-			String[] of = new String[formsNoRoot.length];
-			String[] pf = new String[formsNoRoot.length];
-
-			String[] pposs = new String[formsNoRoot.length];
-			String[] labels = new String[formsNoRoot.length];
-			String[] fillp = new String[formsNoRoot.length];
-
-			int[] heads = new int[formsNoRoot.length];
-
-			for (int j = 0; j < formsNoRoot.length; j++) {
-				formsNoRoot[j] = i.forms[j + 1];
-				posNoRoot[j] = i.gpos[j + 1];
-				pposs[j] = i.ppos[j + 1];
-
-				labels[j] = i.labels[j + 1];
-				heads[j] = i.heads[j + 1];
-				lemmas[j] = i.plemmas[j + 1];
-
-				org_lemmas[j] = i.lemmas[j + 1];
-				of[j] = i.ofeats[j + 1];
-				pf[j] = i.pfeats[j + 1];
-
-				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
-			}
-
-			SentenceData09 i09 = new SentenceData09(formsNoRoot, lemmas, org_lemmas, posNoRoot, pposs, labels, heads,
-					fillp, of, pf);
-
-			// public SentenceData09(String[] forms, String[] lemmas, String[]
-			// olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads,
-			// String[] fillpred) {
-			// SentenceData09
-			// SentenceData09 i2 = new SentenceData09(i.forms,
-			// i.lemmas,i.org_lemmas,);
-
-			writer.write(i09);
-
-		}
-		writer.finishWriting();
-
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/util/ConvertADJ.java b/dependencyParser/mate-tools/src/is2/util/ConvertADJ.java
deleted file mode 100644
index e6ca6c1..0000000
--- a/dependencyParser/mate-tools/src/is2/util/ConvertADJ.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- *
- */
-package is2.util;
-
-import is2.data.SentenceData09;
-import is2.io.CONLLReader09;
-import is2.io.CONLLWriter06;
-
-/**
- * @author Dr. Bernd Bohnet, 01.03.2010
- *
- *
- */
-public class ConvertADJ {
-
-	public static void main(String args[]) throws Exception {
-
-		convert(args[0], args[1]);
-
-	}
-
-	public static void convert(String source, String target) throws Exception {
-
-		CONLLReader09 reader = new CONLLReader09(source);
-		// CONLLWriter09 writer = new CONLLWriter09(target);
-		int adj = 0, argadj = 0;
-		int rb = 0, argrb = 0;
-		while (true) {
-			SentenceData09 i = reader.getNext();
-			if (i == null)
-				break;
-
-			for (int k = 0; k < i.length(); k++) {
-
-				if (i.gpos[k].startsWith("JJ"))
-					adj++;
-				if (i.gpos[k].startsWith("RB"))
-					rb++;
-
-				if (i.argposition != null) {
-					for (int[] element : i.argposition) {
-						if (element != null)
-							for (int a = 0; a < element.length; a++) {
-								if (element[a] == k && i.gpos[k].startsWith("JJ"))
-									argadj++;
-								if (element[a] == k && i.gpos[k].startsWith("RB"))
-									argrb++;
-							}
-
-					}
-				}
-				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
-			}
-
-		}
-		System.out.println("adj " + adj + " " + argadj);
-		System.out.println("rb " + rb + " " + argrb);
-
-	}
-
-	public static void convert0906(String source, String target) throws Exception {
-
-		CONLLReader09 reader = new CONLLReader09(source);
-		CONLLWriter06 writer = new CONLLWriter06(target);
-
-		while (true) {
-			SentenceData09 i = reader.getNext();
-
-			if (i == null)
-				break;
-
-			String[] formsNoRoot = new String[i.length() - 1];
-			String[] posNoRoot = new String[formsNoRoot.length];
-			String[] lemmas = new String[formsNoRoot.length];
-
-			String[] org_lemmas = new String[formsNoRoot.length];
-
-			String[] of = new String[formsNoRoot.length];
-			String[] pf = new String[formsNoRoot.length];
-
-			String[] pposs = new String[formsNoRoot.length];
-			String[] labels = new String[formsNoRoot.length];
-			String[] fillp = new String[formsNoRoot.length];
-
-			int[] heads = new int[formsNoRoot.length];
-
-			for (int j = 0; j < formsNoRoot.length; j++) {
-				formsNoRoot[j] = i.forms[j + 1];
-				posNoRoot[j] = i.gpos[j + 1];
-				pposs[j] = i.ppos[j + 1];
-
-				labels[j] = i.labels[j + 1];
-				heads[j] = i.heads[j + 1];
-				lemmas[j] = i.plemmas[j + 1];
-
-				org_lemmas[j] = i.lemmas[j + 1];
-				of[j] = i.ofeats[j + 1];
-				pf[j] = i.pfeats[j + 1];
-
-				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
-			}
-
-			SentenceData09 i09 = new SentenceData09(formsNoRoot, lemmas, org_lemmas, posNoRoot, pposs, labels, heads,
-					fillp, of, pf);
-
-			// public SentenceData09(String[] forms, String[] lemmas, String[]
-			// olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads,
-			// String[] fillpred) {
-			// SentenceData09
-			// SentenceData09 i2 = new SentenceData09(i.forms,
-			// i.lemmas,i.org_lemmas,);
-
-			writer.write(i09);
-
-		}
-		writer.finishWriting();
-
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/util/ConvertLowerCase0909.java b/dependencyParser/mate-tools/src/is2/util/ConvertLowerCase0909.java
deleted file mode 100644
index e5842d6..0000000
--- a/dependencyParser/mate-tools/src/is2/util/ConvertLowerCase0909.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- *
- */
-package is2.util;
-
-import is2.data.SentenceData09;
-import is2.io.CONLLReader09;
-import is2.io.CONLLWriter09;
-
-/**
- * @author Dr. Bernd Bohnet, 01.03.2010
- *
- *
- */
-public class ConvertLowerCase0909 {
-
-	public static void main(String args[]) throws Exception {
-
-		CONLLReader09 reader = new CONLLReader09(args[0]);
-		CONLLWriter09 writer = new CONLLWriter09(args[1]);
-
-		while (true) {
-			SentenceData09 i = reader.getNext();
-			if (i == null)
-				break;
-
-			SentenceData09 i09 = new SentenceData09(i);
-			i09.createSemantic(i);
-
-			for (int k = 0; k < i09.length(); k++) {
-				i09.lemmas[k] = i09.lemmas[k].toLowerCase();
-				i09.plemmas[k] = i09.plemmas[k].toLowerCase();
-
-			}
-
-			writer.write(i09);
-
-		}
-		writer.finishWriting();
-
-	}
-
-	public static void convert(String source, String target) throws Exception {
-
-		CONLLReader09 reader = new CONLLReader09(source);
-		CONLLWriter09 writer = new CONLLWriter09(target);
-
-		while (true) {
-			SentenceData09 i = reader.getNext();
-			if (i == null)
-				break;
-
-			SentenceData09 i09 = new SentenceData09(i);
-			i09.createSemantic(i);
-
-			for (int k = 0; k < i09.length(); k++) {
-				i09.lemmas[k] = i09.lemmas[k].toLowerCase();
-				i09.plemmas[k] = i09.plemmas[k].toLowerCase();
-
-			}
-
-			// public SentenceData09(String[] forms, String[] lemmas, String[]
-			// olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads,
-			// String[] fillpred) {
-			// SentenceData09
-			// SentenceData09 i2 = new SentenceData09(i.forms,
-			// i.lemmas,i.org_lemmas,);
-
-			writer.write(i09);
-
-		}
-		writer.finishWriting();
-
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/util/ConvertTiger2CoNLL.java b/dependencyParser/mate-tools/src/is2/util/ConvertTiger2CoNLL.java
deleted file mode 100644
index e650737..0000000
--- a/dependencyParser/mate-tools/src/is2/util/ConvertTiger2CoNLL.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/**
- *
- */
-package is2.util;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.StringTokenizer;
-
-/**
- * @author Dr. Bernd Bohnet, 17.01.2010
- *
- *         This class removes all information from a conll 2009 file except of
- *         columns 1 and 2 that contain the word id and the word form.
- */
-public class ConvertTiger2CoNLL {
-
-	public static void main(String[] args) throws IOException {
-
-		OptionsSuper options = new OptionsSuper(args, null);
-
-		if (options.trainfile != null) {
-			System.err.println(
-					"included sentences " + clean(options.trainfile, options.outfile, options.start, options.count));
-		} else
-			System.err.println("Please proivde the file name -train <file-name>");
-
-	}
-
-	/**
-	 * @param trainfile
-	 * @throws IOException
-	 */
-	private static int clean(String file, String outFile, int start, int numberOfSentences) throws IOException {
-
-		System.err.println("writting to " + outFile);
-		System.err.println("start " + start + " to " + (start + numberOfSentences));
-		int state = 0;
-
-		BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"), 32768);
-		BufferedWriter writer = new BufferedWriter(
-				new java.io.OutputStreamWriter(new java.io.FileOutputStream(outFile), "UTF-8"), 32768);
-		String l = null;
-		try {
-
-			int id = 1, snt = 0, cnt = 0;
-
-			while ((l = reader.readLine()) != null) {
-
-				if (l.startsWith("#BOS")) {
-					state = 1; // BOS
-					id = 1;
-					snt++;
-					continue;
-				}
-				if (l.startsWith("#EOS") && state == 1) {
-					state = 2; // BOS
-					cnt++;
-
-					writer.newLine();
-				}
-
-				if (start > snt || (start + numberOfSentences) <= snt) {
-					state = 3;
-				}
-
-				if (l.startsWith("#5") || l.startsWith("#6") || l.startsWith("#7"))
-					continue;
-				if ((start + numberOfSentences) <= snt)
-					break;
-
-				if (state == 3)
-					continue;
-
-				if (state == 1) {
-
-					l = l.replace("\t\t", "\t");
-					l = l.replace("\t\t", "\t");
-
-					StringTokenizer t = new StringTokenizer(l, "\t");
-					int count = 0;
-
-					writer.write("" + id + "\t");
-
-					while (t.hasMoreTokens()) {
-						if (count == 0) {
-							writer.write(t.nextToken() + "\t");
-						} else if (count == 1) {
-							writer.write(t.nextToken() + "\t_\t");
-						} else if (count == 2) {
-							writer.write(t.nextToken() + "\t_\t");
-						} else if (count == 3) {
-							writer.write(t.nextToken().replace(".", "|") + "\t_\t");
-						} else {
-							t.nextToken();
-						}
-						count++;
-					}
-					writer.write("_\t_\t_\t_\t_\t_\t_\t_\t_");
-					writer.newLine();
-				}
-				id++;
-			}
-			writer.flush();
-			writer.close();
-			reader.close();
-
-			return cnt;
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-
-		return -1;
-
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/util/DB.java b/dependencyParser/mate-tools/src/is2/util/DB.java
deleted file mode 100755
index 30fd231..0000000
--- a/dependencyParser/mate-tools/src/is2/util/DB.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package is2.util;
-
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-
-public class DB {
-
-	private static final String ARROW = " -> ";
-	private static final String LEER = "                            ";
-	private static final String BIG = "                                                                                    ";
-
-	private static boolean debug = true;
-
-	final static public void println(Object err) {
-
-		if (!debug)
-			return;
-
-		StackTraceElement[] ste = new Exception().getStackTrace();
-
-		StringBuffer msg = new StringBuffer();
-		msg.append((getDate().append(LEER).substring(0, 10)));
-		msg.append(' ');
-		msg.append(ste[1].getClassName() + " " + ste[1].getLineNumber());
-		msg.append(':');
-		msg.append(ste[1].getMethodName());
-		msg.append(ARROW);
-
-		int l = 55 - msg.length();
-		if (l < 0)
-			l = 0;
-		msg.append(BIG.substring(0, l));
-
-		// if ((m_depth >= 0) && (m_depth < (BIG.length()) )) {
-		// vDebugMessage.append(BIG.substring(0, m_depth*2));
-		// }
-
-		msg.append(err);
-
-		System.err.println(msg);
-
-	}
-
-	final static public void prints(Object err) {
-
-		if (!debug)
-			return;
-		System.err.println(err);
-
-	}
-
-	final private static StringBuffer getDate() {
-		// if (Preferences.s_debug <= BDebug.FAIL) return s_sb;
-
-		GregorianCalendar s_cal = new GregorianCalendar();
-		StringBuffer sb = new StringBuffer();
-		// sb.append(s_cal.get(Calendar.HOUR_OF_DAY));
-		// sb.append('_');
-		sb.append(s_cal.get(Calendar.MINUTE));
-		sb.append('.');
-		sb.append(s_cal.get(Calendar.SECOND));
-		sb.append('.');
-		sb.append(s_cal.get(Calendar.MILLISECOND));
-
-		return sb;
-	}
-
-	public static void setDebug(boolean b) {
-		debug = b;
-
-	}
-
-	public static boolean getDebug() {
-
-		return debug;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/util/Edges.java b/dependencyParser/mate-tools/src/is2/util/Edges.java
deleted file mode 100644
index 2457cae..0000000
--- a/dependencyParser/mate-tools/src/is2/util/Edges.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/**
- *
- */
-package is2.util;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Map.Entry;
-
-/**
- * @author Dr. Bernd Bohnet, 13.05.2009;
- *
- *
- */
-public final class Edges {
-
-	private static short[][][] edges;
-	private static HashMap<Short, Integer> labelCount = new HashMap<Short, Integer>();
-
-	private static HashMap<String, Integer> slabelCount = new HashMap<String, Integer>();
-
-	static short[] def = new short[1];
-
-	private Edges() {
-	}
-
-	/**
-	 * @param length
-	 */
-	public static void init(int length) {
-		edges = new short[length][length][];
-	}
-
-	public static void findDefault() {
-
-		int best = 0;
-
-		for (Entry<Short, Integer> e : labelCount.entrySet()) {
-
-			if (best < e.getValue()) {
-				best = e.getValue();
-				def[0] = e.getKey();
-			}
-		}
-
-		// labelCount=null;
-		// String[] types = new String[mf.getFeatureCounter().get(PipeGen.REL)];
-		// for (Entry<String, Integer> e :
-		// MFO.getFeatureSet().get(PipeGen.REL).entrySet()) types[e.getValue()]
-		// = e.getKey();
-
-		is2.util.DB.println("set default label to " + def[0] + " ");
-
-		// System.out.println("found default "+def[0]);
-
-	}
-
-	final static public void put(int pos1, int pos2, short label) {
-		putD(pos1, pos2, label);
-		// putD(pos2, pos1,!dir, label);
-	}
-
-	final static public void putD(int pos1, int pos2, short label) {
-
-		Integer lc = labelCount.get(label);
-		if (lc == null)
-			labelCount.put(label, 1);
-		else
-			labelCount.put(label, lc + 1);
-
-		String key = pos1 + "-" + pos2 + label;
-		Integer lcs = slabelCount.get(key);
-		if (lcs == null)
-			slabelCount.put(key, 1);
-		else
-			slabelCount.put(key, lcs + 1);
-
-		if (edges[pos1][pos2] == null) {
-			edges[pos1][pos2] = new short[1];
-			edges[pos1][pos2][0] = label;
-
-			// edgesh[pos1][pos2][dir?0:1] = new TIntHashSet(2);
-			// edgesh[pos1][pos2][dir?0:1].add(label);
-		} else {
-			short labels[] = edges[pos1][pos2];
-			for (short l : labels) {
-				// contains label already?
-				if (l == label)
-					return;
-			}
-
-			short[] nlabels = new short[labels.length + 1];
-			System.arraycopy(labels, 0, nlabels, 0, labels.length);
-			nlabels[labels.length] = label;
-			edges[pos1][pos2] = nlabels;
-
-			// edgesh[pos1][pos2][dir?0:1].add(label);
-		}
-	}
-
-	final static public short[] get(int pos1, int pos2) {
-
-		if (pos1 < 0 || pos2 < 0 || edges[pos1][pos2] == null)
-			return def;
-		return edges[pos1][pos2];
-	}
-
-	/**
-	 * @param dis
-	 */
-	static public void write(DataOutputStream d) throws IOException {
-
-		int len = edges.length;
-		d.writeShort(len);
-
-		for (int p1 = 0; p1 < len; p1++) {
-			for (int p2 = 0; p2 < len; p2++) {
-				if (edges[p1][p2] == null)
-					d.writeShort(0);
-				else {
-					d.writeShort(edges[p1][p2].length);
-					for (int l = 0; l < edges[p1][p2].length; l++) {
-						d.writeShort(edges[p1][p2][l]);
-					}
-
-				}
-			}
-		}
-
-		d.writeShort(def[0]);
-
-	}
-
-	/**
-	 * @param dis
-	 */
-	public static void read(DataInputStream d) throws IOException {
-		int len = d.readShort();
-
-		edges = new short[len][len][];
-		for (int p1 = 0; p1 < len; p1++) {
-			for (int p2 = 0; p2 < len; p2++) {
-				int ll = d.readShort();
-				if (ll == 0) {
-					edges[p1][p2] = null;
-				} else {
-					edges[p1][p2] = new short[ll];
-					for (int l = 0; l < ll; l++) {
-						edges[p1][p2][l] = d.readShort();
-					}
-				}
-			}
-		}
-
-		def[0] = d.readShort();
-
-	}
-
-	public static class C implements Comparator<Short> {
-
-		public C() {
-			super();
-		}
-
-		String _key;
-
-		public C(String key) {
-			super();
-			_key = key;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
-		 */
-		@Override
-		public int compare(Short l1, Short l2) {
-
-			// int c1 = labelCount.get(l1);
-			// int c2 = labelCount.get(l2);
-			// if (true) return c1==c2?0:c1>c2?-1:1;
-
-			int x1 = slabelCount.get(_key + l1.shortValue());
-			int x2 = slabelCount.get(_key + l2.shortValue());
-			// System.out.println(x1+" "+x2);
-
-			return x1 == x2 ? 0 : x1 > x2 ? -1 : 1;
-
-		}
-
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/util/Evaluator.java b/dependencyParser/mate-tools/src/is2/util/Evaluator.java
deleted file mode 100644
index f75fc54..0000000
--- a/dependencyParser/mate-tools/src/is2/util/Evaluator.java
+++ /dev/null
@@ -1,603 +0,0 @@
-package is2.util;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.Map.Entry;
-
-//import org.apache.commons.math.stat.inference.TestUtils;
-
-import is2.data.Parse;
-import is2.data.SentenceData09;
-import is2.io.CONLLReader09;
-
-public class Evaluator {
-
-	public static void main(String[] args) {
-
-		Options options = new Options(args);
-
-		if (options.eval && options.significant1 == null) {
-
-			evaluate(options.goldfile, options.outfile);
-
-		}
-		/*
-		 * else if (options.significant1!=null && options.significant2!=null ) {
-		 * 
-		 * System.out.println("compare1 "+options.significant1);
-		 * System.out.println("compare2 "+options.significant2);
-		 * System.out.println("gold     "+options.goldfile);
-		 * 
-		 * Results r1 = evaluate(options.goldfile, options.significant1,false);
-		 * 
-		 * System.out.println("file 1 done ");
-		 * 
-		 * Results r2 = evaluate(options.goldfile, options.significant2,false);
-		 * 
-		 * double[] s1 = new double[r1.correctHead.size()]; double[] s2 = new
-		 * double[r1.correctHead.size()];
-		 * 
-		 * for(int k=0;k<r1.correctHead.size();k++) { s1[k] =
-		 * r1.correctHead.get(k); s2[k] = r2.correctHead.get(k); }
-		 * 
-		 * try { double p = TestUtils.pairedTTest(s1, s2);
-		 * System.out.print("significant to "+p); } catch (Exception e) {
-		 * e.printStackTrace(); }
-		 * 
-		 * // significant(options.significant1, options.significant2) ;
-		 * 
-		 * 
-		 * }
-		 */
-		else if (options.significant1 != null) {
-			evaluate(options.goldfile, options.outfile, true);
-
-		}
-
-	}
-
-	/**
-	 *
-	 * @param act_file
-	 * @param pred_file
-	 * @param what
-	 *            top, pos, length, mor
-	 */
-	public static void evaluateTagger(String act_file, String pred_file, String what) {
-
-		CONLLReader09 goldReader = new CONLLReader09(act_file);
-
-		CONLLReader09 predictedReader = new CONLLReader09();
-		predictedReader.startReading(pred_file);
-
-		Hashtable<String, Integer> errors = new Hashtable<String, Integer>();
-		Hashtable<String, StringBuffer> words = new Hashtable<String, StringBuffer>();
-
-		int total = 0, numsent = 0, corrT = 0;
-		SentenceData09 goldInstance = goldReader.getNext();
-		SentenceData09 predInstance = predictedReader.getNext();
-
-		HashMap<Integer, int[]> correctL = new HashMap<Integer, int[]>();
-		HashMap<String, int[]> pos = new HashMap<String, int[]>();
-		HashMap<String, int[]> mor = new HashMap<String, int[]>();
-
-		float correctM = 0;
-		;
-
-		while (goldInstance != null) {
-
-			int instanceLength = goldInstance.length();
-
-			if (instanceLength != predInstance.length())
-				System.out.println("Lengths do not match on sentence " + numsent);
-
-			String gold[] = goldInstance.gpos;
-			String pred[] = predInstance.ppos;
-
-			String goldM[] = goldInstance.ofeats;
-			String predM[] = predInstance.pfeats;
-
-			// NOTE: the first item is the root info added during
-			// nextInstance(), so we skip it.
-
-			for (int i = 1; i < instanceLength; i++) {
-
-				int[] cwr = correctL.get(i);
-				if (cwr == null) {
-					cwr = new int[2];
-					correctL.put(i, cwr);
-				}
-				cwr[1]++;
-				int[] correctPos = pos.get(gold[i]);
-				if (correctPos == null) {
-					correctPos = new int[2];
-					pos.put(gold[i], correctPos);
-				}
-				correctPos[1]++;
-
-				int[] correctMor = mor.get(goldM[i]);
-				if (correctMor == null) {
-					correctMor = new int[2];
-					mor.put(goldM[i], correctMor);
-				}
-
-				if ((goldM[i].equals("_") && predM[i] == null) || goldM[i].equals(predM[i])) {
-					correctM++;
-					correctMor[0]++;
-				}
-				correctMor[1]++;
-
-				if (gold[i].equals(pred[i])) {
-					corrT++;
-					cwr[0]++;
-					correctPos[0]++;
-				} else {
-					String key = "gold: '" + gold[i] + "' pred: '" + pred[i] + "'";
-					Integer cnt = errors.get(key);
-					StringBuffer errWrd = words.get(key);
-					if (cnt == null) {
-						errors.put(key, 1);
-						words.put(key, new StringBuffer().append(goldInstance.forms[i]));
-					} else {
-						errors.put(key, cnt + 1);
-						errWrd.append(" " + goldInstance.forms[i]);
-					}
-				}
-
-			}
-			total += instanceLength - 1; // Subtract one to not score fake root
-											// token
-
-			numsent++;
-
-			goldInstance = goldReader.getNext();
-			predInstance = predictedReader.getNext();
-		}
-
-		// System.out.println("error gold:"+goldPos[i]+" pred:"+predPos[i]+"
-		// "+goldInstance.forms[i]+" snt "+numsent+" i:"+i);
-		ArrayList<Entry<String, Integer>> opsl = new ArrayList<Entry<String, Integer>>();
-		for (Entry<String, Integer> e : errors.entrySet()) {
-			opsl.add(e);
-		}
-
-		Collections.sort(opsl, new Comparator<Entry<String, Integer>>() {
-
-			@Override
-			public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
-
-				return o1.getValue() == o2.getValue() ? 0 : o1.getValue() > o2.getValue() ? -1 : 1;
-			}
-
-		});
-
-		if (what.contains("top")) {
-			System.out.println("top most errors:");
-			for (Entry<String, Integer> e : opsl) {
-				if (e.getValue() > 10)
-					System.out.println(e.getKey() + "  " + e.getValue() + " context: " + words.get(e.getKey()));
-			}
-		}
-
-		if (what.contains("length")) {
-			for (int k = 0; k < 60; k++) {
-				int[] cwr = correctL.get(k);
-				if (cwr == null)
-					continue;
-				System.out.print(k + ":" + cwr[0] + ":" + cwr[1] + ":"
-						+ (((float) Math.round(10000 * (cwr[0]) / cwr[1])) / 100) + " ");
-			}
-			System.out.println();
-		}
-
-		if (what.contains("pos")) {
-			for (Entry<String, int[]> e : pos.entrySet()) {
-
-				System.out.print(e.getKey() + ":" + e.getValue()[0] + ":" + e.getValue()[1] + ":"
-						+ (((float) Math.round(10000 * ((float) e.getValue()[0]) / (e.getValue()[1]))) / 100) + " ");
-
-			}
-			System.out.print("");
-		}
-		System.out.println();
-		if (what.contains("mor")) {
-			for (Entry<String, int[]> e : mor.entrySet()) {
-
-				System.out.print(e.getKey() + ":" + e.getValue()[0] + ":" + e.getValue()[1] + ":"
-						+ (((float) Math.round(10000 * ((float) e.getValue()[0]) / (e.getValue()[1]))) / 100) + " ");
-
-			}
-			System.out.print("");
-		}
-		System.out.println("\nTokens: " + total + " Correct: " + corrT + " " + (float) corrT / total + " Correct M.:"
-				+ (int) correctM + " morphology " + (correctM / total));
-	}
-
-	public static int errors(SentenceData09 s, boolean uas) {
-
-		int errors = 0;
-		for (int k = 1; k < s.length(); k++) {
-
-			if (s.heads[k] != s.pheads[k] && (uas || !s.labels[k].equals(s.plabels[k]))) {
-				errors++;
-			}
-		}
-		return errors;
-	}
-
-	public static int errors(SentenceData09 s1, SentenceData09 s2, HashMap<String, Integer> r1,
-			HashMap<String, Integer> r2) {
-
-		int errors = 0;
-		for (int k = 1; k < s1.length(); k++) {
-
-			if (s1.heads[k] != s1.pheads[k] || (!s1.labels[k].equals(s1.plabels[k]))) {
-
-				if (s2.heads[k] != s2.pheads[k] || (!s2.labels[k].equals(s2.plabels[k]))) {
-
-					// equal do nothing
-
-				} else {
-
-					Integer cnt = r1.get(s1.labels[k]);
-					if (cnt == null)
-						cnt = 0;
-					cnt++;
-					r1.put(s1.labels[k], cnt);
-
-				}
-
-			}
-
-			if (s2.heads[k] != s2.pheads[k] || (!s2.labels[k].equals(s2.plabels[k]))) {
-
-				if (s1.heads[k] != s1.pheads[k] || (!s1.labels[k].equals(s1.plabels[k]))) {
-
-					// equal do nothing
-
-				} else {
-
-					Integer cnt = r2.get(s2.labels[k]);
-					if (cnt == null)
-						cnt = 0;
-					cnt++;
-					r2.put(s2.labels[k], cnt);
-
-				}
-
-			}
-		}
-		return errors;
-	}
-
-	public static final String PUNCT = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
-
-	public static class Results {
-
-		public int total;
-		public int corr;
-		public float las;
-		public float ula;
-		public float lpas;
-		public float upla;
-
-		ArrayList<Double> correctHead;
-	}
-
-	public static Results evaluate(String act_file, String pred_file) {
-		return evaluate(act_file, pred_file, true);
-	}
-
-	public static Results evaluate(String act_file, String pred_file, boolean printEval) {
-		return evaluate(act_file, pred_file, printEval, false);
-	}
-
-	public static Results evaluate(String act_file, String pred_file, boolean printEval, boolean sig) {
-
-		CONLLReader09 goldReader = new CONLLReader09(act_file, -1);
-		CONLLReader09 predictedReader = new CONLLReader09(pred_file, -1);
-
-		int total = 0, corr = 0, corrL = 0, Ptotal = 0, Pcorr = 0, PcorrL = 0, BPtotal = 0, BPcorr = 0, BPcorrL = 0,
-				corrLableAndPos = 0, corrHeadAndPos = 0;
-		int corrLableAndPosP = 0, corrLableAndPosC = 0;
-		int numsent = 0, corrsent = 0, corrsentL = 0, Pcorrsent = 0, PcorrsentL = 0;
-		;
-		int proj = 0, nonproj = 0, pproj = 0, pnonproj = 0, nonProjOk = 0, nonProjWrong = 0;
-
-		int correctChnWoPunc = 0, correctLChnWoPunc = 0, CPtotal = 0;
-		SentenceData09 goldInstance = goldReader.getNext();
-
-		SentenceData09 predInstance = predictedReader.getNext();
-		HashMap<String, Integer> label = new HashMap<String, Integer>();
-		HashMap<String, Integer> labelCount = new HashMap<String, Integer>();
-		HashMap<String, Integer> labelCorrect = new HashMap<String, Integer>();
-		HashMap<String, Integer> falsePositive = new HashMap<String, Integer>();
-
-		// does the node have the correct head?
-		ArrayList<Double> correctHead = new ArrayList<Double>();
-
-		while (goldInstance != null) {
-
-			int instanceLength = goldInstance.length();
-
-			if (instanceLength != predInstance.length())
-				System.out.println("Lengths do not match on sentence " + numsent);
-
-			int[] goldHeads = goldInstance.heads;
-			String[] goldLabels = goldInstance.labels;
-			int[] predHeads = predInstance.pheads;
-			String[] predLabels = predInstance.plabels;
-
-			boolean whole = true;
-			boolean wholeL = true;
-
-			boolean Pwhole = true;
-			boolean PwholeL = true;
-
-			int corrLabels = 0;
-
-			// NOTE: the first item is the root info added during
-			// nextInstance(), so we skip it.
-
-			int punc = 0, bpunc = 0, totalChnWoPunc = 0;
-			for (int i = 1; i < instanceLength; i++) {
-
-				Parse p = new Parse(predHeads.length);
-				for (int k = 0; k < p.heads.length; k++)
-					p.heads[k] = (short) predHeads[k];
-
-				Parse g = new Parse(predHeads.length);
-				for (int k = 0; k < g.heads.length; k++)
-					g.heads[k] = (short) goldHeads[k];
-
-				{
-					Integer count = labelCount.get(goldLabels[i]);
-					if (count == null)
-						count = 0;
-
-					count++;
-
-					labelCount.put(goldLabels[i], count);
-
-					if (goldLabels[i].equals(predLabels[i])) {
-						Integer correct = labelCorrect.get(goldLabels[i]);
-						if (correct == null)
-							correct = 0;
-						correct++;
-						labelCorrect.put(goldLabels[i], correct);
-
-					} else {
-						Integer fp = falsePositive.get(predLabels[i]);
-						if (fp == null)
-							fp = 0;
-						fp++;
-						falsePositive.put(predLabels[i], fp);
-					}
-
-				}
-
-				{
-
-				}
-
-				if (goldLabels[i].startsWith("PMOD")) {
-				}
-
-				boolean tlas = false;
-				if (predHeads[i] == goldHeads[i]) {
-					corr++;
-
-					if (goldInstance.gpos[i].equals(predInstance.ppos[i]))
-						corrHeadAndPos++;
-					if (goldLabels[i].equals(predLabels[i])) {
-						corrL++;
-						// if (predLabels[i].startsWith("PMOD"))
-						corrLabels++;
-						// else correctHead.add(0);
-						if (goldInstance.gpos[i].equals(predInstance.ppos[i])) {
-							tlas = true;
-							corrLableAndPos++;
-						}
-					} else {
-						// correctHead.add(0);
-						// System.out.println(numsent+" error gold
-						// "+goldLabels[i]+" "+predLabels[i]+" head
-						// "+goldHeads[i]+" child "+i);
-						wholeL = false;
-					}
-				} else {
-
-					// correctHead.add(0);
-
-					// System.out.println(numsent+"error gold "+goldLabels[i]+"
-					// "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
-					whole = false;
-					wholeL = false;
-
-					Integer count = label.get(goldLabels[i]);
-
-					if (count == null)
-						count = 0;
-					count++;
-					label.put(goldLabels[i], count);
-
-					Math.abs(goldInstance.heads[i] - i);
-				}
-
-				if (!("!\"#$%&''()*+,-./:;<=>?@[\\]^_{|}~``".contains(goldInstance.forms[i]))) {
-
-					if (predHeads[i] == goldHeads[i]) {
-						BPcorr++;
-
-						if (goldLabels[i].equals(predLabels[i])) {
-							BPcorrL++;
-						} else {
-							// System.out.println(numsent+" error gold
-							// "+goldLabels[i]+" "+predLabels[i]+" head
-							// "+goldHeads[i]+" child "+i);
-							// PwholeL = false;
-						}
-					} else {
-						// System.out.println(numsent+"error gold
-						// "+goldLabels[i]+" "+predLabels[i]+" head
-						// "+goldHeads[i]+" child "+i);
-						// Pwhole = false; wholeL = false;
-					}
-
-				} else
-					bpunc++;
-
-				if (!(",.:''``".contains(goldInstance.forms[i]))) {
-
-					if (predHeads[i] == goldHeads[i]) {
-						if (goldInstance.gpos[i].equals(predInstance.ppos[i])) {
-						}
-						Pcorr++;
-
-						if (goldLabels[i].equals(predLabels[i])) {
-							PcorrL++;
-							if (goldInstance.gpos[i].equals(predInstance.ppos[i]))
-								corrLableAndPosP++;
-
-						} else {
-							// System.out.println(numsent+" error gold
-							// "+goldLabels[i]+" "+predLabels[i]+" head
-							// "+goldHeads[i]+" child "+i);
-							PwholeL = false;
-						}
-					} else {
-						// System.out.println(numsent+"error gold
-						// "+goldLabels[i]+" "+predLabels[i]+" head
-						// "+goldHeads[i]+" child "+i);
-						Pwhole = false;
-						PwholeL = false;
-					}
-
-				} else
-					punc++;
-
-				if (!(goldInstance.gpos[i].toLowerCase().startsWith("pu"))) {
-					if (predHeads[i] == goldHeads[i]) {
-						correctChnWoPunc++;
-
-						if (goldLabels[i].equals(predLabels[i])) {
-							correctLChnWoPunc++;
-							if (goldInstance.gpos[i].equals(predInstance.ppos[i]))
-								corrLableAndPosC++;
-						} else {
-							// System.out.println(numsent+" error gold
-							// "+goldLabels[i]+" "+predLabels[i]+" head
-							// "+goldHeads[i]+" child "+i);
-							// PwholeL = false;
-						}
-					} else {
-						// System.out.println(numsent+"error gold
-						// "+goldLabels[i]+" "+predLabels[i]+" head
-						// "+goldHeads[i]+" child "+i);
-						// Pwhole = false; PwholeL = false;
-					}
-
-				} else
-					totalChnWoPunc++;
-
-				if (sig) {
-					if (tlas)
-						System.out.println("1\t");
-					else
-						System.out.println("0\t");
-				}
-
-			}
-			total += ((instanceLength - 1)); // Subtract one to not score fake
-												// root token
-
-			Ptotal += ((instanceLength - 1) - punc);
-			BPtotal += ((instanceLength - 1) - bpunc);
-			CPtotal += ((instanceLength - 1) - totalChnWoPunc);
-			if (whole)
-				corrsent++;
-			if (wholeL)
-				corrsentL++;
-			if (Pwhole)
-				Pcorrsent++;
-			if (PwholeL)
-				PcorrsentL++;
-			numsent++;
-
-			goldInstance = goldReader.getNext();
-			predInstance = predictedReader.getNext();
-			correctHead.add((double) corrLabels / (instanceLength - 1));
-			// System.out.println(""+((double)corrLabels/(instanceLength - 1)));
-		}
-
-		Results r = new Results();
-
-		r.correctHead = correctHead;
-		int mult = 100000, diff = 1000;
-
-		r.total = total;
-		r.corr = corr;
-		r.las = (float) Math.round(((double) corrL / total) * mult) / diff;
-		r.ula = (float) Math.round(((double) corr / total) * mult) / diff;
-		r.lpas = (float) Math.round(((double) corrLableAndPos / total) * mult) / diff;
-		r.upla = (float) Math.round(((double) corrHeadAndPos / total) * mult) / diff;
-		float tlasp = (float) Math.round(((double) corrLableAndPosP / Ptotal) * mult) / diff;
-		float tlasc = (float) Math.round(((double) corrLableAndPosC / Ptotal) * mult) / diff;
-
-		// System.out.print("Total: " + total+" \tCorrect: " + corr+" ");
-		System.out.print(" LAS/Total/UAS/Total: " + r.las + "/"
-				+ (double) Math.round(((double) corrsentL / numsent) * mult) / diff + "/" + r.ula + "/"
-				+ (double) Math.round(((double) corrsent / numsent) * mult) / diff + " LPAS/UPAS " + r.lpas + "/"
-				+ r.upla);
-
-		System.out.println("; without . " + (double) Math.round(((double) PcorrL / Ptotal) * mult) / diff + "/"
-				+ (double) Math.round(((double) PcorrsentL / numsent) * mult) / diff + "/"
-				+ (double) Math.round(((double) Pcorr / Ptotal) * mult) / diff + "/"
-				+ (double) Math.round(((double) Pcorrsent / numsent) * mult) / diff + " TLAS " + tlasp + " V2 LAS/UAS "
-				+ (double) Math.round(((double) BPcorrL / BPtotal) * mult) / diff + "/"
-				+ (double) Math.round(((double) BPcorr / BPtotal) * mult) / diff + " CHN LAS/UAS "
-				+ (double) Math.round(((double) correctLChnWoPunc / CPtotal) * mult) / diff + "/"
-				+ (double) Math.round(((double) correctChnWoPunc / CPtotal) * mult) / diff + " TLAS " + tlasc);
-
-		float precisionNonProj = (nonProjOk) / ((float) nonProjOk + nonProjWrong);
-		float recallNonProj = ((float) nonProjOk) / ((float) (nonproj));
-		System.out.println("proj " + proj + " nonp " + nonproj + "; predicted proj " + pproj + " non " + pnonproj
-				+ "; nonp correct " + nonProjOk + " nonp wrong " + nonProjWrong
-				+ " precision=(nonProjOk)/(non-projOk+nonProjWrong): " + precisionNonProj + " recall=nonProjOk/nonproj="
-				+ recallNonProj + " F=" + (2 * precisionNonProj * recallNonProj) / (precisionNonProj + recallNonProj));
-
-		if (!printEval)
-			return r;
-
-		new HashMap<String, Integer>();
-		new HashMap<String, Integer>();
-
-		System.out.println("label\ttp\tcount\trecall\t\ttp\tfp+tp\tprecision\t F-Score ");
-
-		for (Entry<String, Integer> e : labelCount.entrySet()) {
-
-			int tp = labelCorrect.get(e.getKey()) == null ? 0 : labelCorrect.get(e.getKey()).intValue();
-			Integer count = labelCount.get(e.getKey());
-			int fp = falsePositive.get(e.getKey()) == null ? 0 : falsePositive.get(e.getKey()).intValue();
-			System.out.println(e.getKey() + "\t" + tp + "\t" + count + "\t" + roundPercent((float) tp / count) + "\t\t"
-					+ tp + "\t" + (fp + tp) + "\t" + roundPercent((float) tp / (fp + tp)) + "\t\t"
-					+ roundPercent((((float) tp / count)) + (float) tp / (fp + tp)) / 2F); // +totalD
-		}
-
-		return r;
-	}
-
-	public static float round(double v) {
-
-		return Math.round(v * 10000F) / 10000F;
-	}
-
-	public static float roundPercent(double v) {
-
-		return Math.round(v * 10000F) / 100F;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/util/EvaluatorTagger.java b/dependencyParser/mate-tools/src/is2/util/EvaluatorTagger.java
deleted file mode 100644
index c1f88f4..0000000
--- a/dependencyParser/mate-tools/src/is2/util/EvaluatorTagger.java
+++ /dev/null
@@ -1,707 +0,0 @@
-package is2.util;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.Map.Entry;
-
-import org.apache.commons.math.stat.inference.TestUtils;
-
-import is2.data.Parse;
-import is2.data.SentenceData09;
-import is2.io.CONLLReader09;
-
-public class EvaluatorTagger {
-
-	public static int TAGGER = 1;
-	public static int what = 0;
-
-	public static void main(String[] args) {
-
-		Options options = new Options(args);
-
-		what = options.tt;
-
-		if (options.eval && options.significant1 == null) {
-
-			evaluate(options.goldfile, options.outfile);
-
-		} else if (options.significant1 != null && options.significant2 != null) {
-
-			System.out.println("compare1 " + options.significant1);
-			System.out.println("compare2 " + options.significant2);
-			System.out.println("gold     " + options.goldfile);
-
-			check(options.significant1, options.significant2, options.testfile);
-
-			Results r1 = evaluate(options.goldfile, options.significant1, false);
-
-			System.out.println("file 1 done ");
-
-			Results r2 = evaluate(options.goldfile, options.significant2, false);
-
-			double[] s1 = new double[r1.correctHead.size()];
-			double[] s2 = new double[r1.correctHead.size()];
-
-			for (int k = 0; k < r1.correctHead.size(); k++) {
-				s1[k] = r1.correctHead.get(k);
-				s2[k] = r2.correctHead.get(k);
-			}
-
-			try {
-				double p = TestUtils.pairedTTest(s1, s2);
-				System.out.print("significant to " + p);
-			} catch (Exception e) {
-				e.printStackTrace();
-			}
-
-			// significant(options.significant1, options.significant2) ;
-
-		} else if (options.significant1 != null) {
-			evaluate(options.goldfile, options.outfile, true);
-
-		}
-
-	}
-
-	private static void check(String s1, String s2, String pos) {
-		CONLLReader09 s1reader = new CONLLReader09(s1, -1);
-		SentenceData09 s1i = s1reader.getNext();
-		CONLLReader09 s2reader = new CONLLReader09(s2, -1);
-		SentenceData09 s2i = s2reader.getNext();
-
-		HashMap<String, HashMap<String, Integer>> labchanged = new HashMap<String, HashMap<String, Integer>>();
-
-		int snt = 0;
-
-		while (s1i != null) {
-
-			snt++;
-			int good = 0, wrong = 0;
-
-			for (int w = 1; w < s1i.length(); w++) {
-
-				// p(s1:head-pos wrong s2:head-pos good => dep-wrong =>
-				// dep-good)
-
-				if (s1i.gpos[s1i.heads[w]].equals(pos) && !!s1i.ppos[s1i.heads[w]].equals(s1i.gpos[s1i.heads[w]])
-						&& s2i.ppos[s2i.heads[w]].equals(s2i.gpos[s2i.heads[w]])) {
-
-					HashMap<String, Integer> changed = labchanged.get(s2i.labels[w]);
-					if (changed == null) {
-						changed = new HashMap<String, Integer>();
-						labchanged.put(s2i.labels[w], changed);
-					}
-					if (!(s1i.plabels[w].equals(s1i.labels[w]) && s1i.pheads[w] == s1i.heads[w])
-							&& (s2i.plabels[w].equals(s2i.labels[w]) && s2i.pheads[w] == s2i.heads[w])) {
-						good++;
-						Integer goodL = changed.get("G");
-						if (goodL == null)
-							goodL = 0;
-						goodL += 1;
-						changed.put("G", goodL);
-					} else {
-						wrong++;
-						Integer wrongL = changed.get("W");
-						if (wrongL == null)
-							wrongL = 0;
-						wrongL += 1;
-						changed.put("W", wrongL);
-					}
-
-				}
-
-			}
-
-			if (good != 0 || wrong != 0)
-				System.out.println(snt + " changed yes:" + good + " no:" + wrong);
-			s1i = s1reader.getNext();
-			s2i = s2reader.getNext();
-		}
-		System.out.println("" + labchanged);
-
-	}
-
-	/**
-	 *
-	 * @param act_file
-	 * @param pred_file
-	 * @param what
-	 *            top, pos, length, mor
-	 */
-	public static void evaluateTagger(String act_file, String pred_file, String what) {
-
-		CONLLReader09 goldReader = new CONLLReader09(act_file);
-
-		CONLLReader09 predictedReader = new CONLLReader09();
-		predictedReader.startReading(pred_file);
-
-		Hashtable<String, Integer> errors = new Hashtable<String, Integer>();
-		Hashtable<String, StringBuffer> words = new Hashtable<String, StringBuffer>();
-
-		int total = 0, numsent = 0, corrT = 0;
-		SentenceData09 goldInstance = goldReader.getNext();
-		SentenceData09 predInstance = predictedReader.getNext();
-
-		HashMap<Integer, int[]> correctL = new HashMap<Integer, int[]>();
-		HashMap<String, int[]> pos = new HashMap<String, int[]>();
-		HashMap<String, int[]> mor = new HashMap<String, int[]>();
-
-		float correctM = 0;
-		;
-
-		while (goldInstance != null) {
-
-			int instanceLength = goldInstance.length();
-
-			if (instanceLength != predInstance.length())
-				System.out.println("Lengths do not match on sentence " + numsent);
-
-			String gold[] = goldInstance.gpos;
-			String pred[] = predInstance.ppos;
-
-			String goldM[] = goldInstance.ofeats;
-			String predM[] = predInstance.pfeats;
-
-			// NOTE: the first item is the root info added during
-			// nextInstance(), so we skip it.
-
-			for (int i = 1; i < instanceLength; i++) {
-
-				int[] cwr = correctL.get(i);
-				if (cwr == null) {
-					cwr = new int[2];
-					correctL.put(i, cwr);
-				}
-				cwr[1]++;
-				int[] correctPos = pos.get(gold[i]);
-				if (correctPos == null) {
-					correctPos = new int[2];
-					pos.put(gold[i], correctPos);
-				}
-				correctPos[1]++;
-
-				int[] correctMor = mor.get(goldM[i]);
-				if (correctMor == null) {
-					correctMor = new int[2];
-					mor.put(goldM[i], correctMor);
-				}
-
-				if ((goldM[i].equals("_") && predM[i] == null) || goldM[i].equals(predM[i])) {
-					correctM++;
-					correctMor[0]++;
-				}
-				correctMor[1]++;
-
-				if (gold[i].equals(pred[i])) {
-					corrT++;
-					cwr[0]++;
-					correctPos[0]++;
-				} else {
-					String key = "gold: '" + gold[i] + "' pred: '" + pred[i] + "'";
-					Integer cnt = errors.get(key);
-					StringBuffer errWrd = words.get(key);
-					if (cnt == null) {
-						errors.put(key, 1);
-						words.put(key, new StringBuffer().append(goldInstance.forms[i]));
-					} else {
-						errors.put(key, cnt + 1);
-						errWrd.append(" " + goldInstance.forms[i]);
-					}
-				}
-
-			}
-			total += instanceLength - 1; // Subtract one to not score fake root
-											// token
-
-			numsent++;
-
-			goldInstance = goldReader.getNext();
-			predInstance = predictedReader.getNext();
-		}
-
-		// System.out.println("error gold:"+goldPos[i]+" pred:"+predPos[i]+"
-		// "+goldInstance.forms[i]+" snt "+numsent+" i:"+i);
-		ArrayList<Entry<String, Integer>> opsl = new ArrayList<Entry<String, Integer>>();
-		for (Entry<String, Integer> e : errors.entrySet()) {
-			opsl.add(e);
-		}
-
-		Collections.sort(opsl, new Comparator<Entry<String, Integer>>() {
-
-			@Override
-			public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
-
-				return o1.getValue() == o2.getValue() ? 0 : o1.getValue() > o2.getValue() ? -1 : 1;
-			}
-
-		});
-
-		if (what.contains("top")) {
-			System.out.println("top most errors:");
-			for (Entry<String, Integer> e : opsl) {
-				if (e.getValue() > 10)
-					System.out.println(e.getKey() + "  " + e.getValue() + " context: " + words.get(e.getKey()));
-			}
-		}
-
-		if (what.contains("length")) {
-			for (int k = 0; k < 60; k++) {
-				int[] cwr = correctL.get(k);
-				if (cwr == null)
-					continue;
-				System.out.print(k + ":" + cwr[0] + ":" + cwr[1] + ":"
-						+ (((float) Math.round(10000 * (cwr[0]) / cwr[1])) / 100) + " ");
-			}
-			System.out.println();
-		}
-
-		if (what.contains("pos")) {
-			for (Entry<String, int[]> e : pos.entrySet()) {
-
-				System.out.print(e.getKey() + ":" + e.getValue()[0] + ":" + e.getValue()[1] + ":"
-						+ (((float) Math.round(10000 * ((float) e.getValue()[0]) / (e.getValue()[1]))) / 100) + " ");
-
-			}
-			System.out.print("");
-		}
-		System.out.println();
-		if (what.contains("mor")) {
-			for (Entry<String, int[]> e : mor.entrySet()) {
-
-				System.out.print(e.getKey() + ":" + e.getValue()[0] + ":" + e.getValue()[1] + ":"
-						+ (((float) Math.round(10000 * ((float) e.getValue()[0]) / (e.getValue()[1]))) / 100) + " ");
-
-			}
-			System.out.print("");
-		}
-		System.out.println("\nTokens: " + total + " Correct: " + corrT + " " + (float) corrT / total + " Correct M.:"
-				+ (int) correctM + " morphology " + (correctM / total));
-	}
-
-	public static int errors(SentenceData09 s, boolean uas) {
-
-		int errors = 0;
-		for (int k = 1; k < s.length(); k++) {
-
-			if (s.heads[k] != s.pheads[k] && (uas || !s.labels[k].equals(s.plabels[k]))) {
-				errors++;
-			}
-		}
-		return errors;
-	}
-
-	public static int errors(SentenceData09 s1, SentenceData09 s2, HashMap<String, Integer> r1,
-			HashMap<String, Integer> r2) {
-
-		int errors = 0;
-		for (int k = 1; k < s1.length(); k++) {
-
-			if (s1.heads[k] != s1.pheads[k] || (!s1.labels[k].equals(s1.plabels[k]))) {
-
-				if (s2.heads[k] != s2.pheads[k] || (!s2.labels[k].equals(s2.plabels[k]))) {
-
-					// equal do nothing
-
-				} else {
-
-					Integer cnt = r1.get(s1.labels[k]);
-					if (cnt == null)
-						cnt = 0;
-					cnt++;
-					r1.put(s1.labels[k], cnt);
-
-				}
-
-			}
-
-			if (s2.heads[k] != s2.pheads[k] || (!s2.labels[k].equals(s2.plabels[k]))) {
-
-				if (s1.heads[k] != s1.pheads[k] || (!s1.labels[k].equals(s1.plabels[k]))) {
-
-					// equal do nothing
-
-				} else {
-
-					Integer cnt = r2.get(s2.labels[k]);
-					if (cnt == null)
-						cnt = 0;
-					cnt++;
-					r2.put(s2.labels[k], cnt);
-
-				}
-
-			}
-		}
-		return errors;
-	}
-
-	public static final String PUNCT = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
-
-	public static class Results {
-
-		public int total;
-		public int corr;
-		public float las;
-		public float ula;
-		public float lpas;
-		public float upla;
-
-		ArrayList<Double> correctHead;
-	}
-
-	public static Results evaluate(String act_file, String pred_file) {
-		return evaluate(act_file, pred_file, true);
-	}
-
-	public static Results evaluate(String act_file, String pred_file, boolean printEval) {
-		return evaluate(act_file, pred_file, printEval, false);
-	}
-
-	public static Results evaluate(String act_file, String pred_file, boolean printEval, boolean sig) {
-
-		CONLLReader09 goldReader = new CONLLReader09(act_file, -1);
-		CONLLReader09 predictedReader = new CONLLReader09(pred_file, -1);
-
-		int total = 0, corr = 0, corrL = 0, Ptotal = 0, Pcorr = 0, PcorrL = 0, BPtotal = 0, BPcorr = 0, BPcorrL = 0,
-				corrLableAndPos = 0, corrHeadAndPos = 0;
-		int corrLableAndPosP = 0, corrLableAndPosC = 0;
-		int numsent = 0, corrsent = 0, corrsentL = 0, Pcorrsent = 0, PcorrsentL = 0;
-		;
-		int proj = 0, nonproj = 0, pproj = 0, pnonproj = 0, nonProjOk = 0, nonProjWrong = 0;
-
-		int correctChnWoPunc = 0, correctLChnWoPunc = 0, CPtotal = 0;
-		SentenceData09 goldInstance = goldReader.getNext();
-
-		SentenceData09 predInstance = predictedReader.getNext();
-		HashMap<String, Integer> label = new HashMap<String, Integer>();
-		HashMap<String, Integer> labelCount = new HashMap<String, Integer>();
-		HashMap<String, Integer> labelCorrect = new HashMap<String, Integer>();
-		HashMap<String, Integer> falsePositive = new HashMap<String, Integer>();
-		HashMap<String, HashMap<String, Integer>> confusion = new HashMap<String, HashMap<String, Integer>>();
-
-		HashMap<String, HashMap<String, Integer>> posLabelAssign = new HashMap<String, HashMap<String, Integer>>();
-
-		// does the node have the correct head?
-		ArrayList<Double> correctHead = new ArrayList<Double>();
-
-		while (goldInstance != null) {
-
-			int instanceLength = goldInstance.length();
-
-			if (instanceLength != predInstance.length())
-				System.out.println("Lengths do not match on sentence " + numsent);
-
-			int[] goldHeads = goldInstance.heads;
-
-			String[] goldLabels, predLabels;
-			if (what == TAGGER) {
-				goldLabels = goldInstance.gpos;
-				predLabels = predInstance.ppos;
-			} else {
-				goldLabels = goldInstance.labels;
-				predLabels = predInstance.plabels;
-			}
-
-			int[] predHeads = predInstance.pheads;
-
-			boolean whole = true;
-			boolean wholeL = true;
-
-			boolean Pwhole = true;
-			boolean PwholeL = true;
-
-			int corrLabels = 0;
-
-			// NOTE: the first item is the root info added during
-			// nextInstance(), so we skip it.
-
-			int punc = 0, bpunc = 0, totalChnWoPunc = 0;
-			for (int i = 1; i < instanceLength; i++) {
-
-				Parse p = new Parse(predHeads.length);
-				for (int k = 0; k < p.heads.length; k++)
-					p.heads[k] = (short) predHeads[k];
-
-				Parse g = new Parse(predHeads.length);
-				for (int k = 0; k < g.heads.length; k++)
-					g.heads[k] = (short) goldHeads[k];
-
-				HashMap<String, Integer> labelsNum = posLabelAssign.get(goldInstance.gpos[goldInstance.heads[i]]);
-				if (labelsNum == null) {
-					labelsNum = new HashMap<String, Integer>();
-					posLabelAssign.put(goldInstance.gpos[goldInstance.heads[i]], labelsNum);
-				}
-
-				Integer num = labelsNum.get(goldInstance.labels[i]);
-				if (num == null)
-					num = 0;
-				num++;
-				labelsNum.put(goldInstance.labels[i], num);
-
-				Integer count = labelCount.get(goldLabels[i]);
-				if (count == null)
-					count = 0;
-
-				count++;
-
-				labelCount.put(goldLabels[i], count);
-
-				if (goldLabels[i].equals(predLabels[i]) && (what == TAGGER || predHeads[i] == goldHeads[i])) {
-					Integer correct = labelCorrect.get(goldLabels[i]);
-					if (correct == null)
-						correct = 0;
-					correct++;
-					labelCorrect.put(goldLabels[i], correct);
-
-				} else {
-
-					Integer fp = falsePositive.get(predLabels[i]);
-					if (fp == null)
-						fp = 0;
-					fp++;
-					falsePositive.put(predLabels[i], fp);
-
-					HashMap<String, Integer> conf = confusion.get(goldLabels[i]);
-					if (conf == null)
-						confusion.put(goldLabels[i], conf = new HashMap<String, Integer>());
-
-					conf.put(predLabels[i], conf.get(predLabels[i]) == null ? 1 : conf.get(predLabels[i]) + 1);
-
-				}
-
-				boolean tlas = false;
-				if (predHeads[i] == goldHeads[i]) {
-					corr++;
-
-					if (goldInstance.gpos[i].equals(predInstance.ppos[i]))
-						corrHeadAndPos++;
-					if (goldLabels[i].equals(predLabels[i])) {
-						corrL++;
-						// if (predLabels[i].startsWith("PMOD"))
-						corrLabels++;
-						// else correctHead.add(0);
-						if (goldInstance.gpos[i].equals(predInstance.ppos[i])) {
-							tlas = true;
-							corrLableAndPos++;
-						}
-					} else {
-						// correctHead.add(0);
-						// System.out.println(numsent+" error gold
-						// "+goldLabels[i]+" "+predLabels[i]+" head
-						// "+goldHeads[i]+" child "+i);
-						wholeL = false;
-					}
-				} else {
-
-					// correctHead.add(0);
-
-					// System.out.println(numsent+"error gold "+goldLabels[i]+"
-					// "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
-					whole = false;
-					wholeL = false;
-
-					count = label.get(goldLabels[i]);
-
-					if (count == null)
-						count = 0;
-					count++;
-					label.put(goldLabels[i], count);
-
-					Math.abs(goldInstance.heads[i] - i);
-				}
-
-				if (!("!\"#$%&''()*+,-./:;<=>?@[\\]^_{|}~``".contains(goldInstance.forms[i]))) {
-
-					if (predHeads[i] == goldHeads[i]) {
-						BPcorr++;
-
-						if (goldLabels[i].equals(predLabels[i])) {
-							BPcorrL++;
-						} else {
-							// System.out.println(numsent+" error gold
-							// "+goldLabels[i]+" "+predLabels[i]+" head
-							// "+goldHeads[i]+" child "+i);
-							// PwholeL = false;
-						}
-					} else {
-						// System.out.println(numsent+"error gold
-						// "+goldLabels[i]+" "+predLabels[i]+" head
-						// "+goldHeads[i]+" child "+i);
-						// Pwhole = false; wholeL = false;
-					}
-
-				} else
-					bpunc++;
-
-				if (!(",.:''``".contains(goldInstance.forms[i]))) {
-
-					if (predHeads[i] == goldHeads[i]) {
-						if (goldInstance.gpos[i].equals(predInstance.ppos[i])) {
-						}
-						Pcorr++;
-
-						if (goldLabels[i].equals(predLabels[i])) {
-							PcorrL++;
-							if (goldInstance.gpos[i].equals(predInstance.ppos[i]))
-								corrLableAndPosP++;
-
-						} else {
-							// System.out.println(numsent+" error gold
-							// "+goldLabels[i]+" "+predLabels[i]+" head
-							// "+goldHeads[i]+" child "+i);
-							PwholeL = false;
-						}
-					} else {
-						// System.out.println(numsent+"error gold
-						// "+goldLabels[i]+" "+predLabels[i]+" head
-						// "+goldHeads[i]+" child "+i);
-						Pwhole = false;
-						PwholeL = false;
-					}
-
-				} else
-					punc++;
-
-				if (!(goldInstance.gpos[i].toLowerCase().startsWith("pu"))) {
-					if (predHeads[i] == goldHeads[i]) {
-						correctChnWoPunc++;
-
-						if (goldLabels[i].equals(predLabels[i])) {
-							correctLChnWoPunc++;
-							if (goldInstance.gpos[i].equals(predInstance.ppos[i]))
-								corrLableAndPosC++;
-						} else {
-							// System.out.println(numsent+" error gold
-							// "+goldLabels[i]+" "+predLabels[i]+" head
-							// "+goldHeads[i]+" child "+i);
-							// PwholeL = false;
-						}
-					} else {
-						// System.out.println(numsent+"error gold
-						// "+goldLabels[i]+" "+predLabels[i]+" head
-						// "+goldHeads[i]+" child "+i);
-						// Pwhole = false; PwholeL = false;
-					}
-
-				} else
-					totalChnWoPunc++;
-
-				if (sig) {
-					if (tlas)
-						System.out.println("1\t");
-					else
-						System.out.println("0\t");
-				}
-
-			}
-			total += ((instanceLength - 1)); // Subtract one to not score fake
-												// root token
-
-			Ptotal += ((instanceLength - 1) - punc);
-			BPtotal += ((instanceLength - 1) - bpunc);
-			CPtotal += ((instanceLength - 1) - totalChnWoPunc);
-			if (whole)
-				corrsent++;
-			if (wholeL)
-				corrsentL++;
-			if (Pwhole)
-				Pcorrsent++;
-			if (PwholeL)
-				PcorrsentL++;
-			numsent++;
-
-			goldInstance = goldReader.getNext();
-			predInstance = predictedReader.getNext();
-			correctHead.add((double) corrLabels / (instanceLength - 1));
-			// System.out.println(""+((double)corrLabels/(instanceLength - 1)));
-		}
-
-		Results r = new Results();
-
-		r.correctHead = correctHead;
-		int mult = 100000, diff = 1000;
-
-		r.total = total;
-		r.corr = corr;
-		r.las = (float) Math.round(((double) corrL / total) * mult) / diff;
-		r.ula = (float) Math.round(((double) corr / total) * mult) / diff;
-		r.lpas = (float) Math.round(((double) corrLableAndPos / total) * mult) / diff;
-		r.upla = (float) Math.round(((double) corrHeadAndPos / total) * mult) / diff;
-		float tlasp = (float) Math.round(((double) corrLableAndPosP / Ptotal) * mult) / diff;
-		float tlasc = (float) Math.round(((double) corrLableAndPosC / Ptotal) * mult) / diff;
-
-		// System.out.print("Total: " + total+" \tCorrect: " + corr+" ");
-		System.out.print(" LAS/Total/UAS/Total: " + r.las + "/"
-				+ (double) Math.round(((double) corrsentL / numsent) * mult) / diff + "/" + r.ula + "/"
-				+ (double) Math.round(((double) corrsent / numsent) * mult) / diff + " LPAS/UPAS " + r.lpas + "/"
-				+ r.upla);
-
-		System.out.println("; without . " + (double) Math.round(((double) PcorrL / Ptotal) * mult) / diff + "/"
-				+ (double) Math.round(((double) PcorrsentL / numsent) * mult) / diff + "/"
-				+ (double) Math.round(((double) Pcorr / Ptotal) * mult) / diff + "/"
-				+ (double) Math.round(((double) Pcorrsent / numsent) * mult) / diff + " TLAS " + tlasp + " V2 LAS/UAS "
-				+ (double) Math.round(((double) BPcorrL / BPtotal) * mult) / diff + "/"
-				+ (double) Math.round(((double) BPcorr / BPtotal) * mult) / diff + " CHN LAS/UAS "
-				+ (double) Math.round(((double) correctLChnWoPunc / CPtotal) * mult) / diff + "/"
-				+ (double) Math.round(((double) correctChnWoPunc / CPtotal) * mult) / diff + " TLAS " + tlasc);
-
-		float precisionNonProj = (nonProjOk) / ((float) nonProjOk + nonProjWrong);
-		float recallNonProj = ((float) nonProjOk) / ((float) (nonproj));
-		System.out.println("proj " + proj + " nonp " + nonproj + "; predicted proj " + pproj + " non " + pnonproj
-				+ "; nonp correct " + nonProjOk + " nonp wrong " + nonProjWrong
-				+ " precision=(nonProjOk)/(non-projOk+nonProjWrong): " + precisionNonProj + " recall=nonProjOk/nonproj="
-				+ recallNonProj + " F=" + (2 * precisionNonProj * recallNonProj) / (precisionNonProj + recallNonProj));
-
-		if (!printEval)
-			return r;
-
-		new HashMap<String, Integer>();
-		new HashMap<String, Integer>();
-
-		System.out.println("label\ttp\tcount\trecall\t\ttp\tfp+tp\tprecision\t F-Score ");
-
-		for (Entry<String, Integer> e : labelCount.entrySet()) {
-
-			int tp = labelCorrect.get(e.getKey()) == null ? 0 : labelCorrect.get(e.getKey()).intValue();
-			Integer count = labelCount.get(e.getKey());
-			int fp = falsePositive.get(e.getKey()) == null ? 0 : falsePositive.get(e.getKey()).intValue();
-			System.out.println(e.getKey() + "\t" + tp + "\t" + count + "\t" + roundPercent((float) tp / count) + "\t\t"
-					+ tp + "\t" + (fp + tp) + "\t" + roundPercent((float) tp / (fp + tp)) + "\t\t"
-					+ roundPercent((((float) tp / count)) + (float) tp / (fp + tp)) / 2F); // +totalD
-		}
-
-		for (Entry<String, HashMap<String, Integer>> e : confusion.entrySet()) {
-			HashMap<String, Integer> values = e.getValue();
-			ArrayList<Entry<String, Integer>> entries = new ArrayList<Entry<String, Integer>>(values.entrySet());
-			Collections.sort(entries, new Comparator<Entry<String, Integer>>() {
-
-				@Override
-				public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
-
-					return o2.getValue().compareTo(o1.getValue());
-				}
-
-			});
-
-			System.out.println(e.getKey() + "\t" + entries);
-
-		}
-		System.out.println("" + posLabelAssign);
-
-		return r;
-	}
-
-	public static float round(double v) {
-
-		return Math.round(v * 10000F) / 10000F;
-	}
-
-	public static float roundPercent(double v) {
-
-		return Math.round(v * 10000F) / 100F;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/util/ExtractParagraphs.java b/dependencyParser/mate-tools/src/is2/util/ExtractParagraphs.java
deleted file mode 100644
index aa65d8d..0000000
--- a/dependencyParser/mate-tools/src/is2/util/ExtractParagraphs.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package is2.util;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-
-public class ExtractParagraphs {
-
-	/**
-	 * 
-	 * @param args
-	 * @throws IOException
-	 */
-	public static void main(String args[]) throws IOException {
-
-		if (args.length < 1) {
-			System.out.println("Please provide a file name.");
-			System.exit(0);
-		}
-
-		File file = new File(args[0]);
-		file.isDirectory();
-		String[] dirs = file.list();
-
-		BufferedWriter write = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(args[1]), "UTF-8"),
-				32768);
-		int cnt = 0;
-
-		for (String fileName : dirs) {
-			BufferedReader reader = new BufferedReader(
-					new InputStreamReader(new FileInputStream(args[0] + fileName), "UTF-8"), 32768);
-
-			int state = 0;
-
-			String s;
-			while ((s = reader.readLine()) != null) {
-
-				if (s.startsWith("<P>") || s.startsWith("<p>")) {
-					state = 1; // paragraph start
-					continue;
-				}
-
-				if (s.startsWith("</P>") || s.startsWith("</p>")) {
-					state = 2; // paragraph end
-					write.newLine();
-				}
-
-				if (state == 1) {
-					String sp[] = s.split("\\. ");
-					for (String p : sp) {
-						write.write(p);
-						// if (sp.length>1) write.newLine();
-					}
-					cnt++;
-				}
-			}
-
-			// if (cnt>5000) break;
-
-			reader.close();
-		}
-		write.flush();
-		write.close();
-
-		System.out.println("Extract " + cnt + " lines ");
-
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/util/IntStack.java b/dependencyParser/mate-tools/src/is2/util/IntStack.java
deleted file mode 100644
index b291d16..0000000
--- a/dependencyParser/mate-tools/src/is2/util/IntStack.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- *
- */
-package is2.util;
-
-/**
- * @author Dr. Bernd Bohnet, 01.06.2011
- *
- *
- */
-final public class IntStack {
-
-	final public int[] stack;
-	public int position = -1;
-
-	public IntStack(int size) {
-		if (size <= 0)
-			stack = new int[1];
-		else
-			stack = new int[size + 1];
-	}
-
-	public IntStack(IntStack s) {
-		stack = s.stack;
-		position = s.position;
-	}
-
-	public int peek() {
-		return position == -1 ? -1 : stack[position];
-	}
-
-	public void push(int i) {
-		// if (i ==2)new Exception().printStackTrace();
-		stack[++position] = i;
-	}
-
-	public int pop() {
-		return position == -1 ? -1 : stack[position--];
-	}
-
-	public int size() {
-		return position + 1;
-	}
-
-	public boolean isEmpty() {
-		return position == -1 ? true : false;
-	}
-
-	public int get(int p) {
-		return stack[p];
-	}
-
-	public void clear() {
-		position = -1;
-	}
-
-	/**
-	 * @param b
-	 */
-	public void addAll(IntStack b) {
-
-		position = b.position;
-		if (position < 0)
-			return;
-
-		for (int k = 0; k <= position; k++)
-			stack[k] = b.stack[k];
-
-	}
-
-	public boolean contains(int s) {
-		;
-
-		for (int k = 0; k <= position; k++)
-			if (stack[k] == s)
-				return true;
-
-		return false;
-	}
-
-	@Override
-	public String toString() {
-		StringBuffer s = new StringBuffer();
-		for (int k = position; k >= 0; k--) {
-			s.append(k).append(":").append(this.stack[k]).append(" ");
-		}
-		return s.toString();
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/util/Long2Int.java b/dependencyParser/mate-tools/src/is2/util/Long2Int.java
deleted file mode 100644
index e6ef45c..0000000
--- a/dependencyParser/mate-tools/src/is2/util/Long2Int.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package is2.util;
-
-import is2.data.Long2IntInterface;
-
-/**
- * @author Bernd Bohnet, 01.09.2009
- *
- *         Maps for the Hash Kernel the long values to the int values.
- */
-final public class Long2Int implements Long2IntInterface {
-
-	public Long2Int() {
-		size = 115911564;
-	}
-
-	public Long2Int(int s) {
-		size = s;
-	}
-
-	/** Integer counter for long2int */
-	final private int size; // 0x03ffffff //0x07ffffff
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.sp09k9992.Long2IntIterface#size()
-	 */
-	@Override
-	public int size() {
-		return size;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.sp09k9992.Long2IntIterface#start() has no meaning for this
-	 * implementation
-	 */
-	final public void start() {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see is2.sp09k9992.Long2IntIterface#l2i(long)
-	 */
-	@Override
-	final public int l2i(long l) {
-		if (l < 0)
-			return -1;
-
-		// this works well LAS 88.138
-		// int r= (int)(( l ^ (l&0xffffffff00000000L) >>> 29 ));//0x811c9dc5 ^
-		// // 29
-		// return Math.abs(r % size);
-		// this works a bit better and good with 0x03ffffff
-		//
-		/*
-		 * long r= l;//26 l = (l>>12)&0xfffffffffffff000L; r ^= l;//38 l =
-		 * (l>>11)&0xffffffffffffc000L; r ^= l;//49 l = (l>>9)&
-		 * 0xffffffffffff0000L; //53 r ^= l;//58 l = (l>>7)&0xfffffffffffc0000L;
-		 * //62 r ^=l;//65 int x = (int)r; x = x % size; // return x >= 0 ? x :
-		 * -x ;// Math.abs(r % size);
-		 * 
-		 */
-		// 26 0x03ffffff
-		// together with 0x07ffffff 27 88.372
-		long r = l;// 27
-		l = (l >> 13) & 0xffffffffffffe000L;
-		r ^= l; // 40
-		l = (l >> 11) & 0xffffffffffff0000L;
-		r ^= l; // 51
-		l = (l >> 9) & 0xfffffffffffc0000L; // 53
-		r ^= l; // 60
-		l = (l >> 7) & 0xfffffffffff00000L; // 62
-		r ^= l; // 67
-		int x = ((int) r) % size;
-
-		return x >= 0 ? x : -x;
-	}
-}
diff --git a/dependencyParser/mate-tools/src/is2/util/Options.java b/dependencyParser/mate-tools/src/is2/util/Options.java
deleted file mode 100644
index 30b53b0..0000000
--- a/dependencyParser/mate-tools/src/is2/util/Options.java
+++ /dev/null
@@ -1,133 +0,0 @@
-package is2.util;
-
-import java.io.File;
-
-public final class Options extends OptionsSuper {
-
-	public Options(String[] args) {
-
-		for (int i = 0; i < args.length; i++) {
-			String[] pair = args[i].split(":");
-
-			if (pair[0].equals("--help"))
-				explain();
-			else if (pair[0].equals("-train")) {
-				train = true;
-				trainfile = args[i + 1];
-			} else if (pair[0].equals("-eval")) {
-				eval = true;
-				goldfile = args[i + 1];
-				i++;
-			} else if (pair[0].equals("-test")) {
-				test = true;
-				testfile = args[i + 1];
-				i++;
-			} else if (pair[0].equals("-i")) {
-				numIters = Integer.parseInt(args[i + 1]);
-				i++;
-			} else if (pair[0].equals("-out")) {
-				outfile = args[i + 1];
-				i++;
-			} else if (pair[0].equals("-decode")) {
-				decodeProjective = args[i + 1].equals("proj");
-				i++;
-			} else if (pair[0].equals("-confidence")) {
-
-				conf = true;
-			}
-
-			else if (pair[0].equals("-count")) {
-				count = Integer.parseInt(args[i + 1]);
-				i++;
-			} else if (pair[0].equals("-model")) {
-				modelName = args[i + 1];
-				i++;
-			} else if (pair[0].equals("-device")) {
-				device = args[i + 1];
-				i++;
-			} else if (pair[0].equals("-tmp")) {
-				tmp = args[i + 1];
-				i++;
-			} else if (pair[0].equals("-format")) {
-				// format = args[i+1];
-				formatTask = Integer.parseInt(args[i + 1]);
-				i++;
-			} else if (pair[0].equals("-allfeatures")) {
-				allFeatures = true;
-			} else if (pair[0].equals("-nonormalize")) {
-				normalize = false;
-			} else if (pair[0].equals("-nframes")) {
-				// format = args[i+1];
-				nbframes = args[i + 1];
-				i++;
-
-			} else if (pair[0].equals("-pframes")) {
-				// format = args[i+1];
-				pbframes = args[i + 1];
-				i++;
-			} else if (pair[0].equals("-nopred")) {
-				nopred = true;
-			} else if (pair[0].equals("-divide")) {
-				keep = true;
-			} else if (pair[0].equals("-lexicon")) {
-				lexicon = args[i + 1];
-				i++;
-
-			} else
-				super.addOption(args, i);
-
-		}
-
-		try {
-
-			if (trainfile != null) {
-
-				if (keep && tmp != null) {
-					trainforest = new File(tmp);
-					if (!trainforest.exists())
-						keep = false;
-
-				} else if (tmp != null) {
-					trainforest = File.createTempFile("train", ".tmp", new File(tmp));
-					trainforest.deleteOnExit();
-				} else {
-					trainforest = File.createTempFile("train", ".tmp"); // ,new
-																		// File("F:\\")
-					trainforest.deleteOnExit();
-				}
-
-			}
-
-		} catch (java.io.IOException e) {
-			System.out.println("Unable to create tmp files for feature forests!");
-			System.out.println(e);
-			System.exit(0);
-		}
-	}
-
-	private void explain() {
-		System.out.println("Usage: ");
-		System.out.println("java -class mate.jar is2.parser.Parser [Options]");
-		System.out.println();
-		System.out.println("Example: ");
-		System.out.println(
-				" java -class mate.jar is2.parser.Parser -model eps3.model -train corpora/conll08st/train/train.closed -test corpora/conll08st/devel/devel.closed  -out b3.test -eval corpora/conll08st/devel/devel.closed  -count 2000 -i 6");
-		System.out.println("");
-		System.out.println("Options:");
-		System.out.println("");
-		System.out.println(" -train  <file>    the corpus a model is trained on; default " + this.trainfile);
-		System.out.println(" -test   <file>    the input corpus for testing; default " + this.testfile);
-		System.out.println(" -out    <file>    the output corpus (result) of a test run; default " + this.outfile);
-		System.out.println(" -model  <file>    the parsing model for traing the model is stored in the files");
-		System.out.println(
-				"                   and for parsing the model is load from this file; default " + this.modelName);
-		System.out.println(
-				" -i      <number>  the number of training iterations; good numbers are 10 for smaller corpora and 6 for bigger; default "
-						+ this.numIters);
-		System.out.println(" -count  <number>  the n first sentences of the corpus are take for the training default "
-				+ this.count);
-		System.out.println(" -format <number>  conll format of the year 8 or 9; default " + this.formatTask);
-
-		System.exit(0);
-	}
-}
diff --git a/dependencyParser/mate-tools/src/is2/util/OptionsSuper.java b/dependencyParser/mate-tools/src/is2/util/OptionsSuper.java
deleted file mode 100755
index f6370f7..0000000
--- a/dependencyParser/mate-tools/src/is2/util/OptionsSuper.java
+++ /dev/null
@@ -1,231 +0,0 @@
-package is2.util;
-
-import java.io.File;
-
-public class OptionsSuper {
-
-	public String trainfile = null;
-	public String testfile = null;
-	public File trainforest = null;
-
-	public String nbframes = null;
-	public String pbframes = null;
-
-	public boolean nopred = false;
-	public boolean upper = false;
-
-	public boolean train = false;
-	public boolean eval = false;
-	public boolean test = false;
-	public boolean keep = false;
-	public boolean flt = false;
-	public boolean loadTaggerModels = false;
-
-	public String modelName = "prs.mdl";
-	public String modelTaggerName = null;
-
-	public String useMapping = null;
-	public String device = "C:";
-	public String tmp = null;
-	public boolean createForest = true;
-	public boolean decodeProjective = false;
-	public double decodeTH = 0.3d;
-	public String format = "CONLL";
-	public int formatTask = 9;
-	public int numIters = 10;
-	public int best = 1000;
-	public String outfile = "dp.conll";
-	public String charset = "UTF-8";
-	public String phraseTrain = null;
-	public String phraseTest = null;
-	public String goldfile = null;
-	public String gout = "sec23.gld";
-	public String features = null;
-	public String lexicon = null;
-	public int hsize = 0x07ffffff;
-	public int maxLen = 2000;
-	public int maxForms = Integer.MAX_VALUE;
-	public int beam = 4;
-	public float prune = -100000000;
-
-	public String third = "";
-	public String second = "";
-	public String first = "";
-
-	public int cross = 10;
-
-	// public boolean secondOrder = true;
-	public boolean useRelationalFeatures = false;
-	public int count = 10000000;
-	public int cores = Integer.MAX_VALUE;
-	public int start = 0;
-	public int minOccureForms = 0;
-	public int tt = 30; // tagger averaging
-	public boolean allFeatures = false;
-	public boolean normalize = false;
-	public boolean no2nd = false;
-	public boolean noLemmas = false;
-	public boolean few2nd = false, noLinear = false, noMorph = false;
-	public String clusterFile;
-
-	// output confidence values
-	public boolean conf = false;
-	public String phraseFormat = "penn"; // tiger | penn
-	public boolean average = true;
-	public boolean label = false;
-	public boolean stack = false;
-	public boolean oneRoot = false;
-
-	public String significant1 = null, significant2 = null;
-
-	// horizontal stacking
-	public int minLength = 0, maxLength = Integer.MAX_VALUE;
-	public boolean overwritegold = false;
-
-	public static final int MULTIPLICATIVE = 1, SHIFT = 2;
-	public int featureCreation = MULTIPLICATIVE;
-
-	public OptionsSuper(String[] args, String dummy) {
-
-		for (int i = 0; i < args.length; i++) {
-			i = addOption(args, i);
-		}
-
-	}
-
-	public OptionsSuper() {
-	}
-
-	public int addOption(String args[], int i) {
-
-		if (args[i].equals("-train")) {
-			train = true;
-			trainfile = args[i + 1];
-		} else if (args[i].equals("-eval")) {
-			eval = true;
-			goldfile = args[i + 1];
-			i++;
-		} else if (args[i].equals("-gout")) {
-			gout = args[i + 1];
-			i++;
-		} else if (args[i].equals("-test")) {
-			test = true;
-			testfile = args[i + 1];
-			i++;
-		} else if (args[i].equals("-sig1")) {
-			significant1 = args[i + 1];
-			i++;
-		} else if (args[i].equals("-sig2")) {
-			significant2 = args[i + 1];
-			i++;
-		} else if (args[i].equals("-i")) {
-			numIters = Integer.parseInt(args[i + 1]);
-			i++;
-		} else if (args[i].equals("-out")) {
-			outfile = args[i + 1];
-			i++;
-		} else if (args[i].equals("-cluster")) {
-			clusterFile = args[i + 1];
-			i++;
-		}
-
-		else if (args[i].equals("-count")) {
-			count = Integer.parseInt(args[i + 1]);
-			i++;
-		} else if (args[i].equals("-model")) {
-			modelName = args[i + 1];
-			i++;
-		} else if (args[i].equals("-tmodel")) {
-			this.modelTaggerName = args[i + 1];
-			i++;
-		} else if (args[i].equals("-nonormalize")) {
-			normalize = false;
-		} else if (args[i].equals("-float")) {
-			flt = true;
-		} else if (args[i].equals("-hsize")) {
-			hsize = Integer.parseInt(args[i + 1]);
-			i++;
-		} else if (args[i].equals("-charset")) {
-			charset = args[++i];
-		} else if (args[i].equals("-pstrain")) {
-			this.phraseTrain = args[i + 1];
-			i++;
-		} else if (args[i].equals("-pstest")) {
-			this.phraseTest = args[i + 1];
-			i++;
-		} else if (args[i].equals("-len")) {
-			maxLen = Integer.parseInt(args[i + 1]);
-			i++;
-		} else if (args[i].equals("-cores")) {
-			cores = Integer.parseInt(args[i + 1]);
-			i++;
-		} else if (args[i].equals("-start")) {
-			start = Integer.parseInt(args[i + 1]);
-			i++;
-		} else if (args[i].equals("-max")) {
-			maxLength = Integer.parseInt(args[i + 1]);
-			i++;
-		} else if (args[i].equals("-min")) {
-			minLength = Integer.parseInt(args[i + 1]);
-			i++;
-		} else if (args[i].equals("-noLemmas")) {
-			noLemmas = true;
-		} else if (args[i].equals("-noavg")) {
-			this.average = false;
-		} else if (args[i].equals("-label")) {
-			label = true;
-		} else if (args[i].equals("-stack")) {
-			stack = true;
-		} else if (args[i].equals("-overwritegold")) {
-			overwritegold = true;
-		} else if (args[i].equals("-format")) {
-			formatTask = Integer.parseInt(args[++i]);
-		} else if (args[i].equals("-tt")) {
-			tt = Integer.parseInt(args[++i]);
-		} else if (args[i].equals("-min-occure-forms")) {
-			minOccureForms = Integer.parseInt(args[++i]);
-		} else if (args[i].equals("-loadTaggerModels")) {
-			this.loadTaggerModels = true;
-			;
-
-		} else if (args[i].equals("-feature_creation")) {
-			this.featureCreation = args[++i].equals("shift") ? SHIFT : MULTIPLICATIVE;
-		}
-
-		return i;
-
-	}
-
-	@Override
-	public String toString() {
-		StringBuilder sb = new StringBuilder();
-		sb.append("FLAGS [");
-		sb.append("train-file: " + trainfile);
-		sb.append(" | ");
-		sb.append("test-file: " + testfile);
-		sb.append(" | ");
-		sb.append("gold-file: " + goldfile);
-		sb.append(" | ");
-		sb.append("output-file: " + outfile);
-		sb.append(" | ");
-		sb.append("model-name: " + modelName);
-		sb.append(" | ");
-		sb.append("train: " + train);
-		sb.append(" | ");
-		sb.append("test: " + test);
-		sb.append(" | ");
-		sb.append("eval: " + eval);
-		sb.append(" | ");
-		sb.append("training-iterations: " + numIters);
-		sb.append(" | ");
-		sb.append("decode-type: " + decodeProjective);
-		sb.append(" | ");
-		sb.append("create-forest: " + createForest);
-		sb.append(" | ");
-		sb.append("format: " + format);
-
-		sb.append("]\n");
-		return sb.toString();
-	}
-
-}
\ No newline at end of file
diff --git a/dependencyParser/mate-tools/src/is2/util/ParserEvaluator.java b/dependencyParser/mate-tools/src/is2/util/ParserEvaluator.java
deleted file mode 100644
index 95e8949..0000000
--- a/dependencyParser/mate-tools/src/is2/util/ParserEvaluator.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package is2.util;
-
-import is2.data.SentenceData09;
-import is2.io.CONLLReader09;
-
-public class ParserEvaluator {
-
-	public static final String PUNCT = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
-
-	public static class Results {
-
-		public int total;
-		public int corr;
-		public float las;
-		public float ula;
-
-	}
-
-	public static Results evaluate(String act_file, String pred_file) throws Exception {
-
-		CONLLReader09 goldReader = new CONLLReader09(act_file, -1);
-		CONLLReader09 predictedReader = new CONLLReader09(pred_file, -1);
-
-		int total = 0, corr = 0, corrL = 0;
-		int numsent = 0, corrsent = 0, corrsentL = 0;
-		SentenceData09 goldInstance = goldReader.getNext();
-		SentenceData09 predInstance = predictedReader.getNext();
-
-		while (goldInstance != null) {
-
-			int instanceLength = goldInstance.length();
-
-			if (instanceLength != predInstance.length())
-				System.out.println("Lengths do not match on sentence " + numsent);
-
-			int[] goldHeads = goldInstance.heads;
-			String[] goldLabels = goldInstance.labels;
-			int[] predHeads = predInstance.pheads;
-			String[] predLabels = predInstance.plabels;
-
-			boolean whole = true;
-			boolean wholeL = true;
-
-			// NOTE: the first item is the root info added during
-			// nextInstance(), so we skip it.
-
-			int punc = 0;
-			for (int i = 1; i < instanceLength; i++) {
-				if (predHeads[i] == goldHeads[i]) {
-					corr++;
-
-					if (goldLabels[i].equals(predLabels[i]))
-						corrL++;
-					else {
-						// System.out.println(numsent+" error gold
-						// "+goldLabels[i]+" "+predLabels[i]+" head
-						// "+goldHeads[i]+" child "+i);
-						wholeL = false;
-					}
-				} else {
-					// System.out.println(numsent+"error gold "+goldLabels[i]+"
-					// "+predLabels[i]+" head "+goldHeads[i]+" child "+i);
-					whole = false;
-					wholeL = false;
-				}
-			}
-			total += ((instanceLength - 1) - punc); // Subtract one to not score
-													// fake root token
-
-			if (whole)
-				corrsent++;
-			if (wholeL)
-				corrsentL++;
-			numsent++;
-
-			goldInstance = goldReader.getNext();
-			predInstance = predictedReader.getNext();
-		}
-
-		Results r = new Results();
-
-		r.total = total;
-		r.corr = corr;
-		r.las = (float) Math.round(((double) corrL / total) * 100000) / 1000;
-		r.ula = (float) Math.round(((double) corr / total) * 100000) / 1000;
-		System.out.print("Total: " + total + " \tCorrect: " + corr + " ");
-		System.out.println("LAS: " + (double) Math.round(((double) corrL / total) * 100000) / 1000 + " \tTotal: "
-				+ (double) Math.round(((double) corrsentL / numsent) * 100000) / 1000 + " \tULA: "
-				+ (double) Math.round(((double) corr / total) * 100000) / 1000 + " \tTotal: "
-				+ (double) Math.round(((double) corrsent / numsent) * 100000) / 1000);
-
-		return r;
-	}
-
-	public static float round(double v) {
-
-		return Math.round(v * 10000F) / 10000F;
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/util/Split.java b/dependencyParser/mate-tools/src/is2/util/Split.java
deleted file mode 100755
index ea1151b..0000000
--- a/dependencyParser/mate-tools/src/is2/util/Split.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package is2.util;
-
-import java.io.BufferedReader;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.Reader;
-import java.nio.channels.Channels;
-import java.nio.channels.FileChannel;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.util.StringTokenizer;
-
-public class Split {
-
-	/**
-	 * Splits a tokenized sentences into one word per line format:
-	 *
-	 * Input > I am an text . > Sentence two ...
-	 *
-	 * Output: I _ _ _ ... am _ _ _ ... ...
-	 *
-	 * @param args
-	 * @throws IOException
-	 */
-	public static void main(String args[]) throws IOException {
-
-		if (args.length != 1) {
-			System.out.println("Please provide a file name.");
-			System.exit(0);
-		}
-
-		String filename = args[0];
-		// Charset charset = Charset.forName("UTF-8");
-
-		FileInputStream in = new FileInputStream(filename);
-		FileChannel channel = in.getChannel();
-		CharsetDecoder decoder = Charset.defaultCharset().newDecoder();// charset.newDecoder();
-		Reader infile = Channels.newReader(channel, decoder, 16 * 1024);
-		BufferedReader bInfile = new BufferedReader(infile);
-
-		// DataOutputStream dos = new DataOutputStream(new
-		// BufferedOutputStream(new FileOutputStream(options.modelName)));
-
-		String s;
-		while ((s = bInfile.readLine()) != null) {
-
-			// do the first tokens contain a colon?
-			int colon = 0;
-			for (int k = 0; k < 12; k++) {
-				if (s.length() <= k)
-					break;
-				if (s.charAt(k) == ':') {
-
-					colon++;
-					break;
-				}
-				if (s.charAt(k) == ' ')
-					break;
-			}
-
-			String prefix = colon > 0 ? s.substring(0, s.indexOf(":")) + "_" : "";
-
-			if (colon > 0) {
-				s = s.substring(s.indexOf(":") + 1);
-			}
-
-			StringTokenizer t = new StringTokenizer(s);
-			int i = 1;
-			boolean found = false;
-			while (t.hasMoreTokens()) {
-				found = true;
-				String tk = t.nextToken();
-				if (tk.contains("="))
-					continue;
-				System.out.print(prefix + i + "\t");
-				System.out.print(tk);
-				System.out.println("\t_\t_\t_\t_\t_\t_\t_\t_\t_\t_\t_\t_\t_");
-				i++;
-			}
-			if (found)
-				System.out.println();
-
-		}
-		bInfile.close();
-		in.close();
-
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/util/Split2.java b/dependencyParser/mate-tools/src/is2/util/Split2.java
deleted file mode 100644
index 4ed4004..0000000
--- a/dependencyParser/mate-tools/src/is2/util/Split2.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package is2.util;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.util.StringTokenizer;
-
-public class Split2 {
-
-	/**
-	 * Splits a tokenized sentences into one word per line format:
-	 *
-	 * Input > I am an text . > Sentence two ...
-	 *
-	 * Output: I _ _ _ ... am _ _ _ ... ...
-	 *
-	 * @param args
-	 * @throws IOException
-	 */
-	public static void main(String args[]) throws IOException {
-
-		if (args.length < 1) {
-			System.out.println("Please provide a file name.");
-			System.exit(0);
-		}
-
-		BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(args[0]), "UTF-8"), 32768);
-		BufferedWriter write = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(args[1]), "ISO-8859-1"));
-
-		String s;
-		int cnt = 0;
-		while ((s = reader.readLine()) != null) {
-			StringTokenizer t = new StringTokenizer(s);
-			while (t.hasMoreTokens()) {
-				String tk = t.nextToken();
-				for (int c : tk.toCharArray()) {
-					if (c < 0 && c >= 255)
-						System.out.println("contain sign " + c + " " + cnt);
-				}
-				write.write(tk);
-				write.newLine();
-				cnt++;
-			}
-			write.newLine();
-		}
-		reader.close();
-		write.flush();
-		write.close();
-
-	}
-
-}
diff --git a/dependencyParser/mate-tools/src/is2/util/Split3.java b/dependencyParser/mate-tools/src/is2/util/Split3.java
deleted file mode 100644
index 2cf7cf2..0000000
--- a/dependencyParser/mate-tools/src/is2/util/Split3.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package is2.util;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.util.StringTokenizer;
-
-public class Split3 {
-
-	/**
-	 * Splits a tokenized sentences into one word per line format:
-	 *
-	 * Input > I am an text . > Sentence two ...
-	 *
-	 * Output: I _ _ _ ... am _ _ _ ... ...
-	 *
-	 * @param args
-	 * @throws IOException
-	 */
-	public static void main(String args[]) throws IOException {
-
-		if (args.length < 1) {
-			System.out.println("Please provide a file name.");
-			System.exit(0);
-		}
-
-		BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(args[0]), "UTF-8"), 32768);
-		BufferedWriter write = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(args[1]), "UTF-8"),
-				32768);
-
-		String s;
-		while ((s = reader.readLine()) != null) {
-			StringTokenizer t = new StringTokenizer(s);
-			while (t.hasMoreTokens()) {
-				String tk = t.nextToken();
-				write.write(tk);
-				write.newLine();
-			}
-			write.newLine();
-		}
-		reader.close();
-		write.flush();
-		write.close();
-
-	}
-
-}
--
libgit2 0.22.2