# HG changeset patch # User Raimund Renkert # Date 1478509762 -3600 # Node ID 5eb9d35aa47ab975224d3dd06d01c268db43d948 # Parent cbdeac32465c09d683ebc992990f97370974525a Parse, map and merge orte. diff -r cbdeac32465c -r 5eb9d35aa47a src/main/antlr4/de/intevation/lada/importer/laf/Laf.g4 --- a/src/main/antlr4/de/intevation/lada/importer/laf/Laf.g4 Mon Nov 07 10:07:39 2016 +0100 +++ b/src/main/antlr4/de/intevation/lada/importer/laf/Laf.g4 Mon Nov 07 10:09:22 2016 +0100 @@ -33,18 +33,8 @@ | szenario | sek_datenbasis | sek_datenbasis_s - | us - | ph - | pg - | p_orts_zusatzkennzahl - | pk - | p_orts_zusatzcode - | p_orts_zusatztext - | p_nuts_code - | p_site_id - | p_site_name - | p_hoehe_nn - | p_hoehe_land + | ursprungsort + | entnahmeort | mehrzweckfeld | messung | pzb @@ -87,6 +77,19 @@ | rei_programmpunktgruppe ; +entnahmeort: ph + | pg + | p_orts_zusatzkennzahl + | pk + | p_orts_zusatzcode + | p_orts_zusatztext + | p_nuts_code + | p_site_id + | p_site_name + | p_hoehe_nn + | p_hoehe_land + ; + ph : p_herkunftsland_lang | p_herkunftsland_kurz | p_herkunftsland_s @@ -145,9 +148,12 @@ ; // URSPRUNGSORT -us : '%URSPRUNGSORT%' - ursprungsortdaten* - ; +ursprungsort: + (ursprungsort_header | + ursprungsortdaten+) +; + +ursprungsort_header : '%URSPRUNGSORT%' ; ursprungsortdaten : uh | ug diff -r cbdeac32465c -r 5eb9d35aa47a src/main/java/de/intevation/lada/importer/laf/LafBaseListener.java --- a/src/main/java/de/intevation/lada/importer/laf/LafBaseListener.java Mon Nov 07 10:07:39 2016 +0100 +++ b/src/main/java/de/intevation/lada/importer/laf/LafBaseListener.java Mon Nov 07 10:09:22 2016 +0100 @@ -149,6 +149,18 @@ * *

The default implementation does nothing.

*/ + @Override public void enterEntnahmeort(LafParser.EntnahmeortContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitEntnahmeort(LafParser.EntnahmeortContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ @Override public void enterPh(LafParser.PhContext ctx) { } /** * {@inheritDoc} @@ -293,13 +305,25 @@ * *

The default implementation does nothing.

*/ - @Override public void enterUs(LafParser.UsContext ctx) { } + @Override public void enterUrsprungsort(LafParser.UrsprungsortContext ctx) { } /** * {@inheritDoc} * *

The default implementation does nothing.

*/ - @Override public void exitUs(LafParser.UsContext ctx) { } + @Override public void exitUrsprungsort(LafParser.UrsprungsortContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterUrsprungsort_header(LafParser.Ursprungsort_headerContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUrsprungsort_header(LafParser.Ursprungsort_headerContext ctx) { } /** * {@inheritDoc} * diff -r cbdeac32465c -r 5eb9d35aa47a src/main/java/de/intevation/lada/importer/laf/LafListener.java --- a/src/main/java/de/intevation/lada/importer/laf/LafListener.java Mon Nov 07 10:07:39 2016 +0100 +++ b/src/main/java/de/intevation/lada/importer/laf/LafListener.java Mon Nov 07 10:09:22 2016 +0100 @@ -119,6 +119,16 @@ */ void exitRei(LafParser.ReiContext ctx); /** + * Enter a parse tree produced by {@link LafParser#entnahmeort}. + * @param ctx the parse tree + */ + void enterEntnahmeort(LafParser.EntnahmeortContext ctx); + /** + * Exit a parse tree produced by {@link LafParser#entnahmeort}. + * @param ctx the parse tree + */ + void exitEntnahmeort(LafParser.EntnahmeortContext ctx); + /** * Enter a parse tree produced by {@link LafParser#ph}. * @param ctx the parse tree */ @@ -239,15 +249,25 @@ */ void exitPn(LafParser.PnContext ctx); /** - * Enter a parse tree produced by {@link LafParser#us}. + * Enter a parse tree produced by {@link LafParser#ursprungsort}. * @param ctx the parse tree */ - void enterUs(LafParser.UsContext ctx); + void enterUrsprungsort(LafParser.UrsprungsortContext ctx); /** - * Exit a parse tree produced by {@link LafParser#us}. + * Exit a parse tree produced by {@link LafParser#ursprungsort}. * @param ctx the parse tree */ - void exitUs(LafParser.UsContext ctx); + void exitUrsprungsort(LafParser.UrsprungsortContext ctx); + /** + * Enter a parse tree produced by {@link LafParser#ursprungsort_header}. + * @param ctx the parse tree + */ + void enterUrsprungsort_header(LafParser.Ursprungsort_headerContext ctx); + /** + * Exit a parse tree produced by {@link LafParser#ursprungsort_header}. + * @param ctx the parse tree + */ + void exitUrsprungsort_header(LafParser.Ursprungsort_headerContext ctx); /** * Enter a parse tree produced by {@link LafParser#ursprungsortdaten}. * @param ctx the parse tree diff -r cbdeac32465c -r 5eb9d35aa47a src/main/java/de/intevation/lada/importer/laf/LafObjectListener.java --- a/src/main/java/de/intevation/lada/importer/laf/LafObjectListener.java Mon Nov 07 10:07:39 2016 +0100 +++ b/src/main/java/de/intevation/lada/importer/laf/LafObjectListener.java Mon Nov 07 10:09:22 2016 +0100 @@ -16,6 +16,8 @@ LafRawData data; LafRawData.Probe currentProbe; LafRawData.Messung currentMessung; + Map currentUOrt; + Map currentEOrt; Map> errors; ArrayList currentErrors; @@ -25,12 +27,18 @@ private boolean hasZeitbasis = false; private boolean hasUebertragungsformat = false; private boolean hasVersion = false; - + private boolean hasEHerkunfstland = false; + private boolean hasEGemeinde = false; + private boolean hasEKoordinaten = false; + private boolean hasUHerkunfstland = false; + private boolean hasUGemeinde = false; + private boolean hasUKoordinaten = false; public LafObjectListener() { data = new LafRawData(); errors = new HashMap>(); currentErrors = new ArrayList(); + currentUOrt = new HashMap(); } public LafRawData getData() { @@ -106,6 +114,15 @@ currentProbe.addMessung(currentMessung); currentMessung = null; } + if (currentUOrt != null && !currentUOrt.isEmpty()) { + currentProbe.addUrsprungsOrt(currentUOrt); + currentUOrt.clear(); + } + if (currentEOrt != null && !currentEOrt.isEmpty()) { + currentProbe.addEntnahmeOrt(currentEOrt); + currentEOrt.clear(); + } + currentEOrt = new HashMap(); currentProbe = data.new Probe(); } @@ -141,14 +158,6 @@ * *

The default implementation does nothing.

*/ - @Override public void enterUs(LafParser.UsContext ctx) { - } - - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ @Override public void enterMp(LafParser.MpContext ctx) { } @@ -273,6 +282,14 @@ if (currentMessung != null) { currentProbe.addMessung(currentMessung); } + if (currentUOrt != null && !currentUOrt.isEmpty()) { + currentProbe.addUrsprungsOrt(currentUOrt); + currentUOrt.clear(); + } + if (currentEOrt != null && !currentEOrt.isEmpty()) { + currentProbe.addEntnahmeOrt(currentEOrt); + currentEOrt.clear(); + } currentMessung = data.new Messung(); } @@ -291,6 +308,35 @@ * *

The default implementation does nothing.

*/ + @Override public void enterUrsprungsort(LafParser.UrsprungsortContext ctx) { + if (currentMessung != null) { + currentProbe.addMessung(currentMessung); + currentMessung = data.new Messung(); + } + if (currentUOrt != null && !currentUOrt.isEmpty()) { + currentProbe.addUrsprungsOrt(currentUOrt); + } + if (currentEOrt != null && !currentEOrt.isEmpty()) { + currentProbe.addEntnahmeOrt(currentEOrt); + currentEOrt.clear(); + } + currentUOrt.clear(); + } + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitUrsprungsort(LafParser.UrsprungsortContext ctx) { + } + + + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ @Override public void enterMm(LafParser.MmContext ctx) { } @@ -1238,6 +1284,8 @@ currentErrors.add(err);; return; } + currentUOrt.put(ctx.getChild(0).toString().toUpperCase(), value); + hasUHerkunfstland = true; // TODO: Add to "ursprungsort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1261,6 +1309,8 @@ currentErrors.add(err);; return; } + currentUOrt.put(ctx.getChild(0).toString().toUpperCase(), value); + hasUHerkunfstland = true; // TODO: Add to "ursprungsort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1284,6 +1334,8 @@ currentErrors.add(err);; return; } + currentUOrt.put(ctx.getChild(0).toString().toUpperCase(), value); + hasUHerkunfstland = true; // TODO: Add to "ursprungsort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1307,6 +1359,8 @@ currentErrors.add(err);; return; } + currentUOrt.put(ctx.getChild(0).toString().toUpperCase(), value); + hasUGemeinde= true; // TODO: Add to "ursprungsort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1330,6 +1384,8 @@ currentErrors.add(err);; return; } + currentUOrt.put(ctx.getChild(0).toString().toUpperCase(), value); + hasUGemeinde= true; // TODO: Add to "ursprungsort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1353,6 +1409,7 @@ currentErrors.add(err);; return; } + currentUOrt.put(ctx.getChild(0).toString().toUpperCase(), value); // TODO: Add to "ursprungsort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1396,6 +1453,10 @@ currentErrors.add(err);; return; } + currentUOrt.put("U_KOORDINATEN_X", koord1); + currentUOrt.put("U_KOORDINATEN_Y", koord2); + currentUOrt.put("U_KOORDINATEN_ART", art); + hasUKoordinaten = true; // TODO: Add to "ursprungsort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1406,6 +1467,7 @@ *

The default implementation does nothing.

*/ @Override public void enterU_koordinaten_s(LafParser.U_koordinaten_sContext ctx) { + System.out.println("koordinaten"); if (ctx.getChildCount() < 6) { return; } @@ -1439,6 +1501,11 @@ currentErrors.add(err);; return; } + System.out.println("add"); + currentUOrt.put("U_KOORDINATEN_X", koord1); + currentUOrt.put("U_KOORDINATEN_Y", koord2); + currentUOrt.put("U_KOORDINATEN_ART_S", art); + hasUKoordinaten = true; // TODO: Add to "ursprungsort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1462,6 +1529,7 @@ currentErrors.add(err); return; } + currentUOrt.put(ctx.getChild(0).toString().toUpperCase(), value); // TODO: Add to "ursprungsort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1485,6 +1553,7 @@ currentErrors.add(err);; return; } + currentUOrt.put(ctx.getChild(0).toString().toUpperCase(), value); // TODO: Add to "ursprungsort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1508,6 +1577,7 @@ currentErrors.add(err);; return; } + currentUOrt.put(ctx.getChild(0).toString().toUpperCase(), value); // TODO: Add to "ursprungsort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1518,6 +1588,9 @@ *

The default implementation does nothing.

*/ @Override public void enterP_herkunftsland_lang(LafParser.P_herkunftsland_langContext ctx) { + if (hasEHerkunfstland) { + return; + } if (ctx.getChildCount() < 2) { return; } @@ -1531,6 +1604,8 @@ currentErrors.add(err);; return; } + currentEOrt.put(ctx.getChild(0).toString().toUpperCase(), value); + hasEHerkunfstland = true; // TODO: Add to "entnahmeort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1541,6 +1616,9 @@ *

The default implementation does nothing.

*/ @Override public void enterP_herkunftsland_kurz(LafParser.P_herkunftsland_kurzContext ctx) { + if (hasEHerkunfstland) { + return; + } if (ctx.getChildCount() < 2) { return; } @@ -1554,6 +1632,8 @@ currentErrors.add(err);; return; } + currentEOrt.put(ctx.getChild(0).toString().toUpperCase(), value); + hasEHerkunfstland = true; // TODO: Add to "entnahmeort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1564,6 +1644,9 @@ *

The default implementation does nothing.

*/ @Override public void enterP_herkunftsland_s(LafParser.P_herkunftsland_sContext ctx) { + if (hasEHerkunfstland) { + return; + } if (ctx.getChildCount() < 2) { return; } @@ -1577,6 +1660,8 @@ currentErrors.add(err);; return; } + currentEOrt.put(ctx.getChild(0).toString().toUpperCase(), value); + hasEHerkunfstland = true; // TODO: Add to "entnahmeort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1587,6 +1672,9 @@ *

The default implementation does nothing.

*/ @Override public void enterP_gemeindeschluessel(LafParser.P_gemeindeschluesselContext ctx) { + if (hasEGemeinde) { + return; + } if (ctx.getChildCount() < 2) { return; } @@ -1600,6 +1688,8 @@ currentErrors.add(err);; return; } + currentEOrt.put(ctx.getChild(0).toString().toUpperCase(), value); + hasEGemeinde = true; // TODO: Add to "entnahmeort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1610,6 +1700,9 @@ *

The default implementation does nothing.

*/ @Override public void enterP_gemeindename(LafParser.P_gemeindenameContext ctx) { + if (hasEGemeinde) { + return; + } if (ctx.getChildCount() < 2) { return; } @@ -1623,6 +1716,8 @@ currentErrors.add(err);; return; } + currentEOrt.put(ctx.getChild(0).toString().toUpperCase(), value); + hasEGemeinde = true; // TODO: Add to "entnahmeort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1646,6 +1741,7 @@ currentErrors.add(err);; return; } + currentEOrt.put(ctx.getChild(0).toString().toUpperCase(), value); // TODO: Add to "entnahmeort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1656,6 +1752,9 @@ *

The default implementation does nothing.

*/ @Override public void enterP_koordinaten(LafParser.P_koordinatenContext ctx) { + if (hasEKoordinaten) { + return; + } if (ctx.getChildCount() < 6) { return; } @@ -1689,6 +1788,10 @@ currentErrors.add(err);; return; } + currentEOrt.put("P_KOORDINATEN_X", koord1); + currentEOrt.put("P_KOORDINATEN_Y", koord2); + currentEOrt.put("P_KOORDINATEN_ART", art); + hasEKoordinaten = true; // TODO: Add to "entnahmeort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1699,6 +1802,9 @@ *

The default implementation does nothing.

*/ @Override public void enterP_koordinaten_s(LafParser.P_koordinaten_sContext ctx) { + if (hasEKoordinaten) { + return; + } if (ctx.getChildCount() < 6) { return; } @@ -1732,6 +1838,10 @@ currentErrors.add(err);; return; } + currentEOrt.put("P_KOORDINATEN_X", koord1); + currentEOrt.put("P_KOORDINATEN_Y", koord2); + currentEOrt.put("P_KOORDINATEN_ART_S", art); + hasEKoordinaten = true; // TODO: Add to "entnahmeort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1755,6 +1865,7 @@ currentErrors.add(err);; return; } + currentEOrt.put(ctx.getChild(0).toString().toUpperCase(), value); // TODO: Add to "entnahmeort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1778,6 +1889,7 @@ currentErrors.add(err);; return; } + currentEOrt.put(ctx.getChild(0).toString().toUpperCase(), value); // TODO: Add to "entnahmeort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1801,6 +1913,7 @@ currentErrors.add(err);; return; } + currentEOrt.put(ctx.getChild(0).toString().toUpperCase(), value); // TODO: Add to "entnahmeort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1824,6 +1937,7 @@ currentErrors.add(err);; return; } + currentEOrt.put(ctx.getChild(0).toString().toUpperCase(), value); // TODO: Add to "entnahmeort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1847,6 +1961,7 @@ currentErrors.add(err);; return; } + currentEOrt.put(ctx.getChild(0).toString().toUpperCase(), value); // TODO: Add to "entnahmeort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1870,6 +1985,7 @@ currentErrors.add(err);; return; } + currentEOrt.put(ctx.getChild(0).toString().toUpperCase(), value); // TODO: Add to "entnahmeort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } @@ -1893,6 +2009,7 @@ currentErrors.add(err);; return; } + currentEOrt.put(ctx.getChild(0).toString().toUpperCase(), value); // TODO: Add to "entnahmeort" //currentProbe.addAttribute(ctx.getChild(0).toString().toUpperCase(), value); } diff -r cbdeac32465c -r 5eb9d35aa47a src/main/java/de/intevation/lada/importer/laf/LafObjectMapper.java --- a/src/main/java/de/intevation/lada/importer/laf/LafObjectMapper.java Mon Nov 07 10:07:39 2016 +0100 +++ b/src/main/java/de/intevation/lada/importer/laf/LafObjectMapper.java Mon Nov 07 10:09:22 2016 +0100 @@ -27,19 +27,25 @@ import de.intevation.lada.model.land.KommentarP; import de.intevation.lada.model.land.Messung; import de.intevation.lada.model.land.Messwert; +import de.intevation.lada.model.land.Ortszuordnung; import de.intevation.lada.model.land.Probe; import de.intevation.lada.model.land.StatusProtokoll; import de.intevation.lada.model.land.ZusatzWert; import de.intevation.lada.model.stammdaten.Datenbasis; +import de.intevation.lada.model.stammdaten.KoordinatenArt; import de.intevation.lada.model.stammdaten.MessEinheit; import de.intevation.lada.model.stammdaten.MessStelle; import de.intevation.lada.model.stammdaten.Messgroesse; import de.intevation.lada.model.stammdaten.MessprogrammKategorie; import de.intevation.lada.model.stammdaten.MessprogrammTransfer; +import de.intevation.lada.model.stammdaten.Ort; +import de.intevation.lada.model.stammdaten.Ortszusatz; import de.intevation.lada.model.stammdaten.ProbenZusatz; import de.intevation.lada.model.stammdaten.Probenart; +import de.intevation.lada.model.stammdaten.Staat; import de.intevation.lada.model.stammdaten.StatusKombi; import de.intevation.lada.model.stammdaten.Umwelt; +import de.intevation.lada.model.stammdaten.Verwaltungseinheit; import de.intevation.lada.util.annotation.AuthorizationConfig; import de.intevation.lada.util.annotation.RepositoryConfig; import de.intevation.lada.util.auth.Authorization; @@ -183,10 +189,8 @@ currentWarnings.add(new ReportItem("validation", warn.getKey(), code)); } } - if (!violation.hasErrors()) { - Response created = repository.create(probe, "land"); - newProbe = ((Probe)created.getData()); - } + Response created = repository.create(probe, "land"); + newProbe = ((Probe)created.getData()); } } catch (InvalidTargetObjectTypeException e) { ReportItem err = new ReportItem(); @@ -204,37 +208,50 @@ } return; } - if (newProbe != null) { - // Create kommentar objects - List kommentare = new ArrayList(); - for (int i = 0; i < object.getKommentare().size(); i++) { - KommentarP tmp = createProbeKommentar( - object.getKommentare().get(i), newProbe.getId()); - if (tmp != null) { - kommentare.add(tmp); - } - } - // Persist kommentar objects - merger.mergeKommentare(newProbe, kommentare); - - // Create zusatzwert objects - List zusatzwerte = new ArrayList(); - for (int i = 0; i < object.getZusatzwerte().size(); i++) { - ZusatzWert tmp = createZusatzwert( - object.getZusatzwerte().get(i), newProbe.getId()); - if (tmp != null) { - zusatzwerte.add(tmp); - } - } - // Persist zusatzwert objects - merger.mergeZusatzwerte(newProbe, zusatzwerte); - - // Create messung objects - for (LafRawData.Messung messung : object.getMessungen()) { - create(messung, newProbe.getId(), newProbe.getMstId()); + if (newProbe == null) { + // Only occurs if object type is not probe + return; + } + // Create kommentar objects + List kommentare = new ArrayList(); + for (int i = 0; i < object.getKommentare().size(); i++) { + KommentarP tmp = createProbeKommentar(object.getKommentare().get(i), newProbe.getId()); + if (tmp != null) { + kommentare.add(tmp); } } + // Persist kommentar objects + merger.mergeKommentare(newProbe, kommentare); + // Create zusatzwert objects + List zusatzwerte = new ArrayList(); + for (int i = 0; i < object.getZusatzwerte().size(); i++) { + ZusatzWert tmp = createZusatzwert(object.getZusatzwerte().get(i), newProbe.getId()); + if (tmp != null) { + zusatzwerte.add(tmp); + } + } + // Persist zusatzwert objects + merger.mergeZusatzwerte(newProbe, zusatzwerte); + + // Merge entnahmeOrt + createEntnahmeOrt(object.getEntnahmeOrt(), newProbe.getId()); + + // Create ursprungsOrte + List uOrte = new ArrayList(); + for (int i = 0; i < object.getUrsprungsOrte().size(); i++) { + Ortszuordnung tmp = createUrsprungsOrt(object.getUrsprungsOrte().get(i), newProbe.getId()); + if (tmp != null) { + uOrte.add(tmp); + } + } + // Persist ursprungsOrte + merger.mergeUrsprungsOrte(newProbe.getId(), uOrte); + + // Create messung objects + for (int i = 0; i < object.getMessungen().size(); i++) { + create(object.getMessungen().get(i), newProbe.getId(), newProbe.getMstId()); + } if (currentErrors.size() > 0) { errors.put(object.getIdentifier(), new ArrayList(currentErrors)); @@ -575,6 +592,204 @@ } } + private Ortszuordnung createUrsprungsOrt( + Map ursprungsOrt, + Integer id + ) { + Ortszuordnung ort = new Ortszuordnung(); + ort.setOrtszuordnungTyp("U"); + ort.setProbeId(id); + + Ort o = findOrCreateOrt(ursprungsOrt, "U_"); + if (o == null) { + return null; + } + ort.setOrtId(Long.valueOf(o.getId())); + if (ursprungsOrt.containsKey("U_ORTS_ZUSATZTEXT")) { + ort.setOrtszusatztext(ursprungsOrt.get("U_ORTS_ZUSATZTEXT")); + } + if (ursprungsOrt.containsKey("U_ORTS_ZUSATZCODE")) { + Ortszusatz zusatz = repository.getByIdPlain( + Ortszusatz.class, + ursprungsOrt.get("U_ORTS_ZUSATZCODE"), + "stamm"); + if (zusatz != null) { + o.setOzId(zusatz.getOzsId()); + repository.update(o, "stamm"); + } + } + return ort; + } + + private void createEntnahmeOrt( + Map entnahmeOrt, + Integer id + ) { + Ortszuordnung ort = new Ortszuordnung(); + ort.setOrtszuordnungTyp("E"); + ort.setProbeId(id); + + Ort o = findOrCreateOrt(entnahmeOrt, "P_"); + if (o == null) { + return; + } + ort.setOrtId(Long.valueOf(o.getId())); + if (entnahmeOrt.containsKey("P_ORTS_ZUSATZTEXT")) { + ort.setOrtszusatztext(entnahmeOrt.get("P_ORTS_ZUSATZTEXT")); + } + merger.mergeEntnahmeOrt(id, ort); + } + + private Ort findOrCreateOrt(Map attributes, String type) { + // If laf contains coordinates, find a ort with matching coordinates or + // create one. + for (Entry entry : attributes.entrySet()) { + logger.debug(entry.getKey() + ": " + entry.getValue()); + } + if ((attributes.get(type + "KOORDINATEN_ART") != null || + attributes.get(type + "KOORDINATEN_ART_S") != null) && + attributes.get(type + "KOORDINATEN_X") != null && + attributes.get(type + "KOORDINATEN_Y") != null + ) { + QueryBuilder builder = + new QueryBuilder( + repository.entityManager("stamm"), + Ort.class); + if (attributes.get(type + "KOORDINATEN_ART_S") != null) { + builder.and("kdaId", Integer.valueOf(attributes.get(type + "KOORDINATEN_ART_S"))); + } + else { + QueryBuilder kdaBuilder = + new QueryBuilder( + repository.entityManager("stamm"), + KoordinatenArt.class); + kdaBuilder.and("koordinatenart", attributes.get(type + "KOORDINATEN_ART")); + List arten = repository.filterPlain(kdaBuilder.getQuery(), "stamm"); + if (arten == null || arten.isEmpty()) { + ReportItem err = new ReportItem(); + err.setCode(632); + err.setKey("KoordinatenArt"); + err.setValue("Not found"); + currentErrors.add(err); + return null; + } + logger.debug("kda: " + arten.get(0).getId()); + builder.and("kdaId", arten.get(0).getId()); + } + builder.and("koordXExtern", attributes.get(type + "KOORDINATEN_X")); + builder.and("koordYExtern", attributes.get(type + "KOORDINATEN_Y")); + List orte = repository.filterPlain(builder.getQuery(), "stamm"); + logger.debug(attributes.get(type + "KOORDINATEN_ART_S")); + logger.debug(attributes.get(type + "KOORDINATEN_X")); + logger.debug(attributes.get(type + "KOORDINATEN_Y")); + logger.debug(orte.size()); + if (orte != null && orte.size() > 0) { + return orte.get(0); + } + else { + return createNewOrt(attributes, type); + } + } + // If laf contains gemeinde attributes, find a ort with matching gemId + // or create one. + String gemId = null; + if (attributes.get(type + "GEMEINDENAME") != null) { + QueryBuilder builder = + new QueryBuilder( + repository.entityManager("stamm"), + Verwaltungseinheit.class); + builder.and("bezeichnung", attributes.get(type + "GEMEINDENAME")); + List ves = + repository.filterPlain(builder.getQuery(), "stamm"); + if (ves != null && ves.size() > 0) { + gemId = ves.get(0).getId(); + } + } + else if (attributes.get(type + "GEMEINDESCHLUESSEL") != null) { + gemId = attributes.get(type + "GEMEINDESCHLUESSEL"); + } + if (gemId != null) { + QueryBuilder builder = + new QueryBuilder( + repository.entityManager("stamm"), + Ort.class); + builder.and("gemId", gemId); + List orte = repository.filterPlain(builder.getQuery(), "stamm"); + if (orte != null && orte.size() > 0) { + return orte.get(0); + } + else { + return createNewOrt(attributes, type); + } + } + else { + // Create a new ort. + } + return createNewOrt(attributes, type); + } + + private Ort createNewOrt(Map attributes, String type) { + Ort ort = new Ort(); + ort.setOrtTyp(1); + String hLand = ""; + String staatFilter = ""; + if (attributes.get(type + "HERKUNFTSLAND_S") != null) { + staatFilter = "staatIso"; + hLand = attributes.get(type + "HERKUNFTSLAND_S"); + } + else if (attributes.get(type + "HERKUNFTSLAND_KURZ") != null) { + staatFilter = "staatKurz"; + hLand = attributes.get(type + "HERKUNFTSLAND_KURZ"); + } + else if (attributes.get(type + "HERKUNFTSLAND_LANG") != null) { + staatFilter = "staat"; + hLand = attributes.get(type + "HERKUNFTSLAND_LANG"); + } + QueryBuilder builderStaat = + new QueryBuilder( + repository.entityManager("stamm"), + Staat.class); + if (staatFilter.length() > 0) { + builderStaat.and(staatFilter, hLand); + List staat = + repository.filterPlain(builderStaat.getQuery(), "stamm"); + if (staat != null && staat.size() > 0) { + ort.setStaatId(staat.get(0).getId()); + } + } + + String gemId = null; + if (attributes.get(type + "GEMEINDENAME") != null) { + QueryBuilder builder = + new QueryBuilder( + repository.entityManager("stamm"), + Verwaltungseinheit.class); + builder.and("bezeichnung", attributes.get(type + "GEMEINDENAME")); + List ves = + repository.filterPlain(builder.getQuery(), "stamm"); + if (ves != null && ves.size() > 0) { + gemId = ves.get(0).getId(); + } + } + else if (attributes.get(type + "GEMEINDESCHLUESSEL") != null) { + gemId = attributes.get(type + "GEMEINDESCHLUESSEL"); + } + if (gemId != null) { + ort.setGemId(gemId); + } + if ((attributes.get(type + "KOORDINATEN_ART") != null || + attributes.get(type + "KOORDINATEN_ART_S") != null) && + attributes.get(type + "KOORDINATEN_X") != null && + attributes.get(type + "KOORDINATEN_Y") != null + ) { + if (attributes.get(type + "KOORDINATEN_ART_S") != null) { + } + } +// repository.create(ort, "stamm"); +// return ort; + return null; + } + private void logProbe(Probe probe) { logger.debug("%PROBE%"); logger.debug("datenbasis: " + probe.getDatenbasisId()); @@ -653,12 +868,6 @@ if ("MESSSTELLE".equals(key)) { probe.setMstId(value.toString()); - - /* MESSLABOR is optional in LAF but probe.labor_mst_id is - * NOT NULL in the LADA database */ - if (probe.getLaborMstId() == null) { - probe.setLaborMstId(value.toString()); - } } if ("MESSLABOR".equals(key)) { diff -r cbdeac32465c -r 5eb9d35aa47a src/main/java/de/intevation/lada/importer/laf/LafParser.java --- a/src/main/java/de/intevation/lada/importer/laf/LafParser.java Mon Nov 07 10:07:39 2016 +0100 +++ b/src/main/java/de/intevation/lada/importer/laf/LafParser.java Mon Nov 07 10:09:22 2016 +0100 @@ -43,43 +43,44 @@ public static final int RULE_probendatei = 0, RULE_end = 1, RULE_probe = 2, RULE_probedaten = 3, RULE_messung = 4, RULE_mess_header = 5, RULE_messungdaten = 6, RULE_db = 7, - RULE_mp = 8, RULE_ub = 9, RULE_rei = 10, RULE_ph = 11, RULE_pg = 12, RULE_pk = 13, - RULE_zb = 14, RULE_pzb = 15, RULE_pkom = 16, RULE_sdm = 17, RULE_pnh = 18, - RULE_mm = 19, RULE_mw = 20, RULE_mess_kommentar = 21, RULE_pn = 22, RULE_us = 23, - RULE_ursprungsortdaten = 24, RULE_uh = 25, RULE_ug = 26, RULE_uk = 27, - RULE_version = 28, RULE_uebertragungsformat = 29, RULE_datenbasis = 30, - RULE_datenbasis_s = 31, RULE_netzkennung = 32, RULE_erzeuger = 33, RULE_staat_der_messstelle_lang = 34, - RULE_staat_der_messstelle_kurz = 35, RULE_staat_der_messstelle_s = 36, - RULE_messstelle = 37, RULE_messlabor = 38, RULE_probe_id = 39, RULE_messungs_id = 40, - RULE_proben_nr = 41, RULE_hauptprobennummer = 42, RULE_nebenprobennummer = 43, - RULE_messprogramm_c = 44, RULE_messprogramm_s = 45, RULE_messprogramm_land = 46, - RULE_probenahmeinstitution = 47, RULE_probenart = 48, RULE_zeitbasis = 49, - RULE_zeitbasis_s = 50, RULE_soll_datum_uhrzeit_a = 51, RULE_soll_datum_uhrzeit_e = 52, - RULE_ursprungs_datum_uhrzeit = 53, RULE_probenahme_datum_uhrzeit_a = 54, - RULE_probenahme_datum_uhrzeit_e = 55, RULE_umweltbereich_c = 56, RULE_umweltbereich_s = 57, - RULE_deskriptoren = 58, RULE_rei_programmpunkt = 59, RULE_rei_programmpunktgruppe = 60, - RULE_referenz_datum_uhrzeit = 61, RULE_testdaten = 62, RULE_szenario = 63, - RULE_sek_datenbasis = 64, RULE_sek_datenbasis_s = 65, RULE_u_herkunftsland_lang = 66, - RULE_u_herkunftsland_kurz = 67, RULE_u_herkunftsland_s = 68, RULE_u_gemeindeschluessel = 69, - RULE_u_gemeindename = 70, RULE_u_orts_zusatzkennzahl = 71, RULE_u_koordinaten = 72, - RULE_u_koordinaten_s = 73, RULE_u_orts_zusatzcode = 74, RULE_u_orts_zusatztext = 75, - RULE_u_nuts_code = 76, RULE_p_herkunftsland_lang = 77, RULE_p_herkunftsland_kurz = 78, - RULE_p_herkunftsland_s = 79, RULE_p_gemeindeschluessel = 80, RULE_p_gemeindename = 81, - RULE_p_orts_zusatzkennzahl = 82, RULE_p_koordinaten = 83, RULE_p_koordinaten_s = 84, - RULE_p_orts_zusatzcode = 85, RULE_p_orts_zusatztext = 86, RULE_p_nuts_code = 87, - RULE_p_site_id = 88, RULE_p_site_name = 89, RULE_p_hoehe_nn = 90, RULE_p_hoehe_land = 91, - RULE_mehrzweckfeld = 92, RULE_mess_datum_uhrzeit = 93, RULE_messzeit_sekunden = 94, - RULE_messmethode_c = 95, RULE_messmethode_s = 96, RULE_bearbeitungsstatus = 97, - RULE_pep_flag = 98, RULE_erfassung_abgeschlossen = 99, RULE_probenzusatzbeschreibung = 100, - RULE_pzb_s = 101, RULE_messwert = 102, RULE_messwert_s = 103, RULE_messwert_i = 104, - RULE_messwert_g = 105, RULE_messwert_nwg = 106, RULE_messwert_nwg_s = 107, - RULE_messwert_nwg_i = 108, RULE_messwert_nwg_g = 109, RULE_kommentar = 110, - RULE_kommentar_t = 111, RULE_probenkommentar = 112, RULE_probenkommentar_t = 113; + RULE_mp = 8, RULE_ub = 9, RULE_rei = 10, RULE_entnahmeort = 11, RULE_ph = 12, + RULE_pg = 13, RULE_pk = 14, RULE_zb = 15, RULE_pzb = 16, RULE_pkom = 17, + RULE_sdm = 18, RULE_pnh = 19, RULE_mm = 20, RULE_mw = 21, RULE_mess_kommentar = 22, + RULE_pn = 23, RULE_ursprungsort = 24, RULE_ursprungsort_header = 25, RULE_ursprungsortdaten = 26, + RULE_uh = 27, RULE_ug = 28, RULE_uk = 29, RULE_version = 30, RULE_uebertragungsformat = 31, + RULE_datenbasis = 32, RULE_datenbasis_s = 33, RULE_netzkennung = 34, RULE_erzeuger = 35, + RULE_staat_der_messstelle_lang = 36, RULE_staat_der_messstelle_kurz = 37, + RULE_staat_der_messstelle_s = 38, RULE_messstelle = 39, RULE_messlabor = 40, + RULE_probe_id = 41, RULE_messungs_id = 42, RULE_proben_nr = 43, RULE_hauptprobennummer = 44, + RULE_nebenprobennummer = 45, RULE_messprogramm_c = 46, RULE_messprogramm_s = 47, + RULE_messprogramm_land = 48, RULE_probenahmeinstitution = 49, RULE_probenart = 50, + RULE_zeitbasis = 51, RULE_zeitbasis_s = 52, RULE_soll_datum_uhrzeit_a = 53, + RULE_soll_datum_uhrzeit_e = 54, RULE_ursprungs_datum_uhrzeit = 55, RULE_probenahme_datum_uhrzeit_a = 56, + RULE_probenahme_datum_uhrzeit_e = 57, RULE_umweltbereich_c = 58, RULE_umweltbereich_s = 59, + RULE_deskriptoren = 60, RULE_rei_programmpunkt = 61, RULE_rei_programmpunktgruppe = 62, + RULE_referenz_datum_uhrzeit = 63, RULE_testdaten = 64, RULE_szenario = 65, + RULE_sek_datenbasis = 66, RULE_sek_datenbasis_s = 67, RULE_u_herkunftsland_lang = 68, + RULE_u_herkunftsland_kurz = 69, RULE_u_herkunftsland_s = 70, RULE_u_gemeindeschluessel = 71, + RULE_u_gemeindename = 72, RULE_u_orts_zusatzkennzahl = 73, RULE_u_koordinaten = 74, + RULE_u_koordinaten_s = 75, RULE_u_orts_zusatzcode = 76, RULE_u_orts_zusatztext = 77, + RULE_u_nuts_code = 78, RULE_p_herkunftsland_lang = 79, RULE_p_herkunftsland_kurz = 80, + RULE_p_herkunftsland_s = 81, RULE_p_gemeindeschluessel = 82, RULE_p_gemeindename = 83, + RULE_p_orts_zusatzkennzahl = 84, RULE_p_koordinaten = 85, RULE_p_koordinaten_s = 86, + RULE_p_orts_zusatzcode = 87, RULE_p_orts_zusatztext = 88, RULE_p_nuts_code = 89, + RULE_p_site_id = 90, RULE_p_site_name = 91, RULE_p_hoehe_nn = 92, RULE_p_hoehe_land = 93, + RULE_mehrzweckfeld = 94, RULE_mess_datum_uhrzeit = 95, RULE_messzeit_sekunden = 96, + RULE_messmethode_c = 97, RULE_messmethode_s = 98, RULE_bearbeitungsstatus = 99, + RULE_pep_flag = 100, RULE_erfassung_abgeschlossen = 101, RULE_probenzusatzbeschreibung = 102, + RULE_pzb_s = 103, RULE_messwert = 104, RULE_messwert_s = 105, RULE_messwert_i = 106, + RULE_messwert_g = 107, RULE_messwert_nwg = 108, RULE_messwert_nwg_s = 109, + RULE_messwert_nwg_i = 110, RULE_messwert_nwg_g = 111, RULE_kommentar = 112, + RULE_kommentar_t = 113, RULE_probenkommentar = 114, RULE_probenkommentar_t = 115; public static final String[] ruleNames = { "probendatei", "end", "probe", "probedaten", "messung", "mess_header", - "messungdaten", "db", "mp", "ub", "rei", "ph", "pg", "pk", "zb", "pzb", - "pkom", "sdm", "pnh", "mm", "mw", "mess_kommentar", "pn", "us", "ursprungsortdaten", - "uh", "ug", "uk", "version", "uebertragungsformat", "datenbasis", "datenbasis_s", + "messungdaten", "db", "mp", "ub", "rei", "entnahmeort", "ph", "pg", "pk", + "zb", "pzb", "pkom", "sdm", "pnh", "mm", "mw", "mess_kommentar", "pn", + "ursprungsort", "ursprungsort_header", "ursprungsortdaten", "uh", "ug", + "uk", "version", "uebertragungsformat", "datenbasis", "datenbasis_s", "netzkennung", "erzeuger", "staat_der_messstelle_lang", "staat_der_messstelle_kurz", "staat_der_messstelle_s", "messstelle", "messlabor", "probe_id", "messungs_id", "proben_nr", "hauptprobennummer", "nebenprobennummer", "messprogramm_c", @@ -210,30 +211,30 @@ try { enterOuterAlt(_localctx, 1); { - setState(231); + setState(235); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__1) { { { - setState(228); + setState(232); probe(); } } - setState(233); + setState(237); _errHandler.sync(this); _la = _input.LA(1); } - setState(235); + setState(239); _la = _input.LA(1); if (_la==T__0) { { - setState(234); + setState(238); end(); } } - setState(237); + setState(241); match(EOF); } } @@ -269,7 +270,7 @@ try { enterOuterAlt(_localctx, 1); { - setState(239); + setState(243); match(T__0); } } @@ -312,22 +313,22 @@ try { enterOuterAlt(_localctx, 1); { - setState(241); + setState(245); match(T__1); - setState(243); + setState(247); _errHandler.sync(this); _la = _input.LA(1); do { { { - setState(242); + setState(246); probedaten(); } } - setState(245); + setState(249); _errHandler.sync(this); _la = _input.LA(1); - } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__3) | (1L << VERSION) | (1L << UEBERTRAGUNGSFORMAT) | (1L << DATENBASIS) | (1L << DATENBASIS_S) | (1L << NETZKENNUNG) | (1L << ERZEUGER) | (1L << STAAT_DER_MESSSTELLE_LANG) | (1L << STAAT_DER_MESSSTELLE_KURZ) | (1L << STAAT_DER_MESSSTELLE_S) | (1L << MESSSTELLE) | (1L << MESSLABOR) | (1L << PROBE_ID) | (1L << MESSUNGS_ID) | (1L << PROBEN_NR) | (1L << HAUPTPROBENNUMMER) | (1L << NEBENPROBENNUMMER) | (1L << MESSPROGRAMM_C) | (1L << MESSPROGRAMM_S) | (1L << MESSPROGRAMM_LAND) | (1L << PROBENAHMEINSTITUTION) | (1L << PROBENART) | (1L << ZEITBASIS) | (1L << ZEITBASIS_S) | (1L << SOLL_DATUM_UHRZEIT_A) | (1L << SOLL_DATUM_UHRZEIT_E) | (1L << PROBENAHME_DATUM_UHRZEIT_A) | (1L << PROBENAHME_DATUM_UHRZEIT_E) | (1L << UMWELTBEREICH_C) | (1L << UMWELTBEREICH_S) | (1L << DESKRIPTOREN) | (1L << REI_PROGRAMMPUNKT) | (1L << REI_PROGRAMMPUNKTGRUPPE) | (1L << REFERENZ_DATUM_UHRZEIT) | (1L << TESTDATEN) | (1L << SZENARIO) | (1L << SEK_DATENBASIS) | (1L << SEK_DATENBASIS_S) | (1L << P_HERKUNFTSLAND_LANG) | (1L << P_HERKUNFTSLAND_KURZ) | (1L << P_HERKUNFTSLAND_S) | (1L << P_GEMEINDESCHLUESSEL) | (1L << P_GEMEINDENAME) | (1L << P_ORTS_ZUSATZKENNZAHL) | (1L << P_KOORDINATEN) | (1L << P_KOORDINATEN_S) | (1L << P_ORTS_ZUSATZCODE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (P_ORTS_ZUSATZTEXT - 64)) | (1L << (P_NUTS_CODE - 64)) | (1L << (P_SITE_ID - 64)) | (1L << (P_SITE_NAME - 64)) | (1L << (P_HOEHE_NN - 64)) | (1L << (P_HOEHE_LAND - 64)) | (1L << (MEHRZWECKFELD - 64)) | (1L << (MESS_DATUM_UHRZEIT - 64)) | (1L << (MESSZEIT_SEKUNDEN - 64)) | (1L << (MESSMETHODE_C - 64)) | (1L << (MESSMETHODE_S - 64)) | (1L << (BEARBEITUNGSSTATUS - 64)) | (1L << (PEP_FLAG - 64)) | (1L << (ERFASSUNG_ABGESCHLOSSEN - 64)) | (1L << (PROBENZUSATZBESCHREIBUNG - 64)) | (1L << (PZB_S - 64)) | (1L << (MESSWERT - 64)) | (1L << (MESSWERT_S - 64)) | (1L << (MESSWERT_I - 64)) | (1L << (MESSWERT_G - 64)) | (1L << (MESSWERT_NWG - 64)) | (1L << (MESSWERT_NWG_S - 64)) | (1L << (MESSWERT_NWG_I - 64)) | (1L << (MESSWERT_NWG_G - 64)) | (1L << (KOMMENTAR - 64)) | (1L << (KOMMENTAR_T - 64)) | (1L << (PROBENKOMMENTAR - 64)) | (1L << (PROBENKOMMENTAR_T - 64)))) != 0) ); + } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__3) | (1L << VERSION) | (1L << UEBERTRAGUNGSFORMAT) | (1L << DATENBASIS) | (1L << DATENBASIS_S) | (1L << NETZKENNUNG) | (1L << ERZEUGER) | (1L << STAAT_DER_MESSSTELLE_LANG) | (1L << STAAT_DER_MESSSTELLE_KURZ) | (1L << STAAT_DER_MESSSTELLE_S) | (1L << MESSSTELLE) | (1L << MESSLABOR) | (1L << PROBE_ID) | (1L << MESSUNGS_ID) | (1L << PROBEN_NR) | (1L << HAUPTPROBENNUMMER) | (1L << NEBENPROBENNUMMER) | (1L << MESSPROGRAMM_C) | (1L << MESSPROGRAMM_S) | (1L << MESSPROGRAMM_LAND) | (1L << PROBENAHMEINSTITUTION) | (1L << PROBENART) | (1L << ZEITBASIS) | (1L << ZEITBASIS_S) | (1L << SOLL_DATUM_UHRZEIT_A) | (1L << SOLL_DATUM_UHRZEIT_E) | (1L << PROBENAHME_DATUM_UHRZEIT_A) | (1L << PROBENAHME_DATUM_UHRZEIT_E) | (1L << UMWELTBEREICH_C) | (1L << UMWELTBEREICH_S) | (1L << DESKRIPTOREN) | (1L << REI_PROGRAMMPUNKT) | (1L << REI_PROGRAMMPUNKTGRUPPE) | (1L << REFERENZ_DATUM_UHRZEIT) | (1L << TESTDATEN) | (1L << SZENARIO) | (1L << SEK_DATENBASIS) | (1L << SEK_DATENBASIS_S) | (1L << U_HERKUNFTSLAND_LANG) | (1L << U_HERKUNFTSLAND_KURZ) | (1L << U_HERKUNFTSLAND_S) | (1L << U_GEMEINDESCHLUESSEL) | (1L << U_GEMEINDENAME) | (1L << U_ORTS_ZUSATZKENNZAHL) | (1L << U_KOORDINATEN) | (1L << U_KOORDINATEN_S) | (1L << U_ORTS_ZUSATZCODE) | (1L << U_ORTS_ZUSATZTEXT) | (1L << U_NUTS_CODE) | (1L << P_HERKUNFTSLAND_LANG) | (1L << P_HERKUNFTSLAND_KURZ) | (1L << P_HERKUNFTSLAND_S) | (1L << P_GEMEINDESCHLUESSEL) | (1L << P_GEMEINDENAME) | (1L << P_ORTS_ZUSATZKENNZAHL) | (1L << P_KOORDINATEN) | (1L << P_KOORDINATEN_S) | (1L << P_ORTS_ZUSATZCODE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (P_ORTS_ZUSATZTEXT - 64)) | (1L << (P_NUTS_CODE - 64)) | (1L << (P_SITE_ID - 64)) | (1L << (P_SITE_NAME - 64)) | (1L << (P_HOEHE_NN - 64)) | (1L << (P_HOEHE_LAND - 64)) | (1L << (MEHRZWECKFELD - 64)) | (1L << (MESS_DATUM_UHRZEIT - 64)) | (1L << (MESSZEIT_SEKUNDEN - 64)) | (1L << (MESSMETHODE_C - 64)) | (1L << (MESSMETHODE_S - 64)) | (1L << (BEARBEITUNGSSTATUS - 64)) | (1L << (PEP_FLAG - 64)) | (1L << (ERFASSUNG_ABGESCHLOSSEN - 64)) | (1L << (PROBENZUSATZBESCHREIBUNG - 64)) | (1L << (PZB_S - 64)) | (1L << (MESSWERT - 64)) | (1L << (MESSWERT_S - 64)) | (1L << (MESSWERT_I - 64)) | (1L << (MESSWERT_G - 64)) | (1L << (MESSWERT_NWG - 64)) | (1L << (MESSWERT_NWG_S - 64)) | (1L << (MESSWERT_NWG_I - 64)) | (1L << (MESSWERT_NWG_G - 64)) | (1L << (KOMMENTAR - 64)) | (1L << (KOMMENTAR_T - 64)) | (1L << (PROBENKOMMENTAR - 64)) | (1L << (PROBENKOMMENTAR_T - 64)))) != 0) ); } } catch (RecognitionException re) { @@ -423,41 +424,11 @@ public Sek_datenbasis_sContext sek_datenbasis_s() { return getRuleContext(Sek_datenbasis_sContext.class,0); } - public UsContext us() { - return getRuleContext(UsContext.class,0); - } - public PhContext ph() { - return getRuleContext(PhContext.class,0); - } - public PgContext pg() { - return getRuleContext(PgContext.class,0); - } - public P_orts_zusatzkennzahlContext p_orts_zusatzkennzahl() { - return getRuleContext(P_orts_zusatzkennzahlContext.class,0); - } - public PkContext pk() { - return getRuleContext(PkContext.class,0); - } - public P_orts_zusatzcodeContext p_orts_zusatzcode() { - return getRuleContext(P_orts_zusatzcodeContext.class,0); - } - public P_orts_zusatztextContext p_orts_zusatztext() { - return getRuleContext(P_orts_zusatztextContext.class,0); - } - public P_nuts_codeContext p_nuts_code() { - return getRuleContext(P_nuts_codeContext.class,0); - } - public P_site_idContext p_site_id() { - return getRuleContext(P_site_idContext.class,0); - } - public P_site_nameContext p_site_name() { - return getRuleContext(P_site_nameContext.class,0); - } - public P_hoehe_nnContext p_hoehe_nn() { - return getRuleContext(P_hoehe_nnContext.class,0); - } - public P_hoehe_landContext p_hoehe_land() { - return getRuleContext(P_hoehe_landContext.class,0); + public UrsprungsortContext ursprungsort() { + return getRuleContext(UrsprungsortContext.class,0); + } + public EntnahmeortContext entnahmeort() { + return getRuleContext(EntnahmeortContext.class,0); } public MehrzweckfeldContext mehrzweckfeld() { return getRuleContext(MehrzweckfeldContext.class,0); @@ -489,306 +460,236 @@ ProbedatenContext _localctx = new ProbedatenContext(_ctx, getState()); enterRule(_localctx, 6, RULE_probedaten); try { - setState(290); + setState(284); switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(247); + setState(251); db(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(248); + setState(252); version(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(249); + setState(253); uebertragungsformat(); } break; case 4: enterOuterAlt(_localctx, 4); { - setState(250); + setState(254); netzkennung(); } break; case 5: enterOuterAlt(_localctx, 5); { - setState(251); + setState(255); erzeuger(); } break; case 6: enterOuterAlt(_localctx, 6); { - setState(252); + setState(256); sdm(); } break; case 7: enterOuterAlt(_localctx, 7); { - setState(253); + setState(257); messstelle(); } break; case 8: enterOuterAlt(_localctx, 8); { - setState(254); + setState(258); messlabor(); } break; case 9: enterOuterAlt(_localctx, 9); { - setState(255); + setState(259); probe_id(); } break; case 10: enterOuterAlt(_localctx, 10); { - setState(256); + setState(260); pnh(); } break; case 11: enterOuterAlt(_localctx, 11); { - setState(257); + setState(261); mp(); } break; case 12: enterOuterAlt(_localctx, 12); { - setState(258); + setState(262); messprogramm_land(); } break; case 13: enterOuterAlt(_localctx, 13); { - setState(259); + setState(263); probenahmeinstitution(); } break; case 14: enterOuterAlt(_localctx, 14); { - setState(260); + setState(264); probenart(); } break; case 15: enterOuterAlt(_localctx, 15); { - setState(261); + setState(265); zb(); } break; case 16: enterOuterAlt(_localctx, 16); { - setState(262); + setState(266); probenahme_datum_uhrzeit_a(); } break; case 17: enterOuterAlt(_localctx, 17); { - setState(263); + setState(267); probenahme_datum_uhrzeit_e(); } break; case 18: enterOuterAlt(_localctx, 18); { - setState(264); + setState(268); soll_datum_uhrzeit_a(); } break; case 19: enterOuterAlt(_localctx, 19); { - setState(265); + setState(269); soll_datum_uhrzeit_e(); } break; case 20: enterOuterAlt(_localctx, 20); { - setState(266); + setState(270); ub(); } break; case 21: enterOuterAlt(_localctx, 21); { - setState(267); + setState(271); deskriptoren(); } break; case 22: enterOuterAlt(_localctx, 22); { - setState(268); + setState(272); rei(); } break; case 23: enterOuterAlt(_localctx, 23); { - setState(269); + setState(273); referenz_datum_uhrzeit(); } break; case 24: enterOuterAlt(_localctx, 24); { - setState(270); + setState(274); testdaten(); } break; case 25: enterOuterAlt(_localctx, 25); { - setState(271); + setState(275); szenario(); } break; case 26: enterOuterAlt(_localctx, 26); { - setState(272); + setState(276); sek_datenbasis(); } break; case 27: enterOuterAlt(_localctx, 27); { - setState(273); + setState(277); sek_datenbasis_s(); } break; case 28: enterOuterAlt(_localctx, 28); { - setState(274); - us(); + setState(278); + ursprungsort(); } break; case 29: enterOuterAlt(_localctx, 29); { - setState(275); - ph(); + setState(279); + entnahmeort(); } break; case 30: enterOuterAlt(_localctx, 30); { - setState(276); - pg(); + setState(280); + mehrzweckfeld(); } break; case 31: enterOuterAlt(_localctx, 31); { - setState(277); - p_orts_zusatzkennzahl(); + setState(281); + messung(); } break; case 32: enterOuterAlt(_localctx, 32); { - setState(278); - pk(); + setState(282); + pzb(); } break; case 33: enterOuterAlt(_localctx, 33); { - setState(279); - p_orts_zusatzcode(); - } - break; - case 34: - enterOuterAlt(_localctx, 34); - { - setState(280); - p_orts_zusatztext(); - } - break; - case 35: - enterOuterAlt(_localctx, 35); - { - setState(281); - p_nuts_code(); - } - break; - case 36: - enterOuterAlt(_localctx, 36); - { - setState(282); - p_site_id(); - } - break; - case 37: - enterOuterAlt(_localctx, 37); - { setState(283); - p_site_name(); - } - break; - case 38: - enterOuterAlt(_localctx, 38); - { - setState(284); - p_hoehe_nn(); - } - break; - case 39: - enterOuterAlt(_localctx, 39); - { - setState(285); - p_hoehe_land(); - } - break; - case 40: - enterOuterAlt(_localctx, 40); - { - setState(286); - mehrzweckfeld(); - } - break; - case 41: - enterOuterAlt(_localctx, 41); - { - setState(287); - messung(); - } - break; - case 42: - enterOuterAlt(_localctx, 42); - { - setState(288); - pzb(); - } - break; - case 43: - enterOuterAlt(_localctx, 43); - { - setState(289); pkom(); } break; @@ -837,16 +738,16 @@ int _alt; enterOuterAlt(_localctx, 1); { - setState(293); + setState(287); _la = _input.LA(1); if (_la==T__2) { { - setState(292); + setState(286); mess_header(); } } - setState(296); + setState(290); _errHandler.sync(this); _alt = 1; do { @@ -854,7 +755,7 @@ case 1: { { - setState(295); + setState(289); messungdaten(); } } @@ -862,7 +763,7 @@ default: throw new NoViableAltException(this); } - setState(298); + setState(292); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,5,_ctx); } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); @@ -900,7 +801,7 @@ try { enterOuterAlt(_localctx, 1); { - setState(300); + setState(294); match(T__2); } } @@ -964,12 +865,12 @@ MessungdatenContext _localctx = new MessungdatenContext(_ctx, getState()); enterRule(_localctx, 12, RULE_messungdaten); try { - setState(312); + setState(306); switch (_input.LA(1)) { case MESSUNGS_ID: enterOuterAlt(_localctx, 1); { - setState(302); + setState(296); messungs_id(); } break; @@ -977,21 +878,21 @@ case NEBENPROBENNUMMER: enterOuterAlt(_localctx, 2); { - setState(303); + setState(297); pn(); } break; case MESS_DATUM_UHRZEIT: enterOuterAlt(_localctx, 3); { - setState(304); + setState(298); mess_datum_uhrzeit(); } break; case MESSZEIT_SEKUNDEN: enterOuterAlt(_localctx, 4); { - setState(305); + setState(299); messzeit_sekunden(); } break; @@ -999,28 +900,28 @@ case MESSMETHODE_S: enterOuterAlt(_localctx, 5); { - setState(306); + setState(300); mm(); } break; case BEARBEITUNGSSTATUS: enterOuterAlt(_localctx, 6); { - setState(307); + setState(301); bearbeitungsstatus(); } break; case PEP_FLAG: enterOuterAlt(_localctx, 7); { - setState(308); + setState(302); pep_flag(); } break; case ERFASSUNG_ABGESCHLOSSEN: enterOuterAlt(_localctx, 8); { - setState(309); + setState(303); erfassung_abgeschlossen(); } break; @@ -1034,7 +935,7 @@ case MESSWERT_NWG_G: enterOuterAlt(_localctx, 9); { - setState(310); + setState(304); mw(); } break; @@ -1042,7 +943,7 @@ case KOMMENTAR_T: enterOuterAlt(_localctx, 10); { - setState(311); + setState(305); mess_kommentar(); } break; @@ -1086,19 +987,19 @@ DbContext _localctx = new DbContext(_ctx, getState()); enterRule(_localctx, 14, RULE_db); try { - setState(316); + setState(310); switch (_input.LA(1)) { case DATENBASIS: enterOuterAlt(_localctx, 1); { - setState(314); + setState(308); datenbasis(); } break; case DATENBASIS_S: enterOuterAlt(_localctx, 2); { - setState(315); + setState(309); datenbasis_s(); } break; @@ -1142,19 +1043,19 @@ MpContext _localctx = new MpContext(_ctx, getState()); enterRule(_localctx, 16, RULE_mp); try { - setState(320); + setState(314); switch (_input.LA(1)) { case MESSPROGRAMM_C: enterOuterAlt(_localctx, 1); { - setState(318); + setState(312); messprogramm_c(); } break; case MESSPROGRAMM_S: enterOuterAlt(_localctx, 2); { - setState(319); + setState(313); messprogramm_s(); } break; @@ -1198,19 +1099,19 @@ UbContext _localctx = new UbContext(_ctx, getState()); enterRule(_localctx, 18, RULE_ub); try { - setState(324); + setState(318); switch (_input.LA(1)) { case UMWELTBEREICH_C: enterOuterAlt(_localctx, 1); { - setState(322); + setState(316); umweltbereich_c(); } break; case UMWELTBEREICH_S: enterOuterAlt(_localctx, 2); { - setState(323); + setState(317); umweltbereich_s(); } break; @@ -1254,20 +1155,170 @@ ReiContext _localctx = new ReiContext(_ctx, getState()); enterRule(_localctx, 20, RULE_rei); try { - setState(328); + setState(322); switch (_input.LA(1)) { case REI_PROGRAMMPUNKT: enterOuterAlt(_localctx, 1); { - setState(326); + setState(320); rei_programmpunkt(); } break; case REI_PROGRAMMPUNKTGRUPPE: enterOuterAlt(_localctx, 2); { + setState(321); + rei_programmpunktgruppe(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class EntnahmeortContext extends ParserRuleContext { + public PhContext ph() { + return getRuleContext(PhContext.class,0); + } + public PgContext pg() { + return getRuleContext(PgContext.class,0); + } + public P_orts_zusatzkennzahlContext p_orts_zusatzkennzahl() { + return getRuleContext(P_orts_zusatzkennzahlContext.class,0); + } + public PkContext pk() { + return getRuleContext(PkContext.class,0); + } + public P_orts_zusatzcodeContext p_orts_zusatzcode() { + return getRuleContext(P_orts_zusatzcodeContext.class,0); + } + public P_orts_zusatztextContext p_orts_zusatztext() { + return getRuleContext(P_orts_zusatztextContext.class,0); + } + public P_nuts_codeContext p_nuts_code() { + return getRuleContext(P_nuts_codeContext.class,0); + } + public P_site_idContext p_site_id() { + return getRuleContext(P_site_idContext.class,0); + } + public P_site_nameContext p_site_name() { + return getRuleContext(P_site_nameContext.class,0); + } + public P_hoehe_nnContext p_hoehe_nn() { + return getRuleContext(P_hoehe_nnContext.class,0); + } + public P_hoehe_landContext p_hoehe_land() { + return getRuleContext(P_hoehe_landContext.class,0); + } + public EntnahmeortContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_entnahmeort; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof LafListener ) ((LafListener)listener).enterEntnahmeort(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof LafListener ) ((LafListener)listener).exitEntnahmeort(this); + } + } + + public final EntnahmeortContext entnahmeort() throws RecognitionException { + EntnahmeortContext _localctx = new EntnahmeortContext(_ctx, getState()); + enterRule(_localctx, 22, RULE_entnahmeort); + try { + setState(335); + switch (_input.LA(1)) { + case P_HERKUNFTSLAND_LANG: + case P_HERKUNFTSLAND_KURZ: + case P_HERKUNFTSLAND_S: + enterOuterAlt(_localctx, 1); + { + setState(324); + ph(); + } + break; + case P_GEMEINDESCHLUESSEL: + case P_GEMEINDENAME: + enterOuterAlt(_localctx, 2); + { + setState(325); + pg(); + } + break; + case P_ORTS_ZUSATZKENNZAHL: + enterOuterAlt(_localctx, 3); + { + setState(326); + p_orts_zusatzkennzahl(); + } + break; + case P_KOORDINATEN: + case P_KOORDINATEN_S: + enterOuterAlt(_localctx, 4); + { setState(327); - rei_programmpunktgruppe(); + pk(); + } + break; + case P_ORTS_ZUSATZCODE: + enterOuterAlt(_localctx, 5); + { + setState(328); + p_orts_zusatzcode(); + } + break; + case P_ORTS_ZUSATZTEXT: + enterOuterAlt(_localctx, 6); + { + setState(329); + p_orts_zusatztext(); + } + break; + case P_NUTS_CODE: + enterOuterAlt(_localctx, 7); + { + setState(330); + p_nuts_code(); + } + break; + case P_SITE_ID: + enterOuterAlt(_localctx, 8); + { + setState(331); + p_site_id(); + } + break; + case P_SITE_NAME: + enterOuterAlt(_localctx, 9); + { + setState(332); + p_site_name(); + } + break; + case P_HOEHE_NN: + enterOuterAlt(_localctx, 10); + { + setState(333); + p_hoehe_nn(); + } + break; + case P_HOEHE_LAND: + enterOuterAlt(_localctx, 11); + { + setState(334); + p_hoehe_land(); } break; default: @@ -1311,28 +1362,28 @@ public final PhContext ph() throws RecognitionException { PhContext _localctx = new PhContext(_ctx, getState()); - enterRule(_localctx, 22, RULE_ph); + enterRule(_localctx, 24, RULE_ph); try { - setState(333); + setState(340); switch (_input.LA(1)) { case P_HERKUNFTSLAND_LANG: enterOuterAlt(_localctx, 1); { - setState(330); + setState(337); p_herkunftsland_lang(); } break; case P_HERKUNFTSLAND_KURZ: enterOuterAlt(_localctx, 2); { - setState(331); + setState(338); p_herkunftsland_kurz(); } break; case P_HERKUNFTSLAND_S: enterOuterAlt(_localctx, 3); { - setState(332); + setState(339); p_herkunftsland_s(); } break; @@ -1374,21 +1425,21 @@ public final PgContext pg() throws RecognitionException { PgContext _localctx = new PgContext(_ctx, getState()); - enterRule(_localctx, 24, RULE_pg); + enterRule(_localctx, 26, RULE_pg); try { - setState(337); + setState(344); switch (_input.LA(1)) { case P_GEMEINDESCHLUESSEL: enterOuterAlt(_localctx, 1); { - setState(335); + setState(342); p_gemeindeschluessel(); } break; case P_GEMEINDENAME: enterOuterAlt(_localctx, 2); { - setState(336); + setState(343); p_gemeindename(); } break; @@ -1430,21 +1481,21 @@ public final PkContext pk() throws RecognitionException { PkContext _localctx = new PkContext(_ctx, getState()); - enterRule(_localctx, 26, RULE_pk); + enterRule(_localctx, 28, RULE_pk); try { - setState(341); + setState(348); switch (_input.LA(1)) { case P_KOORDINATEN: enterOuterAlt(_localctx, 1); { - setState(339); + setState(346); p_koordinaten(); } break; case P_KOORDINATEN_S: enterOuterAlt(_localctx, 2); { - setState(340); + setState(347); p_koordinaten_s(); } break; @@ -1486,21 +1537,21 @@ public final ZbContext zb() throws RecognitionException { ZbContext _localctx = new ZbContext(_ctx, getState()); - enterRule(_localctx, 28, RULE_zb); + enterRule(_localctx, 30, RULE_zb); try { - setState(345); + setState(352); switch (_input.LA(1)) { case ZEITBASIS: enterOuterAlt(_localctx, 1); { - setState(343); + setState(350); zeitbasis(); } break; case ZEITBASIS_S: enterOuterAlt(_localctx, 2); { - setState(344); + setState(351); zeitbasis_s(); } break; @@ -1542,21 +1593,21 @@ public final PzbContext pzb() throws RecognitionException { PzbContext _localctx = new PzbContext(_ctx, getState()); - enterRule(_localctx, 30, RULE_pzb); + enterRule(_localctx, 32, RULE_pzb); try { - setState(349); + setState(356); switch (_input.LA(1)) { case PROBENZUSATZBESCHREIBUNG: enterOuterAlt(_localctx, 1); { - setState(347); + setState(354); probenzusatzbeschreibung(); } break; case PZB_S: enterOuterAlt(_localctx, 2); { - setState(348); + setState(355); pzb_s(); } break; @@ -1598,21 +1649,21 @@ public final PkomContext pkom() throws RecognitionException { PkomContext _localctx = new PkomContext(_ctx, getState()); - enterRule(_localctx, 32, RULE_pkom); + enterRule(_localctx, 34, RULE_pkom); try { - setState(353); + setState(360); switch (_input.LA(1)) { case PROBENKOMMENTAR: enterOuterAlt(_localctx, 1); { - setState(351); + setState(358); probenkommentar(); } break; case PROBENKOMMENTAR_T: enterOuterAlt(_localctx, 2); { - setState(352); + setState(359); probenkommentar_t(); } break; @@ -1657,28 +1708,28 @@ public final SdmContext sdm() throws RecognitionException { SdmContext _localctx = new SdmContext(_ctx, getState()); - enterRule(_localctx, 34, RULE_sdm); + enterRule(_localctx, 36, RULE_sdm); try { - setState(358); + setState(365); switch (_input.LA(1)) { case STAAT_DER_MESSSTELLE_LANG: enterOuterAlt(_localctx, 1); { - setState(355); + setState(362); staat_der_messstelle_lang(); } break; case STAAT_DER_MESSSTELLE_KURZ: enterOuterAlt(_localctx, 2); { - setState(356); + setState(363); staat_der_messstelle_kurz(); } break; case STAAT_DER_MESSSTELLE_S: enterOuterAlt(_localctx, 3); { - setState(357); + setState(364); staat_der_messstelle_s(); } break; @@ -1720,21 +1771,21 @@ public final PnhContext pnh() throws RecognitionException { PnhContext _localctx = new PnhContext(_ctx, getState()); - enterRule(_localctx, 36, RULE_pnh); + enterRule(_localctx, 38, RULE_pnh); try { - setState(362); + setState(369); switch (_input.LA(1)) { case PROBEN_NR: enterOuterAlt(_localctx, 1); { - setState(360); + setState(367); proben_nr(); } break; case HAUPTPROBENNUMMER: enterOuterAlt(_localctx, 2); { - setState(361); + setState(368); hauptprobennummer(); } break; @@ -1776,21 +1827,21 @@ public final MmContext mm() throws RecognitionException { MmContext _localctx = new MmContext(_ctx, getState()); - enterRule(_localctx, 38, RULE_mm); + enterRule(_localctx, 40, RULE_mm); try { - setState(366); + setState(373); switch (_input.LA(1)) { case MESSMETHODE_C: enterOuterAlt(_localctx, 1); { - setState(364); + setState(371); messmethode_c(); } break; case MESSMETHODE_S: enterOuterAlt(_localctx, 2); { - setState(365); + setState(372); messmethode_s(); } break; @@ -1850,63 +1901,63 @@ public final MwContext mw() throws RecognitionException { MwContext _localctx = new MwContext(_ctx, getState()); - enterRule(_localctx, 40, RULE_mw); + enterRule(_localctx, 42, RULE_mw); try { - setState(376); + setState(383); switch (_input.LA(1)) { case MESSWERT: enterOuterAlt(_localctx, 1); { - setState(368); + setState(375); messwert(); } break; case MESSWERT_S: enterOuterAlt(_localctx, 2); { - setState(369); + setState(376); messwert_s(); } break; case MESSWERT_I: enterOuterAlt(_localctx, 3); { - setState(370); + setState(377); messwert_i(); } break; case MESSWERT_G: enterOuterAlt(_localctx, 4); { - setState(371); + setState(378); messwert_g(); } break; case MESSWERT_NWG: enterOuterAlt(_localctx, 5); { - setState(372); + setState(379); messwert_nwg(); } break; case MESSWERT_NWG_S: enterOuterAlt(_localctx, 6); { - setState(373); + setState(380); messwert_nwg_s(); } break; case MESSWERT_NWG_I: enterOuterAlt(_localctx, 7); { - setState(374); + setState(381); messwert_nwg_i(); } break; case MESSWERT_NWG_G: enterOuterAlt(_localctx, 8); { - setState(375); + setState(382); messwert_nwg_g(); } break; @@ -1948,21 +1999,21 @@ public final Mess_kommentarContext mess_kommentar() throws RecognitionException { Mess_kommentarContext _localctx = new Mess_kommentarContext(_ctx, getState()); - enterRule(_localctx, 42, RULE_mess_kommentar); + enterRule(_localctx, 44, RULE_mess_kommentar); try { - setState(380); + setState(387); switch (_input.LA(1)) { case KOMMENTAR: enterOuterAlt(_localctx, 1); { - setState(378); + setState(385); kommentar(); } break; case KOMMENTAR_T: enterOuterAlt(_localctx, 2); { - setState(379); + setState(386); kommentar_t(); } break; @@ -2004,21 +2055,21 @@ public final PnContext pn() throws RecognitionException { PnContext _localctx = new PnContext(_ctx, getState()); - enterRule(_localctx, 44, RULE_pn); + enterRule(_localctx, 46, RULE_pn); try { - setState(384); + setState(391); switch (_input.LA(1)) { case PROBEN_NR: enterOuterAlt(_localctx, 1); { - setState(382); + setState(389); proben_nr(); } break; case NEBENPROBENNUMMER: enterOuterAlt(_localctx, 2); { - setState(383); + setState(390); nebenprobennummer(); } break; @@ -2037,50 +2088,118 @@ return _localctx; } - public static class UsContext extends ParserRuleContext { + public static class UrsprungsortContext extends ParserRuleContext { + public Ursprungsort_headerContext ursprungsort_header() { + return getRuleContext(Ursprungsort_headerContext.class,0); + } public List ursprungsortdaten() { return getRuleContexts(UrsprungsortdatenContext.class); } public UrsprungsortdatenContext ursprungsortdaten(int i) { return getRuleContext(UrsprungsortdatenContext.class,i); } - public UsContext(ParserRuleContext parent, int invokingState) { + public UrsprungsortContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } - @Override public int getRuleIndex() { return RULE_us; } + @Override public int getRuleIndex() { return RULE_ursprungsort; } @Override public void enterRule(ParseTreeListener listener) { - if ( listener instanceof LafListener ) ((LafListener)listener).enterUs(this); + if ( listener instanceof LafListener ) ((LafListener)listener).enterUrsprungsort(this); } @Override public void exitRule(ParseTreeListener listener) { - if ( listener instanceof LafListener ) ((LafListener)listener).exitUs(this); - } - } - - public final UsContext us() throws RecognitionException { - UsContext _localctx = new UsContext(_ctx, getState()); - enterRule(_localctx, 46, RULE_us); - int _la; + if ( listener instanceof LafListener ) ((LafListener)listener).exitUrsprungsort(this); + } + } + + public final UrsprungsortContext ursprungsort() throws RecognitionException { + UrsprungsortContext _localctx = new UrsprungsortContext(_ctx, getState()); + enterRule(_localctx, 48, RULE_ursprungsort); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(399); + switch (_input.LA(1)) { + case T__3: + { + setState(393); + ursprungsort_header(); + } + break; + case U_HERKUNFTSLAND_LANG: + case U_HERKUNFTSLAND_KURZ: + case U_HERKUNFTSLAND_S: + case U_GEMEINDESCHLUESSEL: + case U_GEMEINDENAME: + case U_ORTS_ZUSATZKENNZAHL: + case U_KOORDINATEN: + case U_KOORDINATEN_S: + case U_ORTS_ZUSATZCODE: + case U_ORTS_ZUSATZTEXT: + case U_NUTS_CODE: + { + setState(395); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(394); + ursprungsortdaten(); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(397); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,24,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class Ursprungsort_headerContext extends ParserRuleContext { + public Ursprungsort_headerContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_ursprungsort_header; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof LafListener ) ((LafListener)listener).enterUrsprungsort_header(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof LafListener ) ((LafListener)listener).exitUrsprungsort_header(this); + } + } + + public final Ursprungsort_headerContext ursprungsort_header() throws RecognitionException { + Ursprungsort_headerContext _localctx = new Ursprungsort_headerContext(_ctx, getState()); + enterRule(_localctx, 50, RULE_ursprungsort_header); try { enterOuterAlt(_localctx, 1); { - setState(386); + setState(401); match(T__3); - setState(390); - _errHandler.sync(this); - _la = _input.LA(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << U_HERKUNFTSLAND_LANG) | (1L << U_HERKUNFTSLAND_KURZ) | (1L << U_HERKUNFTSLAND_S) | (1L << U_GEMEINDESCHLUESSEL) | (1L << U_GEMEINDENAME) | (1L << U_ORTS_ZUSATZKENNZAHL) | (1L << U_KOORDINATEN) | (1L << U_KOORDINATEN_S) | (1L << U_ORTS_ZUSATZCODE) | (1L << U_ORTS_ZUSATZTEXT) | (1L << U_NUTS_CODE))) != 0)) { - { - { - setState(387); - ursprungsortdaten(); - } - } - setState(392); - _errHandler.sync(this); - _la = _input.LA(1); - } } } catch (RecognitionException re) { @@ -2132,16 +2251,16 @@ public final UrsprungsortdatenContext ursprungsortdaten() throws RecognitionException { UrsprungsortdatenContext _localctx = new UrsprungsortdatenContext(_ctx, getState()); - enterRule(_localctx, 48, RULE_ursprungsortdaten); + enterRule(_localctx, 52, RULE_ursprungsortdaten); try { - setState(400); + setState(410); switch (_input.LA(1)) { case U_HERKUNFTSLAND_LANG: case U_HERKUNFTSLAND_KURZ: case U_HERKUNFTSLAND_S: enterOuterAlt(_localctx, 1); { - setState(393); + setState(403); uh(); } break; @@ -2149,14 +2268,14 @@ case U_GEMEINDENAME: enterOuterAlt(_localctx, 2); { - setState(394); + setState(404); ug(); } break; case U_ORTS_ZUSATZKENNZAHL: enterOuterAlt(_localctx, 3); { - setState(395); + setState(405); u_orts_zusatzkennzahl(); } break; @@ -2164,28 +2283,28 @@ case U_KOORDINATEN_S: enterOuterAlt(_localctx, 4); { - setState(396); + setState(406); uk(); } break; case U_ORTS_ZUSATZCODE: enterOuterAlt(_localctx, 5); { - setState(397); + setState(407); u_orts_zusatzcode(); } break; case U_ORTS_ZUSATZTEXT: enterOuterAlt(_localctx, 6); { - setState(398); + setState(408); u_orts_zusatztext(); } break; case U_NUTS_CODE: enterOuterAlt(_localctx, 7); { - setState(399); + setState(409); u_nuts_code(); } break; @@ -2230,28 +2349,28 @@ public final UhContext uh() throws RecognitionException { UhContext _localctx = new UhContext(_ctx, getState()); - enterRule(_localctx, 50, RULE_uh); + enterRule(_localctx, 54, RULE_uh); try { - setState(405); + setState(415); switch (_input.LA(1)) { case U_HERKUNFTSLAND_LANG: enterOuterAlt(_localctx, 1); { - setState(402); + setState(412); u_herkunftsland_lang(); } break; case U_HERKUNFTSLAND_KURZ: enterOuterAlt(_localctx, 2); { - setState(403); + setState(413); u_herkunftsland_kurz(); } break; case U_HERKUNFTSLAND_S: enterOuterAlt(_localctx, 3); { - setState(404); + setState(414); u_herkunftsland_s(); } break; @@ -2293,21 +2412,21 @@ public final UgContext ug() throws RecognitionException { UgContext _localctx = new UgContext(_ctx, getState()); - enterRule(_localctx, 52, RULE_ug); + enterRule(_localctx, 56, RULE_ug); try { - setState(409); + setState(419); switch (_input.LA(1)) { case U_GEMEINDESCHLUESSEL: enterOuterAlt(_localctx, 1); { - setState(407); + setState(417); u_gemeindeschluessel(); } break; case U_GEMEINDENAME: enterOuterAlt(_localctx, 2); { - setState(408); + setState(418); u_gemeindename(); } break; @@ -2349,21 +2468,21 @@ public final UkContext uk() throws RecognitionException { UkContext _localctx = new UkContext(_ctx, getState()); - enterRule(_localctx, 54, RULE_uk); + enterRule(_localctx, 58, RULE_uk); try { - setState(413); + setState(423); switch (_input.LA(1)) { case U_KOORDINATEN: enterOuterAlt(_localctx, 1); { - setState(411); + setState(421); u_koordinaten(); } break; case U_KOORDINATEN_S: enterOuterAlt(_localctx, 2); { - setState(412); + setState(422); u_koordinaten_s(); } break; @@ -2402,14 +2521,14 @@ public final VersionContext version() throws RecognitionException { VersionContext _localctx = new VersionContext(_ctx, getState()); - enterRule(_localctx, 56, RULE_version); + enterRule(_localctx, 60, RULE_version); int _la; try { enterOuterAlt(_localctx, 1); { - setState(415); + setState(425); match(VERSION); - setState(416); + setState(426); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -2449,14 +2568,14 @@ public final UebertragungsformatContext uebertragungsformat() throws RecognitionException { UebertragungsformatContext _localctx = new UebertragungsformatContext(_ctx, getState()); - enterRule(_localctx, 58, RULE_uebertragungsformat); + enterRule(_localctx, 62, RULE_uebertragungsformat); int _la; try { enterOuterAlt(_localctx, 1); { - setState(418); + setState(428); match(UEBERTRAGUNGSFORMAT); - setState(419); + setState(429); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -2496,14 +2615,14 @@ public final DatenbasisContext datenbasis() throws RecognitionException { DatenbasisContext _localctx = new DatenbasisContext(_ctx, getState()); - enterRule(_localctx, 60, RULE_datenbasis); + enterRule(_localctx, 64, RULE_datenbasis); int _la; try { enterOuterAlt(_localctx, 1); { - setState(421); + setState(431); match(DATENBASIS); - setState(422); + setState(432); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -2542,13 +2661,13 @@ public final Datenbasis_sContext datenbasis_s() throws RecognitionException { Datenbasis_sContext _localctx = new Datenbasis_sContext(_ctx, getState()); - enterRule(_localctx, 62, RULE_datenbasis_s); + enterRule(_localctx, 66, RULE_datenbasis_s); try { enterOuterAlt(_localctx, 1); { - setState(424); + setState(434); match(DATENBASIS_S); - setState(425); + setState(435); match(STRING); } } @@ -2583,14 +2702,14 @@ public final NetzkennungContext netzkennung() throws RecognitionException { NetzkennungContext _localctx = new NetzkennungContext(_ctx, getState()); - enterRule(_localctx, 64, RULE_netzkennung); + enterRule(_localctx, 68, RULE_netzkennung); int _la; try { enterOuterAlt(_localctx, 1); { - setState(427); + setState(437); match(NETZKENNUNG); - setState(428); + setState(438); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -2630,14 +2749,14 @@ public final ErzeugerContext erzeuger() throws RecognitionException { ErzeugerContext _localctx = new ErzeugerContext(_ctx, getState()); - enterRule(_localctx, 66, RULE_erzeuger); + enterRule(_localctx, 70, RULE_erzeuger); int _la; try { enterOuterAlt(_localctx, 1); { - setState(430); + setState(440); match(ERZEUGER); - setState(431); + setState(441); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -2677,14 +2796,14 @@ public final Staat_der_messstelle_langContext staat_der_messstelle_lang() throws RecognitionException { Staat_der_messstelle_langContext _localctx = new Staat_der_messstelle_langContext(_ctx, getState()); - enterRule(_localctx, 68, RULE_staat_der_messstelle_lang); + enterRule(_localctx, 72, RULE_staat_der_messstelle_lang); int _la; try { enterOuterAlt(_localctx, 1); { - setState(433); + setState(443); match(STAAT_DER_MESSSTELLE_LANG); - setState(434); + setState(444); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -2724,14 +2843,14 @@ public final Staat_der_messstelle_kurzContext staat_der_messstelle_kurz() throws RecognitionException { Staat_der_messstelle_kurzContext _localctx = new Staat_der_messstelle_kurzContext(_ctx, getState()); - enterRule(_localctx, 70, RULE_staat_der_messstelle_kurz); + enterRule(_localctx, 74, RULE_staat_der_messstelle_kurz); int _la; try { enterOuterAlt(_localctx, 1); { - setState(436); + setState(446); match(STAAT_DER_MESSSTELLE_KURZ); - setState(437); + setState(447); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -2770,13 +2889,13 @@ public final Staat_der_messstelle_sContext staat_der_messstelle_s() throws RecognitionException { Staat_der_messstelle_sContext _localctx = new Staat_der_messstelle_sContext(_ctx, getState()); - enterRule(_localctx, 72, RULE_staat_der_messstelle_s); + enterRule(_localctx, 76, RULE_staat_der_messstelle_s); try { enterOuterAlt(_localctx, 1); { - setState(439); + setState(449); match(STAAT_DER_MESSSTELLE_S); - setState(440); + setState(450); match(STRING); } } @@ -2811,14 +2930,14 @@ public final MessstelleContext messstelle() throws RecognitionException { MessstelleContext _localctx = new MessstelleContext(_ctx, getState()); - enterRule(_localctx, 74, RULE_messstelle); + enterRule(_localctx, 78, RULE_messstelle); int _la; try { enterOuterAlt(_localctx, 1); { - setState(442); + setState(452); match(MESSSTELLE); - setState(443); + setState(453); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -2858,14 +2977,14 @@ public final MesslaborContext messlabor() throws RecognitionException { MesslaborContext _localctx = new MesslaborContext(_ctx, getState()); - enterRule(_localctx, 76, RULE_messlabor); + enterRule(_localctx, 80, RULE_messlabor); int _la; try { enterOuterAlt(_localctx, 1); { - setState(445); + setState(455); match(MESSLABOR); - setState(446); + setState(456); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -2905,14 +3024,14 @@ public final Probe_idContext probe_id() throws RecognitionException { Probe_idContext _localctx = new Probe_idContext(_ctx, getState()); - enterRule(_localctx, 78, RULE_probe_id); + enterRule(_localctx, 82, RULE_probe_id); int _la; try { enterOuterAlt(_localctx, 1); { - setState(448); + setState(458); match(PROBE_ID); - setState(449); + setState(459); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -2951,13 +3070,13 @@ public final Messungs_idContext messungs_id() throws RecognitionException { Messungs_idContext _localctx = new Messungs_idContext(_ctx, getState()); - enterRule(_localctx, 80, RULE_messungs_id); + enterRule(_localctx, 84, RULE_messungs_id); try { enterOuterAlt(_localctx, 1); { - setState(451); + setState(461); match(MESSUNGS_ID); - setState(452); + setState(462); match(STRING); } } @@ -2992,14 +3111,14 @@ public final Proben_nrContext proben_nr() throws RecognitionException { Proben_nrContext _localctx = new Proben_nrContext(_ctx, getState()); - enterRule(_localctx, 82, RULE_proben_nr); + enterRule(_localctx, 86, RULE_proben_nr); int _la; try { enterOuterAlt(_localctx, 1); { - setState(454); + setState(464); match(PROBEN_NR); - setState(455); + setState(465); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -3039,14 +3158,14 @@ public final HauptprobennummerContext hauptprobennummer() throws RecognitionException { HauptprobennummerContext _localctx = new HauptprobennummerContext(_ctx, getState()); - enterRule(_localctx, 84, RULE_hauptprobennummer); + enterRule(_localctx, 88, RULE_hauptprobennummer); int _la; try { enterOuterAlt(_localctx, 1); { - setState(457); + setState(467); match(HAUPTPROBENNUMMER); - setState(458); + setState(468); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -3086,14 +3205,14 @@ public final NebenprobennummerContext nebenprobennummer() throws RecognitionException { NebenprobennummerContext _localctx = new NebenprobennummerContext(_ctx, getState()); - enterRule(_localctx, 86, RULE_nebenprobennummer); + enterRule(_localctx, 90, RULE_nebenprobennummer); int _la; try { enterOuterAlt(_localctx, 1); { - setState(460); + setState(470); match(NEBENPROBENNUMMER); - setState(461); + setState(471); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -3133,14 +3252,14 @@ public final Messprogramm_cContext messprogramm_c() throws RecognitionException { Messprogramm_cContext _localctx = new Messprogramm_cContext(_ctx, getState()); - enterRule(_localctx, 88, RULE_messprogramm_c); + enterRule(_localctx, 92, RULE_messprogramm_c); int _la; try { enterOuterAlt(_localctx, 1); { - setState(463); + setState(473); match(MESSPROGRAMM_C); - setState(464); + setState(474); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -3180,14 +3299,14 @@ public final Messprogramm_sContext messprogramm_s() throws RecognitionException { Messprogramm_sContext _localctx = new Messprogramm_sContext(_ctx, getState()); - enterRule(_localctx, 90, RULE_messprogramm_s); + enterRule(_localctx, 94, RULE_messprogramm_s); int _la; try { enterOuterAlt(_localctx, 1); { - setState(466); + setState(476); match(MESSPROGRAMM_S); - setState(467); + setState(477); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -3227,14 +3346,14 @@ public final Messprogramm_landContext messprogramm_land() throws RecognitionException { Messprogramm_landContext _localctx = new Messprogramm_landContext(_ctx, getState()); - enterRule(_localctx, 92, RULE_messprogramm_land); + enterRule(_localctx, 96, RULE_messprogramm_land); int _la; try { enterOuterAlt(_localctx, 1); { - setState(469); + setState(479); match(MESSPROGRAMM_LAND); - setState(470); + setState(480); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -3274,14 +3393,14 @@ public final ProbenahmeinstitutionContext probenahmeinstitution() throws RecognitionException { ProbenahmeinstitutionContext _localctx = new ProbenahmeinstitutionContext(_ctx, getState()); - enterRule(_localctx, 94, RULE_probenahmeinstitution); + enterRule(_localctx, 98, RULE_probenahmeinstitution); int _la; try { enterOuterAlt(_localctx, 1); { - setState(472); + setState(482); match(PROBENAHMEINSTITUTION); - setState(473); + setState(483); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -3321,14 +3440,14 @@ public final ProbenartContext probenart() throws RecognitionException { ProbenartContext _localctx = new ProbenartContext(_ctx, getState()); - enterRule(_localctx, 96, RULE_probenart); + enterRule(_localctx, 100, RULE_probenart); int _la; try { enterOuterAlt(_localctx, 1); { - setState(475); + setState(485); match(PROBENART); - setState(476); + setState(486); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -3368,14 +3487,14 @@ public final ZeitbasisContext zeitbasis() throws RecognitionException { ZeitbasisContext _localctx = new ZeitbasisContext(_ctx, getState()); - enterRule(_localctx, 98, RULE_zeitbasis); + enterRule(_localctx, 102, RULE_zeitbasis); int _la; try { enterOuterAlt(_localctx, 1); { - setState(478); + setState(488); match(ZEITBASIS); - setState(479); + setState(489); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -3414,13 +3533,13 @@ public final Zeitbasis_sContext zeitbasis_s() throws RecognitionException { Zeitbasis_sContext _localctx = new Zeitbasis_sContext(_ctx, getState()); - enterRule(_localctx, 100, RULE_zeitbasis_s); + enterRule(_localctx, 104, RULE_zeitbasis_s); try { enterOuterAlt(_localctx, 1); { - setState(481); + setState(491); match(ZEITBASIS_S); - setState(482); + setState(492); match(STRING); } } @@ -3457,30 +3576,30 @@ public final Soll_datum_uhrzeit_aContext soll_datum_uhrzeit_a() throws RecognitionException { Soll_datum_uhrzeit_aContext _localctx = new Soll_datum_uhrzeit_aContext(_ctx, getState()); - enterRule(_localctx, 102, RULE_soll_datum_uhrzeit_a); + enterRule(_localctx, 106, RULE_soll_datum_uhrzeit_a); int _la; try { enterOuterAlt(_localctx, 1); { - setState(484); + setState(494); match(SOLL_DATUM_UHRZEIT_A); - setState(485); + setState(495); match(STRING); - setState(489); + setState(499); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(486); + setState(496); match(T__4); } } - setState(491); + setState(501); _errHandler.sync(this); _la = _input.LA(1); } - setState(492); + setState(502); match(STRING); } } @@ -3517,30 +3636,30 @@ public final Soll_datum_uhrzeit_eContext soll_datum_uhrzeit_e() throws RecognitionException { Soll_datum_uhrzeit_eContext _localctx = new Soll_datum_uhrzeit_eContext(_ctx, getState()); - enterRule(_localctx, 104, RULE_soll_datum_uhrzeit_e); + enterRule(_localctx, 108, RULE_soll_datum_uhrzeit_e); int _la; try { enterOuterAlt(_localctx, 1); { - setState(494); + setState(504); match(SOLL_DATUM_UHRZEIT_E); - setState(495); + setState(505); match(STRING); - setState(499); + setState(509); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(496); + setState(506); match(T__4); } } - setState(501); + setState(511); _errHandler.sync(this); _la = _input.LA(1); } - setState(502); + setState(512); match(STRING); } } @@ -3577,30 +3696,30 @@ public final Ursprungs_datum_uhrzeitContext ursprungs_datum_uhrzeit() throws RecognitionException { Ursprungs_datum_uhrzeitContext _localctx = new Ursprungs_datum_uhrzeitContext(_ctx, getState()); - enterRule(_localctx, 106, RULE_ursprungs_datum_uhrzeit); + enterRule(_localctx, 110, RULE_ursprungs_datum_uhrzeit); int _la; try { enterOuterAlt(_localctx, 1); { - setState(504); + setState(514); match(URSPRUNGS_DATUM_UHRZEIT); - setState(505); + setState(515); match(STRING); - setState(509); + setState(519); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(506); + setState(516); match(T__4); } } - setState(511); + setState(521); _errHandler.sync(this); _la = _input.LA(1); } - setState(512); + setState(522); match(STRING); } } @@ -3637,30 +3756,30 @@ public final Probenahme_datum_uhrzeit_aContext probenahme_datum_uhrzeit_a() throws RecognitionException { Probenahme_datum_uhrzeit_aContext _localctx = new Probenahme_datum_uhrzeit_aContext(_ctx, getState()); - enterRule(_localctx, 108, RULE_probenahme_datum_uhrzeit_a); + enterRule(_localctx, 112, RULE_probenahme_datum_uhrzeit_a); int _la; try { enterOuterAlt(_localctx, 1); { - setState(514); + setState(524); match(PROBENAHME_DATUM_UHRZEIT_A); - setState(515); + setState(525); match(STRING); - setState(519); + setState(529); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(516); + setState(526); match(T__4); } } - setState(521); + setState(531); _errHandler.sync(this); _la = _input.LA(1); } - setState(522); + setState(532); match(STRING); } } @@ -3697,30 +3816,30 @@ public final Probenahme_datum_uhrzeit_eContext probenahme_datum_uhrzeit_e() throws RecognitionException { Probenahme_datum_uhrzeit_eContext _localctx = new Probenahme_datum_uhrzeit_eContext(_ctx, getState()); - enterRule(_localctx, 110, RULE_probenahme_datum_uhrzeit_e); + enterRule(_localctx, 114, RULE_probenahme_datum_uhrzeit_e); int _la; try { enterOuterAlt(_localctx, 1); { - setState(524); + setState(534); match(PROBENAHME_DATUM_UHRZEIT_E); - setState(525); + setState(535); match(STRING); - setState(529); + setState(539); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(526); + setState(536); match(T__4); } } - setState(531); + setState(541); _errHandler.sync(this); _la = _input.LA(1); } - setState(532); + setState(542); match(STRING); } } @@ -3755,14 +3874,14 @@ public final Umweltbereich_cContext umweltbereich_c() throws RecognitionException { Umweltbereich_cContext _localctx = new Umweltbereich_cContext(_ctx, getState()); - enterRule(_localctx, 112, RULE_umweltbereich_c); + enterRule(_localctx, 116, RULE_umweltbereich_c); int _la; try { enterOuterAlt(_localctx, 1); { - setState(534); + setState(544); match(UMWELTBEREICH_C); - setState(535); + setState(545); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -3802,14 +3921,14 @@ public final Umweltbereich_sContext umweltbereich_s() throws RecognitionException { Umweltbereich_sContext _localctx = new Umweltbereich_sContext(_ctx, getState()); - enterRule(_localctx, 114, RULE_umweltbereich_s); + enterRule(_localctx, 118, RULE_umweltbereich_s); int _la; try { enterOuterAlt(_localctx, 1); { - setState(537); + setState(547); match(UMWELTBEREICH_S); - setState(538); + setState(548); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -3849,14 +3968,14 @@ public final DeskriptorenContext deskriptoren() throws RecognitionException { DeskriptorenContext _localctx = new DeskriptorenContext(_ctx, getState()); - enterRule(_localctx, 116, RULE_deskriptoren); + enterRule(_localctx, 120, RULE_deskriptoren); int _la; try { enterOuterAlt(_localctx, 1); { - setState(540); + setState(550); match(DESKRIPTOREN); - setState(541); + setState(551); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -3896,14 +4015,14 @@ public final Rei_programmpunktContext rei_programmpunkt() throws RecognitionException { Rei_programmpunktContext _localctx = new Rei_programmpunktContext(_ctx, getState()); - enterRule(_localctx, 118, RULE_rei_programmpunkt); + enterRule(_localctx, 122, RULE_rei_programmpunkt); int _la; try { enterOuterAlt(_localctx, 1); { - setState(543); + setState(553); match(REI_PROGRAMMPUNKT); - setState(544); + setState(554); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -3943,14 +4062,14 @@ public final Rei_programmpunktgruppeContext rei_programmpunktgruppe() throws RecognitionException { Rei_programmpunktgruppeContext _localctx = new Rei_programmpunktgruppeContext(_ctx, getState()); - enterRule(_localctx, 120, RULE_rei_programmpunktgruppe); + enterRule(_localctx, 124, RULE_rei_programmpunktgruppe); int _la; try { enterOuterAlt(_localctx, 1); { - setState(546); + setState(556); match(REI_PROGRAMMPUNKTGRUPPE); - setState(547); + setState(557); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -3992,30 +4111,30 @@ public final Referenz_datum_uhrzeitContext referenz_datum_uhrzeit() throws RecognitionException { Referenz_datum_uhrzeitContext _localctx = new Referenz_datum_uhrzeitContext(_ctx, getState()); - enterRule(_localctx, 122, RULE_referenz_datum_uhrzeit); + enterRule(_localctx, 126, RULE_referenz_datum_uhrzeit); int _la; try { enterOuterAlt(_localctx, 1); { - setState(549); + setState(559); match(REFERENZ_DATUM_UHRZEIT); - setState(550); + setState(560); match(STRING); - setState(554); + setState(564); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(551); + setState(561); match(T__4); } } - setState(556); + setState(566); _errHandler.sync(this); _la = _input.LA(1); } - setState(557); + setState(567); match(STRING); } } @@ -4049,13 +4168,13 @@ public final TestdatenContext testdaten() throws RecognitionException { TestdatenContext _localctx = new TestdatenContext(_ctx, getState()); - enterRule(_localctx, 124, RULE_testdaten); + enterRule(_localctx, 128, RULE_testdaten); try { enterOuterAlt(_localctx, 1); { - setState(559); + setState(569); match(TESTDATEN); - setState(560); + setState(570); match(STRING); } } @@ -4090,14 +4209,14 @@ public final SzenarioContext szenario() throws RecognitionException { SzenarioContext _localctx = new SzenarioContext(_ctx, getState()); - enterRule(_localctx, 126, RULE_szenario); + enterRule(_localctx, 130, RULE_szenario); int _la; try { enterOuterAlt(_localctx, 1); { - setState(562); + setState(572); match(SZENARIO); - setState(563); + setState(573); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -4137,14 +4256,14 @@ public final Sek_datenbasisContext sek_datenbasis() throws RecognitionException { Sek_datenbasisContext _localctx = new Sek_datenbasisContext(_ctx, getState()); - enterRule(_localctx, 128, RULE_sek_datenbasis); + enterRule(_localctx, 132, RULE_sek_datenbasis); int _la; try { enterOuterAlt(_localctx, 1); { - setState(565); + setState(575); match(SEK_DATENBASIS); - setState(566); + setState(576); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -4183,13 +4302,13 @@ public final Sek_datenbasis_sContext sek_datenbasis_s() throws RecognitionException { Sek_datenbasis_sContext _localctx = new Sek_datenbasis_sContext(_ctx, getState()); - enterRule(_localctx, 130, RULE_sek_datenbasis_s); + enterRule(_localctx, 134, RULE_sek_datenbasis_s); try { enterOuterAlt(_localctx, 1); { - setState(568); + setState(578); match(SEK_DATENBASIS_S); - setState(569); + setState(579); match(STRING); } } @@ -4224,14 +4343,14 @@ public final U_herkunftsland_langContext u_herkunftsland_lang() throws RecognitionException { U_herkunftsland_langContext _localctx = new U_herkunftsland_langContext(_ctx, getState()); - enterRule(_localctx, 132, RULE_u_herkunftsland_lang); + enterRule(_localctx, 136, RULE_u_herkunftsland_lang); int _la; try { enterOuterAlt(_localctx, 1); { - setState(571); + setState(581); match(U_HERKUNFTSLAND_LANG); - setState(572); + setState(582); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -4271,14 +4390,14 @@ public final U_herkunftsland_kurzContext u_herkunftsland_kurz() throws RecognitionException { U_herkunftsland_kurzContext _localctx = new U_herkunftsland_kurzContext(_ctx, getState()); - enterRule(_localctx, 134, RULE_u_herkunftsland_kurz); + enterRule(_localctx, 138, RULE_u_herkunftsland_kurz); int _la; try { enterOuterAlt(_localctx, 1); { - setState(574); + setState(584); match(U_HERKUNFTSLAND_KURZ); - setState(575); + setState(585); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -4317,13 +4436,13 @@ public final U_herkunftsland_sContext u_herkunftsland_s() throws RecognitionException { U_herkunftsland_sContext _localctx = new U_herkunftsland_sContext(_ctx, getState()); - enterRule(_localctx, 136, RULE_u_herkunftsland_s); + enterRule(_localctx, 140, RULE_u_herkunftsland_s); try { enterOuterAlt(_localctx, 1); { - setState(577); + setState(587); match(U_HERKUNFTSLAND_S); - setState(578); + setState(588); match(STRING); } } @@ -4357,13 +4476,13 @@ public final U_gemeindeschluesselContext u_gemeindeschluessel() throws RecognitionException { U_gemeindeschluesselContext _localctx = new U_gemeindeschluesselContext(_ctx, getState()); - enterRule(_localctx, 138, RULE_u_gemeindeschluessel); + enterRule(_localctx, 142, RULE_u_gemeindeschluessel); try { enterOuterAlt(_localctx, 1); { - setState(580); + setState(590); match(U_GEMEINDESCHLUESSEL); - setState(581); + setState(591); match(STRING); } } @@ -4398,14 +4517,14 @@ public final U_gemeindenameContext u_gemeindename() throws RecognitionException { U_gemeindenameContext _localctx = new U_gemeindenameContext(_ctx, getState()); - enterRule(_localctx, 140, RULE_u_gemeindename); + enterRule(_localctx, 144, RULE_u_gemeindename); int _la; try { enterOuterAlt(_localctx, 1); { - setState(583); + setState(593); match(U_GEMEINDENAME); - setState(584); + setState(594); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -4444,13 +4563,13 @@ public final U_orts_zusatzkennzahlContext u_orts_zusatzkennzahl() throws RecognitionException { U_orts_zusatzkennzahlContext _localctx = new U_orts_zusatzkennzahlContext(_ctx, getState()); - enterRule(_localctx, 142, RULE_u_orts_zusatzkennzahl); + enterRule(_localctx, 146, RULE_u_orts_zusatzkennzahl); try { enterOuterAlt(_localctx, 1); { - setState(586); + setState(596); match(U_ORTS_ZUSATZKENNZAHL); - setState(587); + setState(597); match(STRING); } } @@ -4491,56 +4610,56 @@ public final U_koordinatenContext u_koordinaten() throws RecognitionException { U_koordinatenContext _localctx = new U_koordinatenContext(_ctx, getState()); - enterRule(_localctx, 144, RULE_u_koordinaten); + enterRule(_localctx, 148, RULE_u_koordinaten); int _la; try { enterOuterAlt(_localctx, 1); { - setState(589); + setState(599); match(U_KOORDINATEN); - setState(590); + setState(600); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); } else { consume(); } - setState(594); + setState(604); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(591); + setState(601); match(T__4); } } - setState(596); + setState(606); _errHandler.sync(this); _la = _input.LA(1); } - setState(597); + setState(607); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); } else { consume(); } - setState(601); + setState(611); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(598); + setState(608); match(T__4); } } - setState(603); + setState(613); _errHandler.sync(this); _la = _input.LA(1); } - setState(604); + setState(614); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -4586,51 +4705,51 @@ public final U_koordinaten_sContext u_koordinaten_s() throws RecognitionException { U_koordinaten_sContext _localctx = new U_koordinaten_sContext(_ctx, getState()); - enterRule(_localctx, 146, RULE_u_koordinaten_s); + enterRule(_localctx, 150, RULE_u_koordinaten_s); int _la; try { enterOuterAlt(_localctx, 1); { - setState(606); + setState(616); match(U_KOORDINATEN_S); - setState(607); + setState(617); match(STRING); - setState(611); + setState(621); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(608); + setState(618); match(T__4); } } - setState(613); + setState(623); _errHandler.sync(this); _la = _input.LA(1); } - setState(614); + setState(624); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); } else { consume(); } - setState(618); + setState(628); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(615); + setState(625); match(T__4); } } - setState(620); + setState(630); _errHandler.sync(this); _la = _input.LA(1); } - setState(621); + setState(631); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -4670,14 +4789,14 @@ public final U_orts_zusatzcodeContext u_orts_zusatzcode() throws RecognitionException { U_orts_zusatzcodeContext _localctx = new U_orts_zusatzcodeContext(_ctx, getState()); - enterRule(_localctx, 148, RULE_u_orts_zusatzcode); + enterRule(_localctx, 152, RULE_u_orts_zusatzcode); int _la; try { enterOuterAlt(_localctx, 1); { - setState(623); + setState(633); match(U_ORTS_ZUSATZCODE); - setState(624); + setState(634); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -4717,14 +4836,14 @@ public final U_orts_zusatztextContext u_orts_zusatztext() throws RecognitionException { U_orts_zusatztextContext _localctx = new U_orts_zusatztextContext(_ctx, getState()); - enterRule(_localctx, 150, RULE_u_orts_zusatztext); + enterRule(_localctx, 154, RULE_u_orts_zusatztext); int _la; try { enterOuterAlt(_localctx, 1); { - setState(626); + setState(636); match(U_ORTS_ZUSATZTEXT); - setState(627); + setState(637); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -4764,14 +4883,14 @@ public final U_nuts_codeContext u_nuts_code() throws RecognitionException { U_nuts_codeContext _localctx = new U_nuts_codeContext(_ctx, getState()); - enterRule(_localctx, 152, RULE_u_nuts_code); + enterRule(_localctx, 156, RULE_u_nuts_code); int _la; try { enterOuterAlt(_localctx, 1); { - setState(629); + setState(639); match(U_NUTS_CODE); - setState(630); + setState(640); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -4811,14 +4930,14 @@ public final P_herkunftsland_langContext p_herkunftsland_lang() throws RecognitionException { P_herkunftsland_langContext _localctx = new P_herkunftsland_langContext(_ctx, getState()); - enterRule(_localctx, 154, RULE_p_herkunftsland_lang); + enterRule(_localctx, 158, RULE_p_herkunftsland_lang); int _la; try { enterOuterAlt(_localctx, 1); { - setState(632); + setState(642); match(P_HERKUNFTSLAND_LANG); - setState(633); + setState(643); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -4858,14 +4977,14 @@ public final P_herkunftsland_kurzContext p_herkunftsland_kurz() throws RecognitionException { P_herkunftsland_kurzContext _localctx = new P_herkunftsland_kurzContext(_ctx, getState()); - enterRule(_localctx, 156, RULE_p_herkunftsland_kurz); + enterRule(_localctx, 160, RULE_p_herkunftsland_kurz); int _la; try { enterOuterAlt(_localctx, 1); { - setState(635); + setState(645); match(P_HERKUNFTSLAND_KURZ); - setState(636); + setState(646); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -4904,13 +5023,13 @@ public final P_herkunftsland_sContext p_herkunftsland_s() throws RecognitionException { P_herkunftsland_sContext _localctx = new P_herkunftsland_sContext(_ctx, getState()); - enterRule(_localctx, 158, RULE_p_herkunftsland_s); + enterRule(_localctx, 162, RULE_p_herkunftsland_s); try { enterOuterAlt(_localctx, 1); { - setState(638); + setState(648); match(P_HERKUNFTSLAND_S); - setState(639); + setState(649); match(STRING); } } @@ -4944,13 +5063,13 @@ public final P_gemeindeschluesselContext p_gemeindeschluessel() throws RecognitionException { P_gemeindeschluesselContext _localctx = new P_gemeindeschluesselContext(_ctx, getState()); - enterRule(_localctx, 160, RULE_p_gemeindeschluessel); + enterRule(_localctx, 164, RULE_p_gemeindeschluessel); try { enterOuterAlt(_localctx, 1); { - setState(641); + setState(651); match(P_GEMEINDESCHLUESSEL); - setState(642); + setState(652); match(STRING); } } @@ -4985,14 +5104,14 @@ public final P_gemeindenameContext p_gemeindename() throws RecognitionException { P_gemeindenameContext _localctx = new P_gemeindenameContext(_ctx, getState()); - enterRule(_localctx, 162, RULE_p_gemeindename); + enterRule(_localctx, 166, RULE_p_gemeindename); int _la; try { enterOuterAlt(_localctx, 1); { - setState(644); + setState(654); match(P_GEMEINDENAME); - setState(645); + setState(655); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -5031,13 +5150,13 @@ public final P_orts_zusatzkennzahlContext p_orts_zusatzkennzahl() throws RecognitionException { P_orts_zusatzkennzahlContext _localctx = new P_orts_zusatzkennzahlContext(_ctx, getState()); - enterRule(_localctx, 164, RULE_p_orts_zusatzkennzahl); + enterRule(_localctx, 168, RULE_p_orts_zusatzkennzahl); try { enterOuterAlt(_localctx, 1); { - setState(647); + setState(657); match(P_ORTS_ZUSATZKENNZAHL); - setState(648); + setState(658); match(STRING); } } @@ -5078,56 +5197,56 @@ public final P_koordinatenContext p_koordinaten() throws RecognitionException { P_koordinatenContext _localctx = new P_koordinatenContext(_ctx, getState()); - enterRule(_localctx, 166, RULE_p_koordinaten); + enterRule(_localctx, 170, RULE_p_koordinaten); int _la; try { enterOuterAlt(_localctx, 1); { - setState(650); + setState(660); match(P_KOORDINATEN); - setState(651); + setState(661); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); } else { consume(); } - setState(655); + setState(665); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(652); + setState(662); match(T__4); } } - setState(657); + setState(667); _errHandler.sync(this); _la = _input.LA(1); } - setState(658); + setState(668); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); } else { consume(); } - setState(662); + setState(672); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(659); + setState(669); match(T__4); } } - setState(664); + setState(674); _errHandler.sync(this); _la = _input.LA(1); } - setState(665); + setState(675); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -5173,51 +5292,51 @@ public final P_koordinaten_sContext p_koordinaten_s() throws RecognitionException { P_koordinaten_sContext _localctx = new P_koordinaten_sContext(_ctx, getState()); - enterRule(_localctx, 168, RULE_p_koordinaten_s); + enterRule(_localctx, 172, RULE_p_koordinaten_s); int _la; try { enterOuterAlt(_localctx, 1); { - setState(667); + setState(677); match(P_KOORDINATEN_S); - setState(668); + setState(678); match(STRING); - setState(672); + setState(682); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(669); + setState(679); match(T__4); } } - setState(674); + setState(684); _errHandler.sync(this); _la = _input.LA(1); } - setState(675); + setState(685); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); } else { consume(); } - setState(679); + setState(689); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(676); + setState(686); match(T__4); } } - setState(681); + setState(691); _errHandler.sync(this); _la = _input.LA(1); } - setState(682); + setState(692); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -5257,14 +5376,14 @@ public final P_orts_zusatzcodeContext p_orts_zusatzcode() throws RecognitionException { P_orts_zusatzcodeContext _localctx = new P_orts_zusatzcodeContext(_ctx, getState()); - enterRule(_localctx, 170, RULE_p_orts_zusatzcode); + enterRule(_localctx, 174, RULE_p_orts_zusatzcode); int _la; try { enterOuterAlt(_localctx, 1); { - setState(684); + setState(694); match(P_ORTS_ZUSATZCODE); - setState(685); + setState(695); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -5304,14 +5423,14 @@ public final P_orts_zusatztextContext p_orts_zusatztext() throws RecognitionException { P_orts_zusatztextContext _localctx = new P_orts_zusatztextContext(_ctx, getState()); - enterRule(_localctx, 172, RULE_p_orts_zusatztext); + enterRule(_localctx, 176, RULE_p_orts_zusatztext); int _la; try { enterOuterAlt(_localctx, 1); { - setState(687); + setState(697); match(P_ORTS_ZUSATZTEXT); - setState(688); + setState(698); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -5351,14 +5470,14 @@ public final P_nuts_codeContext p_nuts_code() throws RecognitionException { P_nuts_codeContext _localctx = new P_nuts_codeContext(_ctx, getState()); - enterRule(_localctx, 174, RULE_p_nuts_code); + enterRule(_localctx, 178, RULE_p_nuts_code); int _la; try { enterOuterAlt(_localctx, 1); { - setState(690); + setState(700); match(P_NUTS_CODE); - setState(691); + setState(701); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -5398,14 +5517,14 @@ public final P_site_idContext p_site_id() throws RecognitionException { P_site_idContext _localctx = new P_site_idContext(_ctx, getState()); - enterRule(_localctx, 176, RULE_p_site_id); + enterRule(_localctx, 180, RULE_p_site_id); int _la; try { enterOuterAlt(_localctx, 1); { - setState(693); + setState(703); match(P_SITE_ID); - setState(694); + setState(704); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -5445,14 +5564,14 @@ public final P_site_nameContext p_site_name() throws RecognitionException { P_site_nameContext _localctx = new P_site_nameContext(_ctx, getState()); - enterRule(_localctx, 178, RULE_p_site_name); + enterRule(_localctx, 182, RULE_p_site_name); int _la; try { enterOuterAlt(_localctx, 1); { - setState(696); + setState(706); match(P_SITE_NAME); - setState(697); + setState(707); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -5491,13 +5610,13 @@ public final P_hoehe_nnContext p_hoehe_nn() throws RecognitionException { P_hoehe_nnContext _localctx = new P_hoehe_nnContext(_ctx, getState()); - enterRule(_localctx, 180, RULE_p_hoehe_nn); + enterRule(_localctx, 184, RULE_p_hoehe_nn); try { enterOuterAlt(_localctx, 1); { - setState(699); + setState(709); match(P_HOEHE_NN); - setState(700); + setState(710); match(STRING); } } @@ -5531,13 +5650,13 @@ public final P_hoehe_landContext p_hoehe_land() throws RecognitionException { P_hoehe_landContext _localctx = new P_hoehe_landContext(_ctx, getState()); - enterRule(_localctx, 182, RULE_p_hoehe_land); + enterRule(_localctx, 186, RULE_p_hoehe_land); try { enterOuterAlt(_localctx, 1); { - setState(702); + setState(712); match(P_HOEHE_LAND); - setState(703); + setState(713); match(STRING); } } @@ -5572,14 +5691,14 @@ public final MehrzweckfeldContext mehrzweckfeld() throws RecognitionException { MehrzweckfeldContext _localctx = new MehrzweckfeldContext(_ctx, getState()); - enterRule(_localctx, 184, RULE_mehrzweckfeld); + enterRule(_localctx, 188, RULE_mehrzweckfeld); int _la; try { enterOuterAlt(_localctx, 1); { - setState(705); + setState(715); match(MEHRZWECKFELD); - setState(706); + setState(716); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -5621,30 +5740,30 @@ public final Mess_datum_uhrzeitContext mess_datum_uhrzeit() throws RecognitionException { Mess_datum_uhrzeitContext _localctx = new Mess_datum_uhrzeitContext(_ctx, getState()); - enterRule(_localctx, 186, RULE_mess_datum_uhrzeit); + enterRule(_localctx, 190, RULE_mess_datum_uhrzeit); int _la; try { enterOuterAlt(_localctx, 1); { - setState(708); + setState(718); match(MESS_DATUM_UHRZEIT); - setState(709); + setState(719); match(STRING); - setState(713); + setState(723); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(710); + setState(720); match(T__4); } } - setState(715); + setState(725); _errHandler.sync(this); _la = _input.LA(1); } - setState(716); + setState(726); match(STRING); } } @@ -5678,13 +5797,13 @@ public final Messzeit_sekundenContext messzeit_sekunden() throws RecognitionException { Messzeit_sekundenContext _localctx = new Messzeit_sekundenContext(_ctx, getState()); - enterRule(_localctx, 188, RULE_messzeit_sekunden); + enterRule(_localctx, 192, RULE_messzeit_sekunden); try { enterOuterAlt(_localctx, 1); { - setState(718); + setState(728); match(MESSZEIT_SEKUNDEN); - setState(719); + setState(729); match(STRING); } } @@ -5719,14 +5838,14 @@ public final Messmethode_cContext messmethode_c() throws RecognitionException { Messmethode_cContext _localctx = new Messmethode_cContext(_ctx, getState()); - enterRule(_localctx, 190, RULE_messmethode_c); + enterRule(_localctx, 194, RULE_messmethode_c); int _la; try { enterOuterAlt(_localctx, 1); { - setState(721); + setState(731); match(MESSMETHODE_C); - setState(722); + setState(732); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -5766,14 +5885,14 @@ public final Messmethode_sContext messmethode_s() throws RecognitionException { Messmethode_sContext _localctx = new Messmethode_sContext(_ctx, getState()); - enterRule(_localctx, 192, RULE_messmethode_s); + enterRule(_localctx, 196, RULE_messmethode_s); int _la; try { enterOuterAlt(_localctx, 1); { - setState(724); + setState(734); match(MESSMETHODE_S); - setState(725); + setState(735); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -5813,14 +5932,14 @@ public final BearbeitungsstatusContext bearbeitungsstatus() throws RecognitionException { BearbeitungsstatusContext _localctx = new BearbeitungsstatusContext(_ctx, getState()); - enterRule(_localctx, 194, RULE_bearbeitungsstatus); + enterRule(_localctx, 198, RULE_bearbeitungsstatus); int _la; try { enterOuterAlt(_localctx, 1); { - setState(727); + setState(737); match(BEARBEITUNGSSTATUS); - setState(728); + setState(738); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -5859,13 +5978,13 @@ public final Pep_flagContext pep_flag() throws RecognitionException { Pep_flagContext _localctx = new Pep_flagContext(_ctx, getState()); - enterRule(_localctx, 196, RULE_pep_flag); + enterRule(_localctx, 200, RULE_pep_flag); try { enterOuterAlt(_localctx, 1); { - setState(730); + setState(740); match(PEP_FLAG); - setState(731); + setState(741); match(STRING); } } @@ -5899,13 +6018,13 @@ public final Erfassung_abgeschlossenContext erfassung_abgeschlossen() throws RecognitionException { Erfassung_abgeschlossenContext _localctx = new Erfassung_abgeschlossenContext(_ctx, getState()); - enterRule(_localctx, 198, RULE_erfassung_abgeschlossen); + enterRule(_localctx, 202, RULE_erfassung_abgeschlossen); try { enterOuterAlt(_localctx, 1); { - setState(733); + setState(743); match(ERFASSUNG_ABGESCHLOSSEN); - setState(734); + setState(744); match(STRING); } } @@ -5946,72 +6065,72 @@ public final ProbenzusatzbeschreibungContext probenzusatzbeschreibung() throws RecognitionException { ProbenzusatzbeschreibungContext _localctx = new ProbenzusatzbeschreibungContext(_ctx, getState()); - enterRule(_localctx, 200, RULE_probenzusatzbeschreibung); + enterRule(_localctx, 204, RULE_probenzusatzbeschreibung); int _la; try { enterOuterAlt(_localctx, 1); { - setState(736); + setState(746); match(PROBENZUSATZBESCHREIBUNG); - setState(737); + setState(747); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); } else { consume(); } - setState(741); + setState(751); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(738); + setState(748); match(T__4); } } - setState(743); + setState(753); _errHandler.sync(this); _la = _input.LA(1); } - setState(744); + setState(754); match(STRING); - setState(748); + setState(758); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(745); + setState(755); match(T__4); } } - setState(750); + setState(760); _errHandler.sync(this); _la = _input.LA(1); } - setState(751); + setState(761); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); } else { consume(); } - setState(755); + setState(765); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(752); + setState(762); match(T__4); } } - setState(757); + setState(767); _errHandler.sync(this); _la = _input.LA(1); } - setState(758); + setState(768); match(STRING); } } @@ -6049,67 +6168,67 @@ public final Pzb_sContext pzb_s() throws RecognitionException { Pzb_sContext _localctx = new Pzb_sContext(_ctx, getState()); - enterRule(_localctx, 202, RULE_pzb_s); + enterRule(_localctx, 206, RULE_pzb_s); int _la; try { enterOuterAlt(_localctx, 1); { - setState(760); + setState(770); match(PZB_S); - setState(761); + setState(771); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); } else { consume(); } - setState(765); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__4) { - { - { - setState(762); - match(T__4); - } - } - setState(767); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(768); - match(STRING); - setState(772); + setState(775); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(769); + setState(772); match(T__4); } } - setState(774); + setState(777); _errHandler.sync(this); _la = _input.LA(1); } - setState(775); + setState(778); match(STRING); - setState(779); + setState(782); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(776); + setState(779); match(T__4); } } - setState(781); + setState(784); _errHandler.sync(this); _la = _input.LA(1); } - setState(782); + setState(785); + match(STRING); + setState(789); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__4) { + { + { + setState(786); + match(T__4); + } + } + setState(791); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(792); match(STRING); } } @@ -6150,76 +6269,76 @@ public final MesswertContext messwert() throws RecognitionException { MesswertContext _localctx = new MesswertContext(_ctx, getState()); - enterRule(_localctx, 204, RULE_messwert); + enterRule(_localctx, 208, RULE_messwert); int _la; try { enterOuterAlt(_localctx, 1); { - setState(784); + setState(794); match(MESSWERT); - setState(785); + setState(795); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); } else { consume(); } - setState(789); + setState(799); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(786); + setState(796); match(T__4); } } - setState(791); + setState(801); _errHandler.sync(this); _la = _input.LA(1); } - setState(792); + setState(802); match(STRING); - setState(796); + setState(806); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(793); + setState(803); match(T__4); } } - setState(798); + setState(808); _errHandler.sync(this); _la = _input.LA(1); } - setState(799); + setState(809); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); } else { consume(); } - setState(803); + setState(813); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(800); + setState(810); match(T__4); } } - setState(805); + setState(815); _errHandler.sync(this); _la = _input.LA(1); } - setState(807); + setState(817); _la = _input.LA(1); if (_la==STRING) { { - setState(806); + setState(816); match(STRING); } } @@ -6259,66 +6378,66 @@ public final Messwert_sContext messwert_s() throws RecognitionException { Messwert_sContext _localctx = new Messwert_sContext(_ctx, getState()); - enterRule(_localctx, 206, RULE_messwert_s); + enterRule(_localctx, 210, RULE_messwert_s); int _la; try { enterOuterAlt(_localctx, 1); { - setState(809); + setState(819); match(MESSWERT_S); - setState(810); + setState(820); match(STRING); - setState(814); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__4) { - { - { - setState(811); - match(T__4); - } - } - setState(816); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(817); - match(STRING); - setState(821); + setState(824); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(818); + setState(821); match(T__4); } } - setState(823); + setState(826); _errHandler.sync(this); _la = _input.LA(1); } - setState(824); + setState(827); match(STRING); - setState(828); + setState(831); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(825); + setState(828); match(T__4); } } - setState(830); + setState(833); _errHandler.sync(this); _la = _input.LA(1); } - setState(832); + setState(834); + match(STRING); + setState(838); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__4) { + { + { + setState(835); + match(T__4); + } + } + setState(840); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(842); _la = _input.LA(1); if (_la==STRING) { { - setState(831); + setState(841); match(STRING); } } @@ -6362,145 +6481,145 @@ public final Messwert_iContext messwert_i() throws RecognitionException { Messwert_iContext _localctx = new Messwert_iContext(_ctx, getState()); - enterRule(_localctx, 208, RULE_messwert_i); + enterRule(_localctx, 212, RULE_messwert_i); int _la; try { enterOuterAlt(_localctx, 1); { - setState(834); + setState(844); match(MESSWERT_I); - setState(835); - _la = _input.LA(1); - if ( !(_la==STRING_ESC || _la==STRING) ) { - _errHandler.recoverInline(this); - } else { - consume(); - } - setState(839); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__4) { - { - { - setState(836); - match(T__4); - } - } - setState(841); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(842); - match(STRING); - setState(846); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__4) { - { - { - setState(843); - match(T__4); - } - } - setState(848); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(849); + setState(845); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); } else { consume(); } - setState(853); + setState(849); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(850); + setState(846); match(T__4); } } - setState(855); + setState(851); _errHandler.sync(this); _la = _input.LA(1); } + setState(852); + match(STRING); + setState(856); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__4) { + { + { + setState(853); + match(T__4); + } + } + setState(858); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(859); + _la = _input.LA(1); + if ( !(_la==STRING_ESC || _la==STRING) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } setState(863); - switch ( getInterpreter().adaptivePredict(_input,61,_ctx) ) { + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__4) { + { + { + setState(860); + match(T__4); + } + } + setState(865); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(873); + switch ( getInterpreter().adaptivePredict(_input,63,_ctx) ) { case 1: { - setState(856); + setState(866); match(STRING); - setState(860); + setState(870); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(857); + setState(867); match(T__4); } } - setState(862); + setState(872); _errHandler.sync(this); _la = _input.LA(1); } } break; } - setState(872); - switch ( getInterpreter().adaptivePredict(_input,63,_ctx) ) { + setState(882); + switch ( getInterpreter().adaptivePredict(_input,65,_ctx) ) { case 1: { - setState(865); + setState(875); match(STRING); - setState(869); + setState(879); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(866); + setState(876); match(T__4); } } - setState(871); + setState(881); _errHandler.sync(this); _la = _input.LA(1); } } break; } - setState(881); - switch ( getInterpreter().adaptivePredict(_input,65,_ctx) ) { + setState(891); + switch ( getInterpreter().adaptivePredict(_input,67,_ctx) ) { case 1: { - setState(874); + setState(884); match(STRING); - setState(878); + setState(888); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(875); + setState(885); match(T__4); } } - setState(880); + setState(890); _errHandler.sync(this); _la = _input.LA(1); } } break; } - setState(884); + setState(894); _la = _input.LA(1); if (_la==STRING_ESC || _la==STRING) { { - setState(883); + setState(893); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -6549,145 +6668,145 @@ public final Messwert_gContext messwert_g() throws RecognitionException { Messwert_gContext _localctx = new Messwert_gContext(_ctx, getState()); - enterRule(_localctx, 210, RULE_messwert_g); + enterRule(_localctx, 214, RULE_messwert_g); int _la; try { enterOuterAlt(_localctx, 1); { - setState(886); + setState(896); match(MESSWERT_G); - setState(887); - _la = _input.LA(1); - if ( !(_la==STRING_ESC || _la==STRING) ) { - _errHandler.recoverInline(this); - } else { - consume(); - } - setState(891); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__4) { - { - { - setState(888); - match(T__4); - } - } - setState(893); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(894); - match(STRING); - setState(898); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__4) { - { - { - setState(895); - match(T__4); - } - } - setState(900); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(901); + setState(897); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); } else { consume(); } - setState(905); + setState(901); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(902); + setState(898); match(T__4); } } - setState(907); + setState(903); _errHandler.sync(this); _la = _input.LA(1); } + setState(904); + match(STRING); + setState(908); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__4) { + { + { + setState(905); + match(T__4); + } + } + setState(910); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(911); + _la = _input.LA(1); + if ( !(_la==STRING_ESC || _la==STRING) ) { + _errHandler.recoverInline(this); + } else { + consume(); + } setState(915); - switch ( getInterpreter().adaptivePredict(_input,71,_ctx) ) { + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__4) { + { + { + setState(912); + match(T__4); + } + } + setState(917); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(925); + switch ( getInterpreter().adaptivePredict(_input,73,_ctx) ) { case 1: { - setState(908); + setState(918); match(STRING); - setState(912); + setState(922); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(909); + setState(919); match(T__4); } } - setState(914); + setState(924); _errHandler.sync(this); _la = _input.LA(1); } } break; } - setState(924); - switch ( getInterpreter().adaptivePredict(_input,73,_ctx) ) { + setState(934); + switch ( getInterpreter().adaptivePredict(_input,75,_ctx) ) { case 1: { - setState(917); + setState(927); match(STRING); - setState(921); + setState(931); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(918); + setState(928); match(T__4); } } - setState(923); + setState(933); _errHandler.sync(this); _la = _input.LA(1); } } break; } - setState(933); - switch ( getInterpreter().adaptivePredict(_input,75,_ctx) ) { + setState(943); + switch ( getInterpreter().adaptivePredict(_input,77,_ctx) ) { case 1: { - setState(926); + setState(936); match(STRING); - setState(930); + setState(940); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(927); + setState(937); match(T__4); } } - setState(932); + setState(942); _errHandler.sync(this); _la = _input.LA(1); } } break; } - setState(936); + setState(946); _la = _input.LA(1); if (_la==STRING_ESC || _la==STRING) { { - setState(935); + setState(945); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -6736,99 +6855,99 @@ public final Messwert_nwgContext messwert_nwg() throws RecognitionException { Messwert_nwgContext _localctx = new Messwert_nwgContext(_ctx, getState()); - enterRule(_localctx, 212, RULE_messwert_nwg); + enterRule(_localctx, 216, RULE_messwert_nwg); int _la; try { enterOuterAlt(_localctx, 1); { - setState(938); + setState(948); match(MESSWERT_NWG); - setState(939); + setState(949); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); } else { consume(); } - setState(943); + setState(953); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(940); + setState(950); match(T__4); } } - setState(945); + setState(955); _errHandler.sync(this); _la = _input.LA(1); } - setState(946); + setState(956); match(STRING); - setState(950); + setState(960); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(947); + setState(957); match(T__4); } } - setState(952); + setState(962); _errHandler.sync(this); _la = _input.LA(1); } - setState(953); + setState(963); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); } else { consume(); } - setState(957); + setState(967); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(954); + setState(964); match(T__4); } } - setState(959); + setState(969); _errHandler.sync(this); _la = _input.LA(1); } - setState(967); - switch ( getInterpreter().adaptivePredict(_input,81,_ctx) ) { + setState(977); + switch ( getInterpreter().adaptivePredict(_input,83,_ctx) ) { case 1: { - setState(960); + setState(970); match(STRING); - setState(964); + setState(974); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(961); + setState(971); match(T__4); } } - setState(966); + setState(976); _errHandler.sync(this); _la = _input.LA(1); } } break; } - setState(970); + setState(980); _la = _input.LA(1); if (_la==STRING) { { - setState(969); + setState(979); match(STRING); } } @@ -6868,89 +6987,89 @@ public final Messwert_nwg_sContext messwert_nwg_s() throws RecognitionException { Messwert_nwg_sContext _localctx = new Messwert_nwg_sContext(_ctx, getState()); - enterRule(_localctx, 214, RULE_messwert_nwg_s); + enterRule(_localctx, 218, RULE_messwert_nwg_s); int _la; try { enterOuterAlt(_localctx, 1); { - setState(972); + setState(982); match(MESSWERT_NWG_S); - setState(973); + setState(983); match(STRING); - setState(977); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__4) { - { - { - setState(974); - match(T__4); - } - } - setState(979); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(980); - match(STRING); - setState(984); + setState(987); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(981); + setState(984); match(T__4); } } - setState(986); + setState(989); _errHandler.sync(this); _la = _input.LA(1); } - setState(987); + setState(990); match(STRING); - setState(991); + setState(994); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(988); + setState(991); match(T__4); } } - setState(993); + setState(996); _errHandler.sync(this); _la = _input.LA(1); } + setState(997); + match(STRING); setState(1001); - switch ( getInterpreter().adaptivePredict(_input,87,_ctx) ) { + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__4) { + { + { + setState(998); + match(T__4); + } + } + setState(1003); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1011); + switch ( getInterpreter().adaptivePredict(_input,89,_ctx) ) { case 1: { - setState(994); + setState(1004); match(STRING); - setState(998); + setState(1008); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(995); + setState(1005); match(T__4); } } - setState(1000); + setState(1010); _errHandler.sync(this); _la = _input.LA(1); } } break; } - setState(1004); + setState(1014); _la = _input.LA(1); if (_la==STRING) { { - setState(1003); + setState(1013); match(STRING); } } @@ -6994,164 +7113,164 @@ public final Messwert_nwg_iContext messwert_nwg_i() throws RecognitionException { Messwert_nwg_iContext _localctx = new Messwert_nwg_iContext(_ctx, getState()); - enterRule(_localctx, 216, RULE_messwert_nwg_i); + enterRule(_localctx, 220, RULE_messwert_nwg_i); int _la; try { enterOuterAlt(_localctx, 1); { - setState(1006); + setState(1016); match(MESSWERT_NWG_I); - setState(1007); + setState(1017); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); } else { consume(); } - setState(1011); + setState(1021); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(1008); + setState(1018); match(T__4); } } - setState(1013); + setState(1023); _errHandler.sync(this); _la = _input.LA(1); } - setState(1014); + setState(1024); match(STRING); - setState(1018); + setState(1028); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(1015); + setState(1025); match(T__4); } } - setState(1020); + setState(1030); _errHandler.sync(this); _la = _input.LA(1); } - setState(1021); + setState(1031); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); } else { consume(); } - setState(1025); + setState(1035); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(1022); + setState(1032); match(T__4); } } - setState(1027); + setState(1037); _errHandler.sync(this); _la = _input.LA(1); } - setState(1035); - switch ( getInterpreter().adaptivePredict(_input,93,_ctx) ) { + setState(1045); + switch ( getInterpreter().adaptivePredict(_input,95,_ctx) ) { case 1: { - setState(1028); + setState(1038); match(STRING); - setState(1032); + setState(1042); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(1029); + setState(1039); match(T__4); } } - setState(1034); + setState(1044); _errHandler.sync(this); _la = _input.LA(1); } } break; } - setState(1044); - switch ( getInterpreter().adaptivePredict(_input,95,_ctx) ) { + setState(1054); + switch ( getInterpreter().adaptivePredict(_input,97,_ctx) ) { case 1: { - setState(1037); + setState(1047); match(STRING); - setState(1041); + setState(1051); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(1038); + setState(1048); match(T__4); } } - setState(1043); + setState(1053); _errHandler.sync(this); _la = _input.LA(1); } } break; } - setState(1053); - switch ( getInterpreter().adaptivePredict(_input,97,_ctx) ) { + setState(1063); + switch ( getInterpreter().adaptivePredict(_input,99,_ctx) ) { case 1: { - setState(1046); + setState(1056); match(STRING); - setState(1050); + setState(1060); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(1047); + setState(1057); match(T__4); } } - setState(1052); + setState(1062); _errHandler.sync(this); _la = _input.LA(1); } } break; } - setState(1062); - switch ( getInterpreter().adaptivePredict(_input,99,_ctx) ) { + setState(1072); + switch ( getInterpreter().adaptivePredict(_input,101,_ctx) ) { case 1: { - setState(1055); + setState(1065); match(STRING); - setState(1059); + setState(1069); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(1056); + setState(1066); match(T__4); } } - setState(1061); + setState(1071); _errHandler.sync(this); _la = _input.LA(1); } } break; } - setState(1064); + setState(1074); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -7197,161 +7316,161 @@ public final Messwert_nwg_gContext messwert_nwg_g() throws RecognitionException { Messwert_nwg_gContext _localctx = new Messwert_nwg_gContext(_ctx, getState()); - enterRule(_localctx, 218, RULE_messwert_nwg_g); + enterRule(_localctx, 222, RULE_messwert_nwg_g); int _la; try { enterOuterAlt(_localctx, 1); { - setState(1066); + setState(1076); match(MESSWERT_NWG_G); - setState(1067); + setState(1077); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); } else { consume(); } - setState(1071); + setState(1081); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(1068); + setState(1078); match(T__4); } } - setState(1073); + setState(1083); _errHandler.sync(this); _la = _input.LA(1); } - setState(1074); + setState(1084); match(STRING); - setState(1078); + setState(1088); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(1075); + setState(1085); match(T__4); } } - setState(1080); + setState(1090); _errHandler.sync(this); _la = _input.LA(1); } - setState(1081); + setState(1091); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); } else { consume(); } - setState(1085); + setState(1095); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(1082); + setState(1092); match(T__4); } } - setState(1087); + setState(1097); _errHandler.sync(this); _la = _input.LA(1); } - setState(1095); - switch ( getInterpreter().adaptivePredict(_input,104,_ctx) ) { + setState(1105); + switch ( getInterpreter().adaptivePredict(_input,106,_ctx) ) { case 1: { - setState(1088); + setState(1098); match(STRING); - setState(1092); + setState(1102); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(1089); + setState(1099); match(T__4); } } - setState(1094); + setState(1104); _errHandler.sync(this); _la = _input.LA(1); } } break; } - setState(1097); + setState(1107); match(STRING); - setState(1101); + setState(1111); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(1098); + setState(1108); match(T__4); } } - setState(1103); + setState(1113); _errHandler.sync(this); _la = _input.LA(1); } - setState(1111); - switch ( getInterpreter().adaptivePredict(_input,107,_ctx) ) { + setState(1121); + switch ( getInterpreter().adaptivePredict(_input,109,_ctx) ) { case 1: { - setState(1104); + setState(1114); match(STRING); - setState(1108); + setState(1118); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(1105); + setState(1115); match(T__4); } } - setState(1110); + setState(1120); _errHandler.sync(this); _la = _input.LA(1); } } break; } - setState(1120); - switch ( getInterpreter().adaptivePredict(_input,109,_ctx) ) { + setState(1130); + switch ( getInterpreter().adaptivePredict(_input,111,_ctx) ) { case 1: { - setState(1113); + setState(1123); match(STRING); - setState(1117); + setState(1127); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(1114); + setState(1124); match(T__4); } } - setState(1119); + setState(1129); _errHandler.sync(this); _la = _input.LA(1); } } break; } - setState(1123); + setState(1133); _la = _input.LA(1); if (_la==STRING_ESC || _la==STRING) { { - setState(1122); + setState(1132); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -7400,67 +7519,67 @@ public final KommentarContext kommentar() throws RecognitionException { KommentarContext _localctx = new KommentarContext(_ctx, getState()); - enterRule(_localctx, 220, RULE_kommentar); + enterRule(_localctx, 224, RULE_kommentar); int _la; try { enterOuterAlt(_localctx, 1); { - setState(1125); + setState(1135); match(KOMMENTAR); - setState(1126); + setState(1136); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); } else { consume(); } - setState(1130); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__4) { - { - { - setState(1127); - match(T__4); - } - } - setState(1132); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(1133); - match(STRING); - setState(1137); + setState(1140); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(1134); + setState(1137); match(T__4); } } - setState(1139); + setState(1142); _errHandler.sync(this); _la = _input.LA(1); } - setState(1140); + setState(1143); match(STRING); - setState(1144); + setState(1147); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(1141); + setState(1144); match(T__4); } } - setState(1146); + setState(1149); _errHandler.sync(this); _la = _input.LA(1); } - setState(1147); + setState(1150); + match(STRING); + setState(1154); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__4) { + { + { + setState(1151); + match(T__4); + } + } + setState(1156); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1157); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -7500,14 +7619,14 @@ public final Kommentar_tContext kommentar_t() throws RecognitionException { Kommentar_tContext _localctx = new Kommentar_tContext(_ctx, getState()); - enterRule(_localctx, 222, RULE_kommentar_t); + enterRule(_localctx, 226, RULE_kommentar_t); int _la; try { enterOuterAlt(_localctx, 1); { - setState(1149); + setState(1159); match(KOMMENTAR_T); - setState(1150); + setState(1160); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -7553,67 +7672,67 @@ public final ProbenkommentarContext probenkommentar() throws RecognitionException { ProbenkommentarContext _localctx = new ProbenkommentarContext(_ctx, getState()); - enterRule(_localctx, 224, RULE_probenkommentar); + enterRule(_localctx, 228, RULE_probenkommentar); int _la; try { enterOuterAlt(_localctx, 1); { - setState(1152); + setState(1162); match(PROBENKOMMENTAR); - setState(1153); + setState(1163); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); } else { consume(); } - setState(1157); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==T__4) { - { - { - setState(1154); - match(T__4); - } - } - setState(1159); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(1160); - match(STRING); - setState(1164); + setState(1167); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(1161); + setState(1164); match(T__4); } } - setState(1166); + setState(1169); _errHandler.sync(this); _la = _input.LA(1); } - setState(1167); + setState(1170); match(STRING); - setState(1171); + setState(1174); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__4) { { { - setState(1168); + setState(1171); match(T__4); } } - setState(1173); + setState(1176); _errHandler.sync(this); _la = _input.LA(1); } - setState(1174); + setState(1177); + match(STRING); + setState(1181); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__4) { + { + { + setState(1178); + match(T__4); + } + } + setState(1183); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(1184); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -7653,14 +7772,14 @@ public final Probenkommentar_tContext probenkommentar_t() throws RecognitionException { Probenkommentar_tContext _localctx = new Probenkommentar_tContext(_ctx, getState()); - enterRule(_localctx, 226, RULE_probenkommentar_t); + enterRule(_localctx, 230, RULE_probenkommentar_t); int _la; try { enterOuterAlt(_localctx, 1); { - setState(1176); + setState(1186); match(PROBENKOMMENTAR_T); - setState(1177); + setState(1187); _la = _input.LA(1); if ( !(_la==STRING_ESC || _la==STRING) ) { _errHandler.recoverInline(this); @@ -7681,7 +7800,7 @@ } public static final String _serializedATN = - "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3b\u049e\4\2\t\2\4"+ + "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3b\u04a8\4\2\t\2\4"+ "\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t"+ "\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+ "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+ @@ -7693,434 +7812,437 @@ "\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT"+ "\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_\4"+ "`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4h\th\4i\ti\4j\tj\4k\t"+ - "k\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4q\tq\4r\tr\4s\ts\3\2\7\2\u00e8\n\2\f"+ - "\2\16\2\u00eb\13\2\3\2\5\2\u00ee\n\2\3\2\3\2\3\3\3\3\3\4\3\4\6\4\u00f6"+ - "\n\4\r\4\16\4\u00f7\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3"+ + "k\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\3\2\7\2"+ + "\u00ec\n\2\f\2\16\2\u00ef\13\2\3\2\5\2\u00f2\n\2\3\2\3\2\3\3\3\3\3\4\3"+ + "\4\6\4\u00fa\n\4\r\4\16\4\u00fb\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3"+ "\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5"+ - "\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\5\5\u0125\n\5\3\6"+ - "\5\6\u0128\n\6\3\6\6\6\u012b\n\6\r\6\16\6\u012c\3\7\3\7\3\b\3\b\3\b\3"+ - "\b\3\b\3\b\3\b\3\b\3\b\3\b\5\b\u013b\n\b\3\t\3\t\5\t\u013f\n\t\3\n\3\n"+ - "\5\n\u0143\n\n\3\13\3\13\5\13\u0147\n\13\3\f\3\f\5\f\u014b\n\f\3\r\3\r"+ - "\3\r\5\r\u0150\n\r\3\16\3\16\5\16\u0154\n\16\3\17\3\17\5\17\u0158\n\17"+ - "\3\20\3\20\5\20\u015c\n\20\3\21\3\21\5\21\u0160\n\21\3\22\3\22\5\22\u0164"+ - "\n\22\3\23\3\23\3\23\5\23\u0169\n\23\3\24\3\24\5\24\u016d\n\24\3\25\3"+ - "\25\5\25\u0171\n\25\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\5\26\u017b"+ - "\n\26\3\27\3\27\5\27\u017f\n\27\3\30\3\30\5\30\u0183\n\30\3\31\3\31\7"+ - "\31\u0187\n\31\f\31\16\31\u018a\13\31\3\32\3\32\3\32\3\32\3\32\3\32\3"+ - "\32\5\32\u0193\n\32\3\33\3\33\3\33\5\33\u0198\n\33\3\34\3\34\5\34\u019c"+ - "\n\34\3\35\3\35\5\35\u01a0\n\35\3\36\3\36\3\36\3\37\3\37\3\37\3 \3 \3"+ - " \3!\3!\3!\3\"\3\"\3\"\3#\3#\3#\3$\3$\3$\3%\3%\3%\3&\3&\3&\3\'\3\'\3\'"+ - "\3(\3(\3(\3)\3)\3)\3*\3*\3*\3+\3+\3+\3,\3,\3,\3-\3-\3-\3.\3.\3.\3/\3/"+ - "\3/\3\60\3\60\3\60\3\61\3\61\3\61\3\62\3\62\3\62\3\63\3\63\3\63\3\64\3"+ - "\64\3\64\3\65\3\65\3\65\7\65\u01ea\n\65\f\65\16\65\u01ed\13\65\3\65\3"+ - "\65\3\66\3\66\3\66\7\66\u01f4\n\66\f\66\16\66\u01f7\13\66\3\66\3\66\3"+ - "\67\3\67\3\67\7\67\u01fe\n\67\f\67\16\67\u0201\13\67\3\67\3\67\38\38\3"+ - "8\78\u0208\n8\f8\168\u020b\138\38\38\39\39\39\79\u0212\n9\f9\169\u0215"+ - "\139\39\39\3:\3:\3:\3;\3;\3;\3<\3<\3<\3=\3=\3=\3>\3>\3>\3?\3?\3?\7?\u022b"+ - "\n?\f?\16?\u022e\13?\3?\3?\3@\3@\3@\3A\3A\3A\3B\3B\3B\3C\3C\3C\3D\3D\3"+ - "D\3E\3E\3E\3F\3F\3F\3G\3G\3G\3H\3H\3H\3I\3I\3I\3J\3J\3J\7J\u0253\nJ\f"+ - "J\16J\u0256\13J\3J\3J\7J\u025a\nJ\fJ\16J\u025d\13J\3J\3J\3K\3K\3K\7K\u0264"+ - "\nK\fK\16K\u0267\13K\3K\3K\7K\u026b\nK\fK\16K\u026e\13K\3K\3K\3L\3L\3"+ - "L\3M\3M\3M\3N\3N\3N\3O\3O\3O\3P\3P\3P\3Q\3Q\3Q\3R\3R\3R\3S\3S\3S\3T\3"+ - "T\3T\3U\3U\3U\7U\u0290\nU\fU\16U\u0293\13U\3U\3U\7U\u0297\nU\fU\16U\u029a"+ - "\13U\3U\3U\3V\3V\3V\7V\u02a1\nV\fV\16V\u02a4\13V\3V\3V\7V\u02a8\nV\fV"+ - "\16V\u02ab\13V\3V\3V\3W\3W\3W\3X\3X\3X\3Y\3Y\3Y\3Z\3Z\3Z\3[\3[\3[\3\\"+ - "\3\\\3\\\3]\3]\3]\3^\3^\3^\3_\3_\3_\7_\u02ca\n_\f_\16_\u02cd\13_\3_\3"+ - "_\3`\3`\3`\3a\3a\3a\3b\3b\3b\3c\3c\3c\3d\3d\3d\3e\3e\3e\3f\3f\3f\7f\u02e6"+ - "\nf\ff\16f\u02e9\13f\3f\3f\7f\u02ed\nf\ff\16f\u02f0\13f\3f\3f\7f\u02f4"+ - "\nf\ff\16f\u02f7\13f\3f\3f\3g\3g\3g\7g\u02fe\ng\fg\16g\u0301\13g\3g\3"+ - "g\7g\u0305\ng\fg\16g\u0308\13g\3g\3g\7g\u030c\ng\fg\16g\u030f\13g\3g\3"+ - "g\3h\3h\3h\7h\u0316\nh\fh\16h\u0319\13h\3h\3h\7h\u031d\nh\fh\16h\u0320"+ - "\13h\3h\3h\7h\u0324\nh\fh\16h\u0327\13h\3h\5h\u032a\nh\3i\3i\3i\7i\u032f"+ - "\ni\fi\16i\u0332\13i\3i\3i\7i\u0336\ni\fi\16i\u0339\13i\3i\3i\7i\u033d"+ - "\ni\fi\16i\u0340\13i\3i\5i\u0343\ni\3j\3j\3j\7j\u0348\nj\fj\16j\u034b"+ - "\13j\3j\3j\7j\u034f\nj\fj\16j\u0352\13j\3j\3j\7j\u0356\nj\fj\16j\u0359"+ - "\13j\3j\3j\7j\u035d\nj\fj\16j\u0360\13j\5j\u0362\nj\3j\3j\7j\u0366\nj"+ - "\fj\16j\u0369\13j\5j\u036b\nj\3j\3j\7j\u036f\nj\fj\16j\u0372\13j\5j\u0374"+ - "\nj\3j\5j\u0377\nj\3k\3k\3k\7k\u037c\nk\fk\16k\u037f\13k\3k\3k\7k\u0383"+ - "\nk\fk\16k\u0386\13k\3k\3k\7k\u038a\nk\fk\16k\u038d\13k\3k\3k\7k\u0391"+ - "\nk\fk\16k\u0394\13k\5k\u0396\nk\3k\3k\7k\u039a\nk\fk\16k\u039d\13k\5"+ - "k\u039f\nk\3k\3k\7k\u03a3\nk\fk\16k\u03a6\13k\5k\u03a8\nk\3k\5k\u03ab"+ - "\nk\3l\3l\3l\7l\u03b0\nl\fl\16l\u03b3\13l\3l\3l\7l\u03b7\nl\fl\16l\u03ba"+ - "\13l\3l\3l\7l\u03be\nl\fl\16l\u03c1\13l\3l\3l\7l\u03c5\nl\fl\16l\u03c8"+ - "\13l\5l\u03ca\nl\3l\5l\u03cd\nl\3m\3m\3m\7m\u03d2\nm\fm\16m\u03d5\13m"+ - "\3m\3m\7m\u03d9\nm\fm\16m\u03dc\13m\3m\3m\7m\u03e0\nm\fm\16m\u03e3\13"+ - "m\3m\3m\7m\u03e7\nm\fm\16m\u03ea\13m\5m\u03ec\nm\3m\5m\u03ef\nm\3n\3n"+ - "\3n\7n\u03f4\nn\fn\16n\u03f7\13n\3n\3n\7n\u03fb\nn\fn\16n\u03fe\13n\3"+ - "n\3n\7n\u0402\nn\fn\16n\u0405\13n\3n\3n\7n\u0409\nn\fn\16n\u040c\13n\5"+ - "n\u040e\nn\3n\3n\7n\u0412\nn\fn\16n\u0415\13n\5n\u0417\nn\3n\3n\7n\u041b"+ - "\nn\fn\16n\u041e\13n\5n\u0420\nn\3n\3n\7n\u0424\nn\fn\16n\u0427\13n\5"+ - "n\u0429\nn\3n\3n\3o\3o\3o\7o\u0430\no\fo\16o\u0433\13o\3o\3o\7o\u0437"+ - "\no\fo\16o\u043a\13o\3o\3o\7o\u043e\no\fo\16o\u0441\13o\3o\3o\7o\u0445"+ - "\no\fo\16o\u0448\13o\5o\u044a\no\3o\3o\7o\u044e\no\fo\16o\u0451\13o\3"+ - "o\3o\7o\u0455\no\fo\16o\u0458\13o\5o\u045a\no\3o\3o\7o\u045e\no\fo\16"+ - "o\u0461\13o\5o\u0463\no\3o\5o\u0466\no\3p\3p\3p\7p\u046b\np\fp\16p\u046e"+ - "\13p\3p\3p\7p\u0472\np\fp\16p\u0475\13p\3p\3p\7p\u0479\np\fp\16p\u047c"+ - "\13p\3p\3p\3q\3q\3q\3r\3r\3r\7r\u0486\nr\fr\16r\u0489\13r\3r\3r\7r\u048d"+ - "\nr\fr\16r\u0490\13r\3r\3r\7r\u0494\nr\fr\16r\u0497\13r\3r\3r\3s\3s\3"+ - "s\3s\2\2t\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\66"+ - "8:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a"+ - "\u008c\u008e\u0090\u0092\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2"+ - "\u00a4\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba"+ - "\u00bc\u00be\u00c0\u00c2\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0\u00d2"+ - "\u00d4\u00d6\u00d8\u00da\u00dc\u00de\u00e0\u00e2\u00e4\2\3\3\2`a\u04df"+ - "\2\u00e9\3\2\2\2\4\u00f1\3\2\2\2\6\u00f3\3\2\2\2\b\u0124\3\2\2\2\n\u0127"+ - "\3\2\2\2\f\u012e\3\2\2\2\16\u013a\3\2\2\2\20\u013e\3\2\2\2\22\u0142\3"+ - "\2\2\2\24\u0146\3\2\2\2\26\u014a\3\2\2\2\30\u014f\3\2\2\2\32\u0153\3\2"+ - "\2\2\34\u0157\3\2\2\2\36\u015b\3\2\2\2 \u015f\3\2\2\2\"\u0163\3\2\2\2"+ - "$\u0168\3\2\2\2&\u016c\3\2\2\2(\u0170\3\2\2\2*\u017a\3\2\2\2,\u017e\3"+ - "\2\2\2.\u0182\3\2\2\2\60\u0184\3\2\2\2\62\u0192\3\2\2\2\64\u0197\3\2\2"+ - "\2\66\u019b\3\2\2\28\u019f\3\2\2\2:\u01a1\3\2\2\2<\u01a4\3\2\2\2>\u01a7"+ - "\3\2\2\2@\u01aa\3\2\2\2B\u01ad\3\2\2\2D\u01b0\3\2\2\2F\u01b3\3\2\2\2H"+ - "\u01b6\3\2\2\2J\u01b9\3\2\2\2L\u01bc\3\2\2\2N\u01bf\3\2\2\2P\u01c2\3\2"+ - "\2\2R\u01c5\3\2\2\2T\u01c8\3\2\2\2V\u01cb\3\2\2\2X\u01ce\3\2\2\2Z\u01d1"+ - "\3\2\2\2\\\u01d4\3\2\2\2^\u01d7\3\2\2\2`\u01da\3\2\2\2b\u01dd\3\2\2\2"+ - "d\u01e0\3\2\2\2f\u01e3\3\2\2\2h\u01e6\3\2\2\2j\u01f0\3\2\2\2l\u01fa\3"+ - "\2\2\2n\u0204\3\2\2\2p\u020e\3\2\2\2r\u0218\3\2\2\2t\u021b\3\2\2\2v\u021e"+ - "\3\2\2\2x\u0221\3\2\2\2z\u0224\3\2\2\2|\u0227\3\2\2\2~\u0231\3\2\2\2\u0080"+ - "\u0234\3\2\2\2\u0082\u0237\3\2\2\2\u0084\u023a\3\2\2\2\u0086\u023d\3\2"+ - "\2\2\u0088\u0240\3\2\2\2\u008a\u0243\3\2\2\2\u008c\u0246\3\2\2\2\u008e"+ - "\u0249\3\2\2\2\u0090\u024c\3\2\2\2\u0092\u024f\3\2\2\2\u0094\u0260\3\2"+ - "\2\2\u0096\u0271\3\2\2\2\u0098\u0274\3\2\2\2\u009a\u0277\3\2\2\2\u009c"+ - "\u027a\3\2\2\2\u009e\u027d\3\2\2\2\u00a0\u0280\3\2\2\2\u00a2\u0283\3\2"+ - "\2\2\u00a4\u0286\3\2\2\2\u00a6\u0289\3\2\2\2\u00a8\u028c\3\2\2\2\u00aa"+ - "\u029d\3\2\2\2\u00ac\u02ae\3\2\2\2\u00ae\u02b1\3\2\2\2\u00b0\u02b4\3\2"+ - "\2\2\u00b2\u02b7\3\2\2\2\u00b4\u02ba\3\2\2\2\u00b6\u02bd\3\2\2\2\u00b8"+ - "\u02c0\3\2\2\2\u00ba\u02c3\3\2\2\2\u00bc\u02c6\3\2\2\2\u00be\u02d0\3\2"+ - "\2\2\u00c0\u02d3\3\2\2\2\u00c2\u02d6\3\2\2\2\u00c4\u02d9\3\2\2\2\u00c6"+ - "\u02dc\3\2\2\2\u00c8\u02df\3\2\2\2\u00ca\u02e2\3\2\2\2\u00cc\u02fa\3\2"+ - "\2\2\u00ce\u0312\3\2\2\2\u00d0\u032b\3\2\2\2\u00d2\u0344\3\2\2\2\u00d4"+ - "\u0378\3\2\2\2\u00d6\u03ac\3\2\2\2\u00d8\u03ce\3\2\2\2\u00da\u03f0\3\2"+ - "\2\2\u00dc\u042c\3\2\2\2\u00de\u0467\3\2\2\2\u00e0\u047f\3\2\2\2\u00e2"+ - "\u0482\3\2\2\2\u00e4\u049a\3\2\2\2\u00e6\u00e8\5\6\4\2\u00e7\u00e6\3\2"+ - "\2\2\u00e8\u00eb\3\2\2\2\u00e9\u00e7\3\2\2\2\u00e9\u00ea\3\2\2\2\u00ea"+ - "\u00ed\3\2\2\2\u00eb\u00e9\3\2\2\2\u00ec\u00ee\5\4\3\2\u00ed\u00ec\3\2"+ - "\2\2\u00ed\u00ee\3\2\2\2\u00ee\u00ef\3\2\2\2\u00ef\u00f0\7\2\2\3\u00f0"+ - "\3\3\2\2\2\u00f1\u00f2\7\3\2\2\u00f2\5\3\2\2\2\u00f3\u00f5\7\4\2\2\u00f4"+ - "\u00f6\5\b\5\2\u00f5\u00f4\3\2\2\2\u00f6\u00f7\3\2\2\2\u00f7\u00f5\3\2"+ - "\2\2\u00f7\u00f8\3\2\2\2\u00f8\7\3\2\2\2\u00f9\u0125\5\20\t\2\u00fa\u0125"+ - "\5:\36\2\u00fb\u0125\5<\37\2\u00fc\u0125\5B\"\2\u00fd\u0125\5D#\2\u00fe"+ - "\u0125\5$\23\2\u00ff\u0125\5L\'\2\u0100\u0125\5N(\2\u0101\u0125\5P)\2"+ - "\u0102\u0125\5&\24\2\u0103\u0125\5\22\n\2\u0104\u0125\5^\60\2\u0105\u0125"+ - "\5`\61\2\u0106\u0125\5b\62\2\u0107\u0125\5\36\20\2\u0108\u0125\5n8\2\u0109"+ - "\u0125\5p9\2\u010a\u0125\5h\65\2\u010b\u0125\5j\66\2\u010c\u0125\5\24"+ - "\13\2\u010d\u0125\5v<\2\u010e\u0125\5\26\f\2\u010f\u0125\5|?\2\u0110\u0125"+ - "\5~@\2\u0111\u0125\5\u0080A\2\u0112\u0125\5\u0082B\2\u0113\u0125\5\u0084"+ - "C\2\u0114\u0125\5\60\31\2\u0115\u0125\5\30\r\2\u0116\u0125\5\32\16\2\u0117"+ - "\u0125\5\u00a6T\2\u0118\u0125\5\34\17\2\u0119\u0125\5\u00acW\2\u011a\u0125"+ - "\5\u00aeX\2\u011b\u0125\5\u00b0Y\2\u011c\u0125\5\u00b2Z\2\u011d\u0125"+ - "\5\u00b4[\2\u011e\u0125\5\u00b6\\\2\u011f\u0125\5\u00b8]\2\u0120\u0125"+ - "\5\u00ba^\2\u0121\u0125\5\n\6\2\u0122\u0125\5 \21\2\u0123\u0125\5\"\22"+ - "\2\u0124\u00f9\3\2\2\2\u0124\u00fa\3\2\2\2\u0124\u00fb\3\2\2\2\u0124\u00fc"+ - "\3\2\2\2\u0124\u00fd\3\2\2\2\u0124\u00fe\3\2\2\2\u0124\u00ff\3\2\2\2\u0124"+ - "\u0100\3\2\2\2\u0124\u0101\3\2\2\2\u0124\u0102\3\2\2\2\u0124\u0103\3\2"+ - "\2\2\u0124\u0104\3\2\2\2\u0124\u0105\3\2\2\2\u0124\u0106\3\2\2\2\u0124"+ - "\u0107\3\2\2\2\u0124\u0108\3\2\2\2\u0124\u0109\3\2\2\2\u0124\u010a\3\2"+ - "\2\2\u0124\u010b\3\2\2\2\u0124\u010c\3\2\2\2\u0124\u010d\3\2\2\2\u0124"+ - "\u010e\3\2\2\2\u0124\u010f\3\2\2\2\u0124\u0110\3\2\2\2\u0124\u0111\3\2"+ - "\2\2\u0124\u0112\3\2\2\2\u0124\u0113\3\2\2\2\u0124\u0114\3\2\2\2\u0124"+ - "\u0115\3\2\2\2\u0124\u0116\3\2\2\2\u0124\u0117\3\2\2\2\u0124\u0118\3\2"+ - "\2\2\u0124\u0119\3\2\2\2\u0124\u011a\3\2\2\2\u0124\u011b\3\2\2\2\u0124"+ - "\u011c\3\2\2\2\u0124\u011d\3\2\2\2\u0124\u011e\3\2\2\2\u0124\u011f\3\2"+ - "\2\2\u0124\u0120\3\2\2\2\u0124\u0121\3\2\2\2\u0124\u0122\3\2\2\2\u0124"+ - "\u0123\3\2\2\2\u0125\t\3\2\2\2\u0126\u0128\5\f\7\2\u0127\u0126\3\2\2\2"+ - "\u0127\u0128\3\2\2\2\u0128\u012a\3\2\2\2\u0129\u012b\5\16\b\2\u012a\u0129"+ - "\3\2\2\2\u012b\u012c\3\2\2\2\u012c\u012a\3\2\2\2\u012c\u012d\3\2\2\2\u012d"+ - "\13\3\2\2\2\u012e\u012f\7\5\2\2\u012f\r\3\2\2\2\u0130\u013b\5R*\2\u0131"+ - "\u013b\5.\30\2\u0132\u013b\5\u00bc_\2\u0133\u013b\5\u00be`\2\u0134\u013b"+ - "\5(\25\2\u0135\u013b\5\u00c4c\2\u0136\u013b\5\u00c6d\2\u0137\u013b\5\u00c8"+ - "e\2\u0138\u013b\5*\26\2\u0139\u013b\5,\27\2\u013a\u0130\3\2\2\2\u013a"+ - "\u0131\3\2\2\2\u013a\u0132\3\2\2\2\u013a\u0133\3\2\2\2\u013a\u0134\3\2"+ - "\2\2\u013a\u0135\3\2\2\2\u013a\u0136\3\2\2\2\u013a\u0137\3\2\2\2\u013a"+ - "\u0138\3\2\2\2\u013a\u0139\3\2\2\2\u013b\17\3\2\2\2\u013c\u013f\5> \2"+ - "\u013d\u013f\5@!\2\u013e\u013c\3\2\2\2\u013e\u013d\3\2\2\2\u013f\21\3"+ - "\2\2\2\u0140\u0143\5Z.\2\u0141\u0143\5\\/\2\u0142\u0140\3\2\2\2\u0142"+ - "\u0141\3\2\2\2\u0143\23\3\2\2\2\u0144\u0147\5r:\2\u0145\u0147\5t;\2\u0146"+ - "\u0144\3\2\2\2\u0146\u0145\3\2\2\2\u0147\25\3\2\2\2\u0148\u014b\5x=\2"+ - "\u0149\u014b\5z>\2\u014a\u0148\3\2\2\2\u014a\u0149\3\2\2\2\u014b\27\3"+ - "\2\2\2\u014c\u0150\5\u009cO\2\u014d\u0150\5\u009eP\2\u014e\u0150\5\u00a0"+ - "Q\2\u014f\u014c\3\2\2\2\u014f\u014d\3\2\2\2\u014f\u014e\3\2\2\2\u0150"+ - "\31\3\2\2\2\u0151\u0154\5\u00a2R\2\u0152\u0154\5\u00a4S\2\u0153\u0151"+ - "\3\2\2\2\u0153\u0152\3\2\2\2\u0154\33\3\2\2\2\u0155\u0158\5\u00a8U\2\u0156"+ - "\u0158\5\u00aaV\2\u0157\u0155\3\2\2\2\u0157\u0156\3\2\2\2\u0158\35\3\2"+ - "\2\2\u0159\u015c\5d\63\2\u015a\u015c\5f\64\2\u015b\u0159\3\2\2\2\u015b"+ - "\u015a\3\2\2\2\u015c\37\3\2\2\2\u015d\u0160\5\u00caf\2\u015e\u0160\5\u00cc"+ - "g\2\u015f\u015d\3\2\2\2\u015f\u015e\3\2\2\2\u0160!\3\2\2\2\u0161\u0164"+ - "\5\u00e2r\2\u0162\u0164\5\u00e4s\2\u0163\u0161\3\2\2\2\u0163\u0162\3\2"+ - "\2\2\u0164#\3\2\2\2\u0165\u0169\5F$\2\u0166\u0169\5H%\2\u0167\u0169\5"+ - "J&\2\u0168\u0165\3\2\2\2\u0168\u0166\3\2\2\2\u0168\u0167\3\2\2\2\u0169"+ - "%\3\2\2\2\u016a\u016d\5T+\2\u016b\u016d\5V,\2\u016c\u016a\3\2\2\2\u016c"+ - "\u016b\3\2\2\2\u016d\'\3\2\2\2\u016e\u0171\5\u00c0a\2\u016f\u0171\5\u00c2"+ - "b\2\u0170\u016e\3\2\2\2\u0170\u016f\3\2\2\2\u0171)\3\2\2\2\u0172\u017b"+ - "\5\u00ceh\2\u0173\u017b\5\u00d0i\2\u0174\u017b\5\u00d2j\2\u0175\u017b"+ - "\5\u00d4k\2\u0176\u017b\5\u00d6l\2\u0177\u017b\5\u00d8m\2\u0178\u017b"+ - "\5\u00dan\2\u0179\u017b\5\u00dco\2\u017a\u0172\3\2\2\2\u017a\u0173\3\2"+ - "\2\2\u017a\u0174\3\2\2\2\u017a\u0175\3\2\2\2\u017a\u0176\3\2\2\2\u017a"+ - "\u0177\3\2\2\2\u017a\u0178\3\2\2\2\u017a\u0179\3\2\2\2\u017b+\3\2\2\2"+ - "\u017c\u017f\5\u00dep\2\u017d\u017f\5\u00e0q\2\u017e\u017c\3\2\2\2\u017e"+ - "\u017d\3\2\2\2\u017f-\3\2\2\2\u0180\u0183\5T+\2\u0181\u0183\5X-\2\u0182"+ - "\u0180\3\2\2\2\u0182\u0181\3\2\2\2\u0183/\3\2\2\2\u0184\u0188\7\6\2\2"+ - "\u0185\u0187\5\62\32\2\u0186\u0185\3\2\2\2\u0187\u018a\3\2\2\2\u0188\u0186"+ - "\3\2\2\2\u0188\u0189\3\2\2\2\u0189\61\3\2\2\2\u018a\u0188\3\2\2\2\u018b"+ - "\u0193\5\64\33\2\u018c\u0193\5\66\34\2\u018d\u0193\5\u0090I\2\u018e\u0193"+ - "\58\35\2\u018f\u0193\5\u0096L\2\u0190\u0193\5\u0098M\2\u0191\u0193\5\u009a"+ - "N\2\u0192\u018b\3\2\2\2\u0192\u018c\3\2\2\2\u0192\u018d\3\2\2\2\u0192"+ - "\u018e\3\2\2\2\u0192\u018f\3\2\2\2\u0192\u0190\3\2\2\2\u0192\u0191\3\2"+ - "\2\2\u0193\63\3\2\2\2\u0194\u0198\5\u0086D\2\u0195\u0198\5\u0088E\2\u0196"+ - "\u0198\5\u008aF\2\u0197\u0194\3\2\2\2\u0197\u0195\3\2\2\2\u0197\u0196"+ - "\3\2\2\2\u0198\65\3\2\2\2\u0199\u019c\5\u008cG\2\u019a\u019c\5\u008eH"+ - "\2\u019b\u0199\3\2\2\2\u019b\u019a\3\2\2\2\u019c\67\3\2\2\2\u019d\u01a0"+ - "\5\u0092J\2\u019e\u01a0\5\u0094K\2\u019f\u019d\3\2\2\2\u019f\u019e\3\2"+ - "\2\2\u01a09\3\2\2\2\u01a1\u01a2\7\b\2\2\u01a2\u01a3\t\2\2\2\u01a3;\3\2"+ - "\2\2\u01a4\u01a5\7\t\2\2\u01a5\u01a6\t\2\2\2\u01a6=\3\2\2\2\u01a7\u01a8"+ - "\7\n\2\2\u01a8\u01a9\t\2\2\2\u01a9?\3\2\2\2\u01aa\u01ab\7\13\2\2\u01ab"+ - "\u01ac\7a\2\2\u01acA\3\2\2\2\u01ad\u01ae\7\f\2\2\u01ae\u01af\t\2\2\2\u01af"+ - "C\3\2\2\2\u01b0\u01b1\7\r\2\2\u01b1\u01b2\t\2\2\2\u01b2E\3\2\2\2\u01b3"+ - "\u01b4\7\16\2\2\u01b4\u01b5\t\2\2\2\u01b5G\3\2\2\2\u01b6\u01b7\7\17\2"+ - "\2\u01b7\u01b8\t\2\2\2\u01b8I\3\2\2\2\u01b9\u01ba\7\20\2\2\u01ba\u01bb"+ - "\7a\2\2\u01bbK\3\2\2\2\u01bc\u01bd\7\21\2\2\u01bd\u01be\t\2\2\2\u01be"+ - "M\3\2\2\2\u01bf\u01c0\7\22\2\2\u01c0\u01c1\t\2\2\2\u01c1O\3\2\2\2\u01c2"+ - "\u01c3\7\23\2\2\u01c3\u01c4\t\2\2\2\u01c4Q\3\2\2\2\u01c5\u01c6\7\24\2"+ - "\2\u01c6\u01c7\7a\2\2\u01c7S\3\2\2\2\u01c8\u01c9\7\25\2\2\u01c9\u01ca"+ - "\t\2\2\2\u01caU\3\2\2\2\u01cb\u01cc\7\26\2\2\u01cc\u01cd\t\2\2\2\u01cd"+ - "W\3\2\2\2\u01ce\u01cf\7\27\2\2\u01cf\u01d0\t\2\2\2\u01d0Y\3\2\2\2\u01d1"+ - "\u01d2\7\30\2\2\u01d2\u01d3\t\2\2\2\u01d3[\3\2\2\2\u01d4\u01d5\7\31\2"+ - "\2\u01d5\u01d6\t\2\2\2\u01d6]\3\2\2\2\u01d7\u01d8\7\32\2\2\u01d8\u01d9"+ - "\t\2\2\2\u01d9_\3\2\2\2\u01da\u01db\7\33\2\2\u01db\u01dc\t\2\2\2\u01dc"+ - "a\3\2\2\2\u01dd\u01de\7\34\2\2\u01de\u01df\t\2\2\2\u01dfc\3\2\2\2\u01e0"+ - "\u01e1\7\35\2\2\u01e1\u01e2\t\2\2\2\u01e2e\3\2\2\2\u01e3\u01e4\7\36\2"+ - "\2\u01e4\u01e5\7a\2\2\u01e5g\3\2\2\2\u01e6\u01e7\7\37\2\2\u01e7\u01eb"+ - "\7a\2\2\u01e8\u01ea\7\7\2\2\u01e9\u01e8\3\2\2\2\u01ea\u01ed\3\2\2\2\u01eb"+ - "\u01e9\3\2\2\2\u01eb\u01ec\3\2\2\2\u01ec\u01ee\3\2\2\2\u01ed\u01eb\3\2"+ - "\2\2\u01ee\u01ef\7a\2\2\u01efi\3\2\2\2\u01f0\u01f1\7 \2\2\u01f1\u01f5"+ + "\3\5\3\5\3\5\3\5\3\5\3\5\5\5\u011f\n\5\3\6\5\6\u0122\n\6\3\6\6\6\u0125"+ + "\n\6\r\6\16\6\u0126\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\5"+ + "\b\u0135\n\b\3\t\3\t\5\t\u0139\n\t\3\n\3\n\5\n\u013d\n\n\3\13\3\13\5\13"+ + "\u0141\n\13\3\f\3\f\5\f\u0145\n\f\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r"+ + "\3\r\3\r\5\r\u0152\n\r\3\16\3\16\3\16\5\16\u0157\n\16\3\17\3\17\5\17\u015b"+ + "\n\17\3\20\3\20\5\20\u015f\n\20\3\21\3\21\5\21\u0163\n\21\3\22\3\22\5"+ + "\22\u0167\n\22\3\23\3\23\5\23\u016b\n\23\3\24\3\24\3\24\5\24\u0170\n\24"+ + "\3\25\3\25\5\25\u0174\n\25\3\26\3\26\5\26\u0178\n\26\3\27\3\27\3\27\3"+ + "\27\3\27\3\27\3\27\3\27\5\27\u0182\n\27\3\30\3\30\5\30\u0186\n\30\3\31"+ + "\3\31\5\31\u018a\n\31\3\32\3\32\6\32\u018e\n\32\r\32\16\32\u018f\5\32"+ + "\u0192\n\32\3\33\3\33\3\34\3\34\3\34\3\34\3\34\3\34\3\34\5\34\u019d\n"+ + "\34\3\35\3\35\3\35\5\35\u01a2\n\35\3\36\3\36\5\36\u01a6\n\36\3\37\3\37"+ + "\5\37\u01aa\n\37\3 \3 \3 \3!\3!\3!\3\"\3\"\3\"\3#\3#\3#\3$\3$\3$\3%\3"+ + "%\3%\3&\3&\3&\3\'\3\'\3\'\3(\3(\3(\3)\3)\3)\3*\3*\3*\3+\3+\3+\3,\3,\3"+ + ",\3-\3-\3-\3.\3.\3.\3/\3/\3/\3\60\3\60\3\60\3\61\3\61\3\61\3\62\3\62\3"+ + "\62\3\63\3\63\3\63\3\64\3\64\3\64\3\65\3\65\3\65\3\66\3\66\3\66\3\67\3"+ + "\67\3\67\7\67\u01f4\n\67\f\67\16\67\u01f7\13\67\3\67\3\67\38\38\38\78"+ + "\u01fe\n8\f8\168\u0201\138\38\38\39\39\39\79\u0208\n9\f9\169\u020b\13"+ + "9\39\39\3:\3:\3:\7:\u0212\n:\f:\16:\u0215\13:\3:\3:\3;\3;\3;\7;\u021c"+ + "\n;\f;\16;\u021f\13;\3;\3;\3<\3<\3<\3=\3=\3=\3>\3>\3>\3?\3?\3?\3@\3@\3"+ + "@\3A\3A\3A\7A\u0235\nA\fA\16A\u0238\13A\3A\3A\3B\3B\3B\3C\3C\3C\3D\3D"+ + "\3D\3E\3E\3E\3F\3F\3F\3G\3G\3G\3H\3H\3H\3I\3I\3I\3J\3J\3J\3K\3K\3K\3L"+ + "\3L\3L\7L\u025d\nL\fL\16L\u0260\13L\3L\3L\7L\u0264\nL\fL\16L\u0267\13"+ + "L\3L\3L\3M\3M\3M\7M\u026e\nM\fM\16M\u0271\13M\3M\3M\7M\u0275\nM\fM\16"+ + "M\u0278\13M\3M\3M\3N\3N\3N\3O\3O\3O\3P\3P\3P\3Q\3Q\3Q\3R\3R\3R\3S\3S\3"+ + "S\3T\3T\3T\3U\3U\3U\3V\3V\3V\3W\3W\3W\7W\u029a\nW\fW\16W\u029d\13W\3W"+ + "\3W\7W\u02a1\nW\fW\16W\u02a4\13W\3W\3W\3X\3X\3X\7X\u02ab\nX\fX\16X\u02ae"+ + "\13X\3X\3X\7X\u02b2\nX\fX\16X\u02b5\13X\3X\3X\3Y\3Y\3Y\3Z\3Z\3Z\3[\3["+ + "\3[\3\\\3\\\3\\\3]\3]\3]\3^\3^\3^\3_\3_\3_\3`\3`\3`\3a\3a\3a\7a\u02d4"+ + "\na\fa\16a\u02d7\13a\3a\3a\3b\3b\3b\3c\3c\3c\3d\3d\3d\3e\3e\3e\3f\3f\3"+ + "f\3g\3g\3g\3h\3h\3h\7h\u02f0\nh\fh\16h\u02f3\13h\3h\3h\7h\u02f7\nh\fh"+ + "\16h\u02fa\13h\3h\3h\7h\u02fe\nh\fh\16h\u0301\13h\3h\3h\3i\3i\3i\7i\u0308"+ + "\ni\fi\16i\u030b\13i\3i\3i\7i\u030f\ni\fi\16i\u0312\13i\3i\3i\7i\u0316"+ + "\ni\fi\16i\u0319\13i\3i\3i\3j\3j\3j\7j\u0320\nj\fj\16j\u0323\13j\3j\3"+ + "j\7j\u0327\nj\fj\16j\u032a\13j\3j\3j\7j\u032e\nj\fj\16j\u0331\13j\3j\5"+ + "j\u0334\nj\3k\3k\3k\7k\u0339\nk\fk\16k\u033c\13k\3k\3k\7k\u0340\nk\fk"+ + "\16k\u0343\13k\3k\3k\7k\u0347\nk\fk\16k\u034a\13k\3k\5k\u034d\nk\3l\3"+ + "l\3l\7l\u0352\nl\fl\16l\u0355\13l\3l\3l\7l\u0359\nl\fl\16l\u035c\13l\3"+ + "l\3l\7l\u0360\nl\fl\16l\u0363\13l\3l\3l\7l\u0367\nl\fl\16l\u036a\13l\5"+ + "l\u036c\nl\3l\3l\7l\u0370\nl\fl\16l\u0373\13l\5l\u0375\nl\3l\3l\7l\u0379"+ + "\nl\fl\16l\u037c\13l\5l\u037e\nl\3l\5l\u0381\nl\3m\3m\3m\7m\u0386\nm\f"+ + "m\16m\u0389\13m\3m\3m\7m\u038d\nm\fm\16m\u0390\13m\3m\3m\7m\u0394\nm\f"+ + "m\16m\u0397\13m\3m\3m\7m\u039b\nm\fm\16m\u039e\13m\5m\u03a0\nm\3m\3m\7"+ + "m\u03a4\nm\fm\16m\u03a7\13m\5m\u03a9\nm\3m\3m\7m\u03ad\nm\fm\16m\u03b0"+ + "\13m\5m\u03b2\nm\3m\5m\u03b5\nm\3n\3n\3n\7n\u03ba\nn\fn\16n\u03bd\13n"+ + "\3n\3n\7n\u03c1\nn\fn\16n\u03c4\13n\3n\3n\7n\u03c8\nn\fn\16n\u03cb\13"+ + "n\3n\3n\7n\u03cf\nn\fn\16n\u03d2\13n\5n\u03d4\nn\3n\5n\u03d7\nn\3o\3o"+ + "\3o\7o\u03dc\no\fo\16o\u03df\13o\3o\3o\7o\u03e3\no\fo\16o\u03e6\13o\3"+ + "o\3o\7o\u03ea\no\fo\16o\u03ed\13o\3o\3o\7o\u03f1\no\fo\16o\u03f4\13o\5"+ + "o\u03f6\no\3o\5o\u03f9\no\3p\3p\3p\7p\u03fe\np\fp\16p\u0401\13p\3p\3p"+ + "\7p\u0405\np\fp\16p\u0408\13p\3p\3p\7p\u040c\np\fp\16p\u040f\13p\3p\3"+ + "p\7p\u0413\np\fp\16p\u0416\13p\5p\u0418\np\3p\3p\7p\u041c\np\fp\16p\u041f"+ + "\13p\5p\u0421\np\3p\3p\7p\u0425\np\fp\16p\u0428\13p\5p\u042a\np\3p\3p"+ + "\7p\u042e\np\fp\16p\u0431\13p\5p\u0433\np\3p\3p\3q\3q\3q\7q\u043a\nq\f"+ + "q\16q\u043d\13q\3q\3q\7q\u0441\nq\fq\16q\u0444\13q\3q\3q\7q\u0448\nq\f"+ + "q\16q\u044b\13q\3q\3q\7q\u044f\nq\fq\16q\u0452\13q\5q\u0454\nq\3q\3q\7"+ + "q\u0458\nq\fq\16q\u045b\13q\3q\3q\7q\u045f\nq\fq\16q\u0462\13q\5q\u0464"+ + "\nq\3q\3q\7q\u0468\nq\fq\16q\u046b\13q\5q\u046d\nq\3q\5q\u0470\nq\3r\3"+ + "r\3r\7r\u0475\nr\fr\16r\u0478\13r\3r\3r\7r\u047c\nr\fr\16r\u047f\13r\3"+ + "r\3r\7r\u0483\nr\fr\16r\u0486\13r\3r\3r\3s\3s\3s\3t\3t\3t\7t\u0490\nt"+ + "\ft\16t\u0493\13t\3t\3t\7t\u0497\nt\ft\16t\u049a\13t\3t\3t\7t\u049e\n"+ + "t\ft\16t\u04a1\13t\3t\3t\3u\3u\3u\3u\2\2v\2\4\6\b\n\f\16\20\22\24\26\30"+ + "\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080"+ + "\u0082\u0084\u0086\u0088\u008a\u008c\u008e\u0090\u0092\u0094\u0096\u0098"+ + "\u009a\u009c\u009e\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0"+ + "\u00b2\u00b4\u00b6\u00b8\u00ba\u00bc\u00be\u00c0\u00c2\u00c4\u00c6\u00c8"+ + "\u00ca\u00cc\u00ce\u00d0\u00d2\u00d4\u00d6\u00d8\u00da\u00dc\u00de\u00e0"+ + "\u00e2\u00e4\u00e6\u00e8\2\3\3\2`a\u04e8\2\u00ed\3\2\2\2\4\u00f5\3\2\2"+ + "\2\6\u00f7\3\2\2\2\b\u011e\3\2\2\2\n\u0121\3\2\2\2\f\u0128\3\2\2\2\16"+ + "\u0134\3\2\2\2\20\u0138\3\2\2\2\22\u013c\3\2\2\2\24\u0140\3\2\2\2\26\u0144"+ + "\3\2\2\2\30\u0151\3\2\2\2\32\u0156\3\2\2\2\34\u015a\3\2\2\2\36\u015e\3"+ + "\2\2\2 \u0162\3\2\2\2\"\u0166\3\2\2\2$\u016a\3\2\2\2&\u016f\3\2\2\2(\u0173"+ + "\3\2\2\2*\u0177\3\2\2\2,\u0181\3\2\2\2.\u0185\3\2\2\2\60\u0189\3\2\2\2"+ + "\62\u0191\3\2\2\2\64\u0193\3\2\2\2\66\u019c\3\2\2\28\u01a1\3\2\2\2:\u01a5"+ + "\3\2\2\2<\u01a9\3\2\2\2>\u01ab\3\2\2\2@\u01ae\3\2\2\2B\u01b1\3\2\2\2D"+ + "\u01b4\3\2\2\2F\u01b7\3\2\2\2H\u01ba\3\2\2\2J\u01bd\3\2\2\2L\u01c0\3\2"+ + "\2\2N\u01c3\3\2\2\2P\u01c6\3\2\2\2R\u01c9\3\2\2\2T\u01cc\3\2\2\2V\u01cf"+ + "\3\2\2\2X\u01d2\3\2\2\2Z\u01d5\3\2\2\2\\\u01d8\3\2\2\2^\u01db\3\2\2\2"+ + "`\u01de\3\2\2\2b\u01e1\3\2\2\2d\u01e4\3\2\2\2f\u01e7\3\2\2\2h\u01ea\3"+ + "\2\2\2j\u01ed\3\2\2\2l\u01f0\3\2\2\2n\u01fa\3\2\2\2p\u0204\3\2\2\2r\u020e"+ + "\3\2\2\2t\u0218\3\2\2\2v\u0222\3\2\2\2x\u0225\3\2\2\2z\u0228\3\2\2\2|"+ + "\u022b\3\2\2\2~\u022e\3\2\2\2\u0080\u0231\3\2\2\2\u0082\u023b\3\2\2\2"+ + "\u0084\u023e\3\2\2\2\u0086\u0241\3\2\2\2\u0088\u0244\3\2\2\2\u008a\u0247"+ + "\3\2\2\2\u008c\u024a\3\2\2\2\u008e\u024d\3\2\2\2\u0090\u0250\3\2\2\2\u0092"+ + "\u0253\3\2\2\2\u0094\u0256\3\2\2\2\u0096\u0259\3\2\2\2\u0098\u026a\3\2"+ + "\2\2\u009a\u027b\3\2\2\2\u009c\u027e\3\2\2\2\u009e\u0281\3\2\2\2\u00a0"+ + "\u0284\3\2\2\2\u00a2\u0287\3\2\2\2\u00a4\u028a\3\2\2\2\u00a6\u028d\3\2"+ + "\2\2\u00a8\u0290\3\2\2\2\u00aa\u0293\3\2\2\2\u00ac\u0296\3\2\2\2\u00ae"+ + "\u02a7\3\2\2\2\u00b0\u02b8\3\2\2\2\u00b2\u02bb\3\2\2\2\u00b4\u02be\3\2"+ + "\2\2\u00b6\u02c1\3\2\2\2\u00b8\u02c4\3\2\2\2\u00ba\u02c7\3\2\2\2\u00bc"+ + "\u02ca\3\2\2\2\u00be\u02cd\3\2\2\2\u00c0\u02d0\3\2\2\2\u00c2\u02da\3\2"+ + "\2\2\u00c4\u02dd\3\2\2\2\u00c6\u02e0\3\2\2\2\u00c8\u02e3\3\2\2\2\u00ca"+ + "\u02e6\3\2\2\2\u00cc\u02e9\3\2\2\2\u00ce\u02ec\3\2\2\2\u00d0\u0304\3\2"+ + "\2\2\u00d2\u031c\3\2\2\2\u00d4\u0335\3\2\2\2\u00d6\u034e\3\2\2\2\u00d8"+ + "\u0382\3\2\2\2\u00da\u03b6\3\2\2\2\u00dc\u03d8\3\2\2\2\u00de\u03fa\3\2"+ + "\2\2\u00e0\u0436\3\2\2\2\u00e2\u0471\3\2\2\2\u00e4\u0489\3\2\2\2\u00e6"+ + "\u048c\3\2\2\2\u00e8\u04a4\3\2\2\2\u00ea\u00ec\5\6\4\2\u00eb\u00ea\3\2"+ + "\2\2\u00ec\u00ef\3\2\2\2\u00ed\u00eb\3\2\2\2\u00ed\u00ee\3\2\2\2\u00ee"+ + "\u00f1\3\2\2\2\u00ef\u00ed\3\2\2\2\u00f0\u00f2\5\4\3\2\u00f1\u00f0\3\2"+ + "\2\2\u00f1\u00f2\3\2\2\2\u00f2\u00f3\3\2\2\2\u00f3\u00f4\7\2\2\3\u00f4"+ + "\3\3\2\2\2\u00f5\u00f6\7\3\2\2\u00f6\5\3\2\2\2\u00f7\u00f9\7\4\2\2\u00f8"+ + "\u00fa\5\b\5\2\u00f9\u00f8\3\2\2\2\u00fa\u00fb\3\2\2\2\u00fb\u00f9\3\2"+ + "\2\2\u00fb\u00fc\3\2\2\2\u00fc\7\3\2\2\2\u00fd\u011f\5\20\t\2\u00fe\u011f"+ + "\5> \2\u00ff\u011f\5@!\2\u0100\u011f\5F$\2\u0101\u011f\5H%\2\u0102\u011f"+ + "\5&\24\2\u0103\u011f\5P)\2\u0104\u011f\5R*\2\u0105\u011f\5T+\2\u0106\u011f"+ + "\5(\25\2\u0107\u011f\5\22\n\2\u0108\u011f\5b\62\2\u0109\u011f\5d\63\2"+ + "\u010a\u011f\5f\64\2\u010b\u011f\5 \21\2\u010c\u011f\5r:\2\u010d\u011f"+ + "\5t;\2\u010e\u011f\5l\67\2\u010f\u011f\5n8\2\u0110\u011f\5\24\13\2\u0111"+ + "\u011f\5z>\2\u0112\u011f\5\26\f\2\u0113\u011f\5\u0080A\2\u0114\u011f\5"+ + "\u0082B\2\u0115\u011f\5\u0084C\2\u0116\u011f\5\u0086D\2\u0117\u011f\5"+ + "\u0088E\2\u0118\u011f\5\62\32\2\u0119\u011f\5\30\r\2\u011a\u011f\5\u00be"+ + "`\2\u011b\u011f\5\n\6\2\u011c\u011f\5\"\22\2\u011d\u011f\5$\23\2\u011e"+ + "\u00fd\3\2\2\2\u011e\u00fe\3\2\2\2\u011e\u00ff\3\2\2\2\u011e\u0100\3\2"+ + "\2\2\u011e\u0101\3\2\2\2\u011e\u0102\3\2\2\2\u011e\u0103\3\2\2\2\u011e"+ + "\u0104\3\2\2\2\u011e\u0105\3\2\2\2\u011e\u0106\3\2\2\2\u011e\u0107\3\2"+ + "\2\2\u011e\u0108\3\2\2\2\u011e\u0109\3\2\2\2\u011e\u010a\3\2\2\2\u011e"+ + "\u010b\3\2\2\2\u011e\u010c\3\2\2\2\u011e\u010d\3\2\2\2\u011e\u010e\3\2"+ + "\2\2\u011e\u010f\3\2\2\2\u011e\u0110\3\2\2\2\u011e\u0111\3\2\2\2\u011e"+ + "\u0112\3\2\2\2\u011e\u0113\3\2\2\2\u011e\u0114\3\2\2\2\u011e\u0115\3\2"+ + "\2\2\u011e\u0116\3\2\2\2\u011e\u0117\3\2\2\2\u011e\u0118\3\2\2\2\u011e"+ + "\u0119\3\2\2\2\u011e\u011a\3\2\2\2\u011e\u011b\3\2\2\2\u011e\u011c\3\2"+ + "\2\2\u011e\u011d\3\2\2\2\u011f\t\3\2\2\2\u0120\u0122\5\f\7\2\u0121\u0120"+ + "\3\2\2\2\u0121\u0122\3\2\2\2\u0122\u0124\3\2\2\2\u0123\u0125\5\16\b\2"+ + "\u0124\u0123\3\2\2\2\u0125\u0126\3\2\2\2\u0126\u0124\3\2\2\2\u0126\u0127"+ + "\3\2\2\2\u0127\13\3\2\2\2\u0128\u0129\7\5\2\2\u0129\r\3\2\2\2\u012a\u0135"+ + "\5V,\2\u012b\u0135\5\60\31\2\u012c\u0135\5\u00c0a\2\u012d\u0135\5\u00c2"+ + "b\2\u012e\u0135\5*\26\2\u012f\u0135\5\u00c8e\2\u0130\u0135\5\u00caf\2"+ + "\u0131\u0135\5\u00ccg\2\u0132\u0135\5,\27\2\u0133\u0135\5.\30\2\u0134"+ + "\u012a\3\2\2\2\u0134\u012b\3\2\2\2\u0134\u012c\3\2\2\2\u0134\u012d\3\2"+ + "\2\2\u0134\u012e\3\2\2\2\u0134\u012f\3\2\2\2\u0134\u0130\3\2\2\2\u0134"+ + "\u0131\3\2\2\2\u0134\u0132\3\2\2\2\u0134\u0133\3\2\2\2\u0135\17\3\2\2"+ + "\2\u0136\u0139\5B\"\2\u0137\u0139\5D#\2\u0138\u0136\3\2\2\2\u0138\u0137"+ + "\3\2\2\2\u0139\21\3\2\2\2\u013a\u013d\5^\60\2\u013b\u013d\5`\61\2\u013c"+ + "\u013a\3\2\2\2\u013c\u013b\3\2\2\2\u013d\23\3\2\2\2\u013e\u0141\5v<\2"+ + "\u013f\u0141\5x=\2\u0140\u013e\3\2\2\2\u0140\u013f\3\2\2\2\u0141\25\3"+ + "\2\2\2\u0142\u0145\5|?\2\u0143\u0145\5~@\2\u0144\u0142\3\2\2\2\u0144\u0143"+ + "\3\2\2\2\u0145\27\3\2\2\2\u0146\u0152\5\32\16\2\u0147\u0152\5\34\17\2"+ + "\u0148\u0152\5\u00aaV\2\u0149\u0152\5\36\20\2\u014a\u0152\5\u00b0Y\2\u014b"+ + "\u0152\5\u00b2Z\2\u014c\u0152\5\u00b4[\2\u014d\u0152\5\u00b6\\\2\u014e"+ + "\u0152\5\u00b8]\2\u014f\u0152\5\u00ba^\2\u0150\u0152\5\u00bc_\2\u0151"+ + "\u0146\3\2\2\2\u0151\u0147\3\2\2\2\u0151\u0148\3\2\2\2\u0151\u0149\3\2"+ + "\2\2\u0151\u014a\3\2\2\2\u0151\u014b\3\2\2\2\u0151\u014c\3\2\2\2\u0151"+ + "\u014d\3\2\2\2\u0151\u014e\3\2\2\2\u0151\u014f\3\2\2\2\u0151\u0150\3\2"+ + "\2\2\u0152\31\3\2\2\2\u0153\u0157\5\u00a0Q\2\u0154\u0157\5\u00a2R\2\u0155"+ + "\u0157\5\u00a4S\2\u0156\u0153\3\2\2\2\u0156\u0154\3\2\2\2\u0156\u0155"+ + "\3\2\2\2\u0157\33\3\2\2\2\u0158\u015b\5\u00a6T\2\u0159\u015b\5\u00a8U"+ + "\2\u015a\u0158\3\2\2\2\u015a\u0159\3\2\2\2\u015b\35\3\2\2\2\u015c\u015f"+ + "\5\u00acW\2\u015d\u015f\5\u00aeX\2\u015e\u015c\3\2\2\2\u015e\u015d\3\2"+ + "\2\2\u015f\37\3\2\2\2\u0160\u0163\5h\65\2\u0161\u0163\5j\66\2\u0162\u0160"+ + "\3\2\2\2\u0162\u0161\3\2\2\2\u0163!\3\2\2\2\u0164\u0167\5\u00ceh\2\u0165"+ + "\u0167\5\u00d0i\2\u0166\u0164\3\2\2\2\u0166\u0165\3\2\2\2\u0167#\3\2\2"+ + "\2\u0168\u016b\5\u00e6t\2\u0169\u016b\5\u00e8u\2\u016a\u0168\3\2\2\2\u016a"+ + "\u0169\3\2\2\2\u016b%\3\2\2\2\u016c\u0170\5J&\2\u016d\u0170\5L\'\2\u016e"+ + "\u0170\5N(\2\u016f\u016c\3\2\2\2\u016f\u016d\3\2\2\2\u016f\u016e\3\2\2"+ + "\2\u0170\'\3\2\2\2\u0171\u0174\5X-\2\u0172\u0174\5Z.\2\u0173\u0171\3\2"+ + "\2\2\u0173\u0172\3\2\2\2\u0174)\3\2\2\2\u0175\u0178\5\u00c4c\2\u0176\u0178"+ + "\5\u00c6d\2\u0177\u0175\3\2\2\2\u0177\u0176\3\2\2\2\u0178+\3\2\2\2\u0179"+ + "\u0182\5\u00d2j\2\u017a\u0182\5\u00d4k\2\u017b\u0182\5\u00d6l\2\u017c"+ + "\u0182\5\u00d8m\2\u017d\u0182\5\u00dan\2\u017e\u0182\5\u00dco\2\u017f"+ + "\u0182\5\u00dep\2\u0180\u0182\5\u00e0q\2\u0181\u0179\3\2\2\2\u0181\u017a"+ + "\3\2\2\2\u0181\u017b\3\2\2\2\u0181\u017c\3\2\2\2\u0181\u017d\3\2\2\2\u0181"+ + "\u017e\3\2\2\2\u0181\u017f\3\2\2\2\u0181\u0180\3\2\2\2\u0182-\3\2\2\2"+ + "\u0183\u0186\5\u00e2r\2\u0184\u0186\5\u00e4s\2\u0185\u0183\3\2\2\2\u0185"+ + "\u0184\3\2\2\2\u0186/\3\2\2\2\u0187\u018a\5X-\2\u0188\u018a\5\\/\2\u0189"+ + "\u0187\3\2\2\2\u0189\u0188\3\2\2\2\u018a\61\3\2\2\2\u018b\u0192\5\64\33"+ + "\2\u018c\u018e\5\66\34\2\u018d\u018c\3\2\2\2\u018e\u018f\3\2\2\2\u018f"+ + "\u018d\3\2\2\2\u018f\u0190\3\2\2\2\u0190\u0192\3\2\2\2\u0191\u018b\3\2"+ + "\2\2\u0191\u018d\3\2\2\2\u0192\63\3\2\2\2\u0193\u0194\7\6\2\2\u0194\65"+ + "\3\2\2\2\u0195\u019d\58\35\2\u0196\u019d\5:\36\2\u0197\u019d\5\u0094K"+ + "\2\u0198\u019d\5<\37\2\u0199\u019d\5\u009aN\2\u019a\u019d\5\u009cO\2\u019b"+ + "\u019d\5\u009eP\2\u019c\u0195\3\2\2\2\u019c\u0196\3\2\2\2\u019c\u0197"+ + "\3\2\2\2\u019c\u0198\3\2\2\2\u019c\u0199\3\2\2\2\u019c\u019a\3\2\2\2\u019c"+ + "\u019b\3\2\2\2\u019d\67\3\2\2\2\u019e\u01a2\5\u008aF\2\u019f\u01a2\5\u008c"+ + "G\2\u01a0\u01a2\5\u008eH\2\u01a1\u019e\3\2\2\2\u01a1\u019f\3\2\2\2\u01a1"+ + "\u01a0\3\2\2\2\u01a29\3\2\2\2\u01a3\u01a6\5\u0090I\2\u01a4\u01a6\5\u0092"+ + "J\2\u01a5\u01a3\3\2\2\2\u01a5\u01a4\3\2\2\2\u01a6;\3\2\2\2\u01a7\u01aa"+ + "\5\u0096L\2\u01a8\u01aa\5\u0098M\2\u01a9\u01a7\3\2\2\2\u01a9\u01a8\3\2"+ + "\2\2\u01aa=\3\2\2\2\u01ab\u01ac\7\b\2\2\u01ac\u01ad\t\2\2\2\u01ad?\3\2"+ + "\2\2\u01ae\u01af\7\t\2\2\u01af\u01b0\t\2\2\2\u01b0A\3\2\2\2\u01b1\u01b2"+ + "\7\n\2\2\u01b2\u01b3\t\2\2\2\u01b3C\3\2\2\2\u01b4\u01b5\7\13\2\2\u01b5"+ + "\u01b6\7a\2\2\u01b6E\3\2\2\2\u01b7\u01b8\7\f\2\2\u01b8\u01b9\t\2\2\2\u01b9"+ + "G\3\2\2\2\u01ba\u01bb\7\r\2\2\u01bb\u01bc\t\2\2\2\u01bcI\3\2\2\2\u01bd"+ + "\u01be\7\16\2\2\u01be\u01bf\t\2\2\2\u01bfK\3\2\2\2\u01c0\u01c1\7\17\2"+ + "\2\u01c1\u01c2\t\2\2\2\u01c2M\3\2\2\2\u01c3\u01c4\7\20\2\2\u01c4\u01c5"+ + "\7a\2\2\u01c5O\3\2\2\2\u01c6\u01c7\7\21\2\2\u01c7\u01c8\t\2\2\2\u01c8"+ + "Q\3\2\2\2\u01c9\u01ca\7\22\2\2\u01ca\u01cb\t\2\2\2\u01cbS\3\2\2\2\u01cc"+ + "\u01cd\7\23\2\2\u01cd\u01ce\t\2\2\2\u01ceU\3\2\2\2\u01cf\u01d0\7\24\2"+ + "\2\u01d0\u01d1\7a\2\2\u01d1W\3\2\2\2\u01d2\u01d3\7\25\2\2\u01d3\u01d4"+ + "\t\2\2\2\u01d4Y\3\2\2\2\u01d5\u01d6\7\26\2\2\u01d6\u01d7\t\2\2\2\u01d7"+ + "[\3\2\2\2\u01d8\u01d9\7\27\2\2\u01d9\u01da\t\2\2\2\u01da]\3\2\2\2\u01db"+ + "\u01dc\7\30\2\2\u01dc\u01dd\t\2\2\2\u01dd_\3\2\2\2\u01de\u01df\7\31\2"+ + "\2\u01df\u01e0\t\2\2\2\u01e0a\3\2\2\2\u01e1\u01e2\7\32\2\2\u01e2\u01e3"+ + "\t\2\2\2\u01e3c\3\2\2\2\u01e4\u01e5\7\33\2\2\u01e5\u01e6\t\2\2\2\u01e6"+ + "e\3\2\2\2\u01e7\u01e8\7\34\2\2\u01e8\u01e9\t\2\2\2\u01e9g\3\2\2\2\u01ea"+ + "\u01eb\7\35\2\2\u01eb\u01ec\t\2\2\2\u01eci\3\2\2\2\u01ed\u01ee\7\36\2"+ + "\2\u01ee\u01ef\7a\2\2\u01efk\3\2\2\2\u01f0\u01f1\7\37\2\2\u01f1\u01f5"+ "\7a\2\2\u01f2\u01f4\7\7\2\2\u01f3\u01f2\3\2\2\2\u01f4\u01f7\3\2\2\2\u01f5"+ "\u01f3\3\2\2\2\u01f5\u01f6\3\2\2\2\u01f6\u01f8\3\2\2\2\u01f7\u01f5\3\2"+ - "\2\2\u01f8\u01f9\7a\2\2\u01f9k\3\2\2\2\u01fa\u01fb\7!\2\2\u01fb\u01ff"+ + "\2\2\u01f8\u01f9\7a\2\2\u01f9m\3\2\2\2\u01fa\u01fb\7 \2\2\u01fb\u01ff"+ "\7a\2\2\u01fc\u01fe\7\7\2\2\u01fd\u01fc\3\2\2\2\u01fe\u0201\3\2\2\2\u01ff"+ "\u01fd\3\2\2\2\u01ff\u0200\3\2\2\2\u0200\u0202\3\2\2\2\u0201\u01ff\3\2"+ - "\2\2\u0202\u0203\7a\2\2\u0203m\3\2\2\2\u0204\u0205\7\"\2\2\u0205\u0209"+ + "\2\2\u0202\u0203\7a\2\2\u0203o\3\2\2\2\u0204\u0205\7!\2\2\u0205\u0209"+ "\7a\2\2\u0206\u0208\7\7\2\2\u0207\u0206\3\2\2\2\u0208\u020b\3\2\2\2\u0209"+ "\u0207\3\2\2\2\u0209\u020a\3\2\2\2\u020a\u020c\3\2\2\2\u020b\u0209\3\2"+ - "\2\2\u020c\u020d\7a\2\2\u020do\3\2\2\2\u020e\u020f\7#\2\2\u020f\u0213"+ + "\2\2\u020c\u020d\7a\2\2\u020dq\3\2\2\2\u020e\u020f\7\"\2\2\u020f\u0213"+ "\7a\2\2\u0210\u0212\7\7\2\2\u0211\u0210\3\2\2\2\u0212\u0215\3\2\2\2\u0213"+ "\u0211\3\2\2\2\u0213\u0214\3\2\2\2\u0214\u0216\3\2\2\2\u0215\u0213\3\2"+ - "\2\2\u0216\u0217\7a\2\2\u0217q\3\2\2\2\u0218\u0219\7$\2\2\u0219\u021a"+ - "\t\2\2\2\u021as\3\2\2\2\u021b\u021c\7%\2\2\u021c\u021d\t\2\2\2\u021du"+ - "\3\2\2\2\u021e\u021f\7&\2\2\u021f\u0220\t\2\2\2\u0220w\3\2\2\2\u0221\u0222"+ - "\7\'\2\2\u0222\u0223\t\2\2\2\u0223y\3\2\2\2\u0224\u0225\7(\2\2\u0225\u0226"+ - "\t\2\2\2\u0226{\3\2\2\2\u0227\u0228\7)\2\2\u0228\u022c\7a\2\2\u0229\u022b"+ - "\7\7\2\2\u022a\u0229\3\2\2\2\u022b\u022e\3\2\2\2\u022c\u022a\3\2\2\2\u022c"+ - "\u022d\3\2\2\2\u022d\u022f\3\2\2\2\u022e\u022c\3\2\2\2\u022f\u0230\7a"+ - "\2\2\u0230}\3\2\2\2\u0231\u0232\7*\2\2\u0232\u0233\7a\2\2\u0233\177\3"+ - "\2\2\2\u0234\u0235\7+\2\2\u0235\u0236\t\2\2\2\u0236\u0081\3\2\2\2\u0237"+ - "\u0238\7,\2\2\u0238\u0239\t\2\2\2\u0239\u0083\3\2\2\2\u023a\u023b\7-\2"+ - "\2\u023b\u023c\7a\2\2\u023c\u0085\3\2\2\2\u023d\u023e\7.\2\2\u023e\u023f"+ - "\t\2\2\2\u023f\u0087\3\2\2\2\u0240\u0241\7/\2\2\u0241\u0242\t\2\2\2\u0242"+ - "\u0089\3\2\2\2\u0243\u0244\7\60\2\2\u0244\u0245\7a\2\2\u0245\u008b\3\2"+ - "\2\2\u0246\u0247\7\61\2\2\u0247\u0248\7a\2\2\u0248\u008d\3\2\2\2\u0249"+ - "\u024a\7\62\2\2\u024a\u024b\t\2\2\2\u024b\u008f\3\2\2\2\u024c\u024d\7"+ - "\63\2\2\u024d\u024e\7a\2\2\u024e\u0091\3\2\2\2\u024f\u0250\7\64\2\2\u0250"+ - "\u0254\t\2\2\2\u0251\u0253\7\7\2\2\u0252\u0251\3\2\2\2\u0253\u0256\3\2"+ - "\2\2\u0254\u0252\3\2\2\2\u0254\u0255\3\2\2\2\u0255\u0257\3\2\2\2\u0256"+ - "\u0254\3\2\2\2\u0257\u025b\t\2\2\2\u0258\u025a\7\7\2\2\u0259\u0258\3\2"+ - "\2\2\u025a\u025d\3\2\2\2\u025b\u0259\3\2\2\2\u025b\u025c\3\2\2\2\u025c"+ - "\u025e\3\2\2\2\u025d\u025b\3\2\2\2\u025e\u025f\t\2\2\2\u025f\u0093\3\2"+ - "\2\2\u0260\u0261\7\65\2\2\u0261\u0265\7a\2\2\u0262\u0264\7\7\2\2\u0263"+ + "\2\2\u0216\u0217\7a\2\2\u0217s\3\2\2\2\u0218\u0219\7#\2\2\u0219\u021d"+ + "\7a\2\2\u021a\u021c\7\7\2\2\u021b\u021a\3\2\2\2\u021c\u021f\3\2\2\2\u021d"+ + "\u021b\3\2\2\2\u021d\u021e\3\2\2\2\u021e\u0220\3\2\2\2\u021f\u021d\3\2"+ + "\2\2\u0220\u0221\7a\2\2\u0221u\3\2\2\2\u0222\u0223\7$\2\2\u0223\u0224"+ + "\t\2\2\2\u0224w\3\2\2\2\u0225\u0226\7%\2\2\u0226\u0227\t\2\2\2\u0227y"+ + "\3\2\2\2\u0228\u0229\7&\2\2\u0229\u022a\t\2\2\2\u022a{\3\2\2\2\u022b\u022c"+ + "\7\'\2\2\u022c\u022d\t\2\2\2\u022d}\3\2\2\2\u022e\u022f\7(\2\2\u022f\u0230"+ + "\t\2\2\2\u0230\177\3\2\2\2\u0231\u0232\7)\2\2\u0232\u0236\7a\2\2\u0233"+ + "\u0235\7\7\2\2\u0234\u0233\3\2\2\2\u0235\u0238\3\2\2\2\u0236\u0234\3\2"+ + "\2\2\u0236\u0237\3\2\2\2\u0237\u0239\3\2\2\2\u0238\u0236\3\2\2\2\u0239"+ + "\u023a\7a\2\2\u023a\u0081\3\2\2\2\u023b\u023c\7*\2\2\u023c\u023d\7a\2"+ + "\2\u023d\u0083\3\2\2\2\u023e\u023f\7+\2\2\u023f\u0240\t\2\2\2\u0240\u0085"+ + "\3\2\2\2\u0241\u0242\7,\2\2\u0242\u0243\t\2\2\2\u0243\u0087\3\2\2\2\u0244"+ + "\u0245\7-\2\2\u0245\u0246\7a\2\2\u0246\u0089\3\2\2\2\u0247\u0248\7.\2"+ + "\2\u0248\u0249\t\2\2\2\u0249\u008b\3\2\2\2\u024a\u024b\7/\2\2\u024b\u024c"+ + "\t\2\2\2\u024c\u008d\3\2\2\2\u024d\u024e\7\60\2\2\u024e\u024f\7a\2\2\u024f"+ + "\u008f\3\2\2\2\u0250\u0251\7\61\2\2\u0251\u0252\7a\2\2\u0252\u0091\3\2"+ + "\2\2\u0253\u0254\7\62\2\2\u0254\u0255\t\2\2\2\u0255\u0093\3\2\2\2\u0256"+ + "\u0257\7\63\2\2\u0257\u0258\7a\2\2\u0258\u0095\3\2\2\2\u0259\u025a\7\64"+ + "\2\2\u025a\u025e\t\2\2\2\u025b\u025d\7\7\2\2\u025c\u025b\3\2\2\2\u025d"+ + "\u0260\3\2\2\2\u025e\u025c\3\2\2\2\u025e\u025f\3\2\2\2\u025f\u0261\3\2"+ + "\2\2\u0260\u025e\3\2\2\2\u0261\u0265\t\2\2\2\u0262\u0264\7\7\2\2\u0263"+ "\u0262\3\2\2\2\u0264\u0267\3\2\2\2\u0265\u0263\3\2\2\2\u0265\u0266\3\2"+ - "\2\2\u0266\u0268\3\2\2\2\u0267\u0265\3\2\2\2\u0268\u026c\t\2\2\2\u0269"+ - "\u026b\7\7\2\2\u026a\u0269\3\2\2\2\u026b\u026e\3\2\2\2\u026c\u026a\3\2"+ - "\2\2\u026c\u026d\3\2\2\2\u026d\u026f\3\2\2\2\u026e\u026c\3\2\2\2\u026f"+ - "\u0270\t\2\2\2\u0270\u0095\3\2\2\2\u0271\u0272\7\66\2\2\u0272\u0273\t"+ - "\2\2\2\u0273\u0097\3\2\2\2\u0274\u0275\7\67\2\2\u0275\u0276\t\2\2\2\u0276"+ - "\u0099\3\2\2\2\u0277\u0278\78\2\2\u0278\u0279\t\2\2\2\u0279\u009b\3\2"+ - "\2\2\u027a\u027b\79\2\2\u027b\u027c\t\2\2\2\u027c\u009d\3\2\2\2\u027d"+ - "\u027e\7:\2\2\u027e\u027f\t\2\2\2\u027f\u009f\3\2\2\2\u0280\u0281\7;\2"+ - "\2\u0281\u0282\7a\2\2\u0282\u00a1\3\2\2\2\u0283\u0284\7<\2\2\u0284\u0285"+ - "\7a\2\2\u0285\u00a3\3\2\2\2\u0286\u0287\7=\2\2\u0287\u0288\t\2\2\2\u0288"+ - "\u00a5\3\2\2\2\u0289\u028a\7>\2\2\u028a\u028b\7a\2\2\u028b\u00a7\3\2\2"+ - "\2\u028c\u028d\7?\2\2\u028d\u0291\t\2\2\2\u028e\u0290\7\7\2\2\u028f\u028e"+ - "\3\2\2\2\u0290\u0293\3\2\2\2\u0291\u028f\3\2\2\2\u0291\u0292\3\2\2\2\u0292"+ - "\u0294\3\2\2\2\u0293\u0291\3\2\2\2\u0294\u0298\t\2\2\2\u0295\u0297\7\7"+ - "\2\2\u0296\u0295\3\2\2\2\u0297\u029a\3\2\2\2\u0298\u0296\3\2\2\2\u0298"+ - "\u0299\3\2\2\2\u0299\u029b\3\2\2\2\u029a\u0298\3\2\2\2\u029b\u029c\t\2"+ - "\2\2\u029c\u00a9\3\2\2\2\u029d\u029e\7@\2\2\u029e\u02a2\7a\2\2\u029f\u02a1"+ - "\7\7\2\2\u02a0\u029f\3\2\2\2\u02a1\u02a4\3\2\2\2\u02a2\u02a0\3\2\2\2\u02a2"+ - "\u02a3\3\2\2\2\u02a3\u02a5\3\2\2\2\u02a4\u02a2\3\2\2\2\u02a5\u02a9\t\2"+ - "\2\2\u02a6\u02a8\7\7\2\2\u02a7\u02a6\3\2\2\2\u02a8\u02ab\3\2\2\2\u02a9"+ - "\u02a7\3\2\2\2\u02a9\u02aa\3\2\2\2\u02aa\u02ac\3\2\2\2\u02ab\u02a9\3\2"+ - "\2\2\u02ac\u02ad\t\2\2\2\u02ad\u00ab\3\2\2\2\u02ae\u02af\7A\2\2\u02af"+ - "\u02b0\t\2\2\2\u02b0\u00ad\3\2\2\2\u02b1\u02b2\7B\2\2\u02b2\u02b3\t\2"+ - "\2\2\u02b3\u00af\3\2\2\2\u02b4\u02b5\7C\2\2\u02b5\u02b6\t\2\2\2\u02b6"+ - "\u00b1\3\2\2\2\u02b7\u02b8\7D\2\2\u02b8\u02b9\t\2\2\2\u02b9\u00b3\3\2"+ - "\2\2\u02ba\u02bb\7E\2\2\u02bb\u02bc\t\2\2\2\u02bc\u00b5\3\2\2\2\u02bd"+ - "\u02be\7F\2\2\u02be\u02bf\7a\2\2\u02bf\u00b7\3\2\2\2\u02c0\u02c1\7G\2"+ - "\2\u02c1\u02c2\7a\2\2\u02c2\u00b9\3\2\2\2\u02c3\u02c4\7H\2\2\u02c4\u02c5"+ - "\t\2\2\2\u02c5\u00bb\3\2\2\2\u02c6\u02c7\7I\2\2\u02c7\u02cb\7a\2\2\u02c8"+ - "\u02ca\7\7\2\2\u02c9\u02c8\3\2\2\2\u02ca\u02cd\3\2\2\2\u02cb\u02c9\3\2"+ - "\2\2\u02cb\u02cc\3\2\2\2\u02cc\u02ce\3\2\2\2\u02cd\u02cb\3\2\2\2\u02ce"+ - "\u02cf\7a\2\2\u02cf\u00bd\3\2\2\2\u02d0\u02d1\7J\2\2\u02d1\u02d2\7a\2"+ - "\2\u02d2\u00bf\3\2\2\2\u02d3\u02d4\7K\2\2\u02d4\u02d5\t\2\2\2\u02d5\u00c1"+ - "\3\2\2\2\u02d6\u02d7\7L\2\2\u02d7\u02d8\t\2\2\2\u02d8\u00c3\3\2\2\2\u02d9"+ - "\u02da\7M\2\2\u02da\u02db\t\2\2\2\u02db\u00c5\3\2\2\2\u02dc\u02dd\7N\2"+ - "\2\u02dd\u02de\7a\2\2\u02de\u00c7\3\2\2\2\u02df\u02e0\7O\2\2\u02e0\u02e1"+ - "\7a\2\2\u02e1\u00c9\3\2\2\2\u02e2\u02e3\7P\2\2\u02e3\u02e7\t\2\2\2\u02e4"+ - "\u02e6\7\7\2\2\u02e5\u02e4\3\2\2\2\u02e6\u02e9\3\2\2\2\u02e7\u02e5\3\2"+ - "\2\2\u02e7\u02e8\3\2\2\2\u02e8\u02ea\3\2\2\2\u02e9\u02e7\3\2\2\2\u02ea"+ - "\u02ee\7a\2\2\u02eb\u02ed\7\7\2\2\u02ec\u02eb\3\2\2\2\u02ed\u02f0\3\2"+ - "\2\2\u02ee\u02ec\3\2\2\2\u02ee\u02ef\3\2\2\2\u02ef\u02f1\3\2\2\2\u02f0"+ - "\u02ee\3\2\2\2\u02f1\u02f5\t\2\2\2\u02f2\u02f4\7\7\2\2\u02f3\u02f2\3\2"+ - "\2\2\u02f4\u02f7\3\2\2\2\u02f5\u02f3\3\2\2\2\u02f5\u02f6\3\2\2\2\u02f6"+ - "\u02f8\3\2\2\2\u02f7\u02f5\3\2\2\2\u02f8\u02f9\7a\2\2\u02f9\u00cb\3\2"+ - "\2\2\u02fa\u02fb\7Q\2\2\u02fb\u02ff\t\2\2\2\u02fc\u02fe\7\7\2\2\u02fd"+ - "\u02fc\3\2\2\2\u02fe\u0301\3\2\2\2\u02ff\u02fd\3\2\2\2\u02ff\u0300\3\2"+ - "\2\2\u0300\u0302\3\2\2\2\u0301\u02ff\3\2\2\2\u0302\u0306\7a\2\2\u0303"+ - "\u0305\7\7\2\2\u0304\u0303\3\2\2\2\u0305\u0308\3\2\2\2\u0306\u0304\3\2"+ - "\2\2\u0306\u0307\3\2\2\2\u0307\u0309\3\2\2\2\u0308\u0306\3\2\2\2\u0309"+ - "\u030d\7a\2\2\u030a\u030c\7\7\2\2\u030b\u030a\3\2\2\2\u030c\u030f\3\2"+ - "\2\2\u030d\u030b\3\2\2\2\u030d\u030e\3\2\2\2\u030e\u0310\3\2\2\2\u030f"+ - "\u030d\3\2\2\2\u0310\u0311\7a\2\2\u0311\u00cd\3\2\2\2\u0312\u0313\7R\2"+ - "\2\u0313\u0317\t\2\2\2\u0314\u0316\7\7\2\2\u0315\u0314\3\2\2\2\u0316\u0319"+ - "\3\2\2\2\u0317\u0315\3\2\2\2\u0317\u0318\3\2\2\2\u0318\u031a\3\2\2\2\u0319"+ - "\u0317\3\2\2\2\u031a\u031e\7a\2\2\u031b\u031d\7\7\2\2\u031c\u031b\3\2"+ - "\2\2\u031d\u0320\3\2\2\2\u031e\u031c\3\2\2\2\u031e\u031f\3\2\2\2\u031f"+ - "\u0321\3\2\2\2\u0320\u031e\3\2\2\2\u0321\u0325\t\2\2\2\u0322\u0324\7\7"+ - "\2\2\u0323\u0322\3\2\2\2\u0324\u0327\3\2\2\2\u0325\u0323\3\2\2\2\u0325"+ - "\u0326\3\2\2\2\u0326\u0329\3\2\2\2\u0327\u0325\3\2\2\2\u0328\u032a\7a"+ - "\2\2\u0329\u0328\3\2\2\2\u0329\u032a\3\2\2\2\u032a\u00cf\3\2\2\2\u032b"+ - "\u032c\7S\2\2\u032c\u0330\7a\2\2\u032d\u032f\7\7\2\2\u032e\u032d\3\2\2"+ - "\2\u032f\u0332\3\2\2\2\u0330\u032e\3\2\2\2\u0330\u0331\3\2\2\2\u0331\u0333"+ - "\3\2\2\2\u0332\u0330\3\2\2\2\u0333\u0337\7a\2\2\u0334\u0336\7\7\2\2\u0335"+ - "\u0334\3\2\2\2\u0336\u0339\3\2\2\2\u0337\u0335\3\2\2\2\u0337\u0338\3\2"+ - "\2\2\u0338\u033a\3\2\2\2\u0339\u0337\3\2\2\2\u033a\u033e\7a\2\2\u033b"+ - "\u033d\7\7\2\2\u033c\u033b\3\2\2\2\u033d\u0340\3\2\2\2\u033e\u033c\3\2"+ - "\2\2\u033e\u033f\3\2\2\2\u033f\u0342\3\2\2\2\u0340\u033e\3\2\2\2\u0341"+ - "\u0343\7a\2\2\u0342\u0341\3\2\2\2\u0342\u0343\3\2\2\2\u0343\u00d1\3\2"+ - "\2\2\u0344\u0345\7T\2\2\u0345\u0349\t\2\2\2\u0346\u0348\7\7\2\2\u0347"+ - "\u0346\3\2\2\2\u0348\u034b\3\2\2\2\u0349\u0347\3\2\2\2\u0349\u034a\3\2"+ - "\2\2\u034a\u034c\3\2\2\2\u034b\u0349\3\2\2\2\u034c\u0350\7a\2\2\u034d"+ - "\u034f\7\7\2\2\u034e\u034d\3\2\2\2\u034f\u0352\3\2\2\2\u0350\u034e\3\2"+ - "\2\2\u0350\u0351\3\2\2\2\u0351\u0353\3\2\2\2\u0352\u0350\3\2\2\2\u0353"+ - "\u0357\t\2\2\2\u0354\u0356\7\7\2\2\u0355\u0354\3\2\2\2\u0356\u0359\3\2"+ - "\2\2\u0357\u0355\3\2\2\2\u0357\u0358\3\2\2\2\u0358\u0361\3\2\2\2\u0359"+ - "\u0357\3\2\2\2\u035a\u035e\7a\2\2\u035b\u035d\7\7\2\2\u035c\u035b\3\2"+ - "\2\2\u035d\u0360\3\2\2\2\u035e\u035c\3\2\2\2\u035e\u035f\3\2\2\2\u035f"+ - "\u0362\3\2\2\2\u0360\u035e\3\2\2\2\u0361\u035a\3\2\2\2\u0361\u0362\3\2"+ - "\2\2\u0362\u036a\3\2\2\2\u0363\u0367\7a\2\2\u0364\u0366\7\7\2\2\u0365"+ - "\u0364\3\2\2\2\u0366\u0369\3\2\2\2\u0367\u0365\3\2\2\2\u0367\u0368\3\2"+ - "\2\2\u0368\u036b\3\2\2\2\u0369\u0367\3\2\2\2\u036a\u0363\3\2\2\2\u036a"+ - "\u036b\3\2\2\2\u036b\u0373\3\2\2\2\u036c\u0370\7a\2\2\u036d\u036f\7\7"+ - "\2\2\u036e\u036d\3\2\2\2\u036f\u0372\3\2\2\2\u0370\u036e\3\2\2\2\u0370"+ - "\u0371\3\2\2\2\u0371\u0374\3\2\2\2\u0372\u0370\3\2\2\2\u0373\u036c\3\2"+ - "\2\2\u0373\u0374\3\2\2\2\u0374\u0376\3\2\2\2\u0375\u0377\t\2\2\2\u0376"+ - "\u0375\3\2\2\2\u0376\u0377\3\2\2\2\u0377\u00d3\3\2\2\2\u0378\u0379\7U"+ - "\2\2\u0379\u037d\t\2\2\2\u037a\u037c\7\7\2\2\u037b\u037a\3\2\2\2\u037c"+ - "\u037f\3\2\2\2\u037d\u037b\3\2\2\2\u037d\u037e\3\2\2\2\u037e\u0380\3\2"+ - "\2\2\u037f\u037d\3\2\2\2\u0380\u0384\7a\2\2\u0381\u0383\7\7\2\2\u0382"+ - "\u0381\3\2\2\2\u0383\u0386\3\2\2\2\u0384\u0382\3\2\2\2\u0384\u0385\3\2"+ - "\2\2\u0385\u0387\3\2\2\2\u0386\u0384\3\2\2\2\u0387\u038b\t\2\2\2\u0388"+ - "\u038a\7\7\2\2\u0389\u0388\3\2\2\2\u038a\u038d\3\2\2\2\u038b\u0389\3\2"+ - "\2\2\u038b\u038c\3\2\2\2\u038c\u0395\3\2\2\2\u038d\u038b\3\2\2\2\u038e"+ - "\u0392\7a\2\2\u038f\u0391\7\7\2\2\u0390\u038f\3\2\2\2\u0391\u0394\3\2"+ - "\2\2\u0392\u0390\3\2\2\2\u0392\u0393\3\2\2\2\u0393\u0396\3\2\2\2\u0394"+ - "\u0392\3\2\2\2\u0395\u038e\3\2\2\2\u0395\u0396\3\2\2\2\u0396\u039e\3\2"+ - "\2\2\u0397\u039b\7a\2\2\u0398\u039a\7\7\2\2\u0399\u0398\3\2\2\2\u039a"+ - "\u039d\3\2\2\2\u039b\u0399\3\2\2\2\u039b\u039c\3\2\2\2\u039c\u039f\3\2"+ - "\2\2\u039d\u039b\3\2\2\2\u039e\u0397\3\2\2\2\u039e\u039f\3\2\2\2\u039f"+ - "\u03a7\3\2\2\2\u03a0\u03a4\7a\2\2\u03a1\u03a3\7\7\2\2\u03a2\u03a1\3\2"+ - "\2\2\u03a3\u03a6\3\2\2\2\u03a4\u03a2\3\2\2\2\u03a4\u03a5\3\2\2\2\u03a5"+ - "\u03a8\3\2\2\2\u03a6\u03a4\3\2\2\2\u03a7\u03a0\3\2\2\2\u03a7\u03a8\3\2"+ - "\2\2\u03a8\u03aa\3\2\2\2\u03a9\u03ab\t\2\2\2\u03aa\u03a9\3\2\2\2\u03aa"+ - "\u03ab\3\2\2\2\u03ab\u00d5\3\2\2\2\u03ac\u03ad\7V\2\2\u03ad\u03b1\t\2"+ - "\2\2\u03ae\u03b0\7\7\2\2\u03af\u03ae\3\2\2\2\u03b0\u03b3\3\2\2\2\u03b1"+ - "\u03af\3\2\2\2\u03b1\u03b2\3\2\2\2\u03b2\u03b4\3\2\2\2\u03b3\u03b1\3\2"+ - "\2\2\u03b4\u03b8\7a\2\2\u03b5\u03b7\7\7\2\2\u03b6\u03b5\3\2\2\2\u03b7"+ - "\u03ba\3\2\2\2\u03b8\u03b6\3\2\2\2\u03b8\u03b9\3\2\2\2\u03b9\u03bb\3\2"+ - "\2\2\u03ba\u03b8\3\2\2\2\u03bb\u03bf\t\2\2\2\u03bc\u03be\7\7\2\2\u03bd"+ - "\u03bc\3\2\2\2\u03be\u03c1\3\2\2\2\u03bf\u03bd\3\2\2\2\u03bf\u03c0\3\2"+ - "\2\2\u03c0\u03c9\3\2\2\2\u03c1\u03bf\3\2\2\2\u03c2\u03c6\7a\2\2\u03c3"+ - "\u03c5\7\7\2\2\u03c4\u03c3\3\2\2\2\u03c5\u03c8\3\2\2\2\u03c6\u03c4\3\2"+ - "\2\2\u03c6\u03c7\3\2\2\2\u03c7\u03ca\3\2\2\2\u03c8\u03c6\3\2\2\2\u03c9"+ - "\u03c2\3\2\2\2\u03c9\u03ca\3\2\2\2\u03ca\u03cc\3\2\2\2\u03cb\u03cd\7a"+ - "\2\2\u03cc\u03cb\3\2\2\2\u03cc\u03cd\3\2\2\2\u03cd\u00d7\3\2\2\2\u03ce"+ - "\u03cf\7W\2\2\u03cf\u03d3\7a\2\2\u03d0\u03d2\7\7\2\2\u03d1\u03d0\3\2\2"+ - "\2\u03d2\u03d5\3\2\2\2\u03d3\u03d1\3\2\2\2\u03d3\u03d4\3\2\2\2\u03d4\u03d6"+ - "\3\2\2\2\u03d5\u03d3\3\2\2\2\u03d6\u03da\7a\2\2\u03d7\u03d9\7\7\2\2\u03d8"+ - "\u03d7\3\2\2\2\u03d9\u03dc\3\2\2\2\u03da\u03d8\3\2\2\2\u03da\u03db\3\2"+ - "\2\2\u03db\u03dd\3\2\2\2\u03dc\u03da\3\2\2\2\u03dd\u03e1\7a\2\2\u03de"+ - "\u03e0\7\7\2\2\u03df\u03de\3\2\2\2\u03e0\u03e3\3\2\2\2\u03e1\u03df\3\2"+ - "\2\2\u03e1\u03e2\3\2\2\2\u03e2\u03eb\3\2\2\2\u03e3\u03e1\3\2\2\2\u03e4"+ - "\u03e8\7a\2\2\u03e5\u03e7\7\7\2\2\u03e6\u03e5\3\2\2\2\u03e7\u03ea\3\2"+ - "\2\2\u03e8\u03e6\3\2\2\2\u03e8\u03e9\3\2\2\2\u03e9\u03ec\3\2\2\2\u03ea"+ - "\u03e8\3\2\2\2\u03eb\u03e4\3\2\2\2\u03eb\u03ec\3\2\2\2\u03ec\u03ee\3\2"+ - "\2\2\u03ed\u03ef\7a\2\2\u03ee\u03ed\3\2\2\2\u03ee\u03ef\3\2\2\2\u03ef"+ - "\u00d9\3\2\2\2\u03f0\u03f1\7X\2\2\u03f1\u03f5\t\2\2\2\u03f2\u03f4\7\7"+ - "\2\2\u03f3\u03f2\3\2\2\2\u03f4\u03f7\3\2\2\2\u03f5\u03f3\3\2\2\2\u03f5"+ - "\u03f6\3\2\2\2\u03f6\u03f8\3\2\2\2\u03f7\u03f5\3\2\2\2\u03f8\u03fc\7a"+ - "\2\2\u03f9\u03fb\7\7\2\2\u03fa\u03f9\3\2\2\2\u03fb\u03fe\3\2\2\2\u03fc"+ - "\u03fa\3\2\2\2\u03fc\u03fd\3\2\2\2\u03fd\u03ff\3\2\2\2\u03fe\u03fc\3\2"+ - "\2\2\u03ff\u0403\t\2\2\2\u0400\u0402\7\7\2\2\u0401\u0400\3\2\2\2\u0402"+ - "\u0405\3\2\2\2\u0403\u0401\3\2\2\2\u0403\u0404\3\2\2\2\u0404\u040d\3\2"+ - "\2\2\u0405\u0403\3\2\2\2\u0406\u040a\7a\2\2\u0407\u0409\7\7\2\2\u0408"+ - "\u0407\3\2\2\2\u0409\u040c\3\2\2\2\u040a\u0408\3\2\2\2\u040a\u040b\3\2"+ - "\2\2\u040b\u040e\3\2\2\2\u040c\u040a\3\2\2\2\u040d\u0406\3\2\2\2\u040d"+ - "\u040e\3\2\2\2\u040e\u0416\3\2\2\2\u040f\u0413\7a\2\2\u0410\u0412\7\7"+ - "\2\2\u0411\u0410\3\2\2\2\u0412\u0415\3\2\2\2\u0413\u0411\3\2\2\2\u0413"+ - "\u0414\3\2\2\2\u0414\u0417\3\2\2\2\u0415\u0413\3\2\2\2\u0416\u040f\3\2"+ - "\2\2\u0416\u0417\3\2\2\2\u0417\u041f\3\2\2\2\u0418\u041c\7a\2\2\u0419"+ - "\u041b\7\7\2\2\u041a\u0419\3\2\2\2\u041b\u041e\3\2\2\2\u041c\u041a\3\2"+ - "\2\2\u041c\u041d\3\2\2\2\u041d\u0420\3\2\2\2\u041e\u041c\3\2\2\2\u041f"+ - "\u0418\3\2\2\2\u041f\u0420\3\2\2\2\u0420\u0428\3\2\2\2\u0421\u0425\7a"+ - "\2\2\u0422\u0424\7\7\2\2\u0423\u0422\3\2\2\2\u0424\u0427\3\2\2\2\u0425"+ - "\u0423\3\2\2\2\u0425\u0426\3\2\2\2\u0426\u0429\3\2\2\2\u0427\u0425\3\2"+ - "\2\2\u0428\u0421\3\2\2\2\u0428\u0429\3\2\2\2\u0429\u042a\3\2\2\2\u042a"+ - "\u042b\t\2\2\2\u042b\u00db\3\2\2\2\u042c\u042d\7Y\2\2\u042d\u0431\t\2"+ - "\2\2\u042e\u0430\7\7\2\2\u042f\u042e\3\2\2\2\u0430\u0433\3\2\2\2\u0431"+ - "\u042f\3\2\2\2\u0431\u0432\3\2\2\2\u0432\u0434\3\2\2\2\u0433\u0431\3\2"+ - "\2\2\u0434\u0438\7a\2\2\u0435\u0437\7\7\2\2\u0436\u0435\3\2\2\2\u0437"+ - "\u043a\3\2\2\2\u0438\u0436\3\2\2\2\u0438\u0439\3\2\2\2\u0439\u043b\3\2"+ - "\2\2\u043a\u0438\3\2\2\2\u043b\u043f\t\2\2\2\u043c\u043e\7\7\2\2\u043d"+ - "\u043c\3\2\2\2\u043e\u0441\3\2\2\2\u043f\u043d\3\2\2\2\u043f\u0440\3\2"+ - "\2\2\u0440\u0449\3\2\2\2\u0441\u043f\3\2\2\2\u0442\u0446\7a\2\2\u0443"+ - "\u0445\7\7\2\2\u0444\u0443\3\2\2\2\u0445\u0448\3\2\2\2\u0446\u0444\3\2"+ - "\2\2\u0446\u0447\3\2\2\2\u0447\u044a\3\2\2\2\u0448\u0446\3\2\2\2\u0449"+ - "\u0442\3\2\2\2\u0449\u044a\3\2\2\2\u044a\u044b\3\2\2\2\u044b\u044f\7a"+ - "\2\2\u044c\u044e\7\7\2\2\u044d\u044c\3\2\2\2\u044e\u0451\3\2\2\2\u044f"+ - "\u044d\3\2\2\2\u044f\u0450\3\2\2\2\u0450\u0459\3\2\2\2\u0451\u044f\3\2"+ - "\2\2\u0452\u0456\7a\2\2\u0453\u0455\7\7\2\2\u0454\u0453\3\2\2\2\u0455"+ - "\u0458\3\2\2\2\u0456\u0454\3\2\2\2\u0456\u0457\3\2\2\2\u0457\u045a\3\2"+ - "\2\2\u0458\u0456\3\2\2\2\u0459\u0452\3\2\2\2\u0459\u045a\3\2\2\2\u045a"+ - "\u0462\3\2\2\2\u045b\u045f\7a\2\2\u045c\u045e\7\7\2\2\u045d\u045c\3\2"+ - "\2\2\u045e\u0461\3\2\2\2\u045f\u045d\3\2\2\2\u045f\u0460\3\2\2\2\u0460"+ - "\u0463\3\2\2\2\u0461\u045f\3\2\2\2\u0462\u045b\3\2\2\2\u0462\u0463\3\2"+ - "\2\2\u0463\u0465\3\2\2\2\u0464\u0466\t\2\2\2\u0465\u0464\3\2\2\2\u0465"+ - "\u0466\3\2\2\2\u0466\u00dd\3\2\2\2\u0467\u0468\7Z\2\2\u0468\u046c\t\2"+ - "\2\2\u0469\u046b\7\7\2\2\u046a\u0469\3\2\2\2\u046b\u046e\3\2\2\2\u046c"+ - "\u046a\3\2\2\2\u046c\u046d\3\2\2\2\u046d\u046f\3\2\2\2\u046e\u046c\3\2"+ - "\2\2\u046f\u0473\7a\2\2\u0470\u0472\7\7\2\2\u0471\u0470\3\2\2\2\u0472"+ - "\u0475\3\2\2\2\u0473\u0471\3\2\2\2\u0473\u0474\3\2\2\2\u0474\u0476\3\2"+ - "\2\2\u0475\u0473\3\2\2\2\u0476\u047a\7a\2\2\u0477\u0479\7\7\2\2\u0478"+ - "\u0477\3\2\2\2\u0479\u047c\3\2\2\2\u047a\u0478\3\2\2\2\u047a\u047b\3\2"+ - "\2\2\u047b\u047d\3\2\2\2\u047c\u047a\3\2\2\2\u047d\u047e\t\2\2\2\u047e"+ - "\u00df\3\2\2\2\u047f\u0480\7[\2\2\u0480\u0481\t\2\2\2\u0481\u00e1\3\2"+ - "\2\2\u0482\u0483\7\\\2\2\u0483\u0487\t\2\2\2\u0484\u0486\7\7\2\2\u0485"+ - "\u0484\3\2\2\2\u0486\u0489\3\2\2\2\u0487\u0485\3\2\2\2\u0487\u0488\3\2"+ - "\2\2\u0488\u048a\3\2\2\2\u0489\u0487\3\2\2\2\u048a\u048e\7a\2\2\u048b"+ - "\u048d\7\7\2\2\u048c\u048b\3\2\2\2\u048d\u0490\3\2\2\2\u048e\u048c\3\2"+ - "\2\2\u048e\u048f\3\2\2\2\u048f\u0491\3\2\2\2\u0490\u048e\3\2\2\2\u0491"+ - "\u0495\7a\2\2\u0492\u0494\7\7\2\2\u0493\u0492\3\2\2\2\u0494\u0497\3\2"+ - "\2\2\u0495\u0493\3\2\2\2\u0495\u0496\3\2\2\2\u0496\u0498\3\2\2\2\u0497"+ - "\u0495\3\2\2\2\u0498\u0499\t\2\2\2\u0499\u00e3\3\2\2\2\u049a\u049b\7]"+ - "\2\2\u049b\u049c\t\2\2\2\u049c\u00e5\3\2\2\2w\u00e9\u00ed\u00f7\u0124"+ - "\u0127\u012c\u013a\u013e\u0142\u0146\u014a\u014f\u0153\u0157\u015b\u015f"+ - "\u0163\u0168\u016c\u0170\u017a\u017e\u0182\u0188\u0192\u0197\u019b\u019f"+ - "\u01eb\u01f5\u01ff\u0209\u0213\u022c\u0254\u025b\u0265\u026c\u0291\u0298"+ - "\u02a2\u02a9\u02cb\u02e7\u02ee\u02f5\u02ff\u0306\u030d\u0317\u031e\u0325"+ - "\u0329\u0330\u0337\u033e\u0342\u0349\u0350\u0357\u035e\u0361\u0367\u036a"+ - "\u0370\u0373\u0376\u037d\u0384\u038b\u0392\u0395\u039b\u039e\u03a4\u03a7"+ - "\u03aa\u03b1\u03b8\u03bf\u03c6\u03c9\u03cc\u03d3\u03da\u03e1\u03e8\u03eb"+ - "\u03ee\u03f5\u03fc\u0403\u040a\u040d\u0413\u0416\u041c\u041f\u0425\u0428"+ - "\u0431\u0438\u043f\u0446\u0449\u044f\u0456\u0459\u045f\u0462\u0465\u046c"+ - "\u0473\u047a\u0487\u048e\u0495"; + "\2\2\u0266\u0268\3\2\2\2\u0267\u0265\3\2\2\2\u0268\u0269\t\2\2\2\u0269"+ + "\u0097\3\2\2\2\u026a\u026b\7\65\2\2\u026b\u026f\7a\2\2\u026c\u026e\7\7"+ + "\2\2\u026d\u026c\3\2\2\2\u026e\u0271\3\2\2\2\u026f\u026d\3\2\2\2\u026f"+ + "\u0270\3\2\2\2\u0270\u0272\3\2\2\2\u0271\u026f\3\2\2\2\u0272\u0276\t\2"+ + "\2\2\u0273\u0275\7\7\2\2\u0274\u0273\3\2\2\2\u0275\u0278\3\2\2\2\u0276"+ + "\u0274\3\2\2\2\u0276\u0277\3\2\2\2\u0277\u0279\3\2\2\2\u0278\u0276\3\2"+ + "\2\2\u0279\u027a\t\2\2\2\u027a\u0099\3\2\2\2\u027b\u027c\7\66\2\2\u027c"+ + "\u027d\t\2\2\2\u027d\u009b\3\2\2\2\u027e\u027f\7\67\2\2\u027f\u0280\t"+ + "\2\2\2\u0280\u009d\3\2\2\2\u0281\u0282\78\2\2\u0282\u0283\t\2\2\2\u0283"+ + "\u009f\3\2\2\2\u0284\u0285\79\2\2\u0285\u0286\t\2\2\2\u0286\u00a1\3\2"+ + "\2\2\u0287\u0288\7:\2\2\u0288\u0289\t\2\2\2\u0289\u00a3\3\2\2\2\u028a"+ + "\u028b\7;\2\2\u028b\u028c\7a\2\2\u028c\u00a5\3\2\2\2\u028d\u028e\7<\2"+ + "\2\u028e\u028f\7a\2\2\u028f\u00a7\3\2\2\2\u0290\u0291\7=\2\2\u0291\u0292"+ + "\t\2\2\2\u0292\u00a9\3\2\2\2\u0293\u0294\7>\2\2\u0294\u0295\7a\2\2\u0295"+ + "\u00ab\3\2\2\2\u0296\u0297\7?\2\2\u0297\u029b\t\2\2\2\u0298\u029a\7\7"+ + "\2\2\u0299\u0298\3\2\2\2\u029a\u029d\3\2\2\2\u029b\u0299\3\2\2\2\u029b"+ + "\u029c\3\2\2\2\u029c\u029e\3\2\2\2\u029d\u029b\3\2\2\2\u029e\u02a2\t\2"+ + "\2\2\u029f\u02a1\7\7\2\2\u02a0\u029f\3\2\2\2\u02a1\u02a4\3\2\2\2\u02a2"+ + "\u02a0\3\2\2\2\u02a2\u02a3\3\2\2\2\u02a3\u02a5\3\2\2\2\u02a4\u02a2\3\2"+ + "\2\2\u02a5\u02a6\t\2\2\2\u02a6\u00ad\3\2\2\2\u02a7\u02a8\7@\2\2\u02a8"+ + "\u02ac\7a\2\2\u02a9\u02ab\7\7\2\2\u02aa\u02a9\3\2\2\2\u02ab\u02ae\3\2"+ + "\2\2\u02ac\u02aa\3\2\2\2\u02ac\u02ad\3\2\2\2\u02ad\u02af\3\2\2\2\u02ae"+ + "\u02ac\3\2\2\2\u02af\u02b3\t\2\2\2\u02b0\u02b2\7\7\2\2\u02b1\u02b0\3\2"+ + "\2\2\u02b2\u02b5\3\2\2\2\u02b3\u02b1\3\2\2\2\u02b3\u02b4\3\2\2\2\u02b4"+ + "\u02b6\3\2\2\2\u02b5\u02b3\3\2\2\2\u02b6\u02b7\t\2\2\2\u02b7\u00af\3\2"+ + "\2\2\u02b8\u02b9\7A\2\2\u02b9\u02ba\t\2\2\2\u02ba\u00b1\3\2\2\2\u02bb"+ + "\u02bc\7B\2\2\u02bc\u02bd\t\2\2\2\u02bd\u00b3\3\2\2\2\u02be\u02bf\7C\2"+ + "\2\u02bf\u02c0\t\2\2\2\u02c0\u00b5\3\2\2\2\u02c1\u02c2\7D\2\2\u02c2\u02c3"+ + "\t\2\2\2\u02c3\u00b7\3\2\2\2\u02c4\u02c5\7E\2\2\u02c5\u02c6\t\2\2\2\u02c6"+ + "\u00b9\3\2\2\2\u02c7\u02c8\7F\2\2\u02c8\u02c9\7a\2\2\u02c9\u00bb\3\2\2"+ + "\2\u02ca\u02cb\7G\2\2\u02cb\u02cc\7a\2\2\u02cc\u00bd\3\2\2\2\u02cd\u02ce"+ + "\7H\2\2\u02ce\u02cf\t\2\2\2\u02cf\u00bf\3\2\2\2\u02d0\u02d1\7I\2\2\u02d1"+ + "\u02d5\7a\2\2\u02d2\u02d4\7\7\2\2\u02d3\u02d2\3\2\2\2\u02d4\u02d7\3\2"+ + "\2\2\u02d5\u02d3\3\2\2\2\u02d5\u02d6\3\2\2\2\u02d6\u02d8\3\2\2\2\u02d7"+ + "\u02d5\3\2\2\2\u02d8\u02d9\7a\2\2\u02d9\u00c1\3\2\2\2\u02da\u02db\7J\2"+ + "\2\u02db\u02dc\7a\2\2\u02dc\u00c3\3\2\2\2\u02dd\u02de\7K\2\2\u02de\u02df"+ + "\t\2\2\2\u02df\u00c5\3\2\2\2\u02e0\u02e1\7L\2\2\u02e1\u02e2\t\2\2\2\u02e2"+ + "\u00c7\3\2\2\2\u02e3\u02e4\7M\2\2\u02e4\u02e5\t\2\2\2\u02e5\u00c9\3\2"+ + "\2\2\u02e6\u02e7\7N\2\2\u02e7\u02e8\7a\2\2\u02e8\u00cb\3\2\2\2\u02e9\u02ea"+ + "\7O\2\2\u02ea\u02eb\7a\2\2\u02eb\u00cd\3\2\2\2\u02ec\u02ed\7P\2\2\u02ed"+ + "\u02f1\t\2\2\2\u02ee\u02f0\7\7\2\2\u02ef\u02ee\3\2\2\2\u02f0\u02f3\3\2"+ + "\2\2\u02f1\u02ef\3\2\2\2\u02f1\u02f2\3\2\2\2\u02f2\u02f4\3\2\2\2\u02f3"+ + "\u02f1\3\2\2\2\u02f4\u02f8\7a\2\2\u02f5\u02f7\7\7\2\2\u02f6\u02f5\3\2"+ + "\2\2\u02f7\u02fa\3\2\2\2\u02f8\u02f6\3\2\2\2\u02f8\u02f9\3\2\2\2\u02f9"+ + "\u02fb\3\2\2\2\u02fa\u02f8\3\2\2\2\u02fb\u02ff\t\2\2\2\u02fc\u02fe\7\7"+ + "\2\2\u02fd\u02fc\3\2\2\2\u02fe\u0301\3\2\2\2\u02ff\u02fd\3\2\2\2\u02ff"+ + "\u0300\3\2\2\2\u0300\u0302\3\2\2\2\u0301\u02ff\3\2\2\2\u0302\u0303\7a"+ + "\2\2\u0303\u00cf\3\2\2\2\u0304\u0305\7Q\2\2\u0305\u0309\t\2\2\2\u0306"+ + "\u0308\7\7\2\2\u0307\u0306\3\2\2\2\u0308\u030b\3\2\2\2\u0309\u0307\3\2"+ + "\2\2\u0309\u030a\3\2\2\2\u030a\u030c\3\2\2\2\u030b\u0309\3\2\2\2\u030c"+ + "\u0310\7a\2\2\u030d\u030f\7\7\2\2\u030e\u030d\3\2\2\2\u030f\u0312\3\2"+ + "\2\2\u0310\u030e\3\2\2\2\u0310\u0311\3\2\2\2\u0311\u0313\3\2\2\2\u0312"+ + "\u0310\3\2\2\2\u0313\u0317\7a\2\2\u0314\u0316\7\7\2\2\u0315\u0314\3\2"+ + "\2\2\u0316\u0319\3\2\2\2\u0317\u0315\3\2\2\2\u0317\u0318\3\2\2\2\u0318"+ + "\u031a\3\2\2\2\u0319\u0317\3\2\2\2\u031a\u031b\7a\2\2\u031b\u00d1\3\2"+ + "\2\2\u031c\u031d\7R\2\2\u031d\u0321\t\2\2\2\u031e\u0320\7\7\2\2\u031f"+ + "\u031e\3\2\2\2\u0320\u0323\3\2\2\2\u0321\u031f\3\2\2\2\u0321\u0322\3\2"+ + "\2\2\u0322\u0324\3\2\2\2\u0323\u0321\3\2\2\2\u0324\u0328\7a\2\2\u0325"+ + "\u0327\7\7\2\2\u0326\u0325\3\2\2\2\u0327\u032a\3\2\2\2\u0328\u0326\3\2"+ + "\2\2\u0328\u0329\3\2\2\2\u0329\u032b\3\2\2\2\u032a\u0328\3\2\2\2\u032b"+ + "\u032f\t\2\2\2\u032c\u032e\7\7\2\2\u032d\u032c\3\2\2\2\u032e\u0331\3\2"+ + "\2\2\u032f\u032d\3\2\2\2\u032f\u0330\3\2\2\2\u0330\u0333\3\2\2\2\u0331"+ + "\u032f\3\2\2\2\u0332\u0334\7a\2\2\u0333\u0332\3\2\2\2\u0333\u0334\3\2"+ + "\2\2\u0334\u00d3\3\2\2\2\u0335\u0336\7S\2\2\u0336\u033a\7a\2\2\u0337\u0339"+ + "\7\7\2\2\u0338\u0337\3\2\2\2\u0339\u033c\3\2\2\2\u033a\u0338\3\2\2\2\u033a"+ + "\u033b\3\2\2\2\u033b\u033d\3\2\2\2\u033c\u033a\3\2\2\2\u033d\u0341\7a"+ + "\2\2\u033e\u0340\7\7\2\2\u033f\u033e\3\2\2\2\u0340\u0343\3\2\2\2\u0341"+ + "\u033f\3\2\2\2\u0341\u0342\3\2\2\2\u0342\u0344\3\2\2\2\u0343\u0341\3\2"+ + "\2\2\u0344\u0348\7a\2\2\u0345\u0347\7\7\2\2\u0346\u0345\3\2\2\2\u0347"+ + "\u034a\3\2\2\2\u0348\u0346\3\2\2\2\u0348\u0349\3\2\2\2\u0349\u034c\3\2"+ + "\2\2\u034a\u0348\3\2\2\2\u034b\u034d\7a\2\2\u034c\u034b\3\2\2\2\u034c"+ + "\u034d\3\2\2\2\u034d\u00d5\3\2\2\2\u034e\u034f\7T\2\2\u034f\u0353\t\2"+ + "\2\2\u0350\u0352\7\7\2\2\u0351\u0350\3\2\2\2\u0352\u0355\3\2\2\2\u0353"+ + "\u0351\3\2\2\2\u0353\u0354\3\2\2\2\u0354\u0356\3\2\2\2\u0355\u0353\3\2"+ + "\2\2\u0356\u035a\7a\2\2\u0357\u0359\7\7\2\2\u0358\u0357\3\2\2\2\u0359"+ + "\u035c\3\2\2\2\u035a\u0358\3\2\2\2\u035a\u035b\3\2\2\2\u035b\u035d\3\2"+ + "\2\2\u035c\u035a\3\2\2\2\u035d\u0361\t\2\2\2\u035e\u0360\7\7\2\2\u035f"+ + "\u035e\3\2\2\2\u0360\u0363\3\2\2\2\u0361\u035f\3\2\2\2\u0361\u0362\3\2"+ + "\2\2\u0362\u036b\3\2\2\2\u0363\u0361\3\2\2\2\u0364\u0368\7a\2\2\u0365"+ + "\u0367\7\7\2\2\u0366\u0365\3\2\2\2\u0367\u036a\3\2\2\2\u0368\u0366\3\2"+ + "\2\2\u0368\u0369\3\2\2\2\u0369\u036c\3\2\2\2\u036a\u0368\3\2\2\2\u036b"+ + "\u0364\3\2\2\2\u036b\u036c\3\2\2\2\u036c\u0374\3\2\2\2\u036d\u0371\7a"+ + "\2\2\u036e\u0370\7\7\2\2\u036f\u036e\3\2\2\2\u0370\u0373\3\2\2\2\u0371"+ + "\u036f\3\2\2\2\u0371\u0372\3\2\2\2\u0372\u0375\3\2\2\2\u0373\u0371\3\2"+ + "\2\2\u0374\u036d\3\2\2\2\u0374\u0375\3\2\2\2\u0375\u037d\3\2\2\2\u0376"+ + "\u037a\7a\2\2\u0377\u0379\7\7\2\2\u0378\u0377\3\2\2\2\u0379\u037c\3\2"+ + "\2\2\u037a\u0378\3\2\2\2\u037a\u037b\3\2\2\2\u037b\u037e\3\2\2\2\u037c"+ + "\u037a\3\2\2\2\u037d\u0376\3\2\2\2\u037d\u037e\3\2\2\2\u037e\u0380\3\2"+ + "\2\2\u037f\u0381\t\2\2\2\u0380\u037f\3\2\2\2\u0380\u0381\3\2\2\2\u0381"+ + "\u00d7\3\2\2\2\u0382\u0383\7U\2\2\u0383\u0387\t\2\2\2\u0384\u0386\7\7"+ + "\2\2\u0385\u0384\3\2\2\2\u0386\u0389\3\2\2\2\u0387\u0385\3\2\2\2\u0387"+ + "\u0388\3\2\2\2\u0388\u038a\3\2\2\2\u0389\u0387\3\2\2\2\u038a\u038e\7a"+ + "\2\2\u038b\u038d\7\7\2\2\u038c\u038b\3\2\2\2\u038d\u0390\3\2\2\2\u038e"+ + "\u038c\3\2\2\2\u038e\u038f\3\2\2\2\u038f\u0391\3\2\2\2\u0390\u038e\3\2"+ + "\2\2\u0391\u0395\t\2\2\2\u0392\u0394\7\7\2\2\u0393\u0392\3\2\2\2\u0394"+ + "\u0397\3\2\2\2\u0395\u0393\3\2\2\2\u0395\u0396\3\2\2\2\u0396\u039f\3\2"+ + "\2\2\u0397\u0395\3\2\2\2\u0398\u039c\7a\2\2\u0399\u039b\7\7\2\2\u039a"+ + "\u0399\3\2\2\2\u039b\u039e\3\2\2\2\u039c\u039a\3\2\2\2\u039c\u039d\3\2"+ + "\2\2\u039d\u03a0\3\2\2\2\u039e\u039c\3\2\2\2\u039f\u0398\3\2\2\2\u039f"+ + "\u03a0\3\2\2\2\u03a0\u03a8\3\2\2\2\u03a1\u03a5\7a\2\2\u03a2\u03a4\7\7"+ + "\2\2\u03a3\u03a2\3\2\2\2\u03a4\u03a7\3\2\2\2\u03a5\u03a3\3\2\2\2\u03a5"+ + "\u03a6\3\2\2\2\u03a6\u03a9\3\2\2\2\u03a7\u03a5\3\2\2\2\u03a8\u03a1\3\2"+ + "\2\2\u03a8\u03a9\3\2\2\2\u03a9\u03b1\3\2\2\2\u03aa\u03ae\7a\2\2\u03ab"+ + "\u03ad\7\7\2\2\u03ac\u03ab\3\2\2\2\u03ad\u03b0\3\2\2\2\u03ae\u03ac\3\2"+ + "\2\2\u03ae\u03af\3\2\2\2\u03af\u03b2\3\2\2\2\u03b0\u03ae\3\2\2\2\u03b1"+ + "\u03aa\3\2\2\2\u03b1\u03b2\3\2\2\2\u03b2\u03b4\3\2\2\2\u03b3\u03b5\t\2"+ + "\2\2\u03b4\u03b3\3\2\2\2\u03b4\u03b5\3\2\2\2\u03b5\u00d9\3\2\2\2\u03b6"+ + "\u03b7\7V\2\2\u03b7\u03bb\t\2\2\2\u03b8\u03ba\7\7\2\2\u03b9\u03b8\3\2"+ + "\2\2\u03ba\u03bd\3\2\2\2\u03bb\u03b9\3\2\2\2\u03bb\u03bc\3\2\2\2\u03bc"+ + "\u03be\3\2\2\2\u03bd\u03bb\3\2\2\2\u03be\u03c2\7a\2\2\u03bf\u03c1\7\7"+ + "\2\2\u03c0\u03bf\3\2\2\2\u03c1\u03c4\3\2\2\2\u03c2\u03c0\3\2\2\2\u03c2"+ + "\u03c3\3\2\2\2\u03c3\u03c5\3\2\2\2\u03c4\u03c2\3\2\2\2\u03c5\u03c9\t\2"+ + "\2\2\u03c6\u03c8\7\7\2\2\u03c7\u03c6\3\2\2\2\u03c8\u03cb\3\2\2\2\u03c9"+ + "\u03c7\3\2\2\2\u03c9\u03ca\3\2\2\2\u03ca\u03d3\3\2\2\2\u03cb\u03c9\3\2"+ + "\2\2\u03cc\u03d0\7a\2\2\u03cd\u03cf\7\7\2\2\u03ce\u03cd\3\2\2\2\u03cf"+ + "\u03d2\3\2\2\2\u03d0\u03ce\3\2\2\2\u03d0\u03d1\3\2\2\2\u03d1\u03d4\3\2"+ + "\2\2\u03d2\u03d0\3\2\2\2\u03d3\u03cc\3\2\2\2\u03d3\u03d4\3\2\2\2\u03d4"+ + "\u03d6\3\2\2\2\u03d5\u03d7\7a\2\2\u03d6\u03d5\3\2\2\2\u03d6\u03d7\3\2"+ + "\2\2\u03d7\u00db\3\2\2\2\u03d8\u03d9\7W\2\2\u03d9\u03dd\7a\2\2\u03da\u03dc"+ + "\7\7\2\2\u03db\u03da\3\2\2\2\u03dc\u03df\3\2\2\2\u03dd\u03db\3\2\2\2\u03dd"+ + "\u03de\3\2\2\2\u03de\u03e0\3\2\2\2\u03df\u03dd\3\2\2\2\u03e0\u03e4\7a"+ + "\2\2\u03e1\u03e3\7\7\2\2\u03e2\u03e1\3\2\2\2\u03e3\u03e6\3\2\2\2\u03e4"+ + "\u03e2\3\2\2\2\u03e4\u03e5\3\2\2\2\u03e5\u03e7\3\2\2\2\u03e6\u03e4\3\2"+ + "\2\2\u03e7\u03eb\7a\2\2\u03e8\u03ea\7\7\2\2\u03e9\u03e8\3\2\2\2\u03ea"+ + "\u03ed\3\2\2\2\u03eb\u03e9\3\2\2\2\u03eb\u03ec\3\2\2\2\u03ec\u03f5\3\2"+ + "\2\2\u03ed\u03eb\3\2\2\2\u03ee\u03f2\7a\2\2\u03ef\u03f1\7\7\2\2\u03f0"+ + "\u03ef\3\2\2\2\u03f1\u03f4\3\2\2\2\u03f2\u03f0\3\2\2\2\u03f2\u03f3\3\2"+ + "\2\2\u03f3\u03f6\3\2\2\2\u03f4\u03f2\3\2\2\2\u03f5\u03ee\3\2\2\2\u03f5"+ + "\u03f6\3\2\2\2\u03f6\u03f8\3\2\2\2\u03f7\u03f9\7a\2\2\u03f8\u03f7\3\2"+ + "\2\2\u03f8\u03f9\3\2\2\2\u03f9\u00dd\3\2\2\2\u03fa\u03fb\7X\2\2\u03fb"+ + "\u03ff\t\2\2\2\u03fc\u03fe\7\7\2\2\u03fd\u03fc\3\2\2\2\u03fe\u0401\3\2"+ + "\2\2\u03ff\u03fd\3\2\2\2\u03ff\u0400\3\2\2\2\u0400\u0402\3\2\2\2\u0401"+ + "\u03ff\3\2\2\2\u0402\u0406\7a\2\2\u0403\u0405\7\7\2\2\u0404\u0403\3\2"+ + "\2\2\u0405\u0408\3\2\2\2\u0406\u0404\3\2\2\2\u0406\u0407\3\2\2\2\u0407"+ + "\u0409\3\2\2\2\u0408\u0406\3\2\2\2\u0409\u040d\t\2\2\2\u040a\u040c\7\7"+ + "\2\2\u040b\u040a\3\2\2\2\u040c\u040f\3\2\2\2\u040d\u040b\3\2\2\2\u040d"+ + "\u040e\3\2\2\2\u040e\u0417\3\2\2\2\u040f\u040d\3\2\2\2\u0410\u0414\7a"+ + "\2\2\u0411\u0413\7\7\2\2\u0412\u0411\3\2\2\2\u0413\u0416\3\2\2\2\u0414"+ + "\u0412\3\2\2\2\u0414\u0415\3\2\2\2\u0415\u0418\3\2\2\2\u0416\u0414\3\2"+ + "\2\2\u0417\u0410\3\2\2\2\u0417\u0418\3\2\2\2\u0418\u0420\3\2\2\2\u0419"+ + "\u041d\7a\2\2\u041a\u041c\7\7\2\2\u041b\u041a\3\2\2\2\u041c\u041f\3\2"+ + "\2\2\u041d\u041b\3\2\2\2\u041d\u041e\3\2\2\2\u041e\u0421\3\2\2\2\u041f"+ + "\u041d\3\2\2\2\u0420\u0419\3\2\2\2\u0420\u0421\3\2\2\2\u0421\u0429\3\2"+ + "\2\2\u0422\u0426\7a\2\2\u0423\u0425\7\7\2\2\u0424\u0423\3\2\2\2\u0425"+ + "\u0428\3\2\2\2\u0426\u0424\3\2\2\2\u0426\u0427\3\2\2\2\u0427\u042a\3\2"+ + "\2\2\u0428\u0426\3\2\2\2\u0429\u0422\3\2\2\2\u0429\u042a\3\2\2\2\u042a"+ + "\u0432\3\2\2\2\u042b\u042f\7a\2\2\u042c\u042e\7\7\2\2\u042d\u042c\3\2"+ + "\2\2\u042e\u0431\3\2\2\2\u042f\u042d\3\2\2\2\u042f\u0430\3\2\2\2\u0430"+ + "\u0433\3\2\2\2\u0431\u042f\3\2\2\2\u0432\u042b\3\2\2\2\u0432\u0433\3\2"+ + "\2\2\u0433\u0434\3\2\2\2\u0434\u0435\t\2\2\2\u0435\u00df\3\2\2\2\u0436"+ + "\u0437\7Y\2\2\u0437\u043b\t\2\2\2\u0438\u043a\7\7\2\2\u0439\u0438\3\2"+ + "\2\2\u043a\u043d\3\2\2\2\u043b\u0439\3\2\2\2\u043b\u043c\3\2\2\2\u043c"+ + "\u043e\3\2\2\2\u043d\u043b\3\2\2\2\u043e\u0442\7a\2\2\u043f\u0441\7\7"+ + "\2\2\u0440\u043f\3\2\2\2\u0441\u0444\3\2\2\2\u0442\u0440\3\2\2\2\u0442"+ + "\u0443\3\2\2\2\u0443\u0445\3\2\2\2\u0444\u0442\3\2\2\2\u0445\u0449\t\2"+ + "\2\2\u0446\u0448\7\7\2\2\u0447\u0446\3\2\2\2\u0448\u044b\3\2\2\2\u0449"+ + "\u0447\3\2\2\2\u0449\u044a\3\2\2\2\u044a\u0453\3\2\2\2\u044b\u0449\3\2"+ + "\2\2\u044c\u0450\7a\2\2\u044d\u044f\7\7\2\2\u044e\u044d\3\2\2\2\u044f"+ + "\u0452\3\2\2\2\u0450\u044e\3\2\2\2\u0450\u0451\3\2\2\2\u0451\u0454\3\2"+ + "\2\2\u0452\u0450\3\2\2\2\u0453\u044c\3\2\2\2\u0453\u0454\3\2\2\2\u0454"+ + "\u0455\3\2\2\2\u0455\u0459\7a\2\2\u0456\u0458\7\7\2\2\u0457\u0456\3\2"+ + "\2\2\u0458\u045b\3\2\2\2\u0459\u0457\3\2\2\2\u0459\u045a\3\2\2\2\u045a"+ + "\u0463\3\2\2\2\u045b\u0459\3\2\2\2\u045c\u0460\7a\2\2\u045d\u045f\7\7"+ + "\2\2\u045e\u045d\3\2\2\2\u045f\u0462\3\2\2\2\u0460\u045e\3\2\2\2\u0460"+ + "\u0461\3\2\2\2\u0461\u0464\3\2\2\2\u0462\u0460\3\2\2\2\u0463\u045c\3\2"+ + "\2\2\u0463\u0464\3\2\2\2\u0464\u046c\3\2\2\2\u0465\u0469\7a\2\2\u0466"+ + "\u0468\7\7\2\2\u0467\u0466\3\2\2\2\u0468\u046b\3\2\2\2\u0469\u0467\3\2"+ + "\2\2\u0469\u046a\3\2\2\2\u046a\u046d\3\2\2\2\u046b\u0469\3\2\2\2\u046c"+ + "\u0465\3\2\2\2\u046c\u046d\3\2\2\2\u046d\u046f\3\2\2\2\u046e\u0470\t\2"+ + "\2\2\u046f\u046e\3\2\2\2\u046f\u0470\3\2\2\2\u0470\u00e1\3\2\2\2\u0471"+ + "\u0472\7Z\2\2\u0472\u0476\t\2\2\2\u0473\u0475\7\7\2\2\u0474\u0473\3\2"+ + "\2\2\u0475\u0478\3\2\2\2\u0476\u0474\3\2\2\2\u0476\u0477\3\2\2\2\u0477"+ + "\u0479\3\2\2\2\u0478\u0476\3\2\2\2\u0479\u047d\7a\2\2\u047a\u047c\7\7"+ + "\2\2\u047b\u047a\3\2\2\2\u047c\u047f\3\2\2\2\u047d\u047b\3\2\2\2\u047d"+ + "\u047e\3\2\2\2\u047e\u0480\3\2\2\2\u047f\u047d\3\2\2\2\u0480\u0484\7a"+ + "\2\2\u0481\u0483\7\7\2\2\u0482\u0481\3\2\2\2\u0483\u0486\3\2\2\2\u0484"+ + "\u0482\3\2\2\2\u0484\u0485\3\2\2\2\u0485\u0487\3\2\2\2\u0486\u0484\3\2"+ + "\2\2\u0487\u0488\t\2\2\2\u0488\u00e3\3\2\2\2\u0489\u048a\7[\2\2\u048a"+ + "\u048b\t\2\2\2\u048b\u00e5\3\2\2\2\u048c\u048d\7\\\2\2\u048d\u0491\t\2"+ + "\2\2\u048e\u0490\7\7\2\2\u048f\u048e\3\2\2\2\u0490\u0493\3\2\2\2\u0491"+ + "\u048f\3\2\2\2\u0491\u0492\3\2\2\2\u0492\u0494\3\2\2\2\u0493\u0491\3\2"+ + "\2\2\u0494\u0498\7a\2\2\u0495\u0497\7\7\2\2\u0496\u0495\3\2\2\2\u0497"+ + "\u049a\3\2\2\2\u0498\u0496\3\2\2\2\u0498\u0499\3\2\2\2\u0499\u049b\3\2"+ + "\2\2\u049a\u0498\3\2\2\2\u049b\u049f\7a\2\2\u049c\u049e\7\7\2\2\u049d"+ + "\u049c\3\2\2\2\u049e\u04a1\3\2\2\2\u049f\u049d\3\2\2\2\u049f\u04a0\3\2"+ + "\2\2\u04a0\u04a2\3\2\2\2\u04a1\u049f\3\2\2\2\u04a2\u04a3\t\2\2\2\u04a3"+ + "\u00e7\3\2\2\2\u04a4\u04a5\7]\2\2\u04a5\u04a6\t\2\2\2\u04a6\u00e9\3\2"+ + "\2\2y\u00ed\u00f1\u00fb\u011e\u0121\u0126\u0134\u0138\u013c\u0140\u0144"+ + "\u0151\u0156\u015a\u015e\u0162\u0166\u016a\u016f\u0173\u0177\u0181\u0185"+ + "\u0189\u018f\u0191\u019c\u01a1\u01a5\u01a9\u01f5\u01ff\u0209\u0213\u021d"+ + "\u0236\u025e\u0265\u026f\u0276\u029b\u02a2\u02ac\u02b3\u02d5\u02f1\u02f8"+ + "\u02ff\u0309\u0310\u0317\u0321\u0328\u032f\u0333\u033a\u0341\u0348\u034c"+ + "\u0353\u035a\u0361\u0368\u036b\u0371\u0374\u037a\u037d\u0380\u0387\u038e"+ + "\u0395\u039c\u039f\u03a5\u03a8\u03ae\u03b1\u03b4\u03bb\u03c2\u03c9\u03d0"+ + "\u03d3\u03d6\u03dd\u03e4\u03eb\u03f2\u03f5\u03f8\u03ff\u0406\u040d\u0414"+ + "\u0417\u041d\u0420\u0426\u0429\u042f\u0432\u043b\u0442\u0449\u0450\u0453"+ + "\u0459\u0460\u0463\u0469\u046c\u046f\u0476\u047d\u0484\u0491\u0498\u049f"; public static final ATN _ATN = new ATNDeserializer().deserialize(_serializedATN.toCharArray()); static { diff -r cbdeac32465c -r 5eb9d35aa47a src/main/java/de/intevation/lada/importer/laf/LafRawData.java --- a/src/main/java/de/intevation/lada/importer/laf/LafRawData.java Mon Nov 07 10:07:39 2016 +0100 +++ b/src/main/java/de/intevation/lada/importer/laf/LafRawData.java Mon Nov 07 10:09:22 2016 +0100 @@ -18,11 +18,13 @@ private List messung; private List> kommentar; private List> zusatzwert; - private List> ort; + private Map eOrt; + private List> uOrt; public Probe() { this.attributes = new HashMap(); - this.ort = new ArrayList>(); + this.eOrt = new HashMap(); + this.uOrt = new ArrayList>(); this.kommentar = new ArrayList>(); this.zusatzwert = new ArrayList>(); this.messung = new ArrayList(); @@ -60,12 +62,20 @@ return this.zusatzwert; } - public void addOrt(Map ort) { - this.ort.add(ort); + public void addEntnahmeOrt(Map ort) { + this.eOrt.putAll(ort); } - public List> getOrte() { - return this.ort; + public Map getEntnahmeOrt() { + return this.eOrt; + } + + public void addUrsprungsOrt(Map ort) { + this.uOrt.add(new HashMap(ort)); + } + + public List> getUrsprungsOrte() { + return this.uOrt; } // helper method to get identifying attribute